More documentation.

Creation/Removal of domains and mailboxes specific directories on filesystem.
This commit is contained in:
Antoine Nguyen
2009-03-25 18:56:02 +01:00
parent 4d5c243548
commit d234b308b7
6 changed files with 157 additions and 28 deletions
+69
View File
@@ -0,0 +1,69 @@
# -*- coding: utf-8 -*-
import popen2
import os
import time
from django.conf import settings
def exec_pipe(cmd):
"""Exécute une commande et récupère la sortie générée
Le module popen2 est utilisé pour l'exécution de la commande. Un
objet Popen4 est créé car il regroupe la sortie standard et la sortie
d'erreur dans le même fd.
De plus, popen2 est le seul à pouvoir capturer retourner le code de
sortie de la commande.
cmd -- commande à exécuter
Retourne un couple (code de sortie, texte de sortie)
"""
child = popen2.Popen4(cmd)
child.tochild.close()
while True:
ret = child.poll()
if ret != -1:
break
time.sleep(0.001)
output = child.fromchild.read()
if not ret:
code = 0
else:
if os.WIFEXITED(ret):
code = os.WEXITSTATUS(ret), output
else:
code = -1
return code, output
def create_domain(name):
code, output = exec_pipe("sudo -u %s mkdir %s/%s" \
% (settings.VIRTUAL_UID, settings.STORAGE_PATH,
name))
if code:
os.system("echo '%s' >> /tmp/vmail.log" % output)
return False
return True
def destroy_domain(name):
code, output = exec_pipe("sudo -u %s rm -r %s/%s" \
% (settings.VIRTUAL_UID, settings.STORAGE_PATH,
name))
if code:
return False
return True
def create_mailbox(domain, name):
code, output = exec_pipe("sudo -u %s mkdir -p %s/%s/%s/.maildir" \
% (settings.VIRTUAL_UID, settings.STORAGE_PATH,
domain, name))
if code:
return False
return True
def destroy_mailbox(domain, name):
code, output = exec_pipe("sudo -u %s rm -r %s/%s/%s" \
% (settings.VIRTUAL_UID, settings.STORAGE_PATH,
domain, name))
if code:
return False
return True