From a50eab7dc9fda7a0eaaddc735341386a0a82d067 Mon Sep 17 00:00:00 2001 From: Ethan O'Brien <77750390+ethanaobrien@users.noreply.github.com> Date: Sat, 4 May 2024 18:53:22 -0500 Subject: [PATCH] Add ability to change time in webui --- src/router/global.rs | 10 ++++----- src/router/userdata/mod.rs | 5 +++-- webui/src/home/Home.jsx | 45 +++++++++++++++++++++++++++++++++++--- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/router/global.rs b/src/router/global.rs index 64126c9..2765a27 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -83,15 +83,15 @@ pub fn timestamp_since_midnight() -> u64 { fn set_time(data: &mut JsonValue, req: HttpRequest) { data["server_time"] = 1711741114.into(); let blank_header = HeaderValue::from_static(""); - let uid = headers.get("aoharu-user-id").unwrap_or(&blank_header).to_str().unwrap_or("").parse().unwrap_or(0); + let uid = req.headers().get("aoharu-user-id").unwrap_or(&blank_header).to_str().unwrap_or("").parse::().unwrap_or(0); if uid == 0 { return; } - let server_data = userdata::get_server_data(get_login_token(uid)); + let server_data = userdata::get_server_data(&userdata::get_login_token(uid)); - if server_data["timestamp"].as_i64().is_ok() { + if !server_data["timestamp"].as_i64().is_none() { if server_data["timestamp"].as_i64().unwrap() == 0 { - data["server_time"] = global::timestamp().into(); + data["server_time"] = timestamp().into(); return; } data["server_time"] = server_data["timestamp"].clone(); @@ -100,7 +100,7 @@ fn set_time(data: &mut JsonValue, req: HttpRequest) { pub fn send(mut data: JsonValue, req: HttpRequest) -> HttpResponse { //println!("{}", json::stringify(data.clone())); - set_time(&data, req) + set_time(&mut data, req); let encrypted = encryption::encrypt_packet(&json::stringify(data)).unwrap(); let resp = encrypted.into_bytes(); diff --git a/src/router/userdata/mod.rs b/src/router/userdata/mod.rs index 619015b..a6b9a02 100644 --- a/src/router/userdata/mod.rs +++ b/src/router/userdata/mod.rs @@ -494,7 +494,8 @@ pub fn webui_get_user(token: &str) -> Option { return Some(object!{ 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() }); } @@ -523,7 +524,7 @@ 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() { + if time as u64 > global::timestamp() { return object!{ result: "ERR", message: "Timestamp is in the future" diff --git a/webui/src/home/Home.jsx b/webui/src/home/Home.jsx index 92aa23d..0106dba 100644 --- a/webui/src/home/Home.jsx +++ b/webui/src/home/Home.jsx @@ -25,7 +25,7 @@ function Bonus() { error[1](resp.message); return; } - + error[1](""); setSubmittedItems([...submittedItems, resp.id]); setInputValue(''); }; @@ -63,10 +63,32 @@ function Bonus() { function Home() { const [user, userdata] = useState(); + const [inputValue, setInputValue] = useState(''); + const [serverTime, setServerTime] = useState(''); + const error = useState(""); const logout = () => { window.location.href = "/webui/logout"; } + const handleSubmit = async (event) => { + event.preventDefault(); + let input = parseInt(inputValue.trim()); + let time = Math.round((new Date(inputValue.trim()).getTime() + 200000) / 1000); + if (input === -1) { + time = 1711741114; + } + if (time < 0 || isNaN(time)) return; + let resp = await Request("/api/webui/set_time", { + timestamp: time + }); + if (resp.result !== "OK") { + error[1](resp.message); + return; + } + error[1](""); + setServerTime((new Date(time * 1000)).toString()); + setInputValue(''); + }; useEffect(() => { if (user) return; @@ -86,8 +108,11 @@ function Home() { rank: 3, exp: 10, last_login_time: 5 - } + }, + time: new Date() }*/ + setServerTime((new Date(resp.data.time * 1000)).toString()); + userdata(

User id: { user.user.id }

@@ -104,7 +129,21 @@ function Home() {

Home

- { user ?
{ user }
:

Loading...

} + { user ?
+ { user } +

Server time

+
{ error[0] ?

Error: { error[0] }

:

}
+

Currently set to { serverTime }. Setting to 0 will set it to now, and -1 will reset it.

+
+ setInputValue(event.target.value)} + placeholder="Enter Server Time" + /> + +
+ :

Loading...

}
); }