mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-10-20 00:00:46 +00:00
* refactor(ohos): split facade feature and kernel crates * feat(ohos): protect transport sockets individually * fix(ohos): keep local proxy subnets off tun * fix(ohos): expose valid config enum values * refactor(ohos): finalize reusable core boundary * test(ohos): verify split package contracts * fix(port-forward): support wildcard userspace listeners Keep the existing Host listener intact while adding a DataPlane listener for force-smoltcp IPv4 wildcard rules. Keep literal loopback destinations on the local Host path instead of exporting them through an exit node. * chore(ohos): refresh split workspace lockfile * fix(socket): normalize Windows raw socket handles * refactor(socket): carry VPN protection through host bind options * refactor(socket): simplify protection defaults and TUN ingress * refactor(socket): consolidate native protection and socket creation * fix(socket): protect outbound UDP paths * fix(socket): preserve VPN routing for RPC listeners --------- Co-authored-by: FrankHan <frankhan@FrankHans-Mac-mini.local> Co-authored-by: KKRainbow <443152178@qq.com>
70 lines
1.5 KiB
Rust
70 lines
1.5 KiB
Rust
use std::io;
|
|
|
|
use clap::Command;
|
|
use clap_complete::{Generator, Shell};
|
|
|
|
mod arch;
|
|
mod gateway;
|
|
mod host_runtime;
|
|
pub mod instance;
|
|
mod vpn_portal;
|
|
|
|
pub mod common;
|
|
#[cfg(feature = "management")]
|
|
pub mod core;
|
|
#[cfg(feature = "upnp")]
|
|
pub(crate) mod igd_next;
|
|
pub mod proto;
|
|
#[cfg(feature = "management-rpc")]
|
|
pub mod rpc_service;
|
|
#[cfg(feature = "management")]
|
|
pub mod service_manager;
|
|
pub(crate) mod socket;
|
|
pub mod socket_protector;
|
|
pub mod tunnel;
|
|
pub mod utils;
|
|
#[cfg(feature = "web-client")]
|
|
pub mod web_client;
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|
|
|
|
pub const VERSION: &str = common::constants::EASYTIER_VERSION;
|
|
rust_i18n::i18n!("locales", fallback = "en");
|
|
|
|
#[derive(clap::ValueEnum, Debug, Clone, PartialEq)]
|
|
pub enum ShellType {
|
|
Bash,
|
|
Elvish,
|
|
Fish,
|
|
Powershell,
|
|
Zsh,
|
|
Nu,
|
|
}
|
|
|
|
impl ShellType {
|
|
pub fn to_shell(&self) -> Option<Shell> {
|
|
match self {
|
|
ShellType::Bash => Some(Shell::Bash),
|
|
ShellType::Elvish => Some(Shell::Elvish),
|
|
ShellType::Fish => Some(Shell::Fish),
|
|
ShellType::Powershell => Some(Shell::PowerShell),
|
|
ShellType::Zsh => Some(Shell::Zsh),
|
|
ShellType::Nu => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn print_completions<G: Generator>(generator: G, cmd: &mut Command, bin_name: &str) {
|
|
clap_complete::generate(generator, cmd, bin_name, &mut io::stdout());
|
|
}
|
|
|
|
pub fn print_nushell_completions(cmd: &mut Command, bin_name: &str) {
|
|
clap_complete::generate(
|
|
clap_complete_nushell::Nushell,
|
|
cmd,
|
|
bin_name,
|
|
&mut io::stdout(),
|
|
);
|
|
}
|