diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index 0fd60187..d8ae68a2 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -1,6 +1,6 @@ # Configuration -mcaptcha is highly configurable. +mCaptcha is highly configurable. Configuration is applied/merged in the following order: @@ -11,52 +11,54 @@ Configuration is applied/merged in the following order: ## Setup -### Environment variables: +### Environment variables Setting environment variables are optional. The configuration files have all the necessary parameters listed. By setting environment variables, you will be overriding the values set in the configuration files. -#### Database: +### General + +| Name | Value | +| ---------------------- | --------------------------------------------------------------------------------- | +| `MCAPTCHA_CONFIG` | Path to configuration file | +| `MCAPTCHA_COMMERCIAL` | Does this instance offer commercial plans? Please consider donating if it does :D | +| `MCAPTCHA_SOURCE_CODE` | Link to the source code of this instance | + +#### Database | Name | Value | | ------------------------------------ | ------------------------------------------------------------- | | `MCAPTCHA_DATEBASE_PASSWORD` | Postgres password | | `MCAPTCHA_DATEBASE_NAME` | Postgres database name | | `MCAPTCHA_DATEBASE_PORT` | Postgres port | -| `MCAPTCHA_DATEBASE_HOSTNAME` | Postgres hostmane | +| `MCAPTCHA_DATEBASE_HOSTNAME` | Postgres hostname | | `MCAPTCHA_DATEBASE_USERNAME` | Postgres username | | `MCAPTCHA_DATEBASE_POOL` | Postgres database connection pool size | | `DATABSE_URL` (overrides above vars) | databse URL in `postgres://user:pass@host:port/dbname` format | -#### Redis: +#### Redis | Name | Value | | --------------------- | -------------------------- | | `MCAPTCHA_REDIS_URL` | Redis URL | | `MCAPTCHA_REDIS_POOL` | Redis connection pool size | -#### Server: +#### Server -| Name | Value | -| ---------------------------------------- | ------------------------------------------------------ | -| `MCAPTCHA_SERVER_PORT` | The port on which you want mcaptcha to listen to | -| `PORT`(overrides `MCAPTCHA_SERVER_PORT`) | The port on which you want mcaptcha to listen to | -| `MCAPTCHA_SERVER_IP` | The IP address on which you want mcaptcha to listen to | -| `MCAPTCHA_SERVER_DOMAIN` | Domain under which mcaptcha will be\* | -| `MCAPTCHA_SERVER_COOKIE_SECRET` | Cookie secret, must be long and random | -| `MCAPTCHA_SERVER_ALLOW_REGISTRATION` | `bool` that controls | | registration | +| Name | Value | +| ---------------------------------------- | ---------------------------------------------------------------------------------- | +| `MCAPTCHA_SERVER_PORT` | The port on which you want mCaptcha to listen to | +| `PORT`(overrides `MCAPTCHA_SERVER_PORT`) | The port on which you want mCaptcha to listen to | +| `MCAPTCHA_SERVER_IP` | The IP address on which you want mCaptcha to listen to | +| `MCAPTCHA_SERVER_DOMAIN` | Domain under which mCaptcha will be\* | +| `MCAPTCHA_SERVER_COOKIE_SECRET` | Cookie secret, must be long and random | +| `MCAPTCHA_SERVER_ALLOW_REGISTRATION` | `bool` that controls registration | +| `MCAPTCHA_SERVER_PROXY_HAS_TLS` | Is mCaptcha behind a proxy? If yes, mCaptcha can send additional headers like HSTS | -\* Authentication doesn't work without `MCAPTCHA_DOMAIN` set to the correct -domain +\* Authentication doesn't work without `MCAPTCHA_DOMAIN` set to the correct domain -### Configuration file location: - -| Name | Value | -| ----------------- | ------------------- | -| `MCAPTCHA_CONFIG` | Path to config file | - -### Proof of work: +### Proof of work | Name | Value | | ------------------- | --------------------------------------------------------------------------------------- | diff --git a/src/api/v1/account/password.rs b/src/api/v1/account/password.rs index c6602022..d97f14b9 100644 --- a/src/api/v1/account/password.rs +++ b/src/api/v1/account/password.rs @@ -1,19 +1,19 @@ /* -* Copyright (C) 2021 Aravinth Manivannan -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public License -* along with this program. If not, see . -*/ + * Copyright (C) 2021 Aravinth Manivannan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ use actix_identity::Identity; use actix_web::{web, HttpResponse, Responder}; use argon2_creds::Config; @@ -166,7 +166,7 @@ mod tests { bad_post_req_test( NAME, - &new_password, + new_password, ROUTES.account.update_password, &update_password, ServiceError::PasswordsDontMatch, @@ -181,7 +181,7 @@ mod tests { bad_post_req_test( NAME, - &new_password, + new_password, ROUTES.account.update_password, &update_password, ServiceError::WrongPassword, diff --git a/src/api/v1/auth.rs b/src/api/v1/auth.rs index 8794d963..e30110c4 100644 --- a/src/api/v1/auth.rs +++ b/src/api/v1/auth.rs @@ -78,7 +78,7 @@ pub mod runners { use sqlx::Error::RowNotFound; let verify = |stored: &str, received: &str| { - if Config::verify(&stored, &received)? { + if Config::verify(stored, received)? { Ok(()) } else { Err(ServiceError::WrongPassword) @@ -144,7 +144,7 @@ pub mod runners { let hash = data.creds.password(&payload.password)?; if let Some(email) = &payload.email { - data.creds.email(&email)?; + data.creds.email(email)?; } let mut secret; diff --git a/src/api/v1/mcaptcha/levels.rs b/src/api/v1/mcaptcha/levels.rs index 2b74c2bf..31b4f333 100644 --- a/src/api/v1/mcaptcha/levels.rs +++ b/src/api/v1/mcaptcha/levels.rs @@ -301,7 +301,7 @@ mod tests { let add_token_resp = test::call_service( &app, - post_request!(&update_level, &ROUTES.levels.update) + post_request!(&update_level, ROUTES.levels.update) .cookie(cookies.clone()) .to_request(), ) diff --git a/src/static_assets/filemap.rs b/src/static_assets/filemap.rs index 64e5ab54..0dc3cec8 100644 --- a/src/static_assets/filemap.rs +++ b/src/static_assets/filemap.rs @@ -24,7 +24,7 @@ impl FileMap { #[allow(clippy::new_without_default)] pub fn new() -> Self { let map = include_str!("../cache_buster_data.json"); - let files = Files::new(&map); + let files = Files::new(map); Self { files } } pub fn get<'a>(&'a self, path: &'a str) -> Option<&'a str> { diff --git a/src/stats/fetch.rs b/src/stats/fetch.rs index a714375a..00c52662 100644 --- a/src/stats/fetch.rs +++ b/src/stats/fetch.rs @@ -72,7 +72,7 @@ impl StatsUnixTimestamp { /// featch PoWConfig confirms #[inline] - fn unix_timestamp(dates: &Vec) -> Vec { + fn unix_timestamp(dates: &[Date]) -> Vec { let mut res: Vec = Vec::with_capacity(dates.len()); dates @@ -193,7 +193,7 @@ mod tests { let (_, _, _, token_key) = add_levels_util(NAME, PASSWORD).await; let key = token_key.key.clone(); - let stats = Stats::new(&NAME, &key, &data.db).await.unwrap(); + let stats = Stats::new(NAME, &key, &data.db).await.unwrap(); assert_eq!(stats.config_fetches.len(), 0); assert_eq!(stats.solves.len(), 0); @@ -205,7 +205,7 @@ mod tests { record_confirm(&key, &data.db) ); - let stats = Stats::new(&NAME, &key, &data.db).await.unwrap(); + let stats = Stats::new(NAME, &key, &data.db).await.unwrap(); assert_eq!(stats.config_fetches.len(), 1); assert_eq!(stats.solves.len(), 1);