2026-06-28 18:42:20 +00:00
|
|
|
pub mod config;
|
|
|
|
|
pub mod install;
|
|
|
|
|
pub mod wifi;
|
|
|
|
|
|
|
|
|
|
pub use config::TollGateConfig;
|
|
|
|
|
pub use install::install_tollgate;
|
|
|
|
|
pub use wifi::provision_ssid;
|
|
|
|
|
|
|
|
|
|
use anyhow::Result;
|
|
|
|
|
use tracing::info;
|
|
|
|
|
|
2026-06-30 17:12:50 +00:00
|
|
|
use crate::{opkg::PkgManager, Router};
|
2026-06-28 18:42:20 +00:00
|
|
|
|
|
|
|
|
/// Full TollGate provisioning sequence:
|
2026-06-30 17:12:50 +00:00
|
|
|
/// 1. Install tollgate-module-basic-go
|
2026-06-28 18:42:20 +00:00
|
|
|
/// 2. Write TollGate UCI config (pricing, mint URL)
|
|
|
|
|
/// 3. Create the pay-as-you-go WiFi SSID
|
|
|
|
|
/// 4. Restart affected services
|
|
|
|
|
pub async fn provision(router: &Router, config: &TollGateConfig) -> Result<()> {
|
|
|
|
|
info!("[{}] Starting TollGate provisioning", router.host);
|
|
|
|
|
|
2026-06-30 17:12:50 +00:00
|
|
|
let pkg_mgr = router.opkg_check()?;
|
|
|
|
|
match pkg_mgr {
|
|
|
|
|
PkgManager::Opkg => {
|
|
|
|
|
router.opkg_update()?;
|
|
|
|
|
install_tollgate(router)?;
|
|
|
|
|
}
|
|
|
|
|
PkgManager::ApkNative => {
|
|
|
|
|
install::install_tollgate_apk_native(router)?;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-06-28 18:42:20 +00:00
|
|
|
config::apply(router, config)?;
|
|
|
|
|
wifi::provision_ssid(router, config)?;
|
|
|
|
|
restart_services(router)?;
|
|
|
|
|
|
|
|
|
|
info!("[{}] TollGate provisioning complete", router.host);
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn restart_services(router: &Router) -> Result<()> {
|
|
|
|
|
router.run_ok("/etc/init.d/tollgate restart || true")?;
|
|
|
|
|
router.run_ok("/etc/init.d/network restart")?;
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|