def read(self): try: users_fd = open(self.users_file, "r") policies_fd = open(self.policies_file, "r") except IOError as e: self.log(e, "E") return False for line in users_fd.readlines(): l = line.strip().encode().split(b":") # TODO: move this check somewhere else if len(l) > 2: self.log("More than one ':' while parsing users file?", "E") return False if b"group" in l[0][0:5]: self.key_manager.add_group(l[0].split(b" ")[1]) for u in l[1].strip().split(b" "): self.key_manager.add_group_member(u, l[0].split(b" ")[1]) else: self.key_manager.add_user(l[0].strip(), l[1].strip()) users_fd.close() cnt = 0 for line in policies_fd.readlines(): cnt += 1 tokens = line.strip().encode().split(b" ") policy = Policy() policy.parameters = [] prev_token = None for token in tokens: if prev_token == b'-u': policy.user = token elif prev_token == b'-g': policy.group = token elif prev_token == b'-p': policy.parameters.append(token) prev_token = token policy.script = tokens[-1] if not self.policy_manager.add_policy(policy): self.log(" File %s line %d" % (config["path_to_policies"], cnt), "E") policies_fd.close()