Advertisement
ETHERNET2

filemanscript.py

Dec 5th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.41 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. import cgi
  3. import cgitb; cgitb.enable(display=0, logdir="../logs")
  4. import os
  5. import filemanager as fm
  6. import shutil
  7. from pathlib import Path
  8.  
  9.  
  10. ### Pre-page setup ###
  11.  
  12. LINUX_ROOT = "/home/pi/www/test/"
  13. APACHE_ROOT = "/pi/test/"
  14.  
  15. blackdirs = fm.loadblacklist()
  16.  
  17. form = cgi.FieldStorage()
  18. dir_selected = str(form.getvalue("directory", "None"))
  19. dir_zombie = dir_selected  # lingering copy for error reporting
  20. trashitem = str(form.getvalue("trashitem", "DEFAULT"))
  21. newdir = str(form.getvalue("newdir", "None"))
  22.  
  23. try:
  24.     upload_file = form["uploadname"]
  25. except KeyError:
  26.     upload_file = None
  27.  
  28.  
  29. up_check = False
  30.  
  31. if dir_selected in blackdirs or not fm.input_check(dir_selected):
  32.     dir_selected = None
  33.     dir_zombie = "[ILLEGAL]" + dir_zombie
  34.  
  35. elif not os.path.isdir(LINUX_ROOT + dir_selected):
  36.     dir_selected = None
  37.     dir_zombie = "[NONEXISTANT]" + dir_zombie
  38.  
  39.  
  40. # File upload code
  41. try:
  42.     if upload_file.filename:
  43.         # prevent traversal attacks and allow windows users to upload files
  44.         fn = os.path.basename(upload_file.filename.replace("\\", "/"))
  45.         open(LINUX_ROOT + dir_selected + "/" + fn, 'wb').write(upload_file.file.read())
  46.         up_check = "File '" + fn + "' was uploaded successfully."
  47.     else:
  48.         up_check = "No file uploaded: " + str(upload_file.file)
  49. except AttributeError:
  50.     # do nothing if upload_file does not exist (always occurs when page first loads)
  51.     pass
  52.  
  53.  
  54. # File deletion code
  55.  
  56. if trashitem != "DEFAULT":
  57.     try:
  58.         trashname = Path(LINUX_ROOT + trashitem).name
  59.         shutil.move(LINUX_ROOT + trashitem, LINUX_ROOT + "trash/" + trashname)
  60.         up_check = "Item '{}' was successfully deleted.".format(trashname)
  61.     except FileNotFoundError:
  62.         up_check = "Item '{}' not found.".format(trashitem)
  63.  
  64.  
  65. # Directory creation code
  66.  
  67. if newdir != "None":
  68.     try:
  69.         newpath = Path(LINUX_ROOT + dir_selected) / newdir
  70.         newpath.mkdir(mode=0o775)
  71.         up_check = "Directory successfully created."
  72.     except FileExistsError:
  73.         up_check = "Directory {} already exists.".format(newdir)
  74.     except FileNotFoundError:
  75.         up_check = "Cannot create new directory with implicit parent directories."
  76.  
  77. ### Page construction ###
  78.  
  79. fm.httpheader()
  80.  
  81. if dir_selected == None:
  82.     fm.wrongpage(dir_zombie)
  83. else:
  84.     fm.dirlist(APACHE_ROOT, LINUX_ROOT, dir_selected, up_check)
  85.  
  86. fm.httpfooter()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement