10 class struct (object):
11 def __init__(me, **kw):
12 me.__dict__.update(kw)
14 return (type(me).__name__ +
16 ', '.join(['%s = %r' % (k, me.__dict__[k])
20 class userentry (struct):
23 os.chdir('/var/qmail')
26 udb = cdb.init('users/cdb')
28 if len(k) == 0 or k[0] != '!':
30 v = udb[k].split('\0')
31 u = userentry(user = v[0], uid = int(v[1]), gid = int(v[2]), home = v[3],
32 dash = v[4], pre = v[5])
43 def addlocal(p, l, forcep = False):
45 if not os.path.exists(p):
52 if len(top) > 0 and top[0] == '!':
56 for k in sort(umap.keys()):
58 qm = '.qmail' + u.dash + u.pre
61 for p in os.listdir(u.home):
62 if not p.startswith(qm):
65 addlocal(os.path.join(u.home, p), u.name + ext)
67 addlocal(os.path.join(u.home, qm), u.name, u.dash == '')
69 for dom in open('control/locals'):
70 if len(dom) and dom[-1] == '\n':
74 for v in open('control/virtualdomains'):
75 if len(v) and v[-1] == '\n':
77 (addr, pre) = v.split(':', 2)
80 for l in sort(map.keys()):
81 print '%s:%s' % (l, map[l])