added options for commandline
This commit is contained in:
parent
3873fab889
commit
5fec096aa6
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
# Copyright (C) 2014-2015 Nginx, Inc.
|
# Copyright (C) 2014-2015 Nginx, Inc.
|
||||||
|
|
||||||
import sys, os, signal, base64, ldap, Cookie
|
import sys, os, signal, base64, ldap, Cookie, argparse
|
||||||
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
|
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
|
||||||
|
|
||||||
Listen = ('localhost', 8888)
|
#Listen = ('localhost', 8888)
|
||||||
#Listen = "/tmp/auth.sock" # Also uncomment lines in 'Requests are
|
#Listen = "/tmp/auth.sock" # Also uncomment lines in 'Requests are
|
||||||
# processed with UNIX sockets' section below
|
# processed with UNIX sockets' section below
|
||||||
|
|
||||||
|
|
@ -142,10 +142,8 @@ class AuthHandler(BaseHTTPRequestHandler):
|
||||||
|
|
||||||
# Verify username/password against LDAP server
|
# Verify username/password against LDAP server
|
||||||
class LDAPAuthHandler(AuthHandler):
|
class LDAPAuthHandler(AuthHandler):
|
||||||
|
|
||||||
# Parameters to put into self.ctx from the HTTP header of auth request
|
# Parameters to put into self.ctx from the HTTP header of auth request
|
||||||
def get_params(self):
|
params = {
|
||||||
return {
|
|
||||||
# parameter header default
|
# parameter header default
|
||||||
'realm': ('X-Ldap-Realm', 'Restricted'),
|
'realm': ('X-Ldap-Realm', 'Restricted'),
|
||||||
'url': ('X-Ldap-URL', None),
|
'url': ('X-Ldap-URL', None),
|
||||||
|
|
@ -156,6 +154,13 @@ class LDAPAuthHandler(AuthHandler):
|
||||||
'cookiename': ('X-CookieName', '')
|
'cookiename': ('X-CookieName', '')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_params(cls, params):
|
||||||
|
cls.params = params
|
||||||
|
|
||||||
|
def get_params(self):
|
||||||
|
return self.params
|
||||||
|
|
||||||
# GET handler for the authentication request
|
# GET handler for the authentication request
|
||||||
def do_GET(self):
|
def do_GET(self):
|
||||||
|
|
||||||
|
|
@ -228,6 +233,48 @@ def exit_handler(signal, frame):
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="""Simple Nginx LDAP authentication helper.""")
|
||||||
|
# Group for listen options:
|
||||||
|
group = parser.add_argument_group("Listen options")
|
||||||
|
group.add_argument('--host', metavar="hostname",
|
||||||
|
default="localhost", help="host to bind (Default: localhost)")
|
||||||
|
group.add_argument('-p', '--port', metavar="port", type=int,
|
||||||
|
default=8888, help="port to bind (Default: 8888)")
|
||||||
|
# ldap options:
|
||||||
|
group = parser.add_argument_group(title="LDAP options")
|
||||||
|
group.add_argument('-u', '--url', metavar="URL",
|
||||||
|
default="ldap://localhost:389",
|
||||||
|
help=("LDAP URI to query (Default: ldapi://localhost:389)"))
|
||||||
|
group.add_argument('-b', metavar="baseDn", dest="basedn", default='',
|
||||||
|
help="LDAP base dn (Default: unset)")
|
||||||
|
group.add_argument('-D', metavar="bindDn", dest="binddn", default='',
|
||||||
|
help="LDAP bind DN (Default: anonymous)")
|
||||||
|
group.add_argument('-w', metavar="passwd", dest="bindpw", default='',
|
||||||
|
help="LDAP password for the bind DN (Default: unset)")
|
||||||
|
group.add_argument('-f', '--filter', metavar='filter',
|
||||||
|
default='(cn=%(username)s)',
|
||||||
|
help="LDAP filter (Default: cn=%%(username)s)")
|
||||||
|
# http options:
|
||||||
|
group = parser.add_argument_group(title="HTTP options")
|
||||||
|
group.add_argument('-R', '--realm', metavar='"Restricted Area"',
|
||||||
|
default="Resticted", help='HTTP auth realm (Default: "Restricted")')
|
||||||
|
group.add_argument('-c', '--cookie', metavar="cookiename",
|
||||||
|
default="", help="HTTP cookie name to set in (Default: unset)")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
global Listen
|
||||||
|
Listen = (args.host, args.port)
|
||||||
|
auth_params = {
|
||||||
|
'realm': ('X-Ldap-Realm', args.realm),
|
||||||
|
'url': ('X-Ldap-URL', args.url),
|
||||||
|
'basedn': ('X-Ldap-BaseDN', args.basedn),
|
||||||
|
'template': ('X-Ldap-Template', args.filter),
|
||||||
|
'binddn': ('X-Ldap-BindDN', args.binddn),
|
||||||
|
'bindpasswd': ('X-Ldap-BindPass', args.bindpw),
|
||||||
|
'cookiename': ('X-CookieName', args.cookie)
|
||||||
|
}
|
||||||
|
LDAPAuthHandler.set_params(auth_params)
|
||||||
server = AuthHTTPServer(Listen, LDAPAuthHandler)
|
server = AuthHTTPServer(Listen, LDAPAuthHandler)
|
||||||
signal.signal(signal.SIGINT, exit_handler)
|
signal.signal(signal.SIGINT, exit_handler)
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue