unified: Phantom Protocol 2025 complete archive integration

This commit is contained in:
NW
2026-05-18 17:28:53 +01:00
commit b680c5aeca
553 changed files with 112091 additions and 0 deletions

View File

@@ -0,0 +1,294 @@
# Phantom SOCKS5 Proxy Dockerfile
# Создает контейнер с SOCKS5 прокси через Phantom сеть
FROM ubuntu:22.04
LABEL maintainer="Phantom Protocol Team"
LABEL description="SOCKS5 Proxy через Phantom сеть"
LABEL version="1.0.0"
# Установка зависимостей
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
netcat-openbsd \
curl \
iproute2 \
iptables \
&& rm -rf /var/lib/apt/lists/*
# Создание пользователя phantom
RUN useradd -r -s /bin/false phantom
# Копирование исходного кода
COPY src/ /usr/local/src/phantom/
COPY tools/ /usr/local/bin/
COPY examples/socks5-proxy.py /usr/local/bin/phantom-socks5-proxy
# Установка Python зависимостей
RUN pip3 install --no-cache-dir \
asyncio \
aiohttp \
cryptography \
pysocks
# Создание директорий
RUN mkdir -p /var/lib/phantom /var/log/phantom /etc/phantom
# Копирование конфигурационных файлов
COPY docker/configs/socks5-proxy.conf /etc/phantom/
COPY docker/scripts/socks5-entrypoint.sh /usr/local/bin/
# Установка прав
RUN chmod +x /usr/local/bin/phantom-socks5-proxy \
&& chmod +x /usr/local/bin/socks5-entrypoint.sh \
&& chown -R phantom:phantom /var/lib/phantom /var/log/phantom
# Создание конфигурационного файла
RUN cat > /etc/phantom/socks5-proxy.conf << 'EOF'
# Phantom SOCKS5 Proxy Configuration
[phantom]
# Узлы для подключения к Phantom сети
bootstrap_nodes = ${PHANTOM_BOOTSTRAP_NODES:-127.0.0.1:8050}
# Количество хопов через Phantom сеть
hops = ${PHANTOM_HOPS:-3}
# Логирование
log_level = ${PHANTOM_LOG_LEVEL:-INFO}
log_file = /var/log/phantom/socks5-proxy.log
[socks5]
# Адрес и порт для прослушивания
listen_host = ${SOCKS5_LISTEN_HOST:-0.0.0.0}
listen_port = ${SOCKS5_LISTEN_PORT:-8080}
# Максимальное количество подключений
max_connections = ${SOCKS5_MAX_CONNECTIONS:-100}
# Таймаут подключения (секунды)
connection_timeout = ${SOCKS5_CONNECTION_TIMEOUT:-30}
# Буферизация данных
buffer_size = ${SOCKS5_BUFFER_SIZE:-8192}
[security]
# Разрешенные клиенты (IP адреса или подсети)
allowed_clients = ${SOCKS5_ALLOWED_CLIENTS:-0.0.0.0/0}
# Запрещенные адреса назначения
blocked_destinations = ${SOCKS5_BLOCKED_DESTINATIONS:-}
# Аутентификация (none, password)
auth_method = ${SOCKS5_AUTH_METHOD:-none}
[performance]
# Оптимизация производительности
tcp_nodelay = ${SOCKS5_TCP_NODELAY:-true}
tcp_keepalive = ${SOCKS5_TCP_KEEPALIVE:-true}
reuse_address = ${SOCKS5_REUSE_ADDRESS:-true}
EOF
# Создание скрипта entrypoint
RUN cat > /usr/local/bin/socks5-entrypoint.sh << 'EOF'
#!/bin/bash
set -e
echo "🚀 Запуск Phantom SOCKS5 Proxy"
# Замена переменных окружения в конфигурации
envsubst < /etc/phantom/socks5-proxy.conf > /tmp/socks5-proxy.conf
mv /tmp/socks5-proxy.conf /etc/phantom/socks5-proxy.conf
# Ожидание доступности Phantom узлов
echo "⏳ Ожидание доступности Phantom сети..."
IFS=',' read -ra NODES <<< "${PHANTOM_BOOTSTRAP_NODES:-127.0.0.1:8050}"
for node in "${NODES[@]}"; do
IFS=':' read -ra ADDR <<< "$node"
host=${ADDR[0]}
port=${ADDR[1]:-8050}
echo "Проверка узла $host:$port..."
timeout=60
while ! nc -z "$host" "$port" && [ $timeout -gt 0 ]; do
sleep 1
timeout=$((timeout-1))
done
if [ $timeout -eq 0 ]; then
echo "Не удалось подключиться к узлу $host:$port"
exit 1
fi
echo "✅ Узел $host:$port доступен"
done
# Создание лог файла
touch /var/log/phantom/socks5-proxy.log
chown phantom:phantom /var/log/phantom/socks5-proxy.log
echo "✅ Phantom SOCKS5 Proxy готов к запуску"
echo " Прослушивание: ${SOCKS5_LISTEN_HOST:-0.0.0.0}:${SOCKS5_LISTEN_PORT:-8080}"
echo " Хопов через Phantom: ${PHANTOM_HOPS:-3}"
echo " Bootstrap узлы: ${PHANTOM_BOOTSTRAP_NODES:-127.0.0.1:8050}"
# Запуск SOCKS5 прокси
exec su-exec phantom python3 /usr/local/bin/phantom-socks5-proxy \
--host "${SOCKS5_LISTEN_HOST:-0.0.0.0}" \
--port "${SOCKS5_LISTEN_PORT:-8080}" \
--hops "${PHANTOM_HOPS:-3}" \
--verbose
EOF
# Установка su-exec для безопасного переключения пользователя
RUN apt-get update && apt-get install -y su-exec && rm -rf /var/lib/apt/lists/*
# Создание health check скрипта
RUN cat > /usr/local/bin/socks5-health-check << 'EOF'
#!/bin/bash
# Health check для SOCKS5 прокси
# Проверка, что процесс запущен
if ! pgrep -f "phantom-socks5-proxy" > /dev/null; then
echo "SOCKS5 прокси не запущен"
exit 1
fi
# Проверка, что порт прослушивается
port=${SOCKS5_LISTEN_PORT:-8080}
if ! nc -z localhost "$port"; then
echo "SOCKS5 порт $port не доступен"
exit 1
fi
# Проверка подключения к Phantom сети
if ! timeout 5 python3 -c "
import socket
import sys
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
bootstrap_nodes = '${PHANTOM_BOOTSTRAP_NODES:-127.0.0.1:8050}'.split(',')
for node in bootstrap_nodes:
host, port = node.split(':')
s.connect((host.strip(), int(port.strip())))
s.close()
break
else:
sys.exit(1)
except:
sys.exit(1)
"; then
echo "Phantom сеть недоступна"
exit 1
fi
echo "SOCKS5 прокси работает нормально"
exit 0
EOF
RUN chmod +x /usr/local/bin/socks5-health-check
# Создание тестового скрипта
RUN cat > /usr/local/bin/test-socks5-proxy << 'EOF'
#!/bin/bash
# Тестирование SOCKS5 прокси
echo "🧪 Тестирование Phantom SOCKS5 Proxy"
proxy_host=${SOCKS5_LISTEN_HOST:-127.0.0.1}
proxy_port=${SOCKS5_LISTEN_PORT:-8080}
echo "Прокси: $proxy_host:$proxy_port"
# Тест 1: Проверка доступности прокси
echo "Тест 1: Проверка доступности прокси..."
if nc -z "$proxy_host" "$proxy_port"; then
echo "✅ Прокси доступен"
else
echo "❌ Прокси недоступен"
exit 1
fi
# Тест 2: Проверка SOCKS5 handshake
echo "Тест 2: Проверка SOCKS5 handshake..."
if timeout 10 python3 -c "
import socket
import struct
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10)
s.connect(('$proxy_host', $proxy_port))
# SOCKS5 authentication request
s.send(b'\x05\x01\x00')
# Receive authentication response
response = s.recv(2)
if response == b'\x05\x00':
print('SOCKS5 handshake успешен')
else:
print('SOCKS5 handshake неудачен')
exit(1)
s.close()
except Exception as e:
print(f'Ошибка SOCKS5 handshake: {e}')
exit(1)
"; then
echo "✅ SOCKS5 handshake успешен"
else
echo "❌ SOCKS5 handshake неудачен"
exit 1
fi
# Тест 3: Проверка проксирования HTTP запроса
echo "Тест 3: Проверка проксирования HTTP запроса..."
if command -v curl > /dev/null; then
if timeout 30 curl -s --socks5 "$proxy_host:$proxy_port" http://httpbin.org/ip > /dev/null; then
echo "✅ HTTP проксирование работает"
else
echo "⚠️ HTTP проксирование не работает (возможно, нет интернета)"
fi
else
echo "⚠️ curl не установлен, пропуск HTTP теста"
fi
echo "🎉 Тестирование завершено"
EOF
RUN chmod +x /usr/local/bin/test-socks5-proxy
# Открытие портов
EXPOSE 8080
# Переменные окружения по умолчанию
ENV PHANTOM_BOOTSTRAP_NODES=127.0.0.1:8050
ENV PHANTOM_HOPS=3
ENV PHANTOM_LOG_LEVEL=INFO
ENV SOCKS5_LISTEN_HOST=0.0.0.0
ENV SOCKS5_LISTEN_PORT=8080
ENV SOCKS5_MAX_CONNECTIONS=100
ENV SOCKS5_CONNECTION_TIMEOUT=30
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD /usr/local/bin/socks5-health-check
# Рабочая директория
WORKDIR /var/lib/phantom
# Точка входа
ENTRYPOINT ["/usr/local/bin/socks5-entrypoint.sh"]
# Метаданные
LABEL org.opencontainers.image.title="Phantom SOCKS5 Proxy"
LABEL org.opencontainers.image.description="SOCKS5 прокси сервер через Phantom анонимную сеть"
LABEL org.opencontainers.image.version="1.0.0"
LABEL org.opencontainers.image.authors="Phantom Protocol Team"
LABEL org.opencontainers.image.url="https://phantom-protocol.org"
LABEL org.opencontainers.image.source="https://github.com/phantom-protocol/phantom"
LABEL org.opencontainers.image.licenses="MIT"