Skip to content

Commit cbf438e

Browse files
committed
Add proxy_protocol toggle in settings (#26)
Exposes HAProxy PROXY protocol option for preserving real client IPs behind reverse proxies. Toggle via TUI Settings > [8].
1 parent fd136fb commit cbf438e

1 file changed

Lines changed: 21 additions & 4 deletions

File tree

mtproxymax.sh

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ PROXY_CPUS=""
104104
PROXY_MEMORY=""
105105
CUSTOM_IP=""
106106
FAKE_CERT_LEN=2048
107+
PROXY_PROTOCOL="false"
107108
AD_TAG=""
108109
BLOCKLIST_COUNTRIES=""
109110
MASKING_ENABLED="true"
@@ -553,6 +554,7 @@ PROXY_CPUS='${PROXY_CPUS}'
553554
PROXY_MEMORY='${PROXY_MEMORY}'
554555
CUSTOM_IP='${CUSTOM_IP}'
555556
FAKE_CERT_LEN='${FAKE_CERT_LEN}'
557+
PROXY_PROTOCOL='${PROXY_PROTOCOL}'
556558
557559
# Ad-Tag (from @MTProxyBot)
558560
AD_TAG='${AD_TAG}'
@@ -604,7 +606,7 @@ load_settings() {
604606
# Whitelist of allowed keys
605607
case "$key" in
606608
PROXY_PORT|PROXY_METRICS_PORT|PROXY_DOMAIN|PROXY_CONCURRENCY|\
607-
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|FAKE_CERT_LEN|AD_TAG|BLOCKLIST_COUNTRIES|\
609+
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|FAKE_CERT_LEN|PROXY_PROTOCOL|AD_TAG|BLOCKLIST_COUNTRIES|\
608610
MASKING_ENABLED|MASKING_HOST|MASKING_PORT|\
609611
TELEGRAM_ENABLED|TELEGRAM_BOT_TOKEN|TELEGRAM_CHAT_ID|\
610612
TELEGRAM_INTERVAL|TELEGRAM_ALERTS_ENABLED|TELEGRAM_SERVER_LABEL|\
@@ -620,6 +622,7 @@ load_settings() {
620622
[[ "$MASKING_PORT" =~ ^[0-9]+$ ]] && [ "$MASKING_PORT" -ge 1 ] && [ "$MASKING_PORT" -le 65535 ] || MASKING_PORT=443
621623
[[ "$FAKE_CERT_LEN" =~ ^[0-9]+$ ]] && [ "$FAKE_CERT_LEN" -ge 512 ] || FAKE_CERT_LEN=2048
622624
[[ "$PROXY_CONCURRENCY" =~ ^[0-9]+$ ]] || PROXY_CONCURRENCY=8192
625+
[[ "$PROXY_PROTOCOL" == "true" ]] || PROXY_PROTOCOL="false"
623626
[[ "$TELEGRAM_INTERVAL" =~ ^[0-9]+$ ]] || TELEGRAM_INTERVAL=6
624627
[[ "$TELEGRAM_CHAT_ID" =~ ^-?[0-9]+$ ]] || TELEGRAM_CHAT_ID=""
625628
}
@@ -1039,6 +1042,7 @@ show = [$(get_enabled_labels_quoted)]
10391042
port = ${port}
10401043
listen_addr_ipv4 = "0.0.0.0"
10411044
listen_addr_ipv6 = "::"
1045+
proxy_protocol = ${PROXY_PROTOCOL:-false}
10421046
metrics_port = ${metrics_port}
10431047
metrics_whitelist = ["127.0.0.1", "::1"]
10441048
@@ -3290,7 +3294,7 @@ load_tg_settings() {
32903294
local key="${BASH_REMATCH[1]}" val="${BASH_REMATCH[2]}"
32913295
case "$key" in
32923296
PROXY_PORT|PROXY_DOMAIN|PROXY_METRICS_PORT|PROXY_CONCURRENCY|\
3293-
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|MASKING_ENABLED|MASKING_HOST|MASKING_PORT|\
3297+
PROXY_CPUS|PROXY_MEMORY|CUSTOM_IP|PROXY_PROTOCOL|MASKING_ENABLED|MASKING_HOST|MASKING_PORT|\
32943298
AD_TAG|BLOCKLIST_COUNTRIES|AUTO_UPDATE_ENABLED|\
32953299
TELEGRAM_ENABLED|TELEGRAM_BOT_TOKEN|TELEGRAM_CHAT_ID|\
32963300
TELEGRAM_INTERVAL|TELEGRAM_SERVER_LABEL|TELEGRAM_ALERTS_ENABLED)
@@ -5364,6 +5368,7 @@ show_settings_menu() {
53645368
echo -e " ${BOLD}Masking:${NC} ${MASKING_ENABLED}"
53655369
echo -e " ${BOLD}Ad-tag:${NC} ${AD_TAG:-${DIM}not set${NC}}"
53665370
echo -e " ${BOLD}Auto-update:${NC} ${AUTO_UPDATE_ENABLED}"
5371+
echo -e " ${BOLD}PROXY proto:${NC} ${PROXY_PROTOCOL}"
53675372
echo -e " ${BOLD}Engine:${NC} telemt v$(get_telemt_version)"
53685373
echo ""
53695374
echo -e " ${DIM}[1]${NC} Change port"
@@ -5373,7 +5378,8 @@ show_settings_menu() {
53735378
echo -e " ${DIM}[5]${NC} Toggle traffic masking"
53745379
echo -e " ${DIM}[6]${NC} Set ad-tag"
53755380
echo -e " ${DIM}[7]${NC} Toggle auto-update"
5376-
echo -e " ${DIM}[8]${NC} Engine Management"
5381+
echo -e " ${DIM}[8]${NC} Toggle PROXY protocol"
5382+
echo -e " ${DIM}[9]${NC} Engine Management"
53775383
echo -e " ${DIM}[0]${NC} Back"
53785384

53795385
local choice
@@ -5519,7 +5525,18 @@ show_settings_menu() {
55195525
log_success "Auto-update: ${AUTO_UPDATE_ENABLED}"
55205526
press_any_key
55215527
;;
5522-
8) show_engine_menu ;;
5528+
8)
5529+
[ "$PROXY_PROTOCOL" = "true" ] && PROXY_PROTOCOL="false" || PROXY_PROTOCOL="true"
5530+
save_settings
5531+
log_success "PROXY protocol: ${PROXY_PROTOCOL}"
5532+
if is_proxy_running; then
5533+
echo -en " ${DIM}Restart proxy now? [Y/n]:${NC} "
5534+
local r; read -r r
5535+
[[ ! "$r" =~ ^[nN] ]] && { load_secrets; restart_proxy_container || true; }
5536+
fi
5537+
press_any_key
5538+
;;
5539+
9) show_engine_menu ;;
55235540
0|"") return ;;
55245541
*) ;;
55255542
esac

0 commit comments

Comments
 (0)