root/cherokee/trunk/contrib/06to07.py

Revision 1424, 2.6 kB (checked in by alo, 7 months ago)

--

  • Property svn:executable set to *
Line 
1 #!/usr/bin/env python
2
3 ##
4 ## Cherokee 0.6.x to 0.7.x configuration converter
5 ##
6 ## Copyright: Alvaro Lopez Ortega <alvaro@alobbs.com>
7 ## Licensed: GPL v2
8 ##
9
10 import sys
11
12 sys.path.append('../admin/')
13 from config import *
14
15 def reparent_child (orig, target):
16     if not orig:
17         return
18
19     for p in orig._child:
20         if p == 'priority':
21             continue
22         target[p] = orig._child[p]
23
24 def save_result (content, file):
25     tmp = content.split('\n')
26     tmp.sort()
27
28     cont  = "# Converted by 06to07.py \n"
29     cont += '\n'.join(tmp)
30
31     f = open(file, "w+")
32     f.write (cont)
33     f.close()
34
35 def convert (fin, fout):
36     cin = Config(fin)
37
38     for vserver in cin['vserver']:
39         rules = ConfigNode()
40
41         dirs = cin['vserver!%s!directory'%(vserver)]
42         if dirs:
43             for _dir in dirs:
44                 prio = cin.get_val('vserver!%s!directory!%s!priority'%(vserver, _dir))
45                 if _dir in '/\\':
46                     cin['vserver!%s!rule!%s!match!type'%(vserver, prio)] = 'default'
47                 else:
48                     cin['vserver!%s!rule!%s!match!type'     %(vserver, prio)] = 'directory'
49                     cin['vserver!%s!rule!%s!match!directory'%(vserver, prio)] = _dir
50                 reparent_child (cin['vserver!%s!directory!%s'%(vserver, _dir)],
51                                 cin['vserver!%s!rule!%s'     %(vserver, prio)])
52
53         exts = cin['vserver!%s!extensions'%(vserver)]
54         if exts:
55             for ext in exts:
56                 prio = cin.get_val('vserver!%s!extensions!%s!priority'%(vserver, ext))
57                 cin['vserver!%s!rule!%s!match!type'      %(vserver, prio)] = 'extensions'
58                 cin['vserver!%s!rule!%s!match!extensions'%(vserver, prio)] = ext
59                 reparent_child (cin['vserver!%s!extensions!%s'%(vserver, ext)],
60                                 cin['vserver!%s!rule!%s'      %(vserver, prio)])
61
62         reqs = cin['vserver!%s!request'%(vserver)]
63         if reqs:
64             for req in reqs:
65                 prio = cin.get_val('vserver!%s!request!%s!priority'%(vserver, req))
66                 cin['vserver!%s!rule!%s!match!type'   %(vserver, prio)] = 'request'
67                 cin['vserver!%s!rule!%s!match!request'%(vserver, prio)] = req
68                 reparent_child (cin['vserver!%s!request!%s'%(vserver, req)],
69                                 cin['vserver!%s!rule!%s'   %(vserver, prio)])
70
71         del (cin["vserver!%s!directory" %(vserver)])
72         del (cin["vserver!%s!extensions"%(vserver)])
73         del (cin["vserver!%s!request"   %(vserver)])
74
75     save_result (str(cin), fout)
76
77
78 def main ():
79     convert (sys.argv[1], sys.argv[2])
80    
81 if __name__ == "__main__":
82     main()
Note: See TracBrowser for help on using the browser.