|
|
@ -132,18 +132,33 @@ fn put_eq_domains(data: JsonUpcase<EquivDomainData>, headers: Headers, conn: DbC |
|
|
|
|
|
|
|
#[get("/hibp/breach?<username>")] |
|
|
|
fn hibp_breach(username: String) -> JsonResult { |
|
|
|
let url = format!("https://haveibeenpwned.com/api/v2/breachedaccount/{}", username); |
|
|
|
let user_agent = "Bitwarden_RS"; |
|
|
|
let url = format!( |
|
|
|
"https://haveibeenpwned.com/api/v3/breachedaccount/{}?truncateResponse=false&includeUnverified=false", |
|
|
|
username |
|
|
|
); |
|
|
|
|
|
|
|
use reqwest::{header::USER_AGENT, Client}; |
|
|
|
|
|
|
|
let res = Client::new().get(&url).header(USER_AGENT, user_agent).send()?; |
|
|
|
|
|
|
|
// If we get a 404, return a 404, it means no breached accounts
|
|
|
|
if res.status() == 404 { |
|
|
|
return Err(Error::empty().with_code(404)); |
|
|
|
if let Some(api_key) = crate::CONFIG.hibp_api_key() { |
|
|
|
let res = Client::new() |
|
|
|
.get(&url) |
|
|
|
.header(USER_AGENT, user_agent) |
|
|
|
.header("hibp-api-key", api_key) |
|
|
|
.send()?; |
|
|
|
|
|
|
|
// If we get a 404, return a 404, it means no breached accounts
|
|
|
|
if res.status() == 404 { |
|
|
|
return Err(Error::empty().with_code(404)); |
|
|
|
} |
|
|
|
|
|
|
|
let value: Value = res.error_for_status()?.json()?; |
|
|
|
Ok(Json(value)) |
|
|
|
} else { |
|
|
|
Ok(Json(json!([{ |
|
|
|
"title": "--- Error! ---", |
|
|
|
"description": "HaveIBeenPwned API key not set! Go to https://haveibeenpwned.com/API/Key", |
|
|
|
"logopath": "/bwrs_images/error-x.svg" |
|
|
|
}]))) |
|
|
|
} |
|
|
|
|
|
|
|
let value: Value = res.error_for_status()?.json()?; |
|
|
|
Ok(Json(value)) |
|
|
|
} |
|
|
|