attach user ip to the file record
This commit is contained in:
parent
50447597f1
commit
e91e40e0fc
|
@ -1,6 +1,6 @@
|
||||||
#![allow(unused)]
|
#![allow(unused)]
|
||||||
|
|
||||||
use std::{sync::Arc, error::Error, ops::Add};
|
use std::{sync::Arc, error::Error, ops::Add, net::IpAddr};
|
||||||
|
|
||||||
use argon2::{PasswordHash, password_hash::SaltString, Params, PasswordHasher};
|
use argon2::{PasswordHash, password_hash::SaltString, Params, PasswordHasher};
|
||||||
use chrono::{DateTime, Local};
|
use chrono::{DateTime, Local};
|
||||||
|
@ -22,6 +22,7 @@ pub struct File {
|
||||||
pub delete_at: DateTime<Local>,
|
pub delete_at: DateTime<Local>,
|
||||||
pub delete_mode: DeleteMode,
|
pub delete_mode: DeleteMode,
|
||||||
pub password: Option<String>, // argon2id hash
|
pub password: Option<String>, // argon2id hash
|
||||||
|
pub uploader_ip: Option<IpAddr>,
|
||||||
sha512: String
|
sha512: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +102,7 @@ impl File {
|
||||||
Ok(ndata)
|
Ok(ndata)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create(data: Vec<u8>, mime: String, name: Option<String>, env: Env, delete_mode: DeleteMode, password: Option<String>) -> Result<File, Box<dyn Error>> {
|
pub async fn create(data: Vec<u8>, mime: String, name: Option<String>, env: Env, delete_mode: DeleteMode, password: Option<String>, uploader_ip: Option<IpAddr>) -> Result<File, Box<dyn Error>> {
|
||||||
|
|
||||||
let mut filename = String::new();
|
let mut filename = String::new();
|
||||||
let mut hash = Sha512::new();
|
let mut hash = Sha512::new();
|
||||||
|
@ -140,7 +141,8 @@ impl File {
|
||||||
Some(hash.serialize().to_string())
|
Some(hash.serialize().to_string())
|
||||||
},
|
},
|
||||||
None => None
|
None => None
|
||||||
}
|
},
|
||||||
|
uploader_ip
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,7 +146,7 @@ fn bad_req_html(data: String) -> Box<dyn Reply> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn upload(form: FormData, _ip: Option<IpAddr>, state: SharedState) -> Result<Box<dyn Reply>, Rejection> {
|
pub async fn upload(form: FormData, ip: Option<IpAddr>, state: SharedState) -> Result<Box<dyn Reply>, Rejection> {
|
||||||
|
|
||||||
if ! state.config.files.allow_uploads {
|
if ! state.config.files.allow_uploads {
|
||||||
return Ok(
|
return Ok(
|
||||||
|
@ -205,7 +205,8 @@ pub async fn upload(form: FormData, _ip: Option<IpAddr>, state: SharedState) ->
|
||||||
formdata.filename.clone(),
|
formdata.filename.clone(),
|
||||||
state.env.clone(),
|
state.env.clone(),
|
||||||
formdata.delmode,
|
formdata.delmode,
|
||||||
formdata.password
|
formdata.password,
|
||||||
|
ip
|
||||||
).await
|
).await
|
||||||
.map_err(|x| HttpReject::StringError(x.to_string()))
|
.map_err(|x| HttpReject::StringError(x.to_string()))
|
||||||
?;
|
?;
|
||||||
|
|
Loading…
Reference in New Issue