2021-12-01 12:26:30 +00:00
|
|
|
use std::io;
|
|
|
|
use std::num::ParseIntError;
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
use io::Error as IoError;
|
2021-11-30 11:48:16 +00:00
|
|
|
use jsonrpc_core::{types::error::Error as JsonRpcError, ErrorCode};
|
2021-08-06 17:58:40 +00:00
|
|
|
use probes::ProbeError;
|
2021-12-01 12:26:30 +00:00
|
|
|
use regex::Error as RegexError;
|
|
|
|
use serde_json::Error as SerdeError;
|
|
|
|
use wpactrl::WpaError;
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-11-30 11:48:16 +00:00
|
|
|
#[derive(Debug)]
|
2021-08-06 17:58:40 +00:00
|
|
|
pub enum NetworkError {
|
2021-12-01 12:26:30 +00:00
|
|
|
Add { ssid: String },
|
|
|
|
|
|
|
|
NoState { iface: String, source: IoError },
|
|
|
|
|
|
|
|
Disable { id: String, iface: String },
|
|
|
|
|
|
|
|
Disconnect { iface: String },
|
|
|
|
|
|
|
|
GenWpaPassphrase { ssid: String, source: IoError },
|
|
|
|
|
|
|
|
GenWpaPassphraseWarning { ssid: String, err_msg: String },
|
|
|
|
|
|
|
|
Id { ssid: String, iface: String },
|
|
|
|
|
|
|
|
NoIp { iface: String, source: IoError },
|
|
|
|
|
|
|
|
Rssi { iface: String },
|
|
|
|
|
|
|
|
RssiPercent { iface: String },
|
|
|
|
|
|
|
|
Ssid { iface: String },
|
|
|
|
|
|
|
|
State { iface: String },
|
|
|
|
|
|
|
|
Status { iface: String },
|
|
|
|
|
|
|
|
Traffic { iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
|
|
|
SavedNetworks,
|
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
AvailableNetworks { iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-11-30 11:48:16 +00:00
|
|
|
MissingParams(JsonRpcError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Modify { id: String, iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Ip { iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
ParseInt(ParseIntError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
NoTraffic { iface: String, source: ProbeError },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Reassociate { iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
|
|
|
Reconfigure,
|
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Reconnect { iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Regex(RegexError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Delete { id: String, iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
WlanState(IoError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
WlanOperstate(IoError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
|
|
|
Save,
|
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
Connect { id: String, iface: String },
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
StartAp0(IoError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
StartWlan0(IoError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-11-30 11:48:16 +00:00
|
|
|
SerdeSerialize(SerdeError),
|
2021-08-06 17:58:40 +00:00
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
WpaCtrl(WpaError),
|
2021-11-30 11:48:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
impl std::error::Error for NetworkError {
|
|
|
|
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
|
|
|
|
match *self {
|
|
|
|
NetworkError::Add { .. } => None,
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::NoState { ref source, .. } => Some(source),
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Disable { .. } => None,
|
|
|
|
NetworkError::Disconnect { .. } => None,
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::GenWpaPassphrase { ref source, .. } => Some(source),
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::GenWpaPassphraseWarning { .. } => None,
|
|
|
|
NetworkError::Id { .. } => None,
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::NoIp { ref source, .. } => Some(source),
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Rssi { .. } => None,
|
|
|
|
NetworkError::RssiPercent { .. } => None,
|
|
|
|
NetworkError::Ssid { .. } => None,
|
|
|
|
NetworkError::State { .. } => None,
|
|
|
|
NetworkError::Status { .. } => None,
|
|
|
|
NetworkError::Traffic { .. } => None,
|
|
|
|
NetworkError::SavedNetworks => None,
|
|
|
|
NetworkError::AvailableNetworks { .. } => None,
|
|
|
|
NetworkError::MissingParams(ref source) => Some(source),
|
|
|
|
NetworkError::Modify { .. } => None,
|
|
|
|
NetworkError::Ip { .. } => None,
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::ParseInt(ref source) => Some(source),
|
|
|
|
NetworkError::NoTraffic { ref source, .. } => Some(source),
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Reassociate { .. } => None,
|
|
|
|
NetworkError::Reconfigure { .. } => None,
|
|
|
|
NetworkError::Reconnect { .. } => None,
|
|
|
|
NetworkError::Regex(ref source) => Some(source),
|
|
|
|
NetworkError::Delete { .. } => None,
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::WlanState(ref source) => Some(source),
|
|
|
|
NetworkError::WlanOperstate(ref source) => Some(source),
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Save => None,
|
|
|
|
NetworkError::Connect { .. } => None,
|
|
|
|
NetworkError::StartWlan0(ref source) => Some(source),
|
|
|
|
NetworkError::StartAp0(ref source) => Some(source),
|
|
|
|
NetworkError::SerdeSerialize(ref source) => Some(source),
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::WpaCtrl(ref source) => Some(source),
|
2021-11-30 11:48:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl std::fmt::Display for NetworkError {
|
|
|
|
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
|
|
|
match *self {
|
|
|
|
NetworkError::Add { ref ssid } => {
|
|
|
|
write!(f, "Failed to add network for {}", ssid)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::NoState { ref iface, .. } => {
|
|
|
|
write!(f, "Failed to retrieve state for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Disable { ref id, ref iface } => {
|
2021-12-01 12:26:30 +00:00
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to disable network {} for interface: {}",
|
|
|
|
id, iface
|
|
|
|
)
|
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Disconnect { ref iface } => {
|
|
|
|
write!(f, "Failed to disconnect {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::GenWpaPassphrase { ref ssid, .. } => {
|
|
|
|
write!(f, "Failed to generate wpa passphrase for {}", ssid)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
|
|
|
NetworkError::GenWpaPassphraseWarning {
|
|
|
|
ref ssid,
|
|
|
|
ref err_msg,
|
|
|
|
} => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to generate wpa passphrase for {}: {}",
|
|
|
|
ssid, err_msg
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Id {
|
|
|
|
ref ssid,
|
|
|
|
ref iface,
|
|
|
|
} => {
|
|
|
|
write!(f, "No ID found for {} on interface: {}", ssid, iface)
|
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::NoIp { ref iface, .. } => {
|
|
|
|
write!(f, "Could not access IP address for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Rssi { ref iface } => {
|
|
|
|
write!(f, "Could not find RSSI for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::RssiPercent { ref iface } => {
|
2021-12-01 12:26:30 +00:00
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Could not find signal quality (%) for interface: {}",
|
|
|
|
iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Ssid { ref iface } => {
|
2021-11-30 11:48:16 +00:00
|
|
|
write!(f, "Could not find SSID for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::State { ref iface } => {
|
|
|
|
write!(f, "No state found for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::Status { ref iface } => {
|
|
|
|
write!(f, "No status found for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
|
|
|
NetworkError::Traffic { ref iface } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Could not find network traffice for interface: {}",
|
|
|
|
iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::SavedNetworks => {
|
|
|
|
write!(f, "No saved networks found for default interface")
|
|
|
|
}
|
|
|
|
NetworkError::AvailableNetworks { ref iface } => {
|
2021-11-30 11:48:16 +00:00
|
|
|
write!(f, "No networks found in range of interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
|
|
|
NetworkError::MissingParams(ref source) => {
|
2021-11-30 11:48:16 +00:00
|
|
|
write!(f, "Missing expected parameters: {}", source)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
|
|
|
NetworkError::Modify { ref id, ref iface } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to set new password for network {} on {}",
|
|
|
|
id, iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Ip { ref iface } => {
|
2021-11-30 11:48:16 +00:00
|
|
|
write!(f, "No IP found for interface: {}", iface)
|
2021-12-01 12:26:30 +00:00
|
|
|
}
|
|
|
|
NetworkError::ParseInt(_) => {
|
|
|
|
write!(f, "Failed to parse integer from string for RSSI value")
|
|
|
|
}
|
|
|
|
NetworkError::NoTraffic { ref iface, .. } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to retrieve network traffic measurement for {}",
|
|
|
|
iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Reassociate { ref iface } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to reassociate with WiFi network for interface: {}",
|
|
|
|
iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Reconfigure => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to force reread of wpa_supplicant configuration file"
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Reconnect { ref iface } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to reconnect with WiFi network for interface: {}",
|
|
|
|
iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::Regex(_) => write!(f, "Regex command failed"),
|
|
|
|
NetworkError::Delete { ref id, ref iface } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to delete network {} for interface: {}",
|
|
|
|
id, iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::WlanState(_) => write!(f, "Failed to retrieve state of wlan0 service"),
|
|
|
|
NetworkError::WlanOperstate(_) => {
|
|
|
|
write!(f, "Failed to retrieve connection state of wlan0 interface")
|
|
|
|
}
|
|
|
|
NetworkError::Save => write!(f, "Failed to save configuration changes to file"),
|
|
|
|
NetworkError::Connect { ref id, ref iface } => {
|
|
|
|
write!(
|
|
|
|
f,
|
|
|
|
"Failed to connect to network {} for interface: {}",
|
|
|
|
id, iface
|
|
|
|
)
|
|
|
|
}
|
|
|
|
NetworkError::StartWlan0(_) => write!(f, "Failed to start ap0 service"),
|
|
|
|
NetworkError::StartAp0(_) => write!(f, "Failed to start wlan0 service"),
|
|
|
|
NetworkError::SerdeSerialize(_) => write!(f, "JSON serialization failed"),
|
|
|
|
NetworkError::WpaCtrl(_) => write!(f, "WpaCtrl command failed"),
|
2021-11-30 11:48:16 +00:00
|
|
|
}
|
|
|
|
}
|
2021-08-06 17:58:40 +00:00
|
|
|
}
|
|
|
|
|
2021-12-01 12:26:30 +00:00
|
|
|
impl From<SerdeError> for NetworkError {
|
|
|
|
fn from(err: SerdeError) -> Self {
|
|
|
|
NetworkError::SerdeSerialize(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<WpaError> for NetworkError {
|
|
|
|
fn from(err: WpaError) -> Self {
|
|
|
|
NetworkError::WpaCtrl(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<ParseIntError> for NetworkError {
|
|
|
|
fn from(err: ParseIntError) -> Self {
|
|
|
|
NetworkError::ParseInt(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<RegexError> for NetworkError {
|
|
|
|
fn from(err: RegexError) -> Self {
|
|
|
|
NetworkError::Regex(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<NetworkError> for JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
fn from(err: NetworkError) -> Self {
|
|
|
|
match &err {
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Add { ssid } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32000),
|
|
|
|
message: format!("Failed to add network for {}", ssid),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::NoState { iface, source } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32022),
|
|
|
|
message: format!(
|
|
|
|
"Failed to retrieve interface state for {}: {}",
|
|
|
|
iface, source
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Disable { id, iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32029),
|
|
|
|
message: format!("Failed to disable network {} for {}", id, iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Disconnect { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32032),
|
|
|
|
message: format!("Failed to disconnect {}", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::GenWpaPassphrase { ssid, source } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32025),
|
|
|
|
message: format!("Failed to generate wpa passphrase for {}: {}", ssid, source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::GenWpaPassphraseWarning { ssid, err_msg } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32036),
|
|
|
|
message: format!(
|
|
|
|
"Failed to generate wpa passphrase for {}: {}",
|
|
|
|
ssid, err_msg
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Id { iface, ssid } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32026),
|
|
|
|
message: format!("No ID found for {} on interface {}", ssid, iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::NoIp { iface, source } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32001),
|
|
|
|
message: format!("Failed to retrieve IP address for {}: {}", iface, source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Rssi { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32002),
|
|
|
|
message: format!(
|
|
|
|
"Failed to retrieve RSSI for {}. Interface may not be connected",
|
|
|
|
iface
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::RssiPercent { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32034),
|
|
|
|
message: format!(
|
|
|
|
"Failed to retrieve signal quality (%) for {}. Interface may not be connected",
|
|
|
|
iface
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Ssid { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32003),
|
|
|
|
message: format!(
|
|
|
|
"Failed to retrieve SSID for {}. Interface may not be connected",
|
|
|
|
iface
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::State { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32023),
|
|
|
|
message: format!("No state found for {}. Interface may not exist", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Status { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32024),
|
|
|
|
message: format!("No status found for {}. Interface may not exist", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Traffic { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32004),
|
|
|
|
message: format!(
|
|
|
|
"No network traffic statistics found for {}. Interface may not exist",
|
|
|
|
iface
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::SavedNetworks => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32005),
|
|
|
|
message: "No saved networks found".to_string(),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::AvailableNetworks { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32006),
|
|
|
|
message: format!("No networks found in range of {}", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-11-30 11:48:16 +00:00
|
|
|
NetworkError::MissingParams(e) => e.clone(),
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Modify { id, iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32033),
|
|
|
|
message: format!("Failed to set new password for network {} on {}", id, iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Ip { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32007),
|
|
|
|
message: format!("No IP address found for {}", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::ParseInt(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32035),
|
|
|
|
message: format!(
|
|
|
|
"Failed to parse integer from string for RSSI value: {}",
|
|
|
|
source
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::NoTraffic { iface, source } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32015),
|
|
|
|
message: format!(
|
|
|
|
"Failed to retrieve network traffic statistics for {}: {}",
|
|
|
|
iface, source
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Reassociate { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32008),
|
|
|
|
message: format!("Failed to reassociate with WiFi network for {}", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Reconfigure => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32030),
|
|
|
|
message: "Failed to force reread of wpa_supplicant configuration file".to_string(),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Reconnect { iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32009),
|
|
|
|
message: format!("Failed to reconnect with WiFi network for {}", iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Regex(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32010),
|
|
|
|
message: format!("Regex command error: {}", source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Delete { id, iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32028),
|
|
|
|
message: format!("Failed to delete network {} for {}", id, iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::WlanState(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32011),
|
|
|
|
message: format!("Failed to retrieve state of wlan0 service: {}", source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::WlanOperstate(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32021),
|
|
|
|
message: format!(
|
|
|
|
"Failed to retrieve connection state of wlan0 interface: {}",
|
|
|
|
source
|
|
|
|
),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Save => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32031),
|
|
|
|
message: "Failed to save configuration changes to file".to_string(),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::Connect { id, iface } => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32027),
|
|
|
|
message: format!("Failed to connect to network {} for {}", id, iface),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::StartAp0(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32016),
|
|
|
|
message: format!("Failed to start ap0 service: {}", source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::StartWlan0(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32018),
|
|
|
|
message: format!("Failed to start wlan0 service: {}", source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::SerdeSerialize(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32012),
|
|
|
|
message: format!("JSON serialization failed: {}", source),
|
|
|
|
data: None,
|
|
|
|
},
|
2021-12-01 12:26:30 +00:00
|
|
|
NetworkError::WpaCtrl(source) => JsonRpcError {
|
2021-08-06 17:58:40 +00:00
|
|
|
code: ErrorCode::ServerError(-32013),
|
2021-12-01 12:26:30 +00:00
|
|
|
message: format!("WPA control interface failure: {}", source),
|
2021-08-06 17:58:40 +00:00
|
|
|
data: None,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|