From 1bbfad265bf53f790b38c4c45da0cb47650907dc Mon Sep 17 00:00:00 2001 From: Lisa-Hoffmann <96966642+Lisa-Hoffmann@users.noreply.github.com> Date: Mon, 3 Jan 2022 15:30:03 +0100 Subject: [PATCH] Added Comments --- trying_to_fix_nextcloud.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/trying_to_fix_nextcloud.py b/trying_to_fix_nextcloud.py index d937500..ec7a9a0 100644 --- a/trying_to_fix_nextcloud.py +++ b/trying_to_fix_nextcloud.py @@ -2,6 +2,7 @@ import requests import xml.etree.ElementTree as ET import sys +# Prepare and send the propfind request return xml string def propfind(path,auth): headers = {"Depth":"1"} req = r = requests.Request("PROPFIND", path, headers=headers, auth=auth) @@ -11,16 +12,28 @@ def propfind(path,auth): resp = s.send(prepped) return resp.text +# Function iterates through the given xml which contains all files and folders in the provided path def search_folder(requestreturn): + # List to collect path of folders stored in path innerfolders = [] + # List to collect path of files with wrong timestamp linkswrongtime = [] + # First folder provided in the xml file is always the folder we are currently in. + # To prevent searching this folder twice, or ending in a loop, we can not store this folder in the folderlist again. firstfolder = True + # Name of files are stored as an string. But we can check the timestamp of the file after we can check the name, + # so it needs to be stored temporary in case the timestamp is wrong temp = "this is sa temporary storage" + # Get a xml tree tree = ET.ElementTree(ET.fromstring(requestreturn)) + # Find all responses in the tree, those contain the fielpath, lasttimemodified, typeoffile etc. for resp in tree.findall('.//{DAV:}response'): + # Here we can get the filpath out of href and get further information in prop (lastimemodified, typeoffile, etc.) for p in resp: + # In case p.text is not none, it contains the filepath if not(p.text is None): if (p.text[-1] == '/'): + # If the current object is a folder, check it its not first folder if not(firstfolder): innerfolders.append(p.text) else: @@ -28,29 +41,39 @@ def search_folder(requestreturn): break else: temp = p.text + # In case p.text is none, it contains the further information else: + # Find time last modfied and check if the year is before 1990 for time in p.findall('.//{DAV:}getlastmodified'): year = time.text.split(' ') if int(year[3]) < 1990: linkswrongtime.append(temp) return [innerfolders, linkswrongtime] +# Enter username and password to enter nextcloud via webdav user = sys.argv[1] passw = sys.argv[2] auth = requests.auth.HTTPBasicAuth(user,passw) +# Prepare the path we want to use prefix_path = "https://kingsx.cs.uni-saarland.de" mainpath = "/remote.php/dav/files/"+ user + "/Testrequests/" +# List of all folderpaths we need to enter folders = [mainpath] +# List of all filepaths with wrong time wrongtime = [] +# Iterate through all folders and check for wrong timestamps while folders: path_suffix = folders.pop(0) path = prefix_path + str(path_suffix) r = propfind(path,auth) res = search_folder(r) + # Append all found folders and files with wrong timestamps to global list folders = folders + res[0] wrongtime = wrongtime + res[1] + # Print out the list of all the filenames with the wrong time print(wrongtime) +# By now just storage of suffix used to enter version files via FILEID version_suffix = "/remote.php/dav/versions/USER/versions/FILEID"