mirror of
https://git.ethanthesleepy.one/ethanaobrien/ew.git
synced 2025-05-13 11:37:33 -05:00
I DID NOT TEST THIS COMMIT CARGO CLIPPY DID STUFF FOR ME AND I'M TOO LAZY TO TEST SO HOPEFULLY NOTHING BROKE
This commit is contained in:
parent
ea48327e10
commit
7df2f3e277
16 changed files with 188 additions and 201 deletions
|
@ -172,7 +172,7 @@ macro_rules! include_file {
|
||||||
( $s:expr ) => {
|
( $s:expr ) => {
|
||||||
{
|
{
|
||||||
let file = include_flate_codegen::deflate_file!($s);
|
let file = include_flate_codegen::deflate_file!($s);
|
||||||
let ret = crate::decode(file);
|
let ret = $crate::decode(file);
|
||||||
std::string::String::from_utf8(ret).unwrap()
|
std::string::String::from_utf8(ret).unwrap()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,7 +6,7 @@ use crate::encryption;
|
||||||
|
|
||||||
fn do_reinforce(user: &mut JsonValue, body: &JsonValue, exp_id: &str, money_multiplier: i64, evolve: bool) -> JsonValue {
|
fn do_reinforce(user: &mut JsonValue, body: &JsonValue, exp_id: &str, money_multiplier: i64, evolve: bool) -> JsonValue {
|
||||||
for (i, data) in user["card_list"].members().enumerate() {
|
for (i, data) in user["card_list"].members().enumerate() {
|
||||||
if data["id"].to_string() == body["id"].to_string() {
|
if data["id"] == body["id"] {
|
||||||
let materials = &body["material_item_list"];
|
let materials = &body["material_item_list"];
|
||||||
let mut card = data.clone();
|
let mut card = data.clone();
|
||||||
let mut money: i64 = 0;
|
let mut money: i64 = 0;
|
||||||
|
@ -32,7 +32,7 @@ fn do_reinforce(user: &mut JsonValue, body: &JsonValue, exp_id: &str, money_mult
|
||||||
return card;
|
return card;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return object!{};
|
object!{}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn reinforce(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn reinforce(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
|
@ -143,7 +143,7 @@ fn get_json() -> JsonValue {
|
||||||
let mut ids = array![];
|
let mut ids = array![];
|
||||||
for (_i, id) in lives.members().enumerate() {
|
for (_i, id) in lives.members().enumerate() {
|
||||||
let info = DATABASE.get_live_data(id.as_i64().unwrap());
|
let info = DATABASE.get_live_data(id.as_i64().unwrap());
|
||||||
if !info.is_ok() {
|
if info.is_err() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let info = info.unwrap();
|
let info = info.unwrap();
|
||||||
|
|
|
@ -55,15 +55,15 @@ pub fn recommend(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let friends = userdata::get_acc_friends(&key);
|
let friends = userdata::get_acc_friends(&key);
|
||||||
|
|
||||||
let mut random = userdata::get_random_uids(20);
|
let mut random = userdata::get_random_uids(20);
|
||||||
let index = random.members().into_iter().position(|r| *r.to_string() == user_id.to_string());
|
let index = random.members().position(|r| *r.to_string() == user_id.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
random.array_remove(index.unwrap());
|
random.array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
for (_i, uid) in random.members().enumerate() {
|
for (_i, uid) in random.members().enumerate() {
|
||||||
let user = global::get_user(uid.as_i64().unwrap(), &friends, false);
|
let user = global::get_user(uid.as_i64().unwrap(), &friends, false);
|
||||||
if user["user"]["friend_request_disabled"].to_string() == "1" || user.is_empty() {
|
if user["user"]["friend_request_disabled"] == "1" || user.is_empty() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
rv.push(user).unwrap();
|
rv.push(user).unwrap();
|
||||||
|
@ -125,14 +125,14 @@ pub fn approve(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let mut friends = userdata::get_acc_friends(&key);
|
let mut friends = userdata::get_acc_friends(&key);
|
||||||
|
|
||||||
let uid = body["user_id"].as_i64().unwrap();
|
let uid = body["user_id"].as_i64().unwrap();
|
||||||
let index = friends["pending_user_id_list"].members().into_iter().position(|r| *r.to_string() == uid.to_string());
|
let index = friends["pending_user_id_list"].members().position(|r| *r.to_string() == uid.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
friends["pending_user_id_list"].array_remove(index.unwrap());
|
friends["pending_user_id_list"].array_remove(index.unwrap());
|
||||||
if body["approve"].to_string() == "1" && ! friends["friend_user_id_list"].contains(uid) && friends["friend_user_id_list"].len() < FRIEND_LIMIT {
|
if body["approve"] == "1" && ! friends["friend_user_id_list"].contains(uid) && friends["friend_user_id_list"].len() < FRIEND_LIMIT {
|
||||||
friends["friend_user_id_list"].push(uid).unwrap();
|
friends["friend_user_id_list"].push(uid).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
userdata::friend_request_approve(uid, user_id, body["approve"].to_string() == "1", "request_user_id_list");
|
userdata::friend_request_approve(uid, user_id, body["approve"] == "1", "request_user_id_list");
|
||||||
userdata::save_acc_friends(&key, friends);
|
userdata::save_acc_friends(&key, friends);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,8 +151,8 @@ pub fn cancel(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let mut friends = userdata::get_acc_friends(&key);
|
let mut friends = userdata::get_acc_friends(&key);
|
||||||
|
|
||||||
let uid = body["user_id"].as_i64().unwrap();
|
let uid = body["user_id"].as_i64().unwrap();
|
||||||
let index = friends["request_user_id_list"].members().into_iter().position(|r| *r.to_string() == uid.to_string());
|
let index = friends["request_user_id_list"].members().position(|r| *r.to_string() == uid.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
friends["request_user_id_list"].array_remove(index.unwrap());
|
friends["request_user_id_list"].array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
userdata::friend_request_approve(uid, user_id, false, "pending_user_id_list");
|
userdata::friend_request_approve(uid, user_id, false, "pending_user_id_list");
|
||||||
|
@ -173,8 +173,8 @@ pub fn delete(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let mut friends = userdata::get_acc_friends(&key);
|
let mut friends = userdata::get_acc_friends(&key);
|
||||||
|
|
||||||
let uid = body["user_id"].as_i64().unwrap();
|
let uid = body["user_id"].as_i64().unwrap();
|
||||||
let index = friends["friend_user_id_list"].members().into_iter().position(|r| *r.to_string() == uid.to_string());
|
let index = friends["friend_user_id_list"].members().position(|r| *r.to_string() == uid.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
friends["friend_user_id_list"].array_remove(index.unwrap());
|
friends["friend_user_id_list"].array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
userdata::friend_remove(uid, user_id);
|
userdata::friend_remove(uid, user_id);
|
||||||
|
|
|
@ -43,31 +43,31 @@ pub fn get_login(headers: &HeaderMap, body: &str) -> String {
|
||||||
let blank_header = HeaderValue::from_static("");
|
let blank_header = HeaderValue::from_static("");
|
||||||
|
|
||||||
let login = headers.get("a6573cbe").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let login = headers.get("a6573cbe").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
let decoded = general_purpose::STANDARD.decode(login).unwrap_or(vec![]);
|
let decoded = general_purpose::STANDARD.decode(login).unwrap_or_default();
|
||||||
match get_uuid(&String::from_utf8_lossy(&decoded).to_string()) {
|
match get_uuid(String::from_utf8_lossy(&decoded).as_ref()) {
|
||||||
Some(token) => {
|
Some(token) => {
|
||||||
return token;
|
token
|
||||||
},
|
},
|
||||||
None => {
|
None => {
|
||||||
let rv = gree::get_uuid(headers, body);
|
let rv = gree::get_uuid(headers, body);
|
||||||
assert!(rv != String::new());
|
assert!(rv != String::new());
|
||||||
return rv;
|
rv
|
||||||
},
|
},
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn timestamp() -> u64 {
|
pub fn timestamp() -> u64 {
|
||||||
let now = SystemTime::now();
|
let now = SystemTime::now();
|
||||||
|
|
||||||
let unix_timestamp = now.duration_since(UNIX_EPOCH).unwrap();
|
let unix_timestamp = now.duration_since(UNIX_EPOCH).unwrap();
|
||||||
return unix_timestamp.as_secs();
|
unix_timestamp.as_secs()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn timestamp_msec() -> u32 {
|
pub fn timestamp_msec() -> u32 {
|
||||||
let now = SystemTime::now();
|
let now = SystemTime::now();
|
||||||
|
|
||||||
let unix_timestamp = now.duration_since(UNIX_EPOCH).unwrap();
|
let unix_timestamp = now.duration_since(UNIX_EPOCH).unwrap();
|
||||||
return unix_timestamp.subsec_nanos();
|
unix_timestamp.subsec_nanos()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn timestamp_since_midnight() -> u64 {
|
pub fn timestamp_since_midnight() -> u64 {
|
||||||
|
@ -76,8 +76,8 @@ pub fn timestamp_since_midnight() -> u64 {
|
||||||
|
|
||||||
let midnight = unix_timestamp.as_secs() % (24 * 60 * 60);
|
let midnight = unix_timestamp.as_secs() % (24 * 60 * 60);
|
||||||
|
|
||||||
let rv = unix_timestamp.as_secs() - midnight;
|
|
||||||
rv
|
unix_timestamp.as_secs() - midnight
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init_time(server_data: &mut JsonValue, token: &str) {
|
fn init_time(server_data: &mut JsonValue, token: &str) {
|
||||||
|
@ -91,7 +91,7 @@ fn init_time(server_data: &mut JsonValue, token: &str) {
|
||||||
edited = true;
|
edited = true;
|
||||||
}
|
}
|
||||||
if edited {
|
if edited {
|
||||||
userdata::save_server_data(&token, server_data.clone());
|
userdata::save_server_data(token, server_data.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ pub fn get_card(id: i64, user: &JsonValue) -> JsonValue {
|
||||||
return data.clone();
|
return data.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return object!{};
|
object!{}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_cards(arr: JsonValue, user: &JsonValue) -> JsonValue {
|
fn get_cards(arr: JsonValue, user: &JsonValue) -> JsonValue {
|
||||||
|
@ -168,13 +168,13 @@ fn get_cards(arr: JsonValue, user: &JsonValue) -> JsonValue {
|
||||||
}
|
}
|
||||||
rv.push(to_push).unwrap();
|
rv.push(to_push).unwrap();
|
||||||
}
|
}
|
||||||
return rv;
|
rv
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_clear_count(user: &JsonValue, level: i32) -> i64 {
|
fn get_clear_count(user: &JsonValue, level: i32) -> i64 {
|
||||||
let mut rv = 0;
|
let mut rv = 0;
|
||||||
for (_i, current) in user["live_list"].members().enumerate() {
|
for (_i, current) in user["live_list"].members().enumerate() {
|
||||||
if current["level"].to_string() == level.to_string() {
|
if current["level"] == level {
|
||||||
rv += 1;
|
rv += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ fn setup_tables(conn: &SQLite) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_cert(uid: i64, cert: &str) {
|
fn update_cert(uid: i64, cert: &str) {
|
||||||
if !DATABASE.lock_and_select("SELECT cert FROM users WHERE user_id=?1;", params!(uid)).is_ok() {
|
if DATABASE.lock_and_select("SELECT cert FROM users WHERE user_id=?1;", params!(uid)).is_err() {
|
||||||
let token = userdata::get_login_token(uid);
|
let token = userdata::get_login_token(uid);
|
||||||
if token != String::new() {
|
if token != String::new() {
|
||||||
DATABASE.lock_and_exec(
|
DATABASE.lock_and_exec(
|
||||||
|
@ -69,19 +69,16 @@ fn verify_signature(signature: &[u8], message: &[u8], public_key: &[u8]) -> bool
|
||||||
let mut verifier = Verifier::new(MessageDigest::sha1(), &pkey).unwrap();
|
let mut verifier = Verifier::new(MessageDigest::sha1(), &pkey).unwrap();
|
||||||
verifier.update(message).unwrap();
|
verifier.update(message).unwrap();
|
||||||
|
|
||||||
match verifier.verify(signature) {
|
verifier.verify(signature).is_ok()
|
||||||
Ok(_) => true,
|
|
||||||
Err(_) => false,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
pub fn get_uuid(headers: &HeaderMap, body: &str) -> String {
|
pub fn get_uuid(headers: &HeaderMap, body: &str) -> String {
|
||||||
let body = encryption::decrypt_packet(&body).unwrap();
|
let body = encryption::decrypt_packet(body).unwrap();
|
||||||
let blank_header = HeaderValue::from_static("");
|
let blank_header = HeaderValue::from_static("");
|
||||||
let login = headers.get("a6573cbe").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let login = headers.get("a6573cbe").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
let uid = headers.get("aoharu-user-id").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let uid = headers.get("aoharu-user-id").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
let version = headers.get("aoharu-client-version").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let version = headers.get("aoharu-client-version").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
let timestamp = headers.get("aoharu-timestamp").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let timestamp = headers.get("aoharu-timestamp").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
if uid == "" || login == "" || version == "" || timestamp == "" {
|
if uid.is_empty() || login.is_empty() || version.is_empty() || timestamp.is_empty() {
|
||||||
return String::new();
|
return String::new();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,12 +87,12 @@ pub fn get_uuid(headers: &HeaderMap, body: &str) -> String {
|
||||||
let data = format!("{}{}{}{}{}", uid, "sk1bdzb310n0s9tl", version, timestamp, body);
|
let data = format!("{}{}{}{}{}", uid, "sk1bdzb310n0s9tl", version, timestamp, body);
|
||||||
let encoded = general_purpose::STANDARD.encode(data.as_bytes());
|
let encoded = general_purpose::STANDARD.encode(data.as_bytes());
|
||||||
|
|
||||||
let decoded = general_purpose::STANDARD.decode(login).unwrap_or(vec![]);
|
let decoded = general_purpose::STANDARD.decode(login).unwrap_or_default();
|
||||||
|
|
||||||
if verify_signature(&decoded, &encoded.as_bytes(), &cert.as_bytes()) {
|
if verify_signature(&decoded, encoded.as_bytes(), cert.as_bytes()) {
|
||||||
return DATABASE.lock_and_select("SELECT uuid FROM users WHERE user_id=?1;", params!(uid)).unwrap();
|
DATABASE.lock_and_select("SELECT uuid FROM users WHERE user_id=?1;", params!(uid)).unwrap()
|
||||||
} else {
|
} else {
|
||||||
return String::new();
|
String::new()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +111,7 @@ fn rot13(input: &str) -> String {
|
||||||
fn decrypt_transfer_password(password: &str) -> String {
|
fn decrypt_transfer_password(password: &str) -> String {
|
||||||
let reversed = password.chars().rev().collect::<String>();
|
let reversed = password.chars().rev().collect::<String>();
|
||||||
let rot = rot13(&reversed);
|
let rot = rot13(&reversed);
|
||||||
let decoded = general_purpose::STANDARD.decode(rot).unwrap_or(vec![]);
|
let decoded = general_purpose::STANDARD.decode(rot).unwrap_or_default();
|
||||||
|
|
||||||
String::from_utf8_lossy(&decoded).to_string()
|
String::from_utf8_lossy(&decoded).to_string()
|
||||||
}
|
}
|
||||||
|
@ -178,7 +175,7 @@ pub fn uid(req: HttpRequest) -> HttpResponse {
|
||||||
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
||||||
if let Some(uid_data2) = uid_data.get(1) {
|
if let Some(uid_data2) = uid_data.get(1) {
|
||||||
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
||||||
if let Some(uid_str) = uid_data2.get(0) {
|
if let Some(uid_str) = uid_data2.first() {
|
||||||
uid = uid_str.to_string();
|
uid = uid_str.to_string();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,7 +220,7 @@ pub fn migration_verify(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let user = userdata::get_acc_transfer(uid, &body["migration_code"].to_string(), &password);
|
let user = userdata::get_acc_transfer(uid, &body["migration_code"].to_string(), &password);
|
||||||
|
|
||||||
let resp;
|
let resp;
|
||||||
if user["success"].as_bool().unwrap() != true || uid == 0 {
|
if !user["success"].as_bool().unwrap() || uid == 0 {
|
||||||
resp = object!{
|
resp = object!{
|
||||||
result: "ERR",
|
result: "ERR",
|
||||||
messsage: "User Not Found"
|
messsage: "User Not Found"
|
||||||
|
@ -269,7 +266,7 @@ pub fn balance(req: HttpRequest) -> HttpResponse {
|
||||||
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
||||||
if let Some(uid_data2) = uid_data.get(1) {
|
if let Some(uid_data2) = uid_data.get(1) {
|
||||||
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
||||||
if let Some(uid_str) = uid_data2.get(0) {
|
if let Some(uid_str) = uid_data2.first() {
|
||||||
uid = uid_str.to_string();
|
uid = uid_str.to_string();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -295,7 +292,7 @@ pub fn migration_code(req: HttpRequest) -> HttpResponse {
|
||||||
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
||||||
if let Some(uid_data2) = uid_data.get(1) {
|
if let Some(uid_data2) = uid_data.get(1) {
|
||||||
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
||||||
if let Some(uid_str) = uid_data2.get(0) {
|
if let Some(uid_str) = uid_data2.first() {
|
||||||
uid = uid_str.to_string();
|
uid = uid_str.to_string();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -318,7 +315,7 @@ pub fn migration_password_register(req: HttpRequest, body: String) -> HttpRespon
|
||||||
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
let uid_data: Vec<&str> = auth_header.split(",xoauth_requestor_id=\"").collect();
|
||||||
if let Some(uid_data2) = uid_data.get(1) {
|
if let Some(uid_data2) = uid_data.get(1) {
|
||||||
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
let uid_data2: Vec<&str> = uid_data2.split('"').collect();
|
||||||
if let Some(uid_str) = uid_data2.get(0) {
|
if let Some(uid_str) = uid_data2.first() {
|
||||||
uid = uid_str.to_string();
|
uid = uid_str.to_string();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -337,7 +334,7 @@ pub fn migration_password_register(req: HttpRequest, body: String) -> HttpRespon
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_protocol() -> String {
|
fn get_protocol() -> String {
|
||||||
if env::args().nth(1).unwrap_or(String::new()) == String::from("https") {
|
if env::args().nth(1).unwrap_or_default() == *"https" {
|
||||||
return String::from("https");
|
return String::from("https");
|
||||||
}
|
}
|
||||||
String::from("http")
|
String::from("http")
|
||||||
|
@ -348,7 +345,7 @@ fn gree_authorize(req: &HttpRequest) -> String {
|
||||||
|
|
||||||
let blank_header = HeaderValue::from_static("");
|
let blank_header = HeaderValue::from_static("");
|
||||||
let auth_header = req.headers().get("Authorization").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let auth_header = req.headers().get("Authorization").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
if auth_header == "" {
|
if auth_header.is_empty() {
|
||||||
return String::new();
|
return String::new();
|
||||||
}
|
}
|
||||||
let auth_header = auth_header.substring(6, auth_header.len());
|
let auth_header = auth_header.substring(6, auth_header.len());
|
||||||
|
@ -366,7 +363,7 @@ fn gree_authorize(req: &HttpRequest) -> String {
|
||||||
let hostname = req.headers().get("host").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let hostname = req.headers().get("host").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
let current_url = format!("{}://{}{}", get_protocol(), hostname, req.path());
|
let current_url = format!("{}://{}{}", get_protocol(), hostname, req.path());
|
||||||
let uri = req.uri().to_string();
|
let uri = req.uri().to_string();
|
||||||
let extra = if uri.contains("?") {
|
let extra = if uri.contains('?') {
|
||||||
format!("&{}", uri.split('?').nth(1).unwrap_or(""))
|
format!("&{}", uri.split('?').nth(1).unwrap_or(""))
|
||||||
} else { String::new() };
|
} else { String::new() };
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ pub fn preset(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let mut user = userdata::get_acc_home(&key);
|
let mut user = userdata::get_acc_home(&key);
|
||||||
|
|
||||||
for (_i, data) in user["home"]["preset_setting"].members_mut().enumerate() {
|
for (_i, data) in user["home"]["preset_setting"].members_mut().enumerate() {
|
||||||
if data["slot"].to_string() == body["slot"].to_string() {
|
if data["slot"] == body["slot"] {
|
||||||
*data = body.clone();
|
*data = body.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ pub fn preset(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
fn check_gifts(user: &mut JsonValue) {
|
fn check_gifts(user: &mut JsonValue) {
|
||||||
let mut to_remove = array![];
|
let mut to_remove = array![];
|
||||||
for (j, data) in user["home"]["gift_list"].members().enumerate() {
|
for (j, data) in user["home"]["gift_list"].members().enumerate() {
|
||||||
if data["is_receive"].to_string() == "1" || data["expire_date_time"].as_u64().unwrap() < global::timestamp() {
|
if data["is_receive"] == "1" || data["expire_date_time"].as_u64().unwrap() < global::timestamp() {
|
||||||
to_remove.push(j).unwrap();
|
to_remove.push(j).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,19 +81,19 @@ pub fn give_gift(data: &JsonValue, user: &mut JsonValue, missions: &mut JsonValu
|
||||||
if data.is_empty() {
|
if data.is_empty() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if data["reward_type"].to_string() == "1" {
|
if data["reward_type"] == "1" {
|
||||||
// basically primogems!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
// basically primogems!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
return !give_primogems(data["amount"].as_i64().unwrap(), user);
|
return !give_primogems(data["amount"].as_i64().unwrap(), user);
|
||||||
} else if data["reward_type"].to_string() == "2" {
|
} else if data["reward_type"] == "2" {
|
||||||
//character
|
//character
|
||||||
give_character(data["value"].to_string(), user, missions, clear_missions);
|
give_character(data["value"].to_string(), user, missions, clear_missions);
|
||||||
return true;
|
return true;
|
||||||
} else if data["reward_type"].to_string() == "3" {
|
} else if data["reward_type"] == "3" {
|
||||||
return !give_item(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user);
|
return !give_item(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user);
|
||||||
} else if data["reward_type"].to_string() == "4" {
|
} else if data["reward_type"] == "4" {
|
||||||
// basically moraa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
// basically moraa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
return !give_points(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user, missions, clear_missions);
|
return !give_points(data["value"].as_i64().unwrap(), data["amount"].as_i64().unwrap(), user, missions, clear_missions);
|
||||||
} else if data["reward_type"].to_string() == "8" {
|
} else if data["reward_type"] == "8" {
|
||||||
// title
|
// title
|
||||||
let title = data["value"].as_i64().unwrap();
|
let title = data["value"].as_i64().unwrap();
|
||||||
if !user["master_title_ids"].contains(title) {
|
if !user["master_title_ids"].contains(title) {
|
||||||
|
@ -101,8 +101,8 @@ pub fn give_gift(data: &JsonValue, user: &mut JsonValue, missions: &mut JsonValu
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
println!("Redeeming reward not implemented for reward type {}", data["reward_type"].to_string());
|
println!("Redeeming reward not implemented for reward type {}", data["reward_type"]);
|
||||||
return false;
|
false
|
||||||
}
|
}
|
||||||
pub fn give_gift_basic(ty_pe: i32, id: i64, amount: i64, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
|
pub fn give_gift_basic(ty_pe: i32, id: i64, amount: i64, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
|
||||||
give_gift(&object!{
|
give_gift(&object!{
|
||||||
|
@ -181,7 +181,7 @@ pub fn gift_item(item: &JsonValue, reason: &str, user: &mut JsonValue) -> JsonVa
|
||||||
return to_push;
|
return to_push;
|
||||||
}
|
}
|
||||||
user["home"]["gift_list"].push(to_push.clone()).unwrap();
|
user["home"]["gift_list"].push(to_push.clone()).unwrap();
|
||||||
return to_push;
|
to_push
|
||||||
}
|
}
|
||||||
|
|
||||||
fn random_number(lowest: usize, highest: usize) -> usize {
|
fn random_number(lowest: usize, highest: usize) -> usize {
|
||||||
|
@ -234,7 +234,7 @@ pub fn lp_modification(user: &mut JsonValue, change_amount: u64, remove: bool) {
|
||||||
// false - already has
|
// false - already has
|
||||||
pub fn give_character(id: String, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
|
pub fn give_character(id: String, user: &mut JsonValue, missions: &mut JsonValue, clear_missions: &mut JsonValue) -> bool {
|
||||||
for (_i, data) in user["card_list"].members().enumerate() {
|
for (_i, data) in user["card_list"].members().enumerate() {
|
||||||
if data["master_card_id"].to_string() == id || data["id"].to_string() == id {
|
if data["master_card_id"] == id || data["id"] == id {
|
||||||
give_item(19100001, 50, user);
|
give_item(19100001, 50, user);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -264,14 +264,14 @@ pub fn get_user_rank_data(exp: i64) -> JsonValue {
|
||||||
return databases::RANKS[i - 1].clone();
|
return databases::RANKS[i - 1].clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return databases::RANKS[databases::RANKS.len() - 1].clone();
|
databases::RANKS[databases::RANKS.len() - 1].clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue, rv: &mut JsonValue) {
|
pub fn give_exp(amount: i32, user: &mut JsonValue, mission: &mut JsonValue, rv: &mut JsonValue) {
|
||||||
let current_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
let current_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
||||||
user["user"]["exp"] = (user["user"]["exp"].as_i32().unwrap() + amount).into();
|
user["user"]["exp"] = (user["user"]["exp"].as_i32().unwrap() + amount).into();
|
||||||
let new_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
let new_rank = get_user_rank_data(user["user"]["exp"].as_i64().unwrap());
|
||||||
if current_rank["rank"].to_string() != new_rank["rank"].to_string() {
|
if current_rank["rank"] != new_rank["rank"] {
|
||||||
user["stamina"]["stamina"] = (user["stamina"]["stamina"].as_i64().unwrap() + new_rank["maxLp"].as_i64().unwrap()).into();
|
user["stamina"]["stamina"] = (user["stamina"]["stamina"].as_i64().unwrap() + new_rank["maxLp"].as_i64().unwrap()).into();
|
||||||
user["stamina"]["last_updated_time"] = global::timestamp().into();
|
user["stamina"]["last_updated_time"] = global::timestamp().into();
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ pub fn update_mission_status_multi(master_mission_id: JsonValue, expire: u64, co
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
for (_i, mission) in master_mission_id.members().enumerate() {
|
for (_i, mission) in master_mission_id.members().enumerate() {
|
||||||
let val = update_mission_status(mission.as_i64().unwrap(), expire, completed, claimed, advance, missions);
|
let val = update_mission_status(mission.as_i64().unwrap(), expire, completed, claimed, advance, missions);
|
||||||
if !val.is_none() {
|
if val.is_some() {
|
||||||
rv.push(val.unwrap()).unwrap();
|
rv.push(val.unwrap()).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -363,14 +363,12 @@ pub fn advance_variable_mission(min: i64, max: i64, count: i64, missions: &mut J
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + count {
|
if mission_info["conditionNumber"].as_i64().unwrap() > mission_status["progress"].as_i64().unwrap() + count {
|
||||||
if !update_mission_status(i, 0, false, false, count, missions).is_none() {
|
if update_mission_status(i, 0, false, false, count, missions).is_some() {
|
||||||
rv.push(i).unwrap();
|
rv.push(i).unwrap();
|
||||||
}
|
}
|
||||||
} else {
|
} else if update_mission_status(i, 0, true, false, count, missions).is_some() {
|
||||||
if !update_mission_status(i, 0, true, false, count, missions).is_none() {
|
|
||||||
rv.push(i).unwrap();
|
rv.push(i).unwrap();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
rv
|
rv
|
||||||
|
@ -388,7 +386,7 @@ pub fn advance_mission(id: i64, count: i64, max: i64, missions: &mut JsonValue)
|
||||||
}
|
}
|
||||||
let completed = new == max;
|
let completed = new == max;
|
||||||
let advanced = new - mission["progress"].as_i64().unwrap();
|
let advanced = new - mission["progress"].as_i64().unwrap();
|
||||||
if !update_mission_status(id, 0, completed, false, advanced, missions).is_none() {
|
if update_mission_status(id, 0, completed, false, advanced, missions).is_some() {
|
||||||
return Some(id);
|
return Some(id);
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
|
@ -412,15 +410,13 @@ pub fn completed_daily_mission(id: i64, missions: &mut JsonValue) -> JsonValue {
|
||||||
}
|
}
|
||||||
|
|
||||||
if mission["progress"].as_i32().unwrap() == 4 {
|
if mission["progress"].as_i32().unwrap() == 4 {
|
||||||
if !update_mission_status(1224003, 0, true, false, 1, missions).is_none() {
|
if update_mission_status(1224003, 0, true, false, 1, missions).is_some() {
|
||||||
rv.push(1224003).unwrap();
|
rv.push(1224003).unwrap();
|
||||||
}
|
}
|
||||||
} else {
|
} else if update_mission_status(1224003, 0, false, false, 1, missions).is_some() {
|
||||||
if !update_mission_status(1224003, 0, false, false, 1, missions).is_none() {
|
|
||||||
rv.push(1224003).unwrap();
|
rv.push(1224003).unwrap();
|
||||||
}
|
}
|
||||||
}
|
if update_mission_status(id, next_reset, true, false, 1, missions).is_some() {
|
||||||
if !update_mission_status(id, next_reset, true, false, 1, missions).is_none() {
|
|
||||||
rv.push(id).unwrap();
|
rv.push(id).unwrap();
|
||||||
}
|
}
|
||||||
rv
|
rv
|
||||||
|
|
|
@ -100,26 +100,26 @@ pub fn guest(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
"status":0
|
"status":0
|
||||||
}).unwrap();
|
}).unwrap();
|
||||||
} else {
|
} else {
|
||||||
if friends["friend_user_id_list"].len() != 0 {
|
if !friends["friend_user_id_list"].is_empty() {
|
||||||
guest_list.push(global::get_user(friends["friend_user_id_list"][random_number(0, friends["friend_user_id_list"].len() - 1)].as_i64().unwrap(), &friends, false)).unwrap();
|
guest_list.push(global::get_user(friends["friend_user_id_list"][random_number(0, friends["friend_user_id_list"].len() - 1)].as_i64().unwrap(), &friends, false)).unwrap();
|
||||||
}
|
}
|
||||||
let expected: usize = 5;
|
let expected: usize = 5;
|
||||||
if guest_list.len() < expected {
|
if guest_list.len() < expected {
|
||||||
let mut random = userdata::get_random_uids((expected-guest_list.len()) as i32);
|
let mut random = userdata::get_random_uids((expected-guest_list.len()) as i32);
|
||||||
let index = random.members().into_iter().position(|r| *r.to_string() == user_id.to_string());
|
let index = random.members().position(|r| *r.to_string() == user_id.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
random.array_remove(index.unwrap());
|
random.array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (_i, uid) in random.members().enumerate() {
|
for (_i, uid) in random.members().enumerate() {
|
||||||
let guest = global::get_user(uid.as_i64().unwrap(), &friends, false);
|
let guest = global::get_user(uid.as_i64().unwrap(), &friends, false);
|
||||||
if guest["user"]["friend_request_disabled"].to_string() == "1" || guest.is_empty() {
|
if guest["user"]["friend_request_disabled"] == "1" || guest.is_empty() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
guest_list.push(guest).unwrap();
|
guest_list.push(guest).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if guest_list.len() == 0 {
|
if guest_list.is_empty() {
|
||||||
guest_list.push(object!{
|
guest_list.push(object!{
|
||||||
"user": {
|
"user": {
|
||||||
"name": "A sad Guest",
|
"name": "A sad Guest",
|
||||||
|
@ -244,7 +244,7 @@ pub fn update_live_data(user: &mut JsonValue, data: &JsonValue, add: bool) -> Js
|
||||||
|
|
||||||
let mut has = false;
|
let mut has = false;
|
||||||
for (_i, current) in user["live_list"].members_mut().enumerate() {
|
for (_i, current) in user["live_list"].members_mut().enumerate() {
|
||||||
if current["master_live_id"].to_string() == rv["master_live_id"].to_string() && (current["level"].to_string() == rv["level"].to_string() || data["level"].as_i32().unwrap() == 0) {
|
if current["master_live_id"] == rv["master_live_id"] && (current["level"] == rv["level"] || data["level"].as_i32().unwrap() == 0) {
|
||||||
has = true;
|
has = true;
|
||||||
if add {
|
if add {
|
||||||
rv["clear_count"] = (current["clear_count"].as_i64().unwrap() + 1).into();
|
rv["clear_count"] = (current["clear_count"].as_i64().unwrap() + 1).into();
|
||||||
|
@ -285,7 +285,7 @@ pub fn update_live_mission_data(user: &mut JsonValue, data: &JsonValue) {
|
||||||
};
|
};
|
||||||
|
|
||||||
for (_i, current) in user["live_mission_list"].members_mut().enumerate() {
|
for (_i, current) in user["live_mission_list"].members_mut().enumerate() {
|
||||||
if current["master_live_id"].to_string() == rv["master_live_id"].to_string() {
|
if current["master_live_id"] == rv["master_live_id"] {
|
||||||
for (_i, id) in data["clear_master_live_mission_ids"].members().enumerate() {
|
for (_i, id) in data["clear_master_live_mission_ids"].members().enumerate() {
|
||||||
if !current["clear_master_live_mission_ids"].contains(id.as_i32().unwrap()) {
|
if !current["clear_master_live_mission_ids"].contains(id.as_i32().unwrap()) {
|
||||||
current["clear_master_live_mission_ids"].push(id.as_i32().unwrap()).unwrap();
|
current["clear_master_live_mission_ids"].push(id.as_i32().unwrap()).unwrap();
|
||||||
|
@ -305,7 +305,7 @@ fn get_live_mission_completed_ids(user: &JsonValue, live_id: i64, score: i64, co
|
||||||
for (_i, data) in databases::MISSION_DATA.members().enumerate() {
|
for (_i, data) in databases::MISSION_DATA.members().enumerate() {
|
||||||
match data["type"].as_i32()? {
|
match data["type"].as_i32()? {
|
||||||
1 => {
|
1 => {
|
||||||
if live_info[&format!("score{}", data["value"].to_string())].as_i64()? <= score {
|
if live_info[&format!("score{}", data["value"])].as_i64()? <= score {
|
||||||
out.push(data["id"].as_i32()?).ok()?;
|
out.push(data["id"].as_i32()?).ok()?;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -334,7 +334,7 @@ fn get_live_mission_completed_ids(user: &JsonValue, live_id: i64, score: i64, co
|
||||||
}
|
}
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
for (_i, current) in user["live_mission_list"].members().enumerate() {
|
for (_i, current) in user["live_mission_list"].members().enumerate() {
|
||||||
if current["master_live_id"].to_string() == live_id.to_string() {
|
if current["master_live_id"] == live_id {
|
||||||
for (_i, id) in out.members().enumerate() {
|
for (_i, id) in out.members().enumerate() {
|
||||||
if !current["clear_master_live_mission_ids"].contains(id.as_i32().unwrap()) {
|
if !current["clear_master_live_mission_ids"].contains(id.as_i32().unwrap()) {
|
||||||
rv.push(id.as_i32().unwrap()).unwrap();
|
rv.push(id.as_i32().unwrap()).unwrap();
|
||||||
|
@ -372,11 +372,11 @@ fn give_mission_rewards(user: &mut JsonValue, missions: &JsonValue, user_mission
|
||||||
fn get_master_id(id: i64) -> i64 {
|
fn get_master_id(id: i64) -> i64 {
|
||||||
let id = id.to_string();
|
let id = id.to_string();
|
||||||
let mut masterid = 0;
|
let mut masterid = 0;
|
||||||
if id.starts_with("2") {
|
if id.starts_with('2') {
|
||||||
masterid += 9;
|
masterid += 9;
|
||||||
} else if id.starts_with("3") {
|
} else if id.starts_with('3') {
|
||||||
masterid += 9 + 9;
|
masterid += 9 + 9;
|
||||||
} else if id.starts_with("4") {
|
} else if id.starts_with('4') {
|
||||||
masterid += 9 + 9 + 12;
|
masterid += 9 + 9 + 12;
|
||||||
}
|
}
|
||||||
masterid + id.char_indices().last().unwrap().1.to_string().parse::<i64>().unwrap()
|
masterid + id.char_indices().last().unwrap().1.to_string().parse::<i64>().unwrap()
|
||||||
|
@ -415,15 +415,15 @@ fn get_live_character_list(lp_used: i32, deck_id: i32, user: &JsonValue, mission
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut index = characters_in_deck.members().into_iter().position(|r| r.as_i64().unwrap() == data["id"].as_i64().unwrap());
|
let mut index = characters_in_deck.members().position(|r| r.as_i64().unwrap() == data["id"].as_i64().unwrap());
|
||||||
if index.is_none() {
|
if index.is_none() {
|
||||||
index = characters_in_deck.members().into_iter().position(|r| r.as_i64().unwrap() == data["master_card_id"].as_i64().unwrap());
|
index = characters_in_deck.members().position(|r| r.as_i64().unwrap() == data["master_card_id"].as_i64().unwrap());
|
||||||
}
|
}
|
||||||
let exp = BOND_WEIGHT[index.unwrap_or(10)].as_i32().unwrap_or(0) * (lp_used / 10);
|
let exp = BOND_WEIGHT[index.unwrap_or(10)].as_i32().unwrap_or(0) * (lp_used / 10);
|
||||||
let additional_exp;
|
let additional_exp;
|
||||||
if has.contains(character) {
|
if has.contains(character) {
|
||||||
additional_exp = 0;
|
additional_exp = 0;
|
||||||
let j = has.members().into_iter().position(|r| r.as_i64().unwrap() == character).unwrap_or(10);
|
let j = has.members().position(|r| r.as_i64().unwrap() == character).unwrap_or(10);
|
||||||
if j != 10 {
|
if j != 10 {
|
||||||
let start = rv[has_i[j].as_usize().unwrap()]["before_exp"].as_i64().unwrap();
|
let start = rv[has_i[j].as_usize().unwrap()]["before_exp"].as_i64().unwrap();
|
||||||
let mut bond = start + exp as i64;
|
let mut bond = start + exp as i64;
|
||||||
|
@ -431,7 +431,7 @@ fn get_live_character_list(lp_used: i32, deck_id: i32, user: &JsonValue, mission
|
||||||
if bond > rv[has_i[j].as_usize().unwrap()]["exp"].as_i64().unwrap() {
|
if bond > rv[has_i[j].as_usize().unwrap()]["exp"].as_i64().unwrap() {
|
||||||
let completed = bond >= limit;
|
let completed = bond >= limit;
|
||||||
let mission = items::update_mission_status(mission_id, 0, completed, false, bond - start, missions);
|
let mission = items::update_mission_status(mission_id, 0, completed, false, bond - start, missions);
|
||||||
if !mission.is_none() {
|
if mission.is_some() {
|
||||||
completed_missions.push(mission.unwrap()).unwrap();
|
completed_missions.push(mission.unwrap()).unwrap();
|
||||||
}
|
}
|
||||||
rv[has_i[j].as_usize().unwrap()]["exp"] = bond.into();
|
rv[has_i[j].as_usize().unwrap()]["exp"] = bond.into();
|
||||||
|
@ -452,7 +452,7 @@ fn get_live_character_list(lp_used: i32, deck_id: i32, user: &JsonValue, mission
|
||||||
if !full && additional_exp > 0 {
|
if !full && additional_exp > 0 {
|
||||||
let completed = bond >= limit;
|
let completed = bond >= limit;
|
||||||
let mission = items::update_mission_status(mission_id, 0, completed, false, bond - start, missions);
|
let mission = items::update_mission_status(mission_id, 0, completed, false, bond - start, missions);
|
||||||
if !mission.is_none() {
|
if mission.is_some() {
|
||||||
completed_missions.push(mission.unwrap()).unwrap();
|
completed_missions.push(mission.unwrap()).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -493,7 +493,7 @@ fn live_end(req: &HttpRequest, body: &String, skipped: bool) -> JsonValue {
|
||||||
let mut cleared_missions = items::advance_variable_mission(1105001, 1105017, 1, &mut user_missions);
|
let mut cleared_missions = items::advance_variable_mission(1105001, 1105017, 1, &mut user_missions);
|
||||||
if body["master_live_id"].to_string().len() > 1 {
|
if body["master_live_id"].to_string().len() > 1 {
|
||||||
let id = body["master_live_id"].to_string().split("").collect::<Vec<_>>()[2].parse::<i64>().unwrap_or(0);
|
let id = body["master_live_id"].to_string().split("").collect::<Vec<_>>()[2].parse::<i64>().unwrap_or(0);
|
||||||
if id <= 4 && id >= 1 {
|
if (1..=4).contains(&id) {
|
||||||
let to_push = items::completed_daily_mission(1273009 + id - 1, &mut user_missions);
|
let to_push = items::completed_daily_mission(1273009 + id - 1, &mut user_missions);
|
||||||
for (_i, data) in to_push.members().enumerate() {
|
for (_i, data) in to_push.members().enumerate() {
|
||||||
cleared_missions.push(data.as_i32().unwrap()).unwrap();
|
cleared_missions.push(data.as_i32().unwrap()).unwrap();
|
||||||
|
@ -512,36 +512,32 @@ fn live_end(req: &HttpRequest, body: &String, skipped: bool) -> JsonValue {
|
||||||
missions = get_live_mission_completed_ids(&user, body["master_live_id"].as_i64().unwrap(), body["live_score"]["score"].as_i64().unwrap(), body["live_score"]["max_combo"].as_i64().unwrap(), live["clear_count"].as_i64().unwrap_or(0), body["level"].as_i64().unwrap(), is_full_combo, is_perfect).unwrap_or(array![]);
|
missions = get_live_mission_completed_ids(&user, body["master_live_id"].as_i64().unwrap(), body["live_score"]["score"].as_i64().unwrap(), body["live_score"]["max_combo"].as_i64().unwrap(), live["clear_count"].as_i64().unwrap_or(0), body["level"].as_i64().unwrap(), is_full_combo, is_perfect).unwrap_or(array![]);
|
||||||
|
|
||||||
if is_full_combo {
|
if is_full_combo {
|
||||||
if !items::advance_mission(1176001, 1, 1, &mut user_missions).is_none() {
|
if items::advance_mission(1176001, 1, 1, &mut user_missions).is_some() {
|
||||||
cleared_missions.push(1176001).unwrap();
|
cleared_missions.push(1176001).unwrap();
|
||||||
}
|
}
|
||||||
if !items::advance_mission(1176002, 1, 100, &mut user_missions).is_none() {
|
if items::advance_mission(1176002, 1, 100, &mut user_missions).is_some() {
|
||||||
cleared_missions.push(1176002).unwrap();
|
cleared_missions.push(1176002).unwrap();
|
||||||
}
|
}
|
||||||
if !items::advance_mission(1176003, 1, 200, &mut user_missions).is_none() {
|
if items::advance_mission(1176003, 1, 200, &mut user_missions).is_some() {
|
||||||
cleared_missions.push(1176003).unwrap();
|
cleared_missions.push(1176003).unwrap();
|
||||||
}
|
}
|
||||||
if !items::advance_mission(1176004, 1, 300, &mut user_missions).is_none() {
|
if items::advance_mission(1176004, 1, 300, &mut user_missions).is_some() {
|
||||||
cleared_missions.push(1176004).unwrap();
|
cleared_missions.push(1176004).unwrap();
|
||||||
}
|
}
|
||||||
if !items::advance_mission(1176005, 1, 400, &mut user_missions).is_none() {
|
if items::advance_mission(1176005, 1, 400, &mut user_missions).is_some() {
|
||||||
cleared_missions.push(1176005).unwrap();
|
cleared_missions.push(1176005).unwrap();
|
||||||
}
|
}
|
||||||
if !items::advance_mission(1176006, 1, 500, &mut user_missions).is_none() {
|
if items::advance_mission(1176006, 1, 500, &mut user_missions).is_some() {
|
||||||
cleared_missions.push(1176006).unwrap();
|
cleared_missions.push(1176006).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if is_perfect {
|
if is_perfect && items::advance_mission(1177001, 1, 1, &mut user_missions).is_some() {
|
||||||
if !items::advance_mission(1177001, 1, 1, &mut user_missions).is_none() {
|
|
||||||
cleared_missions.push(1177001).unwrap();
|
cleared_missions.push(1177001).unwrap();
|
||||||
}
|
}
|
||||||
}
|
if is_perfect && body["level"].as_i32().unwrap() == 4 && items::advance_mission(1177002, 1, 1, &mut user_missions).is_some() {
|
||||||
if is_perfect && body["level"].as_i32().unwrap() == 4 {
|
|
||||||
if !items::advance_mission(1177002, 1, 1, &mut user_missions).is_none() {
|
|
||||||
cleared_missions.push(1177002).unwrap();
|
cleared_missions.push(1177002).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
update_live_mission_data(&mut user, &object!{
|
update_live_mission_data(&mut user, &object!{
|
||||||
master_live_id: body["master_live_id"].as_i64().unwrap(),
|
master_live_id: body["master_live_id"].as_i64().unwrap(),
|
||||||
|
|
|
@ -11,11 +11,11 @@ pub fn tutorial(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let id = body["master_character_id"].to_string();
|
let id = body["master_character_id"].to_string();
|
||||||
let user = &id[id.len() - 2..].parse::<i32>().unwrap();
|
let user = &id[id.len() - 2..].parse::<i32>().unwrap();
|
||||||
let mut lotteryid = 9110000;
|
let mut lotteryid = 9110000;
|
||||||
if id.starts_with("2") {
|
if id.starts_with('2') {
|
||||||
lotteryid += 9; //muse
|
lotteryid += 9; //muse
|
||||||
} else if id.starts_with("3") {
|
} else if id.starts_with('3') {
|
||||||
lotteryid += 9 + 9; //aquors
|
lotteryid += 9 + 9; //aquors
|
||||||
} else if id.starts_with("4") {
|
} else if id.starts_with('4') {
|
||||||
lotteryid += 9 + 9 + 12; //nijigasaki
|
lotteryid += 9 + 9 + 12; //nijigasaki
|
||||||
}
|
}
|
||||||
lotteryid += user;
|
lotteryid += user;
|
||||||
|
@ -52,7 +52,7 @@ fn get_random_card(item: &JsonValue, rv: &mut JsonValue, rng: &mut rand::rngs::T
|
||||||
let mut random_id = 0;
|
let mut random_id = 0;
|
||||||
while random_id == 0 {
|
while random_id == 0 {
|
||||||
let card = rng.gen_range(1..databases::POOL[lottery_id.to_string()][databases::POOL[lottery_id.to_string()].len() - 1].as_i64().unwrap() + 1);
|
let card = rng.gen_range(1..databases::POOL[lottery_id.to_string()][databases::POOL[lottery_id.to_string()].len() - 1].as_i64().unwrap() + 1);
|
||||||
if !get_card_master_id(lottery_id.to_string(), card.to_string()).is_none() {
|
if get_card_master_id(lottery_id.to_string(), card.to_string()).is_some() {
|
||||||
random_id = card;
|
random_id = card;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ fn get_random_card(item: &JsonValue, rv: &mut JsonValue, rng: &mut rand::rngs::T
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_random_cards(id: i64, mut count: usize) -> JsonValue {
|
fn get_random_cards(id: i64, mut count: usize) -> JsonValue {
|
||||||
let total_ratio: i64 = databases::RARITY[id.to_string()].members().into_iter().map(|item| if item["ensured"].as_i32().unwrap() == 1 { 0 } else { item["ratio"].as_i64().unwrap() }).sum();
|
let total_ratio: i64 = databases::RARITY[id.to_string()].members().map(|item| if item["ensured"].as_i32().unwrap() == 1 { 0 } else { item["ratio"].as_i64().unwrap() }).sum();
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
let mut rv = array![];
|
let mut rv = array![];
|
||||||
let mut promised = false;
|
let mut promised = false;
|
||||||
|
@ -75,7 +75,7 @@ fn get_random_cards(id: i64, mut count: usize) -> JsonValue {
|
||||||
if count > 1 {
|
if count > 1 {
|
||||||
for (_i, item) in databases::RARITY[id.to_string()].members().enumerate() {
|
for (_i, item) in databases::RARITY[id.to_string()].members().enumerate() {
|
||||||
if item["ensured"].as_i32().unwrap() == 1 {
|
if item["ensured"].as_i32().unwrap() == 1 {
|
||||||
get_random_card(&item, &mut rv, &mut rng);
|
get_random_card(item, &mut rv, &mut rng);
|
||||||
promised = true;
|
promised = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ fn get_random_cards(id: i64, mut count: usize) -> JsonValue {
|
||||||
for (_i, item) in databases::RARITY[id.to_string()].members().enumerate() {
|
for (_i, item) in databases::RARITY[id.to_string()].members().enumerate() {
|
||||||
cumulative_ratio += item["ratio"].as_i64().unwrap();
|
cumulative_ratio += item["ratio"].as_i64().unwrap();
|
||||||
if random_number <= cumulative_ratio {
|
if random_number <= cumulative_ratio {
|
||||||
get_random_card(&item, &mut rv, &mut rng);
|
get_random_card(item, &mut rv, &mut rng);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,17 +21,17 @@ pub fn serial_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
let mut user = userdata::get_acc_home(&key);
|
let mut user = userdata::get_acc_home(&key);
|
||||||
|
|
||||||
let itemz;
|
let itemz;
|
||||||
if body["input_code"].to_string() == "SIF2REVIVALREAL!" {
|
if body["input_code"] == "SIF2REVIVALREAL!" {
|
||||||
itemz = array![items::gift_item_basic(1, 100000, 4, "Another game died... This makes me sad :(", &mut user)];
|
itemz = array![items::gift_item_basic(1, 100000, 4, "Another game died... This makes me sad :(", &mut user)];
|
||||||
} else if body["input_code"].to_string() == "pweasegivegems11" {
|
} else if body["input_code"] == "pweasegivegems11" {
|
||||||
itemz = array![items::gift_item_basic(1, 6000, 1, "Only because you asked...", &mut user)];
|
itemz = array![items::gift_item_basic(1, 6000, 1, "Only because you asked...", &mut user)];
|
||||||
} else if body["input_code"].to_string() == "sleepysleepyslep" {
|
} else if body["input_code"] == "sleepysleepyslep" {
|
||||||
itemz = array![items::gift_item_basic(15540001, 50, 3, "I am tired", &mut user)];
|
itemz = array![items::gift_item_basic(15540001, 50, 3, "I am tired", &mut user)];
|
||||||
} else if body["input_code"].to_string() == "ilikeganyu!!!!!!" {
|
} else if body["input_code"] == "ilikeganyu!!!!!!" {
|
||||||
itemz = array![items::gift_item_basic(16005003, 100, 3, "I need more primogems", &mut user)];
|
itemz = array![items::gift_item_basic(16005003, 100, 3, "I need more primogems", &mut user)];
|
||||||
} else if body["input_code"].to_string() == "serial_code" {
|
} else if body["input_code"] == "serial_code" {
|
||||||
itemz = array![items::gift_item_basic(17001003, 100, 3, "nyaa~", &mut user)];
|
itemz = array![items::gift_item_basic(17001003, 100, 3, "nyaa~", &mut user)];
|
||||||
} else if body["input_code"].to_string() == "ganuy" {
|
} else if body["input_code"] == "ganuy" {
|
||||||
itemz = array![
|
itemz = array![
|
||||||
items::gift_item_basic(40010015, 1, 2, "I need more primogem!!!!!!", &mut user),
|
items::gift_item_basic(40010015, 1, 2, "I need more primogem!!!!!!", &mut user),
|
||||||
items::gift_item_basic(30010015, 1, 2, "I need more primogem!!!!!!", &mut user),
|
items::gift_item_basic(30010015, 1, 2, "I need more primogem!!!!!!", &mut user),
|
||||||
|
@ -42,7 +42,7 @@ pub fn serial_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
items::gift_item_basic(40030013, 1, 2, "I need more primogem!!!!!!", &mut user),
|
items::gift_item_basic(40030013, 1, 2, "I need more primogem!!!!!!", &mut user),
|
||||||
items::gift_item_basic(10070016, 1, 2, "I need more primogem!!!!!!", &mut user)
|
items::gift_item_basic(10070016, 1, 2, "I need more primogem!!!!!!", &mut user)
|
||||||
];
|
];
|
||||||
} else if body["input_code"].to_string() == "kode" {
|
} else if body["input_code"] == "kode" {
|
||||||
itemz = array![
|
itemz = array![
|
||||||
items::gift_item_basic(10060018, 1, 2, "meow", &mut user),
|
items::gift_item_basic(10060018, 1, 2, "meow", &mut user),
|
||||||
items::gift_item_basic(20050019, 1, 2, "meow", &mut user),
|
items::gift_item_basic(20050019, 1, 2, "meow", &mut user),
|
||||||
|
@ -50,7 +50,7 @@ pub fn serial_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
items::gift_item_basic(10010014, 1, 2, "meow", &mut user),
|
items::gift_item_basic(10010014, 1, 2, "meow", &mut user),
|
||||||
items::gift_item_basic(10010015, 1, 2, "meow", &mut user)
|
items::gift_item_basic(10010015, 1, 2, "meow", &mut user)
|
||||||
];
|
];
|
||||||
} else if body["input_code"].to_string() == "meow" {
|
} else if body["input_code"] == "meow" {
|
||||||
itemz = array![
|
itemz = array![
|
||||||
items::gift_item_basic(10010020, 1, 2, "I need more primogem!!!!!!", &mut user),
|
items::gift_item_basic(10010020, 1, 2, "I need more primogem!!!!!!", &mut user),
|
||||||
items::gift_item_basic(10040016, 1, 2, "I need more primogem!!!!!!", &mut user),
|
items::gift_item_basic(10040016, 1, 2, "I need more primogem!!!!!!", &mut user),
|
||||||
|
@ -74,7 +74,7 @@ pub fn serial_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
items::gift_item_basic(40080011, 1, 2, "I need more primogem!!!!!!", &mut user),
|
items::gift_item_basic(40080011, 1, 2, "I need more primogem!!!!!!", &mut user),
|
||||||
items::gift_item_basic(40090011, 1, 2, "I need more primogem!!!!!!", &mut user)
|
items::gift_item_basic(40090011, 1, 2, "I need more primogem!!!!!!", &mut user)
|
||||||
];
|
];
|
||||||
} else if body["input_code"].to_string() == "HuTao" {
|
} else if body["input_code"] == "HuTao" {
|
||||||
itemz = array![
|
itemz = array![
|
||||||
items::gift_item_basic(15500001, 500, 3, "Okay...............", &mut user),
|
items::gift_item_basic(15500001, 500, 3, "Okay...............", &mut user),
|
||||||
items::gift_item_basic(15500002, 500, 3, "Okay...............", &mut user),
|
items::gift_item_basic(15500002, 500, 3, "Okay...............", &mut user),
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::encryption;
|
||||||
use crate::router::{userdata, global};
|
use crate::router::{userdata, global};
|
||||||
|
|
||||||
fn get_asset_hash(req: &HttpRequest, body: &JsonValue) -> String {
|
fn get_asset_hash(req: &HttpRequest, body: &JsonValue) -> String {
|
||||||
if body["asset_version"].to_string() != global::ASSET_VERSION && body["asset_version"].to_string() != global::ASSET_VERSION_JP {
|
if body["asset_version"] != global::ASSET_VERSION && body["asset_version"] != global::ASSET_VERSION_JP {
|
||||||
println!("Warning! Asset version is not what was expected. (Did the app update?)");
|
println!("Warning! Asset version is not what was expected. (Did the app update?)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,20 +13,18 @@ fn get_asset_hash(req: &HttpRequest, body: &JsonValue) -> String {
|
||||||
let platform = req.headers().get("aoharu-platform").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let platform = req.headers().get("aoharu-platform").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
let android = !platform.to_lowercase().contains("iphone");
|
let android = !platform.to_lowercase().contains("iphone");
|
||||||
|
|
||||||
let hash = if body["asset_version"].to_string() == global::ASSET_VERSION_JP {
|
let hash = if body["asset_version"] == global::ASSET_VERSION_JP {
|
||||||
if android {
|
if android {
|
||||||
global::ASSET_HASH_ANDROID_JP
|
global::ASSET_HASH_ANDROID_JP
|
||||||
} else {
|
} else {
|
||||||
global::ASSET_HASH_IOS_JP
|
global::ASSET_HASH_IOS_JP
|
||||||
}
|
}
|
||||||
} else {
|
} else if android {
|
||||||
if android {
|
|
||||||
global::ASSET_HASH_ANDROID
|
global::ASSET_HASH_ANDROID
|
||||||
} else {
|
} else {
|
||||||
global::ASSET_HASH_IOS
|
global::ASSET_HASH_IOS
|
||||||
}
|
|
||||||
};
|
};
|
||||||
return hash.to_string();
|
hash.to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn asset_hash(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn asset_hash(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
|
@ -72,10 +72,10 @@ pub fn gift(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
for (_i, gift_id) in body["gift_ids"].members().enumerate() {
|
for (_i, gift_id) in body["gift_ids"].members().enumerate() {
|
||||||
let mut to_remove = 0;
|
let mut to_remove = 0;
|
||||||
for (j, data) in user["home"]["gift_list"].members_mut().enumerate() {
|
for (j, data) in user["home"]["gift_list"].members_mut().enumerate() {
|
||||||
if data["id"].to_string() != gift_id.to_string() {
|
if data["id"] != *gift_id {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if !items::give_gift(&data, &mut userr, &mut missions, &mut cleared_missions) {
|
if !items::give_gift(data, &mut userr, &mut missions, &mut cleared_missions) {
|
||||||
failed.push(gift_id.clone()).unwrap();
|
failed.push(gift_id.clone()).unwrap();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -192,33 +192,33 @@ pub fn announcement(req: HttpRequest) -> HttpResponse {
|
||||||
|
|
||||||
pub fn uid_to_code(uid: String) -> String {
|
pub fn uid_to_code(uid: String) -> String {
|
||||||
//just replace uid with numbers because im too lazy to have a real database and this is close enough anyways
|
//just replace uid with numbers because im too lazy to have a real database and this is close enough anyways
|
||||||
return uid
|
uid
|
||||||
.replace("1", "A")
|
.replace('1', "A")
|
||||||
.replace("2", "G")
|
.replace('2', "G")
|
||||||
.replace("3", "W")
|
.replace('3', "W")
|
||||||
.replace("4", "Q")
|
.replace('4', "Q")
|
||||||
.replace("5", "Y")
|
.replace('5', "Y")
|
||||||
.replace("6", "6")
|
.replace('6', "6")
|
||||||
.replace("7", "I")
|
.replace('7', "I")
|
||||||
.replace("8", "P")
|
.replace('8', "P")
|
||||||
.replace("9", "U")
|
.replace('9', "U")
|
||||||
.replace("0", "M")
|
.replace('0', "M")
|
||||||
+ "7";
|
+ "7"
|
||||||
}
|
}
|
||||||
pub fn code_to_uid(code: String) -> String {
|
pub fn code_to_uid(code: String) -> String {
|
||||||
//just replace uid with numbers because im too lazy to have a real database and this is close enough anyways
|
//just replace uid with numbers because im too lazy to have a real database and this is close enough anyways
|
||||||
return code
|
code
|
||||||
.replace("7", "")
|
.replace('7', "")
|
||||||
.replace("A", "1")
|
.replace('A', "1")
|
||||||
.replace("G", "2")
|
.replace('G', "2")
|
||||||
.replace("W", "3")
|
.replace('W', "3")
|
||||||
.replace("Q", "4")
|
.replace('Q', "4")
|
||||||
.replace("Y", "5")
|
.replace('Y', "5")
|
||||||
.replace("6", "6")
|
.replace('6', "6")
|
||||||
.replace("I", "7")
|
.replace('I', "7")
|
||||||
.replace("P", "8")
|
.replace('P', "8")
|
||||||
.replace("U", "9")
|
.replace('U', "9")
|
||||||
.replace("M", "0");
|
.replace('M', "0")
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_migration_code(req: HttpRequest, body: String) -> HttpResponse {
|
pub fn get_migration_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
@ -260,7 +260,7 @@ pub fn verify_migration_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
||||||
let user = userdata::get_acc_transfer(uid, &body["migrationCode"].to_string(), &body["pass"].to_string());
|
let user = userdata::get_acc_transfer(uid, &body["migrationCode"].to_string(), &body["pass"].to_string());
|
||||||
|
|
||||||
if user["success"].as_bool().unwrap() == false || uid == 0 {
|
if !user["success"].as_bool().unwrap() || uid == 0 {
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 2,
|
"code": 2,
|
||||||
"server_time": global::timestamp(),
|
"server_time": global::timestamp(),
|
||||||
|
@ -290,7 +290,7 @@ pub fn request_migration_code(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
||||||
let user = userdata::get_acc_transfer(uid, &body["migrationCode"].to_string(), &body["pass"].to_string());
|
let user = userdata::get_acc_transfer(uid, &body["migrationCode"].to_string(), &body["pass"].to_string());
|
||||||
|
|
||||||
if user["success"].as_bool().unwrap() != true || uid == 0 {
|
if !user["success"].as_bool().unwrap() || uid == 0 {
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
"code": 2,
|
"code": 2,
|
||||||
"server_time": global::timestamp(),
|
"server_time": global::timestamp(),
|
||||||
|
@ -448,15 +448,15 @@ pub fn initialize(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
||||||
let cardstoreward: JsonValue;
|
let cardstoreward: JsonValue;
|
||||||
let mut masterid = 3000000;
|
let mut masterid = 3000000;
|
||||||
if id.starts_with("1") {
|
if id.starts_with('1') {
|
||||||
cardstoreward = array![10010001, 10020001, 10030001, 10040001, 10050001, 10060001, 10070001, 10080001, 10090001]; //muse
|
cardstoreward = array![10010001, 10020001, 10030001, 10040001, 10050001, 10060001, 10070001, 10080001, 10090001]; //muse
|
||||||
} else if id.starts_with("2") {
|
} else if id.starts_with('2') {
|
||||||
cardstoreward = array![20010001, 20020001, 20030001, 20040001, 20050001, 20060001, 20070001, 20080001, 20090001]; //aqours
|
cardstoreward = array![20010001, 20020001, 20030001, 20040001, 20050001, 20060001, 20070001, 20080001, 20090001]; //aqours
|
||||||
masterid += 9; //muse
|
masterid += 9; //muse
|
||||||
} else if id.starts_with("3") {
|
} else if id.starts_with('3') {
|
||||||
cardstoreward = array![30010001, 30020001, 30030001, 30040001, 30050001, 30060001, 30070001, 30080001, 30090001, 30100001, 30110001]; //nijigasaki
|
cardstoreward = array![30010001, 30020001, 30030001, 30040001, 30050001, 30060001, 30070001, 30080001, 30090001, 30100001, 30110001]; //nijigasaki
|
||||||
masterid += 9 + 9; //aqours
|
masterid += 9 + 9; //aqours
|
||||||
} else if id.starts_with("4") {
|
} else if id.starts_with('4') {
|
||||||
cardstoreward = array![40010001, 40020001, 40030001, 40040001, 40050001, 40060001, 40070001, 40080001, 40090001]; //liella
|
cardstoreward = array![40010001, 40020001, 40030001, 40040001, 40050001, 40060001, 40070001, 40080001, 40090001]; //liella
|
||||||
masterid += 9 + 9 + 12; //nijigasaki
|
masterid += 9 + 9 + 12; //nijigasaki
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -74,7 +74,7 @@ fn acc_exists(uid: i64) -> bool {
|
||||||
DATABASE.lock_and_select("SELECT user_id FROM userdata WHERE user_id=?1", params!(uid)).is_ok()
|
DATABASE.lock_and_select("SELECT user_id FROM userdata WHERE user_id=?1", params!(uid)).is_ok()
|
||||||
}
|
}
|
||||||
fn get_key(auth_key: &str) -> i64 {
|
fn get_key(auth_key: &str) -> i64 {
|
||||||
let uid = get_uid(&auth_key);
|
let uid = get_uid(auth_key);
|
||||||
let key = if uid == 0 {
|
let key = if uid == 0 {
|
||||||
generate_uid()
|
generate_uid()
|
||||||
} else {
|
} else {
|
||||||
|
@ -82,7 +82,7 @@ fn get_key(auth_key: &str) -> i64 {
|
||||||
};
|
};
|
||||||
|
|
||||||
if !acc_exists(key) {
|
if !acc_exists(key) {
|
||||||
create_acc(key, &auth_key);
|
create_acc(key, auth_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
key
|
key
|
||||||
|
@ -160,7 +160,7 @@ fn create_acc(uid: i64, login: &str) {
|
||||||
|
|
||||||
fn get_uid(token: &str) -> i64 {
|
fn get_uid(token: &str) -> i64 {
|
||||||
let data = DATABASE.lock_and_select("SELECT user_id FROM tokens WHERE token = ?1;", params!(token));
|
let data = DATABASE.lock_and_select("SELECT user_id FROM tokens WHERE token = ?1;", params!(token));
|
||||||
if !data.is_ok() {
|
if data.is_err() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let data = data.unwrap();
|
let data = data.unwrap();
|
||||||
|
@ -170,7 +170,7 @@ fn get_uid(token: &str) -> i64 {
|
||||||
// Needed by gree
|
// Needed by gree
|
||||||
pub fn get_login_token(uid: i64) -> String {
|
pub fn get_login_token(uid: i64) -> String {
|
||||||
let data = DATABASE.lock_and_select("SELECT token FROM tokens WHERE user_id=?1", params!(uid));
|
let data = DATABASE.lock_and_select("SELECT token FROM tokens WHERE user_id=?1", params!(uid));
|
||||||
if !data.is_ok() {
|
if data.is_err() {
|
||||||
return String::new();
|
return String::new();
|
||||||
}
|
}
|
||||||
data.unwrap()
|
data.unwrap()
|
||||||
|
@ -207,7 +207,7 @@ fn cleanup_account(user: &mut JsonValue) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_data(auth_key: &str, row: &str) -> JsonValue {
|
fn get_data(auth_key: &str, row: &str) -> JsonValue {
|
||||||
let key = get_key(&auth_key);
|
let key = get_key(auth_key);
|
||||||
|
|
||||||
let result = DATABASE.lock_and_select(&format!("SELECT {} FROM {} WHERE user_id=?1", row, row), params!(key));
|
let result = DATABASE.lock_and_select(&format!("SELECT {} FROM {} WHERE user_id=?1", row, row), params!(key));
|
||||||
|
|
||||||
|
@ -219,14 +219,14 @@ pub fn get_acc(auth_key: &str) -> JsonValue {
|
||||||
cleanup_account(&mut user);
|
cleanup_account(&mut user);
|
||||||
|
|
||||||
items::lp_modification(&mut user, 0, false);
|
items::lp_modification(&mut user, 0, false);
|
||||||
return user;
|
user
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_acc_home(auth_key: &str) -> JsonValue {
|
pub fn get_acc_home(auth_key: &str) -> JsonValue {
|
||||||
let mut user = get_data(auth_key, "userhome");
|
let mut user = get_data(auth_key, "userhome");
|
||||||
user["home"]["pending_friend_count"] = get_acc_friends(auth_key)["pending_user_id_list"].len().into();
|
user["home"]["pending_friend_count"] = get_acc_friends(auth_key)["pending_user_id_list"].len().into();
|
||||||
|
|
||||||
return user;
|
user
|
||||||
}
|
}
|
||||||
pub fn get_acc_missions(auth_key: &str) -> JsonValue {
|
pub fn get_acc_missions(auth_key: &str) -> JsonValue {
|
||||||
get_data(auth_key, "missions")
|
get_data(auth_key, "missions")
|
||||||
|
@ -258,13 +258,13 @@ pub fn get_acc_eventlogin(auth_key: &str) -> JsonValue {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save_data(auth_key: &str, row: &str, data: JsonValue) {
|
pub fn save_data(auth_key: &str, row: &str, data: JsonValue) {
|
||||||
let key = get_key(&auth_key);
|
let key = get_key(auth_key);
|
||||||
|
|
||||||
DATABASE.lock_and_exec(&format!("UPDATE {} SET {}=?1 WHERE user_id=?2", row, row), params!(json::stringify(data), key));
|
DATABASE.lock_and_exec(&format!("UPDATE {} SET {}=?1 WHERE user_id=?2", row, row), params!(json::stringify(data), key));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save_acc(auth_key: &str, data: JsonValue) {
|
pub fn save_acc(auth_key: &str, data: JsonValue) {
|
||||||
DATABASE.lock_and_exec("UPDATE userdata SET friend_request_disabled=?1 WHERE user_id=?2", params!(data["user"]["friend_request_disabled"].as_i32().unwrap(), get_key(&auth_key)));
|
DATABASE.lock_and_exec("UPDATE userdata SET friend_request_disabled=?1 WHERE user_id=?2", params!(data["user"]["friend_request_disabled"].as_i32().unwrap(), get_key(auth_key)));
|
||||||
save_data(auth_key, "userdata", data);
|
save_data(auth_key, "userdata", data);
|
||||||
}
|
}
|
||||||
pub fn save_acc_home(auth_key: &str, data: JsonValue) {
|
pub fn save_acc_home(auth_key: &str, data: JsonValue) {
|
||||||
|
@ -307,15 +307,15 @@ fn hash_password(password: &str) -> String {
|
||||||
let hashed_password = hasher.finalize();
|
let hashed_password = hasher.finalize();
|
||||||
|
|
||||||
let salt_hash = [&salt[..], &hashed_password[..]].concat();
|
let salt_hash = [&salt[..], &hashed_password[..]].concat();
|
||||||
general_purpose::STANDARD.encode(&salt_hash)
|
general_purpose::STANDARD.encode(salt_hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn verify_password(password: &str, salted_hash: &str) -> bool {
|
fn verify_password(password: &str, salted_hash: &str) -> bool {
|
||||||
if password == "" || salted_hash == "" {
|
if password.is_empty() || salted_hash.is_empty() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
let bytes = general_purpose::STANDARD.decode(salted_hash);
|
let bytes = general_purpose::STANDARD.decode(salted_hash);
|
||||||
if !bytes.is_ok() {
|
if bytes.is_err() {
|
||||||
return password == salted_hash;
|
return password == salted_hash;
|
||||||
}
|
}
|
||||||
let bytes = bytes.unwrap();
|
let bytes = bytes.unwrap();
|
||||||
|
@ -335,7 +335,7 @@ fn verify_password(password: &str, salted_hash: &str) -> bool {
|
||||||
|
|
||||||
pub fn get_acc_transfer(uid: i64, token: &str, password: &str) -> JsonValue {
|
pub fn get_acc_transfer(uid: i64, token: &str, password: &str) -> JsonValue {
|
||||||
let data = DATABASE.lock_and_select("SELECT password FROM migration WHERE token=?1", params!(token));
|
let data = DATABASE.lock_and_select("SELECT password FROM migration WHERE token=?1", params!(token));
|
||||||
if !data.is_ok() {
|
if data.is_err() {
|
||||||
return object!{success: false};
|
return object!{success: false};
|
||||||
}
|
}
|
||||||
if verify_password(password, &data.unwrap()) {
|
if verify_password(password, &data.unwrap()) {
|
||||||
|
@ -371,7 +371,7 @@ pub fn get_name_and_rank(uid: i64) -> JsonValue {
|
||||||
let result = DATABASE.lock_and_select("SELECT userdata FROM userdata WHERE user_id=?1", params!(uid));
|
let result = DATABASE.lock_and_select("SELECT userdata FROM userdata WHERE user_id=?1", params!(uid));
|
||||||
let data = json::parse(&result.unwrap()).unwrap();
|
let data = json::parse(&result.unwrap()).unwrap();
|
||||||
|
|
||||||
return object!{
|
object!{
|
||||||
user_name: data["user"]["name"].clone(),
|
user_name: data["user"]["name"].clone(),
|
||||||
user_rank: items::get_user_rank_data(data["user"]["exp"].as_i64().unwrap())["rank"].clone() //todo
|
user_rank: items::get_user_rank_data(data["user"]["exp"].as_i64().unwrap())["rank"].clone() //todo
|
||||||
}
|
}
|
||||||
|
@ -414,12 +414,12 @@ pub fn friend_request_approve(uid: i64, requestor: i64, accepted: bool, key: &st
|
||||||
let uid = get_uid(&login_token);
|
let uid = get_uid(&login_token);
|
||||||
let friends = DATABASE.lock_and_select("SELECT friends FROM friends WHERE user_id=?1", params!(uid));
|
let friends = DATABASE.lock_and_select("SELECT friends FROM friends WHERE user_id=?1", params!(uid));
|
||||||
let mut friends = json::parse(&friends.unwrap()).unwrap();
|
let mut friends = json::parse(&friends.unwrap()).unwrap();
|
||||||
let index = friends[key].members().into_iter().position(|r| *r.to_string() == requestor.to_string());
|
let index = friends[key].members().position(|r| *r.to_string() == requestor.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
friends[key].array_remove(index.unwrap());
|
friends[key].array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
let index = friends["request_user_id_list"].members().into_iter().position(|r| *r.to_string() == requestor.to_string());
|
let index = friends["request_user_id_list"].members().position(|r| *r.to_string() == requestor.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
friends["request_user_id_list"].array_remove(index.unwrap());
|
friends["request_user_id_list"].array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
if accepted && !friends["friend_user_id_list"].contains(requestor) && friends["friend_user_id_list"].len() < crate::router::friend::FRIEND_LIMIT {
|
if accepted && !friends["friend_user_id_list"].contains(requestor) && friends["friend_user_id_list"].len() < crate::router::friend::FRIEND_LIMIT {
|
||||||
|
@ -436,7 +436,7 @@ pub fn friend_request_disabled(uid: i64) -> bool {
|
||||||
let uid = get_uid(&login_token);
|
let uid = get_uid(&login_token);
|
||||||
let user = DATABASE.lock_and_select("SELECT userdata FROM userdata WHERE user_id=?1", params!(uid));
|
let user = DATABASE.lock_and_select("SELECT userdata FROM userdata WHERE user_id=?1", params!(uid));
|
||||||
let user = json::parse(&user.unwrap()).unwrap();
|
let user = json::parse(&user.unwrap()).unwrap();
|
||||||
user["user"]["friend_request_disabled"].to_string() == "1"
|
user["user"]["friend_request_disabled"] == "1"
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn friend_remove(uid: i64, requestor: i64) {
|
pub fn friend_remove(uid: i64, requestor: i64) {
|
||||||
|
@ -447,8 +447,8 @@ pub fn friend_remove(uid: i64, requestor: i64) {
|
||||||
let uid = get_uid(&login_token);
|
let uid = get_uid(&login_token);
|
||||||
let friends = DATABASE.lock_and_select("SELECT friends FROM friends WHERE user_id=?1", params!(uid));
|
let friends = DATABASE.lock_and_select("SELECT friends FROM friends WHERE user_id=?1", params!(uid));
|
||||||
let mut friends = json::parse(&friends.unwrap()).unwrap();
|
let mut friends = json::parse(&friends.unwrap()).unwrap();
|
||||||
let index = friends["friend_user_id_list"].members().into_iter().position(|r| *r.to_string() == requestor.to_string());
|
let index = friends["friend_user_id_list"].members().position(|r| *r.to_string() == requestor.to_string());
|
||||||
if !index.is_none() {
|
if index.is_some() {
|
||||||
friends["friend_user_id_list"].array_remove(index.unwrap());
|
friends["friend_user_id_list"].array_remove(index.unwrap());
|
||||||
}
|
}
|
||||||
DATABASE.lock_and_exec("UPDATE friends SET friends=?1 WHERE user_id=?2", params!(json::stringify(friends), uid));
|
DATABASE.lock_and_exec("UPDATE friends SET friends=?1 WHERE user_id=?2", params!(json::stringify(friends), uid));
|
||||||
|
@ -479,9 +479,9 @@ fn create_webui_token() -> String {
|
||||||
|
|
||||||
pub fn webui_login(uid: i64, password: &str) -> Result<String, String> {
|
pub fn webui_login(uid: i64, password: &str) -> Result<String, String> {
|
||||||
create_webui_store();
|
create_webui_store();
|
||||||
let pass = DATABASE.lock_and_select("SELECT password FROM migration WHERE token=?1", params!(crate::router::user::uid_to_code(uid.to_string()))).unwrap_or(String::new());
|
let pass = DATABASE.lock_and_select("SELECT password FROM migration WHERE token=?1", params!(crate::router::user::uid_to_code(uid.to_string()))).unwrap_or_default();
|
||||||
if !verify_password(password, &pass) {
|
if !verify_password(password, &pass) {
|
||||||
if acc_exists(uid) && pass == "" {
|
if acc_exists(uid) && pass.is_empty() {
|
||||||
return Err(String::from("Migration token not set. Set token in game settings."));
|
return Err(String::from("Migration token not set. Set token in game settings."));
|
||||||
}
|
}
|
||||||
return Err(String::from("User/password don't match"));
|
return Err(String::from("User/password don't match"));
|
||||||
|
@ -516,22 +516,22 @@ pub fn webui_import_user(user: JsonValue) -> Result<JsonValue, String> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn webui_login_token(token: &str) -> Option<String> {
|
fn webui_login_token(token: &str) -> Option<String> {
|
||||||
let uid = DATABASE.lock_and_select("SELECT user_id FROM webui WHERE token=?1", params!(token)).unwrap_or(String::new());
|
let uid = DATABASE.lock_and_select("SELECT user_id FROM webui WHERE token=?1", params!(token)).unwrap_or_default();
|
||||||
if uid == String::new() || token == "" {
|
if uid == String::new() || token.is_empty() {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let uid = uid.parse::<i64>().unwrap_or(0);
|
let uid = uid.parse::<i64>().unwrap_or(0);
|
||||||
if uid == 0 {
|
if uid == 0 {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let last_login = DATABASE.lock_and_select("SELECT last_login FROM webui WHERE user_id=?1", params!(uid)).unwrap_or(String::new()).parse::<i64>().unwrap_or(0);
|
let last_login = DATABASE.lock_and_select("SELECT last_login FROM webui WHERE user_id=?1", params!(uid)).unwrap_or_default().parse::<i64>().unwrap_or(0);
|
||||||
let limit = 24 * 60 * 60; //1 day
|
let limit = 24 * 60 * 60; //1 day
|
||||||
//Expired token
|
//Expired token
|
||||||
if (global::timestamp() as i64) > last_login + limit {
|
if (global::timestamp() as i64) > last_login + limit {
|
||||||
DATABASE.lock_and_exec("DELETE FROM webui WHERE user_id=?1", params!(uid));
|
DATABASE.lock_and_exec("DELETE FROM webui WHERE user_id=?1", params!(uid));
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let login_token = DATABASE.lock_and_select("SELECT token FROM tokens WHERE user_id=?1", params!(uid)).unwrap_or(String::new());
|
let login_token = DATABASE.lock_and_select("SELECT token FROM tokens WHERE user_id=?1", params!(uid)).unwrap_or_default();
|
||||||
if login_token == String::new() {
|
if login_token == String::new() {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
@ -541,11 +541,11 @@ fn webui_login_token(token: &str) -> Option<String> {
|
||||||
pub fn webui_get_user(token: &str) -> Option<JsonValue> {
|
pub fn webui_get_user(token: &str) -> Option<JsonValue> {
|
||||||
let login_token = webui_login_token(token)?;
|
let login_token = webui_login_token(token)?;
|
||||||
|
|
||||||
return Some(object!{
|
Some(object!{
|
||||||
userdata: get_acc(&login_token),
|
userdata: get_acc(&login_token),
|
||||||
loginbonus: get_acc_loginbonus(&login_token),
|
loginbonus: get_acc_loginbonus(&login_token),
|
||||||
time: get_server_data(&login_token)["server_time"].clone()
|
time: get_server_data(&login_token)["server_time"].clone()
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn webui_start_loginbonus(bonus_id: i64, token: &str) -> JsonValue {
|
pub fn webui_start_loginbonus(bonus_id: i64, token: &str) -> JsonValue {
|
||||||
|
@ -566,10 +566,10 @@ pub fn webui_start_loginbonus(bonus_id: i64, token: &str) -> JsonValue {
|
||||||
}
|
}
|
||||||
save_acc_loginbonus(&login_token, bonuses);
|
save_acc_loginbonus(&login_token, bonuses);
|
||||||
|
|
||||||
return object!{
|
object!{
|
||||||
result: "OK",
|
result: "OK",
|
||||||
id: bonus_id
|
id: bonus_id
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_server_time(time: i64, token: &str) -> JsonValue {
|
pub fn set_server_time(time: i64, token: &str) -> JsonValue {
|
||||||
|
@ -592,9 +592,9 @@ pub fn set_server_time(time: i64, token: &str) -> JsonValue {
|
||||||
server_data["server_time"] = time.into();
|
server_data["server_time"] = time.into();
|
||||||
save_server_data(&login_token, server_data);
|
save_server_data(&login_token, server_data);
|
||||||
|
|
||||||
return object!{
|
object!{
|
||||||
result: "OK"
|
result: "OK"
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn webui_logout(token: &str) {
|
pub fn webui_logout(token: &str) {
|
||||||
|
|
|
@ -12,7 +12,7 @@ use crate::router::{userdata, items};
|
||||||
fn get_login_token(req: &HttpRequest) -> Option<String> {
|
fn get_login_token(req: &HttpRequest) -> Option<String> {
|
||||||
let blank_header = HeaderValue::from_static("");
|
let blank_header = HeaderValue::from_static("");
|
||||||
let cookies = req.headers().get("Cookie").unwrap_or(&blank_header).to_str().unwrap_or("");
|
let cookies = req.headers().get("Cookie").unwrap_or(&blank_header).to_str().unwrap_or("");
|
||||||
if cookies == "" {
|
if cookies.is_empty() {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
return Some(cookies.split("ew_token=").last().unwrap_or("").split(';').collect::<Vec<_>>()[0].to_string());
|
return Some(cookies.split("ew_token=").last().unwrap_or("").split(';').collect::<Vec<_>>()[0].to_string());
|
||||||
|
@ -117,7 +117,7 @@ pub fn set_time(req: HttpRequest, body: String) -> HttpResponse {
|
||||||
|
|
||||||
pub fn logout(req: HttpRequest) -> HttpResponse {
|
pub fn logout(req: HttpRequest) -> HttpResponse {
|
||||||
let token = get_login_token(&req);
|
let token = get_login_token(&req);
|
||||||
if !token.is_none() {
|
if token.is_some() {
|
||||||
userdata::webui_logout(&token.unwrap());
|
userdata::webui_logout(&token.unwrap());
|
||||||
}
|
}
|
||||||
let resp = object!{
|
let resp = object!{
|
||||||
|
@ -133,9 +133,9 @@ pub fn logout(req: HttpRequest) -> HttpResponse {
|
||||||
pub fn main(req: HttpRequest) -> HttpResponse {
|
pub fn main(req: HttpRequest) -> HttpResponse {
|
||||||
if req.path() == "/" {
|
if req.path() == "/" {
|
||||||
let token = get_login_token(&req);
|
let token = get_login_token(&req);
|
||||||
if !token.is_none() {
|
if token.is_some() {
|
||||||
let data = userdata::webui_get_user(&token.unwrap());
|
let data = userdata::webui_get_user(&token.unwrap());
|
||||||
if !data.is_none() {
|
if data.is_some() {
|
||||||
return HttpResponse::Found()
|
return HttpResponse::Found()
|
||||||
.insert_header(("Location", "/home/"))
|
.insert_header(("Location", "/home/"))
|
||||||
.body("");
|
.body("");
|
||||||
|
|
|
@ -83,7 +83,7 @@ impl SQLite {
|
||||||
match self.engine.lock() {
|
match self.engine.lock() {
|
||||||
Ok(conn) => {
|
Ok(conn) => {
|
||||||
let mut stmt = conn.prepare("SELECT * FROM lives WHERE live_id=?1")?;
|
let mut stmt = conn.prepare("SELECT * FROM lives WHERE live_id=?1")?;
|
||||||
return Ok(stmt.query_row(params!(id), |row| {
|
return stmt.query_row(params!(id), |row| {
|
||||||
Ok(Live {
|
Ok(Live {
|
||||||
live_id: row.get(0)?,
|
live_id: row.get(0)?,
|
||||||
normal_failed: row.get(1)?,
|
normal_failed: row.get(1)?,
|
||||||
|
@ -95,7 +95,7 @@ impl SQLite {
|
||||||
master_failed: row.get(7)?,
|
master_failed: row.get(7)?,
|
||||||
master_pass: row.get(8)?,
|
master_pass: row.get(8)?,
|
||||||
})
|
})
|
||||||
})?);
|
});
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
std::thread::sleep(std::time::Duration::from_millis(self.sleep_duration));
|
std::thread::sleep(std::time::Duration::from_millis(self.sleep_duration));
|
||||||
|
|
Loading…
Add table
Reference in a new issue