#!/bin/bash # Pipe Network Node - Simple Management Script # CryptoCompass Branded Installation Script # Color functions for CryptoCompass branding show_red() { echo -e "\e[31m$1\e[0m"; } show_green() { echo -e "\e[32m$1\e[0m"; } show_yellow() { echo -e "\e[1;33m$1\e[0m"; } show_blue() { echo -e "\e[34m$1\e[0m"; } show_purple() { echo -e "\e[35m$1\e[0m"; } show_cyan() { echo -e "\e[36m$1\e[0m"; } show_white() { echo -e "\e[1;37m$1\e[0m"; } show_bold() { echo -e "\e[1m$1\e[0m"; } # Combined color functions show_success() { echo -e "\e[32m\e[1m$1\e[0m"; } show_error() { echo -e "\e[31m\e[1m$1\e[0m"; } show_warning() { echo -e "\e[1;33m\e[1m$1\e[0m"; } show_info() { echo -e "\e[36m\e[1m$1\e[0m"; } show_header() { echo -e "\e[1;37m\e[1m$1\e[0m"; } # CryptoCompass logo show_logo() { clear echo -e "\e[36m\e[1m" echo " ╔══════════════════════════════════════════════════════════════╗" echo " ║ ║" echo " ║ ██████╗██████╗ ██╗ ██╗██████╗ ████████╗ ██████╗ ║" echo " ║ ██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗╚══██╔══╝██╔═══██╗ ║" echo " ║ ██║ ██████╔╝ ╚████╔╝ ██████╔╝ ██║ ██║ ██║ ║" echo " ║ ██║ ██╔══██╗ ╚██╔╝ ██╔═══╝ ██║ ██║ ██║ ║" echo " ║ ╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝ ║" echo " ║ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ║" echo " ║ ║" echo " ║ ██████╗ ██████╗ ███╗ ███╗██████╗ ██████╗ ███████╗███████╗ ║" echo " ║ ██╔════╝██╔═══██╗████╗ ████║██╔══██╗██╔══██╗██╔════╝██╔════╝ ║" echo " ║ ██║ ██║ ██║██╔████╔██║██████╔╝███████║███████╗███████╗ ║" echo " ║ ██║ ██║ ██║██║╚██╔╝██║██╔═══╝ ██╔══██║╚════██║╚════██║ ║" echo " ║ ╚██████╗╚██████╔╝██║ ██║██║ ██║ ██║███████║███████║ ║" echo " ║ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ║" echo " ║ ║" echo " ║ Pipe Network Node ║" echo " ║ Simple Management Script ║" echo " ║ ║" echo " ╚══════════════════════════════════════════════════════════════╝" echo -e "\e[0m" echo "" echo -e "\e[1;37m\e[1m🌐 CryptoCompass Resources:\e[0m" echo -e "\e[36m\e[1m• Twitter/X:\e[0m \e[1;37mhttps://x.com/0xGreenFlag\e[0m" echo -e "\e[36m\e[1m• YouTube:\e[0m \e[1;37mhttps://www.youtube.com/@beloglazovpro\e[0m" echo -e "\e[36m\e[1m• Telegram:\e[0m \e[1;37mhttps://t.me/beloglazovpro\e[0m" echo "" } # Language selection select_language() { show_logo show_yellow "Выберите язык / Select Language:" show_white "1) Русский" show_white "2) English" echo "" read -p "$(show_cyan "Выбор / Choice [1-2]: ")" lang_choice case $lang_choice in 1) LANG="ru" ;; 2) LANG="en" ;; *) show_error "Неверный выбор / Invalid choice"; select_language ;; esac } # Text strings based on language get_text() { case $LANG in "ru") case $1 in "main_menu") echo "Главное меню" ;; "install") echo "Установка" ;; "manage") echo "Управление" ;; "remove") echo "Удаление" ;; "exit") echo "Выход" ;; "requirements") echo "Требования к системе:" ;; "cpu") echo "• CPU: 2 vCPU" ;; "ram") echo "• RAM: 4 GB" ;; "disk") echo "• Диск: 20 GB SSD или больше" ;; "bandwidth") echo "• Пропускная способность: 100Mbps" ;; "ports") echo "• Открытые порты: TCP 80, 443" ;; "continue") echo "Продолжить установку?" ;; "yes_no") echo "[y/n]: " ;; "installing") echo "Установка Pipe Network Node..." ;; "updating") echo "Обновление системы..." ;; "installing_packages") echo "Установка необходимых пакетов..." ;; "downloading_binary") echo "Загрузка бинарного файла Pipe..." ;; "setup_wallet") echo "Настройка кошелька Solana..." ;; "enter_solana_address") echo "Введите адрес кошелька Solana: " ;; "enter_node_name") echo "Введите имя ноды: " ;; "enter_node_email") echo "Введите email оператора: " ;; "enter_node_location") echo "Введите местоположение ноды: " ;; "starting_node") echo "Запуск ноды..." ;; "installation_complete") echo "Установка завершена!" ;; "node_running") echo "Нода запущена" ;; "node_stopped") echo "Нода остановлена" ;; "press_enter") echo "Нажмите Enter для продолжения..." ;; "invalid_choice") echo "Неверный выбор!" ;; "logs") echo "Логи" ;; "restart") echo "Перезапуск" ;; "stop") echo "Остановка" ;; "start") echo "Запуск" ;; "back") echo "Назад" ;; "node_restarted") echo "Нода перезапущена!" ;; "node_stopped_msg") echo "Нода остановлена!" ;; "node_started") echo "Нода запущена!" ;; "remove_confirm") echo "Вы уверены, что хотите удалить Pipe Network Node?" ;; "removing") echo "Удаление Pipe Network Node..." ;; "removed") echo "Pipe Network Node удален!" ;; "not_installed") echo "Pipe Network Node не установлен" ;; "already_installed") echo "Pipe Network Node уже установлен" ;; "solana_address") echo "Адрес кошелька Solana" ;; "show_solana_address") echo "Показать адрес кошелька" ;; "change_solana_address") echo "Изменить адрес кошелька" ;; "help_commands") echo "Команды помощи" ;; "manual_commands") echo "Ручные команды" ;; "status") echo "Статус" ;; "earnings") echo "Доходы" ;; "health_check") echo "Проверка здоровья" ;; esac ;; "en") case $1 in "main_menu") echo "Main Menu" ;; "install") echo "Install" ;; "manage") echo "Manage" ;; "remove") echo "Remove" ;; "exit") echo "Exit" ;; "requirements") echo "System Requirements:" ;; "cpu") echo "• CPU: 2 vCPU" ;; "ram") echo "• RAM: 4 GB" ;; "disk") echo "• Disk: 20 GB SSD or higher" ;; "bandwidth") echo "• Bandwidth: 100Mbps" ;; "ports") echo "• Open ports: TCP 80, 443" ;; "continue") echo "Continue with installation?" ;; "yes_no") echo "[y/n]: " ;; "installing") echo "Installing Pipe Network Node..." ;; "updating") echo "Updating system..." ;; "installing_packages") echo "Installing required packages..." ;; "downloading_binary") echo "Downloading Pipe binary..." ;; "setup_wallet") echo "Setting up Solana wallet..." ;; "enter_solana_address") echo "Enter Solana wallet address: " ;; "enter_node_name") echo "Enter node name: " ;; "enter_node_email") echo "Enter operator email: " ;; "enter_node_location") echo "Enter node location: " ;; "starting_node") echo "Starting node..." ;; "installation_complete") echo "Installation completed!" ;; "node_running") echo "Node is running" ;; "node_stopped") echo "Node is stopped" ;; "press_enter") echo "Press Enter to continue..." ;; "invalid_choice") echo "Invalid choice!" ;; "logs") echo "Logs" ;; "restart") echo "Restart" ;; "stop") echo "Stop" ;; "start") echo "Start" ;; "back") echo "Back" ;; "node_restarted") echo "Node restarted!" ;; "node_stopped_msg") echo "Node stopped!" ;; "node_started") echo "Node started!" ;; "remove_confirm") echo "Are you sure you want to remove Pipe Network Node?" ;; "removing") echo "Removing Pipe Network Node..." ;; "removed") echo "Pipe Network Node removed!" ;; "not_installed") echo "Pipe Network Node not installed" ;; "already_installed") echo "Pipe Network Node already installed" ;; "solana_address") echo "Solana Wallet Address" ;; "show_solana_address") echo "Show Solana Address" ;; "change_solana_address") echo "Change Solana Address" ;; "help_commands") echo "Help Commands" ;; "manual_commands") echo "Manual Commands" ;; "status") echo "Status" ;; "earnings") echo "Earnings" ;; "health_check") echo "Health Check" ;; esac ;; esac } # Check if Pipe node is installed is_pipe_installed() { if [[ -d /opt/pipe ]] && [[ -f /opt/pipe/pop ]] && [[ -f /opt/pipe/.env ]]; then return 0 else return 1 fi } # Check if node is running is_node_running() { if systemctl is-active --quiet pipe; then return 0 else return 1 fi } # Show system requirements show_requirements() { show_yellow "$(get_text "requirements")" show_white "$(get_text "cpu")" show_white "$(get_text "ram")" show_white "$(get_text "disk")" show_white "$(get_text "bandwidth")" show_white "$(get_text "ports")" echo "" } # Update system update_system() { show_info "$(get_text "updating")" # Suppress VM warnings and update system sudo apt update 2>/dev/null || true sudo apt upgrade -y 2>/dev/null || true show_success "Система обновлена / System updated" } # Install required packages install_packages() { show_info "$(get_text "installing_packages")" sudo apt-get install -yq apt-utils dialog 2>/dev/null PACKAGES=( curl git jq lz4 build-essential unzip make gcc ncdu cmake clang pkg-config libssl-dev libzmq3-dev libczmq-dev python3-pip protobuf-compiler dos2unix screen ) for PACKAGE in "${PACKAGES[@]}"; do echo "Установка $PACKAGE..." sudo apt install -y "$PACKAGE" if [ $? -eq 0 ]; then echo "$PACKAGE успешно установлен." else echo "Ошибка при установке $PACKAGE. Пропускаем..." fi done } # Download Pipe binary download_pipe_binary() { show_info "$(get_text "downloading_binary")" # Create installation directory sudo mkdir -p /opt/pipe cd /opt/pipe # Download latest binary sudo curl -L https://pipe.network/p1-cdn/releases/latest/download/pop -o pop sudo chmod +x pop show_success "Бинарный файл загружен / Binary downloaded" } # Setup Solana wallet setup_solana_wallet() { show_info "$(get_text "setup_wallet")" while true; do read -p "$(show_cyan "$(get_text "enter_solana_address")")" solana_address if [[ -n "$solana_address" ]] && [[ ${#solana_address} -eq 44 ]] && [[ "$solana_address" =~ ^[A-Za-z0-9]+$ ]]; then export NODE_SOLANA_PUBLIC_KEY="$solana_address" show_success "Адрес кошелька установлен: $solana_address / Wallet address set: $solana_address" break else show_error "Неверный формат адреса. Введите корректный Solana адрес (44 символа) / Invalid address format. Enter valid Solana address (44 characters)" fi done } # Setup node configuration setup_node_config() { show_info "Настройка конфигурации ноды / Setting up node configuration" read -p "$(show_cyan "$(get_text "enter_node_name")")" node_name read -p "$(show_cyan "$(get_text "enter_node_email")")" node_email read -p "$(show_cyan "$(get_text "enter_node_location")")" node_location # Create .env file sudo tee /opt/pipe/.env > /dev/null < /dev/null <