frontend: support rebranding

This commit is contained in:
Arnie97 2020-07-28 17:57:38 +08:00 committed by Lan Tian
parent 6e4bbd6410
commit 7b1dc6718d
No known key found for this signature in database
GPG Key ID: 27F31700E751EC22
4 changed files with 27 additions and 13 deletions

View File

@ -15,19 +15,21 @@ type settingType struct {
listen string
dnsInterface string
netSpecificMode string
titleBrand string
navBarBrand string
}
var setting settingType
func main() {
var settingDefault = settingType{
[]string{""},
"",
8000,
"whois.verisign-grs.com",
":5000",
"asn.cymru.com",
"",
servers: []string{""},
proxyPort: 8000,
whoisServer: "whois.verisign-grs.com",
listen: ":5000",
dnsInterface: "asn.cymru.com",
titleBrand: "Bird-lg Go",
navBarBrand: "Bird-lg Go",
}
if env := os.Getenv("BIRDLG_SERVERS"); env != "" {
@ -51,10 +53,16 @@ func main() {
if env := os.Getenv("BIRDLG_DNS_INTERFACE"); env != "" {
settingDefault.dnsInterface = env
}
if env := os.Getenv("BIRDLG_NET_SPECIFIC_MODE"); env != "" {
settingDefault.netSpecificMode = env
}
if env := os.Getenv("BIRDLG_TITLE_BRAND"); env != "" {
settingDefault.titleBrand = env
settingDefault.navBarBrand = env
}
if env := os.Getenv("BIRDLG_NAVBAR_BRAND"); env != "" {
settingDefault.navBarBrand = env
}
serversPtr := flag.String("servers", strings.Join(settingDefault.servers, ","), "server name prefixes, separated by comma")
domainPtr := flag.String("domain", settingDefault.domain, "server name domain suffixes")
@ -63,6 +71,8 @@ func main() {
listenPtr := flag.String("listen", settingDefault.listen, "address bird-lg is listening on")
dnsInterfacePtr := flag.String("dns-interface", settingDefault.dnsInterface, "dns zone to query ASN information")
netSpecificModePtr := flag.String("net-specific-mode", settingDefault.netSpecificMode, "network specific operation mode, [(none)|dn42]")
titleBrandPtr := flag.String("title-brand", settingDefault.titleBrand, "prefix of page titles in browser tabs")
navBarBrandPtr := flag.String("navbar-brand", settingDefault.navBarBrand, "brand to show in the navigation bar")
flag.Parse()
if *serversPtr == "" {
@ -79,6 +89,8 @@ func main() {
*listenPtr,
*dnsInterfacePtr,
strings.ToLower(*netSpecificModePtr),
*titleBrandPtr,
*navBarBrandPtr,
}
webServerStart()

View File

@ -50,7 +50,8 @@ func renderTemplate(w http.ResponseWriter, r *http.Request, title string, conten
args.URLServer = strings.ToLower(split[2])
args.URLCommand = split[3]
args.Title = title
args.Title = setting.titleBrand + title
args.Brand = setting.navBarBrand
args.Content = content
err := tmpl.Execute(w, args)

View File

@ -24,6 +24,7 @@ type tmplArguments struct {
// Generated content to be displayed
Title string
Brand string
Content string
}
@ -41,7 +42,7 @@ var tmpl = template.Must(template.New("tmpl").Parse(`
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="/">Bird-lg Go</a>
<a class="navbar-brand" href="/">{{ .Brand }}</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>

View File

@ -15,7 +15,7 @@ func webHandlerWhois(w http.ResponseWriter, r *http.Request) {
renderTemplate(
w, r,
"Bird-lg Go - whois "+html.EscapeString(target),
" - whois "+html.EscapeString(target),
"<h2>whois "+html.EscapeString(target)+"</h2>"+smartFormatter(whois(target)),
)
}
@ -67,7 +67,7 @@ func webBackendCommunicator(endpoint string, command string) func(w http.Respons
renderTemplate(
w, r,
"Bird-lg Go - "+html.EscapeString(endpoint+" "+backendCommand),
" - "+html.EscapeString(endpoint+" "+backendCommand),
result,
)
}
@ -98,7 +98,7 @@ func webHandlerBGPMap(endpoint string, command string) func(w http.ResponseWrite
var responses []string = batchRequest(servers, endpoint, backendCommand)
renderTemplate(
w, r,
"Bird-lg Go - "+html.EscapeString(endpoint+" "+backendCommand),
" - "+html.EscapeString(endpoint+" "+backendCommand),
`
<script src="https://cdn.jsdelivr.net/npm/viz.js@2.1.2/viz.min.js" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/viz.js@2.1.2/lite.render.js" crossorigin="anonymous"></script>