mirror of
https://github.com/9001/copyparty.git
synced 2026-01-12 07:44:08 -07:00
Compare commits
8 commits
v1.20.1
...
hovudstrau
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d223d6ca7 | ||
|
|
caf831fc28 | ||
|
|
ae56f3bdae | ||
|
|
25a8b96fd1 | ||
|
|
7357d46f43 | ||
|
|
3aebfabd5c | ||
|
|
8914f0af70 | ||
|
|
a9ae6d5131 |
|
|
@ -1730,7 +1730,7 @@ set upload rules using volflags, some examples:
|
|||
* just to avoid additional complexity in up2k which is enough of a mess already
|
||||
* `:c,lifetime=300` delete uploaded files when they become 5 minutes old
|
||||
|
||||
you can also set transaction limits which apply per-IP and per-volume, but these assume `-j 1` (default) otherwise the limits will be off, for example `-j 4` would allow anywhere between 1x and 4x the limits you set depending on which processing node the client gets routed to
|
||||
you can also set transaction limits which apply per-IP and per-volume, but these assume `-j 1` (default) otherwise the limits will be messed up, for example `-j 4` would allow anywhere between 1x and 4x the limits you set depending on which processing node the client gets routed to
|
||||
|
||||
* `:c,maxn=250,3600` allows 250 files over 1 hour from each IP (tracked per-volume)
|
||||
* `:c,maxb=1g,300` allows 1 GiB total over 5 minutes from each IP (tracked per-volume)
|
||||
|
|
@ -2813,12 +2813,12 @@ below are some tweaks roughly ordered by usefulness:
|
|||
* `--no-htp --hash-mt=0 --mtag-mt=1 --th-mt=1` minimizes the number of threads; can help in some eccentric environments (like the vscode debugger)
|
||||
* when running on AlpineLinux or other musl-based distro, try mimalloc for higher performance (and twice as much RAM usage); `apk add mimalloc2` and run copyparty with env-var `LD_PRELOAD=/usr/lib/libmimalloc-secure.so.2`
|
||||
* note that mimalloc requires special care when combined with prisonparty and/or bubbleparty/bubblewrap; you must give it access to `/proc` and `/sys` otherwise you'll encounter issues with FFmpeg (audio transcoding, thumbnails)
|
||||
* `-j0` enables multiprocessing (actual multithreading), can reduce latency to `20+80/numCores` percent and generally improve performance in cpu-intensive workloads, for example:
|
||||
* `-j0` (usually *not* recommended) enables multiprocessing (actual multithreading), can reduce latency to `20+80/numCores` percent and generally improve performance in cpu-intensive workloads, for example:
|
||||
* lots of connections (many users or heavy clients)
|
||||
* simultaneous downloads and uploads saturating a 20gbps connection
|
||||
* if `-e2d` is enabled, `-j2` gives 4x performance for directory listings; `-j4` gives 16x
|
||||
|
||||
...however it also increases the server/filesystem/HDD load during uploads, and adds an overhead to internal communication, so it is usually a better idea to don't
|
||||
...however it will probably *reduce* performance in most cases, since it also increases the server/filesystem/HDD load during uploads, and adds an overhead to internal communication, so keeping the default is generally best
|
||||
* 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
|
||||
* and pypy can sometimes crash on startup with `-j0` (TODO make issue)
|
||||
|
||||
|
|
|
|||
|
|
@ -69,11 +69,8 @@ in
|
|||
options.services.copyparty = {
|
||||
enable = mkEnableOption "web-based file manager";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.copyparty;
|
||||
defaultText = "pkgs.copyparty";
|
||||
description = ''
|
||||
package = mkPackageOption pkgs "copyparty" {
|
||||
extraDescription = ''
|
||||
Package of the application to run, exposed for overriding purposes.
|
||||
'';
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
pkgname=copyparty
|
||||
pkgver="1.20.0"
|
||||
pkgver="1.20.1"
|
||||
pkgrel=1
|
||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||
arch=("any")
|
||||
|
|
@ -24,7 +24,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")
|
||||
backup=("etc/${pkgname}/copyparty.conf" )
|
||||
sha256sums=("a1fd3aab51f30435f07f1d128cf773262ee69a1554c9c32ea1e36d06438eb291")
|
||||
sha256sums=("4f513ca9e3d1c11a7bb4e1a8a925dda2449b9565e91f6ef7cbe10367fa4e2935")
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
|
||||
pkgname=copyparty
|
||||
pkgver=1.20.0
|
||||
pkgver=1.20.1
|
||||
pkgrel=1
|
||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||
arch=("any")
|
||||
|
|
@ -21,7 +21,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")
|
||||
backup=("/etc/${pkgname}.d/init" )
|
||||
sha256sums=("a1fd3aab51f30435f07f1d128cf773262ee69a1554c9c32ea1e36d06438eb291")
|
||||
sha256sums=("4f513ca9e3d1c11a7bb4e1a8a925dda2449b9565e91f6ef7cbe10367fa4e2935")
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"url": "https://github.com/9001/copyparty/releases/download/v1.20.0/copyparty-1.20.0.tar.gz",
|
||||
"version": "1.20.0",
|
||||
"hash": "sha256-of06q1HzBDXwfx0SjPdzJi7mmhVUycMuoeNtBkOOspE="
|
||||
"url": "https://github.com/9001/copyparty/releases/download/v1.20.1/copyparty-1.20.1.tar.gz",
|
||||
"version": "1.20.1",
|
||||
"hash": "sha256-T1E8qePRwRp7tOGoqSXdokSblWXpH273y+EDZ/pOKTU="
|
||||
}
|
||||
|
|
@ -1829,7 +1829,7 @@ class AuthSrv(object):
|
|||
if self.args.ipu and not self.args.have_idp_hdrs:
|
||||
# syntax (CIDR=UNAME) is verified in load_ipu
|
||||
zsl = [x.split("=", 1)[1] for x in self.args.ipu]
|
||||
zsl = [x for x in zsl if x not in acct]
|
||||
zsl = [x for x in zsl if x and x not in acct]
|
||||
if zsl:
|
||||
t = "ERROR: unknown users in ipu: %s" % (zsl,)
|
||||
self.log(t, 1)
|
||||
|
|
|
|||
|
|
@ -160,6 +160,7 @@ H_CONN_KEEPALIVE = "Connection: Keep-Alive"
|
|||
H_CONN_CLOSE = "Connection: Close"
|
||||
|
||||
RSS_SORT = {"m": "mt", "u": "at", "n": "fn", "s": "sz"}
|
||||
ACODE2_FMT = set(["opus", "owa", "caf", "mp3", "flac", "wav"])
|
||||
|
||||
A_FILE = os.stat_result(
|
||||
(0o644, -1, -1, 1, 1000, 1000, 8, 0x39230101, 0x39230101, 0x39230101)
|
||||
|
|
@ -6686,6 +6687,8 @@ class HttpCli(object):
|
|||
|
||||
if th_fmt == "p":
|
||||
raise Pebkac(404)
|
||||
elif th_fmt in ACODE2_FMT:
|
||||
raise Pebkac(415)
|
||||
|
||||
return self.tx_ico(rem)
|
||||
|
||||
|
|
|
|||
|
|
@ -352,6 +352,7 @@ HTTPCODE = {
|
|||
411: "Length Required",
|
||||
412: "Precondition Failed",
|
||||
413: "Payload Too Large",
|
||||
415: "Unsupported Media Type",
|
||||
416: "Requested Range Not Satisfiable",
|
||||
422: "Unprocessable Entity",
|
||||
423: "Locked",
|
||||
|
|
@ -3656,7 +3657,11 @@ def retchk(
|
|||
|
||||
t = "error {} from [{}]".format(t, c)
|
||||
if serr:
|
||||
t += "\n" + serr
|
||||
if len(serr) > 8192:
|
||||
zs = "%s\n[ ...TRUNCATED... ]\n%s\n[ NOTE: full msg was %d chars ]"
|
||||
serr = zs % (serr[:4096], serr[-4096:].rstrip(), len(serr))
|
||||
serr = serr.replace("\n", "\nstderr: ")
|
||||
t += "\nstderr: " + serr
|
||||
|
||||
if logger:
|
||||
logger(t, color)
|
||||
|
|
|
|||
|
|
@ -269,6 +269,7 @@ if (1)
|
|||
"cdt_ask": "when scrolling to the bottom,$Ninstead of loading more files,$Nask what to do",
|
||||
"cdt_hsort": "how many sorting rules (<code>,sorthref</code>) to include in media-URLs. Setting this to 0 will also ignore sorting-rules included in media links when clicking them",
|
||||
"cdt_ren": "enable custom right-click menu, you can still access the regular menu by pressing the shift key and right-clicking",
|
||||
"cdt_rdb": "show the regular right-click menu when the custom one is already open and right-clicking again",
|
||||
|
||||
"tt_entree": "show navpane (directory tree sidebar)$NHotkey: B",
|
||||
"tt_detree": "show breadcrumbs$NHotkey: B",
|
||||
|
|
@ -339,6 +340,7 @@ if (1)
|
|||
"mm_eunk": "Unknown Errol",
|
||||
"mm_e404": "Could not play audio; error 404: File not found.",
|
||||
"mm_e403": "Could not play audio; error 403: Access denied.\n\nTry pressing F5 to reload, maybe you got logged out",
|
||||
"mm_e415": "Could not play audio; error 415: File transcoding failed; check server logs.",
|
||||
"mm_e500": "Could not play audio; error 500: Check server logs.",
|
||||
"mm_e5xx": "Could not play audio; server error ",
|
||||
"mm_nof": "not finding any more audio files nearby",
|
||||
|
|
@ -649,7 +651,7 @@ if (1)
|
|||
"rc_ply": "play",
|
||||
"rc_pla": "play as audio",
|
||||
"rc_txt": "open in textfile viewer",
|
||||
"rc_md": "open in text editor",
|
||||
"rc_md": "open in markdown viewer",
|
||||
"rc_dl": "download",
|
||||
"rc_zip": "download as archive",
|
||||
"rc_cpl": "copy link",
|
||||
|
|
@ -657,6 +659,7 @@ if (1)
|
|||
"rc_cut": "cut",
|
||||
"rc_cpy": "copy",
|
||||
"rc_pst": "paste",
|
||||
"rc_rnm": "rename",
|
||||
"rc_nfo": "new folder",
|
||||
"rc_nfi": "new file",
|
||||
"rc_sal": "select all",
|
||||
|
|
@ -989,7 +992,7 @@ ebi('op_cfg').innerHTML = (
|
|||
' </div>\n' +
|
||||
'</div>\n' +
|
||||
'<div><h3>' + L.cl_keytype + '</h3><div><select id="key_notation"></select></div></div>\n' +
|
||||
(!MOBILE ? '<div><h3>' + L.cl_rcm + '</h3><div><a id="ren" class="tgl btn" href="#" tt="' + L.cdt_ren + '">enable</a></div></div>' : '') +
|
||||
(!MOBILE ? '<div><h3>' + L.cl_rcm + '</h3><div><a id="ren" class="tgl btn" href="#" tt="' + L.cdt_ren + '">enable</a><a id="rdb" class="tgl btn" href="#" tt="' + L.cdt_rdb + '">double</a></div></div>' : '') +
|
||||
'<div><h3>' + L.cl_hiddenc + ' ' + (MOBILE ? '<a href="#" id="hcolsh">' + L.cl_hidec + '</a> / ' : '') + '<a href="#" id="hcolsr">' + L.cl_reset + '</a></h3><div id="hcols"></div></div>'
|
||||
);
|
||||
|
||||
|
|
@ -1033,13 +1036,12 @@ ebi('rcm').innerHTML = (
|
|||
'<a href="#" id="rzip">' + L.rc_zip + '</a>'
|
||||
: '') +
|
||||
'<div id="rs2" class="sep"></div>' +
|
||||
(has(perms, "move") ?
|
||||
'<a href="#" id="rdel">' + L.rc_del + '</a>' +
|
||||
'<a href="#" id="rcut">' + L.rc_cut + '</a>'
|
||||
: '') +
|
||||
(have_del ? '<a href="#" id="rdel">' + L.rc_del + '</a>' : '') +
|
||||
(have_mv ? '<a href="#" id="rcut">' + L.rc_cut + '</a>' : '') +
|
||||
'<a href="#" id="rcpy">' + L.rc_cpy + '</a>' +
|
||||
(has(perms, "write") ?
|
||||
'<a href="#" id="rpst">' + L.rc_pst + '</a>' +
|
||||
(have_mv ? '<a href="#" id="rrnm">' + L.rc_rnm + '</a>' : '') +
|
||||
'<div id="rs3" class="sep"></div>' +
|
||||
'<a href="#" id="rnfo">' + L.rc_nfo + '</a>' +
|
||||
'<a href="#" id="rnfi">' + L.rc_nfi + '</a>'
|
||||
|
|
@ -3281,6 +3283,7 @@ function evau_error(e) {
|
|||
var em = '' + eplaya.error.message,
|
||||
mfile = '\n\nFile: «' + uricom_dec(eplaya.src.split('/').pop()) + '»',
|
||||
e500 = L.mm_e500,
|
||||
e415 = L.mm_e415,
|
||||
e404 = L.mm_e404,
|
||||
e403 = L.mm_e403;
|
||||
|
||||
|
|
@ -3293,6 +3296,9 @@ function evau_error(e) {
|
|||
if (em.startsWith('404: '))
|
||||
err = e404;
|
||||
|
||||
if (em.startsWith('415: '))
|
||||
err = e415;
|
||||
|
||||
if (em.startsWith('500: '))
|
||||
err = e500;
|
||||
|
||||
|
|
@ -3309,6 +3315,7 @@ function evau_error(e) {
|
|||
|
||||
err = this.status == 403 ? e403 :
|
||||
this.status == 404 ? e404 :
|
||||
this.status == 415 ? e415 :
|
||||
this.status == 500 ? e500 :
|
||||
L.mm_e5xx + this.status;
|
||||
|
||||
|
|
@ -9474,9 +9481,11 @@ var rcm = (function () {
|
|||
return {enabled: false}
|
||||
|
||||
var r = {
|
||||
enabled: true
|
||||
enabled: true,
|
||||
double: false
|
||||
};
|
||||
bcfg_bind(r, 'enabled', 'ren', true);
|
||||
bcfg_bind(r, 'double', 'rdb', false);
|
||||
|
||||
var menu = ebi('rcm');
|
||||
var nsFile = {
|
||||
|
|
@ -9550,7 +9559,7 @@ var rcm = (function () {
|
|||
case 'ply': selFile.type == 'gf' ? thegrid.imshow(selFile.relpath) : play('f-' + selFile.id); break;
|
||||
case 'pla': play('f-' + selFile.id); break;
|
||||
case 'txt': location = '?doc=' + selFile.relpath; break;
|
||||
case 'md': location = selFile.path + '?v'; break;
|
||||
case 'md': location = selFile.path + (has(selFile.path, '?') ? '&v' : '?v'); break;
|
||||
case 'cpl': cliptxt(selFile.url, function() {toast.ok(2, L.clipped)}); break;
|
||||
case 'dl': ebi('seldl').click(); break;
|
||||
case 'zip': ebi('selzip').click(); break;
|
||||
|
|
@ -9561,6 +9570,7 @@ var rcm = (function () {
|
|||
fileman.paste();
|
||||
fileman.clip = [];
|
||||
break;
|
||||
case 'rnm': fileman.rename(); break;
|
||||
case 'nfo': mktemp(true); break;
|
||||
case 'nfi': mktemp(); break;
|
||||
case 'sal':
|
||||
|
|
@ -9587,8 +9597,8 @@ var rcm = (function () {
|
|||
selFile.elem = file;
|
||||
|
||||
selFile.url = file.children[1].firstChild.href;
|
||||
selFile.path = basenames(selFile.url).split('?')[0];
|
||||
selFile.relpath = selFile.path.split('/').slice(-1)[0];
|
||||
selFile.path = basenames(selFile.url).replace(/(&|\?)v/, '');
|
||||
selFile.relpath = selFile.path.split('/').slice(-1)[0].split("?")[0];
|
||||
if (noq_href(file.children[1].firstChild).endsWith("/"))
|
||||
selFile.type = "dir";
|
||||
else {
|
||||
|
|
@ -9598,6 +9608,7 @@ var rcm = (function () {
|
|||
}
|
||||
}
|
||||
}
|
||||
console.log(selFile);
|
||||
msel.selui();
|
||||
|
||||
var has_sel = msel.getsel().length;
|
||||
|
|
@ -9608,7 +9619,7 @@ var rcm = (function () {
|
|||
clmod(ebi('rpla'), 'hide', selFile.type != 'gf');
|
||||
clmod(ebi('rtxt'), 'hide', !selFile.id);
|
||||
clmod(ebi('rs1'), 'hide', !selFile.path);
|
||||
clmod(ebi('rmd'), 'hide', !selFile.id || selFile.path.slice(-3) != '.md');
|
||||
clmod(ebi('rmd'), 'hide', !selFile.id || selFile.relpath.slice(-3) != ".md");
|
||||
clmod(ebi('rcpl'), 'hide', !selFile.path);
|
||||
clmod(ebi('rdl'), 'hide', !has_sel);
|
||||
clmod(ebi('rzip'), 'hide', !has_sel);
|
||||
|
|
@ -9617,7 +9628,9 @@ var rcm = (function () {
|
|||
clmod(ebi('rdel'), 'hide', !has_sel);
|
||||
clmod(ebi('rcpy'), 'hide', !has_sel);
|
||||
clmod(ebi('rpst'), 'hide', !has_clip);
|
||||
clmod(ebi('rs3'), 'hide', !has_sel || !has_clip);
|
||||
clmod(ebi('rrnm'), 'hide', !has_sel);
|
||||
clmod(ebi('rs3'), 'hide', !has_sel);
|
||||
clmod(ebi('rs4'), 'hide', !has_sel && !has(perms, "write"));
|
||||
|
||||
menu.style.left = x + 5 + 'px';
|
||||
menu.style.top = y + 5 + 'px';
|
||||
|
|
@ -9625,7 +9638,7 @@ var rcm = (function () {
|
|||
menu.focus();
|
||||
}
|
||||
|
||||
r.hide = function (force) {
|
||||
r.hide = function(force) {
|
||||
if (!menu.style.display || (!force && menu.contains(document.activeElement)))
|
||||
return;
|
||||
if (selFile.elem && !selFile.no_dsel) {
|
||||
|
|
@ -9637,10 +9650,14 @@ var rcm = (function () {
|
|||
}
|
||||
|
||||
ebi('wrap').oncontextmenu = function(e) {
|
||||
if (!r.enabled || e.shiftKey || menu.style.display) {
|
||||
r.hide(true);
|
||||
r.hide(true);
|
||||
if (!r.enabled || e.shiftKey || (r.double && menu.style.display)) {
|
||||
return true;
|
||||
}
|
||||
if (selFile.elem && !selFile.no_dsel) {
|
||||
clmod(selFile.elem, "sel", false);
|
||||
msel.selui();
|
||||
}
|
||||
ev(e);
|
||||
var gfile = thegrid.en && e.target && e.target.closest('#ggrid > a');
|
||||
show(xscroll() + e.clientX, yscroll() + e.clientY, gfile || e.target, gfile);
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.chi = {
|
|||
"mm_eunk": "未知错误",
|
||||
"mm_e404": "无法播放音频;错误 404:文件未找到。",
|
||||
"mm_e403": "无法播放音频;错误 403:访问被拒绝。\n\n尝试按 F5 重新加载,也许你已被注销",
|
||||
"mm_e415": "无法播放音频;错误 415:文件转码失败;检查服务器日志。", //m
|
||||
"mm_e500": "无法播放音频;错误 500:检查服务器日志。", //m
|
||||
"mm_e5xx": "无法播放音频;服务器错误",
|
||||
"mm_nof": "附近找不到更多音频文件",
|
||||
|
|
|
|||
|
|
@ -338,6 +338,7 @@ Ls.cze = {
|
|||
"mm_eunk": "Neznámá chyba",
|
||||
"mm_e404": "Nelze přehrát audio; chyba 404: Soubor nenalezen.",
|
||||
"mm_e403": "Nelze přehrát audio; chyba 403: Přístup odepřen.\n\nZkuste stisknout F5 pro obnovení, možná jste se odhlásili",
|
||||
"mm_e415": "Nelze přehrát audio; chyba 415: Převod souboru selhal; zkontrolujte logy serveru.", //m
|
||||
"mm_e500": "Nelze přehrát audio; chyba 500: Zkontrolujte logy serveru.",
|
||||
"mm_e5xx": "Nelze přehrát audio; chyba serveru ",
|
||||
"mm_nof": "žádné další audio soubory v okolí nenalezeny",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.deu = {
|
|||
"mm_eunk": "Unbekannter Fehler",
|
||||
"mm_e404": "Konnte Datei nicht abspielen; Fehler 404: Datei nicht gefunden.",
|
||||
"mm_e403": "Konnte Datei nicht abspielen; Fehler 403: Zugriff verweigert.\n\nDrücke F5 zum Neuladen, vielleicht wurdest du abgemeldet",
|
||||
"mm_e415": "Konnte Datei nicht abspielen; Fehler 415: Umwandlung der Datei fehlgeschlagen; Serverlogs prüfen.", //m
|
||||
"mm_e500": "Konnte Datei nicht abspielen; Fehler 500: Prüfe die Serverlogs.",
|
||||
"mm_e5xx": "Konnte Datei nicht abspielen; Server Fehler ",
|
||||
"mm_nof": "finde keine weiteren Audiodateien in der Nähe",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.epo = {
|
|||
"mm_eunk": "Nekonata eraro",
|
||||
"mm_e404": "Ne povas ludi aŭdiaĵon; eraro 404: Dosiero ne trovita.",
|
||||
"mm_e403": "Ne povas ludi aŭdiaĵon; eraro 403: Atingo malpermesita.\n\nKlopodu reŝargi paĝon per klavo F5, eble via seanco senvalidiĝis",
|
||||
"mm_e415": "Ne povas ludi aŭdiaĵon; eraro 415: Transkodigo de dosiero malsukcesis; rigardu la protokolojn de servilo.", //m
|
||||
"mm_e500": "Ne povas ludi aŭdiaĵon; eraro 500: Rigardu la protokolojn de servilo.",
|
||||
"mm_e5xx": "Ne povas ludi aŭdiaĵon; servila eraro ",
|
||||
"mm_nof": "neniuj aŭdio-dosieroj trovitaj proksime",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.fin = {
|
|||
"mm_eunk": "Tuntematon virhe",
|
||||
"mm_e404": "Kappaletta ei voitu toistaa; virhe 404: Tiedostoa ei löydy.",
|
||||
"mm_e403": "Kappaletta ei voitu toistaa; virhe 403: Pääsy kielletty.\n\nKokeile painaa F5 päivittääksesi, ehkä kirjauduit ulos",
|
||||
"mm_e415": "Kappaletta ei voitu toistaa; virhe 415: Tiedoston muunnos epäonnistui; tarkista palvelinlokit.", //m
|
||||
"mm_e500": "Kappaletta ei voitu toistaa; virhe 500: Tarkista palvelinlokit.",
|
||||
"mm_e5xx": "Kappaletta ei voitu toistaa; palvelinvirhe ",
|
||||
"mm_nof": "ei löydy enempää äänitiedostoja lähistöltä",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.fra = {
|
|||
"mm_eunk": "Erreur inconnue",
|
||||
"mm_e404": "Impossible de lire l'audio ; erreur 404 : fichier introuvable.",
|
||||
"mm_e403": "Impossible de lire l'audio ; erreur 403 : accès refusé.\n\nEssayez d'appuyer sur F5 pour recharger, peut-être que vous avez été déconnecté",
|
||||
"mm_e415": "Impossible de lire l'audio ; erreur 415 : échec de la conversion du fichier ; vérifiez les journaux du serveur.", //m
|
||||
"mm_e500": "Impossible de lire l'audio ; erreur 500 : vérifiez les journaux du serveur.",
|
||||
"mm_e5xx": "Impossible de lire l'audio ; erreur serveur ",
|
||||
"mm_nof": "Pas d'autres fichiers audio trouvés par ici",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.grc = {
|
|||
"mm_eunk": "Άγνωστο σφάλμα",
|
||||
"mm_e404": "Αδύνατη η αναπαραγωγή ήχου; σφάλμα 404: Το αρχείο δεν βρέθηκε.",
|
||||
"mm_e403": "Αδύνατη η αναπαραγωγή ήχου; σφάλμα 403: Άρνηση πρόσβασης.\n\nΔοκίμασε F5 για επαναφόρτωση, ίσως να έχεις αποσυνδεθεί",
|
||||
"mm_e415": "Αδύνατη η αναπαραγωγή ήχου; σφάλμα 415: Απέτυχε η μετατροπή αρχείου; έλεγξε τα logs του διακομιστή.", //m
|
||||
"mm_e500": "Αδύνατη η αναπαραγωγή ήχου; σφάλμα 500: Έλεγξε τα logs του διακομιστή.",
|
||||
"mm_e5xx": "Αδύνατη η αναπαραγωγή ήχου; σφάλμα διακομιστή",
|
||||
"mm_nof": "δεν βρέθηκαν άλλα αρχεία ήχου τριγύρω",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.ita = {
|
|||
"mm_eunk": "Errore Sconosciuto",
|
||||
"mm_e404": "Non è stato possibile riprodurre audio; errore 404: File non trovato.",
|
||||
"mm_e403": "Non è stato possibile riprodurre audio; errore 403: Accesso negato.\n\nProva a premere F5 per ricaricare, forse sei stato disconnesso",
|
||||
"mm_e415": "Non è stato possibile riprodurre audio; errore 415: Conversione del file non riuscita; controlla i log del server.", //m
|
||||
"mm_e500": "Non è stato possibile riprodurre audio; errore 500: Controlla i log del server.",
|
||||
"mm_e5xx": "Non è stato possibile riprodurre audio; errore server ",
|
||||
"mm_nof": "non trovo altri file audio nelle vicinanze",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.jpn = {
|
|||
"mm_eunk": "不明なエラー",
|
||||
"mm_e404": "オーディオを再生できませんでした。エラー404: ファイルが見つかりません。",
|
||||
"mm_e403": "オーディオを再生できませんでした。エラー403: アクセス拒否。\n\nF5キーを押してリロードしてみてください。ログアウトしている可能性があります。",
|
||||
"mm_e415": "オーディオを再生できませんでした。エラー415: ファイルの変換に失敗しました。サーバーログを確認してください。", //m
|
||||
"mm_e500": "オーディオを再生できませんでした。エラー500: サーバーログを確認してください。",
|
||||
"mm_e5xx": "オーディオを再生できませんでした。サーバーエラー ",
|
||||
"mm_nof": "近くにオーディオファイルが見つかりません",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.kor = {
|
|||
"mm_eunk": "알 수 없는 오류",
|
||||
"mm_e404": "오디오를 재생할 수 없습니다; 오류 404: 파일을 찾을 수 없습니다.",
|
||||
"mm_e403": "오디오를 재생할 수 없습니다; 오류 403: 접근이 거부되었습니다.\n\nF5를 눌러 새로고침 해보세요, 로그아웃되었을 수 있습니다",
|
||||
"mm_e415": "오디오를 재생할 수 없습니다; 오류 415: 파일 변환에 실패했습니다; 서버 로그를 확인하세요.", //m
|
||||
"mm_e500": "오디오를 재생할 수 없습니다; 오류 500: 서버 로그를 확인하세요.",
|
||||
"mm_e5xx": "오디오를 재생할 수 없습니다; 서버 오류 ",
|
||||
"mm_nof": "주변에서 더 이상 오디오 파일을 찾을 수 없습니다",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.nld = {
|
|||
"mm_eunk": "Onbekende fout",
|
||||
"mm_e404": "Kan audio niet afspelen; fout 404: Bestand niet gevonden..",
|
||||
"mm_e403": "Kan audio niet afspelen; fout 403: Toegang geweigerd.\n\nProbeer op F5 te drukken om opnieuw te laden, misschien ben je uitgelogd",
|
||||
"mm_e415": "Kan geen audio afspelen; fout 415: Bestandsconversie mislukt; controleer serverlogs.", //m
|
||||
"mm_e500": "Kan geen audio afspelen; fout 500: Controleer serverlogs.",
|
||||
"mm_e5xx": "Kan geen audio afspelen; serverfout ",
|
||||
"mm_nof": "Geen audiobestanden meer vinden in de buurt",
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@ Ls.nno = {
|
|||
"mm_eunk": "Ukjent feil",
|
||||
"mm_e404": "Avspeling feilet: Fil ikkje funnet.",
|
||||
"mm_e403": "Avspeling feilet: Høve nekta.\n\nKanskje du blei logget ut?\nPrøv å trykk F5 for å laste sida på nytt.",
|
||||
"mm_e415": "Avspeling feilet: Kunne ikkje konvertere fila, sjekk serverloggen.",
|
||||
"mm_e500": "Avspeling feilet: Rusk i maskineriet, sjekk serverloggen.",
|
||||
"mm_e5xx": "Avspeling feilet: ",
|
||||
"mm_nof": "finn ikkje flere songer i nærheita",
|
||||
|
|
|
|||
|
|
@ -331,6 +331,7 @@ Ls.nor = {
|
|||
"mm_eunk": "Ukjent feil",
|
||||
"mm_e404": "Avspilling feilet: Fil ikke funnet.",
|
||||
"mm_e403": "Avspilling feilet: Tilgang nektet.\n\nKanskje du ble logget ut?\nPrøv å trykk F5 for å laste siden på nytt.",
|
||||
"mm_e415": "Avspilling feilet: Kunne ikke konvertere filen, sjekk serverloggen.",
|
||||
"mm_e500": "Avspilling feilet: Rusk i maskineriet, sjekk serverloggen.",
|
||||
"mm_e5xx": "Avspilling feilet: ",
|
||||
"mm_nof": "finner ikke flere sanger i nærheten",
|
||||
|
|
|
|||
|
|
@ -337,6 +337,7 @@ Ls.pol = {
|
|||
"mm_eunk": "Nieznany błąd",
|
||||
"mm_e404": "Nie można odtworzyć; błąd 404: Nie znaleziono pliku.",
|
||||
"mm_e403": "Nie można odtworzyć; błąd 403: Odmowa dostępu.\n\nSpróbuj przeładować stronę (F5), może cię wylogowało",
|
||||
"mm_e415": "Nie można odtworzyć; błąd 415: Konwersja pliku nie powiodła się; sprawdź logi serwera.", //m
|
||||
"mm_e500": "Nie można odtworzyć; błąd 500: Sprawdź logi serwera.",
|
||||
"mm_e5xx": "Nie można odtworzyć; błąd serwera",
|
||||
"mm_nof": "nie znaleziono więcej plików audio",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.por = {
|
|||
"mm_eunk": "Erro Desconhecido",
|
||||
"mm_e404": "Não foi possível reproduzir áudio; erro 404: Arquivo não encontrado.",
|
||||
"mm_e403": "Não foi possível reproduzir áudio; erro 403: Acesso negado.\n\nTente pressionar F5 para recarregar, talvez você tenha saído da conta",
|
||||
"mm_e415": "Não foi possível reproduzir áudio; erro 415: Falha na conversão do ficheiro; verifique os logs do servidor.", //m
|
||||
"mm_e500": "Não foi possível reproduzir áudio; erro 500: Verifique os logs do servidor.",
|
||||
"mm_e5xx": "Não foi possível reproduzir áudio; erro do servidor ",
|
||||
"mm_nof": "não encontrando mais arquivos de áudio por perto",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.rus = {
|
|||
"mm_eunk": "Неопознанная ошибка",
|
||||
"mm_e404": "Не удалось воспроизвести аудио; ошибка 404: Файл не найден.",
|
||||
"mm_e403": "Не удалось воспроизвести аудио; ошибка 403: Доступ запрещён.\n\nПопробуйте перезагрузить страницу, возможно, ваша сессия истекла",
|
||||
"mm_e415": "Не удалось воспроизвести аудио; ошибка 415: Сбой преобразования файла; проверьте логи сервера.", //m
|
||||
"mm_e500": "Не удалось воспроизвести аудио; ошибка 500: Проверьте логи сервера.",
|
||||
"mm_e5xx": "Не удалось воспроизвести аудио; ошибка сервера ",
|
||||
"mm_nof": "больше аудио-файлов не найдено",
|
||||
|
|
|
|||
|
|
@ -333,6 +333,7 @@ Ls.spa = {
|
|||
"mm_eunk": "Error desconocido",
|
||||
"mm_e404": "No se pudo reproducir el audio; error 404: Archivo no encontrado.",
|
||||
"mm_e403": "No se pudo reproducir el audio; error 403: Acceso denegado.\n\nIntenta pulsar F5 para recargar, quizás se cerró tu sesión",
|
||||
"mm_e415": "No se pudo reproducir el audio; error 415: Falló la conversión del archivo; revisa los registros del servidor.", //m
|
||||
"mm_e500": "No se pudo reproducir el audio; error 500: Revisa los registros del servidor.",
|
||||
"mm_e5xx": "No se pudo reproducir el audio; error del servidor ",
|
||||
"mm_nof": "no se encuentran más archivos de audio cerca",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.swe = {
|
|||
"mm_eunk": "Okänt Fel",
|
||||
"mm_e404": "Kunde inte spela upp ljudfil; fel 404: Filen hittades inte.",
|
||||
"mm_e403": "Kunde inte spela upp ljudfil; fel 403: Åtkomst nekad.\n\nProva att ladda om sidan med F5, du kanske blev utloggad",
|
||||
"mm_e415": "Kunde inte spela upp ljudfil; fel 415: Filkonvertering misslyckades; kolla serverloggen.", //m
|
||||
"mm_e500": "Kunde inte spela upp ljudfil; fel 500: Kolla serverloggen.",
|
||||
"mm_e5xx": "Kunde inte spela upp ljudfil; serverfel ",
|
||||
"mm_nof": "hittade inga fler låtar i närheten",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.tur = {
|
|||
"mm_eunk": "Bilinmeyen Hata",
|
||||
"mm_e404": "Ses oynatılamadı; hata 404: Dosya bulunamadı.",
|
||||
"mm_e403": "Ses oynatılamadı; hata 403: Erişim reddedildi.\n\nYeniden yüklemek için F5 tuşuna basın, oturumunuz kapanmış olabilir.",
|
||||
"mm_e415": "Ses oynatılamadı; hata 415: Dosya dönüştürme başarısız oldu; sunucu günlüklerini kontrol edin.", //m
|
||||
"mm_e500": "Ses oynatılamadı; hata 500: Sunucu günlüklerini kontrol edin.",
|
||||
"mm_e5xx": "Ses oynatılamadı; sunucu hatası ",
|
||||
"mm_nof": "yakınlarda başka ses dosyası bulunamadı",
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ Ls.ukr = {
|
|||
"mm_eunk": "Невідома помилка",
|
||||
"mm_e404": "Не вдалося відтворити аудіо; помилка 404: Файл не знайдено.",
|
||||
"mm_e403": "Не вдалося відтворити аудіо; помилка 403: Доступ заборонено.\n\nСпробуйте натиснути F5 для перезавантаження, можливо, ви вийшли з системи",
|
||||
"mm_e415": "Не вдалося відтворити аудіо; помилка 415: Не вдалося перетворити файл; перевірте логи сервера.", //m
|
||||
"mm_e500": "Не вдалося відтворити аудіо; помилка 500: Перевірте логи сервера.",
|
||||
"mm_e5xx": "Не вдалося відтворити аудіо; помилка сервера ",
|
||||
"mm_nof": "не знаходжу більше аудіо файлів поблизу",
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ Ls.vie = {
|
|||
|
||||
"ot_search": "tìm kiếm các tệp theo thuộc tính, đường dẫn / tên, tag nhạc hoặc bất kỳ sự kết hợp nào của chúng$N$N<code>foo bar</code> = phải chứa cả «foo» và «bar»,$N<code>foo -bar</code> = phải chứa «foo» nhưng không chứa «bar»,$N<code>^yana .opus$</code> = bắt đầu bằng «yana» và là tệp «opus»$N<code>"try unite"</code> = chứa chính xác «try unite»$N$Nđịnh dạng ngày là iso-8601, như$N<code>2009-12-31</code> hoặc <code>2020-09-12 23:30:00</code>",
|
||||
|
||||
|
||||
"ot_unpost": "unpost: xoá các tệp đã tải lên gần đây hoặc huỷ những tệp đang tải dở",
|
||||
"ot_bup": "bup: trình tải lên cơ bản, hỗ trợ cả Netscape 4.0",
|
||||
"ot_mkdir": "mkdir: tạo thư mục mới",
|
||||
|
|
@ -198,13 +197,10 @@ Ls.vie = {
|
|||
"ul_flagblk": "tệp đã được thêm vào hàng chờ</b><br>tuy vậy đang có một tiến trình up2k đang chạy ở một tab khác<br>vui lòng đợi cho đến khi tiến trình đó hoàn tất hoặc bị hủy",
|
||||
"ul_btnlk": "cài đặt của máy chủ đã khóa tùy chọn ở trạng thái này",
|
||||
|
||||
|
||||
"udt_up": "Tải lên",
|
||||
"udt_srch": "Tìm kiếm",
|
||||
"udt_drop": "thả vào đây",
|
||||
|
||||
|
||||
|
||||
"u_nav_m": '<h6>chọn phương thức tải lên</h6><code>Enter</code> = Tệp (một hoặc nhiều)\n<code>ESC</code> = Một thư mục (kèm thư mục con)',
|
||||
"u_nav_b": '<a href="#" id="modal-ok">Tệp</a><a href="#" id="modal-ng">Một thư mục</a>',
|
||||
|
||||
|
|
@ -347,6 +343,7 @@ Ls.vie = {
|
|||
"mm_eunk": "Lỗi không xác định",
|
||||
"mm_e404": "Không thể phát âm thanh; lỗi 404: Không tìm thấy tệp.",
|
||||
"mm_e403": "Không thể phát âm thanh; lỗi 403: Từ chối truy cập.\n\nThử nhấn F5 để tải lại, có thể bạn đã đăng xuất",
|
||||
"mm_e415": "Không thể phát âm thanh; lỗi 415: Chuyển đổi tệp thất bại; kiểm tra nhật ký máy chủ.", //m
|
||||
"mm_e500": "Không thể phát âm thanh; lỗi 500: Kiểm tra nhật ký máy chủ.",
|
||||
"mm_e5xx": "Không thể phát âm thanh; lỗi máy chủ ",
|
||||
"mm_nof": "không tìm thấy thêm tệp âm thanh nào gần đó",
|
||||
|
|
@ -354,6 +351,7 @@ Ls.vie = {
|
|||
"mm_scank": "Đã tìm thấy bài nhạc tiếp theo:",
|
||||
"mm_uncache": "đã xoá bộ nhớ đệm; tất cả bài nhạc sẽ được tải lại khi phát tiếp",
|
||||
"mm_hnf": "bài nhạc này không còn tồn tại nữa",
|
||||
|
||||
"im_hnf": "hình ảnh này không còn tồn tại nữa",
|
||||
|
||||
"f_empty": 'thư mục này trống',
|
||||
|
|
@ -378,7 +376,6 @@ Ls.vie = {
|
|||
"fc_emore": "hãy chọn ít nhất một mục để cắt",
|
||||
"fcp_emore": "hãy chọn ít nhất một mục để sao chép vào bảng nhớ tạm",
|
||||
|
||||
|
||||
"fs_sc": "chia sẻ thư mục hiện tại",
|
||||
"fs_ss": "chia sẻ các tệp đã chọn",
|
||||
"fs_just1d": "bạn không thể chọn nhiều hơn một thư mục,\nhoặc trộn tệp và thư mục trong cùng một lựa chọn",
|
||||
|
|
@ -420,7 +417,6 @@ Ls.vie = {
|
|||
"fr_efail": "đổi tên thất bại:\n",
|
||||
"fr_nchg": "{0} tên mới đã bị chỉnh sửa do <code>win</code> và/hoặc <code>no /</code>\n\nTiếp tục với các tên đã chỉnh sửa?",
|
||||
|
||||
|
||||
"fd_ok": "hoàn tất xoá",
|
||||
"fd_err": "xoá gặp lỗi:\n",
|
||||
"fd_none": "không xóa được mục nào; có thể bị chặn bởi cấu hình máy chủ (xbd)?",
|
||||
|
|
@ -460,7 +456,6 @@ Ls.vie = {
|
|||
"nmd_i1": "hãy thêm cả phần mở rộng tệp bạn muốn, ví dụ <code>.md</code>",
|
||||
"nmd_i2": "bạn chỉ có thể tạo tệp <code>.md</code> vì bạn không có quyền xóa",
|
||||
|
||||
|
||||
"tv_load": "Đang tải tài liệu văn bản:\n\n{0}\n\n{1}% ({2} / {3} MiB)",
|
||||
"tv_xe1": "không thể tải tệp văn bản:\n\nlỗi ",
|
||||
"tv_xe2": "404, không tìm thấy tệp",
|
||||
|
|
@ -478,9 +473,6 @@ Ls.vie = {
|
|||
"tvt_ctail": "giải mã màu terminal (ansi escape codes)\">🌈",
|
||||
"tvt_ntail": "giới hạn scrollback (số byte văn bản được giữ trong bộ nhớ)",
|
||||
|
||||
|
||||
|
||||
|
||||
"m3u_add1": "đã thêm 1 bài vào danh sách phát m3u",
|
||||
"m3u_addn": "đã thêm {0} bài vào danh sách phát m3u",
|
||||
"m3u_clip": "danh sách phát m3u đã được chép vào bảng nhớ tạm\n\nbạn nên tạo một tệp văn bản mới tên bất kỳ.m3u rồi dán nội dung danh sách phát vào đó để có thể phát được",
|
||||
|
|
@ -524,7 +516,6 @@ Ls.vie = {
|
|||
"s_t1": "tag chứa (^=bắt đầu, kết thúc=$)",
|
||||
"s_a1": "thuộc tính metadata cụ thể",
|
||||
|
||||
|
||||
"md_eshow": "không thể tải",
|
||||
"md_off": "[📜<em>readme</em>] đã tắt trong [⚙️] -- tài liệu bị ẩn",
|
||||
|
||||
|
|
@ -576,7 +567,6 @@ Ls.vie = {
|
|||
"un_busy": "đang xóa {0} tệp...",
|
||||
"un_clip": "{0} liên kết đã chép vào bảng nhớ tạm",
|
||||
|
||||
|
||||
"u_https1": "bạn nên",
|
||||
"u_https2": "chuyển sang https",
|
||||
"u_https3": "để có hiệu suất tốt hơn",
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
# p: 3939 # listen on another port
|
||||
# ipa: 10.89. # only allow connections from 10.89.*
|
||||
# ipa: 172.16.4.0/23 # ...or only 172.16.4.* and 172.16.5.*
|
||||
# ipa: lan # ...or allow LAN only; reject internet IPs
|
||||
# df: 16 # stop accepting uploads if less than 16 GB free disk space
|
||||
# ver # show copyparty version in the controlpanel
|
||||
# grid # show thumbnails/grid-view by default
|
||||
|
|
|
|||
|
|
@ -363,6 +363,7 @@ Ls.hmn = {
|
|||
"mm_eunk": "Unknown Errol",
|
||||
"mm_e404": "Could not play audio; error 404: File not found.",
|
||||
"mm_e403": "Could not play audio; error 403: Access denied.\n\nTry pressing F5 to reload, maybe you got logged out",
|
||||
"mm_e415": "Could not play audio; error 415: File transcoding failed; check server logs.",
|
||||
"mm_e500": "Could not play audio; error 500: Check server logs.",
|
||||
"mm_e5xx": "Could not play audio; server error ",
|
||||
"mm_nof": "not finding any more audio files nearby",
|
||||
|
|
|
|||
Loading…
Reference in a new issue