mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 15:33:02 +00:00
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
|
|
import tornado.httpserver
|
|
import tornado.ioloop
|
|
import tornado.options
|
|
from tornado.web import RequestHandler, Application
|
|
from tornado import web
|
|
from tornado.log import app_log
|
|
|
|
from tornado.options import define, options
|
|
|
|
define("port", default=8888, help="run on the given port", type=int)
|
|
define("user", default='', help="my username", type=str)
|
|
|
|
class BaseHandler(RequestHandler):
|
|
cookie_name = 'multiusertest'
|
|
@property
|
|
def user(self):
|
|
return self.settings['user']
|
|
|
|
def get_current_user(self):
|
|
user = self.get_cookie(self.cookie_name, '')
|
|
if user and user == self.user:
|
|
return user
|
|
else:
|
|
raise web.HTTPError(403, "User %s does not have access to %s" % (user, self.user))
|
|
|
|
class MainHandler(BaseHandler):
|
|
|
|
@web.authenticated
|
|
def get(self, uri):
|
|
self.write("single-user %s: %s" % (self.user, uri))
|
|
|
|
def main():
|
|
tornado.options.parse_command_line()
|
|
application = Application([
|
|
(r"(.*)", MainHandler),
|
|
],
|
|
user=options.user,
|
|
login_url='/login',
|
|
)
|
|
http_server = tornado.httpserver.HTTPServer(application)
|
|
http_server.listen(options.port)
|
|
app_log.info("single user %s listening on %s" % (options.user, options.port))
|
|
tornado.ioloop.IOLoop.instance().start()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|