Page MenuHomePhabricator

raw-paste-data.txt

Authored By
taavi
Oct 9 2022, 9:52 AM
Size
1 KB
Referenced Files
None
Subscribers
None

raw-paste-data.txt

# SPDX-License-Identifier: AGPL-3.0
# (c) Taavi Väänänen <hi@taavi.wtf>, 2022
import ldap3
import yaml
with open("/etc/ldap.yaml", "r") as f:
ldap_config = yaml.safe_load(f.read())
conn = ldap3.Connection(
ldap_config["servers"],
user=ldap_config["user"],
password=ldap_config["password"],
auto_bind=True,
auto_range=True,
read_only=True,
)
not_locked_toolforge_users = [
user["dn"]
for user in conn.extend.standard.paged_search(
"ou=people,dc=wikimedia,dc=org",
"(&(objectclass=posixAccount)(memberOf=cn=project-tools,ou=groups,dc=wikimedia,dc=org)(!(pwdPolicySubentry=cn=disabled,ou=ppolicies,dc=wikimedia,dc=org)))",
attributes=["dn"],
time_limit=5,
paged_size=256,
generator=True,
)
]
tools = conn.extend.standard.paged_search(
"ou=servicegroups,dc=wikimedia,dc=org",
"(&(objectClass=groupOfNames)(cn=tools.*))",
attributes=["cn", "member"],
time_limit=5,
paged_size=256,
generator=True,
)
for tool in tools:
found = False
for maintainer in tool["attributes"]["member"]:
if maintainer in not_locked_toolforge_users:
found = True
break
if not found:
print(tool["attributes"]["cn"][0])

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
9768032
Default Alt Text
raw-paste-data.txt (1 KB)

Event Timeline