views.py 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993
  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('Domini:DomainList'))
  215. return HttpResponseRedirect(reverse('Comunicazioni:OccupazioneControlloQuota',args=(idpost,)))
  216. if "AggiornaCausale" in request.POST:
  217. print("Aggiornamento causale",request.POST['AggiornaCausale'])
  218. idpost = request.POST['AggiornaCausale']
  219. d = Domini.objects.get(pk=idpost)
  220. print('dominio richiesto',idpost)
  221. print('causale richiesta',request.POST['ValoreCausale'])
  222. c = Causale.objects.get(pk=request.POST['ValoreCausale'])
  223. d.last_causale = c
  224. Aggiorna_Dominio_Da_Causale(d,c)
  225. AggiornaStoriaCausali(d,utenteautorizzato,c,"")
  226. print(UltimaStoriaCausali(d))
  227. d.save()
  228. if domain_order == 'oa':
  229. value['domainlist'] = Domini.objects.all().order_by('nome')
  230. if Nascondi_Scaduti == "1": value['domainlist'] = Domini.objects.all().order_by('nome').filter(enabled=1)
  231. if domain_order == 'oc':
  232. value['domainlist'] = Domini.objects.all().order_by('date_expire_contract')
  233. if Nascondi_Scaduti == "1": value['domainlist'] = Domini.objects.all().order_by('date_expire_contract').filter(enabled=1)
  234. if domain_order == 'or':
  235. value['domainlist'] = Domini.objects.all().order_by('date_expire_registrar')
  236. if Nascondi_Scaduti == "1": value['domainlist'] = Domini.objects.all().order_by('date_expire_registrar').filter(enabled=1)
  237. return render(request,"gestione.domain.list.html",value)
  238. def DomainEdit(request):
  239. '''
  240. gestione delle info sul domini
  241. e contabilita'
  242. '''
  243. # verifica utente passato nella session
  244. session = getSessionParms(request)
  245. userauth = session['_userauth_']
  246. try:
  247. utenteautorizzato = User.objects.get(pk=userauth)
  248. except User.DoesNotExist as dne:
  249. return HttpResponseRedirect(reverse('Login:login',args={}))
  250. domain2edit = session['_domain2edit_']
  251. if not domain2edit:
  252. domain2edit = utenteautorizzato.domain
  253. # se e' a 0: associa il dominio dell'utente autorizzato
  254. # se e' a -1: nuovo dominio
  255. dominio = None
  256. value = {}
  257. # se non e' indicato un dominio, usa il dominio dell'utente.
  258. if not domain2edit:
  259. domain2edit = utenteautorizzato.domain.id
  260. # il dominio e' nuovo.
  261. if domain2edit == -1:
  262. dominio = Domini();
  263. # possiamo assegnare i default.
  264. dominio.max_account = getConfigurazione('domini.default_maxaccount')
  265. dominio.max_alias = getConfigurazione('domini.default.max_alias')
  266. dominio.max_list = getConfigurazione('domini.default.list')
  267. dominio.public_email = getConfigurazione('domini:public_email')
  268. dominio.target = Target.objects.get(id=getConfigurazione('domini.default.target'))
  269. dominio.maildir = getConfigurazione('domini.default.maildir')
  270. dominio.edit = True; #fondamentale per consentire la prima compilazione
  271. dominio.tobedeleted = False
  272. dominio.rinnovo_automatico = False
  273. #gestione delle date
  274. datadioggi = datetime.now()
  275. datatraunanno = datetime.now() + timedelta(days=365)
  276. dominio.date_start_contract = datadioggi
  277. dominio.date_expire_contract = datatraunanno
  278. dominio.date_expire_registrar = datatraunanno
  279. else:
  280. dominio = Domini.objects.get(pk=domain2edit)
  281. value['dominio'] = dominio
  282. print("domain2Edit: ",domain2edit,dominio.nome)
  283. value['utenteautorizzato'] = utenteautorizzato
  284. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  285. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  286. securityrow = getSecurityRow(securitylevel.id)
  287. securitylist = getSecurityList(securityrow)
  288. value['securityrow'] = securityrow
  289. value['securityrowLen'] = len(securityrow)
  290. value['securitylist'] = securitylist
  291. value['navbar']=True
  292. print(f'request.method: {request.method}')
  293. value['causali'] = Causale.objects.all().filter(enabled=True).order_by('nome')
  294. value['mailserver'] = MailServer.objects.all().filter(enabled=True).order_by('nome')
  295. value['target'] = Target.objects.all().filter(enabled=True).order_by('nome')
  296. value['registrar'] = Registrar.objects.all().filter(enabled=True)
  297. dsa = None
  298. try:
  299. dsa = DominiServiziAssegnati.objects.get(dominio=dominio.id)
  300. except DominiServiziAssegnati.DoesNotExist as dne:
  301. print(dne)
  302. value['dsf'] = dsa
  303. #value['dsf'] = dominio.dominiserviziassegnati_set.all()
  304. #value['list_mail_server'] = MailServer.objects.all().filter(enabled=True)
  305. #value['list_target'] = Target.objects.all().filter(enabled=True)
  306. if request.method == 'POST':
  307. if 'Ritorna' in request.POST:
  308. print('Premuto tasto Ritorna da Editing Domini')
  309. return HttpResponseRedirect(reverse('Domini:DomainList'))
  310. domainedit = FormDomainEdit(request.POST)
  311. domainedit.update()
  312. domaincausale = FormDomainCausale(request.POST)
  313. if domaincausale.is_valid(): #verificare che non si tratti di prima registrazione
  314. print("conferma causale trovata");
  315. print("domaincausalet.causale",domaincausale.cleaned_data.get('causale'))
  316. try:
  317. print("domain.ultima causale usata",dominio.last_causale.nome)
  318. except Causale.DoesNotExist as dne:
  319. print("causale non registrata")
  320. causaleindicata = domaincausale.cleaned_data.get('causale')
  321. causale = None
  322. try:
  323. causale = Causale.objects.get(pk=causaleindicata)
  324. except Causale.DoesNotExist as dne:
  325. print("Causale inesistente: ",causaleindicata)
  326. except ValueError as ve:
  327. print("Cazzo, valore vuote")
  328. print("ci:",causaleindicata)
  329. if causale:
  330. print("cc:",causale.id,causale.nome)
  331. else:
  332. print("cc: sbagliato")
  333. ''' a questo punto devi, in base a quanto riportato nella causale, effettuare le diverse operazioni
  334. '''
  335. Aggiorna_Dominio_Da_Causale(dominio,causale)
  336. AggiornaStoriaCausali(dominio,utenteautorizzato,causale,"")
  337. print(UltimaStoriaCausali(dominio))
  338. sm = ServizioMail()
  339. #imposta i destinatari
  340. listadestinatari=[]
  341. PresenteContattoDestinatari=False
  342. print(dominio.contatti)
  343. if causale.send_email_user and len(dominio.contatti)>0:
  344. tmpdestinatari = re.split(',| ',dominio.contatti)
  345. for d in tmpdestinatari:
  346. # dovremmo validare ogni elemento
  347. listadestinatari.append(d)
  348. print("email to: ",d)
  349. if len(listadestinatari)>0:
  350. PresenteContattoDestinatari=True
  351. if causale.send_email_admin and len(causale.to_admin):
  352. tmplista = re.split(',| ',causale.to_admin)
  353. for i in tmplista:
  354. listadestinatari.append(i)
  355. if causale.send_email_account:
  356. if len(causale.to_account):
  357. tmplista = re.split(',| ',causale.to_account)
  358. for i in tmplista:
  359. listadestinatari.append(i)
  360. else:
  361. accountdft = getConfigurazione('mail:accounting')
  362. if accountdft and len(accountdft):
  363. accountdft = re.split(',| ',accountdft)
  364. for i in accountdft:
  365. listadestinatari.append(i)
  366. dominio.last_causale = causale
  367. dominio.save()
  368. print("salvo gli aggiornamenti:")
  369. AggiornaStoriaCausali(dominio,utenteautorizzato,causale,"")
  370. print(UltimaStoriaCausali(dominio))
  371. templatetrovato=False
  372. try:
  373. template = causale.template
  374. templatetrovato=True
  375. except Template.DoesNotExist as dne:
  376. print("Template inesistente")
  377. print(dne)
  378. if templatetrovato:
  379. print('template valido')
  380. data = {}
  381. data['dominio'] = dominio.__dict__
  382. print("dominio.renew_code",dominio.__dict__['renew_code'])
  383. if PresenteContattoDestinatari: data['PresenteContattoDestinatari']=True
  384. print("spedisco mail a",listadestinatari)
  385. sm.add_listadestinatari(listadestinatari)
  386. sm.set_oggetto(template.oggetto)
  387. sm.set_soggetto(template.soggetto)
  388. sm.set_data(data)
  389. sm.send()
  390. sm = None
  391. else:
  392. print("Template Non valido.... non invio comunicazioni")
  393. elif domainedit.is_valid():
  394. print(f'domainedit.is_valid {domainedit.is_valid()}')
  395. dominio.nome = domainedit.cleaned_data.get('dominio')
  396. if not 'home' in domainedit.cleaned_data:
  397. dominio.home = domainedit.cleaned_data.get('home')
  398. if not 'public_email' in domainedit.cleaned_data:
  399. dominio.public_email.getConfigurazione('default-public-email')
  400. else:
  401. dominio.public_email = domainedit.cleaned_data.get('public_email')
  402. dominio.contatti = domainedit.cleaned_data.get('contatti')
  403. dominio.proprietario = domainedit.cleaned_data.get('proprietario')
  404. dominio.date_start_contract = domainedit.cleaned_data.get('date_start_contract')
  405. dominio.date_expire_contract = domainedit.cleaned_data.get('date_expire_contract')
  406. dominio.date_expire_registrar = domainedit.cleaned_data.get('date_expire_registrar')
  407. print("date:", dominio.date_start_contract,dominio.date_expire_contract,dominio.date_expire_registrar)
  408. dominio.nota = domainedit.cleaned_data.get('nota')
  409. dominio.enabled = domainedit.cleaned_data.get('enabled')
  410. dominio.tobedeleted = domainedit.cleaned_data.get('tobedeleted')
  411. dominio.mail = domainedit.cleaned_data.get('mail')
  412. dominio.pop3 = domainedit.cleaned_data.get('pop3')
  413. dominio.imap = domainedit.cleaned_data.get('imap')
  414. dominio.smtp = domainedit.cleaned_data.get('smtp')
  415. dominio.smtp_relay = domainedit.cleaned_data.get('smtp_relay')
  416. dominio.webmail = domainedit.cleaned_data.get('webmail')
  417. dominio.nextcloud = domainedit.cleaned_data.get('nextcloud')
  418. dominio.nextcloud_pwd = domainedit.cleaned_data.get('nextcloud_pwd')
  419. dominio.sms = domainedit.cleaned_data.get('sms')
  420. dominio.lmtp = domainedit.cleaned_data.get('lmtp')
  421. dominio.sieve = domainedit.cleaned_data.get('sieve')
  422. dominio.antivirus = domainedit.cleaned_data.get('antivirus')
  423. dominio.spf = domainedit.cleaned_data.get('spf')
  424. dominio.blacklist = domainedit.cleaned_data.get('blacklist')
  425. dominio.ftp = domainedit.cleaned_data.get('ftp')
  426. dominio.sql = domainedit.cleaned_data.get('sql')
  427. dominio.http = domainedit.cleaned_data.get('http')
  428. dominio.proxy = domainedit.cleaned_data.get('proxy')
  429. dominio.sendafile = domainedit.cleaned_data.get('sendafile')
  430. dominio.registrar_id = domainedit.cleaned_data.get('registrar')
  431. dominio.mail_server_id = domainedit.cleaned_data.get('mail_server')
  432. dominio.lmtp_server_id = domainedit.cleaned_data.get('lmtp_server')
  433. dominio.mail_proxy_id = domainedit.cleaned_data.get('mail_proxy')
  434. dominio.sql_remote_id = domainedit.cleaned_data.get('sql_remote')
  435. dominio.max_account = domainedit.cleaned_data.get('max_account')
  436. dominio.max_alias = domainedit.cleaned_data.get('max_alias')
  437. dominio.max_list = domainedit.cleaned_data.get('max_list')
  438. dominio.rinnovo_automatico = domainedit.cleaned_data.get('rinnovo_automatico')
  439. dominio.target_id = domainedit.cleaned_data.get('target')
  440. if not dominio.edit:
  441. dominio.edit = domainedit.cleaned_data.get('edit')
  442. else:
  443. dominio.edit = False
  444. if len(dominio.home) < 1:
  445. print('attenzione: aggiorno il nome dominio')
  446. dominio.home = dominio.nome
  447. dominio.save()
  448. session['_domain2edit_']=dominio.id
  449. domain2edit = dominio.id
  450. print("dominio 2 edit ",domain2edit)
  451. else:
  452. print("ERRORI",domainedit.errors)
  453. print("cleaned:",domainedit.cleaned_data.get('http_server'))
  454. fde = FormDomainEdit(request.POST)
  455. fde.update()
  456. value['domainedit']=fde
  457. t = {}
  458. t['dominio'] = dominio.nome
  459. t['public_email'] = dominio.public_email
  460. t['home'] = dominio.home
  461. t['date_start_contract'] = dominio.date_start_contract
  462. t['date_expire_contract'] = dominio.date_expire_contract
  463. t['date_expire_registrar'] = dominio.date_expire_registrar
  464. t['proprietario'] = dominio.proprietario
  465. t['contatti'] = dominio.contatti
  466. t['rinnovo_automatico'] = dominio.rinnovo_automatico
  467. t['nota'] = dominio.nota
  468. print("nota: ",t['nota'])
  469. #stats
  470. t['max_account'] = dominio.max_account
  471. t['max_alias'] = dominio.max_alias
  472. t['max_list'] = dominio.max_list
  473. try:
  474. t['account_used'] = dominio.user_set.count()
  475. t['alias_used'] = dominio.alias_set.count()
  476. t['list_used'] = dominio.liste_set.count()
  477. print('count: ',dominio.user_set.count(),dominio.alias_set.count(),dominio.liste_set.count())
  478. except ValueError as ve:
  479. print('errore:',ve)
  480. t['account_used'] = 0
  481. t['alias_used'] = 0
  482. t['list_used'] = 0
  483. t['enabled'] = dominio.enabled
  484. t['tobedeleted'] = dominio.tobedeleted
  485. t['mail'] = dominio.mail
  486. t['pop3'] = dominio.pop3
  487. t['imap'] = dominio.imap
  488. t['smtp'] = dominio.smtp
  489. t['smtp_relay'] = dominio.smtp_relay
  490. t['webmail'] = dominio.webmail
  491. t['nextcloud'] = dominio.nextcloud
  492. t['nextcloud_pwd'] = dominio.nextcloud_pwd
  493. t['sms'] = dominio.sms
  494. t['sendafile'] = dominio.sendafile
  495. t['lmtp'] = dominio.lmtp
  496. t['sieve'] = dominio.sieve
  497. t['antivirus'] = dominio.antivirus
  498. t['spf'] = dominio.spf
  499. t['blacklist'] = dominio.blacklist
  500. t['ftp'] = dominio.ftp
  501. t['sql'] = dominio.sql
  502. t['http'] = dominio.http
  503. t['proxy'] = dominio.proxy
  504. t['edit'] = dominio.edit
  505. try:
  506. t['dominio_storia'] = dominio.storia_set.all()
  507. except ValueError as ve:
  508. print('Errore:',ve)
  509. try:
  510. t['registrar'] = dominio.registrar_id
  511. except Registrar.DoesNotExist as dne:
  512. print(dne)
  513. try:
  514. t['mail_server'] = dominio.mail_server_id
  515. except MailServer.DoesNotExist as dne:
  516. print(dne)
  517. t['mail_server'] = getConfigurazione('default_mail_server')
  518. try:
  519. t['mail_proxy'] = dominio.mail_proxy_id
  520. except MailProxy.DoesNotExist as dne:
  521. print(dne)
  522. t['mail_proxy'] = getConfigurazione('default_mail_proxy')
  523. try:
  524. t['lmtp_server'] = dominio.lmtp_server_id
  525. except LmtpServer.DoesNotExist as dne:
  526. print(dne)
  527. t['lmtp_server'] = getConfigurazione('default_lmtp_server')
  528. try:
  529. t['sql_remote'] = dominio.mail_proxy_id
  530. except MailProxy.DoesNotExist as dne:
  531. print(dne)
  532. t['sql_remote'] = getConfigurazione('default_sql_remote')
  533. try:
  534. t['last_causale'] = dominio.last_causale_id
  535. except Causale.DoesNotExist as dne:
  536. print("Causale indicata inesistente")
  537. t['last_causale'] = 0
  538. except ValueError as ve:
  539. print("Errore di valore")
  540. t['last_causale'] = 0
  541. try:
  542. t['target'] = dominio.target_id
  543. print('target',t['target'])
  544. except Target.DoesNotExist as dne:
  545. print("Target indicato inesistente")
  546. t['target'] = getConfigurazione('default-target')
  547. value['totale'] = 0
  548. try:
  549. value['totale'] += dominio.mail_quota
  550. except TypeError:
  551. value['totale'] += 0
  552. try:
  553. value['totale'] += dominio.http_quota
  554. except TypeError:
  555. value['totale'] += 0
  556. try:
  557. value['totale'] +=dominio.ftp_quota
  558. except TypeError:
  559. value['totale'] += 0
  560. try:
  561. value['totale'] += dominio.sql_quota
  562. except TypeError:
  563. value['totale'] += 0
  564. try:
  565. value['totale'] += dominio.nextcloud_quota
  566. except TypeError:
  567. value['totale'] += 0
  568. print('totale',value['totale'])
  569. print(t)
  570. fde = FormDomainEdit(t)
  571. fde.update()
  572. value['domainedit']=fde
  573. try:
  574. value['display_last_causale'] = dominio.last_causale.nome
  575. except Causale.DoesNotExist as dne:
  576. value['display_last_causale'] = 'non assegnata'
  577. except ValueError:
  578. value['display_last_causale' ] = 'non assegnata'
  579. value['UltimaStoriaCausali'] = UltimaStoriaCausali(dominio,5)
  580. # mostra assegnazione ftp
  581. ftplist = FTPUser.objects.all().filter(dominio=dominio.id)
  582. value['ftplist'] = ftplist
  583. return render(request,'gestione.domain.edit.html',value)
  584. def DomainShow(request):
  585. session = getSessionParms(request)
  586. userauth = session['_userauth_']
  587. utenteautorizzato = User.objects.get(pk=userauth)
  588. dominio = Domini()
  589. domain2edit = session['_domain2edit_']
  590. if not domain2edit:
  591. domain2edit = utenteautorizzato.domain.id
  592. dominio = Domini.objects.get(pk=domain2edit)
  593. print("domain2Edit: ",domain2edit)
  594. value={}
  595. value['utenteautorizzato'] = utenteautorizzato
  596. value['used_account' ] = len(User.objects.filter(domain=dominio))
  597. value['used_alias'] = len(Alias.objects.filter(domain=dominio))
  598. value['registrar'] = Registrar.objects.all().filter(enabled=True).order_by('nome')
  599. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  600. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  601. securityrow = getSecurityRow(securitylevel.id)
  602. securitylist = getSecurityList(securityrow)
  603. value['securityrow'] = securityrow
  604. value['securityrowLen'] = len(securityrow)
  605. value['securitylist'] = securitylist
  606. value['navbar']=True
  607. value['dominio'] = dominio
  608. value['totale'] = 0
  609. try:
  610. value['totale'] += dominio.mail_quota
  611. except TypeError:
  612. value['totale'] += 0
  613. try:
  614. value['totale'] += dominio.http_quota
  615. except TypeError:
  616. value['totale'] += 0
  617. try:
  618. value['totale'] +=dominio.ftp_quota
  619. except TypeError:
  620. value['totale'] += 0
  621. try:
  622. value['totale'] += dominio.sql_quota
  623. except TypeError:
  624. value['totale'] += 0
  625. try:
  626. value['totale'] += dominio.nextcloud_quota
  627. except TypeError:
  628. value['totale'] += 0
  629. print('totale',value['totale'])
  630. # mostra assegnazione ftp
  631. ftplist = FTPUser.objects.all().filter(dominio=dominio.id)
  632. value['ftplist'] = ftplist
  633. return render(request,'gestione.domain.show.html',value)
  634. def DomainServiziLista(request):
  635. '''
  636. lista dei servizi disponibili indipendentemente dal dominio
  637. '''
  638. session = getSessionParms(request)
  639. userauth = session['_userauth_']
  640. utenteautorizzato = User.objects.get(pk=userauth)
  641. # da qui carica i dati dal db.
  642. #domain2edit = session['_domain2edit_']
  643. #dominio = Domini.objects.get(pk=domain2edit)
  644. value={}
  645. value['utenteautorizzato'] = utenteautorizzato
  646. #value['dominio'] = dominio
  647. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  648. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  649. securityrow = getSecurityRow(securitylevel.id)
  650. securitylist = getSecurityList(securityrow)
  651. value['securityrow'] = securityrow
  652. value['securityrowLen'] = len(securityrow)
  653. value['securitylist'] = securitylist
  654. value['navbar']=True
  655. value['domainservice'] = DominiServizi.objects.all()
  656. if request.method=="POST":
  657. pass
  658. return render(request,"gestione.domain.servizi.lista.html",value)
  659. def DomainServiceEdit(request):
  660. '''
  661. accesso ai servizi legati al dominio
  662. '''
  663. session = getSessionParms(request)
  664. userauth = session['_userauth_']
  665. utenteautorizzato = User.objects.get(pk=userauth)
  666. # da qui carica i dati dal db.
  667. domain2edit = session['_domainservice2edit_']
  668. dommainservice = DomainService.objects.get(pk=domainservice2edit)
  669. value={}
  670. value['utenteautorizzato'] = utenteautorizzato
  671. value['dominio'] = dominio
  672. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  673. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  674. securityrow = getSecurityRow(securitylevel.id)
  675. securitylist = getSecurityList(securityrow)
  676. value['securityrow'] = securityrow
  677. value['securityrowLen'] = len(securityrow)
  678. value['securitylist'] = securitylist
  679. value['navbar']=True
  680. domainservice = DomainService()
  681. try:
  682. domainservice = DomainService.objects.get(ok=domainservice2edit)
  683. except DomainService.DoesNotExist as dne:
  684. print(dne)
  685. if request.method=="POST":
  686. if 'edit' in request.POST:
  687. pass
  688. temp = {}
  689. temp['nome'] = domainservice.nome
  690. temp['classe'] = domainservice.classe
  691. temp['enabled'] = domainservice.enabled
  692. temp['home'] = domainservice.home
  693. domainserviceform = DomainServiceForm(temp)
  694. value['doaminserviceform'] = domainserviceform
  695. return render(request,"gestioneDomainService.html",value)
  696. def ServiziLista(request):
  697. session = getSessionParms(request)
  698. userauth = session['_userauth_']
  699. request.session['_from_']="Domini:ServiziList"
  700. try:
  701. utenteautorizzato = User.objects.get(pk=userauth)
  702. except User.DoesNotExist as dne:
  703. return HttpResponseRedirect(reverse('Login:login',args={}))
  704. servizi = Servizi.objects.all().order_by('nome')
  705. value={}
  706. value['utenteautorizzato'] = utenteautorizzato
  707. value['causali'] = causali
  708. value['navbar'] = True
  709. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  710. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
  711. securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
  712. value['securityrow'] = securityrow
  713. value['securityrowLen'] = len(securityrow)
  714. return render(request,'gestione.servizi.list.html',value)
  715. def DomainServizi(request):
  716. '''
  717. accesso ai servizi legati al domini x singolo dominio
  718. '''
  719. session = getSessionParms(request)
  720. userauth = session['_userauth_']
  721. utenteautorizzato = User.objects.get(pk=userauth)
  722. # da qui carica i dati dal db.
  723. domain2edit = session['_domain2edit_']
  724. dominio = Domini.objects.get(pk=domain2edit)
  725. value={}
  726. value['utenteautorizzato'] = utenteautorizzato
  727. value['dominio'] = dominio
  728. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  729. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  730. securityrow = getSecurityRow(securitylevel.id)
  731. securitylist = getSecurityList(securityrow)
  732. value['securityrow'] = securityrow
  733. value['securityrowLen'] = len(securityrow)
  734. value['securitylist'] = securitylist
  735. value['navbar']=True
  736. return render(request,"gestione.domain.servizi.html",value)
  737. def DomainServiceAssignment(request):
  738. session = getSessionParms(request)
  739. userauth = session['_userauth_']
  740. utenteautorizzato = User.objects.get(pk=userauth)
  741. # da qui carica i dati dal db.
  742. domain2edit = session['_domain2edit_']
  743. dominio = Domini.objects.get(pk=domain2edit)
  744. value={}
  745. value['utenteautorizzato'] = utenteautorizzato
  746. value['dominio'] = dominio
  747. print("livello autorizzazione",utenteautorizzato.securitylevel_id)
  748. securitylevel = getSecurityLevel(utenteautorizzato.securitylevel.id)
  749. securityrow = getSecurityRow(securitylevel.id)
  750. securitylist = getSecurityList(securityrow)
  751. value['securityrow'] = securityrow
  752. value['securityrowLen'] = len(securityrow)
  753. value['securitylist'] = securitylist
  754. value['navbar']=True
  755. if request.method == 'POST':
  756. print(request.POST)
  757. if 'serviziodaaaggiungere' in request.POST:
  758. print('addservice')
  759. v = request.POST.get('serviziodaaggiungere')
  760. print(v)
  761. s = DominiServizi.objects.get(pk=v)
  762. d = DominiServiziAssegnati()
  763. d.dominio = dominio
  764. d.servizio = s
  765. d.attivazione = datetime.today().strftime('%Y-%m-%d')
  766. f = FormServiziNota(request.POST)
  767. if f.is_valid():
  768. d.nota = f.cleaned_data.get('nota')
  769. print(d.nota)
  770. else:
  771. print(f.errors)
  772. d.save()
  773. if 'serviziodarimuovere' in request.POST:
  774. v = request.POST.get('serviziodarimuovere')
  775. print('delservice',v)
  776. s = DominiServiziAssegnati.objects.get(pk=int(v))
  777. s.disattivazione = datetime.today().strftime('%Y-%m-%d')
  778. f = FormServiziNota(request.POST)
  779. if f.is_valid():
  780. s.nota = f.cleaned_data['nota']
  781. print(".",s.nota)
  782. else:
  783. print(f.errors)
  784. s.save()
  785. value['domainservizi'] = DominiServizi.objects.all().filter(enabled=True)
  786. value['domainserviziassegnati'] = dominio.dominiserviziassegnati_set.all()
  787. return render(request,'gestione.servizi.assignment.html',value)
  788. def DomainService(request):
  789. pass
  790. def OnSync(request):
  791. #sincronizza alcuni parametri di un dominio
  792. session = getSessionParms(request)
  793. userauth = session['_userauth_']
  794. utenteautorizzato = User.objects.get(pk=userauth)
  795. domain2edit = session['_domain2edit_']
  796. # se e' a 0: associa il dominio dell'utente autorizzato
  797. # se e' a -1: nuovo dominio
  798. # se non e' indicato un dominio, usa il dominio dell'utente.
  799. if not domain2edit:
  800. return HttpResponseNonFound('Not Valid')
  801. dominio = Domini.objects.get(pk=domain2edit)
  802. data = { 'Status': 'freghete' }
  803. return JsonResponse(data)