add: use RemoteAddr for ip blocks as well

This commit is contained in:
trisua 2025-06-30 15:35:18 -04:00
parent 14936b8b90
commit f5faed7762
12 changed files with 127 additions and 28 deletions

View file

@ -1,10 +1,8 @@
use oiseau::cache::Cache;
use crate::model::addr::RemoteAddr;
use crate::model::{Error, Result, auth::User, auth::IpBlock, permissions::FinePermission};
use crate::{auto_method, DataManager};
use oiseau::{query_rows, PostgresRow};
use oiseau::{execute, get, query_row, params};
use oiseau::{query_rows, PostgresRow, execute, get, query_row, params};
impl DataManager {
/// Get an [`IpBlock`] from an SQL row.
@ -23,7 +21,7 @@ impl DataManager {
pub async fn get_ipblock_by_initiator_receiver(
&self,
initiator: usize,
receiver: &str,
receiver: &RemoteAddr,
) -> Result<IpBlock> {
let conn = match self.0.connect().await {
Ok(c) => c,
@ -32,8 +30,8 @@ impl DataManager {
let res = query_row!(
&conn,
"SELECT * FROM ipblocks WHERE initiator = $1 AND receiver = $2",
params![&(initiator as i64), &receiver],
"SELECT * FROM ipblocks WHERE initiator = $1 AND receiver LIKE $2",
params![&(initiator as i64), &format!("{}%", receiver.prefix(None))],
|x| { Ok(Self::get_ipblock_from_row(x)) }
);