copyparty 1.16.4__py3-none-any.whl → 1.16.6__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/util.py CHANGED
@@ -943,7 +943,7 @@ class ProgressPrinter(threading.Thread):
943
943
  now = time.time()
944
944
  if msg and now - tp > 10:
945
945
  tp = now
946
- self.log("progress: %s" % (msg,), 6)
946
+ self.log("progress: %r" % (msg,), 6)
947
947
 
948
948
  if no_stdout:
949
949
  continue
@@ -1543,7 +1543,7 @@ class MultipartParser(object):
1543
1543
  (only the fallback non-js uploader relies on these filenames)
1544
1544
  """
1545
1545
  for ln in read_header(self.sr, 2, 2592000):
1546
- self.log(ln)
1546
+ self.log(repr(ln))
1547
1547
 
1548
1548
  m = self.re_ctype.match(ln)
1549
1549
  if m:
@@ -1831,11 +1831,11 @@ def gen_filekey_dbg(
1831
1831
  if p2 != fspath:
1832
1832
  raise Exception()
1833
1833
  except:
1834
- t = "maybe wrong abspath for filekey;\norig: {}\nreal: {}"
1835
- log(t.format(fspath, p2), 1)
1834
+ t = "maybe wrong abspath for filekey;\norig: %r\nreal: %r"
1835
+ log(t % (fspath, p2), 1)
1836
1836
 
1837
- t = "fk({}) salt({}) size({}) inode({}) fspath({}) at({})"
1838
- log(t.format(ret[:8], salt, fsize, inode, fspath, ctx), 5)
1837
+ t = "fk(%s) salt(%s) size(%d) inode(%d) fspath(%r) at(%s)"
1838
+ log(t % (ret[:8], salt, fsize, inode, fspath, ctx), 5)
1839
1839
 
1840
1840
  return ret
1841
1841
 
@@ -2191,7 +2191,7 @@ def log_reloc(
2191
2191
  rem ,
2192
2192
  ) :
2193
2193
  nap, nvp, nfn, (nvn, nrem) = pm
2194
- t = "reloc %s:\nold ap [%s]\nnew ap [%s\033[36m/%s\033[0m]\nold vp [%s]\nnew vp [%s\033[36m/%s\033[0m]\nold fn [%s]\nnew fn [%s]\nold vfs [%s]\nnew vfs [%s]\nold rem [%s]\nnew rem [%s]"
2194
+ t = "reloc %s:\nold ap %r\nnew ap %r\033[36m/%r\033[0m\nold vp %r\nnew vp %r\033[36m/%r\033[0m\nold fn %r\nnew fn %r\nold vfs %r\nnew vfs %r\nold rem %r\nnew rem %r"
2195
2195
  log(t % (re, ap, nap, nfn, vp, nvp, nfn, fn, nfn, vn.vpath, nvn.vpath, rem, nrem))
2196
2196
 
2197
2197
 
@@ -2362,7 +2362,7 @@ def lsof(log , abspath ) :
2362
2362
  try:
2363
2363
  rc, so, se = runcmd([b"lsof", b"-R", fsenc(abspath)], timeout=45)
2364
2364
  zs = (so.strip() + "\n" + se.strip()).strip()
2365
- log("lsof {} = {}\n{}".format(abspath, rc, zs), 3)
2365
+ log("lsof %r = %s\n%s" % (abspath, rc, zs), 3)
2366
2366
  except:
2367
2367
  log("lsof failed; " + min_ex(), 3)
2368
2368
 
@@ -2398,17 +2398,17 @@ def _fs_mvrm(
2398
2398
  for attempt in range(90210):
2399
2399
  try:
2400
2400
  if ino and os.stat(bsrc).st_ino != ino:
2401
- t = "src inode changed; aborting %s %s"
2401
+ t = "src inode changed; aborting %s %r"
2402
2402
  log(t % (act, src), 1)
2403
2403
  return False
2404
2404
  if (dst and not atomic) and os.path.exists(bdst):
2405
- t = "something appeared at dst; aborting rename [%s] ==> [%s]"
2405
+ t = "something appeared at dst; aborting rename %r ==> %r"
2406
2406
  log(t % (src, dst), 1)
2407
2407
  return False
2408
2408
  osfun(*args)
2409
2409
  if attempt:
2410
2410
  now = time.time()
2411
- t = "%sd in %.2f sec, attempt %d: %s"
2411
+ t = "%sd in %.2f sec, attempt %d: %r"
2412
2412
  log(t % (act, now - t0, attempt + 1, src))
2413
2413
  return True
2414
2414
  except OSError as ex:
@@ -2420,7 +2420,7 @@ def _fs_mvrm(
2420
2420
  if not attempt:
2421
2421
  if not PY2:
2422
2422
  ino = os.stat(bsrc).st_ino
2423
- t = "%s failed (err.%d); retrying for %d sec: [%s]"
2423
+ t = "%s failed (err.%d); retrying for %d sec: %r"
2424
2424
  log(t % (act, ex.errno, maxtime + 0.99, src))
2425
2425
 
2426
2426
  time.sleep(chill)
@@ -3445,7 +3445,7 @@ def runhook(
3445
3445
  log, src, cmd, ap, vp, host, uname, perms, mt, sz, ip, at, txt
3446
3446
  )
3447
3447
  if log and args.hook_v:
3448
- log("hook(%s) [%s] => \033[32m%s" % (src, cmd, hr), 6)
3448
+ log("hook(%s) %r => \033[32m%s" % (src, cmd, hr), 6)
3449
3449
  if not hr:
3450
3450
  return {}
3451
3451
  for k, v in hr.items():
Binary file
Binary file
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <title>{{ s_doctitle }}</title>
7
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
+ <meta name="viewport" content="width=device-width, initial-scale=0.8">
9
+ <meta name="theme-color" content="#{{ tcolor }}">
10
+ <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/rups.css?_={{ ts }}">
11
+ <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/ui.css?_={{ ts }}">
12
+ {{ html_head }}
13
+ </head>
14
+
15
+ <body>
16
+ <div id="wrap">
17
+ <a id="a" href="{{ r }}/?ru" class="af">refresh</a>
18
+ <a id="a" href="{{ r }}/?h" class="af">control-panel</a>
19
+ <form method="get" enctype="application/x-www-form-urlencoded" accept-charset="utf-8" action="{{ r }}">
20
+ <input type="hidden" name="ru" value="a" />
21
+ Filter: <input type="text" name="filter" size="20" placeholder="documents/passwords" value="{{ filt }}" />
22
+ <input type="submit" />
23
+ </form>
24
+ <span id="hits"></span>
25
+ <table id="tab"><thead><tr>
26
+ <th>size</th>
27
+ <th>who</th>
28
+ <th>when</th>
29
+ <th>age</th>
30
+ <th>dir</th>
31
+ <th>file</th>
32
+ </tr></thead><tbody>
33
+ {% for vp, evp, sz, ip, at in rows %}
34
+ <tr>
35
+ <td>{{ sz }}</td>
36
+ <td>{{ ip }}</td>
37
+ <td>{{ at }}</td>
38
+ <td>{{ (now-at) }}</td>
39
+ <td></td>
40
+ <td><a href="{{ r }}{{ evp }}">{{ vp|e }}</a></td>
41
+ </tr>
42
+ {% endfor %}
43
+ </tbody></table>
44
+ {% if not rows %}
45
+ (the database is not aware of any uploads)
46
+ {% endif %}
47
+ </div>
48
+ <a href="#" id="repl">π</a>
49
+ <script>
50
+
51
+ var SR = {{ r|tojson }},
52
+ NOW = {{ now }},
53
+ lang="{{ lang }}",
54
+ dfavico="{{ favico }}";
55
+
56
+ var STG = window.localStorage;
57
+ document.documentElement.className = (STG && STG.cpp_thm) || "{{ this.args.theme }}";
58
+
59
+ </script>
60
+ <script src="{{ r }}/.cpr/util.js?_={{ ts }}"></script>
61
+ <script src="{{ r }}/.cpr/rups.js?_={{ ts }}"></script>
62
+ {%- if js %}
63
+ <script src="{{ js }}_={{ ts }}"></script>
64
+ {%- endif %}
65
+ </body>
66
+ </html>
67
+
Binary file
Binary file
copyparty/web/shares.html CHANGED
@@ -58,6 +58,8 @@
58
58
  {% if not rows %}
59
59
  (you don't have any active shares btw)
60
60
  {% endif %}
61
+ </div>
62
+ <a href="#" id="repl">π</a>
61
63
  <script>
62
64
 
63
65
  var SR = {{ r|tojson }},
copyparty/web/splash.html CHANGED
@@ -157,6 +157,7 @@
157
157
  <blockquote id="ad">enabling no304 will disable all caching; try this if k304 wasn't enough. This will waste a huge amount of network traffic!</blockquote></li>
158
158
  {% endif %}
159
159
 
160
+ <li><a id="af" href="{{ r }}/?ru">show recent uploads</a></li>
160
161
  <li><a id="k" href="{{ r }}/?reset" class="r" onclick="localStorage.clear();return true">reset client settings</a></li>
161
162
  </ul>
162
163
 
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>&nbsp;</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>&nbsp;</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
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.16.4
3
+ Version: 1.16.6
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
@@ -103,6 +103,7 @@ turn almost any device into a file server with resumable uploads/downloads using
103
103
  * [shares](#shares) - share a file or folder by creating a temporary link
104
104
  * [batch rename](#batch-rename) - select some files and press `F2` to bring up the rename UI
105
105
  * [rss feeds](#rss-feeds) - monitor a folder with your RSS reader
106
+ * [recent uploads](#recent-uploads) - list all recent uploads
106
107
  * [media player](#media-player) - plays almost every audio format there is
107
108
  * [audio equalizer](#audio-equalizer) - and [dynamic range compressor](https://en.wikipedia.org/wiki/Dynamic_range_compression)
108
109
  * [fix unreliable playback on android](#fix-unreliable-playback-on-android) - due to phone / app settings
@@ -394,6 +395,9 @@ same order here too
394
395
 
395
396
  * [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
397
 
398
+ * [Chrome issue 383568268](https://issues.chromium.org/issues/383568268) -- filereaders in webworkers can OOM / crash the browser-tab
399
+ * copyparty has a workaround which seems to work well enough
400
+
397
401
  * [Firefox issue 1790500](https://bugzilla.mozilla.org/show_bug.cgi?id=1790500) -- entire browser can crash after uploading ~4000 small files
398
402
 
399
403
  * Android: music playback randomly stops due to [battery usage settings](#fix-unreliable-playback-on-android)
@@ -769,7 +773,7 @@ files go into `[ok]` if they exist (and you get a link to where it is), otherwis
769
773
 
770
774
  ### unpost
771
775
 
772
- undo/delete accidental uploads
776
+ undo/delete accidental uploads using the `[🧯]` tab in the UI
773
777
 
774
778
  ![copyparty-unpost-fs8](https://user-images.githubusercontent.com/241032/129635368-3afa6634-c20f-418c-90dc-ec411f3b3897.png)
775
779
 
@@ -928,6 +932,17 @@ url parameters:
928
932
  * uppercase = reverse-sort; `M` = oldest file first
929
933
 
930
934
 
935
+ ## recent uploads
936
+
937
+ list all recent uploads by clicking "show recent uploads" in the controlpanel
938
+
939
+ will show uploader IP and upload-time if the visitor has the admin permission
940
+
941
+ * global-option `--ups-when` makes upload-time visible to all users, and not just admins
942
+
943
+ note that the [🧯 unpost](#unpost) feature is better suited for viewing *your own* recent uploads, as it includes the option to undo/delete them
944
+
945
+
931
946
  ## media player
932
947
 
933
948
  plays almost every audio format there is (if the server has FFmpeg installed for on-demand transcoding)
@@ -1543,7 +1558,9 @@ replace copyparty passwords with oauth and such
1543
1558
 
1544
1559
  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
1560
 
1546
- a popular choice is [Authelia](https://www.authelia.com/) (config-file based), another one is [authentik](https://goauthentik.io/) (GUI-based, more complex)
1561
+ * the regular config-defined users will be used as a fallback for requests which don't include a valid (trusted) IdP username header
1562
+
1563
+ some popular identity providers are [Authelia](https://www.authelia.com/) (config-file based) and [authentik](https://goauthentik.io/) (GUI-based, more complex)
1547
1564
 
1548
1565
  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
1566
 
@@ -1,7 +1,7 @@
1
- copyparty/__init__.py,sha256=iRCNvMPg6k9WG_O2uCtlkD4vWogH8EgP9elp9XwSIJs,2610
2
- copyparty/__main__.py,sha256=fA4D0yAs6twyBcawN9lM7CtHuFagTsQloljWX9MZ1j0,113240
3
- copyparty/__version__.py,sha256=PSHPFmB4WReQ90GVjo2tS3ZE1I6F3Z2igIEoAOtf4ZQ,251
4
- copyparty/authsrv.py,sha256=CIK5OKl38LehdAt4hidCMpsATdJhPABJPkJStpQpp9U,103405
1
+ copyparty/__init__.py,sha256=VR6ZZhB9IxaK5TDXDTBM_OIP5ydkrdbaEnstktLM__s,2649
2
+ copyparty/__main__.py,sha256=acjihZUEvEwFp6d6BnT35oFqminMZBruDUfVU76YijA,113564
3
+ copyparty/__version__.py,sha256=JJ3NgXxnmonfdKeivWXs-b4z3FsuOlq62WbiCAifwR4,252
4
+ copyparty/authsrv.py,sha256=n8lQACRCzKnYlgzNv1RkGehv5qI4soYnyZhNw4IPHxA,104062
5
5
  copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
6
  copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
7
7
  copyparty/broker_thr.py,sha256=fjoYtpSscUA7-nMl4r1n2R7UK3J9lrvLS3rUZ-iJzKQ,1721
@@ -9,30 +9,30 @@ copyparty/broker_util.py,sha256=76mfnFOpX1gUUvtjm8UQI7jpTIaVINX10QonM-B7ggc,1680
9
9
  copyparty/cert.py,sha256=0ZAPeXeMR164vWn9GQU3JDKooYXEq_NOQkDeg543ivg,8009
10
10
  copyparty/cfg.py,sha256=UUmFpFbTm750Nv9RnofS80-FTpWT37EggEtmkE1wbxE,10374
11
11
  copyparty/dxml.py,sha256=lZpg-kn-kQsXRtNY1n6fRaS-b7uXzMCyv8ovKnhZcZc,1548
12
- copyparty/fsutil.py,sha256=5CshJWO7CflfaRRNOb3JxghUH7W5rmS_HWNmKfx42MM,4538
12
+ copyparty/fsutil.py,sha256=IVOFG8zBQPMQDDv7RIStSJHwHiAnVNROZS37O5k465A,4524
13
13
  copyparty/ftpd.py,sha256=T97SFS7JFtvRLbJX8C4fJSYwe13vhN3-E6emtlVmqLA,17608
14
- copyparty/httpcli.py,sha256=hwHJ8EwV30MHZ6hGPGfmCuow5Nu2daMV2EN7Ups5jb8,207704
14
+ copyparty/httpcli.py,sha256=DAi4JrEKCGTMBMjobQZ5d9WpisetKwuXLjZr2z1idpE,212463
15
15
  copyparty/httpconn.py,sha256=mQSgljh0Q-jyWjF4tQLrHbRKRe9WKl19kGqsGMsJpWo,6880
16
- copyparty/httpsrv.py,sha256=PXLZlT6iuJZYG9ajNsAaNgRK3UtS4CrOGFGXOpkRtOk,18235
16
+ copyparty/httpsrv.py,sha256=a_WKCKlN5isIoy8bNdttlQFha_8X_E_cPoToZv2q5Cw,18255
17
17
  copyparty/ico.py,sha256=eWSxEae4wOCfheHl-m-wchYvFRAR_97kJDb4NGaB-Z8,3561
18
18
  copyparty/mdns.py,sha256=G73OWWg1copda47LgayCRK7qjVrk6cnUGpMR5ugmi7o,18315
19
19
  copyparty/metrics.py,sha256=EOIiPOItEQmdK9YgNb75l0kCzanWb6RtJGwMI7ufifY,8966
20
- copyparty/mtag.py,sha256=o-rxu4LajWF4H3HFmfCbXnKfs0GCQh1FQ0XywuW6wOc,19934
20
+ copyparty/mtag.py,sha256=wWWc3BHMRP0u85KvdZpX3Dp4djDgAbXVrL9Pvab4nPQ,19925
21
21
  copyparty/multicast.py,sha256=Ha27l2oATEa-Qo2WOzkeRgjAm6G_YDCfbVJWR-ao2UE,12319
22
22
  copyparty/pwhash.py,sha256=X87RWeay8IhzGVZLDKE5LctF9YVUcYxPAJ1BX6r_9CU,4248
23
- copyparty/smbd.py,sha256=Or7RF13cl1r3ncnpVh8BqyAGqH2Oa04O9iPZWCoB0Bo,14609
23
+ copyparty/smbd.py,sha256=dixFl2wlWymq_Cycc8a4cVB4gY8RSg2e3tE7Xr-aDa0,14614
24
24
  copyparty/ssdp.py,sha256=R1Z61GZOxBMF2Sk4RTxKWMOemogmcjEWG-CvLihd45k,7023
25
25
  copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
26
- copyparty/sutil.py,sha256=JTMrQwcWH85hXB_cKG206eDZ967WZDGaP00AWvl_gB0,3214
26
+ copyparty/sutil.py,sha256=6zEEGl4hRe6bTB83Y_RtnBGxr2JcUa__GdiAMqNJZnY,3208
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=VuW_aVDcyXIhIMZ8I-wpIouX8MI9TGp7KKSRohrMTtk,19897
30
- copyparty/tftpd.py,sha256=FRCALO3PigoBlwUrqxoKHM_xk7wT2O0GPG1TvNRtjOY,13606
31
- copyparty/th_cli.py,sha256=o6FMkerYvAXS455z3DUossVztu_nzFlYSQhs6qN6Jt8,4636
32
- copyparty/th_srv.py,sha256=LBcB4LpsF-H7L52Z0Dhn9LogRjJVPp1GKa8MeIMIBnw,29596
33
- copyparty/u2idx.py,sha256=kF4TE-j78Faq_f4vGh5So5raYDYLt2UDpza6yBA3f54,13687
34
- copyparty/up2k.py,sha256=KQZcpqWRwjvmJLFEo3ejVWDroQi10jQdvgxuASDpUlY,174476
35
- copyparty/util.py,sha256=UyaYXfVO4nOkqhSMi9SZn2zK2W9texb9CL9rsqMak8I,95135
29
+ copyparty/tcpsrv.py,sha256=H7z9tzYRCm-kZwktnm_wP-v2MXaIOygx9yfdk1xkqRo,19889
30
+ copyparty/tftpd.py,sha256=PXgG4rTmiaU_TavSyZWD5cFphdfChs9YvNY21qfExt8,13611
31
+ copyparty/th_cli.py,sha256=1B8el4NNs5cNyJyjOPiAdvLOX2HQXaebsHn6VLdZ_gU,4630
32
+ copyparty/th_srv.py,sha256=uAcz-wZJQEG5KavcZDkwToONZujyoOeC4oCxxKTD5us,29575
33
+ copyparty/u2idx.py,sha256=G6MDbD4I_sJSOwaNFZ6XLTQhnEDrB12pVKuKhzQ_leE,13676
34
+ copyparty/up2k.py,sha256=u7yLOD9ypqTEmA3bMPXqXrvebo7Lq62NjUdSZ_oGw0E,174556
35
+ copyparty/util.py,sha256=qhNakLtygJveVbZUuPvDY7Tm1E48E67CS9XBmosu5i4,95101
36
36
  copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  copyparty/bos/bos.py,sha256=Wb7eWsXJgR5AFlBR9ZOyKrLTwy-Kct9RrGiOu4Jo37Y,1622
38
38
  copyparty/bos/path.py,sha256=yEjCq2ki9CvxA5sCT8pS0keEXwugs0ZeUyUhdBziOCI,777
@@ -71,17 +71,20 @@ copyparty/web/mde.html,sha256=ImBhQAaEUCke2M85QU_fl4X2XQExRLcEzgCEN8RNe9o,1759
71
71
  copyparty/web/mde.js.gz,sha256=kN2eUSvr4mFuksfK4-4LimJmWdwsao39Sea2lWtu8L0,2224
72
72
  copyparty/web/msg.css.gz,sha256=u90fXYAVrMD-jqwf5XFVC1ptSpSHZUe8Mez6PX101P8,300
73
73
  copyparty/web/msg.html,sha256=w9CM3hkLLGJX9fWEaG4gSbTOPe2GcPqW8BpSCDiFzOI,977
74
- copyparty/web/shares.css.gz,sha256=T2fSezuluDVIiNIERAuUREByhHFlIwwNyx7EBOAVVyQ,499
75
- copyparty/web/shares.html,sha256=ZNHtLBM-Y4BX2qa9AGTrZzZp_IP5PLM3QvFMYKolFfM,2494
74
+ copyparty/web/rups.css.gz,sha256=slfIxkdQ4vmYfMw0hlqX9bl-L8MpGsNF8HOIJvYcGWM,674
75
+ copyparty/web/rups.html,sha256=XEdGH-h-McwCXAx7POF0atyyLDUdDeBL0OnM3vBnyzU,2006
76
+ copyparty/web/rups.js.gz,sha256=wVEV-jrXLj0jrrmxtZqTQVpvF9KpDnkvujw6Tx8Bk3o,469
77
+ copyparty/web/shares.css.gz,sha256=SdPlZCBwz9tkPkgEo5pSPDOZSI079njxEfkJ64-iW3c,547
78
+ copyparty/web/shares.html,sha256=IhZnADkNoD_2-zEJnoiMG68iOXB58Ros1UNFVXjEwWE,2535
76
79
  copyparty/web/shares.js.gz,sha256=emeY2-wjkh8x1JgaW6ny5fcC7XpZzZzfE1f-sEyntQ4,940
77
80
  copyparty/web/splash.css.gz,sha256=VxFqPvNdZtWb0u1C_GW2yYwrHq0lqPMitft9GYcv56k,1087
78
- copyparty/web/splash.html,sha256=wc8El8_5BR3EMuVik8WYAkkEQ4S6-VepR1B1F8qAYgI,6190
79
- copyparty/web/splash.js.gz,sha256=EEfsi9YGtPTYRB6MPX8Dfg4YyfqncI9ldJS7_MGVOhs,2710
80
- copyparty/web/svcs.html,sha256=P5YZimYLeQMT0uz6u3clQSNZRc5Zs0Ok-ffcbcGSYuc,11762
81
+ copyparty/web/splash.html,sha256=2iTamber6qv84SvbQzibL-onvRUJwyfthUaFgeYdBRA,6256
82
+ copyparty/web/splash.js.gz,sha256=4VqNznN10-bT33IJm3VWzBEJ1s08XZyxFB1TYPUkuAo,2739
83
+ copyparty/web/svcs.html,sha256=5cAp6RAkvqfDAbO9kxuDgXcmuDH20ZN2fse0uzCXb5s,11564
81
84
  copyparty/web/svcs.js.gz,sha256=k81ZvZ3I-f4fMHKrNGGOgOlvXnCBz0mVjD-8mieoWCA,520
82
85
  copyparty/web/ui.css.gz,sha256=v8U-1tetZzuzTpITjq8NWj1gg3jEiYDIIE8aE0dx63k,2800
83
- copyparty/web/up2k.js.gz,sha256=vB3hLpRZzVStcN2-NAGjFdfroxFPbFvKss4vxVYyy1c,23371
84
- copyparty/web/util.js.gz,sha256=MMDIZbxzBwBYE5eYLzhGGpC7h257oEFZaBKZwJ4uhc8,15077
86
+ copyparty/web/up2k.js.gz,sha256=CC1MM_FBfxpsjgtNWupzCdnlVNI3hBbWbNSCnOSpCTY,23460
87
+ copyparty/web/util.js.gz,sha256=aXgf3U-0TL9Sc7uMQhA_sMyTXLsZCH3YDe8qLJ4hpEM,15082
85
88
  copyparty/web/w.hash.js.gz,sha256=l3GpSJD6mcU-1CRWkIj7PybgbjlfSr8oeO3vortIrQk,1105
86
89
  copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
90
  copyparty/web/a/partyfuse.py,sha256=9p5Hpg_IBiSimv7j9kmPhCGpy-FLXSRUOYnLjJ5JifU,28049
@@ -97,7 +100,7 @@ copyparty/web/deps/busy.mp3.gz,sha256=EVphk1_HYyRKJmtpeK99vbAstF7ub1f9ndu020H8PQ
97
100
  copyparty/web/deps/easymde.css.gz,sha256=vWxfueI64rPikuqFj69wJBtGisqf93AheQtOZqgUI_c,3041
98
101
  copyparty/web/deps/easymde.js.gz,sha256=rHBs4XWQe2bmv7ZzDIk43oxnTwrwpq5laYHhV5sKQQo,77014
99
102
  copyparty/web/deps/fuse.py,sha256=6j4Zy3VpQg629pwwIW77v2LJ1hy-qlyrxwhXfKl9B7I,33426
100
- copyparty/web/deps/marked.js.gz,sha256=3sviQ05gVpZF2s43evtFQZZSMSHV6K3OsS15OoBqb10,22610
103
+ copyparty/web/deps/marked.js.gz,sha256=nay9sv1hlF9Y6ngXuXvE_O-MaTa7vE5OyK05-jjWx7M,22617
101
104
  copyparty/web/deps/mini-fa.css.gz,sha256=CTPrNaH8OTVmxajrGP88E2MkjadY9_81TBVnd9sw9Y8,572
102
105
  copyparty/web/deps/mini-fa.woff,sha256=L9DNncV2TIyvsrspMbJouvnnt7F068Hbn7YZYvN76AU,2784
103
106
  copyparty/web/deps/prism.css.gz,sha256=Z_A6rJ3MN5KWnjvXaV787aTW_5DT-xjFd0YZ7_W-Krk,1468
@@ -106,9 +109,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
106
109
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
107
110
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
108
111
  copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
109
- copyparty-1.16.4.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
110
- copyparty-1.16.4.dist-info/METADATA,sha256=yo6iBPRZrSl4VBK6h32czwBccoFewYTRoSFVaOOYr5s,140656
111
- copyparty-1.16.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
112
- copyparty-1.16.4.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
113
- copyparty-1.16.4.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
114
- copyparty-1.16.4.dist-info/RECORD,,
112
+ copyparty-1.16.6.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
+ copyparty-1.16.6.dist-info/METADATA,sha256=YD_Fomt3BWkdN4PksbjdhOTgjdqO1nDew-_XdTYjiKU,141509
114
+ copyparty-1.16.6.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
115
+ copyparty-1.16.6.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
+ copyparty-1.16.6.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
+ copyparty-1.16.6.dist-info/RECORD,,