From 6be108ee642efa198efc9be95577588138378c36 Mon Sep 17 00:00:00 2001 From: 4cuck <40539855+4cuck@users.noreply.github.com> Date: Mon, 14 Aug 2023 01:03:10 +0200 Subject: [PATCH] mark bad hosts --- .env.example | 4 +++- entities/src/state/mod.rs | 2 ++ entities/src/state/scanner.rs | 7 +++++-- scanner/src/cache_update.rs | 3 +++ scanner/src/lib.rs | 2 +- server/templates/instances.html.j2 | 9 ++++++++- src/main.rs | 20 +++++++++++++------- 7 files changed, 35 insertions(+), 12 deletions(-) diff --git a/.env.example b/.env.example index 0700257..afb1e04 100644 --- a/.env.example +++ b/.env.example @@ -22,7 +22,9 @@ PROFILE_CONTENT='jack.?\(@jack\)' RSS_CONTENT=', /// Referer to use - pub referer: String, + pub referrer: String, /// Duration to average the ping/response times over pub ping_range: chrono::Duration, /// don't emit errors for hosts which are already listed as down @@ -30,6 +30,8 @@ pub struct Config { pub source_git_url: String, /// Git branch to fetch the current commit from pub source_git_branch: String, + /// Hosts known to be bad (ip block), domain per entry + pub bad_hosts: Vec, } impl Config { @@ -44,11 +46,12 @@ impl Config { profile_content: String::from(r#"jack.?\(@jack\)"#), rss_content: String::from(r#" {{host.domain}} - {% if host.healthy -%} ✅ {%- else -%} ❌ {%- endif -%} + + {%- if host.is_bad_host -%} +
❓
+ {%- elif host.healthy -%} + ✅ + {%- else -%} + ❌ + {%- endif -%} {%- if host.recent_pings|length > 0 -%} {%- set height = 57 -%} diff --git a/src/main.rs b/src/main.rs index 9135bad..07fb0e5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -105,12 +105,9 @@ fn read_scanner_cfg() -> miette::Result { let about_path = require_env_str("ABOUT_PATH")?; let profile_content = require_env_str("PROFILE_CONTENT")?; let rss_content = require_env_str("RSS_CONTENT")?; - let additional_hosts: Vec = require_env_str("ADDITIONAL_HOSTS")? - .trim() - .split(",") - .map(|v| v.trim().to_owned()) - .collect(); - let referer = require_env_str("REFERER")?; + let additional_hosts: Vec = require_env_vec_str("ADDITIONAL_HOSTS")?; + let bad_hosts: Vec = require_env_vec_str("BAD_HOSTS")?; + let referrer = require_env_str("REFERER")?; let auto_mute = require_env_str("AUTO_MUTE")? == "true"; let source_git_branch = require_env_str("ORIGIN_SOURCE_GIT_BRANCH")?; let source_git_url = require_env_str("ORIGIN_SOURCE_GIT_URL")?; @@ -125,11 +122,12 @@ fn read_scanner_cfg() -> miette::Result { profile_content, rss_content, additional_hosts, - referer, + referrer, ping_range: chrono::Duration::hours(ping_range as _), auto_mute, source_git_branch, source_git_url, + bad_hosts, })) } @@ -157,6 +155,14 @@ fn read_server_config(instance_ping_interval: usize) -> miette::Result miette::Result> { + Ok(require_env_str(name)? + .trim() + .split(",") + .map(|v| v.trim().to_owned()) + .collect()) +} + fn require_env_str(name: &str) -> miette::Result { var(name).map_err(|v| miette::miette!("missing `{}` in environment: {:?}", name, v)) }