add: ban ipv6 addresses by prefix

assumes all ipv6 addresses have 64-bit prefix (8 bytes at the start + 2 bytes for colons)
This commit is contained in:
trisua 2025-05-21 23:32:45 -04:00
parent 2b91422d18
commit d7e800fcb4
6 changed files with 128 additions and 4 deletions

View file

@ -5,7 +5,7 @@ use crate::{
};
use axum::{Extension, Json, extract::Path, response::IntoResponse};
use axum_extra::extract::CookieJar;
use tetratto_core::model::{auth::IpBan, permissions::FinePermission};
use tetratto_core::model::{addr::RemoteAddr, auth::IpBan, permissions::FinePermission};
/// Create a new IP ban.
pub async fn create_request(
@ -24,7 +24,14 @@ pub async fn create_request(
return Json(Error::NotAllowed.into());
}
match data.create_ipban(IpBan::new(ip, user.id, req.reason)).await {
match data
.create_ipban(IpBan::new(
RemoteAddr::from(ip.as_str()).prefix(None),
user.id,
req.reason,
))
.await
{
Ok(_) => Json(ApiReturn {
ok: true,
message: "IP ban created".to_string(),