mirror of
https://github.com/Yubico/yubiadmin.git
synced 2025-02-22 02:54:16 +01:00
43 lines
1.4 KiB
Python
Executable File
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()
|