Check for region specific items when sending userdata

This commit is contained in:
Ethan O'Brien 2024-05-31 21:34:11 -05:00
parent 53c9f7ea9c
commit 23c09cd4d3
7 changed files with 42 additions and 9 deletions

View file

@ -26,6 +26,7 @@ fn unhandled(req: HttpRequest, body: String) -> Option<JsonValue> {
} }
fn api_req(req: HttpRequest, body: String) -> HttpResponse { fn api_req(req: HttpRequest, body: String) -> HttpResponse {
let headers = req.headers().clone();
if !req.path().starts_with("/api") && !req.path().starts_with("/v1.0") { if !req.path().starts_with("/api") && !req.path().starts_with("/v1.0") {
return router::webui::main(req); return router::webui::main(req);
} }
@ -120,14 +121,14 @@ fn api_req(req: HttpRequest, body: String) -> HttpResponse {
"server_time": global::timestamp(), "server_time": global::timestamp(),
"data": resp.unwrap() "data": resp.unwrap()
}; };
global::send(rv, uid) global::send(rv, uid, &headers)
} else { } else {
let rv = object!{ let rv = object!{
"code": 2,//Idontnermemrmemremremermrme "code": 2,//Idontnermemrmemremremermrme
"server_time": global::timestamp(), "server_time": global::timestamp(),
"data": "" "data": ""
}; };
global::send(rv, uid) global::send(rv, uid, &headers)
} }
} }

View file

@ -8,7 +8,7 @@ use base64::{Engine as _, engine::general_purpose};
use uuid::Uuid; use uuid::Uuid;
use crate::encryption; use crate::encryption;
use crate::router::{userdata, gree}; use crate::router::{userdata, gree, items};
pub const ASSET_VERSION: &str = "5260ff15dff8ba0c00ad91400f515f55"; pub const ASSET_VERSION: &str = "5260ff15dff8ba0c00ad91400f515f55";
pub const ASSET_HASH_ANDROID: &str = "d210b28037885f3ef56b8f8aa45ac95b"; pub const ASSET_HASH_ANDROID: &str = "d210b28037885f3ef56b8f8aa45ac95b";
@ -112,10 +112,14 @@ fn set_time(data: &mut JsonValue, uid: i64) {
data["server_time"] = (server_time + time_since_set).into(); data["server_time"] = (server_time + time_since_set).into();
} }
pub fn send(mut data: JsonValue, uid: i64) -> HttpResponse { pub fn send(mut data: JsonValue, uid: i64, headers: &HeaderMap) -> HttpResponse {
//println!("{}", json::stringify(data.clone())); //println!("{}", json::stringify(data.clone()));
set_time(&mut data, uid); set_time(&mut data, uid);
if !data["data"]["item_list"].is_empty() || !data["data"]["updated_value_list"]["item_list"].is_empty() {
items::check_for_region(&mut data, headers);
}
let encrypted = encryption::encrypt_packet(&json::stringify(data)).unwrap(); let encrypted = encryption::encrypt_packet(&json::stringify(data)).unwrap();
let resp = encrypted.into_bytes(); let resp = encrypted.into_bytes();

View file

@ -1,6 +1,6 @@
use json::{array, object, JsonValue}; use json::{array, object, JsonValue};
use rand::Rng; use rand::Rng;
use actix_web::{HttpRequest}; use actix_web::{HttpRequest, http::header::{HeaderMap, HeaderValue}};
use crate::encryption; use crate::encryption;
use crate::router::{userdata, global, databases}; use crate::router::{userdata, global, databases};
@ -24,6 +24,34 @@ pub fn remove_gems(user: &mut JsonValue, amount: i64) {
user["gem"]["total"] = (free + paid).into(); user["gem"]["total"] = (free + paid).into();
} }
pub fn get_region(headers: &HeaderMap) -> bool {
let blank_header = HeaderValue::from_static("");
let asset_version = headers.get("aoharu-asset-version").unwrap_or(&blank_header).to_str().unwrap_or("");
asset_version == global::ASSET_VERSION_JP
}
pub fn check_for_region(user: &mut JsonValue, headers: &HeaderMap) {
let items = if user["data"]["updated_value_list"]["item_list"].is_empty() {user["data"]["item_list"].clone()} else {user["data"]["updated_value_list"]["item_list"].clone()};
let is_jp = get_region(headers);
if !is_jp || items.is_empty() {
return;
}
let mut id = 0;
for (i, data) in items.members().enumerate() {
if data["master_item_id"] == 15570008 {
id = i + 1;
break;
}
}
if id > 0 {
if user["data"]["updated_value_list"]["item_list"].is_empty() {
user["data"]["item_list"].array_remove(id - 1);
} else {
user["data"]["updated_value_list"]["item_list"].array_remove(id - 1);
}
}
}
// true - limit reached // true - limit reached
// false - all good // false - all good
const GIFT_LIMIT: usize = 100000; const GIFT_LIMIT: usize = 100000;