diff --git a/copyparty/authsrv.py b/copyparty/authsrv.py
index 9bbbdc73..cfd2b2ea 100644
--- a/copyparty/authsrv.py
+++ b/copyparty/authsrv.py
@@ -141,9 +141,9 @@ class AuthSrv(object):
self.warn_anonwrite = True
if WINDOWS:
- self.re_vol = re.compile(r'^([a-zA-Z]:[\\/][^:]*|[^:]*):([^:]*):(.*)')
+ self.re_vol = re.compile(r"^([a-zA-Z]:[\\/][^:]*|[^:]*):([^:]*):(.*)")
else:
- self.re_vol = re.compile(r'^([^:]*):([^:]*):(.*)')
+ self.re_vol = re.compile(r"^([^:]*):([^:]*):(.*)")
self.mutex = threading.Lock()
self.reload()
@@ -230,7 +230,7 @@ class AuthSrv(object):
try:
src, dst, perms = vol_match.groups()
except:
- raise Exception('invalid -v argument')
+ raise Exception("invalid -v argument")
src = fsdec(os.path.abspath(fsenc(src)))
dst = dst.strip("/")
@@ -275,12 +275,12 @@ class AuthSrv(object):
v.uwrite = mwrite[dst]
try:
- vfs.get("/", "*", False, True)
- if self.warn_anonwrite:
+ v, _ = vfs.get("/", "*", False, True)
+ if self.warn_anonwrite and os.getcwd() == v.realpath:
self.warn_anonwrite = False
self.log(
"\033[31manyone can read/write the current directory: {}\033[0m".format(
- os.getcwd()
+ v.realpath
)
)
except Pebkac:
diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py
index b7bee43b..8b6c4a35 100644
--- a/copyparty/httpcli.py
+++ b/copyparty/httpcli.py
@@ -384,13 +384,21 @@ class HttpCli(object):
fn = os.path.join(fdir, sanitize_fn(new_dir))
if not os.path.isdir(fsenc(fdir)):
- raise Pebkac(404, "that folder does not exist")
+ raise Pebkac(500, "parent folder does not exist")
- os.mkdir(fsenc(fn))
+ if os.path.isdir(fsenc(fn)):
+ raise Pebkac(500, "that folder exists already")
+ try:
+ os.mkdir(fsenc(fn))
+ except:
+ raise Pebkac(500, "mkdir failed, check the logs")
+
+ vpath = "{}/{}".format(self.vpath, new_dir).lstrip("/")
+ redir = ''
html = self.conn.tpl_msg.render(
- h2='return to /{}'.format(
- quotep(self.vpath), html_escape(self.vpath, quote=False)
+ h2='go to /{}{}'.format(
+ quotep(vpath), html_escape(vpath, quote=False), redir
),
pre="aight",
)