@@ -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+
173184func 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