Documentation ¶
Index ¶
- Constants
- Variables
- func Gateways() []net.IP
- func GetApproximateInternetLocation() (net.IP, error)
- func GetAssignedAddresses() (ipv4 []net.IP, ipv6 []net.IP, err error)
- func GetAssignedGlobalAddresses() (ipv4 []net.IP, ipv6 []net.IP, err error)
- func IsConnectivityDomain(domain string) bool
- func IsMyIP(ip net.IP) (yes bool, err error)
- func Online() bool
- func ReportFailedConnection()
- func ReportSuccessfulConnection()
- func SetLocalAddrFactory(laf func(network string) net.Addr)
- type CaptivePortal
- type Nameserver
- type OnlineStatus
Constants ¶
const ( NetworkChangedEvent = "network changed" OnlineStatusChangedEvent = "online status changed" )
Event Names
Variables ¶
var ( PortalTestIP = net.IPv4(192, 0, 2, 1) PortalTestURL = fmt.Sprintf("http://%s/", PortalTestIP) DNSTestDomain = "one.one.one.one." DNSTestExpectedIP = net.IPv4(1, 1, 1, 1) // SpecialCaptivePortalDomain is the domain name used to point to the detected captive portal IP // or the captive portal test IP. The default value should be overridden by the resolver package, // which defines the custom internal domain name to use. SpecialCaptivePortalDomain = "captiveportal.invalid." // ConnectivityDomains holds all connectivity domains. This slice must not be modified. ConnectivityDomains = []string{ SpecialCaptivePortalDomain, "one.one.one.one.", "dns.msftncsi.com.", "msftncsi.com.", "www.msftncsi.com.", "microsoftconnecttest.com.", "www.microsoftconnecttest.com.", "ipv6.microsoftconnecttest.com.", "captive.apple.com.", "connectivity-check.ubuntu.com.", "nmcheck.gnome.org.", "network-test.debian.org.", "204.pop-os.org", "connectivitycheck.gstatic.com.", "neverssl.com.", "detectportal.firefox.com.", } )
Online Status and Resolver
Functions ¶
func GetApproximateInternetLocation ¶
GetApproximateInternetLocation returns the nearest detectable IP address. If one or more global IP addresses are configured, one of them is returned. Currently only support IPv4. Else, the IP address of the nearest ping-answering internet node is returned.
func GetAssignedAddresses ¶
GetAssignedAddresses returns the assigned IPv4 and IPv6 addresses of the host.
func GetAssignedGlobalAddresses ¶
GetAssignedGlobalAddresses returns the assigned global IPv4 and IPv6 addresses of the host.
func IsConnectivityDomain ¶ added in v0.4.12
IsConnectivityDomain checks whether the given domain (fqdn) is used for any connectivity related network connections and should always be resolved using the network assigned DNS server.
func IsMyIP ¶ added in v0.5.2
IsMyIP returns whether the given unicast IP is currently configured on the local host. Broadcast or multicast addresses will never match, even if valid in in use.
func Online ¶
func Online() bool
Online returns true if online status is either SemiOnline or Online.
func ReportFailedConnection ¶
func ReportFailedConnection()
ReportFailedConnection hints the online status monitoring system that a connection attempt has failed. This function has extremely low overhead and may be called as much as wanted.
func ReportSuccessfulConnection ¶
func ReportSuccessfulConnection()
ReportSuccessfulConnection hints the online status monitoring system that a connection attempt was successful.
func SetLocalAddrFactory ¶
SetLocalAddrFactory supplies the environment package with a function to get permitted local addresses for connections.
Types ¶
type CaptivePortal ¶ added in v0.4.12
CaptivePortal holds information about a detected captive portal.
func GetCaptivePortal ¶ added in v0.4.12
func GetCaptivePortal() *CaptivePortal
GetCaptivePortal returns the current captive portal. The returned struct must not be edited.
type Nameserver ¶
Nameserver describes a system assigned namserver.
func Nameservers ¶
func Nameservers() []Nameserver
Nameservers returns the currently active nameservers.
type OnlineStatus ¶
type OnlineStatus uint8
OnlineStatus represent a state of connectivity to the Internet.
const ( StatusUnknown OnlineStatus = 0 StatusOffline OnlineStatus = 1 StatusLimited OnlineStatus = 2 // local network only StatusPortal OnlineStatus = 3 // there seems to be an internet connection, but we are being intercepted, possibly by a captive portal StatusSemiOnline OnlineStatus = 4 // we seem to online, but without full connectivity StatusOnline OnlineStatus = 5 )
Online Status Values
func CheckAndGetOnlineStatus ¶
func CheckAndGetOnlineStatus() OnlineStatus
CheckAndGetOnlineStatus triggers a new online status check and returns the result
func GetOnlineStatus ¶
func GetOnlineStatus() OnlineStatus
GetOnlineStatus returns the current online stats.
func (OnlineStatus) String ¶
func (os OnlineStatus) String() string