copyparty 1.16.4__tar.gz → 1.16.5__tar.gz

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 (121) hide show
  1. {copyparty-1.16.4 → copyparty-1.16.5}/PKG-INFO +7 -2
  2. {copyparty-1.16.4 → copyparty-1.16.5}/README.md +6 -1
  3. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/__main__.py +2 -2
  4. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/__version__.py +2 -2
  5. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/httpcli.py +8 -11
  6. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/tcpsrv.py +6 -6
  7. copyparty-1.16.5/copyparty/web/deps/marked.js.gz +0 -0
  8. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/svcs.html +0 -2
  9. copyparty-1.16.5/copyparty/web/up2k.js.gz +0 -0
  10. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty.egg-info/PKG-INFO +7 -2
  11. copyparty-1.16.4/copyparty/web/deps/marked.js.gz +0 -0
  12. copyparty-1.16.4/copyparty/web/up2k.js.gz +0 -0
  13. {copyparty-1.16.4 → copyparty-1.16.5}/LICENSE +0 -0
  14. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/__init__.py +0 -0
  15. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/authsrv.py +0 -0
  16. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/bos/__init__.py +0 -0
  17. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/bos/bos.py +0 -0
  18. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/bos/path.py +0 -0
  19. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/broker_mp.py +0 -0
  20. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/broker_mpw.py +0 -0
  21. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/broker_thr.py +0 -0
  22. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/broker_util.py +0 -0
  23. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/cert.py +0 -0
  24. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/cfg.py +0 -0
  25. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/dxml.py +0 -0
  26. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/fsutil.py +0 -0
  27. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/ftpd.py +0 -0
  28. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/httpconn.py +0 -0
  29. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/httpsrv.py +0 -0
  30. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/ico.py +0 -0
  31. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/mdns.py +0 -0
  32. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/metrics.py +0 -0
  33. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/mtag.py +0 -0
  34. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/multicast.py +0 -0
  35. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/pwhash.py +0 -0
  36. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/res/COPYING.txt +0 -0
  37. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/res/__init__.py +0 -0
  38. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/res/insecure.pem +0 -0
  39. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/smbd.py +0 -0
  40. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/ssdp.py +0 -0
  41. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/star.py +0 -0
  42. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/__init__.py +0 -0
  43. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/__init__.py +0 -0
  44. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/bimap.py +0 -0
  45. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/bit.py +0 -0
  46. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/buffer.py +0 -0
  47. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/dns.py +0 -0
  48. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/label.py +0 -0
  49. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/lex.py +0 -0
  50. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/dnslib/ranges.py +0 -0
  51. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/ifaddr/__init__.py +0 -0
  52. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/ifaddr/_posix.py +0 -0
  53. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/ifaddr/_shared.py +0 -0
  54. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/ifaddr/_win32.py +0 -0
  55. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/qrcodegen.py +0 -0
  56. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/stolen/surrogateescape.py +0 -0
  57. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/sutil.py +0 -0
  58. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/svchub.py +0 -0
  59. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/szip.py +0 -0
  60. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/tftpd.py +0 -0
  61. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/th_cli.py +0 -0
  62. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/th_srv.py +0 -0
  63. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/u2idx.py +0 -0
  64. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/up2k.py +0 -0
  65. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/util.py +0 -0
  66. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/a/__init__.py +0 -0
  67. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/a/partyfuse.py +0 -0
  68. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/a/u2c.py +0 -0
  69. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/a/webdav-cfg.bat +0 -0
  70. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/baguettebox.js.gz +0 -0
  71. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/browser.css.gz +0 -0
  72. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/browser.html +0 -0
  73. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/browser.js.gz +0 -0
  74. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/browser2.html +0 -0
  75. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/cf.html +0 -0
  76. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/dbg-audio.js.gz +0 -0
  77. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/dd/2.png +0 -0
  78. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/dd/3.png +0 -0
  79. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/dd/4.png +0 -0
  80. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/dd/5.png +0 -0
  81. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/dd/__init__.py +0 -0
  82. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/__init__.py +0 -0
  83. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/busy.mp3.gz +0 -0
  84. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/easymde.css.gz +0 -0
  85. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/easymde.js.gz +0 -0
  86. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/fuse.py +0 -0
  87. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/mini-fa.css.gz +0 -0
  88. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/mini-fa.woff +0 -0
  89. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/prism.css.gz +0 -0
  90. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/prism.js.gz +0 -0
  91. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/prismd.css.gz +0 -0
  92. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/scp.woff2 +0 -0
  93. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/sha512.ac.js.gz +0 -0
  94. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/deps/sha512.hw.js.gz +0 -0
  95. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/md.css.gz +0 -0
  96. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/md.html +0 -0
  97. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/md.js.gz +0 -0
  98. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/md2.css.gz +0 -0
  99. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/md2.js.gz +0 -0
  100. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/mde.css.gz +0 -0
  101. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/mde.html +0 -0
  102. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/mde.js.gz +0 -0
  103. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/msg.css.gz +0 -0
  104. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/msg.html +0 -0
  105. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/shares.css.gz +0 -0
  106. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/shares.html +0 -0
  107. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/shares.js.gz +0 -0
  108. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/splash.css.gz +0 -0
  109. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/splash.html +0 -0
  110. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/splash.js.gz +0 -0
  111. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/svcs.js.gz +0 -0
  112. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/ui.css.gz +0 -0
  113. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/util.js.gz +0 -0
  114. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty/web/w.hash.js.gz +0 -0
  115. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty.egg-info/SOURCES.txt +0 -0
  116. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty.egg-info/dependency_links.txt +0 -0
  117. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty.egg-info/entry_points.txt +0 -0
  118. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty.egg-info/requires.txt +0 -0
  119. {copyparty-1.16.4 → copyparty-1.16.5}/copyparty.egg-info/top_level.txt +0 -0
  120. {copyparty-1.16.4 → copyparty-1.16.5}/pyproject.toml +0 -0
  121. {copyparty-1.16.4 → copyparty-1.16.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copyparty
3
- Version: 1.16.4
3
+ Version: 1.16.5
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
@@ -394,6 +394,9 @@ same order here too
394
394
 
395
395
  * [Chrome issue 1352210](https://bugs.chromium.org/p/chromium/issues/detail?id=1352210) -- plaintext http may be faster at filehashing than https (but also extremely CPU-intensive)
396
396
 
397
+ * [Chrome issue 383568268](https://issues.chromium.org/issues/383568268) -- filereaders in webworkers can OOM / crash the browser-tab
398
+ * copyparty has a workaround which seems to work well enough
399
+
397
400
  * [Firefox issue 1790500](https://bugzilla.mozilla.org/show_bug.cgi?id=1790500) -- entire browser can crash after uploading ~4000 small files
398
401
 
399
402
  * Android: music playback randomly stops due to [battery usage settings](#fix-unreliable-playback-on-android)
@@ -1543,7 +1546,9 @@ replace copyparty passwords with oauth and such
1543
1546
 
1544
1547
  you can disable the built-in password-based login system, and instead replace it with a separate piece of software (an identity provider) which will then handle authenticating / authorizing of users; this makes it possible to login with passkeys / fido2 / webauthn / yubikey / ldap / active directory / oauth / many other single-sign-on contraptions
1545
1548
 
1546
- a popular choice is [Authelia](https://www.authelia.com/) (config-file based), another one is [authentik](https://goauthentik.io/) (GUI-based, more complex)
1549
+ * the regular config-defined users will be used as a fallback for requests which don't include a valid (trusted) IdP username header
1550
+
1551
+ some popular identity providers are [Authelia](https://www.authelia.com/) (config-file based) and [authentik](https://goauthentik.io/) (GUI-based, more complex)
1547
1552
 
1548
1553
  there is a [docker-compose example](./docs/examples/docker/idp-authelia-traefik) which is hopefully a good starting point (alternatively see [./docs/idp.md](./docs/idp.md) if you're the DIY type)
1549
1554
 
@@ -339,6 +339,9 @@ same order here too
339
339
 
340
340
  * [Chrome issue 1352210](https://bugs.chromium.org/p/chromium/issues/detail?id=1352210) -- plaintext http may be faster at filehashing than https (but also extremely CPU-intensive)
341
341
 
342
+ * [Chrome issue 383568268](https://issues.chromium.org/issues/383568268) -- filereaders in webworkers can OOM / crash the browser-tab
343
+ * copyparty has a workaround which seems to work well enough
344
+
342
345
  * [Firefox issue 1790500](https://bugzilla.mozilla.org/show_bug.cgi?id=1790500) -- entire browser can crash after uploading ~4000 small files
343
346
 
344
347
  * Android: music playback randomly stops due to [battery usage settings](#fix-unreliable-playback-on-android)
@@ -1488,7 +1491,9 @@ replace copyparty passwords with oauth and such
1488
1491
 
1489
1492
  you can disable the built-in password-based login system, and instead replace it with a separate piece of software (an identity provider) which will then handle authenticating / authorizing of users; this makes it possible to login with passkeys / fido2 / webauthn / yubikey / ldap / active directory / oauth / many other single-sign-on contraptions
1490
1493
 
1491
- a popular choice is [Authelia](https://www.authelia.com/) (config-file based), another one is [authentik](https://goauthentik.io/) (GUI-based, more complex)
1494
+ * the regular config-defined users will be used as a fallback for requests which don't include a valid (trusted) IdP username header
1495
+
1496
+ some popular identity providers are [Authelia](https://www.authelia.com/) (config-file based) and [authentik](https://goauthentik.io/) (GUI-based, more complex)
1492
1497
 
1493
1498
  there is a [docker-compose example](./docs/examples/docker/idp-authelia-traefik) which is hopefully a good starting point (alternatively see [./docs/idp.md](./docs/idp.md) if you're the DIY type)
1494
1499
 
@@ -1075,7 +1075,7 @@ def add_cert(ap, cert_path):
1075
1075
  def add_auth(ap):
1076
1076
  ses_db = os.path.join(E.cfg, "sessions.db")
1077
1077
  ap2 = ap.add_argument_group('IdP / identity provider / user authentication options')
1078
- ap2.add_argument("--idp-h-usr", metavar="HN", type=u, default="", help="bypass the copyparty authentication checks and assume the request-header \033[33mHN\033[0m contains the username of the requesting user (for use with authentik/oauth/...)\n\033[1;31mWARNING:\033[0m if you enable this, make sure clients are unable to specify this header themselves; must be washed away and replaced by a reverse-proxy")
1078
+ ap2.add_argument("--idp-h-usr", metavar="HN", type=u, default="", help="bypass the copyparty authentication checks if the request-header \033[33mHN\033[0m contains a username to associate the request with (for use with authentik/oauth/...)\n\033[1;31mWARNING:\033[0m if you enable this, make sure clients are unable to specify this header themselves; must be washed away and replaced by a reverse-proxy")
1079
1079
  ap2.add_argument("--idp-h-grp", metavar="HN", type=u, default="", help="assume the request-header \033[33mHN\033[0m contains the groupname of the requesting user; can be referenced in config files for group-based access control")
1080
1080
  ap2.add_argument("--idp-h-key", metavar="HN", type=u, default="", help="optional but recommended safeguard; your reverse-proxy will insert a secret header named \033[33mHN\033[0m into all requests, and the other IdP headers will be ignored if this header is not present")
1081
1081
  ap2.add_argument("--idp-gsep", metavar="RE", type=u, default="|:;+,", help="if there are multiple groups in \033[33m--idp-h-grp\033[0m, they are separated by one of the characters in \033[33mRE\033[0m")
@@ -1729,7 +1729,7 @@ def main(argv = None) :
1729
1729
  except:
1730
1730
  lprint("\nfailed to disable quick-edit-mode:\n" + min_ex() + "\n")
1731
1731
 
1732
- if al.ansi:
1732
+ if not al.ansi:
1733
1733
  al.wintitle = ""
1734
1734
 
1735
1735
  # propagate implications
@@ -1,8 +1,8 @@
1
1
  # coding: utf-8
2
2
 
3
- VERSION = (1, 16, 4)
3
+ VERSION = (1, 16, 5)
4
4
  CODENAME = "COPYparty"
5
- BUILD_DT = (2024, 12, 7)
5
+ BUILD_DT = (2024, 12, 11)
6
6
 
7
7
  S_VERSION = ".".join(map(str, VERSION))
8
8
  S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
@@ -537,8 +537,14 @@ class HttpCli(object):
537
537
  except:
538
538
  pass
539
539
 
540
+ self.pw = uparam.get("pw") or self.headers.get("pw") or bauth or cookie_pw
541
+ self.uname = (
542
+ self.asrv.sesa.get(self.pw)
543
+ or self.asrv.iacct.get(self.asrv.ah.hash(self.pw))
544
+ or "*"
545
+ )
546
+
540
547
  if self.args.idp_h_usr:
541
- self.pw = ""
542
548
  idp_usr = self.headers.get(self.args.idp_h_usr) or ""
543
549
  if idp_usr:
544
550
  idp_grp = (
@@ -583,20 +589,11 @@ class HttpCli(object):
583
589
  idp_grp = ""
584
590
 
585
591
  if idp_usr in self.asrv.vfs.aread:
592
+ self.pw = ""
586
593
  self.uname = idp_usr
587
594
  self.html_head += "<script>var is_idp=1</script>\n"
588
595
  else:
589
596
  self.log("unknown username: [%s]" % (idp_usr), 1)
590
- self.uname = "*"
591
- else:
592
- self.uname = "*"
593
- else:
594
- self.pw = uparam.get("pw") or self.headers.get("pw") or bauth or cookie_pw
595
- self.uname = (
596
- self.asrv.sesa.get(self.pw)
597
- or self.asrv.iacct.get(self.asrv.ah.hash(self.pw))
598
- or "*"
599
- )
600
597
 
601
598
  if self.args.ipu and self.uname == "*":
602
599
  self.uname = self.conn.ipu_iu[self.conn.ipu_nm.map(self.ip)]
@@ -399,17 +399,17 @@ class TcpSrv(object):
399
399
  if not netdevs:
400
400
  continue
401
401
 
402
- added = "nothing"
403
- removed = "nothing"
402
+ add = []
403
+ rem = []
404
404
  for k, v in netdevs.items():
405
405
  if k not in self.netdevs:
406
- added = "{} = {}".format(k, v)
406
+ add.append("\n added %s = %s" % (k, v))
407
407
  for k, v in self.netdevs.items():
408
408
  if k not in netdevs:
409
- removed = "{} = {}".format(k, v)
409
+ rem.append("\nremoved %s = %s" % (k, v))
410
410
 
411
- t = "network change detected:\n added {}\033[0;33m\nremoved {}"
412
- self.log("tcpsrv", t.format(added, removed), 3)
411
+ t = "network change detected:\033[32m%s\033[33m%s"
412
+ self.log("tcpsrv", t % ("".join(add), "".join(rem)), 3)
413
413
  self.netdevs = netdevs
414
414
  self._distribute_netdevs()
415
415
 
@@ -53,7 +53,6 @@
53
53
  {% if s %}
54
54
  <li>running <code>rclone mount</code> on LAN (or just dont have valid certificates)? add <code>--no-check-certificate</code></li>
55
55
  {% endif %}
56
- <li>running <code>rclone mount</code> as root? add <code>--allow-other</code></li>
57
56
  <li>old version of rclone? replace all <code>=</code> with <code>&nbsp;</code> (space)</li>
58
57
  </ul>
59
58
 
@@ -137,7 +136,6 @@
137
136
  {% if args.ftps %}
138
137
  <li>running on LAN (or just dont have valid certificates)? add <code>no_check_certificate=true</code> to the config command</li>
139
138
  {% endif %}
140
- <li>running <code>rclone mount</code> as root? add <code>--allow-other</code></li>
141
139
  <li>old version of rclone? replace all <code>=</code> with <code>&nbsp;</code> (space)</li>
142
140
  </ul>
143
141
  <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>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: copyparty
3
- Version: 1.16.4
3
+ Version: 1.16.5
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
@@ -394,6 +394,9 @@ same order here too
394
394
 
395
395
  * [Chrome issue 1352210](https://bugs.chromium.org/p/chromium/issues/detail?id=1352210) -- plaintext http may be faster at filehashing than https (but also extremely CPU-intensive)
396
396
 
397
+ * [Chrome issue 383568268](https://issues.chromium.org/issues/383568268) -- filereaders in webworkers can OOM / crash the browser-tab
398
+ * copyparty has a workaround which seems to work well enough
399
+
397
400
  * [Firefox issue 1790500](https://bugzilla.mozilla.org/show_bug.cgi?id=1790500) -- entire browser can crash after uploading ~4000 small files
398
401
 
399
402
  * Android: music playback randomly stops due to [battery usage settings](#fix-unreliable-playback-on-android)
@@ -1543,7 +1546,9 @@ replace copyparty passwords with oauth and such
1543
1546
 
1544
1547
  you can disable the built-in password-based login system, and instead replace it with a separate piece of software (an identity provider) which will then handle authenticating / authorizing of users; this makes it possible to login with passkeys / fido2 / webauthn / yubikey / ldap / active directory / oauth / many other single-sign-on contraptions
1545
1548
 
1546
- a popular choice is [Authelia](https://www.authelia.com/) (config-file based), another one is [authentik](https://goauthentik.io/) (GUI-based, more complex)
1549
+ * the regular config-defined users will be used as a fallback for requests which don't include a valid (trusted) IdP username header
1550
+
1551
+ some popular identity providers are [Authelia](https://www.authelia.com/) (config-file based) and [authentik](https://goauthentik.io/) (GUI-based, more complex)
1547
1552
 
1548
1553
  there is a [docker-compose example](./docs/examples/docker/idp-authelia-traefik) which is hopefully a good starting point (alternatively see [./docs/idp.md](./docs/idp.md) if you're the DIY type)
1549
1554
 
Binary file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes