summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2024-06-29 23:14:06 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2024-06-29 23:14:06 +0100
commit50185514c9063ba064920b35218a0f819c5d217c (patch)
tree31b2dbf2a1a1a81f1587c8ee590511852a6d8db3
parent056098b893a05b193afe80de9897f06d36b6c2b4 (diff)
downloadviewercount-50185514c9063ba064920b35218a0f819c5d217c.tar.gz
viewercount-50185514c9063ba064920b35218a0f819c5d217c.tar.bz2
viewercount-50185514c9063ba064920b35218a0f819c5d217c.zip
Guard against unsupported platforms
-rw-r--r--Cargo.toml4
-rw-r--r--src/main.rs18
2 files changed, 14 insertions, 8 deletions
diff --git a/Cargo.toml b/Cargo.toml
index f4c0d6a..a21aae2 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -20,7 +20,9 @@ nostr-relay-pool = "0.32.0"
nostr-sdk = { version = "0.32.0", default-features = false }
nostr-signer = { version = "0.32.0", default-features = false, features = ["nip46"] }
pretty_env_logger = "0.5.0"
-procfs = { version = "0.16.0", default-features = false }
serde = { version = "1.0.203", features = ["derive"] }
serde_json = "1.0.118"
tokio = { version = "1.38.0", features = ["rt-multi-thread", "signal", "time"] }
+
+[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
+procfs = { version = "0.16.0", default-features = false }
diff --git a/src/main.rs b/src/main.rs
index bcbd969..01657a6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -7,7 +7,7 @@ use std::{
time::Duration,
};
-use anyhow::{anyhow, Context, Result};
+use anyhow::{anyhow, bail, Context, Result};
use clap::{command, Parser};
use futures::future::join_all;
use human_panic::setup_panic;
@@ -23,14 +23,13 @@ use nostr_sdk::{
Client, Event, EventBuilder, Filter, Keys, Kind, Tag, TagKind, TagStandard, ToBech32,
};
use nostr_signer::{Nip46Signer, NostrSigner};
+#[cfg(any(target_os = "linux", target_os = "android"))]
use procfs::net::TcpState;
use serde::{Deserialize, Serialize};
use serde_json::{from_reader, to_string};
-use tokio::{
- signal::unix::{signal, SignalKind},
- spawn,
- time::sleep,
-};
+#[cfg(unix)]
+use tokio::signal::unix::{signal, SignalKind};
+use tokio::{spawn, time::sleep};
const DEFAULT_WATCH_INTERVAL_SEC: u64 = 60;
const NIP46_TIMEOUT_SEC: u64 = 60;
@@ -276,9 +275,13 @@ async fn create_filters(naddrs: &[String], client: &Client) -> Result<Vec<Filter
}
async fn get_count() -> Result<u64> {
- get_count_from_procfs().await
+ if cfg!(any(target_os = "linux", target_os = "android")) {
+ return get_count_from_procfs().await;
+ }
+ bail!("unsupported OS")
}
+#[cfg(any(target_os = "linux", target_os = "android"))]
async fn get_count_from_procfs() -> Result<u64> {
let mut tcp = get_https_connected_ips()?;
sleep(Duration::from_secs(TCP_CHECK_DELAY_SEC)).await;
@@ -288,6 +291,7 @@ async fn get_count_from_procfs() -> Result<u64> {
Ok(tcp.len() as u64)
}
+#[cfg(any(target_os = "linux", target_os = "android"))]
fn get_https_connected_ips() -> Result<Vec<IpAddr>> {
Ok(procfs::net::tcp()?
.into_iter()