#!/usr/bin/python import os import base64 from wsgiref.simple_server import make_server from webob.dec import wsgify from webob import exc from yubiadmin import server from yubiadmin.static import FileApp, DirectoryApp from yubiadmin.config import settings REALM = 'YubiADMIN' STATIC_ASSETS = ['js', 'css', 'img', 'favicon.ico'] if __name__ == '__main__': # TODO: Take command line args to set port. mod_dir = os.path.dirname(server.__file__) base_dir = os.path.abspath(os.path.join(mod_dir)) static_dir = os.path.join(base_dir, 'static') static_app = DirectoryApp(static_dir) favicon_app = FileApp(os.path.join(static_dir, 'favicon.ico')) @wsgify def with_static(request): if request.authorization: _, auth = request.authorization if base64.b64decode(auth) == '%s:%s' % (settings['user'], settings['pass']): base = request.path_info_peek() if base in STATIC_ASSETS: return request.get_response(static_app) return request.get_response(server.application) #Deny access response = exc.HTTPUnauthorized() response.www_authenticate = ('Basic', {'realm': REALM}) return response httpd = make_server(settings['iface'], settings['port'], with_static) httpd.serve_forever()