VirtualMailManager/ext/Postconf.py
changeset 571 a4aead244f75
parent 465 c0e1fb1b0145
parent 570 28230a8230bf
child 572 3238c58d01ae
--- a/VirtualMailManager/ext/Postconf.py	Mon Nov 07 03:22:15 2011 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-# -*- coding: UTF-8 -*-
-# Copyright (c) 2008 - 2010, Pascal Volk
-# See COPYING for distribution information.
-
-"""A small - r/o - wrapper class for Postfix' postconf."""
-
-from subprocess import Popen, PIPE
-
-from __main__ import re, ERR
-from VirtualMailManager.Exceptions import VMMException
-
-RE_PC_PARAMS = """^\w+$"""
-RE_PC_VARIABLES = r"""\$\b\w+\b"""
-
-class Postconf(object):
-    __slots__ = ('__bin', '__val', '__varFinder')
-    def __init__(self, postconf_bin):
-        """Creates a new Postconf instance.
-
-        Keyword arguments:
-        postconf_bin -- absolute path to the Postfix postconf binary (str)
-        """
-        self.__bin = postconf_bin
-        self.__val = ''
-        self.__varFinder = re.compile(RE_PC_VARIABLES)
-
-    def read(self, parameter, expand_vars=True):
-        """Returns the parameters value.
-
-        If expand_vars is True (default), all variables in the value will be
-        expanded:
-        e.g. mydestination -> mail.example.com, localhost.example.com, localhost
-        Otherwise the value may contain one or more variables.
-        e.g. mydestination -> $myhostname, localhost.$mydomain, localhost
-
-        Keyword arguments:
-        parameter -- the name of a Postfix configuration parameter (str)
-        expand_vars -- default True (bool)
-        """
-        if not re.match(RE_PC_PARAMS, parameter):
-            raise VMMException(_(u'The value ā€œ%sā€ doesn\'t look like a valid\
- postfix configuration parameter name.') % parameter, ERR.VMM_ERROR)
-        self.__val = self.__read(parameter)
-        if expand_vars:
-            self.__expandVars()
-        return self.__val
-
-    def __expandVars(self):
-        while True:
-            pvars = set(self.__varFinder.findall(self.__val))
-            pvars_len = len(pvars)
-            if pvars_len < 1:
-                break
-            if pvars_len > 1:
-                self.__expandMultiVars(self.__readMulti(pvars))
-                continue
-            pvars = pvars.pop()
-            self.__val = self.__val.replace(pvars, self.__read(pvars[1:]))
-
-    def __expandMultiVars(self, old_new):
-        for old, new in old_new.items():
-            self.__val = self.__val.replace('$'+old, new)
-
-    def __read(self, parameter):
-        out, err = Popen([self.__bin, '-h', parameter], stdout=PIPE,
-                stderr=PIPE).communicate()
-        if len(err):
-            raise VMMException(err.strip(), ERR.VMM_ERROR)
-        return out.strip()
-
-    def __readMulti(self, parameters):
-        cmd = [self.__bin]
-        for parameter in parameters:
-            cmd.append(parameter[1:])
-        out, err = Popen(cmd, stdout=PIPE, stderr=PIPE).communicate()
-        if len(err):
-            raise VMMException(err.strip(), ERR.VMM_ERROR)
-        par_val = {}
-        for line in out.splitlines():
-            par, val = line.split(' = ')
-            par_val[par] = val
-        return par_val
-