diff --git a/.env.example b/.env.example index 7744668..77b8b8c 100644 --- a/.env.example +++ b/.env.example @@ -55,4 +55,6 @@ SESSION_DB_URI="sqlite:./sessions.db?mode=rwc" # interval in seconds for gathering .health endpoint data STATS_INTERVAL_S=900 # Folder to use for git operations during nitter version checks -GIT_SCRATCH_DIR="." \ No newline at end of file +GIT_SCRATCH_DIR="." +# Disable github fetching of latest commit +DISABLE_GITHUB_FETCH=false diff --git a/scanner/src/lib.rs b/scanner/src/lib.rs index f237632..174e584 100644 --- a/scanner/src/lib.rs +++ b/scanner/src/lib.rs @@ -12,7 +12,8 @@ use miette::{Context, IntoDiagnostic}; use profile_parser::ProfileParser; use regex::{Regex, RegexBuilder}; use reqwest::{ - Client, ClientBuilder, header::{HeaderMap, HeaderValue}, retry + header::{HeaderMap, HeaderValue}, + Client, ClientBuilder, }; use sea_orm::{ConnectionTrait, DatabaseConnection, DbBackend, FromQueryResult, Statement}; use thiserror::Error; @@ -129,8 +130,9 @@ pub async fn run_scanner( config: ScannerConfig, app_state: AppState, disable_health_checks: bool, + disable_github_fetch: bool, ) -> miette::Result<()> { - let scanner = Scanner::new(db, config, app_state) + let scanner = Scanner::new(db, config, app_state, disable_github_fetch) .await .wrap_err("Initializing scanner!")?; scanner.schedule_cleanup().unwrap(); @@ -192,11 +194,13 @@ impl Scanner { db: DatabaseConnection, config: ScannerConfig, app_state: AppState, + disable_github_fetch: bool, ) -> miette::Result { let mut builder_regex_rss = RegexBuilder::new(&config.rss_content); builder_regex_rss.case_insensitive(true); - let version_checker = Mutex::new(VersionCheck::new(config.clone()).into_diagnostic()?); + let version_checker = + Mutex::new(VersionCheck::new(config.clone(), disable_github_fetch).into_diagnostic()?); let http_client = Self::client_builder(&config); let client_ipv4 = Scanner::client_builder(&config) diff --git a/scanner/src/version_check.rs b/scanner/src/version_check.rs index 3027d0f..87db867 100644 --- a/scanner/src/version_check.rs +++ b/scanner/src/version_check.rs @@ -4,6 +4,7 @@ use std::{collections::HashMap, path::Path}; use entities::state::{scanner::ScannerConfig, CommitInfo}; use git2::Repository; +use tracing::warn; use crate::Result; @@ -11,7 +12,6 @@ pub struct VersionCheck { config: ScannerConfig, commit_cache: HashMap, current_epoch: u8, - // TODO: this is ugly and unnecessary repository: Repository, } @@ -22,10 +22,10 @@ struct CommitCacheValue { } impl VersionCheck { - pub(crate) fn new(config: ScannerConfig) -> Result { - let temp_dir = Path::new(&config.git_scratch_folder).join(format!("nitter_version_clone")); - tracing::debug!(git_check_dir=?temp_dir); - let repository = Repository::init(temp_dir)?; + pub(crate) fn new(config: ScannerConfig, disable_health_checks: bool) -> Result { + let clone_dir = Path::new(&config.git_scratch_folder).join(format!("nitter_version_clone")); + tracing::debug!(git_check_dir=?clone_dir); + let repository = Repository::init(clone_dir)?; let mut checker = VersionCheck { config, commit_cache: Default::default(), @@ -33,7 +33,11 @@ impl VersionCheck { repository, }; - checker.update_remote()?; + if !disable_health_checks { + checker.update_remote()?; + } else { + warn!("Version fetching disabled, attempting to use existing dir."); + } Ok(checker) } /// Increases the epoch, invalidating unused cache entries and removes them. @@ -148,7 +152,7 @@ mod test { #[test] fn test_git_commit_exists() { - let mut checker = VersionCheck::new(Config::test_defaults()).unwrap(); + let mut checker = VersionCheck::new(Config::test_defaults(), false).unwrap(); assert_eq!( CommitInfo::Outdated, checker diff --git a/src/main.rs b/src/main.rs index 93695da..95b0c8d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -84,12 +84,14 @@ async fn _main() -> miette::Result<()> { let cache = entities::state::new(); let disable_health_checks = require_env_str("DISABLE_HEALTH_CHECKS")? == "true"; + let disable_github_fetch = require_env_str("DISABLE_GITHUB_FETCH")? == "true"; scanner::run_scanner( pool.clone(), scanner_config.clone(), cache.clone(), disable_health_checks, + disable_github_fetch, ) .await .wrap_err("Crash starting background scanner")?;