|
|
|
@ -18,6 +18,7 @@ package main |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"fmt" |
|
|
|
|
"sort" |
|
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/log" |
|
|
|
|
) |
|
|
|
@ -64,17 +65,37 @@ func (w *wizard) deployEthstats() { |
|
|
|
|
fmt.Println() |
|
|
|
|
fmt.Printf("Keep existing IP %v blacklist (y/n)? (default = yes)\n", infos.banned) |
|
|
|
|
if w.readDefaultString("y") != "y" { |
|
|
|
|
infos.banned = nil |
|
|
|
|
|
|
|
|
|
// The user might want to clear the entire list, although generally probably not
|
|
|
|
|
fmt.Println() |
|
|
|
|
fmt.Printf("Clear out blacklist and start over (y/n)? (default = no)\n") |
|
|
|
|
if w.readDefaultString("n") != "n" { |
|
|
|
|
infos.banned = nil |
|
|
|
|
} |
|
|
|
|
// Offer the user to explicitly add/remove certain IP addresses
|
|
|
|
|
fmt.Println() |
|
|
|
|
fmt.Println("Which additional IP addresses should be blacklisted?") |
|
|
|
|
for { |
|
|
|
|
if ip := w.readIPAddress(); ip != "" { |
|
|
|
|
infos.banned = append(infos.banned, ip) |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
fmt.Println() |
|
|
|
|
fmt.Println("Which IP addresses should be blacklisted?") |
|
|
|
|
fmt.Println("Which IP addresses should not be blacklisted?") |
|
|
|
|
for { |
|
|
|
|
if ip := w.readIPAddress(); ip != nil { |
|
|
|
|
infos.banned = append(infos.banned, ip.String()) |
|
|
|
|
if ip := w.readIPAddress(); ip != "" { |
|
|
|
|
for i, addr := range infos.banned { |
|
|
|
|
if ip == addr { |
|
|
|
|
infos.banned = append(infos.banned[:i], infos.banned[i+1:]...) |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
sort.Strings(infos.banned) |
|
|
|
|
} |
|
|
|
|
// Try to deploy the ethstats server on the host
|
|
|
|
|
trusted := make([]string, 0, len(w.servers)) |
|
|
|
|