From 0a077af9363f0f9e2378949a6459ed490d9a1c0b Mon Sep 17 00:00:00 2001 From: plazmoid Date: Wed, 27 Jul 2022 00:34:25 +0500 Subject: [PATCH] make diesel optional in u_lib and cross-compile u_agent to windows --- Cargo.toml | 2 +- bin/u_server/Cargo.toml | 2 +- bin/u_server/src/models.rs | 0 bin/u_server/src/u_server.rs | 1 - lib/u_lib/Cargo.toml | 5 +-- lib/u_lib/src/lib.rs | 2 ++ lib/u_lib/src/models/agent.rs | 49 ++++++++++++++------------- lib/u_lib/src/models/jobs/assigned.rs | 21 +++++------- lib/u_lib/src/models/jobs/meta.rs | 13 ++++--- lib/u_lib/src/models/jobs/misc.rs | 21 ++++++++---- lib/u_lib/src/models/mod.rs | 1 + 11 files changed, 66 insertions(+), 51 deletions(-) delete mode 100644 bin/u_server/src/models.rs diff --git a/Cargo.toml b/Cargo.toml index 228808c..02c9d71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ members = [ "bin/u_agent", "bin/u_panel", - #"bin/u_run", + "bin/u_run", "bin/u_server", "lib/u_lib", "integration" diff --git a/bin/u_server/Cargo.toml b/bin/u_server/Cargo.toml index d2e5f75..5b07891 100644 --- a/bin/u_server/Cargo.toml +++ b/bin/u_server/Cargo.toml @@ -15,7 +15,7 @@ openssl = "*" diesel = { version = "1.4.5", features = ["postgres", "uuid"] } serde = { version = "1.0", features = ["derive"] } tokio = { version = "1.9", features = ["macros"] } -u_lib = { path = "../../lib/u_lib", version = "*" } +u_lib = { path = "../../lib/u_lib", version = "*", features = ["server"] } [dev-dependencies] diff --git a/bin/u_server/src/models.rs b/bin/u_server/src/models.rs deleted file mode 100644 index e69de29..0000000 diff --git a/bin/u_server/src/u_server.rs b/bin/u_server/src/u_server.rs index 9c6a2d7..d2e84d5 100644 --- a/bin/u_server/src/u_server.rs +++ b/bin/u_server/src/u_server.rs @@ -14,7 +14,6 @@ extern crate diesel; mod db; mod errors; mod handlers; -mod models; use errors::{Error, SResult}; use serde::{de::DeserializeOwned, Deserialize}; diff --git a/lib/u_lib/Cargo.toml b/lib/u_lib/Cargo.toml index 70644bb..63de9f6 100644 --- a/lib/u_lib/Cargo.toml +++ b/lib/u_lib/Cargo.toml @@ -15,13 +15,13 @@ libc = "^0.2" lazy_static = "1.4.0" futures = "0.3.5" thiserror = "*" -diesel-derive-enum = { version = "1", features = ["postgres"] } +diesel-derive-enum = { version = "1", features = ["postgres"], optional = true } chrono = "0.4.19" strum = { version = "0.20", features = ["derive"] } once_cell = "1.7.2" shlex = "1.0.0" crossbeam = "0.8.1" -diesel = { version = "1.4.5", features = ["postgres", "uuid"] } +diesel = { version = "1.4.5", features = ["postgres", "uuid"], optional = true } envy = "0.4.2" serde_json = "1.0.81" tracing-subscriber = { version = "0.3.14", features = ["env-filter"] } @@ -32,6 +32,7 @@ platforms = "3.0.1" [features] panel = [] +server = ["dep:diesel", "dep:diesel-derive-enum"] [target.'cfg(not(target_arch = "wasm32"))'.dependencies] reqwest = { version = "0.11", features = ["json", "native-tls"] } diff --git a/lib/u_lib/src/lib.rs b/lib/u_lib/src/lib.rs index 41383a4..b6a94f8 100644 --- a/lib/u_lib/src/lib.rs +++ b/lib/u_lib/src/lib.rs @@ -28,11 +28,13 @@ pub mod exports { pub use errors::{UError, UResult}; pub use exports::*; +#[cfg(feature = "server")] pub mod schema_exports { pub use crate::models::{Agentstate, Jobstate, Jobtype}; pub use diesel::sql_types::*; } +#[cfg(feature = "server")] #[macro_use] extern crate diesel; diff --git a/lib/u_lib/src/models/agent.rs b/lib/u_lib/src/models/agent.rs index 869be5e..71483ac 100644 --- a/lib/u_lib/src/models/agent.rs +++ b/lib/u_lib/src/models/agent.rs @@ -1,4 +1,6 @@ +#[cfg(feature = "server")] use diesel::{AsChangeset, Identifiable, Insertable, Queryable}; +#[cfg(feature = "server")] use diesel_derive_enum::DbEnum; use serde::{Deserialize, Serialize}; use std::{fmt, time::SystemTime}; @@ -6,19 +8,24 @@ use strum::Display; #[cfg(not(target_arch = "wasm32"))] use crate::builder::NamedJobBuilder; +#[cfg(feature = "server")] +use crate::models::schema::*; use crate::{ config::get_self_uid, messaging::Reportable, - models::schema::*, unwrap_enum, utils::{systime_to_string, Platform}, }; use uuid::Uuid; -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, DbEnum, Display)] -#[PgType = "AgentState"] -#[DieselType = "Agentstate"] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Display)] +#[cfg_attr( + feature = "server", + derive(DbEnum), + PgType = "AgentState", + DieselType = "Agentstate" +)] pub enum AgentState { New, Active, @@ -26,18 +33,12 @@ pub enum AgentState { } //belongs_to -#[derive( - Clone, - Debug, - Serialize, - Deserialize, - Identifiable, - Queryable, - Insertable, - AsChangeset, - PartialEq, +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[cfg_attr( + feature = "server", + derive(Identifiable, Queryable, Insertable, AsChangeset), + table_name = "agents" )] -#[table_name = "agents"] pub struct Agent { pub alias: Option, pub hostname: String, @@ -130,13 +131,13 @@ impl Default for Agent { } } -#[cfg(test)] -mod tests { - use super::*; +// #[cfg(test)] +// mod tests { +// use super::*; - #[tokio::test] - async fn test_gather() { - let cli_info = Agent::gather().await; - assert_eq!(cli_info.alias, None) - } -} +// #[tokio::test] +// async fn test_gather() { +// let cli_info = Agent::gather().await; +// assert_eq!(cli_info.alias, None) +// } +// } diff --git a/lib/u_lib/src/models/jobs/assigned.rs b/lib/u_lib/src/models/jobs/assigned.rs index 2854e0f..1122031 100644 --- a/lib/u_lib/src/models/jobs/assigned.rs +++ b/lib/u_lib/src/models/jobs/assigned.rs @@ -1,30 +1,27 @@ use super::JobState; +#[cfg(feature = "server")] +use crate::models::schema::*; #[cfg(not(target_arch = "wasm32"))] use crate::{cache::JobCache, utils::TempFile}; use crate::{ config::get_self_uid, errors::UError, messaging::Reportable, - models::schema::*, utils::{systime_to_string, ProcOutput}, }; +#[cfg(feature = "server")] use diesel::{Identifiable, Insertable, Queryable}; use serde::{Deserialize, Serialize}; use std::{fmt, time::SystemTime}; use uuid::Uuid; -#[derive( - Serialize, - Deserialize, - Clone, - Debug, - Queryable, - Identifiable, - Insertable, - AsChangeset, - PartialEq, +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[cfg_attr( + feature = "server", + derive(Queryable, Identifiable, Insertable, AsChangeset), + table_name = "results" )] -#[table_name = "results"] + pub struct AssignedJob { pub agent_id: Uuid, pub alias: Option, diff --git a/lib/u_lib/src/models/jobs/meta.rs b/lib/u_lib/src/models/jobs/meta.rs index ccb88d5..2b76941 100644 --- a/lib/u_lib/src/models/jobs/meta.rs +++ b/lib/u_lib/src/models/jobs/meta.rs @@ -1,6 +1,9 @@ use super::JobType; +#[cfg(feature = "server")] +use crate::models::schema::*; use crate::utils::Platform; -use crate::{models::schema::*, utils::Stripped, UError, UResult}; +use crate::{utils::Stripped, UError, UResult}; +#[cfg(feature = "server")] use diesel::{Identifiable, Insertable, Queryable}; use serde::{Deserialize, Serialize}; use std::path::PathBuf; @@ -8,10 +11,12 @@ use std::str::from_utf8; use std::{fmt, fs}; use uuid::Uuid; -#[derive( - Serialize, Deserialize, Clone, Debug, Queryable, Identifiable, Insertable, AsChangeset, +#[derive(Serialize, Deserialize, Clone, Debug)] +#[cfg_attr( + feature = "server", + derive(Queryable, Identifiable, Insertable, AsChangeset), + table_name = "jobs" )] -#[table_name = "jobs"] pub struct JobMeta { pub alias: Option, /// string like `bash -c {} -a 1 --arg2`, diff --git a/lib/u_lib/src/models/jobs/misc.rs b/lib/u_lib/src/models/jobs/misc.rs index 2eb4ce4..df91f0d 100644 --- a/lib/u_lib/src/models/jobs/misc.rs +++ b/lib/u_lib/src/models/jobs/misc.rs @@ -1,3 +1,4 @@ +#[cfg(feature = "server")] use diesel_derive_enum::DbEnum; use serde::{Deserialize, Serialize}; use strum::Display; @@ -17,9 +18,13 @@ pub enum JobSchedule { //Scheduled } -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, DbEnum, Display)] -#[PgType = "JobState"] -#[DieselType = "Jobstate"] +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Display)] +#[cfg_attr( + feature = "server", + derive(DbEnum), + PgType = "JobState", + DieselType = "Jobstate" +)] pub enum JobState { Queued, // server created a job, but client didn't get it yet //Pending, // client got a job, but not running yet @@ -27,9 +32,13 @@ pub enum JobState { Finished, } -#[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq, DbEnum, Display)] -#[PgType = "JobType"] -#[DieselType = "Jobtype"] +#[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq, Display)] +#[cfg_attr( + feature = "server", + derive(DbEnum), + PgType = "JobType", + DieselType = "Jobtype" +)] pub enum JobType { Manage, #[default] diff --git a/lib/u_lib/src/models/mod.rs b/lib/u_lib/src/models/mod.rs index b0b30a7..bb6e50e 100644 --- a/lib/u_lib/src/models/mod.rs +++ b/lib/u_lib/src/models/mod.rs @@ -1,5 +1,6 @@ mod agent; mod jobs; +#[cfg(feature = "server")] pub mod schema; pub use crate::models::{agent::*, jobs::*};