Commit Graph
100 Commits
Author SHA1 Message Date
Sijie.SunandGitHub e948dbfcc1 Feat/web (Patchset 4) (#460)
support basic functions in frontend
1. create/del network
2. inspect network running status
2024-11-08 23:33:17 +08:00
Sijie.SunandGitHub 8aca5851f2 feat/web: Patchset 3 (#455)
https://apifox.com/apidoc/shared-ceda7a60-e817-4ea8-827b-de4e874dc45e

implement all backend API
2024-11-02 15:13:19 +08:00
Sijie.SunandGitHub a78b759741 feat/web (Patchset 2) (#444)
This patch implement a restful server without any auth.

usage:

```bash
# run easytier-web, which acts as an gateway and registry for all easytier-core
$> easytier-web

# run easytier-core and connect to easytier-web with a token
$> easytier-core --config-server udp://127.0.0.1:22020/fdsafdsa

# use restful api to list session
$> curl -H "Content-Type: application/json" -X GET 127.0.0.1:11211/api/v1/sessions
[{"token":"fdsafdsa","client_url":"udp://127.0.0.1:48915","machine_id":"de3f5b8f-0f2f-d9d0-fb30-a2ac8951d92f"}]%

# use restful api to run a network instance
$> curl -H "Content-Type: application/json" -X POST 127.0.0.1:11211/api/v1/network/de3f5b8f-0f2f-d9d0-fb30-a2ac8951d92f -d '{"config": "listeners = [\"udp://0.0.0.0:12344\"]"}'

# use restful api to get network instance info
$> curl -H "Content-Type: application/json" -X GET 127.0.0.1:11211/api/v1/network/de3f5b8f-0f2f-d9d0-fb30-a2ac8951d92f/65437e50-b286-4098-a624-74429f2cb839 
```
2024-10-26 00:04:22 +08:00
Sijie.SunandGitHub 0bf42c53cc Feat/web (PatchSet 1) (#436)
* move rpc-build out of easytier dir and make it a independant project
* easytier core use launcher
* fix flags not print on launch
* allow launcher not fetch node info
* abstract out peer rpc impl
* fix arm gui ci. see https://github.com/actions/runner-images/pull/10807
* add easytier-web crate
* fix manual_connector test case
2024-10-19 18:10:02 +08:00
Sijie.SunandGitHub 2134bc9139 fix icmp/udp subnet proxy not work with public server relay (#431) 2024-10-17 00:22:42 +08:00
Sijie.SunandGitHub d87a440c04 fix 202 bugs (#418)
* fix peer rpc stop working because of mpsc tunnel close unexpectedly

* fix gui:

1. allow set network prefix for virtual ipv4
2. fix android crash
3. fix subnet proxy cannot be set on android
2024-10-13 11:59:16 +08:00
Sijie.SunandGitHub d2291628e0 mpsc tunnel may be stuck by slow tcp stream, should not panic for this (#406)
* mpsc tunnel may be stuck by slow tcp stream, should not panic for this
* disallow node connect to self
2024-10-11 00:12:14 +08:00
Sijie.SunandGitHub 7ab8cad1af allow use ipv4 address in any cidr (#404) 2024-10-10 10:28:48 +08:00
Sijie.SunandGitHub 2c017e0fc5 improve hole punch (#403)
* fix duplicated peer id (again)

* improve udp hole punch

1. always try cone punch for any nat type, tolerate fault stun type.
2. serializing all sym punch request, including server side.
2024-10-10 00:07:42 +08:00
Sijie.SunandGitHub e344372616 fix cone-to-cone punch (#401) 2024-10-09 22:39:06 +08:00
Sijie.SunandGitHub 63821e56bc fix udp buffer size, avoid packet loss (#399)
also bump version to 2.0.2
2024-10-08 22:01:15 +08:00
Sijie.SunandGitHub 1be64223c8 ensure dst have session when we are initiator (#398)
* ensure dst have session when we are initiator

* bump version to 2.0.1
2024-10-08 21:05:46 +08:00
Sijie.SunandGitHub a08a8e7f4c update gui dep to resolve mem leak (#394) 2024-10-08 09:21:47 +08:00
Sijie.SunandGitHub 1e836501a8 serialize all sym hole punch (#390) 2024-10-07 23:04:49 +08:00
Sijie.SunandGitHub d4e59ffc40 fix listener may have no mapped addr (#389) 2024-10-07 12:15:20 +08:00
Sijie.SunandGitHub 37ceb77bf6 nat4-nat4 punch (#388)
this patch optimize the udp hole punch logic:

1. allow start punch hole before stun test complete.
2. add lock to symmetric punch, avoid conflict between concurrent hole punching task.
3. support punching hole for predictable nat4-nat4.
4. make backoff of retry reasonable
2024-10-06 22:49:18 +08:00
Sijie.SunandGitHub 1b03223537 use customized rpc implementation, remove Tarpc & Tonic (#348)
This patch removes Tarpc & Tonic GRPC and implements a customized rpc framework, which can be used by peer rpc and cli interface.

web config server can also use this rpc framework.

moreover, rewrite the public server logic, use ospf route to implement public server based networking. this make public server mesh possible.
2024-09-18 21:55:28 +08:00
Sijie.SunandGitHub 096ed39d23 fix udp proxy disconn unexpectedly (#321) 2024-09-11 23:46:26 +08:00
Sijie.SunandGitHub 1609c97574 fix panic when wireguard tunnel encounter udp recv error (#299) 2024-09-02 09:37:34 +08:00
Sijie.SunandGitHub f07b3ee9c6 fix punching task leak (#298)
the punching task creator doesn't check if the task is already
running, and may create many punching task to same peer node.

this patch also improve hole punching by checking hole punch packet
even if punch rpc is failed.
2024-08-31 14:37:34 +08:00
Sijie.SunandGitHub 2058dbc470 fix wg client hang after some time (#297)
wg portal doesn't know client disconnect causing msg overstocked in queue, make
entire peer packet process pipeline hang.
2024-08-31 12:44:12 +08:00
Sijie.SunandGitHub 2b7ff0efc5 bump version to v1.2.3 and update readme (#280) 2024-08-25 13:45:18 +08:00
Sijie.SunandGitHub 5833541a6e set correct route cost for peers relayed by public server (#279) 2024-08-25 12:27:00 +08:00
Sijie.SunandGitHub 54c6418f97 only add necessary conn to alive urls (#277)
too many alive conns may cause high cpu usage and lagged broadcast
recv.
2024-08-25 11:12:01 +08:00
Sijie.SunandGitHub fc9aac42b4 fix release.yml, just skip zip gui & mobile artifect (#276) 2024-08-25 00:45:14 +08:00
Sijie.SunandGitHub 89b43684d8 add complete support for freebsd (#275)
add tun & websocket & wireguard support on freebsd
2024-08-25 00:44:45 +08:00
Sijie.SunandGitHub 833e7eca22 add command to show local node info (#271) 2024-08-23 11:50:11 +08:00
Sijie.SunandGitHub b7d85ad2ff update rust-i18n to v3.1.2 (#269) 2024-08-21 11:00:13 +08:00
Sijie.SunandGitHub 8793560e12 fix i18n, revert rust-i18n to v3.0.1 (#267) 2024-08-20 00:38:59 +08:00
Sijie.SunandSijie.Sun 28ae9c447a Update Dockerfile to fix timezone 2024-08-17 00:00:32 +08:00
Sijie.SunandGitHub 29806b899a add draft release github action (#246) 2024-08-13 00:06:12 +08:00
Sijie.SunandGitHub b6fb7ac962 add two cmd line option (#241)
1. disable_p2p: only using specified peers to relay packets.
2. relay_all_peer_rpc: allow relay route info for networks not in whitelist
2024-08-10 00:26:54 +08:00
Sijie.SunandGitHub 232165eff3 fix bugs (#236) 2024-08-08 22:03:22 +08:00
Sijie.SunandGitHub 2bc4dd8c53 Update install_rust.sh (#237) 2024-08-08 20:07:22 +08:00
Sijie.SunandGitHub 5f0d71b0fe check trigger user for docker action (#219) 2024-08-04 00:37:58 +08:00
Sijie.SunandGitHub 4fea3a60d6 update last_updated of peer info to local now (#211)
time between peers may not be synced, using peer last_updated time may cause peer info being cleared incorrectly
2024-08-02 00:48:31 +08:00
Sijie.SunandGitHub 7a2bc52ae0 fix network to network without masquerade (#207) 2024-08-01 01:27:23 +08:00
Sijie.SunandGitHub 5451b52daa allow set routes manually and disable propagated routes (#191) 2024-07-24 22:45:55 +08:00
Sijie.SunandGitHub fc9812dd54 fix crash on old version android (<= 9) (#183)
* fix crash on old version android (<= 9)
* fix listener select
2024-07-19 23:55:11 +08:00
Sijie.SunandGitHub 8858492fb4 fix vpn close when getting new subnet route (#179) 2024-07-18 08:48:45 +08:00
Sijie.SunandGitHub 5987528f59 optimize android gui (#174)
make chips input more friendly
2024-07-15 22:55:10 +08:00
Sijie.SunandGitHub a03fc04b1b set route correctly in android (#172) 2024-07-15 00:57:19 +08:00
Sijie.SunandGitHub 858ade2eee Android Support (#166)
1. Add vpnservice tauri plugin for android.
2. add workflow for android.
3. Easytier Core support android, allow set tun fd.
2024-07-15 00:03:55 +08:00
Sijie.SunandGitHub 4938e3ed2b migrate to tauri2 (#159)
migrate gui to tauri2
2024-07-08 23:18:10 +08:00
Sijie.SunandGitHub 537f6ecf78 fix smoltcp tcp proxy (#157)
1. allow smoltcp proxy with dhcp ip
2. fix smoltcp not work without no tun.
2024-07-07 22:08:50 +08:00
Sijie.SunandGitHub 24143cbf1c add verbose cli mode; add list foreign network (#156) 2024-07-07 16:51:20 +08:00
Sijie.SunandGitHub 513e4cacc9 add more debug info for route (#155)
1. use info log for sync_route_info
2. allow dump route info with cli tool.
3. dump route info every 60s
2024-07-07 15:40:46 +08:00
Sijie.SunandGitHub 7cfa850d4c GUI: support change log level when running (#153) 2024-07-06 17:18:13 +08:00
Sijie.SunandGitHub 571d4a6e8f fix bug in dhcp (#152)
1. fix dhcp not retry if tun device init failed.
2. forbid dhcp use default ip when no peer.
2024-07-06 14:22:11 +08:00
Sijie.SunandGitHub 34f832bbad make tun dependency optional (#142)
* remove log crates
* remove udp/raw of smoltcp
* make tun as optional dependancy, compile for freebsd works
2024-06-11 09:09:32 +08:00
Sijie.SunandGitHub 8aa57ebc22 support no tun mode (#141) 2024-06-10 10:27:24 +08:00
Sijie.SunandGitHub fede35cca4 correctly handle ip fragment for udp/icmp proxy (#137)
icmp/udp proxy do not rely on kernel net stack, but currently not handle ip fragmentation correctly.

this patch add ip resembler to merge fragmented ip packet for udp/icmp proxy
2024-06-09 22:59:50 +08:00
Sijie.SunandGitHub 70ad81f7bd only upx on linux (#134) 2024-06-05 21:00:30 +08:00
Sijie.SunandGitHub b43c078152 fix udp proxy not work when being exit node (#133) 2024-06-05 08:08:55 +08:00
Sijie.SunandGitHub 6e77e6b5e7 support start on reboot (#132)
* move launcher to eastier lib
* support auto start after reboot
2024-06-04 23:06:10 +08:00
Sijie.SunandGitHub f9e6264f31 fix upx and udp conn counter (#131)
* fix upx in workflow
* fix udp conn counter
2024-06-04 18:50:30 +08:00
Sijie.SunandGitHub df17a7bb68 bugfix before release 11x (#130)
* use correct i18n hook

* fix peer rpc panic

make sure server use correct transact id

* fix dhcp

recreate tun device after ip changed

* use upx correctly

* compile arm & armv7

* prepare to release v1.1.0
2024-06-03 23:07:44 +08:00
Sijie.SunandGitHub c1b725e64e websocket support bind addr (#129) 2024-06-02 21:48:16 +08:00
Sijie.SunandGitHub 360691276c support win7 and reduce win mem usage (#128) 2024-06-02 14:07:21 +08:00
Sijie.SunandGitHub f1e9864d08 make release bin smaller (#127) 2024-06-02 09:15:40 +08:00
Sijie.SunandGitHub abf9d23d52 improve hole punching and stun test (#124)
* implement new stun test algorithm, do test faster and provide more info
* support punching for symmetric
2024-06-02 07:20:57 +08:00
Sijie.SunandGitHub bdbb1f02d6 Update Cargo.lock (#122) 2024-05-22 00:36:16 +08:00
Sijie.SunandGitHub f64f58e2ae support exit node (#121)
support exit node, proxy all traffic via one of node
NOTE: this patch has not implemented automatically route management.
2024-05-18 20:32:42 +08:00
Sijie.SunandGitHub 6efbb5cb3d minor fixed (#120)
1. fix mtu, always set by ourselves and use smaller value
2. wireguard connector should return tunnel after receive packet
2024-05-18 18:04:06 +08:00
Sijie.SunandGitHub bad6a5946a fix run with config, update readme (#118) 2024-05-17 22:00:11 +08:00
Sijie.SunandGitHub 7532a7c1b2 command line improvement (#115)
make -l easy to use:
-l wg wss
-l wg:12345
-l 12345

make -r use random port
2024-05-16 20:16:09 +08:00
Sijie.SunandGitHub f665de9b18 allow peer rpc split packet, so tunnel mtu can be small (#116) 2024-05-16 08:18:35 +08:00
Sijie.SunandGitHub d5bf041834 some minor fix (#113)
1. fix ospf route panic if no ipv4 assigned.
2. should refetch global peer latency map every 60s
3. remove regex dep because it's too large and unnecessary.
2024-05-15 09:21:20 +08:00
Sijie.SunandGitHub 65ac991d1c (Tyr) fix flashing console window on windows (#105)
add requireAdmin in app manist
2024-05-11 12:02:15 +08:00
Sijie.SunandGitHub 2deb867678 move shared codes in workflows to script (#103) 2024-05-10 22:56:00 +08:00
Sijie.SunandGitHub e023c05440 Merge pull request #102 from EasyTier/fix-gui-workflow
rename workflow job name for gui
2024-05-10 22:39:23 +08:00
Sijie.SunandGitHub 72701c9eb3 start tcp proxy after tun device created (#94)
on win 10, tcp proxy listener created before tun device may not accept
conn from tun dev.
2024-05-10 21:40:50 +08:00
Sijie.SunandGitHub b1153378c9 fix icmp proxy on MacOS (#101)
1. MacOS doesn't fill length field in ip header when recving from raw
socket
2. Fix udp & icmp subnet proxy not work when no p2p connection.
2024-05-10 21:40:29 +08:00
Sijie.SunandGitHub 7d3b8e42fe move reconn task join into select! (#88)
if join_next stuck, may miss global event and cause panic
2024-05-09 18:51:58 +08:00
Sijie.SunandGitHub 076f6cd965 Merge pull request #93 from wuyumin/yumin-dev
update  files for compiler
2024-05-08 22:29:45 +08:00
Sijie.SunandGitHub 2d394acc47 Merge pull request #90 from m1m1sha/feat/custom-hostname
Feat/custom hostname
2024-05-08 21:44:01 +08:00
Sijie.SunandGitHub c3df9ea7fa Merge pull request #84 from m1m1sha/perf/gui-front-perf
Optimize the GUI front-end project structure
2024-05-08 00:25:20 +08:00
Sijie.SunandGitHub 14df3d3075 mips support wireguard (#87) 2024-05-07 23:14:29 +08:00
Sijie.SunandGitHub 8440eb842b fix bugs and improve user experiance (#86)
* correctly set mtu, and allow set mtu manually

* communicate between enc and non-enc should not panic

* allow loading cfg from file

* allow change file log level dynamically
2024-05-07 00:38:05 +08:00
Sijie.SunandGitHub e5b537267e bug fix and improve (#81)
1. fix manual connector do not retry if dns resolve failed.
2. allow not creating tun device if no virtual ipv4 is assigned.
2024-05-05 16:18:05 +08:00
Sijie.SunandGitHub 714667fdce Update rust.yml (#76)
fix [PR from fork cannot use github secret directly](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#using-secrets-in-a-workflow)
2024-05-05 11:06:39 +08:00
Sijie.SunandGitHub 3a5332e31d use mimalloc for mips/mipsel (#71) 2024-05-04 00:26:57 +08:00
Sijie.SunandGitHub 61d5e38cc9 Update README.md (#70) 2024-05-03 21:50:48 +08:00
Sijie.SunandGitHub 3763c959db Merge pull request #68 from KKRainbow/mips
Add mips / mipsel support

- mips do not support wireguard.
- mips use aes-gcm crates instead of ring crates for encryption
2024-05-03 17:28:10 +08:00
Sijie.SunandGitHub ebbed97ed5 bump version in Carto.toml to v1.0.0 (#67) 2024-05-03 07:57:05 +08:00
Sijie.SunandGitHub d8446778cc update readme (#65)
add picture of gui
2024-04-29 21:50:58 +08:00
Sijie.SunandGitHub 70dee329d1 fix crash bugs (#64) 2024-04-29 21:02:05 +08:00
Sijie.SunandGitHub 6595c2837e fix win multi network (#63) 2024-04-28 23:21:58 +08:00
Sijie.SunandGitHub 66b3241be7 fix handshake dead lock, clean old code (#61)
* fix handshake dead lock
* remove old code
2024-04-27 16:27:42 +08:00
Sijie.SunandGitHub fcc73159b3 support encryption (#60) 2024-04-27 13:44:59 +08:00
Sijie.SunandGitHub 69651ae3fd Perf improve (#59)
* improve perf

* fix forward
2024-04-26 23:02:07 +08:00
Sijie.SunandGitHub 096af6aa45 fix tun device on mac (#58) 2024-04-26 21:19:47 +08:00
Sijie.SunandGitHub 57c9f11371 adapt tun device to zerocopy (#57) 2024-04-25 23:25:37 +08:00
Sijie.SunandGitHub 3467890270 zero copy tunnel (#55)
make tunnel zero copy, for better performance. remove most of the locks in io path.
introduce quic tunnel
prepare for encryption
2024-04-24 23:12:46 +08:00
Sijie.SunandGitHub 39021d7b1b fix gui minor-bugs (#54)
1. cannot persist locale setting.
2. set forcus after show from tray icon
2024-04-21 10:00:01 +08:00
Sijie.SunandGitHub 0ddcda1b31 introduce gui based on tauri (#52) 2024-04-14 23:29:34 +08:00
Sijie.SunandGitHub 50e14798d6 fix ring tunnel cannot close (#51) 2024-04-07 11:35:22 +08:00
Sijie.SunandGitHub 727ef37ae4 add client gui for easytier (#50) 2024-04-06 22:44:30 +08:00
Sijie.SunandGitHub 4eb7efe5fc use workspace, prepare for config server and gui (#48) 2024-04-04 10:33:53 +08:00
Sijie.SunandGitHub bb4ae71869 bump easytier version to 0.1.2 (#45) 2024-04-03 23:14:23 +08:00