| 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() |
|---|