copyparty 1.11.0__py3-none-any.whl → 1.11.1__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 CHANGED
@@ -1116,6 +1116,7 @@ def add_safety(ap):
1116
1116
  ap2.add_argument("--ban-url", metavar="N,W,B", type=u, default="9,2,1440", help="hitting more than \033[33mN\033[0m sus URL's in \033[33mW\033[0m minutes = ban for \033[33mB\033[0m minutes; applies only to permissions g/G/h (decent replacement for \033[33m--ban-404\033[0m if that can't be used)")
1117
1117
  ap2.add_argument("--sus-urls", metavar="R", type=u, default=r"\.php$|(^|/)wp-(admin|content|includes)/", help="URLs which are considered sus / eligible for banning; disable with blank or [\033[32mno\033[0m]")
1118
1118
  ap2.add_argument("--nonsus-urls", metavar="R", type=u, default=r"^(favicon\.ico|robots\.txt)$|^apple-touch-icon|^\.well-known", help="harmless URLs ignored from 404-bans; disable with blank or [\033[32mno\033[0m]")
1119
+ ap2.add_argument("--early-ban", action="store_true", help="if a client is banned, reject its connection as soon as possible; not a good idea to enable when proxied behind cloudflare since it could ban your reverse-proxy")
1119
1120
  ap2.add_argument("--aclose", metavar="MIN", type=int, default=10, help="if a client maxes out the server connection limit, downgrade it from connection:keep-alive to connection:close for \033[33mMIN\033[0m minutes (and also kill its active connections) -- disable with 0")
1120
1121
  ap2.add_argument("--loris", metavar="B", type=int, default=60, help="if a client maxes out the server connection limit without sending headers, ban it for \033[33mB\033[0m minutes; disable with [\033[32m0\033[0m]")
1121
1122
  ap2.add_argument("--acao", metavar="V[,V]", type=u, default="*", help="Access-Control-Allow-Origin; list of origins (domains/IPs without port) to accept requests from; [\033[32mhttps://1.2.3.4\033[0m]. Default [\033[32m*\033[0m] allows requests from all sites but removes cookies and http-auth; only ?pw=hunter2 survives")
copyparty/__version__.py CHANGED
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 11, 0)
3
+ VERSION = (1, 11, 1)
4
4
  CODENAME = "You Can (Not) Proceed"
5
- BUILD_DT = (2024, 3, 15)
5
+ BUILD_DT = (2024, 3, 18)
6
6
 
7
7
  S_VERSION = ".".join(map(str, VERSION))
8
8
  S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
copyparty/httpcli.py CHANGED
@@ -224,7 +224,7 @@ class HttpCli(object):
224
224
  "Cache-Control": "no-store, max-age=0",
225
225
  }
226
226
 
227
- if self.is_banned():
227
+ if self.args.early_ban and self.is_banned():
228
228
  return False
229
229
 
230
230
  if self.conn.ipa_nm and not self.conn.ipa_nm.map(self.conn.addr[0]):
@@ -319,9 +319,7 @@ class HttpCli(object):
319
319
  if "." in pip
320
320
  else ":".join(pip.split(":")[:4]) + ":"
321
321
  ) + "0.0/16"
322
- zs2 = (
323
- ' or "--xff-src=lan"' if self.conn.hsrv.xff_lan.map(pip) else ""
324
- )
322
+ zs2 = ' or "--xff-src=lan"' if self.conn.xff_lan.map(pip) else ""
325
323
  self.log(t % (self.args.xff_hdr, pip, cli_ip, zso, zs, zs2), 3)
326
324
  else:
327
325
  self.ip = cli_ip
@@ -492,9 +490,7 @@ class HttpCli(object):
492
490
  else ":".join(pip.split(":")[:4]) + ":"
493
491
  ) + "0.0/16"
494
492
  zs2 = (
495
- ' or "--xff-src=lan"'
496
- if self.conn.hsrv.xff_lan.map(pip)
497
- else ""
493
+ ' or "--xff-src=lan"' if self.conn.xff_lan.map(pip) else ""
498
494
  )
499
495
  self.log(t % (pip, idp_usr, idp_grp, zs, zs2), 3)
500
496
 
@@ -3601,8 +3597,6 @@ class HttpCli(object):
3601
3597
  return ret
3602
3598
 
3603
3599
  def tx_ups(self) :
3604
- have_unpost = self.args.unpost and "e2d" in self.vn.flags
3605
-
3606
3600
  idx = self.conn.get_u2idx()
3607
3601
  if not idx or not hasattr(idx, "p_end"):
3608
3602
  raise Pebkac(500, "sqlite3 is not available on the server; cannot unpost")
@@ -3626,8 +3620,14 @@ class HttpCli(object):
3626
3620
  )
3627
3621
  uret = x.get()
3628
3622
 
3629
- allvols = self.asrv.vfs.all_vols if have_unpost else {}
3630
- for vol in allvols.values():
3623
+ if not self.args.unpost:
3624
+ allvols = []
3625
+ else:
3626
+ allvols = list(self.asrv.vfs.all_vols.values())
3627
+
3628
+ allvols = [x for x in allvols if "e2d" in x.flags]
3629
+
3630
+ for vol in allvols:
3631
3631
  cur = idx.get_cur(vol.realpath)
3632
3632
  if not cur:
3633
3633
  continue
@@ -3679,7 +3679,7 @@ class HttpCli(object):
3679
3679
  for v in ret:
3680
3680
  v["vp"] = self.args.SR + v["vp"]
3681
3681
 
3682
- if not have_unpost:
3682
+ if not allvols:
3683
3683
  ret = [{"kinshi": 1}]
3684
3684
 
3685
3685
  jtxt = '{"u":%s,"c":%s}' % (uret, json.dumps(ret, indent=0))
copyparty/httpconn.py CHANGED
@@ -54,6 +54,7 @@ class HttpConn(object):
54
54
  self.u2fh = hsrv.u2fh # mypy404
55
55
  self.ipa_nm = hsrv.ipa_nm
56
56
  self.xff_nm = hsrv.xff_nm
57
+ self.xff_lan = hsrv.xff_lan # type: ignore
57
58
  self.iphash = hsrv.broker.iphash
58
59
  self.bans = hsrv.bans
59
60
  self.aclose = hsrv.aclose
copyparty/httpsrv.py CHANGED
@@ -100,7 +100,7 @@ class HttpSrv(object):
100
100
  self.t0 = time.time()
101
101
  nsuf = "-n{}-i{:x}".format(nid, os.getpid()) if nid else ""
102
102
  self.magician = Magician()
103
- self.nm = NetMap([], {})
103
+ self.nm = NetMap([], [])
104
104
  self.ssdp = None
105
105
  self.gpwd = Garda(self.args.ban_pw)
106
106
  self.g404 = Garda(self.args.ban_404)
copyparty/tftpd.py CHANGED
@@ -94,8 +94,6 @@ class Tftpd(object):
94
94
  cbak = []
95
95
  if not self.args.tftp_no_fast and not EXE:
96
96
  try:
97
- import inspect
98
-
99
97
  ptn = re.compile(r"(^\s*)log\.debug\(.*\)$")
100
98
  for C in Cs:
101
99
  cbak.append(C.__dict__)
Binary file
Binary file
Binary file
copyparty/web/md.css.gz CHANGED
Binary file
copyparty/web/md.js.gz CHANGED
Binary file
copyparty/web/md2.css.gz CHANGED
Binary file
copyparty/web/md2.js.gz CHANGED
Binary file
copyparty/web/mde.css.gz CHANGED
Binary file
copyparty/web/mde.js.gz CHANGED
Binary file
copyparty/web/msg.css.gz CHANGED
Binary file
Binary file
Binary file
copyparty/web/ui.css.gz CHANGED
Binary file
copyparty/web/up2k.js.gz CHANGED
Binary file
copyparty/web/util.js.gz CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copyparty
3
- Version: 1.11.0
3
+ Version: 1.11.1
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
@@ -129,6 +129,7 @@ turn almost any device into a file server with resumable uploads/downloads using
129
129
  * [themes](#themes)
130
130
  * [complete examples](#complete-examples)
131
131
  * [reverse-proxy](#reverse-proxy) - running copyparty next to other websites
132
+ * [real-ip](#real-ip) - teaching copyparty how to see client IPs
132
133
  * [prometheus](#prometheus) - metrics/stats can be enabled
133
134
  * [packages](#packages) - the party might be closer than you think
134
135
  * [arch package](#arch-package) - now [available on aur](https://aur.archlinux.org/packages/copyparty) maintained by [@icxes](https://github.com/icxes)
@@ -411,6 +412,9 @@ upgrade notes
411
412
  * firefox refuses to connect over https, saying "Secure Connection Failed" or "SEC_ERROR_BAD_SIGNATURE", but the usual button to "Accept the Risk and Continue" is not shown
412
413
  * firefox has corrupted its certstore; fix this by exiting firefox, then find and delete the file named `cert9.db` somewhere in your firefox profile folder
413
414
 
415
+ * the server keeps saying `thank you for playing` when I try to access the website
416
+ * you've gotten banned for malicious traffic! if this happens by mistake, and you're running a reverse-proxy and/or something like cloudflare, see [real-ip](#real-ip) on how to fix this
417
+
414
418
  * copyparty seems to think I am using http, even though the URL is https
415
419
  * your reverse-proxy is not sending the `X-Forwarded-Proto: https` header; this could be because your reverse-proxy itself is confused. Ensure that none of the intermediates (such as cloudflare) are terminating https before the traffic hits your entrypoint
416
420
 
@@ -651,7 +655,7 @@ this initiates an upload using `up2k`; there are two uploaders available:
651
655
  * `[🎈] bup`, the basic uploader, supports almost every browser since netscape 4.0
652
656
  * `[🚀] up2k`, the good / fancy one
653
657
 
654
- NB: you can undo/delete your own uploads with `[🧯]` [unpost](#unpost)
658
+ NB: you can undo/delete your own uploads with `[🧯]` [unpost](#unpost) (and this is also where you abort unfinished uploads, but you have to refresh the page first)
655
659
 
656
660
  up2k has several advantages:
657
661
  * you can drop folders into the browser (files are added recursively)
@@ -1437,6 +1441,15 @@ example webserver configs:
1437
1441
  * [apache2 config](contrib/apache/copyparty.conf) -- location-based
1438
1442
 
1439
1443
 
1444
+ ### real-ip
1445
+
1446
+ teaching copyparty how to see client IPs when running behind a reverse-proxy, or a WAF, or another protection service such as cloudflare
1447
+
1448
+ if you (and maybe everybody else) keep getting a message that says `thank you for playing`, then you've gotten banned for malicious traffic. This ban applies to the IP address that copyparty *thinks* identifies the shady client -- so, depending on your setup, you might have to tell copyparty where to find the correct IP
1449
+
1450
+ for most common setups, there should be a helpful message in the server-log explaining what to do, but see [docs/xff.md](docs/xff.md) if you want to learn more, including a quick hack to **just make it work** (which is **not** recommended, but hey...)
1451
+
1452
+
1440
1453
  ## prometheus
1441
1454
 
1442
1455
  metrics/stats can be enabled at URL `/.cpr/metrics` for grafana / prometheus / etc (openmetrics 1.0.0)
@@ -1,6 +1,6 @@
1
1
  copyparty/__init__.py,sha256=34xcU8AoRRQscgVSx2gC6DeUyu7ZLmEVlXjttdQgXnI,1752
2
- copyparty/__main__.py,sha256=C9Cwy4wn6PGeyJhrKgiDTP0F5XrdAvySDRRifZBFdr8,93422
3
- copyparty/__version__.py,sha256=l9Hi7aMdU7pnyba4sSEeg2FnrNE5umv-fBYCmwEApwA,263
2
+ copyparty/__main__.py,sha256=g7Bc8ULfcXm-VdklVrnhaFP8bXXQrO4dgN5z7joEnEI,93648
3
+ copyparty/__version__.py,sha256=t7CMwcd2WnYMbd2jiG9kC5xZ3t08Ojcs-zat5rSuRDw,263
4
4
  copyparty/authsrv.py,sha256=cP9egYM142f4x4WiwssF8YVFkOlARy4hvQjibzhcD0I,83737
5
5
  copyparty/broker_mp.py,sha256=4mEZC5tiHUazJMgYuwInNo2dxS7jrbzrGb1qs2UBt9k,3948
6
6
  copyparty/broker_mpw.py,sha256=4ZI7bJYOwUibeAJVv9_FPGNmHrr9eOtkj_Kz0JEppTU,3197
@@ -11,9 +11,9 @@ copyparty/cfg.py,sha256=CQKSyixyhxeM2narwbOfjUsjn0DZ_VYXbdMSa_tv4gw,9189
11
11
  copyparty/dxml.py,sha256=lZpg-kn-kQsXRtNY1n6fRaS-b7uXzMCyv8ovKnhZcZc,1548
12
12
  copyparty/fsutil.py,sha256=c4fTvmclKbVABNsjU4rGddsjCgRwi9YExAyo-06ATc8,3932
13
13
  copyparty/ftpd.py,sha256=sNfoGZnO7KxnIovbnSBOt8jiPecUtRK-_izrlZjAtt8,15944
14
- copyparty/httpcli.py,sha256=4NPusHLZvaIUlFeSuTc26UHHbiEOErCmqMkESi25KbU,145627
15
- copyparty/httpconn.py,sha256=vvrLAqyQ_y6mLftflAGl0aI4FBwFbhhleL5lUIHv8wg,6776
16
- copyparty/httpsrv.py,sha256=fM_-7c8PgKIB564K4qFZDWxqkEF8Z9lgi2pp-Tg4o58,16368
14
+ copyparty/httpcli.py,sha256=AVjbUNDAti3OMDDdsEEYeSV25swuy-jQrbuSNc7vbX4,145586
15
+ copyparty/httpconn.py,sha256=gLOURB2Nb1w6n2ihGBspEnzEfUND9Osa4klzYuAbgzI,6829
16
+ copyparty/httpsrv.py,sha256=af6LdApfj-Q4mWC5mVQjhnyrFzNy8_bXK3VUe0xKkeY,16368
17
17
  copyparty/ico.py,sha256=AYHdK6NlYBfBgafVYXia3jHQ9XHZdUL1D8WftLMAzIU,3545
18
18
  copyparty/mdns.py,sha256=CcraggbDxTT1ntYzD8Ebgqmw5Q4HkyZcfh5ymtCV_ak,17469
19
19
  copyparty/metrics.py,sha256=OqXFkAuoVhayGAGd_Sv-OQ9SVmdXYV8M7CxitkzE3lo,8854
@@ -27,7 +27,7 @@ copyparty/sutil.py,sha256=dZhDAzVAp02i6YmGqcedy4LaYVffnJCSp3F6WEwfz7c,2967
27
27
  copyparty/svchub.py,sha256=aG8T0ZoW12sswYOoFYvlgLVtDRLAjsyC7WP3lC2lDzU,30458
28
28
  copyparty/szip.py,sha256=SJg5nzN_5oaIsIYXlRvcLHVTqngLAOPfe4_WVsuhSkw,8520
29
29
  copyparty/tcpsrv.py,sha256=2LGUqOBAIrsmL-1pwrbsPXR71gutHccqRp-hjzt91Us,17289
30
- copyparty/tftpd.py,sha256=kd7luvExFRDbaOCD4Lhg0P3iqhR6VgsbGfnsT-B2rdY,13140
30
+ copyparty/tftpd.py,sha256=5ONxspbOyyaBCUmo1GCfYILRVc2B3uHYGIuHM7HreXE,13104
31
31
  copyparty/th_cli.py,sha256=e2FF-wVY4qcwAO8hrtTlwn3EJIOHyZt5sYhl0N8eudk,4378
32
32
  copyparty/th_srv.py,sha256=HBw6mq0RrJkAJupJpwFAjCMNS67Y9hda6sv7gFSzRwk,25764
33
33
  copyparty/u2idx.py,sha256=JBEqKX1ZM8GIvQrDYb5VQ_5QiFNFsjWF6H9drHlPVEY,12709
@@ -54,31 +54,31 @@ copyparty/stolen/ifaddr/__init__.py,sha256=_BUN7eM5oD2Jgib6B22tEFSb20fD9urNPPaAl
54
54
  copyparty/stolen/ifaddr/_posix.py,sha256=-67NdfGrCktfQPakT2fLbjl2U00QMvyBGkSvrUuTOrU,2626
55
55
  copyparty/stolen/ifaddr/_shared.py,sha256=cJACl8cOxQ-HSYphZTzKMAjAx_TAFyJwUPjfD102Xqw,6111
56
56
  copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8QtZM,4026
57
- copyparty/web/baguettebox.js.gz,sha256=xF0scWtCUTBlc1gAPz4r8RsUMzdLifjvdC9_50k8KNo,7671
58
- copyparty/web/browser.css.gz,sha256=I3gBnNSCDm4xKE9Kjxk-6XxykrymEJQ8t0i-zduTBbo,11434
57
+ copyparty/web/baguettebox.js.gz,sha256=63fwdFjmxwu4uLxfex7S6XHSoBBxwSCDv871TFXJ5i8,7671
58
+ copyparty/web/browser.css.gz,sha256=qNsSKexPMkT5uTC6ADVuE2Z_oKVCbHyfzzIznQcOdvc,11434
59
59
  copyparty/web/browser.html,sha256=uAejLJd11rV_tQx3h2nHnJ1XY6zn1JV-meIAv74Lc8o,4873
60
- copyparty/web/browser.js.gz,sha256=pG7-5Jt8vQNF4HD7M8vmJZOsI0WhQL41ltTd8km6888,66357
60
+ copyparty/web/browser.js.gz,sha256=LM_3CYIowvCedz0klqRG-JvcFY7PzFZHoFuhPoepfS8,66357
61
61
  copyparty/web/browser2.html,sha256=ciQlgr9GWuIapdsRBFNRvRFvN5T_5n920LqDMbsj5-g,1605
62
62
  copyparty/web/cf.html,sha256=lJThtNFNAQT1ClCHHlivAkDGE0LutedwopXD62Z8Nys,589
63
63
  copyparty/web/dbg-audio.js.gz,sha256=Ma-KZtK8LnmiwNvNKFKXMPYl_Nn_3U7GsJ6-DRWC2HE,688
64
- copyparty/web/md.css.gz,sha256=e4lJB7m8YBNcGqmzaGhHJJotAr8p9BVSZFfq9l91Y7c,2032
64
+ copyparty/web/md.css.gz,sha256=t7qPxsL-ETVc-yZhdh8vR1e69vI0f1DX85YLMpNlga4,2032
65
65
  copyparty/web/md.html,sha256=qnJpj_5-MoVYr9j5Rhy7dS40wctqdWbjELmNa-J9cUY,4110
66
- copyparty/web/md.js.gz,sha256=Rv5yG2BPFqQWmSE0WEjv4yS7hH4IPu3BSWXJ2dHmKa0,4179
67
- copyparty/web/md2.css.gz,sha256=vT5BKX3bQ6FAJXdXoZXrFlFeLG4NAn7eVQaX3cYtKXM,699
68
- copyparty/web/md2.js.gz,sha256=4hQj1eFPHhGuYvxyMRUBGGUsPVFUjn-s1pJrrsHXePI,8350
69
- copyparty/web/mde.css.gz,sha256=sbRkUBvBQhM9P2jRAQQRpkrT-w_HRQLbaTCayus9gQY,942
66
+ copyparty/web/md.js.gz,sha256=OMecpy-UHxn8rWM9Bj6BIq0jpjXNHri1A2NLe8de4_E,4179
67
+ copyparty/web/md2.css.gz,sha256=NfHqy77R1TfKn6ZXfthdLb74v1dgcwrDH0dhoH0rbgA,699
68
+ copyparty/web/md2.js.gz,sha256=LI1dxu7-IaF1DMb6_vgqV-5_AiUvGlAq2tkYNYNs6X0,8350
69
+ copyparty/web/mde.css.gz,sha256=QgC399DmXxcCL285jnsbeJH0fKJx-bWhS_PhNjHkMtM,942
70
70
  copyparty/web/mde.html,sha256=FMMq4ySXoOrQV5E836KmQCry3COOhMu0DSstAdJZL_g,1678
71
- copyparty/web/mde.js.gz,sha256=0PO_d8IOwj89U7aJkuqvlI7Q3peMod1sAFJXwzumFFw,2224
72
- copyparty/web/msg.css.gz,sha256=lgtlDrTorYdrfEeOpjeC_yvP8Q0Mi7HIbP2NZT_6LP4,300
71
+ copyparty/web/mde.js.gz,sha256=WkK28WXGGwWuhzeoV0MedaHaHtuXCPnzEx3MMa4qgJ4,2224
72
+ copyparty/web/msg.css.gz,sha256=RHvNHYTne6HuYkS8i6rlJu6jleVUVQut4zgRa--EKbI,300
73
73
  copyparty/web/msg.html,sha256=XDg51WLO7RruZnoFnKpeJ33k47-tBHP3bR7l55Jwre4,896
74
- copyparty/web/splash.css.gz,sha256=orAkM3rnM2db6yPwojur1WVMwitV3Wr0yI4oc0VLH4c,949
74
+ copyparty/web/splash.css.gz,sha256=ImOPcJ4KvuMYYesHvEyKAjMTOrybWNvWtjyMUDOIETU,949
75
75
  copyparty/web/splash.html,sha256=KFAvTnofyVURBQyTnrYwuDdEKN_iGtvdjicn5b33tL8,3822
76
- copyparty/web/splash.js.gz,sha256=JJbE1UJziMWIhKHB7R_6_zqwj6YFgQdBodYnqBWnF7A,1420
76
+ copyparty/web/splash.js.gz,sha256=J8d5JEzEe7absMjw2_5RprS6mc0yduqfUD9aqlbhb5Q,1420
77
77
  copyparty/web/svcs.html,sha256=s7vUSrCrELC3iTemksodRBhQpssO7s4xW1vA-CX6vU8,11702
78
78
  copyparty/web/svcs.js.gz,sha256=k81ZvZ3I-f4fMHKrNGGOgOlvXnCBz0mVjD-8mieoWCA,520
79
- copyparty/web/ui.css.gz,sha256=ukTuS635C4KsmNejS1wo7CAZ-MyF966CQ7nYQ-zrtgU,2616
80
- copyparty/web/up2k.js.gz,sha256=wSUDR8LMFUD7VvLT4dtNeWJ7YLJ_Z9MSwWgk2YYKgoA,22120
81
- copyparty/web/util.js.gz,sha256=b9z1EU77-Vr7KeCGsgAoU2qNG9025IqKVOR49W1DKHw,14368
79
+ copyparty/web/ui.css.gz,sha256=dm7bH5LWyqxHDdLo5azIRdN1P9pULYtJ9a-_iBM4qOM,2616
80
+ copyparty/web/up2k.js.gz,sha256=G2O-0EUj81mmWSMbQ-nnj4UxnQD4X1TskCH9ypAVnSM,22120
81
+ copyparty/web/util.js.gz,sha256=-eCegkkPnAsoj33Rspwy93nyvWeYldon1DMgFoiG_1A,14368
82
82
  copyparty/web/w.hash.js.gz,sha256=__hBMd5oZWfTrb8ZCJNT21isoSqyrxKE6qdaKGQVAhc,1060
83
83
  copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
84
  copyparty/web/a/partyfuse.py,sha256=MuRkaSuYsdfWfBFMOkbPwDXqSvNTw3sd7QhhlKCDZ8I,32311
@@ -101,9 +101,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
101
101
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
102
102
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
103
103
  copyparty/web/deps/sha512.hw.js.gz,sha256=vqoXeracj-99Z5MfY3jK2N4WiSzYQdfjy0RnUlQDhSU,8110
104
- copyparty-1.11.0.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
105
- copyparty-1.11.0.dist-info/METADATA,sha256=yv2hteZeTijEqeSEyM5Dfg7R0w-H_rKD3Nr2okYge1Y,114743
106
- copyparty-1.11.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
107
- copyparty-1.11.0.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
108
- copyparty-1.11.0.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
109
- copyparty-1.11.0.dist-info/RECORD,,
104
+ copyparty-1.11.1.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
105
+ copyparty-1.11.1.dist-info/METADATA,sha256=_nQ2ixAFewk545RfFxWaJ1WZP9IsYoDjh1qbT0hqClA,115911
106
+ copyparty-1.11.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
107
+ copyparty-1.11.1.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
108
+ copyparty-1.11.1.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
109
+ copyparty-1.11.1.dist-info/RECORD,,