def reload_all(): """ Reloads all users, groups, and permissions from file """ global registered_users, registered_groups if config.users_config().reload() and config.groups_config().reload(): registered_groups = [] new_registered_users = [] for group in config.groups_config().sections(): group_permissions = config.parse_safe_csv(config.groups_config()[group]["permissions"]) registered_groups.append(Group(group, [p for p in group_permissions if p != ""])) for user in config.users_config().sections(): user_groups = config.parse_safe_csv(config.users_config()[user]["groups"]) groups = [] for group in user_groups: for group2 in registered_groups: if group == group2.name: groups.append(group2) user_permissions = config.parse_safe_csv(config.users_config()[user]["permissions"]) user_address = config.users_config()[user]["socket_address"] new_user = User(user, user_address, groups, [p for p in user_permissions if p != ""]) for existing in registered_users: if existing.name == new_user.name: new_user._sockets = existing._sockets new_registered_users.append(new_user) registered_users = new_registered_users else: return False
def remove_group(group_name): """ Removes a group from the global groups file if the group exists """ if config.groups_config().has_section(group_name): config.groups_config().remove_section(group_name) config.groups_config().save() return True return False
def add_group(group_name): """ Adds a new group to the global groups file if it does not exist """ if not config.groups_config().has_section(group_name): config.groups_config().set_section(group_name, { "permissions": "" }) config.groups_config().save() return True return False
def add_user_to_group(user_name, group_name): """ Adds a user to the specified group """ if config.users_config().has_section(user_name): if config.groups_config().has_section(group_name): groups = config.parse_safe_csv(config.users_config()[user_name]["groups"]) if group_name in groups: return -3 config.users_config().set(user_name, "groups", config.append_csv(config.users_config()[user_name]["groups"], group_name)) config.users_config().save() return True else: return -2 else: return -1
def add_group_permissions(group_name, perms): """ Adds a permission string to a group """ if config.groups_config().has_section(group_name): old_perms = config.parse_safe_csv(config.groups_config()[group_name]["permissions"]) new_perms = config.parse_safe_csv(perms) if all([perm not in old_perms for perm in new_perms]): config.groups_config().set(group_name, "permissions", config.append_csv(config.groups_config()[group_name]["permissions"], perms)) config.groups_config().save() return True else: return -2 else: return -1
def remove_user_from_group(user_name, group_name): """ Removes a user from the specified group """ if config.users_config().has_section(user_name): if config.groups_config().has_section(group_name): groups = config.parse_safe_csv(config.users_config()[user_name]["groups"]) if group_name not in groups: return -3 groups.remove(group_name) config.users_config().set(user_name, "groups", config.list_to_csv(groups)) config.users_config().save() return True else: return -2 else: return -1
def remove_group_permissions(group_name, perms): """ Adds a permission string to a group """ if config.groups_config().has_section(group_name): old_perms = config.parse_safe_csv(config.groups_config()[group_name]["permissions"]) rem_perms = config.parse_safe_csv(perms) if all([perm in old_perms for perm in rem_perms]): for perm in rem_perms: old_perms.remove(perm) config.groups_config().set(group_name, "permissions", config.list_to_csv(old_perms)) config.groups_config().save() return True else: return -2 else: return -1