Optimize path modifying functions

This commit is contained in:
HelloZeroNet 2016-04-06 13:48:13 +02:00
parent f83a466919
commit ec70c47aa0
2 changed files with 8 additions and 11 deletions

View file

@ -245,14 +245,12 @@ class SiteStorage:
# Security check and return path of site's file
def getPath(self, inner_path):
inner_path = inner_path.replace("\\", "/") # Windows separator fix
inner_path = re.sub("^%s/" % re.escape(self.directory), "", inner_path) # Remove site directory if begins with it
file_path = u"%s/%s" % (self.directory, inner_path)
if not inner_path:
return self.directory
file_abspath = os.path.dirname(os.path.abspath(file_path))
if ".." in file_path or not file_abspath.startswith(self.allowed_dir):
self.site.log.error(u"File %s not in allowed dir: %s" % (file_path, self.allowed_dir))
file_path = u"%s/%s" % (self.directory, inner_path)
if ".." in file_path:
raise Exception(u"File not allowed: %s" % file_path)
return file_path

View file

@ -86,16 +86,15 @@ def unpackOnionAddress(packed):
# Get dir from file
# Return: data/site/content.json -> data/site
def getDirname(path):
file_dir = re.sub("[^/]*?$", "", path).rstrip("/")
if file_dir:
file_dir += "/" # Add / at end if its not the root
return file_dir
if "/" in path:
return path[:path.rfind("/")+1]
else:
return ""
# Get dir from file
# Return: data/site/content.json -> content.json
def getFilename(path):
return re.sub("^.*/", "", path)
return path[path.rfind("/")+1:]
# Convert hash to hashid for hashfield