| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535 |
- 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)
|