From 026bc0dcbed79a12b28139dab7e9a7004dc57fbb Mon Sep 17 00:00:00 2001 From: nd <git@notandy.de> Date: Sun, 12 Jul 2020 11:49:43 +0200 Subject: [PATCH] moved to generic ldap connection instead of service/user connection --- uffd/group/models.py | 2 +- uffd/group/views.py | 6 +++--- uffd/ldap/__init__.py | 2 +- uffd/ldap/ldap.py | 5 ++++- uffd/user/models.py | 4 ++-- uffd/user/views.py | 10 +++++----- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/uffd/group/models.py b/uffd/group/models.py index 98b60453..5006c097 100644 --- a/uffd/group/models.py +++ b/uffd/group/models.py @@ -25,7 +25,7 @@ class Group(): @classmethod def from_ldap_dn(cls, dn): - conn = ldap.service_conn() + conn = ldap.get_conn() conn.search(dn, '(objectClass=groupOfUniqueNames)') if not len(conn.entries) == 1: return None diff --git a/uffd/group/views.py b/uffd/group/views.py index 35ad425d..1c6bcf2e 100644 --- a/uffd/group/views.py +++ b/uffd/group/views.py @@ -1,7 +1,7 @@ from flask import Blueprint, current_app, render_template from uffd.navbar import register_navbar -from uffd.ldap import service_conn, escape_filter_chars +from uffd.ldap import get_conn, escape_filter_chars from .models import Group @@ -10,7 +10,7 @@ bp = Blueprint("group", __name__, template_folder='templates', url_prefix='/grou @bp.route("/") @register_navbar('Groups', icon='layer-group', blueprint=bp) def group_list(): - conn = service_conn() + conn = get_conn() conn.search(current_app.config["LDAP_BASE_GROUPS"], '(objectclass=groupOfUniqueNames)') groups = [] for i in conn.entries: @@ -19,7 +19,7 @@ def group_list(): @bp.route("/<int:gid>") def group_show(gid): - conn = service_conn() + conn = get_conn() conn.search(current_app.config["LDAP_BASE_GROUPS"], '(&(objectclass=groupOfUniqueNames)(gidNumber={}))'.format((escape_filter_chars(gid)))) assert len(conn.entries) == 1 group = Group.from_ldap(conn.entries[0]) diff --git a/uffd/ldap/__init__.py b/uffd/ldap/__init__.py index 61ffb9e0..b57cd784 100644 --- a/uffd/ldap/__init__.py +++ b/uffd/ldap/__init__.py @@ -1,4 +1,4 @@ from .ldap import bp as ldap_bp -from .ldap import service_conn, user_conn, escape_filter_chars, uid_to_dn, loginname_to_dn, get_next_uid +from .ldap import get_conn, escape_filter_chars, uid_to_dn, loginname_to_dn, get_next_uid bp = [ldap_bp] diff --git a/uffd/ldap/ldap.py b/uffd/ldap/ldap.py index a9068cc7..760ae092 100644 --- a/uffd/ldap/ldap.py +++ b/uffd/ldap/ldap.py @@ -16,11 +16,14 @@ def fix_connection(conn): def service_conn(): server = Server(current_app.config["LDAP_SERVICE_URL"], get_info=ALL) conn = Connection(server, current_app.config["LDAP_SERVICE_BIND_DN"], current_app.config["LDAP_SERVICE_BIND_PASSWORD"], auto_bind=True) - return fix_connection(conn) def user_conn(): pass +def get_conn(): + conn = service_conn() + return fix_connection(conn) + def uid_to_dn(uid): conn = service_conn() conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format(escape_filter_chars(uid))) diff --git a/uffd/user/models.py b/uffd/user/models.py index 8d889a1f..d4d3fb39 100644 --- a/uffd/user/models.py +++ b/uffd/user/models.py @@ -35,14 +35,14 @@ class User(): @classmethod def from_ldap_dn(cls, dn): - conn = ldap.service_conn() + conn = ldap.get_conn() conn.search(dn, '(objectClass=person)') if not len(conn.entries) == 1: return None return User.from_ldap(conn.entries[0]) def to_ldap(self, new): - conn = ldap.service_conn() + conn = ldap.get_conn() if new: attributes= { 'uidNumber': ldap.get_next_uid(), diff --git a/uffd/user/views.py b/uffd/user/views.py index b6633bbb..31ef6989 100644 --- a/uffd/user/views.py +++ b/uffd/user/views.py @@ -4,14 +4,14 @@ from uffd.navbar import register_navbar from uffd.csrf import csrf_protect from .models import User -from uffd.ldap import service_conn, escape_filter_chars +from uffd.ldap import get_conn, escape_filter_chars bp = Blueprint("user", __name__, template_folder='templates', url_prefix='/user/') @bp.route("/") @register_navbar('Users', icon='users', blueprint=bp) def user_list(): - conn = service_conn() + conn = get_conn() conn.search(current_app.config["LDAP_BASE_USER"], '(objectclass=person)') users = [] for i in conn.entries: @@ -25,7 +25,7 @@ def user_show(uid=None): user = User() ldif = '<none yet>' else: - conn = service_conn() + conn = get_conn() conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid)))) assert len(conn.entries) == 1 user = User.from_ldap(conn.entries[0]) @@ -35,7 +35,7 @@ def user_show(uid=None): @bp.route("/<int:uid>/update", methods=['POST']) @bp.route("/new", methods=['POST']) def user_update(uid=False): - conn = service_conn() + conn = get_conn() if uid: conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid)))) assert len(conn.entries) == 1 @@ -62,7 +62,7 @@ def user_update(uid=False): @csrf_protect @bp.route("/<int:uid>/del") def user_delete(uid): - conn = service_conn() + conn = get_conn() conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid)))) assert len(conn.entries) == 1 if conn.delete(conn.entries[0].entry_dn): -- GitLab