copyparty 1.12.2__py3-none-any.whl → 1.13.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/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 = "1.15"
5
- S_BUILD_DT = "2024-02-18"
4
+ S_VERSION = "1.16"
5
+ S_BUILD_DT = "2024-04-20"
6
6
 
7
7
  """
8
8
  u2c.py: upload to copyparty
@@ -563,7 +563,7 @@ def handshake(ar, file, search):
563
563
  else:
564
564
  if ar.touch:
565
565
  req["umod"] = True
566
- if ar.dr:
566
+ if ar.ow:
567
567
  req["replace"] = True
568
568
 
569
569
  headers = {"Content-Type": "text/plain"} # <=1.5.1 compat
@@ -1140,6 +1140,7 @@ source file/folder selection uses rsync syntax, meaning that:
1140
1140
  ap.add_argument("-x", type=unicode, metavar="REGEX", default="", help="skip file if filesystem-abspath matches REGEX, example: '.*/\\.hist/.*'")
1141
1141
  ap.add_argument("--ok", action="store_true", help="continue even if some local files are inaccessible")
1142
1142
  ap.add_argument("--touch", action="store_true", help="if last-modified timestamps differ, push local to server (need write+delete perms)")
1143
+ ap.add_argument("--ow", action="store_true", help="overwrite existing files instead of autorenaming")
1143
1144
  ap.add_argument("--version", action="store_true", help="show version and exit")
1144
1145
 
1145
1146
  ap = app.add_argument_group("compatibility")
@@ -1148,7 +1149,7 @@ source file/folder selection uses rsync syntax, meaning that:
1148
1149
 
1149
1150
  ap = app.add_argument_group("folder sync")
1150
1151
  ap.add_argument("--dl", action="store_true", help="delete local files after uploading")
1151
- ap.add_argument("--dr", action="store_true", help="delete remote files which don't exist locally")
1152
+ ap.add_argument("--dr", action="store_true", help="delete remote files which don't exist locally (implies --ow)")
1152
1153
  ap.add_argument("--drd", action="store_true", help="delete remote files during upload instead of afterwards; reduces peak disk space usage, but will reupload instead of detecting renames")
1153
1154
 
1154
1155
  ap = app.add_argument_group("performance tweaks")
@@ -1178,6 +1179,9 @@ source file/folder selection uses rsync syntax, meaning that:
1178
1179
  if ar.drd:
1179
1180
  ar.dr = True
1180
1181
 
1182
+ if ar.dr:
1183
+ ar.ow = True
1184
+
1181
1185
  for k in "dl dr drd".split():
1182
1186
  errs = []
1183
1187
  if ar.safe and getattr(ar, k):
Binary file
Binary file
@@ -6,7 +6,7 @@
6
6
  <title>{{ title }}</title>
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
8
  <meta name="viewport" content="width=device-width, initial-scale=0.8, minimum-scale=0.6">
9
- <meta name="theme-color" content="#333">
9
+ <meta name="theme-color" content="#{{ tcolor }}">
10
10
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/ui.css?_={{ ts }}">
11
11
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/browser.css?_={{ ts }}">
12
12
  {{ html_head }}
Binary file
copyparty/web/md.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <title>📝 {{ title }}</title>
4
4
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=0.7">
6
- <meta name="theme-color" content="#333">
6
+ <meta name="theme-color" content="#{{ tcolor }}">
7
7
  <link rel="stylesheet" href="{{ r }}/.cpr/ui.css?_={{ ts }}">
8
8
  <link rel="stylesheet" href="{{ r }}/.cpr/md.css?_={{ ts }}">
9
9
  {%- if edit %}
copyparty/web/mde.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <title>📝 {{ title }}</title>
4
4
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=0.7">
6
- <meta name="theme-color" content="#333">
6
+ <meta name="theme-color" content="#{{ tcolor }}">
7
7
  <link rel="stylesheet" href="{{ r }}/.cpr/ui.css?_={{ ts }}">
8
8
  <link rel="stylesheet" href="{{ r }}/.cpr/mde.css?_={{ ts }}">
9
9
  <link rel="stylesheet" href="{{ r }}/.cpr/deps/mini-fa.css?_={{ ts }}">
copyparty/web/msg.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>{{ s_doctitle }}</title>
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
8
  <meta name="viewport" content="width=device-width, initial-scale=0.8">
9
- <meta name="theme-color" content="#333">
9
+ <meta name="theme-color" content="#{{ tcolor }}">
10
10
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/msg.css?_={{ ts }}">
11
11
  {{ html_head }}
12
12
  </head>
copyparty/web/splash.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>{{ s_doctitle }}</title>
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
8
  <meta name="viewport" content="width=device-width, initial-scale=0.8">
9
- <meta name="theme-color" content="#333">
9
+ <meta name="theme-color" content="#{{ tcolor }}">
10
10
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/splash.css?_={{ ts }}">
11
11
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/ui.css?_={{ ts }}">
12
12
  {{ html_head }}
@@ -95,6 +95,7 @@
95
95
  <form method="post" enctype="multipart/form-data" action="{{ r }}/{{ qvpath }}">
96
96
  <input type="hidden" name="act" value="login" />
97
97
  <input type="password" name="cppwd" placeholder=" password" />
98
+ <input type="hidden" name="uhash" id="uhash" value="x" />
98
99
  <input type="submit" value="Login" />
99
100
  {% if ahttps %}
100
101
  <a id="w" href="{{ ahttps }}">switch to https</a>
Binary file
copyparty/web/svcs.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>{{ s_doctitle }}</title>
7
7
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
8
8
  <meta name="viewport" content="width=device-width, initial-scale=0.8">
9
- <meta name="theme-color" content="#333">
9
+ <meta name="theme-color" content="#{{ tcolor }}">
10
10
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/splash.css?_={{ ts }}">
11
11
  <link rel="stylesheet" media="screen" href="{{ r }}/.cpr/ui.css?_={{ ts }}">
12
12
  <style>ul{padding-left:1.3em}li{margin:.4em 0}</style>
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.12.2
3
+ Version: 1.13.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
@@ -64,6 +64,8 @@ turn almost any device into a file server with resumable uploads/downloads using
64
64
 
65
65
  📷 **screenshots:** [browser](#the-browser) // [upload](#uploading) // [unpost](#unpost) // [thumbnails](#thumbnails) // [search](#searching) // [fsearch](#file-search) // [zip-DL](#zip-downloads) // [md-viewer](#markdown-viewer)
66
66
 
67
+ 🎬 **videos:** [upload](https://a.ocv.me/pub/demo/pics-vids/up2k.webm) // [cli-upload](https://a.ocv.me/pub/demo/pics-vids/u2cli.webm) // [race-the-beam](https://a.ocv.me/pub/g/nerd-stuff/cpp/2024-0418-race-the-beam.webm)
68
+
67
69
 
68
70
  ## readme toc
69
71
 
@@ -71,7 +73,7 @@ turn almost any device into a file server with resumable uploads/downloads using
71
73
  * [quickstart](#quickstart) - just run **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py)** -- that's it! 🎉
72
74
  * [at home](#at-home) - make it accessible over the internet
73
75
  * [on servers](#on-servers) - you may also want these, especially on servers
74
- * [features](#features)
76
+ * [features](#features) - also see [comparison to similar software](./docs/versus.md)
75
77
  * [testimonials](#testimonials) - small collection of user feedback
76
78
  * [motivations](#motivations) - project goals / philosophy
77
79
  * [notes](#notes) - general notes
@@ -92,12 +94,14 @@ turn almost any device into a file server with resumable uploads/downloads using
92
94
  * [file-search](#file-search) - dropping files into the browser also lets you see if they exist on the server
93
95
  * [unpost](#unpost) - undo/delete accidental uploads
94
96
  * [self-destruct](#self-destruct) - uploads can be given a lifetime
97
+ * [race the beam](#race-the-beam) - download files while they're still uploading ([demo video](http://a.ocv.me/pub/g/nerd-stuff/cpp/2024-0418-race-the-beam.webm))
95
98
  * [file manager](#file-manager) - cut/paste, rename, and delete files/folders (if you have permission)
96
99
  * [batch rename](#batch-rename) - select some files and press `F2` to bring up the rename UI
97
100
  * [media player](#media-player) - plays almost every audio format there is
98
101
  * [audio equalizer](#audio-equalizer) - and [dynamic range compressor](https://en.wikipedia.org/wiki/Dynamic_range_compression)
99
102
  * [fix unreliable playback on android](#fix-unreliable-playback-on-android) - due to phone / app settings
100
103
  * [markdown viewer](#markdown-viewer) - and there are *two* editors
104
+ * [markdown vars](#markdown-vars) - dynamic docs with serverside variable expansion
101
105
  * [other tricks](#other-tricks)
102
106
  * [searching](#searching) - search by size, date, path/name, mp3-tags, ...
103
107
  * [server config](#server-config) - using arguments or config files, or a mix of both
@@ -111,6 +115,7 @@ turn almost any device into a file server with resumable uploads/downloads using
111
115
  * [tftp server](#tftp-server) - a TFTP server (read/write) can be started using `--tftp 3969`
112
116
  * [smb server](#smb-server) - unsafe, slow, not recommended for wan
113
117
  * [browser ux](#browser-ux) - tweaking the ui
118
+ * [opengraph](#opengraph) - discord and social-media embeds
114
119
  * [file indexing](#file-indexing) - enables dedup and music search ++
115
120
  * [exclude-patterns](#exclude-patterns) - to save some time
116
121
  * [filesystem guards](#filesystem-guards) - avoid traversing into other filesystems
@@ -159,8 +164,9 @@ turn almost any device into a file server with resumable uploads/downloads using
159
164
  * [dependencies](#dependencies) - mandatory deps
160
165
  * [optional dependencies](#optional-dependencies) - install these to enable bonus features
161
166
  * [optional gpl stuff](#optional-gpl-stuff)
162
- * [sfx](#sfx) - the self-contained "binary"
167
+ * [sfx](#sfx) - the self-contained "binary" (recommended!)
163
168
  * [copyparty.exe](#copypartyexe) - download [copyparty.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty.exe) (win8+) or [copyparty32.exe](https://github.com/9001/copyparty/releases/latest/download/copyparty32.exe) (win7+)
169
+ * [zipapp](#zipapp) - another emergency alternative, [copyparty.pyz](https://github.com/9001/copyparty/releases/latest/download/copyparty.pyz)
164
170
  * [install on android](#install-on-android)
165
171
  * [reporting bugs](#reporting-bugs) - ideas for context to include, and where to submit them
166
172
  * [devnotes](#devnotes) - for build instructions etc, see [./docs/devnotes.md](./docs/devnotes.md)
@@ -174,6 +180,7 @@ just run **[copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/
174
180
  * or if you cannot install python, you can use [copyparty.exe](#copypartyexe) instead
175
181
  * or install [on arch](#arch-package) ╱ [on NixOS](#nixos-module) ╱ [through nix](#nix-package)
176
182
  * or if you are on android, [install copyparty in termux](#install-on-android)
183
+ * or if your computer is messed up and nothing else works, [try the pyz](#zipapp)
177
184
  * or if you prefer to [use docker](./scripts/docker/) 🐋 you can do that too
178
185
  * docker has all deps built-in, so skip this step:
179
186
 
@@ -181,7 +188,7 @@ enable thumbnails (images/audio/video), media indexing, and audio transcoding by
181
188
 
182
189
  * **Alpine:** `apk add py3-pillow ffmpeg`
183
190
  * **Debian:** `apt install --no-install-recommends python3-pil ffmpeg`
184
- * **Fedora:** rpmfusion + `dnf install python3-pillow ffmpeg`
191
+ * **Fedora:** rpmfusion + `dnf install python3-pillow ffmpeg --allowerasing`
185
192
  * **FreeBSD:** `pkg install py39-sqlite3 py39-pillow ffmpeg`
186
193
  * **MacOS:** `port install py-Pillow ffmpeg`
187
194
  * **MacOS** (alternative): `brew install pillow ffmpeg`
@@ -236,6 +243,8 @@ firewall-cmd --reload
236
243
 
237
244
  ## features
238
245
 
246
+ also see [comparison to similar software](./docs/versus.md)
247
+
239
248
  * backend stuff
240
249
  * ☑ IPv6
241
250
  * ☑ [multiprocessing](#performance) (actual multithreading)
@@ -258,6 +267,7 @@ firewall-cmd --reload
258
267
  * ☑ write-only folders
259
268
  * ☑ [unpost](#unpost): undo/delete accidental uploads
260
269
  * ☑ [self-destruct](#self-destruct) (specified server-side or client-side)
270
+ * ☑ [race the beam](#race-the-beam) (almost like peer-to-peer)
261
271
  * ☑ symlink/discard duplicates (content-matching)
262
272
  * download
263
273
  * ☑ single files in browser
@@ -282,9 +292,11 @@ firewall-cmd --reload
282
292
  * client support
283
293
  * ☑ [folder sync](#folder-sync)
284
294
  * ☑ [curl-friendly](https://user-images.githubusercontent.com/241032/215322619-ea5fd606-3654-40ad-94ee-2bc058647bb2.png)
295
+ * ☑ [opengraph](#opengraph) (discord embeds)
285
296
  * markdown
286
297
  * ☑ [viewer](#markdown-viewer)
287
298
  * ☑ editor (sure why not)
299
+ * ☑ [variables](#markdown-vars)
288
300
 
289
301
  PS: something missing? post any crazy ideas you've got as a [feature request](https://github.com/9001/copyparty/issues/new?assignees=9001&labels=enhancement&template=feature_request.md) or [discussion](https://github.com/9001/copyparty/discussions/new?category=ideas) 🤙
290
302
 
@@ -662,9 +674,15 @@ cool trick: download a folder by appending url-params `?tar&opus` or `?tar&mp3`
662
674
 
663
675
  ## uploading
664
676
 
665
- drag files/folders into the web-browser to upload (or use the [command-line uploader](https://github.com/9001/copyparty/tree/hovudstraum/bin#u2cpy))
677
+ drag files/folders into the web-browser to upload
678
+
679
+ dragdrop is the recommended way, but you may also:
680
+
681
+ * select some files (not folders) in your file explorer and press CTRL-V inside the browser window
682
+ * use the [command-line uploader](https://github.com/9001/copyparty/tree/hovudstraum/bin#u2cpy)
683
+ * upload using [curl or sharex](#client-examples)
666
684
 
667
- this initiates an upload using `up2k`; there are two uploaders available:
685
+ when uploading files through dragdrop or CTRL-V, this initiates an upload using `up2k`; there are two browser-based uploaders available:
668
686
  * `[🎈] bup`, the basic uploader, supports almost every browser since netscape 4.0
669
687
  * `[🚀] up2k`, the good / fancy one
670
688
 
@@ -683,7 +701,7 @@ up2k has several advantages:
683
701
  > it is perfectly safe to restart / upgrade copyparty while someone is uploading to it!
684
702
  > all known up2k clients will resume just fine 💪
685
703
 
686
- see [up2k](#up2k) for details on how it works, or watch a [demo video](https://a.ocv.me/pub/demo/pics-vids/#gf-0f6f5c0d)
704
+ see [up2k](./docs/devnotes.md#up2k) for details on how it works, or watch a [demo video](https://a.ocv.me/pub/demo/pics-vids/#gf-0f6f5c0d)
687
705
 
688
706
  ![copyparty-upload-fs8](https://user-images.githubusercontent.com/241032/129635371-48fc54ca-fa91-48e3-9b1d-ba413e4b68cb.png)
689
707
 
@@ -749,6 +767,13 @@ clients can specify a shorter expiration time using the [up2k ui](#uploading) --
749
767
  specifying a custom expiration time client-side will affect the timespan in which unposts are permitted, so keep an eye on the estimates in the up2k ui
750
768
 
751
769
 
770
+ ### race the beam
771
+
772
+ download files while they're still uploading ([demo video](http://a.ocv.me/pub/g/nerd-stuff/cpp/2024-0418-race-the-beam.webm)) -- it's almost like peer-to-peer
773
+
774
+ requires the file to be uploaded using up2k (which is the default drag-and-drop uploader), alternatively the command-line program
775
+
776
+
752
777
  ## file manager
753
778
 
754
779
  cut/paste, rename, and delete files/folders (if you have permission)
@@ -884,6 +909,13 @@ other notes,
884
909
  * the document preview has a max-width which is the same as an A4 paper when printed
885
910
 
886
911
 
912
+ ### markdown vars
913
+
914
+ dynamic docs with serverside variable expansion to replace stuff like `{{self.ip}}` with the client's IP, or `{{srv.htime}}` with the current time on the server
915
+
916
+ see [./srv/expand/](./srv/expand/) for usage and examples
917
+
918
+
887
919
  ## other tricks
888
920
 
889
921
  * you can link a particular timestamp in an audio file by adding it to the URL, such as `&20` / `&20s` / `&1m20` / `&t=1:20` after the `.../#af-c8960dab`
@@ -1108,7 +1140,22 @@ tweaking the ui
1108
1140
  * 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`
1109
1141
  * 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`
1110
1142
 
1111
- see [./docs/rice](./docs/rice) for more
1143
+ see [./docs/rice](./docs/rice) for more, including how to add stuff (css/`<meta>`/...) to the html `<head>` tag
1144
+
1145
+
1146
+ ## opengraph
1147
+
1148
+ discord and social-media embeds
1149
+
1150
+ can be enabled globally with `--og` or per-volume with volflag `og`
1151
+
1152
+ note that this disables hotlinking because the opengraph spec demands it; to sneak past this intentional limitation, you can enable opengraph selectively by user-agent, for example `--og-ua '(Discord|Twitter|Slack)bot'` (or volflag `og_ua`)
1153
+
1154
+ you can also hotlink files regardless by appending `?raw` to the url
1155
+
1156
+ NOTE: because discord (and maybe others) strip query args such as `?raw` in opengraph tags, any links which require a filekey or dirkey will not work
1157
+
1158
+ if you want to entirely replace the copyparty response with your own jinja2 template, give the template filepath to `--og-tpl` or volflag `og_tpl` (all members of `HttpCli` are available through the `this` object)
1112
1159
 
1113
1160
 
1114
1161
  ## file indexing
@@ -2022,7 +2069,7 @@ these are standalone programs and will never be imported / evaluated by copypart
2022
2069
 
2023
2070
  # sfx
2024
2071
 
2025
- the self-contained "binary" [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) will unpack itself and run copyparty, assuming you have python installed of course
2072
+ the self-contained "binary" (recommended!) [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-sfx.py) will unpack itself and run copyparty, assuming you have python installed of course
2026
2073
 
2027
2074
  you can reduce the sfx size by repacking it; see [./docs/devnotes.md#sfx-repack](./docs/devnotes.md#sfx-repack)
2028
2075
 
@@ -2049,6 +2096,16 @@ meanwhile [copyparty-sfx.py](https://github.com/9001/copyparty/releases/latest/d
2049
2096
  then again, if you are already into downloading shady binaries from the internet, you may also want my [minimal builds](./scripts/pyinstaller#ffmpeg) of [ffmpeg](https://ocv.me/stuff/bin/ffmpeg.exe) and [ffprobe](https://ocv.me/stuff/bin/ffprobe.exe) which enables copyparty to extract multimedia-info, do audio-transcoding, and thumbnails/spectrograms/waveforms, however it's much better to instead grab a [recent official build](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z) every once ina while if you can afford the size
2050
2097
 
2051
2098
 
2099
+ ## zipapp
2100
+
2101
+ another emergency alternative, [copyparty.pyz](https://github.com/9001/copyparty/releases/latest/download/copyparty.pyz) has less features, 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 *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
2102
+
2103
+ run it by doubleclicking it, or try typing `python copyparty.pyz` in your terminal/console/commandline/telex if that fails
2104
+
2105
+ it is a python [zipapp](https://docs.python.org/3/library/zipapp.html) meaning it doesn't have to unpack its own python code anywhere to run, so if the filesystem is busted it has a better chance of getting somewhere
2106
+ * but note that it currently still needs to extract the web-resources somewhere (they'll land in the default TEMP-folder of your OS)
2107
+
2108
+
2052
2109
  # install on android
2053
2110
 
2054
2111
  install [Termux](https://termux.com/) + its companion app `Termux:API` (see [ocv.me/termux](https://ocv.me/termux/)) and then copy-paste this into Termux (long-tap) all at once:
@@ -1,22 +1,22 @@
1
1
  copyparty/__init__.py,sha256=fUINM1abqDGzCCH_JcXdOnLdKOV-SrTI2Xo2QgQW2P4,1703
2
- copyparty/__main__.py,sha256=S4Q3vX1OcxDX4jdiaUmJ6ISxI4zmWEqmuNmgycEuFng,95106
3
- copyparty/__version__.py,sha256=M_tUfeuxrcHAVaa7MIyCrvu8zP98hSnRNS-1cY7Bqxw,251
4
- copyparty/authsrv.py,sha256=-MZQnSsrEGD8cTtR90qT5-xoc9xD8PP8cjvBL75HMKo,84501
2
+ copyparty/__main__.py,sha256=7fOoPuMQe4KzHAGS5K7KI35-fyj-3rERZVM0dTInOV4,98648
3
+ copyparty/__version__.py,sha256=Ev7V864ayuRrHZmn9gLsfpBYVJs05PYyOWl3-oCL_uU,254
4
+ copyparty/authsrv.py,sha256=UaWwotBSZBEst8LENH7BIaVSL7k2EnUrVzVftTEvtmU,84896
5
5
  copyparty/broker_mp.py,sha256=4mEZC5tiHUazJMgYuwInNo2dxS7jrbzrGb1qs2UBt9k,3948
6
6
  copyparty/broker_mpw.py,sha256=4ZI7bJYOwUibeAJVv9_FPGNmHrr9eOtkj_Kz0JEppTU,3197
7
7
  copyparty/broker_thr.py,sha256=eKr--HJGig5zqvNGwH9UoBG9Nvi9mT2axrRmJwknd0s,1759
8
8
  copyparty/broker_util.py,sha256=CnX_LAhQQqouONcDLtVkVlcBX3Z6pWuKDQDmmbHGEg4,1489
9
9
  copyparty/cert.py,sha256=nCeDdzcCpvjPPUcxT4Oh7wvL_8zvddu4oXtbA-zOb8g,7607
10
- copyparty/cfg.py,sha256=6r2-UQ7ule18evBOAxa4wMVyIag2ce32JwMh6TcibXU,9276
10
+ copyparty/cfg.py,sha256=PSv7T4nm0_ISlijbAP7re61ucvr37xObv8_495ynPws,9584
11
11
  copyparty/dxml.py,sha256=lZpg-kn-kQsXRtNY1n6fRaS-b7uXzMCyv8ovKnhZcZc,1548
12
- copyparty/fsutil.py,sha256=c4fTvmclKbVABNsjU4rGddsjCgRwi9YExAyo-06ATc8,3932
12
+ copyparty/fsutil.py,sha256=NEdhYYgQxDQ7MmgTbtjMKorikCjDls2AXVX16EH2JfQ,4613
13
13
  copyparty/ftpd.py,sha256=OIExjfqOEw-Y_ygez6cIZUQec4SFOmoxEH_WOVvw-aE,15961
14
- copyparty/httpcli.py,sha256=q4yGtOJ_2v7KjRbk6grn0nqhI75hojZvqS3VrWGwT0M,148982
15
- copyparty/httpconn.py,sha256=gLOURB2Nb1w6n2ihGBspEnzEfUND9Osa4klzYuAbgzI,6829
16
- copyparty/httpsrv.py,sha256=af6LdApfj-Q4mWC5mVQjhnyrFzNy8_bXK3VUe0xKkeY,16368
14
+ copyparty/httpcli.py,sha256=nuJOPt2T9mjLLRreaCRUmpjoLN5nNkzsXJcCtzn963Q,164338
15
+ copyparty/httpconn.py,sha256=6MOQgBtOGrlVRr6ZiHBKYzkzcls-YWwaWEtqE6DweM0,6873
16
+ copyparty/httpsrv.py,sha256=Xf6wI5V25gzAoyEpiKH8VjEFwUqTzW5z8pcRfo2J40c,16421
17
17
  copyparty/ico.py,sha256=AYHdK6NlYBfBgafVYXia3jHQ9XHZdUL1D8WftLMAzIU,3545
18
18
  copyparty/mdns.py,sha256=CcraggbDxTT1ntYzD8Ebgqmw5Q4HkyZcfh5ymtCV_ak,17469
19
- copyparty/metrics.py,sha256=OqXFkAuoVhayGAGd_Sv-OQ9SVmdXYV8M7CxitkzE3lo,8854
19
+ copyparty/metrics.py,sha256=O8qiPNDxNjub_PI8C8Qu9rBQ_z0J1mnKonqkcTeAtf4,8845
20
20
  copyparty/mtag.py,sha256=wiXd26ZSYgOu4lkRDn4KLaqo6H2V7cpqUMepTHTCfKE,16851
21
21
  copyparty/multicast.py,sha256=Ha27l2oATEa-Qo2WOzkeRgjAm6G_YDCfbVJWR-ao2UE,12319
22
22
  copyparty/pwhash.py,sha256=D82y8emnwpHDQq7Cr8lNuppHshbNA9ptcR2XsGOOk6E,3937
@@ -24,15 +24,15 @@ copyparty/smbd.py,sha256=iACj5pbiKsX7bVu20BK3ebPQLB_qA7WS2l-ytrSfT3Y,14054
24
24
  copyparty/ssdp.py,sha256=H6ZftXttydcnBxcg2-Prm4P-XiybgT3xiJRUXU1pbrE,6343
25
25
  copyparty/star.py,sha256=K4NuzyfT4956uoW6GJSQ2II-JsSV57apQZwRZ4mjFoo,3790
26
26
  copyparty/sutil.py,sha256=_G4TM0YFa1vXzhRypHJ88QBdZWtYgDbom4CZjGvGIwc,3074
27
- copyparty/svchub.py,sha256=FiX6B70K5XVhCDuQDty8ZXhujThfkFcH3brp1rsEr-A,32258
27
+ copyparty/svchub.py,sha256=9DTZLgrHRMrlnq6pc_3UngNpxtdlT2SWnhlE2dPaoBk,32419
28
28
  copyparty/szip.py,sha256=631TsEwGKV22yAnusJtvE-9fGFWr61HPGBinu-jk1QA,8591
29
- copyparty/tcpsrv.py,sha256=2LGUqOBAIrsmL-1pwrbsPXR71gutHccqRp-hjzt91Us,17289
29
+ copyparty/tcpsrv.py,sha256=ym6rda7svl_M4DjNesHMI1_6wO7Csu01UV1zGzXEMxI,17637
30
30
  copyparty/tftpd.py,sha256=7EHAZ9LnjAXupwRNIENJ2eA8Q0lFynnwwbziV3fyzns,13157
31
31
  copyparty/th_cli.py,sha256=eSW7sBiaZAsh_XffXFzb035CTSbS3J3Q0G-BMzQGuSY,4385
32
32
  copyparty/th_srv.py,sha256=C2ZBE6ddINCuYDympRQQmhj0ULdlD6HOM6qNK-UB4so,27191
33
- copyparty/u2idx.py,sha256=JBEqKX1ZM8GIvQrDYb5VQ_5QiFNFsjWF6H9drHlPVEY,12709
34
- copyparty/up2k.py,sha256=SnLU_60EZymqESqo13ayVGYewyf0BgZaCoPlpAOGZlQ,140773
35
- copyparty/util.py,sha256=br6SQFXLu2Ol6gSpVX498G_ig3M2ZtKP9USMxuWE0qk,82089
33
+ copyparty/u2idx.py,sha256=uEUcEbye1jzGlQfEJkLtD060XA6Rv_6lXLgeg6oAU5M,13033
34
+ copyparty/up2k.py,sha256=D-E5y27lJopCtrxUjEi1-oH-kqrOnHL2hQO1Q_X6tHw,143080
35
+ copyparty/util.py,sha256=N8rIBtCX_-oEhfLURsyhf3WfrdUzsdsN4Q1qkFtYKHg,83167
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
@@ -54,35 +54,35 @@ 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=Qcx5ZJWWCU4S1J0ULVXuVKWnm_SuCiEknMlt_uwIkJ8,7830
58
- copyparty/web/browser.css.gz,sha256=ufB8EMVUJPnHl-NJN-GI3-HFJElJisgB6p0nexNtzrU,11431
59
- copyparty/web/browser.html,sha256=uAejLJd11rV_tQx3h2nHnJ1XY6zn1JV-meIAv74Lc8o,4873
60
- copyparty/web/browser.js.gz,sha256=k7COxnPofd9GOMRkk72sdQAJJVRZ1sJfgXXwE247Nkk,67298
57
+ copyparty/web/baguettebox.js.gz,sha256=HdRHC_4Lvepp1DrRwusdcxvAn8IKGMdrKdggGIshKek,7869
58
+ copyparty/web/browser.css.gz,sha256=GGyPK9BBOX63x9XWqO2jrXewHtfAeZ-Jo0BBxqTOGUM,11491
59
+ copyparty/web/browser.html,sha256=-tLasq2GKe9mUceqXG4PczQ7odBMrX0qlWuyaA9SjPI,4882
60
+ copyparty/web/browser.js.gz,sha256=9w6hKIv_v8QERNxRQ5DOdZxBijStf-YE8H7SaWLbi7Y,68707
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
64
  copyparty/web/md.css.gz,sha256=UZpN0J7ubVM05CZkbZYkQRJeGgJt_GNDEzKTGSQd8h4,2032
65
- copyparty/web/md.html,sha256=qnJpj_5-MoVYr9j5Rhy7dS40wctqdWbjELmNa-J9cUY,4110
65
+ copyparty/web/md.html,sha256=35oLUnDYsAdiW7Zg-iKFEXzEl_bGbnoAxUrNgJL46_o,4119
66
66
  copyparty/web/md.js.gz,sha256=AHRQ3a-PZq_UiGh4CjNwXRllJCvA0IqqYmeHhFWhCig,4179
67
67
  copyparty/web/md2.css.gz,sha256=uIVHKScThdbcfhXNSHgKZnALYpxbnXC-WuEzOJ20Lpc,699
68
68
  copyparty/web/md2.js.gz,sha256=8xLixaTfTXC808538OOSLhp9AqKowYaunjDeBsbiBEw,8350
69
69
  copyparty/web/mde.css.gz,sha256=2SkAEDKIRPqywNJ8t_heQaeBQ_R73Rf-pQI_bDoKF6o,942
70
- copyparty/web/mde.html,sha256=FMMq4ySXoOrQV5E836KmQCry3COOhMu0DSstAdJZL_g,1678
70
+ copyparty/web/mde.html,sha256=v0MsEinom5LmZzUM-Ht26IEUkrFzMX57XpCyIQXctAg,1687
71
71
  copyparty/web/mde.js.gz,sha256=kN2eUSvr4mFuksfK4-4LimJmWdwsao39Sea2lWtu8L0,2224
72
72
  copyparty/web/msg.css.gz,sha256=u90fXYAVrMD-jqwf5XFVC1ptSpSHZUe8Mez6PX101P8,300
73
- copyparty/web/msg.html,sha256=XDg51WLO7RruZnoFnKpeJ33k47-tBHP3bR7l55Jwre4,896
73
+ copyparty/web/msg.html,sha256=HcBeXXpcF2JKwcj8KD3dGCvONMnTZ6lXYmm4SYgBMlA,905
74
74
  copyparty/web/splash.css.gz,sha256=zgDs-SY3VrInsXeARRPcGHziVOUs-1hUtSObzybwD1g,1006
75
- copyparty/web/splash.html,sha256=mPhMBTO3BMaie5lGJGloS6b8HhoujUzDZYAosfDX8fg,3846
76
- copyparty/web/splash.js.gz,sha256=2R8UYlAN8WpIABg8clgWckWqgD8nKtz3eGZFu2y1g88,1420
77
- copyparty/web/svcs.html,sha256=s7vUSrCrELC3iTemksodRBhQpssO7s4xW1vA-CX6vU8,11702
75
+ copyparty/web/splash.html,sha256=z5OrfZqA5RBxeY86BJiQ5NZNHIIDHDvPlTuht-Q0v64,3917
76
+ copyparty/web/splash.js.gz,sha256=kPLyo_LaoEdRswRNHU32G4rQY8x5Jes4iAIIvK2ug9U,1442
77
+ copyparty/web/svcs.html,sha256=Lniv3ndzV1ALGOdvMNKg6za5rafrqltuwoknYbExRxM,11711
78
78
  copyparty/web/svcs.js.gz,sha256=k81ZvZ3I-f4fMHKrNGGOgOlvXnCBz0mVjD-8mieoWCA,520
79
79
  copyparty/web/ui.css.gz,sha256=skuzZHqTU0ag5hButpQmKI9wM7ro-UJ2PnpTodTWYF4,2616
80
- copyparty/web/up2k.js.gz,sha256=ZuxLQW8mJSvLu_Aa8fDT3F9rptuAzNDmaOLd0MeMrd8,22114
81
- copyparty/web/util.js.gz,sha256=3Ys57MotfGguhuCdDhj3afyX8wlz3ZgG5ZrnY4_Zqcw,14377
80
+ copyparty/web/up2k.js.gz,sha256=3IKVXjZq7byJWFKyHVylIIbWozsJ6IL7CrOUCibE8BY,22114
81
+ copyparty/web/util.js.gz,sha256=eNRKtW7fM9AvipRdJGQyy9mbQIqMda73o8Bo64UWr7s,14416
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
85
- copyparty/web/a/u2c.py,sha256=Yo_zsjBg1Op53sPFhzcbAkd-VZlm6nZ4DMVN_s0Yu2k,38469
85
+ copyparty/web/a/u2c.py,sha256=qyK4G1mkICAjmo99YV8ubi2Zk6GG8S8yldW6D18Pnos,38626
86
86
  copyparty/web/a/webdav-cfg.bat,sha256=Y4NoGZlksAIg4cBMb7KdJrpKC6Nx97onaTl6yMjaimk,1449
87
87
  copyparty/web/dd/2.png,sha256=gJ14XFPzaw95L6z92fSq9eMPikSQyu-03P1lgiGe0_I,258
88
88
  copyparty/web/dd/3.png,sha256=4lho8Koz5tV7jJ4ODo6GMTScZfkqsT05yp48EDFIlyg,252
@@ -102,9 +102,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
102
102
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
103
103
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
104
104
  copyparty/web/deps/sha512.hw.js.gz,sha256=vqoXeracj-99Z5MfY3jK2N4WiSzYQdfjy0RnUlQDhSU,8110
105
- copyparty-1.12.2.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
106
- copyparty-1.12.2.dist-info/METADATA,sha256=CXx9dAVjA9andahLVjyqMzqKeOVzLch9fj3D5GfyQP0,118373
107
- copyparty-1.12.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
108
- copyparty-1.12.2.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
109
- copyparty-1.12.2.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
110
- copyparty-1.12.2.dist-info/RECORD,,
105
+ copyparty-1.13.1.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
106
+ copyparty-1.13.1.dist-info/METADATA,sha256=HMm1ZQpKi3_hfKuT0-Rowdv0kdJXGsK2AK4YU7yaW7Q,122167
107
+ copyparty-1.13.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
108
+ copyparty-1.13.1.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
109
+ copyparty-1.13.1.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
110
+ copyparty-1.13.1.dist-info/RECORD,,