Skip to content

Commit a11384a

Browse files
committed
Fix banner box border alignment
1 parent 5f11245 commit a11384a

1 file changed

Lines changed: 25 additions & 9 deletions

File tree

cmd/scan.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,25 +170,41 @@ func runScan(cmd *cobra.Command, args []string) error {
170170
return scanner.WriteChainReport(report, outputFile)
171171
}
172172

173+
func pad(s string, width int) string {
174+
if len(s) >= width {
175+
return s
176+
}
177+
return s + strings.Repeat(" ", width-len(s))
178+
}
179+
180+
func hline(left, fill, right string, width int) string {
181+
return left + strings.Repeat(fill, width) + right
182+
}
183+
173184
func printBanner(count int, doh bool, domain string, steps []scanner.Step) {
174185
mode := "UDP"
175186
if doh {
176187
mode = "DoH"
177188
}
178189

190+
// Dynamic box width: at least 38, wider if domain is long
191+
inner := 38
192+
if domain != "" && len(domain)+15 > inner {
193+
inner = len(domain) + 17
194+
}
179195
w := os.Stderr
180196
fmt.Fprintf(w, "\n")
181-
fmt.Fprintf(w, " %s\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510%s\n", colorDim, colorReset)
182-
fmt.Fprintf(w, " %s\u2502%s %s%sfindns%s %s\u2502%s\n", colorDim, colorReset, colorBold, colorCyan, colorReset, colorDim, colorReset)
183-
fmt.Fprintf(w, " %s\u2502%s %sDNS Tunnel Resolver Scanner%s %s\u2502%s\n", colorDim, colorReset, colorDim, colorReset, colorDim, colorReset)
184-
fmt.Fprintf(w, " %s\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524%s\n", colorDim, colorReset)
185-
fmt.Fprintf(w, " %s\u2502%s Mode: %s%-25s%s%s\u2502%s\n", colorDim, colorReset, colorWhite, mode, colorReset, colorDim, colorReset)
186-
fmt.Fprintf(w, " %s\u2502%s Resolvers: %s%-25d%s%s\u2502%s\n", colorDim, colorReset, colorWhite, count, colorReset, colorDim, colorReset)
197+
fmt.Fprintf(w, " %s%s%s\n", colorDim, hline("\u250c", "\u2500", "\u2510", inner), colorReset)
198+
fmt.Fprintf(w, " %s\u2502%s %s%s%-*s%s%s\u2502%s\n", colorDim, colorReset, colorBold, colorCyan, inner-4, "findns", colorReset, colorDim, colorReset)
199+
fmt.Fprintf(w, " %s\u2502%s %s%-*s%s%s\u2502%s\n", colorDim, colorReset, colorDim, inner-4, "DNS Tunnel Resolver Scanner", colorReset, colorDim, colorReset)
200+
fmt.Fprintf(w, " %s%s%s\n", colorDim, hline("\u251c", "\u2500", "\u2524", inner), colorReset)
201+
fmt.Fprintf(w, " %s\u2502%s Mode: %s%s%s%s\u2502%s\n", colorDim, colorReset, colorWhite, pad(mode, inner-15), colorReset, colorDim, colorReset)
202+
fmt.Fprintf(w, " %s\u2502%s Resolvers: %s%s%s%s\u2502%s\n", colorDim, colorReset, colorWhite, pad(fmt.Sprintf("%d", count), inner-15), colorReset, colorDim, colorReset)
187203
if domain != "" {
188-
fmt.Fprintf(w, " %s\u2502%s Domain: %s%-25s%s%s\u2502%s\n", colorDim, colorReset, colorCyan, domain, colorReset, colorDim, colorReset)
204+
fmt.Fprintf(w, " %s\u2502%s Domain: %s%s%s%s\u2502%s\n", colorDim, colorReset, colorCyan, pad(domain, inner-15), colorReset, colorDim, colorReset)
189205
}
190-
fmt.Fprintf(w, " %s\u2502%s Workers: %s%-25d%s%s\u2502%s\n", colorDim, colorReset, colorWhite, workers, colorReset, colorDim, colorReset)
191-
fmt.Fprintf(w, " %s\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518%s\n", colorDim, colorReset)
206+
fmt.Fprintf(w, " %s\u2502%s Workers: %s%s%s%s\u2502%s\n", colorDim, colorReset, colorWhite, pad(fmt.Sprintf("%d", workers), inner-15), colorReset, colorDim, colorReset)
207+
fmt.Fprintf(w, " %s%s%s\n", colorDim, hline("\u2514", "\u2500", "\u2518", inner), colorReset)
192208

193209
// Step plan
194210
fmt.Fprintf(w, "\n %sPipeline:%s ", colorBold, colorReset)

0 commit comments

Comments
 (0)