def update(self, groups, users): ftp_permissions = FtpPermissions().account_permissions() #directories = list(ftp_permissions.keys()) # Fetching DB FTP permissions for dir in FTP_DB: if dir in ftp_permissions: ftp_permissions[dir] = FtpPermissions(ftp_permissions[dir]).merge(db_permissions=FTP_DB[dir]) else: ftp_permissions[dir] = FtpPermissions(FTP_DB[dir]).permissions #directories.append(dir) # Sorting directories. More specific ones go last. directories = sorted(ftp_permissions.keys(), self.__order_directory) logger.debug("User privlileges: %s" % ftp_permissions) logger.debug("Account privileges: %s" % account_permissions) # Applying changes to the config for dir in directories: ftp_perm = FtpPermissions(ftp_permissions[dir]) conf_permissions = ftp_perm.to_config() dir = dir.replace(" ", "\ ") if not dir in self.config["<Directory>"]: self.config["<Directory>"][dir] = S() self.config["<Directory>"][dir]["<Limit>"] = S() for type in ("ALL", "DIRS", "READ", "WRITE"): if type in conf_permissions: self.config["<Directory>"][dir]["<Limit>"][type] = conf_permissions[type]
def test_to_config(self): input = ( {"all": {"": "none"}, "user": {"arnike": "read", "root": "write", "user_1": "none"}, "group": {"users": "read"}}, {"all": {"": "read"}, "user": {"arnike": "read", "root": "write", "user_1": "none"}, "group": {"users": "read"}}, {"all": {"": "write"}, "user": {"arnike": "read", "root": "write", "user_1": "none"}, "group": {"users": "read"}}, {"user": {"arnike": "read", "root": "write", "user_1": "none"}, "group": {"users": "read"}}, ) output = ( {'DIRS': {'AllowGroup': ['users'], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'READ': {'AllowGroup': ['users'], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'ALL': {'DenyAll': []}, 'WRITE': {'DenyGroup': ['users'], 'DenyUser': ['arnike', 'user_1'], 'AllowUser': ['root']}}, {'DIRS': {'Order': ['deny,allow'], 'AllowAll': [], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'READ': {'Order': ['deny,allow'], 'AllowAll': [], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'WRITE': {'DenyAll': [], 'Order': ['allow,deny'], 'DenyUser': ['arnike', 'user_1'], 'AllowUser': ['root']}}, {'DIRS': {'Order': ['deny,allow'], 'AllowAll': [], 'AllowGroup': ['users'], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'READ': {'Order': ['deny,allow'], 'AllowAll': [], 'AllowGroup': ['users'], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'WRITE': {'Order': ['deny,allow'], 'AllowAll': [], 'DenyGroup': ['users'], 'DenyUser': ['arnike', 'user_1'], 'AllowUser': ['root']}}, {'DIRS': {'AllowGroup': ['users'], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'READ': {'AllowGroup': ['users'], 'AllowUser': ['arnike', 'root'], 'DenyUser': ['user_1']}, 'WRITE': {'DenyGroup': ['users'], 'DenyUser': ['arnike', 'user_1'], 'AllowUser': ['root']}} ) for i in xrange(len(input)): perm_obj = FtpPermissions() config = dict(perm_obj.to_config(input[i])) self.assertTrue(config == output[i])