copyparty 1.18.4__tar.gz → 1.18.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {copyparty-1.18.4 → copyparty-1.18.5}/PKG-INFO +1 -1
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/__main__.py +1 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/__version__.py +2 -2
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/httpcli.py +27 -11
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/util.py +13 -3
- copyparty-1.18.5/copyparty/web/browser.js.gz +0 -0
- copyparty-1.18.5/copyparty/web/util.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty.egg-info/PKG-INFO +1 -1
- copyparty-1.18.4/copyparty/web/browser.js.gz +0 -0
- copyparty-1.18.4/copyparty/web/util.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/LICENSE +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/README.md +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/authsrv.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/bos/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/bos/bos.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/bos/path.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/broker_mp.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/broker_mpw.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/broker_thr.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/broker_util.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/cert.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/cfg.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/dxml.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/fsutil.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/ftpd.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/httpconn.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/httpsrv.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/ico.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/mdns.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/metrics.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/mtag.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/multicast.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/pwhash.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/res/COPYING.txt +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/res/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/res/insecure.pem +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/smbd.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/ssdp.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/star.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/bimap.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/bit.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/buffer.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/dns.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/label.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/lex.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/dnslib/ranges.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/ifaddr/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/ifaddr/_posix.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/ifaddr/_shared.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/ifaddr/_win32.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/qrcodegen.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/stolen/surrogateescape.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/sutil.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/svchub.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/szip.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/tcpsrv.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/tftpd.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/th_cli.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/th_srv.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/u2idx.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/up2k.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/a/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/a/partyfuse.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/a/u2c.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/a/webdav-cfg.bat +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/baguettebox.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/browser.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/browser.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/browser2.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/cf.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/dbg-audio.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/dd/2.png +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/dd/3.png +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/dd/4.png +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/dd/5.png +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/dd/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/__init__.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/busy.mp3.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/easymde.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/easymde.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/fuse.py +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/marked.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/mini-fa.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/mini-fa.woff +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/prism.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/prism.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/prismd.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/scp.woff2 +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/sha512.ac.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/deps/sha512.hw.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/idp.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/md.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/md.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/md.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/md2.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/md2.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/mde.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/mde.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/mde.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/msg.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/msg.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/rups.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/rups.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/rups.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/shares.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/shares.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/shares.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/splash.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/splash.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/splash.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/svcs.html +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/svcs.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/ui.css.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/up2k.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty/web/w.hash.js.gz +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty.egg-info/SOURCES.txt +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty.egg-info/dependency_links.txt +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty.egg-info/entry_points.txt +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty.egg-info/requires.txt +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/copyparty.egg-info/top_level.txt +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/pyproject.toml +0 -0
- {copyparty-1.18.4 → copyparty-1.18.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: copyparty
|
3
|
-
Version: 1.18.
|
3
|
+
Version: 1.18.5
|
4
4
|
Summary: Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
|
5
5
|
Author-email: ed <copyparty@ocv.me>
|
6
6
|
License: MIT
|
@@ -1280,6 +1280,7 @@ def add_stats(ap):
|
|
1280
1280
|
def add_yolo(ap):
|
1281
1281
|
ap2 = ap.add_argument_group('yolo options')
|
1282
1282
|
ap2.add_argument("--allow-csrf", action="store_true", help="disable csrf protections; let other domains/sites impersonate you through cross-site requests")
|
1283
|
+
ap2.add_argument("--cookie-lax", action="store_true", help="allow cookies from other domains (if you follow a link from another website into your server, you will arrive logged-in); this reduces protection against CSRF")
|
1283
1284
|
ap2.add_argument("--getmod", action="store_true", help="permit ?move=[...] and ?delete as GET")
|
1284
1285
|
ap2.add_argument("--wo-up-readme", action="store_true", help="allow users with write-only access to upload logues and readmes without adding the _wo_ filename prefix (volflag=wo_up_readme)")
|
1285
1286
|
|
@@ -2981,12 +2981,20 @@ class HttpCli(object):
|
|
2981
2981
|
# reset both plaintext and tls
|
2982
2982
|
# (only affects active tls cookies when tls)
|
2983
2983
|
for k in ("cppwd", "cppws") if self.is_https else ("cppwd",):
|
2984
|
-
ck = gencookie(k, pwd, self.args.R, False)
|
2984
|
+
ck = gencookie(k, pwd, self.args.R, self.args.cookie_lax, False)
|
2985
2985
|
self.out_headerlist.append(("Set-Cookie", ck))
|
2986
2986
|
self.out_headers.pop("Set-Cookie", None) # drop keepalive
|
2987
2987
|
else:
|
2988
2988
|
k = "cppws" if self.is_https else "cppwd"
|
2989
|
-
ck = gencookie(
|
2989
|
+
ck = gencookie(
|
2990
|
+
k,
|
2991
|
+
pwd,
|
2992
|
+
self.args.R,
|
2993
|
+
self.args.cookie_lax,
|
2994
|
+
self.is_https,
|
2995
|
+
dur,
|
2996
|
+
"; HttpOnly",
|
2997
|
+
)
|
2990
2998
|
self.out_headers["Set-Cookie"] = ck
|
2991
2999
|
|
2992
3000
|
return dur > 0, msg
|
@@ -4843,13 +4851,21 @@ class HttpCli(object):
|
|
4843
4851
|
def tx_svcs(self) :
|
4844
4852
|
aname = re.sub("[^0-9a-zA-Z]+", "", self.args.vname) or "a"
|
4845
4853
|
ep = self.host
|
4846
|
-
|
4847
|
-
|
4848
|
-
|
4849
|
-
|
4850
|
-
|
4851
|
-
|
4852
|
-
|
4854
|
+
sep = "]:" if "]" in ep else ":"
|
4855
|
+
if sep in ep:
|
4856
|
+
host, hport = ep.rsplit(":", 1)
|
4857
|
+
hport = ":" + hport
|
4858
|
+
else:
|
4859
|
+
host = ep
|
4860
|
+
hport = ""
|
4861
|
+
|
4862
|
+
if host.endswith(".local") and self.args.zm and not self.args.rclone_mdns:
|
4863
|
+
rip = self.conn.hsrv.nm.map(self.ip) or host
|
4864
|
+
if ":" in rip and "[" not in rip:
|
4865
|
+
rip = "[%s]" % (rip,)
|
4866
|
+
else:
|
4867
|
+
rip = host
|
4868
|
+
|
4853
4869
|
# safer than html_escape/quotep since this avoids both XSS and shell-stuff
|
4854
4870
|
pw = re.sub(r"[<>&$?`\"']", "_", self.pw or "hunter2")
|
4855
4871
|
vp = re.sub(r"[<>&$?`\"']", "_", self.uparam["hc"] or "").lstrip("/")
|
@@ -5018,7 +5034,7 @@ class HttpCli(object):
|
|
5018
5034
|
def setck(self) :
|
5019
5035
|
k, v = self.uparam["setck"].split("=", 1)
|
5020
5036
|
t = 0 if v in ("", "x") else 86400 * 299
|
5021
|
-
ck = gencookie(k, v, self.args.R, False, t)
|
5037
|
+
ck = gencookie(k, v, self.args.R, self.args.cookie_lax, False, t)
|
5022
5038
|
self.out_headerlist.append(("Set-Cookie", ck))
|
5023
5039
|
if "cc" in self.ouparam:
|
5024
5040
|
self.redirect("", "?h#cc")
|
@@ -5030,7 +5046,7 @@ class HttpCli(object):
|
|
5030
5046
|
for k in ALL_COOKIES:
|
5031
5047
|
if k not in self.cookies:
|
5032
5048
|
continue
|
5033
|
-
cookie = gencookie(k, "x", self.args.R, False)
|
5049
|
+
cookie = gencookie(k, "x", self.args.R, self.args.cookie_lax, False)
|
5034
5050
|
self.out_headerlist.append(("Set-Cookie", cookie))
|
5035
5051
|
|
5036
5052
|
self.redirect("", "?h#cc")
|
@@ -1951,15 +1951,25 @@ def formatdate(ts = None) :
|
|
1951
1951
|
return RFC2822 % (WKDAYS[wd], d, MONTHS[mo - 1], y, h, mi, s)
|
1952
1952
|
|
1953
1953
|
|
1954
|
-
def gencookie(
|
1954
|
+
def gencookie(
|
1955
|
+
k , v , r , lax , tls , dur = 0, txt = ""
|
1956
|
+
) :
|
1955
1957
|
v = v.replace("%", "%25").replace(";", "%3B")
|
1956
1958
|
if dur:
|
1957
1959
|
exp = formatdate(time.time() + dur)
|
1958
1960
|
else:
|
1959
1961
|
exp = "Fri, 15 Aug 1997 01:00:00 GMT"
|
1960
1962
|
|
1961
|
-
t = "%s=%s; Path=/%s; Expires=%s%s%s; SameSite
|
1962
|
-
return t % (
|
1963
|
+
t = "%s=%s; Path=/%s; Expires=%s%s%s; SameSite=%s"
|
1964
|
+
return t % (
|
1965
|
+
k,
|
1966
|
+
v,
|
1967
|
+
r,
|
1968
|
+
exp,
|
1969
|
+
"; Secure" if tls else "",
|
1970
|
+
txt,
|
1971
|
+
"Lax" if lax else "Strict",
|
1972
|
+
)
|
1963
1973
|
|
1964
1974
|
|
1965
1975
|
def humansize(sz , terse = False) :
|
Binary file
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: copyparty
|
3
|
-
Version: 1.18.
|
3
|
+
Version: 1.18.5
|
4
4
|
Summary: Portable file server with accelerated resumable uploads, deduplication, WebDAV, FTP, zeroconf, media indexer, video thumbnails, audio transcoding, and write-only folders
|
5
5
|
Author-email: ed <copyparty@ocv.me>
|
6
6
|
License: MIT
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|