mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-11-15 13:16:56 +00:00
refactor: Remove recaptcha-verify
This commit is contained in:
1 parent
935ddf1d0f
commit
39bee607c0
7 files changed
+61
-42
No files matched your search
@@ -1,7 +1,7 @@
|
||||
use std::{sync::Arc, time::Duration};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use conduwuit::{Config, Result, Server, err, trace};
|
||||
use conduwuit::{Config, Result, Server, err, trace, utils::response::LimitReadExt, warn};
|
||||
use either::Either;
|
||||
use hickory_resolver::{
|
||||
TokioResolver, config::ConnectionConfig, net::runtime::TokioRuntimeProvider,
|
||||
@@ -9,6 +9,7 @@ use hickory_resolver::{
|
||||
use ipaddress::IPAddress;
|
||||
use reqwest::redirect;
|
||||
use resolvematrix::server::{MatrixResolver, MatrixResolverBuilder};
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::service;
|
||||
|
||||
@@ -178,6 +179,43 @@ impl Service {
|
||||
.iter()
|
||||
.all(|cidr| !cidr.includes(ip))
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
pub async fn recaptcha_verify(&self, secret: &str, response: &str) -> bool {
|
||||
#[derive(Deserialize, Default, Debug, Clone)]
|
||||
struct RecaptchaResponse {
|
||||
success: bool,
|
||||
#[serde(rename(deserialize = "error-codes"))]
|
||||
_error_codes: Option<Vec<String>>,
|
||||
}
|
||||
|
||||
let response = match self
|
||||
.external_resource
|
||||
.post("https://www.google.com/recaptcha/api/siteverify")
|
||||
.form(&[("secret", secret), ("response", response)])
|
||||
.send()
|
||||
.await
|
||||
{
|
||||
| Ok(response) => response,
|
||||
| Err(err) => {
|
||||
warn!("ReCaptcha request failed: {err}");
|
||||
return false;
|
||||
},
|
||||
};
|
||||
|
||||
let Ok(response) = response.limit_read_text(1024).await else {
|
||||
warn!("ReCaptcha response was too large??");
|
||||
return false;
|
||||
};
|
||||
|
||||
match serde_json::from_str::<RecaptchaResponse>(&response) {
|
||||
| Ok(response) => response.success,
|
||||
| Err(err) => {
|
||||
warn!("ReCaptcha response failed to deserialize: {err}");
|
||||
false
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn base(config: &Config) -> Result<reqwest::ClientBuilder> {
|
||||
|
||||
Reference in new issue
Block a user