make diesel optional in u_lib and cross-compile u_agent to windows

pull/1/head
plazmoid 2 years ago
parent c25fa780bf
commit 0a077af936
  1. 2
      Cargo.toml
  2. 2
      bin/u_server/Cargo.toml
  3. 0
      bin/u_server/src/models.rs
  4. 1
      bin/u_server/src/u_server.rs
  5. 5
      lib/u_lib/Cargo.toml
  6. 2
      lib/u_lib/src/lib.rs
  7. 49
      lib/u_lib/src/models/agent.rs
  8. 21
      lib/u_lib/src/models/jobs/assigned.rs
  9. 13
      lib/u_lib/src/models/jobs/meta.rs
  10. 21
      lib/u_lib/src/models/jobs/misc.rs
  11. 1
      lib/u_lib/src/models/mod.rs

@ -2,7 +2,7 @@
members = [ members = [
"bin/u_agent", "bin/u_agent",
"bin/u_panel", "bin/u_panel",
#"bin/u_run", "bin/u_run",
"bin/u_server", "bin/u_server",
"lib/u_lib", "lib/u_lib",
"integration" "integration"

@ -15,7 +15,7 @@ openssl = "*"
diesel = { version = "1.4.5", features = ["postgres", "uuid"] } diesel = { version = "1.4.5", features = ["postgres", "uuid"] }
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.9", features = ["macros"] } tokio = { version = "1.9", features = ["macros"] }
u_lib = { path = "../../lib/u_lib", version = "*" } u_lib = { path = "../../lib/u_lib", version = "*", features = ["server"] }
[dev-dependencies] [dev-dependencies]

@ -14,7 +14,6 @@ extern crate diesel;
mod db; mod db;
mod errors; mod errors;
mod handlers; mod handlers;
mod models;
use errors::{Error, SResult}; use errors::{Error, SResult};
use serde::{de::DeserializeOwned, Deserialize}; use serde::{de::DeserializeOwned, Deserialize};

@ -15,13 +15,13 @@ libc = "^0.2"
lazy_static = "1.4.0" lazy_static = "1.4.0"
futures = "0.3.5" futures = "0.3.5"
thiserror = "*" thiserror = "*"
diesel-derive-enum = { version = "1", features = ["postgres"] } diesel-derive-enum = { version = "1", features = ["postgres"], optional = true }
chrono = "0.4.19" chrono = "0.4.19"
strum = { version = "0.20", features = ["derive"] } strum = { version = "0.20", features = ["derive"] }
once_cell = "1.7.2" once_cell = "1.7.2"
shlex = "1.0.0" shlex = "1.0.0"
crossbeam = "0.8.1" 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" envy = "0.4.2"
serde_json = "1.0.81" serde_json = "1.0.81"
tracing-subscriber = { version = "0.3.14", features = ["env-filter"] } tracing-subscriber = { version = "0.3.14", features = ["env-filter"] }
@ -32,6 +32,7 @@ platforms = "3.0.1"
[features] [features]
panel = [] panel = []
server = ["dep:diesel", "dep:diesel-derive-enum"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies] [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
reqwest = { version = "0.11", features = ["json", "native-tls"] } reqwest = { version = "0.11", features = ["json", "native-tls"] }

@ -28,11 +28,13 @@ pub mod exports {
pub use errors::{UError, UResult}; pub use errors::{UError, UResult};
pub use exports::*; pub use exports::*;
#[cfg(feature = "server")]
pub mod schema_exports { pub mod schema_exports {
pub use crate::models::{Agentstate, Jobstate, Jobtype}; pub use crate::models::{Agentstate, Jobstate, Jobtype};
pub use diesel::sql_types::*; pub use diesel::sql_types::*;
} }
#[cfg(feature = "server")]
#[macro_use] #[macro_use]
extern crate diesel; extern crate diesel;

@ -1,4 +1,6 @@
#[cfg(feature = "server")]
use diesel::{AsChangeset, Identifiable, Insertable, Queryable}; use diesel::{AsChangeset, Identifiable, Insertable, Queryable};
#[cfg(feature = "server")]
use diesel_derive_enum::DbEnum; use diesel_derive_enum::DbEnum;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::{fmt, time::SystemTime}; use std::{fmt, time::SystemTime};
@ -6,19 +8,24 @@ use strum::Display;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
use crate::builder::NamedJobBuilder; use crate::builder::NamedJobBuilder;
#[cfg(feature = "server")]
use crate::models::schema::*;
use crate::{ use crate::{
config::get_self_uid, config::get_self_uid,
messaging::Reportable, messaging::Reportable,
models::schema::*,
unwrap_enum, unwrap_enum,
utils::{systime_to_string, Platform}, utils::{systime_to_string, Platform},
}; };
use uuid::Uuid; use uuid::Uuid;
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, DbEnum, Display)] #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Display)]
#[PgType = "AgentState"] #[cfg_attr(
#[DieselType = "Agentstate"] feature = "server",
derive(DbEnum),
PgType = "AgentState",
DieselType = "Agentstate"
)]
pub enum AgentState { pub enum AgentState {
New, New,
Active, Active,
@ -26,18 +33,12 @@ pub enum AgentState {
} }
//belongs_to //belongs_to
#[derive( #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
Clone, #[cfg_attr(
Debug, feature = "server",
Serialize, derive(Identifiable, Queryable, Insertable, AsChangeset),
Deserialize, table_name = "agents"
Identifiable,
Queryable,
Insertable,
AsChangeset,
PartialEq,
)] )]
#[table_name = "agents"]
pub struct Agent { pub struct Agent {
pub alias: Option<String>, pub alias: Option<String>,
pub hostname: String, pub hostname: String,
@ -130,13 +131,13 @@ impl Default for Agent {
} }
} }
#[cfg(test)] // #[cfg(test)]
mod tests { // mod tests {
use super::*; // use super::*;
#[tokio::test] // #[tokio::test]
async fn test_gather() { // async fn test_gather() {
let cli_info = Agent::gather().await; // let cli_info = Agent::gather().await;
assert_eq!(cli_info.alias, None) // assert_eq!(cli_info.alias, None)
} // }
} // }

@ -1,30 +1,27 @@
use super::JobState; use super::JobState;
#[cfg(feature = "server")]
use crate::models::schema::*;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
use crate::{cache::JobCache, utils::TempFile}; use crate::{cache::JobCache, utils::TempFile};
use crate::{ use crate::{
config::get_self_uid, config::get_self_uid,
errors::UError, errors::UError,
messaging::Reportable, messaging::Reportable,
models::schema::*,
utils::{systime_to_string, ProcOutput}, utils::{systime_to_string, ProcOutput},
}; };
#[cfg(feature = "server")]
use diesel::{Identifiable, Insertable, Queryable}; use diesel::{Identifiable, Insertable, Queryable};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::{fmt, time::SystemTime}; use std::{fmt, time::SystemTime};
use uuid::Uuid; use uuid::Uuid;
#[derive( #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
Serialize, #[cfg_attr(
Deserialize, feature = "server",
Clone, derive(Queryable, Identifiable, Insertable, AsChangeset),
Debug, table_name = "results"
Queryable,
Identifiable,
Insertable,
AsChangeset,
PartialEq,
)] )]
#[table_name = "results"]
pub struct AssignedJob { pub struct AssignedJob {
pub agent_id: Uuid, pub agent_id: Uuid,
pub alias: Option<String>, pub alias: Option<String>,

@ -1,6 +1,9 @@
use super::JobType; use super::JobType;
#[cfg(feature = "server")]
use crate::models::schema::*;
use crate::utils::Platform; 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 diesel::{Identifiable, Insertable, Queryable};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::path::PathBuf; use std::path::PathBuf;
@ -8,10 +11,12 @@ use std::str::from_utf8;
use std::{fmt, fs}; use std::{fmt, fs};
use uuid::Uuid; use uuid::Uuid;
#[derive( #[derive(Serialize, Deserialize, Clone, Debug)]
Serialize, Deserialize, Clone, Debug, Queryable, Identifiable, Insertable, AsChangeset, #[cfg_attr(
feature = "server",
derive(Queryable, Identifiable, Insertable, AsChangeset),
table_name = "jobs"
)] )]
#[table_name = "jobs"]
pub struct JobMeta { pub struct JobMeta {
pub alias: Option<String>, pub alias: Option<String>,
/// string like `bash -c {} -a 1 --arg2`, /// string like `bash -c {} -a 1 --arg2`,

@ -1,3 +1,4 @@
#[cfg(feature = "server")]
use diesel_derive_enum::DbEnum; use diesel_derive_enum::DbEnum;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use strum::Display; use strum::Display;
@ -17,9 +18,13 @@ pub enum JobSchedule {
//Scheduled //Scheduled
} }
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, DbEnum, Display)] #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Display)]
#[PgType = "JobState"] #[cfg_attr(
#[DieselType = "Jobstate"] feature = "server",
derive(DbEnum),
PgType = "JobState",
DieselType = "Jobstate"
)]
pub enum JobState { pub enum JobState {
Queued, // server created a job, but client didn't get it yet Queued, // server created a job, but client didn't get it yet
//Pending, // client got a job, but not running yet //Pending, // client got a job, but not running yet
@ -27,9 +32,13 @@ pub enum JobState {
Finished, Finished,
} }
#[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq, DbEnum, Display)] #[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq, Display)]
#[PgType = "JobType"] #[cfg_attr(
#[DieselType = "Jobtype"] feature = "server",
derive(DbEnum),
PgType = "JobType",
DieselType = "Jobtype"
)]
pub enum JobType { pub enum JobType {
Manage, Manage,
#[default] #[default]

@ -1,5 +1,6 @@
mod agent; mod agent;
mod jobs; mod jobs;
#[cfg(feature = "server")]
pub mod schema; pub mod schema;
pub use crate::models::{agent::*, jobs::*}; pub use crate::models::{agent::*, jobs::*};

Loading…
Cancel
Save