copyparty 1.16.15__py3-none-any.whl → 1.16.16__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/__version__.py CHANGED
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 16, 15)
3
+ VERSION = (1, 16, 16)
4
4
  CODENAME = "COPYparty"
5
- BUILD_DT = (2025, 2, 25)
5
+ BUILD_DT = (2025, 2, 28)
6
6
 
7
7
  S_VERSION = ".".join(map(str, VERSION))
8
8
  S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
copyparty/authsrv.py CHANGED
@@ -1577,12 +1577,8 @@ class AuthSrv(object):
1577
1577
  for vol in vfs.all_vols.values():
1578
1578
  unknown_flags = set()
1579
1579
  for k, v in vol.flags.items():
1580
- stripped = k.lstrip("-")
1581
- if k != stripped and stripped not in vol.flags:
1582
- t = "WARNING: the config for volume [/%s] tried to remove volflag [%s] by specifying [%s] but that volflag was not already set"
1583
- self.log(t % (vol.vpath, stripped, k), 3)
1584
- k = stripped
1585
- if k not in flagdescs and k not in k_ign:
1580
+ ks = k.lstrip("-")
1581
+ if ks not in flagdescs and ks not in k_ign:
1586
1582
  unknown_flags.add(k)
1587
1583
  if unknown_flags:
1588
1584
  t = "WARNING: the config for volume [/%s] has unrecognized volflags; will ignore: '%s'"
@@ -2174,8 +2170,13 @@ class AuthSrv(object):
2174
2170
  for vol in vfs.all_nodes.values():
2175
2171
  for k in list(vol.flags.keys()):
2176
2172
  if re.match("^-[^-]+$", k):
2177
- vol.flags.pop(k[1:], None)
2178
2173
  vol.flags.pop(k)
2174
+ zs = k[1:]
2175
+ if zs in vol.flags:
2176
+ vol.flags.pop(k[1:])
2177
+ else:
2178
+ t = "WARNING: the config for volume [/%s] tried to remove volflag [%s] by specifying [%s] but that volflag was not already set"
2179
+ self.log(t % (vol.vpath, zs, k), 3)
2179
2180
 
2180
2181
  if vol.flags.get("dots"):
2181
2182
  for name in vol.axs.uread:
copyparty/cfg.py CHANGED
@@ -293,6 +293,9 @@ flagcats = {
293
293
  "dots": "allow all users with read-access to\nenable the option to show dotfiles in listings",
294
294
  "fk=8": 'generates per-file accesskeys,\nwhich are then required at the "g" permission;\nkeys are invalidated if filesize or inode changes',
295
295
  "fka=8": 'generates slightly weaker per-file accesskeys,\nwhich are then required at the "g" permission;\nnot affected by filesize or inode numbers',
296
+ "dk=8": 'generates per-directory accesskeys,\nwhich are then required at the "g" permission;\nkeys are invalidated if filesize or inode changes',
297
+ "dks": "per-directory accesskeys allow browsing into subdirs",
298
+ "dky": 'allow seeing files (not folders) inside a specific folder\nwith "g" perm, and does not require a valid dirkey to do so',
296
299
  "rss": "allow '?rss' URL suffix (experimental)",
297
300
  "ups_who=2": "restrict viewing the list of recent uploads",
298
301
  "zip_who=2": "restrict access to download-as-zip/tar",
copyparty/up2k.py CHANGED
@@ -2939,9 +2939,14 @@ class Up2k(object):
2939
2939
  self.salt, cj["size"], cj["lmod"], cj["prel"], cj["name"]
2940
2940
  )
2941
2941
 
2942
- if vfs.flags.get("up_ts", "") == "fu" or not cj["lmod"]:
2942
+ zi = cj["lmod"]
2943
+ bad_mt = zi <= 0 or zi > 0xAAAAAAAA
2944
+ if bad_mt or vfs.flags.get("up_ts", "") == "fu":
2943
2945
  # force upload time rather than last-modified
2944
2946
  cj["lmod"] = int(time.time())
2947
+ if zi and bad_mt:
2948
+ t = "ignoring impossible last-modified time from client: %s"
2949
+ self.log(t % (zi,), 6)
2945
2950
 
2946
2951
  alts = []
2947
2952
  for ptop, cur in vols:
copyparty/web/up2k.js.gz CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: copyparty
3
- Version: 1.16.15
3
+ Version: 1.16.16
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
@@ -1,13 +1,13 @@
1
1
  copyparty/__init__.py,sha256=VR6ZZhB9IxaK5TDXDTBM_OIP5ydkrdbaEnstktLM__s,2649
2
2
  copyparty/__main__.py,sha256=JDjMsCiOMMBPs8HR8vpgEJMgnxq-qjX-hcgxKHF9WX4,117137
3
- copyparty/__version__.py,sha256=HKXFw8jbvkFpMUWxHYEZL8rEZ2F2g8Y3xZcoqydWK0o,252
4
- copyparty/authsrv.py,sha256=EqlE2YztBcZHF5MHStZawA8ZKSlm-ePkrhsen90lKE8,107740
3
+ copyparty/__version__.py,sha256=k9LRMLdD2c_LzklrEl5kBzwA4LXuQlPPCEKasLrNXqw,252
4
+ copyparty/authsrv.py,sha256=iWMMp4hqejVDyK5g3hwK4xZ9oZIqWBa_OBMr8pPAM2g,107740
5
5
  copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
6
  copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
7
7
  copyparty/broker_thr.py,sha256=fjoYtpSscUA7-nMl4r1n2R7UK3J9lrvLS3rUZ-iJzKQ,1721
8
8
  copyparty/broker_util.py,sha256=76mfnFOpX1gUUvtjm8UQI7jpTIaVINX10QonM-B7ggc,1680
9
9
  copyparty/cert.py,sha256=0ZAPeXeMR164vWn9GQU3JDKooYXEq_NOQkDeg543ivg,8009
10
- copyparty/cfg.py,sha256=Z04AuNy-viZiiVJ8fLf3RULgH4w8ZidjsAVj4cmJKlA,13272
10
+ copyparty/cfg.py,sha256=7LDVvUkhcqArE3Jmz8JVjcJC6xPvAjf2g0lUhw6p1k4,13634
11
11
  copyparty/dxml.py,sha256=vu5uZQtwvwoqnFHbULs2Zh_y2DETu0T-ENpMZ1i2CV4,2505
12
12
  copyparty/fsutil.py,sha256=IVOFG8zBQPMQDDv7RIStSJHwHiAnVNROZS37O5k465A,4524
13
13
  copyparty/ftpd.py,sha256=T97SFS7JFtvRLbJX8C4fJSYwe13vhN3-E6emtlVmqLA,17608
@@ -31,7 +31,7 @@ copyparty/tftpd.py,sha256=PXgG4rTmiaU_TavSyZWD5cFphdfChs9YvNY21qfExt8,13611
31
31
  copyparty/th_cli.py,sha256=PxDAmUvO_8Vm5edXiWtsCft0Fw69QL9rCHf9zLmUNeA,4800
32
32
  copyparty/th_srv.py,sha256=tHbh_Ve3v8tYclWH2thLs5oFufeXgJi1duUMveKIx9k,30725
33
33
  copyparty/u2idx.py,sha256=G6MDbD4I_sJSOwaNFZ6XLTQhnEDrB12pVKuKhzQ_leE,13676
34
- copyparty/up2k.py,sha256=flkVZkHy7cfRZh7DSbTMbr4jfw7poZDOX3gFu5vyFxM,176973
34
+ copyparty/up2k.py,sha256=c8llviRN10hoFHTE-z-APwGnzQ6mVC4KrNIcngusIU0,177199
35
35
  copyparty/util.py,sha256=Y_znSn3hBNYaaduwcCB7mmBYsi6vv9CYC1zJ9rq9yeQ,99435
36
36
  copyparty/bos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  copyparty/bos/bos.py,sha256=Wb7eWsXJgR5AFlBR9ZOyKrLTwy-Kct9RrGiOu4Jo37Y,1622
@@ -83,7 +83,7 @@ copyparty/web/splash.js.gz,sha256=4VqNznN10-bT33IJm3VWzBEJ1s08XZyxFB1TYPUkuAo,27
83
83
  copyparty/web/svcs.html,sha256=dnE1fG15zOpq7u0GYt8ij6BUv_LTwsiipFeneVYlMsM,14140
84
84
  copyparty/web/svcs.js.gz,sha256=lMXEP9W-VlXyANlva4q0ASSxvvHYlE2CrmxGgZXZop0,713
85
85
  copyparty/web/ui.css.gz,sha256=0sHIwGsL3_xH8Uu6N0Ag3bKBTjf-e_yfFbKynEZXAnk,2800
86
- copyparty/web/up2k.js.gz,sha256=1bw_NV3mm8crU0ZyXMJiDwBHc4hheAsPig4GXFmGm6Y,24066
86
+ copyparty/web/up2k.js.gz,sha256=0XPd3HafOgJe2TlCc2VIgpJCcR0SI0adwM-MjpT08qo,24071
87
87
  copyparty/web/util.js.gz,sha256=wD3tP5j1iE5Uj5AvLW5zZbQJXDIFDlqgBTGdXeRVqo0,15110
88
88
  copyparty/web/w.hash.js.gz,sha256=JhJagnqIkcKng_hs6otEgzcuQE7keToG_r5dd2o3EfU,1108
89
89
  copyparty/web/a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -109,9 +109,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
109
109
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
110
110
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
111
111
  copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
112
- copyparty-1.16.15.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
- copyparty-1.16.15.dist-info/METADATA,sha256=x6aMlu6u9GN0-GrOf4OZPk4Ew-dy-2iqOcR48EXUIxs,158045
114
- copyparty-1.16.15.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
115
- copyparty-1.16.15.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
- copyparty-1.16.15.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
- copyparty-1.16.15.dist-info/RECORD,,
112
+ copyparty-1.16.16.dist-info/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
113
+ copyparty-1.16.16.dist-info/METADATA,sha256=n_4WfJgIHsqlaYd8Mq5G0e9bK9Z-v4fpIiayX6tmXfM,158045
114
+ copyparty-1.16.16.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
115
+ copyparty-1.16.16.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
116
+ copyparty-1.16.16.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
117
+ copyparty-1.16.16.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5