Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble-scripts.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Authenticators/LDAP/LDAPauth.py')
-rw-r--r--Authenticators/LDAP/LDAPauth.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/Authenticators/LDAP/LDAPauth.py b/Authenticators/LDAP/LDAPauth.py
index 93f1277..d5e2146 100644
--- a/Authenticators/LDAP/LDAPauth.py
+++ b/Authenticators/LDAP/LDAPauth.py
@@ -144,7 +144,8 @@ default = { 'ldap':(('ldap_uri', str, 'ldap://127.0.0.1'),
('group_attr', str, 'member'),
('provide_info', x2bool, False),
('mail_attr', str, 'mail'),
- ('provide_users', x2bool, False)),
+ ('provide_users', x2bool, False),
+ ('use_start_tls', x2bool, False)),
'user':(('id_offset', int, 1000000000),
('reject_on_error', x2bool, True),
@@ -444,12 +445,33 @@ def do_main_program():
# Otherwise, let's check the LDAP server.
uid = None
- ldap_conn = ldap.initialize(cfg.ldap.ldap_uri, 0)
+
+ if cfg.ldap.use_start_tls:
+ # try StartTLS: global options
+ debug('use_start_tls is set, setting global option TLS_REQCERT = never')
+ ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
+
+ ldap_trace = 0 # Change to 1 for more verbose trace
+ ldap_conn = ldap.initialize(cfg.ldap.ldap_uri, ldap_trace)
+
+ if cfg.ldap.use_start_tls:
+ # try StartTLS: connection specific options
+ debug('use_start_tls is set, setting connection options X_TLS_*')
+ ldap_conn.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
+ ldap_conn.set_option(ldap.OPT_X_TLS, ldap.OPT_X_TLS_DEMAND)
+ ldap_conn.set_option(ldap.OPT_X_TLS_DEMAND, True)
+ try:
+ ldap_conn.start_tls_s()
+ except Exception, e:
+ warning('could not initiate StartTLS, e = ' + str(e))
+ return (AUTH_REFUSED, None, None)
+
if cfg.ldap.bind_dn:
# Bind the functional account to search the directory.
bind_dn = cfg.ldap.bind_dn
bind_pass = cfg.ldap.bind_pass
try:
+ debug('try to connect to ldap (bind_dn will be used)')
ldap_conn.bind_s(bind_dn, bind_pass)
except ldap.INVALID_CREDENTIALS:
ldap_conn.unbind()