Added Comments
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user