├── .dockerignore ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── release.yml │ └── rust.yml ├── .gitignore ├── .rustfmt.toml ├── Cargo.lock ├── Cargo.toml ├── Dockerfile ├── LICENSE ├── README-zh.md ├── README.md ├── benches └── scripts │ ├── http │ └── latency.sh │ └── mem │ ├── mem.sh │ └── plot.plt ├── docs ├── benchmark.md ├── build-guide.md ├── img │ ├── http_throughput.svg │ ├── mem-graph.png │ ├── overview.excalidraw │ ├── overview.png │ ├── rathole-logo.png │ ├── tcp_bitrate.svg │ └── udp_bitrate.svg ├── internals.md ├── out-of-scope.md └── transport.md ├── examples ├── iperf3 │ ├── client.toml │ └── server.toml ├── minimal │ ├── client.toml │ └── server.toml ├── noise_nk │ ├── client.toml │ └── server.toml ├── systemd │ ├── README.md │ ├── rathole@.service │ ├── ratholec.service │ ├── ratholec@.service │ ├── ratholes.service │ └── ratholes@.service ├── tls │ ├── client.toml │ ├── create_self_signed_cert.sh │ ├── identity.pfx │ ├── rootCA.crt │ ├── rootCA.key │ ├── server.crt │ ├── server.key │ └── server.toml ├── udp │ ├── client.toml │ └── server.toml ├── unified │ └── config.toml └── use_proxy │ └── client.toml ├── rust-toolchain ├── src ├── cli.rs ├── client.rs ├── config.rs ├── config_watcher.rs ├── constants.rs ├── helper.rs ├── lib.rs ├── main.rs ├── multi_map.rs ├── protocol.rs ├── server.rs └── transport │ ├── mod.rs │ ├── native_tls.rs │ ├── noise.rs │ ├── rustls.rs │ ├── tcp.rs │ └── websocket.rs └── tests ├── common └── mod.rs ├── config_test ├── invalid_config │ ├── missing_tls_client.toml │ ├── missing_tls_server.toml │ └── missing_tls_server2.toml └── valid_config │ └── full.toml ├── for_tcp ├── noise_transport.toml ├── tcp_transport.toml ├── tls_transport.toml ├── websocket_tls_transport.toml └── websocket_transport.toml ├── for_udp ├── noise_transport.toml ├── tcp_transport.toml ├── tls_transport.toml ├── websocket_tls_transport.toml └── websocket_transport.toml └── integration_test.rs /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/.dockerignore -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/.github/ISSUE_TEMPLATE/bug_report.md -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/.github/ISSUE_TEMPLATE/feature_request.md -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/.github/workflows/rust.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/.gitignore -------------------------------------------------------------------------------- /.rustfmt.toml: -------------------------------------------------------------------------------- 1 | imports_granularity = "module" 2 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/Cargo.lock -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/Cargo.toml -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/LICENSE -------------------------------------------------------------------------------- /README-zh.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/README-zh.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/README.md -------------------------------------------------------------------------------- /benches/scripts/http/latency.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/benches/scripts/http/latency.sh -------------------------------------------------------------------------------- /benches/scripts/mem/mem.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/benches/scripts/mem/mem.sh -------------------------------------------------------------------------------- /benches/scripts/mem/plot.plt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/benches/scripts/mem/plot.plt -------------------------------------------------------------------------------- /docs/benchmark.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/benchmark.md -------------------------------------------------------------------------------- /docs/build-guide.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/build-guide.md -------------------------------------------------------------------------------- /docs/img/http_throughput.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/http_throughput.svg -------------------------------------------------------------------------------- /docs/img/mem-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/mem-graph.png -------------------------------------------------------------------------------- /docs/img/overview.excalidraw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/overview.excalidraw -------------------------------------------------------------------------------- /docs/img/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/overview.png -------------------------------------------------------------------------------- /docs/img/rathole-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/rathole-logo.png -------------------------------------------------------------------------------- /docs/img/tcp_bitrate.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/tcp_bitrate.svg -------------------------------------------------------------------------------- /docs/img/udp_bitrate.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/img/udp_bitrate.svg -------------------------------------------------------------------------------- /docs/internals.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/internals.md -------------------------------------------------------------------------------- /docs/out-of-scope.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/out-of-scope.md -------------------------------------------------------------------------------- /docs/transport.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/docs/transport.md -------------------------------------------------------------------------------- /examples/iperf3/client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/iperf3/client.toml -------------------------------------------------------------------------------- /examples/iperf3/server.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/iperf3/server.toml -------------------------------------------------------------------------------- /examples/minimal/client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/minimal/client.toml -------------------------------------------------------------------------------- /examples/minimal/server.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/minimal/server.toml -------------------------------------------------------------------------------- /examples/noise_nk/client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/noise_nk/client.toml -------------------------------------------------------------------------------- /examples/noise_nk/server.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/noise_nk/server.toml -------------------------------------------------------------------------------- /examples/systemd/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/systemd/README.md -------------------------------------------------------------------------------- /examples/systemd/rathole@.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/systemd/rathole@.service -------------------------------------------------------------------------------- /examples/systemd/ratholec.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/systemd/ratholec.service -------------------------------------------------------------------------------- /examples/systemd/ratholec@.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/systemd/ratholec@.service -------------------------------------------------------------------------------- /examples/systemd/ratholes.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/systemd/ratholes.service -------------------------------------------------------------------------------- /examples/systemd/ratholes@.service: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/systemd/ratholes@.service -------------------------------------------------------------------------------- /examples/tls/client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/client.toml -------------------------------------------------------------------------------- /examples/tls/create_self_signed_cert.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/create_self_signed_cert.sh -------------------------------------------------------------------------------- /examples/tls/identity.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/identity.pfx -------------------------------------------------------------------------------- /examples/tls/rootCA.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/rootCA.crt -------------------------------------------------------------------------------- /examples/tls/rootCA.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/rootCA.key -------------------------------------------------------------------------------- /examples/tls/server.crt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/server.crt -------------------------------------------------------------------------------- /examples/tls/server.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/server.key -------------------------------------------------------------------------------- /examples/tls/server.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/tls/server.toml -------------------------------------------------------------------------------- /examples/udp/client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/udp/client.toml -------------------------------------------------------------------------------- /examples/udp/server.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/udp/server.toml -------------------------------------------------------------------------------- /examples/unified/config.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/unified/config.toml -------------------------------------------------------------------------------- /examples/use_proxy/client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/examples/use_proxy/client.toml -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | 1.71.0 -------------------------------------------------------------------------------- /src/cli.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/cli.rs -------------------------------------------------------------------------------- /src/client.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/client.rs -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/config.rs -------------------------------------------------------------------------------- /src/config_watcher.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/config_watcher.rs -------------------------------------------------------------------------------- /src/constants.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/constants.rs -------------------------------------------------------------------------------- /src/helper.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/helper.rs -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/lib.rs -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/main.rs -------------------------------------------------------------------------------- /src/multi_map.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/multi_map.rs -------------------------------------------------------------------------------- /src/protocol.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/protocol.rs -------------------------------------------------------------------------------- /src/server.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/server.rs -------------------------------------------------------------------------------- /src/transport/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/transport/mod.rs -------------------------------------------------------------------------------- /src/transport/native_tls.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/transport/native_tls.rs -------------------------------------------------------------------------------- /src/transport/noise.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/transport/noise.rs -------------------------------------------------------------------------------- /src/transport/rustls.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/transport/rustls.rs -------------------------------------------------------------------------------- /src/transport/tcp.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/transport/tcp.rs -------------------------------------------------------------------------------- /src/transport/websocket.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/src/transport/websocket.rs -------------------------------------------------------------------------------- /tests/common/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/common/mod.rs -------------------------------------------------------------------------------- /tests/config_test/invalid_config/missing_tls_client.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/config_test/invalid_config/missing_tls_client.toml -------------------------------------------------------------------------------- /tests/config_test/invalid_config/missing_tls_server.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/config_test/invalid_config/missing_tls_server.toml -------------------------------------------------------------------------------- /tests/config_test/invalid_config/missing_tls_server2.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/config_test/invalid_config/missing_tls_server2.toml -------------------------------------------------------------------------------- /tests/config_test/valid_config/full.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/config_test/valid_config/full.toml -------------------------------------------------------------------------------- /tests/for_tcp/noise_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_tcp/noise_transport.toml -------------------------------------------------------------------------------- /tests/for_tcp/tcp_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_tcp/tcp_transport.toml -------------------------------------------------------------------------------- /tests/for_tcp/tls_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_tcp/tls_transport.toml -------------------------------------------------------------------------------- /tests/for_tcp/websocket_tls_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_tcp/websocket_tls_transport.toml -------------------------------------------------------------------------------- /tests/for_tcp/websocket_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_tcp/websocket_transport.toml -------------------------------------------------------------------------------- /tests/for_udp/noise_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_udp/noise_transport.toml -------------------------------------------------------------------------------- /tests/for_udp/tcp_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_udp/tcp_transport.toml -------------------------------------------------------------------------------- /tests/for_udp/tls_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_udp/tls_transport.toml -------------------------------------------------------------------------------- /tests/for_udp/websocket_tls_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_udp/websocket_tls_transport.toml -------------------------------------------------------------------------------- /tests/for_udp/websocket_transport.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/for_udp/websocket_transport.toml -------------------------------------------------------------------------------- /tests/integration_test.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rathole-org/rathole/HEAD/tests/integration_test.rs --------------------------------------------------------------------------------