82 lines
2.2 KiB
Go
82 lines
2.2 KiB
Go
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"golang.org/x/term"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
var art string = `
|
|
_____╬═╬____________________________________________
|
|
|_|__╬═╬___|___|___|___| EVERYWALL |___|___|___|___|
|
|
|___|╬═╬|___▄▄▌ ▄▄▄· ·▄▄▄▄ ·▄▄▄▄ ▄▄▄ .▄▄▄ __|_|
|
|
|_|__╬═╬___|██• ▐█ ▀█ ██▪ ██ ██▪ ██ ▀▄.▀·▀▄ █·|___|
|
|
|___|╬═╬|___██▪ ▄█▀▀█ ▐█· ▐█▌▐█· ▐█▌▐▀▀▪▄▐▀▀▄ __|_|
|
|
|_|__╬═╬___|▐█▌▐▌▐█ ▪▐▌██. ██ ██. ██ ▐█▄▄▌▐█•█▌|___|
|
|
|___|╬═╬|___.▀▀▀ ▀ ▀ ▀▀▀▀▀• ▀▀▀▀▀• ▀▀▀ .▀ ▀__|_|
|
|
|_|__╬═╬___|___|___|_ VERSION %-7s__|___|___|___|
|
|
|___|╬═╬|____|___|___|___|___|___|___|___|___|___|_|
|
|
╬═╬
|
|
╬═╬ %s
|
|
`
|
|
|
|
func StartupMessage(version string, port string, ruleset string) string {
|
|
isTerm := term.IsTerminal(int(os.Stdout.Fd()))
|
|
version = strings.Trim(version, " ")
|
|
version = strings.Trim(version, "\n")
|
|
|
|
var link string
|
|
if isTerm {
|
|
link = createHyperlink("http://localhost:" + port)
|
|
} else {
|
|
link = "http://localhost:" + port
|
|
}
|
|
|
|
buf := fmt.Sprintf(art, version, link)
|
|
if isTerm {
|
|
buf = blinkChars(buf, '.', '•', '·', '▪')
|
|
}
|
|
|
|
if ruleset == "" {
|
|
buf += "\n [!] no ruleset specified.\n [!] for better performance, use a ruleset using --ruleset\n"
|
|
}
|
|
if isTerm {
|
|
buf = colorizeNonASCII(buf)
|
|
}
|
|
return buf
|
|
}
|
|
|
|
func createHyperlink(url string) string {
|
|
return fmt.Sprintf("\033[4m%s\033[0m", url)
|
|
}
|
|
|
|
func colorizeNonASCII(input string) string {
|
|
result := ""
|
|
for _, r := range input {
|
|
if r > 127 {
|
|
// If the character is non-ASCII, color it blue
|
|
result += fmt.Sprintf("\033[34m%c\033[0m", r)
|
|
} else {
|
|
// ASCII characters remain unchanged
|
|
result += string(r)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func blinkChars(input string, chars ...rune) string {
|
|
result := ""
|
|
MAIN:
|
|
for _, x := range input {
|
|
for _, y := range chars {
|
|
if x == y {
|
|
result += fmt.Sprintf("\033[5m%s\033[0m", string(x))
|
|
continue MAIN
|
|
}
|
|
}
|
|
result += fmt.Sprintf("%s", string(x))
|
|
}
|
|
return result
|
|
}
|