config: add http:// to all urls if needed, fix invite link generation

changed invites.ts to generate links using window.Pages entirely, rather
than chopping up window.location.href.
This commit is contained in:
Harvey Tindall
2025-05-14 22:46:46 +01:00
parent e38ac62ae4
commit 44e8035ff0
3 changed files with 21 additions and 23 deletions

View File

@@ -45,6 +45,13 @@ func (app *appContext) MustSetURLPath(section, key, val string) {
app.MustSetValue(section, key, val)
}
func FixFullURL(v string) string {
if !strings.HasPrefix(v, "http://") && !strings.HasPrefix(v, "https://") {
v = "http://" + v
}
return v
}
func FormatSubpath(path string) string {
if path == "/" {
return ""
@@ -52,6 +59,15 @@ func FormatSubpath(path string) string {
return strings.TrimSuffix(path, "/")
}
func (app *appContext) MustCorrectURL(section, key, value string) {
v := app.config.Section(section).Key(key).String()
if v == "" {
v = value
}
v = FixFullURL(v)
app.config.Section(section).Key(key).SetValue(v)
}
func (app *appContext) loadConfig() error {
var err error
app.config, err = ini.ShadowLoad(app.configPath)
@@ -75,8 +91,10 @@ func (app *appContext) loadConfig() error {
app.err.Printf(lm.BadURLBase, PAGES.Base)
}
app.info.Printf(lm.SubpathBlockMessage, PAGES.Base, PAGES.Admin, PAGES.MyAccount, PAGES.Form)
app.MustSetValue("jellyfin", "public_server", app.config.Section("jellyfin").Key("server").String())
app.MustSetValue("ui", "redirect_url", app.config.Section("jellyfin").Key("public_server").String())
app.MustCorrectURL("jellyfin", "server", "")
app.MustCorrectURL("jellyfin", "public_server", app.config.Section("jellyfin").Key("server").String())
app.MustCorrectURL("ui", "redirect_url", app.config.Section("jellyfin").Key("public_server").String())
for _, key := range app.config.Section("files").Keys() {
if name := key.Name(); name != "html_templates" && name != "lang_files" {
@@ -133,11 +151,6 @@ func (app *appContext) loadConfig() error {
sc := app.config.Section("discord").Key("start_command").MustString("start")
app.config.Section("discord").Key("start_command").SetValue(strings.TrimPrefix(strings.TrimPrefix(sc, "/"), "!"))
jfUrl := app.config.Section("jellyfin").Key("server").String()
if !(strings.HasPrefix(jfUrl, "http://") || strings.HasPrefix(jfUrl, "https://")) {
app.config.Section("jellyfin").Key("server").SetValue("http://" + jfUrl)
}
// Deletion template is good enough for these as well.
app.MustSetValue("disable_enable", "disabled_html", "jfa-go:"+"deleted.html")
app.MustSetValue("disable_enable", "disabled_text", "jfa-go:"+"deleted.txt")

View File

@@ -48,16 +48,6 @@ export class Activity implements activity, SearchableItem {
private _delete: HTMLElement;
private _ip: HTMLElement;
private _act: activity;
/* private _urlBase: string = ((): string => {
let link = window.location.href;
for (let split of ["#", "?", "/activity"]) {
link = link.split(split)[0];
}
if (link.slice(-1) != "/") { link += "/"; }
// FIXME: I should probably just be using window.pages.Base, but incase thats not right, i'll put this warning here
if (link != window.pages.Base) console.error(`URL Bases don't match: "${link}" != "${window.pages.Base}"`);
return link;
})(); */
_genUserText = (): string => {
return `<span class="font-medium">${this._act.username || this._act.user_id.substring(0, 5)}</span>`;

View File

@@ -63,12 +63,7 @@ class DOMInvite implements Invite {
get code(): string { return this._code; }
set code(code: string) {
this._code = code;
let codeLink = window.location.href;
for (let split of ["#", "?"]) {
codeLink = codeLink.split(split)[0];
}
if (codeLink.slice(-1) != "/") { codeLink += "/"; }
this._codeLink = codeLink + window.pages.Form + "/" + code;
this._codeLink = window.pages.Base + window.pages.Form + "/" + code;
const linkEl = this._codeArea.querySelector("a") as HTMLAnchorElement;
if (this.label == "") {
linkEl.textContent = code.replace(/-/g, '-');