rename pow section in settings to captcha and add options to configure
suggested difficulty factors for use in CAPTCHA configurations estimates The current CAPTCHA configuration panel requires the user to provide difficulty factor <--> visitor threshold mapping, which can be tedious if the user isn't familiar with those parameters. Also, it could lead to ineffective limiting from mCaptcha's side, should it be configured improperly. So an estimate computed from well known statistics like peak, avg and broke-my-site traffic could go a long way.
This commit is contained in:
parent
032f6040b8
commit
42544ec421
3 changed files with 19 additions and 4 deletions
|
@ -21,7 +21,7 @@ domain = "localhost"
|
|||
proxy_has_tls = false
|
||||
#url_prefix = ""
|
||||
|
||||
[pow]
|
||||
[captcha]
|
||||
# Please set a unique value, your mCaptcha instance's security depends on this being
|
||||
# unique
|
||||
salt = "asdl;kjfhjawehfpa;osdkjasdvjaksndfpoanjdfainsdfaijdsfajlkjdsaf;ajsdfweroire"
|
||||
|
@ -29,6 +29,12 @@ salt = "asdl;kjfhjawehfpa;osdkjasdvjaksndfpoanjdfainsdfaijdsfajlkjdsaf;ajsdfwero
|
|||
# leave untouched if you don't know what you are doing
|
||||
gc = 30
|
||||
|
||||
[captcha.default_difficulty_strategy]
|
||||
avg_traffic_difficulty = 50000 # almost instant solution
|
||||
peak_sustainable_traffic_difficulty = 3000000 # roughly 1.5s
|
||||
broke_my_site_traffic_difficulty = 5000000 # greater than 3.5s
|
||||
duration = 30 # cooldown period in seconds
|
||||
|
||||
[database]
|
||||
# This section deals with the database location and how to access it
|
||||
# Please note that at the moment, we have support for only postgresqa.
|
||||
|
|
|
@ -103,7 +103,7 @@ impl SystemGroup {
|
|||
|
||||
fn new_system<A: Save, B: MasterTrait>(m: Addr<B>, c: Addr<A>) -> System<A, B> {
|
||||
let pow = PoWConfigBuilder::default()
|
||||
.salt(SETTINGS.pow.salt.clone())
|
||||
.salt(SETTINGS.captcha.salt.clone())
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
|
@ -128,7 +128,7 @@ impl SystemGroup {
|
|||
SystemGroup::Redis(captcha)
|
||||
}
|
||||
None => {
|
||||
let master = EmbeddedMaster::new(SETTINGS.pow.gc).start();
|
||||
let master = EmbeddedMaster::new(SETTINGS.captcha.gc).start();
|
||||
let cache = HashCache::default().start();
|
||||
let captcha = Self::new_system(master, cache);
|
||||
|
||||
|
|
|
@ -36,6 +36,15 @@ pub struct Server {
|
|||
pub struct Captcha {
|
||||
pub salt: String,
|
||||
pub gc: u64,
|
||||
pub default_difficulty_strategy: DefaultDifficultyStrategy,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct DefaultDifficultyStrategy {
|
||||
pub avg_traffic_difficulty: u32,
|
||||
pub broke_my_site_traffic_difficulty: u32,
|
||||
pub peak_sustainable_traffic_difficulty: u32,
|
||||
pub duration: u32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
|
@ -102,7 +111,7 @@ pub struct Settings {
|
|||
pub database: Database,
|
||||
pub redis: Option<Redis>,
|
||||
pub server: Server,
|
||||
pub pow: Captcha,
|
||||
pub captcha: Captcha,
|
||||
pub source_code: String,
|
||||
pub smtp: Option<Smtp>,
|
||||
pub allow_registration: bool,
|
||||
|
|
Loading…
Reference in a new issue