MCPcopy Create free account
hub / github.com/eventure/hide.client.linux / ExternalIps

Method ExternalIps

rest/client.go:364–399  ·  view source on GitHub ↗

ExternalIps fetches external Ips from ipcheck(-v6).hideservers.net

( ctx context.Context, routeFn func( bool, net.IP ) error )

Source from the content-addressed store, hash-verified

362func ( c *Client ) ExternalIps( ctx context.Context, routeFn func( bool, net.IP ) error, ipv4Func, ipv6Func func( ip net.IP ) ) ( err error ) {
363 c.Config.Port, c.Config.CA = 80, ""
364 var buf []byte
365
366 if err = c.Init(); err != nil { log.Println( "ExIp: [ERR] REST Client setup failed:", err ); return }
367 c.authorizedPins = nil
368 c.client.Transport.(*http.Transport).Protocols.SetHTTP1( true )
369 c.client.Transport.(*http.Transport).Protocols.SetHTTP2( true )
370
371 exIpFunc := func( name string, callback func( ip net.IP ) ) {
372 c.Config.Host, c.client.Transport.(*http.Transport).TLSClientConfig.ServerName = name, name
373 if err = c.Resolve( ctx ); err != nil { log.Println( "ExIp: [ERR] DNS failed:", err ); return }
374 if err = routeFn( true, c.Remote().IP ); err != nil { log.Println( "ExIp: [ERR] Route", c.Remote().IP, "failed:", err ); return }
375 buf, _, err = c.get( ctx, "http://" + c.remote.String() )
376 _ = routeFn( false, c.Remote().IP )
377 if err != nil { log.Println( "ExIp: [ERR] Get http://" + c.Config.Host + " failed" ); return }
378 callback( net.ParseIP( string(buf) ) )
379 return
380 }
381
382 exIpFunc( "ipcheck.hideservers.net", ipv4Func )
383 exIpFunc( "ipcheck-v6.hideservers.net", ipv6Func )
384 return nil
385}

Callers

nothing calls this directly

Calls 5

InitMethod · 0.95
ResolveMethod · 0.95
RemoteMethod · 0.95
getMethod · 0.95
StringMethod · 0.80

Tested by

no test coverage detected