02f9be8eb69b59255facc45bee04c3304ae7f7a2
[tine20] / scripts / packaging / Univention / conffiles / tine20-cfg.py
1 # -*- coding: utf-8 -*-
2 #
3 # Tine 2.0 for UCS
4 #  config registry module to update Tine 2.0 configuration
5 #
6 # Copyright 2012-2012 by Metaways Infosystems GmbH
7 #
8 # http://www.metaways.de/
9 #
10 # All rights reserved.
11 #
12 # The source code of this program is made available
13 # under the terms of the GNU Affero General Public License version 3
14 # (GNU AGPL V3) as published by the Free Software Foundation.
15 #
16 # Binary versions of this program provided by Univention to you as
17 # well as other copyrighted, protected or trademarked materials like
18 # Logos, graphics, fonts, specific documentations and configurations,
19 # cryptographic keys etc. are subject to a license agreement between
20 # you and Univention and not subject to the GNU AGPL V3.
21 #
22 # In the case you use this program under the terms of the GNU AGPL V3,
23 # the program is provided in the hope that it will be useful,
24 # but WITHOUT ANY WARRANTY; without even the implied warranty of
25 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 # GNU Affero General Public License for more details.
27 #
28 # You should have received a copy of the GNU Affero General Public
29 # License with the Debian GNU/Linux or Univention distribution in file
30 # /usr/share/common-licenses/AGPL-3; if not, see
31 # <http://www.gnu.org/licenses/>.
32
33 import sys, re
34
35 def handler(bc,changes):
36     db_dbname   = bc.get('tine20/cfg/sql/database', 'tine20')
37     db_host     = bc.get('tine20/cfg/sql/host'    , 'localhost')
38     db_username = bc.get('tine20/cfg/sql/user'    , 'tine20')
39     
40     try:
41         f = open('/etc/tine20/config.inc.php', 'r')
42     except IOError, e:
43         print e
44         return
45         
46     newlines = []
47     line = f.readline()
48     
49     while line:
50         if re.search('.*database.*=> array', line):
51             
52             newlines.append(line)
53             line = f.readline()
54             
55             while not re.search('\A\s*\)', line):
56                 if re.search('.*host.*=>', line):
57                     line = '        \'host\'          => \'%s\',\n' % str(db_host)
58                 
59                 if re.search('.*dbname.*=>', line):
60                     line = '        \'dbname\'        => \'%s\',\n' % str(db_dbname)
61                     
62                 if re.search('.*username.*=>', line):
63                     line = '        \'username\'      => \'%s\',\n' % str(db_username)
64         
65                 newlines.append(line)
66                 line = f.readline()
67                 
68         newlines.append(line)
69         line = f.readline()
70             
71     f.close()
72     
73     try:
74         f = open('/etc/tine20/config.inc.php', 'w')
75     except IOError, e:
76         print e
77         return
78         
79     f.truncate();
80     f.writelines(newlines)
81     f.close()
82