From 1f4ad732fd56afb549570d8d7134a7cd6f708e98 Mon Sep 17 00:00:00 2001 From: Geometrically <18202329+Geometrically@users.noreply.github.com> Date: Sat, 5 Aug 2023 12:07:38 -0700 Subject: [PATCH] fix analytics route not working (#668) --- src/routes/{v2 => }/analytics.rs | 27 --------------------------- src/routes/mod.rs | 27 +++++++++++++++++++++++++++ src/routes/v2/admin.rs | 4 ++-- src/routes/v2/mod.rs | 3 --- 4 files changed, 29 insertions(+), 32 deletions(-) rename src/routes/{v2 => }/analytics.rs (86%) diff --git a/src/routes/v2/analytics.rs b/src/routes/analytics.rs similarity index 86% rename from src/routes/v2/analytics.rs rename to src/routes/analytics.rs index 09bf112d8..d44ff7011 100644 --- a/src/routes/v2/analytics.rs +++ b/src/routes/analytics.rs @@ -6,7 +6,6 @@ use crate::queue::session::AuthQueue; use crate::routes::ApiError; use crate::util::env::parse_strings_from_var; use crate::AnalyticsQueue; -use actix_cors::Cors; use actix_web::{post, web}; use actix_web::{HttpRequest, HttpResponse}; use chrono::Utc; @@ -18,32 +17,6 @@ use std::sync::Arc; use url::Url; use uuid::Uuid; -pub fn config(cfg: &mut web::ServiceConfig) { - cfg.service( - web::scope("v2/analytics") - .wrap( - Cors::default() - .allowed_origin_fn(|origin, _req_head| { - let allowed_origins = - parse_strings_from_var("ANALYTICS_ALLOWED_ORIGINS").unwrap_or_default(); - - allowed_origins.contains(&"*".to_string()) - || allowed_origins - .contains(&origin.to_str().unwrap_or_default().to_string()) - }) - .allowed_methods(vec!["GET", "POST"]) - .allowed_headers(vec![ - actix_web::http::header::AUTHORIZATION, - actix_web::http::header::ACCEPT, - actix_web::http::header::CONTENT_TYPE, - ]) - .max_age(3600), - ) - .service(page_view_ingest) - .service(playtime_ingest), - ); -} - pub const FILTERED_HEADERS: &[&str] = &[ "authorization", "cookie", diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 7cba0bbb3..4faeac0bc 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -1,9 +1,12 @@ +use actix_cors::Cors; use crate::file_hosting::FileHostingError; use crate::util::cors::default_cors; use actix_files::Files; use actix_web::http::StatusCode; use actix_web::{web, HttpResponse}; use futures::FutureExt; +use crate::routes::analytics::{page_view_ingest, playtime_ingest}; +use crate::util::env::parse_strings_from_var; pub mod v2; pub mod v3; @@ -12,6 +15,7 @@ mod index; mod maven; mod not_found; mod updates; +mod analytics; pub use self::not_found::not_found; @@ -26,6 +30,29 @@ pub fn root_config(cfg: &mut web::ServiceConfig) { .wrap(default_cors()) .configure(updates::config), ); + cfg.service( + web::scope("analytics") + .wrap( + Cors::default() + .allowed_origin_fn(|origin, _req_head| { + let allowed_origins = + parse_strings_from_var("ANALYTICS_ALLOWED_ORIGINS").unwrap_or_default(); + + allowed_origins.contains(&"*".to_string()) + || allowed_origins + .contains(&origin.to_str().unwrap_or_default().to_string()) + }) + .allowed_methods(vec!["GET", "POST"]) + .allowed_headers(vec![ + actix_web::http::header::AUTHORIZATION, + actix_web::http::header::ACCEPT, + actix_web::http::header::CONTENT_TYPE, + ]) + .max_age(3600), + ) + .service(page_view_ingest) + .service(playtime_ingest), + ); cfg.service( web::scope("api/v1") .wrap(default_cors()) diff --git a/src/routes/v2/admin.rs b/src/routes/v2/admin.rs index f15fb8471..4bb763488 100644 --- a/src/routes/v2/admin.rs +++ b/src/routes/v2/admin.rs @@ -104,7 +104,7 @@ pub async fn count_download( let url = url::Url::parse(&download_body.url) .map_err(|_| ApiError::InvalidInput("invalid download URL specified!".to_string()))?; - let ip = super::analytics::convert_to_ip_v6(&download_body.ip) + let ip = crate::routes::analytics::convert_to_ip_v6(&download_body.ip) .unwrap_or_else(|_| Ipv4Addr::new(127, 0, 0, 1).to_ipv6_mapped()); analytics_queue @@ -135,7 +135,7 @@ pub async fn count_download( .headers .clone() .into_iter() - .filter(|x| !super::analytics::FILTERED_HEADERS.contains(&&*x.0.to_lowercase())) + .filter(|x| !crate::routes::analytics::FILTERED_HEADERS.contains(&&*x.0.to_lowercase())) .collect(), }) .await; diff --git a/src/routes/v2/mod.rs b/src/routes/v2/mod.rs index c4ecb82d7..786450440 100644 --- a/src/routes/v2/mod.rs +++ b/src/routes/v2/mod.rs @@ -1,5 +1,4 @@ mod admin; -mod analytics; mod moderation; mod notifications; pub(crate) mod project_creation; @@ -39,6 +38,4 @@ pub fn config(cfg: &mut actix_web::web::ServiceConfig) { .configure(version_file::config) .configure(versions::config), ); - - cfg.configure(analytics::config); }