from auto import HOME
import backend as B
+import cgi as CGI
import config as CONF; CFG = CONF.CFG
import hash as H
import util as U
A simple base class for services.
"""
- def __init__(me, friendly, *args, **kw):
+ def __init__(me, friendly, name = None, *args, **kw):
super(BasicService, me).__init__(*args)
+ me.name = name
me.friendly = friendly
me.meta = kw
"""
## Run the command and collect its output and status.
- with timeout(30, "waiting for remote service %s" % me._describe()):
+ with U.timeout(30, "waiting for remote service %s" % me._describe()):
proc = SUB.Popen(me._mkcmd(cmd),
stdin = input is not None and SUB.PIPE or None,
stdout = SUB.PIPE, stderr = SUB.PIPE)
def _mkcmd(me, cmd):
"""Format a command for SSH. Mainly escaping arguments."""
- return ['ssh', me._remote, ' '.join(map(urlencode, cmd))]
+ return ['ssh', me._remote, ' '.join(map(CGI.urlencode, cmd))]
def setpasswd(me, user, passwd):
"""Service protocol: set the USER's password to PASSWD."""
'users', 'user', 'passwd'),
CFG.HASH,
friendly = 'Password changing service')
+ for name, svc in SERVICES.iteritems():
+ if svc.name is None: svc.name = name
###----- That's all, folks --------------------------------------------------