Skip to content

Commit

Permalink
Adding the noise_injection option, feature implementation underway bu…
Browse files Browse the repository at this point in the history
…t incomplete
  • Loading branch information
Jackarain committed Nov 16, 2023
1 parent 3992031 commit 4e458c3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
16 changes: 14 additions & 2 deletions proxy/include/proxy/proxy_server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,10 @@ R"x*x(<html>
struct proxy_server_option
{
// 授权信息.
// auth_users 的第1个元素为用户名, 第2个元素为密码.
// auth_users_ 为空时, 表示不需要认证.
// auth_users_ 可以是多个用户, 例如:
// { {"user1", "passwd1"}, {"user2", "passwd2"} };
using auth_users = std::tuple<std::string, std::string>;
std::vector<auth_users> auth_users_;

Expand All @@ -231,8 +235,8 @@ R"x*x(<html>
bool proxy_pass_use_ssl_{ false };

// 启用 proxy protocol (haproxy)协议.
// 当前服务将会在连接到 proxy_pass_ 成功后,首先传递 proxy protocol
// 告之 proxy_pass_ 来源 IP/PORT 以及目标 IP/PORT.
// 当前服务将会在连接到 proxy_pass_ 成功后,首先传递 proxy protocol
// 以告之 proxy_pass_ 来源 IP/PORT 以及目标 IP/PORT.
bool haproxy_{ false };

// 指定当前proxy server向外发起连接时, 绑定到哪个本地地址.
Expand Down Expand Up @@ -293,6 +297,14 @@ R"x*x(<html>
// 禁用 socks proxy 服务, 服务端不提供 socks4/5 代理服务, 包括
// 加密的 socks4/5 以及不加密的 socks4/5.
bool disable_socks_{ false };

// 启用噪声注入以干扰流量分析.
// 此功能必须在 server/client 两端同时启用才有效, 此功能表示在启
// 用 ssl 协议时, 在 ssl 握手后双方互相发送一段随机长度的随机数据
// 以干扰流量分析.
// 启用后会增加一定的流量消耗以及延迟, 此选项默认不启用, 除非有确定
// 证据证明代理流量被分析或干扰, 此时可以启用此选项.
bool noise_injection_{ false };
};

// proxy server 虚基类, 任何 proxy server 的实现, 必须基于这个基类.
Expand Down
3 changes: 3 additions & 0 deletions server/proxy_server/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ std::string log_directory;

bool disable_http = false;
bool disable_socks = false;
bool noise_injection = false;
bool disable_logs;
bool autoindex = false;

Expand Down Expand Up @@ -109,6 +110,7 @@ start_proxy_server(net::io_context& ioc, server_ptr& server)

opt.disable_http_ = disable_http;
opt.disable_socks_ = disable_socks;
opt.noise_injection_ = noise_injection;
opt.local_ip_ = local_ip;

opt.reuse_port_ = reuse_port;
Expand Down Expand Up @@ -249,6 +251,7 @@ int main(int argc, char** argv)
("disable_logs", po::value<bool>(&disable_logs)->value_name(""), "Disable logging.")
("disable_http", po::value<bool>(&disable_http)->value_name("")->default_value(false), "Disable HTTP protocol.")
("disable_socks", po::value<bool>(&disable_socks)->value_name("")->default_value(false), "Disable SOCKS proxy protocol.")
("noise_injection", po::value<bool>(&noise_injection)->value_name("")->default_value(false), "Enable header length randomization.")
;

// 解析命令行.
Expand Down

0 comments on commit 4e458c3

Please sign in to comment.