ircu2/diagnose.sh

228 lines
7.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
#
# Script de diagnosticare pentru probleme 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"
CONFIG_FILE="${PREFIX}/etc/ircd.conf"
LOG_FILE="${PREFIX}/log/ircd.log"
echo -e "${ALBASTRU}"
echo "╔════════════════════════════════════════╗"
echo "║ Diagnosticare UnderChat IRCd ║"
echo "║ Versiune: v1.0.2 ║"
echo "╚════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
# 1. Verificare fișier configurare
echo -e "${GALBEN}[1/8] Verificare fișier configurare...${NC}"
echo ""
if [ ! -e "$CONFIG_FILE" ]; then
echo -e "${ROSU} ✗ Fișier NU EXISTĂ: $CONFIG_FILE${NC}"
echo -e "${GALBEN} → Soluție: Rulează ./install.sh sau creează manual${NC}"
exit 1
else
echo -e "${VERDE} ✓ Fișier există${NC}"
fi
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${ROSU} ✗ Calea nu este un fișier obișnuit${NC}"
ls -ld "$CONFIG_FILE"
exit 1
else
echo -e "${VERDE} ✓ Este fișier obișnuit${NC}"
fi
if [ ! -r "$CONFIG_FILE" ]; then
echo -e "${ROSU} ✗ Fișier NU POATE FI CITIT${NC}"
echo -e "${GALBEN} → Permisiuni curente:${NC}"
ls -la "$CONFIG_FILE"
echo -e "${GALBEN} → Soluție: chmod 600 $CONFIG_FILE${NC}"
exit 1
else
echo -e "${VERDE} ✓ Poate fi citit${NC}"
fi
if [ ! -s "$CONFIG_FILE" ]; then
echo -e "${ROSU} ✗ Fișier este GOL (0 bytes)${NC}"
echo -e "${GALBEN} → Soluție: Regenerează config${NC}"
exit 1
else
local size=$(stat -f%z "$CONFIG_FILE" 2>/dev/null || stat -c%s "$CONFIG_FILE" 2>/dev/null)
echo -e "${VERDE} ✓ Mărime: $size bytes${NC}"
fi
# 2. Verificare permisiuni detaliate
echo ""
echo -e "${GALBEN}[2/8] Verificare permisiuni detaliate...${NC}"
echo ""
ls -la "$CONFIG_FILE"
local owner=$(stat -f%Su "$CONFIG_FILE" 2>/dev/null || stat -c%U "$CONFIG_FILE" 2>/dev/null)
local current_user=$(whoami)
echo ""
if [ "$owner" != "$current_user" ]; then
echo -e "${GALBEN} ⚠ Proprietar fișier: $owner (tu ești: $current_user)${NC}"
echo -e "${GALBEN} → Acest lucru poate cauza probleme de permisiuni${NC}"
else
echo -e "${VERDE} ✓ Proprietar fișier: $owner (corect)${NC}"
fi
# 3. Verificare conținut fișier
echo ""
echo -e "${GALBEN}[3/8] Verificare conținut fișier...${NC}"
echo ""
local lines=$(wc -l < "$CONFIG_FILE")
echo -e " Linii total: $lines"
local general_blocks=$(grep -c "^General {" "$CONFIG_FILE" 2>/dev/null || echo 0)
echo -e " Blocuri General: $general_blocks"
if [ "$general_blocks" -eq 0 ]; then
echo -e "${ROSU} ✗ LIPSEȘTE blocul General { }!${NC}"
echo -e "${GALBEN} → Config invalid, trebuie să aibă cel puțin un bloc General${NC}"
fi
local port_blocks=$(grep -c "^Port {" "$CONFIG_FILE" 2>/dev/null || echo 0)
echo -e " Blocuri Port: $port_blocks"
if [ "$port_blocks" -eq 0 ]; then
echo -e "${ROSU} ✗ LIPSEȘTE blocul Port { }!${NC}"
echo -e "${GALBEN} → Serverul nu va avea porturi de ascultare${NC}"
fi
# 4. Verificare sintaxă acolade
echo ""
echo -e "${GALBEN}[4/8] Verificare sintaxă acolade...${NC}"
echo ""
local open_braces=$(grep -o "{" "$CONFIG_FILE" | wc -l)
local close_braces=$(grep -o "}" "$CONFIG_FILE" | wc -l)
echo -e " Acolade deschise { : $open_braces"
echo -e " Acolade închise } : $close_braces"
if [ "$open_braces" -ne "$close_braces" ]; then
echo -e "${ROSU} ✗ ACOLADE NEPOTRIVITE!${NC}"
echo -e "${GALBEN} → Diferență: $(($open_braces - $close_braces))${NC}"
else
echo -e "${VERDE} ✓ Acolade potrivite${NC}"
fi
# 5. Verificare executabil ircd
echo ""
echo -e "${GALBEN}[5/8] Verificare executabil ircd...${NC}"
echo ""
if [ ! -f "$IRCD_BIN" ]; then
echo -e "${ROSU} ✗ Executabil NU EXISTĂ: $IRCD_BIN${NC}"
echo -e "${GALBEN} → Soluție: Rulează ./install.sh pentru compilare${NC}"
exit 1
else
echo -e "${VERDE} ✓ Executabil există${NC}"
fi
if [ ! -x "$IRCD_BIN" ]; then
echo -e "${ROSU} ✗ Executabil NU ARE permisiuni de execuție${NC}"
echo -e "${GALBEN} → Soluție: chmod +x $IRCD_BIN${NC}"
exit 1
else
echo -e "${VERDE} ✓ Permisiuni execuție OK${NC}"
fi
# 6. Test sintaxă configurare cu ircd
echo ""
echo -e "${GALBEN}[6/8] Test sintaxă cu ircd -c...${NC}"
echo ""
if "$IRCD_BIN" -c -f "$CONFIG_FILE" > /tmp/ircd_config_test.log 2>&1; then
echo -e "${VERDE} ✓ Config VALID - Sintaxă OK${NC}"
cat /tmp/ircd_config_test.log
else
echo -e "${ROSU} ✗ Config INVALID - Erori detectate:${NC}"
echo -e "${GALBEN}────────────────────────────────────────${NC}"
cat /tmp/ircd_config_test.log
echo -e "${GALBEN}────────────────────────────────────────${NC}"
rm -f /tmp/ircd_config_test.log
exit 1
fi
rm -f /tmp/ircd_config_test.log
# 7. Verificare directoare necesare
echo ""
echo -e "${GALBEN}[7/8] Verificare directoare necesare...${NC}"
echo ""
for dir in "$PREFIX/bin" "$PREFIX/etc" "$PREFIX/log"; do
if [ ! -d "$dir" ]; then
echo -e "${ROSU} ✗ Director lipsă: $dir${NC}"
echo -e "${GALBEN} → Creare: mkdir -p $dir${NC}"
mkdir -p "$dir"
else
echo -e "${VERDE}$dir${NC}"
fi
done
# 8. Verificare proces pornit
echo ""
echo -e "${GALBEN}[8/8] Verificare proces IRCd...${NC}"
echo ""
if pgrep -f "$IRCD_BIN" > /dev/null; then
local pid=$(pgrep -f "$IRCD_BIN")
echo -e "${VERDE} ✓ Proces PORNIT${NC}"
echo -e " PID: $pid"
ps aux | grep "$pid" | grep -v grep
else
echo -e "${GALBEN} Niciun proces activ${NC}"
echo -e " (Aceasta este normal dacă nu ai pornit serverul)${NC}"
fi
# Sumar final
echo ""
echo -e "${ALBASTRU}╔════════════════════════════════════════╗${NC}"
echo -e "${ALBASTRU}║ SUMAR DIAGNOSTICARE ║${NC}"
echo -e "${ALBASTRU}╚════════════════════════════════════════╝${NC}"
echo ""
if [ "$general_blocks" -gt 0 ] && [ "$port_blocks" -gt 0 ] && [ "$open_braces" -eq "$close_braces" ]; then
echo -e "${VERDE}✓ Toate verificările au trecut cu succes!${NC}"
echo -e "${VERDE}✓ Configurarea pare să fie validă.${NC}"
echo ""
echo -e "${GALBEN}Poți porni serverul cu:${NC}"
echo -e " $IRCD_BIN -f $CONFIG_FILE"
echo ""
echo -e "${GALBEN}SAU folosind meniul admin:${NC}"
echo -e " ./admin.sh → opțiunea 1 (Pornire server)"
echo ""
else
echo -e "${ROSU}✗ Au fost detectate probleme!${NC}"
echo ""
echo -e "${GALBEN}Pași recomandați:${NC}"
echo -e " 1. Verifică manual config: nano $CONFIG_FILE"
echo -e " 2. Compară cu exemplu: cat doc/example.conf"
echo -e " 3. SAU regenerează config: ./admin.sh → opțiunea 5"
echo ""
fi
echo -e "${GALBEN}Pentru mai multe detalii:${NC}"
echo -e " - Verifică log: tail -f $LOG_FILE"
echo -e " - Rulează admin: ./admin.sh"
echo ""