in rust-query-crlite/src/main.rs [641:695]
fn main() {
let args = Cli::parse();
stderrlog::new()
.module(module_path!())
.verbosity(args.verbose)
.init()
.unwrap();
if std::fs::create_dir_all(&args.db).is_err() {
error!("Could not create directory: {}", args.db.display());
std::process::exit(1);
}
if args.update.is_some() {
let (attachment_url, base_url) = match args.update.unwrap() {
RemoteSettingsInstance::Dev => (STAGE_ATTACH_URL, STAGE_URL),
RemoteSettingsInstance::Stage => (STAGE_ATTACH_URL, STAGE_URL),
RemoteSettingsInstance::Prod => (PROD_ATTACH_URL, PROD_URL),
};
if let Err(e) = update_db(&args.db, attachment_url, base_url, &args.channel) {
error!("{}", e.message);
std::process::exit(1);
}
}
let db = match CRLiteDB::load(&args.db) {
Ok(db) => db,
Err(e) => {
error!("Error loading CRLite DB: {}", e.message);
error!("Use --update [prod | stage] to populate DB.");
std::process::exit(1);
}
};
let result = match args.command {
Subcommand::Signoff { ref host_file_url } => signoff(&db, host_file_url),
Subcommand::Https { ref hosts } => {
let hosts: Vec<&str> = hosts.iter().map(|x| x.as_str()).collect();
query_https_hosts(&db, &hosts)
}
Subcommand::X509 { ref files } => query_certs(&db, files),
Subcommand::Crtsh { ref id } => query_crtsh_id(&db, id),
};
match result {
Ok(CmdResult::NoneRevoked) => std::process::exit(0),
Ok(CmdResult::SomeRevoked) => std::process::exit(1),
Err(e) => {
error!("{}", e.message);
std::process::exit(1)
}
}
}