2
0

views.py 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. from django.shortcuts import render,redirect
  2. from time import time
  3. from django.http import HttpResponseRedirect
  4. from django.urls import reverse
  5. from .models import *
  6. from supporto.views import *
  7. from sicurezza.views import *
  8. #from coda.views import *
  9. import json
  10. from mqtt import views as m
  11. from mqtt.views import mqtt
  12. # Create your views here.
  13. def CancellazioneLista(request):
  14. session = getSessionParms(request)
  15. userauth = session['_userauth_']
  16. alias2edit = session['_alias2edit_']
  17. domain2edit = session['_domain2edit_']
  18. try:
  19. utenteautorizzato = User.objects.get(pk=userauth)
  20. except User.DoesNotExist as dne:
  21. return HttpResponseRedirect(reverse('Login:login',args={}))
  22. value={}
  23. value['navbar'] = True
  24. value['utenteautorizzato'] = utenteautorizzato
  25. mq = mqtt()
  26. mq.build('topic','Messaggio')
  27. mq.build('stampa',False)
  28. tmp = dict()
  29. tmp['utente'] = ''.join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome))
  30. tmp['remote'] = request.META.get('REMOTE_ADDRESS')
  31. tmp['forwarder'] = request.META.get('HTTP_X_FORWARDER_FOR','')
  32. tmp['host'] = request.META.get('REMOTE_ADDR','')
  33. mq.build('data',tmp)
  34. mq.pubblica()
  35. tmp=None
  36. mq=None
  37. #raduna i vari elementi da cancellare
  38. dominidacancellare = Domini.objects.filter(tobedeleted=1)
  39. utentidacancellare = User.objects.filter(tobedeleted=1) | User.objects.filter(domain__tobedeleted=1)
  40. aliasdacancellare = Alias.objects.filter(tobedeleted=1) | Alias.objects.filter(domain__tobedeleted=1)
  41. sqldatabasedacancellare = SqlDatabase.objects.filter(tobedeleted=1) | SqlDatabase.objects.filter(dominio__tobedeleted=1)
  42. ftpuserdacancellare = FTPUser.objects.filter(tobedeleted=1) | FTPUser.objects.filter(dominio__tobedeleted=1)
  43. #non direttamente eliminabili
  44. #DomainAssociatedContact
  45. #DomainAssociatedService
  46. #history
  47. print('dominidacancellare',len(dominidacancellare))
  48. print('utentidacancellare',len(utentidacancellare))
  49. print('aliasdacancellare',len(aliasdacancellare))
  50. print('sqldatabasedacancellare',len(sqldatabasedacancellare))
  51. print('ftpuserdacancellare',len(ftpuserdacancellare))
  52. value['dominidacancellare'] = dominidacancellare
  53. value['utentidacancellare'] = utentidacancellare
  54. value['aliasdacancellare'] = aliasdacancellare
  55. value['sqldatabasedacancellare'] = sqldatabasedacancellare
  56. value['ftpuserdacancellare'] = ftpuserdacancellare
  57. if 'cancellazioneutentetutti' in request.POST:
  58. c = m.start()
  59. m.publish(c,"Messaggi","Cancellazione Elementi Vecchi")
  60. external = list()
  61. for utente in utentidacancellare:
  62. parms = "{s}/{d}/{u}".format(**{'s':utente.domain.mail_server.server.strip(),'d':utente.domain.nome.strip(),'u':utente.mail.strip()})
  63. print("utente: rm -rvf",parms)
  64. q = {}
  65. q['op'] = 'deleteMail'
  66. q['sv'] = utente.domain.mail_server.server.strip()
  67. q['do'] = utente.domain.nome.strip()
  68. q['us'] = utente.mail.strip()
  69. if utente.domain.mail_server.nome:
  70. mq = mqtt()
  71. mq.build('topic','mail')
  72. mq.build('richiesta',''.join(('cancellazione/mail/',utente.domain.mail_server.nome.strip())))
  73. tmp = dict()
  74. tmp['dominio']=utente.domain.nome
  75. tmp['mail']=utente.mail
  76. tmp['posizione']='/'+utente.domain.mail_server.nome.strip()
  77. tmp['server']=utente.domain.mail_server.nome.strip()
  78. tmp['estensione']='_old_'
  79. print("tmp",tmp)
  80. mq.build('data',[tmp,])
  81. mq.pubblica()
  82. tmp=None
  83. mq=None
  84. topic = 'mail/'+utente.domain.mail_server.nome.strip()
  85. print("topic",topic)
  86. m.publish(c,topic,json.dumps(q))
  87. try:
  88. if utente.sql_remote.ip and not utente.sql_remote.ip in external:
  89. external.append(utente.sql_remote.ip)
  90. except SqlRemote.DoesNotExist as dne:
  91. print("dne",dne)
  92. utente.delete()
  93. else:
  94. print("Nome Server Non Definito")
  95. print('external',external)
  96. if len(external):
  97. mq = mqtt()
  98. mq.build('topic','richiesta/mail')
  99. mq.build('richiesta','update_remote')
  100. mq.build('data',external)
  101. mq.pubblica()
  102. mq=None
  103. value['utentidacancellare'] = []
  104. if 'cancellazionealiastutti' in request.POST:
  105. for alias in aliasdacancellare:
  106. print('Alias:',alias.id)
  107. alias.delete()
  108. value['aliasdacancellare'] = []
  109. if 'cancellazionedatabasetutti' in request.POST:
  110. pass
  111. if 'cancellazioneftptutti' in request.POST:
  112. pass
  113. return render(request,"CancellazioneLista.html",value)
  114. def CancellazioneDominio(request,DominioId=None):
  115. c = m.start()
  116. m.publish(c,"Messaggi","Cancellazione Elementi Vecchi")
  117. if not DominioId:
  118. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  119. session = getSessionParms(request)
  120. userauth = session['_userauth_']
  121. user2edit = session['_user2edit_']
  122. domain2edit = session['_domain2edit_']
  123. try:
  124. utenteautorizzato = User.objects.get(pk=userauth)
  125. except User.DoesNotExist as dne:
  126. return HttpResponseRedirect(reverse('Login:login',args={}))
  127. value={}
  128. value['utenteautorizzato'] = utenteautorizzato
  129. value['navbar'] = True
  130. dominio = Domini.objects.get(pk=DominioId)
  131. value['dominio']=dominio
  132. if request.method=="POST":
  133. if request.session['ReturnButton'] in request.POST:
  134. del request.session['ConfirmButton']
  135. del request.session['ReturnButton']
  136. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  137. if request.session['ConfirmButton'] in request.POST:
  138. #inizia cancellazione di tutto
  139. history = History.objects.filter(domain=dominio.id)
  140. print('numero di record History rimossi:',history)
  141. value['history'] = history
  142. for i in history: i.delete()
  143. dominiserviziassegnati = DominiServiziAssegnati.objects.filter(dominio = dominio.id)
  144. print('servizi assegnati',dominiserviziassegnati)
  145. value['dominiserviziassegnati'] = dominiserviziassegnati
  146. for i in dominiserviziassegnati: i.delete()
  147. '''
  148. questa parte la possiamo togliere in quanto andando a rimuovere il dominio, possiamo procedere a rinominare l'intera cartella, senza passarsi le mail
  149. utenti = User.objects.filter(domain=dominio)
  150. external = list()
  151. print('utenti da cancellare',len(utenti))
  152. for utente in utenti:
  153. if utente.domain.mail_server.nome:
  154. mq = mqtt()
  155. mq.build('topic','mail')
  156. mq.build('richiesta',''.join(('cancellazione/mail/',utente.domain.mail_server.nome.strip())))
  157. tmp = dict()
  158. tmp['dominio']=dominio.nome
  159. tmp['mail']=utente.mail
  160. tmp['posizione']='mail/'+utente.domain.mail_server.nome.strip()
  161. tmp['server']=utente.domain.mail_server.nome.strip()
  162. tmp['estensione']='._old_'
  163. mq.build('data',tmp)
  164. mq.pubblica()
  165. tmp=None
  166. mq=None
  167. try:
  168. if utente.sql_remote.ip:
  169. if not utente.sql_remote.ip in external:
  170. external.append(utente.sql_remote.ip)
  171. else: print("mqtt: sql_remote e' impostato a 0")
  172. except User.sql_remote.RelatedObjectDoesNotExist as rdne:
  173. print(rdne)
  174. utente.delete()
  175. print('external',external)
  176. if len(external):
  177. mq = mqtt()
  178. mq.build('topic','richiesta/mail')
  179. mq.build('richiesta','update_remote')
  180. mq.build('data',external)
  181. mq.pubblica()
  182. mq=None
  183. '''
  184. print('dominio da rinominare direttamente',dominio.nome)
  185. print('nome mail server dominio',dominio.mail_server.nome)
  186. print('posizione fisica',dominio.mail_server.fisico)
  187. if dominio.mail_server.enabled and dominio.mail_server.fisico != "/dev/null":
  188. mq = mqtt()
  189. mq.build('topic','mail')
  190. mq.build('richiesta','cancellazione/dominio')
  191. mq.build('stampa',True)
  192. mq.build('demo',False)
  193. tmp = dict()
  194. tmp['dominio'] = dominio.nome
  195. tmp['posizione'] = dominio.mail_server.fisico
  196. tmp['estensione'] = '._old_'
  197. mq.build('data',tmp)
  198. mq.pubblica()
  199. tmp=None
  200. mq=None
  201. alias = Alias.objects.filter(domain = dominio.id)
  202. print("Alias ",alias)
  203. value['alias'] = alias
  204. for a in alias:
  205. a.delete()
  206. ftpuser = FTPUser.objects.filter(dominio = dominio.id)
  207. print("Utenti FTP ",ftpuser)
  208. value['ftpuser'] = ftpuser
  209. for i in ftpuser:
  210. i.delete()
  211. sqldatabase = SqlDatabase.objects.filter(dominio = dominio.id)
  212. print("database SQL ",sqldatabase)
  213. value['sqldatabase'] = sqldatabase
  214. for i in sqldatabase:
  215. q = {}
  216. q['op'] = 'delete'
  217. q['db']=i.nome
  218. q['us']=i.username
  219. q['ho']=i.server.server
  220. m.publish(c,"Database","{}".format(json.dumps(q)))
  221. i.delete()
  222. #rimozione della cartella
  223. parms = "{s}/{d}".format(**{'s':dominio.mail_server.server.strip(),'d':dominio.nome.strip()})
  224. print('rimuovere: ',parms)
  225. q = {}
  226. q['op'] = 'deleteDomain'
  227. q['sv'] = dominio.mail_server.server.strip()
  228. q['do'] = dominio.nome.strip()
  229. # per topic si intende il server che sta gestendo lo storage fisico
  230. topic = 'mail/'+dominio.mail_server.server.strip()
  231. m.publish(c,topic,json.dumps(q))
  232. print('Dominio in cancellazione: ',dominio.id,dominio.nome)
  233. dominio.delete()
  234. del request.session['ConfirmButton']
  235. del request.session['ReturnButton']
  236. request.session['ReturnButton'] = str(time())
  237. value['ReturnButton'] = request.session['ReturnButton']
  238. return redirect(reverse('Cancellazione:CancellazioneRisultato'))
  239. request.session['ConfirmButton'] = str(time())
  240. request.session['ReturnButton'] = str(time())
  241. value['ConfirmButton'] = request.session['ConfirmButton']
  242. value['ReturnButton'] = request.session['ReturnButton']
  243. return render(request,'CancellazioneDominio.html',value)
  244. def CancellazioneUtente(request,UtenteId=None):
  245. c = m.start()
  246. m.publish(c,"Messaggi","Cancellazione Elementi Vecchi")
  247. if not UtenteId:
  248. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  249. session = getSessionParms(request)
  250. userauth = session['_userauth_']
  251. user2edit = session['_user2edit_']
  252. domain2edit = session['_domain2edit_']
  253. utenteautorizzato = User.objects.get(pk=userauth)
  254. value={}
  255. value['utenteautorizzato'] = utenteautorizzato
  256. value['navbar'] = True
  257. utente = User.objects.get(pk=UtenteId)
  258. value['utente'] = utente
  259. if request.method=="POST":
  260. if request.session['ReturnButton'] in request.POST:
  261. try:
  262. del request.session['ConfirmButton']
  263. del request.session['ReturnButton']
  264. except KeyError as ke:
  265. pass
  266. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  267. if request.session['ConfirmButton'] in request.POST:
  268. #inizia cancellazione di tutto
  269. parms = "{s}/{d}/{u}".format(**{'s':utente.domain.mail_server.server.strip(),'d':utente.domain.nome.strip(),'u':utente.mail.strip()})
  270. print("utente: rm -rvf",parms)
  271. #etCoda('DELETEMAIL',parms)
  272. q = {}
  273. q['op'] = 'deleteMail'
  274. q['sv'] = utente.domain.mail_server.server.strip()
  275. q['do'] = utente.domain.nome.strip()
  276. q['us'] = utente.mail.strip()
  277. q['cm'] = "xx rm -rvf /home/server/dominio/utente"
  278. if utente.domain.mail_server.nome:
  279. topic = 'mail/'+utente.domain.mail_server.nome.strip()
  280. print("topic",topic)
  281. mq = mqtt()
  282. mq.build('topic',''.join(('mail/',utente.domain.mail_server.nome.strip())))
  283. mq.build('richiesta','cancellazione/mail')
  284. mq.build('stampa',True)
  285. tmp = dict()
  286. tmp['dominio']=utente.domain.nome.strip()
  287. tmp['mail']=utente.mail.strip()
  288. tmp['posizione']=utente.domain.mail_server.nome.strip()
  289. tmp['server']=utente.domain.mail_server.nome.strip()
  290. tmp['estensione']='._old_'
  291. mq.build('data',[tmp,])
  292. mq.pubblica()
  293. tmp=None
  294. mq=None
  295. external = list()
  296. try:
  297. if utente.sql_remote.ip in external:
  298. external.append(utente.sql_remote.ip)
  299. except SqlRemote.DoesNotExist as dne:
  300. print("campo remoto non esistente")
  301. if len(external):
  302. mq = mqtt()
  303. mq.build('topic','richiesta/mail')
  304. mq.build('richiesta','update_remote')
  305. mq.build('data',external)
  306. mq.pubblica()
  307. mq=None
  308. utente.delete()
  309. else:
  310. print("Nome Server Non Definito")
  311. try:
  312. del request.session['ConfirmButton']
  313. except KeyError as ke:
  314. pass
  315. del request.session['ReturnButton']
  316. return redirect(reverse('Cancellazione:CancellazioneRisultato'))
  317. request.session['ConfirmButton'] = str(time())
  318. request.session['ReturnButton'] = str(time())
  319. value['ConfirmButton'] = request.session['ConfirmButton']
  320. value['ReturnButton'] = request.session['ReturnButton']
  321. return render(request,'CancellazioneUtente.html',value)
  322. def CancellazioneAlias(request,AliasId=None):
  323. if not AliasId:
  324. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  325. session = getSessionParms(request)
  326. userauth = session['_userauth_']
  327. user2edit = session['_user2edit_']
  328. domain2edit = session['_domain2edit_']
  329. utenteautorizzato = User.objects.get(pk=userauth)
  330. value={}
  331. value['utenteautorizzato'] = utenteautorizzato
  332. value['navbar'] = True
  333. alias = Alias.objects.get(pk=AliasId)
  334. value['alias']=alias
  335. if request.method=="POST":
  336. if request.session['ReturnButton'] in request.POST:
  337. del request.session['ConfirmButton']
  338. del request.session['ReturnButton']
  339. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  340. if request.session['ConfirmButton'] in request.POST:
  341. #inizia cancellazione di tutto
  342. alias.delete()
  343. try:
  344. del request.session['ConfirmButton']
  345. except KeyError as ke:
  346. pass
  347. request.session['ReturnButton'] = str(time())
  348. value['ReturnButton'] = request.session['ReturnButton']
  349. return redirect(reverse('Cancellazione:CancellazioneRisultato'))
  350. request.session['ConfirmButton'] = str(time())
  351. request.session['ReturnButton'] = str(time())
  352. value['ConfirmButton'] = request.session['ConfirmButton']
  353. value['ReturnButton'] = request.session['ReturnButton']
  354. return render(request,'CancellazioneAlias.html',value)
  355. def CancellazioneDatabase(request,DatabaseId=None):
  356. if not DatabaseId:
  357. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  358. session = getSessionParms(request)
  359. userauth = session['_userauth_']
  360. user2edit = session['_user2edit_']
  361. domain2edit = session['_domain2edit_']
  362. utenteautorizzato = User.objects.get(pk=userauth)
  363. value={}
  364. value['utenteautorizzato'] = utenteautorizzato
  365. value['navbar'] = True
  366. database = SqlDatabase.objects.get(pk=DatabaseId)
  367. value['database']=database
  368. if request.method=="POST":
  369. if request.session['ReturnButton'] in request.POST:
  370. del request.session['ConfirmButton']
  371. del request.session['ReturnButton']
  372. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  373. if request.session['ConfirmButton'] in request.POST:
  374. #inizia cancellazione di tutto
  375. print('sql:',database.nome)
  376. data = dict()
  377. data['op']='enable'
  378. data['db']=database.nome
  379. data['us']=database.username
  380. data['pw']=database.password
  381. data['ho']=database.server.server
  382. mq = mqtt()
  383. mq.build('topic','richiesta/database')
  384. mq.build('richiesta','delete_database')
  385. mq.build('data',data)
  386. mq.pubblica()
  387. mq=None
  388. database.delete()
  389. try:
  390. del request.session['ConfirmButton']
  391. except KeyError as ke:
  392. pass
  393. request.session['ReturnButton'] = str(time())
  394. value['ReturnButton'] = request.session['ReturnButton']
  395. return redirect(reverse('Cancellazione:CancellazioneRisultato'))
  396. request.session['ConfirmButton'] = str(time())
  397. request.session['ReturnButton'] = str(time())
  398. value['ConfirmButton'] = request.session['ConfirmButton']
  399. value['ReturnButton'] = request.session['ReturnButton']
  400. return render(request,'CancellazioneDatabase.html',value)
  401. def CancellazioneRisultato(request):
  402. session = getSessionParms(request)
  403. userauth = session['_userauth_']
  404. user2edit = session['_user2edit_']
  405. domain2edit = session['_domain2edit_']
  406. utenteautorizzato = User.objects.get(pk=userauth)
  407. value={}
  408. value['utenteautorizzato'] = utenteautorizzato
  409. value['navbar'] = True
  410. if request.method=="POST":
  411. if request.session['ReturnButton'] in request.POST:
  412. try:
  413. del request.session['ReturnButton']
  414. except KeyError as ke:
  415. pass
  416. return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista'))
  417. #request.session['ReturnButton'] = str(time())
  418. #value['ReturnButton'] = request.session['ReturnButton']
  419. request.session['ReturnButton'] = str(time())
  420. value['ReturnButton'] = request.session['ReturnButton']
  421. print("ReturnButtonReturnButton",value)
  422. return render(request,'CancellazioneRisultato.html',value)