Documentation

Index

Constants

View Source
const (
	NetworkChangedEvent      = "network changed"
	OnlineStatusChangedEvent = "online status changed"
)

    Event Names

    Variables

    View Source
    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."
    )

      Online Status and Resolver

      Functions

      func Gateways

      func Gateways() []net.IP

        Gateways returns the currently active gateways.

        func GetApproximateInternetLocation

        func GetApproximateInternetLocation() (net.IP, error)

          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

          func GetAssignedAddresses() (ipv4 []net.IP, ipv6 []net.IP, err error)

            GetAssignedAddresses returns the assigned IPv4 and IPv6 addresses of the host.

            func GetAssignedGlobalAddresses

            func GetAssignedGlobalAddresses() (ipv4 []net.IP, ipv6 []net.IP, err error)

              GetAssignedGlobalAddresses returns the assigned global IPv4 and IPv6 addresses of the host.

              func IsConnectivityDomain

              func IsConnectivityDomain(domain string) bool

                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

                func IsMyIP(ip net.IP) (yes bool, err error)

                  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

                        func SetLocalAddrFactory(laf func(network string) net.Addr)

                          SetLocalAddrFactory supplies the environment package with a function to get permitted local addresses for connections.

                          Types

                          type CaptivePortal

                          type CaptivePortal struct {
                          	URL    string
                          	Domain string
                          	IP     net.IP
                          }

                            CaptivePortal holds information about a detected captive portal.

                            func GetCaptivePortal

                            func GetCaptivePortal() *CaptivePortal

                              GetCaptivePortal returns the current captive portal. The returned struct must not be edited.

                              type Nameserver

                              type Nameserver struct {
                              	IP     net.IP
                              	Search []string
                              }

                                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
                                          GOOS=linux, GOARCH=amd64