unified: Phantom Protocol 2025 complete archive integration
This commit is contained in:
139
release/docker/entrypoint.sh
Normal file
139
release/docker/entrypoint.sh
Normal 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 "$@"
|
||||
|
||||
Reference in New Issue
Block a user