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