copyparty 1.19.7__py3-none-any.whl → 1.19.9__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.
Files changed (67) hide show
  1. copyparty/__init__.py +2 -0
  2. copyparty/__main__.py +60 -27
  3. copyparty/__version__.py +2 -2
  4. copyparty/authsrv.py +195 -14
  5. copyparty/bos/bos.py +38 -2
  6. copyparty/cfg.py +6 -0
  7. copyparty/ftpd.py +7 -25
  8. copyparty/httpcli.py +84 -34
  9. copyparty/httpsrv.py +1 -1
  10. copyparty/mdns.py +3 -1
  11. copyparty/mtag.py +0 -1
  12. copyparty/smbd.py +1 -1
  13. copyparty/svchub.py +38 -3
  14. copyparty/tcpsrv.py +4 -0
  15. copyparty/u2idx.py +29 -4
  16. copyparty/up2k.py +63 -29
  17. copyparty/util.py +49 -24
  18. copyparty/web/a/partyfuse.py +19 -11
  19. copyparty/web/a/u2c.py +6 -4
  20. copyparty/web/baguettebox.js.gz +0 -0
  21. copyparty/web/browser.css.gz +0 -0
  22. copyparty/web/browser.html +1 -1
  23. copyparty/web/browser.js.gz +0 -0
  24. copyparty/web/dbg-audio.js.gz +0 -0
  25. copyparty/web/deps/busy.mp3.gz +0 -0
  26. copyparty/web/deps/easymde.css.gz +0 -0
  27. copyparty/web/deps/easymde.js.gz +0 -0
  28. copyparty/web/deps/marked.js.gz +0 -0
  29. copyparty/web/deps/mini-fa.css.gz +0 -0
  30. copyparty/web/deps/prism.css.gz +0 -0
  31. copyparty/web/deps/prism.js.gz +0 -0
  32. copyparty/web/deps/prismd.css.gz +0 -0
  33. copyparty/web/deps/scp.woff2 +0 -0
  34. copyparty/web/deps/sha512.ac.js.gz +0 -0
  35. copyparty/web/idp.html +5 -5
  36. copyparty/web/md.css.gz +0 -0
  37. copyparty/web/md.html +1 -1
  38. copyparty/web/md.js.gz +0 -0
  39. copyparty/web/md2.css.gz +0 -0
  40. copyparty/web/md2.js.gz +0 -0
  41. copyparty/web/mde.css.gz +0 -0
  42. copyparty/web/mde.html +1 -1
  43. copyparty/web/mde.js.gz +0 -0
  44. copyparty/web/msg.css.gz +0 -0
  45. copyparty/web/msg.html +1 -1
  46. copyparty/web/rups.css.gz +0 -0
  47. copyparty/web/rups.html +1 -1
  48. copyparty/web/rups.js.gz +0 -0
  49. copyparty/web/shares.css.gz +0 -0
  50. copyparty/web/shares.html +5 -5
  51. copyparty/web/shares.js.gz +0 -0
  52. copyparty/web/splash.css.gz +0 -0
  53. copyparty/web/splash.html +54 -38
  54. copyparty/web/splash.js.gz +0 -0
  55. copyparty/web/svcs.html +80 -39
  56. copyparty/web/svcs.js.gz +0 -0
  57. copyparty/web/ui.css.gz +0 -0
  58. copyparty/web/up2k.js.gz +0 -0
  59. copyparty/web/util.js.gz +0 -0
  60. copyparty/web/w.hash.js.gz +0 -0
  61. {copyparty-1.19.7.dist-info → copyparty-1.19.9.dist-info}/METADATA +12 -1
  62. copyparty-1.19.9.dist-info/RECORD +113 -0
  63. copyparty-1.19.7.dist-info/RECORD +0 -113
  64. {copyparty-1.19.7.dist-info → copyparty-1.19.9.dist-info}/WHEEL +0 -0
  65. {copyparty-1.19.7.dist-info → copyparty-1.19.9.dist-info}/entry_points.txt +0 -0
  66. {copyparty-1.19.7.dist-info → copyparty-1.19.9.dist-info}/licenses/LICENSE +0 -0
  67. {copyparty-1.19.7.dist-info → copyparty-1.19.9.dist-info}/top_level.txt +0 -0
copyparty/web/svcs.html CHANGED
@@ -10,7 +10,7 @@
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}.txa{float:right;margin:0 0 0 1em}</style>
13
- {{ html_head }}
13
+ {{- html_head }}
14
14
  </head>
15
15
 
16
16
  <body>
@@ -31,10 +31,10 @@
31
31
  <br />
32
32
  <span class="os win lin mac">placeholders:</span>
33
33
  <span class="os win">
34
- {% if accs %}<code><b id="pw0">{{ pw }}</b></code>=password, {% endif %}<code><b>W:</b></code>=mountpoint
34
+ {% if accs %}{% if un %}<code><b id="un0">{{ un }}</b></code>=username, <code><b id="up0">{{ unpw }}</b></code>=username:password, {% endif %}<code><b id="pw0">{{ pw }}</b></code>=password, {% endif %}<code><b>W:</b></code>=mountpoint
35
35
  </span>
36
36
  <span class="os lin mac">
37
- {% if accs %}<code><b id="pw0">{{ pw }}</b></code>=password, {% endif %}<code><b>mp</b></code>=mountpoint
37
+ {% if accs %}{% if un %}<code><b id="un0">{{ un }}</b></code>=username, <code><b id="up0">{{ unpw }}</b></code>=username:password, {% endif %}<code><b id="pw0">{{ pw }}</b></code>=password, {% endif %}<code><b>mp</b></code>=mountpoint
38
38
  </span>
39
39
  {% if accs %}<a href="#" id="setpw">use real password</a>{% endif %}
40
40
  <a href="#" id="qr">show qr</a>
@@ -44,7 +44,7 @@
44
44
 
45
45
  {% if args.have_idp_hdrs %}
46
46
  <p style="line-height:2em"><b>WARNING:</b> this server is using IdP-based authentication, so this stuff may not work as advertised. Depending on server config, these commands can probably only be used to access areas which don't require authentication, unless you auth using any non-IdP accounts defined in the copyparty config. Please see <a href="https://github.com/9001/copyparty/blob/hovudstraum/docs/idp.md#connecting-webdav-clients">the IdP docs</a></p>
47
- {% endif %}
47
+ {%- endif %}
48
48
 
49
49
 
50
50
 
@@ -54,50 +54,64 @@
54
54
  <div class="os win">
55
55
  <p>if you can, install <a href="https://winfsp.dev/rel/">winfsp</a>+<a href="https://downloads.rclone.org/rclone-current-windows-amd64.zip">rclone</a> and then paste this in cmd:</p>
56
56
  <pre>
57
- rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=owncloud pacer_min_sleep=0.01ms{% if accs %} user=k pass=<b>{{ pw }}</b>{% endif %}
57
+ rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=owncloud pacer_min_sleep=0.01ms{% if accs %} user={{ b_un }} pass=<b>{{ pw }}</b>{% endif %}
58
58
  rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-dav:{{ rvp }} <b>W:</b>
59
59
  </pre>
60
60
  <ul>
61
- {% if s %}
61
+ {%- if s %}
62
62
  <li>running <code>rclone mount</code> on LAN (or just dont have valid certificates)? add <code>--no-check-certificate</code></li>
63
- {% endif %}
63
+ {%- endif %}
64
64
  <li>old version of rclone? replace all <code>=</code> with <code>&nbsp;</code> (space)</li>
65
65
  </ul>
66
66
 
67
67
  <p>if you want to use the native WebDAV client in windows instead (slow and buggy), first run <a href="{{ r }}/.cpr/a/webdav-cfg.bat">webdav-cfg.bat</a> to remove the 47 MiB filesize limit (also fixes latency and password login), then connect:</p>
68
68
  <pre>
69
+ {%- if un %}
70
+ net use <b>w:</b> http{{ s }}://{{ ep }}/{{ rvp }}{% if accs %} <b>{{ pw }}</b> /user:{{ b_un }}{% endif %}
71
+ {%- else %}
69
72
  net use <b>w:</b> http{{ s }}://{{ ep }}/{{ rvp }}{% if accs %} k /user:<b>{{ pw }}</b>{% endif %}
73
+ {%- endif %}
70
74
  </pre>
71
75
  </div>
72
76
 
73
77
  <div class="os lin">
74
78
  <p>rclone (v1.63 or later) is recommended:</p>
75
79
  <pre>
76
- rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=owncloud pacer_min_sleep=0.01ms{% if accs %} user=k pass=<b>{{ pw }}</b>{% endif %}
80
+ rclone config create {{ aname }}-dav webdav url=http{{ s }}://{{ rip }}{{ hport }} vendor=owncloud pacer_min_sleep=0.01ms{% if accs %} user={{ b_un }} pass=<b>{{ pw }}</b>{% endif %}
77
81
  rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-dav:{{ rvp }} <b>mp</b>
78
82
  </pre>
79
83
  <ul>
80
- {% if s %}
84
+ {%- if s %}
81
85
  <li>running <code>rclone mount</code> on LAN (or just dont have valid certificates)? add <code>--no-check-certificate</code></li>
82
- {% endif %}
86
+ {%- endif %}
83
87
  <li>running <code>rclone mount</code> as root? add <code>--allow-other</code></li>
84
88
  <li>old version of rclone? replace all <code>=</code> with <code>&nbsp;</code> (space)</li>
85
89
  </ul>
86
90
  <p>alternatively use davfs2 (requires root, is slower, forgets lastmodified-timestamp on upload):</p>
87
91
  <pre>
88
92
  yum install davfs2
93
+ {%- if un %}
94
+ {% if accs %}printf '%s\n' {{ b_un }} <b>{{ pw }}</b> | {% endif %}mount -t davfs -ouid=1000 http{{ s }}://{{ ep }}/{{ rvp }} <b>mp</b>
95
+ {%- else %}
89
96
  {% if accs %}printf '%s\n' <b>{{ pw }}</b> k | {% endif %}mount -t davfs -ouid=1000 http{{ s }}://{{ ep }}/{{ rvp }} <b>mp</b>
97
+ {%- endif %}
90
98
  </pre>
99
+ {%- if accs %}
91
100
  <p>make davfs2 automount on boot:</p>
92
101
  <pre>
102
+ {%- if un %}
103
+ printf '%s\n' "http{{ s }}://{{ ep }}/{{ rvp }} {{ b_un }} <b>{{ pw }}</b>" >> /etc/davfs2/secrets
104
+ {%- else %}
93
105
  printf '%s\n' "http{{ s }}://{{ ep }}/{{ rvp }} <b>{{ pw }}</b> k" >> /etc/davfs2/secrets
106
+ {%- endif %}
94
107
  printf '%s\n' "http{{ s }}://{{ ep }}/{{ rvp }} <b>mp</b> davfs rw,user,uid=1000,noauto 0 0" >> /etc/fstab
95
108
  </pre>
109
+ {%- endif %}
96
110
  <p>or the emergency alternative (gnome/gui-only):</p>
97
111
  <!-- gnome-bug: ignores vp -->
98
112
  <pre>
99
113
  {%- if accs %}
100
- echo <b>{{ pw }}</b> | gio mount dav{{ s }}://k@{{ ep }}/{{ rvp }}
114
+ echo <b>{{ pw }}</b> | gio mount dav{{ s }}://{{ b_un }}@{{ ep }}/{{ rvp }}
101
115
  {%- else %}
102
116
  gio mount -a dav{{ s }}://{{ ep }}/{{ rvp }}
103
117
  {%- endif %}
@@ -107,18 +121,18 @@
107
121
 
108
122
  <div class="os mac">
109
123
  <pre>
110
- osascript -e ' mount volume "http{{ s }}://k:<b>{{ pw }}</b>@{{ ep }}/{{ rvp }}" '
124
+ osascript -e ' mount volume "http{{ s }}://{{ b_un }}:<b>{{ pw }}</b>@{{ ep }}/{{ rvp }}" '
111
125
  </pre>
112
126
  <p>or you can open up a Finder, press command-K and paste this instead:</p>
113
127
  <pre>
114
- http{{ s }}://k:<b>{{ pw }}</b>@{{ ep }}/{{ rvp }}
128
+ http{{ s }}://{{ b_un }}:<b>{{ pw }}</b>@{{ ep }}/{{ rvp }}
115
129
  </pre>
116
130
 
117
- {% if s %}
131
+ {%- if s %}
118
132
  <p><em>replace <code>https</code> with <code>http</code> if it doesn't work</em></p>
119
- {% endif %}
133
+ {%- endif %}
120
134
  </div>
121
- {% endif %}
135
+ {%- endif %}
122
136
 
123
137
 
124
138
 
@@ -127,51 +141,71 @@
127
141
 
128
142
  <div class="os win">
129
143
  <p>if you can, install <a href="https://winfsp.dev/rel/">winfsp</a>+<a href="https://downloads.rclone.org/rclone-current-windows-amd64.zip">rclone</a> and then paste this in cmd:</p>
130
- {% if args.ftp %}
144
+ {%- if args.ftp %}
131
145
  <p>connect with plaintext FTP:</p>
132
146
  <pre>
147
+ {%- if un %}
148
+ rclone config create {{ aname }}-ftp ftp host={{ rip }} port={{ args.ftp }} user={% if accs %}{{ b_un }} pass=<b>{{ pw }}</b>{% else %}anonymous pass=k{% endif %} tls=false
149
+ {%- else %}
133
150
  rclone config create {{ aname }}-ftp ftp host={{ rip }} port={{ args.ftp }} pass=k user={% if accs %}<b>{{ pw }}</b>{% else %}anonymous{% endif %} tls=false
151
+ {%- endif %}
134
152
  rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-ftp:{{ rvp }} <b>W:</b>
135
153
  </pre>
136
- {% endif %}
137
- {% if args.ftps %}
154
+ {%- endif %}
155
+ {%- if args.ftps %}
138
156
  <p>connect with TLS-encrypted FTPS:</p>
139
157
  <pre>
158
+ {%- if un %}
159
+ rclone config create {{ aname }}-ftps ftp host={{ rip }} port={{ args.ftps }} user={% if accs %}{{ b_un }} pass=<b>{{ pw }}</b>{% else %}anonymous pass=k{% endif %} tls=false explicit_tls=true
160
+ {%- else %}
140
161
  rclone config create {{ aname }}-ftps ftp host={{ rip }} port={{ args.ftps }} pass=k user={% if accs %}<b>{{ pw }}</b>{% else %}anonymous{% endif %} tls=false explicit_tls=true
162
+ {%- endif %}
141
163
  rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-ftps:{{ rvp }} <b>W:</b>
142
164
  </pre>
143
- {% endif %}
165
+ {%- endif %}
144
166
  <ul>
145
- {% if args.ftps %}
167
+ {%- if args.ftps %}
146
168
  <li>running on LAN (or just dont have valid certificates)? add <code>no_check_certificate=true</code> to the config command</li>
147
- {% endif %}
169
+ {%- endif %}
148
170
  <li>old version of rclone? replace all <code>=</code> with <code>&nbsp;</code> (space)</li>
149
171
  </ul>
150
172
  <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>
151
173
  <pre>
174
+ {%- if un %}
175
+ explorer {{ "ftp" if args.ftp else "ftps" }}://{% if accs %}{{ b_un }}:<b>{{ pw }}</b>@{% endif %}{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
176
+ {%- else %}
152
177
  explorer {{ "ftp" if args.ftp else "ftps" }}://{% if accs %}<b>{{ pw }}</b>:k@{% endif %}{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
178
+ {%- endif %}
153
179
  </pre>
154
180
  </div>
155
181
 
156
182
  <div class="os lin">
157
- {% if args.ftp %}
183
+ {%- if args.ftp %}
158
184
  <p>connect with plaintext FTP:</p>
159
185
  <pre>
186
+ {%- if un %}
187
+ rclone config create {{ aname }}-ftp ftp host={{ rip }} port={{ args.ftp }} user={% if accs %}{{ b_un }} pass=<b>{{ pw }}</b>{% else %}anonymous pass=k{% endif %} tls=false
188
+ {%- else %}
160
189
  rclone config create {{ aname }}-ftp ftp host={{ rip }} port={{ args.ftp }} pass=k user={% if accs %}<b>{{ pw }}</b>{% else %}anonymous{% endif %} tls=false
190
+ {%- endif %}
161
191
  rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-ftp:{{ rvp }} <b>mp</b>
162
192
  </pre>
163
- {% endif %}
164
- {% if args.ftps %}
193
+ {%- endif %}
194
+ {%- if args.ftps %}
165
195
  <p>connect with TLS-encrypted FTPS:</p>
166
196
  <pre>
197
+ {%- if un %}
198
+ rclone config create {{ aname }}-ftps ftp host={{ rip }} port={{ args.ftps }} user={% if accs %}{{ b_un }} pass=<b>{{ pw }}</b>{% else %}anonymous pass=k{% endif %} tls=false explicit_tls=true
199
+ {%- else %}
167
200
  rclone config create {{ aname }}-ftps ftp host={{ rip }} port={{ args.ftps }} pass=k user={% if accs %}<b>{{ pw }}</b>{% else %}anonymous{% endif %} tls=false explicit_tls=true
201
+ {%- endif %}
168
202
  rclone mount --vfs-cache-mode writes --dir-cache-time 5s {{ aname }}-ftps:{{ rvp }} <b>mp</b>
169
203
  </pre>
170
- {% endif %}
204
+ {%- endif %}
171
205
  <ul>
172
- {% if args.ftps %}
206
+ {%- if args.ftps %}
173
207
  <li>running on LAN (or just dont have valid certificates)? add <code>no_check_certificate=true</code> to the config command</li>
174
- {% endif %}
208
+ {%- endif %}
175
209
  <li>running <code>rclone mount</code> as root? add <code>--allow-other</code></li>
176
210
  <li>old version of rclone? replace all <code>=</code> with <code>&nbsp;</code> (space)</li>
177
211
  </ul>
@@ -179,7 +213,7 @@
179
213
  <!-- gnome-bug: ignores vp -->
180
214
  <pre>
181
215
  {%- if accs %}
182
- echo <b>{{ pw }}</b> | gio mount ftp{{ "" if args.ftp else "s" }}://k@{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
216
+ echo <b>{{ pw }}</b> | gio mount ftp{{ "" if args.ftp else "s" }}://{{ b_un }}@{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
183
217
  {%- else %}
184
218
  gio mount -a ftp{{ "" if args.ftp else "s" }}://{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
185
219
  {%- endif %}
@@ -189,10 +223,10 @@
189
223
  <div class="os mac">
190
224
  <p>note: FTP is read-only on macos; please use WebDAV instead</p>
191
225
  <pre>
192
- open {{ "ftp" if args.ftp else "ftps" }}://{% if accs %}k:<b>{{ pw }}</b>@{% else %}anonymous:@{% endif %}{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
226
+ open {{ "ftp" if args.ftp else "ftps" }}://{% if accs %}{{ b_un }}:<b>{{ pw }}</b>@{% else %}anonymous:@{% endif %}{{ host }}:{{ args.ftp or args.ftps }}/{{ rvp }}
193
227
  </pre>
194
228
  </div>
195
- {% endif %}
229
+ {%- endif %}
196
230
 
197
231
 
198
232
 
@@ -204,11 +238,11 @@
204
238
  <span class="os lin">doesn't need root</span>
205
239
  </p>
206
240
  <pre>
207
- partyfuse.py{% if accs %} -a <b>{{ pw }}</b>{% endif %} http{{ s }}://{{ ep }}/{{ rvp }} <b><span class="os win">W:</span><span class="os lin mac">mp</span></b>
241
+ partyfuse.py{% if accs %} -a <b>{{ unpw }}</b>{% endif %} http{{ s }}://{{ ep }}/{{ rvp }} <b><span class="os win">W:</span><span class="os lin mac">mp</span></b>
208
242
  </pre>
209
- {% if s %}
243
+ {%- if s %}
210
244
  <ul><li>if you are on LAN (or just dont have valid certificates), add <code>-td</code></li></ul>
211
- {% endif %}
245
+ {%- endif %}
212
246
  <p>
213
247
  you can use <a href="{{ r }}/.cpr/a/u2c.py">u2c.py</a> to upload (sometimes faster than web-browsers)
214
248
  </p>
@@ -217,6 +251,10 @@
217
251
  {% if args.smb %}
218
252
  <h1>SMB / CIFS</h1>
219
253
 
254
+ {%- if un %}
255
+ <h2>not available on this server because <code>--usernames</code> is enabled in the server config</h2>
256
+ {%- else %}
257
+
220
258
  <div class="os win">
221
259
  <pre>
222
260
  net use <b>w:</b> \\{{ host }}\a{% if accs %} k /user:<b>{{ pw }}</b>{% endif %}
@@ -234,7 +272,8 @@
234
272
  <pre class="os mac">
235
273
  open 'smb://<b>{{ pw }}</b>:k@{{ host }}/a'
236
274
  </pre>
237
- {% endif %}
275
+ {%- endif %}
276
+ {%- endif %}
238
277
 
239
278
 
240
279
 
@@ -247,7 +286,7 @@
247
286
  { "Version": "15.0.0", "Name": "copyparty",
248
287
  "RequestURL": "http{{ s }}://{{ ep }}/{{ rvp }}",
249
288
  "Headers": {
250
- {% if accs %}"pw": "<b>{{ pw }}</b>", {% endif %}"accept": "url"
289
+ {% if accs %}"pw": "<b>{{ unpw }}</b>", {% endif %}"accept": "url"
251
290
  },
252
291
  "DestinationType": "ImageUploader, TextUploader, FileUploader",
253
292
  "Body": "MultipartFormData", "URL": "{response}",
@@ -260,7 +299,7 @@
260
299
  { "Name": "copyparty",
261
300
  "RequestURL": "http{{ s }}://{{ ep }}/{{ rvp }}",
262
301
  "Headers": {
263
- {% if accs %}"pw": "<b>{{ pw }}</b>", {% endif %}"accept": "url"
302
+ {% if accs %}"pw": "<b>{{ unpw }}</b>", {% endif %}"accept": "url"
264
303
  },
265
304
  "DestinationType": "ImageUploader, TextUploader, FileUploader",
266
305
  "FileFormName": "f" }
@@ -278,7 +317,9 @@
278
317
  { "Name": "copyparty",
279
318
  "RequestURL": "http{{ s }}://{{ ep }}/{{ rvp }}",
280
319
  "Headers": {
281
- {% if accs %}"pw": "<b>{{ pw }}</b>",{% endif %}
320
+ {%- if accs %}
321
+ "pw": "<b>{{ unpw }}</b>",
322
+ {%- endif %}
282
323
  "accept": "json"
283
324
  },
284
325
  "ResponseURL": "{{ '{{fileurl}}' }}",
@@ -295,7 +336,7 @@
295
336
 
296
337
  <pre class="dl" name="flameshot.sh">
297
338
  #!/bin/bash
298
- pw="<b>{{ pw }}</b>"
339
+ pw="<b>{{ unpw }}</b>"
299
340
  url="http{{ s }}://{{ ep }}/{{ rvp }}"
300
341
  filename="$(date +%Y-%m%d-%H%M%S).png"
301
342
  flameshot gui -s -r | curl -sT- "$url$filename?want=url&pw=$pw" | xsel -ib
copyparty/web/svcs.js.gz CHANGED
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
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: copyparty
3
- Version: 1.19.7
3
+ Version: 1.19.9
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
@@ -1393,6 +1393,8 @@ some recommended FTP / FTPS clients; `wark` = example password:
1393
1393
  * https://rclone.org/ does FTPS with `tls=false explicit_tls=true`
1394
1394
  * `lftp -u k,wark -p 3921 127.0.0.1 -e ls`
1395
1395
  * `lftp -u k,wark -p 3990 127.0.0.1 -e 'set ssl:verify-certificate no; ls'`
1396
+ * `curl ftp://127.0.0.1:3921/` (plaintext ftp)
1397
+ * `curl --ssl-reqd ftp://127.0.0.1:3990/` (encrypted ftps)
1396
1398
 
1397
1399
  config file example, which restricts FTP to only use ports 3921 and 12000-12099 so all of those ports must be opened in your firewall:
1398
1400
 
@@ -2005,6 +2007,10 @@ you can disable the built-in password-based login system, and instead replace it
2005
2007
 
2006
2008
  * the regular config-defined users will be used as a fallback for requests which don't include a valid (trusted) IdP username header
2007
2009
 
2010
+ * `--auth-ord` configured auth precedence, for example to allow overriding the IdP with a copyparty password
2011
+
2012
+ * the login/logout links/buttons can be replaced with links to your IdP with `--idp-login` and `--idp-logout` , for example `--idp-login /idp/login/?redir={dst}` will expand `{dst}` to the page the user was on when clicking Login
2013
+
2008
2014
  * if your IdP-server is slow, consider `--idp-cookie` and let requests with the cookie `cppws` bypass the IdP; experimental sessions-based feature added for a party
2009
2015
 
2010
2016
  some popular identity providers are [Authelia](https://www.authelia.com/) (config-file based) and [authentik](https://goauthentik.io/) (GUI-based, more complex)
@@ -2381,6 +2387,7 @@ buggy feature? rip it out by setting any of the following environment variables
2381
2387
  | `PRTY_NO_SQLITE` | disable all database-related functionality (file indexing, metadata indexing, most file deduplication logic) |
2382
2388
  | `PRTY_NO_TLS` | disable native HTTPS support; if you still want to accept HTTPS connections then TLS must now be terminated by a reverse-proxy |
2383
2389
  | `PRTY_NO_TPOKE` | disable systemd-tmpfilesd avoider |
2390
+ | `PRTY_UNSAFE_STATE` | allow storing secrets into emergency-fallback locations |
2384
2391
 
2385
2392
  example: `PRTY_NO_IFADDR=1 python3 copyparty-sfx.py`
2386
2393
 
@@ -2763,6 +2770,10 @@ below are some tweaks roughly ordered by usefulness:
2763
2770
  * using [pypy](https://www.pypy.org/) instead of [cpython](https://www.python.org/) *can* be 70% faster for some workloads, but slower for many others
2764
2771
  * and pypy can sometimes crash on startup with `-j0` (TODO make issue)
2765
2772
 
2773
+ * if you are running the copyparty server **on Windows or Macos:**
2774
+ * `--casechk=y` makes it much faster, but also awakens [the usual surprises](https://github.com/9001/copyparty/issues/781) you expect from a case-insensitive filesystem
2775
+ * this is the same as `casechk: n` in a config-file
2776
+
2766
2777
 
2767
2778
  ## client-side
2768
2779
 
@@ -0,0 +1,113 @@
1
+ copyparty/__init__.py,sha256=8nHuSqcIwZvExA-66pV6slJnDEunE8LwlmGzYnGnDBU,2647
2
+ copyparty/__main__.py,sha256=b0eURrybXQRskCWSK4Y0wR2Su6tRHgFd2CAbNWLqvK4,144217
3
+ copyparty/__version__.py,sha256=x0kGBgJD-lVB_8ZPEnHxRPxds_whwQbXlPRKJh2kCKk,251
4
+ copyparty/authsrv.py,sha256=ccWyDpc4Pk07iRd7Zjs7GA8FDU1BXTsNQ6yj4DvXIV0,132201
5
+ copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
+ copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
7
+ copyparty/broker_thr.py,sha256=fjoYtpSscUA7-nMl4r1n2R7UK3J9lrvLS3rUZ-iJzKQ,1721
8
+ copyparty/broker_util.py,sha256=oZ3dGdJXLYvmdV4KSFdUv_PGErkgU-7kgr1SIglkjCU,1663
9
+ copyparty/cert.py,sha256=OGTUBxhqPbseG0Bd4cHD6e5T5T8JdGqp3q0KAYqX0Cc,8031
10
+ copyparty/cfg.py,sha256=xIZH90TbOb9AnTOfx_v-cx6ONQce_TL9tKp9srNxx2g,16455
11
+ copyparty/dxml.py,sha256=VZADJS9z18LalENSvVfjk29ddnpaDQ-v8AVm_THwS1c,2607
12
+ copyparty/fsutil.py,sha256=NC_CJC4TDag399vVDH9_uQfdfpTMwRFLNxERSWhlVvs,4594
13
+ copyparty/ftpd.py,sha256=XtHvgtZPSMm0YMTCeKrElb8ZeIceHWskM16B3HyRXjQ,18264
14
+ copyparty/httpcli.py,sha256=K-qyKwk9QChYTwqHcGFqugbCRni4YfswWT4yopk0Yf4,240218
15
+ copyparty/httpconn.py,sha256=IA9fdCjigawZ4kWhgvVN3nSiy5pb3W2qaE6rFqUYdq0,6943
16
+ copyparty/httpsrv.py,sha256=tza1m3Ob8A_iPjJBRoh9O_8ruAM7l3bJ905GsHsVf2A,19039
17
+ copyparty/ico.py,sha256=-7QjF_jIxnPo4Vr0oUPksQ_U_Ef0HRsSPm3s71idOz8,3879
18
+ copyparty/mdns.py,sha256=u0G1ho1Pqks5dtgsyn3qctgRhGHk3ufQ3Y8HJ2l4Nhk,18422
19
+ copyparty/metrics.py,sha256=1dim0ShnsD5cfspRbeN9Mt14wOIxPRtxCZY2IScikKw,8974
20
+ copyparty/mtag.py,sha256=fz0QXGc4F63iormFLkFCDtpSNmo6aDX5DmtkHBbovow,22803
21
+ copyparty/multicast.py,sha256=xjCBHbbFI7XEohXxgBCAeExkzXJede6TLc5oR7ov5vM,12322
22
+ copyparty/pwhash.py,sha256=58txP8GXIHOtWd__Tni8qkilHEGpOFsKIPuzjdFLc6M,4426
23
+ copyparty/smbd.py,sha256=1iLbJMwG84EswYOe2irTc-CSJkzkM3Tq4cuqRFJDHII,14671
24
+ copyparty/ssdp.py,sha256=R1Z61GZOxBMF2Sk4RTxKWMOemogmcjEWG-CvLihd45k,7023
25
+ copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
26
+ copyparty/sutil.py,sha256=E65jAaOzHlJYnqsOKDMPVT8kALPUVexpkSStWBdItkY,3231
27
+ copyparty/svchub.py,sha256=PTExaPzyztOHsMamPp-HNH8JKLdd4QSORNEov5KuPrA,54171
28
+ copyparty/szip.py,sha256=9srQzjsTBrBadf6QMh4YRAL70rkZLevAOHqXWK5jvr8,8846
29
+ copyparty/tcpsrv.py,sha256=v3L4vpNwLC-gZjXEdeyS2QyCujYjnGz8FnGfnRKIZzI,22099
30
+ copyparty/tftpd.py,sha256=fXW0w2_fSbzKVQGTLgr4DbtxaIEfwB591bl0pYhwy6k,14272
31
+ copyparty/th_cli.py,sha256=n3MMbnN7HTVSBHkTI2qLIjgwVvHkGsfTW7-aPJ-2o4s,5545
32
+ copyparty/th_srv.py,sha256=iAWBHgtAaYAshXdCFrUx7IWq4y3NXrH79yzHChsy2dc,38335
33
+ copyparty/u2idx.py,sha256=YiacETpyncxHcyzhu3ltujovdLV7PPC7pZ3Tkwtwoj8,14437
34
+ copyparty/up2k.py,sha256=__FwjSxXh1r8IywPqHU4118FCqZ_BQMuHGtuaZ_UnlQ,182779
35
+ copyparty/util.py,sha256=g4eCa23uoz7rVPEOj6dAyuYZ3xwVIHv7AUUmYvtqvW4,109002
36
+ copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ copyparty/bos/bos.py,sha256=aGnph4sLIXe7-SFLo5qo1V67Ab1ZtgiUNbAN8EnHvkA,3371
38
+ copyparty/bos/path.py,sha256=yEjCq2ki9CvxA5sCT8pS0keEXwugs0ZeUyUhdBziOCI,777
39
+ copyparty/res/COPYING.txt,sha256=1LnBxkwJuC8mRBxuoMF2UIcpCjcteIzFHotSUE1Xte0,9776
40
+ copyparty/res/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ copyparty/res/insecure.pem,sha256=FEt7jgrn6ZHTlFopq_LFAN027YIoaHi0HQFBbzYnEwc,2876
42
+ copyparty/stolen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
+ copyparty/stolen/qrcodegen.py,sha256=geqrtLSPPjXy8kB7W9Sqj6-_Y55lOEDFAc-MgKBkkNQ,22648
44
+ copyparty/stolen/surrogateescape.py,sha256=-ZfRWrbgJrh74dXfXLNMvo_iiCVUhXbFs_anHIrWPts,5573
45
+ copyparty/stolen/dnslib/__init__.py,sha256=SmYdaHdL5czxKxrOFGvzbfmojOthRky1GXKgmWj4QeM,159
46
+ copyparty/stolen/dnslib/bimap.py,sha256=j_ah40P3kOw0AQT5vvMcv7XbMtS0jV6Oe9YGCh7J57s,1182
47
+ copyparty/stolen/dnslib/bit.py,sha256=uDECHT5wM-QObxxRgc4lJq9CUcd7hglRLgs0K1X8mnU,348
48
+ copyparty/stolen/dnslib/buffer.py,sha256=bvj9rTn4EcccVuMWe1b5j57ex6elba3NCDBdevsnoSc,1407
49
+ copyparty/stolen/dnslib/dns.py,sha256=wEaStjfDhT2RI6lS6StwDrkS40afGnbHPue1duOT3vs,21020
50
+ copyparty/stolen/dnslib/label.py,sha256=GKN4JkmZPdsHIyt70oFQYb4KB4Muh2zvGvla-6HiMQ0,5536
51
+ copyparty/stolen/dnslib/lex.py,sha256=XuXvz4PHzSaEdRRl8xnYaM8cAupzns0QW3oeFn-4isM,2615
52
+ copyparty/stolen/dnslib/ranges.py,sha256=XqR6NaRMm0xiEht590KhOjKjIuUFgW4I9_zPmPsGV0c,1810
53
+ copyparty/stolen/ifaddr/__init__.py,sha256=vpREjAyPubr5s1NJi91icXV3q1o4DrKAvHABwkoeJB0,706
54
+ copyparty/stolen/ifaddr/_posix.py,sha256=-67NdfGrCktfQPakT2fLbjl2U00QMvyBGkSvrUuTOrU,2626
55
+ copyparty/stolen/ifaddr/_shared.py,sha256=uNC4SdEIgdSLKvuUzsf1aM-H1Xrc_9mpLoOT43YukGs,6206
56
+ copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8QtZM,4026
57
+ copyparty/web/baguettebox.js.gz,sha256=IXzu3LvbDUX1XXxtN88YHPaxIoJQEN6fo3Mx9T1mgdI,8365
58
+ copyparty/web/browser.css.gz,sha256=NQJZWuyE2umXFakMrqE0Q0sVq55rORGdw_wA5PRz67o,15703
59
+ copyparty/web/browser.html,sha256=DrhMtj-FUjDM0jYhQnsOkVMc8U0bFY_6uGMIY1HB9po,4791
60
+ copyparty/web/browser.js.gz,sha256=tmGsp1xEJwM6o9ajSeIaZjQxc9FaLZUikAzM-HFe_Jk,315342
61
+ copyparty/web/browser2.html,sha256=NRUZ08GH-e2YcGXcoz0UjYg6JIVF42u4IMX4HHwWTmg,1587
62
+ copyparty/web/cf.html,sha256=lJThtNFNAQT1ClCHHlivAkDGE0LutedwopXD62Z8Nys,589
63
+ copyparty/web/dbg-audio.js.gz,sha256=fNf4wGVGdz5fDtn-97ks3XPIglTKnTKiYo4Dk2m-NoA,688
64
+ copyparty/web/idp.html,sha256=z7nHFqfhOVYKRpST6o7IRp1Jt_xnImKYCYCub5IMmiM,1486
65
+ copyparty/web/md.css.gz,sha256=z6S4rOq2ImiSOBW43MrBXEuy-4FpkE2MFDGvbn-P-y0,2032
66
+ copyparty/web/md.html,sha256=idHQhV8TYB0bWi9aBVoXGsySaQPlXZSvyFW6OSw-n18,4206
67
+ copyparty/web/md.js.gz,sha256=ZCFPnMU0dOerxO0ccUzTtDjL5_1u9jRIGZ7NoLC3q4E,4180
68
+ copyparty/web/md2.css.gz,sha256=KycVC-vV0hAOaq1OD2YiS7y8mXYgucT8tCtynW0SfIA,699
69
+ copyparty/web/md2.js.gz,sha256=SfusONhUhLmSX7LSFZIyQag4H3_LhxqiyoVLwqmEqAE,8465
70
+ copyparty/web/mde.css.gz,sha256=cXTemEFV2boL6xhRQuVVV39CaNdIynDDJTtEDzfkOXE,942
71
+ copyparty/web/mde.html,sha256=o9iRxSSxFlwHsei8zeG9hDGY0GAol-F6Hx575MyOuzI,1776
72
+ copyparty/web/mde.js.gz,sha256=nlDivV2PgbXjsJe_GCtknpb5nVfFjzv7gMd700v9dxE,2220
73
+ copyparty/web/msg.css.gz,sha256=lBx8YdzLqbqbFW8h-3gw6Daadsy83Z7EsK8TP_6oK8M,300
74
+ copyparty/web/msg.html,sha256=aS47IjsxXFTZZCNck2ip3IwYKrHoYNZstnNND2WweCA,978
75
+ copyparty/web/rups.css.gz,sha256=XV1nExg_g82bf-B6hiKxjQCYVr5_-YOPVSxkPR4bcCc,647
76
+ copyparty/web/rups.html,sha256=t7aofu0JFH2zPcYhInNytxgNJNEVycUG0QaSw0TJDZQ,1299
77
+ copyparty/web/rups.js.gz,sha256=oVAp1fCrnE6HERAAXvP9kDTkrBHQIMiJmQEtVY-TXM0,929
78
+ copyparty/web/shares.css.gz,sha256=ChgHt-2dPgvPCpwClNeijX39OWJIbwj7NBIZXLLvaT0,547
79
+ copyparty/web/shares.html,sha256=FDFMP5G7DL9B7g2SPBfbHtm83z-VXDMSnSWMsBhVLzk,2583
80
+ copyparty/web/shares.js.gz,sha256=LGgFdYhtTwBp96x6CtWZpMWrGaZW7vn5LYvIhPQqm8g,942
81
+ copyparty/web/splash.css.gz,sha256=NCtj8oXbSRIn5tL9RaswvzBSTzmCpAAqDtcgmgf3gXE,1100
82
+ copyparty/web/splash.html,sha256=6FQedU-mVZ5UEiwm-9Wq_A_UatbTf29IqN4lWtS_6n0,7463
83
+ copyparty/web/splash.js.gz,sha256=35fsbq9PAN4p67BcXzJhkupDnM6W7qn48AUGYeaFPKI,15893
84
+ copyparty/web/svcs.html,sha256=jILgJ2WZ9gWHFqOla1tXTPPrR7XI5vENctz4UWTx0Go,17577
85
+ copyparty/web/svcs.js.gz,sha256=DapO-UcJYln4VPyZ6Pwi0Lzhlyx0Hul7y7E2ephu34c,971
86
+ copyparty/web/ui.css.gz,sha256=Txx36dDbFI7_9I2LPUO40nCFnxLFKVpdkBsHFwI7JoE,2848
87
+ copyparty/web/up2k.js.gz,sha256=PzZR6mqB796ETr_EZVob0XZOrNZLo8GN3E8TYW3q7TY,25033
88
+ copyparty/web/util.js.gz,sha256=CWy_7OGcsMo4RvQE21A4UF3BIP9hRJFXPAYTGjZOX2k,15571
89
+ copyparty/web/w.hash.js.gz,sha256=rI-78PyXCdVjOpULbD9raBRyxxaPls5OjR7wonzXZPE,1193
90
+ copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ copyparty/web/a/partyfuse.py,sha256=QxBoe0iu4LTedmxWdIsuBUlwdxQ7zQh9LAFtjAFcPpo,28206
92
+ copyparty/web/a/u2c.py,sha256=F78m5b7EPODJd1LgsAxWrwj3v_4z1hGsU53UKy-wCYA,53378
93
+ copyparty/web/a/webdav-cfg.bat,sha256=Y4NoGZlksAIg4cBMb7KdJrpKC6Nx97onaTl6yMjaimk,1449
94
+ copyparty/web/deps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ copyparty/web/deps/busy.mp3.gz,sha256=ySTZiSMbGLJLioVUzUR2eEVemZQ-ACSgawJmw7lFvms,106
96
+ copyparty/web/deps/easymde.css.gz,sha256=s4eN1eVggiAyuK_LZjvHPTBFizw7TRuMU8DvMwB9_aA,3053
97
+ copyparty/web/deps/easymde.js.gz,sha256=CDSEpsMEmYXSjRTqsWmRlcZ27pTh5GvhomvKWtiNoaM,77014
98
+ copyparty/web/deps/fuse.py,sha256=6j4Zy3VpQg629pwwIW77v2LJ1hy-qlyrxwhXfKl9B7I,33426
99
+ copyparty/web/deps/marked.js.gz,sha256=_Wkf2QWv3ooEAx5xUhyHvMQHPnzevQ1Fy84OFFdVgt0,22704
100
+ copyparty/web/deps/mini-fa.css.gz,sha256=iYbmyD75m_gFaUhJBT2tk0FfMsLWZ_BArESc4nXd4tg,584
101
+ copyparty/web/deps/mini-fa.woff,sha256=L9DNncV2TIyvsrspMbJouvnnt7F068Hbn7YZYvN76AU,2784
102
+ copyparty/web/deps/prism.css.gz,sha256=XQqg2Ii9aX391H9-ozl-UdEdj0-aGsuk7cHa6Hz6Ceo,1478
103
+ copyparty/web/deps/prism.js.gz,sha256=TjgEbUZ7iLayORYkmi1LMklNJ7NIZdkQWAmPuIR7EJo,41438
104
+ copyparty/web/deps/prismd.css.gz,sha256=VPKuZhPmVyhTKHo2xN6IBX-C2A8Eo313vIPxQ2HxoI8,1648
105
+ copyparty/web/deps/scp.woff2,sha256=mmjmsoLDBPKa5VHcEdxZiJcDR1S1TOvCjIg5Cf1iL0s,8684
106
+ copyparty/web/deps/sha512.ac.js.gz,sha256=OLk7EjA5e-DtJGlV0IQbvokpmoyE5v7djezx9kZBabE,7046
107
+ copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
108
+ copyparty-1.19.9.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
109
+ copyparty-1.19.9.dist-info/METADATA,sha256=35gSIe2RmfYMrNXpmjA2wt-Irvbi01lJZhpg_vpJAlo,177645
110
+ copyparty-1.19.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
111
+ copyparty-1.19.9.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
112
+ copyparty-1.19.9.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
113
+ copyparty-1.19.9.dist-info/RECORD,,
@@ -1,113 +0,0 @@
1
- copyparty/__init__.py,sha256=SJtQjM-9PP9K-IaoM9M3iNKvRApp0omOrAN6YtXTPNM,2599
2
- copyparty/__main__.py,sha256=Z86JRc7aXw6SWsfcgxf9NF4-15rmG5byTHhyoLNY7d0,140130
3
- copyparty/__version__.py,sha256=EqiDAFRMMYEEgswJQLZ3Dw7aaQSVP5LN_wn29dshr9w,251
4
- copyparty/authsrv.py,sha256=yQHc2Lrl9yVg8bE_ZA6OukKLIS8wukm8Uvo6ANmOY8Q,126249
5
- copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
- copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
7
- copyparty/broker_thr.py,sha256=fjoYtpSscUA7-nMl4r1n2R7UK3J9lrvLS3rUZ-iJzKQ,1721
8
- copyparty/broker_util.py,sha256=oZ3dGdJXLYvmdV4KSFdUv_PGErkgU-7kgr1SIglkjCU,1663
9
- copyparty/cert.py,sha256=OGTUBxhqPbseG0Bd4cHD6e5T5T8JdGqp3q0KAYqX0Cc,8031
10
- copyparty/cfg.py,sha256=SBS3o0fQTnNy-hm97e0dzFJFcjmY8O-jiqZh6sJ3cyE,16204
11
- copyparty/dxml.py,sha256=VZADJS9z18LalENSvVfjk29ddnpaDQ-v8AVm_THwS1c,2607
12
- copyparty/fsutil.py,sha256=NC_CJC4TDag399vVDH9_uQfdfpTMwRFLNxERSWhlVvs,4594
13
- copyparty/ftpd.py,sha256=QHyrtREOD6s3P9XghZKbq0nlE1KFbpcfLhQk2pIDXGw,18797
14
- copyparty/httpcli.py,sha256=dFcDgywGgQV0AZ_LxB9Oc2N7sKrISWQIt43PuFigbdc,238501
15
- copyparty/httpconn.py,sha256=IA9fdCjigawZ4kWhgvVN3nSiy5pb3W2qaE6rFqUYdq0,6943
16
- copyparty/httpsrv.py,sha256=12j76CpAlJEeZU17CbWLnoVqoAPdv4xN48prQtE0IRs,19051
17
- copyparty/ico.py,sha256=-7QjF_jIxnPo4Vr0oUPksQ_U_Ef0HRsSPm3s71idOz8,3879
18
- copyparty/mdns.py,sha256=usQLqWfFCz8Nqr5Z1x7dtxrnx_gORWpxAGAQ9tPMS_w,18413
19
- copyparty/metrics.py,sha256=1dim0ShnsD5cfspRbeN9Mt14wOIxPRtxCZY2IScikKw,8974
20
- copyparty/mtag.py,sha256=yePCWUwiW7G90gd8AsqtDTcyRZ54wfu-ayLRu0i7Hys,22832
21
- copyparty/multicast.py,sha256=xjCBHbbFI7XEohXxgBCAeExkzXJede6TLc5oR7ov5vM,12322
22
- copyparty/pwhash.py,sha256=58txP8GXIHOtWd__Tni8qkilHEGpOFsKIPuzjdFLc6M,4426
23
- copyparty/smbd.py,sha256=x6Y0alKOoMb8GmO0HNqwvucFwUJW9ct1HKL2Bx_b6MY,14655
24
- copyparty/ssdp.py,sha256=R1Z61GZOxBMF2Sk4RTxKWMOemogmcjEWG-CvLihd45k,7023
25
- copyparty/star.py,sha256=tV5BbX6AiQ7N4UU8DYtSTckNYeoeey4DBqq4LjfymbY,3818
26
- copyparty/sutil.py,sha256=E65jAaOzHlJYnqsOKDMPVT8kALPUVexpkSStWBdItkY,3231
27
- copyparty/svchub.py,sha256=GC8yKpbnYzI-ubRH8JqC4vDXsAMGgaA_-_HOMv3kw0U,52434
28
- copyparty/szip.py,sha256=9srQzjsTBrBadf6QMh4YRAL70rkZLevAOHqXWK5jvr8,8846
29
- copyparty/tcpsrv.py,sha256=6SH5ZxBXtQF8hHgReNbvKtqgTFgLFdpgFL_lXL1khqI,21925
30
- copyparty/tftpd.py,sha256=fXW0w2_fSbzKVQGTLgr4DbtxaIEfwB591bl0pYhwy6k,14272
31
- copyparty/th_cli.py,sha256=n3MMbnN7HTVSBHkTI2qLIjgwVvHkGsfTW7-aPJ-2o4s,5545
32
- copyparty/th_srv.py,sha256=iAWBHgtAaYAshXdCFrUx7IWq4y3NXrH79yzHChsy2dc,38335
33
- copyparty/u2idx.py,sha256=mTtUKyIv9putnkDel8cttqMlZXDxb3IAga8J7e0kHls,13666
34
- copyparty/up2k.py,sha256=qVPVN6qKAT4H3eeWyirUpgF4D7yH6N-B6m-NhwdJlSw,181539
35
- copyparty/util.py,sha256=CBSe4e4-vd2zaSfjXd4H_J0tDFFwEy-DI9OjvjpTf7Y,107866
36
- copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- copyparty/bos/bos.py,sha256=DYt5mJJNt-935rU7HRm8kt_whpcVSI0uSphvD7PXrJo,2247
38
- copyparty/bos/path.py,sha256=yEjCq2ki9CvxA5sCT8pS0keEXwugs0ZeUyUhdBziOCI,777
39
- copyparty/res/COPYING.txt,sha256=1LnBxkwJuC8mRBxuoMF2UIcpCjcteIzFHotSUE1Xte0,9776
40
- copyparty/res/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- copyparty/res/insecure.pem,sha256=FEt7jgrn6ZHTlFopq_LFAN027YIoaHi0HQFBbzYnEwc,2876
42
- copyparty/stolen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- copyparty/stolen/qrcodegen.py,sha256=geqrtLSPPjXy8kB7W9Sqj6-_Y55lOEDFAc-MgKBkkNQ,22648
44
- copyparty/stolen/surrogateescape.py,sha256=-ZfRWrbgJrh74dXfXLNMvo_iiCVUhXbFs_anHIrWPts,5573
45
- copyparty/stolen/dnslib/__init__.py,sha256=SmYdaHdL5czxKxrOFGvzbfmojOthRky1GXKgmWj4QeM,159
46
- copyparty/stolen/dnslib/bimap.py,sha256=j_ah40P3kOw0AQT5vvMcv7XbMtS0jV6Oe9YGCh7J57s,1182
47
- copyparty/stolen/dnslib/bit.py,sha256=uDECHT5wM-QObxxRgc4lJq9CUcd7hglRLgs0K1X8mnU,348
48
- copyparty/stolen/dnslib/buffer.py,sha256=bvj9rTn4EcccVuMWe1b5j57ex6elba3NCDBdevsnoSc,1407
49
- copyparty/stolen/dnslib/dns.py,sha256=wEaStjfDhT2RI6lS6StwDrkS40afGnbHPue1duOT3vs,21020
50
- copyparty/stolen/dnslib/label.py,sha256=GKN4JkmZPdsHIyt70oFQYb4KB4Muh2zvGvla-6HiMQ0,5536
51
- copyparty/stolen/dnslib/lex.py,sha256=XuXvz4PHzSaEdRRl8xnYaM8cAupzns0QW3oeFn-4isM,2615
52
- copyparty/stolen/dnslib/ranges.py,sha256=XqR6NaRMm0xiEht590KhOjKjIuUFgW4I9_zPmPsGV0c,1810
53
- copyparty/stolen/ifaddr/__init__.py,sha256=vpREjAyPubr5s1NJi91icXV3q1o4DrKAvHABwkoeJB0,706
54
- copyparty/stolen/ifaddr/_posix.py,sha256=-67NdfGrCktfQPakT2fLbjl2U00QMvyBGkSvrUuTOrU,2626
55
- copyparty/stolen/ifaddr/_shared.py,sha256=uNC4SdEIgdSLKvuUzsf1aM-H1Xrc_9mpLoOT43YukGs,6206
56
- copyparty/stolen/ifaddr/_win32.py,sha256=EE-QyoBgeB7lYQ6z62VjXNaRozaYfCkaJBHGNA8QtZM,4026
57
- copyparty/web/baguettebox.js.gz,sha256=VR-MdQ11CZ1PkMW0VTv36RPLY5L1w2rDj2CY-TPfvRM,8269
58
- copyparty/web/browser.css.gz,sha256=8zQ0rWJvNPUOgOOY4EMCFh20q8S3-bDhiFi4sYx135M,15661
59
- copyparty/web/browser.html,sha256=lhelkXI8_HGfuqo_5b6XEGzf8VNodOMXE9kbv31JtbM,4790
60
- copyparty/web/browser.js.gz,sha256=qzVlbC1-8MJQ7sn6vAiLNy85x3js0d_udPWwr0fggIs,314628
61
- copyparty/web/browser2.html,sha256=NRUZ08GH-e2YcGXcoz0UjYg6JIVF42u4IMX4HHwWTmg,1587
62
- copyparty/web/cf.html,sha256=lJThtNFNAQT1ClCHHlivAkDGE0LutedwopXD62Z8Nys,589
63
- copyparty/web/dbg-audio.js.gz,sha256=Ma-KZtK8LnmiwNvNKFKXMPYl_Nn_3U7GsJ6-DRWC2HE,688
64
- copyparty/web/idp.html,sha256=qOjjvZz6fVk0W8cXiP8fXeTp5KMa_dDV7BRzJNUModo,1481
65
- copyparty/web/md.css.gz,sha256=UZpN0J7ubVM05CZkbZYkQRJeGgJt_GNDEzKTGSQd8h4,2032
66
- copyparty/web/md.html,sha256=jJ-aE6vbQiWlksAPpkqDYWNnTo8tJW1RhEXrMMmcwRg,4205
67
- copyparty/web/md.js.gz,sha256=moH1ul86OFDTfUKmN09aLVVul3RN-gjI2UxuZGcGjjI,4169
68
- copyparty/web/md2.css.gz,sha256=uIVHKScThdbcfhXNSHgKZnALYpxbnXC-WuEzOJ20Lpc,699
69
- copyparty/web/md2.js.gz,sha256=xiYIwvKscN4HxefrjkEvc2JtBUUQyEodbKDX5T26ev8,8407
70
- copyparty/web/mde.css.gz,sha256=2SkAEDKIRPqywNJ8t_heQaeBQ_R73Rf-pQI_bDoKF6o,942
71
- copyparty/web/mde.html,sha256=JnvToXsrUHwPJUkrZvt6pitrficWjIAbfBofQAVgGyU,1775
72
- copyparty/web/mde.js.gz,sha256=FQplRzzMJqC_xNb8gmzj79PrlCfcPdKIm85lM6cR-xA,2220
73
- copyparty/web/msg.css.gz,sha256=u90fXYAVrMD-jqwf5XFVC1ptSpSHZUe8Mez6PX101P8,300
74
- copyparty/web/msg.html,sha256=w9CM3hkLLGJX9fWEaG4gSbTOPe2GcPqW8BpSCDiFzOI,977
75
- copyparty/web/rups.css.gz,sha256=pWklsym27oGGr-8tYQR7WnZvGZElAgCwLzlwTDErNAM,647
76
- copyparty/web/rups.html,sha256=GHf0NOyw8HIluLxomnxvO_Eucef6MGYOaqz-aD-lSCI,1298
77
- copyparty/web/rups.js.gz,sha256=GDIEaIrxqeD6GAAEMuVJt9-Wbvagt2zxp4gDH8-Wlb0,929
78
- copyparty/web/shares.css.gz,sha256=SdPlZCBwz9tkPkgEo5pSPDOZSI079njxEfkJ64-iW3c,547
79
- copyparty/web/shares.html,sha256=ZZ9BIuzhbVtJCAZOb_PAaEY_z9jo8i93QEJolNDHX3g,2578
80
- copyparty/web/shares.js.gz,sha256=QgtzZ6oKJqGVlAEbhVCn-35F6mnwLwOmndRqlgtJd74,942
81
- copyparty/web/splash.css.gz,sha256=rumglcBttk2HVhAEoS65m2GZIQtXd4c9HOHvd82OJeg,1097
82
- copyparty/web/splash.html,sha256=91KdrAfoBZgeM8qap5J-KeTVs_O4WvtwiZYpjVBTj1o,6884
83
- copyparty/web/splash.js.gz,sha256=9h1yRUYteu7cVxcYWYG06A78YGXN5OS1AgKx3ELQg-8,15888
84
- copyparty/web/svcs.html,sha256=wGW7bwY3EIDRpp9apzJsED_UMlHX31X2H3ZnN13tWCI,14913
85
- copyparty/web/svcs.js.gz,sha256=_dvatVBMVI_iy5MnYQeZumFGAnu9lAP_WKrhOA1TYxs,852
86
- copyparty/web/ui.css.gz,sha256=0NOzup4KnBwcKGV7MZJvHaglEvLti6tgwnY4o21wMTo,2848
87
- copyparty/web/up2k.js.gz,sha256=pgj3drYXEiHOkSpcZp4ttWCqD72BpFp16cuHObl0zpo,24994
88
- copyparty/web/util.js.gz,sha256=A28FamE9n03YkSE09G4IOLvFaDZK-j5Mi-xl124JcC8,15569
89
- copyparty/web/w.hash.js.gz,sha256=cFH6Xo4YRgH9Wr7RmHMSEfpuTmmIvEmzmSvv4RLmyPU,1193
90
- copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
- copyparty/web/a/partyfuse.py,sha256=9p5Hpg_IBiSimv7j9kmPhCGpy-FLXSRUOYnLjJ5JifU,28049
92
- copyparty/web/a/u2c.py,sha256=v7YDWBh_d9NbT_-zYZABjPTSqMBCG2naF8PaLZZ2W8o,53334
93
- copyparty/web/a/webdav-cfg.bat,sha256=Y4NoGZlksAIg4cBMb7KdJrpKC6Nx97onaTl6yMjaimk,1449
94
- copyparty/web/deps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
- copyparty/web/deps/busy.mp3.gz,sha256=EVphk1_HYyRKJmtpeK99vbAstF7ub1f9ndu020H8PQ8,106
96
- copyparty/web/deps/easymde.css.gz,sha256=vWxfueI64rPikuqFj69wJBtGisqf93AheQtOZqgUI_c,3041
97
- copyparty/web/deps/easymde.js.gz,sha256=rHBs4XWQe2bmv7ZzDIk43oxnTwrwpq5laYHhV5sKQQo,77014
98
- copyparty/web/deps/fuse.py,sha256=6j4Zy3VpQg629pwwIW77v2LJ1hy-qlyrxwhXfKl9B7I,33426
99
- copyparty/web/deps/marked.js.gz,sha256=UdxHVVlpRf9k1UivWpLKVQzpzZxfK_O3pleTi_B5f8k,22704
100
- copyparty/web/deps/mini-fa.css.gz,sha256=CTPrNaH8OTVmxajrGP88E2MkjadY9_81TBVnd9sw9Y8,572
101
- copyparty/web/deps/mini-fa.woff,sha256=L9DNncV2TIyvsrspMbJouvnnt7F068Hbn7YZYvN76AU,2784
102
- copyparty/web/deps/prism.css.gz,sha256=Z_A6rJ3MN5KWnjvXaV787aTW_5DT-xjFd0YZ7_W-Krk,1468
103
- copyparty/web/deps/prism.js.gz,sha256=DR0OAfTUb6PkzSPgxjnjj7jqlpvuCHdMDJKbsQP7s5E,41428
104
- copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cVCO0,1637
105
- copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
106
- copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
107
- copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
108
- copyparty-1.19.7.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
109
- copyparty-1.19.7.dist-info/METADATA,sha256=rahOgWpsPDcuoo9E6GVFctTQ18BLzlbDRgRKxiBAEaQ,176818
110
- copyparty-1.19.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
111
- copyparty-1.19.7.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
112
- copyparty-1.19.7.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
113
- copyparty-1.19.7.dist-info/RECORD,,