mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-06-22 03:58:50 -07:00
Add warning about default routes
I hope this puts a lot of questions about SIM cards to rest. I found that the warning also sometimes applies to "dead" SIM cards which have expired a long time ago. Run `busybox ip route` to determine whether the device has an active SIM card. That command has been manually tested on Moxee, Orbic and TP-Link. It's prefixed with `busybox` because that makes it more likely it would work on UZ801, though it wasn't tested there. If the command invocation fails, the alert is suppressed and a warning is logged. The command is only run once on pageload. It could've been part of the status endpoint, but then the UI would poll it way too often.
This commit is contained in:
committed by
Will Greenberg
parent
2bd6efa503
commit
9ae1563286
+2
-1
@@ -25,7 +25,7 @@ use crate::server::{
|
||||
ServerState, debug_set_display_state, get_config, get_qmdl, get_zip, serve_static, set_config,
|
||||
test_notification,
|
||||
};
|
||||
use crate::stats::{get_qmdl_manifest, get_system_stats};
|
||||
use crate::stats::{get_qmdl_manifest, get_route_status, get_system_stats};
|
||||
|
||||
use analysis::{
|
||||
AnalysisCtrlMessage, AnalysisStatus, get_analysis_status, run_analysis_thread, start_analysis,
|
||||
@@ -58,6 +58,7 @@ fn get_router() -> AppRouter {
|
||||
.route("/api/qmdl/{name}", get(get_qmdl))
|
||||
.route("/api/zip/{name}", get(get_zip))
|
||||
.route("/api/system-stats", get(get_system_stats))
|
||||
.route("/api/route-status", get(get_route_status))
|
||||
.route("/api/qmdl-manifest", get(get_qmdl_manifest))
|
||||
.route("/api/log", get(get_log))
|
||||
.route("/api/start-recording", post(start_recording))
|
||||
|
||||
@@ -174,3 +174,25 @@ pub async fn get_log() -> Result<String, (StatusCode, String)> {
|
||||
.await
|
||||
.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
pub struct RouteStatus {
|
||||
pub has_default_route: bool,
|
||||
}
|
||||
|
||||
pub async fn get_route_status() -> Json<RouteStatus> {
|
||||
let mut cmd = Command::new("busybox");
|
||||
cmd.args(["ip", "route"]);
|
||||
|
||||
let has_default_route = match get_cmd_output(cmd).await {
|
||||
Ok(output) => output.lines().any(|line| line.starts_with("default ")),
|
||||
Err(err) => {
|
||||
log::warn!("Failed to check default route: {err}");
|
||||
// More likely than not, this is a portability issue. The logic hasn't been fully
|
||||
// tested on all devices. We shouldn't scare users unnecessarily.
|
||||
true
|
||||
}
|
||||
};
|
||||
|
||||
Json(RouteStatus { has_default_route })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user