add rulesetmap type for efficient ruleset lookup for proxychain impl
This commit is contained in:
@@ -2,6 +2,8 @@ package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"golang.org/x/term"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
@@ -20,20 +22,32 @@ var art string = `
|
||||
`
|
||||
|
||||
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")
|
||||
link := createHyperlink("http://localhost:" + port)
|
||||
buf := fmt.Sprintf(art, version, link)
|
||||
if ruleset == "" {
|
||||
buf += "\n ! no ruleset specified.\n > for better performance, use a ruleset using --ruleset\n"
|
||||
|
||||
var link string
|
||||
if isTerm {
|
||||
link = createHyperlink("http://localhost:" + port)
|
||||
} else {
|
||||
buf += fmt.Sprintf("\n > using ruleset: %s\n", ruleset)
|
||||
link = "http://localhost:" + port
|
||||
}
|
||||
return colorizeNonASCII(buf)
|
||||
|
||||
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]8;;%s\a%s\033]8;;\a", url, url)
|
||||
return fmt.Sprintf("\033[4m%s\033[0m", url)
|
||||
}
|
||||
|
||||
@@ -42,7 +56,7 @@ func colorizeNonASCII(input string) string {
|
||||
for _, r := range input {
|
||||
if r > 127 {
|
||||
// If the character is non-ASCII, color it blue
|
||||
result += fmt.Sprintf("\033[94m%c\033[0m", r)
|
||||
result += fmt.Sprintf("\033[34m%c\033[0m", r)
|
||||
} else {
|
||||
// ASCII characters remain unchanged
|
||||
result += string(r)
|
||||
@@ -50,3 +64,18 @@ func colorizeNonASCII(input string) string {
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user