Skip to content

Commit 930dfd7

Browse files
authored
Merge pull request #12 from katedickey/feature/ldap-configurable-attribute
Add a config option to select which attribute is used as a username
2 parents c85af11 + 27b2f50 commit 930dfd7

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

base-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ ldap:
2929
base_dn_groups: "cn=groups,cn=accounts,dc=example,dc=com"
3030

3131
user_filter: "(!(memberof=cn=company_employees,cn=groups,cn=accounts,dc=example,dc=com))"
32+
username_attribute: "uid"
3233

3334
# Room for bot-administration. Commands are only accepted inside this room.
3435
administration_room: ""

inviter/ldap_connector.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def get_rooms(config: Config) -> Optional[List[Room]]:
5555
base_dn_groups = ldap_config.get("base_dn_groups", None)
5656
base_dn_users = ldap_config.get("base_dn_users", None)
5757
user_filter = ldap_config.get("user_filter", None)
58+
username_attribute = ldap_config.get("username_attribute", "uid")
5859
if (not homeserver
5960
or not ldap_config
6061
or not base_dn_groups
@@ -92,8 +93,8 @@ def get_rooms(config: Config) -> Optional[List[Room]]:
9293

9394
rooms: List[Room] = []
9495
for group in groups:
95-
group_members = get_group_members(connection, groups.get(group), base_dn_users, user_filter)
96-
group_owners = get_group_members(connection, owner_groups.get(group), base_dn_users, user_filter) if group in owner_groups else []
96+
group_members = get_group_members(connection, groups.get(group), base_dn_users, username_attribute, user_filter)
97+
group_owners = get_group_members(connection, owner_groups.get(group), base_dn_users, username_attribute, user_filter) if group in owner_groups else []
9798

9899
room_members: List[RoomMember] = []
99100
for group_member in group_members:
@@ -108,7 +109,7 @@ def get_rooms(config: Config) -> Optional[List[Room]]:
108109
return rooms
109110

110111

111-
def get_group_members(connection: Connection, group_dn: str, user_dn: str, search_filter: str = '(objectClass=*)')\
112+
def get_group_members(connection: Connection, group_dn: str, user_dn: str, username_attribute: str, search_filter: str = '(objectClass=*)')\
112113
-> List[Tuple[str, bool]]:
113114
"""Return members of a given user-group.
114115
@@ -120,10 +121,10 @@ def get_group_members(connection: Connection, group_dn: str, user_dn: str, searc
120121
"""
121122
members: List[Tuple[str, bool]] = []
122123
search = f"(&(memberOf={group_dn}){search_filter})"
123-
connection.search(user_dn, search, attributes=["uid", "nsAccountLock"])
124+
connection.search(user_dn, search, attributes=[username_attribute, "nsAccountLock"])
124125
entries = connection.entries
125126
for element in entries:
126-
members.append((str(element.uid), element.nsAccountLock.value))
127+
members.append((str(getattr(element, username_attribute)), element.nsAccountLock.value))
127128
return members
128129

129130

maubot.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
maubot: 0.2.0
22
id: de.in4md-service.inviterbot
3-
version: 0.1.5
3+
version: 0.1.6
44
license: GPLv3
55
modules:
66
- inviter

requirements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
mautrix~=0.15.8
1+
mautrix~=0.20.3
22
pytz~=2022.1
3-
maubot~=0.3.1
3+
maubot~=0.4.2
44
ldap3~=2.9.1
55
azure-identity~=1.8.0
66
msgraph-core~=0.2.2

0 commit comments

Comments
 (0)