diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-01-16 20:34:35 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-01-16 20:37:19 (GMT) |
commit | 2718d0a8348d8abf4743bbf0f520f0a8bed38bef (patch) | |
tree | d83c1877e71d71d2a18928cb3c030440dbf58481 | |
parent | 38eb3255e9f7ad163e44be1597d67e9621f6b949 (diff) |
Let Server caller pass ssl arguments gotten from options
-rw-r--r-- | restful_document/server.py | 50 | ||||
-rwxr-xr-x | tests/units/user.py | 6 |
2 files changed, 24 insertions, 32 deletions
diff --git a/restful_document/server.py b/restful_document/server.py index 129a5c7..ec69c50 100644 --- a/restful_document/server.py +++ b/restful_document/server.py @@ -34,49 +34,53 @@ from restful_document import env, printf class Server(object): - def __init__(self, classes, name, description, version, homepage): - self._classes = classes + def __init__(self, name, description, version, homepage): + self._classes = [] self._name = name self._description = description self._version = version self._homepage = homepage - self._args = [] + self._ssl_args = {} - def serve_forever(self): - parser = OptionParser( + self._parser = OptionParser( usage='%prog [OPTIONS] [COMMAND]', description=self._description, add_help_option=False) - parser.print_version = \ + self._parser.print_version = \ lambda: sys.stdout.write('%s\n' % self._version) - parser.add_option('-h', '--help', + self._parser.add_option('-h', '--help', help=_('show this help message and exit'), action='store_true') - parser.add_option('-V', '--version', + self._parser.add_option('-V', '--version', help=_('show version number and exit'), action='version') util.Option.seek('active-document', ad.env) util.Option.seek('main', env) - util.Option.bind(parser, [ + util.Option.bind(self._parser, [ '/etc/%s.conf' % self._name, '~/.config/%s/config' % self._name, ]) - options, self._args = parser.parse_args() - util.Option.merge(options) + self._options, self._args = self._parser.parse_args() + util.Option.merge(self._options) + + def serve_forever(self, classes, **ssl_args): + self._classes = classes + if [i for i in ssl_args.values() if i is not None]: + self._ssl_args = ssl_args - if not self._args and not options.help: + if not self._args and not self._options.help: prog = basename(sys.argv[0]) print 'Usage: %s [OPTIONS] [COMMAND]' % prog print ' %s -h|--help' % prog print - print parser.description + print self._parser.description print _HELP % self._homepage exit(0) - if options.help: - parser.print_help() + if self._options.help: + self._parser.print_help() print _HELP % self._homepage exit(0) @@ -156,19 +160,12 @@ class Server(object): os.kill(pid, signal.SIGHUP) logging.info(_('Reload %s process'), self._name) - def _cmd_restart(self): - self._cmd_stop() - # TODO More reliable method - import time - time.sleep(3) - self._cmd_start() - def _launch(self): logging.info(_('Start %s on %s:%s'), self._name, env.host.value, env.port.value) httpd = WSGIServer((env.host.value, env.port.value), - rd.Router(self._classes)) + rd.Router(self._classes), **self._ssl_args) def sigterm_cb(signum, frame): logging.info(_('Got signal %s, will stop %s'), signum, self._name) @@ -247,14 +244,9 @@ class Server(object): _HELP = """ Commands: start start in daemon mode - restart restart daemon - reload reopen log files in daemon mode stop stop daemon status check for launched daemon + reload reopen log files in daemon mode config output current configuration See %s.""" - - -if __name__ == '__main__': - Server([], 'name', 'description', 'version', 'homepage').serve_forever() diff --git a/tests/units/user.py b/tests/units/user.py index e91d1b5..21d2dea 100755 --- a/tests/units/user.py +++ b/tests/units/user.py @@ -50,11 +50,11 @@ class UserTest(tests.Test): key_path = util.TempFilePath(text=DSS_PRIVKEY) key = DSA.load_key(key_path) signature = key.sign_asn1(hashlib.sha1(user).digest()).encode('hex') - env.request.environ['HTTP_sugar_user'] = user - env.request.environ['HTTP_sugar_user_signature'] = signature + env.request.environ['HTTP_SUGAR_USER'] = user + env.request.environ['HTTP_SUGAR_USER_SIGNATURE'] = signature set_headers('foo') - self.assertRaises(env.Forbidden, lambda: env.principal.user) + self.assertRaises(env.Unauthorized, lambda: env.principal.user) self.httpd(8000, [rd.User]) rest = Resource('http://localhost:8000') |