Documentation ¶
Overview ¶
Package wireless provides a connection to WPA Supplicant and a client for ease of use
Index ¶
- Constants
- Variables
- func DecodeSsid(ssid string) (string, error)
- func DefaultInterface() (string, bool)
- func EncodeSsid(ssid string) string
- func InterfacesFromSysfs() []string
- func InterfacesFromWPARunDir(basePath ...string) []string
- func IsUseOfClosedNetworkConnectionError(err error) bool
- type AP
- type APs
- type AdvancedNetwork
- type Client
- func (cl *Client) AddNetwork(net Network) (Network, error)
- func (cl *Client) AddOrUpdateNetwork(net Network) (Network, error)
- func (cl *Client) Close()
- func (cl *Client) Conn() *Conn
- func (cl *Client) Connect(net Network) (Network, error)
- func (cl *Client) DisableNetwork(id int) error
- func (cl *Client) EnableNetwork(id int) error
- func (cl *Client) GetNetworkAttr(id int, attr string) (string, error)
- func (cl *Client) LoadConfig() error
- func (cl *Client) Networks() (nets Networks, err error)
- func (cl *Client) RemoveNetwork(id int) error
- func (cl *Client) SaveConfig() error
- func (cl *Client) Scan() (nets APs, err error)
- func (cl *Client) Status() (State, error)
- func (cl *Client) Subscribe(topics ...string) *Subscription
- func (cl *Client) UpdateNetwork(net Network) (Network, error)
- type Conn
- func (c *Conn) Close() error
- func (c *Conn) SendCommand(command ...string) (string, error)
- func (c *Conn) SendCommandBool(command ...string) error
- func (c *Conn) SendCommandInt(command ...string) (int, error)
- func (c *Conn) SendCommandWithContext(ctx context.Context, command ...string) (string, error)
- func (c *Conn) Subscribe(eventNames ...string) *Subscription
- func (c *Conn) WithLogOutput(w io.Writer)
- type Event
- type Network
- type Networks
- type State
- type Subscription
- type WPAConn
Constants ¶
const ( CmdStatus = "STATUS" CmdIfname = "IFNAME" CmdPing = "PING" CmdRelog = "RELOG" CmdNote = "NOTE" CmdMib = "MIB" CmdHelp = "HELP" CmdInterface = "INTERFACE" CmdLevel = "LEVEL" CmdLicense = "LICENSE" CmdQuit = "QUIT" CmdSet = "SET" CmdDump = "DUMP" CmdGet = "GET" CmdDriverFlags = "DRIVER_FLAGS" CmdLogon = "LOGON" CmdLogoff = "LOGOFF" CmdPmksa = "PMKSA" CmdPmksaFlush = "PMKSA_FLUSH" CmdReassociate = "REASSOCIATE" CmdReattach = "REATTACH" CmdPreauthenticate = "PREAUTHENTICATE" CmdIdentity = "IDENTITY" CmdPassword = "PASSWORD" CmdNewPassword = "NEW_PASSWORD" CmdPin = "PIN" CmdOtp = "OTP" CmdPassphrase = "PASSPHRASE" CmdSim = "SIM" CmdBssid = "BSSID" CmdBlacklist = "BLACKLIST" CmdLogLevel = "LOG_LEVEL" CmdListNetworks = "LIST_NETWORKS" CmdSelectNetwork = "SELECT_NETWORK" CmdEnableNetwork = "ENABLE_NETWORK" CmdDisableNetwork = "DISABLE_NETWORK" CmdAddNetwork = "ADD_NETWORK" CmdRemoveNetwork = "REMOVE_NETWORK" CmdSetNetwork = "SET_NETWORK" CmdGetNetwork = "GET_NETWORK" CmdDupNetwork = "DUP_NETWORK" CmdListCreds = "LIST_CREDS" CmdAddCred = "ADD_CRED" CmdRemoveCred = "REMOVE_CRED" CmdSetCred = "SET_CRED" CmdGetCred = "GET_CRED" CmdSaveConfig = "SAVE_CONFIG" CmdDisconnect = "DISCONNECT" CmdReconnect = "RECONNECT" CmdScan = "SCAN" CmdScanResults = "SCAN_RESULTS" CmdAbortScan = "ABORT_SCAN" CmdBss = "BSS" CmdGetCapability = "GET_CAPABILITY" CmdReconfigure = "RECONFIGURE" CmdTerminate = "TERMINATE" CmdInterfaceAdd = "InterfaceAdd" CmdInterfaceRemove = "INTERFACE_REMOVE" CmdInterfaceList = "INTERFACE_LIST" CmdApScan = "AP_SCAN" CmdScanInterval = "SCAN_INTERVAL" CmdBssExpireAge = "BSS_EXPIRE_AGE" CmdBssExpireCount = "BSS_EXPIRE_COUNT" CmdBssFlush = "BSS_FLUSH" CmdStkstart = "STKSTART" CmdFtDs = "FT_DS" CmdWpsPbc = "WPS_PBC" CmdWpsPin = "WPS_PIN" CmdWpsCheckPin = "WPS_CHECK_PIN" CmdWpsReg = "WPS_REG" CmdWpsApPin = "WPS_AP_PIN" CmdWpsErStart = "WPS_ER_START" CmdWpsErStop = "WPS_ER_STOP" CmdWpsErPin = "WPS_ER_PIN" CmdWpsErPbc = "WPS_ER_PBC" CmdWpsErLearn = "WPS_ER_LEARN" CmdWpsErSetConfig = "WPS_ER_SET_CONFIG" CmdWpsErConfig = "WPS_ER_CONFIG" CmdIbssRsn = "IBSS_RSN" CmdSta = "STA" CmdAllSta = "ALL_STA" CmdDeauthenticate = "DEAUTHENTICATE" CmdDisassociate = "DISASSOCIATE" CmdChanSwitch = "CHAN_SWITCH" CmdSuspend = "SUSPEND" CmdResume = "RESUME" CmdRoam = "ROAM" CmdP2pFind = "P2P_FIND" CmdP2pStopFind = "P2P_STOP_FIND" CmdP2pAspProvision = "P2P_ASP_PROVISION" CmdP2pAspProvisionResp = "P2P_ASP_PROVISION_RESP" CmdP2pConnect = "P2P_CONNECT" CmdP2pListen = "P2P_LISTEN" CmdP2pGroupRemove = "P2P_GROUP_REMOVE" CmdP2pGroupAdd = "P2P_GROUP_ADD" CmdP2pGroupMember = "P2P_GROUP_MEMBER" CmdP2pProvDisc = "P2P_PROV_DISC" CmdP2pGetPassphrase = "P2P_GET_PASSPHRASE" CmdP2pServDiscReq = "P2P_SERV_DISC_REQ" CmdP2pServDiscCancelReq = "P2P_SERV_DISC_CANCEL_REQ" CmdP2pServDiscResp = "P2P_SERV_DISC_RESP" CmdP2pServiceUpdate = "P2P_SERVICE_UPDATE" CmdP2pServDiscExternal = "P2P_SERV_DISC_EXTERNAL" CmdP2pServiceFlush = "P2P_SERVICE_FLUSH" CmdP2pServiceAdd = "P2P_SERVICE_ADD" CmdP2pServiceRep = "P2P_SERVICE_REP" CmdP2pServiceDel = "P2P_SERVICE_DEL" CmdP2pReject = "P2P_REJECT" CmdP2pInvite = "P2P_INVITE" CmdP2pPeers = "P2P_PEERS" CmdP2pPeer = "P2P_PEER" CmdP2pSet = "P2P_SET" CmdP2pFlush = "P2P_FLUSH" CmdP2pCancel = "P2P_CANCEL" CmdP2pPresenceReq = "P2P_PRESENCE_REQ" CmdP2pExtListen = "P2P_EXT_LISTEN" CmdP2pRemoveClient = "P2P_REMOVE_CLIENT" CmdVendorElemAdd = "VENDOR_ELEM_ADD" CmdVendorElemGet = "VENDOR_ELEM_GET" CmdVendorElemRemove = "VENDOR_ELEM_REMOVE" CmdStaAutoconnect = "STA_AUTOCONNECT" CmdTdlsDiscover = "TDLS_DISCOVER" CmdTdlsSetup = "TDLS_SETUP" CmdTdlsTeardown = "TDLS_TEARDOWN" CmdTdlsLinkStatus = "TDLS_LINK_STATUS" CmdWmmAcAddts = "WMM_AC_ADDTS" CmdWmmAcDelts = "WMM_AC_DELTS" CmdWmmAcStatus = "WMM_AC_STATUS" CmdTdlsChanSwitch = "TDLS_CHAN_SWITCH" CmdTdlsCancelChanSwitch = "TDLS_CANCEL_CHAN_SWITCH" CmdSignalPoll = "SIGNAL_POLL" CmdSignalMonitor = "SIGNAL_MONITOR" CmdPktcntPoll = "PKTCNT_POLL" CmdReauthenticate = "REAUTHENTICATE" CmdRaw = "RAW" CmdFlush = "FLUSH" CmdRadioWork = "RADIO_WORK" CmdVendor = "VENDOR" CmdNeighborRepRequest = "NEIGHBOR_REP_REQUEST" CmdErpFlush = "ERP_FLUSH" CmdMacRandScan = "MAC_RAND_SCAN" CmdGetPrefFreqList = "GET_PREF_FREQ_LIST" CmdP2pLoStart = "P2P_LO_START" CmdP2pLoStop = "P2P_LO_STOP" )
const ( // CtrlReq as defined in wpactrl/wpa_ctrl.h:19 CtrlReq = "CTRL-REQ-" // CtrlRsp as defined in wpactrl/wpa_ctrl.h:22 CtrlRsp = "CTRL-RSP-" // EventConnected as defined in wpactrl/wpa_ctrl.h:26 EventConnected = "CTRL-EVENT-CONNECTED" // EventDisconnected as defined in wpactrl/wpa_ctrl.h:28 EventDisconnected = "CTRL-EVENT-DISCONNECTED" // EventAssocReject as defined in wpactrl/wpa_ctrl.h:30 EventAssocReject = "CTRL-EVENT-ASSOC-REJECT" // EventAuthReject as defined in wpactrl/wpa_ctrl.h:32 EventAuthReject = "CTRL-EVENT-AUTH-REJECT" // EventTerminating as defined in wpactrl/wpa_ctrl.h:34 EventTerminating = "CTRL-EVENT-TERMINATING" // EventPasswordChanged as defined in wpactrl/wpa_ctrl.h:36 EventPasswordChanged = "CTRL-EVENT-PASSWORD-CHANGED" // EventEapNotification as defined in wpactrl/wpa_ctrl.h:38 EventEapNotification = "CTRL-EVENT-EAP-NOTIFICATION" // EventEapStarted as defined in wpactrl/wpa_ctrl.h:40 EventEapStarted = "CTRL-EVENT-EAP-STARTED" // EventEapProposedMethod as defined in wpactrl/wpa_ctrl.h:42 EventEapProposedMethod = "CTRL-EVENT-EAP-PROPOSED-METHOD" // EventEapMethod as defined in wpactrl/wpa_ctrl.h:44 EventEapMethod = "CTRL-EVENT-EAP-METHOD" // EventEapPeerCert as defined in wpactrl/wpa_ctrl.h:46 EventEapPeerCert = "CTRL-EVENT-EAP-PEER-CERT" // EventEapPeerAlt as defined in wpactrl/wpa_ctrl.h:48 EventEapPeerAlt = "CTRL-EVENT-EAP-PEER-ALT" // EventEapTLSCertError as defined in wpactrl/wpa_ctrl.h:50 EventEapTLSCertError = "CTRL-EVENT-EAP-TLS-CERT-ERROR" // EventEapStatus as defined in wpactrl/wpa_ctrl.h:52 EventEapStatus = "CTRL-EVENT-EAP-STATUS" // EventEapRetransmit as defined in wpactrl/wpa_ctrl.h:54 EventEapRetransmit = "CTRL-EVENT-EAP-RETRANSMIT" // EventEapRetransmit2 as defined in wpactrl/wpa_ctrl.h:55 EventEapRetransmit2 = "CTRL-EVENT-EAP-RETRANSMIT2" // EventEapSuccess as defined in wpactrl/wpa_ctrl.h:57 EventEapSuccess = "CTRL-EVENT-EAP-SUCCESS" // EventEapSuccess2 as defined in wpactrl/wpa_ctrl.h:58 EventEapSuccess2 = "CTRL-EVENT-EAP-SUCCESS2" // EventEapFailure as defined in wpactrl/wpa_ctrl.h:60 EventEapFailure = "CTRL-EVENT-EAP-FAILURE" // EventEapFailure2 as defined in wpactrl/wpa_ctrl.h:61 EventEapFailure2 = "CTRL-EVENT-EAP-FAILURE2" // EventEapTimeoutFailure as defined in wpactrl/wpa_ctrl.h:63 EventEapTimeoutFailure = "CTRL-EVENT-EAP-TIMEOUT-FAILURE" // EventEapTimeoutFailure2 as defined in wpactrl/wpa_ctrl.h:64 EventEapTimeoutFailure2 = "CTRL-EVENT-EAP-TIMEOUT-FAILURE2" // EventTempDisabled as defined in wpactrl/wpa_ctrl.h:66 EventTempDisabled = "CTRL-EVENT-SSID-TEMP-DISABLED" // EventReenabled as defined in wpactrl/wpa_ctrl.h:68 EventReenabled = "CTRL-EVENT-SSID-REENABLED" // EventScanStarted as defined in wpactrl/wpa_ctrl.h:70 EventScanStarted = "CTRL-EVENT-SCAN-STARTED" // EventScanResults as defined in wpactrl/wpa_ctrl.h:72 EventScanResults = "CTRL-EVENT-SCAN-RESULTS" // EventScanFailed as defined in wpactrl/wpa_ctrl.h:74 EventScanFailed = "CTRL-EVENT-SCAN-FAILED" // EventStateChange as defined in wpactrl/wpa_ctrl.h:76 EventStateChange = "CTRL-EVENT-STATE-CHANGE" // EventBssAdded as defined in wpactrl/wpa_ctrl.h:78 EventBssAdded = "CTRL-EVENT-BSS-ADDED" // EventBssRemoved as defined in wpactrl/wpa_ctrl.h:80 EventBssRemoved = "CTRL-EVENT-BSS-REMOVED" // EventNetworkNotFound as defined in wpactrl/wpa_ctrl.h:82 EventNetworkNotFound = "CTRL-EVENT-NETWORK-NOT-FOUND" // EventSignalChange as defined in wpactrl/wpa_ctrl.h:84 EventSignalChange = "CTRL-EVENT-SIGNAL-CHANGE" // EventBeaconLoss as defined in wpactrl/wpa_ctrl.h:86 EventBeaconLoss = "CTRL-EVENT-BEACON-LOSS" // EventRegdomChange as defined in wpactrl/wpa_ctrl.h:88 EventRegdomChange = "CTRL-EVENT-REGDOM-CHANGE" // EventChannelSwitch as defined in wpactrl/wpa_ctrl.h:90 EventChannelSwitch = "CTRL-EVENT-CHANNEL-SWITCH" // EventSubnetStatusUpdate as defined in wpactrl/wpa_ctrl.h:103 EventSubnetStatusUpdate = "CTRL-EVENT-SUBNET-STATUS-UPDATE" // IbssRsnCompleted as defined in wpactrl/wpa_ctrl.h:106 IbssRsnCompleted = "IBSS-RSN-COMPLETED" // EventFreqConflict as defined in wpactrl/wpa_ctrl.h:113 EventFreqConflict = "CTRL-EVENT-FREQ-CONFLICT" // EventAvoidFreq as defined in wpactrl/wpa_ctrl.h:115 EventAvoidFreq = "CTRL-EVENT-AVOID-FREQ" // WpsEventOverlap as defined in wpactrl/wpa_ctrl.h:117 WpsEventOverlap = "WPS-OVERLAP-DETECTED" // WpsEventApAvailablePbc as defined in wpactrl/wpa_ctrl.h:119 WpsEventApAvailablePbc = "WPS-AP-AVAILABLE-PBC" // WpsEventApAvailableAuth as defined in wpactrl/wpa_ctrl.h:121 WpsEventApAvailableAuth = "WPS-AP-AVAILABLE-AUTH" // WpsEventApAvailablePin as defined in wpactrl/wpa_ctrl.h:124 WpsEventApAvailablePin = "WPS-AP-AVAILABLE-PIN" // WpsEventApAvailable as defined in wpactrl/wpa_ctrl.h:126 WpsEventApAvailable = "WPS-AP-AVAILABLE" // WpsEventCredReceived as defined in wpactrl/wpa_ctrl.h:128 WpsEventCredReceived = "WPS-CRED-RECEIVED" // WpsEventM2d as defined in wpactrl/wpa_ctrl.h:130 WpsEventM2d = "WPS-M2D" // WpsEventFail as defined in wpactrl/wpa_ctrl.h:132 WpsEventFail = "WPS-FAIL" // WpsEventSuccess as defined in wpactrl/wpa_ctrl.h:134 WpsEventSuccess = "WPS-SUCCESS" // WpsEventTimeout as defined in wpactrl/wpa_ctrl.h:136 WpsEventTimeout = "WPS-TIMEOUT" // WpsEventActive as defined in wpactrl/wpa_ctrl.h:138 WpsEventActive = "WPS-PBC-ACTIVE" // WpsEventDisable as defined in wpactrl/wpa_ctrl.h:140 WpsEventDisable = "WPS-PBC-DISABLE" // WpsEventEnrolleeSeen as defined in wpactrl/wpa_ctrl.h:142 WpsEventEnrolleeSeen = "WPS-ENROLLEE-SEEN" // WpsEventOpenNetwork as defined in wpactrl/wpa_ctrl.h:144 WpsEventOpenNetwork = "WPS-OPEN-NETWORK" // WpsEventErApAdd as defined in wpactrl/wpa_ctrl.h:147 WpsEventErApAdd = "WPS-ER-AP-ADD" // WpsEventErApRemove as defined in wpactrl/wpa_ctrl.h:148 WpsEventErApRemove = "WPS-ER-AP-REMOVE" // WpsEventErEnrolleeAdd as defined in wpactrl/wpa_ctrl.h:149 WpsEventErEnrolleeAdd = "WPS-ER-ENROLLEE-ADD" // WpsEventErEnrolleeRemove as defined in wpactrl/wpa_ctrl.h:150 WpsEventErEnrolleeRemove = "WPS-ER-ENROLLEE-REMOVE" // WpsEventErApSettings as defined in wpactrl/wpa_ctrl.h:151 WpsEventErApSettings = "WPS-ER-AP-SETTINGS" // WpsEventErSetSelReg as defined in wpactrl/wpa_ctrl.h:152 WpsEventErSetSelReg = "WPS-ER-AP-SET-SEL-REG" // DppEventAuthSuccess as defined in wpactrl/wpa_ctrl.h:155 DppEventAuthSuccess = "DPP-AUTH-SUCCESS" // DppEventNotCompatible as defined in wpactrl/wpa_ctrl.h:156 DppEventNotCompatible = "DPP-NOT-COMPATIBLE" // DppEventResponsePending as defined in wpactrl/wpa_ctrl.h:157 DppEventResponsePending = "DPP-RESPONSE-PENDING" // DppEventScanPeerQrCode as defined in wpactrl/wpa_ctrl.h:158 DppEventScanPeerQrCode = "DPP-SCAN-PEER-QR-CODE" // DppEventConfReceived as defined in wpactrl/wpa_ctrl.h:159 DppEventConfReceived = "DPP-CONF-RECEIVED" // DppEventConfSent as defined in wpactrl/wpa_ctrl.h:160 DppEventConfSent = "DPP-CONF-SENT" // DppEventConfFailed as defined in wpactrl/wpa_ctrl.h:161 DppEventConfFailed = "DPP-CONF-FAILED" // DppEventConfobjSsid as defined in wpactrl/wpa_ctrl.h:162 DppEventConfobjSsid = "DPP-CONFOBJ-SSID" // DppEventConfobjPass as defined in wpactrl/wpa_ctrl.h:163 DppEventConfobjPass = "DPP-CONFOBJ-PASS" // DppEventConfobjPsk as defined in wpactrl/wpa_ctrl.h:164 DppEventConfobjPsk = "DPP-CONFOBJ-PSK" // DppEventConnector as defined in wpactrl/wpa_ctrl.h:165 DppEventConnector = "DPP-CONNECTOR" // DppEventCSignKey as defined in wpactrl/wpa_ctrl.h:166 DppEventCSignKey = "DPP-C-SIGN-KEY" // DppEventNetAccessKey as defined in wpactrl/wpa_ctrl.h:167 DppEventNetAccessKey = "DPP-NET-ACCESS-KEY" // DppEventMissingConnector as defined in wpactrl/wpa_ctrl.h:168 DppEventMissingConnector = "DPP-MISSING-CONNECTOR" // DppEventNetworkID as defined in wpactrl/wpa_ctrl.h:169 DppEventNetworkID = "DPP-NETWORK-ID" // DppEventRx as defined in wpactrl/wpa_ctrl.h:170 DppEventRx = "DPP-RX" // DppEventTx as defined in wpactrl/wpa_ctrl.h:171 DppEventTx = "DPP-TX" // DppEventTxStatus as defined in wpactrl/wpa_ctrl.h:172 DppEventTxStatus = "DPP-TX-STATUS" // DppEventFail as defined in wpactrl/wpa_ctrl.h:173 DppEventFail = "DPP-FAIL" // MeshGroupStarted as defined in wpactrl/wpa_ctrl.h:176 MeshGroupStarted = "MESH-GROUP-STARTED" // MeshGroupRemoved as defined in wpactrl/wpa_ctrl.h:177 MeshGroupRemoved = "MESH-GROUP-REMOVED" // MeshPeerConnected as defined in wpactrl/wpa_ctrl.h:178 MeshPeerConnected = "MESH-PEER-CONNECTED" // MeshPeerDisconnected as defined in wpactrl/wpa_ctrl.h:179 MeshPeerDisconnected = "MESH-PEER-DISCONNECTED" // MeshSaeAuthFailure as defined in wpactrl/wpa_ctrl.h:181 MeshSaeAuthFailure = "MESH-SAE-AUTH-FAILURE" // MeshSaeAuthBlocked as defined in wpactrl/wpa_ctrl.h:182 MeshSaeAuthBlocked = "MESH-SAE-AUTH-BLOCKED" // P2pEventDeviceFound as defined in wpactrl/wpa_ctrl.h:190 P2pEventDeviceFound = "P2P-DEVICE-FOUND" // P2pEventDeviceLost as defined in wpactrl/wpa_ctrl.h:193 P2pEventDeviceLost = "P2P-DEVICE-LOST" // P2pEventGoNegRequest as defined in wpactrl/wpa_ctrl.h:197 P2pEventGoNegRequest = "P2P-GO-NEG-REQUEST" // P2pEventGoNegSuccess as defined in wpactrl/wpa_ctrl.h:198 P2pEventGoNegSuccess = "P2P-GO-NEG-SUCCESS" // P2pEventGoNegFailure as defined in wpactrl/wpa_ctrl.h:199 P2pEventGoNegFailure = "P2P-GO-NEG-FAILURE" // P2pEventGroupFormationSuccess as defined in wpactrl/wpa_ctrl.h:200 P2pEventGroupFormationSuccess = "P2P-GROUP-FORMATION-SUCCESS" // P2pEventGroupFormationFailure as defined in wpactrl/wpa_ctrl.h:201 P2pEventGroupFormationFailure = "P2P-GROUP-FORMATION-FAILURE" // P2pEventGroupStarted as defined in wpactrl/wpa_ctrl.h:202 P2pEventGroupStarted = "P2P-GROUP-STARTED" // P2pEventGroupRemoved as defined in wpactrl/wpa_ctrl.h:203 P2pEventGroupRemoved = "P2P-GROUP-REMOVED" // P2pEventCrossConnectEnable as defined in wpactrl/wpa_ctrl.h:204 P2pEventCrossConnectEnable = "P2P-CROSS-CONNECT-ENABLE" // P2pEventCrossConnectDisable as defined in wpactrl/wpa_ctrl.h:205 P2pEventCrossConnectDisable = "P2P-CROSS-CONNECT-DISABLE" // P2pEventProvDiscShowPin as defined in wpactrl/wpa_ctrl.h:207 P2pEventProvDiscShowPin = "P2P-PROV-DISC-SHOW-PIN" // P2pEventProvDiscEnterPin as defined in wpactrl/wpa_ctrl.h:209 P2pEventProvDiscEnterPin = "P2P-PROV-DISC-ENTER-PIN" // P2pEventProvDiscPbcReq as defined in wpactrl/wpa_ctrl.h:211 P2pEventProvDiscPbcReq = "P2P-PROV-DISC-PBC-REQ" // P2pEventProvDiscPbcResp as defined in wpactrl/wpa_ctrl.h:213 P2pEventProvDiscPbcResp = "P2P-PROV-DISC-PBC-RESP" // P2pEventProvDiscFailure as defined in wpactrl/wpa_ctrl.h:215 P2pEventProvDiscFailure = "P2P-PROV-DISC-FAILURE" // P2pEventServDiscReq as defined in wpactrl/wpa_ctrl.h:217 P2pEventServDiscReq = "P2P-SERV-DISC-REQ" // P2pEventServDiscResp as defined in wpactrl/wpa_ctrl.h:219 P2pEventServDiscResp = "P2P-SERV-DISC-RESP" // P2pEventServAspResp as defined in wpactrl/wpa_ctrl.h:220 P2pEventServAspResp = "P2P-SERV-ASP-RESP" // P2pEventInvitationReceived as defined in wpactrl/wpa_ctrl.h:221 P2pEventInvitationReceived = "P2P-INVITATION-RECEIVED" // P2pEventInvitationResult as defined in wpactrl/wpa_ctrl.h:222 P2pEventInvitationResult = "P2P-INVITATION-RESULT" // P2pEventInvitationAccepted as defined in wpactrl/wpa_ctrl.h:223 P2pEventInvitationAccepted = "P2P-INVITATION-ACCEPTED" // P2pEventFindStopped as defined in wpactrl/wpa_ctrl.h:224 P2pEventFindStopped = "P2P-FIND-STOPPED" // P2pEventPersistentPskFail as defined in wpactrl/wpa_ctrl.h:225 P2pEventPersistentPskFail = "P2P-PERSISTENT-PSK-FAIL id=" // P2pEventPresenceResponse as defined in wpactrl/wpa_ctrl.h:226 P2pEventPresenceResponse = "P2P-PRESENCE-RESPONSE" // P2pEventNfcBothGo as defined in wpactrl/wpa_ctrl.h:227 P2pEventNfcBothGo = "P2P-NFC-BOTH-GO" // P2pEventNfcPeerClient as defined in wpactrl/wpa_ctrl.h:228 P2pEventNfcPeerClient = "P2P-NFC-PEER-CLIENT" // P2pEventNfcWhileClient as defined in wpactrl/wpa_ctrl.h:229 P2pEventNfcWhileClient = "P2P-NFC-WHILE-CLIENT" // P2pEventFallbackToGoNeg as defined in wpactrl/wpa_ctrl.h:230 P2pEventFallbackToGoNeg = "P2P-FALLBACK-TO-GO-NEG" // P2pEventFallbackToGoNegEnabled as defined in wpactrl/wpa_ctrl.h:231 P2pEventFallbackToGoNegEnabled = "P2P-FALLBACK-TO-GO-NEG-ENABLED" // EssDisassocImminent as defined in wpactrl/wpa_ctrl.h:234 EssDisassocImminent = "ESS-DISASSOC-IMMINENT" // P2pEventRemoveAndReformGroup as defined in wpactrl/wpa_ctrl.h:235 P2pEventRemoveAndReformGroup = "P2P-REMOVE-AND-REFORM-GROUP" // P2pEventP2psProvisionStart as defined in wpactrl/wpa_ctrl.h:237 P2pEventP2psProvisionStart = "P2PS-PROV-START" // P2pEventP2psProvisionDone as defined in wpactrl/wpa_ctrl.h:238 P2pEventP2psProvisionDone = "P2PS-PROV-DONE" // InterworkingAp as defined in wpactrl/wpa_ctrl.h:240 InterworkingAp = "INTERWORKING-AP" // InterworkingBlacklisted as defined in wpactrl/wpa_ctrl.h:241 InterworkingBlacklisted = "INTERWORKING-BLACKLISTED" // InterworkingNoMatch as defined in wpactrl/wpa_ctrl.h:242 InterworkingNoMatch = "INTERWORKING-NO-MATCH" // InterworkingAlreadyConnected as defined in wpactrl/wpa_ctrl.h:243 InterworkingAlreadyConnected = "INTERWORKING-ALREADY-CONNECTED" // InterworkingSelected as defined in wpactrl/wpa_ctrl.h:244 InterworkingSelected = "INTERWORKING-SELECTED" // CredAdded as defined in wpactrl/wpa_ctrl.h:247 CredAdded = "CRED-ADDED" // CredModified as defined in wpactrl/wpa_ctrl.h:249 CredModified = "CRED-MODIFIED" // CredRemoved as defined in wpactrl/wpa_ctrl.h:251 CredRemoved = "CRED-REMOVED" // GasResponseInfo as defined in wpactrl/wpa_ctrl.h:253 GasResponseInfo = "GAS-RESPONSE-INFO" // GasQueryStart as defined in wpactrl/wpa_ctrl.h:255 GasQueryStart = "GAS-QUERY-START" // GasQueryDone as defined in wpactrl/wpa_ctrl.h:257 GasQueryDone = "GAS-QUERY-DONE" // RxAnqp as defined in wpactrl/wpa_ctrl.h:262 RxAnqp = "RX-ANQP" // RxHs20Anqp as defined in wpactrl/wpa_ctrl.h:263 RxHs20Anqp = "RX-HS20-ANQP" // RxHs20AnqpIcon as defined in wpactrl/wpa_ctrl.h:264 RxHs20AnqpIcon = "RX-HS20-ANQP-ICON" // RxHs20Icon as defined in wpactrl/wpa_ctrl.h:265 RxHs20Icon = "RX-HS20-ICON" // RxMboAnqp as defined in wpactrl/wpa_ctrl.h:266 RxMboAnqp = "RX-MBO-ANQP" // Hs20SubscriptionRemediation as defined in wpactrl/wpa_ctrl.h:268 Hs20SubscriptionRemediation = "HS20-SUBSCRIPTION-REMEDIATION" // Hs20DeauthImminentNotice as defined in wpactrl/wpa_ctrl.h:269 Hs20DeauthImminentNotice = "HS20-DEAUTH-IMMINENT-NOTICE" // RrmEventNeighborRepRxed as defined in wpactrl/wpa_ctrl.h:274 RrmEventNeighborRepRxed = "RRM-NEIGHBOR-REP-RECEIVED" // RrmEventNeighborRepFailed as defined in wpactrl/wpa_ctrl.h:275 RrmEventNeighborRepFailed = "RRM-NEIGHBOR-REP-REQUEST-FAILED" // WpsEventPinNeeded as defined in wpactrl/wpa_ctrl.h:278 WpsEventPinNeeded = "WPS-PIN-NEEDED" // WpsEventNewApSettings as defined in wpactrl/wpa_ctrl.h:279 WpsEventNewApSettings = "WPS-NEW-AP-SETTINGS" // WpsEventRegSuccess as defined in wpactrl/wpa_ctrl.h:280 WpsEventRegSuccess = "WPS-REG-SUCCESS" // WpsEventApSetupLocked as defined in wpactrl/wpa_ctrl.h:281 WpsEventApSetupLocked = "WPS-AP-SETUP-LOCKED" // WpsEventApSetupUnlocked as defined in wpactrl/wpa_ctrl.h:282 WpsEventApSetupUnlocked = "WPS-AP-SETUP-UNLOCKED" // WpsEventApPinEnabled as defined in wpactrl/wpa_ctrl.h:283 WpsEventApPinEnabled = "WPS-AP-PIN-ENABLED" // WpsEventApPinDisabled as defined in wpactrl/wpa_ctrl.h:284 WpsEventApPinDisabled = "WPS-AP-PIN-DISABLED" // ApStaConnected as defined in wpactrl/wpa_ctrl.h:285 ApStaConnected = "AP-STA-CONNECTED" // ApStaDisconnected as defined in wpactrl/wpa_ctrl.h:286 ApStaDisconnected = "AP-STA-DISCONNECTED" // ApStaPossiblePskMismatch as defined in wpactrl/wpa_ctrl.h:287 ApStaPossiblePskMismatch = "AP-STA-POSSIBLE-PSK-MISMATCH" // ApStaPollOk as defined in wpactrl/wpa_ctrl.h:288 ApStaPollOk = "AP-STA-POLL-OK" // ApRejectedMaxSta as defined in wpactrl/wpa_ctrl.h:290 ApRejectedMaxSta = "AP-REJECTED-MAX-STA" // ApRejectedBlockedSta as defined in wpactrl/wpa_ctrl.h:291 ApRejectedBlockedSta = "AP-REJECTED-BLOCKED-STA" // ApEventEnabled as defined in wpactrl/wpa_ctrl.h:293 ApEventEnabled = "AP-ENABLED" // ApEventDisabled as defined in wpactrl/wpa_ctrl.h:294 ApEventDisabled = "AP-DISABLED" // InterfaceEnabled as defined in wpactrl/wpa_ctrl.h:296 InterfaceEnabled = "INTERFACE-ENABLED" // InterfaceDisabled as defined in wpactrl/wpa_ctrl.h:297 InterfaceDisabled = "INTERFACE-DISABLED" // AcsEventStarted as defined in wpactrl/wpa_ctrl.h:299 AcsEventStarted = "ACS-STARTED" // AcsEventCompleted as defined in wpactrl/wpa_ctrl.h:300 AcsEventCompleted = "ACS-COMPLETED" // AcsEventFailed as defined in wpactrl/wpa_ctrl.h:301 AcsEventFailed = "ACS-FAILED" // DfsEventRadarDetected as defined in wpactrl/wpa_ctrl.h:303 DfsEventRadarDetected = "DFS-RADAR-DETECTED" // DfsEventNewChannel as defined in wpactrl/wpa_ctrl.h:304 DfsEventNewChannel = "DFS-NEW-CHANNEL" // DfsEventCacStart as defined in wpactrl/wpa_ctrl.h:305 DfsEventCacStart = "DFS-CAC-START" // DfsEventCacCompleted as defined in wpactrl/wpa_ctrl.h:306 DfsEventCacCompleted = "DFS-CAC-COMPLETED" // DfsEventNopFinished as defined in wpactrl/wpa_ctrl.h:307 DfsEventNopFinished = "DFS-NOP-FINISHED" // DfsEventPreCacExpired as defined in wpactrl/wpa_ctrl.h:308 DfsEventPreCacExpired = "DFS-PRE-CAC-EXPIRED" // ApCsaFinished as defined in wpactrl/wpa_ctrl.h:310 ApCsaFinished = "AP-CSA-FINISHED" // P2pEventListenOffloadStop as defined in wpactrl/wpa_ctrl.h:312 P2pEventListenOffloadStop = "P2P-LISTEN-OFFLOAD-STOPPED" // P2pListenOffloadStopReason as defined in wpactrl/wpa_ctrl.h:313 P2pListenOffloadStopReason = "P2P-LISTEN-OFFLOAD-STOP-REASON" // BssTmResp as defined in wpactrl/wpa_ctrl.h:316 BssTmResp = "BSS-TM-RESP" // MboCellPreference as defined in wpactrl/wpa_ctrl.h:319 MboCellPreference = "MBO-CELL-PREFERENCE" // MboTransitionReason as defined in wpactrl/wpa_ctrl.h:322 MboTransitionReason = "MBO-TRANSITION-REASON" // PmksaCacheAdded as defined in wpactrl/wpa_ctrl.h:330 PmksaCacheAdded = "PMKSA-CACHE-ADDED" // PmksaCacheRemoved as defined in wpactrl/wpa_ctrl.h:332 PmksaCacheRemoved = "PMKSA-CACHE-REMOVED" // FilsHlpRx as defined in wpactrl/wpa_ctrl.h:336 FilsHlpRx = "FILS-HLP-RX" // BssMaskAll as defined in wpactrl/wpa_ctrl.h:340 BssMaskAll = 0xFFFDFFFF // CtrlIfacePort as defined in wpactrl/wpa_ctrl.h:541 CtrlIfacePort = 9877 // CtrlIfacePortLimit as defined in wpactrl/wpa_ctrl.h:542 CtrlIfacePortLimit = 50 // GlobalCtrlIfacePort as defined in wpactrl/wpa_ctrl.h:543 GlobalCtrlIfacePort = 9878 // GlobalCtrlIfacePortLimit as defined in wpactrl/wpa_ctrl.h:544 GlobalCtrlIfacePortLimit = 20 )
const CONN_MAX_LISTEN_BUFF = 3 * 1024 // Allow 3kB of buffer for listening to events
Variables ¶
var ( // ErrCmdTimeout is an error that happens when the command times out ErrCmdTimeout = errors.New("timeout while waiting for command response") // ErrScanFailed is an error that happens when scanning for wifi networks fails ErrScanFailed = errors.New("scan failed") ErrSSIDNotFound = errors.New("SSID not found") ErrAuthFailed = errors.New("auth failed") ErrDisconnected = errors.New("disconnected") ErrAssocRejected = errors.New("assocation rejected") ErrNoIdentifier = errors.New("no id_str field found") ErrInvalidEvent = errors.New("invalid event message") )
var Interfaces = InterfacesFromWPARunDir
Interfaces is a shortcut to the best known method for gathering the wireless interfaces from the current system
Functions ¶
func DecodeSsid ¶ added in v1.1.0
func DefaultInterface ¶ added in v1.1.0
DefaultInterface will return the default wireless interface, being the first one returned from the Interfaces method
func EncodeSsid ¶ added in v1.1.0
func InterfacesFromSysfs ¶ added in v1.1.0
func InterfacesFromSysfs() []string
InterfacesFromSysfs returns the wireless interfaces found in the SysFS (/sys/class/net)
func InterfacesFromWPARunDir ¶ added in v1.1.0
InterfacesFromWPARunDir returns the interfaces that WPA Supplicant is currently running on by checking the sockets available in the run directory (/var/run/wpa_supplicant) however a different run directory can be specified as the basePath parameter
func IsUseOfClosedNetworkConnectionError ¶
IsUseOfClosedNetworkConnectionError will return true if the error is about use of closed network connection
Types ¶
type AP ¶
type AP struct { ID int `json:"id"` RSSI int `json:"rssi"` BSSID net.HardwareAddr `json:"bssid"` SSID string `json:"ssid"` ESSID string `json:"essid"` Flags []string `json:"flags"` Signal int `json:"signal"` Frequency int `json:"frequency"` }
AP represents an access point seen by the scan networks command
type AdvancedNetwork ¶ added in v1.1.0
type AdvancedNetwork struct { Flags []string `json:"flags"` ID int `json:"id"` ScanSSID *int `json:"scan_ssid"` Disabled *int `json:"disabled"` Priority *int `json:"priority"` EapolFlags *int `json:"eapol_flags"` WEPTxKeyidx *int `json:"wep_tx_keyidx"` Mode *int `json:"mode"` Frequency *int `json:"frequency"` MACSecPolicy *int `json:"macsec_policy"` WpaPtkRekey *int `json:"wpa_ptk_rekey"` IDStr *string `json:"id_str"` Identity *string `json:"identity"` AnonymousIdentity *string `json:"anonymous_identity"` Password *string `json:"password"` CaCert *string `json:"ca_cert"` ClientCert *string `json:"client_cert"` PrivateKey *string `json:"private_key"` PrivateKeyPasswd *string `json:"private_key_passwd"` CaCert2 *string `json:"ca_cert2"` ClientCert2 *string `json:"client_cert2"` PrivateKey2 *string `json:"private_key2"` PrivateKeyPasswd2 *string `json:"private_key_passwd2"` Phase1 *string `json:"phase1"` Phase2 *string `json:"phase2"` Pin *string `json:"pin"` PCSC *string `json:"pcsc"` SSID *string `json:"ssid"` PSK *string `json:"psk"` PacFile *string `json:"pac_file"` WEPKey0 *string `json:"wep_key0"` WEPKey1 *string `json:"wep_key1"` WEPKey2 *string `json:"wep_key2"` Pairwise *rawString `json:"pairwise"` KeyMgmt *rawString `json:"key_mgmt"` BSSID *rawString `json:"bssid"` Proto *rawString `json:"proto"` EAP *rawString `json:"eap"` Group *rawString `json:"group"` AuthAlg *rawString `json:"auth_alg"` BSSIDWhitelist *rawString `json:"bssid_whitelist"` BSSIDBlacklist *rawString `json:"bssid_blacklist"` }
AdvancedNetwork represents a known network
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents a wireless client
func NewClientFromConn ¶
NewClientFromConn returns a new client from an already established connection
func (*Client) AddNetwork ¶
AddNetwork will add a new network
func (*Client) AddOrUpdateNetwork ¶
AddOrUpdateNetwork will add or, if the network has IDStr set, update it
func (*Client) DisableNetwork ¶
DisableNetwork will DisableNetwork
func (*Client) EnableNetwork ¶
EnableNetwork will EnableNetwork
func (*Client) GetNetworkAttr ¶ added in v1.1.0
GetNetworkAttr will get the given attribute of the given network
func (*Client) RemoveNetwork ¶
RemoveNetwork will RemoveNetwork
func (*Client) Subscribe ¶ added in v1.1.0
func (cl *Client) Subscribe(topics ...string) *Subscription
Subscribe will subscribe to certain events that happen in WPA
type Conn ¶
type Conn struct { Interface string // contains filtered or unexported fields }
Conn represents a connection to a WPA supplicant control interface
func (*Conn) SendCommand ¶
SendCommand will call SendCommandWithContext with a 2 second timeout
func (*Conn) SendCommandBool ¶
SendCommandBool will send a command and return an error if the response was not OK
func (*Conn) SendCommandInt ¶
SendCommandInt will send a command where the response is expected to be an integer
func (*Conn) SendCommandWithContext ¶
SendCommandWithContext will send the command with a context
func (*Conn) Subscribe ¶
func (c *Conn) Subscribe(eventNames ...string) *Subscription
Subscribe to one or more events and return the subscription
func (*Conn) WithLogOutput ¶ added in v1.1.0
WithLogOutput will set the log output of the connection. By default it is set to ioutil.Discard
type Event ¶
Event is an event that happens in the WPA supplicant
func NewEventFromMsg ¶
NewEventFromMsg will create a new event from the given message
type Network ¶
type Network struct { Known bool `json:"known"` ID int `json:"id"` IDStr string `json:"id_str"` Mode int `json:"mode"` KeyMgmt string `json:"key_mgmt"` SSID string `json:"ssid"` BSSID string `json:"bssid"` ScanSSID bool `json:"scan_ssid"` PSK string `json:"psk"` Flags []string `json:"flags"` }
Network represents a known network
func NewDisabledNetwork ¶
NewDisabledNetwork will create a new disabled network with the given parameters
func NewNamedNetwork ¶
NewNamedNetwork will create a new network with the given parameters
func NewNetwork ¶
NewNetwork will create a new network with the given parameters
func NewOpenNetwork ¶ added in v1.1.0
NewOpenNetwork will return a new open network
func (Network) Attributes ¶ added in v1.1.0
Attributes return the attributes of the network as a list of strings, with the ability to set the separator or indentation
func (Network) IsCurrent ¶ added in v1.1.0
IsCurrent will return true if the network is the currently active one
func (Network) IsDisabled ¶
IsDisabled will return true if the network is disabled
type Networks ¶ added in v1.1.0
type Networks []Network
Networks models a collection of networks
func (Networks) FindByIDStr ¶ added in v1.1.0
FindByIDStr will find a network by the given ID Str or return false
func (Networks) FindBySSID ¶ added in v1.1.0
FindBySSID will find a network by the given SSID or return false
func (Networks) FindCurrent ¶ added in v1.1.0
FindCurrent will find the current network or return false
type State ¶
type State struct { BSSID string `json:"bssid"` SSID string `json:"ssid"` ID string `json:"id"` Mode string `json:"mode"` KeyManagement string `json:"key_management"` WpaState string `json:"wpa_state"` IPAddress string `json:"ip_address"` Address string `json:"address"` UUID string `json:"uuid"` GroupCipher string `json:"group_cipher"` PairwiseCipher string `json:"pairwise_cipher"` }
State represents the current status of WPA
type Subscription ¶
type Subscription struct {
// contains filtered or unexported fields
}
Subscription represents a subscription to one or events
func (*Subscription) Next ¶
func (s *Subscription) Next() chan Event
Next will return a channel that returns events
func (*Subscription) Unsubscribe ¶ added in v1.1.0
func (s *Subscription) Unsubscribe()
Unsubscribe closes the channel and sets it to nil