// Copyright 2025-2026 Dillution . // // This file is part of DPIBreak. // // DPIBreak is free software: you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the // Free Software Foundation, either version 3 of the License, or (at your // option) any later version. // // DPIBreak is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // You should have received a copy of the GNU General Public License // along with DPIBreak. If not, see . const PACKET_SIZE_CAP: usize = 2048; const MESSAGE_AT_RUN: &str = r#"DPIBreak is now running. Press Ctrl+C or close this window to stop. "#; #[cfg(windows)] pub mod windows; #[cfg(windows)] pub use windows::{bootstrap, run, local_time, send_to_raw, pause}; #[cfg(target_os = "linux")] pub mod linux; #[cfg(target_os = "linux")] pub use linux::{bootstrap, run, local_time, send_to_raw, is_kernel_filtered_clienthello}; /// pause before exit on windows to print information in console before it is closed. pub fn paexit(code: i32) -> ! { // On windows, this is true when program enters service controller // entry point. if !crate::opt::daemon() { #[cfg(windows)] pause(); } std::process::exit(code); }