Skip to content

Commit ab02448

Browse files
committed
update site
1 parent 7171a7d commit ab02448

34 files changed

Lines changed: 3872 additions & 217 deletions

.gitignore

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

devref.html

Lines changed: 524 additions & 0 deletions
Large diffs are not rendered by default.

doc/devel/devref.html

Lines changed: 524 additions & 0 deletions
Large diffs are not rendered by default.

doc/devel/devref.html.jinja

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{% set Title = "3proxy : Documentation : devref" %}
2+
{% include "../../templates/include/intro.html" %}
3+
{% content "doc/html/devel/devref.html" %}
4+
{% include "../../templates/include/postpage.html" %}

doc/howtoe.html

Lines changed: 68 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,9 @@
152152
<li><a href="#NAMES">How to resolve names through a parent proxy</a></li>
153153
<li><a href="#ISFTP">How to set up an FTP proxy</a></li>
154154
<li><a href="#TLSPR">How to set up an SNI proxy (tlspr)</a></li>
155-
<li><a href="#SSLPLUGIN">How to set up TLS/SSL with SSLPlugin (https proxy, mTLS)</a></li>
156-
<li><a href="#CERTIFICATES">How to create CA and certificates for SSLPlugin</a></li>
155+
<li><a href="#SSLPLUGIN">How to set up TLS/SSL (https proxy, mTLS)</a></li>
156+
<li><a href="#CERTIFICATES">How to create CA and certificates for SSL</a></li>
157+
<li><a href="#PCRE">How to use PCRE filtering (regular expressions)</a></li>
157158
<li><A HREF="#AUTH">How to limit service access</A>
158159
<li><A HREF="#USERS">How to create a user list</A>
159160
<li><A HREF="#ACL">How to limit user access to resources</A>
@@ -758,9 +759,12 @@
758759
proxy
759760
</pre>
760761
</p>
761-
<li><a name="SSLPLUGIN"><i>How to set up TLS/SSL with SSLPlugin (https proxy, mTLS)</i></a>
762+
<li><a name="SSLPLUGIN"><i>How to set up TLS/SSL (https proxy, mTLS)</i></a>
762763
<p>
763-
SSLPlugin provides TLS/SSL support for 3proxy. It can be used to:
764+
Since version 0.9.7, SSL/TLS support is built into 3proxy when compiled with OpenSSL
765+
(WITH_SSL). Previously available as SSLPlugin, the functionality is now integrated
766+
into the main binary. The plugin line is no longer required.
767+
SSL/TLS support can be used to:
764768
<ul>
765769
<li>Create an https:// proxy (TLS-encrypted connection between client and proxy)</li>
766770
<li>Implement MITM for TLS traffic inspection</li>
@@ -773,7 +777,6 @@
773777
<br>To create an https:// proxy, you need a server certificate and key. The certificate must not be self-signed
774778
and should contain Subject Alternative Names (SAN) for the proxy hostname/IP.
775779
</p><pre>
776-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
777780
ssl_server_cert /etc/3proxy/certs/server.crt
778781
ssl_server_key /etc/3proxy/certs/server.key
779782
ssl_serv
@@ -789,7 +792,6 @@
789792
<b>Client certificate authentication (mTLS):</b>
790793
<br>To require clients to authenticate with a certificate, use ssl_server_verify and provide the CA certificate:
791794
</p><pre>
792-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
793795
ssl_server_cert /etc/3proxy/certs/server.crt
794796
ssl_server_key /etc/3proxy/certs/server.key
795797
ssl_server_ca_file /etc/3proxy/certs/ca.crt
@@ -804,7 +806,6 @@
804806
<b>MITM for TLS traffic inspection:</b>
805807
<br>To intercept and decrypt TLS traffic, you need a CA certificate to generate spoofed server certificates:
806808
</p><pre>
807-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
808809
ssl_server_ca_file /etc/3proxy/certs/ca.crt
809810
ssl_server_ca_key /etc/3proxy/certs/ca.key
810811
ssl_client_verify
@@ -822,7 +823,6 @@
822823
<b>TLS client (connect to upstream via TLS):</b>
823824
<br>To connect to upstream servers via TLS with client certificate authentication:
824825
</p><pre>
825-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
826826
ssl_client_cert /etc/3proxy/certs/client.crt
827827
ssl_client_key /etc/3proxy/certs/client.key
828828
ssl_client_verify
@@ -834,7 +834,6 @@
834834
<b>Conditional TLS for parent proxy (ssl_client_mode 3):</b>
835835
<br>With ssl_client_mode 3, TLS handshake to parent proxy is performed only if the parent type ends with 's' (secure types). This allows mixing secure and non-secure parent proxies in the same configuration:
836836
</p><pre>
837-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
838837
ssl_server_cert /etc/3proxy/certs/server.crt
839838
ssl_server_key /etc/3proxy/certs/server.key
840839
ssl_client_mode 3
@@ -853,7 +852,7 @@
853852
<p>
854853
This creates an HTTPS proxy (ssl_serv) that accepts TLS connections from clients. For parent proxy connections, user1's traffic goes through an https parent with TLS encryption (secure type), while user2's traffic goes through a regular socks5 parent without TLS. Secure parent types include: tcps, https, connects, connect+s, socks4s, socks5s, socks4+s, socks5+s, pop3s, smtps, ftps.
855854
</p>
856-
<li><a name="CERTIFICATES"><i>How to create CA and certificates for SSLPlugin</i></a>
855+
<li><a name="CERTIFICATES"><i>How to create CA and certificates for SSL</i></a>
857856
<p>
858857
<b>Creating a Certificate Authority (CA):</b>
859858
<br>For MITM or mTLS, you need a CA. Generate a CA private key and certificate:
@@ -968,6 +967,65 @@
968967
openssl pkcs12 -export -out client.p12 -passout pass: \
969968
-inkey client.key -in client.crt -certfile ca.crt
970969
</pre>
970+
<li><a name="PCRE"><i>How to use PCRE filtering (regular expressions)</i></a>
971+
<p>
972+
Since version 0.9.7, PCRE (Perl Compatible Regular Expressions) filtering is built into
973+
3proxy when compiled with PCRE2 support (WITH_PCRE). Previously available as PCREPlugin,
974+
the functionality is now integrated into the main binary. The plugin line is no longer required.
975+
</p>
976+
<p>
977+
PCRE filtering can be used to create matching and replacement rules with regular expressions
978+
for client requests, client and server headers, and client and server data.
979+
</p>
980+
<p>
981+
<b>Commands:</b>
982+
</p><pre>
983+
pcre TYPE FILTER_ACTION REGEXP [ACE]
984+
pcre_rewrite TYPE FILTER_ACTION REGEXP REWRITE_EXPRESSION [ACE]
985+
pcre_extend FILTER_ACTION [ACE]
986+
pcre_options OPTION1 [...]
987+
</pre>
988+
<p>
989+
<ul>
990+
<li><b>TYPE</b> - type of filtered data (comma-delimited list):
991+
<ul>
992+
<li><b>request</b> - content of the client's request (e.g., HTTP GET request string)
993+
<li><b>cliheader</b> - content of the client request headers
994+
<li><b>srvheader</b> - content of the server's reply headers
995+
<li><b>clidata</b> - data received from the client (e.g., HTTP POST data)
996+
<li><b>srvdata</b> - data received from the server (e.g., HTML page)
997+
</ul>
998+
<li><b>FILTER_ACTION</b> - action on match:
999+
<ul>
1000+
<li><b>allow</b> - allow this request without checking the rest of the rules
1001+
<li><b>deny</b> - deny this request without checking the rest of the rules
1002+
<li><b>dunno</b> - continue with the rest of the rules (useful with pcre_rewrite)
1003+
</ul>
1004+
<li><b>REGEXP</b> - PCRE (Perl) regular expression. Use * if no regexp matching is required.
1005+
<li><b>REWRITE_EXPRESSION</b> - substitution string. May contain Perl-style substrings
1006+
$1, $2, etc. $0 means the whole matched string. \r and \n may be used to insert new lines.
1007+
<li><b>ACE</b> - access control entry (user names, source IPs, destination IPs, ports, etc.),
1008+
identical to allow/deny/bandlimin commands. The regular expression is only matched if the ACL
1009+
matches the connection data.
1010+
</ul>
1011+
</p>
1012+
<p>
1013+
<b>Examples:</b>
1014+
</p><pre>
1015+
# Block requests containing specific keywords for certain users
1016+
pcre request deny "porn|sex" user1,user2,user3 192.168.0.0/16
1017+
1018+
# Block responses with specific content type
1019+
pcre srvheader deny "Content-type: application"
1020+
1021+
# Replace content in both directions (censorship)
1022+
pcre_rewrite clidata,srvdata dunno "porn|sex|pussy" "***" baduser
1023+
pcre_extend deny * 192.168.0.1/16
1024+
</pre>
1025+
<p>
1026+
<b>Note:</b> Regular expressions don't require authentication and cannot replace
1027+
authentication and/or allow/deny ACLs.
1028+
</p>
9711029
<li><A NAME="AUTH">How to limit service access</A>
9721030
<p>
9731031
First, always specify the internal interface to accept incoming connections with the

doc/howtor.html

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,9 @@
152152
<li><a href="#NAMES">Как разрешать имена на родительском прокси?</a></li>
153153
<li><a href="#ISFTP">Как настроить FTP прокси?</a></li>
154154
<li><a href="#TLSPR">Как настроить SNI proxy (tlspr)</a></li>
155-
<li><a href="#SSLPLUGIN">Как настроить TLS/SSL с помощью SSLPlugin (https прокси, mTLS)</a></li>
156-
<li><a href="#CERTIFICATES">Как создать CA и сертификаты для SSLPlugin</a></li>
155+
<li><a href="#SSLPLUGIN">Как настроить TLS/SSL (https прокси, mTLS)</a></li>
156+
<li><a href="#CERTIFICATES">Как создать CA и сертификаты для SSL</a></li>
157+
<li><a href="#PCRE">Как использовать PCRE-фильтрацию (регулярные выражения)</a></li>
157158
<li><a href="#AUTH">Как ограничить доступ к службе</a>
158159
<li><a href="#USERS">Как создать список пользователей</a>
159160
<li><a href="#ACL">Как ограничить доступ пользователей к ресурсам</a>
@@ -767,9 +768,12 @@
767768
</pre>
768769
</p>
769770

770-
<li><a name="SSLPLUGIN"><i>Как настроить TLS/SSL с помощью SSLPlugin (https прокси, mTLS)</i></a>
771+
<li><a name="SSLPLUGIN"><i>Как настроить TLS/SSL (https прокси, mTLS)</i></a>
771772
<p>
772-
SSLPlugin обеспечивает поддержку TLS/SSL для 3proxy. Он может использоваться для:
773+
Начиная с версии 0.9.7 поддержка TLS/SSL встроена в 3proxy при компиляции с OpenSSL
774+
(WITH_SSL). Ранее доступная как SSLPlugin, функциональность теперь интегрирована
775+
в основной бинарный файл. Строка plugin больше не нужна.
776+
TLS/SSL может использоваться для:
773777
<ul>
774778
<li>Создания https:// прокси (TLS-шифрованное соединение между клиентом и прокси)</li>
775779
<li>Реализации MITM для инспекции TLS-трафика</li>
@@ -782,7 +786,6 @@
782786
<br>Для создания https:// прокси требуется сертификат и ключ сервера. Сертификат не должен быть самоподписанным
783787
и должен содержать альтернативные имена (SAN) для имени хоста/IP прокси.
784788
</p><pre>
785-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
786789
ssl_server_cert /etc/3proxy/certs/server.crt
787790
ssl_server_key /etc/3proxy/certs/server.key
788791
ssl_serv
@@ -798,7 +801,6 @@
798801
<b>Аутентификация по клиентскому сертификату (mTLS):</b>
799802
<br>Чтобы требовать от клиентов аутентификацию по сертификату, используйте ssl_server_verify и укажите CA-сертификат:
800803
</p><pre>
801-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
802804
ssl_server_cert /etc/3proxy/certs/server.crt
803805
ssl_server_key /etc/3proxy/certs/server.key
804806
ssl_server_ca_file /etc/3proxy/certs/ca.crt
@@ -813,7 +815,6 @@
813815
<b>MITM для инспекции TLS-трафика:</b>
814816
<br>Для перехвата и расшифровки TLS-трафика требуется CA-сертификат для генерации подделанных серверных сертификатов:
815817
</p><pre>
816-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
817818
ssl_server_ca_file /etc/3proxy/certs/ca.crt
818819
ssl_server_ca_key /etc/3proxy/certs/ca.key
819820
ssl_client_verify
@@ -831,7 +832,6 @@
831832
<b>TLS-клиент (соединение с вышестоящим сервером через TLS):</b>
832833
<br>Для соединения с вышестоящими серверами через TLS с аутентификацией по клиентскому сертификату:
833834
</p><pre>
834-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
835835
ssl_client_cert /etc/3proxy/certs/client.crt
836836
ssl_client_key /etc/3proxy/certs/client.key
837837
ssl_client_verify
@@ -843,7 +843,6 @@
843843
<b>Условное TLS для parent прокси (ssl_client_mode 3):</b>
844844
<br>При ssl_client_mode 3 TLS-рукопожатие с родительским прокси выполняется только если тип parent прокси заканчивается на 's' (защищённые типы). Это позволяет смешивать защищённые и незащищённые родительские прокси в одной конфигурации:
845845
</p><pre>
846-
plugin /path/to/SSLPlugin.ld.so ssl_plugin
847846
ssl_server_cert /etc/3proxy/certs/server.crt
848847
ssl_server_key /etc/3proxy/certs/server.key
849848
ssl_client_mode 3
@@ -862,7 +861,7 @@
862861
<p>
863862
Создаётся HTTPS-прокси (ssl_serv), принимающий TLS-соединения от клиентов. Для соединений с родительским прокси трафик user1 идёт через https родитель с TLS-шифрованием (защищённый тип), а трафик user2 — через обычный socks5 родитель без TLS. Защищённые типы parent прокси: tcps, https, connects, connect+s, socks4s, socks5s, socks4+s, socks5+s, pop3s, smtps, ftps.
864863
</p>
865-
<li><a name="CERTIFICATES"><i>Как создать CA и сертификаты для SSLPlugin</i></a>
864+
<li><a name="CERTIFICATES"><i>Как создать CA и сертификаты для SSL</i></a>
866865
<p>
867866
<b>Создание удостоверяющего центра (CA):</b>
868867
<br>Для MITM или mTLS требуется CA. Сгенерируйте закрытый ключ CA и сертификат:
@@ -978,6 +977,66 @@
978977
-inkey client.key -in client.crt -certfile ca.crt
979978
</pre>
980979

980+
<li><a name="PCRE"><i>Как использовать PCRE-фильтрацию (регулярные выражения)</i></a>
981+
<p>
982+
Начиная с версии 0.9.7 фильтрация PCRE встроена в 3proxy при компиляции с поддержкой
983+
PCRE2 (WITH_PCRE). Ранее доступная как PCREPlugin, функциональность теперь интегрирована
984+
в основной бинарный файл. Строка plugin больше не нужна.
985+
</p>
986+
<p>
987+
PCRE-фильтрация может использоваться для создания правил поиска и замены с регулярными
988+
выражениями для запросов клиентов, заголовков клиента и сервера, а также данных.
989+
</p>
990+
<p>
991+
<b>Команды:</b>
992+
</p><pre>
993+
pcre TYPE FILTER_ACTION REGEXP [ACE]
994+
pcre_rewrite TYPE FILTER_ACTION REGEXP REWRITE_EXPRESSION [ACE]
995+
pcre_extend FILTER_ACTION [ACE]
996+
pcre_options OPTION1 [...]
997+
</pre>
998+
<p>
999+
<ul>
1000+
<li><b>TYPE</b> - тип фильтруемых данных (список через запятую):
1001+
<ul>
1002+
<li><b>request</b> - содержимое запроса клиента (например, строка HTTP GET-запроса)
1003+
<li><b>cliheader</b> - содержимое заголовков запроса клиента
1004+
<li><b>srvheader</b> - содержимое заголовков ответа сервера
1005+
<li><b>clidata</b> - данные полученные от клиента (например, данные POST-запроса)
1006+
<li><b>srvdata</b> - данные полученные от сервера (например, HTML-страница)
1007+
</ul>
1008+
<li><b>FILTER_ACTION</b> - действие при совпадении:
1009+
<ul>
1010+
<li><b>allow</b> - разрешить запрос без проверки остальных правил
1011+
<li><b>deny</b> - запретить запрос без проверки остальных правил
1012+
<li><b>dunno</b> - продолжить проверку правил (полезно для pcre_rewrite)
1013+
</ul>
1014+
<li><b>REGEXP</b> - регулярное выражение PCRE (Perl). Используйте * если проверка не требуется.
1015+
<li><b>REWRITE_EXPRESSION</b> - строка замены. Может содержать Perl-подстановки
1016+
$1, $2 и т.д. $0 - вся найденная подстрока. \r и \n для вставки новых строк.
1017+
<li><b>ACE</b> - элемент списка контроля доступа (имена пользователей, IP источника,
1018+
IP назначения, порты и т.д.), аналогичный командам allow/deny/bandlimin.
1019+
Регулярное выражение проверяется только при совпадении ACL с данными соединения.
1020+
</ul>
1021+
</p>
1022+
<p>
1023+
<b>Примеры:</b>
1024+
</p><pre>
1025+
# Блокировать запросы с определёнными ключевыми словами для некоторых пользователей
1026+
pcre request deny "porn|sex" user1,user2,user3 192.168.0.0/16
1027+
1028+
# Блокировать ответы с определённым content-type
1029+
pcre srvheader deny "Content-type: application"
1030+
1031+
# Замена содержимого в обоих направлениях (цензура)
1032+
pcre_rewrite clidata,srvdata dunno "porn|sex|pussy" "***" baduser
1033+
pcre_extend deny * 192.168.0.1/16
1034+
</pre>
1035+
<p>
1036+
<b>Примечание:</b> Регулярные выражения не требуют авторизации и не могут заменить
1037+
авторизацию и/или ACL allow/deny.
1038+
</p>
1039+
9811040
<li><a name="AUTH"><i>Как ограничить доступ к службе</i></a>
9821041
<p>
9831042
Во-первых, для ограничения доступа необходимо указать внутренний интерфейс,

doc/index.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@
122122
<a href="highload.html">Optimizing 3proxy for high loads</a><br>
123123
<a href="howtoe.html">How To (English, very incomplete)</a><br>
124124
<a href="howtor.html">How To (Russian)</a><br>
125+
<a href="devref.html">Developer reference</a><br>
125126
<h3>Man pages:</h3>
127+
<br><A HREF="man8/3proxy_crypt.8.html">3proxy_crypt.8</A>
126128
<br><A HREF="man8/3proxy.8.html">3proxy.8</A>
127129
<br><A HREF="man8/ftppr.8.html">ftppr.8</A>
128130
<br><A HREF="man8/pop3p.8.html">pop3p.8</A>
@@ -132,7 +134,7 @@ <h3>Man pages:</h3>
132134
<br><A HREF="man8/tcppm.8.html">tcppm.8</A>
133135
<br><A HREF="man8/tlspr.8.html">tlspr.8</A>
134136
<br><A HREF="man8/udppm.8.html">udppm.8</A>
135-
<br><A HREF="man3/3proxy.cfg.3.html">3proxy.cfg.3</A>
137+
<br><A HREF="man5/3proxy.cfg.5.html">3proxy.cfg.5</A>
136138
</body></html>
137139

138140
<p><img src="/favicon-1.png" align="right">

doc/man3/3proxy.cfg.3.html.jinja

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)