From e1c64cb322d2f05391a8e069e0fb39255d15d282 Mon Sep 17 00:00:00 2001 From: Devin Matte Date: Mon, 21 Dec 2020 17:25:24 -0500 Subject: [PATCH] Using single ldap connection --- proxstar/__init__.py | 2 ++ proxstar/ldapdb.py | 28 ++++++++++++---------------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/proxstar/__init__.py b/proxstar/__init__.py index a6c3ae6..34b9cf0 100644 --- a/proxstar/__init__.py +++ b/proxstar/__init__.py @@ -44,6 +44,7 @@ from proxstar.vnc import ( ) from proxstar.auth import get_auth from proxstar.util import gen_password +from proxstar.ldapdb import connect_ldap from proxstar.starrs import check_hostname, renew_ip from proxstar.proxmox import connect_proxmox, get_isos, get_pools, get_ignored_pools @@ -82,6 +83,7 @@ engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI']) Base.metadata.bind = engine DBSession = sessionmaker(bind=engine) db = DBSession() +ldap_conn = connect_ldap() starrs = psycopg2.connect( "dbname='{}' user='{}' host='{}' password='{}'".format( diff --git a/proxstar/ldapdb.py b/proxstar/ldapdb.py index 224e34c..609d61c 100644 --- a/proxstar/ldapdb.py +++ b/proxstar/ldapdb.py @@ -1,8 +1,8 @@ +from functools import lru_cache from csh_ldap import CSHLDAP from flask import current_app as app -from functools import lru_cache -from proxstar import logging +from proxstar import logging, ldap_conn def connect_ldap(): @@ -14,32 +14,28 @@ def connect_ldap(): return ldap -@lru_cache(maxsize=64) +@lru_cache(maxsize=128) def is_rtp(user): - ldap = connect_ldap() - rtp_group = ldap.get_group('rtp') - return rtp_group.check_member(ldap.get_member(user, uid=True)) + rtp_group = ldap_conn.get_group('rtp') + return rtp_group.check_member(ldap_conn.get_member(user, uid=True)) @lru_cache(maxsize=128) def is_active(user): - ldap = connect_ldap() - active_group = ldap.get_group('active') - return active_group.check_member(ldap.get_member(user, uid=True)) + active_group = ldap_conn.get_group('active') + return active_group.check_member(ldap_conn.get_member(user, uid=True)) -@lru_cache(maxsize=256) +@lru_cache(maxsize=128) def is_current_student(user): - ldap = connect_ldap() - current_student_group = ldap.get_group('current_student') - return current_student_group.check_member(ldap.get_member(user, uid=True)) + current_student_group = ldap_conn.get_group('current_student') + return current_student_group.check_member(ldap_conn.get_member(user, uid=True)) -@lru_cache(maxsize=256) +@lru_cache(maxsize=128) def is_user(user): - ldap = connect_ldap() try: - ldap.get_member(user, uid=True) + ldap_conn.get_member(user, uid=True) return True except: return False