diff --git a/process/src/SpinProcess.rs b/process/src/SpinProcess.rs index d27e9a4..2bef724 100644 --- a/process/src/SpinProcess.rs +++ b/process/src/SpinProcess.rs @@ -88,19 +88,28 @@ async fn main() { // Test map port output println!("{:#?}", p2prc_map_port_command("3000","test.akilan.io","")); - + let mut config = p2prc_read_config(); - + // Change server port config.server_port = "1233".parse().unwrap(); - + p2prc_write_config(config); println!("{:#?}", p2prc_read_config()); - - - - + + // p2prc_default_config(); + + // println!("{:#?}", p2prc_read_config()); + + println!("{:#?}", p2prc_get_specs("217.76.63.222:32921".to_string())); + + + + + + + // println!("{}", p2prc_map_port_command("3000", "0.0.0.0","")); // println!("Starting SpinProcess..."); diff --git a/process/src/p2prc.rs b/process/src/p2prc.rs index 0d2d59b..319f57d 100644 --- a/process/src/p2prc.rs +++ b/process/src/p2prc.rs @@ -1,5 +1,6 @@ use std::fs; use std::io::Error; +use std::net::IpAddr; use std::process::{Command, Output}; use serde::{Deserialize, Serialize}; use serde::de::DeserializeOwned; @@ -90,6 +91,20 @@ pub struct MapPort { pub entire_address: String, } +#[derive(Serialize, Deserialize, Debug)] +pub struct Specs { + #[serde(rename = "Hostname")] + pub hostname: String, + #[serde(rename = "Platform")] + pub platform: String, + #[serde(rename = "CPU")] + pub cpu: String, + #[serde(rename = "RAM")] + pub ram: i64, + #[serde(rename = "Disk")] + pub disk: i64, +} + // Runs p2prc with custom arguments called. // Function implemented as an identity function pub fn run_p2prc_command(arguments: &str) -> T @@ -103,7 +118,7 @@ where .arg(&command_str) .output() .expect("Failed to execute command"); - + let stdout = String::from_utf8_lossy(&output.stdout); serde_json::from_str(&stdout).expect("Failed to deserialize JSON output") } @@ -160,3 +175,17 @@ pub fn p2prc_write_config(config: Config) { fs::write(config.config_path, json).expect("Panic message: "); } +// Set default config (--dc command) +pub fn p2prc_default_config() { + let _: Option = run_p2prc_command(&*"--dc".to_string()); +} + +// Get hardware information of a remote server +pub fn p2prc_get_specs(ip_addr: String) -> Specs { + let command: String = format!("--specs {}", ip_addr); + let specs: Specs = run_p2prc_command(&*command); + specs +} + + +