copyparty 1.19.0__py3-none-any.whl → 1.19.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/__main__.py CHANGED
@@ -1193,6 +1193,7 @@ def add_zc_mdns(ap):
1193
1193
  ap2.add_argument("--zm-lh", metavar="PATH", type=u, default="", help="link a specific folder for http shares")
1194
1194
  ap2.add_argument("--zm-lf", metavar="PATH", type=u, default="", help="link a specific folder for ftp shares")
1195
1195
  ap2.add_argument("--zm-ls", metavar="PATH", type=u, default="", help="link a specific folder for smb shares")
1196
+ ap2.add_argument("--zm-fqdn", metavar="FQDN", type=u, default="--name.local", help="the domain to announce; NOTE: using anything other than .local is nonstandard and could cause problems")
1196
1197
  ap2.add_argument("--zm-mnic", action="store_true", help="merge NICs which share subnets; assume that same subnet means same network")
1197
1198
  ap2.add_argument("--zm-msub", action="store_true", help="merge subnets on each NIC -- always enabled for ipv6 -- reduces network load, but gnome-gvfs clients may stop working, and clients cannot be in subnets that the server is not")
1198
1199
  ap2.add_argument("--zm-noneg", action="store_true", help="disable NSEC replies -- try this if some clients don't see copyparty")
@@ -1382,7 +1383,7 @@ def add_shutdown(ap):
1382
1383
  def add_logging(ap):
1383
1384
  ap2 = ap.add_argument_group("logging options")
1384
1385
  ap2.add_argument("-q", action="store_true", help="quiet; disable most STDOUT messages")
1385
- ap2.add_argument("-lo", metavar="PATH", type=u, default="", help="logfile, example: \033[32mcpp-%%Y-%%m%%d-%%H%%M%%S.txt.xz\033[0m (NB: some errors may appear on STDOUT only)")
1386
+ ap2.add_argument("-lo", metavar="PATH", type=u, default="", help="logfile; use .txt for plaintext or .xz for compressed. Example: \033[32mcpp-%%Y-%%m%%d-%%H%%M%%S.txt.xz\033[0m (NB: some errors may appear on STDOUT only)")
1386
1387
  ap2.add_argument("--no-ansi", action="store_true", default=not VT100, help="disable colors; same as environment-variable NO_COLOR")
1387
1388
  ap2.add_argument("--ansi", action="store_true", help="force colors; overrides environment-variable NO_COLOR")
1388
1389
  ap2.add_argument("--no-logflush", action="store_true", help="don't flush the logfile after each write; tiny bit faster")
@@ -1485,8 +1486,8 @@ def add_db_general(ap, hcores):
1485
1486
  ap2.add_argument("-e2vp", action="store_true", help="on hash mismatch: panic and quit copyparty")
1486
1487
  ap2.add_argument("--hist", metavar="PATH", type=u, default="", help="where to store volume data (db, thumbs); default is a folder named \".hist\" inside each volume (volflag=hist)")
1487
1488
  ap2.add_argument("--dbpath", metavar="PATH", type=u, default="", help="override where the volume databases are to be placed; default is the same as \033[33m--hist\033[0m (volflag=dbpath)")
1488
- ap2.add_argument("--no-hash", metavar="PTN", type=u, default="", help="regex: disable hashing of matching absolute-filesystem-paths during e2ds folder scans (volflag=nohash)")
1489
- ap2.add_argument("--no-idx", metavar="PTN", type=u, default=noidx, help="regex: disable indexing of matching absolute-filesystem-paths during e2ds folder scans (volflag=noidx)")
1489
+ ap2.add_argument("--no-hash", metavar="PTN", type=u, default="", help="regex: disable hashing of matching absolute-filesystem-paths during e2ds folder scans (must be specified as one big regex, not multiple times) (volflag=nohash)")
1490
+ ap2.add_argument("--no-idx", metavar="PTN", type=u, default=noidx, help="regex: disable indexing of matching absolute-filesystem-paths during e2ds folder scan (must be specified as one big regex, not multiple times) (volflag=noidx)")
1490
1491
  ap2.add_argument("--no-dirsz", action="store_true", help="do not show total recursive size of folders in listings, show inode size instead; slightly faster (volflag=nodirsz)")
1491
1492
  ap2.add_argument("--re-dirsz", action="store_true", help="if the directory-sizes in the UI are bonkers, use this along with \033[33m-e2dsa\033[0m to rebuild the index from scratch")
1492
1493
  ap2.add_argument("--no-dhash", action="store_true", help="disable rescan acceleration; do full database integrity check -- makes the db ~5%% smaller and bootup/rescans 3~10x slower")
@@ -1759,6 +1760,10 @@ def main(argv = None) :
1759
1760
 
1760
1761
  ensure_webdeps()
1761
1762
 
1763
+ if CFG_DEF:
1764
+ supp = args_from_cfg(CFG_DEF[0])
1765
+ argv.extend(supp)
1766
+
1762
1767
  for k, v in zip(argv[1:], argv[2:]):
1763
1768
  if k == "-c" and os.path.isfile(v):
1764
1769
  supp = args_from_cfg(v)
copyparty/__version__.py CHANGED
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 19, 0)
3
+ VERSION = (1, 19, 1)
4
4
  CODENAME = "usernames"
5
- BUILD_DT = (2025, 8, 7)
5
+ BUILD_DT = (2025, 8, 10)
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/httpcli.py CHANGED
@@ -1594,6 +1594,10 @@ class HttpCli(object):
1594
1594
  "quota-available-bytes": str(bfree),
1595
1595
  "quota-used-bytes": str(btot - bfree),
1596
1596
  }
1597
+ if "quotaused" in props: # macos finder crazytalk
1598
+ df["quotaused"] = df["quota-used-bytes"]
1599
+ if "quota" in props:
1600
+ df["quota"] = df["quota-available-bytes"] # idk, makes it happy
1597
1601
  else:
1598
1602
  df = {}
1599
1603
  else:
@@ -4949,7 +4953,7 @@ class HttpCli(object):
4949
4953
  rip = host
4950
4954
 
4951
4955
  vp = (self.uparam["hc"] or "").lstrip("/")
4952
- pw = self.pw or "hunter2"
4956
+ pw = self.ouparam.get("pw") or "hunter2"
4953
4957
  if pw in self.asrv.sesa:
4954
4958
  pw = "hunter2"
4955
4959
 
@@ -5458,13 +5462,13 @@ class HttpCli(object):
5458
5462
  q = "select sz, rd, fn, at from up where ip=? and at>? order by at desc"
5459
5463
  for sz, rd, fn, at in cur.execute(q, (self.ip, lim)):
5460
5464
  vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
5461
- if nfi == 0 or (nfi == 1 and vfi in vp):
5465
+ if nfi == 0 or (nfi == 1 and vfi in vp.lower()):
5462
5466
  pass
5463
5467
  elif nfi == 2:
5464
- if not vp.startswith(vfi):
5468
+ if not vp.lower().startswith(vfi):
5465
5469
  continue
5466
5470
  elif nfi == 3:
5467
- if not vp.endswith(vfi):
5471
+ if not vp.lower().endswith(vfi):
5468
5472
  continue
5469
5473
  else:
5470
5474
  continue
@@ -5583,13 +5587,13 @@ class HttpCli(object):
5583
5587
  q = "select sz, rd, fn, ip, at from up where at>0 order by at desc"
5584
5588
  for sz, rd, fn, ip, at in cur.execute(q):
5585
5589
  vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
5586
- if nfi == 0 or (nfi == 1 and vfi in vp):
5590
+ if nfi == 0 or (nfi == 1 and vfi in vp.lower()):
5587
5591
  pass
5588
5592
  elif nfi == 2:
5589
- if not vp.startswith(vfi):
5593
+ if not vp.lower().startswith(vfi):
5590
5594
  continue
5591
5595
  elif nfi == 3:
5592
- if not vp.endswith(vfi):
5596
+ if not vp.lower().endswith(vfi):
5593
5597
  continue
5594
5598
  else:
5595
5599
  continue
copyparty/mdns.py CHANGED
@@ -72,7 +72,8 @@ class MDNS(MCast):
72
72
  if not self.args.zm_nwa_1:
73
73
  set_avahi_379()
74
74
 
75
- zs = self.args.name + ".local."
75
+ zs = self.args.zm_fqdn or (self.args.name + ".local")
76
+ zs = zs.replace("--name", self.args.name).rstrip(".") + "."
76
77
  zs = zs.encode("ascii", "replace").decode("ascii", "replace")
77
78
  self.hn = "-".join(x for x in zs.split("?") if x) or (
78
79
  "vault-{}".format(random.randint(1, 255))
Binary file
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: copyparty
3
- Version: 1.19.0
3
+ Version: 1.19.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
@@ -1,6 +1,6 @@
1
1
  copyparty/__init__.py,sha256=SJtQjM-9PP9K-IaoM9M3iNKvRApp0omOrAN6YtXTPNM,2599
2
- copyparty/__main__.py,sha256=bFMl5D5Tno8XVqXgDpr-7SgOggq6VK-0Bq0P1qYbH1U,129918
3
- copyparty/__version__.py,sha256=q7t1Us4JpeZfu0jfjyyPAuufDrObbDLz5oQANpVlxgk,250
2
+ copyparty/__main__.py,sha256=rderUpGCAxzKX4pHAvTsi4_-Seg6-OBtzkoOz2Qd0Uc,130354
3
+ copyparty/__version__.py,sha256=4xv6byGJhBnw7CYdVbzrcQhQhh58p3hp9hw59g4SnDs,251
4
4
  copyparty/authsrv.py,sha256=0a0Y7B5abT5AFdMYcu9Kb_7q7wIHVA5kZ-rN2p0K8oM,123822
5
5
  copyparty/broker_mp.py,sha256=QdOXXvV2Xn6J0CysEqyY3GZbqxQMyWnTpnba-a5lMc0,4987
6
6
  copyparty/broker_mpw.py,sha256=PpSS4SK3pItlpfD8OwVr3QmJEPKlUgaf2nuMOozixgU,3347
@@ -11,11 +11,11 @@ copyparty/cfg.py,sha256=uUqSxL_BI2anPUmcmn_FkmM97S4xuJ79sG49wVoDN3w,15831
11
11
  copyparty/dxml.py,sha256=vu5uZQtwvwoqnFHbULs2Zh_y2DETu0T-ENpMZ1i2CV4,2505
12
12
  copyparty/fsutil.py,sha256=NC_CJC4TDag399vVDH9_uQfdfpTMwRFLNxERSWhlVvs,4594
13
13
  copyparty/ftpd.py,sha256=K40yLaoSDTDu-bWWOUy4f-B78enktdGr_h3VdH0h9Us,18257
14
- copyparty/httpcli.py,sha256=_43lHsVmK3WT8R__4F7HAtPAIc98cUiixUTKLfTjmfY,235079
14
+ copyparty/httpcli.py,sha256=58riJPElaQpxXFSyiBf5iwaleOnVjn97Tyl6i27Js1Y,235400
15
15
  copyparty/httpconn.py,sha256=IA9fdCjigawZ4kWhgvVN3nSiy5pb3W2qaE6rFqUYdq0,6943
16
16
  copyparty/httpsrv.py,sha256=Qyhna6GTIHnmpUBwUicdtDrXGwct8oKap0LqEtGD5X4,18911
17
17
  copyparty/ico.py,sha256=-7QjF_jIxnPo4Vr0oUPksQ_U_Ef0HRsSPm3s71idOz8,3879
18
- copyparty/mdns.py,sha256=G73OWWg1copda47LgayCRK7qjVrk6cnUGpMR5ugmi7o,18315
18
+ copyparty/mdns.py,sha256=XWh41aBrfnXSF2pFanY20QVk_8nNpk4QmKnCEnR2CfU,18405
19
19
  copyparty/metrics.py,sha256=1dim0ShnsD5cfspRbeN9Mt14wOIxPRtxCZY2IScikKw,8974
20
20
  copyparty/mtag.py,sha256=uAHixYCzB52dN9rhmRV_As_YX_baL5Ha-oRnTtmDdcg,20053
21
21
  copyparty/multicast.py,sha256=ix78aoFs9xZxg_zFqCmIfz0U4nDve3S0_V0CQR4IwrM,12317
@@ -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=MxRofvhXjmUN7RtXtC17_9AlROVNUT-66WwJ_pHLY9c,8258
58
- copyparty/web/browser.css.gz,sha256=a6uvAOjCumT3K4YSkSHcB3cYXA8RO_4QbfB9M7oR_kQ,11780
58
+ copyparty/web/browser.css.gz,sha256=XxdkyOhVrA_HHbbcNH5YfGfWV1cnfQQeyptiEeB2Py4,11780
59
59
  copyparty/web/browser.html,sha256=lhelkXI8_HGfuqo_5b6XEGzf8VNodOMXE9kbv31JtbM,4790
60
- copyparty/web/browser.js.gz,sha256=WKzmxDoZ_vydwLOwaKchQbCXZlo0YPSgctFnUCo4yIw,230180
60
+ copyparty/web/browser.js.gz,sha256=guJ68g5JmaC2mg902OHGRF66zZ5F8WJ0z4lMZc4UFfE,272913
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
@@ -80,7 +80,7 @@ copyparty/web/shares.html,sha256=ZZ9BIuzhbVtJCAZOb_PAaEY_z9jo8i93QEJolNDHX3g,257
80
80
  copyparty/web/shares.js.gz,sha256=QgtzZ6oKJqGVlAEbhVCn-35F6mnwLwOmndRqlgtJd74,942
81
81
  copyparty/web/splash.css.gz,sha256=S8_A7JJl71xACRBYGzafeaD82OacW6Fa7oKPiNyrhAs,1087
82
82
  copyparty/web/splash.html,sha256=WwASAi2zq4Y7iKB1KMXnOEWmmsLao-nIdHEW2_CglVg,6614
83
- copyparty/web/splash.js.gz,sha256=ArBn9m09VAsT7tFc4LeEmk5p0mS-U2rNL4kxaGkZeYY,10009
83
+ copyparty/web/splash.js.gz,sha256=n-bCtUhnM7dbcxofVSG4TJDV8jCZeAob1dgi8GGVspk,12546
84
84
  copyparty/web/svcs.html,sha256=JtjrG9CaCu1BPtve9mb0Z7m3TvCZEDkmKusQnJzQzGw,14909
85
85
  copyparty/web/svcs.js.gz,sha256=_dvatVBMVI_iy5MnYQeZumFGAnu9lAP_WKrhOA1TYxs,852
86
86
  copyparty/web/ui.css.gz,sha256=e3iIflzddmjoyPrun_1jsu9j7fbdonNQLyhEE2oKKOQ,2819
@@ -105,9 +105,9 @@ copyparty/web/deps/prismd.css.gz,sha256=ObUlksQVr-OuYlTz-I4B23TeBg2QDVVGRnWBz8cV
105
105
  copyparty/web/deps/scp.woff2,sha256=w99BDU5i8MukkMEL-iW0YO9H4vFFZSPWxbkH70ytaAg,8612
106
106
  copyparty/web/deps/sha512.ac.js.gz,sha256=lFZaCLumgWxrvEuDr4bqdKHsqjX82AbVAb7_F45Yk88,7033
107
107
  copyparty/web/deps/sha512.hw.js.gz,sha256=UAed2_ocklZCnIzcSYz2h4P1ycztlCLj-ewsRTud2lU,7939
108
- copyparty-1.19.0.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
109
- copyparty-1.19.0.dist-info/METADATA,sha256=Gbc-lwedtIrKBwJ6UlVSGXkr5FY--ORydeRo2YCdZ3k,170883
110
- copyparty-1.19.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
111
- copyparty-1.19.0.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
112
- copyparty-1.19.0.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
113
- copyparty-1.19.0.dist-info/RECORD,,
108
+ copyparty-1.19.1.dist-info/licenses/LICENSE,sha256=gOr4h33pCsBEg9uIy9AYmb7qlocL4V9t2uPJS5wllr0,1072
109
+ copyparty-1.19.1.dist-info/METADATA,sha256=7bTr8Fo4f-q1oVV2vvxUnm2E5aE6KSz05aBbhcc1jbg,170883
110
+ copyparty-1.19.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
111
+ copyparty-1.19.1.dist-info/entry_points.txt,sha256=4zw6a3rqASywQomiYLObjjlxybaI65LYYOTJwgKz7b0,128
112
+ copyparty-1.19.1.dist-info/top_level.txt,sha256=LnYUPsDyk-8kFgM6YJLG4h820DQekn81cObKSu9g-sI,10
113
+ copyparty-1.19.1.dist-info/RECORD,,