Пример #1
0
 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]
Пример #2
0
 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])