//! Run with: cargo run --example fetch_bambu_cert -- //! //! "Trust on first connect": connects to one printer from printers.toml //! with certificate verification disabled, captures whatever certificate //! it presents, and saves it as PEM. Meant for a printer like P1P that //! doesn't chain to the bundled CA — after running this, point that //! printer's `ca_cert_path` in printers.toml at the saved file and //! `test_bambu_certs` should report it as verified from then on. //! //! This trusts whoever answers on the network *right now* — only run it on //! a network you trust, ideally right after unboxing the printer. use continuum_proxy::fleet; use continuum_proxy::printer::{GenericPrinter, PrinterHandle}; fn main() -> anyhow::Result<()> { let mut args = std::env::args().skip(1); let printer_id = args.next().ok_or_else(|| anyhow::anyhow!("usage: fetch_bambu_cert "))?; let output_path = args.next().ok_or_else(|| anyhow::anyhow!("usage: fetch_bambu_cert "))?; let printers = fleet::load(std::path::Path::new("printers.toml"))?; let pem = printers .iter() .find_map(|printer| match printer { PrinterHandle::BambuV1(bambu) if bambu.base().id == printer_id => Some(bambu.fetch_certificate()), PrinterHandle::BambuV2(bambu) if bambu.base().id == printer_id => Some(bambu.fetch_certificate()), _ => None, }) .ok_or_else(|| anyhow::anyhow!("no Bambu printer with id '{printer_id}' in printers.toml"))??; std::fs::write(&output_path, &pem)?; println!("saved {printer_id}'s certificate to {output_path}"); println!("now set ca_cert_path = \"{output_path}\" for {printer_id} in printers.toml"); Ok(()) }