Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-01-16 20:34:35 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-01-16 20:37:19 (GMT)
commit2718d0a8348d8abf4743bbf0f520f0a8bed38bef (patch)
treed83c1877e71d71d2a18928cb3c030440dbf58481
parent38eb3255e9f7ad163e44be1597d67e9621f6b949 (diff)
Let Server caller pass ssl arguments gotten from options
-rw-r--r--restful_document/server.py50
-rwxr-xr-xtests/units/user.py6
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')