demo: separate request function, switch to 0xABCD hex form, add debug / forced token env, add port to localhost default host

This commit is contained in:
2024-12-23 21:09:52 -06:00
parent 846a9adb51
commit a4f8aa1f23

View File

@@ -12,15 +12,12 @@ struct KeyData<'a> {
static KEY: &'static str = include_str!(concat!(env!("OUT_DIR"), "/key.json")); static KEY: &'static str = include_str!(concat!(env!("OUT_DIR"), "/key.json"));
const HOST_INFO: (&'static str, &'static str) = match option_env!("RAILWAY_PUBLIC_DOMAIN") { const HOST_INFO: (&'static str, &'static str) = match option_env!("RAILWAY_PUBLIC_DOMAIN") {
Some(domain) => ("https", domain), Some(domain) => ("https", domain),
None => ("http", "localhost"), None => ("http", "localhost:5800"),
}; };
fn main() { fn main() {
let key_data: KeyData = serde_json::from_str(KEY).unwrap(); let key_data: KeyData = serde_json::from_str(KEY).unwrap();
let (protocol, domain) = HOST_INFO;
println!("Protocol: {}, Domain: {}", protocol, domain);
// Print the key data // Print the key data
let args: Vec<String> = std::env::args().collect(); let args: Vec<String> = std::env::args().collect();
if args.contains(&"--help".to_string()) { if args.contains(&"--help".to_string()) {
@@ -37,16 +34,42 @@ fn main() {
let value_hash = sha2::Sha256::digest(key_data.value.as_bytes()); let value_hash = sha2::Sha256::digest(key_data.value.as_bytes());
let hash_match = hex::encode(value_hash) == key_data.value_hash; let hash_match = hex::encode(value_hash) == key_data.value_hash;
// if hash_match { if hash_match {
// return; eprintln!("Value has not been changed since build");
// }
// TODO: Use token to make request // Only fail immediately if built in Railway CI
if option_env!("RAILWAY_PUBLIC_DOMAIN").is_some() {
return;
}
}
let mut token = key_data.value.trim().parse::<u32>();
if let Some(forced_token) = option_env!("FORCED_TOKEN") {
token = forced_token.parse::<u32>();
}
match token {
Ok(token) => {
println!("Token: {:08X}", token);
request(token);
}
Err(e) => {
eprintln!("Token was changed, but is not a valid u32 integer: {}", e);
eprintln!("Original Value: {}", key_data.value);
return;
}
}
println!("Hash match: {}", hash_match);
}
fn request(token: u32) {
let client = reqwest::blocking::Client::new(); let client = reqwest::blocking::Client::new();
let response = client let response = client
.post(&format!( .post(&format!(
"{}://{}/notify?key={}", "{}://{}/notify?key=0x{:08X}",
HOST_INFO.0, HOST_INFO.1, key_data.value HOST_INFO.0, HOST_INFO.1, token
)) ))
.send(); .send();
@@ -75,8 +98,9 @@ fn main() {
} }
} }
} else { } else {
println!("Request URL: {}", resp.url());
println!( println!(
"Response body: {}", "Response body: \n{}",
resp.text() resp.text()
.unwrap_or_else(|_| "Failed to read response body".to_string()) .unwrap_or_else(|_| "Failed to read response body".to_string())
); );
@@ -87,6 +111,4 @@ fn main() {
println!("Request error: {}", e); println!("Request error: {}", e);
} }
} }
println!("Hash match: {}", hash_match);
} }