Allow specifying display names for servers
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user