Add endpoint to set server time

This commit is contained in:
Ethan O'Brien
2024-05-04 18:11:20 -05:00
parent 05aecd02c6
commit 42bdc28d0f
24 changed files with 169 additions and 106 deletions

View File

@ -181,6 +181,9 @@ pub fn get_acc_sif(auth_key: &str) -> JsonValue {
pub fn get_acc_friends(auth_key: &str) -> JsonValue {
get_data(auth_key, "friends")
}
pub fn get_server_data(auth_key: &str) -> JsonValue {
get_data(auth_key, "server_data")
}
pub fn get_acc_event(auth_key: &str) -> JsonValue {
let event = get_data(auth_key, "event");
if event.is_empty() {
@ -220,6 +223,9 @@ pub fn save_acc_event(auth_key: &str, data: JsonValue) {
pub fn save_acc_eventlogin(auth_key: &str, data: JsonValue) {
save_data(auth_key, "eventloginbonus", data);
}
pub fn save_server_data(auth_key: &str, data: JsonValue) {
save_data(auth_key, "server_data", data);
}
fn generate_salt() -> Vec<u8> {
let mut rng = rand::thread_rng();
@ -516,6 +522,30 @@ pub fn webui_start_loginbonus(bonus_id: i64, token: &str) -> JsonValue {
};
}
pub fn set_server_time(time: i64, token: &str) -> JsonValue {
if time > global::timestamp() {
return object!{
result: "ERR",
message: "Timestamp is in the future"
};
}
let login_token = webui_login_token(token);
if login_token.is_none() {
return object!{
result: "ERR",
message: "Failed to validate token"
};
}
let login_token = login_token.unwrap();
let mut server_data = get_server_data(&login_token);
server_data["server_time"] = time.into();
save_server_data(&login_token, server_data);
return object!{
result: "OK"
};
}
pub fn webui_logout(token: &str) {
DATABASE.lock_and_exec("DELETE FROM webui WHERE token=?1", params!(token));
}