Find a file
Zhang Jingqiang 2435dd83b0
Some checks failed
CodeCoverage / g3statsd test (push) Waiting to run
CodeCoverage / lib unit test (push) Waiting to run
CodeCoverage / g3proxy test (push) Waiting to run
CodeCoverage / g3bench test (push) Waiting to run
CrossCompiling / Build (push) Waiting to run
Linux-CI / Build (push) Waiting to run
Linux-CI / Clippy (push) Waiting to run
Linux-CI / Build vendored (push) Waiting to run
Linux-CI / Build with OpenSSL Async Job (push) Waiting to run
MacOS-CI / Build (push) Waiting to run
MacOS-CI / Build vendored (push) Waiting to run
StaticLinking / musl (push) Waiting to run
StaticLinking / msvc (push) Waiting to run
Windows-CI / Build (push) Waiting to run
Windows-CI / Build vendored (push) Waiting to run
Sphinx-Doc / build (g3keymess) (push) Has been cancelled
Sphinx-Doc / build (g3proxy) (push) Has been cancelled
Sphinx-Doc / build (g3statsd) (push) Has been cancelled
Sphinx-Doc / build (g3tiles) (push) Has been cancelled
g3proxy version 1.11.7
2025-06-08 21:24:32 +08:00
.cargo use cargo resolver 3 and update packages 2025-03-14 10:34:35 +08:00
.github build(deps): bump dtolnay/rust-toolchain 2025-05-20 15:43:04 +08:00
ansible ansible: switch to use the rolling binary package repo 2024-06-18 17:10:15 +08:00
doc update packages 2025-06-07 23:55:13 +08:00
g3bench detect openssl features in build.rs 2025-06-07 23:55:13 +08:00
g3fcgen detect openssl features in build.rs 2025-06-07 23:55:13 +08:00
g3iploc switch to use SPDX license identifier and update copyright year 2025-05-16 18:30:35 +08:00
g3keymess detect openssl features in build.rs 2025-06-07 23:55:13 +08:00
g3mkcert detect openssl features in build.rs 2025-06-07 23:55:13 +08:00
g3proxy g3proxy version 1.11.7 2025-06-08 21:24:32 +08:00
g3statsd g3statsd: allow to listen to unix statsd socket 2025-06-02 15:43:55 +08:00
g3tiles detect openssl features in build.rs 2025-06-07 23:55:13 +08:00
lib show error when enable openssl-async-job with unsupported libssl 2025-06-08 20:25:17 +08:00
scripts g3statsd: allow to listen to unix statsd socket 2025-06-02 15:43:55 +08:00
sphinx g3proxy version 1.11.7 2025-06-08 21:24:32 +08:00
.cirrus.yml use FreeBSD default libssl in CI 2025-04-24 23:38:52 +08:00
.clippy.toml add clippy lint config 2025-05-16 15:48:45 +08:00
.dockerignore misc update 2024-07-12 10:29:36 +08:00
.gitignore add sphinx doc for g3tiles (#202) 2024-04-08 16:48:12 +08:00
.readthedocs.yaml move sphinx together and support to upload to Read the Docs (#411) 2024-12-03 12:51:57 +08:00
Cargo.lock g3proxy version 1.11.7 2025-06-08 21:24:32 +08:00
Cargo.toml update packages 2025-06-07 23:55:13 +08:00
CHANGELOG.md update and format docs 2024-12-04 10:26:22 +08:00
CODE_OF_CONDUCT.md initial commit 2023-03-09 17:55:45 +08:00
CONTRIBUTING.md update doc 2023-04-11 14:58:17 +08:00
deny.toml update packages 2025-04-28 10:46:46 +08:00
G3-FEISHU-USER-GROUP.png rename user group image 2023-04-12 11:32:57 +08:00
justfile add basic example of justfile (#345) 2024-10-08 20:02:29 +08:00
LICENSE update license info 2023-04-07 11:28:57 +08:00
LICENSE-FOREIGN add doc about aws-lc 2024-01-03 18:58:28 +08:00
NOTICE update license info 2023-04-07 11:28:57 +08:00
README.ja_JP.md show error when enable openssl-async-job with unsupported libssl 2025-06-08 20:25:17 +08:00
README.md show error when enable openssl-async-job with unsupported libssl 2025-06-08 20:25:17 +08:00
README.zh_CN.md show error when enable openssl-async-job with unsupported libssl 2025-06-08 20:25:17 +08:00

minimum rustc: 1.86 License: Apache 2.0 codecov docs

G3 Project

中文版 README | 日本語 README

About

This is the project we used to build enterprise-oriented generic proxy solutions, including but not limited to proxy / reverse proxy (WIP) / load balancer (TBD) / nat traversal (TBD).

Applications

The G3 project consists of many applications, each of which has a separate subdirectory containing its own code, documentation, etc.

In addition to the application directories, there are some public directories:

  • doc Contains project-level documentation.
  • sphinx is used to generate HTML reference documents for each application.
  • scripts Contains various auxiliary scripts, including coverage testing, packaging scripts, etc.

g3proxy

A generic forward proxy solution, but you can also use it as tcp streaming / transparent proxy / reverse proxy as we have basic support built in.

Feature highlights

  • Async Rust: fast and reliable
  • Http1 / Socks5 forward proxy protocol, SNI Proxy and TCP TPROXY
  • easy-proxy Well-Known URI
  • Proxy Chaining, with support for dynamic selection of upstream proxies
  • Plenty of egress route selection methods, with support for custom egress selection agent
  • TCP/TLS Stream Proxy, Basic HTTP Reverse Proxy
  • TLS over OpenSSL or BoringSSL or AWS-LC or Tongsuo, and even rustls
  • TLS MITM interception, decrypted traffic dump, HTTP1/HTTP2/IMAP/SMTP interception
  • ICAP adaptation for HTTP1/HTTP2/IMAP/SMTP, can integrate seamlessly with 3rd-party security products
  • Graceful reload
  • Customizable load balancing and failover strategies
  • User Auth, with a rich set of config options
  • Can set differential site config for each user
  • Rich ACL/Limit rules, at ingress / egress / user level
  • Rich monitoring metrics, at ingress / egress / user / user-site level
  • Support for a variety of observability tools

README | User Guide | Reference Doc

g3statsd

A StatsD compatible stats aggregator.

README | Reference Doc

g3tiles

A work in progress reverse proxy solution.

Reference Doc

g3bench

A benchmark tool that supports HTTP 1.x, HTTP 2, HTTP 3, TLS Handshake, DNS and Cloudflare Keyless.

README

g3mkcert

A tool to make root CA / intermediate CA / TLS server / TLS client certificates.

g3fcgen

Fake certificate generator for g3proxy.

g3iploc

IP location lookup service for g3proxy GeoIP support.

g3keymess

A simple implementation of Cloudflare keyless server.

README | Reference Doc

Target Platform

Only Linux is fully supported yet. The code will compile on FreeBSD, NetBSD, OpenBSD, macOS and Windows, but we haven't tested it there.

Feel free to open PRs to add support for other platforms.

Dev-env Setup Guide

Follow Dev-Setup.

Standards

Follow Standards.

Release and Packaging

See Packaging.

Static Linking

See Static Linking.

Build with different OpenSSL variants

See OpenSSL Variants.

LTS Version

See Long-Term Support.

Contribution

Please check Contributing for more details.

Code of Conduct

Please check Code of Conduct for more details.

Security

If you discover a potential security issue in this project, or think you may have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.

Please do not create a public GitHub issue.

License

This project is licensed under the Apache-2.0 License.

g3proxy has joined 404Starlink