from django.shortcuts import render from .models import * from datetime import datetime import subprocess from configurazione.views import * # Create your views here. def CheckMailSize(request,DominioId=None): #verifica la dimensione delle email. #evita le verifiche di sicurezza, altrimenti si dovrebbe fare il login, #passa direttamente all'acquisizione. elenco_domini = None if DominioId: elenco_domini = Domini.objects.filter(tobedeleted=False).filter(id=DominioId) else: elenco_domini = Domini.objects.filter(tobedeleted=False) # una volta ottenuto l'elenco dei domini, procediamo con la scansione delle caselle di posta # costruzione della struttura su cui lavorarea pathmail = getConfigurazione("mail_home_structure") for ed in elenco_domini: print(f"id {ed.id}") server = None try: server = ed.mail_server.server except MailServer.DoesNotExist as dnf: print("Server non definito - salto") print(f"server {server}") #elenco delle email: em = User.objects.filter(domain=ed.id).filter(tobedeleted=False).filter(enabled=True) print(f"numero di mail: {len(em)}") totale_quota = 0 for e in em: if server: checkto = pathmail.format(**{'server':server,'domain':ed.domain,'mail':e.mail}) print(f" check to {checkto}") comando = f'ssh root@{ed.mail_server.ip} du -sm /{ed.mail_server.server}/{ed.domain}/{e.mail}' print("c",comando) comando = comando.encode('utf-8') msgrisposta = "CHECKED" risposta="" quota = 0 try: print("eseguo risposta") risposta = subprocess.check_output(comando,shell=True) print(f"risposta: {risposta}") except subprocess.CalledProcessError as cpe: print("Errore risposta") quota = 0 msgrisposta = 'NOTCHECK' risposta = "0\t\0" else: print(risposta) risposta = risposta.decode().split('\t')[0] quota = risposta totale_quota = totale_quota + int(quota) print(f"Quota: {quota}/{totale_quota}") u = User.objects.get(pk=e.id) u.mail_quota = quota u.save() ed.mail_quota = totale_quota ed.save() data = {} data['elenco_domini'] = elenco_domini return render(request,"servizi.lista.mail.size.html",data) def CheckHttpSize(request,DominioId=None): #verifica la dimensione delle email. #evita le verifiche di sicurezza, altrimenti si dovrebbe fare il login, #passa direttamente all'acquisizione. elenco_domini = None if DominioId: elenco_domini = Domini.objects.filter(tobedeleted=False).filter(id=DominioId) else: elenco_domini = Domini.objects.filter(tobedeleted=False) # una volta ottenuto l'elenco dei domini, procediamo con la scansione delle caselle di posta # costruzione della struttura su cui lavorare pathmail = getConfigurazione("ftp_home_structure") for ed in elenco_domini: print(f"id {ed.id}") server = None try: server = ed.mail_server.server except MailServer.DoesNotExist as dnf: print("Server non definito - salto") print(f"server {server}") #elenco delle email: em = User.objects.filter(domain=ed.id).filter(tobedeleted=False).filter(enabled=True) print(f"numero di mail: {len(em)}") totale_quota = 0 for e in em: if server: checkto = pathmail.format(**{'server':server,'domain':ed.domain,'mail':e.mail}) print(f" check to {checkto}") comando = f'ssh root@{ed.mail_server.ip} du -sm /{ed.mail_server.server}/{ed.domain}/{e.mail}' print("c",comando) comando = comando.encode('utf-8') msgrisposta = "CHECKED" risposta="" quota = 0 try: print("eseguo risposta") risposta = subprocess.check_output(comando,shell=True) print(f"risposta: {risposta}") except subprocess.CalledProcessError as cpe: print("Errore risposta") quota = 0 msgrisposta = 'NOTCHECK' risposta = "0\t\0" else: print(risposta) risposta = risposta.decode().split('\t')[0] quota = risposta totale_quota = totale_quota + int(quota) print(f"Quota: {quota}/{totale_quota}") u = User.objects.get(pk=e.id) u.mail_quota = quota u.save() ed.mail_quota = totale_quota ed.save() data = {} data['elenco_domini'] = elenco_domini return render(request,"servizi.lista.http.size.html",data)