2 Commits

Author SHA1 Message Date
c7b748f34a set manually bind address 2022-12-10 11:33:55 +01:00
f60033e02c use 0.0.0.0 bind address for web server 2022-12-09 18:40:14 +01:00
5 changed files with 21 additions and 58 deletions

View File

@ -18,13 +18,14 @@ rust-latest:
stage: build_backend
image: rust:latest
script:
- mkdir ./lib/webroot
- cp -r ./app/build/web/* ./lib/webroot
- cargo build -r --manifest-path=lib/Cargo.toml --features static
- mv ./lib/target/release/raid_manager ./lib/target/release/raid_manager_static
- cargo build -r --manifest-path=lib/Cargo.toml
- cargo test -r --manifest-path=lib/Cargo.toml
- cp ./lib/target/release/raid_manager* .
- cd lib
- mkdir ./webroot
- cp -r ../app/build/web/* ./webroot
- cargo build -r --features static
- mv ./target/release/raid_manager ./target/release/raid_manager_static
- cargo build -r
- cargo test -r
- cp ./target/release/raid_manager* ..
artifacts:
expire_in: 2 days
paths:

View File

@ -1,7 +1,7 @@
use std::io::Cursor;
use rust_embed::{EmbeddedFile, RustEmbed};
use rust_embed::RustEmbed;
use rocket::{Data, Request, Response, Route};
use rocket::http::{ContentType, Method, Status};
use rocket::http::{ContentType, Method};
use rocket::http::uri::{Segments};
use rocket::http::uri::fmt::Path;
use rocket::route::{Handler, Outcome};
@ -13,7 +13,8 @@ struct Asset;
#[cfg(feature = "static")]
#[derive(Clone)]
pub struct CustomHandler {}
pub struct CustomHandler {
}
#[cfg(feature = "static")]
impl Into<Vec<Route>> for CustomHandler {
@ -37,12 +38,8 @@ impl Handler for CustomHandler {
path
};
let file_content = <Asset as RustEmbed>::get(path.to_string_lossy().as_ref());
let file_content = match file_content {
None => return Outcome::Failure(Status::NotFound),
Some(c) => c
};
let file_content =
<Asset as RustEmbed>::get(path.to_string_lossy().as_ref()).unwrap();
let content_type: ContentType = path
.extension()
.map(|x| x.to_string_lossy())

View File

@ -7,6 +7,7 @@ mod embed;
use rocket::error::ErrorKind;
use rocket::serde::json::Json;
use rocket::config::{Config};
#[cfg(feature = "static")]
use crate::embed::CustomHandler;
use crate::parser::lsblk_parser::{Disk, parse_lsblk};
@ -26,7 +27,11 @@ fn get_disks() -> Json<Vec<Disk>> {
async fn main() -> Result<(), rocket::Error> {
println!("init server");
println!("access at: http://127.0.0.1:8000/");
let b = rocket::build();
let mut cfg = Config::default();
cfg.address = "0.0.0.0".parse().unwrap();
let b = rocket::custom(cfg);
let b = b.mount("/api", routes![get_raid_devices, get_disks]);
#[cfg(feature = "static")]
let b = b.mount("/", CustomHandler{});

View File

@ -1,3 +1,2 @@
pub mod mdstat_parser;
pub mod lsblk_parser;
mod smart_parser;

View File

@ -1,39 +0,0 @@
use std::process::Command;
use rocket::serde::json::serde_json;
use rocket::serde::{Deserialize};
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
struct DiskInfo {
model_family: String,
model_name: String,
serial_number: String,
rotation_rate: u32,
}
fn get_disk_info(diskpath: &str) -> Option<DiskInfo> {
let mut cmd = Command::new("smartctl");
cmd.arg("-i")
.arg("-json")
.arg(diskpath);
let output = match cmd.output() {
Ok(output) => output,
Err(err) => {
println!("error while getting smart info: {}", err);
return None;
}
};
let rawsmart = output.stdout;
let info: DiskInfo = match serde_json::from_slice(&rawsmart) {
Ok(info) => info,
Err(err) => {
println!("{}", err);
return None;
}
};
Some(info)
}