mirror of
https://github.com/9001/copyparty.git
synced 2026-02-26 05:23:10 -07:00
override domain for shares (closes #1211);
`shr-site` will override the scheme and domain (https://example.com/) in the link to a newly created share, making it possible to create a share from a LAN IP while obtaining an external URL in return --------- Co-authored-by: mechabubba <stevenvanniisprettycool@gmail.com>
This commit is contained in:
parent
ffb2560322
commit
41d3bae929
|
|
@ -1173,6 +1173,7 @@ def add_general(ap, nc, srvname):
|
|||
ap2.add_argument("--name", metavar="TXT", type=u, default=srvname, help="server name (displayed topleft in browser and in mDNS)")
|
||||
ap2.add_argument("--name-url", metavar="TXT", type=u, help="URL for server name hyperlink (displayed topleft in browser)")
|
||||
ap2.add_argument("--name-html", type=u, help=argparse.SUPPRESS)
|
||||
ap2.add_argument("--site", metavar="URL", type=u, default="", help="public URL to assume when creating links; example: [\033[32mhttps://example.com/\033[0m]")
|
||||
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)")
|
||||
|
|
@ -1220,6 +1221,7 @@ def add_share(ap):
|
|||
ap2.add_argument("--shr-who", metavar="TXT", type=u, default="auth", help="who can create a share? [\033[32mno\033[0m]=nobody, [\033[32ma\033[0m]=admin-permission, [\033[32mauth\033[0m]=authenticated (volflag=shr_who)")
|
||||
ap2.add_argument("--shr-adm", metavar="U,U", type=u, default="", help="comma-separated list of users allowed to view/delete any share")
|
||||
ap2.add_argument("--shr-rt", metavar="MIN", type=int, default=1440, help="shares can be revived by their owner if they expired less than MIN minutes ago; [\033[32m60\033[0m]=hour, [\033[32m1440\033[0m]=day, [\033[32m10080\033[0m]=week")
|
||||
ap2.add_argument("--shr-site", metavar="URL", type=u, default="--site", help="public URL to assume when creating share-links; example: [\033[32mhttps://example.com/\033[0m]")
|
||||
ap2.add_argument("--shr-v", action="store_true", help="debug")
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3181,6 +3181,11 @@ class AuthSrv(object):
|
|||
for zs in zs.split():
|
||||
if getattr(self.args, zs, False):
|
||||
js_htm[zs] = 1
|
||||
zs = "up_site"
|
||||
for zs in zs.split():
|
||||
zs2 = getattr(self.args, zs, "")
|
||||
if zs2:
|
||||
js_htm[zs] = zs2
|
||||
vn.js_htm = json_hesc(json.dumps(js_htm))
|
||||
|
||||
vols = list(vfs.all_nodes.values())
|
||||
|
|
|
|||
|
|
@ -6170,8 +6170,20 @@ class HttpCli(object):
|
|||
zsl = [html_escape(zst[0]) for zst in zstl]
|
||||
r[4] = "<br />".join(zsl)
|
||||
|
||||
if self.args.shr_site:
|
||||
site = self.args.shr_site[:-1]
|
||||
elif self.is_vproxied:
|
||||
site = self.args.SR
|
||||
else:
|
||||
site = ""
|
||||
|
||||
html = self.j2s(
|
||||
"shares", this=self, shr=self.args.shr, rows=rows, now=int(time.time())
|
||||
"shares",
|
||||
this=self,
|
||||
shr=self.args.shr,
|
||||
site=site,
|
||||
rows=rows,
|
||||
now=int(time.time()),
|
||||
)
|
||||
self.reply(html.encode("utf-8"), status=200)
|
||||
return True
|
||||
|
|
@ -6326,14 +6338,22 @@ class HttpCli(object):
|
|||
fn = quotep(fns[0]) if len(fns) == 1 else ""
|
||||
|
||||
# NOTE: several clients (frontend, party-up) expect url at response[15:]
|
||||
surl = "created share: %s://%s%s%s%s/%s" % (
|
||||
"https" if self.is_https else "http",
|
||||
self.host,
|
||||
self.args.SR,
|
||||
self.args.shr,
|
||||
skey,
|
||||
fn,
|
||||
)
|
||||
if self.args.shr_site:
|
||||
surl = "created share: %s%s%s/%s" % (
|
||||
self.args.shr_site,
|
||||
self.args.shr[1:],
|
||||
skey,
|
||||
fn,
|
||||
)
|
||||
else:
|
||||
surl = "created share: %s://%s%s%s%s/%s" % (
|
||||
"https" if self.is_https else "http",
|
||||
self.host,
|
||||
self.args.SR,
|
||||
self.args.shr,
|
||||
skey,
|
||||
fn,
|
||||
)
|
||||
self.loud_reply(surl, status=201)
|
||||
return True
|
||||
|
||||
|
|
|
|||
|
|
@ -315,6 +315,10 @@ class SvcHub(object):
|
|||
args.doctitle = args.doctitle.replace("--name", args.vname)
|
||||
args.bname = args.bname.replace("--name", args.vname) or args.vname
|
||||
|
||||
for zs in ("shr_site",):
|
||||
if getattr(args, zs) == "--site":
|
||||
setattr(args, zs, args.site)
|
||||
|
||||
if args.log_fk:
|
||||
args.log_fk = re.compile(args.log_fk)
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
{%- for k, pw, vp, pr, st, un, t0, t1 in rows %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ r }}{{ shr }}{{ k }}?qr">qr</a>
|
||||
<a href="{{ site }}{{ shr }}{{ k }}?qr">qr</a>
|
||||
<a href="{{ r }}{{ shr }}{{ k }}">{{ k }}</a>
|
||||
</td>
|
||||
<td><a href="#" k="{{ k }}">delete</a></td>
|
||||
|
|
|
|||
Loading…
Reference in a new issue