copyparty 1.16.3__py3-none-any.whl → 1.16.5__py3-none-any.whl
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/__main__.py +2 -2
- copyparty/__version__.py +2 -2
- copyparty/httpcli.py +8 -11
- copyparty/tcpsrv.py +6 -6
- copyparty/up2k.py +9 -1
- copyparty/web/a/u2c.py +48 -4
- copyparty/web/browser.css.gz +0 -0
- copyparty/web/browser.js.gz +0 -0
- copyparty/web/deps/marked.js.gz +0 -0
- copyparty/web/svcs.html +0 -2
- copyparty/web/up2k.js.gz +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.5.dist-info}/METADATA +7 -2
- {copyparty-1.16.3.dist-info → copyparty-1.16.5.dist-info}/RECORD +17 -17
- {copyparty-1.16.3.dist-info → copyparty-1.16.5.dist-info}/LICENSE +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.5.dist-info}/WHEEL +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.5.dist-info}/entry_points.txt +0 -0
- {copyparty-1.16.3.dist-info → copyparty-1.16.5.dist-info}/top_level.txt +0 -0
copyparty/__main__.py
CHANGED
@@ -1075,7 +1075,7 @@ def add_cert(ap, cert_path):
|
|
1075
1075
|
def add_auth(ap):
|
1076
1076
|
ses_db = os.path.join(E.cfg, "sessions.db")
|
1077
1077
|
ap2 = ap.add_argument_group('IdP / identity provider / user authentication options')
|
1078
|
-
ap2.add_argument("--idp-h-usr", metavar="HN", type=u, default="", help="bypass the copyparty authentication checks
|
1078
|
+
ap2.add_argument("--idp-h-usr", metavar="HN", type=u, default="", help="bypass the copyparty authentication checks if the request-header \033[33mHN\033[0m contains a username to associate the request with (for use with authentik/oauth/...)\n\033[1;31mWARNING:\033[0m if you enable this, make sure clients are unable to specify this header themselves; must be washed away and replaced by a reverse-proxy")
|
1079
1079
|
ap2.add_argument("--idp-h-grp", metavar="HN", type=u, default="", help="assume the request-header \033[33mHN\033[0m contains the groupname of the requesting user; can be referenced in config files for group-based access control")
|
1080
1080
|
ap2.add_argument("--idp-h-key", metavar="HN", type=u, default="", help="optional but recommended safeguard; your reverse-proxy will insert a secret header named \033[33mHN\033[0m into all requests, and the other IdP headers will be ignored if this header is not present")
|
1081
1081
|
ap2.add_argument("--idp-gsep", metavar="RE", type=u, default="|:;+,", help="if there are multiple groups in \033[33m--idp-h-grp\033[0m, they are separated by one of the characters in \033[33mRE\033[0m")
|
@@ -1729,7 +1729,7 @@ def main(argv = None) :
|
|
1729
1729
|
except:
|
1730
1730
|
lprint("\nfailed to disable quick-edit-mode:\n" + min_ex() + "\n")
|
1731
1731
|
|
1732
|
-
if al.ansi:
|
1732
|
+
if not al.ansi:
|
1733
1733
|
al.wintitle = ""
|
1734
1734
|
|
1735
1735
|
# propagate implications
|
copyparty/__version__.py
CHANGED
copyparty/httpcli.py
CHANGED
@@ -537,8 +537,14 @@ class HttpCli(object):
|
|
537
537
|
except:
|
538
538
|
pass
|
539
539
|
|
540
|
+
self.pw = uparam.get("pw") or self.headers.get("pw") or bauth or cookie_pw
|
541
|
+
self.uname = (
|
542
|
+
self.asrv.sesa.get(self.pw)
|
543
|
+
or self.asrv.iacct.get(self.asrv.ah.hash(self.pw))
|
544
|
+
or "*"
|
545
|
+
)
|
546
|
+
|
540
547
|
if self.args.idp_h_usr:
|
541
|
-
self.pw = ""
|
542
548
|
idp_usr = self.headers.get(self.args.idp_h_usr) or ""
|
543
549
|
if idp_usr:
|
544
550
|
idp_grp = (
|
@@ -583,20 +589,11 @@ class HttpCli(object):
|
|
583
589
|
idp_grp = ""
|
584
590
|
|
585
591
|
if idp_usr in self.asrv.vfs.aread:
|
592
|
+
self.pw = ""
|
586
593
|
self.uname = idp_usr
|
587
594
|
self.html_head += "<script>var is_idp=1</script>\n"
|
588
595
|
else:
|
589
596
|
self.log("unknown username: [%s]" % (idp_usr), 1)
|
590
|
-
self.uname = "*"
|
591
|
-
else:
|
592
|
-
self.uname = "*"
|
593
|
-
else:
|
594
|
-
self.pw = uparam.get("pw") or self.headers.get("pw") or bauth or cookie_pw
|
595
|
-
self.uname = (
|
596
|
-
self.asrv.sesa.get(self.pw)
|
597
|
-
or self.asrv.iacct.get(self.asrv.ah.hash(self.pw))
|
598
|
-
or "*"
|
599
|
-
)
|
600
597
|
|
601
598
|
if self.args.ipu and self.uname == "*":
|
602
599
|
self.uname = self.conn.ipu_iu[self.conn.ipu_nm.map(self.ip)]
|
copyparty/tcpsrv.py
CHANGED
@@ -399,17 +399,17 @@ class TcpSrv(object):
|
|
399
399
|
if not netdevs:
|
400
400
|
continue
|
401
401
|
|
402
|
-
|
403
|
-
|
402
|
+
add = []
|
403
|
+
rem = []
|
404
404
|
for k, v in netdevs.items():
|
405
405
|
if k not in self.netdevs:
|
406
|
-
added = "
|
406
|
+
add.append("\n added %s = %s" % (k, v))
|
407
407
|
for k, v in self.netdevs.items():
|
408
408
|
if k not in netdevs:
|
409
|
-
|
409
|
+
rem.append("\nremoved %s = %s" % (k, v))
|
410
410
|
|
411
|
-
t = "network change detected:\
|
412
|
-
self.log("tcpsrv", t.
|
411
|
+
t = "network change detected:\033[32m%s\033[33m%s"
|
412
|
+
self.log("tcpsrv", t % ("".join(add), "".join(rem)), 3)
|
413
413
|
self.netdevs = netdevs
|
414
414
|
self._distribute_netdevs()
|
415
415
|
|
copyparty/up2k.py
CHANGED
@@ -3077,7 +3077,8 @@ class Up2k(object):
|
|
3077
3077
|
if cur:
|
3078
3078
|
dupe = (cj["prel"], cj["name"], cj["lmod"])
|
3079
3079
|
try:
|
3080
|
-
self.dupesched[src]
|
3080
|
+
if dupe not in self.dupesched[src]:
|
3081
|
+
self.dupesched[src].append(dupe)
|
3081
3082
|
except:
|
3082
3083
|
self.dupesched[src] = [dupe]
|
3083
3084
|
|
@@ -4652,6 +4653,13 @@ class Up2k(object):
|
|
4652
4653
|
t = "forgetting partial upload {} ({})"
|
4653
4654
|
p = self._vis_job_progress(job)
|
4654
4655
|
self.log(t.format(wark, p))
|
4656
|
+
|
4657
|
+
src = djoin(ptop, vrem)
|
4658
|
+
zi = len(self.dupesched.pop(src, []))
|
4659
|
+
if zi:
|
4660
|
+
t = "...and forgetting %d links in dupesched"
|
4661
|
+
self.log(t % (zi,))
|
4662
|
+
|
4655
4663
|
assert wark
|
4656
4664
|
del reg[wark]
|
4657
4665
|
|
copyparty/web/a/u2c.py
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env python3
|
2
2
|
from __future__ import print_function, unicode_literals
|
3
3
|
|
4
|
-
S_VERSION = "2.
|
5
|
-
S_BUILD_DT = "2024-
|
4
|
+
S_VERSION = "2.7"
|
5
|
+
S_BUILD_DT = "2024-12-06"
|
6
6
|
|
7
7
|
"""
|
8
8
|
u2c.py: upload to copyparty
|
@@ -1031,8 +1031,8 @@ class Ctl(object):
|
|
1031
1031
|
handshake(self.ar, file, False)
|
1032
1032
|
|
1033
1033
|
def _fancy(self):
|
1034
|
+
atexit.register(self.cleanup_vt100)
|
1034
1035
|
if VT100 and not self.ar.ns:
|
1035
|
-
atexit.register(self.cleanup_vt100)
|
1036
1036
|
ss.scroll_region(3)
|
1037
1037
|
|
1038
1038
|
Daemon(self.hasher)
|
@@ -1040,6 +1040,7 @@ class Ctl(object):
|
|
1040
1040
|
Daemon(self.handshaker)
|
1041
1041
|
Daemon(self.uploader)
|
1042
1042
|
|
1043
|
+
last_sp = -1
|
1043
1044
|
while True:
|
1044
1045
|
with self.exit_cond:
|
1045
1046
|
self.exit_cond.wait(0.07)
|
@@ -1078,6 +1079,12 @@ class Ctl(object):
|
|
1078
1079
|
else:
|
1079
1080
|
txt = " "
|
1080
1081
|
|
1082
|
+
if not VT100: # OSC9;4 (taskbar-progress)
|
1083
|
+
sp = int(self.up_b * 100 / self.nbytes) or 1
|
1084
|
+
if last_sp != sp:
|
1085
|
+
last_sp = sp
|
1086
|
+
txt += "\033]9;4;1;%d\033\\" % (sp,)
|
1087
|
+
|
1081
1088
|
if not self.up_br:
|
1082
1089
|
spd = self.hash_b / ((time.time() - self.t0) or 1)
|
1083
1090
|
eta = (self.nbytes - self.hash_b) / (spd or 1)
|
@@ -1095,6 +1102,8 @@ class Ctl(object):
|
|
1095
1102
|
tail = "\033[K\033[u" if VT100 and not self.ar.ns else "\r"
|
1096
1103
|
|
1097
1104
|
t = "%s eta @ %s/s, %s, %d# left\033[K" % (self.eta, spd, sleft, nleft)
|
1105
|
+
if not self.hash_b:
|
1106
|
+
t = " now hashing..."
|
1098
1107
|
eprint(txt + "\033]0;{0}\033\\\r{0}{1}".format(t, tail))
|
1099
1108
|
|
1100
1109
|
if self.ar.wlist:
|
@@ -1115,7 +1124,10 @@ class Ctl(object):
|
|
1115
1124
|
handshake(self.ar, file, False)
|
1116
1125
|
|
1117
1126
|
def cleanup_vt100(self):
|
1118
|
-
|
1127
|
+
if VT100:
|
1128
|
+
ss.scroll_region(None)
|
1129
|
+
else:
|
1130
|
+
eprint("\033]9;4;0\033\\")
|
1119
1131
|
eprint("\033[J\033]0;\033\\")
|
1120
1132
|
|
1121
1133
|
def cb_hasher(self, file, ofs):
|
@@ -1536,6 +1548,38 @@ source file/folder selection uses rsync syntax, meaning that:
|
|
1536
1548
|
except:
|
1537
1549
|
pass
|
1538
1550
|
|
1551
|
+
# msys2 doesn't uncygpath absolute paths with whitespace
|
1552
|
+
if not VT100:
|
1553
|
+
zsl = []
|
1554
|
+
for fn in ar.files:
|
1555
|
+
if re.search("^/[a-z]/", fn):
|
1556
|
+
fn = r"%s:\%s" % (fn[1:2], fn[3:])
|
1557
|
+
zsl.append(fn.replace("/", "\\"))
|
1558
|
+
ar.files = zsl
|
1559
|
+
|
1560
|
+
fok = []
|
1561
|
+
fng = []
|
1562
|
+
for fn in ar.files:
|
1563
|
+
if os.path.exists(fn):
|
1564
|
+
fok.append(fn)
|
1565
|
+
elif VT100:
|
1566
|
+
fng.append(fn)
|
1567
|
+
else:
|
1568
|
+
# windows leaves glob-expansion to the invoked process... okayyy let's get to work
|
1569
|
+
from glob import glob
|
1570
|
+
|
1571
|
+
fns = glob(fn)
|
1572
|
+
if fns:
|
1573
|
+
fok.extend(fns)
|
1574
|
+
else:
|
1575
|
+
fng.append(fn)
|
1576
|
+
|
1577
|
+
if fng:
|
1578
|
+
t = "some files/folders were not found:\n %s"
|
1579
|
+
raise Exception(t % ("\n ".join(fng),))
|
1580
|
+
|
1581
|
+
ar.files = fok
|
1582
|
+
|
1539
1583
|
if ar.drd:
|
1540
1584
|
ar.dr = True
|
1541
1585
|
|
copyparty/web/browser.css.gz
CHANGED
Binary file
|
copyparty/web/browser.js.gz
CHANGED
Binary file
|
copyparty/web/deps/marked.js.gz
CHANGED
Binary file
|
copyparty/web/svcs.html
CHANGED
@@ -53,7 +53,6 @@
|
|
53
53
|
{% if s %}
|
54
54
|
<li>running <code>rclone mount</code> on LAN (or just dont have valid certificates)? add <code>--no-check-certificate</code></li>
|
55
55
|
{% endif %}
|
56
|
-
<li>running <code>rclone mount</code> as root? add <code>--allow-other</code></li>
|
57
56
|
<li>old version of rclone? replace all <code>=</code> with <code> </code> (space)</li>
|
58
57
|
</ul>
|
59
58
|
|
@@ -137,7 +136,6 @@
|
|
137
136
|
{% if args.ftps %}
|
138
137
|
<li>running on LAN (or just dont have valid certificates)? add <code>no_check_certificate=true</code> to the config command</li>
|
139
138
|
{% endif %}
|
140
|
-
<li>running <code>rclone mount</code> as root? add <code>--allow-other</code></li>
|
141
139
|
<li>old version of rclone? replace all <code>=</code> with <code> </code> (space)</li>
|
142
140
|
</ul>
|
143
141
|
<p>if you want to use the native FTP client in windows instead (please dont), press <code>win+R</code> and run this command:</p>
|
copyparty/web/up2k.js.gz
CHANGED
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: copyparty
|
3
|
-
Version: 1.16.
|
3
|
+
Version: 1.16.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
|
@@ -394,6 +394,9 @@ same order here too
|
|
394
394
|
|
395
395
|
* [Chrome issue 1352210](https://bugs.chromium.org/p/chromium/issues/detail?id=1352210) -- plaintext http may be faster at filehashing than https (but also extremely CPU-intensive)
|
396
396
|
|
397
|
+
* [Chrome issue 383568268](https://issues.chromium.org/issues/383568268) -- filereaders in webworkers can OOM / crash the browser-tab
|
398
|
+
* copyparty has a workaround which seems to work well enough
|
399
|
+
|
397
400
|
* [Firefox issue 1790500](https://bugzilla.mozilla.org/show_bug.cgi?id=1790500) -- entire browser can crash after uploading ~4000 small files
|
398
401
|
|
399
402
|
* Android: music playback randomly stops due to [battery usage settings](#fix-unreliable-playback-on-android)
|
@@ -1543,7 +1546,9 @@ replace copyparty passwords with oauth and such
|
|
1543
1546
|
|
1544
1547
|
you can disable the built-in password-based login system, and instead replace it with a separate piece of software (an identity provider) which will then handle authenticating / authorizing of users; this makes it possible to login with passkeys / fido2 / webauthn / yubikey / ldap / active directory / oauth / many other single-sign-on contraptions
|
1545
1548
|
|
1546
|
-
a
|
1549
|
+
* the regular config-defined users will be used as a fallback for requests which don't include a valid (trusted) IdP username header
|
1550
|
+
|
1551
|
+
some popular identity providers are [Authelia](https://www.authelia.com/) (config-file based) and [authentik](https://goauthentik.io/) (GUI-based, more complex)
|
1547
1552
|
|
1548
1553
|
there is a [docker-compose example](./docs/examples/docker/idp-authelia-traefik) which is hopefully a good starting point (alternatively see [./docs/idp.md](./docs/idp.md) if you're the DIY type)
|
1549
1554
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
copyparty/__init__.py,sha256=iRCNvMPg6k9WG_O2uCtlkD4vWogH8EgP9elp9XwSIJs,2610
|
2
|
-
copyparty/__main__.py,sha256=
|
3
|
-
copyparty/__version__.py,sha256=
|
2
|
+
copyparty/__main__.py,sha256=QMgJweEFGzSHpKE54CcJe2sIHwwa8Kf3NRQqch58h0Q,113241
|
3
|
+
copyparty/__version__.py,sha256=qn_oNmlkJlFLhCQtoyBt5ojEXnzjKAyGucJ0Y9SRkSU,252
|
4
4
|
copyparty/authsrv.py,sha256=CIK5OKl38LehdAt4hidCMpsATdJhPABJPkJStpQpp9U,103405
|
5
5
|
copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
|
6
6
|
copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
|
@@ -11,7 +11,7 @@ copyparty/cfg.py,sha256=UUmFpFbTm750Nv9RnofS80-FTpWT37EggEtmkE1wbxE,10374
|
|
11
11
|
copyparty/dxml.py,sha256=lZpg-kn-kQsXRtNY1n6fRaS-b7uXzMCyv8ovKnhZcZc,1548
|
12
12
|
copyparty/fsutil.py,sha256=5CshJWO7CflfaRRNOb3JxghUH7W5rmS_HWNmKfx42MM,4538
|
13
13
|
copyparty/ftpd.py,sha256=T97SFS7JFtvRLbJX8C4fJSYwe13vhN3-E6emtlVmqLA,17608
|
14
|
-
copyparty/httpcli.py,sha256=
|
14
|
+
copyparty/httpcli.py,sha256=DRE8V3YxUk7YIBGSnmuH0px1ZSqtJciY15k1Rk8ThBI,207587
|
15
15
|
copyparty/httpconn.py,sha256=mQSgljh0Q-jyWjF4tQLrHbRKRe9WKl19kGqsGMsJpWo,6880
|
16
16
|
copyparty/httpsrv.py,sha256=PXLZlT6iuJZYG9ajNsAaNgRK3UtS4CrOGFGXOpkRtOk,18235
|
17
17
|
copyparty/ico.py,sha256=eWSxEae4wOCfheHl-m-wchYvFRAR_97kJDb4NGaB-Z8,3561
|
@@ -26,12 +26,12 @@ copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
|
|
26
26
|
copyparty/sutil.py,sha256=JTMrQwcWH85hXB_cKG206eDZ967WZDGaP00AWvl_gB0,3214
|
27
27
|
copyparty/svchub.py,sha256=sAHkiPGzzKACLqKlem2V-bps9Xh-wHlcfwaNywxcd5A,40877
|
28
28
|
copyparty/szip.py,sha256=HFtnwOiBgx0HMLUf-h_T84zSlRijPxmhRo5PM613kRA,8602
|
29
|
-
copyparty/tcpsrv.py,sha256=
|
29
|
+
copyparty/tcpsrv.py,sha256=H7z9tzYRCm-kZwktnm_wP-v2MXaIOygx9yfdk1xkqRo,19889
|
30
30
|
copyparty/tftpd.py,sha256=FRCALO3PigoBlwUrqxoKHM_xk7wT2O0GPG1TvNRtjOY,13606
|
31
31
|
copyparty/th_cli.py,sha256=o6FMkerYvAXS455z3DUossVztu_nzFlYSQhs6qN6Jt8,4636
|
32
32
|
copyparty/th_srv.py,sha256=LBcB4LpsF-H7L52Z0Dhn9LogRjJVPp1GKa8MeIMIBnw,29596
|
33
33
|
copyparty/u2idx.py,sha256=kF4TE-j78Faq_f4vGh5So5raYDYLt2UDpza6yBA3f54,13687
|
34
|
-
copyparty/up2k.py,sha256=
|
34
|
+
copyparty/up2k.py,sha256=KQZcpqWRwjvmJLFEo3ejVWDroQi10jQdvgxuASDpUlY,174476
|
35
35
|
copyparty/util.py,sha256=UyaYXfVO4nOkqhSMi9SZn2zK2W9texb9CL9rsqMak8I,95135
|
36
36
|
copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
37
|
copyparty/bos/bos.py,sha256=Wb7eWsXJgR5AFlBR9ZOyKrLTwy-Kct9RrGiOu4Jo37Y,1622
|
@@ -55,9 +55,9 @@ copyparty/stolen/ifaddr/_posix.py,sha256=-67NdfGrCktfQPakT2fLbjl2U00QMvyBGkSvrUu
|
|
55
55
|
copyparty/stolen/ifaddr/_shared.py,sha256=uNC4SdEIgdSLKvuUzsf1aM-H1Xrc_9mpLoOT43YukGs,6206
|
56
56
|
copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8QtZM,4026
|
57
57
|
copyparty/web/baguettebox.js.gz,sha256=_amC3ipOrXKEFz8DsVP-JEl49VjMQYiKyF78eWfG-uk,7965
|
58
|
-
copyparty/web/browser.css.gz,sha256=
|
58
|
+
copyparty/web/browser.css.gz,sha256=kurx_iA-KxLYx8PqJsn0bJVjkAxP-0YTOHSV9l_oouo,11645
|
59
59
|
copyparty/web/browser.html,sha256=KCkZ_LwzQnj9xhXKYptAxp6W3nVGiDoSJ4ioZDo7rQ0,4827
|
60
|
-
copyparty/web/browser.js.gz,sha256=
|
60
|
+
copyparty/web/browser.js.gz,sha256=7YbcHLByMAc71j3nKKUrCEExAzfenYnHPBSrnJ8iJFA,89833
|
61
61
|
copyparty/web/browser2.html,sha256=NRUZ08GH-e2YcGXcoz0UjYg6JIVF42u4IMX4HHwWTmg,1587
|
62
62
|
copyparty/web/cf.html,sha256=lJThtNFNAQT1ClCHHlivAkDGE0LutedwopXD62Z8Nys,589
|
63
63
|
copyparty/web/dbg-audio.js.gz,sha256=Ma-KZtK8LnmiwNvNKFKXMPYl_Nn_3U7GsJ6-DRWC2HE,688
|
@@ -77,15 +77,15 @@ copyparty/web/shares.js.gz,sha256=emeY2-wjkh8x1JgaW6ny5fcC7XpZzZzfE1f-sEyntQ4,94
|
|
77
77
|
copyparty/web/splash.css.gz,sha256=VxFqPvNdZtWb0u1C_GW2yYwrHq0lqPMitft9GYcv56k,1087
|
78
78
|
copyparty/web/splash.html,sha256=wc8El8_5BR3EMuVik8WYAkkEQ4S6-VepR1B1F8qAYgI,6190
|
79
79
|
copyparty/web/splash.js.gz,sha256=EEfsi9YGtPTYRB6MPX8Dfg4YyfqncI9ldJS7_MGVOhs,2710
|
80
|
-
copyparty/web/svcs.html,sha256=
|
80
|
+
copyparty/web/svcs.html,sha256=5cAp6RAkvqfDAbO9kxuDgXcmuDH20ZN2fse0uzCXb5s,11564
|
81
81
|
copyparty/web/svcs.js.gz,sha256=k81ZvZ3I-f4fMHKrNGGOgOlvXnCBz0mVjD-8mieoWCA,520
|
82
82
|
copyparty/web/ui.css.gz,sha256=v8U-1tetZzuzTpITjq8NWj1gg3jEiYDIIE8aE0dx63k,2800
|
83
|
-
copyparty/web/up2k.js.gz,sha256=
|
83
|
+
copyparty/web/up2k.js.gz,sha256=0keU0ljh9B41VsoVMpi-NtuYjtGl00xUgNH20CIbz8Y,23449
|
84
84
|
copyparty/web/util.js.gz,sha256=MMDIZbxzBwBYE5eYLzhGGpC7h257oEFZaBKZwJ4uhc8,15077
|
85
85
|
copyparty/web/w.hash.js.gz,sha256=l3GpSJD6mcU-1CRWkIj7PybgbjlfSr8oeO3vortIrQk,1105
|
86
86
|
copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
87
|
copyparty/web/a/partyfuse.py,sha256=9p5Hpg_IBiSimv7j9kmPhCGpy-FLXSRUOYnLjJ5JifU,28049
|
88
|
-
copyparty/web/a/u2c.py,sha256=
|
88
|
+
copyparty/web/a/u2c.py,sha256=1XcH5XfC2UuGrpTnLVHCe4KFU0Vl6uC02CZz04rvKOc,51612
|
89
89
|
copyparty/web/a/webdav-cfg.bat,sha256=Y4NoGZlksAIg4cBMb7KdJrpKC6Nx97onaTl6yMjaimk,1449
|
90
90
|
copyparty/web/dd/2.png,sha256=gJ14XFPzaw95L6z92fSq9eMPikSQyu-03P1lgiGe0_I,258
|
91
91
|
copyparty/web/dd/3.png,sha256=4lho8Koz5tV7jJ4ODo6GMTScZfkqsT05yp48EDFIlyg,252
|
@@ -97,7 +97,7 @@ copyparty/web/deps/busy.mp3.gz,sha256=EVphk1_HYyRKJmtpeK99vbAstF7ub1f9ndu020H8PQ
|
|
97
97
|
copyparty/web/deps/easymde.css.gz,sha256=vWxfueI64rPikuqFj69wJBtGisqf93AheQtOZqgUI_c,3041
|
98
98
|
copyparty/web/deps/easymde.js.gz,sha256=rHBs4XWQe2bmv7ZzDIk43oxnTwrwpq5laYHhV5sKQQo,77014
|
99
99
|
copyparty/web/deps/fuse.py,sha256=6j4Zy3VpQg629pwwIW77v2LJ1hy-qlyrxwhXfKl9B7I,33426
|
100
|
-
copyparty/web/deps/marked.js.gz,sha256=
|
100
|
+
copyparty/web/deps/marked.js.gz,sha256=nay9sv1hlF9Y6ngXuXvE_O-MaTa7vE5OyK05-jjWx7M,22617
|
101
101
|
copyparty/web/deps/mini-fa.css.gz,sha256=CTPrNaH8OTVmxajrGP88E2MkjadY9_81TBVnd9sw9Y8,572
|
102
102
|
copyparty/web/deps/mini-fa.woff,sha256=L9DNncV2TIyvsrspMbJouvnnt7F068Hbn7YZYvN76AU,2784
|
103
103
|
copyparty/web/deps/prism.css.gz,sha256=Z_A6rJ3MN5KWnjvXaV787aTW_5DT-xjFd0YZ7_W-Krk,1468
|
@@ -106,9 +106,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
|
|
106
106
|
copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
|
107
107
|
copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
|
108
108
|
copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
|
109
|
-
copyparty-1.16.
|
110
|
-
copyparty-1.16.
|
111
|
-
copyparty-1.16.
|
112
|
-
copyparty-1.16.
|
113
|
-
copyparty-1.16.
|
114
|
-
copyparty-1.16.
|
109
|
+
copyparty-1.16.5.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
|
110
|
+
copyparty-1.16.5.dist-info/METADATA,sha256=GZhzGQ_TCgJ9upH18-bjepyQPkFI5pK7EL64w7SWSD0,140992
|
111
|
+
copyparty-1.16.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
112
|
+
copyparty-1.16.5.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
|
113
|
+
copyparty-1.16.5.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
|
114
|
+
copyparty-1.16.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|