diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 7a56b1df..ca33eaeb 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -214,6 +214,20 @@ class HttpCli(object): self.log(body.rstrip()) self.reply(b"
" + body.encode("utf-8") + b"\r\n", *list(args), **kwargs)
 
+    def urlq(self, add={}, rm=[]):
+        """
+        generates url query based on uparam (b, pw, all others)
+        removing anything in rm, adding pairs in add
+        """
+
+        kv = {k: v for k, v in self.uparam.items() if k not in rm}
+        kv.update(add)
+        if not kv:
+            return ""
+
+        r = ["{}={}".format(k, quotep(v)) if v else k for k, v in kv.items()]
+        return "?" + "&".join(r)
+
     def handle_get(self):
         logmsg = "{:4} {}".format(self.mode, self.req)
 
@@ -1214,11 +1228,7 @@ class HttpCli(object):
         return True
 
     def tx_mounts(self):
-        suf = [
-            "{}={}".format(k, v) if v else k for k, v in self.uparam.items() if k != "h"
-        ]
-        suf = "?" + "&".join(suf) if suf else ""
-
+        suf = self.urlq(rm=["h"])
         rvol = [x + "/" if x else x for x in self.rvol]
         wvol = [x + "/" if x else x for x in self.wvol]
         html = self.j2("splash", this=self, rvol=rvol, wvol=wvol, url_suf=suf)
@@ -1351,17 +1361,7 @@ class HttpCli(object):
             idx = self.conn.get_u2idx()
             icur = idx.get_cur(vn.realpath)
 
-        url_suf = []
-
-        basic = self.uparam.get("b")
-        if basic is not None:
-            url_suf.append("b" if not basic else "b=" + basic)
-
-        pwd = self.uparam.get("pw")
-        if pwd:
-            url_suf.append("pw=" + quotep(pwd))
-
-        url_suf = ("?" + "&".join(url_suf)) if url_suf else ""
+        url_suf = self.urlq()
 
         dirs = []
         files = []