| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // During a later cleanup, this file will replace lox_client.rs.
- // This seems like probably not the best way to do this, but it works.
- #[path = "../client_lib.rs"]
- mod client_lib;
- use client_lib::*;
- use lox::IssuerPubKey;
- use std::env::args;
- use std::fs::File;
- use std::io::Write;
- use std::path::Path;
- #[tokio::main]
- async fn main() {
- // TODO: Do proper argument handling
- let server_addr = args().nth(1).unwrap(); // must include http://
- // Get Lox Authority public keys
- // TODO: Make this filename configurable
- let lox_auth_pubkeys_filename = "lox_auth_pubkeys.json";
- let lox_auth_pubkeys: Vec<IssuerPubKey> = if Path::new(lox_auth_pubkeys_filename).exists() {
- // read in file
- let lox_auth_pubkeys_infile = File::open(lox_auth_pubkeys_filename).unwrap();
- serde_json::from_reader(lox_auth_pubkeys_infile).unwrap()
- } else {
- // download from Lox Auth
- let pubkeys = get_lox_auth_keys(server_addr.clone()).await;
- // save to file for next time
- let mut lox_auth_pubkeys_outfile = File::create(lox_auth_pubkeys_filename).expect("Failed to create lox_auth pubkeys file");
- write!(
- lox_auth_pubkeys_outfile,
- "{}",
- serde_json::to_string(&pubkeys).unwrap()
- ).expect("Failed to write to lox_auth pubkeys file");
- pubkeys
- };
- let lox_pub = lox_auth_pubkeys[0].clone();
- let migration_pub = lox_auth_pubkeys[1].clone();
- let migrationkey_pub = lox_auth_pubkeys[2].clone();
- let reachability_pub = lox_auth_pubkeys[3].clone();
- let invitation_pub = lox_auth_pubkeys[4].clone();
- // Get Lox Credential
- // TODO: Make this filename configurable
- let lox_cred_filename = "lox_cred.json";
- let lox_cred = if Path::new(lox_cred_filename).exists() {
- let lox_cred_infile = File::open(lox_cred_filename).unwrap();
- serde_json::from_reader(lox_cred_infile).unwrap()
- } else {
- // get new credential based on an open invite
- let open_invite = get_open_invitation(server_addr.clone()).await;
- let cred = get_lox_credential(server_addr.clone(), open_invite, lox_pub).await;
- // save to file for next time
- let mut lox_cred_outfile = File::create(lox_cred_filename).expect("Failed to create lox credential file");
- write!(
- lox_cred_outfile,
- "{}",
- serde_json::to_string(&cred).unwrap()
- ).expect("Failed to write to lox credential file");
- cred
- };
- }
|