views.py 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996
  1. from django.shortcuts import render
  2. from django.http import HttpResponseRedirect,HttpResponseNotFound,JsonResponse
  3. from django.urls import reverse
  4. from django import template
  5. import time
  6. from datetime import datetime,timedelta
  7. from uuid import uuid4,UUID
  8. import re
  9. # Create your views here.
  10. from .models import *
  11. from .forms import *
  12. from sicurezza.views import *
  13. from comunicazioni.views import *
  14. def Aggiorna_Dominio_Da_Causale(d,c,sm=None):
  15. dominio = d
  16. print('dominio nome',dominio.nome)
  17. causale = c
  18. print('causale nome',causale.nome)
  19. if causale.date_expire_contract:
  20. print("Stato contratto prima:",dominio.id,dominio.date_expire_contract)
  21. dominio.date_expire_contract = dominio.date_expire_contract + timedelta(int(causale.valore))
  22. print("Stato contratto dopo:",dominio.id,dominio.date_expire_contract)
  23. if causale.date_expire_registrar:
  24. print("Stato registrar prima:",dominio.id,dominio.date_expire_registrar)
  25. dominio.date_expire_registrar = dominio.date_expire_registrar+timedelta(int(causale.valore))
  26. print("Stato registrar dopo:",dominio.id,dominio.date_expire_registrar)
  27. if causale.renew_code:
  28. dominio.renew_code = uuid4()
  29. print('dominio.renew_code',dominio.renew_code)
  30. if causale.domain_closed:
  31. dominio.enabled = False
  32. if causale.domain_suspended:
  33. dominio.enabled = False
  34. if causale.domain_enabled:
  35. dominio.enabled = True
  36. dominio.tobedeleted = False
  37. if causale.domain_tobedeleted:
  38. print('richiesta cancellazione')
  39. dominio.enabled = False
  40. dominio.tobedeled = True
  41. if causale.domain_expired:
  42. dominio.enabled = False
  43. dominio.last_causale = causale
  44. dominio.save()
  45. if not sm:
  46. return
  47. #imposta i destinatari
  48. listadestinatari=[]
  49. PresenteContattoDestinatari=False
  50. print(dominio.contatti)
  51. if causale.send_email_user and len(dominio.contatti)>0:
  52. tmpdestinatari = re.split(',| ',dominio.contatti)
  53. for d in tmpdestinatari:
  54. # dovremmo validare ogni elemento
  55. listadestinatari.append(d)
  56. print("email to: ",d)
  57. if len(listadestinatari)>0:
  58. PresenteContattoDestinatari=True
  59. if causale.send_email_admin and len(causale.to_admin):
  60. tmplista = re.split(',| ',causale.to_admin)
  61. for i in tmplista:
  62. listadestinatari.append(i)
  63. if causale.send_email_account:
  64. if len(causale.to_account):
  65. tmplista = re.split(',| ',causale.to_account)
  66. for i in tmplista:
  67. listadestinatari.append(i)
  68. else:
  69. accountdft = getConfigurazione('mail:accounting')
  70. if accountdft and len(accountdft):
  71. accountdft = re.split(',| ',accountdft)
  72. for i in accountdft:
  73. listadestinatari.append(i)
  74. templatetrovato=False
  75. try:
  76. template = causale.template
  77. templatetrovato=True
  78. except Template.DoesNotExist as dne:
  79. print("Template inesistente")
  80. print(dne)
  81. if templatetrovato:
  82. print('template valido')
  83. data = {}
  84. data['dominio'] = dominio.__dict__
  85. print("dominio.renew_code",dominio.__dict__['renew_code'])
  86. if PresenteContattoDestinatari: data['PresenteContattoDestinatari']=True
  87. print("spedisco mail a",listadestinatari)
  88. sm.add_listadestinatari(listadestinatari)
  89. sm.set_oggetto(template.oggetto)
  90. sm.set_soggetto(template.soggetto)
  91. sm.set_data(data)
  92. sm.send()
  93. sm = None
  94. else:
  95. print("Template Non valido.... non invio comunicazioni")
  96. return
  97. def AggiornaStoriaCausali(dominio=None,utente=None,causale=None,nota=None):
  98. print("Salvo dati Storia")
  99. storia = Storia()
  100. storia.dominio_id = dominio.id
  101. storia.utente_id = utente.id
  102. storia.causale_id = causale.id
  103. print(int(time.time()))
  104. storia.data = int(time.time())
  105. storia.nota = nota
  106. storia.save()
  107. def UltimaStoriaCausali(dominio=None,count=1):
  108. if count == 1:
  109. print("Ritorna l'utlimo record della causale per il dominio:",dominio.id)
  110. tmp = Storia.objects.filter(dominio=dominio).latest('data')
  111. return tmp
  112. else:
  113. print("ritorna gli ultimi reecord memorizzati per il dominio:",count,": ",dominio.id)
  114. tmp = Storia.objects.filter(dominio=dominio)[:5]
  115. print(len(tmp))
  116. return tmp
  117. def DomainList(request):
  118. session = getSessionParms(request)
  119. userauth = session['_userauth_']
  120. user2edit = session['_user2edit_']
  121. domain2edit = session['_domain2edit_']
  122. domain_order = session['_domain_order']
  123. print('domain_order',domain_order)
  124. request.session['_from_']="Utenti:UserList"
  125. #print(next)
  126. if not user2edit:
  127. user2edit = userauth
  128. try:
  129. utenteautorizzato = User.objects.get(pk=userauth)
  130. except User.DoesNotExist as dne:
  131. return HttpResponseRedirect(reverse('Login:login',args={}))
  132. if not domain2edit:
  133. domain2edit = utenteautorizzato.domain.id
  134. value={}
  135. value['utenteautorizzato'] = utenteautorizzato
  136. value['user'] = None
  137. value['navbar'] = True
  138. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  139. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  140. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  141. value['securityrow'] = securityrow
  142. value['securityrowLen'] = len(securityrow)
  143. Nascondi_Scaduti = getConfigurazione("NascondiScaduti")
  144. print("Nascondi_Scaduti",Nascondi_Scaduti)
  145. dominiolist = Domini.objects.all().order_by('nome')
  146. if Nascondi_Scaduti== "1":
  147. #dominiolist = dominiolist.filter(enabled=1)
  148. value['Nascondi_Scaduti'] = "Visualizza"
  149. else:
  150. value['Nascondi_Scaduti'] = "Nascondi"
  151. value['domainlist'] = dominiolist
  152. value['causali'] = Causale.objects.all().filter(enabled=True).order_by('nome')
  153. if request.method=="POST":
  154. print('request ok',request.POST)
  155. #memorizza la posizione.... cosi' l'arnese sa dove tornare
  156. request.session['_position_'] = 'DomainList'
  157. if 'Nuovo Dominio' in request.POST:
  158. request.session['_domain2edit_'] = -1
  159. return HttpResponseRedirect(reverse('Domini:DomainEdit',args={}))
  160. if 'Ritorno' in request.POST:
  161. return HttpResponseRedirect(reverse('Login:welcome',args={}))
  162. if 'Nascondi_Scaduti' in request.POST:
  163. print("Il tasto Nascondi_Scaduti èstato preumto")
  164. if Nascondi_Scaduti == "0":
  165. value['Nascondi_Scaduti'] = "Nascondi"
  166. setConfigurazione("NascondiScaduti","1")
  167. else:
  168. value['Nascondi_Scaduti'] = "Visualizza"
  169. setConfigurazione("NascondiScaduti","0")
  170. if 'Ordine_Alfabetico' in request.POST:
  171. request.session['_domain_order']='oa'
  172. value['domainlist'] = Domini.objects.all().order_by('nome')
  173. if Nascondi_Scaduti == "1" : value['domainlist'] = value['domainlist'].filter(enabled=1)
  174. return render(request,"gestione.domain.list.html",value)
  175. if 'Ordine_Scadenza_Contratto' in request.POST:
  176. request.session['_domain_order']='oc'
  177. value['domainlist'] = Domini.objects.all().order_by('date_expire_contract')
  178. if Nascondi_Scaduti == "1": value['domainlist'] = value['domainlist'].filter(enabled=1)
  179. return render(request,"gestione.domain.list.html",value)
  180. if 'Ordine_Scadenza_Registrar' in request.POST:
  181. request.session['_domain_order'] = 'or'
  182. value['domainlist'] = Domini.objects.all().order_by('date_expire_registrar')
  183. if Nascondi_Scaduti == "1": value['domainlist'] = value['domainlist'].filter(enabled=1)
  184. return render(request,"gestione.domain.list.html",value)
  185. if "Servizi" in request.POST:
  186. print('id da editare',request.POST['Servizi'])
  187. request.session['_domain2edit_'] = request.POST['Servizi']
  188. print("request.session['_domain2edit_']",request.session['_domain2edit_'])
  189. return HttpResponseRedirect(reverse('Domini:DomainServizi',args={}))
  190. if "Editing" in request.POST:
  191. print("Editing")
  192. print('id da editare',request.POST['Editing'])
  193. request.session['_domain2edit_'] = request.POST['Editing']
  194. return HttpResponseRedirect(reverse('Domini:DomainEdit',args={}))
  195. if "Info" in request.POST:
  196. print('id da mostrare',request.POST['Info'])
  197. request.session['_domain2edit_'] = request.POST['Info']
  198. return HttpResponseRedirect(reverse('Domini:DomainShow'))
  199. if "disable" in request.POST:
  200. print('id da disattivare',request.POST['disable'])
  201. idpost = request.POST.get('disable')
  202. u = Domini.objects.get(pk=idpost)
  203. u.enabled=False
  204. u.save()
  205. if "enable" in request.POST:
  206. print('id da attivare',request.POST['enable'])
  207. idpost = request.POST['enable']
  208. u = Domini.objects.get(pk=idpost)
  209. u.enabled=True
  210. u.save()
  211. if "ExecSpazio" in request.POST:
  212. idpost = request.POST['ExecSpazio']
  213. print('Richiesto calcolo spazio per',idpost)
  214. print('url richiesto',reverse('Comunicazioni:OccupazioneControlloQuota',args=(idpost,)))
  215. #return HttpResponseRedirect(reverse('Domini:DomainList'))
  216. return HttpResponseRedirect(reverse('Comunicazioni:OccupazioneControlloQuota',args=(idpost,)))
  217. if "AggiornaCausale" in request.POST:
  218. print("Aggiornamento causale",request.POST['AggiornaCausale'])
  219. idpost = request.POST['AggiornaCausale']
  220. d = Domini.objects.get(pk=idpost)
  221. print('dominio richiesto',idpost)
  222. print('causale richiesta',request.POST['ValoreCausale'])
  223. c = Causale.objects.get(pk=request.POST['ValoreCausale'])
  224. d.last_causale = c
  225. Aggiorna_Dominio_Da_Causale(d,c)
  226. AggiornaStoriaCausali(d,utenteautorizzato,c,"")
  227. print(UltimaStoriaCausali(d))
  228. d.save()
  229. if domain_order == 'oa':
  230. value['domainlist'] = Domini.objects.all().order_by('nome')
  231. if Nascondi_Scaduti == "1": value['domainlist'] = Domini.objects.all().order_by('nome').filter(enabled=1)
  232. if domain_order == 'oc':
  233. value['domainlist'] = Domini.objects.all().order_by('date_expire_contract')
  234. if Nascondi_Scaduti == "1": value['domainlist'] = Domini.objects.all().order_by('date_expire_contract').filter(enabled=1)
  235. if domain_order == 'or':
  236. value['domainlist'] = Domini.objects.all().order_by('date_expire_registrar')
  237. if Nascondi_Scaduti == "1": value['domainlist'] = Domini.objects.all().order_by('date_expire_registrar').filter(enabled=1)
  238. return render(request,"gestione.domain.list.html",value)
  239. def DomainEdit(request):
  240. '''
  241. gestione delle info sul domini
  242. e contabilita'
  243. '''
  244. # verifica utente passato nella session
  245. session = getSessionParms(request)
  246. userauth = session['_userauth_']
  247. try:
  248. utenteautorizzato = User.objects.get(pk=userauth)
  249. except User.DoesNotExist as dne:
  250. return HttpResponseRedirect(reverse('Login:login',args={}))
  251. domain2edit = session['_domain2edit_']
  252. if not domain2edit:
  253. domain2edit = utenteautorizzato.domain
  254. # se e' a 0: associa il dominio dell'utente autorizzato
  255. # se e' a -1: nuovo dominio
  256. dominio = None
  257. value = {}
  258. # se non e' indicato un dominio, usa il dominio dell'utente.
  259. if not domain2edit:
  260. domain2edit = utenteautorizzato.domain.id
  261. # il dominio e' nuovo.
  262. if domain2edit == -1:
  263. dominio = Domini();
  264. # possiamo assegnare i default.
  265. dominio.max_account = getConfigurazione('domini.default_maxaccount')
  266. dominio.max_alias = getConfigurazione('domini.default.max_alias')
  267. dominio.max_list = getConfigurazione('domini.default.list')
  268. dominio.public_email = getConfigurazione('domini:public_email')
  269. dominio.target = Target.objects.get(id=getConfigurazione('domini.default.target'))
  270. dominio.maildir = getConfigurazione('domini.default.maildir')
  271. dominio.edit = True; #fondamentale per consentire la prima compilazione
  272. dominio.tobedeleted = False
  273. dominio.rinnovo_automatico = False
  274. #gestione delle date
  275. datadioggi = datetime.now()
  276. datatraunanno = datetime.now() + timedelta(days=365)
  277. dominio.date_start_contract = datadioggi
  278. dominio.date_expire_contract = datatraunanno
  279. dominio.date_expire_registrar = datatraunanno
  280. else:
  281. dominio = Domini.objects.get(pk=domain2edit)
  282. value['dominio'] = dominio
  283. print("domain2Edit: ",domain2edit,dominio.nome)
  284. value['utenteautorizzato'] = utenteautorizzato
  285. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  286. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  287. securityrow = getSecurityRow(securitylevel.id)
  288. securitylist = getSecurityList(securityrow)
  289. value['securityrow'] = securityrow
  290. value['securityrowLen'] = len(securityrow)
  291. value['securitylist'] = securitylist
  292. value['navbar']=True
  293. print(f'request.method: {request.method}')
  294. value['causali'] = Causale.objects.all().filter(enabled=True).order_by('nome')
  295. value['mailserver'] = MailServer.objects.all().filter(enabled=True).order_by('nome')
  296. value['target'] = Target.objects.all().filter(enabled=True).order_by('nome')
  297. value['registrar'] = Registrar.objects.all().filter(enabled=True)
  298. dsa = None
  299. try:
  300. dsa = DominiServiziAssegnati.objects.get(dominio=dominio.id)
  301. except DominiServiziAssegnati.DoesNotExist as dne:
  302. print(dne)
  303. value['dsf'] = dsa
  304. #value['dsf'] = dominio.dominiserviziassegnati_set.all()
  305. #value['list_mail_server'] = MailServer.objects.all().filter(enabled=True)
  306. #value['list_target'] = Target.objects.all().filter(enabled=True)
  307. if request.method == 'POST':
  308. if 'Ritorna' in request.POST:
  309. print('Premuto tasto Ritorna da Editing Domini')
  310. return HttpResponseRedirect(reverse('Domini:DomainList'))
  311. domainedit = FormDomainEdit(request.POST)
  312. domainedit.update()
  313. domaincausale = FormDomainCausale(request.POST)
  314. if domaincausale.is_valid(): #verificare che non si tratti di prima registrazione
  315. print("conferma causale trovata");
  316. print("domaincausalet.causale",domaincausale.cleaned_data.get('causale'))
  317. try:
  318. print("domain.ultima causale usata",dominio.last_causale.nome)
  319. except Causale.DoesNotExist as dne:
  320. print("causale non registrata")
  321. causaleindicata = domaincausale.cleaned_data.get('causale')
  322. causale = None
  323. try:
  324. causale = Causale.objects.get(pk=causaleindicata)
  325. except Causale.DoesNotExist as dne:
  326. print("Causale inesistente: ",causaleindicata)
  327. except ValueError as ve:
  328. print("Cazzo, valore vuote")
  329. print("ci:",causaleindicata)
  330. if causale:
  331. print("cc:",causale.id,causale.nome)
  332. else:
  333. print("cc: sbagliato")
  334. ''' a questo punto devi, in base a quanto riportato nella causale, effettuare le diverse operazioni
  335. '''
  336. Aggiorna_Dominio_Da_Causale(dominio,causale)
  337. AggiornaStoriaCausali(dominio,utenteautorizzato,causale,"")
  338. print(UltimaStoriaCausali(dominio))
  339. sm = ServizioMail()
  340. #imposta i destinatari
  341. listadestinatari=[]
  342. PresenteContattoDestinatari=False
  343. print(dominio.contatti)
  344. if causale.send_email_user and len(dominio.contatti)>0:
  345. tmpdestinatari = re.split(',| ',dominio.contatti)
  346. for d in tmpdestinatari:
  347. # dovremmo validare ogni elemento
  348. listadestinatari.append(d)
  349. print("email to: ",d)
  350. if len(listadestinatari)>0:
  351. PresenteContattoDestinatari=True
  352. if causale.send_email_admin and len(causale.to_admin):
  353. tmplista = re.split(',| ',causale.to_admin)
  354. for i in tmplista:
  355. listadestinatari.append(i)
  356. if causale.send_email_account:
  357. if len(causale.to_account):
  358. tmplista = re.split(',| ',causale.to_account)
  359. for i in tmplista:
  360. listadestinatari.append(i)
  361. else:
  362. accountdft = getConfigurazione('mail:accounting')
  363. if accountdft and len(accountdft):
  364. accountdft = re.split(',| ',accountdft)
  365. for i in accountdft:
  366. listadestinatari.append(i)
  367. if causale.domain_tobedeleted:
  368. dominio.tobedeleted = True
  369. dominio.last_causale = causale
  370. dominio.save()
  371. print("salvo gli aggiornamenti:")
  372. AggiornaStoriaCausali(dominio,utenteautorizzato,causale,"")
  373. print(UltimaStoriaCausali(dominio))
  374. templatetrovato=False
  375. try:
  376. template = causale.template
  377. templatetrovato=True
  378. except Template.DoesNotExist as dne:
  379. print("Template inesistente")
  380. print(dne)
  381. if templatetrovato:
  382. print('template valido')
  383. data = {}
  384. data['dominio'] = dominio.__dict__
  385. print("dominio.renew_code",dominio.__dict__['renew_code'])
  386. if PresenteContattoDestinatari: data['PresenteContattoDestinatari']=True
  387. print("spedisco mail a",listadestinatari)
  388. sm.add_listadestinatari(listadestinatari)
  389. sm.set_oggetto(template.oggetto)
  390. sm.set_soggetto(template.soggetto)
  391. sm.set_data(data)
  392. sm.send()
  393. sm = None
  394. else:
  395. print("Template Non valido.... non invio comunicazioni")
  396. elif domainedit.is_valid():
  397. print(f'domainedit.is_valid {domainedit.is_valid()}')
  398. dominio.nome = domainedit.cleaned_data.get('dominio')
  399. if not 'home' in domainedit.cleaned_data:
  400. dominio.home = domainedit.cleaned_data.get('home')
  401. if not 'public_email' in domainedit.cleaned_data:
  402. dominio.public_email.getConfigurazione('default-public-email')
  403. else:
  404. dominio.public_email = domainedit.cleaned_data.get('public_email')
  405. dominio.contatti = domainedit.cleaned_data.get('contatti')
  406. dominio.proprietario = domainedit.cleaned_data.get('proprietario')
  407. dominio.date_start_contract = domainedit.cleaned_data.get('date_start_contract')
  408. dominio.date_expire_contract = domainedit.cleaned_data.get('date_expire_contract')
  409. dominio.date_expire_registrar = domainedit.cleaned_data.get('date_expire_registrar')
  410. print("date:", dominio.date_start_contract,dominio.date_expire_contract,dominio.date_expire_registrar)
  411. dominio.nota = domainedit.cleaned_data.get('nota')
  412. dominio.enabled = domainedit.cleaned_data.get('enabled')
  413. dominio.tobedeleted = domainedit.cleaned_data.get('tobedeleted')
  414. dominio.mail = domainedit.cleaned_data.get('mail')
  415. dominio.pop3 = domainedit.cleaned_data.get('pop3')
  416. dominio.imap = domainedit.cleaned_data.get('imap')
  417. dominio.smtp = domainedit.cleaned_data.get('smtp')
  418. dominio.smtp_relay = domainedit.cleaned_data.get('smtp_relay')
  419. dominio.webmail = domainedit.cleaned_data.get('webmail')
  420. dominio.nextcloud = domainedit.cleaned_data.get('nextcloud')
  421. dominio.nextcloud_pwd = domainedit.cleaned_data.get('nextcloud_pwd')
  422. dominio.sms = domainedit.cleaned_data.get('sms')
  423. dominio.lmtp = domainedit.cleaned_data.get('lmtp')
  424. dominio.sieve = domainedit.cleaned_data.get('sieve')
  425. dominio.antivirus = domainedit.cleaned_data.get('antivirus')
  426. dominio.spf = domainedit.cleaned_data.get('spf')
  427. dominio.blacklist = domainedit.cleaned_data.get('blacklist')
  428. dominio.ftp = domainedit.cleaned_data.get('ftp')
  429. dominio.sql = domainedit.cleaned_data.get('sql')
  430. dominio.http = domainedit.cleaned_data.get('http')
  431. dominio.proxy = domainedit.cleaned_data.get('proxy')
  432. dominio.sendafile = domainedit.cleaned_data.get('sendafile')
  433. dominio.registrar_id = domainedit.cleaned_data.get('registrar')
  434. dominio.mail_server_id = domainedit.cleaned_data.get('mail_server')
  435. dominio.lmtp_server_id = domainedit.cleaned_data.get('lmtp_server')
  436. dominio.mail_proxy_id = domainedit.cleaned_data.get('mail_proxy')
  437. dominio.sql_remote_id = domainedit.cleaned_data.get('sql_remote')
  438. dominio.max_account = domainedit.cleaned_data.get('max_account')
  439. dominio.max_alias = domainedit.cleaned_data.get('max_alias')
  440. dominio.max_list = domainedit.cleaned_data.get('max_list')
  441. dominio.rinnovo_automatico = domainedit.cleaned_data.get('rinnovo_automatico')
  442. dominio.target_id = domainedit.cleaned_data.get('target')
  443. if not dominio.edit:
  444. dominio.edit = domainedit.cleaned_data.get('edit')
  445. else:
  446. dominio.edit = False
  447. if len(dominio.home) < 1:
  448. print('attenzione: aggiorno il nome dominio')
  449. dominio.home = dominio.nome
  450. dominio.save()
  451. session['_domain2edit_']=dominio.id
  452. domain2edit = dominio.id
  453. print("dominio 2 edit ",domain2edit)
  454. else:
  455. print("ERRORI",domainedit.errors)
  456. print("cleaned:",domainedit.cleaned_data.get('http_server'))
  457. fde = FormDomainEdit(request.POST)
  458. fde.update()
  459. value['domainedit']=fde
  460. t = {}
  461. t['dominio'] = dominio.nome
  462. t['public_email'] = dominio.public_email
  463. t['home'] = dominio.home
  464. t['date_start_contract'] = dominio.date_start_contract
  465. t['date_expire_contract'] = dominio.date_expire_contract
  466. t['date_expire_registrar'] = dominio.date_expire_registrar
  467. t['proprietario'] = dominio.proprietario
  468. t['contatti'] = dominio.contatti
  469. t['rinnovo_automatico'] = dominio.rinnovo_automatico
  470. t['nota'] = dominio.nota
  471. print("nota: ",t['nota'])
  472. #stats
  473. t['max_account'] = dominio.max_account
  474. t['max_alias'] = dominio.max_alias
  475. t['max_list'] = dominio.max_list
  476. try:
  477. t['account_used'] = dominio.user_set.count()
  478. t['alias_used'] = dominio.alias_set.count()
  479. t['list_used'] = dominio.liste_set.count()
  480. print('count: ',dominio.user_set.count(),dominio.alias_set.count(),dominio.liste_set.count())
  481. except ValueError as ve:
  482. print('errore:',ve)
  483. t['account_used'] = 0
  484. t['alias_used'] = 0
  485. t['list_used'] = 0
  486. t['enabled'] = dominio.enabled
  487. t['tobedeleted'] = dominio.tobedeleted
  488. t['mail'] = dominio.mail
  489. t['pop3'] = dominio.pop3
  490. t['imap'] = dominio.imap
  491. t['smtp'] = dominio.smtp
  492. t['smtp_relay'] = dominio.smtp_relay
  493. t['webmail'] = dominio.webmail
  494. t['nextcloud'] = dominio.nextcloud
  495. t['nextcloud_pwd'] = dominio.nextcloud_pwd
  496. t['sms'] = dominio.sms
  497. t['sendafile'] = dominio.sendafile
  498. t['lmtp'] = dominio.lmtp
  499. t['sieve'] = dominio.sieve
  500. t['antivirus'] = dominio.antivirus
  501. t['spf'] = dominio.spf
  502. t['blacklist'] = dominio.blacklist
  503. t['ftp'] = dominio.ftp
  504. t['sql'] = dominio.sql
  505. t['http'] = dominio.http
  506. t['proxy'] = dominio.proxy
  507. t['edit'] = dominio.edit
  508. try:
  509. t['dominio_storia'] = dominio.storia_set.all()
  510. except ValueError as ve:
  511. print('Errore:',ve)
  512. try:
  513. t['registrar'] = dominio.registrar_id
  514. except Registrar.DoesNotExist as dne:
  515. print(dne)
  516. try:
  517. t['mail_server'] = dominio.mail_server_id
  518. except MailServer.DoesNotExist as dne:
  519. print(dne)
  520. t['mail_server'] = getConfigurazione('default_mail_server')
  521. try:
  522. t['mail_proxy'] = dominio.mail_proxy_id
  523. except MailProxy.DoesNotExist as dne:
  524. print(dne)
  525. t['mail_proxy'] = getConfigurazione('default_mail_proxy')
  526. try:
  527. t['lmtp_server'] = dominio.lmtp_server_id
  528. except LmtpServer.DoesNotExist as dne:
  529. print(dne)
  530. t['lmtp_server'] = getConfigurazione('default_lmtp_server')
  531. try:
  532. t['sql_remote'] = dominio.mail_proxy_id
  533. except MailProxy.DoesNotExist as dne:
  534. print(dne)
  535. t['sql_remote'] = getConfigurazione('default_sql_remote')
  536. try:
  537. t['last_causale'] = dominio.last_causale_id
  538. except Causale.DoesNotExist as dne:
  539. print("Causale indicata inesistente")
  540. t['last_causale'] = 0
  541. except ValueError as ve:
  542. print("Errore di valore")
  543. t['last_causale'] = 0
  544. try:
  545. t['target'] = dominio.target_id
  546. print('target',t['target'])
  547. except Target.DoesNotExist as dne:
  548. print("Target indicato inesistente")
  549. t['target'] = getConfigurazione('default-target')
  550. value['totale'] = 0
  551. try:
  552. value['totale'] += dominio.mail_quota
  553. except TypeError:
  554. value['totale'] += 0
  555. try:
  556. value['totale'] += dominio.http_quota
  557. except TypeError:
  558. value['totale'] += 0
  559. try:
  560. value['totale'] +=dominio.ftp_quota
  561. except TypeError:
  562. value['totale'] += 0
  563. try:
  564. value['totale'] += dominio.sql_quota
  565. except TypeError:
  566. value['totale'] += 0
  567. try:
  568. value['totale'] += dominio.nextcloud_quota
  569. except TypeError:
  570. value['totale'] += 0
  571. print('totale',value['totale'])
  572. print(t)
  573. fde = FormDomainEdit(t)
  574. fde.update()
  575. value['domainedit']=fde
  576. try:
  577. value['display_last_causale'] = dominio.last_causale.nome
  578. except Causale.DoesNotExist as dne:
  579. value['display_last_causale'] = 'non assegnata'
  580. except ValueError:
  581. value['display_last_causale' ] = 'non assegnata'
  582. value['UltimaStoriaCausali'] = UltimaStoriaCausali(dominio,5)
  583. # mostra assegnazione ftp
  584. ftplist = FTPUser.objects.all().filter(dominio=dominio.id)
  585. value['ftplist'] = ftplist
  586. return render(request,'gestione.domain.edit.html',value)
  587. def DomainShow(request):
  588. session = getSessionParms(request)
  589. userauth = session['_userauth_']
  590. utenteautorizzato = User.objects.get(pk=userauth)
  591. dominio = Domini()
  592. domain2edit = session['_domain2edit_']
  593. if not domain2edit:
  594. domain2edit = utenteautorizzato.domain.id
  595. dominio = Domini.objects.get(pk=domain2edit)
  596. print("domain2Edit: ",domain2edit)
  597. value={}
  598. value['utenteautorizzato'] = utenteautorizzato
  599. value['used_account' ] = len(User.objects.filter(domain=dominio))
  600. value['used_alias'] = len(Alias.objects.filter(domain=dominio))
  601. value['registrar'] = Registrar.objects.all().filter(enabled=True).order_by('nome')
  602. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  603. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  604. securityrow = getSecurityRow(securitylevel.id)
  605. securitylist = getSecurityList(securityrow)
  606. value['securityrow'] = securityrow
  607. value['securityrowLen'] = len(securityrow)
  608. value['securitylist'] = securitylist
  609. value['navbar']=True
  610. value['dominio'] = dominio
  611. value['totale'] = 0
  612. try:
  613. value['totale'] += dominio.mail_quota
  614. except TypeError:
  615. value['totale'] += 0
  616. try:
  617. value['totale'] += dominio.http_quota
  618. except TypeError:
  619. value['totale'] += 0
  620. try:
  621. value['totale'] +=dominio.ftp_quota
  622. except TypeError:
  623. value['totale'] += 0
  624. try:
  625. value['totale'] += dominio.sql_quota
  626. except TypeError:
  627. value['totale'] += 0
  628. try:
  629. value['totale'] += dominio.nextcloud_quota
  630. except TypeError:
  631. value['totale'] += 0
  632. print('totale',value['totale'])
  633. # mostra assegnazione ftp
  634. ftplist = FTPUser.objects.all().filter(dominio=dominio.id)
  635. value['ftplist'] = ftplist
  636. return render(request,'gestione.domain.show.html',value)
  637. def DomainServiziLista(request):
  638. '''
  639. lista dei servizi disponibili indipendentemente dal dominio
  640. '''
  641. session = getSessionParms(request)
  642. userauth = session['_userauth_']
  643. utenteautorizzato = User.objects.get(pk=userauth)
  644. # da qui carica i dati dal db.
  645. #domain2edit = session['_domain2edit_']
  646. #dominio = Domini.objects.get(pk=domain2edit)
  647. value={}
  648. value['utenteautorizzato'] = utenteautorizzato
  649. #value['dominio'] = dominio
  650. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  651. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  652. securityrow = getSecurityRow(securitylevel.id)
  653. securitylist = getSecurityList(securityrow)
  654. value['securityrow'] = securityrow
  655. value['securityrowLen'] = len(securityrow)
  656. value['securitylist'] = securitylist
  657. value['navbar']=True
  658. value['domainservice'] = DominiServizi.objects.all()
  659. if request.method=="POST":
  660. pass
  661. return render(request,"gestione.domain.servizi.lista.html",value)
  662. def DomainServiceEdit(request):
  663. '''
  664. accesso ai servizi legati al dominio
  665. '''
  666. session = getSessionParms(request)
  667. userauth = session['_userauth_']
  668. utenteautorizzato = User.objects.get(pk=userauth)
  669. # da qui carica i dati dal db.
  670. domain2edit = session['_domainservice2edit_']
  671. dommainservice = DomainService.objects.get(pk=domainservice2edit)
  672. value={}
  673. value['utenteautorizzato'] = utenteautorizzato
  674. value['dominio'] = dominio
  675. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  676. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  677. securityrow = getSecurityRow(securitylevel.id)
  678. securitylist = getSecurityList(securityrow)
  679. value['securityrow'] = securityrow
  680. value['securityrowLen'] = len(securityrow)
  681. value['securitylist'] = securitylist
  682. value['navbar']=True
  683. domainservice = DomainService()
  684. try:
  685. domainservice = DomainService.objects.get(ok=domainservice2edit)
  686. except DomainService.DoesNotExist as dne:
  687. print(dne)
  688. if request.method=="POST":
  689. if 'edit' in request.POST:
  690. pass
  691. temp = {}
  692. temp['nome'] = domainservice.nome
  693. temp['classe'] = domainservice.classe
  694. temp['enabled'] = domainservice.enabled
  695. temp['home'] = domainservice.home
  696. domainserviceform = DomainServiceForm(temp)
  697. value['doaminserviceform'] = domainserviceform
  698. return render(request,"gestioneDomainService.html",value)
  699. def ServiziLista(request):
  700. session = getSessionParms(request)
  701. userauth = session['_userauth_']
  702. request.session['_from_']="Domini:ServiziList"
  703. try:
  704. utenteautorizzato = User.objects.get(pk=userauth)
  705. except User.DoesNotExist as dne:
  706. return HttpResponseRedirect(reverse('Login:login',args={}))
  707. servizi = Servizi.objects.all().order_by('nome')
  708. value={}
  709. value['utenteautorizzato'] = utenteautorizzato
  710. value['causali'] = causali
  711. value['navbar'] = True
  712. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  713. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  714. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  715. value['securityrow'] = securityrow
  716. value['securityrowLen'] = len(securityrow)
  717. return render(request,'gestione.servizi.list.html',value)
  718. def DomainServizi(request):
  719. '''
  720. accesso ai servizi legati al domini x singolo dominio
  721. '''
  722. session = getSessionParms(request)
  723. userauth = session['_userauth_']
  724. utenteautorizzato = User.objects.get(pk=userauth)
  725. # da qui carica i dati dal db.
  726. domain2edit = session['_domain2edit_']
  727. dominio = Domini.objects.get(pk=domain2edit)
  728. value={}
  729. value['utenteautorizzato'] = utenteautorizzato
  730. value['dominio'] = dominio
  731. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  732. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  733. securityrow = getSecurityRow(securitylevel.id)
  734. securitylist = getSecurityList(securityrow)
  735. value['securityrow'] = securityrow
  736. value['securityrowLen'] = len(securityrow)
  737. value['securitylist'] = securitylist
  738. value['navbar']=True
  739. return render(request,"gestione.domain.servizi.html",value)
  740. def DomainServiceAssignment(request):
  741. session = getSessionParms(request)
  742. userauth = session['_userauth_']
  743. utenteautorizzato = User.objects.get(pk=userauth)
  744. # da qui carica i dati dal db.
  745. domain2edit = session['_domain2edit_']
  746. dominio = Domini.objects.get(pk=domain2edit)
  747. value={}
  748. value['utenteautorizzato'] = utenteautorizzato
  749. value['dominio'] = dominio
  750. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  751. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  752. securityrow = getSecurityRow(securitylevel.id)
  753. securitylist = getSecurityList(securityrow)
  754. value['securityrow'] = securityrow
  755. value['securityrowLen'] = len(securityrow)
  756. value['securitylist'] = securitylist
  757. value['navbar']=True
  758. if request.method == 'POST':
  759. print(request.POST)
  760. if 'serviziodaaaggiungere' in request.POST:
  761. print('addservice')
  762. v = request.POST.get('serviziodaaggiungere')
  763. print(v)
  764. s = DominiServizi.objects.get(pk=v)
  765. d = DominiServiziAssegnati()
  766. d.dominio = dominio
  767. d.servizio = s
  768. d.attivazione = datetime.today().strftime('%Y-%m-%d')
  769. f = FormServiziNota(request.POST)
  770. if f.is_valid():
  771. d.nota = f.cleaned_data.get('nota')
  772. print(d.nota)
  773. else:
  774. print(f.errors)
  775. d.save()
  776. if 'serviziodarimuovere' in request.POST:
  777. v = request.POST.get('serviziodarimuovere')
  778. print('delservice',v)
  779. s = DominiServiziAssegnati.objects.get(pk=int(v))
  780. s.disattivazione = datetime.today().strftime('%Y-%m-%d')
  781. f = FormServiziNota(request.POST)
  782. if f.is_valid():
  783. s.nota = f.cleaned_data['nota']
  784. print(".",s.nota)
  785. else:
  786. print(f.errors)
  787. s.save()
  788. value['domainservizi'] = DominiServizi.objects.all().filter(enabled=True)
  789. value['domainserviziassegnati'] = dominio.dominiserviziassegnati_set.all()
  790. return render(request,'gestione.servizi.assignment.html',value)
  791. def DomainService(request):
  792. pass
  793. def OnSync(request):
  794. #sincronizza alcuni parametri di un dominio
  795. session = getSessionParms(request)
  796. userauth = session['_userauth_']
  797. utenteautorizzato = User.objects.get(pk=userauth)
  798. domain2edit = session['_domain2edit_']
  799. # se e' a 0: associa il dominio dell'utente autorizzato
  800. # se e' a -1: nuovo dominio
  801. # se non e' indicato un dominio, usa il dominio dell'utente.
  802. if not domain2edit:
  803. return HttpResponseNonFound('Not Valid')
  804. dominio = Domini.objects.get(pk=domain2edit)
  805. data = { 'Status': 'freghete' }
  806. return JsonResponse(data)