copyparty 1.15.5__py3-none-any.whl → 1.15.7__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copyparty
3
- Version: 1.15.5
3
+ Version: 1.15.7
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
@@ -134,12 +134,14 @@ turn almost any device into a file server with resumable uploads/downloads using
134
134
  * [event hooks](#event-hooks) - trigger a program on uploads, renames etc ([examples](./bin/hooks/))
135
135
  * [upload events](#upload-events) - the older, more powerful approach ([examples](./bin/mtag/))
136
136
  * [handlers](#handlers) - redefine behavior with plugins ([examples](./bin/handlers/))
137
+ * [ip auth](#ip-auth) - autologin based on IP range (CIDR)
137
138
  * [identity providers](#identity-providers) - replace copyparty passwords with oauth and such
138
139
  * [user-changeable passwords](#user-changeable-passwords) - if permitted, users can change their own passwords
139
140
  * [using the cloud as storage](#using-the-cloud-as-storage) - connecting to an aws s3 bucket and similar
140
- * [hiding from google](#hiding-from-google) - tell search engines you dont wanna be indexed
141
+ * [hiding from google](#hiding-from-google) - tell search engines you don't wanna be indexed
141
142
  * [themes](#themes)
142
143
  * [complete examples](#complete-examples)
144
+ * [listen on port 80 and 443](#listen-on-port-80-and-443) - become a *real* webserver
143
145
  * [reverse-proxy](#reverse-proxy) - running copyparty next to other websites
144
146
  * [real-ip](#real-ip) - teaching copyparty how to see client IPs
145
147
  * [prometheus](#prometheus) - metrics/stats can be enabled
@@ -168,7 +170,7 @@ turn almost any device into a file server with resumable uploads/downloads using
168
170
  * [https](#https) - both HTTP and HTTPS are accepted
169
171
  * [recovering from crashes](#recovering-from-crashes)
170
172
  * [client crashes](#client-crashes)
171
- * [frefox wsod](#frefox-wsod) - firefox 87 can crash during uploads
173
+ * [firefox wsod](#firefox-wsod) - firefox 87 can crash during uploads
172
174
  * [HTTP API](#HTTP-API) - see [devnotes](./docs/devnotes.md#http-api)
173
175
  * [dependencies](#dependencies) - mandatory deps
174
176
  * [optional dependencies](#optional-dependencies) - install these to enable bonus features
@@ -635,7 +637,7 @@ it does static images with Pillow / pyvips / FFmpeg, and uses FFmpeg for video f
635
637
  * pyvips is 3x faster than Pillow, Pillow is 3x faster than FFmpeg
636
638
  * disable thumbnails for specific volumes with volflag `dthumb` for all, or `dvthumb` / `dathumb` / `dithumb` for video/audio/images only
637
639
 
638
- audio files are covnerted into spectrograms using FFmpeg unless you `--no-athumb` (and some FFmpeg builds may need `--th-ff-swr`)
640
+ audio files are converted into spectrograms using FFmpeg unless you `--no-athumb` (and some FFmpeg builds may need `--th-ff-swr`)
639
641
 
640
642
  images with the following names (see `--th-covers`) become the thumbnail of the folder they're in: `folder.png`, `folder.jpg`, `cover.png`, `cover.jpg`
641
643
  * the order is significant, so if both `cover.png` and `folder.jpg` exist in a folder, it will pick the first matching `--th-covers` entry (`folder.jpg`)
@@ -721,7 +723,7 @@ see [up2k](./docs/devnotes.md#up2k) for details on how it works, or watch a [dem
721
723
 
722
724
  **protip:** if you enable `favicon` in the `[⚙️] settings` tab (by typing something into the textbox), the icon in the browser tab will indicate upload progress -- also, the `[🔔]` and/or `[🔊]` switches enable visible and/or audible notifications on upload completion
723
725
 
724
- the up2k UI is the epitome of polished inutitive experiences:
726
+ the up2k UI is the epitome of polished intuitive experiences:
725
727
  * "parallel uploads" specifies how many chunks to upload at the same time
726
728
  * `[🏃]` analysis of other files should continue while one is uploading
727
729
  * `[🥔]` shows a simpler UI for faster uploads from slow devices
@@ -770,7 +772,7 @@ you can unpost even if you don't have regular move/delete access, however only f
770
772
 
771
773
  ### self-destruct
772
774
 
773
- uploads can be given a lifetime, afer which they expire / self-destruct
775
+ uploads can be given a lifetime, after which they expire / self-destruct
774
776
 
775
777
  the feature must be enabled per-volume with the `lifetime` [upload rule](#upload-rules) which sets the upper limit for how long a file gets to stay on the server
776
778
 
@@ -797,7 +799,7 @@ the control-panel shows the ETA for all incoming files , but only for files bei
797
799
 
798
800
  cut/paste, rename, and delete files/folders (if you have permission)
799
801
 
800
- file selection: click somewhere on the line (not the link itsef), then:
802
+ file selection: click somewhere on the line (not the link itself), then:
801
803
  * `space` to toggle
802
804
  * `up/down` to move
803
805
  * `shift-up/down` to move-and-select
@@ -991,6 +993,8 @@ see [./srv/expand/](./srv/expand/) for usage and examples
991
993
 
992
994
  * files named `README.md` / `readme.md` will be rendered after directory listings unless `--no-readme` (but `.epilogue.html` takes precedence)
993
995
 
996
+ * and `PREADME.md` / `preadme.md` is shown above directory listings unless `--no-readme` or `.prologue.html`
997
+
994
998
  * `README.md` and `*logue.html` can contain placeholder values which are replaced server-side before embedding into directory listings; see `--help-exp`
995
999
 
996
1000
 
@@ -1042,7 +1046,11 @@ uses [multicast dns](https://en.wikipedia.org/wiki/Multicast_DNS) to give copypa
1042
1046
 
1043
1047
  all enabled services ([webdav](#webdav-server), [ftp](#ftp-server), [smb](#smb-server)) will appear in mDNS-aware file managers (KDE, gnome, macOS, ...)
1044
1048
 
1045
- the domain will be http://partybox.local if the machine's hostname is `partybox` unless `--name` specifies soemthing else
1049
+ the domain will be `partybox.local` if the machine's hostname is `partybox` unless `--name` specifies something else
1050
+
1051
+ and the web-UI will be available at http://partybox.local:3923/
1052
+
1053
+ * if you want to get rid of the `:3923` so you can use http://partybox.local/ instead then see [listen on port 80 and 443](#listen-on-port-80-and-443)
1046
1054
 
1047
1055
 
1048
1056
  ### ssdp
@@ -1068,7 +1076,7 @@ print a qr-code [(screenshot)](https://user-images.githubusercontent.com/241032/
1068
1076
  * `--qrz 1` forces 1x zoom instead of autoscaling to fit the terminal size
1069
1077
  * 1x may render incorrectly on some terminals/fonts, but 2x should always work
1070
1078
 
1071
- it uses the server hostname if [mdns](#mdns) is enbled, otherwise it'll use your external ip (default route) unless `--qri` specifies a specific ip-prefix or domain
1079
+ it uses the server hostname if [mdns](#mdns) is enabled, otherwise it'll use your external ip (default route) unless `--qri` specifies a specific ip-prefix or domain
1072
1080
 
1073
1081
 
1074
1082
  ## ftp server
@@ -1093,7 +1101,7 @@ some recommended FTP / FTPS clients; `wark` = example password:
1093
1101
 
1094
1102
  ## webdav server
1095
1103
 
1096
- with read-write support, supports winXP and later, macos, nautilus/gvfs ... a greay way to [access copyparty straight from the file explorer in your OS](#mount-as-drive)
1104
+ with read-write support, supports winXP and later, macos, nautilus/gvfs ... a great way to [access copyparty straight from the file explorer in your OS](#mount-as-drive)
1097
1105
 
1098
1106
  click the [connect](http://127.0.0.1:3923/?hc) button in the control-panel to see connection instructions for windows, linux, macos
1099
1107
 
@@ -1197,8 +1205,8 @@ authenticate with one of the following:
1197
1205
  tweaking the ui
1198
1206
 
1199
1207
  * set default sort order globally with `--sort` or per-volume with the `sort` volflag; specify one or more comma-separated columns to sort by, and prefix the column name with `-` for reverse sort
1200
- * the column names you can use are visible as tooltips when hovering over the column headers in the directory listing, for example `href ext sz ts tags/.up_at tags/Cirle tags/.tn tags/Artist tags/Title`
1201
- * to sort in music order (album, track, artist, title) with filename as fallback, you could `--sort tags/Cirle,tags/.tn,tags/Artist,tags/Title,href`
1208
+ * the column names you can use are visible as tooltips when hovering over the column headers in the directory listing, for example `href ext sz ts tags/.up_at tags/Circle tags/.tn tags/Artist tags/Title`
1209
+ * to sort in music order (album, track, artist, title) with filename as fallback, you could `--sort tags/Circle,tags/.tn,tags/Artist,tags/Title,href`
1202
1210
  * to sort by upload date, first enable showing the upload date in the listing with `-e2d -mte +.up_at` and then `--sort tags/.up_at`
1203
1211
 
1204
1212
  see [./docs/rice](./docs/rice) for more, including how to add stuff (css/`<meta>`/...) to the html `<head>` tag, or to add your own translation
@@ -1221,7 +1229,11 @@ if you want to entirely replace the copyparty response with your own jinja2 temp
1221
1229
 
1222
1230
  enable symlink-based upload deduplication globally with `--dedup` or per-volume with volflag `dedup`
1223
1231
 
1224
- when someone tries to upload a file that already exists on the server, the upload will be politely declined and a symlink is created instead, pointing to the nearest copy on disk, thus reducinc disk space usage
1232
+ by default, when someone tries to upload a file that already exists on the server, the upload will be politely declined, and the server will copy the existing file over to where the upload would have gone
1233
+
1234
+ if you enable deduplication with `--dedup` then it'll create a symlink instead of a full copy, thus reducing disk space usage
1235
+
1236
+ * on the contrary, if your server is hooked up to s3-glacier or similar storage where reading is expensive, and you cannot use `--safe-dedup=1` because you have other software tampering with your files, so you want to entirely disable detection of duplicate data instead, then you can specify `--no-clone` globally or `noclone` as a volflag
1225
1237
 
1226
1238
  **warning:** when enabling dedup, you should also:
1227
1239
  * enable indexing with `-e2dsa` or volflag `e2dsa` (see [file indexing](#file-indexing) section below); strongly recommended
@@ -1262,7 +1274,7 @@ through arguments:
1262
1274
  * `-e2t` enables metadata indexing on upload
1263
1275
  * `-e2ts` also scans for tags in all files that don't have tags yet
1264
1276
  * `-e2tsr` also deletes all existing tags, doing a full reindex
1265
- * `-e2v` verfies file integrity at startup, comparing hashes from the db
1277
+ * `-e2v` verifies file integrity at startup, comparing hashes from the db
1266
1278
  * `-e2vu` patches the database with the new hashes from the filesystem
1267
1279
  * `-e2vp` panics and kills copyparty instead
1268
1280
 
@@ -1475,11 +1487,27 @@ redefine behavior with plugins ([examples](./bin/handlers/))
1475
1487
  replace 404 and 403 errors with something completely different (that's it for now)
1476
1488
 
1477
1489
 
1490
+ ## ip auth
1491
+
1492
+ autologin based on IP range (CIDR) , using the global-option `--ipu`
1493
+
1494
+ for example, if everyone with an IP that starts with `192.168.123` should automatically log in as the user `spartacus`, then you can either specify `--ipu=192.168.123.0/24=spartacus` as a commandline option, or put this in a config file:
1495
+
1496
+ ```yaml
1497
+ [global]
1498
+ ipu: 192.168.123.0/24=spartacus
1499
+ ```
1500
+
1501
+ repeat the option to map additional subnets
1502
+
1503
+ **be careful with this one!** if you have a reverseproxy, then you definitely want to make sure you have [real-ip](#real-ip) configured correctly, and it's probably a good idea to nullmap the reverseproxy's IP just in case; so if your reverseproxy is sending requests from `172.24.27.9` then that would be `--ipu=172.24.27.9/32=`
1504
+
1505
+
1478
1506
  ## identity providers
1479
1507
 
1480
1508
  replace copyparty passwords with oauth and such
1481
1509
 
1482
- you can disable the built-in password-based login sysem, 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
1510
+ 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
1483
1511
 
1484
1512
  a popular choice is [Authelia](https://www.authelia.com/) (config-file based), another one is [authentik](https://goauthentik.io/) (GUI-based, more complex)
1485
1513
 
@@ -1506,7 +1534,7 @@ if permitted, users can change their own passwords in the control-panel
1506
1534
 
1507
1535
  * if you run multiple copyparty instances with different users you *almost definitely* want to specify separate DBs for each instance
1508
1536
 
1509
- * if [password hashing](#password-hashing) is enbled, the passwords in the db are also hashed
1537
+ * if [password hashing](#password-hashing) is enabled, the passwords in the db are also hashed
1510
1538
 
1511
1539
  * ...which means that all user-defined passwords will be forgotten if you change password-hashing settings
1512
1540
 
@@ -1526,7 +1554,7 @@ you may improve performance by specifying larger values for `--iobuf` / `--s-rd-
1526
1554
 
1527
1555
  ## hiding from google
1528
1556
 
1529
- tell search engines you dont wanna be indexed, either using the good old [robots.txt](https://www.robotstxt.org/robotstxt.html) or through copyparty settings:
1557
+ tell search engines you don't wanna be indexed, either using the good old [robots.txt](https://www.robotstxt.org/robotstxt.html) or through copyparty settings:
1530
1558
 
1531
1559
  * `--no-robots` adds HTTP (`X-Robots-Tag`) and HTML (`<meta>`) headers with `noindex, nofollow` globally
1532
1560
  * volflag `[...]:c,norobots` does the same thing for that single volume
@@ -1601,6 +1629,33 @@ if you want to change the fonts, see [./docs/rice/](./docs/rice/)
1601
1629
  `-lo log/cpp-%Y-%m%d-%H%M%S.txt.xz`
1602
1630
 
1603
1631
 
1632
+ ## listen on port 80 and 443
1633
+
1634
+ become a *real* webserver which people can access by just going to your IP or domain without specifying a port
1635
+
1636
+ **if you're on windows,** then you just need to add the commandline argument `-p 80,443` and you're done! nice
1637
+
1638
+ **if you're on macos,** sorry, I don't know
1639
+
1640
+ **if you're on Linux,** you have the following 4 options:
1641
+
1642
+ * **option 1:** set up a [reverse-proxy](#reverse-proxy) -- this one makes a lot of sense if you're running on a proper headless server, because that way you get real HTTPS too
1643
+
1644
+ * **option 2:** NAT to port 3923 -- this is cumbersome since you'll need to do it every time you reboot, and the exact command may depend on your linux distribution:
1645
+ ```bash
1646
+ iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3923
1647
+ iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3923
1648
+ ```
1649
+
1650
+ * **option 3:** disable the [security policy](https://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html) which prevents the use of 80 and 443; this is *probably* fine:
1651
+ ```
1652
+ setcap CAP_NET_BIND_SERVICE=+eip $(realpath $(which python))
1653
+ python copyparty-sfx.py -p 80,443
1654
+ ```
1655
+
1656
+ * **option 4:** run copyparty as root (please don't)
1657
+
1658
+
1604
1659
  ## reverse-proxy
1605
1660
 
1606
1661
  running copyparty next to other websites hosted on an existing webserver such as nginx, caddy, or apache
@@ -1949,7 +2004,7 @@ interact with copyparty using non-browser clients
1949
2004
 
1950
2005
  * [igloo irc](https://iglooirc.com/): Method: `post` Host: `https://you.com/up/?want=url&pw=hunter2` Multipart: `yes` File parameter: `f`
1951
2006
 
1952
- copyparty returns a truncated sha512sum of your PUT/POST as base64; you can generate the same checksum locally to verify uplaods:
2007
+ copyparty returns a truncated sha512sum of your PUT/POST as base64; you can generate the same checksum locally to verify uploads:
1953
2008
 
1954
2009
  b512(){ printf "$((sha512sum||shasum -a512)|sed -E 's/ .*//;s/(..)/\\x\1/g')"|base64|tr '+/' '-_'|head -c44;}
1955
2010
  b512 <movie.mkv
@@ -2049,7 +2104,7 @@ when uploading files,
2049
2104
  * up to 30% faster uploads if you hide the upload status list by switching away from the `[🚀]` up2k ui-tab (or closing it)
2050
2105
  * optionally you can switch to the lightweight potato ui by clicking the `[🥔]`
2051
2106
  * switching to another browser-tab also works, the favicon will update every 10 seconds in that case
2052
- * unlikely to be a problem, but can happen when uploding many small files, or your internet is too fast, or PC too slow
2107
+ * unlikely to be a problem, but can happen when uploading many small files, or your internet is too fast, or PC too slow
2053
2108
 
2054
2109
 
2055
2110
  # security
@@ -2097,7 +2152,7 @@ other misc notes:
2097
2152
 
2098
2153
  behavior that might be unexpected
2099
2154
 
2100
- * users without read-access to a folder can still see the `.prologue.html` / `.epilogue.html` / `README.md` contents, for the purpose of showing a description on how to use the uploader for example
2155
+ * users without read-access to a folder can still see the `.prologue.html` / `.epilogue.html` / `PREADME.md` / `README.md` contents, for the purpose of showing a description on how to use the uploader for example
2101
2156
  * users can submit `<script>`s which autorun (in a sandbox) for other visitors in a few ways;
2102
2157
  * uploading a `README.md` -- avoid with `--no-readme`
2103
2158
  * renaming `some.html` to `.epilogue.html` -- avoid with either `--no-logues` or `--no-dot-ren`
@@ -2175,13 +2230,13 @@ if [cfssl](https://github.com/cloudflare/cfssl/releases/latest) is installed, co
2175
2230
 
2176
2231
  ## client crashes
2177
2232
 
2178
- ### frefox wsod
2233
+ ### firefox wsod
2179
2234
 
2180
2235
  firefox 87 can crash during uploads -- the entire browser goes, including all other browser tabs, everything turns white
2181
2236
 
2182
2237
  however you can hit `F12` in the up2k tab and use the devtools to see how far you got in the uploads:
2183
2238
 
2184
- * get a complete list of all uploads, organized by statuts (ok / no-good / busy / queued):
2239
+ * get a complete list of all uploads, organized by status (ok / no-good / busy / queued):
2185
2240
  `var tabs = { ok:[], ng:[], bz:[], q:[] }; for (var a of up2k.ui.tab) tabs[a.in].push(a); tabs`
2186
2241
 
2187
2242
  * list of filenames which failed:
@@ -2298,7 +2353,7 @@ then again, if you are already into downloading shady binaries from the internet
2298
2353
 
2299
2354
  ## zipapp
2300
2355
 
2301
- another emergency alternative, [copyparty.pyz](https://github.com/9001/copyparty/releases/latest/download/copyparty.pyz) has less features, is slow, requires python 3.7 or newer, worse compression, and more importantly is unable to benefit from more recent versions of jinja2 and such (which makes it less secure)... lots of drawbacks with this one really -- but it does not unpack any temporay files to disk, so it *may* just work if the regular sfx fails to start because the computer is messed up in certain funky ways, so it's worth a shot if all else fails
2356
+ another emergency alternative, [copyparty.pyz](https://github.com/9001/copyparty/releases/latest/download/copyparty.pyz) has less features, is slow, requires python 3.7 or newer, worse compression, and more importantly is unable to benefit from more recent versions of jinja2 and such (which makes it less secure)... lots of drawbacks with this one really -- but it does not unpack any temporary files to disk, so it *may* just work if the regular sfx fails to start because the computer is messed up in certain funky ways, so it's worth a shot if all else fails
2302
2357
 
2303
2358
  run it by doubleclicking it, or try typing `python copyparty.pyz` in your terminal/console/commandline/telex if that fails
2304
2359
 
@@ -1,38 +1,38 @@
1
1
  copyparty/__init__.py,sha256=Chqw7uXX4r_-a2p6-xthrrqVHFI4aZdW45sWU7UvqeE,2597
2
- copyparty/__main__.py,sha256=igXfkIk20dnXiMD3bOgmomv2m1_STd46QADrPb52P6E,109533
3
- copyparty/__version__.py,sha256=kIxyRw7J4J4tZ35LfBec0gjCU3PVbEq-j0P5Esc6kXw,257
4
- copyparty/authsrv.py,sha256=Uw_RaCJIsXUzjYih4R2VLQOkDfUePLfidiW5ERvCtMo,98670
2
+ copyparty/__main__.py,sha256=jPcqdsSJZP6AMoPygb6t8PwxmLXGK3jUeUvt28JcnyE,110130
3
+ copyparty/__version__.py,sha256=Z9byW4PqObsayHm5sQR8iTi3mFCP5dkS0YnU-6VoRT4,258
4
+ copyparty/authsrv.py,sha256=clsE8whf32_eIRES1r7VvsVkc4OiJCjiBEJM6pYkwwI,98670
5
5
  copyparty/broker_mp.py,sha256=jsHUM2BSfRVRyZT869iPCqYEHSqedk6VkwvygZwbEZE,4017
6
6
  copyparty/broker_mpw.py,sha256=PYFgQfssOCfdI6qayW1ZjO1j1-7oez094muhYMbPOz0,3339
7
7
  copyparty/broker_thr.py,sha256=MXrwjusP0z1LPURUhi5jx_TL3jrXhYcDrJPDSKu6EEU,1705
8
8
  copyparty/broker_util.py,sha256=76mfnFOpX1gUUvtjm8UQI7jpTIaVINX10QonM-B7ggc,1680
9
9
  copyparty/cert.py,sha256=0ZAPeXeMR164vWn9GQU3JDKooYXEq_NOQkDeg543ivg,8009
10
- copyparty/cfg.py,sha256=M9OEsKmsrWm5ibh6mTCevdwoBKSN1YrlrulPoHbr7uY,10000
10
+ copyparty/cfg.py,sha256=33nLatBUmzRFKQ4KpoQei3ZY6EqRrlaHpQnvCNFXcHI,10112
11
11
  copyparty/dxml.py,sha256=lZpg-kn-kQsXRtNY1n6fRaS-b7uXzMCyv8ovKnhZcZc,1548
12
12
  copyparty/fsutil.py,sha256=5CshJWO7CflfaRRNOb3JxghUH7W5rmS_HWNmKfx42MM,4538
13
- copyparty/ftpd.py,sha256=VTx0gZUdK_0xRORMZT1XymSYvsXsCZs6-wsM2J4raYA,17459
14
- copyparty/httpcli.py,sha256=eukvfi0OzIrAW6ICg-DDA3NoFBPPRQHvF_vuOiJ9ufc,190587
15
- copyparty/httpconn.py,sha256=DN09_r3cPFN4UGCVtAhnIH6cBIDKF-fe4IgMeoHUnSc,6809
16
- copyparty/httpsrv.py,sha256=TnfqA4edgO187y8fV0Q-lchnnD2bMSBTPZgncEjGMhY,17009
13
+ copyparty/ftpd.py,sha256=G_h1urfIikzfCWGXnW9p-rioWdNM_Je6vWYq0-QSbC8,17580
14
+ copyparty/httpcli.py,sha256=PIlYJa-1QTzsASD9jRbRJGsn8vAUNSg15qJEigcs9cs,192083
15
+ copyparty/httpconn.py,sha256=mQSgljh0Q-jyWjF4tQLrHbRKRe9WKl19kGqsGMsJpWo,6880
16
+ copyparty/httpsrv.py,sha256=k0xSadmUNSyUAWlZdOMFdsBP1fQK50Ptv7O6O4jFy2Q,17182
17
17
  copyparty/ico.py,sha256=eWSxEae4wOCfheHl-m-wchYvFRAR_97kJDb4NGaB-Z8,3561
18
18
  copyparty/mdns.py,sha256=vC078llnL1v0pvL3mnwacuStFHPJUQuxo9Opj-IbHL4,18155
19
19
  copyparty/metrics.py,sha256=aV09nntEmKMIyde8xoPtj1ehDOQVQOHchRF4uMMNzqM,8855
20
- copyparty/mtag.py,sha256=0UIti7JyB6j8rPJ1SlC7JmwlqDfBMjQhXgncxscJGPg,18893
20
+ copyparty/mtag.py,sha256=8WGjEn0T0Ri9ww1yBpLUnFHZiTQMye1BMXL6SkK3MRo,18893
21
21
  copyparty/multicast.py,sha256=Ha27l2oATEa-Qo2WOzkeRgjAm6G_YDCfbVJWR-ao2UE,12319
22
22
  copyparty/pwhash.py,sha256=AdLMLyIi2IDhGtbKIQOswKUxWvO7ARYYRF_ThsryOoc,4124
23
23
  copyparty/smbd.py,sha256=Or7RF13cl1r3ncnpVh8BqyAGqH2Oa04O9iPZWCoB0Bo,14609
24
- copyparty/ssdp.py,sha256=8iyF5sqIjATJLWcAtnJa8eadHosOn0CP4ywltzJ7bVY,7023
24
+ copyparty/ssdp.py,sha256=R1Z61GZOxBMF2Sk4RTxKWMOemogmcjEWG-CvLihd45k,7023
25
25
  copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
26
26
  copyparty/sutil.py,sha256=JTMrQwcWH85hXB_cKG206eDZ967WZDGaP00AWvl_gB0,3214
27
- copyparty/svchub.py,sha256=qLG2CE8VHro7I6FnYMwiij0LcBC5lJw-hiucBag3NHY,39939
27
+ copyparty/svchub.py,sha256=FuQGFBm-lJfe28M-SMBLieHy8jdWIQMkONK2GcWZU_E,40105
28
28
  copyparty/szip.py,sha256=sDypi1_yR6-62fIZ_3D0L9PfIzCUiK_3JqcaJCvTBCs,8601
29
- copyparty/tcpsrv.py,sha256=jM_Za64O8LEMfMrU4irJluIJZrU494e2b759r_KhaUQ,19881
29
+ copyparty/tcpsrv.py,sha256=l_vb9FoF0AJur0IoqHNUSBDqMgBO_MRUZeDszi1UNfY,19881
30
30
  copyparty/tftpd.py,sha256=jZbf2JpeJmkuQWJErmAPG-dKhtYNvIUHbkAgodSXw9Y,13582
31
31
  copyparty/th_cli.py,sha256=o6FMkerYvAXS455z3DUossVztu_nzFlYSQhs6qN6Jt8,4636
32
32
  copyparty/th_srv.py,sha256=hI9wY1E_9N9Cgqvtr8zADeVqqiLGTiTdAnYAA7WFvJw,29346
33
33
  copyparty/u2idx.py,sha256=JjgqwgJBNj6sTn4PJfuqM3VEHqlmoyGC5bk4_92K2h0,13414
34
- copyparty/up2k.py,sha256=TzCNQKiC-fxfV2EpXdy1oCA3yExpHyzrH6BmgFrTrJg,163817
35
- copyparty/util.py,sha256=RrL6SBjgeVTyXZdZQ8RRFVQn72Jz0Y6DTGYr4LO3Phc,91329
34
+ copyparty/up2k.py,sha256=PSVSdG00wC76mi0E7HF1WBFco4lujpSCTTtSzUusPVM,165096
35
+ copyparty/util.py,sha256=Vj8F50G0taqNd7c8TQd56IRbRZGFE1r0wnnrymbk7j0,92349
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
@@ -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=4dS8-r4si84ca71l98672ahnRI86Aq95MU-bc5knykk,7962
58
- copyparty/web/browser.css.gz,sha256=mQ0YsAtbRPzaRoVB8IN3aUTHPCpcIfdzzGBOekABSoM,11612
58
+ copyparty/web/browser.css.gz,sha256=4bAS9Xkl2fflhaxRSRSVoYQcpXsg1mCWxsYjId7phbU,11610
59
59
  copyparty/web/browser.html,sha256=ISpfvWEawufJCYZIqvuXiyUgiXgjmOTtScz4zrEaypI,4870
60
- copyparty/web/browser.js.gz,sha256=70pmmr2lL4pGRrszxyQPrtwDfk4DZ7Ig3kLXWK2E-9c,84921
60
+ copyparty/web/browser.js.gz,sha256=0WhsCM1Kr0PFryxz7hF31apLgvsJac4jWy8_ePfp_40,84989
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
@@ -85,7 +85,7 @@ copyparty/web/util.js.gz,sha256=uh_NAVPiMcOCTy9oxUiDKmKh1GokTKBPe3FYNMMUYlM,1478
85
85
  copyparty/web/w.hash.js.gz,sha256=7wP9EZQNXQxwZnCCFUVsi_-6TM9PLZJeZ9krutXRRj8,1060
86
86
  copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  copyparty/web/a/partyfuse.py,sha256=fa9bBYNJHvtWpNVjQyyFzx6JOK7MJL1u0zj80PBYQKs,27960
88
- copyparty/web/a/u2c.py,sha256=QmEZOPJfOVmtVjHWP7XATyzvAAY1OzelikPKdRShOLg,46740
88
+ copyparty/web/a/u2c.py,sha256=TkLmQL_3lwus0HI-m4cuP8E9qanfB8U9xGvW7zEJ8ho,47576
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
@@ -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=vqoXeracj-99Z5MfY3jK2N4WiSzYQdfjy0RnUlQDhSU,8110
109
- copyparty-1.15.5.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
110
- copyparty-1.15.5.dist-info/METADATA,sha256=o3EaYdn7-JhJSuNd838dMe48Lv4KAberuypcFv5v03Q,135833
111
- copyparty-1.15.5.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
112
- copyparty-1.15.5.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
113
- copyparty-1.15.5.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
114
- copyparty-1.15.5.dist-info/RECORD,,
109
+ copyparty-1.15.7.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
110
+ copyparty-1.15.7.dist-info/METADATA,sha256=DXlK1tdi4bTueoZXTbr33g_wqCpjko4sTPWpTeXXfGs,138774
111
+ copyparty-1.15.7.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
112
+ copyparty-1.15.7.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
113
+ copyparty-1.15.7.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
114
+ copyparty-1.15.7.dist-info/RECORD,,