Advertisement
Guest User

Untitled

a guest
Feb 9th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. import hashlib
  2. import os
  3. import subprocess
  4. import xml.etree.ElementTree
  5.  
  6. import click
  7.  
  8. user_xml_fmt = '''
  9. <User Name="ddd_{username}">
  10. <Option Name="Pass">{md5_pwd}</Option>
  11. <Option Name="Group" />
  12. <Option Name="Bypass server userlimit">0</Option>
  13. <Option Name="User Limit">0</Option>
  14. <Option Name="IP Limit">0</Option>
  15. <Option Name="Enabled">1</Option>
  16. <Option Name="Comments" />
  17. <Option Name="ForceSsl">0</Option>
  18. <Option Name="8plus3">0</Option>
  19. <IpFilter>
  20. <Disallowed />
  21. <Allowed />
  22. </IpFilter>
  23. <Permissions>
  24. <Permission Dir="H:\Drowsiness Dataset">
  25. <Option Name="FileRead">1</Option>
  26. <Option Name="FileWrite">0</Option>
  27. <Option Name="FileDelete">0</Option>
  28. <Option Name="FileAppend">0</Option>
  29. <Option Name="DirCreate">0</Option>
  30. <Option Name="DirDelete">0</Option>
  31. <Option Name="DirList">1</Option>
  32. <Option Name="DirSubdirs">1</Option>
  33. <Option Name="IsHome">1</Option>
  34. <Option Name="AutoCreate">0</Option>
  35. </Permission>
  36. </Permissions>
  37. <SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
  38. <Download />
  39. <Upload />
  40. </SpeedLimits>
  41. </User>
  42. '''
  43.  
  44. folder = 'C:/Program Files (x86)/FileZilla Server'
  45. xml_path = os.path.join(folder, 'FileZilla Server.xml')
  46. exe_path = os.path.join(folder, 'FileZilla Server.exe')
  47.  
  48.  
  49. class DDDManager():
  50.  
  51. def __init__(self, filename):
  52. self.filename = filename
  53.  
  54. def setup(self):
  55. self.tree = xml.etree.ElementTree.parse(self.filename)
  56. self.root = self.tree.getroot()
  57. self.user_tree = self.root.findall('Users')[0]
  58. return self
  59.  
  60. def new_user(self, username, pwd=None):
  61. pwd = pwd or username
  62. md5_pwd = hashlib.md5(pwd.encode('utf-8')).hexdigest()
  63. print(pwd, md5_pwd)
  64. xml_str = user_xml_fmt.format(username=username, md5_pwd=md5_pwd)
  65. return xml.etree.ElementTree.fromstring(xml_str)
  66.  
  67. def add_user(self, *arg):
  68. user = self.new_user(*arg)
  69. self.user_tree.append(user)
  70.  
  71. def remove_user(self, username):
  72. for user in self.user_tree:
  73. if user.get('Name') == username:
  74. self.user_tree.remove(user)
  75.  
  76. def dump(self):
  77. self.tree.write(self.filename)
  78.  
  79.  
  80. @click.command()
  81. @click.argument('mode')
  82. @click.argument('username')
  83. def main(mode, username):
  84.  
  85. manager = DDDManager(xml_path).setup()
  86.  
  87. if mode == 'add':
  88. user_info = (username,)
  89. manager.add_user(*user_info)
  90. elif mode == 'rm':
  91. manager.remove_user(username)
  92.  
  93. manager.dump()
  94. subprocess.run([exe_path, '/reload-config'], shell=True)
  95.  
  96.  
  97. if __name__ == '__main__':
  98. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement