Skip to content

Commit 6be72fe

Browse files
Zhao-MichaelthezzisuKKRainbowimkivaBlackLuny
authored
Merge v2.4.0 codes (#16)
* Merge offical easytier to dev (#8) * Update default_port and sni logic to improve reverse proxy reachability (EasyTier#947) * remove LICENSE (EasyTier#950) * Create LICENSE (EasyTier#951) * kcp connect retry (EasyTier#952) * fix(vpn-portal): wireguard peer table should be kept if the client roamed to another endpoint address (EasyTier#954) * Web dual stack (EasyTier#953) * reimplement easytier-web dual stack * add protocol check for dual stack listener current only support tcp and udp * Added RPC portal whitelist function, allowing only local access by default to enhance security (EasyTier#929) * feat: allow using `--proxy-forward-by-system` together with `--enable-exit-node` (EasyTier#957) * ipv4-peerid table should use peer with least hop (EasyTier#958) sometimes route table may not be updated in time, so some dead nodes are still showing in the peer list. when generating ipv4-peer table, we should avoid these dead devices overrides the entry of healthy nodes. * add check for rpc packet fix EasyTier#963 (EasyTier#969) * fix ospf route (EasyTier#970) - **fix deadlock in ospf route introducd by EasyTier#958 ** - **use random peer id for foreign network entry, because ospf route algo need peer id change after peer info version reset. this may interfere route propagation and cause node residual** - **allow multiple nodes broadcast same network ranges for subnet proxy** - **bump version to v2.3.2** * easytier-core支持多配置文件 (EasyTier#964) * 将web和gui允许多网络实例逻辑抽离到NetworkInstanceManager中 * easytier-core支持多配置文件 * FFI复用instance manager * 添加instance manager 单元测试 * internal stun server should use xor mapped addr (EasyTier#975) * remove macos default route on utun device (EasyTier#976) * support mapping subnet proxy (EasyTier#978) - **support mapping subproxy network cidr** - **add command line option for proxy network mapping** - **fix Instance leak in tests. * Fixed the issue where the GUI would panic after using InstanceManager (EasyTier#982) Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * use bulk compress instead of streaming to reduce mem usage (EasyTier#985) * Update core.yml,use upx4.2.4 (EasyTier#991) * support quic proxy (EasyTier#993) QUIC proxy works like kcp proxy, it can proxy TCP streams and transfer data with QUIC. QUIC has better congestion algorithm (BBR) for network with both high loss rate and high bandwidth. QUIC proxy can be enabled by passing `--enable-quic-proxy` to easytier in the client side. The proxy status can be viewed by `easytier-cli proxy`. * Add conversion method from TomlConfigLoader to NetworkConfig to enhance configuration experience (EasyTier#990) * add method to create NetworkConfig from TomlConfigLoader * allow web export/import toml config file and gui edit toml config * Extract the configuration file dialog into a separate component and allow direct editing of the configuration file on the web * add keepalive option for quic proxy (EasyTier#1008) avoid connection loss when idle * allow set machine uid with command line (EasyTier#1009) * installing by homebrew should use easytier-gui (EasyTier#1004) * Add is_hole_punched flag to PeerConn (EasyTier#1001) * quic uses the bbr congestion control algorithm (EasyTier#1010) * add bps limiter (EasyTier#1015) * add token bucket * remove quinn-proto * bps limit should throttle kcp packet * add api_meta.js to frontend public * Implement custom fmt::Debug for some prost_build generated structs Currently implemented for: 1. common.Ipv4Addr 2. common.Ipv6Addr 3. common.UUID * simplify Textarea class in ConfigGenerator.vue * add Windows Service install script * fix uninstall.cmd (EasyTier#1036) * blacklist the peers which disable p2p in hole-punching client (EasyTier#1038) * limit max conn count in foreign network manager (EasyTier#1041) * fix rpc_portal_whitelist from config file not working (EasyTier#1042) * web improve (EasyTier#1047) * add geo info for in web device list (EasyTier#1052) * fix cargo install failure (EasyTier#1054) * fix mem leak of token bucket (EasyTier#1055) * allow set multithread count (EasyTier#1056) * update gui placeholder text (EasyTier#1062) * support ohos (EasyTier#974) * support ohos --------- Co-authored-by: FrankHan <2777926911@qq.com> * Add support for IPv6 within VPN (EasyTier#1061) * add flake.nix with nix based dev shell * add support for IPv6 * update thunk --------- Co-authored-by: sijie.sun <sijie.sun@smartx.com> * use winapi to config ip and route (remove dep on netsh) (EasyTier#1079) On some windows machines can not execut netsh. Also this avoid black cmd window when using gui. * exclude ohos from workspace (EasyTier#1080) * contributing.md (EasyTier#1084) * handle close peer conn correctly (EasyTier#1082) * smoltcp use larger tx/rx buf size (EasyTier#1085) * smoltcp use larger tx/rx buf size * fix direct conn check * fix incorrect config check (EasyTier#1086) * chore(ci): update GitHub Actions (EasyTier#1088) * chore(ci): update GitHub Actions * update gradle-wrapper and revert UPX * exclude cargo from dependabot and remove empty .gitmodules * fix: cannot start gui on linux (EasyTier#1090) * update readme (EasyTier#1102) * socks5 and port forwarding (EasyTier#1118) * add options to generate completions (EasyTier#1103) * add options to generate completions use clap-complete crate to generate completions scripts: easytier-core --generate fish > ~/.config/fish/completions/easytier-core.fish --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * Allows to modify Easytier's mapped listener at runtime via RPC (EasyTier#1107) * Add proto definition * Implement and register the corresponding rpc service * Parse command line parameters and call remote rpc service --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * close peer conn if remote addr is from virtual network (EasyTier#1123) * update issue template (EasyTier#1126) * add disable ipv6 option to gui/web (EasyTier#1127) * fix compile issue --------- Co-authored-by: Zisu Zhang <thezzisu@gmail.com> Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> Co-authored-by: Kiva <imkiva@islovely.icu> Co-authored-by: BlackLuny <602814112@qq.com> Co-authored-by: Mg Pig <w2xzzpig@hotmail.com> Co-authored-by: tianxiayu007 <1083010692@qq.com> Co-authored-by: liusen373 <52489720+liusen373@users.noreply.github.com> Co-authored-by: chenxudong2020 <872603935@qq.com> Co-authored-by: sijie.sun <sijie.sun@smartx.com> Co-authored-by: dawn-lc <30336566+dawn-lc@users.noreply.github.com> Co-authored-by: 韩嘉乐 <2382008060@qq.com> Co-authored-by: FrankHan <2777926911@qq.com> Co-authored-by: DavHau <hsngrmpf+github@gmail.com> Co-authored-by: Rene Leonhardt <65483435+reneleonhardt@users.noreply.github.com> Co-authored-by: lazebird <lazebird@163.com> Co-authored-by: Jiangqiu Shen <ivy22233qiu@live.com> * remove mimalloc * clear CONNECTION_MAP resource * Merge new Offical Easytier codes (#10) * Update default_port and sni logic to improve reverse proxy reachability (EasyTier#947) * remove LICENSE (EasyTier#950) * Create LICENSE (EasyTier#951) * kcp connect retry (EasyTier#952) * fix(vpn-portal): wireguard peer table should be kept if the client roamed to another endpoint address (EasyTier#954) * Web dual stack (EasyTier#953) * reimplement easytier-web dual stack * add protocol check for dual stack listener current only support tcp and udp * Added RPC portal whitelist function, allowing only local access by default to enhance security (EasyTier#929) * feat: allow using `--proxy-forward-by-system` together with `--enable-exit-node` (EasyTier#957) * ipv4-peerid table should use peer with least hop (EasyTier#958) sometimes route table may not be updated in time, so some dead nodes are still showing in the peer list. when generating ipv4-peer table, we should avoid these dead devices overrides the entry of healthy nodes. * add check for rpc packet fix EasyTier#963 (EasyTier#969) * fix ospf route (EasyTier#970) - **fix deadlock in ospf route introducd by EasyTier#958 ** - **use random peer id for foreign network entry, because ospf route algo need peer id change after peer info version reset. this may interfere route propagation and cause node residual** - **allow multiple nodes broadcast same network ranges for subnet proxy** - **bump version to v2.3.2** * easytier-core支持多配置文件 (EasyTier#964) * 将web和gui允许多网络实例逻辑抽离到NetworkInstanceManager中 * easytier-core支持多配置文件 * FFI复用instance manager * 添加instance manager 单元测试 * internal stun server should use xor mapped addr (EasyTier#975) * remove macos default route on utun device (EasyTier#976) * support mapping subnet proxy (EasyTier#978) - **support mapping subproxy network cidr** - **add command line option for proxy network mapping** - **fix Instance leak in tests. * Fixed the issue where the GUI would panic after using InstanceManager (EasyTier#982) Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * use bulk compress instead of streaming to reduce mem usage (EasyTier#985) * Update core.yml,use upx4.2.4 (EasyTier#991) * support quic proxy (EasyTier#993) QUIC proxy works like kcp proxy, it can proxy TCP streams and transfer data with QUIC. QUIC has better congestion algorithm (BBR) for network with both high loss rate and high bandwidth. QUIC proxy can be enabled by passing `--enable-quic-proxy` to easytier in the client side. The proxy status can be viewed by `easytier-cli proxy`. * Add conversion method from TomlConfigLoader to NetworkConfig to enhance configuration experience (EasyTier#990) * add method to create NetworkConfig from TomlConfigLoader * allow web export/import toml config file and gui edit toml config * Extract the configuration file dialog into a separate component and allow direct editing of the configuration file on the web * add keepalive option for quic proxy (EasyTier#1008) avoid connection loss when idle * allow set machine uid with command line (EasyTier#1009) * installing by homebrew should use easytier-gui (EasyTier#1004) * Add is_hole_punched flag to PeerConn (EasyTier#1001) * quic uses the bbr congestion control algorithm (EasyTier#1010) * add bps limiter (EasyTier#1015) * add token bucket * remove quinn-proto * bps limit should throttle kcp packet * add api_meta.js to frontend public * Implement custom fmt::Debug for some prost_build generated structs Currently implemented for: 1. common.Ipv4Addr 2. common.Ipv6Addr 3. common.UUID * simplify Textarea class in ConfigGenerator.vue * add Windows Service install script * fix uninstall.cmd (EasyTier#1036) * blacklist the peers which disable p2p in hole-punching client (EasyTier#1038) * limit max conn count in foreign network manager (EasyTier#1041) * fix rpc_portal_whitelist from config file not working (EasyTier#1042) * web improve (EasyTier#1047) * add geo info for in web device list (EasyTier#1052) * fix cargo install failure (EasyTier#1054) * fix mem leak of token bucket (EasyTier#1055) * allow set multithread count (EasyTier#1056) * update gui placeholder text (EasyTier#1062) * support ohos (EasyTier#974) * support ohos --------- Co-authored-by: FrankHan <2777926911@qq.com> * Add support for IPv6 within VPN (EasyTier#1061) * add flake.nix with nix based dev shell * add support for IPv6 * update thunk --------- Co-authored-by: sijie.sun <sijie.sun@smartx.com> * use winapi to config ip and route (remove dep on netsh) (EasyTier#1079) On some windows machines can not execut netsh. Also this avoid black cmd window when using gui. * exclude ohos from workspace (EasyTier#1080) * contributing.md (EasyTier#1084) * handle close peer conn correctly (EasyTier#1082) * smoltcp use larger tx/rx buf size (EasyTier#1085) * smoltcp use larger tx/rx buf size * fix direct conn check * fix incorrect config check (EasyTier#1086) * chore(ci): update GitHub Actions (EasyTier#1088) * chore(ci): update GitHub Actions * update gradle-wrapper and revert UPX * exclude cargo from dependabot and remove empty .gitmodules * fix: cannot start gui on linux (EasyTier#1090) * update readme (EasyTier#1102) * socks5 and port forwarding (EasyTier#1118) * add options to generate completions (EasyTier#1103) * add options to generate completions use clap-complete crate to generate completions scripts: easytier-core --generate fish > ~/.config/fish/completions/easytier-core.fish --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * Allows to modify Easytier's mapped listener at runtime via RPC (EasyTier#1107) * Add proto definition * Implement and register the corresponding rpc service * Parse command line parameters and call remote rpc service --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * close peer conn if remote addr is from virtual network (EasyTier#1123) * update issue template (EasyTier#1126) * add disable ipv6 option to gui/web (EasyTier#1127) * fix latency first route of public server (EasyTier#1129) * add windows firewall for tun interface (EasyTier#1130) allow all icmp/tcp/udp on tun interface. * try create tun device if not exist (EasyTier#1131) --------- Co-authored-by: Zisu Zhang <thezzisu@gmail.com> Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> Co-authored-by: Kiva <imkiva@islovely.icu> Co-authored-by: BlackLuny <602814112@qq.com> Co-authored-by: Mg Pig <w2xzzpig@hotmail.com> Co-authored-by: tianxiayu007 <1083010692@qq.com> Co-authored-by: liusen373 <52489720+liusen373@users.noreply.github.com> Co-authored-by: chenxudong2020 <872603935@qq.com> Co-authored-by: sijie.sun <sijie.sun@smartx.com> Co-authored-by: dawn-lc <30336566+dawn-lc@users.noreply.github.com> Co-authored-by: 韩嘉乐 <2382008060@qq.com> Co-authored-by: FrankHan <2777926911@qq.com> Co-authored-by: DavHau <hsngrmpf+github@gmail.com> Co-authored-by: Rene Leonhardt <65483435+reneleonhardt@users.noreply.github.com> Co-authored-by: lazebird <lazebird@163.com> Co-authored-by: Jiangqiu Shen <ivy22233qiu@live.com> * Merge code from offical repo (#12) * Update default_port and sni logic to improve reverse proxy reachability (EasyTier#947) * remove LICENSE (EasyTier#950) * Create LICENSE (EasyTier#951) * kcp connect retry (EasyTier#952) * fix(vpn-portal): wireguard peer table should be kept if the client roamed to another endpoint address (EasyTier#954) * Web dual stack (EasyTier#953) * reimplement easytier-web dual stack * add protocol check for dual stack listener current only support tcp and udp * Added RPC portal whitelist function, allowing only local access by default to enhance security (EasyTier#929) * feat: allow using `--proxy-forward-by-system` together with `--enable-exit-node` (EasyTier#957) * ipv4-peerid table should use peer with least hop (EasyTier#958) sometimes route table may not be updated in time, so some dead nodes are still showing in the peer list. when generating ipv4-peer table, we should avoid these dead devices overrides the entry of healthy nodes. * add check for rpc packet fix EasyTier#963 (EasyTier#969) * fix ospf route (EasyTier#970) - **fix deadlock in ospf route introducd by EasyTier#958 ** - **use random peer id for foreign network entry, because ospf route algo need peer id change after peer info version reset. this may interfere route propagation and cause node residual** - **allow multiple nodes broadcast same network ranges for subnet proxy** - **bump version to v2.3.2** * easytier-core支持多配置文件 (EasyTier#964) * 将web和gui允许多网络实例逻辑抽离到NetworkInstanceManager中 * easytier-core支持多配置文件 * FFI复用instance manager * 添加instance manager 单元测试 * internal stun server should use xor mapped addr (EasyTier#975) * remove macos default route on utun device (EasyTier#976) * support mapping subnet proxy (EasyTier#978) - **support mapping subproxy network cidr** - **add command line option for proxy network mapping** - **fix Instance leak in tests. * Fixed the issue where the GUI would panic after using InstanceManager (EasyTier#982) Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * use bulk compress instead of streaming to reduce mem usage (EasyTier#985) * Update core.yml,use upx4.2.4 (EasyTier#991) * support quic proxy (EasyTier#993) QUIC proxy works like kcp proxy, it can proxy TCP streams and transfer data with QUIC. QUIC has better congestion algorithm (BBR) for network with both high loss rate and high bandwidth. QUIC proxy can be enabled by passing `--enable-quic-proxy` to easytier in the client side. The proxy status can be viewed by `easytier-cli proxy`. * Add conversion method from TomlConfigLoader to NetworkConfig to enhance configuration experience (EasyTier#990) * add method to create NetworkConfig from TomlConfigLoader * allow web export/import toml config file and gui edit toml config * Extract the configuration file dialog into a separate component and allow direct editing of the configuration file on the web * add keepalive option for quic proxy (EasyTier#1008) avoid connection loss when idle * allow set machine uid with command line (EasyTier#1009) * installing by homebrew should use easytier-gui (EasyTier#1004) * Add is_hole_punched flag to PeerConn (EasyTier#1001) * quic uses the bbr congestion control algorithm (EasyTier#1010) * add bps limiter (EasyTier#1015) * add token bucket * remove quinn-proto * bps limit should throttle kcp packet * add api_meta.js to frontend public * Implement custom fmt::Debug for some prost_build generated structs Currently implemented for: 1. common.Ipv4Addr 2. common.Ipv6Addr 3. common.UUID * simplify Textarea class in ConfigGenerator.vue * add Windows Service install script * fix uninstall.cmd (EasyTier#1036) * blacklist the peers which disable p2p in hole-punching client (EasyTier#1038) * limit max conn count in foreign network manager (EasyTier#1041) * fix rpc_portal_whitelist from config file not working (EasyTier#1042) * web improve (EasyTier#1047) * add geo info for in web device list (EasyTier#1052) * fix cargo install failure (EasyTier#1054) * fix mem leak of token bucket (EasyTier#1055) * allow set multithread count (EasyTier#1056) * update gui placeholder text (EasyTier#1062) * support ohos (EasyTier#974) * support ohos --------- Co-authored-by: FrankHan <2777926911@qq.com> * Add support for IPv6 within VPN (EasyTier#1061) * add flake.nix with nix based dev shell * add support for IPv6 * update thunk --------- Co-authored-by: sijie.sun <sijie.sun@smartx.com> * use winapi to config ip and route (remove dep on netsh) (EasyTier#1079) On some windows machines can not execut netsh. Also this avoid black cmd window when using gui. * exclude ohos from workspace (EasyTier#1080) * contributing.md (EasyTier#1084) * handle close peer conn correctly (EasyTier#1082) * smoltcp use larger tx/rx buf size (EasyTier#1085) * smoltcp use larger tx/rx buf size * fix direct conn check * fix incorrect config check (EasyTier#1086) * chore(ci): update GitHub Actions (EasyTier#1088) * chore(ci): update GitHub Actions * update gradle-wrapper and revert UPX * exclude cargo from dependabot and remove empty .gitmodules * fix: cannot start gui on linux (EasyTier#1090) * update readme (EasyTier#1102) * socks5 and port forwarding (EasyTier#1118) * add options to generate completions (EasyTier#1103) * add options to generate completions use clap-complete crate to generate completions scripts: easytier-core --generate fish > ~/.config/fish/completions/easytier-core.fish --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * Allows to modify Easytier's mapped listener at runtime via RPC (EasyTier#1107) * Add proto definition * Implement and register the corresponding rpc service * Parse command line parameters and call remote rpc service --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * close peer conn if remote addr is from virtual network (EasyTier#1123) * update issue template (EasyTier#1126) * add disable ipv6 option to gui/web (EasyTier#1127) * fix latency first route of public server (EasyTier#1129) * add windows firewall for tun interface (EasyTier#1130) allow all icmp/tcp/udp on tun interface. * try create tun device if not exist (EasyTier#1131) * reduce memory usage (EasyTier#1133) Large memory usage comes from: Mimalloc hold large thread cache, causing abort 13M+ usage. QUIC endpoint occupy 3M when GRO is enabled. Smoltcp 64 tcp listener use 2MB. * fix bugs (EasyTier#1138) 1. avoid dns query hangs the thread 2. avoid deadloop when stun query failed because of no ipv4 addr. 3. make quic input error non-fatal. 4. remove ring tunnel from connection map to avoid mem leak. 5. limit listener retry count. --------- Co-authored-by: Zisu Zhang <thezzisu@gmail.com> Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> Co-authored-by: Kiva <imkiva@islovely.icu> Co-authored-by: BlackLuny <602814112@qq.com> Co-authored-by: Mg Pig <w2xzzpig@hotmail.com> Co-authored-by: tianxiayu007 <1083010692@qq.com> Co-authored-by: liusen373 <52489720+liusen373@users.noreply.github.com> Co-authored-by: chenxudong2020 <872603935@qq.com> Co-authored-by: sijie.sun <sijie.sun@smartx.com> Co-authored-by: dawn-lc <30336566+dawn-lc@users.noreply.github.com> Co-authored-by: 韩嘉乐 <2382008060@qq.com> Co-authored-by: FrankHan <2777926911@qq.com> Co-authored-by: DavHau <hsngrmpf+github@gmail.com> Co-authored-by: Rene Leonhardt <65483435+reneleonhardt@users.noreply.github.com> Co-authored-by: lazebird <lazebird@163.com> Co-authored-by: Jiangqiu Shen <ivy22233qiu@live.com> * Merge v2.4.0 codes (#15) * Update default_port and sni logic to improve reverse proxy reachability (EasyTier#947) * remove LICENSE (EasyTier#950) * Create LICENSE (EasyTier#951) * kcp connect retry (EasyTier#952) * fix(vpn-portal): wireguard peer table should be kept if the client roamed to another endpoint address (EasyTier#954) * Web dual stack (EasyTier#953) * reimplement easytier-web dual stack * add protocol check for dual stack listener current only support tcp and udp * Added RPC portal whitelist function, allowing only local access by default to enhance security (EasyTier#929) * feat: allow using `--proxy-forward-by-system` together with `--enable-exit-node` (EasyTier#957) * ipv4-peerid table should use peer with least hop (EasyTier#958) sometimes route table may not be updated in time, so some dead nodes are still showing in the peer list. when generating ipv4-peer table, we should avoid these dead devices overrides the entry of healthy nodes. * add check for rpc packet fix EasyTier#963 (EasyTier#969) * fix ospf route (EasyTier#970) - **fix deadlock in ospf route introducd by EasyTier#958 ** - **use random peer id for foreign network entry, because ospf route algo need peer id change after peer info version reset. this may interfere route propagation and cause node residual** - **allow multiple nodes broadcast same network ranges for subnet proxy** - **bump version to v2.3.2** * easytier-core支持多配置文件 (EasyTier#964) * 将web和gui允许多网络实例逻辑抽离到NetworkInstanceManager中 * easytier-core支持多配置文件 * FFI复用instance manager * 添加instance manager 单元测试 * internal stun server should use xor mapped addr (EasyTier#975) * remove macos default route on utun device (EasyTier#976) * support mapping subnet proxy (EasyTier#978) - **support mapping subproxy network cidr** - **add command line option for proxy network mapping** - **fix Instance leak in tests. * Fixed the issue where the GUI would panic after using InstanceManager (EasyTier#982) Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * use bulk compress instead of streaming to reduce mem usage (EasyTier#985) * Update core.yml,use upx4.2.4 (EasyTier#991) * support quic proxy (EasyTier#993) QUIC proxy works like kcp proxy, it can proxy TCP streams and transfer data with QUIC. QUIC has better congestion algorithm (BBR) for network with both high loss rate and high bandwidth. QUIC proxy can be enabled by passing `--enable-quic-proxy` to easytier in the client side. The proxy status can be viewed by `easytier-cli proxy`. * Add conversion method from TomlConfigLoader to NetworkConfig to enhance configuration experience (EasyTier#990) * add method to create NetworkConfig from TomlConfigLoader * allow web export/import toml config file and gui edit toml config * Extract the configuration file dialog into a separate component and allow direct editing of the configuration file on the web * add keepalive option for quic proxy (EasyTier#1008) avoid connection loss when idle * allow set machine uid with command line (EasyTier#1009) * installing by homebrew should use easytier-gui (EasyTier#1004) * Add is_hole_punched flag to PeerConn (EasyTier#1001) * quic uses the bbr congestion control algorithm (EasyTier#1010) * add bps limiter (EasyTier#1015) * add token bucket * remove quinn-proto * bps limit should throttle kcp packet * add api_meta.js to frontend public * Implement custom fmt::Debug for some prost_build generated structs Currently implemented for: 1. common.Ipv4Addr 2. common.Ipv6Addr 3. common.UUID * simplify Textarea class in ConfigGenerator.vue * add Windows Service install script * fix uninstall.cmd (EasyTier#1036) * blacklist the peers which disable p2p in hole-punching client (EasyTier#1038) * limit max conn count in foreign network manager (EasyTier#1041) * fix rpc_portal_whitelist from config file not working (EasyTier#1042) * web improve (EasyTier#1047) * add geo info for in web device list (EasyTier#1052) * fix cargo install failure (EasyTier#1054) * fix mem leak of token bucket (EasyTier#1055) * allow set multithread count (EasyTier#1056) * update gui placeholder text (EasyTier#1062) * support ohos (EasyTier#974) * support ohos --------- Co-authored-by: FrankHan <2777926911@qq.com> * Add support for IPv6 within VPN (EasyTier#1061) * add flake.nix with nix based dev shell * add support for IPv6 * update thunk --------- Co-authored-by: sijie.sun <sijie.sun@smartx.com> * use winapi to config ip and route (remove dep on netsh) (EasyTier#1079) On some windows machines can not execut netsh. Also this avoid black cmd window when using gui. * exclude ohos from workspace (EasyTier#1080) * contributing.md (EasyTier#1084) * handle close peer conn correctly (EasyTier#1082) * smoltcp use larger tx/rx buf size (EasyTier#1085) * smoltcp use larger tx/rx buf size * fix direct conn check * fix incorrect config check (EasyTier#1086) * chore(ci): update GitHub Actions (EasyTier#1088) * chore(ci): update GitHub Actions * update gradle-wrapper and revert UPX * exclude cargo from dependabot and remove empty .gitmodules * fix: cannot start gui on linux (EasyTier#1090) * update readme (EasyTier#1102) * socks5 and port forwarding (EasyTier#1118) * add options to generate completions (EasyTier#1103) * add options to generate completions use clap-complete crate to generate completions scripts: easytier-core --generate fish > ~/.config/fish/completions/easytier-core.fish --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * Allows to modify Easytier's mapped listener at runtime via RPC (EasyTier#1107) * Add proto definition * Implement and register the corresponding rpc service * Parse command line parameters and call remote rpc service --------- Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> * close peer conn if remote addr is from virtual network (EasyTier#1123) * update issue template (EasyTier#1126) * add disable ipv6 option to gui/web (EasyTier#1127) * fix latency first route of public server (EasyTier#1129) * add windows firewall for tun interface (EasyTier#1130) allow all icmp/tcp/udp on tun interface. * try create tun device if not exist (EasyTier#1131) * reduce memory usage (EasyTier#1133) Large memory usage comes from: Mimalloc hold large thread cache, causing abort 13M+ usage. QUIC endpoint occupy 3M when GRO is enabled. Smoltcp 64 tcp listener use 2MB. * fix bugs (EasyTier#1138) 1. avoid dns query hangs the thread 2. avoid deadloop when stun query failed because of no ipv4 addr. 3. make quic input error non-fatal. 4. remove ring tunnel from connection map to avoid mem leak. 5. limit listener retry count. * Implement ACL (EasyTier#1140) 1. get acl stats ``` ./easytier-cli acl stats AclStats: Global: CacheHits: 4 CacheMaxSize: 10000 CacheSize: 5 DefaultAllows: 3 InboundPacketsAllowed: 2 InboundPacketsTotal: 2 OutboundPacketsAllowed: 7 OutboundPacketsTotal: 7 PacketsAllowed: 9 PacketsTotal: 9 RuleMatches: 2 ConnTrack: [src: 10.14.11.1:57444, dst: 10.14.11.2:1000, proto: Tcp, state: New, pkts: 1, bytes: 60, created: 2025-07-24 10:13:39 +08:00, last_seen: 2025-07-24 10:13:39 +08:00] Rules: [name: 'tcp_whitelist', prio: 1000, action: Allow, enabled: true, proto: Tcp, ports: ["1000"], src_ports: [], src_ips: [], dst_ips: [], stateful: true, rate: 0, burst: 0] [pkts: 2, bytes: 120] ``` 2. use tcp/udp whitelist to block unexpected traffic. `sudo ./easytier-core -d --tcp-whitelist 1000` 3. use complete acl ability with config file: ``` [[acl.acl_v1.chains]] name = "inbound_whitelist" chain_type = 1 description = "Auto-generated inbound whitelist from CLI" enabled = true default_action = 2 [[acl.acl_v1.chains.rules]] name = "tcp_whitelist" description = "Auto-generated TCP whitelist rule" priority = 1000 enabled = true protocol = 1 ports = ["1000"] source_ips = [] destination_ips = [] source_ports = [] action = 1 rate_limit = 0 burst_limit = 0 stateful = true ``` * releases/v2.4.0 (EasyTier#1145) * bump version to v2.4.0 * update tauri. * allow try direct connect to public server * support loongarch (EasyTier#1146) * need encrypt rpc if dst is in peer map (EasyTier#1151) --------- Co-authored-by: Zisu Zhang <thezzisu@gmail.com> Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> Co-authored-by: Kiva <imkiva@islovely.icu> Co-authored-by: BlackLuny <602814112@qq.com> Co-authored-by: Mg Pig <w2xzzpig@hotmail.com> Co-authored-by: tianxiayu007 <1083010692@qq.com> Co-authored-by: liusen373 <52489720+liusen373@users.noreply.github.com> Co-authored-by: chenxudong2020 <872603935@qq.com> Co-authored-by: sijie.sun <sijie.sun@smartx.com> Co-authored-by: dawn-lc <30336566+dawn-lc@users.noreply.github.com> Co-authored-by: 韩嘉乐 <2382008060@qq.com> Co-authored-by: FrankHan <2777926911@qq.com> Co-authored-by: DavHau <hsngrmpf+github@gmail.com> Co-authored-by: Rene Leonhardt <65483435+reneleonhardt@users.noreply.github.com> Co-authored-by: lazebird <lazebird@163.com> Co-authored-by: Jiangqiu Shen <ivy22233qiu@live.com> * update pipeline files * Use old workflow --------- Co-authored-by: Zisu Zhang <thezzisu@gmail.com> Co-authored-by: Sijie.Sun <sunsijie@buaa.edu.cn> Co-authored-by: Kiva <imkiva@islovely.icu> Co-authored-by: BlackLuny <602814112@qq.com> Co-authored-by: Mg Pig <w2xzzpig@hotmail.com> Co-authored-by: tianxiayu007 <1083010692@qq.com> Co-authored-by: liusen373 <52489720+liusen373@users.noreply.github.com> Co-authored-by: chenxudong2020 <872603935@qq.com> Co-authored-by: sijie.sun <sijie.sun@smartx.com> Co-authored-by: dawn-lc <30336566+dawn-lc@users.noreply.github.com> Co-authored-by: 韩嘉乐 <2382008060@qq.com> Co-authored-by: FrankHan <2777926911@qq.com> Co-authored-by: DavHau <hsngrmpf+github@gmail.com> Co-authored-by: Rene Leonhardt <65483435+reneleonhardt@users.noreply.github.com> Co-authored-by: lazebird <lazebird@163.com> Co-authored-by: Jiangqiu Shen <ivy22233qiu@live.com>
1 parent ace8f88 commit 6be72fe

127 files changed

Lines changed: 15081 additions & 3269 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cargo/config.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ rustflags = ["-C", "linker-flavor=ld.lld"]
55
[target.aarch64-unknown-linux-gnu]
66
linker = "aarch64-linux-gnu-gcc"
77

8+
[target.aarch64-unknown-linux-ohos]
9+
ar = "/usr/local/ohos-sdk/linux/native/llvm/bin/llvm-ar"
10+
linker = "/home/runner/sdk/native/llvm/aarch64-unknown-linux-ohos-clang.sh"
11+
12+
[target.aarch64-unknown-linux-ohos.env]
13+
PKG_CONFIG_PATH = "/usr/local/ohos-sdk/linux/native/sysroot/usr/lib/pkgconfig:/usr/local/ohos-sdk/linux/native/sysroot/usr/local/lib/pkgconfig"
14+
PKG_CONFIG_LIBDIR = "/usr/local/ohos-sdk/linux/native/sysroot/usr/lib:/usr/local/ohos-sdk/linux/native/sysroot/usr/local/lib"
15+
PKG_CONFIG_SYSROOT_DIR = "/usr/local/ohos-sdk/linux/native/sysroot"
16+
SYSROOT = "/usr/local/ohos-sdk/linux/native/sysroot"
17+
818
[target.aarch64-unknown-linux-musl]
919
linker = "aarch64-unknown-linux-musl-gcc"
1020
rustflags = ["-C", "target-feature=+crt-static"]
@@ -58,6 +68,10 @@ rustflags = ["-C", "target-feature=+crt-static"]
5868
linker = "armv7-unknown-linux-musleabi-gcc"
5969
rustflags = ["-C", "target-feature=+crt-static"]
6070

71+
[target.loongarch64-unknown-linux-musl]
72+
linker = "loongarch64-unknown-linux-musl-gcc"
73+
rustflags = ["-C", "target-feature=+crt-static"]
74+
6175
[target.arm-unknown-linux-musleabihf]
6276
linker = "arm-unknown-linux-musleabihf-gcc"
6377
rustflags = [

.envrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
use flake

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 95 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,113 @@ body:
2323
- type: textarea
2424
id: description
2525
attributes:
26-
label: 描述问题 / Describe the bug
27-
description: 对 bug 的明确描述。如果条件允许,请包括屏幕截图。 / A clear description of what the bug is. Include screenshots if applicable.
28-
placeholder: 问题描述 / Bug description
26+
label: 问题简要描述 / Brief Description
27+
description: 对问题的简要描述,包括期望的行为和实际发生的情况。 / A brief description of the issue, including expected vs actual behavior.
28+
placeholder: |
29+
例如:节点 A 无法连接到节点 B,期望能够正常建立连接
30+
Example: Node A cannot connect to Node B, expected to establish connection normally
31+
validations:
32+
required: true
33+
34+
- type: textarea
35+
id: environment-info
36+
attributes:
37+
label: 环境信息 / Environment Information
38+
description: 请提供网络拓扑、节点信息和系统环境详情。 / Please provide network topology, node information and system environment details.
39+
placeholder: |
40+
**EasyTier 版本(非常重要)/ EasyTier Version (Very Important):** v1.2.0
41+
42+
**网络拓扑 / Network Topology:**
43+
- 节点 A (10.1.1.1): Windows 11 Pro 22H2, Wifi,有 IPV6 地址
44+
- 节点 B (10.1.1.2): Ubuntu 22.04.3 LTS (Linux 5.15.0-72-generic), 公网 IP
45+
- 节点 C (10.1.1.3): macOS Ventura 13.4.1, 5G 流量,无 IPV6 地址
46+
47+
**Network Topology:**
48+
- Node A (10.1.1.1): Windows 11 Pro 22H2, Wifi, has IPV6 address
49+
- Node B (10.1.1.2): Ubuntu 22.04.3 LTS (Linux 5.15.0-72-generic), public IP
50+
- Node C (10.1.1.3): macOS Ventura 13.4.1, 5G traffic, no IPV6 address
51+
validations:
52+
required: true
53+
54+
- type: textarea
55+
id: node-configs
56+
attributes:
57+
label: 节点配置 / Node Configurations
58+
description: 请提供每个节点的配置文件或启动参数。 / Please provide configuration files or startup parameters for each node.
59+
placeholder: |
60+
**节点 A 配置 / Node A Config:**
61+
```
62+
easytier-core --config-file config.toml
63+
```
64+
65+
**节点 B 配置 / Node B Config:**
66+
```
67+
easytier-core --ipv4 10.1.1.2 --peers tcp://1.2.3.4:11010
68+
```
69+
70+
请贴出完整的配置文件内容或命令行参数
71+
Please paste complete configuration file contents or command line arguments
72+
validations:
73+
required: true
74+
75+
- type: textarea
76+
id: logs
77+
attributes:
78+
label: 日志信息 / Log Information
79+
description: 请提供相关的日志信息,包括 GUI 的事件日志或命令行的控制台输出。 / Please provide relevant log information, including GUI event logs or command line console output.
80+
placeholder: |
81+
请粘贴相关的日志信息:
82+
- GUI 用户:请提供事件日志中的错误信息
83+
- 命令行用户:请提供控制台输出的详细日志
84+
- 一般情况下,提供默认输出的事件日志即可
85+
- 如果能提供 --file-log-level debug 输出的日志,会更方便 debug
86+
87+
Please paste relevant log information:
88+
- GUI users: Please provide error messages from event logs
89+
- CLI users: Please provide detailed console output logs
90+
- Default log output is usually sufficient
91+
- If possible, logs with --file-log-level debug would be more helpful for debugging
92+
2993
validations:
3094
required: true
3195

3296
- type: textarea
3397
id: reproduction
3498
attributes:
35-
label: 重现步骤 / Reproduction
36-
description: 能够重现行为的步骤或指向能够复现的存储库链接。 / A link to a reproduction repo or steps to reproduce the behaviour.
99+
label: 重现步骤 / Reproduction Steps
100+
description: 请提供详细的步骤来重现这个问题。 / Please provide detailed steps to reproduce this issue.
37101
placeholder: |
38-
请提供一个最小化的复现示例或复现步骤,请参考这个指南 https://stackoverflow.com/help/minimal-reproducible-example
39-
Please provide a minimal reproduction or steps to reproduce, see this guide https://stackoverflow.com/help/minimal-reproducible-example
40-
为什么需要重现(问题)?请参阅这篇文章 https://antfu.me/posts/why-reproductions-are-required
41-
Why reproduction is required? see this article https://antfu.me/posts/why-reproductions-are-required
102+
1. 启动节点 A,使用配置 xxx / Start Node A with config xxx
103+
2. 启动节点 B,使用配置 yyy / Start Node B with config yyy
104+
3. 尝试从节点 A ping 节点 B / Try to ping Node B from Node A
105+
4. 观察到错误:xxx / Observe error: xxx
106+
107+
请提供详细的操作步骤,以便我们能够重现问题
108+
Please provide detailed steps so we can reproduce the issue
109+
validations:
110+
required: true
42111

43112
- type: textarea
44113
id: expected-behavior
45114
attributes:
46-
label: 预期结果 / Expected behavior
115+
label: 预期结果 / Expected Behavior
47116
description: 清楚地描述您期望发生的事情。 / A clear description of what you expected to happen.
117+
placeholder: |
118+
例如:节点 A 应该能够成功 ping 通节点 B,延迟在 100ms 以内
119+
Example: Node A should be able to ping Node B successfully with latency under 100ms
48120
49121
- type: textarea
50-
id: context
122+
id: additional-context
51123
attributes:
52-
label: 额外上下文 / Additional context
53-
description: 在这里添加关于问题的任何其他上下文。 / Add any other context about the problem here.
124+
label: 额外信息 / Additional Context
125+
description: 在这里添加关于问题的任何其他上下文信息。 / Add any other context about the problem here.
126+
placeholder: |
127+
例如:
128+
- 这个问题是否在特定时间出现?
129+
- 是否有网络环境的特殊配置?
130+
- 是否尝试过其他解决方案?
131+
132+
Example:
133+
- Does this issue occur at specific times?
134+
- Are there any special network environment configurations?
135+
- Have you tried any other solutions?

.github/ISSUE_TEMPLATE/feature_request.yml

Lines changed: 155 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,177 @@
33

44
name: 💡 新功能请求 / Feature Request
55
title: '[feat] '
6-
description: 提出一个想法 / Suggest an idea
6+
description: 提出一个想法 / Suggest an idea
77
labels: ['type: feature request']
88

99
body:
10+
- type: markdown
11+
attributes:
12+
value: |
13+
## 提交功能请求前请注意 / Before Submitting
14+
1. 请先搜索 [现有的功能请求](https://github.com/EasyTier/EasyTier/issues?q=is%3Aissue+label%3A%22type%3A+feature+request%22) 确保您的想法尚未被提出。
15+
1. Please search [existing feature requests](https://github.com/EasyTier/EasyTier/issues?q=is%3Aissue+label%3A%22type%3A+feature+request%22) to ensure your idea hasn't been suggested already.
16+
2. 请确保这个功能确实适合 EasyTier 项目的目标和范围。
17+
2. Please ensure this feature fits within EasyTier's goals and scope.
18+
3. 考虑这个功能是否能让更多用户受益,而不只是解决个人需求。
19+
3. Consider whether this feature would benefit many users, not just personal needs.
20+
21+
- type: dropdown
22+
id: feature-category
23+
attributes:
24+
label: 功能类别 / Feature Category
25+
description: 请选择这个功能请求属于哪个类别 / Please select which category this feature request belongs to
26+
options:
27+
- 网络连接 / Network Connectivity
28+
- 安全和加密 / Security & Encryption
29+
- 性能优化 / Performance Optimization
30+
- 用户界面 / User Interface
31+
- 配置管理 / Configuration Management
32+
- 监控和日志 / Monitoring & Logging
33+
- 平台支持 / Platform Support
34+
- API 和集成 / API & Integration
35+
- 其他 / Other
36+
validations:
37+
required: true
38+
39+
- type: textarea
40+
id: use-case
41+
attributes:
42+
label: 使用场景 / Use Case
43+
description: 描述您希望这个功能解决的具体使用场景或问题 / Describe the specific use case or problem you want this feature to solve
44+
placeholder: |
45+
例如:
46+
- 作为企业用户,我需要在多个分支机构之间建立安全的网络连接
47+
- 作为开发者,我希望能够通过 API 监控网络状态
48+
- 作为系统管理员,我需要更详细的连接日志来排查问题
49+
50+
Example:
51+
- As an enterprise user, I need to establish secure network connections between multiple branch offices
52+
- As a developer, I want to monitor network status through APIs
53+
- As a system administrator, I need more detailed connection logs for troubleshooting
54+
validations:
55+
required: true
56+
1057
- type: textarea
11-
id: problem
58+
id: current-limitations
1259
attributes:
13-
label: 描述问题 / Describe the problem
14-
description: 明确描述此功能将解决的问题 / A clear description of the problem this feature would solve
15-
placeholder: "我总是在...感觉困惑 / I'm always frustrated when..."
60+
label: 当前限制 / Current Limitations
61+
description: 描述当前 EasyTier 的哪些限制阻止了您实现这个使用场景 / Describe what current limitations in EasyTier prevent you from achieving this use case
62+
placeholder: |
63+
例如:
64+
- 目前不支持基于用户角色的访问控制
65+
- 缺少对 IPv6 的完整支持
66+
- 没有提供 REST API 来获取网络状态
67+
68+
Example:
69+
- Currently lacks role-based access control
70+
- Missing complete IPv6 support
71+
- No REST API available for network status
1672
validations:
1773
required: true
1874

1975
- type: textarea
20-
id: solution
76+
id: proposed-solution
2177
attributes:
22-
label: "描述您想要的解决方案 / Describe the solution you'd like"
23-
description: 明确说明您希望做出的改变 / A clear description of what change you would like
24-
placeholder: '我希望... / I would like to...'
78+
label: 建议的解决方案 / Proposed Solution
79+
description: 详细描述您希望添加的功能以及它应该如何工作 / Describe in detail the feature you'd like to add and how it should work
80+
placeholder: |
81+
请描述:
82+
- 功能的具体实现方式
83+
- 用户界面或 API 设计
84+
- 配置选项和参数
85+
- 与现有功能的集成方式
86+
87+
Please describe:
88+
- Specific implementation approach
89+
- User interface or API design
90+
- Configuration options and parameters
91+
- Integration with existing features
2592
validations:
2693
required: true
2794

95+
- type: textarea
96+
id: benefits
97+
attributes:
98+
label: 预期收益 / Expected Benefits
99+
description: 说明这个功能会带来什么好处,会影响哪些用户群体 / Explain what benefits this feature would bring and which user groups it would affect
100+
placeholder: |
101+
例如:
102+
- 提高网络连接的稳定性和性能
103+
- 简化大规模部署的管理复杂度
104+
- 增强企业用户的安全性需求
105+
- 降低新用户的学习成本
106+
107+
Example:
108+
- Improve network connection stability and performance
109+
- Simplify management complexity for large-scale deployments
110+
- Enhance security requirements for enterprise users
111+
- Reduce learning curve for new users
112+
113+
- type: textarea
114+
id: technical-considerations
115+
attributes:
116+
label: 技术考虑 / Technical Considerations
117+
description: 如果您了解技术细节,请分享相关的技术考虑或约束 / If you have technical knowledge, please share relevant technical considerations or constraints
118+
placeholder: |
119+
例如:
120+
- 可能需要修改网络协议栈
121+
- 需要考虑跨平台兼容性
122+
- 可能影响现有性能
123+
- 依赖第三方库或协议
124+
125+
Example:
126+
- May require modifications to network protocol stack
127+
- Cross-platform compatibility needs consideration
128+
- Potential impact on existing performance
129+
- Dependencies on third-party libraries or protocols
130+
28131
- type: textarea
29132
id: alternatives
30133
attributes:
31-
label: 替代方案 / Alternatives considered
32-
description: "您考虑过的任何替代解决方案 / Any alternative solutions you've considered"
134+
label: 备选方案 / Alternative Solutions
135+
description: 您是否考虑过其他解决方案?是否有现有的替代方案? / Have you considered other solutions? Are there existing alternatives?
136+
placeholder: |
137+
例如:
138+
- 使用第三方工具 X 可以部分解决,但缺少 Y 功能
139+
- 通过脚本workaround可以实现,但不够优雅
140+
- 其他类似项目 Z 有这个功能,可以参考其实现
141+
142+
Example:
143+
- Third-party tool X can partially solve this, but lacks Y functionality
144+
- Can be achieved through script workarounds, but not elegant
145+
- Similar project Z has this feature, could reference its implementation
146+
147+
- type: textarea
148+
id: implementation-priority
149+
attributes:
150+
label: 实现优先级 / Implementation Priority
151+
description: 这个功能对您有多重要?是否有时间要求? / How important is this feature to you? Any time requirements?
152+
placeholder: |
153+
例如:
154+
- 高优先级:阻碍了我们的生产部署
155+
- 中优先级:会显著改善用户体验
156+
- 低优先级:锦上添花的功能
157+
158+
Example:
159+
- High priority: Blocking our production deployment
160+
- Medium priority: Would significantly improve user experience
161+
- Low priority: Nice-to-have feature
33162
34163
- type: textarea
35-
id: context
164+
id: additional-context
36165
attributes:
37-
label: 额外上下文 / Additional context
38-
description: 在此处添加有关问题的任何其他上下文。 / Add any other context about the problem here.
166+
label: 补充信息 / Additional Context
167+
description: 添加任何其他相关信息,如截图、链接、参考资料等 / Add any other relevant information such as screenshots, links, or references
168+
placeholder: |
169+
例如:
170+
- 相关的 RFC 或技术规范
171+
- 其他项目的实现示例
172+
- 用户调研或反馈数据
173+
- 设计草图或流程图
174+
175+
Example:
176+
- Relevant RFCs or technical specifications
177+
- Implementation examples from other projects
178+
- User research or feedback data
179+
- Design sketches or flowcharts

.github/origin_wfs/Dockerfile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
FROM alpine:latest AS builder
1+
FROM alpine:latest AS base
2+
FROM base AS builder
23

34
ARG TARGETPLATFORM
45

56
COPY . /tmp/artifacts
6-
RUN mkdir -p /tmp/output; \
7-
cd /tmp/artifacts; \
8-
ARTIFACT_ARCH=""; \
7+
WORKDIR /tmp/output
8+
RUN ARTIFACT_ARCH=""; \
99
if [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
1010
ARTIFACT_ARCH="x86_64"; \
1111
elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
@@ -16,14 +16,14 @@ RUN mkdir -p /tmp/output; \
1616
fi; \
1717
cp /tmp/artifacts/easytier-linux-${ARTIFACT_ARCH}/* /tmp/output;
1818

19-
FROM alpine:latest
19+
FROM base
2020

2121
RUN apk add --no-cache tzdata tini
2222
WORKDIR /app
2323
COPY --from=builder --chmod=755 /tmp/output/* /usr/local/bin
2424

2525
# users can use "-e TZ=xxx" to adjust it
26-
ENV TZ Asia/Shanghai
26+
ENV TZ=Asia/Shanghai
2727

2828
# tcp
2929
EXPOSE 11010/tcp

0 commit comments

Comments
 (0)