views.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. from django.shortcuts import render
  2. from .models import *
  3. from datetime import datetime
  4. import subprocess
  5. from configurazione.views import *
  6. # Create your views here.
  7. def CheckMailSize(request,DominioId=None):
  8. #verifica la dimensione delle email.
  9. #evita le verifiche di sicurezza, altrimenti si dovrebbe fare il login,
  10. #passa direttamente all'acquisizione.
  11. elenco_domini = None
  12. if DominioId:
  13. elenco_domini = Domini.objects.filter(tobedeleted=False).filter(id=DominioId)
  14. else:
  15. elenco_domini = Domini.objects.filter(tobedeleted=False)
  16. # una volta ottenuto l'elenco dei domini, procediamo con la scansione delle caselle di posta
  17. # costruzione della struttura su cui lavorarea
  18. pathmail = getConfigurazione("mail_home_structure")
  19. for ed in elenco_domini:
  20. print(f"id {ed.id}")
  21. server = None
  22. try:
  23. server = ed.mail_server.server
  24. except MailServer.DoesNotExist as dnf:
  25. print("Server non definito - salto")
  26. print(f"server {server}")
  27. #elenco delle email:
  28. em = User.objects.filter(domain=ed.id).filter(tobedeleted=False).filter(enabled=True)
  29. print(f"numero di mail: {len(em)}")
  30. totale_quota = 0
  31. for e in em:
  32. if server:
  33. checkto = pathmail.format(**{'server':server,'domain':ed.domain,'mail':e.mail})
  34. print(f" check to {checkto}")
  35. comando = f'ssh root@{ed.mail_server.ip} du -sm /{ed.mail_server.server}/{ed.domain}/{e.mail}'
  36. print("c",comando)
  37. comando = comando.encode('utf-8')
  38. msgrisposta = "CHECKED"
  39. risposta=""
  40. quota = 0
  41. try:
  42. print("eseguo risposta")
  43. risposta = subprocess.check_output(comando,shell=True)
  44. print(f"risposta: {risposta}")
  45. except subprocess.CalledProcessError as cpe:
  46. print("Errore risposta")
  47. quota = 0
  48. msgrisposta = 'NOTCHECK'
  49. risposta = "0\t\0"
  50. else:
  51. print(risposta)
  52. risposta = risposta.decode().split('\t')[0]
  53. quota = risposta
  54. totale_quota = totale_quota + int(quota)
  55. print(f"Quota: {quota}/{totale_quota}")
  56. u = User.objects.get(pk=e.id)
  57. u.mail_quota = quota
  58. u.save()
  59. ed.mail_quota = totale_quota
  60. ed.save()
  61. data = {}
  62. data['elenco_domini'] = elenco_domini
  63. return render(request,"servizi.lista.mail.size.html",data)
  64. def CheckHttpSize(request,DominioId=None):
  65. #verifica la dimensione delle email.
  66. #evita le verifiche di sicurezza, altrimenti si dovrebbe fare il login,
  67. #passa direttamente all'acquisizione.
  68. elenco_domini = None
  69. if DominioId:
  70. elenco_domini = Domini.objects.filter(tobedeleted=False).filter(id=DominioId)
  71. else:
  72. elenco_domini = Domini.objects.filter(tobedeleted=False)
  73. # una volta ottenuto l'elenco dei domini, procediamo con la scansione delle caselle di posta
  74. # costruzione della struttura su cui lavorare
  75. pathmail = getConfigurazione("ftp_home_structure")
  76. for ed in elenco_domini:
  77. print(f"id {ed.id}")
  78. server = None
  79. try:
  80. server = ed.mail_server.server
  81. except MailServer.DoesNotExist as dnf:
  82. print("Server non definito - salto")
  83. print(f"server {server}")
  84. #elenco delle email:
  85. em = User.objects.filter(domain=ed.id).filter(tobedeleted=False).filter(enabled=True)
  86. print(f"numero di mail: {len(em)}")
  87. totale_quota = 0
  88. for e in em:
  89. if server:
  90. checkto = pathmail.format(**{'server':server,'domain':ed.domain,'mail':e.mail})
  91. print(f" check to {checkto}")
  92. comando = f'ssh root@{ed.mail_server.ip} du -sm /{ed.mail_server.server}/{ed.domain}/{e.mail}'
  93. print("c",comando)
  94. comando = comando.encode('utf-8')
  95. msgrisposta = "CHECKED"
  96. risposta=""
  97. quota = 0
  98. try:
  99. print("eseguo risposta")
  100. risposta = subprocess.check_output(comando,shell=True)
  101. print(f"risposta: {risposta}")
  102. except subprocess.CalledProcessError as cpe:
  103. print("Errore risposta")
  104. quota = 0
  105. msgrisposta = 'NOTCHECK'
  106. risposta = "0\t\0"
  107. else:
  108. print(risposta)
  109. risposta = risposta.decode().split('\t')[0]
  110. quota = risposta
  111. totale_quota = totale_quota + int(quota)
  112. print(f"Quota: {quota}/{totale_quota}")
  113. u = User.objects.get(pk=e.id)
  114. u.mail_quota = quota
  115. u.save()
  116. ed.mail_quota = totale_quota
  117. ed.save()
  118. data = {}
  119. data['elenco_domini'] = elenco_domini
  120. return render(request,"servizi.lista.http.size.html",data)