Add flag to purge dead accounts on startup
This commit is contained in:
@ -70,6 +70,15 @@ fn verify_signature(signature: &[u8], message: &[u8], public_key: &[u8]) -> bool
|
||||
|
||||
verifier.verify(signature).is_ok()
|
||||
}
|
||||
|
||||
pub fn delete_uuid(user_id: i64) {
|
||||
DATABASE.lock_and_exec("DELETE FROM users WHERE user_id=?1", params!(user_id));
|
||||
}
|
||||
|
||||
pub fn vacuum_database() {
|
||||
DATABASE.lock_and_exec("VACUUM", params!());
|
||||
}
|
||||
|
||||
pub fn get_uuid(headers: &HeaderMap, body: &str) -> String {
|
||||
let body = encryption::decrypt_packet(body).unwrap();
|
||||
let blank_header = HeaderValue::from_static("");
|
||||
|
@ -610,3 +610,38 @@ pub fn export_user(token: &str) -> Option<JsonValue> {
|
||||
sifcards: json::stringify(get_acc_sif(&login_token))
|
||||
})
|
||||
}
|
||||
|
||||
pub fn purge_accounts() -> usize {
|
||||
// If the user has no cards, its safe to assume its a dead account (imo). In the (rare) event this function is ran after a user started and before the account has characters, the server should create them a new account, and let them start the tutorial over.
|
||||
let dead_uids = DATABASE.lock_and_select_all("
|
||||
SELECT user_id
|
||||
FROM userdata
|
||||
WHERE (userdata LIKE ?1 AND userdata LIKE ?2 AND friend_request_disabled=1)
|
||||
OR (userdata LIKE ?3 AND friend_request_disabled=1)",
|
||||
params!(
|
||||
"%\"card_list\":[]%",
|
||||
"%Tutorial in progress%",
|
||||
"%tutorial_step\":60%" //For some reason, a majority of dead accounts in the tutorial are here....
|
||||
)).unwrap();
|
||||
for uid in dead_uids.members() {
|
||||
let user_id = uid.as_i64().unwrap();
|
||||
println!("Removing dead UID: {}", user_id);
|
||||
crate::router::gree::delete_uuid(user_id);
|
||||
DATABASE.lock_and_exec("DELETE FROM userdata WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM userhome WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM missions WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM loginbonus WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM sifcards WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM friends WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM chats WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM event WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM eventloginbonus WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM server_data WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM webui WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM tokens WHERE user_id=?1", params!(user_id));
|
||||
DATABASE.lock_and_exec("DELETE FROM migration WHERE token=?1", params!(crate::router::user::uid_to_code(user_id.to_string())));
|
||||
}
|
||||
DATABASE.lock_and_exec("VACUUM", params!());
|
||||
crate::router::gree::vacuum_database();
|
||||
dead_uids.len()
|
||||
}
|
||||
|
Reference in New Issue
Block a user