1
0
mirror of https://github.com/Yubico/yubiadmin.git synced 2025-02-22 02:54:16 +01:00
yubiadmin/bin/yubiadmin-server
2013-04-29 14:10:42 +02:00

43 lines
1.4 KiB
Python
Executable File

#!/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()