from django.shortcuts import render,redirect from time import time from django.http import HttpResponseRedirect from django.urls import reverse from .models import * from supporto.views import * from sicurezza.views import * #from coda.views import * import json from mqtt import views as m from mqtt.views import mqtt # Create your views here. def CancellazioneLista(request): session = getSessionParms(request) userauth = session['_userauth_'] alias2edit = session['_alias2edit_'] domain2edit = session['_domain2edit_'] try: utenteautorizzato = User.objects.get(pk=userauth) except User.DoesNotExist as dne: return HttpResponseRedirect(reverse('Login:login',args={})) value={} value['navbar'] = True value['utenteautorizzato'] = utenteautorizzato mq = mqtt() mq.build('topic','Messaggio') mq.build('stampa',False) tmp = dict() tmp['utente'] = ''.join((utenteautorizzato.mail,'@',utenteautorizzato.domain.nome)) tmp['remote'] = request.META.get('REMOTE_ADDRESS') tmp['forwarder'] = request.META.get('HTTP_X_FORWARDER_FOR','') tmp['host'] = request.META.get('REMOTE_ADDR','') mq.build('data',tmp) mq.pubblica() tmp=None mq=None #raduna i vari elementi da cancellare dominidacancellare = Domini.objects.filter(tobedeleted=1) utentidacancellare = User.objects.filter(tobedeleted=1) | User.objects.filter(domain__tobedeleted=1) aliasdacancellare = Alias.objects.filter(tobedeleted=1) | Alias.objects.filter(domain__tobedeleted=1) sqldatabasedacancellare = SqlDatabase.objects.filter(tobedeleted=1) | SqlDatabase.objects.filter(dominio__tobedeleted=1) ftpuserdacancellare = FTPUser.objects.filter(tobedeleted=1) | FTPUser.objects.filter(dominio__tobedeleted=1) #non direttamente eliminabili #DomainAssociatedContact #DomainAssociatedService #history print('dominidacancellare',len(dominidacancellare)) print('utentidacancellare',len(utentidacancellare)) print('aliasdacancellare',len(aliasdacancellare)) print('sqldatabasedacancellare',len(sqldatabasedacancellare)) print('ftpuserdacancellare',len(ftpuserdacancellare)) value['dominidacancellare'] = dominidacancellare value['utentidacancellare'] = utentidacancellare value['aliasdacancellare'] = aliasdacancellare value['sqldatabasedacancellare'] = sqldatabasedacancellare value['ftpuserdacancellare'] = ftpuserdacancellare if 'cancellazioneutentetutti' in request.POST: c = m.start() m.publish(c,"Messaggi","Cancellazione Elementi Vecchi") external = list() for utente in utentidacancellare: parms = "{s}/{d}/{u}".format(**{'s':utente.domain.mail_server.server.strip(),'d':utente.domain.nome.strip(),'u':utente.mail.strip()}) print("utente: rm -rvf",parms) q = {} q['op'] = 'deleteMail' q['sv'] = utente.domain.mail_server.server.strip() q['do'] = utente.domain.nome.strip() q['us'] = utente.mail.strip() if utente.domain.mail_server.nome: mq = mqtt() mq.build('topic','mail') mq.build('richiesta',''.join(('cancellazione/mail/',utente.domain.mail_server.nome.strip()))) tmp = dict() tmp['dominio']=utente.domain.nome tmp['mail']=utente.mail tmp['posizione']='/'+utente.domain.mail_server.nome.strip() tmp['server']=utente.domain.mail_server.nome.strip() tmp['estensione']='_old_' print("tmp",tmp) mq.build('data',[tmp,]) mq.pubblica() tmp=None mq=None topic = 'mail/'+utente.domain.mail_server.nome.strip() print("topic",topic) m.publish(c,topic,json.dumps(q)) try: if utente.sql_remote.ip and not utente.sql_remote.ip in external: external.append(utente.sql_remote.ip) except SqlRemote.DoesNotExist as dne: print("dne",dne) utente.delete() else: print("Nome Server Non Definito") print('external',external) if len(external): mq = mqtt() mq.build('topic','richiesta/mail') mq.build('richiesta','update_remote') mq.build('data',external) mq.pubblica() mq=None value['utentidacancellare'] = [] if 'cancellazionealiastutti' in request.POST: for alias in aliasdacancellare: print('Alias:',alias.id) alias.delete() value['aliasdacancellare'] = [] if 'cancellazionedatabasetutti' in request.POST: pass if 'cancellazioneftptutti' in request.POST: pass return render(request,"CancellazioneLista.html",value) def CancellazioneDominio(request,DominioId=None): c = m.start() m.publish(c,"Messaggi","Cancellazione Elementi Vecchi") if not DominioId: return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) session = getSessionParms(request) userauth = session['_userauth_'] user2edit = session['_user2edit_'] domain2edit = session['_domain2edit_'] try: utenteautorizzato = User.objects.get(pk=userauth) except User.DoesNotExist as dne: return HttpResponseRedirect(reverse('Login:login',args={})) value={} value['utenteautorizzato'] = utenteautorizzato value['navbar'] = True dominio = Domini.objects.get(pk=DominioId) value['dominio']=dominio if request.method=="POST": if request.session['ReturnButton'] in request.POST: del request.session['ConfirmButton'] del request.session['ReturnButton'] return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) if request.session['ConfirmButton'] in request.POST: #inizia cancellazione di tutto history = History.objects.filter(domain=dominio.id) print('numero di record History rimossi:',history) value['history'] = history for i in history: i.delete() dominiserviziassegnati = DominiServiziAssegnati.objects.filter(dominio = dominio.id) print('servizi assegnati',dominiserviziassegnati) value['dominiserviziassegnati'] = dominiserviziassegnati for i in dominiserviziassegnati: i.delete() ''' questa parte la possiamo togliere in quanto andando a rimuovere il dominio, possiamo procedere a rinominare l'intera cartella, senza passarsi le mail utenti = User.objects.filter(domain=dominio) external = list() print('utenti da cancellare',len(utenti)) for utente in utenti: if utente.domain.mail_server.nome: mq = mqtt() mq.build('topic','mail') mq.build('richiesta',''.join(('cancellazione/mail/',utente.domain.mail_server.nome.strip()))) tmp = dict() tmp['dominio']=dominio.nome tmp['mail']=utente.mail tmp['posizione']='mail/'+utente.domain.mail_server.nome.strip() tmp['server']=utente.domain.mail_server.nome.strip() tmp['estensione']='._old_' mq.build('data',tmp) mq.pubblica() tmp=None mq=None try: if utente.sql_remote.ip: if not utente.sql_remote.ip in external: external.append(utente.sql_remote.ip) else: print("mqtt: sql_remote e' impostato a 0") except User.sql_remote.RelatedObjectDoesNotExist as rdne: print(rdne) utente.delete() print('external',external) if len(external): mq = mqtt() mq.build('topic','richiesta/mail') mq.build('richiesta','update_remote') mq.build('data',external) mq.pubblica() mq=None ''' print('dominio da rinominare direttamente',dominio.nome) print('nome mail server dominio',dominio.mail_server.nome) print('posizione fisica',dominio.mail_server.fisico) if dominio.mail_server.enabled and dominio.mail_server.fisico != "/dev/null": mq = mqtt() mq.build('topic','mail') mq.build('richiesta','cancellazione/dominio') mq.build('stampa',True) mq.build('demo',False) tmp = dict() tmp['dominio'] = dominio.nome tmp['posizione'] = dominio.mail_server.fisico tmp['estensione'] = '._old_' mq.build('data',tmp) mq.pubblica() tmp=None mq=None alias = Alias.objects.filter(domain = dominio.id) print("Alias ",alias) value['alias'] = alias for a in alias: a.delete() ftpuser = FTPUser.objects.filter(dominio = dominio.id) print("Utenti FTP ",ftpuser) value['ftpuser'] = ftpuser for i in ftpuser: i.delete() sqldatabase = SqlDatabase.objects.filter(dominio = dominio.id) print("database SQL ",sqldatabase) value['sqldatabase'] = sqldatabase for i in sqldatabase: q = {} q['op'] = 'delete' q['db']=i.nome q['us']=i.username q['ho']=i.server.server m.publish(c,"Database","{}".format(json.dumps(q))) i.delete() #rimozione della cartella parms = "{s}/{d}".format(**{'s':dominio.mail_server.server.strip(),'d':dominio.nome.strip()}) print('rimuovere: ',parms) q = {} q['op'] = 'deleteDomain' q['sv'] = dominio.mail_server.server.strip() q['do'] = dominio.nome.strip() # per topic si intende il server che sta gestendo lo storage fisico topic = 'mail/'+dominio.mail_server.server.strip() m.publish(c,topic,json.dumps(q)) print('Dominio in cancellazione: ',dominio.id,dominio.nome) dominio.delete() del request.session['ConfirmButton'] del request.session['ReturnButton'] request.session['ReturnButton'] = str(time()) value['ReturnButton'] = request.session['ReturnButton'] return redirect(reverse('Cancellazione:CancellazioneRisultato')) request.session['ConfirmButton'] = str(time()) request.session['ReturnButton'] = str(time()) value['ConfirmButton'] = request.session['ConfirmButton'] value['ReturnButton'] = request.session['ReturnButton'] return render(request,'CancellazioneDominio.html',value) def CancellazioneUtente(request,UtenteId=None): c = m.start() m.publish(c,"Messaggi","Cancellazione Elementi Vecchi") if not UtenteId: return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) session = getSessionParms(request) userauth = session['_userauth_'] user2edit = session['_user2edit_'] domain2edit = session['_domain2edit_'] utenteautorizzato = User.objects.get(pk=userauth) value={} value['utenteautorizzato'] = utenteautorizzato value['navbar'] = True utente = User.objects.get(pk=UtenteId) value['utente'] = utente if request.method=="POST": if request.session['ReturnButton'] in request.POST: try: del request.session['ConfirmButton'] del request.session['ReturnButton'] except KeyError as ke: pass return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) if request.session['ConfirmButton'] in request.POST: #inizia cancellazione di tutto parms = "{s}/{d}/{u}".format(**{'s':utente.domain.mail_server.server.strip(),'d':utente.domain.nome.strip(),'u':utente.mail.strip()}) print("utente: rm -rvf",parms) #etCoda('DELETEMAIL',parms) q = {} q['op'] = 'deleteMail' q['sv'] = utente.domain.mail_server.server.strip() q['do'] = utente.domain.nome.strip() q['us'] = utente.mail.strip() q['cm'] = "xx rm -rvf /home/server/dominio/utente" if utente.domain.mail_server.nome: topic = 'mail/'+utente.domain.mail_server.nome.strip() print("topic",topic) mq = mqtt() mq.build('topic',''.join(('mail/',utente.domain.mail_server.nome.strip()))) mq.build('richiesta','cancellazione/mail') mq.build('stampa',True) tmp = dict() tmp['dominio']=utente.domain.nome.strip() tmp['mail']=utente.mail.strip() tmp['posizione']=utente.domain.mail_server.nome.strip() tmp['server']=utente.domain.mail_server.nome.strip() tmp['estensione']='._old_' mq.build('data',[tmp,]) mq.pubblica() tmp=None mq=None external = list() try: if utente.sql_remote.ip in external: external.append(utente.sql_remote.ip) except SqlRemote.DoesNotExist as dne: print("campo remoto non esistente") if len(external): mq = mqtt() mq.build('topic','richiesta/mail') mq.build('richiesta','update_remote') mq.build('data',external) mq.pubblica() mq=None utente.delete() else: print("Nome Server Non Definito") try: del request.session['ConfirmButton'] except KeyError as ke: pass del request.session['ReturnButton'] return redirect(reverse('Cancellazione:CancellazioneRisultato')) request.session['ConfirmButton'] = str(time()) request.session['ReturnButton'] = str(time()) value['ConfirmButton'] = request.session['ConfirmButton'] value['ReturnButton'] = request.session['ReturnButton'] return render(request,'CancellazioneUtente.html',value) def CancellazioneAlias(request,AliasId=None): if not AliasId: return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) session = getSessionParms(request) userauth = session['_userauth_'] user2edit = session['_user2edit_'] domain2edit = session['_domain2edit_'] utenteautorizzato = User.objects.get(pk=userauth) value={} value['utenteautorizzato'] = utenteautorizzato value['navbar'] = True alias = Alias.objects.get(pk=AliasId) value['alias']=alias if request.method=="POST": if request.session['ReturnButton'] in request.POST: del request.session['ConfirmButton'] del request.session['ReturnButton'] return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) if request.session['ConfirmButton'] in request.POST: #inizia cancellazione di tutto alias.delete() try: del request.session['ConfirmButton'] except KeyError as ke: pass request.session['ReturnButton'] = str(time()) value['ReturnButton'] = request.session['ReturnButton'] return redirect(reverse('Cancellazione:CancellazioneRisultato')) request.session['ConfirmButton'] = str(time()) request.session['ReturnButton'] = str(time()) value['ConfirmButton'] = request.session['ConfirmButton'] value['ReturnButton'] = request.session['ReturnButton'] return render(request,'CancellazioneAlias.html',value) def CancellazioneDatabase(request,DatabaseId=None): if not DatabaseId: return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) session = getSessionParms(request) userauth = session['_userauth_'] user2edit = session['_user2edit_'] domain2edit = session['_domain2edit_'] utenteautorizzato = User.objects.get(pk=userauth) value={} value['utenteautorizzato'] = utenteautorizzato value['navbar'] = True database = SqlDatabase.objects.get(pk=DatabaseId) value['database']=database if request.method=="POST": if request.session['ReturnButton'] in request.POST: del request.session['ConfirmButton'] del request.session['ReturnButton'] return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) if request.session['ConfirmButton'] in request.POST: #inizia cancellazione di tutto print('sql:',database.nome) data = dict() data['op']='enable' data['db']=database.nome data['us']=database.username data['pw']=database.password data['ho']=database.server.server mq = mqtt() mq.build('topic','richiesta/database') mq.build('richiesta','delete_database') mq.build('data',data) mq.pubblica() mq=None database.delete() try: del request.session['ConfirmButton'] except KeyError as ke: pass request.session['ReturnButton'] = str(time()) value['ReturnButton'] = request.session['ReturnButton'] return redirect(reverse('Cancellazione:CancellazioneRisultato')) request.session['ConfirmButton'] = str(time()) request.session['ReturnButton'] = str(time()) value['ConfirmButton'] = request.session['ConfirmButton'] value['ReturnButton'] = request.session['ReturnButton'] return render(request,'CancellazioneDatabase.html',value) def CancellazioneRisultato(request): session = getSessionParms(request) userauth = session['_userauth_'] user2edit = session['_user2edit_'] domain2edit = session['_domain2edit_'] utenteautorizzato = User.objects.get(pk=userauth) value={} value['utenteautorizzato'] = utenteautorizzato value['navbar'] = True if request.method=="POST": if request.session['ReturnButton'] in request.POST: try: del request.session['ReturnButton'] except KeyError as ke: pass return HttpResponseRedirect(reverse('Cancellazione:CancellazioneLista')) #request.session['ReturnButton'] = str(time()) #value['ReturnButton'] = request.session['ReturnButton'] request.session['ReturnButton'] = str(time()) value['ReturnButton'] = request.session['ReturnButton'] print("ReturnButtonReturnButton",value) return render(request,'CancellazioneRisultato.html',value)