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