Add route to download firmware on device
This commit is contained in:
parent
37844ae5fa
commit
aa262879f0
@ -25,6 +25,12 @@ pub fn save_update(
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the content of an OTA update
|
||||||
|
pub fn get_ota_update(platform: OTAPlatform, version: &semver::Version) -> anyhow::Result<Vec<u8>> {
|
||||||
|
let path = AppConfig::get().path_ota_update(platform, version);
|
||||||
|
Ok(std::fs::read(path)?)
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the list of OTA software updates for a platform
|
/// Get the list of OTA software updates for a platform
|
||||||
pub fn get_ota_updates_for_platform(platform: OTAPlatform) -> anyhow::Result<Vec<OTAUpdate>> {
|
pub fn get_ota_updates_for_platform(platform: OTAPlatform) -> anyhow::Result<Vec<OTAUpdate>> {
|
||||||
let ota_path = AppConfig::get().ota_platform_dir(platform);
|
let ota_path = AppConfig::get().ota_platform_dir(platform);
|
||||||
|
21
central_backend/src/server/devices_api/devices_ota.rs
Normal file
21
central_backend/src/server/devices_api/devices_ota.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
use crate::ota::ota_manager;
|
||||||
|
use crate::ota::ota_update::OTAPlatform;
|
||||||
|
use crate::server::custom_error::HttpResult;
|
||||||
|
use actix_web::{web, HttpResponse};
|
||||||
|
|
||||||
|
#[derive(serde::Deserialize)]
|
||||||
|
pub struct FirmwarePath {
|
||||||
|
platform: OTAPlatform,
|
||||||
|
version: semver::Version,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Download firmware update
|
||||||
|
pub async fn retrieve_firmware(path: web::Path<FirmwarePath>) -> HttpResult {
|
||||||
|
if !ota_manager::update_exists(path.platform, &path.version)? {
|
||||||
|
return Ok(HttpResponse::NotFound().json("The requested firmware was not found!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
let firmware = ota_manager::get_ota_update(path.platform, &path.version)?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Ok().body(firmware))
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
pub mod device_logging_controller;
|
pub mod device_logging_controller;
|
||||||
|
pub mod devices_ota;
|
||||||
pub mod jwt_parser;
|
pub mod jwt_parser;
|
||||||
pub mod mgmt_controller;
|
pub mod mgmt_controller;
|
||||||
pub mod utils_controller;
|
pub mod utils_controller;
|
||||||
|
@ -3,7 +3,9 @@ use crate::constants;
|
|||||||
use crate::crypto::pki;
|
use crate::crypto::pki;
|
||||||
use crate::energy::energy_actor::EnergyActorAddr;
|
use crate::energy::energy_actor::EnergyActorAddr;
|
||||||
use crate::server::auth_middleware::AuthChecker;
|
use crate::server::auth_middleware::AuthChecker;
|
||||||
use crate::server::devices_api::{device_logging_controller, mgmt_controller, utils_controller};
|
use crate::server::devices_api::{
|
||||||
|
device_logging_controller, devices_ota, mgmt_controller, utils_controller,
|
||||||
|
};
|
||||||
use crate::server::unsecure_server::*;
|
use crate::server::unsecure_server::*;
|
||||||
use crate::server::web_api::*;
|
use crate::server::web_api::*;
|
||||||
use crate::server::web_app_controller;
|
use crate::server::web_app_controller;
|
||||||
@ -251,6 +253,10 @@ pub async fn secure_server(energy_actor: EnergyActorAddr) -> anyhow::Result<()>
|
|||||||
"/devices_api/mgmt/sync",
|
"/devices_api/mgmt/sync",
|
||||||
web::post().to(mgmt_controller::sync_device),
|
web::post().to(mgmt_controller::sync_device),
|
||||||
)
|
)
|
||||||
|
.route(
|
||||||
|
"/devices_api/ota/{platform}/{version}",
|
||||||
|
web::get().to(devices_ota::retrieve_firmware),
|
||||||
|
)
|
||||||
.route(
|
.route(
|
||||||
"/devices_api/logging/record",
|
"/devices_api/logging/record",
|
||||||
web::post().to(device_logging_controller::report_log),
|
web::post().to(device_logging_controller::report_log),
|
||||||
|
Loading…
Reference in New Issue
Block a user