views.py 32 KB

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