diff -r 659c4476c57c -r b678a1c43027 update_config.py --- 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'