Allow specifying display names for servers

This commit is contained in:
Henri
2021-04-13 21:58:50 +02:00
parent 974e809deb
commit 056ef3769e
6 changed files with 54 additions and 10 deletions

View File

@@ -31,10 +31,10 @@
<a class="nav-link{{ if .AllServersLinkActive }} active{{ end }}"
href="/{{ $option }}/{{ .AllServersURL }}/{{ $target }}"> All Servers </a>
</li>
{{ range $k, $v := .Servers }}
{{ range $k, $v := .ServersEscaped }}
<li class="nav-item">
<a class="nav-link{{ if eq $server $k }} active{{ end }}"
href="/{{ $option }}/{{ $k }}/{{ $target }}">{{ html $v }}</a>
<a class="nav-link{{ if eq $server $v }} active{{ end }}"
href="/{{ $option }}/{{ $v }}/{{ $target }}">{{ html (index $.ServersDisplay $k) }}</a>
</li>
{{ end }}
</ul>

View File

@@ -12,6 +12,7 @@ import (
type settingType struct {
servers []string
serversDisplay []string
domain string
proxyPort int
whoisServer string
@@ -82,8 +83,21 @@ func main() {
panic("no server set")
}
servers := strings.Split(*serversPtr, ",")
serversDisplay := strings.Split(*serversPtr, ",")
// Split server names of the form "DisplayName<Hostname>"
for i, server := range servers {
pos := strings.Index(server, "<")
if pos != -1 {
serversDisplay[i] = server[0:pos]
servers[i] = server[pos+1:len(server)-1]
}
}
setting = settingType{
strings.Split(*serversPtr, ","),
servers,
serversDisplay,
*domainPtr,
*proxyPortPtr,
*whoisPtr,

View File

@@ -55,14 +55,16 @@ func renderPageTemplate(w http.ResponseWriter, r *http.Request, title string, co
split = strings.SplitN(path, "/", 3)
serversEscaped := map[string]string{}
for _, v := range setting.servers {
serversEscaped[url.PathEscape(v)] = v
serversEscaped := make([]string, len(setting.servers))
for i, v := range setting.servers {
serversEscaped[i] = url.PathEscape(v)
}
args := TemplatePage{
Options: optionsMap,
Servers: serversEscaped,
Servers: setting.servers,
ServersEscaped: serversEscaped,
ServersDisplay: setting.serversDisplay,
AllServersLinkActive: strings.ToLower(split[1]) == strings.ToLower(strings.Join(setting.servers, "+")),
AllServersURL: url.PathEscape(strings.Join(setting.servers, "+")),
IsWhois: isWhois,

View File

@@ -11,7 +11,9 @@ import (
type TemplatePage struct {
// Global options
Options map[string]string
Servers map[string]string
Servers []string
ServersEscaped []string
ServersDisplay []string
// Parameters related to current request
AllServersLinkActive bool

View File

@@ -95,9 +95,17 @@ func webBackendCommunicator(endpoint string, command string) func(w http.Respons
result = smartFormatter(response)
}
serverDisplay := servers[i]
for k, v := range setting.servers {
if servers[i] == v {
serverDisplay = setting.serversDisplay[k]
break
}
}
// render the bird result template
args := TemplateBird{
ServerName: servers[i],
ServerName: serverDisplay,
Target: backendCommand,
Result: result,
}