clippy fixes and env docs update

This commit is contained in:
realaravinth 2021-08-08 18:29:17 +05:30
parent 65ffc37549
commit a5558e4b6f
No known key found for this signature in database
GPG key ID: AD9F0F08E855ED88
6 changed files with 49 additions and 47 deletions

View file

@ -1,6 +1,6 @@
# Configuration # Configuration
mcaptcha is highly configurable. mCaptcha is highly configurable.
Configuration is applied/merged in the following order: Configuration is applied/merged in the following order:
@ -11,52 +11,54 @@ Configuration is applied/merged in the following order:
## Setup ## Setup
### Environment variables: ### Environment variables
Setting environment variables are optional. The configuration files have Setting environment variables are optional. The configuration files have
all the necessary parameters listed. By setting environment variables, all the necessary parameters listed. By setting environment variables,
you will be overriding the values set in the configuration files. 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 | | Name | Value |
| ------------------------------------ | ------------------------------------------------------------- | | ------------------------------------ | ------------------------------------------------------------- |
| `MCAPTCHA_DATEBASE_PASSWORD` | Postgres password | | `MCAPTCHA_DATEBASE_PASSWORD` | Postgres password |
| `MCAPTCHA_DATEBASE_NAME` | Postgres database name | | `MCAPTCHA_DATEBASE_NAME` | Postgres database name |
| `MCAPTCHA_DATEBASE_PORT` | Postgres port | | `MCAPTCHA_DATEBASE_PORT` | Postgres port |
| `MCAPTCHA_DATEBASE_HOSTNAME` | Postgres hostmane | | `MCAPTCHA_DATEBASE_HOSTNAME` | Postgres hostname |
| `MCAPTCHA_DATEBASE_USERNAME` | Postgres username | | `MCAPTCHA_DATEBASE_USERNAME` | Postgres username |
| `MCAPTCHA_DATEBASE_POOL` | Postgres database connection pool size | | `MCAPTCHA_DATEBASE_POOL` | Postgres database connection pool size |
| `DATABSE_URL` (overrides above vars) | databse URL in `postgres://user:pass@host:port/dbname` format | | `DATABSE_URL` (overrides above vars) | databse URL in `postgres://user:pass@host:port/dbname` format |
#### Redis: #### Redis
| Name | Value | | Name | Value |
| --------------------- | -------------------------- | | --------------------- | -------------------------- |
| `MCAPTCHA_REDIS_URL` | Redis URL | | `MCAPTCHA_REDIS_URL` | Redis URL |
| `MCAPTCHA_REDIS_POOL` | Redis connection pool size | | `MCAPTCHA_REDIS_POOL` | Redis connection pool size |
#### Server: #### Server
| Name | Value | | Name | Value |
| ---------------------------------------- | ------------------------------------------------------ | | ---------------------------------------- | ---------------------------------------------------------------------------------- |
| `MCAPTCHA_SERVER_PORT` | The port on which you want mcaptcha to listen to | | `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 | | `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_IP` | The IP address on which you want mCaptcha to listen to |
| `MCAPTCHA_SERVER_DOMAIN` | Domain under which mcaptcha will be\* | | `MCAPTCHA_SERVER_DOMAIN` | Domain under which mCaptcha will be\* |
| `MCAPTCHA_SERVER_COOKIE_SECRET` | Cookie secret, must be long and random | | `MCAPTCHA_SERVER_COOKIE_SECRET` | Cookie secret, must be long and random |
| `MCAPTCHA_SERVER_ALLOW_REGISTRATION` | `bool` that controls | | registration | | `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 \* Authentication doesn't work without `MCAPTCHA_DOMAIN` set to the correct domain
domain
### Configuration file location: ### Proof of work
| Name | Value |
| ----------------- | ------------------- |
| `MCAPTCHA_CONFIG` | Path to config file |
### Proof of work:
| Name | Value | | Name | Value |
| ------------------- | --------------------------------------------------------------------------------------- | | ------------------- | --------------------------------------------------------------------------------------- |

View file

@ -1,19 +1,19 @@
/* /*
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net> * Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as * it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the * published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version. * License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details. * GNU Affero General Public License for more details.
* *
* You should have received a copy of the GNU Affero General Public License * You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use actix_identity::Identity; use actix_identity::Identity;
use actix_web::{web, HttpResponse, Responder}; use actix_web::{web, HttpResponse, Responder};
use argon2_creds::Config; use argon2_creds::Config;
@ -166,7 +166,7 @@ mod tests {
bad_post_req_test( bad_post_req_test(
NAME, NAME,
&new_password, new_password,
ROUTES.account.update_password, ROUTES.account.update_password,
&update_password, &update_password,
ServiceError::PasswordsDontMatch, ServiceError::PasswordsDontMatch,
@ -181,7 +181,7 @@ mod tests {
bad_post_req_test( bad_post_req_test(
NAME, NAME,
&new_password, new_password,
ROUTES.account.update_password, ROUTES.account.update_password,
&update_password, &update_password,
ServiceError::WrongPassword, ServiceError::WrongPassword,

View file

@ -78,7 +78,7 @@ pub mod runners {
use sqlx::Error::RowNotFound; use sqlx::Error::RowNotFound;
let verify = |stored: &str, received: &str| { let verify = |stored: &str, received: &str| {
if Config::verify(&stored, &received)? { if Config::verify(stored, received)? {
Ok(()) Ok(())
} else { } else {
Err(ServiceError::WrongPassword) Err(ServiceError::WrongPassword)
@ -144,7 +144,7 @@ pub mod runners {
let hash = data.creds.password(&payload.password)?; let hash = data.creds.password(&payload.password)?;
if let Some(email) = &payload.email { if let Some(email) = &payload.email {
data.creds.email(&email)?; data.creds.email(email)?;
} }
let mut secret; let mut secret;

View file

@ -301,7 +301,7 @@ mod tests {
let add_token_resp = test::call_service( let add_token_resp = test::call_service(
&app, &app,
post_request!(&update_level, &ROUTES.levels.update) post_request!(&update_level, ROUTES.levels.update)
.cookie(cookies.clone()) .cookie(cookies.clone())
.to_request(), .to_request(),
) )

View file

@ -24,7 +24,7 @@ impl FileMap {
#[allow(clippy::new_without_default)] #[allow(clippy::new_without_default)]
pub fn new() -> Self { pub fn new() -> Self {
let map = include_str!("../cache_buster_data.json"); let map = include_str!("../cache_buster_data.json");
let files = Files::new(&map); let files = Files::new(map);
Self { files } Self { files }
} }
pub fn get<'a>(&'a self, path: &'a str) -> Option<&'a str> { pub fn get<'a>(&'a self, path: &'a str) -> Option<&'a str> {

View file

@ -72,7 +72,7 @@ impl StatsUnixTimestamp {
/// featch PoWConfig confirms /// featch PoWConfig confirms
#[inline] #[inline]
fn unix_timestamp(dates: &Vec<Date>) -> Vec<i64> { fn unix_timestamp(dates: &[Date]) -> Vec<i64> {
let mut res: Vec<i64> = Vec::with_capacity(dates.len()); let mut res: Vec<i64> = Vec::with_capacity(dates.len());
dates dates
@ -193,7 +193,7 @@ mod tests {
let (_, _, _, token_key) = add_levels_util(NAME, PASSWORD).await; let (_, _, _, token_key) = add_levels_util(NAME, PASSWORD).await;
let key = token_key.key.clone(); 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.config_fetches.len(), 0);
assert_eq!(stats.solves.len(), 0); assert_eq!(stats.solves.len(), 0);
@ -205,7 +205,7 @@ mod tests {
record_confirm(&key, &data.db) 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.config_fetches.len(), 1);
assert_eq!(stats.solves.len(), 1); assert_eq!(stats.solves.len(), 1);