// shall be called from the main thread func InitPeers(dir string) { PeerDB, _ = qdb.NewDB(dir+"peers3", true) if ConnectOnly != "" { x := strings.Index(ConnectOnly, ":") if x == -1 { ConnectOnly = fmt.Sprint(ConnectOnly, ":", DefaultTcpPort) } oa, e := net.ResolveTCPAddr("tcp4", ConnectOnly) if e != nil { println(e.Error()) os.Exit(1) } proxyPeer = NewEmptyPeer() proxyPeer.Services = Services copy(proxyPeer.Ip4[:], oa.IP[0:4]) proxyPeer.Port = uint16(oa.Port) fmt.Printf("Connect to bitcoin network via %d.%d.%d.%d:%d\n", oa.IP[0], oa.IP[1], oa.IP[2], oa.IP[3], oa.Port) } else { go func() { if !Testnet { initSeeds([]string{ "seed.bitcoin.sipa.be", "dnsseed.bluematt.me", "seed.bitcoinstats.com", "seed.bitnodes.io", "bitseed.xf2.org", }, 8333) } else { for j := range testnet_seeds { ip := net.ParseIP(testnet_seeds[j]) if ip != nil && len(ip) == 16 { p := NewEmptyPeer() p.Time = uint32(time.Now().Unix()) p.Services = 1 copy(p.Ip6[:], ip[:12]) copy(p.Ip4[:], ip[12:16]) p.Port = 18333 p.Save() } } initSeeds([]string{ //"testnet-seed.bitcoin.petertodd.org", "testnet-seed.bluematt.me", }, 18333) } }() } }
func main() { var dir string if len(os.Args) > 1 { dir = os.Args[1] } else { dir = sys.BitcoinHome() + "gocoin" + string(os.PathSeparator) + "btcnet" + string(os.PathSeparator) + "peers3" } db, er := qdb.NewDB(dir, true) if er != nil { println(er.Error()) os.Exit(1) } println(db.Count(), "peers in databse", dir) if db.Count() == 0 { return } tmp := make(manyPeers, db.Count()) cnt := 0 db.Browse(func(k qdb.KeyType, v []byte) uint32 { np := utils.NewPeer(v) if !sys.ValidIp4(np.Ip4[:]) { return 0 } if cnt < len(tmp) { tmp[cnt] = np cnt++ } return 0 }) sort.Sort(tmp[:cnt]) for cnt = 0; cnt < len(tmp) && cnt < 2500; cnt++ { ad := tmp[cnt] fmt.Printf("%3d) %16s %5d - seen %5d min ago\n", cnt+1, fmt.Sprintf("%d.%d.%d.%d", ad.Ip4[0], ad.Ip4[1], ad.Ip4[2], ad.Ip4[3]), ad.Port, (time.Now().Unix()-int64(ad.Time))/60) } }