diff options
author | Starscouts <starscouts@equestria.dev> | 2024-07-18 11:57:31 +0200 |
---|---|---|
committer | Starscouts <starscouts@equestria.dev> | 2024-07-18 11:57:31 +0200 |
commit | 5f6cdcf1efe6b0bed2e806abfb0619e199f2b6f9 (patch) | |
tree | 7895126ea256f75f314c859c42ffa3332f3cd2c6 | |
parent | 772f9e1797f1e372d5f3af4d0c1f3ac2081004e6 (diff) | |
download | where-rs-5f6cdcf1efe6b0bed2e806abfb0619e199f2b6f9.tar.gz where-rs-5f6cdcf1efe6b0bed2e806abfb0619e199f2b6f9.tar.bz2 where-rs-5f6cdcf1efe6b0bed2e806abfb0619e199f2b6f9.zip |
Fixes to make the client work on Windows
-rw-r--r--[-rwxr-xr-x] | .envrc | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .github/workflows/build_where.yml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .gitignore | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .idea/.gitignore | 0 | ||||
-rw-r--r-- | .idea/deployment.xml | 42 | ||||
-rw-r--r--[-rwxr-xr-x] | .idea/discord.xml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .idea/inspectionProfiles/Project_Default.xml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .idea/modules.xml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .idea/vcs.xml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | .idea/where-rs.iml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | Cargo.lock | 14 | ||||
-rw-r--r--[-rwxr-xr-x] | Cargo.toml | 1 | ||||
-rw-r--r--[-rwxr-xr-x] | LICENSE | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | TODO | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | build.sh | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | flake.lock | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | flake.nix | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | shell.nix | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/Cargo.toml | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/default_config.toml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/src/args.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/src/config.rs | 31 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/src/main.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/src/servers.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | where-rs/src/ui.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whered/Cargo.toml | 2 | ||||
-rw-r--r--[-rwxr-xr-x] | whered/services/dev.equestria.whered.plist | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whered/services/whered | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whered/services/whered.service | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whered/src/args.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whered/src/main.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whrd/Cargo.toml | 6 | ||||
-rw-r--r--[-rwxr-xr-x] | whrd/src/error.rs | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | whrd/src/lib.rs | 9 | ||||
-rw-r--r--[-rwxr-xr-x] | whrd/src/parse.rs | 0 |
35 files changed, 91 insertions, 16 deletions
diff --git a/.github/workflows/build_where.yml b/.github/workflows/build_where.yml index 684fcda..684fcda 100755..100644 --- a/.github/workflows/build_where.yml +++ b/.github/workflows/build_where.yml diff --git a/.gitignore b/.gitignore index 6abfe1b..6abfe1b 100755..100644 --- a/.gitignore +++ b/.gitignore diff --git a/.idea/.gitignore b/.idea/.gitignore index 13566b8..13566b8 100755..100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore diff --git a/.idea/deployment.xml b/.idea/deployment.xml new file mode 100644 index 0000000..15c3750 --- /dev/null +++ b/.idea/deployment.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
+ <serverData>
+ <paths name="BridleOS">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ <paths name="dabssi">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ <paths name="hudgens">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ <paths name="watson">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ <paths name="watson-legacy">
+ <serverdata>
+ <mappings>
+ <mapping local="$PROJECT_DIR$" web="/" />
+ </mappings>
+ </serverdata>
+ </paths>
+ </serverData>
+ </component>
+</project>
\ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml index 3aef922..3aef922 100755..100644 --- a/.idea/discord.xml +++ b/.idea/discord.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 37308ce..37308ce 100755..100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml diff --git a/.idea/modules.xml b/.idea/modules.xml index d2b0049..d2b0049 100755..100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 35eb1dd..35eb1dd 100755..100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml diff --git a/.idea/where-rs.iml b/.idea/where-rs.iml index 9778462..9778462 100755..100644 --- a/.idea/where-rs.iml +++ b/.idea/where-rs.iml diff --git a/Cargo.lock b/Cargo.lock index a4029e2..f3c4d44 100755..100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -189,9 +189,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "coreutils_core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d8005352bd31280d624a3fb5f0dca74023256bab70d31c1556ea6a37e66f3a" +checksum = "fec76ea324887aa9a28bccb604b48b0ce21a981dd256921511aefba336bdbda4" dependencies = [ "bstr", "libc", @@ -542,9 +542,9 @@ dependencies = [ [[package]] name = "time" -version = "0.2.27" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +checksum = "bcdaeea317915d59b2b4cd3b5efcd156c309108664277793f5351700c02ce98b" dependencies = [ "const_fn", "libc", @@ -686,7 +686,7 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "where-rs" -version = "1.1.0" +version = "1.2.0" dependencies = [ "chrono", "clap", @@ -697,7 +697,7 @@ dependencies = [ [[package]] name = "whered" -version = "1.1.0" +version = "1.2.0" dependencies = [ "clap", "whrd", @@ -705,7 +705,7 @@ dependencies = [ [[package]] name = "whrd" -version = "1.1.0" +version = "1.2.0" dependencies = [ "coreutils_core", ] diff --git a/Cargo.toml b/Cargo.toml index a8b5c47..37f3431 100755..100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [workspace] +default-members = ["where-rs", "whrd"] members = ["where-rs", "whered", "whrd"] resolver = "2" diff --git a/flake.lock b/flake.lock index 5eac8ff..5eac8ff 100755..100644 --- a/flake.lock +++ b/flake.lock diff --git a/flake.nix b/flake.nix index 3780814..3780814 100755..100644 --- a/flake.nix +++ b/flake.nix diff --git a/shell.nix b/shell.nix index 3755099..3755099 100755..100644 --- a/shell.nix +++ b/shell.nix diff --git a/where-rs/Cargo.toml b/where-rs/Cargo.toml index 9f4aeaf..a15883a 100755..100644 --- a/where-rs/Cargo.toml +++ b/where-rs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "where-rs" -version = "1.1.0" +version = "1.2.0" edition = "2021" description = "A small Rust client for the WHRD/UDP protocol, to access a list of logged in users on multiple systems at once." authors = ["Starscouts", "ryze132"] diff --git a/where-rs/default_config.toml b/where-rs/default_config.toml index c0c65a9..c0c65a9 100755..100644 --- a/where-rs/default_config.toml +++ b/where-rs/default_config.toml diff --git a/where-rs/src/args.rs b/where-rs/src/args.rs index fd08f36..fd08f36 100755..100644 --- a/where-rs/src/args.rs +++ b/where-rs/src/args.rs diff --git a/where-rs/src/config.rs b/where-rs/src/config.rs index c45ba93..ae261d3 100755..100644 --- a/where-rs/src/config.rs +++ b/where-rs/src/config.rs @@ -47,7 +47,8 @@ impl Default for GlobalConfig { impl Config { fn get_config_locations() -> Vec<PathBuf> { - vec![ + #[cfg(unix)] + return vec![ { let mut path = PathBuf::new(); @@ -70,6 +71,34 @@ impl Config { path.push(CONFIG_FILENAME); path } + ]; + + #[cfg(not(unix))] + vec![ + { + let mut path = PathBuf::new(); + + if let Ok(home) = env::var("APPDATA") { + path.push(home); + } else if let Ok(home) = env::var("USERPROFILE") { + path.push(home); + path.push("AppData"); + path.push("Roaming") + } else { + path.push("\\"); + } + + path.push(CONFIG_FILENAME); + path + }, + { + let mut path = PathBuf::new(); + + path.push("C:\\"); + path.push("ProgramData"); + path.push(CONFIG_FILENAME); + path + } ] } diff --git a/where-rs/src/main.rs b/where-rs/src/main.rs index a63c16d..a63c16d 100755..100644 --- a/where-rs/src/main.rs +++ b/where-rs/src/main.rs diff --git a/where-rs/src/servers.rs b/where-rs/src/servers.rs index 9286cf3..9286cf3 100755..100644 --- a/where-rs/src/servers.rs +++ b/where-rs/src/servers.rs diff --git a/where-rs/src/ui.rs b/where-rs/src/ui.rs index 572d8ba..572d8ba 100755..100644 --- a/where-rs/src/ui.rs +++ b/where-rs/src/ui.rs diff --git a/whered/Cargo.toml b/whered/Cargo.toml index f29949c..3dbc1ab 100755..100644 --- a/whered/Cargo.toml +++ b/whered/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "whered" -version = "1.1.0" +version = "1.2.0" edition = "2021" description = "A small Rust server for the WHRD/UDP protocol, to access a list of logged in users on multiple systems at once." authors = ["Starscouts", "ryze132"] diff --git a/whered/services/dev.equestria.whered.plist b/whered/services/dev.equestria.whered.plist index 72fdb2c..72fdb2c 100755..100644 --- a/whered/services/dev.equestria.whered.plist +++ b/whered/services/dev.equestria.whered.plist diff --git a/whered/services/whered b/whered/services/whered index a38a950..a38a950 100755..100644 --- a/whered/services/whered +++ b/whered/services/whered diff --git a/whered/services/whered.service b/whered/services/whered.service index cee24eb..cee24eb 100755..100644 --- a/whered/services/whered.service +++ b/whered/services/whered.service diff --git a/whered/src/args.rs b/whered/src/args.rs index b3f93f0..b3f93f0 100755..100644 --- a/whered/src/args.rs +++ b/whered/src/args.rs diff --git a/whered/src/main.rs b/whered/src/main.rs index 9d2c808..9d2c808 100755..100644 --- a/whered/src/main.rs +++ b/whered/src/main.rs diff --git a/whrd/Cargo.toml b/whrd/Cargo.toml index d1602a8..7d797ea 100755..100644 --- a/whrd/Cargo.toml +++ b/whrd/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "whrd" -version = "1.1.0" +version = "1.2.0" edition = "2021" description = "A Rust library to work with the WHRD/UDP protocol, a protocol to access a list of logged in users on multiple systems at once." authors = ["Starscouts", "ryze132"] @@ -9,5 +9,5 @@ authors = ["Starscouts", "ryze132"] name = "whrd" crate-type = ["dylib", "lib"] -[dependencies] -coreutils_core = "0.1.1" +[target."cfg(unix)".dependencies] +coreutils_core = "0.1.2" diff --git a/whrd/src/error.rs b/whrd/src/error.rs index 931aefe..931aefe 100755..100644 --- a/whrd/src/error.rs +++ b/whrd/src/error.rs diff --git a/whrd/src/lib.rs b/whrd/src/lib.rs index fb45f74..50c9ef8 100755..100644 --- a/whrd/src/lib.rs +++ b/whrd/src/lib.rs @@ -1,5 +1,6 @@ use std::io::Cursor; -use std::path::PathBuf; + +#[cfg(unix)] use coreutils_core::os::utmpx::*; use crate::error::{WhereResult, EncodeDecodeResult, EncodeDecodeError}; @@ -34,6 +35,7 @@ pub struct SessionCollection { } impl SessionCollection { + #[cfg(unix)] pub fn fetch() -> Self { let inner: Vec<Session> = UtmpxSet::system() .into_iter() @@ -174,6 +176,7 @@ impl Session { } } +#[cfg(unix)] impl From<Utmpx> for Session { fn from(utmpx: Utmpx) -> Self { // BStr doesn't have a known size at compile time, so we can't use it instead of String @@ -198,8 +201,8 @@ impl From<Utmpx> for Session { // active when they are not. let mut path = PathBuf::from("/dev"); path.push(utmpx.device_name().to_string()); - let active = utmpx.entry_type() == UtmpxKind::UserProcess && path.exists(); - let login_time = utmpx.timeval().tv_sec; + let active = utmpx.entry_type() == UtmpxKind::UserProcess && utmpx.is_active(); + let login_time = utmpx.timeval().tv_sec as i64; Self { host: None, diff --git a/whrd/src/parse.rs b/whrd/src/parse.rs index 83542d8..83542d8 100755..100644 --- a/whrd/src/parse.rs +++ b/whrd/src/parse.rs |