#!/bin/bash # # Script helper pentru administrare UnderChat IRCd # Limba: Română # # Culori VERDE='\033[0;32m' GALBEN='\033[1;33m' ALBASTRU='\033[0;34m' ROSU='\033[0;31m' NC='\033[0m' PREFIX="${PREFIX:-$HOME/ircd}" IRCD_BIN="$PREFIX/bin/ircd" UMKPASSWD_BIN="$PREFIX/bin/umkpasswd" CONFIG_FILE="${PREFIX}/etc/ircd.conf" LOG_FILE="${PREFIX}/log/ircd.log" # Meniu principal show_menu() { clear echo -e "${ALBASTRU}" echo "╔════════════════════════════════════════╗" echo "║ Administrator UnderChat IRCd ║" echo "║ Versiune: 1.0 ║" echo "╚════════════════════════════════════════╝" echo -e "${NC}" echo "" echo -e "${GALBEN}Opțiuni disponibile:${NC}" echo " 1) Pornire server" echo " 2) Oprire server" echo " 3) Restart server" echo " 4) Verifica status" echo " 5) Editare configurare" echo " 6) Vizionare log-uri" echo " 7) Generare parola operator" echo " 8) Test sintaxă configurare" echo " 9) Iesire" echo "" echo -n -e "${GALBEN}Alege opțiune [1-9]:${NC} " } # Pornire server start_server() { echo -e "${VERDE}[+] Pornire server...${NC}" if ! [ -x "$IRCD_BIN" ]; then echo -e "${ROSU}[-] Executabil ircd nu găsit la: $IRCD_BIN${NC}" return 1 fi # Verifica dacă e deja pornit if pgrep -f "$IRCD_BIN" > /dev/null; then echo -e "${ROSU}[-] Server deja pornit!${NC}" return 1 fi # Porneste server în background nohup "$IRCD_BIN" -f "$CONFIG_FILE" > "$LOG_FILE" 2>&1 & sleep 2 if pgrep -f "$IRCD_BIN" > /dev/null; then echo -e "${VERDE}[+] Server pornit cu succes (PID: $(pgrep -f "$IRCD_BIN"))${NC}" return 0 else echo -e "${ROSU}[-] Eșec la pornirea serverului!${NC}" tail -10 "$LOG_FILE" return 1 fi } # Oprire server stop_server() { echo -e "${VERDE}[+] Oprire server...${NC}" local pid=$(pgrep -f "$IRCD_BIN") if [ -z "$pid" ]; then echo -e "${ROSU}[-] Server nu este pornit!${NC}" return 1 fi kill "$pid" sleep 2 if ! pgrep -f "$IRCD_BIN" > /dev/null; then echo -e "${VERDE}[+] Server oprit cu succes${NC}" return 0 else echo -e "${GALBEN}[*] Forțare oprire...${NC}" kill -9 "$pid" sleep 1 echo -e "${VERDE}[+] Server oprit forțat${NC}" return 0 fi } # Restart server restart_server() { echo -e "${VERDE}[+] Restart server...${NC}" stop_server sleep 2 start_server } # Status server check_status() { echo -e "${VERDE}[+] Status server:${NC}" echo "" local pid=$(pgrep -f "$IRCD_BIN") if [ -z "$pid" ]; then echo -e "${ROSU}Status: OPRIT${NC}" return 1 fi echo -e "${VERDE}Status: PORNIT${NC}" echo "PID: $pid" # Informații proces echo "" echo -e "${GALBEN}Detalii proces:${NC}" ps aux | grep "$pid" | grep -v grep | awk '{print " CPU: " $3 "% | RAM: " $6 " KB | Timp: " $11}' # Porturi ascultare echo "" echo -e "${GALBEN}Porturi ascultate:${NC}" netstat -tlnp 2>/dev/null | grep "$pid" | awk '{print " Port " $4 " (" $1 ")"}' # Log ultimele linii echo "" echo -e "${GALBEN}Ultimele intrări în log:${NC}" tail -5 "$LOG_FILE" | sed 's/^/ /' return 0 } # Editare configurare edit_config() { echo -e "${VERDE}[+] Editare configurare...${NC}" if [ ! -f "$CONFIG_FILE" ]; then echo -e "${ROSU}[-] Fișier configurare nu găsit: $CONFIG_FILE${NC}" return 1 fi # Backup înainte de editare cp "$CONFIG_FILE" "${CONFIG_FILE}.bak.$(date +%s)" echo -e "${GALBEN}[*] Backup creat: ${CONFIG_FILE}.bak${NC}" # Deschide editor ${EDITOR:-nano} "$CONFIG_FILE" # Test sintaxă echo "" echo -e "${GALBEN}[*] Testare sintaxă...${NC}" if "$IRCD_BIN" -c -f "$CONFIG_FILE" 2>&1 | head -20; then echo -e "${VERDE}[+] Sintaxă OK${NC}" else echo -e "${ROSU}[-] Erori în configurare!${NC}" echo -e "${GALBEN}[*] Poți restaura backup-ul:${NC}" echo " cp ${CONFIG_FILE}.bak.* $CONFIG_FILE" fi return 0 } # Vizionare log-uri view_logs() { echo -e "${VERDE}[+] Opțiuni log-uri:${NC}" echo " 1) Ultimele 20 de rânduri" echo " 2) Urmărire live (Ctrl+C pentru ieșire)" echo " 3) Căutare text" echo " 4) Înapoi" echo "" echo -n -e "${GALBEN}Alege [1-4]:${NC} " read choice case $choice in 1) echo "" echo -e "${ALBASTRU}Ultimele 20 de rânduri:${NC}" tail -20 "$LOG_FILE" ;; 2) echo "" echo -e "${ALBASTRU}Urmărire live (apasa Ctrl+C pentru ieșire):${NC}" tail -f "$LOG_FILE" ;; 3) echo "" read -p -e "${GALBEN}Cuvânt cheie de căutare:${NC} " search_term echo "" echo -e "${ALBASTRU}Rezultate:${NC}" grep -i "$search_term" "$LOG_FILE" | tail -20 ;; 4) return 0 ;; *) echo -e "${ROSU}Opțiune necunoscută!${NC}" ;; esac echo "" echo -n "Apasa Enter pentru a continua..." read } # Generare parola generate_password() { echo -e "${VERDE}[+] Generator parola operator${NC}" echo "" if [ ! -x "$UMKPASSWD_BIN" ]; then echo -e "${ROSU}[-] Utilitar umkpasswd nu găsit!${NC}" echo -e "${GALBEN}[*] Asigură-te că ai rulat install.sh${NC}" return 1 fi echo -e "${GALBEN}Utilizează utilarul umkpasswd:${NC}" "$UMKPASSWD_BIN" echo "" echo -e "${GALBEN}[*] Copiază hash-ul și actualizează config:${NC}" echo " nano $CONFIG_FILE" echo " # Cauta secțiunea Operator și înlocuiește password" return 0 } # Test configurare test_config() { echo -e "${VERDE}[+] Test sintaxă configurare...${NC}" echo "" if [ ! -f "$CONFIG_FILE" ]; then echo -e "${ROSU}[-] Fișier configurare nu găsit: $CONFIG_FILE${NC}" return 1 fi if [ ! -x "$IRCD_BIN" ]; then echo -e "${ROSU}[-] Executabil ircd nu găsit!${NC}" return 1 fi echo -e "${GALBEN}Testare fișier: $CONFIG_FILE${NC}" echo "" if "$IRCD_BIN" -c -f "$CONFIG_FILE" 2>&1; then echo "" echo -e "${VERDE}[+] Configurare validă!${NC}" return 0 else echo "" echo -e "${ROSU}[-] Erori în configurare detectate!${NC}" return 1 fi } # Funcție principală main() { while true; do show_menu read choice case $choice in 1) start_server ;; 2) stop_server ;; 3) restart_server ;; 4) check_status ;; 5) edit_config ;; 6) view_logs ;; 7) generate_password ;; 8) test_config ;; 9) echo -e "${VERDE}La revedere!${NC}" exit 0 ;; *) echo -e "${ROSU}Opțiune necunoscută!${NC}" ;; esac echo "" echo -n "Apasa Enter pentru a continua..." read done } # Lansare main