MCPcopy Create free account
hub / github.com/ethereum/node-crawler / crawlNodes

Function crawlNodes

cmd/crawler/crawlercmd.go:63–131  ·  view source on GitHub ↗
(ctx *cli.Context)

Source from the content-addressed store, hash-verified

61)
62
63func crawlNodes(ctx *cli.Context) error {
64 var inputSet common.NodeSet
65 var geoipDB *geoip2.Reader
66
67 nodesFile := ctx.String(nodeFileFlag.Name)
68
69 if nodesFile != "" && gethCommon.FileExist(nodesFile) {
70 inputSet = common.LoadNodesJSON(nodesFile)
71 }
72
73 var db *sql.DB
74 if ctx.IsSet(crawlerDBFlag.Name) {
75 name := ctx.String(crawlerDBFlag.Name)
76 shouldInit := false
77 if _, err := os.Stat(name); os.IsNotExist(err) {
78 shouldInit = true
79 }
80
81 var err error
82 db, err = openSQLiteDB(
83 name,
84 ctx.String(autovacuumFlag.Name),
85 ctx.Uint64(busyTimeoutFlag.Name),
86 )
87 if err != nil {
88 panic(err)
89 }
90 log.Info("Connected to db")
91 if shouldInit {
92 log.Info("DB did not exist, init")
93 if err := crawlerdb.CreateDB(db); err != nil {
94 panic(err)
95 }
96 }
97 }
98
99 nodeDB, err := enode.OpenDB(ctx.String(nodedbFlag.Name))
100 if err != nil {
101 panic(err)
102 }
103
104 if geoipFile := ctx.String(geoipdbFlag.Name); geoipFile != "" {
105 geoipDB, err = geoip2.Open(geoipFile)
106 if err != nil {
107 return err
108 }
109 defer func() { _ = geoipDB.Close() }()
110 }
111
112 crawler := crawler.Crawler{
113 NetworkID: ctx.Uint64(utils.NetworkIdFlag.Name),
114 NodeURL: ctx.String(nodeURLFlag.Name),
115 ListenAddr: ctx.String(listenAddrFlag.Name),
116 NodeKey: ctx.String(nodekeyFlag.Name),
117 Bootnodes: ctx.StringSlice(bootnodesFlag.Name),
118 Timeout: ctx.Duration(timeoutFlag.Name),
119 Workers: ctx.Uint64(workersFlag.Name),
120 Sepolia: ctx.Bool(utils.SepoliaFlag.Name),

Callers

nothing calls this directly

Calls 6

CrawlRoundMethod · 0.95
LoadNodesJSONFunction · 0.92
CreateDBFunction · 0.92
openSQLiteDBFunction · 0.85
WriteNodesJSONMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected