netconfig

package
v0.0.0-...-683b059 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2022 License: BSD-3-Clause Imports: 3 Imported by: 0

Documentation

Overview

Package netconfig contains the mojo connection to cros_network_config.

Package netconfig contains functions to establish mojo connection to cros_network_config along with some helper functions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NetworkStateIsConnectedOrOnline

func NetworkStateIsConnectedOrOnline(networkState NetworkStateProperties) bool

NetworkStateIsConnectedOrOnline checks whether network is connected or online.

Types

type ActivationStateType

type ActivationStateType int

ActivationStateType : Activation state for Cellular networks.

const (
	UnknownAST ActivationStateType = iota
	NotActivatedAST
	ActivatingAST
	PartiallyActivatedAST
	ActivatedAST
	// NoServiceAST : A cellular modem exists, but no network service is available.
	NoServiceAST
)

ActivationStateType values

type AuthenticationType

type AuthenticationType int

AuthenticationType : The authentication type for Ethernet networks.

const (
	NoneAT AuthenticationType = iota
	K8021x
)

Ethernet Authenticationtype

type CellularStateProperties

type CellularStateProperties struct {
	Iccid             string              `json:"iccid"`
	Eid               string              `json:"eid"`
	ActivationState   ActivationStateType `json:"activationSstate"`
	NetworkTechnology string              `json:"networkTechnology"`
	Roaming           bool                `json:"roaming"`
	SignalStrength    int32               `json:"signalStrength"`
	SimLocked         bool                `json:"simLocked"`
}

CellularStateProperties is member of NetworkTypeStateProperties

type ConfigProperties

type ConfigProperties struct {
	TypeConfig NetworkTypeConfigProperties `json:"typeConfig"`
}

ConfigProperties is passed to SetProperties or ConfigureNetwork to configure a new network or augment an existing one.

type ConnectionStateType

type ConnectionStateType int

ConnectionStateType : Connection state of visible networks.

const (
	// OnlineCST : The network is connected and internet connectivity is available.
	OnlineCST ConnectionStateType = iota
	// ConnectedCST : The network is connected and not in a detected portal state, but internet connectivity may not be available.
	ConnectedCST
	// PortalCST : The network is connected but a portal state was detected. Internet connectivity may be limited. Additional details are in PortalState.
	PortalCST
	// ConnectingCST : The network is in the process of connecting.
	ConnectingCST
	// NotConnectedCST : The network is not connected.
	NotConnectedCST
)

type CrosNetworkConfig

type CrosNetworkConfig struct {
	// contains filtered or unexported fields
}

CrosNetworkConfig contains the mojo connection to cros_network_config.

func NewCrosNetworkConfig

func NewCrosNetworkConfig(ctx context.Context, cr *chrome.Chrome) (*CrosNetworkConfig, error)

NewCrosNetworkConfig creates a connection to cros_network_config that allows to make mojo calls. Only works in a context where chrome://network may be opened.

func (*CrosNetworkConfig) Close

func (c *CrosNetworkConfig) Close(ctx context.Context) error

Close cleans up the injected javascript and closes the chrome://network tab.

func (*CrosNetworkConfig) ConfigureNetwork

func (c *CrosNetworkConfig) ConfigureNetwork(ctx context.Context, properties ConfigProperties, shared bool) (string, error)

ConfigureNetwork either configures a new network or updates an existing network configuration.

func (*CrosNetworkConfig) ForgetNetwork

func (c *CrosNetworkConfig) ForgetNetwork(ctx context.Context, guid string) (bool, error)

ForgetNetwork removes the network with guid from the device.

func (*CrosNetworkConfig) GetDeviceStateList

func (c *CrosNetworkConfig) GetDeviceStateList(ctx context.Context) ([]DeviceStateProperties, error)

GetDeviceStateList returns a array of Device states.

func (*CrosNetworkConfig) GetManagedProperties

func (c *CrosNetworkConfig) GetManagedProperties(ctx context.Context, guid string) (*ManagedProperties, error)

GetManagedProperties returns the managed properties of the given network, managed properties contain information on which values are set by policy or user. Look at cros_network_config.mojom or onc_spec.md for more information.

func (*CrosNetworkConfig) GetNetworkStateList

func (c *CrosNetworkConfig) GetNetworkStateList(ctx context.Context, filter NetworkFilter) ([]NetworkStateProperties, error)

GetNetworkStateList returns a array of states of networks based on the filter.

func (*CrosNetworkConfig) SetNetworkTypeEnabledState

func (c *CrosNetworkConfig) SetNetworkTypeEnabledState(ctx context.Context, networkType NetworkType, enable bool) error

SetNetworkTypeEnabledState enables/disable a given Network_Type.

type DeviceStateProperties

type DeviceStateProperties struct {
	Ipv4Address             IPAddress       `json:"ipv4address,omitempty"`
	Ipv6Address             IPAddress       `json:"ipv6address,omitempty"`
	MacAddress              string          `json:"macaddress,omitempty"`
	Scanning                bool            `json:"scanning"`
	SimLockStatus           SIMLockStatus   `json:"simlockstatus"`
	SimInfos                []SIMInfo       `json:"siminfos,omitempty"`
	InhibitReason           InhibitReason   `json:"inhibitreason"`
	SimAbsent               bool            `json:"simabsent"`
	DeviceState             DeviceStateType `json:"devicestate"`
	Type                    NetworkType     `json:"type"`
	ManagedNetworkAvailable bool            `json:"managednetworkavailable"`
}

DeviceStateProperties is returned by GetDeviceStateList

type DeviceStateType

type DeviceStateType int

DeviceStateType : Device / Technology state for devices.

const (
	// UninitializedDST : The device is available but not yet initialized and can not be enabled.
	UninitializedDST DeviceStateType = iota
	// DisabledDST : The device is initialized but disabled.
	DisabledDST
	// DisablingDST : The device is in the process of disabling. Enable calls may fail until disabling has completed.
	DisablingDST
	// EnablingDST : The device is in the process of enabling. Disable calls may fail until enabling has completed.
	EnablingDST
	// EnabledDST : The device is enabled. Networks can be configured and connected.
	EnabledDST
	// ProhibitedDST : The device is disabled and enabling the device is prohibited by policy.
	ProhibitedDST
	// UnavailableDST : Not used in DeviceStateProperties, but useful when querying by type.
	UnavailableDST
)

type EAPConfigProperties

type EAPConfigProperties struct {
	AnonymousIdentity   string           `json:"anonymousIdentity,omitempty"`
	Identity            string           `json:"identity,omitempty"`
	Inner               string           `json:"inner,omitempty"` // "Automatic"
	Outer               string           `json:"outer"`           // "PEAP"
	Password            string           `json:"password,omitempty"`
	SaveCredentials     bool             `json:"saveCredentials,omitempty"` // true.
	ClientCertType      string           `json:"clientCertType,omitempty"`  // "None".
	DomainSuffixMatch   []string         `json:"domainSuffixMatch"`         // Empty in manual example but not optional in mojo.
	SubjectAltNameMatch []SubjectAltName `json:"subjectAltNameMatch"`       // Empty in manual example but not optional in mojo.
	UseSystemCAs        bool             `json:"useSystemCAs,omitempty"`    // false. Defaults to true.
}

EAPConfigProperties contains properties for EAP networks. Currently only PEAP networks without CA certificates are supported, so the fields related to certificates are not included: ServerCAPEMs, ServerCARefs, ServerCARef (deprecated), SubjectMatch, TLSVersionMax, UseProactiveKeyCaching.

type EthernetStateProperties

type EthernetStateProperties struct {
	Authentication AuthenticationType `json:"authentication"`
}

EthernetStateProperties is member of NetworkTypeStateProperties

type FilterType

type FilterType int

FilterType is used for requesting lists of network states.

const (
	// ActiveFT :Return active networks. A network is active when its ConnectionStateType != kNotConnected.
	ActiveFT FilterType = iota
	// VisibleFT :Return visible (active, physically connected or in-range) networks. Active networks will be listed first.
	VisibleFT
	// ConfiguredFT :Only include configured (saved) networks.
	ConfiguredFT
	// AllFT :Include all networks.
	AllFT
)

type HiddenSsidMode

type HiddenSsidMode int

HiddenSsidMode is the tri-state status of hidden SSID.

const (
	Automatic HiddenSsidMode = iota
	Disabled
	Enabled
)

Whether SSID is hidden.

type IPAddress

type IPAddress struct {
	AddressBytes []uint8
}

IPAddress represents IP address

type InhibitReason

type InhibitReason int

InhibitReason : Reasons why the Cellular Device may have its scanning inhibited (i.e. temporarily stopped).

const (
	// NotInhibited :Not inhibited
	NotInhibited InhibitReason = iota
	// InstallingProfile Inhibited because an eSIM profile is being installed.
	InstallingProfile
	// RenamingProfile :Inhibited because an eSIM profile is being renamed.
	RenamingProfile
	// RemovingProfile :Inhibited because an eSIM profile is being removed.
	RemovingProfile
	// ConnectingToProfile :Inhibited because a connection is in progress which requires that the device switch to a different eSIM profile
	ConnectingToProfile
	// RefreshingProfileList :Inhibited because the list of pending eSIM profiles is being refreshed by checking with an SMDS server.
	RefreshingProfileList
	// ResettingEuiccMemory :Inhibited because the EUICC memory is being reset.
	ResettingEuiccMemory
	// DisablingProfile :Inhibited because an eSIM profile is being disabled.
	DisablingProfile
)

type ManagedBoolean

type ManagedBoolean struct {
	ActiveValue bool `json:"activeValue"`
}

ManagedBoolean contains active value, if required one may add policy value and source.

type ManagedEAPProperties

type ManagedEAPProperties struct {
	AnonymousIdentity   ManagedString                  `json:"anonymousIdentity,omitempty"`
	Identity            ManagedString                  `json:"identity,omitempty"`
	Inner               ManagedString                  `json:"inner,omitempty"`
	Outer               ManagedString                  `json:"outer,omitempty"`
	Password            ManagedString                  `json:"password,omitempty"`
	SaveCredentials     ManagedBoolean                 `json:"saveCredentials,omitempty"`
	ClientCertType      ManagedString                  `json:"clientCertType,omitempty"`
	DomainSuffixMatch   ManagedStringList              `json:"domainSuffixMatch,omitempty"`
	SubjectAltNameMatch ManagedSubjectAltNameMatchList `json:"subjectAltNameMatch,omitempty"`
	UseSystemCAs        ManagedBoolean                 `json:"useSystemCas,omitempty"`
}

ManagedEAPProperties contains properties for EAP networks. Currently only PEAP networks without CA certificates are supported. We include the same fields as EAPConfigProperties.

type ManagedProperties

type ManagedProperties struct {
	Type           NetworkType                  `json:"type"`
	TypeProperties NetworkTypeManagedProperties `json:"typeProperties"`
}

ManagedProperties are provided by GetManagedProperties, see onc_spec.md for details.

type ManagedString

type ManagedString struct {
	ActiveValue string `json:"activeValue"`
}

ManagedString contains active value, if required one may add policy value and source.

type ManagedStringList

type ManagedStringList struct {
	ActiveValue []string `json:"activeValue"`
}

ManagedStringList contains active value, if required one may add policy value and source.

type ManagedSubjectAltNameMatchList

type ManagedSubjectAltNameMatchList struct {
	ActiveValue []SubjectAltName `json:"activeValue"`
}

ManagedSubjectAltNameMatchList contains active value, if required one may add policy value and source.

type ManagedWiFiProperties

type ManagedWiFiProperties struct {
	// Passphrase is only used for PSK networks and Eap is only used for EAP.
	// These fields should not be included in the json object at all otherwise
	// (not even as an empty object). Setting the optional field as a pointer
	// allows it to be nullable and to not appear in the json object if not
	// provided.
	Eap        *ManagedEAPProperties `json:"eap,omitempty"`
	Passphrase *ManagedString        `json:"passphrase,omitempty"`
	Ssid       ManagedString         `json:"ssid"`
	Security   SecurityType          `json:"security"`
}

ManagedWiFiProperties contain managed properties of a wifi connection.

type NetworkFilter

type NetworkFilter struct {
	Filter      FilterType  `json:"filter"`
	NetworkType NetworkType `json:"networktype"`
	Limit       int32       `json:"limit"`
}

NetworkFilter is passed to GetNetworkStateList to filter the list of networks returned.

type NetworkStateProperties

type NetworkStateProperties struct {
	Connectable        bool                       `json:"connnectable"`
	ConnectRequested   bool                       `json:"connectRequested"`
	ConnectionState    ConnectionStateType        `json:"connectionState"`
	ErrorState         string                     `json:"errorState,omitempty"`
	GUID               string                     `json:"guid"`
	Name               string                     `json:"name"`
	PortalState        PortalState                `json:"portalState"`
	Priority           int32                      `json:"priority"`
	ProxyMode          ProxyMode                  `json:"proxyMode"`
	ProhibitedByPolicy bool                       `json:"prohibitedByPolicy"`
	Source             OncSource                  `json:"source"`
	Type               NetworkType                `json:"type"`
	TypeState          NetworkTypeStateProperties `json:"typeState"`
}

NetworkStateProperties is returned by GetNetworkStateList

type NetworkType

type NetworkType int

NetworkType is the network technology type.

const (
	All NetworkType = iota
	Cellular
	Ethernet
	Mobile
	Tether
	VPN
	Wireless
	WiFi
)

Types of networks. Note that All and Wireless are only used for filtering.

type NetworkTypeConfigProperties

type NetworkTypeConfigProperties struct {
	Wifi WiFiConfigProperties `json:"wifi"`
}

NetworkTypeConfigProperties contains properties for one type of network. Currently only WiFi is supported.

type NetworkTypeManagedProperties

type NetworkTypeManagedProperties struct {
	Wifi ManagedWiFiProperties `json:"wifi"`
}

NetworkTypeManagedProperties contains managed properties for one of the network types. Only WiFi is implemented so far.

type NetworkTypeStateProperties

type NetworkTypeStateProperties struct {
	Cellular CellularStateProperties `json:"cellular,omitempty"`
	Ethernet EthernetStateProperties `json:"ethernet,omitempty"`
	//	Tether   TetherStateProperties   `json:"tether,omitempty"`
	//	VPN      VPNStateProperties      `json:"vpn,omitempty"`
	WiFi WiFiStateProperties `json:"wifi,omitempty"`
}

NetworkTypeStateProperties is union which is member of NetworkTypeStateProperties

type OncSource

type OncSource int

OncSource : The ONC source for the network configuration, i.e. whether it is stored in the User or Device profile and whether it was configured by policy.

const (
	// NoneOS : The network is not remembered, or the property is not configurable.
	NoneOS OncSource = iota
	// UserOS : The configuration is saved in the user profile.
	UserOS
	// DeviceOS : The configuration is saved in the device profile.
	DeviceOS
	// UserPolicyOS : The configuration came from a user policy and is saved in the user profile.
	UserPolicyOS
	// DevicePolicyOS : The configuration came from a device policy and is saved in the device profile.
	DevicePolicyOS
)

type PortalState

type PortalState int

PortalState : The captive portal state. Provides additional details when the connection state is kPortal.

const (
	// UnknownPS : The network is not connected or the portal state is not available.
	UnknownPS PortalState = iota
	// OnlinePS : The network is connected and no portal is detected.
	OnlinePS
	// PortalSuspectedPS :A portal is suspected but no redirect was provided.
	PortalSuspectedPS
	// PortalPS : The network is in a portal state with a redirect URL.
	PortalPS
	// ProxyAuthRequiredPS :A proxy requiring authentication is detected.
	ProxyAuthRequiredPS
	// NoInternetPS : The network is connected but no internet is available and no proxy was detected.
	NoInternetPS
)

type ProxyMode

type ProxyMode int

ProxyMode is affecting this network. Includes any settings that affect a given network (i.e. global proxy settings are also considered)

const (
	// DirectPM :Direct connection to the network.
	DirectPM ProxyMode = iota
	// AutoDetectPM  :Try to retrieve a PAC script from http://wpad/wpad.dat.
	AutoDetectPM
	// PacScriptPM :Try to retrieve a PAC script from kProxyPacURL.
	PacScriptPM
	// FixedServersPM :Use a specified list of servers.
	FixedServersPM
	// SystemPM :Use the system's proxy settings.
	SystemPM
)

type SIMInfo

type SIMInfo struct {
	SlotID    int32  `json:"slotID"`
	Eid       string `json:"eid"`
	Iccid     string `json:"iccid"`
	IsPrimary bool   `json:"isPrimary"`
}

SIMInfo is details about a sim slot available on the device.

type SIMLockStatus

type SIMLockStatus struct {
	LockType    string `json:"locktype"`
	LockEnabled bool   `json:"lockenabled"`
	RetriesLeft int32  `json:"retriesleft"`
}

SIMLockStatus is the SIM card lock status for Cellular networks.

type SecurityType

type SecurityType int

SecurityType is the security for WiFi and Ethernet.

const (
	None SecurityType = iota
	Wep8021x
	WepPsk
	WpaEap
	WpaPsk
)

Security types.

type SubjectAltName

type SubjectAltName struct {
	Type  SubjectAltNameType `json:"type"`
	Value string             `json:"value"`
}

SubjectAltName contains the information of an alternative subject name.

type SubjectAltNameType

type SubjectAltNameType int

SubjectAltNameType is the type for SubjectAltName.

const (
	Email SubjectAltNameType = iota
	DNS
	URI
)

Allowed types for the alternative subject name.

type WiFiConfigProperties

type WiFiConfigProperties struct {
	// Eap configuration is only used if the wifi security is WpaEap and it should
	// not be included in the json object at all otherwise (not even as an empty
	// object). Setting the field Eap as a pointer allows it to be nullable and
	// to not appear in the json object if not provided.
	Eap        *EAPConfigProperties `json:"eap,omitempty"`
	Passphrase string               `json:"passphrase,omitempty"`
	Ssid       string               `json:"ssid,omitempty"`
	Security   SecurityType         `json:"security"`
	HiddenSsid HiddenSsidMode       `json:"hiddenSsid"`
}

WiFiConfigProperties is used to create new configurations or augment existing ones.

type WiFiStateProperties

type WiFiStateProperties struct {
	Bssid          string       `json:"bssid"`
	Frequency      int32        `json:"frequency"`
	HexSsid        string       `json:"hexSsid"`
	Security       SecurityType `json:"security"`
	SignalStrength int32        `json:"signalStrength"`
	Ssid           string       `json:"ssid"`
	HiddenSsid     bool         `json:"hiddenSsid"`
}

WiFiStateProperties is member of NetworkTypeStateProperties

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL