Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c2cee222bd | ||
|
|
b87f8f1b01 | ||
|
|
a01870b744 | ||
|
|
3560eeb10e | ||
|
|
03acd65e96 | ||
|
|
e5e822951d | ||
|
|
347cf6a546 | ||
|
|
8ba98877ee | ||
|
|
3c78c6a880 | ||
|
|
7aa21483c5 | ||
|
|
074e106e24 | ||
|
|
e9ddfccfb6 | ||
|
|
91ce7a29aa | ||
|
|
392a4db55b | ||
|
|
3931bc2779 | ||
|
|
bd514f0666 | ||
|
|
f8a7c02f23 | ||
|
|
0dd5987250 | ||
|
|
4eca4885f3 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -43,3 +43,6 @@ scripts/docker/*.err
|
|||||||
|
|
||||||
# nix build output link
|
# nix build output link
|
||||||
result
|
result
|
||||||
|
|
||||||
|
# IDEA config
|
||||||
|
.idea/
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# NOTE: You generally shouldn't use this PKGBUILD on Arch, as it is mainly for testing purposes. Install copyparty using pacman instead.
|
# NOTE: You generally shouldn't use this PKGBUILD on Arch, as it is mainly for testing purposes. Install copyparty using pacman instead.
|
||||||
|
|
||||||
pkgname=copyparty
|
pkgname=copyparty
|
||||||
pkgver="1.18.10"
|
pkgver="1.19.0"
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||||
arch=("any")
|
arch=("any")
|
||||||
@@ -23,7 +23,7 @@ optdepends=("ffmpeg: thumbnails for videos, images (slower) and audio, music tag
|
|||||||
)
|
)
|
||||||
source=("https://github.com/9001/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
|
source=("https://github.com/9001/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
|
||||||
backup=("etc/${pkgname}/copyparty.conf" )
|
backup=("etc/${pkgname}/copyparty.conf" )
|
||||||
sha256sums=("49c5fedf7619437bc0af125cb4e8360d9bda9d87ef45d6314d7acf163ab4cf99")
|
sha256sums=("179b027d51e4fe7ebdab2b18c07475d52c57e2ce69256292b157a8efacd82118")
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
pkgname=copyparty
|
pkgname=copyparty
|
||||||
pkgver=1.18.10
|
pkgver=1.19.0
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||||
arch=("any")
|
arch=("any")
|
||||||
@@ -20,7 +20,7 @@ optdepends=("ffmpeg: thumbnails for videos, images (slower) and audio, music tag
|
|||||||
)
|
)
|
||||||
source=("https://github.com/9001/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
|
source=("https://github.com/9001/${pkgname}/releases/download/v${pkgver}/${pkgname}-${pkgver}.tar.gz")
|
||||||
backup=("/etc/${pkgname}.d/init" )
|
backup=("/etc/${pkgname}.d/init" )
|
||||||
sha256sums=("49c5fedf7619437bc0af125cb4e8360d9bda9d87ef45d6314d7acf163ab4cf99")
|
sha256sums=("179b027d51e4fe7ebdab2b18c07475d52c57e2ce69256292b157a8efacd82118")
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/9001/copyparty/releases/download/v1.18.10/copyparty-sfx.py",
|
"url": "https://github.com/9001/copyparty/releases/download/v1.19.0/copyparty-sfx.py",
|
||||||
"version": "1.18.10",
|
"version": "1.19.0",
|
||||||
"hash": "sha256-2FdQ5aCwNdZ5Jy9mn8rr8g41+QHT5tsEc+GeAKvhGeg="
|
"hash": "sha256-9A+zPtkVtUuGHB/JJV3fhVtJderLUGxHqvuJQz0/1+Q="
|
||||||
}
|
}
|
||||||
@@ -1201,6 +1201,7 @@ def add_zc_mdns(ap):
|
|||||||
ap2.add_argument("--zm-lh", metavar="PATH", type=u, default="", help="link a specific folder for http shares")
|
ap2.add_argument("--zm-lh", metavar="PATH", type=u, default="", help="link a specific folder for http shares")
|
||||||
ap2.add_argument("--zm-lf", metavar="PATH", type=u, default="", help="link a specific folder for ftp shares")
|
ap2.add_argument("--zm-lf", metavar="PATH", type=u, default="", help="link a specific folder for ftp shares")
|
||||||
ap2.add_argument("--zm-ls", metavar="PATH", type=u, default="", help="link a specific folder for smb shares")
|
ap2.add_argument("--zm-ls", metavar="PATH", type=u, default="", help="link a specific folder for smb shares")
|
||||||
|
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")
|
||||||
ap2.add_argument("--zm-mnic", action="store_true", help="merge NICs which share subnets; assume that same subnet means same network")
|
ap2.add_argument("--zm-mnic", action="store_true", help="merge NICs which share subnets; assume that same subnet means same network")
|
||||||
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")
|
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")
|
||||||
ap2.add_argument("--zm-noneg", action="store_true", help="disable NSEC replies -- try this if some clients don't see copyparty")
|
ap2.add_argument("--zm-noneg", action="store_true", help="disable NSEC replies -- try this if some clients don't see copyparty")
|
||||||
@@ -1390,7 +1391,7 @@ def add_shutdown(ap):
|
|||||||
def add_logging(ap):
|
def add_logging(ap):
|
||||||
ap2 = ap.add_argument_group("logging options")
|
ap2 = ap.add_argument_group("logging options")
|
||||||
ap2.add_argument("-q", action="store_true", help="quiet; disable most STDOUT messages")
|
ap2.add_argument("-q", action="store_true", help="quiet; disable most STDOUT messages")
|
||||||
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)")
|
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)")
|
||||||
ap2.add_argument("--no-ansi", action="store_true", default=not VT100, help="disable colors; same as environment-variable NO_COLOR")
|
ap2.add_argument("--no-ansi", action="store_true", default=not VT100, help="disable colors; same as environment-variable NO_COLOR")
|
||||||
ap2.add_argument("--ansi", action="store_true", help="force colors; overrides environment-variable NO_COLOR")
|
ap2.add_argument("--ansi", action="store_true", help="force colors; overrides environment-variable NO_COLOR")
|
||||||
ap2.add_argument("--no-logflush", action="store_true", help="don't flush the logfile after each write; tiny bit faster")
|
ap2.add_argument("--no-logflush", action="store_true", help="don't flush the logfile after each write; tiny bit faster")
|
||||||
@@ -1493,8 +1494,8 @@ def add_db_general(ap, hcores):
|
|||||||
ap2.add_argument("-e2vp", action="store_true", help="on hash mismatch: panic and quit copyparty")
|
ap2.add_argument("-e2vp", action="store_true", help="on hash mismatch: panic and quit copyparty")
|
||||||
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)")
|
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)")
|
||||||
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)")
|
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)")
|
||||||
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)")
|
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)")
|
||||||
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)")
|
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)")
|
||||||
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)")
|
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)")
|
||||||
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")
|
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")
|
||||||
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")
|
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")
|
||||||
@@ -1767,6 +1768,10 @@ def main(argv: Optional[list[str]] = None) -> None:
|
|||||||
|
|
||||||
ensure_webdeps()
|
ensure_webdeps()
|
||||||
|
|
||||||
|
if CFG_DEF:
|
||||||
|
supp = args_from_cfg(CFG_DEF[0])
|
||||||
|
argv.extend(supp)
|
||||||
|
|
||||||
for k, v in zip(argv[1:], argv[2:]):
|
for k, v in zip(argv[1:], argv[2:]):
|
||||||
if k == "-c" and os.path.isfile(v):
|
if k == "-c" and os.path.isfile(v):
|
||||||
supp = args_from_cfg(v)
|
supp = args_from_cfg(v)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
|
|
||||||
VERSION = (1, 19, 0)
|
VERSION = (1, 19, 1)
|
||||||
CODENAME = "usernames"
|
CODENAME = "usernames"
|
||||||
BUILD_DT = (2025, 8, 7)
|
BUILD_DT = (2025, 8, 10)
|
||||||
|
|
||||||
S_VERSION = ".".join(map(str, VERSION))
|
S_VERSION = ".".join(map(str, VERSION))
|
||||||
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
S_BUILD_DT = "{0:04d}-{1:02d}-{2:02d}".format(*BUILD_DT)
|
||||||
|
|||||||
@@ -1599,6 +1599,10 @@ class HttpCli(object):
|
|||||||
"quota-available-bytes": str(bfree),
|
"quota-available-bytes": str(bfree),
|
||||||
"quota-used-bytes": str(btot - bfree),
|
"quota-used-bytes": str(btot - bfree),
|
||||||
}
|
}
|
||||||
|
if "quotaused" in props: # macos finder crazytalk
|
||||||
|
df["quotaused"] = df["quota-used-bytes"]
|
||||||
|
if "quota" in props:
|
||||||
|
df["quota"] = df["quota-available-bytes"] # idk, makes it happy
|
||||||
else:
|
else:
|
||||||
df = {}
|
df = {}
|
||||||
else:
|
else:
|
||||||
@@ -4971,7 +4975,7 @@ class HttpCli(object):
|
|||||||
rip = host
|
rip = host
|
||||||
|
|
||||||
vp = (self.uparam["hc"] or "").lstrip("/")
|
vp = (self.uparam["hc"] or "").lstrip("/")
|
||||||
pw = self.pw or "hunter2"
|
pw = self.ouparam.get("pw") or "hunter2"
|
||||||
if pw in self.asrv.sesa:
|
if pw in self.asrv.sesa:
|
||||||
pw = "hunter2"
|
pw = "hunter2"
|
||||||
|
|
||||||
@@ -5481,13 +5485,13 @@ class HttpCli(object):
|
|||||||
q = "select sz, rd, fn, at from up where ip=? and at>? order by at desc"
|
q = "select sz, rd, fn, at from up where ip=? and at>? order by at desc"
|
||||||
for sz, rd, fn, at in cur.execute(q, (self.ip, lim)):
|
for sz, rd, fn, at in cur.execute(q, (self.ip, lim)):
|
||||||
vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
|
vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
|
||||||
if nfi == 0 or (nfi == 1 and vfi in vp):
|
if nfi == 0 or (nfi == 1 and vfi in vp.lower()):
|
||||||
pass
|
pass
|
||||||
elif nfi == 2:
|
elif nfi == 2:
|
||||||
if not vp.startswith(vfi):
|
if not vp.lower().startswith(vfi):
|
||||||
continue
|
continue
|
||||||
elif nfi == 3:
|
elif nfi == 3:
|
||||||
if not vp.endswith(vfi):
|
if not vp.lower().endswith(vfi):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
@@ -5607,13 +5611,13 @@ class HttpCli(object):
|
|||||||
q = "select sz, rd, fn, ip, at from up where at>0 order by at desc"
|
q = "select sz, rd, fn, ip, at from up where at>0 order by at desc"
|
||||||
for sz, rd, fn, ip, at in cur.execute(q):
|
for sz, rd, fn, ip, at in cur.execute(q):
|
||||||
vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
|
vp = "/" + "/".join(x for x in [vol.vpath, rd, fn] if x)
|
||||||
if nfi == 0 or (nfi == 1 and vfi in vp):
|
if nfi == 0 or (nfi == 1 and vfi in vp.lower()):
|
||||||
pass
|
pass
|
||||||
elif nfi == 2:
|
elif nfi == 2:
|
||||||
if not vp.startswith(vfi):
|
if not vp.lower().startswith(vfi):
|
||||||
continue
|
continue
|
||||||
elif nfi == 3:
|
elif nfi == 3:
|
||||||
if not vp.endswith(vfi):
|
if not vp.lower().endswith(vfi):
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ class MDNS(MCast):
|
|||||||
if not self.args.zm_nwa_1:
|
if not self.args.zm_nwa_1:
|
||||||
set_avahi_379()
|
set_avahi_379()
|
||||||
|
|
||||||
zs = self.args.name + ".local."
|
zs = self.args.zm_fqdn or (self.args.name + ".local")
|
||||||
|
zs = zs.replace("--name", self.args.name).rstrip(".") + "."
|
||||||
zs = zs.encode("ascii", "replace").decode("ascii", "replace")
|
zs = zs.encode("ascii", "replace").decode("ascii", "replace")
|
||||||
self.hn = "-".join(x for x in zs.split("?") if x) or (
|
self.hn = "-".join(x for x in zs.split("?") if x) or (
|
||||||
"vault-{}".format(random.randint(1, 255))
|
"vault-{}".format(random.randint(1, 255))
|
||||||
|
|||||||
@@ -1377,7 +1377,7 @@ html.y #ops svg circle {
|
|||||||
.opview select,
|
.opview select,
|
||||||
.opview input[type=text] {
|
.opview input[type=text] {
|
||||||
color: var(--fg);
|
color: var(--fg);
|
||||||
background: var(--txt-bg);
|
background: var(--bg-u5);
|
||||||
border: none;
|
border: none;
|
||||||
box-shadow: 0 0 2px var(--txt-sh);
|
box-shadow: 0 0 2px var(--txt-sh);
|
||||||
border-bottom: 1px solid #999;
|
border-bottom: 1px solid #999;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -98,33 +98,33 @@ var Ls = {
|
|||||||
"a1": "obnovit",
|
"a1": "obnovit",
|
||||||
"b1": "ahoj cizinče <small>(nejsi přihlášen)</small>",
|
"b1": "ahoj cizinče <small>(nejsi přihlášen)</small>",
|
||||||
"c1": "odhlásit se",
|
"c1": "odhlásit se",
|
||||||
"d1": "vypsat zásobníku", // TLNote: "d2" is the tooltip for this button
|
"d1": "vypsat zásobníku",
|
||||||
"d2": "zobrazit stav všech aktivních vláken",
|
"d2": "zobrazit stav všech aktivních vláken",
|
||||||
"e1": "znovu načíst konfiguraci",
|
"e1": "znovu načíst konfiguraci",
|
||||||
"e2": "znovu načíst konfigurační soubory (accounts/volumes/volflags),$Na prohledat všechny e2ds úložiště$N$Npoznámka: všechny změny globálních nastavení$Nvyžadují úplné restartování, aby se projevily",
|
"e2": "znovu načíst konfigurační soubory (accounts/volumes/volflags),$Na prohledat všechny e2ds úložiště$N$Npoznámka: všechny změny globálních nastavení$Nvyžadují úplné restartování, aby se projevily",
|
||||||
"f1": "můžeš procházet:",
|
"f1": "můžeš procházet:",
|
||||||
"g1": "můžeš nahrávat do:",
|
"g1": "můžeš nahrávat do:",
|
||||||
"cc1": "další věci:",
|
"cc1": "další věci:",
|
||||||
"h1": "zakázat k304", // TLNote: "j1" explains what k304 is
|
"h1": "zakázat k304",
|
||||||
"i1": "povolit k304",
|
"i1": "povolit k304",
|
||||||
"j1": "povolení k304 odpojí vašeho klienta při každém HTTP 304, což může zabránit některým chybovým proxy serverům, aby se zasekly (náhle nenačítaly stránky), <em>ale</em> také to obecně zpomalí věci",
|
"j1": "povolení k304 odpojí vašeho klienta při každém HTTP 304, což může zabránit některým chybovým proxy serverům, aby se zasekly (náhle nenačítaly stránky), <em>ale</em> také to obecně zpomalí věci",
|
||||||
"k1": "resetovat nastavení klienta",
|
"k1": "resetovat nastavení klienta",
|
||||||
"l1": "přihlaste se pro více:",
|
"l1": "přihlaste se pro více:",
|
||||||
"m1": "vítej zpět,", // TLNote: "welcome back, USERNAME"
|
"m1": "vítej zpět,",
|
||||||
"n1": "404 nenalezeno ┐( ´ -`)┌",
|
"n1": "404 nenalezeno ┐( ´ -`)┌",
|
||||||
"o1": 'nebo možná nemáš přístup -- zkus heslo nebo <a href="' + SR + '/?h">jdi domů</a>',
|
"o1": 'nebo možná nemáš přístup -- zkus heslo nebo <a href="' + SR + '/?h">jdi domů</a>',
|
||||||
"p1": "403 zakázáno ~┻━┻",
|
"p1": "403 zakázáno ~┻━┻",
|
||||||
"q1": 'použij heslo nebo <a href="' + SR + '/?h">jdi domů</a>',
|
"q1": 'použij heslo nebo <a href="' + SR + '/?h">jdi domů</a>',
|
||||||
"r1": "jdi domů",
|
"r1": "jdi domů",
|
||||||
".s1": "znovu prohledat",
|
".s1": "znovu prohledat",
|
||||||
"t1": "akce", // TLNote: this is the header above the "rescan" buttons
|
"t1": "akce",
|
||||||
"u2": "čas od posledního zápisu na server$N( upload / rename / ... )$N$N17d = 17 dní$N1h23 = 1 hodina 23 minut$N4m56 = 4 minuty 56 sekund",
|
"u2": "čas od posledního zápisu na server$N( upload / rename / ... )$N$N17d = 17 dní$N1h23 = 1 hodina 23 minut$N4m56 = 4 minuty 56 sekund",
|
||||||
"v1": "připojit",
|
"v1": "připojit",
|
||||||
"v2": "použít tento server jako místní HDD",
|
"v2": "použít tento server jako místní HDD",
|
||||||
"w1": "přepnout na https",
|
"w1": "přepnout na https",
|
||||||
"x1": "změnit heslo",
|
"x1": "změnit heslo",
|
||||||
"y1": "upravit sdílení", // TLNote: shows the list of folders that the user has decided to share
|
"y1": "upravit sdílení",
|
||||||
"z1": "odblokovat toto sdílení:", // TLNote: the password prompt to see a hidden share
|
"z1": "odblokovat toto sdílení:",
|
||||||
"ta1": "nejprve vyplňte své nové heslo",
|
"ta1": "nejprve vyplňte své nové heslo",
|
||||||
"ta2": "zopakujte pro potvrzení nového hesla:",
|
"ta2": "zopakujte pro potvrzení nového hesla:",
|
||||||
"ta3": "nalezen překlep; zkuste to prosím znovu",
|
"ta3": "nalezen překlep; zkuste to prosím znovu",
|
||||||
@@ -218,11 +218,52 @@ var Ls = {
|
|||||||
"af1": "näytä viimeaikaiset lataukset",
|
"af1": "näytä viimeaikaiset lataukset",
|
||||||
"ag1": "näytä tunnetut IdP-käyttäjät",
|
"ag1": "näytä tunnetut IdP-käyttäjät",
|
||||||
},
|
},
|
||||||
|
"fra": {
|
||||||
|
"a1": "rafraîchir",
|
||||||
|
"b1": "salut étranger <small>(vous n'êtes pas connecté.)</small>",
|
||||||
|
"c1": "déconnexion",
|
||||||
|
"d1": "vidange de la pile",
|
||||||
|
"d2": "affiche l'état de tous les threads actifs",
|
||||||
|
"e1": "recharger la configuration",
|
||||||
|
"e2": "recharger le fichier de configuration (comptes/volumes/indicateurs de volume),$Net rescanner tous les volumes e2ds$N$Nnote : n'importe quel changement aux paramètres globaux$Nnécessite un redémarrage complet pour prendre effet",
|
||||||
|
"f1": "vous pouvez naviguer :",
|
||||||
|
"g1": "vous pouvez télécharger sur :",
|
||||||
|
"cc1": "autres choses :",
|
||||||
|
"h1": "désactiver k304",
|
||||||
|
"i1": "activer k304",
|
||||||
|
"j1": "activer k304 va déconnecter votre client sur chaque HTTP 304, ce qui peut éviter à certains proxies défectueux de rester bloqués (les pages ne se chargent soudainement plus), <em>mais</em> cela ralentira également les choses en général",
|
||||||
|
"k1": "réinitialiser les paramètres du client",
|
||||||
|
"l1": "connectez-vous pour en savoir plus :",
|
||||||
|
"m1": "heureux de vous revoir,",
|
||||||
|
"n1": "404 introuvable ┐( ´ -`)┌",
|
||||||
|
"o1": 'ou peut-être que vous n\'y avez pas accès -- essayer un mot de passe ou <a href="' + SR + '/?h">aller à la page d\'accueil</a>',
|
||||||
|
"p1": "403 interdit ~┻━┻",
|
||||||
|
"q1": 'utiliser un mot de passe ou <a href="' + SR + '/?h">aller à la page d\'accueil</a>',
|
||||||
|
"r1": "aller à la page d\'accueil",
|
||||||
|
".s1": "rescanner",
|
||||||
|
"t1": "action",
|
||||||
|
"u2": "temps écoulé depuis la dernière écriture sur le serveur$N(téléchargement/renommage/...)$N$N17j = 17 jours$N1h23 = 1 heure 23 minutes$N4m56 = 4 minutes 56 secondes",
|
||||||
|
"v1": "connecter",
|
||||||
|
"v2": "utilisez ce serveur en tant que disque dur local",
|
||||||
|
"w1": "passer à https",
|
||||||
|
"x1": "changer mot de passe",
|
||||||
|
"y1": "modifier les partages",
|
||||||
|
"z1": "déverrouiller ce partage :",
|
||||||
|
"ta1": "entrez d'abord votre nouveau mot de passe",
|
||||||
|
"ta2": "répétez pour confirmer le nouveau mot de passe :",
|
||||||
|
"ta3": "une faute de frappe a été détectée ; veuillez réessayer.",
|
||||||
|
"aa1": "fichiers entrants :",
|
||||||
|
"ab1": "désactiver no304",
|
||||||
|
"ac1": "activer no304",
|
||||||
|
"ad1": "l'activation de no304 désactivera toute mise en cache ; essayez ceci si k304 n'était pas suffisant. Cela va générer un trafic réseau considérable !",
|
||||||
|
"ae1": "téléchargements actifs :",
|
||||||
|
"af1": "afficher les derniers téléchargements",
|
||||||
|
},
|
||||||
"grc": {
|
"grc": {
|
||||||
"a1": "ανανέωση",
|
"a1": "ανανέωση",
|
||||||
"b1": "γεια σου ξένε! <small>(δεν είσαι συνδεδεμένος)</small>",
|
"b1": "γεια σου ξένε! <small>(δεν είσαι συνδεδεμένος)</small>",
|
||||||
"c1": "αποσύνδεση",
|
"c1": "αποσύνδεση",
|
||||||
"d1": "σωρός απορριμμάτων",
|
"d1": "λίστα διεργασιών",
|
||||||
"d2": "εμφανίζει την κατάσταση όλων των ενεργών διεργασιών",
|
"d2": "εμφανίζει την κατάσταση όλων των ενεργών διεργασιών",
|
||||||
"e1": "επαναφόρτωση του cfg",
|
"e1": "επαναφόρτωση του cfg",
|
||||||
"e2": "φορτώνει ξανά τα αρχεία ρυθμίσεων (λογαριασμοί/τόμοι/volflags),$Nκαι κάνει επανεξέταση όλων των τόμων e2ds$N$Nσημείωση: οποιαδήποτε αλλαγή στις καθολικές ρυθμίσεις$Nαπαιτεί πλήρη επανεκκίνηση για να εφαρμοστεί",
|
"e2": "φορτώνει ξανά τα αρχεία ρυθμίσεων (λογαριασμοί/τόμοι/volflags),$Nκαι κάνει επανεξέταση όλων των τόμων e2ds$N$Nσημείωση: οποιαδήποτε αλλαγή στις καθολικές ρυθμίσεις$Nαπαιτεί πλήρη επανεκκίνηση για να εφαρμοστεί",
|
||||||
@@ -343,6 +384,90 @@ var Ls = {
|
|||||||
"af1": "Recent geüploade bestanden weergeven",
|
"af1": "Recent geüploade bestanden weergeven",
|
||||||
"ag1": "Bekende IdP-gebruikers weergeven",
|
"ag1": "Bekende IdP-gebruikers weergeven",
|
||||||
},
|
},
|
||||||
|
"nno": {
|
||||||
|
"a1": "oppdatér",
|
||||||
|
"b1": "heisann <small>(du er ikkje logga inn)</small>",
|
||||||
|
"c1": "logg ut",
|
||||||
|
"d1": "tilstand",
|
||||||
|
"d2": "vis tilstanden åt alle trådar",
|
||||||
|
"e1": "last innst.",
|
||||||
|
"e2": "les inn konfigurasjonsfiler på nytt$N(kontoer, volum, volumbrytarar)$Nog kartlegg alle e2ds-volum$N$Nmerk: endringer i globale parametrar$Nkrev ein full restart for å gjelde",
|
||||||
|
"f1": "du kan sjå på:",
|
||||||
|
"g1": "du kan laste opp åt:",
|
||||||
|
"cc1": "brytarar og slikt:",
|
||||||
|
"h1": "skru av k304",
|
||||||
|
"i1": "skru på k304",
|
||||||
|
"j1": "k304 bryt tilkoplinga for kvar HTTP 304. Dette hjelp mot visse mellomtjenarar som kan sette seg fast / plutselig sluttar å laste sider, men det sett óg ytinga ned betydelig",
|
||||||
|
"k1": "nullstill innstillinger",
|
||||||
|
"l1": "logg inn:",
|
||||||
|
"m1": "velkomen attende,",
|
||||||
|
"n1": "404: filen finnast ikkje ┐( ´ -`)┌",
|
||||||
|
"o1": 'eller kanskje du ikkje har høve? prøv eit passord eller <a href="' + SR + '/?h">gå heim</a>',
|
||||||
|
"p1": "403: tilgang nektet ~┻━┻",
|
||||||
|
"q1": 'prøv eit passord eller <a href="' + SR + '/?h">gå heim</a>',
|
||||||
|
"r1": "gå heim",
|
||||||
|
".s1": "kartlegg",
|
||||||
|
"t1": "handling",
|
||||||
|
"u2": "tid sidan nokon sist skreiv åt serveren$N( opplastning / namnendring / ... )$N$N17d = 17 dagar$N1h23 = 1 time 23 minutt$N4m56 = 4 minutt 56 sekund",
|
||||||
|
"v1": "kople åt",
|
||||||
|
"v2": "bruk denne serveren som ein lokal harddisk",
|
||||||
|
"w1": "bytt åt https",
|
||||||
|
"x1": "bytt passord",
|
||||||
|
"y1": "dine delinger",
|
||||||
|
"z1": "lås opp område:",
|
||||||
|
"ta1": "du må skrive eit nytt passord først",
|
||||||
|
"ta2": "gjenta for å stadfeste nytt passord:",
|
||||||
|
"ta3": "fant ein skrivefeil; vennligst prøv igjen",
|
||||||
|
"aa1": "innkommande:",
|
||||||
|
"ab1": "skru av no304",
|
||||||
|
"ac1": "skru på no304",
|
||||||
|
"ad1": "no304 stoppar all bruk av cache. Hvis ikkje k304 var nok, prøv denne. Vil mangedoble dataforbruk!",
|
||||||
|
"ae1": "utgående:",
|
||||||
|
"af1": "vis nylig opplasta filer",
|
||||||
|
"ag1": "vis kjente IdP-brukarar",
|
||||||
|
},
|
||||||
|
"pol": {
|
||||||
|
"a1": "odśwież",
|
||||||
|
"b1": "witaj, nieznajomy <small>(nie jesteś zalogowany)</small>",
|
||||||
|
"c1": "wyloguj się",
|
||||||
|
"d1": "zrzut stosu",
|
||||||
|
"d2": "pokazuje status wszystkich aktywnych wątków",
|
||||||
|
"e1": "przeładuj konfigurację",
|
||||||
|
"e2": "przeładuj pliki konfiguracyjne (konta/wolumeny/flagi wolumenów),$Ni przeskanuje wszystkie wolumeny e2ds$N$Nnotka: zmiany konfiguracji globalnej$Nwymagają pełnego uruchomienia ponownie serwera, aby zaczęły obowiązywać",
|
||||||
|
"f1": "możesz przeglądać:",
|
||||||
|
"g1": "możesz przesyłać do:",
|
||||||
|
"cc1": "inne:",
|
||||||
|
"h1": "wyłącz k304",
|
||||||
|
"i1": "włącz k304",
|
||||||
|
"j1": "włączenie k304 będzie odłączało klienta przy każdorazowym otrzymaniu kodu HTTP 304, co może zapobiec wieszaniu się wadliwych proxy, <em>ale</em> spowolni ogólne działanie",
|
||||||
|
"k1": "zresetuj ustawienia klienta",
|
||||||
|
"l1": "zaloguj się po więcej:",
|
||||||
|
"m1": "Witaj,",
|
||||||
|
"n1": "404 nie znaleziono ┐( ´ -`)┌",
|
||||||
|
"o1": 'lub możesz nie mieć dostępu -- spróbuj wprowadzić hasło lub <a href="' + SR + '/?h">przejdź do strony głównej</a>',
|
||||||
|
"p1": "403 odmowa dostępu ~┻━┻",
|
||||||
|
"q1": 'użyj hasła lub <a href="' + SR + '/?h">przejdź do strony głównej</a>',
|
||||||
|
"r1": "idź do strony głównej",
|
||||||
|
".s1": "przeskanuj ponownie",
|
||||||
|
"t1": "akcje",
|
||||||
|
"u2": "czas od ostatniej interakcji z serwerem$N( przesyłania / zmiany nazwy / ... )$N$N17d = 17 dni$N1h23 = 1 godzina 23 minuty$N4m56 = 4 minuty 56 sekund",
|
||||||
|
"v1": "połącz",
|
||||||
|
"v2": "używaj tego serwera jako dysku lokalnego",
|
||||||
|
"w1": "przejdź na HTTPS",
|
||||||
|
"x1": "zmień hasło",
|
||||||
|
"y1": "edytuj udostępnione",
|
||||||
|
"z1": "odblokuj udostępnienie:",
|
||||||
|
"ta1": "najpierw wprowadź nowe hasło",
|
||||||
|
"ta2": "powtórz hasło dla potwierdzenia:",
|
||||||
|
"ta3": "znaleziono literówkę, spróbuj ponownie",
|
||||||
|
"aa1": "pliki przychodzące:",
|
||||||
|
"ab1": "wyłącz no304",
|
||||||
|
"ac1": "włącz no304",
|
||||||
|
"ad1": "włączenie no304 wyłączy przechowywanie jakiejkolwiek pamięci podręcznej. Zmarnuje to olbrzymią ilość ruchu sieciowego!",
|
||||||
|
"ae1": "trwające pobierania:",
|
||||||
|
"af1": "pokaż ostatnio przesłane pliki",
|
||||||
|
"ag1": "pokaż znanych użytkowników IdP",
|
||||||
|
},
|
||||||
"spa": {
|
"spa": {
|
||||||
"a1": "actualizar",
|
"a1": "actualizar",
|
||||||
"b1": "hola <small>(no has iniciado sesión)</small>",
|
"b1": "hola <small>(no has iniciado sesión)</small>",
|
||||||
@@ -385,6 +510,48 @@ var Ls = {
|
|||||||
"af1": "mostrar subidas recientes",
|
"af1": "mostrar subidas recientes",
|
||||||
"ag1": "mostrar usuarios IdP conocidos"
|
"ag1": "mostrar usuarios IdP conocidos"
|
||||||
},
|
},
|
||||||
|
"ukr": {
|
||||||
|
"a1": "оновити",
|
||||||
|
"b1": "привітик, незнайомцю <small>(ви не авторизовані)</small>",
|
||||||
|
"c1": "вийти",
|
||||||
|
"d1": "трасування стека",
|
||||||
|
"d2": "показує стан усіх активних потоків",
|
||||||
|
"e1": "перезавантажити конфіг",
|
||||||
|
"e2": "перезавантажити файли конфігурації (облікові записи/томи/прапорці),$Nта пересканувати всі томи e2ds$N$Nувага: будь-які зміни глобальних налаштувань$Nвимагають повного перезапуску",
|
||||||
|
"f1": "ви можете бачити:",
|
||||||
|
"g1": "ви можете завантажувати файли в:",
|
||||||
|
"cc1": "всяка всячина:",
|
||||||
|
"h1": "вимкнути k304",
|
||||||
|
"i1": "увімкнути k304",
|
||||||
|
"j1": "увімкнення k304 буде відключати ваш клієнт при кожному HTTP 304, що може запобігти зависанню деяких глючних проксі (раптово перестають завантажувати сторінки), <em>але</em> це також зробить усе повільнішим загалом",
|
||||||
|
"k1": "скинути налаштування клієнта",
|
||||||
|
"l1": "авторизуйтесь для інших опцій:",
|
||||||
|
"m1": "з поверненням,",
|
||||||
|
"n1": "404 не знайдено ┐( ´ -`)┌",
|
||||||
|
"o1": 'або у вас немає доступу -- спробуйте авторизуватися або <a href="' + SR + '/?h">повернутися на головну</a>',
|
||||||
|
"p1": "403 доступ заборонений ~┻━┻",
|
||||||
|
"q1": 'авторизуйтесь або <a href="' + SR + '/?h">поверніться на головну</a>',
|
||||||
|
"r1": "повернутися на головну",
|
||||||
|
".s1": "пересканувати",
|
||||||
|
"t1": "дія",
|
||||||
|
"u2": "час з останнього запису сервера$N( завантаження / перейменування / ... )$N$N17d = 17 днів$N1h23 = 1 година 23 хвилини$N4m56 = 4 хвилини 56 секунд",
|
||||||
|
"v1": "підключити",
|
||||||
|
"v2": "використовувати цей сервер як локальний HDD",
|
||||||
|
"w1": "перейти на https",
|
||||||
|
"x1": "змінити пароль",
|
||||||
|
"y1": "керування доступом",
|
||||||
|
"z1": "розблокувати:",
|
||||||
|
"ta1": "спочатку заповніть ваш новий пароль",
|
||||||
|
"ta2": "повторіть для підтвердження нового пароля:",
|
||||||
|
"ta3": "описка; спробуйте знову",
|
||||||
|
"aa1": "вхідні файли:",
|
||||||
|
"ab1": "вимкнути no304",
|
||||||
|
"ac1": "увімкнути no304",
|
||||||
|
"ad1": "увімкнення no304 вимкне все кешування; спробуйте це, якщо k304 було недостатньо. Це витратить величезну кількість мережевого трафіку!",
|
||||||
|
"ae1": "активні завантаження:",
|
||||||
|
"af1": "показати нещодавні завантаження",
|
||||||
|
"ag1": "показати відомих IdP-користувачів"
|
||||||
|
},
|
||||||
"rus": {
|
"rus": {
|
||||||
"a1": "обновить",
|
"a1": "обновить",
|
||||||
"b1": "приветик, незнакомец <small>(вы не авторизованы)</small>",
|
"b1": "приветик, незнакомец <small>(вы не авторизованы)</small>",
|
||||||
@@ -458,7 +625,7 @@ catch (ex) { }
|
|||||||
|
|
||||||
tt.init();
|
tt.init();
|
||||||
var o = QS('input[name="uname"]') || QS('input[name="cppwd"]');
|
var o = QS('input[name="uname"]') || QS('input[name="cppwd"]');
|
||||||
if (!ebi('c') && o.offsetTop + o.offsetHeight < window.innerHeight)
|
if (!MOBILE && !ebi('c') && o.offsetTop + o.offsetHeight < window.innerHeight)
|
||||||
o.focus();
|
o.focus();
|
||||||
|
|
||||||
o = ebi('u');
|
o = ebi('u');
|
||||||
|
|||||||
@@ -1,3 +1,49 @@
|
|||||||
|
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||||
|
# 2025-0807-2213 `v1.19.0` usernames
|
||||||
|
|
||||||
|
## 🧪 new features
|
||||||
|
|
||||||
|
* #511 login with username and password (not just password) can now optionally be enabled with `--usernames` 346515cc
|
||||||
|
* if you have enabled password hashing (`ah-alg: argon2` or similar) then you will need to hash your passwords again after enabling usernames, hashing them as `username:password:`
|
||||||
|
* #468 add Greek translation (thx @chamdim!) 50f46187 392abd06
|
||||||
|
* #471 add Czech translation (thx @kubakubakuba!) c9556583
|
||||||
|
* #515 support systemd socket acivation (thx @mati1210!) 9b9d2a92
|
||||||
|
* #523 add QR-code to the connectpage bcc3b156
|
||||||
|
* #513 optional EOL-conversion for texteditor 8b31ed88
|
||||||
|
* controlpanel refresh-button now toggles automatic refresh 7ae84dea
|
||||||
|
|
||||||
|
## 🩹 bugfixes
|
||||||
|
|
||||||
|
* fix stuck uploads when the up2k database (`e2d`) is not enabled 4a043568
|
||||||
|
* if more than 60'000 files were uploaded and there were several dupes of some files, they could get stuck and never upload
|
||||||
|
* upload performance is improved remarkably by enabling `e2d` so such huge uploads non-e2d had not been tested in a long time
|
||||||
|
* #467 #470 fix ui-crash when exporting links of all uploaded files to clipboard (thx @geekalaa!) 0df1901f
|
||||||
|
* #487 fix ui-crash when the location url-part is `//` 0f55a1ae
|
||||||
|
* fix viewing `.MD` files (8a0746c6)
|
||||||
|
|
||||||
|
## 🔧 other changes
|
||||||
|
|
||||||
|
* when a reverse-proxy is detected, force explicit configuration of `--rproxy` to obtain correct client IP 3f8cb7e8
|
||||||
|
* a bit inconvenient, but helps prevent potentially-dangerous misconfiguration
|
||||||
|
* the necessary configuration changes are explained in the serverlog (you can't miss it)
|
||||||
|
* thanks to @person4268 for pointing out that there was room for improvements!
|
||||||
|
* failed login attempts now only log a sha512 hash of the provided password
|
||||||
|
* to see login-attempts with incorrect passwords as plaintext like before, `log-badpwd: 1`
|
||||||
|
* #502 add systemd user services and templated services (thx @icxes!) 34d98e99
|
||||||
|
* #475 improve helptext for multivalue global-options c2ac57a2
|
||||||
|
* #475 add [chungus.conf](https://github.com/9001/copyparty/blob/hovudstraum/docs/chungus.conf), massive extensive nonsensical demo config b664ebb0
|
||||||
|
* try to detect proxies with incorrect caching behavior 9e980bb5
|
||||||
|
* recent-uploads now support ie9 a57f7cc2
|
||||||
|
* languages and themes are now dropdowns a9ee4f24
|
||||||
|
* copyparty.exe: upgrade python to 3.13.6 a98360f2
|
||||||
|
* introduce [copyparty-en.py](https://github.com/9001/copyparty/releases/latest/download/copyparty-en.py), english-only edition of copyparty-sfx.py to save space 33497e6b
|
||||||
|
|
||||||
|
## 🗿 known issues
|
||||||
|
|
||||||
|
* the `copyparty.pyz` in this release is english-only, and does not include the translations -- they got lost in transit while adjusting the buildscripts to make `copyparty-en.py`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
|
||||||
# 2025-0804-0013 `v1.18.10` idp speedboost
|
# 2025-0804-0013 `v1.18.10` idp speedboost
|
||||||
|
|
||||||
|
|||||||
@@ -217,6 +217,7 @@ necho() {
|
|||||||
tar -zxf $f
|
tar -zxf $f
|
||||||
mv pyftpdlib-*/pyftpdlib .
|
mv pyftpdlib-*/pyftpdlib .
|
||||||
rm -rf pyftpdlib-* pyftpdlib/test
|
rm -rf pyftpdlib-* pyftpdlib/test
|
||||||
|
patch -p1 <../scripts/patches/pyftpdlib-win313.patch
|
||||||
for f in pyftpdlib/_async{hat,ore}.py; do
|
for f in pyftpdlib/_async{hat,ore}.py; do
|
||||||
[ -e "$f" ] || continue;
|
[ -e "$f" ] || continue;
|
||||||
iawk 'NR<4||NR>27||!/^#/;NR==4{print"# license: https://opensource.org/licenses/ISC\n"}' $f
|
iawk 'NR<4||NR>27||!/^#/;NR==4{print"# license: https://opensource.org/licenses/ISC\n"}' $f
|
||||||
|
|||||||
41
scripts/patches/pyftpdlib-win313.patch
Normal file
41
scripts/patches/pyftpdlib-win313.patch
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
Date: Tue, 22 Oct 2024 12:47:30 +0200
|
||||||
|
Subject: Workaround for isabs() on Windows + Python 3.13 (#652)
|
||||||
|
|
||||||
|
Starting from Python 3.13, `os.path.isabs("/foo")` on Windows return `False`
|
||||||
|
|
||||||
|
diff --git a/pyftpdlib/filesystems.py b/pyftpdlib/filesystems.py
|
||||||
|
index 9b9326bf..320ffe40 100644
|
||||||
|
--- a/pyftpdlib/filesystems.py
|
||||||
|
+++ b/pyftpdlib/filesystems.py
|
||||||
|
@@ -132,6 +132,16 @@ def cwd(self, path):
|
||||||
|
|
||||||
|
# --- Pathname / conversion utilities
|
||||||
|
|
||||||
|
+ @staticmethod
|
||||||
|
+ def _isabs(path, _windows=os.name == "nt"):
|
||||||
|
+ # Windows + Python 3.13: isabs() changed so that a path
|
||||||
|
+ # starting with "/" is no longer considered absolute.
|
||||||
|
+ # https://github.com/python/cpython/issues/44626
|
||||||
|
+ # https://github.com/python/cpython/pull/113829/
|
||||||
|
+ if _windows and path.startswith("/"):
|
||||||
|
+ return True
|
||||||
|
+ return os.path.isabs(path)
|
||||||
|
+
|
||||||
|
def ftpnorm(self, ftppath):
|
||||||
|
"""Normalize a "virtual" ftp pathname (typically the raw string
|
||||||
|
coming from client) depending on the current working directory.
|
||||||
|
@@ -146,3 +156,3 @@
|
||||||
|
assert isinstance(ftppath, unicode), ftppath
|
||||||
|
- if os.path.isabs(ftppath):
|
||||||
|
+ if self._isabs(ftppath):
|
||||||
|
p = os.path.normpath(ftppath)
|
||||||
|
@@ -162,3 +172,3 @@
|
||||||
|
# This is for extra protection, maybe not really necessary.
|
||||||
|
- if not os.path.isabs(p):
|
||||||
|
+ if not self._isabs(p):
|
||||||
|
p = u("/")
|
||||||
|
@@ -201,3 +211,3 @@
|
||||||
|
assert isinstance(fspath, unicode), fspath
|
||||||
|
- if os.path.isabs(fspath):
|
||||||
|
+ if self._isabs(fspath):
|
||||||
|
p = os.path.normpath(fspath)
|
||||||
@@ -43,6 +43,8 @@ while [ "$1" ]; do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
./make-pyz.sh
|
||||||
|
|
||||||
./make-sfx.sh re lang eng "$@"
|
./make-sfx.sh re lang eng "$@"
|
||||||
mv ../dist/copyparty-{sfx,en}.py
|
mv ../dist/copyparty-{sfx,en}.py
|
||||||
mv ../dist/copyparty-{int,sfx}.py
|
mv ../dist/copyparty-{int,sfx}.py
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ var tl_cpanel = {
|
|||||||
"ad1": "enabling no304 will disable all caching; try this if k304 wasn't enough. This will waste a huge amount of network traffic!",
|
"ad1": "enabling no304 will disable all caching; try this if k304 wasn't enough. This will waste a huge amount of network traffic!",
|
||||||
"ae1": "active downloads:",
|
"ae1": "active downloads:",
|
||||||
"af1": "show recent uploads",
|
"af1": "show recent uploads",
|
||||||
|
"ag1": "view idp cache",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user