CGI parameters.
"""
+ def __init__(me, name, contexts, desc, func,
+ methods = ['GET', 'POST'], *args, **kw):
+ super(Subcommand, me).__init__(name, contexts, desc, func, *args, **kw)
+ me.methods = set(methods)
+
def cgi(me, param, path):
"""
Invoke the subcommand given a collection of CGI parameters.
want = {}
kw = {}
+ ## Check the request method against the permitted list.
+ meth = METHOD
+ if meth == 'HEAD': meth = 'GET'
+ if meth not in me.methods:
+ raise U.ExpectedError, (500, "Unexpected request method `%s'" % METHOD)
+
def set_value(k, v):
"""Set a simple value: we shouldn't see multiple values."""
if k in kw:
@CGI.subcommand(
'set', ['cgi'], 'Set password for a collection of services.',
+ methods = ['POST'],
params = [SC.Arg('first'), SC.Arg('second')],
rparam = SC.Arg('services'))
def cmd_set_cgi(first, second, services = []):
@CGI.subcommand(
'reset', ['cgi'],
'Reset passwords for a collection of services.',
+ methods = ['POST'],
rparam = SC.Arg('services'))
def cmd_reset_cgi(services = []):
operate('reset passwords', 'reset', services)
@CGI.subcommand(
'clear', ['cgi'],
'Clear passwords for a collection of services.',
+ methods = ['POST'],
rparam = SC.Arg('services'))
def cmd_clear_cgi(services = []):
operate('clear passwords', 'clear', services)
@CGI.subcommand(
'logout', ['cgi'],
- 'Log out of the web interface.')
+ 'Log out of the web interface.',
+ methods = ['POST'])
def cmd_logout_cgi():
CGI.redirect(CGI.action('login', why = 'LOGOUT'),
set_cookie = HA.bake_cookie('logged-out'))
@CGI.subcommand(
'auth', ['cgi-noauth'],
'Verify a user name and password',
+ methods = ['POST'],
params = [SC.Arg('u'), SC.Arg('pw')])
def cmd_auth(u, pw):
svc = S.SERVICES['master']