diff --git a/Cargo.toml b/Cargo.toml index 44c2604..234af7e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,140 @@ -[workspace] -resolver = "2" -members = ["easytier-core", "easytier-cli"] +[package] +name = "easytier" +description = "A full meshed p2p VPN, connecting all your devices in one network with one command." +homepage = "https://github.com/KKRainbow/EasyTier" +repository = "https://github.com/KKRainbow/EasyTier" +version = "0.1.0" +edition = "2021" +authors = ["kkrainbow"] +keywords = ["vpn", "p2p", "network", "easytier"] +categories = ["network-programming", "command-line-utilities"] +rust-version = "1.75" +license-file = "LICENSE" +readme = "README.md" -default-members = ["easytier-core", "easytier-cli"] +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "easytier-core" +path = "src/easytier-core.rs" + +[[bin]] +name = "easytier-cli" +path = "src/easytier-cli.rs" +test = false + +[dependencies] +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3", features = [ + "env-filter", + "local-time", + "time", +] } +tracing-appender = "0.2.3" +log = "0.4" +thiserror = "1.0" +auto_impl = "1.1.0" +crossbeam = "0.8.4" +time = "0.3" +toml = "0.8.12" +chrono = "0.4.35" + +gethostname = "0.4.3" + +futures = "0.3" + +tokio = { version = "1", features = ["full"] } +tokio-stream = "0.1" +tokio-util = { version = "0.7.9", features = ["codec", "net"] } + +async-stream = "0.3.5" +async-trait = "0.1.74" + +dashmap = "5.5.3" +timedmap = "1.0.1" + +# for tap device +tun = { version = "0.6.1", features = ["async"] } +# for net ns +nix = { version = "0.27", features = ["sched", "socket", "ioctl"] } + +uuid = { version = "1.5.0", features = [ + "v4", + "fast-rng", + "macro-diagnostics", + "serde", +] } + +# for ring tunnel +crossbeam-queue = "0.3" +once_cell = "1.18.0" + +# for packet +rkyv = { "version" = "0.7.42", features = [ + "validation", + "archive_le", + "strict", + "copy_unsafe", + "arbitrary_enum_discriminant", +] } +postcard = { "version" = "1.0.8", features = ["alloc"] } + +# for rpc +tonic = "0.10" +prost = "0.12" +anyhow = "1.0" +tarpc = { version = "0.32", features = ["tokio1", "serde1"] } + +url = { version = "2.5", features = ["serde"] } + +# for tun packet +byteorder = "1.5.0" + +# for proxy +cidr = "0.2.2" +socket2 = "0.5.5" + +# for hole punching +stun_codec = "0.3.4" +bytecodec = "0.4.15" +rand = "0.8.5" + +serde = { version = "1.0", features = ["derive"] } +pnet = { version = "0.34.0", features = ["serde"] } +public-ip = { version = "0.2", features = ["default"] } + +clap = { version = "4.4.8", features = ["unicode", "derive", "wrap_help"] } + +async-recursion = "1.0.5" + +network-interface = "1.1.1" + +# for ospf route +pathfinding = "4.9.1" + +# for cli +tabled = "0.15.*" +humansize = "2.1.3" + + +[target.'cfg(windows)'.dependencies] +windows-sys = { version = "0.52", features = [ + "Win32_Networking_WinSock", + "Win32_NetworkManagement_IpHelper", + "Win32_Foundation", + "Win32_System_IO", +] } + +[build-dependencies] +tonic-build = "0.10" + +[target.'cfg(windows)'.build-dependencies] +reqwest = { version = "0.11", features = ["blocking"] } +zip = "0.6.6" + + +[dev-dependencies] +serial_test = "3.0.0" [profile.dev] panic = "abort" diff --git a/easytier-core/build.rs b/build.rs similarity index 100% rename from easytier-core/build.rs rename to build.rs diff --git a/easytier-cli/Cargo.toml b/easytier-cli/Cargo.toml deleted file mode 100644 index 4dcff3e..0000000 --- a/easytier-cli/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "easytier-cli" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -tracing = { version = "0.1", features = ["log"] } -tracing-subscriber = { version = "0.3", features = [ - "env-filter", - "local-time", - "time", -] } -tracing-appender = "0.2.3" - -futures = "0.3" -tokio = { version = "1", features = ["full"] } -anyhow = "1.0" -easytier-core = { path = "../easytier-core" } -clap = { version = "4.4.8", features = ["unicode", "derive", "wrap_help"] } -tonic = "0.10" -thiserror = "1.0" -tabled = "0.15.*" -humansize = "2.1.3" diff --git a/easytier-core/Cargo.toml b/easytier-core/Cargo.toml deleted file mode 100644 index f8248c6..0000000 --- a/easytier-core/Cargo.toml +++ /dev/null @@ -1,127 +0,0 @@ -[package] -name = "easytier-core" -description = "A full meshed p2p VPN, connecting all your devices in one network with one command." -homepage = "https://github.com/KKRainbow/EasyTier" -repository = "https://github.com/KKRainbow/EasyTier" -version = "0.1.0" -edition = "2021" -authors = ["kkrainbow"] -keywords = ["vpn", "p2p", "network", "easytier"] -categories = ["network-programming", "command-line-utilities"] -rust-version = "1.75" -license-file = "LICENSE" -readme = "README.md" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[lib] -name = "easytier_core" -test = false - -[dependencies] -tracing = { version = "0.1", features = ["log"] } -tracing-subscriber = { version = "0.3", features = [ - "env-filter", - "local-time", - "time", -] } -tracing-appender = "0.2.3" -log = "0.4" -thiserror = "1.0" -auto_impl = "1.1.0" -crossbeam = "0.8.4" -time = "0.3" -toml = "0.8.12" -chrono = "0.4.35" - -gethostname = "0.4.3" - -futures = "0.3" - -tokio = { version = "1", features = ["full"] } -tokio-stream = "0.1" -tokio-util = { version = "0.7.9", features = ["codec", "net"] } - -async-stream = "0.3.5" -async-trait = "0.1.74" - -dashmap = "5.5.3" -timedmap = "1.0.1" - -# for tap device -tun = { version = "0.6.1", features = ["async"] } -# for net ns -nix = { version = "0.27", features = ["sched", "socket", "ioctl"] } - -uuid = { version = "1.5.0", features = [ - "v4", - "fast-rng", - "macro-diagnostics", - "serde", -] } - -# for ring tunnel -crossbeam-queue = "0.3" -once_cell = "1.18.0" - -# for packet -rkyv = { "version" = "0.7.42", features = [ - "validation", - "archive_le", - "strict", - "copy_unsafe", - "arbitrary_enum_discriminant", -] } -postcard = { "version" = "*", features = ["alloc"] } - -# for rpc -tonic = "0.10" -prost = "0.12" -anyhow = "1.0" -tarpc = { version = "0.32", features = ["tokio1", "serde1"] } - -url = { version = "2.5", features = ["serde"] } - -# for tun packet -byteorder = "1.5.0" - -# for proxy -cidr = "0.2.2" -socket2 = "0.5.5" - -# for hole punching -stun_codec = "0.3.4" -bytecodec = "0.4.15" -rand = "0.8.5" - -serde = { version = "1.0", features = ["derive"] } -pnet = { version = "0.34.0", features = ["serde"] } -public-ip = { version = "0.2", features = ["default"] } - -clap = { version = "4.4", features = ["derive"] } - -async-recursion = "1.0.5" - -network-interface = "1.1.1" - -# for ospf route -pathfinding = "4.9.1" - -[target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.52", features = [ - "Win32_Networking_WinSock", - "Win32_NetworkManagement_IpHelper", - "Win32_Foundation", - "Win32_System_IO", -] } - -[build-dependencies] -tonic-build = "0.10" - -[target.'cfg(windows)'.build-dependencies] -reqwest = { version = "0.11", features = ["blocking"] } -zip = "*" - - -[dev-dependencies] -serial_test = "*" diff --git a/easytier-core/src/lib.rs b/easytier-core/src/lib.rs deleted file mode 100644 index 8e4346d..0000000 --- a/easytier-core/src/lib.rs +++ /dev/null @@ -1,6 +0,0 @@ -#![allow(dead_code)] - -pub mod arch; -pub mod common; -pub mod rpc; -pub mod tunnels; diff --git a/easytier-core/proto/cli.proto b/proto/cli.proto similarity index 100% rename from easytier-core/proto/cli.proto rename to proto/cli.proto diff --git a/easytier-core/src/arch/mod.rs b/src/arch/mod.rs similarity index 100% rename from easytier-core/src/arch/mod.rs rename to src/arch/mod.rs diff --git a/easytier-core/src/arch/windows.rs b/src/arch/windows.rs similarity index 100% rename from easytier-core/src/arch/windows.rs rename to src/arch/windows.rs diff --git a/easytier-core/src/common/config.rs b/src/common/config.rs similarity index 100% rename from easytier-core/src/common/config.rs rename to src/common/config.rs diff --git a/easytier-core/src/common/constants.rs b/src/common/constants.rs similarity index 100% rename from easytier-core/src/common/constants.rs rename to src/common/constants.rs diff --git a/easytier-core/src/common/error.rs b/src/common/error.rs similarity index 100% rename from easytier-core/src/common/error.rs rename to src/common/error.rs diff --git a/easytier-core/src/common/global_ctx.rs b/src/common/global_ctx.rs similarity index 100% rename from easytier-core/src/common/global_ctx.rs rename to src/common/global_ctx.rs diff --git a/easytier-core/src/common/ifcfg.rs b/src/common/ifcfg.rs similarity index 100% rename from easytier-core/src/common/ifcfg.rs rename to src/common/ifcfg.rs diff --git a/easytier-core/src/common/mod.rs b/src/common/mod.rs similarity index 100% rename from easytier-core/src/common/mod.rs rename to src/common/mod.rs diff --git a/easytier-core/src/common/netns.rs b/src/common/netns.rs similarity index 100% rename from easytier-core/src/common/netns.rs rename to src/common/netns.rs diff --git a/easytier-core/src/common/network.rs b/src/common/network.rs similarity index 100% rename from easytier-core/src/common/network.rs rename to src/common/network.rs diff --git a/easytier-core/src/common/rkyv_util.rs b/src/common/rkyv_util.rs similarity index 100% rename from easytier-core/src/common/rkyv_util.rs rename to src/common/rkyv_util.rs diff --git a/easytier-core/src/common/stun.rs b/src/common/stun.rs similarity index 100% rename from easytier-core/src/common/stun.rs rename to src/common/stun.rs diff --git a/easytier-core/src/common/stun_codec_ext.rs b/src/common/stun_codec_ext.rs similarity index 100% rename from easytier-core/src/common/stun_codec_ext.rs rename to src/common/stun_codec_ext.rs diff --git a/easytier-core/src/connector/direct.rs b/src/connector/direct.rs similarity index 100% rename from easytier-core/src/connector/direct.rs rename to src/connector/direct.rs diff --git a/easytier-core/src/connector/manual.rs b/src/connector/manual.rs similarity index 100% rename from easytier-core/src/connector/manual.rs rename to src/connector/manual.rs diff --git a/easytier-core/src/connector/mod.rs b/src/connector/mod.rs similarity index 100% rename from easytier-core/src/connector/mod.rs rename to src/connector/mod.rs diff --git a/easytier-core/src/connector/udp_hole_punch.rs b/src/connector/udp_hole_punch.rs similarity index 100% rename from easytier-core/src/connector/udp_hole_punch.rs rename to src/connector/udp_hole_punch.rs diff --git a/easytier-cli/src/main.rs b/src/easytier-cli.rs similarity index 99% rename from easytier-cli/src/main.rs rename to src/easytier-cli.rs index 4e563ba..3c1677e 100644 --- a/easytier-cli/src/main.rs +++ b/src/easytier-cli.rs @@ -1,7 +1,15 @@ +#![allow(dead_code)] + use std::{net::SocketAddr, vec}; use clap::{command, Args, Parser, Subcommand}; -use easytier_core::{ + +mod arch; +mod common; +mod rpc; +mod tunnels; + +use crate::{ common::stun::{StunInfoCollector, UdpNatTypeDetector}, rpc::{ connector_manage_rpc_client::ConnectorManageRpcClient, diff --git a/easytier-core/src/main.rs b/src/easytier-core.rs similarity index 100% rename from easytier-core/src/main.rs rename to src/easytier-core.rs diff --git a/easytier-core/src/gateway/icmp_proxy.rs b/src/gateway/icmp_proxy.rs similarity index 100% rename from easytier-core/src/gateway/icmp_proxy.rs rename to src/gateway/icmp_proxy.rs diff --git a/easytier-core/src/gateway/mod.rs b/src/gateway/mod.rs similarity index 100% rename from easytier-core/src/gateway/mod.rs rename to src/gateway/mod.rs diff --git a/easytier-core/src/gateway/tcp_proxy.rs b/src/gateway/tcp_proxy.rs similarity index 100% rename from easytier-core/src/gateway/tcp_proxy.rs rename to src/gateway/tcp_proxy.rs diff --git a/easytier-core/src/gateway/udp_proxy.rs b/src/gateway/udp_proxy.rs similarity index 100% rename from easytier-core/src/gateway/udp_proxy.rs rename to src/gateway/udp_proxy.rs diff --git a/easytier-core/src/instance/instance.rs b/src/instance/instance.rs similarity index 100% rename from easytier-core/src/instance/instance.rs rename to src/instance/instance.rs diff --git a/easytier-core/src/instance/listeners.rs b/src/instance/listeners.rs similarity index 100% rename from easytier-core/src/instance/listeners.rs rename to src/instance/listeners.rs diff --git a/easytier-core/src/instance/mod.rs b/src/instance/mod.rs similarity index 100% rename from easytier-core/src/instance/mod.rs rename to src/instance/mod.rs diff --git a/easytier-core/src/instance/tun_codec.rs b/src/instance/tun_codec.rs similarity index 100% rename from easytier-core/src/instance/tun_codec.rs rename to src/instance/tun_codec.rs diff --git a/easytier-core/src/instance/virtual_nic.rs b/src/instance/virtual_nic.rs similarity index 100% rename from easytier-core/src/instance/virtual_nic.rs rename to src/instance/virtual_nic.rs diff --git a/easytier-core/src/peer_center/instance.rs b/src/peer_center/instance.rs similarity index 100% rename from easytier-core/src/peer_center/instance.rs rename to src/peer_center/instance.rs diff --git a/easytier-core/src/peer_center/mod.rs b/src/peer_center/mod.rs similarity index 100% rename from easytier-core/src/peer_center/mod.rs rename to src/peer_center/mod.rs diff --git a/easytier-core/src/peer_center/server.rs b/src/peer_center/server.rs similarity index 100% rename from easytier-core/src/peer_center/server.rs rename to src/peer_center/server.rs diff --git a/easytier-core/src/peer_center/service.rs b/src/peer_center/service.rs similarity index 100% rename from easytier-core/src/peer_center/service.rs rename to src/peer_center/service.rs diff --git a/easytier-core/src/peers/foreign_network_client.rs b/src/peers/foreign_network_client.rs similarity index 100% rename from easytier-core/src/peers/foreign_network_client.rs rename to src/peers/foreign_network_client.rs diff --git a/easytier-core/src/peers/foreign_network_manager.rs b/src/peers/foreign_network_manager.rs similarity index 100% rename from easytier-core/src/peers/foreign_network_manager.rs rename to src/peers/foreign_network_manager.rs diff --git a/easytier-core/src/peers/mod.rs b/src/peers/mod.rs similarity index 100% rename from easytier-core/src/peers/mod.rs rename to src/peers/mod.rs diff --git a/easytier-core/src/peers/packet.rs b/src/peers/packet.rs similarity index 100% rename from easytier-core/src/peers/packet.rs rename to src/peers/packet.rs diff --git a/easytier-core/src/peers/peer.rs b/src/peers/peer.rs similarity index 100% rename from easytier-core/src/peers/peer.rs rename to src/peers/peer.rs diff --git a/easytier-core/src/peers/peer_conn.rs b/src/peers/peer_conn.rs similarity index 100% rename from easytier-core/src/peers/peer_conn.rs rename to src/peers/peer_conn.rs diff --git a/easytier-core/src/peers/peer_manager.rs b/src/peers/peer_manager.rs similarity index 100% rename from easytier-core/src/peers/peer_manager.rs rename to src/peers/peer_manager.rs diff --git a/easytier-core/src/peers/peer_map.rs b/src/peers/peer_map.rs similarity index 100% rename from easytier-core/src/peers/peer_map.rs rename to src/peers/peer_map.rs diff --git a/easytier-core/src/peers/peer_ospf_route.rs b/src/peers/peer_ospf_route.rs similarity index 100% rename from easytier-core/src/peers/peer_ospf_route.rs rename to src/peers/peer_ospf_route.rs diff --git a/easytier-core/src/peers/peer_rip_route.rs b/src/peers/peer_rip_route.rs similarity index 100% rename from easytier-core/src/peers/peer_rip_route.rs rename to src/peers/peer_rip_route.rs diff --git a/easytier-core/src/peers/peer_rpc.rs b/src/peers/peer_rpc.rs similarity index 100% rename from easytier-core/src/peers/peer_rpc.rs rename to src/peers/peer_rpc.rs diff --git a/easytier-core/src/peers/route_trait.rs b/src/peers/route_trait.rs similarity index 100% rename from easytier-core/src/peers/route_trait.rs rename to src/peers/route_trait.rs diff --git a/easytier-core/src/peers/rpc_service.rs b/src/peers/rpc_service.rs similarity index 100% rename from easytier-core/src/peers/rpc_service.rs rename to src/peers/rpc_service.rs diff --git a/easytier-core/src/peers/tests.rs b/src/peers/tests.rs similarity index 100% rename from easytier-core/src/peers/tests.rs rename to src/peers/tests.rs diff --git a/easytier-core/src/rpc/cli.rs b/src/rpc/cli.rs similarity index 100% rename from easytier-core/src/rpc/cli.rs rename to src/rpc/cli.rs diff --git a/easytier-core/src/rpc/mod.rs b/src/rpc/mod.rs similarity index 100% rename from easytier-core/src/rpc/mod.rs rename to src/rpc/mod.rs diff --git a/easytier-core/src/rpc/peer.rs b/src/rpc/peer.rs similarity index 100% rename from easytier-core/src/rpc/peer.rs rename to src/rpc/peer.rs diff --git a/easytier-core/src/tests/mod.rs b/src/tests/mod.rs similarity index 100% rename from easytier-core/src/tests/mod.rs rename to src/tests/mod.rs diff --git a/easytier-core/src/tests/three_node.rs b/src/tests/three_node.rs similarity index 100% rename from easytier-core/src/tests/three_node.rs rename to src/tests/three_node.rs diff --git a/easytier-core/src/tunnels/codec.rs b/src/tunnels/codec.rs similarity index 100% rename from easytier-core/src/tunnels/codec.rs rename to src/tunnels/codec.rs diff --git a/easytier-core/src/tunnels/common.rs b/src/tunnels/common.rs similarity index 100% rename from easytier-core/src/tunnels/common.rs rename to src/tunnels/common.rs diff --git a/easytier-core/src/tunnels/mod.rs b/src/tunnels/mod.rs similarity index 100% rename from easytier-core/src/tunnels/mod.rs rename to src/tunnels/mod.rs diff --git a/easytier-core/src/tunnels/ring_tunnel.rs b/src/tunnels/ring_tunnel.rs similarity index 100% rename from easytier-core/src/tunnels/ring_tunnel.rs rename to src/tunnels/ring_tunnel.rs diff --git a/easytier-core/src/tunnels/stats.rs b/src/tunnels/stats.rs similarity index 100% rename from easytier-core/src/tunnels/stats.rs rename to src/tunnels/stats.rs diff --git a/easytier-core/src/tunnels/tcp_tunnel.rs b/src/tunnels/tcp_tunnel.rs similarity index 100% rename from easytier-core/src/tunnels/tcp_tunnel.rs rename to src/tunnels/tcp_tunnel.rs diff --git a/easytier-core/src/tunnels/tunnel_filter.rs b/src/tunnels/tunnel_filter.rs similarity index 100% rename from easytier-core/src/tunnels/tunnel_filter.rs rename to src/tunnels/tunnel_filter.rs diff --git a/easytier-core/src/tunnels/udp_tunnel.rs b/src/tunnels/udp_tunnel.rs similarity index 100% rename from easytier-core/src/tunnels/udp_tunnel.rs rename to src/tunnels/udp_tunnel.rs