mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-20 02:00:55 +07:00
0a659a2d74
* fix color & fix enabled * fixed remove base secret * fix mtproxy/telemt 'base secret' * fixed button back * fixed loader * fixed reload loader * fixed dd secret * fixed qml * fix: fixed header link in mtproxy/telemt page --------- Co-authored-by: vkamn <vk@amnezia.org>
63 lines
2.1 KiB
Bash
63 lines
2.1 KiB
Bash
#!/bin/sh
|
|
|
|
# Download Telegram config files
|
|
curl -s https://core.telegram.org/getProxySecret -o /data/proxy-secret
|
|
curl -s https://core.telegram.org/getProxyConfig -o /data/proxy-multi.conf
|
|
|
|
# Determine secret: regenerate (fresh install) -> env var -> saved file -> generate new
|
|
if [ "$MTPROXY_REGENERATE_SECRET" = "1" ]; then
|
|
SECRET=$(openssl rand -hex 16)
|
|
elif [ -n "$MTPROXY_SECRET" ]; then
|
|
SECRET="$MTPROXY_SECRET"
|
|
elif [ -f /data/secret ]; then
|
|
SECRET=$(cat /data/secret)
|
|
else
|
|
SECRET=$(openssl rand -hex 16)
|
|
fi
|
|
|
|
# Validate: must be exactly 32 hex chars
|
|
echo "$SECRET" | grep -qE '^[0-9a-fA-F]{32}$' || SECRET=$(openssl rand -hex 16)
|
|
|
|
# Persist secret for start.sh restarts
|
|
echo "$SECRET" > /data/secret
|
|
|
|
# Detect external IP
|
|
IP=$(curl -s --max-time 5 https://api.ipify.org 2>/dev/null)
|
|
[ -z "$IP" ] && IP=$(curl -s --max-time 5 https://ifconfig.me 2>/dev/null)
|
|
[ -z "$IP" ] && IP=$(curl -s --max-time 5 https://icanhazip.com 2>/dev/null)
|
|
|
|
# Use custom public host/domain if provided, otherwise fall back to detected IP
|
|
if [ -n "$MTPROXY_PUBLIC_HOST" ]; then
|
|
LINK_HOST="$MTPROXY_PUBLIC_HOST"
|
|
else
|
|
LINK_HOST="$IP"
|
|
fi
|
|
|
|
PORT=$MTPROXY_PORT
|
|
|
|
# Transport mode is substituted by replaceVars — plain variable, no curly braces
|
|
TRANSPORT_MODE=$MTPROXY_TRANSPORT_MODE
|
|
|
|
PADDED_SECRET="dd${SECRET}"
|
|
|
|
if [ "$TRANSPORT_MODE" = "faketls" ] && [ -n "$MTPROXY_TLS_DOMAIN" ]; then
|
|
DOMAIN_HEX=$(echo -n "$MTPROXY_TLS_DOMAIN" | od -A n -t x1 | tr -d ' \n')
|
|
FAKETLS_SECRET="ee${SECRET}${DOMAIN_HEX}"
|
|
else
|
|
FAKETLS_SECRET=""
|
|
fi
|
|
|
|
# Active link secret depends on transport mode
|
|
if [ "$TRANSPORT_MODE" = "faketls" ] && [ -n "$FAKETLS_SECRET" ]; then
|
|
LINK_SECRET="$FAKETLS_SECRET"
|
|
else
|
|
LINK_SECRET="$PADDED_SECRET"
|
|
fi
|
|
|
|
# Output stable markers — parsed by updateContainerConfigAfterInstallation()
|
|
echo "[*] MTProxy configuration"
|
|
echo "[*] Secret: ${SECRET}"
|
|
echo "[*] FakeTLS: ${FAKETLS_SECRET}"
|
|
echo "[*] tg:// link: tg://proxy?server=${LINK_HOST}&port=${PORT}&secret=${LINK_SECRET}"
|
|
echo "[*] t.me link: https://t.me/proxy?server=${LINK_HOST}&port=${PORT}&secret=${LINK_SECRET}"
|