mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-21 11:41:51 +00:00
## Changelog - Updates connlib parameter API_URL (formerly known under different names as `CONTROL_PLANE_URL`, `PORTAL_URL`, `PORTAL_WS_URL`, and friends) to be configured as an "advanced" or "hidden" feature at runtime so that we can test production builds on both staging and production. - Makes `AUTH_BASE_URL` configurable at runtime too - Moves `CONNLIB_LOG_FILTER_STRING` to be configured like this as well and simplifies its naming - Fixes a timing attack bug on Android when comparing the `csrf` token - Adds proper account ID validation to Android to prevent invalid URL parameter strings from being saved and used - Cleans up a number of UI / view issues on Android regarding typos, consistency, etc - Hides vars from from the `relay` CLI we may not want to expose just yet - `get_device_id()` is flawed for connlib components -- SMBios is rarely available. Data plane components now require a `FIREZONE_ID` now instead to use for upserting. Fixes #2482 Fixes #2471 --------- Signed-off-by: Jamil <jamilbk@users.noreply.github.com> Co-authored-by: Gabi <gabrielalejandro7@gmail.com>
60 lines
1.5 KiB
Rust
60 lines
1.5 KiB
Rust
use anyhow::Result;
|
|
use clap::Parser;
|
|
use connlib_client_shared::{file_logger, Callbacks, Error, Session};
|
|
use firezone_cli_utils::{block_on_ctrl_c, setup_global_subscriber, CommonArgs};
|
|
use secrecy::SecretString;
|
|
use std::path::PathBuf;
|
|
|
|
fn main() -> Result<()> {
|
|
let cli = Cli::parse();
|
|
|
|
let (layer, handle) = cli.log_dir.as_deref().map(file_logger::layer).unzip();
|
|
setup_global_subscriber(layer);
|
|
|
|
let mut session = Session::connect(
|
|
cli.common.api_url,
|
|
SecretString::from(cli.common.token),
|
|
cli.common.firezone_id,
|
|
CallbackHandler { handle },
|
|
)
|
|
.unwrap();
|
|
tracing::info!("new_session");
|
|
|
|
block_on_ctrl_c();
|
|
|
|
session.disconnect(None);
|
|
Ok(())
|
|
}
|
|
|
|
#[derive(Clone)]
|
|
struct CallbackHandler {
|
|
handle: Option<file_logger::Handle>,
|
|
}
|
|
|
|
impl Callbacks for CallbackHandler {
|
|
type Error = std::convert::Infallible;
|
|
|
|
fn roll_log_file(&self) -> Option<PathBuf> {
|
|
self.handle
|
|
.as_ref()?
|
|
.roll_to_new_file()
|
|
.unwrap_or_else(|e| {
|
|
tracing::debug!("Failed to roll over to new file: {e}");
|
|
let _ = self.on_error(&Error::LogFileRollError(e));
|
|
|
|
None
|
|
})
|
|
}
|
|
}
|
|
|
|
#[derive(Parser)]
|
|
#[command(author, version, about, long_about = None)]
|
|
struct Cli {
|
|
#[command(flatten)]
|
|
common: CommonArgs,
|
|
|
|
/// File logging directory. Should be a path that's writeable by the current user.
|
|
#[arg(short, long, env = "LOG_DIR")]
|
|
log_dir: Option<PathBuf>,
|
|
}
|