| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877 |
- from django.shortcuts import render
- from django.http import HttpResponseRedirect,HttpResponse,HttpRequest
- from django.urls import reverse
- from datetime import datetime
- import json
- from .models import *
- from .forms import *
- from supporto import managepassword
- from sicurezza.views import *
- from logger.views import *
- from comunicazioni.views import *
- from datetime import date,datetime
- from time import time,strftime
- from configurazione.views import *
- import re
- from mqtt import views as m
- from mqtt.views import mqtt
- # Create your views here.
- def SqlDatabaseList(request):
- session = getSessionParms(request)
- userauth = session['_userauth_']
- sqldatabase2edit = session['_sqldatabase2edit_']
- domain2edit = session['_domain2edit_']
- request.session['_from_']="Sql:SqlDatabaseList"
- try:
- utenteautorizzato = User.objects.get(pk=userauth)
- except User.DoesNotExist as dne:
- return HttpResponseRedirect(reverse('Login:login',args={}))
- if not domain2edit:
- domain2edit = utenteautorizzato.domain.id
- dominio = Domini.objects.get(pk=domain2edit)
- value={}
- value['utenteautorizzato'] = utenteautorizzato
- value['user'] = None
- value['sqldatabaselist'] = SqlDatabase.objects.filter(dominio=domain2edit).order_by('nome')
- value['dominio'] = dominio
- value['navbar'] = True
- print("livello autorizzazione",utenteautorizzato.securitylevel_id)
- securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
- securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
- value['securityrow'] = securityrow
- value['securityrowLen'] = len(securityrow)
- value['CANWRITE']=True #per il momento, questo flag serve a capire se e' un record nuovo
- # step: procurare la riga ftp master
- path = None
- print('dominio',dominio.id)
- listaftp = dominio.ftpuser_set.all()
- path = None
- for f in listaftp:
- if f.ftpgroup.master:
- path = ''.join((f.ftpgroup.home,f.dominio.nome))
- print('home ftp',path)
- print('Test Database HTTP Server',dominio.id,dominio.nome)
- if path:
- value['has_http_server'] = True
- else:
- value['has_http_server']= False
- print('non risulta assegnato il server http')
- #vecchia versione mqtt
- c = m.start()
- # nuova versione mqtt
- mq = mqtt()
- mq.build('topic','Messaggio')
- mq.build('richiesta','Database')
- mq.build('stampa',False)
- tmp = dict()
- tmp['login'] = "".join((utenteautorizzato.nome,"@",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
- if request.method == 'POST':
- print('request.method',request.method)
- print(request.POST)
- if 'NuovoSqlDatabase' in request.POST:
- print('Richiesto nuovo database')
- request.session['_sqldatabase2edit_'] = 0
- return HttpResponseRedirect(reverse('Sql:SqlDatabaseEdit',args={}))
- if 'AggiornaDbConf' in request.POST and path != None:
- print('Richiesta Aggiornamento db.conf')
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','writedb.conf')
- mq.build('stampa',False)
- tmp = dict()
- data = list()
- for d in value['sqldatabaselist']:
- tmp=dict()
- if d.enabled and not d.tobedeleted:
- print('database',d.nome)
- tmp['do']=d.dominio.nome
- tmp['id']=d.dominio.id
- tmp['db']=d.nome
- tmp['us']=d.username
- tmp['ho']=d.server.server
- tmp['pw']=d.password
- tmp['pa']=path
- data.append(tmp)
- print('data',data)
- mq.build('data',data)
- mq.pubblica()
- tmp=None
- mq=None
-
- if 'LeggiDbConf' in request.POST and path != None:
- print('richiesta lettura db.conf')
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','readdb.conf')
- mq.build('stampa',False)
- data = list()
- q={}
- q['op']='readdbconf'
- q['do']=dominio.nome
- q['id']=dominio.id
- q['pa']=path
- print(q)
- data.append(q)
- print(data)
- mq.build('data',data)
- mq.pubblica()
- tmp=None
- mq=None
- # backup di tutti i db nel dominio
- sqlpath = getConfigurazione('sql:path')
- backuppath = getConfigurazione('sql:backuppath')
- if 'BackupDbDom' in request.POST:
- print('Richiesta backup Database Dominio')
- q = dict()
- database2backup = list()
- for i in value['sqldatabaselist']:
- if i.enabled:
- infodb = dict()
- infodb['db']=i.nome
- infodb['us']=i.username
- infodb['ho']=i.server.server
- infodb['pw']=i.password
- infodb['do']=i.dominio.nome
- infodb['id']=i.dominio.id
- infodb['dbid'] = i.id
- f = i.dominio.ftpuser_set.all().filter(ftpgroup__master=True)
- for singleftp in f:
- print(dir(singleftp))
- print(singleftp.homedir,singleftp.ftpgroup.l3,singleftp.ftpgroup.directory % { 'ftp':singleftp.utente,'site':i.dominio.nome })
- #infodb['st'] = x.homedir + "/" + sqlpath
- tmp = singleftp.ftpgroup.directory % { 'ftp':singleftp.utente,'site':i.dominio.nome }
- infodb['st'] =tmp
- infodb['pa'] = "/" + backuppath
- infodb['pr'] = 0 #periodo singolo
- print('infodb',infodb)
- database2backup.append(infodb)
-
- print(q)
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','backupdatabasedominio')
- mq.build('stampa',True)
- mq.build('data',database2backup)
- mq.pubblica()
- tmp=None
- mq=None
- if 'edit' in request.POST:
- print('edit',request.POST.get('edit'))
- request.session['_sqldatabase2edit_'] = request.POST.get('edit')
- return HttpResponseRedirect(reverse('Sql:SqlDatabaseEdit',args={}))
- if 'enable' in request.POST:
- print('enabled in request.POST',request.POST.get('enable'))
- sqlsingledatabase = SqlDatabase.objects.get(pk=request.POST.get('enable'))
- sqlsingledatabase.enabled = True
- #qlsingledatabase.tobedeleted = False
- sqlsingledatabase.save()
- q={}
- q['op']='enable'
- q['db']=sqlsingledatabase.nome
- q['us']=sqlsingledatabase.username
- q['pw']=sqlsingledatabase.password
- q['ho']=sqlsingledatabase.server.server
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','enable_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- if 'disable' in request.POST:
- print('disabled in request.POST',request.POST.get('disable'))
- sqlsingledatabase = SqlDatabase.objects.get(pk=request.POST.get('disable'))
- if not sqlsingledatabase.locked:
- sqlsingledatabase.enabled = False
- sqlsingledatabase.tobedeleted = False
- sqlsingledatabase.save()
- q={}
- q['op']='disable'
- q['db']=sqlsingledatabase.nome
- q['us']=sqlsingledatabase.username
- q['ho']=sqlsingledatabase.server.server
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
-
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','disable_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- if 'delete' in request.POST:
- print('delete in request.POST',request.POST.get('delete'))
- sqlsingledatabase = SqlDatabase.objects.get(pk=request.POST.get('delete'))
- print("richiesta cancellazione db:",sqlsingledatabase.id)
- if not sqlsingledatabase.locked:
- print("coferma richiesta")
- sqlsingledatabase.enabled = False
- sqlsingledatabase.tobedeleted = True
- sqlsingledatabase.save()
-
- q={}
- q['op']='disable'
- q['db']=sqlsingledatabase.nome
- q['us']=sqlsingledatabase.username
- q['ho']=sqlsingledatabase.server.server
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','disable_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- if 'backup' in request.POST:
- print('effettuo backup request.POST',request.POST.get('backup'))
- sqlsingledatabase = SqlDatabase.objects.get(pk=request.POST.get('backup'))
- qq={}
- qq['op']='backup'
- qq['db']=sqlsingledatabase.nome
- qq['us']=sqlsingledatabase.username
- qq['pw']=sqlsingledatabase.password
- qq['ho']=sqlsingledatabase.server.server
- qq['do']=sqlsingledatabase.dominio.nome
- qq['id']=sqlsingledatabase.dominio.id
- qq['dbid']=sqlsingledatabase.id
- qq['pa']=path
- qq['dd']=sqlsingledatabase.id
- f = sqlsingledatabase.dominio.ftpuser_set.all().filter(ftpgroup__master=True)
- for singleftp in f:
- print(dir(singleftp))
- print(singleftp.homedir,singleftp.ftpgroup.l3,singleftp.ftpgroup.directory % { 'ftp':singleftp.utente,'site':sqlsingledatabase.dominio.nome })
- #infodb['st'] = x.homedir + "/" + sqlpath
- tmp = singleftp.ftpgroup.directory % { 'ftp':singleftp.utente,'site':sqlsingledatabase.dominio.nome }
- qq['st'] =tmp
- qq['pa'] = "/" + backuppath
- qq['pr'] = 0 #periodo
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','backupdatabasesingolo')
- mq.build('stampa',True)
- mq.build('data',[qq])
- mq.pubblica()
- tmp=None
- mq=None
- if 'phpmyadmin' in request.POST:
- sqlsingledatabase = SqlDatabase.objects.get(pk=request.POST.get('phpmyadmin'))
- #sqlsingledatabase.allowexternal=True
- #sqlsingledatabase.save()
- print('Eseguo PhpMyAdmin',request.POST.get('phpmyadmin'))
- html = HttpResponse('Eseguo php...',status=302)
- html['location']='https://altemica.net/phpmyadmin/index.php'
- html['Target'] = '_blank'
- html.set_cookie('PMA_username',sqlsingledatabase.username,max_age=None)
- html.set_cookie('PMA_password',sqlsingledatabase.password,max_age=None)
- html.set_cookie('PMA_host',sqlsingledatabase.server.server,max_age=None)
- html.set_cookie('PMA_database',sqlsingledatabase.nome,max_age=None)
- return html
- return render(request,"sql.database.list.html",value)
- def SqlServerList(request):
- session = getSessionParms(request)
- userauth = session['_userauth_']
- sqlserver2edit = session['_sqlserver2edit_']
- domain2edit = session['_domain2edit_']
- request.session['_from_']="Sql:SqlServerList"
- try:
- utenteautorizzato = User.objects.get(pk=userauth)
- except User.DoesNotExist as dne:
- return HttpResponseRedirect(reverse('Login:login',args={}))
- if not domain2edit:
- domain2edit = utenteautorizzato.domain.id
- dominio = Domini.objects.get(pk=domain2edit)
- value={}
- value['utenteautorizzato'] = utenteautorizzato
- value['user'] = None
- value['dominio'] = dominio
- value['navbar'] = True
- print("livello autorizzazione",utenteautorizzato.securitylevel_id)
- securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
- securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
- value['securityrow'] = securityrow
- value['securityrowLen'] = len(securityrow)
- value['CANWRITE']=True #per il momento, questo flag serve a capire se e' un record nuovo
- if request.method == 'POST':
- print('request.method',request.method)
- if 'NuovoSqlServer' in request.POST:
- request.session['_sqlserver2edit_'] = 0
- return HttpResponseRedirect(reverse('Sql:SqlServerEdit',args={}))
- if 'enabled' in request.POST:
- print('enabled in request.POST',request.POST.get('enabled'))
- sqlsingleserver = SqlServer.objects.get(pk=request.POST.get('enabled'))
- sqlsingleserver.enabled = True
- sqlsingleserver.save()
- if 'disabled' in request.POST:
- print('disabled in request.POST',request.POST.get('disabled'))
- sqlsingleserver = SqlServer.objects.get(pk=request.POST.get('disabled'))
- sqlsingleserver.enabled = False
- sqlsingleserver.save()
- if 'edit' in request.POST:
- print('edit',request.POST.get('edit'))
- request.session['_sqlserver2edit_'] = request.POST.get('edit')
- return HttpResponseRedirect(reverse('Sql:SqlServerEdit',args={}))
- value['sqlserverlist'] = SqlServer.objects.all().order_by('nome')
- return render(request,"sql.server.list.html",value)
- def SqlDatabaseEdit(request):
- session = getSessionParms(request)
- if not '_userauth_' in session:
- return HttpResponseRedirect(reverse('Login:login',args={}))
- userauth = session['_userauth_']
- sqldatabase2edit = session['_sqldatabase2edit_']
- domain2edit = session['_domain2edit_']
- request.session['_from_']="Sql:SqlDatabaseEdit"
- try:
- utenteautorizzato = User.objects.get(pk=userauth)
- except User.DoesNotExist as dne:
- return HttpResponseRedirect(reverse('Login:login',args={}))
- if not domain2edit:
- domain2edit = utenteautorizzato.domain.id
- dominio = Domini.objects.get(pk=domain2edit)
- c = m.start()
- m.publish(c,"Messaggio/Sql","Accesso al DB di {}".format(utenteautorizzato.nome))
- value={}
- value['utenteautorizzato'] = utenteautorizzato
- value['user'] = None
- value['navbar'] = True
- print("livello autorizzazione",utenteautorizzato.securitylevel_id)
- securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
- securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
- value['securityrow'] = securityrow
- value['securityrowLen'] = len(securityrow)
-
- sqldatabase = SqlDatabase()
- value['nuovorecord']=False
- try:
- sqldatabase = SqlDatabase.objects.get(pk=sqldatabase2edit)
- except SqlDatabase.DoesNotExist as dne:
- print("errore nella ricerca del server",sqldatabase2edit)
- value['nuovorecord']=True
- # il database e' vuoto, quindi possiamo inserire username e password predefiniti
- # 1: otteniamo un nome valido per un db, normalizzazione dominio
- # 2: otteniamo un nome normalizzato valido per un db
- dominio_parte_prima_delpunto = dominio.nome.split('.')[0]
- dominio_parte_dopo_delpunto = dominio.nome.split('.')[1]
- dominio_senza_punto = dominio_parte_prima_delpunto + dominio_parte_dopo_delpunto
- dominio_normalizzato = dominio_senza_punto.translate(''.maketrans('-','_'))
- utente_normalizzato = dominio_parte_prima_delpunto.translate(''.maketrans('-','_'))
- now = datetime.now().strftime('%f')[:3]
- numero_db_presenti = len(SqlDatabase.objects.filter(dominio=dominio.id))
- sqldatabase.nome = '{}_db{}'.format(dominio_normalizzato,numero_db_presenti+1)
- sqldatabase.username = '{}U{}'.format(utente_normalizzato,now)
- sqldatabase.password = getPassword()
- sqldatabase.dominio = dominio
- sqldatabase.enabled = True
- sqldatabase.tobedeleted = False
- sqldatabase.locked = False
- sqldatabase.password_change_enabled=True
- sqldatabase.inbackup=False
- sqldatabase.datebackup=None
- #sqldatabase.server = getConfigurazione('sql server default')
- print(dominio_parte_prima_delpunto,dominio_normalizzato,utente_normalizzato,now,numero_db_presenti)
- print(sqldatabase.nome,sqldatabase.username)
- print('request.POST',request.POST)
- if request.method == 'POST':
- print('request.method',request.method)
- if 'Ritorna' in request.POST:
- request.session['_sqldatabase2edit_'] = sqldatabase2edit
- return HttpResponseRedirect(reverse('Sql:SqlDatabaseList',args={}))
-
- # step: procuratori la riga ftp master
- listaftp = sqldatabase.dominio.ftpuser_set.all()
- path = None
- for f in listaftp:
- if f.ftpgroup.master:
- path = f.homedir
- print(f.homedir)
- # step: invio comando mqtt
- if 'AggiornaDbConf' in request.POST and path != None:
- print("Aggiorno il db")
- q={}
- q['op']='writedbconf'
- q['db']=sqldatabase.nome
- q['us']=sqldatabase.username
- q['ho']=sqldatabase.server.server
- q['pw']=sqldatabase.password
- q['pa']=f.homedir
- q['do']=sqldatabase.dominio.nome
- q['id']=sqldatabase.dominio.id
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','writedb.conf')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- formsqldatabase=formSqlDatabase(request.POST)
- if formsqldatabase.is_valid():
- print('formsqldatabase.is_valid',formsqldatabase.is_valid())
- oldsqldatabase = sqldatabase #faccio una copia del record per confrontarmi.
- if not sqldatabase.server_id:
- sqldatabase.server_id = formsqldatabase.cleaned_data.get('server')
- # sqldatabase.dominio = xxxx
- sqldatabase.locked = formsqldatabase.cleaned_data.get('locked')
- print('sqldatabase.locked',sqldatabase.locked)
- if value['nuovorecord']:
- sqldatabase.nome = formsqldatabase.cleaned_data.get('nome')
-
- if not sqldatabase.locked:
- sqldatabase.username = formsqldatabase.cleaned_data.get('username')
- oldpassword = sqldatabase.password
- sqldatabase.password = formsqldatabase.cleaned_data.get('password')
- if oldpassword != sqldatabase.password:
- sqldatabase.password_last_update = datetime.now()
-
- sqldatabase.enabled = formsqldatabase.cleaned_data.get('enabled')
- sqldatabase.tobedeleted = formsqldatabase.cleaned_data.get('tobedeleted')
- if sqldatabase.tobedeleted:
- sqldatabase.enabled = False
- sqldatabase.nota = formsqldatabase.cleaned_data.get('nota')
- sqldatabase.mail = formsqldatabase.cleaned_data.get('mail')
- print('sqldatabase.mail',sqldatabase.mail)
- sqldatabase.aggiornamento = datetime.now()
- sqldatabase.server_id = formsqldatabase.cleaned_data.get('server')
- noneseguire = formsqldatabase.cleaned_data.get('noneseguire')
- print('stato di :noneseguire:',noneseguire)
- sqldatabase.save()
- print('database salvato')
- # creato o cambiato nome utente
- if sqldatabase.username != oldsqldatabase.username:
- pass
- else:
- pass
- # creata o cambiata password
- if sqldatabase.password != oldsqldatabase.password:
- pass
- else:
- pass
- if not noneseguire:
- # creato nuovo db
- if value['nuovorecord']:
- q={}
- q['op']='create'
- q['db']=sqldatabase.nome
- q['us']=sqldatabase.username
- q['pw']=sqldatabase.password
- q['ho']=sqldatabase.server.server
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','create_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- # abilitato accesso al db
- if sqldatabase.enabled:
- q={}
- q['op']='enable'
- q['db']=sqldatabase.nome
- q['us']=sqldatabase.username
- q['ho']=sqldatabase.server.server
- q['pw']=sqldatabase.password
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','enable_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- else:
- q={}
- q['op']='disable'
- q['db']=sqldatabase.nome
- q['us']=sqldatabase.username
- q['ho']=sqldatabase.server.server
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','disable_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- # cancella il database
- if sqldatabase.tobedeleted:
- q={}
- q['op']='delete'
- q['db']=sqldatabase.nome
- q['us']=sqldatabase.username
- q['ho']=sqldatabase.server.server
- #m.publish(c,"Richiesta/Sql","{}".format(json.dumps(q)))
- #m.publish(c,"Messaggio/Sql","{}".format(json.dumps(q)))
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','delete_database')
- mq.build('stampa',True)
- mq.build('data',q)
- mq.pubblica()
- tmp=None
- mq=None
- sm = ServizioMail()
- sql_notifica = getConfigurazione('sql:notifica')
- sql_notifica = re.split(',| ',sql_notifica)
- sm.set_listadestinatari(sql_notifica)
- if formsqldatabase.cleaned_data.get('mail_send'):
- mailweb = formsqldatabase.cleaned_data.get('mail')
- mailweb = re.split(',| ',mailweb)
- sm.add_listadestinatari(mailweb)
- # questo dovrebbe essere il profilo per la gestione via mail.
- #sm.add_listadestinatari(getConfigurazione('service'))
-
- #recuperiamo il template
- template = Template.objects.get(pk=getConfigurazione('sql:template'))
- template_soggetto = template.soggetto
- sm.set_soggetto(template_soggetto)
- template_oggetto = template.oggetto
- sm.set_oggetto(template_oggetto)
- template_dati = {}
- template_dati['sqldatabase'] = sqldatabase
- sm.set_data(template_dati)
- sqljs = {}
- sqljs['service'] = 'SQL'
- sqljs['nome'] = sqldatabase.nome
- sqljs['server'] = sqldatabase.server.server
- sqljs['username'] = sqldatabase.username
- sqljs['password'] = sqldatabase.password
- sqljs['enabled'] = sqldatabase.enabled
- sqljs['locked' ] = sqldatabase.locked
- sqljs['tobedeleted'] = sqldatabase.tobedeleted
- sm.set_json(sqljs)
- sm.send()
- return HttpResponseRedirect(reverse('Sql:SqlDatabaseList',args={}))
- else:
- print('formsqldatabase.errors',formsqldatabase.errors)
- tmp = {}
- tmp['nome'] = sqldatabase.nome
- tmp['dominio'] = sqldatabase.dominio_id
- tmp['server'] = sqldatabase.server_id
- tmp['username'] = sqldatabase.username
- tmp['password'] = sqldatabase.password
- tmp['enabled'] = sqldatabase.enabled
- tmp['tobedeleted'] = sqldatabase.tobedeleted
- tmp['locked'] = sqldatabase.locked
- print('locked',sqldatabase.locked)
- tmp['sql_quota'] = sqldatabase.sql_quota
- tmp['date_sql_quota'] = sqldatabase.date_sql_quota
- tmp['password_last_update'] = sqldatabase.password_last_update
- tmp['creazione'] = sqldatabase.creazione
- tmp['aggiornamento'] = sqldatabase.aggiornamento
- tmp['nota'] = sqldatabase.nota
- tmp['mail'] = sqldatabase.mail
- print('mail caricata',sqldatabase.mail)
-
- value['formsqldatabase'] = formSqlDatabase(tmp)
- value['sqldatabase'] = sqldatabase
- value['sqlserver'] = SqlServer.objects.all().filter(enabled=1)
- return render(request,"sql.database.edit.html",value)
- def SqlServerEdit(request):
-
- session = getSessionParms(request)
- userauth = session['_userauth_']
- sqlserver2edit = session['_sqlserver2edit_']
- domain2edit = session['_domain2edit_']
- request.session['_from_']="Sql:SqlServerEdit"
- try:
- utenteautorizzato = User.objects.get(pk=userauth)
- except User.DoesNotExist as dne:
- return HttpResponseRedirect(reverse('Login:login',args={}))
- if not domain2edit:
- domain2edit = utenteautorizzato.domain.id
- dominio = Domini.objects.get(pk=domain2edit)
- value={}
- value['utenteautorizzato'] = utenteautorizzato
- value['user'] = None
- value['dominio'] = dominio
- value['navbar'] = True
- print("livello autorizzazione",utenteautorizzato.securitylevel_id)
- securitylevel = getSecurityLevel(utenteautorizzato.securitylevel_id)
- securityrow = getSecurityRow(utenteautorizzato.securitylevel_id)
- value['securityrow'] = securityrow
- value['securityrowLen'] = len(securityrow)
- value['CANWRITE']=True #per il momento, questo flag serve a capire se e' un record nuov
- sqlserver = SqlServer()
- try:
- sqlserver = SqlServer.objects.get(pk=sqlserver2edit)
- except SqlServer.DoesNotExist as dne:
- print("errore nella ricerca del server",sqlserver2edit)
- print('request.POST',request.POST)
- if request.method == 'POST':
- print('request.method',request.method)
- if 'Ritorna' in request.POST:
- request.session['_sqlserver2edit_'] = sqlserver2edit
- return HttpResponseRedirect(reverse('Sql:SqlServerList',args={}))
- formsqlserver = formSqlServer(request.POST)
- if formsqlserver.is_valid():
- print('formsqlserver.is_valid',formsqlserver.is_valid())
- sqlserver.nome = formsqlserver.cleaned_data.get('nome')
- sqlserver.server = formsqlserver.cleaned_data.get('server')
- sqlserver.adminuser = formsqlserver.cleaned_data.get('adminuser')
- sqlserver.adminpass = formsqlserver.cleaned_data.get('adminpass')
- sqlserver.enabled = formsqlserver.cleaned_data.get('enabled')
- sqlserver.nota = formsqlserver.cleaned_data.get('nota')
- sqlserver.save()
- tmp = {}
- tmp['nome'] = sqlserver.nome
- tmp['server'] = sqlserver.server
- tmp['adminuser'] = sqlserver.adminuser
- tmp['adminpass'] = sqlserver.adminpass
- tmp['enabled'] = sqlserver.enabled
- tmp['nota'] = sqlserver.nota
- value['formsqlserver'] = formSqlServer(tmp)
- return render(request,"sql.server.edit.html",value)
- def SqlShow(request):
- '''
- questa pagina serve per fornire le informazioni per attivare il nuovo db.
- ho pensato che ogni aggiornamento, creazione e quant'altro memorizzano un timestamp.
- la funzione legge l'ultimo timestamp memorizzato. se e' anteriore a quelli registrati nei singoli record,
- li esegue e aggiorna il timestamp relativo.
- '''
- return render(request,"nomefile",value)
- #effettua il backup di tutti i db (oppure di un singolo di, suddiviso per periodo
- def SqlDatabaseBackup(request,database=0,periodo=0):
- # tipo: vedere in urls.py: indica il tipo di backup da effettuare (q,s,m)
- c = m.start()
- m.publish(c,"Messaggio/Sql","Eseguo Backup di tutti i DB")
- '''
- cadenza={}
- cadenza[0]='Giorno'
- cadenza[1]='Settimana'
- cadenza[2]='Mese'
- cadenza[10]='Singolo'
- '''
- d = None
- alldb = False
- if not database:
- d = SqlDatabase.objects.all().filter(enabled=True)
- alldb = True
- else:
- d = SqlDatabase.objects.all().filter(pk=database)
- value = {}
- value['sqldatabaselist']=d
- value['sqldatabasecount'] = len(d)
- print("Database da sottoporre a backup",len(d))
- sqlpath = getConfigurazione('sql:path')
- backuppath = getConfigurazione('sql:backuppath')
- q = dict()
- if not database:
- q['op'] = 'backupDbAll'
- else:
- q['op'] = 'backupDbOne'
- database2backup = list()
- q['pr'] = periodo
- for i in d:
- print('database: ',i.nome)
- infodb = dict()
- infodb['db']=i.nome
- infodb['us']=i.username
- try:
- infodb['ho']=i.server.server
- except i.server.DosNotFound:
- print ("manca il db per: ",i.nome)
- m.publish(c,"Messaggio/Sql","Manca Server per db: {}".format(infodb['db']))
- continue
- infodb['pw']=i.password
- infodb['do']=i.dominio.nome
- infodb['id']=i.dominio.id
- infodb['dbid'] = i.id
- f = i.dominio.ftpuser_set.all().filter(ftpgroup__master=True)
- print('lista FTP per dominio',len(f))
-
- for singleftp in f:
- print(singleftp.homedir,singleftp.ftpgroup.l3,singleftp.ftpgroup.directory % { 'ftp':singleftp.utente,'site':i.dominio.nome })
- #infodb['st'] = x.homedir + "/" + sqlpath
- tmp = singleftp.ftpgroup.directory % { 'ftp':singleftp.utente,'site':i.dominio.nome }
- infodb['st'] =tmp
- if alldb:
- infodb['pa'] = "/" + sqlpath
- else:
- infodb['pa'] = "/" + backuppath
- infodb['pr'] = periodo
- print('infodb',infodb)
- database2backup.append(infodb)
-
- q['db'] = database2backup
- mq = mqtt()
- mq.build('topic','richiesta/database')
- mq.build('richiesta','backupdatabaseperiodico')
- mq.build('nota','cliid=22')
- mq.build('periodo',periodo)
- mq.build('stampa',True)
- mq.build('data',database2backup)
- mq.pubblica()
- tmp=None
- mq=None
- return render(request,"sql.database.backup.html",value)
|