mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2025-06-02 20:26:39 +00:00
feat: migrate get captcha levels to use db_*
This commit is contained in:
parent
ddb6d336f7
commit
176df3c7a7
@ -17,6 +17,7 @@
|
|||||||
use actix_identity::Identity;
|
use actix_identity::Identity;
|
||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
|
|
||||||
|
use libmcaptcha::defense::Level;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::create::MCaptchaDetails;
|
use super::create::MCaptchaDetails;
|
||||||
@ -56,20 +57,8 @@ pub mod runner {
|
|||||||
key: &str,
|
key: &str,
|
||||||
username: &str,
|
username: &str,
|
||||||
data: &AppData,
|
data: &AppData,
|
||||||
) -> ServiceResult<Vec<I32Levels>> {
|
) -> ServiceResult<Vec<Level>> {
|
||||||
let levels = sqlx::query_as!(
|
let levels = data.dblib.get_captcha_levels(Some(username), key).await?;
|
||||||
I32Levels,
|
|
||||||
"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
|
||||||
config_id = (
|
|
||||||
SELECT config_id FROM mcaptcha_config WHERE key = ($1)
|
|
||||||
AND user_id = (SELECT ID from mcaptcha_users WHERE name = $2)
|
|
||||||
)
|
|
||||||
ORDER BY difficulty_factor ASC;",
|
|
||||||
key,
|
|
||||||
&username
|
|
||||||
)
|
|
||||||
.fetch_all(&data.db)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
Ok(levels)
|
Ok(levels)
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,6 @@
|
|||||||
* 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 std::borrow::Cow;
|
|
||||||
|
|
||||||
use actix_identity::Identity;
|
use actix_identity::Identity;
|
||||||
use actix_web::{web, HttpResponse, Responder};
|
use actix_web::{web, HttpResponse, Responder};
|
||||||
use libmcaptcha::defense::Level;
|
use libmcaptcha::defense::Level;
|
||||||
@ -45,19 +43,14 @@ pub async fn update_key(
|
|||||||
loop {
|
loop {
|
||||||
key = get_random(32);
|
key = get_random(32);
|
||||||
|
|
||||||
let mut key;
|
match data
|
||||||
loop {
|
.dblib
|
||||||
key = get_random(32);
|
.update_captcha_key(&username, &payload.key, &key)
|
||||||
|
.await
|
||||||
match data
|
{
|
||||||
.dblib
|
Ok(_) => break,
|
||||||
.update_captcha_key(&username, &payload.key, &key)
|
Err(DBError::SecretTaken) => continue,
|
||||||
.await
|
Err(e) => return Err(e.into()),
|
||||||
{
|
|
||||||
Ok(_) => break,
|
|
||||||
Err(DBError::SecretTaken) => continue,
|
|
||||||
Err(e) => return Err(e.into()),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +93,6 @@ pub async fn update_captcha(
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub mod runner {
|
pub mod runner {
|
||||||
use futures::future::try_join_all;
|
|
||||||
use libmcaptcha::{master::messages::RemoveCaptcha, DefenseBuilder};
|
use libmcaptcha::{master::messages::RemoveCaptcha, DefenseBuilder};
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
@ -23,7 +23,6 @@ use libmcaptcha::{
|
|||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use super::I32Levels;
|
|
||||||
use crate::errors::*;
|
use crate::errors::*;
|
||||||
use crate::stats::record::record_fetch;
|
use crate::stats::record::record_fetch;
|
||||||
use crate::AppData;
|
use crate::AppData;
|
||||||
@ -108,29 +107,20 @@ pub async fn get_config(
|
|||||||
/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]
|
/// creates [MCaptcha][libmcaptcha::MCaptcha] and adds it to [Master][libmcaptcha::Defense]
|
||||||
async fn init_mcaptcha(data: &AppData, key: &str) -> ServiceResult<()> {
|
async fn init_mcaptcha(data: &AppData, key: &str) -> ServiceResult<()> {
|
||||||
// get levels
|
// get levels
|
||||||
let levels_fut = sqlx::query_as!(
|
let levels = data.dblib.get_captcha_levels(None, key).await?;
|
||||||
I32Levels,
|
|
||||||
"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
|
||||||
config_id = (
|
|
||||||
SELECT config_id FROM mcaptcha_config WHERE key = ($1)
|
|
||||||
) ORDER BY difficulty_factor ASC;",
|
|
||||||
&key,
|
|
||||||
)
|
|
||||||
.fetch_all(&data.db);
|
|
||||||
|
|
||||||
struct DurationResp {
|
struct DurationResp {
|
||||||
duration: i32,
|
duration: i32,
|
||||||
}
|
}
|
||||||
// get duration
|
// get duration
|
||||||
let duration_fut = sqlx::query_as!(
|
let duration = sqlx::query_as!(
|
||||||
DurationResp,
|
DurationResp,
|
||||||
"SELECT duration FROM mcaptcha_config
|
"SELECT duration FROM mcaptcha_config
|
||||||
WHERE key = $1",
|
WHERE key = $1",
|
||||||
&key,
|
&key,
|
||||||
)
|
)
|
||||||
.fetch_one(&data.db);
|
.fetch_one(&data.db)
|
||||||
|
.await?;
|
||||||
//let (levels, duration) = futures::try_join!(levels_fut, duration_fut).await?;
|
//let (levels, duration) = futures::try_join!(levels_fut, duration_fut).await?;
|
||||||
let (levels, duration) = futures::try_join!(levels_fut, duration_fut)?;
|
|
||||||
|
|
||||||
// build defense
|
// build defense
|
||||||
let mut defense = DefenseBuilder::default();
|
let mut defense = DefenseBuilder::default();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user