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,139 @@
#!/bin/bash
# Скрипт запуска для контейнера Phantom Protocol
set -e
# Функция логирования
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# Функция для генерации конфигурации
generate_config() {
local node_name="${PHANTOM_NODE_NAME:-phantom-$(hostname)}"
local config_file="/home/phantom/config/${node_name}.conf"
log "Генерация конфигурации для узла: $node_name"
# Вызов скрипта генерации конфигурации
/usr/local/bin/generate-config.sh "$node_name" "$config_file"
echo "$config_file"
}
# Функция для настройки сети
setup_network() {
log "Настройка сетевых интерфейсов..."
# Проверка наличия TUN интерфейса
if [ ! -c /dev/net/tun ]; then
log "ПРЕДУПРЕЖДЕНИЕ: /dev/net/tun недоступен. Туннелирование может не работать."
log "Запустите контейнер с --device /dev/net/tun или --privileged"
fi
# Настройка iptables если есть права
if [ "$PHANTOM_SETUP_IPTABLES" = "true" ]; then
log "Настройка правил iptables..."
# Здесь можно добавить правила iptables для анонимизации
fi
}
# Функция для проверки зависимостей
check_dependencies() {
log "Проверка зависимостей..."
# Проверка наличия phantomd
if ! command -v phantomd >/dev/null 2>&1; then
log "ОШИБКА: phantomd не найден"
exit 1
fi
# Проверка OpenSSL
if ! command -v openssl >/dev/null 2>&1; then
log "ОШИБКА: OpenSSL не найден"
exit 1
fi
log "Все зависимости найдены"
}
# Функция для ожидания других узлов
wait_for_peers() {
if [ -n "$PHANTOM_WAIT_FOR_PEERS" ]; then
log "Ожидание доступности узлов: $PHANTOM_WAIT_FOR_PEERS"
IFS=',' read -ra PEERS <<< "$PHANTOM_WAIT_FOR_PEERS"
for peer in "${PEERS[@]}"; do
log "Ожидание узла: $peer"
while ! nc -z "$peer" 8080 2>/dev/null; do
sleep 2
done
log "Узел $peer доступен"
done
fi
}
# Функция для запуска phantomd
start_phantomd() {
local config_file="$1"
log "Запуск Phantom Protocol с конфигурацией: $config_file"
# Установка переменных окружения
export PHANTOM_CONFIG="$config_file"
export PHANTOM_LOG_LEVEL="${PHANTOM_LOG_LEVEL:-INFO}"
export PHANTOM_DATA_DIR="/home/phantom/data"
# Запуск phantomd
exec phantomd -h "$(basename "$config_file" .conf)"
}
# Основная функция
main() {
log "=== Запуск контейнера Phantom Protocol ==="
# Вывод информации о контейнере
log "Имя хоста: $(hostname)"
log "IP адрес: $(hostname -i 2>/dev/null || echo 'неизвестен')"
log "Пользователь: $(whoami)"
# Проверка зависимостей
check_dependencies
# Настройка сети
setup_network
# Генерация конфигурации если нужно
local config_file
if [ -n "$PHANTOM_CONFIG_FILE" ] && [ -f "$PHANTOM_CONFIG_FILE" ]; then
config_file="$PHANTOM_CONFIG_FILE"
log "Использование существующей конфигурации: $config_file"
else
config_file=$(generate_config)
fi
# Ожидание других узлов
wait_for_peers
# Запуск приложения
case "$1" in
phantomd)
start_phantomd "$config_file"
;;
bash|sh)
log "Запуск интерактивной оболочки"
exec "$@"
;;
*)
log "Запуск пользовательской команды: $*"
exec "$@"
;;
esac
}
# Обработка сигналов для корректного завершения
trap 'log "Получен сигнал завершения, останавливаем сервисы..."; exit 0' SIGTERM SIGINT
# Запуск основной функции
main "$@"