views.py 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  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('dominio:default:maxaccount')
  266. dominio.max_alias = getConfigurazione('dominio:default:maxalias')
  267. dominio.max_list = getConfigurazione('dominio:default:maxlist')
  268. dominio.public_email = getConfigurazione('domini:public_email')
  269. dominio.target = Target.objects.get(id=getConfigurazione('dominio:default:target'))
  270. dominio.maildir = getConfigurazione('dominio: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. dominio.notifica_mail_domain_admin = domainedit.cleaned_data.get('notifica_mail_domain_admin')
  444. dominio.notifica_mail_domain_user = domainedit.cleaned_data.get('notifica_mail_domain_user')
  445. if not dominio.edit:
  446. dominio.edit = domainedit.cleaned_data.get('edit')
  447. else:
  448. dominio.edit = False
  449. if len(dominio.home) < 1:
  450. print('attenzione: aggiorno il nome dominio')
  451. dominio.home = dominio.nome
  452. dominio.save()
  453. session['_domain2edit_']=dominio.id
  454. domain2edit = dominio.id
  455. print("dominio 2 edit ",domain2edit)
  456. else:
  457. print("ERRORI",domainedit.errors)
  458. print("cleaned:",domainedit.cleaned_data.get('http_server'))
  459. fde = FormDomainEdit(request.POST)
  460. fde.update()
  461. value['domainedit']=fde
  462. t = {}
  463. t['dominio'] = dominio.nome
  464. t['public_email'] = dominio.public_email
  465. t['home'] = dominio.home
  466. t['date_start_contract'] = dominio.date_start_contract
  467. t['date_expire_contract'] = dominio.date_expire_contract
  468. t['date_expire_registrar'] = dominio.date_expire_registrar
  469. t['proprietario'] = dominio.proprietario
  470. t['contatti'] = dominio.contatti
  471. t['rinnovo_automatico'] = dominio.rinnovo_automatico
  472. t['nota'] = dominio.nota
  473. print("nota: ",t['nota'])
  474. #stats
  475. t['max_account'] = dominio.max_account
  476. t['max_alias'] = dominio.max_alias
  477. t['max_list'] = dominio.max_list
  478. try:
  479. t['account_used'] = dominio.user_set.count()
  480. t['alias_used'] = dominio.alias_set.count()
  481. t['list_used'] = dominio.liste_set.count()
  482. print('count: ',dominio.user_set.count(),dominio.alias_set.count(),dominio.liste_set.count())
  483. except ValueError as ve:
  484. print('errore:',ve)
  485. t['account_used'] = 0
  486. t['alias_used'] = 0
  487. t['list_used'] = 0
  488. t['enabled'] = dominio.enabled
  489. t['tobedeleted'] = dominio.tobedeleted
  490. t['mail'] = dominio.mail
  491. t['pop3'] = dominio.pop3
  492. t['imap'] = dominio.imap
  493. t['smtp'] = dominio.smtp
  494. t['smtp_relay'] = dominio.smtp_relay
  495. t['webmail'] = dominio.webmail
  496. t['nextcloud'] = dominio.nextcloud
  497. t['nextcloud_pwd'] = dominio.nextcloud_pwd
  498. t['sms'] = dominio.sms
  499. t['sendafile'] = dominio.sendafile
  500. t['lmtp'] = dominio.lmtp
  501. t['sieve'] = dominio.sieve
  502. t['antivirus'] = dominio.antivirus
  503. t['spf'] = dominio.spf
  504. t['blacklist'] = dominio.blacklist
  505. t['ftp'] = dominio.ftp
  506. t['sql'] = dominio.sql
  507. t['http'] = dominio.http
  508. t['proxy'] = dominio.proxy
  509. t['edit'] = dominio.edit
  510. t['notifica_mail_domain_admin'] = dominio.notifica_mail_domain_admin
  511. t['notifica_mail_domain_user'] = dominio.notifica_mail_domain_user
  512. try:
  513. t['dominio_storia'] = dominio.storia_set.all()
  514. except ValueError as ve:
  515. print('Errore:',ve)
  516. try:
  517. t['registrar'] = dominio.registrar_id
  518. except Registrar.DoesNotExist as dne:
  519. print(dne)
  520. try:
  521. t['mail_server'] = dominio.mail_server_id
  522. except MailServer.DoesNotExist as dne:
  523. print(dne)
  524. t['mail_server'] = getConfigurazione('default_mail_server')
  525. try:
  526. t['mail_proxy'] = dominio.mail_proxy_id
  527. except MailProxy.DoesNotExist as dne:
  528. print(dne)
  529. t['mail_proxy'] = getConfigurazione('default_mail_proxy')
  530. try:
  531. t['lmtp_server'] = dominio.lmtp_server_id
  532. except LmtpServer.DoesNotExist as dne:
  533. print(dne)
  534. t['lmtp_server'] = getConfigurazione('default_lmtp_server')
  535. try:
  536. t['sql_remote'] = dominio.mail_proxy_id
  537. except MailProxy.DoesNotExist as dne:
  538. print(dne)
  539. t['sql_remote'] = getConfigurazione('default_sql_remote')
  540. try:
  541. t['last_causale'] = dominio.last_causale_id
  542. except Causale.DoesNotExist as dne:
  543. print("Causale indicata inesistente")
  544. t['last_causale'] = 0
  545. except ValueError as ve:
  546. print("Errore di valore")
  547. t['last_causale'] = 0
  548. try:
  549. t['target'] = dominio.target_id
  550. print('target',t['target'])
  551. except Target.DoesNotExist as dne:
  552. print("Target indicato inesistente")
  553. t['target'] = getConfigurazione('default-target')
  554. value['totale'] = 0
  555. try:
  556. value['totale'] += dominio.mail_quota
  557. except TypeError:
  558. value['totale'] += 0
  559. try:
  560. value['totale'] += dominio.http_quota
  561. except TypeError:
  562. value['totale'] += 0
  563. try:
  564. value['totale'] +=dominio.ftp_quota
  565. except TypeError:
  566. value['totale'] += 0
  567. try:
  568. value['totale'] += dominio.sql_quota
  569. except TypeError:
  570. value['totale'] += 0
  571. try:
  572. value['totale'] += dominio.nextcloud_quota
  573. except TypeError:
  574. value['totale'] += 0
  575. print('totale',value['totale'])
  576. print(t)
  577. fde = FormDomainEdit(t)
  578. fde.update()
  579. value['domainedit']=fde
  580. try:
  581. value['display_last_causale'] = dominio.last_causale.nome
  582. except Causale.DoesNotExist as dne:
  583. value['display_last_causale'] = 'non assegnata'
  584. except ValueError:
  585. value['display_last_causale' ] = 'non assegnata'
  586. value['UltimaStoriaCausali'] = UltimaStoriaCausali(dominio,5)
  587. # mostra assegnazione ftp
  588. ftplist = FTPUser.objects.all().filter(dominio=dominio.id)
  589. value['ftplist'] = ftplist
  590. return render(request,'gestione.domain.edit.html',value)
  591. def DomainShow(request):
  592. session = getSessionParms(request)
  593. userauth = session['_userauth_']
  594. utenteautorizzato = User.objects.get(pk=userauth)
  595. dominio = Domini()
  596. domain2edit = session['_domain2edit_']
  597. if not domain2edit:
  598. domain2edit = utenteautorizzato.domain.id
  599. dominio = Domini.objects.get(pk=domain2edit)
  600. print("domain2Edit: ",domain2edit)
  601. value={}
  602. value['utenteautorizzato'] = utenteautorizzato
  603. value['used_account' ] = len(User.objects.filter(domain=dominio))
  604. value['used_alias'] = len(Alias.objects.filter(domain=dominio))
  605. value['registrar'] = Registrar.objects.all().filter(enabled=True).order_by('nome')
  606. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  607. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  608. securityrow = getSecurityRow(securitylevel.id)
  609. securitylist = getSecurityList(securityrow)
  610. value['securityrow'] = securityrow
  611. value['securityrowLen'] = len(securityrow)
  612. value['securitylist'] = securitylist
  613. value['navbar']=True
  614. value['dominio'] = dominio
  615. value['totale'] = 0
  616. try:
  617. value['totale'] += dominio.mail_quota
  618. except TypeError:
  619. value['totale'] += 0
  620. try:
  621. value['totale'] += dominio.http_quota
  622. except TypeError:
  623. value['totale'] += 0
  624. try:
  625. value['totale'] +=dominio.ftp_quota
  626. except TypeError:
  627. value['totale'] += 0
  628. try:
  629. value['totale'] += dominio.sql_quota
  630. except TypeError:
  631. value['totale'] += 0
  632. try:
  633. value['totale'] += dominio.nextcloud_quota
  634. except TypeError:
  635. value['totale'] += 0
  636. print('totale',value['totale'])
  637. # mostra assegnazione ftp
  638. ftplist = FTPUser.objects.all().filter(dominio=dominio.id)
  639. value['ftplist'] = ftplist
  640. return render(request,'gestione.domain.show.html',value)
  641. def DomainServiziLista(request):
  642. '''
  643. lista dei servizi disponibili indipendentemente dal dominio
  644. '''
  645. session = getSessionParms(request)
  646. userauth = session['_userauth_']
  647. utenteautorizzato = User.objects.get(pk=userauth)
  648. # da qui carica i dati dal db.
  649. #domain2edit = session['_domain2edit_']
  650. #dominio = Domini.objects.get(pk=domain2edit)
  651. value={}
  652. value['utenteautorizzato'] = utenteautorizzato
  653. #value['dominio'] = dominio
  654. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  655. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  656. securityrow = getSecurityRow(securitylevel.id)
  657. securitylist = getSecurityList(securityrow)
  658. value['securityrow'] = securityrow
  659. value['securityrowLen'] = len(securityrow)
  660. value['securitylist'] = securitylist
  661. value['navbar']=True
  662. value['domainservice'] = DominiServizi.objects.all()
  663. if request.method=="POST":
  664. pass
  665. return render(request,"gestione.domain.servizi.lista.html",value)
  666. def DomainServiceEdit(request):
  667. '''
  668. accesso ai servizi legati al dominio
  669. '''
  670. session = getSessionParms(request)
  671. userauth = session['_userauth_']
  672. utenteautorizzato = User.objects.get(pk=userauth)
  673. # da qui carica i dati dal db.
  674. domain2edit = session['_domainservice2edit_']
  675. dommainservice = DomainService.objects.get(pk=domainservice2edit)
  676. value={}
  677. value['utenteautorizzato'] = utenteautorizzato
  678. value['dominio'] = dominio
  679. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  680. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  681. securityrow = getSecurityRow(securitylevel.id)
  682. securitylist = getSecurityList(securityrow)
  683. value['securityrow'] = securityrow
  684. value['securityrowLen'] = len(securityrow)
  685. value['securitylist'] = securitylist
  686. value['navbar']=True
  687. domainservice = DomainService()
  688. try:
  689. domainservice = DomainService.objects.get(ok=domainservice2edit)
  690. except DomainService.DoesNotExist as dne:
  691. print(dne)
  692. if request.method=="POST":
  693. if 'edit' in request.POST:
  694. pass
  695. temp = {}
  696. temp['nome'] = domainservice.nome
  697. temp['classe'] = domainservice.classe
  698. temp['enabled'] = domainservice.enabled
  699. temp['home'] = domainservice.home
  700. domainserviceform = DomainServiceForm(temp)
  701. value['doaminserviceform'] = domainserviceform
  702. return render(request,"gestioneDomainService.html",value)
  703. def ServiziLista(request):
  704. session = getSessionParms(request)
  705. userauth = session['_userauth_']
  706. request.session['_from_']="Domini:ServiziList"
  707. try:
  708. utenteautorizzato = User.objects.get(pk=userauth)
  709. except User.DoesNotExist as dne:
  710. return HttpResponseRedirect(reverse('Login:login',args={}))
  711. servizi = Servizi.objects.all().order_by('nome')
  712. value={}
  713. value['utenteautorizzato'] = utenteautorizzato
  714. value['causali'] = causali
  715. value['navbar'] = True
  716. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  717. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  718. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  719. value['securityrow'] = securityrow
  720. value['securityrowLen'] = len(securityrow)
  721. return render(request,'gestione.servizi.list.html',value)
  722. def DomainServizi(request):
  723. '''
  724. accesso ai servizi legati al domini x singolo dominio
  725. '''
  726. session = getSessionParms(request)
  727. userauth = session['_userauth_']
  728. utenteautorizzato = User.objects.get(pk=userauth)
  729. # da qui carica i dati dal db.
  730. domain2edit = session['_domain2edit_']
  731. dominio = Domini.objects.get(pk=domain2edit)
  732. value={}
  733. value['utenteautorizzato'] = utenteautorizzato
  734. value['dominio'] = dominio
  735. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  736. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  737. securityrow = getSecurityRow(securitylevel.id)
  738. securitylist = getSecurityList(securityrow)
  739. value['securityrow'] = securityrow
  740. value['securityrowLen'] = len(securityrow)
  741. value['securitylist'] = securitylist
  742. value['navbar']=True
  743. return render(request,"gestione.domain.servizi.html",value)
  744. def DomainServiceAssignment(request):
  745. session = getSessionParms(request)
  746. userauth = session['_userauth_']
  747. utenteautorizzato = User.objects.get(pk=userauth)
  748. # da qui carica i dati dal db.
  749. domain2edit = session['_domain2edit_']
  750. dominio = Domini.objects.get(pk=domain2edit)
  751. value={}
  752. value['utenteautorizzato'] = utenteautorizzato
  753. value['dominio'] = dominio
  754. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  755. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  756. securityrow = getSecurityRow(securitylevel.id)
  757. securitylist = getSecurityList(securityrow)
  758. value['securityrow'] = securityrow
  759. value['securityrowLen'] = len(securityrow)
  760. value['securitylist'] = securitylist
  761. value['navbar']=True
  762. if request.method == 'POST':
  763. print(request.POST)
  764. if 'serviziodaaaggiungere' in request.POST:
  765. print('addservice')
  766. v = request.POST.get('serviziodaaggiungere')
  767. print(v)
  768. s = DominiServizi.objects.get(pk=v)
  769. d = DominiServiziAssegnati()
  770. d.dominio = dominio
  771. d.servizio = s
  772. d.attivazione = datetime.today().strftime('%Y-%m-%d')
  773. f = FormServiziNota(request.POST)
  774. if f.is_valid():
  775. d.nota = f.cleaned_data.get('nota')
  776. print(d.nota)
  777. else:
  778. print(f.errors)
  779. d.save()
  780. if 'serviziodarimuovere' in request.POST:
  781. v = request.POST.get('serviziodarimuovere')
  782. print('delservice',v)
  783. s = DominiServiziAssegnati.objects.get(pk=int(v))
  784. s.disattivazione = datetime.today().strftime('%Y-%m-%d')
  785. f = FormServiziNota(request.POST)
  786. if f.is_valid():
  787. s.nota = f.cleaned_data['nota']
  788. print(".",s.nota)
  789. else:
  790. print(f.errors)
  791. s.save()
  792. value['domainservizi'] = DominiServizi.objects.all().filter(enabled=True)
  793. value['domainserviziassegnati'] = dominio.dominiserviziassegnati_set.all()
  794. return render(request,'gestione.servizi.assignment.html',value)
  795. def DomainService(request):
  796. pass
  797. def OnSync(request):
  798. #sincronizza alcuni parametri di un dominio
  799. session = getSessionParms(request)
  800. userauth = session['_userauth_']
  801. utenteautorizzato = User.objects.get(pk=userauth)
  802. domain2edit = session['_domain2edit_']
  803. # se e' a 0: associa il dominio dell'utente autorizzato
  804. # se e' a -1: nuovo dominio
  805. # se non e' indicato un dominio, usa il dominio dell'utente.
  806. if not domain2edit:
  807. return HttpResponseNonFound('Not Valid')
  808. dominio = Domini.objects.get(pk=domain2edit)
  809. data = { 'Status': 'freghete' }
  810. return JsonResponse(data)