mirror of
https://github.com/9001/copyparty.git
synced 2025-11-24 07:23:22 -07:00
Compare commits
No commits in common. "hovudstraum" and "v1.19.20" have entirely different histories.
hovudstrau
...
v1.19.20
|
|
@ -322,7 +322,7 @@ small collection of user feedback
|
|||
|
||||
project goals / philosophy
|
||||
|
||||
* inverse unix philosophy -- do all the things, and do an *okay* job
|
||||
* inverse linux philosophy -- do all the things, and do an *okay* job
|
||||
* quick drop-in service to get a lot of features in a pinch
|
||||
* some of [the alternatives](./docs/versus.md) might be a better fit for you
|
||||
* run anywhere, support everything
|
||||
|
|
@ -634,7 +634,7 @@ the main tabs in the ui
|
|||
* `[🧯]` [unpost](#unpost): undo/delete accidental uploads
|
||||
* `[🚀]` and `[🎈]` are the [uploaders](#uploading)
|
||||
* `[📂]` mkdir: create directories
|
||||
* `[📝]` new-file: create a new textfile
|
||||
* `[📝]` new-md: create a new markdown document
|
||||
* `[📟]` send-msg: either to server-log or into textfiles if `--urlform save`
|
||||
* `[🎺]` audio-player config options
|
||||
* `[⚙️]` general client config options
|
||||
|
|
|
|||
|
|
@ -68,8 +68,3 @@ instead of affecting all volumes, you can set the options for just one volume li
|
|||
* `:c,mtp=key=f,audio-key.py`
|
||||
* `:c,mtp=.bpm=f,audio-bpm.py`
|
||||
* `:c,mtp=ahash,vhash=f,media-hash.py`
|
||||
|
||||
|
||||
# tips & tricks
|
||||
|
||||
* to delete tags for all files below `blog*` and rescan that, `sqlite3 .hist/up2k.db "delete from mt where w in (select substr(w,1,16) from up where rd like 'blog%')";`
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
import json
|
||||
import re
|
||||
import sys
|
||||
|
||||
from copyparty.util import fsenc, runcmd
|
||||
|
||||
|
||||
"""
|
||||
uses exiftool to geotag images based on embedded gps coordinates in exif data
|
||||
|
||||
adds four new metadata keys:
|
||||
.gps_lat = latitute
|
||||
.gps_lon = longitude
|
||||
.masl = meters above sea level
|
||||
city = "city, subregion, region"
|
||||
|
||||
usage: -mtp .masl,.gps_lat,.gps_lon,city=ad,t10,bin/mtag/geotag.py
|
||||
|
||||
example: https://a.ocv.me/pub/blog/j7/8/?grid=0
|
||||
"""
|
||||
|
||||
|
||||
def main():
|
||||
cmd = b"exiftool -api geolocation -n".split(b" ")
|
||||
rc, so, se = runcmd(cmd + [fsenc(sys.argv[1])])
|
||||
ptn = re.compile("([^:]*[^ :]) *: (.*)")
|
||||
city = ["", "", ""]
|
||||
ret = {}
|
||||
for ln in so.split("\n"):
|
||||
m = ptn.match(ln)
|
||||
if not m:
|
||||
continue
|
||||
k, v = m.groups()
|
||||
if k == "Geolocation City":
|
||||
city[2] = v
|
||||
elif k == "Geolocation Subregion":
|
||||
city[1] = v
|
||||
elif k == "Geolocation Region":
|
||||
city[0] = v
|
||||
elif k == "GPS Latitude":
|
||||
ret[".gps_lat"] = "%.04f" % (float(v),)
|
||||
elif k == "GPS Longitude":
|
||||
ret[".gps_lon"] = "%.04f" % (float(v),)
|
||||
elif k == "GPS Altitude":
|
||||
ret[".masl"] = str(int(float(v)))
|
||||
v = ", ".join(city).strip(", ")
|
||||
if v:
|
||||
ret["city"] = v
|
||||
print(json.dumps(ret))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -48,8 +48,6 @@ let
|
|||
|
||||
accountsWithPlaceholders = mapAttrs (name: attrs: passwordPlaceholder name);
|
||||
|
||||
volumesWithoutVariables = filterAttrs (k: v: !(hasInfix "\${" v.path)) cfg.volumes;
|
||||
|
||||
configStr = ''
|
||||
${mkSection "global" cfg.settings}
|
||||
${cfg.globalExtraConfig}
|
||||
|
|
@ -327,7 +325,7 @@ in
|
|||
BindPaths =
|
||||
(if cfg.settings ? hist then [ cfg.settings.hist ] else [ ])
|
||||
++ [ externalStateDir ]
|
||||
++ (mapAttrsToList (k: v: v.path) volumesWithoutVariables);
|
||||
++ (mapAttrsToList (k: v: v.path) cfg.volumes);
|
||||
# ProtectSystem = "strict";
|
||||
# Note that unlike what 'ro' implies,
|
||||
# this actually makes it impossible to read anything in the root FS,
|
||||
|
|
@ -366,20 +364,10 @@ in
|
|||
#: in front of things means it wont change it if the directory already exists.
|
||||
group = ":${cfg.group}";
|
||||
user = ":${cfg.user}";
|
||||
mode = ":${
|
||||
# Use volume permissions if set
|
||||
if (value.flags ? chmod_d) then
|
||||
value.flags.chmod_d
|
||||
# Else, use global permission if set
|
||||
else if (cfg.settings ? chmod-d) then
|
||||
cfg.settings.chmod-d
|
||||
# Else, use the default permission
|
||||
else
|
||||
"755"
|
||||
}";
|
||||
mode = ":755";
|
||||
};
|
||||
}
|
||||
) volumesWithoutVariables
|
||||
) cfg.volumes
|
||||
);
|
||||
|
||||
users.groups = lib.mkIf (cfg.group == "copyparty") {
|
||||
|
|
|
|||
|
|
@ -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.19.20"
|
||||
pkgver="1.19.19"
|
||||
pkgrel=1
|
||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||
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")
|
||||
backup=("etc/${pkgname}/copyparty.conf" )
|
||||
sha256sums=("050ccc34554e59210aca7a67d87a186e69b3f4dbe013d5ee2f11a22c259a82a6")
|
||||
sha256sums=("6dc4d1e622a856c97d456260d540378f3eb31a88d26fc1b1969e28ec20e66f7a")
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
|
||||
pkgname=copyparty
|
||||
pkgver=1.19.20
|
||||
pkgver=1.19.19
|
||||
pkgrel=1
|
||||
pkgdesc="File server with accelerated resumable uploads, dedup, WebDAV, FTP, TFTP, zeroconf, media indexer, thumbnails++"
|
||||
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")
|
||||
backup=("/etc/${pkgname}.d/init" )
|
||||
sha256sums=("050ccc34554e59210aca7a67d87a186e69b3f4dbe013d5ee2f11a22c259a82a6")
|
||||
sha256sums=("6dc4d1e622a856c97d456260d540378f3eb31a88d26fc1b1969e28ec20e66f7a")
|
||||
|
||||
build() {
|
||||
cd "${srcdir}/${pkgname}-${pkgver}/copyparty/web"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"url": "https://github.com/9001/copyparty/releases/download/v1.19.20/copyparty-1.19.20.tar.gz",
|
||||
"version": "1.19.20",
|
||||
"hash": "sha256-BQzMNFVOWSEKynpn2HoYbmmz9NvgE9XuLxGiLCWagqY="
|
||||
"url": "https://github.com/9001/copyparty/releases/download/v1.19.19/copyparty-1.19.19.tar.gz",
|
||||
"version": "1.19.19",
|
||||
"hash": "sha256-bcTR5iKoVsl9RWJg1UA3jz6zGojSb8Gxlp4o7CDmb3o="
|
||||
}
|
||||
|
|
@ -1160,6 +1160,7 @@ def add_general(ap, nc, srvname):
|
|||
ap2 = ap.add_argument_group("general options")
|
||||
ap2.add_argument("-c", metavar="PATH", type=u, default=CFG_DEF, action="append", help="\033[34mREPEATABLE:\033[0m add config file")
|
||||
ap2.add_argument("-nc", metavar="NUM", type=int, default=nc, help="max num clients")
|
||||
ap2.add_argument("-j", metavar="CORES", type=int, default=1, help="max num cpu cores, 0=all")
|
||||
ap2.add_argument("-a", metavar="ACCT", type=u, action="append", help="\033[34mREPEATABLE:\033[0m add account, \033[33mUSER\033[0m:\033[33mPASS\033[0m; example [\033[32med:wark\033[0m]")
|
||||
ap2.add_argument("-v", metavar="VOL", type=u, action="append", help="\033[34mREPEATABLE:\033[0m add volume, \033[33mSRC\033[0m:\033[33mDST\033[0m:\033[33mFLAG\033[0m; examples [\033[32m.::r\033[0m], [\033[32m/mnt/nas/music:/music:r:aed\033[0m], see --help-accounts")
|
||||
ap2.add_argument("--grp", metavar="G:N,N", type=u, action="append", help="\033[34mREPEATABLE:\033[0m add group, \033[33mNAME\033[0m:\033[33mUSER1\033[0m,\033[33mUSER2\033[0m,\033[33m...\033[0m; example [\033[32madmins:ed,foo,bar\033[0m]")
|
||||
|
|
@ -1174,7 +1175,6 @@ def add_general(ap, nc, srvname):
|
|||
ap2.add_argument("--mime", metavar="EXT=MIME", type=u, action="append", help="\033[34mREPEATABLE:\033[0m map file \033[33mEXT\033[0mension to \033[33mMIME\033[0mtype, for example [\033[32mjpg=image/jpeg\033[0m]")
|
||||
ap2.add_argument("--mimes", action="store_true", help="list default mimetype mapping and exit")
|
||||
ap2.add_argument("--rmagic", action="store_true", help="do expensive analysis to improve accuracy of returned mimetypes; will make file-downloads, rss, and webdav slower (volflag=rmagic)")
|
||||
ap2.add_argument("-j", metavar="CORES", type=int, default=1, help="num cpu-cores for uploads/downloads (0=all); keeping the default is almost always best")
|
||||
ap2.add_argument("--license", action="store_true", help="show licenses and exit")
|
||||
ap2.add_argument("--version", action="store_true", help="show versions and exit")
|
||||
ap2.add_argument("--versionb", action="store_true", help="show version and exit")
|
||||
|
|
@ -1491,7 +1491,6 @@ def add_hooks(ap):
|
|||
def add_stats(ap):
|
||||
ap2 = ap.add_argument_group("grafana/prometheus metrics endpoint")
|
||||
ap2.add_argument("--stats", action="store_true", help="enable openmetrics at /.cpr/metrics for admin accounts")
|
||||
ap2.add_argument("--stats-u", metavar="U,U", type=u, default="", help="comma-separated list of users allowed to access /.cpr/metrics even if they aren't admin")
|
||||
ap2.add_argument("--nos-hdd", action="store_true", help="disable disk-space metrics (used/free space)")
|
||||
ap2.add_argument("--nos-vol", action="store_true", help="disable volume size metrics (num files, total bytes, vmaxb/vmaxn)")
|
||||
ap2.add_argument("--nos-vst", action="store_true", help="disable volume state metrics (indexing, analyzing, activity)")
|
||||
|
|
|
|||
|
|
@ -1812,15 +1812,6 @@ class AuthSrv(object):
|
|||
derive_args(self.args)
|
||||
self.setup_auth_ord()
|
||||
|
||||
if self.args.ipu:
|
||||
# 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]
|
||||
if zsl:
|
||||
t = "ERROR: unknown users in ipu: %s" % (zsl,)
|
||||
self.log(t, 1)
|
||||
raise Exception(t)
|
||||
|
||||
self.setup_pwhash(acct)
|
||||
defpw = acct.copy()
|
||||
self.setup_chpw(acct)
|
||||
|
|
|
|||
|
|
@ -124,17 +124,7 @@ from .util import (
|
|||
|
||||
if True: # pylint: disable=using-constant-test
|
||||
import typing
|
||||
from typing import (
|
||||
Any,
|
||||
Generator,
|
||||
Iterable,
|
||||
Match,
|
||||
Optional,
|
||||
Pattern,
|
||||
Sequence,
|
||||
Type,
|
||||
Union,
|
||||
)
|
||||
from typing import Any, Generator, Iterable, Match, Optional, Pattern, Type, Union
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .httpconn import HttpConn
|
||||
|
|
@ -182,18 +172,6 @@ PERMS_rwh = [
|
|||
]
|
||||
|
||||
|
||||
def _build_zip_xcode() -> Sequence[str]:
|
||||
ret = "opus mp3 flac wav p".split()
|
||||
for codec in ("w", "j"):
|
||||
for suf in ("", "f", "f3", "3"):
|
||||
ret.append("%s%s" % (codec, suf))
|
||||
return ret
|
||||
|
||||
|
||||
ZIP_XCODE_L = _build_zip_xcode()
|
||||
ZIP_XCODE_S = set(ZIP_XCODE_L)
|
||||
|
||||
|
||||
class HttpCli(object):
|
||||
"""
|
||||
Spawned by HttpConn to process one http transaction
|
||||
|
|
@ -807,7 +785,7 @@ class HttpCli(object):
|
|||
guess = "modifying" if (origin and host) else "stripping"
|
||||
t = "cors-reject %s because request-header Origin=%r does not match request-protocol %r and host %r based on request-header Host=%r (note: if this request is not malicious, check if your reverse-proxy is accidentally %s request headers, in particular 'Origin', for example by running copyparty with --ihead='*' to show all request headers)"
|
||||
self.log(t % (self.mode, origin, proto, self.host, host, guess), 3)
|
||||
raise Pebkac(403, "rejected by cors-check (see serverlog)")
|
||||
raise Pebkac(403, "rejected by cors-check")
|
||||
|
||||
# getattr(self.mode) is not yet faster than this
|
||||
if self.mode == "POST":
|
||||
|
|
@ -953,7 +931,7 @@ class HttpCli(object):
|
|||
return False
|
||||
|
||||
self.log("banned for {:.0f} sec".format(rt), 6)
|
||||
self.terse_reply(b"thank you for playing (see serverlog and readme)", 403)
|
||||
self.terse_reply(b"thank you for playing", 403)
|
||||
return True
|
||||
|
||||
def permit_caching(self) -> None:
|
||||
|
|
@ -3330,9 +3308,9 @@ class HttpCli(object):
|
|||
vfs, rem = self.asrv.vfs.get(self.vpath, self.uname, False, True)
|
||||
self._assert_safe_rem(rem)
|
||||
|
||||
if not self.can_delete and not new_file.lower().endswith(".md"):
|
||||
t = "you can only create .md files because you don't have the delete-permission"
|
||||
raise Pebkac(400, t)
|
||||
ext = "" if "." not in new_file else new_file.split(".")[-1]
|
||||
if not ext or len(ext) > 5 or not self.can_delete:
|
||||
new_file += ".md"
|
||||
|
||||
sanitized = sanitize_fn(new_file, "")
|
||||
fdir = vfs.canonical(rem)
|
||||
|
|
@ -3371,6 +3349,7 @@ class HttpCli(object):
|
|||
raise Pebkac(500, "that file exists already")
|
||||
|
||||
with open(fsenc(fn), "wb") as f:
|
||||
f.write(b"`GRUNNUR`\n")
|
||||
if "fperms" in vfs.flags:
|
||||
set_fperms(f, vfs.flags)
|
||||
|
||||
|
|
@ -4964,12 +4943,9 @@ class HttpCli(object):
|
|||
# for f in fgen: print(repr({k: f[k] for k in ["vp", "ap"]}))
|
||||
cfmt = ""
|
||||
if self.thumbcli and not self.args.no_bacode:
|
||||
if uarg in ZIP_XCODE_S:
|
||||
cfmt = uarg
|
||||
else:
|
||||
for zs in ZIP_XCODE_L:
|
||||
if zs in self.ouparam:
|
||||
cfmt = zs
|
||||
for zs in ("opus", "mp3", "flac", "wav", "w", "j", "p"):
|
||||
if zs in self.ouparam or uarg == zs:
|
||||
cfmt = zs
|
||||
|
||||
if cfmt:
|
||||
self.log("transcoding to [{}]".format(cfmt))
|
||||
|
|
|
|||
|
|
@ -17,10 +17,10 @@ class Metrics(object):
|
|||
self.hsrv = hsrv
|
||||
|
||||
def tx(self, cli: "HttpCli") -> bool:
|
||||
args = cli.args
|
||||
if not cli.avol and cli.uname.lower() not in args.stats_u_set:
|
||||
if not cli.avol:
|
||||
raise Pebkac(403, "'stats' not allowed for user " + cli.uname)
|
||||
|
||||
args = cli.args
|
||||
if not args.stats:
|
||||
raise Pebkac(403, "the stats feature is not enabled in server config")
|
||||
|
||||
|
|
|
|||
|
|
@ -1081,7 +1081,7 @@ class SvcHub(object):
|
|||
vs = os.path.expandvars(os.path.expanduser(vs))
|
||||
setattr(al, k, vs)
|
||||
|
||||
for k in "idp_adm stats_u".split(" "):
|
||||
for k in "idp_adm".split(" "):
|
||||
vs = getattr(al, k)
|
||||
vsa = [x.strip() for x in vs.split(",")]
|
||||
vsa = [x.lower() for x in vsa if x]
|
||||
|
|
|
|||
|
|
@ -270,9 +270,6 @@ class ThumbSrv(object):
|
|||
|
||||
def shutdown(self) -> None:
|
||||
self.stopping = True
|
||||
Daemon(self._fire_sentinels, "thumbstopper")
|
||||
|
||||
def _fire_sentinels(self):
|
||||
for _ in range(self.nthr):
|
||||
self.q.put(None)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# but then why are you using copyparty in the first place
|
||||
|
||||
pk: $(addsuffix .gz, $(wildcard tl/*.js *.js *.css) \
|
||||
a/webdav-cfg.txt )
|
||||
a/partyfuse.py a/u2c.py a/webdav-cfg.txt )
|
||||
un: $(addsuffix .un, $(wildcard tl/*.gz *.gz a/*.gz))
|
||||
|
||||
%.gz: %
|
||||
|
|
|
|||
|
|
@ -51,9 +51,8 @@
|
|||
<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="{{ url_suf }}">
|
||||
<input type="hidden" name="act" value="new_md" />
|
||||
📝<input type="text" name="name" class="i" placeholder="weekend-plans">
|
||||
<input type="submit" value="new file">
|
||||
<input type="submit" value="new markdown doc">
|
||||
</form>
|
||||
<span id="new_mdi"></p>
|
||||
</div>
|
||||
|
||||
<div id="op_msg" class="opview opbox {% if not ls0 %}act{% endif %}">
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ if (1)
|
|||
"ot_unpost": "unpost: delete your recent uploads, or abort unfinished ones",
|
||||
"ot_bup": "bup: basic uploader, even supports netscape 4.0",
|
||||
"ot_mkdir": "mkdir: create a new directory",
|
||||
"ot_md": "new-file: create a new textfile",
|
||||
"ot_md": "new-md: create a new markdown document",
|
||||
"ot_msg": "msg: send a message to the server log",
|
||||
"ot_mp": "media player options",
|
||||
"ot_cfg": "configuration options",
|
||||
|
|
@ -128,7 +128,7 @@ if (1)
|
|||
"ot_noie": 'Please use Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "make directory",
|
||||
"ab_mkdoc": "new textfile",
|
||||
"ab_mkdoc": "new markdown doc",
|
||||
"ab_msg": "send msg to srv log",
|
||||
|
||||
"ay_path": "skip to folders",
|
||||
|
|
@ -440,8 +440,6 @@ if (1)
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Copy</a><a href="#" id="modal-ng">Upload</a>',
|
||||
|
||||
"mk_noname": "type a name into the text field on the left before you do that :p",
|
||||
"nmd_i1": "also add the file extension you want, for example <code>.md</code>",
|
||||
"nmd_i2": "you can only create <code>.md</code> files because you don't have the delete-permission",
|
||||
|
||||
"tv_load": "Loading text document:\n\n{0}\n\n{1}% ({2} of {3} MiB loaded)",
|
||||
"tv_xe1": "could not load textfile:\n\nerror ",
|
||||
|
|
@ -7745,8 +7743,6 @@ function apply_perms(res) {
|
|||
if (up2k)
|
||||
up2k.set_fsearch();
|
||||
|
||||
ebi('new_mdi').innerHTML = has(perms, "delete") ? L.nmd_i1 : L.nmd_i2;
|
||||
|
||||
widget.setvis();
|
||||
thegrid.setvis();
|
||||
if (!have_read && have_write)
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<script>
|
||||
setTimeout(function() {
|
||||
location.replace("{{ redir }}");
|
||||
}, 600);
|
||||
}, 1000);
|
||||
</script>
|
||||
{%- endif %}
|
||||
{%- if js %}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
<thead><tr><th>%</th><th>speed</th><th>eta</th><th>idle</th><th>dir</th><th>file</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for u in ups %}
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td><a href="{{ r }}/{{ u[4] }}">{{ u[5]|e }}</a></td><td>{{ u[6]|e }}</td></tr>
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td><a href="{{ u[4] }}">{{ u[5]|e }}</a></td><td>{{ u[6]|e }}</td></tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
<thead><tr><th>%</th><th>sent</th><th>speed</th><th>eta</th><th>idle</th><th></th><th>dir</th><th>file</th></tr></thead>
|
||||
<tbody>
|
||||
{%- for u in dls %}
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td>{{ u[4] }}</td><td>{{ u[5] }}</td><td><a href="{{ r }}/{{ u[6] }}">{{ u[7]|e }}</a></td><td>{{ u[8] }}</td></tr>
|
||||
<tr><td>{{ u[0] }}</td><td>{{ u[1] }}</td><td>{{ u[2] }}</td><td>{{ u[3] }}</td><td>{{ u[4] }}</td><td>{{ u[5] }}</td><td><a href="{{ u[6] }}">{{ u[7]|e }}</a></td><td>{{ u[8] }}</td></tr>
|
||||
{%- endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
@ -120,11 +120,7 @@
|
|||
</form>
|
||||
</div>
|
||||
{%- else %}
|
||||
{%- if this.uname == '*' %}
|
||||
<h1 id="l">login for more:</h1>
|
||||
{%- else %}
|
||||
<h1 id="l">change account:</h1>
|
||||
{%- endif %}
|
||||
<div>
|
||||
{%- if this.args.idp_login %}
|
||||
<ul><li>
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.chi = {
|
|||
"ot_unpost": "取消发布:删除最近上传的内容,或中止未完成的内容",
|
||||
"ot_bup": "bup:基础上传器,甚至支持 Netscape 4.0",
|
||||
"ot_mkdir": "mkdir:创建新目录",
|
||||
"ot_md": "new-file:创建新的文本文件", //m
|
||||
"ot_md": "new-md:创建新 Markdown 文档",
|
||||
"ot_msg": "msg:向服务器日志发送消息",
|
||||
"ot_mp": "媒体播放器选项",
|
||||
"ot_cfg": "配置选项",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.chi = {
|
|||
"ot_noie": '请使用 Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "创建目录",
|
||||
"ab_mkdoc": "新建文本文件", //m
|
||||
"ab_mkdoc": "新建 Markdown 文档",
|
||||
"ab_msg": "发送消息到服务器日志",
|
||||
|
||||
"ay_path": "跳转到文件夹",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.chi = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">复制</a><a href="#" id="modal-ng">上传</a>', //m
|
||||
|
||||
"mk_noname": "在左侧文本框中输入名称,然后再执行此操作 :p",
|
||||
"nmd_i1": "还可以添加需要的文件扩展名,例如 <code>.txt</code>", //m
|
||||
"nmd_i2": "由于没有删除权限,你只能创建 <code>.md</code> 文件", //m
|
||||
|
||||
"tv_load": "加载文本文件:\n\n{0}\n\n{1}% ({2} 的 {3} MiB 已加载)",
|
||||
"tv_xe1": "无法加载文本文件:\n\n错误 ",
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ Ls.cze = {
|
|||
"ot_unpost": "unpost: smazat vaše nedávné nahrání nebo zrušit nedokončené",
|
||||
"ot_bup": "bup: základní nahrávač, podporuje i netscape 4.0",
|
||||
"ot_mkdir": "mkdir: vytvořit nový adresář",
|
||||
"ot_md": "new-file: vytvořit nový textový soubor", //m
|
||||
"ot_md": "new-md: vytvořit nový markdown dokument",
|
||||
"ot_msg": "msg: poslat zprávu do logu serveru",
|
||||
"ot_mp": "možnosti přehrávače médií",
|
||||
"ot_cfg": "možnosti konfigurace",
|
||||
|
|
@ -129,7 +129,7 @@ Ls.cze = {
|
|||
"ot_noie": 'Prosím použijte Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "vytvořit adresář",
|
||||
"ab_mkdoc": "nový textový soubor", //m
|
||||
"ab_mkdoc": "nový markdown dokument",
|
||||
"ab_msg": "poslat zprávu do logu serveru",
|
||||
|
||||
"ay_path": "přejít na složky",
|
||||
|
|
@ -441,8 +441,6 @@ Ls.cze = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopírovat</a><a href="#" id="modal-ng">Nahrát</a>',
|
||||
|
||||
"mk_noname": "napište název do textového pole vlevo předtím než to uděláte :p",
|
||||
"nmd_i1": "můžeš také přidat příponu souboru, například <code>.txt</code>", //m
|
||||
"nmd_i2": "můžeš vytvářet pouze <code>.md</code> soubory, protože nemáš oprávnění mazat", //m
|
||||
|
||||
"tv_load": "Načítání textového dokumentu:\n\n{0}\n\n{1}% ({2} z {3} MiB načteno)",
|
||||
"tv_xe1": "nelze načíst textový soubor:\n\nchyba ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.deu = {
|
|||
"ot_unpost": "unpost: lösche deine letzten Uploads oder breche unvollständige ab",
|
||||
"ot_bup": "bup: Basic Uploader, unterstützt sogar Neuheiten wie Netscape 4.0",
|
||||
"ot_mkdir": "mkdir: Neuen Ordner erstellen",
|
||||
"ot_md": "new-file: Neues Textdokument erstellen", //m
|
||||
"ot_md": "new-md: Neues Markdown-Dokument erstellen",
|
||||
"ot_msg": "msg: Eine Nachricht an das Server-Log schicken",
|
||||
"ot_mp": "Media Player-Optionen",
|
||||
"ot_cfg": "Konfigurationsoptionen",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.deu = {
|
|||
"ot_noie": 'Bitte benutze Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "Ordner erstellen",
|
||||
"ab_mkdoc": "Textdatei erstellen", //m
|
||||
"ab_mkdoc": "Markdown Doc erstellen",
|
||||
"ab_msg": "Nachricht an Server Log senden",
|
||||
|
||||
"ay_path": "zu Ordnern springen",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.deu = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopieren</a><a href="#" id="modal-ng">Hochladen</a>',
|
||||
|
||||
"mk_noname": "Tipp' mal vorher lieber einen Namen in das Textfeld links, bevor du das machst :p",
|
||||
"nmd_i1": "Fügen Sie auch die gewünschte Dateiendung hinzu, z. B. <code>.txt</code>", //m
|
||||
"nmd_i2": "Sie können nur <code>.md</code>-Dateien erstellen, da Ihnen die Löschberechtigung fehlt", //m
|
||||
|
||||
"tv_load": "Textdatei wird geladen:\n\n{0}\n\n{1}% ({2} von {3} MiB geladen)",
|
||||
"tv_xe1": "Konnte Textdatei nicht laden:\n\nFehler ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.epo = {
|
|||
"ot_unpost": "unpost: forigi viaj plej lastaj alŝutoj, aŭ ĉesigi nefinigitajn",
|
||||
"ot_bup": "bup: fundamenta alŝutilo, funkias eĉ kun netscape 4.0",
|
||||
"ot_mkdir": "mkdir: krei novan dosierujon",
|
||||
"ot_md": "new-file: krei novan tekstodosieron", //m
|
||||
"ot_md": "new-md: krei novan markdown-dosieron",
|
||||
"ot_msg": "msg: sendi mesaĝon al servila protokolo",
|
||||
"ot_mp": "agordoj de medialudilo",
|
||||
"ot_cfg": "aliaj agordoj",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.epo = {
|
|||
"ot_noie": 'Bonvolu uzi retumilojn Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "krei dosierujon",
|
||||
"ab_mkdoc": "krei tekstodosieron", //m
|
||||
"ab_mkdoc": "krei markdown-dosieron",
|
||||
"ab_msg": "sendi mesaĝon al protokolo",
|
||||
|
||||
"ay_path": "iri al dosierujoj",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.epo = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopii</a><a href="#" id="modal-ng">Alŝuti</a>',
|
||||
|
||||
"mk_noname": "tajpu nomon en tekstokampo maldekstre antaŭ vi faras ĉi tion :p",
|
||||
"nmd_i1": "vi povas aldoni la deziratan sufikson, ekzemple <code>.txt</code>", //m
|
||||
"nmd_i2": "vi povas krei nur <code>.md</code>-dosierojn ĉar vi ne havas forigan permeson", //m
|
||||
|
||||
"tv_load": "Ŝargado de teksto-dokumento:\n\n{0}\n\n{1}% ({2} da {3} MiB ŝargita)",
|
||||
"tv_xe1": "ne povas ŝargi teksto-dosieron:\n\neraro ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.fin = {
|
|||
"ot_unpost": "unpost: poista viimeaikaiset tai keskeytä keskeneräiset lataukset",
|
||||
"ot_bup": "bup: tiedostojen 'perus'lähetysohjelma, tukee jopa netscape 4.0",
|
||||
"ot_mkdir": "mkdir: luo uusi hakemisto",
|
||||
"ot_md": "new-file: luo uusi tekstitiedosto", //m
|
||||
"ot_md": "new-md: luo uusi markdown-dokumentti",
|
||||
"ot_msg": "msg: lähetä viesti palvelinlokiin",
|
||||
"ot_mp": "mediasoittimen asetukset",
|
||||
"ot_cfg": "asetukset",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.fin = {
|
|||
"ot_noie": 'Suosittelemme käyttämään uudempaa selainta.',
|
||||
|
||||
"ab_mkdir": "luo hakemisto",
|
||||
"ab_mkdoc": "luo tekstitiedosto", //m
|
||||
"ab_mkdoc": "luo markdown-tiedosto",
|
||||
"ab_msg": "lähetä viesti palvelinlokiin",
|
||||
|
||||
"ay_path": "siirry hakemistoihin",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.fin = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopioi</a><a href="#" id="modal-ng">Lähetä</a>',
|
||||
|
||||
"mk_noname": "kirjoita nimi vasemmalla olevaan tekstikenttään ennen kuin teet tuon :p",
|
||||
"nmd_i1": "voit myös lisätä haluamasi tiedostopäätteen, esimerkiksi <code>.txt</code>", //m
|
||||
"nmd_i2": "voit luoda vain <code>.md</code>-tiedostoja, koska sinulla ei ole poistolupaa", //m
|
||||
|
||||
"tv_load": "Ladataan tekstidokumenttia:\n\n{0}\n\n{1}% ({2} / {3} Mt ladattu)",
|
||||
"tv_xe1": "tekstitiedoston lataaminen epäonnistui:\n\nvirhe ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.fra = {
|
|||
"ot_unpost": "unpost: supprimer vos téléchargements récents, ou annuler ceux en cours",
|
||||
"ot_bup": "bup: téléverseur de base, prend même en charge netscape 4.0",
|
||||
"ot_mkdir": "mkdir: créer un nouveau répertoire",
|
||||
"ot_md": "new-file: créer un nouveau fichier texte", //m
|
||||
"ot_md": "new-md: créer un nouveau document markdown",
|
||||
"ot_msg": "msg: envoyer un message au journal du serveur",
|
||||
"ot_mp": "options du lecteur multimedia",
|
||||
"ot_cfg": "options de configuration",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.fra = {
|
|||
"ot_noie": 'Utilisez Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "créer un nouveau répertoire",
|
||||
"ab_mkdoc": "nouveau fichier texte", //m
|
||||
"ab_mkdoc": "faire un nouveau document markdown",
|
||||
"ab_msg": "envoyer un message au journal du serveur",
|
||||
|
||||
"ay_path": "passer aux dossiers",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.fra = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Copier</a><a href="#" id="modal-ng">Téléverser</a>',
|
||||
|
||||
"mk_noname": "entrez un nom dans le champ de texte à gauche avant de faire ça :p",
|
||||
"nmd_i1": "ajoutez aussi l’extension souhaitée, par exemple <code>.txt</code>", //m
|
||||
"nmd_i2": "vous ne pouvez créer que des fichiers <code>.md</code> car vous n’avez pas la permission d’effacer", //m
|
||||
|
||||
"tv_load": "Chargement du document texte:\n\n{0}\n\n{1}% ({2} de {3} MiB chargés)",
|
||||
"tv_xe1": "impossible de charger le fichier texte:\n\nerreur",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.grc = {
|
|||
"ot_unpost": "unpost: διαγραφή πρόσφατων μεταφορτώσεων ή ακύρωση ανολοκλήρωτων",
|
||||
"ot_bup": "bup: βασικός uploader, υποστηρίζει μέχρι και netscape 4.0",
|
||||
"ot_mkdir": "mkdir: δημιουργία νέου φακέλου",
|
||||
"ot_md": "new-file: δημιουργία νέου αρχείου κειμένου", //m
|
||||
"ot_md": "new-md: δημιουργία νέου markdown εγγράφου",
|
||||
"ot_msg": "msg: αποστολή μηνύματος στο server log",
|
||||
"ot_mp": "επιλογές media player",
|
||||
"ot_cfg": "επιλογές ρυθμίσεων",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.grc = {
|
|||
"ot_noie": 'Χρησιμοποίησε Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "δημιουργία φακέλου",
|
||||
"ab_mkdoc": "νέο αρχείο κειμένου", //m
|
||||
"ab_mkdoc": "νέο markdown έγγραφο",
|
||||
"ab_msg": "στείλε μήνυμα στο server log",
|
||||
|
||||
"ay_path": "πήγαινε σε φακέλους",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.grc = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Αντιγραφή</a><a href="#" id="modal-ng">Μεταφόρτωση</a>',
|
||||
|
||||
"mk_noname": "γράψε ένα όνομα στο πεδίο κειμένου αριστερά πριν το κάνεις :p",
|
||||
"nmd_i1": "μπορείτε επίσης να προσθέσετε την κατάληξη που θέλετε, όπως <code>.txt</code>", //m
|
||||
"nmd_i2": "μπορείτε να δημιουργήσετε μόνο αρχεία <code>.md</code> επειδή δεν έχετε δικαίωμα διαγραφής", //m
|
||||
|
||||
"tv_load": "Φόρτωση αρχείου κειμένου:\n\n{0}\n\n{1}% ({2} από {3} MiB φορτωμένα)",
|
||||
"tv_xe1": "αδυναμία φόρτωσης αρχείου κειμένου:\n\nσφάλμα ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.ita = {
|
|||
"ot_unpost": "unpost: elimina i tuoi caricamenti recenti, o interrompi quelli non completati",
|
||||
"ot_bup": "bup: uploader di base, supporta anche netscape 4.0",
|
||||
"ot_mkdir": "mkdir: crea una nuova directory",
|
||||
"ot_md": "new-file: crea un nuovo file di testo", //m
|
||||
"ot_md": "new-md: crea un nuovo documento markdown",
|
||||
"ot_msg": "msg: invia un messaggio al log del server",
|
||||
"ot_mp": "opzioni lettore multimediale",
|
||||
"ot_cfg": "opzioni di configurazione",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.ita = {
|
|||
"ot_noie": 'Perfavore usa Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "crea directory",
|
||||
"ab_mkdoc": "nuovo file di testo", //m
|
||||
"ab_mkdoc": "nuovo doc markdown",
|
||||
"ab_msg": "invia msg al log srv",
|
||||
|
||||
"ay_path": "salta alle cartelle",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.ita = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Copia</a><a href="#" id="modal-ng">Carica</a>',
|
||||
|
||||
"mk_noname": "scrivi un nome nel campo di testo a sinistra prima di farlo :p",
|
||||
"nmd_i1": "puoi anche aggiungere l’estensione che vuoi, per esempio <code>.txt</code>", //m
|
||||
"nmd_i2": "puoi creare solo file <code>.md</code> perché non hai il permesso di eliminare", //m
|
||||
|
||||
"tv_load": "Caricando documento di testo:\n\n{0}\n\n{1}% ({2} di {3} MiB caricati)",
|
||||
"tv_xe1": "impossibile caricare file di testo:\n\nerrore ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.kor = {
|
|||
"ot_unpost": "주워담기: 최근 업로드한 항목을 삭제하거나 미완료된 업로드를 중단합니다",
|
||||
"ot_bup": "bup: 기본 업로더. 넷스케이프 4.0도 지원합니다",
|
||||
"ot_mkdir": "mkdir: 새 디렉터리를 만듭니다",
|
||||
"ot_md": "new-file: 새 텍스트 파일을 만듭니다", //m
|
||||
"ot_md": "new-md: 새 마크다운 문서를 만듭니다",
|
||||
"ot_msg": "msg: 서버 로그에 메시지를 보냅니다",
|
||||
"ot_mp": "미디어 플레이어 옵션",
|
||||
"ot_cfg": "구성 옵션",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.kor = {
|
|||
"ot_noie": 'Chrome / Firefox / Edge를 사용해주세요',
|
||||
|
||||
"ab_mkdir": "디렉터리 만들기",
|
||||
"ab_mkdoc": "새 텍스트 파일", //m
|
||||
"ab_mkdoc": "새 마크다운 문서",
|
||||
"ab_msg": "서버 로그에 메시지 보내기",
|
||||
|
||||
"ay_path": "폴더로 건너뛰기",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.kor = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">복사</a><a href="#" id="modal-ng">업로드</a>',
|
||||
|
||||
"mk_noname": "왼쪽 텍스트 필드에 이름을 먼저 입력해주세요 :p",
|
||||
"nmd_i1": "원하는 파일 확장자를 추가할 수 있습니다. 예: <code>.txt</code>", //m
|
||||
"nmd_i2": "삭제 권한이 없어서 <code>.md</code> 파일만 만들 수 있습니다", //m
|
||||
|
||||
"tv_load": "텍스트 문서 불러오는 중:\n\n{0}\n\n{1}% ({3} MiB 중 {2} MiB 로드됨)",
|
||||
"tv_xe1": "텍스트 파일을 불러올 수 없습니다:\n\n오류 ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.nld = {
|
|||
"ot_unpost": "unpost: verwijder je recente uploads, of onvoltooide uploads afbreken",
|
||||
"ot_bup": "bup: Basisuploader, supports zelfs netscape 4.0",
|
||||
"ot_mkdir": "mkdir: Maak een nieuwe map",
|
||||
"ot_md": "new-file: Maak een nieuw tekstbestand", //m
|
||||
"ot_md": "new-md: Maak een nieuwe markdown bestand",
|
||||
"ot_msg": "msg: Verstuur een bericht naar de server logs",
|
||||
"ot_mp": "Media speler opties",
|
||||
"ot_cfg": "Configuratie opties",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.nld = {
|
|||
"ot_noie": 'Gebruik alstublieft Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "maak map",
|
||||
"ab_mkdoc": "nieuw tekstbestand", //m
|
||||
"ab_mkdoc": "nieuw markdown doc",
|
||||
"ab_msg": "verstuur msg naar srv log",
|
||||
|
||||
"ay_path": "skip naar mappen",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.nld = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopieer</a><a href="#" id="modal-ng">Upload</a>',
|
||||
|
||||
"mk_noname": "Voer een naam in het tekstveld aan de linkerkant voordat je verder gaat :p",
|
||||
"nmd_i1": "Voeg ook de gewenste extensie toe, bijvoorbeeld <code>.txt</code>", //m
|
||||
"nmd_i2": "Je kunt alleen <code>.md</code>-bestanden maken omdat je geen verwijderrechten hebt", //m
|
||||
|
||||
"tv_load": "Tekstdocument laden:\n\n{0}\n\n{1}% ({2} van de {3} MiB geladen)",
|
||||
"tv_xe1": "Kon tekstbestand niet laden:\n\nfout ",
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ Ls.nno = {
|
|||
"ot_unpost": "unpost: slett filer som du nyleg har lastet opp; «angre-knappen»",
|
||||
"ot_bup": "bup: tradisjonell / primitiv filopplasting,$N$Nfungerar i om lag samtlege nettlesarar",
|
||||
"ot_mkdir": "mkdir: lag ei ny mappe",
|
||||
"ot_md": "new-file: lag ein ny tekstfil",
|
||||
"ot_md": "new-md: lag eit nytt markdown-dokument",
|
||||
"ot_msg": "msg: send ein beskjed åt serverloggen",
|
||||
"ot_mp": "musikkspelarinstillinger",
|
||||
"ot_cfg": "andre innstillinger",
|
||||
|
|
@ -123,7 +123,7 @@ Ls.nno = {
|
|||
"ot_noie": 'Fungerer mye betre i Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "lag mappe",
|
||||
"ab_mkdoc": "ny tekstfil",
|
||||
"ab_mkdoc": "nytt dokument",
|
||||
"ab_msg": "send melding",
|
||||
|
||||
"ay_path": "gå videre åt mapper",
|
||||
|
|
@ -435,8 +435,6 @@ Ls.nno = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopiér</a><a href="#" id="modal-ng">Last opp</a>',
|
||||
|
||||
"mk_noname": "skriv inn eit namn i tekstboksa åt venstre først :p",
|
||||
"nmd_i1": "leggja også til filendinga du vil, til dømes <code>.txt</code>", //m
|
||||
"nmd_i2": "du kan berre laga <code>.md</code>-filer fordi du ikkje har delete-tilgang", //m
|
||||
|
||||
"tv_load": "Lastar inn tekstfil:\n\n{0}\n\n{1}% ({2} av {3} MiB lasta ned)",
|
||||
"tv_xe1": "kunne ikkje laste tekstfil:\n\nfeil ",
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ Ls.nor = {
|
|||
"ot_unpost": "unpost: slett filer som du nylig har lastet opp; «angre-knappen»",
|
||||
"ot_bup": "bup: tradisjonell / primitiv filopplastning,$N$Nfungerer i omtrent samtlige nettlesere",
|
||||
"ot_mkdir": "mkdir: lag en ny mappe",
|
||||
"ot_md": "new-file: lag en ny tekstfil",
|
||||
"ot_md": "new-md: lag et nytt markdown-dokument",
|
||||
"ot_msg": "msg: send en beskjed til serverloggen",
|
||||
"ot_mp": "musikkspiller-instillinger",
|
||||
"ot_cfg": "andre innstillinger",
|
||||
|
|
@ -123,7 +123,7 @@ Ls.nor = {
|
|||
"ot_noie": 'Fungerer mye bedre i Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "lag mappe",
|
||||
"ab_mkdoc": "ny tekstfil",
|
||||
"ab_mkdoc": "nytt dokument",
|
||||
"ab_msg": "send melding",
|
||||
|
||||
"ay_path": "gå videre til mapper",
|
||||
|
|
@ -435,8 +435,6 @@ Ls.nor = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopiér</a><a href="#" id="modal-ng">Last opp</a>',
|
||||
|
||||
"mk_noname": "skriv inn et navn i tekstboksen til venstre først :p",
|
||||
"nmd_i1": "legg også til ønsket filtype, for eksempel <code>.txt</code>", //m
|
||||
"nmd_i2": "du kan bare lage <code>.md</code>-filer fordi du ikke har delete-tilgang", //m
|
||||
|
||||
"tv_load": "Laster inn tekstfil:\n\n{0}\n\n{1}% ({2} av {3} MiB lastet ned)",
|
||||
"tv_xe1": "kunne ikke laste tekstfil:\n\nfeil ",
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ Ls.pol = {
|
|||
"ot_unpost": "unpost: usuń ostatnio przesłane pliki lub przerwij przesyłanie",
|
||||
"ot_bup": "bup: podstawowe przesyłanie danych, wspiera nawet netscape 4.0",
|
||||
"ot_mkdir": "mkdir: tworzy nowy folder",
|
||||
"ot_md": "new-file: tworzy nowy plik tekstowy", //m
|
||||
"ot_md": "new-md: tworzy nowy dokument markdown",
|
||||
"ot_msg": "msg: wysyła wiadomość do loga serwera",
|
||||
"ot_mp": "opcje odtwarzacza multimediów",
|
||||
"ot_cfg": "opcje konfiguracji",
|
||||
|
|
@ -128,7 +128,7 @@ Ls.pol = {
|
|||
"ot_noie": 'Użyj przeglądarki Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "stwórz folder",
|
||||
"ab_mkdoc": "nowy plik tekstowy", //m
|
||||
"ab_mkdoc": "stwórz dok. markdown",
|
||||
"ab_msg": "wyślij wiad. do logów serwera",
|
||||
|
||||
"ay_path": "przejdź do folderów",
|
||||
|
|
@ -440,8 +440,6 @@ Ls.pol = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopiuj</a><a href="#" id="modal-ng">Prześlij</a>',
|
||||
|
||||
"mk_noname": "wpisz nazwę do pola po lewej zanim to zrobisz :p",
|
||||
"nmd_i1": "możesz też dodać wybrane rozszerzenie, np. <code>.txt</code>", //m
|
||||
"nmd_i2": "możesz tworzyć tylko pliki <code>.md</code>, ponieważ nie masz uprawnień do usuwania", //m
|
||||
|
||||
"tv_load": "Wczytywanie pliku tekstowego:\n\n{0}\n\n{1}% (wczytano {2} z {3} MiB)",
|
||||
"tv_xe1": "nie udało się wczytać pliku:\n\nbłąd ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.por = {
|
|||
"ot_unpost": "despublicar: excluir seus uploads recentes, ou abortar os que não foram concluídos",
|
||||
"ot_bup": "bup: uploader básico, até suporta netscape 4.0",
|
||||
"ot_mkdir": "mkdir: criar um novo diretório",
|
||||
"ot_md": "new-file: criar um novo ficheiro de texto", //m
|
||||
"ot_md": "new-md: criar um novo documento markdown",
|
||||
"ot_msg": "msg: enviar uma mensagem para o log do servidor",
|
||||
"ot_mp": "opções do reprodutor de mídia",
|
||||
"ot_cfg": "opções de configuração",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.por = {
|
|||
"ot_noie": 'Por favor, use Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "criar diretório",
|
||||
"ab_mkdoc": "novo ficheiro de texto", //m
|
||||
"ab_mkdoc": "novo documento markdown",
|
||||
"ab_msg": "enviar msg para o log do srv",
|
||||
|
||||
"ay_path": "pular para pastas",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.por = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Copiar</a><a href="#" id="modal-ng">Enviar</a>',
|
||||
|
||||
"mk_noname": "digite um nome no campo de texto à esquerda antes de fazer isso :p",
|
||||
"nmd_i1": "também pode adicionar a extensão desejada, por exemplo <code>.txt</code>", //m
|
||||
"nmd_i2": "só pode criar ficheiros <code>.md</code> porque não tem permissão para apagar", //m
|
||||
|
||||
"tv_load": "Carregando documento de texto:\n\n{0}\n\n{1}% ({2} de {3} MiB carregados)",
|
||||
"tv_xe1": "não foi possível carregar o arquivo de texto:\n\nerro ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.rus = {
|
|||
"ot_unpost": "unpost: удалить ваши недавние загрузки и отменить незавершённые",
|
||||
"ot_bup": "bup: легковесный загрузчик файлов, поддерживает даже netscape 4.0",
|
||||
"ot_mkdir": "mkdir: создать новую папку",
|
||||
"ot_md": "new-file: создать новый текстовый файл", //m
|
||||
"ot_md": "new-md: создать новый markdown-документ",
|
||||
"ot_msg": "msg: отправить сообщение в лог сервера",
|
||||
"ot_mp": "настройка медиаплеера",
|
||||
"ot_cfg": "остальные настройки",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.rus = {
|
|||
"ot_noie": 'Пожалуйста, используйте Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "создать папку",
|
||||
"ab_mkdoc": "создать текстовый файл", //m
|
||||
"ab_mkdoc": "создать markdown-документ",
|
||||
"ab_msg": "отправить сообщение в лог сервера",
|
||||
|
||||
"ay_path": "перейти к папкам",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.rus = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Скопировать</a><a href="#" id="modal-ng">Загрузить</a>',
|
||||
|
||||
"mk_noname": "введите имя в текстовое поле слева перед тем, как это делать :p",
|
||||
"nmd_i1": "вы также можете указать нужное расширение, например <code>.txt</code>", //m
|
||||
"nmd_i2": "вы можете создавать только файлы <code>.md</code>, так как у вас нет разрешения на удаление", //m
|
||||
|
||||
"tv_load": "Загружаю текстовый документ:\n\n{0}\n\n{1}% ({2} из {3} МиБ загружено)",
|
||||
"tv_xe1": "не удалось загрузить текстовый файл:\n\nошибка ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.spa = {
|
|||
"ot_unpost": "dessubir: elimina tus subidas recientes, o aborta las inacabadas",
|
||||
"ot_bup": "bup: uploader básico, soporta hasta netscape 4.0",
|
||||
"ot_mkdir": "mkdir: crear un nuevo directorio",
|
||||
"ot_md": "new-file: crear un nuevo archivo de texto", //m
|
||||
"ot_md": "new-md: crear un nuevo documento markdown",
|
||||
"ot_msg": "msg: enviar un mensaje al registro del servidor",
|
||||
"ot_mp": "opciones del reproductor multimedia",
|
||||
"ot_cfg": "opciones de configuración",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.spa = {
|
|||
"ot_noie": "Por favor, usa Chrome / Firefox / Edge",
|
||||
|
||||
"ab_mkdir": "crear directorio",
|
||||
"ab_mkdoc": "nuevo archivo de texto", //m
|
||||
"ab_mkdoc": "nuevo documento markdown",
|
||||
"ab_msg": "enviar msg al registro del servidor",
|
||||
|
||||
"ay_path": "saltar a carpetas",
|
||||
|
|
@ -436,8 +436,6 @@ Ls.spa = {
|
|||
"fcp_both_b": "<a href=\"#\" id=\"modal-ok\">Copiar</a><a href=\"#\" id=\"modal-ng\">Subir</a>",
|
||||
|
||||
"mk_noname": "escribe un nombre en el campo de texto de la izquierda antes de hacer eso :p",
|
||||
"nmd_i1": "también puedes añadir la extensión que quieras, por ejemplo <code>.txt</code>", //m
|
||||
"nmd_i2": "solo puedes crear archivos <code>.md</code> porque no tienes permiso para borrar", //m
|
||||
|
||||
"tv_load": "Cargando documento de texto:\n\n{0}\n\n{1}% ({2} de {3} MiB cargados)",
|
||||
"tv_xe1": "no se pudo cargar el archivo de texto:\n\nerror ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.swe = {
|
|||
"ot_unpost": "unpost: radera dina senaste uppladdningar, eller avbryt pågående sådana",
|
||||
"ot_bup": "bup: enkel uppladdare, stödjer t o m netscape 4.0",
|
||||
"ot_mkdir": "mkdir: skapa en ny mapp",
|
||||
"ot_md": "new-file: skapa en ny textfil",
|
||||
"ot_md": "new-md: skapa ett nytt markdown-dokument",
|
||||
"ot_msg": "msg: skicka ett meddelande till serverloggen",
|
||||
"ot_mp": "mediaspelarinställningar",
|
||||
"ot_cfg": "konfigurationsinställningar",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.swe = {
|
|||
"ot_noie": 'Var vänlig använd Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "skapa mapp",
|
||||
"ab_mkdoc": "ny textfil",
|
||||
"ab_mkdoc": "nytt markdown-dokument",
|
||||
"ab_msg": "skicka medd. till serverlogg",
|
||||
|
||||
"ay_path": "hoppa till mappar",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.swe = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopiera</a><a href="#" id="modal-ng">Ladda upp</a>',
|
||||
|
||||
"mk_noname": "skriv ett namn i fältet till vänster först :p",
|
||||
"nmd_i1": "lägg också till filändelsen du vill ha, till exempel <code>.txt</code>", //m
|
||||
"nmd_i2": "du kan bara skapa <code>.md</code>-filer eftersom du inte har borttagningsbehörighet", //m
|
||||
|
||||
"tv_load": "Laddar textfil:\n\n{0}\n\n{1}% ({2} av {3} MiB laddat)",
|
||||
"tv_xe1": "kunde ej ladda textfil:\n\nfel ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.tur = {
|
|||
"ot_unpost": "unpost: son yüklemelerinizi silin veya tamamlanmamış olanları iptal edin",
|
||||
"ot_bup": "bup: temel yükleyici, hatta netscape 4.0'ı destekler",
|
||||
"ot_mkdir": "mkdir: yeni bir dizin oluştur",
|
||||
"ot_md": "new-file: yeni bir metin dosyası oluştur", //m
|
||||
"ot_md": "new-md: yeni bir markdown belgesi oluştur",
|
||||
"ot_msg": "msg: sunucu günlüğüne bir mesaj gönder",
|
||||
"ot_mp": "medya oynatıcı seçenekleri",
|
||||
"ot_cfg": "konfigürasyon seçenekleri",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.tur = {
|
|||
"ot_noie": 'Lütfen Chrome / Firefox / Edge kullanın',
|
||||
|
||||
"ab_mkdir": "dizin oluştur",
|
||||
"ab_mkdoc": "yeni metin dosyası", //m
|
||||
"ab_mkdoc": "yeni markdown belgesi",
|
||||
"ab_msg": "sunucu günlüğüne mesaj gönder",
|
||||
|
||||
"ay_path": "klasörlere atla",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.tur = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Kopyala</a><a href="#" id="modal-ng">Yükle</a>',
|
||||
|
||||
"mk_noname": "bunu yapmadan önce soldaki boşluğa bir şeyler yazsana :p",
|
||||
"nmd_i1": "ayrıca istediğin dosya uzantısını ekleyebilirsin, örneğin <code>.txt</code>", //m
|
||||
"nmd_i2": "silme iznin olmadığı için yalnızca <code>.md</code> dosyaları oluşturabilirsin", //m
|
||||
|
||||
"tv_load": "Metin belgesi yükleniyor:\n\n{0}\n\n{1}% ({2} of {3} MiB yüklendi)",
|
||||
"tv_xe1": "metin dosyası yüklenemedi:\n\nhata ",
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ Ls.ukr = {
|
|||
"ot_unpost": "скасувати: видалити недавні завантаження або перервати незавершені",
|
||||
"ot_bup": "bup: основний завантажувач, підтримує навіть netscape 4.0",
|
||||
"ot_mkdir": "mkdir: створити нову папку",
|
||||
"ot_md": "new-file: створити новий текстовий файл", //m
|
||||
"ot_md": "new-md: створити новий markdown документ",
|
||||
"ot_msg": "msg: надіслати повідомлення в лог сервера",
|
||||
"ot_mp": "налаштування медіаплеєра",
|
||||
"ot_cfg": "параметри конфігурації",
|
||||
|
|
@ -125,7 +125,7 @@ Ls.ukr = {
|
|||
"ot_noie": 'Будь ласка, використовуйте Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "створити папку",
|
||||
"ab_mkdoc": "новий текстовий файл", //m
|
||||
"ab_mkdoc": "новий markdown документ",
|
||||
"ab_msg": "надіслати повідомлення в лог сервера",
|
||||
|
||||
"ay_path": "перейти до папок",
|
||||
|
|
@ -437,8 +437,6 @@ Ls.ukr = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Скопіювати</a><a href="#" id="modal-ng">Завантажити</a>',
|
||||
|
||||
"mk_noname": "введіть ім'я в текстове поле зліва перед тим, як робити це :p",
|
||||
"nmd_i1": "ви також можете додати потрібне розширення, наприклад <code>.txt</code>", //m
|
||||
"nmd_i2": "ви можете створювати тільки файли <code>.md</code>, оскільки не маєте дозволу на видалення", //m
|
||||
|
||||
"tv_load": "Завантаження текстового документа:\n\n{0}\n\n{1}% ({2} з {3} MiB завантажено)",
|
||||
"tv_xe1": "не вдалося завантажити текстовий файл:\n\nпомилка ",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ gtar=$(command -v gtar || command -v gnutar) || true
|
|||
sed() { gsed "$@"; }
|
||||
find() { gfind "$@"; }
|
||||
sort() { gsort "$@"; }
|
||||
nproc() { gnproc; }
|
||||
command -v grealpath >/dev/null &&
|
||||
realpath() { grealpath "$@"; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -584,7 +584,7 @@ gzres() {
|
|||
$pk "$f" &
|
||||
done < <(
|
||||
find -printf '%s %p\n' |
|
||||
grep -E '\.(js|css)$|/web/a/.*\.txt$' |
|
||||
grep -E '\.(js|css)$|/web/a/[^_].*\.(py|txt)$' |
|
||||
grep -vF /deps/ |
|
||||
sort -nr
|
||||
)
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ Ls.hmn = {
|
|||
"ot_unpost": "unpost: delete your recent uploads, or abort unfinished ones",
|
||||
"ot_bup": "bup: basic uploader, even supports netscape 4.0",
|
||||
"ot_mkdir": "mkdir: create a new directory",
|
||||
"ot_md": "new-file: create a new textfile",
|
||||
"ot_md": "new-md: create a new markdown document",
|
||||
"ot_msg": "msg: send a message to the server log",
|
||||
"ot_mp": "media player options",
|
||||
"ot_cfg": "configuration options",
|
||||
|
|
@ -154,7 +154,7 @@ Ls.hmn = {
|
|||
"ot_noie": 'Please use Chrome / Firefox / Edge',
|
||||
|
||||
"ab_mkdir": "make directory",
|
||||
"ab_mkdoc": "new textfile",
|
||||
"ab_mkdoc": "new markdown doc",
|
||||
"ab_msg": "send msg to srv log",
|
||||
|
||||
"ay_path": "skip to folders",
|
||||
|
|
@ -466,8 +466,6 @@ Ls.hmn = {
|
|||
"fcp_both_b": '<a href="#" id="modal-ok">Copy</a><a href="#" id="modal-ng">Upload</a>',
|
||||
|
||||
"mk_noname": "type a name into the text field on the left before you do that :p",
|
||||
"nmd_i1": "also add the file extension you want, for example <code>.md</code>",
|
||||
"nmd_i2": "you can only create <code>.md</code> files because you don't have the delete-permission",
|
||||
|
||||
"tv_load": "Loading text document:\n\n{0}\n\n{1}% ({2} of {3} MiB loaded)",
|
||||
"tv_xe1": "could not load textfile:\n\nerror ",
|
||||
|
|
|
|||
Loading…
Reference in a new issue