|
|
|
|
@ -9,24 +9,49 @@ def main(path : str, php :str, output_groups : str, output_group_folders : str): |
|
|
|
|
|
|
|
|
|
if output_group_folders: |
|
|
|
|
output_group_folders = Path(output_group_folders) |
|
|
|
|
|
|
|
|
|
r = run([php, "occ", "-V"], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
version = list(map(int, r.stdout.decode().split(" ")[-1].split("."))) |
|
|
|
|
|
|
|
|
|
r = run([php, "occ", "config:list", "--private", "--output", "json"], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
config = loads(r.stdout.decode().strip()) |
|
|
|
|
|
|
|
|
|
groups = {} |
|
|
|
|
offset = 0 |
|
|
|
|
while True: |
|
|
|
|
r = run([php, "occ", "group:list", "--offset", str(offset), "--info", "--output", "json"], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
new_groups = loads(r.stdout.decode().strip()) |
|
|
|
|
if not new_groups: |
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
for group in new_groups.keys(): |
|
|
|
|
r = run([php, "occ", "group:info", group, "--output", "json"], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
infos = loads(r.stdout.decode().strip()) |
|
|
|
|
new_groups[group]["displayName"] = infos["displayName"] |
|
|
|
|
if version[0] >= 22: |
|
|
|
|
while True: |
|
|
|
|
r = run([php, "occ", "group:list", "--offset", str(offset), "--info", "--output", "json"], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
new_groups = loads(r.stdout.decode().strip()) |
|
|
|
|
if not new_groups: |
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
for group in new_groups.keys(): |
|
|
|
|
r = run([php, "occ", "group:info", group, "--output", "json"], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
infos = loads(r.stdout.decode().strip()) |
|
|
|
|
new_groups[group]["displayName"] = infos["displayName"] |
|
|
|
|
|
|
|
|
|
groups.update(new_groups) |
|
|
|
|
offset = len(groups) |
|
|
|
|
groups.update(new_groups) |
|
|
|
|
offset = len(groups) |
|
|
|
|
else: |
|
|
|
|
db_type = config["system"]["dbtype"] |
|
|
|
|
db_host, db_port = config["system"]["dbhost"].split(":") |
|
|
|
|
if not db_port: |
|
|
|
|
db_port = config["system"]["dbport"] |
|
|
|
|
db_user = config["system"]["dbuser"] |
|
|
|
|
db_password = config["system"]["dbpassword"] |
|
|
|
|
db_name = config["system"]["dbname"] |
|
|
|
|
db_prefix = config["system"]["dbtableprefix"] |
|
|
|
|
|
|
|
|
|
if db_type == "mysql": |
|
|
|
|
r = run(["mysql", "-B", "-r", "--disable-column-names", "-h", db_host, "-P", db_port, "-u", db_user, f"-p{db_password}", "-e", f"select JSON_OBJECT('gid', gid, 'displayname', displayname) from {db_prefix}groups", db_name], cwd=path, check=True, stdout=PIPE, stderr=PIPE) |
|
|
|
|
for l in map(loads, filter(lambda l: l != "", r.stdout.decode().split("\n"))): |
|
|
|
|
groups[l["gid"]] = {"displayName": l["displayname"]} |
|
|
|
|
elif db_type == "psql": |
|
|
|
|
pass |
|
|
|
|
elif db_type == "sqlite": |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
print(f"Got {offset} groups") |
|
|
|
|
print(f"Got {len(groups)} groups") |
|
|
|
|
|
|
|
|
|
with output_groups.open("w") as f: |
|
|
|
|
dump({k: v["displayName"] for (k, v) in groups.items()}, f) |
|
|
|
|
|