chiark
/
gitweb
/
~mdw
/
chopwood
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cgi.py: Emit the error about `POST' content-type correctly.
[chopwood]
/
service.py
diff --git
a/service.py
b/service.py
index 515353905ac493a76b5fff4c1b4782a55c4be27f..26406b5b5480bda9d9f31ec0a018efb131f9dd9c 100644
(file)
--- a/
service.py
+++ b/
service.py
@@
-31,6
+31,7
@@
import subprocess as SUB
from auto import HOME
import backend as B
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
import config as CONF; CFG = CONF.CFG
import hash as H
import util as U
@@
-77,8
+78,9
@@
class BasicService (object):
A simple base class for services.
"""
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)
super(BasicService, me).__init__(*args)
+ me.name = name
me.friendly = friendly
me.meta = kw
me.friendly = friendly
me.meta = kw
@@
-204,7
+206,7
@@
class BasicRemoteService (BasicService):
"""
## Run the command and collect its output and status.
"""
## 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)
proc = SUB.Popen(me._mkcmd(cmd),
stdin = input is not None and SUB.PIPE or None,
stdout = SUB.PIPE, stderr = SUB.PIPE)
@@
-289,7
+291,7
@@
class SSHRemoteService (BasicRemoteService):
def _mkcmd(me, cmd):
"""Format a command for SSH. Mainly escaping arguments."""
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."""
def setpasswd(me, user, passwd):
"""Service protocol: set the USER's password to PASSWD."""
@@
-378,5
+380,7
@@
def add_master_service():
'users', 'user', 'passwd'),
CFG.HASH,
friendly = 'Password changing service')
'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 --------------------------------------------------
###----- That's all, folks --------------------------------------------------