update_config.py
changeset 760 b678a1c43027
parent 748 659c4476c57c
child 761 e4e656f19771
--- a/update_config.py	Mon Mar 24 19:22:04 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF-8 -*-
-# Copyright (c) 2008 - 2014, Pascal Volk
-# See COPYING for distribution information.
-
-import os
-os.sys.path.remove(os.sys.path[0])
-from time import time
-from ConfigParser import ConfigParser
-from shutil import copy2
-
-pre_060 = False
-
-try:
-    from VirtualMailManager.constants.VERSION import VERSION
-    pre_060 = True
-except ImportError:
-    try:
-        from VirtualMailManager.constants import VERSION
-    except ImportError:
-        os.sys.stderr.write('error: no vmm version information found\n')
-        raise SystemExit(2)
-
-# we have to remove the old CamelCase files
-if pre_060:
-    import VirtualMailManager
-    vmm_inst_dir = os.path.dirname(VirtualMailManager.__file__)
-    tmp_info = open('/tmp/vmm_inst_dir', 'w')
-    tmp_info.write(vmm_inst_dir)
-    tmp_info.close()
-
-try:
-    import psycopg2
-except ImportError:
-    has_psycopg2 = False
-else:
-    has_psycopg2 = True
-
-
-def get_config_file():
-    f = None
-    for d in ('/root', '/usr/local/etc', '/etc'):
-        tmp = os.path.join(d, 'vmm.cfg')
-        if os.path.isfile(tmp):
-            f = tmp
-            break
-    if f:
-        return f
-    else:
-        os.sys.stderr.write('error: vmm.cfg not found\n')
-        raise SystemExit(2)
-
-
-def update(cp):
-    if VERSION == '0.5.2':
-        upd_052(cp)
-    elif VERSION in ('0.6.0', '0.6.1'):
-        os.sys.stdout.write('info: vmm.cfg: nothing to do for version %s\n' %
-                            VERSION)
-        return
-    else:
-        os.sys.stderr.write('error: the version %s is not supported by this '
-                            'script\n' % VERSION)
-        raise SystemExit(3)
-
-
-def get_cfg_parser(cf):
-    fh = open(cf, 'r')
-    cp = ConfigParser()
-    cp.readfp(fh)
-    fh.close()
-    return cp
-
-
-def update_cfg_file(cp, cf):
-    copy2(cf, cf + '.bak.' + str(time()))
-    fh = open(cf, 'w')
-    cp.write(fh)
-    fh.close()
-
-
-def add_sections(cp, sections):
-    for section in sections:
-        if not cp.has_section(section):
-            cp.add_section(section)
-
-
-def move_option(cp, src, dst):
-    ds, do = dst.split('.')
-    if not cp.has_option(ds, do):
-        ss, so = src.split('.')
-        cp.set(ds, do, cp.get(ss, so))
-        cp.remove_option(ss, so)
-        sect_opt.append((dst, 'R'))
-
-
-def add_option(cp, dst, val):
-    ds, do = dst.split('.')
-    if not cp.has_option(ds, do):
-        cp.set(ds, do, val)
-        sect_opt.append((dst, 'N'))
-
-
-def set_dovecot_version(cp):
-    if len(os.sys.argv) > 1:
-        dovecot_version = os.sys.argv[1].strip()
-        if not dovecot_version:
-            dovecot_version = '1.2.11'
-    else:
-        dovecot_version = '1.2.11'
-    cp.set('misc', 'dovecot_version', dovecot_version)
-    sect_opt.append(('misc.dovecot_version', 'M'))
-
-
-def get_option(cp, src):
-    ss, so = src.split('.')
-    return cp.get(ss, so)
-
-
-def upd_052(cp):
-    global had_config
-    global had_gid_mail
-
-    had_config = cp.remove_section('config')
-    had_gid_mail = cp.remove_option('misc', 'gid_mail')
-    add_sections(cp, ('domain', 'account', 'mailbox'))
-    if cp.has_section('domdir'):
-        for src, dst in (('domdir.mode',   'domain.directory_mode'),
-                         ('domdir.delete', 'domain.delete_directory'),
-                         ('domdir.base',   'misc.base_directory')):
-            move_option(cp, src, dst)
-        cp.remove_section('domdir')
-    if cp.has_section('services'):
-        for service in cp.options('services'):
-            move_option(cp, 'services.%s' % service, 'domain.%s' % service)
-        cp.remove_section('services')
-    for src, dst in (('maildir.mode',      'account.directory_mode'),
-                     ('maildir.diskusage', 'account.disk_usage'),
-                     ('maildir.delete',    'account.delete_directory'),
-                     ('maildir.folders',   'mailbox.folders'),
-                     ('maildir.name',      'mailbox.root'),
-                     ('misc.forcedel',     'domain.force_deletion'),
-                     ('misc.transport',    'domain.transport'),
-                     ('misc.passwdscheme', 'misc.password_scheme'),
-                     ('misc.dovecotvers',  'misc.dovecot_version')):
-        move_option(cp, src, dst)
-    cp.remove_section('maildir')
-    if not has_psycopg2:
-        add_option(cp, 'database.module', 'pyPgSQL')
-    set_dovecot_version(cp)
-
-
-# def main():
-if __name__ == '__main__':
-    sect_opt = []
-    had_config = False
-    had_gid_mail = False
-    cf = get_config_file()
-    cp = get_cfg_parser(cf)
-    update(cp)
-    if len(sect_opt):
-        update_cfg_file(cp, cf)
-        sect_opt.sort()
-        print 'Please have a look at your configuration: %s' % cf
-        print 'This are your Modified/Renamed/New settings:'
-        for s_o, st in sect_opt:
-            print '%s   %s = %s' % (st, s_o, get_option(cp, s_o))
-        if had_config:
-            print '\nRemoved section "config" with option "done" (obsolte)'
-        if had_gid_mail:
-            print '\nRemoved option "gid_mail" from section "misc" (obsolte)\n'
-        os.sys.exit(0)
-    if had_config or had_gid_mail:
-        update_cfg_file(cp, cf)
-        if had_config:
-            print '\nRemoved section "config" with option "done" (obsolte)'
-        if had_gid_mail:
-            print '\nRemoved option "gid_mail" from section "misc" (obsolte)\n'