CURĂȚARE + ÎMBUNĂTĂȚIRE: Ștergere fișiere fix*/madrid + Configurare completă link server-to-server

ȘTERS:
- Toate fișierele fix-*.sh (fix-config, fix-aarch64, fix-host-hiding, fix-whois-notifications, fix-eofconfig-ports, fix-and-install-madrid)
- Toate fișierele *madrid* (install-madrid.sh, quick-install-madrid.sh, INSTALL_MADRID.md)
ADĂUGAT în install.sh:
- Secțiune dedicată CONFIGURARE LINK SERVER-TO-SERVER (independent de HUB/LEAF)
- Generare bloc Connect {} automat în ircd.conf
MODIFICAT:
- Separat conceptul de HUB (TRUE/FALSE) de configurarea link-urilor
- Interfață mai clară pentru configurarea rețelelor multi-server
This commit is contained in:
mihaiitdata 2026-02-13 17:56:40 +02:00
parent dff9707dcd
commit 9e7d1add6d
10 changed files with 28 additions and 2371 deletions

View File

@ -1,189 +0,0 @@
# Instalare UnderChat IRCd - Madrid Server
## Versiune: v1.0.6-madrid
## Data: 2026-02-13
---
## 🚀 INSTALARE RAPIDĂ (3 COMENZI):
```bash
# 1. Șterge instalarea veche (dacă există)
rm -rf ~/ircu2 ~/ircd
# 2. Clonează repository-ul
git clone https://gitlab.back.ro/underchat/ircu2.git && cd ircu2
# 3. Rulează scriptul pre-configurat Madrid
./install-madrid.sh
```
**GATA! Instalarea este completă!**
---
## ✅ CONFIGURAȚIE PRE-SETATĂ:
| Setare | Valoare |
|--------|---------|
| **Rețea** | UnderChat.org |
| **Server** | Madrid.ES.EU.UnderChat.org |
| **IP IRC** | 10.0.0.125 |
| **Port Client** | 6667 |
| **Port Server** | 4400 |
| **Username OPER** | Raducu |
| **Parola OPER** | muiesteaua |
| **Locație** | Madrid, Spain |
---
## 🎮 PORNIRE SERVER:
```bash
# Pornește serverul
~/ircd/bin/ircd
# Verifică că rulează
ps aux | grep ircd
# Verifică log-urile
tail -f ~/ircd/log/ircd.log
```
---
## 🔧 COMENZI UTILE:
### Test sintaxă configurație:
```bash
~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf
```
### Editare configurație:
```bash
nano ~/ircd/lib/ircd.conf
```
### Restart server:
```bash
# Oprește
killall ircd
# Pornește
~/ircd/bin/ircd
```
---
## 👤 LOGARE CA OPERATOR:
După ce te conectezi la server cu client IRC:
```
/connect Madrid.ES.EU.UnderChat.org 6667
/oper Raducu muiesteaua
```
---
## 📊 VERIFICĂRI:
### Verifică că server-ul ascultă pe portul corect:
```bash
netstat -tlnp | grep 6667
# Ar trebui să vezi: 10.0.0.125:6667
```
### Verifică configurația:
```bash
grep -E "(name =|vhost =|CPATH)" ~/ircd/lib/ircd.conf
```
### Verifică că NU sunt erori:
```bash
~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf
# Ar trebui să afișeze: "Configuration file ircd.conf checked okay."
```
---
## ✨ CE INCLUDE VERSIUNEA v1.0.6-madrid:
**Configurație completă pre-setată** - nu mai trebuie să introduci nimic manual
**snomask = "+s"** - format CORECT, fără erori de sintaxă
**CPATH absolut** - `/home/ircd/ircd/lib/ircd.conf` hardcodat
**IP corect** - 10.0.0.125 pe toate porturile
**Host hiding** - format hexadecimal activat
**WHOIS notificări** - pentru operatori activate
**Test sintaxă automat** - verificare înainte de finalizare
**ZERO placeholder-uri** - toate valorile reale, nu EOFCONFIG_*
---
## 🐛 DACĂ APARE VREO PROBLEMĂ:
### Eroare: "Failed to read configuration file"
```bash
# Verifică permisiuni:
ls -la ~/ircd/lib/ircd.conf
chmod 600 ~/ircd/lib/ircd.conf
```
### Eroare: "Config parse error on line X"
```bash
# Verifică linia exactă:
sed -n 'Xp' ~/ircd/lib/ircd.conf # înlocuiește X cu numărul liniei
# Reinstalează:
rm -rf ~/ircu2 ~/ircd
git clone https://gitlab.back.ro/underchat/ircu2.git && cd ircu2
./install-madrid.sh
```
### Server nu pornește:
```bash
# Verifică ce procese rulează:
ps aux | grep ircd
# Verifică ce porturu sunt în uz:
netstat -tlnp | grep -E "(6667|4400)"
# Verifică log-urile:
tail -50 ~/ircd/log/ircd.log
```
---
## 📞 SUPORT:
Dacă întâmpini probleme, rulează:
```bash
# Diagnostic complet:
echo "=== CONFIG ==="
~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf
echo ""
echo "=== PROCESE ==="
ps aux | grep ircd
echo ""
echo "=== PORTURI ==="
netstat -tlnp | grep -E "(6667|4400)"
echo ""
echo "=== LOG ==="
tail -20 ~/ircd/log/ircd.log
```
Trimite output-ul pentru diagnostic!
---
## 🎉 SUCCESS!
Dacă ai ajuns aici și server-ul rulează, **FELICITĂRI!**
Conectează-te cu client IRC la:
- **Server**: Madrid.ES.EU.UnderChat.org (sau 10.0.0.125)
- **Port**: 6667
- **Operator**: /oper Raducu muiesteaua
**Distracție plăcută pe UnderChat Network!** 🚀

View File

@ -1,129 +0,0 @@
#!/bin/bash
#
# Script pentru fixare config.guess & config.sub pentru aarch64
# Limba: Română
#
# Culori
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
ROSU='\033[0;31m'
NC='\033[0m'
log_info() {
echo -e "${ALBASTRU}[INFO]${NC} $1"
}
log_success() {
echo -e "${VERDE}[SUCCES]${NC} $1"
}
log_error() {
echo -e "${ROSU}[EROARE]${NC} $1"
}
log_warn() {
echo -e "${GALBEN}[AVERTIZARE]${NC} $1"
}
echo -e "${ALBASTRU}"
echo "═══════════════════════════════════════"
echo " Fix config.guess pentru aarch64"
echo "═══════════════════════════════════════"
echo -e "${NC}"
# Detectează platformă
MACHINE=$(uname -m)
SYSTEM=$(uname -s)
log_info "Sistem detectat: $SYSTEM $MACHINE"
# Verifică dacă config.guess există
if [ ! -f "config.guess" ]; then
log_error "config.guess nu găsit în directorul curent!"
exit 1
fi
# Backup original
cp config.guess config.guess.bak
cp config.sub config.sub.bak
log_success "Backup creat: config.guess.bak, config.sub.bak"
# Fixare pentru aarch64
if [ "$MACHINE" = "aarch64" ] || [ "$MACHINE" = "arm64" ]; then
log_info "Detectat aarch64/arm64, aplicare fix..."
# Metoda 1: Patch direct în config.guess pentru case aarch64
if grep -q "case \"\$machine\" in" config.guess; then
# Găsește linia și adaugă case pentru aarch64
line_num=$(grep -n 'case "$machine" in' config.guess | head -1 | cut -d: -f1)
if [ -n "$line_num" ]; then
# Creează temp file cu patch
head -n "$line_num" config.guess > config.guess.tmp
# Adaugă case pentru aarch64
cat >> config.guess.tmp << 'EOF'
aarch64*|arm64*)
echo aarch64-unknown-linux-gnu
exit 0
;;
EOF
# Adaugă restul fișierului
tail -n +$((line_num + 1)) config.guess >> config.guess.tmp
mv config.guess.tmp config.guess
chmod +x config.guess
log_success "config.guess patched pentru aarch64"
fi
fi
fi
# Verifică config.sub pentru aarch64
if [ "$MACHINE" = "aarch64" ] || [ "$MACHINE" = "arm64" ]; then
log_info "Verificare config.sub..."
if ! grep -q "aarch64" config.sub; then
log_warn "config.sub nu are suport aarch64, aplicare patch..."
# Adaugă suport aarch64 în config.sub
if grep -q "case \$cpu in" config.sub; then
# Găsește linia și adaugă case pentru aarch64
sed -i '/case $cpu in/a\
\t\taarch64 | arm64)\
\t\t\tcpu=aarch64\
\t\t\t;;' config.sub
log_success "config.sub patched pentru aarch64"
fi
else
log_success "config.sub are deja suport aarch64"
fi
fi
# Test
log_info "Test config.guess..."
RESULT=$(./config.guess 2>&1)
if [ $? -eq 0 ]; then
log_success "config.guess funcționează!"
echo -e "${VERDE}Output: $RESULT${NC}"
else
log_error "config.guess tot nu merge!"
echo -e "${ROSU}Output: $RESULT${NC}"
log_warn "Revert la backup..."
cp config.guess.bak config.guess
cp config.sub.bak config.sub
exit 1
fi
# Cleanup
rm -f config.guess.bak config.sub.bak
echo ""
echo -e "${VERDE}═══════════════════════════════════════${NC}"
echo -e "${VERDE}Fix aplicat cu succes!${NC}"
echo -e "${VERDE}═══════════════════════════════════════${NC}"
echo ""
echo "Acum poți rula: ./configure"

View File

@ -1,588 +0,0 @@
#!/bin/bash
#
# Script COMPLET de diagnostic, curățare și instalare pentru Madrid Server
# Rulează direct pe server: bash fix-and-install-madrid.sh
# Versiune: v1.0.6-madrid-final
#
set -e
# Culori
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${VERDE}[INFO]${NC} $1"; }
log_success() { echo -e "${VERDE}[✓]${NC} $1"; }
log_warn() { echo -e "${GALBEN}[!]${NC} $1"; }
log_error() { echo -e "${ROSU}[✗]${NC} $1"; }
clear
echo -e "${ALBASTRU}"
cat << "EOF"
╔════════════════════════════════════════════════════╗
║ UnderChat IRCd - Serverul Madrid ║
║ Script de Instalare v1.1.0-madrid-stabil ║
║ Gestionare inteligentă a instalării ║
╚════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"
echo ""
# ===================================================================
# PARTEA 1: DIAGNOSTIC ȘI PREGĂTIRE
# ===================================================================
log_info "PARTEA 1/3: Diagnostic și pregătire sistem..."
echo ""
# Oprește procese IRCd active
log_info "Oprire procese IRCd active..."
if pgrep -x ircd > /dev/null; then
log_warn "Găsit proces IRCd activ, oprire..."
pkill -15 ircd 2>/dev/null || true
sleep 2
# Dacă încă rulează, forțează oprirea
if pgrep -x ircd > /dev/null; then
log_warn "Forțare oprire proces..."
pkill -9 ircd 2>/dev/null || true
sleep 1
fi
log_success "Procese IRCd oprite"
else
log_info "Niciun proces IRCd activ"
fi
# Verifică dependențe necesare
log_info "Verificare dependențe de compilare..."
DEPENDENTE_LIPSA=()
if ! command -v gcc &> /dev/null; then
DEPENDENTE_LIPSA+=("gcc")
fi
if ! command -v make &> /dev/null; then
DEPENDENTE_LIPSA+=("make")
fi
if ! command -v git &> /dev/null; then
DEPENDENTE_LIPSA+=("git")
fi
if [ ${#DEPENDENTE_LIPSA[@]} -gt 0 ]; then
log_error "Dependențe lipsă: ${DEPENDENTE_LIPSA[*]}"
log_error "Instalează cu: sudo apt-get install build-essential git"
exit 1
fi
log_success "Toate dependențele sunt instalate"
echo ""
log_success "✓ PARTEA 1 COMPLETĂ: Sistem pregătit pentru instalare"
echo ""
# ===================================================================
# PARTEA 2: OBȚINERE SURSĂ ȘI COMPILARE
# ===================================================================
log_info "PARTEA 2/3: Obținere cod sursă și compilare..."
echo ""
# Determină directorul de lucru
DIR_SURSA="$HOME/ircu2"
# Verifică dacă repository-ul există deja
if [ -d "$DIR_SURSA/.git" ]; then
log_info "Repository existent găsit în $DIR_SURSA"
cd "$DIR_SURSA"
# Verifică dacă sunt modificări locale
if ! git diff-index --quiet HEAD -- 2>/dev/null; then
log_warn "Există modificări locale nesalvate"
log_info "Păstrarea modificărilor locale și actualizare..."
git stash push -m "Salvare automată înainte de actualizare - $(date '+%Y-%m-%d %H:%M:%S')" || true
fi
# Actualizează repository-ul
log_info "Actualizare repository din GitLab..."
if git pull origin master 2>/dev/null || git pull origin main 2>/dev/null; then
log_success "Repository actualizat"
# Restaurează modificările locale dacă au fost salvate
if git stash list | grep -q "Salvare automată"; then
log_info "Restaurare modificări locale..."
git stash pop || log_warn "Nu s-au putut restaura toate modificările"
fi
else
log_warn "Nu s-a putut actualiza repository-ul, continuăm cu versiunea existentă"
fi
else
log_info "Clonare repository UnderChat IRCd..."
cd ~
if [ -d "$DIR_SURSA" ]; then
log_warn "Director $DIR_SURSA există dar nu e repository git, ștergere..."
rm -rf "$DIR_SURSA"
fi
if ! git clone https://gitlab.back.ro/underchat/ircu2.git; then
log_error "Eșec la clonarea repository-ului!"
log_error "Verifică conexiunea la internet și accesul la GitLab"
exit 1
fi
cd "$DIR_SURSA"
log_success "Repository clonat cu succes"
fi
# Gestionare arhitectură sistem
log_info "Detectare arhitectură sistem: $(uname -m)"
ARHITECTURA=$(uname -m)
if [ "$ARHITECTURA" = "aarch64" ] || [ "$ARHITECTURA" = "arm64" ]; then
log_warn "Arhitectură ARM64 detectată - actualizare fișiere config necesară"
# Verifică dacă config.guess poate recunoaște arhitectura
if ! ./config.guess &>/dev/null; then
log_info "Descărcare fișiere config actualizate pentru ARM64..."
if command -v wget &>/dev/null; then
wget -q -O config.guess.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' && \
wget -q -O config.sub.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
if [ -f config.guess.new ] && [ -s config.guess.new ]; then
mv config.guess.new config.guess
mv config.sub.new config.sub
chmod +x config.guess config.sub
log_success "Fișiere config actualizate pentru ARM64"
fi
elif command -v curl &>/dev/null; then
curl -sL -o config.guess.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' && \
curl -sL -o config.sub.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
if [ -f config.guess.new ] && [ -s config.guess.new ]; then
mv config.guess.new config.guess
mv config.sub.new config.sub
chmod +x config.guess config.sub
log_success "Fișiere config actualizate pentru ARM64"
fi
else
log_warn "wget/curl indisponibile - folosesc flag --build explicit"
fi
fi
fi
# Pregătire pentru compilare
log_info "Configurare parametri compilare..."
PREFIX="$HOME/ircd"
CONFIGURE_FLAGS="--prefix=$PREFIX --with-maxcon=4096"
# Adaugă parametri specifici pentru ARM64
if [ "$ARHITECTURA" = "aarch64" ] || [ "$ARHITECTURA" = "arm64" ]; then
CONFIGURE_FLAGS="$CONFIGURE_FLAGS --build=aarch64-unknown-linux-gnu"
log_info "Parametri ARM64: $CONFIGURE_FLAGS"
fi
# Rulează configure
log_info "Configurare pentru compilare (./configure)..."
if ! ./configure $CONFIGURE_FLAGS 2>&1 | tee configure.log; then
log_error "Eșec la configurare!"
log_error "Ultimele linii din log:"
tail -n 20 configure.log
exit 1
fi
log_success "Configurare completă"
# Curățare compilări anterioare
log_info "Curățare fișiere compilate anterior..."
make clean &>/dev/null || true
# Compilare
log_info "Compilare cod sursă (make)..."
log_info "Acest pas poate dura câteva minute..."
NUMAR_PROCESOARE=$(nproc 2>/dev/null || echo "2")
if ! make -j"$NUMAR_PROCESOARE" 2>&1 | tee make.log; then
log_error "Eșec la compilare!"
log_error "Ultimele linii din log:"
tail -n 30 make.log
exit 1
fi
log_success "Compilare completă"
# Instalare binare
log_info "Instalare binare în $PREFIX..."
if ! make install 2>&1 | tee install.log; then
log_error "Eșec la instalare!"
log_error "Verifică permisiunile pentru $PREFIX"
exit 1
fi
log_success "Binare instalate"
# Verifică că binarul a fost instalat corect
if [ ! -f "$PREFIX/bin/ircd" ]; then
log_error "Binarul ircd nu a fost găsit în $PREFIX/bin/ircd!"
exit 1
fi
if [ ! -x "$PREFIX/bin/ircd" ]; then
log_error "Binarul ircd nu are permisiuni de execuție!"
chmod +x "$PREFIX/bin/ircd"
log_success "Permisiuni de execuție setate"
fi
echo ""
log_success "✓ PARTEA 2 COMPLETĂ: Compilare și instalare reușită"
echo ""
# ===================================================================
# PARTEA 3: GENERARE CONFIGURAȚIE MADRID
# ===================================================================
log_info "PARTEA 3/3: Generare configurație Madrid..."
echo ""
PREFIX="$HOME/ircd"
NETWORK_NAME="UnderChat.org"
SERVER_NAME="Madrid.ES.EU.UnderChat.org"
VHOST_IPV4="10.0.0.125"
OPERATOR_NAME="Raducu"
OPERATOR_PASS="muiesteaua"
# Creare structură directoare
log_info "Creare structură directoare..."
mkdir -p "$PREFIX/lib"
mkdir -p "$PREFIX/etc"
mkdir -p "$PREFIX/log"
mkdir -p "$PREFIX/var"
log_success "Directoare create"
# Găsește fișierul example.conf
EXAMPLE_CONF=""
if [ -f "$DIR_SURSA/doc/example.conf" ]; then
EXAMPLE_CONF="$DIR_SURSA/doc/example.conf"
elif [ -f "$HOME/ircu2/doc/example.conf" ]; then
EXAMPLE_CONF="$HOME/ircu2/doc/example.conf"
elif [ -f "doc/example.conf" ]; then
EXAMPLE_CONF="doc/example.conf"
fi
if [ -z "$EXAMPLE_CONF" ] || [ ! -f "$EXAMPLE_CONF" ]; then
log_error "Nu s-a găsit fișierul example.conf!"
log_error "Căutat în: $DIR_SURSA/doc/example.conf"
exit 1
fi
log_info "Folosesc șablon: $EXAMPLE_CONF"
# Verifică dacă configurația există deja
FISIER_CONFIG="$PREFIX/lib/ircd.conf"
if [ -f "$FISIER_CONFIG" ]; then
log_warn "Configurație existentă găsită în $FISIER_CONFIG"
BACKUP_CONFIG="$FISIER_CONFIG.backup-$(date +%Y%m%d-%H%M%S)"
cp "$FISIER_CONFIG" "$BACKUP_CONFIG"
log_info "Backup creat: $BACKUP_CONFIG"
fi
# Copiază example.conf ca punct de plecare
log_info "Generare configurație Madrid..."
cp "$EXAMPLE_CONF" "$FISIER_CONFIG"
# Funcție pentru înlocuire sigură în configurație
inlocuieste_in_config() {
local PATTERN="$1"
local REPLACE="$2"
local DESCRIERE="$3"
if sed -i.tmp "$PATTERN" "$FISIER_CONFIG" 2>/dev/null; then
rm -f "$FISIER_CONFIG.tmp"
log_info "$DESCRIERE"
return 0
else
log_warn " ⚠ Nu s-a putut actualiza: $DESCRIERE"
rm -f "$FISIER_CONFIG.tmp"
return 1
fi
}
log_info "Personalizare configurație pentru Madrid..."
# Actualizare nume server
inlocuieste_in_config \
's/^[[:space:]]*name[[:space:]]*=[[:space:]]*"[^"]*";/ name = "'"$SERVER_NAME"'";/' \
"Nume server: $SERVER_NAME"
# Actualizare vhost
inlocuieste_in_config \
's/^[[:space:]]*vhost[[:space:]]*=[[:space:]]*"[^"]*";/ vhost = "'"$VHOST_IPV4"'";/g' \
"VHost IPv4: $VHOST_IPV4"
# Actualizare descriere
inlocuieste_in_config \
's/^[[:space:]]*description[[:space:]]*=[[:space:]]*"[^"]*";/ description = "The UnderChat.org Network - Madrid Node";/' \
"Descriere server"
# Actualizare feature NETWORK
inlocuieste_in_config \
's/"NETWORK"[[:space:]]*=[[:space:]]*"[^"]*"/"NETWORK" = "'"$NETWORK_NAME"'"/' \
"Feature NETWORK"
# Actualizare feature DOMAINNAME
inlocuieste_in_config \
's/"DOMAINNAME"[[:space:]]*=[[:space:]]*"[^"]*"/"DOMAINNAME" = "'"$NETWORK_NAME"'"/' \
"Feature DOMAINNAME"
# Actualizare căi fișiere
inlocuieste_in_config \
's|/path/to|'"$PREFIX"'|g' \
"Căi generale"
inlocuieste_in_config \
's|"MPATH"[[:space:]]*=[[:space:]]*"[^"]*"|"MPATH" = "'"$PREFIX"'/lib/ircd.motd"|' \
"Cale MOTD"
inlocuieste_in_config \
's|"CPATH"[[:space:]]*=[[:space:]]*"[^"]*"|"CPATH" = "'"$PREFIX"'/lib/ircd.conf"|' \
"Cale configurație"
inlocuieste_in_config \
's|"PPATH"[[:space:]]*=[[:space:]]*"[^"]*"|"PPATH" = "'"$PREFIX"'/var/ircd.pid"|' \
"Cale PID"
# Actualizare cale log - mai complexă
if grep -q '"LOG"' "$FISIER_CONFIG"; then
inlocuieste_in_config \
's|"LOG"[[:space:]]*=[[:space:]]*"SYSTEM"[[:space:]]*"FILE"[[:space:]]*"[^"]*"|"LOG" = "SYSTEM" "FILE" "'"$PREFIX"'/log/ircd.log"|' \
"Cale fișier log"
fi
# Configurare operator Raducu
log_info "Configurare operator: $OPERATOR_NAME"
# Găsește prima secțiune Operator și înlocuiește-o
if grep -q "^Operator[[:space:]]*{" "$FISIER_CONFIG"; then
# Folosește perl pentru înlocuire multi-linie dacă e disponibil
if command -v perl &>/dev/null; then
perl -i.bak -0pe 's/Operator\s*\{[^}]*\}/Operator {\n name = "'"$OPERATOR_NAME"'";\n password = "\$PLAIN\$'"$OPERATOR_PASS"'";\n host = "*@*";\n class = "Opers";\n admin = yes;\n hide_oper = no;\n hide_channels = no;\n snomask = "+s";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";\n};/s' "$FISIER_CONFIG" 2>/dev/null && rm -f "$FISIER_CONFIG.bak"
log_info " ✓ Operator configurat"
else
log_warn " ⚠ Perl nu e disponibil, configurare manuală necesară pentru operator"
fi
else
# Adaugă secțiunea Operator dacă nu există
cat >> "$FISIER_CONFIG" <<OPERATOR_BLOCK
# Operator Madrid - $OPERATOR_NAME
Operator {
name = "$OPERATOR_NAME";
password = "\$PLAIN\$$OPERATOR_PASS";
host = "*@*";
class = "Opers";
admin = yes;
hide_oper = no;
hide_channels = no;
snomask = "+s";
privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";
};
OPERATOR_BLOCK
log_info " ✓ Secțiune Operator adăugată"
fi
log_success "Configurație Madrid personalizată"
# Generare MOTD
log_info "Generare MOTD..."
cat > "$PREFIX/lib/ircd.motd" <<'MOTD_FINAL'
╔═══════════════════════════════════════╗
║ Bine venit pe UnderChat IRCd! ║
║ Madrid.ES.EU.UnderChat.org ║
║ ║
║ Versiune: v1.1.0-madrid-stabil ║
║ ║
║ Pentru suport: #support ║
║ Website: https://underchat.org ║
╚═══════════════════════════════════════╝
🌟 UnderChat Network - Nod Madrid
• Protecție identitate utilizatori (host hiding)
• Protecție anti-spam și anti-flood
• Canale cu moduri și opțiuni diverse
Distracție plăcută pe UnderChat! 🎉
MOTD_FINAL
log_success "MOTD generat"
# Setare permisiuni
log_info "Setare permisiuni fișiere..."
chmod 600 "$FISIER_CONFIG"
chmod 644 "$PREFIX/lib/ircd.motd"
# Copiere fișiere în directorul etc (backup)
cp "$PREFIX/lib/ircd.motd" "$PREFIX/etc/ircd.motd" 2>/dev/null || true
cp "$FISIER_CONFIG" "$PREFIX/etc/ircd.conf" 2>/dev/null || true
log_success "Permisiuni setate"
# Verificare sintaxă configurație
log_info "Verificare sintaxă configurație..."
if [ ! -f "$PREFIX/bin/ircd" ]; then
log_error "Binarul ircd nu există în $PREFIX/bin/ircd!"
exit 1
fi
# Test sintaxă cu timeout pentru a evita blocarea
log_info "Rulare test configurație..."
if timeout 10 "$PREFIX/bin/ircd" -c -f "$FISIER_CONFIG" 2>&1 | tee "$PREFIX/log/config-test.log"; then
log_success "✓ Sintaxa configurației este CORECTĂ!"
else
REZULTAT_TEST=$?
if [ $REZULTAT_TEST -eq 124 ]; then
log_warn "⚠ Testul configurației a depășit timeout-ul (posibil OK)"
else
log_error "✗ EROARE în configurație!"
echo ""
echo "Detalii eroare în: $PREFIX/log/config-test.log"
echo ""
echo "Rulează manual pentru diagnostic:"
echo " $PREFIX/bin/ircd -c -f $FISIER_CONFIG"
exit 1
fi
fi
echo ""
log_success "✓ PARTEA 3 COMPLETĂ: Configurație Madrid validată"
echo ""
# ===================================================================
# FINALIZARE ȘI INSTRUCȚIUNI
# ===================================================================
echo -e "${VERDE}"
cat << "EOF"
╔════════════════════════════════════════════════════╗
║ ✓✓✓ INSTALARE MADRID COMPLETĂ CU SUCCES! ✓✓✓ ║
╚════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"
echo ""
echo -e "${ALBASTRU}═══ CONFIGURAȚIE MADRID ═══${NC}"
echo " Server: Madrid.ES.EU.UnderChat.org"
echo " IP: 10.0.0.125"
echo " Port: 6667"
echo " Operator: Raducu / muiesteaua"
echo " Config: $PREFIX/lib/ircd.conf"
echo ""
echo -e "${ALBASTRU}═══ PORNIRE SERVER ═══${NC}"
echo " Pornește acum:"
echo -e " ${VERDE}$PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf${NC}"
echo ""
echo " SAU pornire în fundal (background):"
echo -e " ${VERDE}nohup $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf &${NC}"
echo ""
echo -e "${ALBASTRU}═══ VERIFICARE ═══${NC}"
echo " Verifică că serverul rulează:"
echo -e " ${VERDE}ps aux | grep ircd${NC}"
echo ""
echo " Verifică porturile deschise:"
echo -e " ${VERDE}netstat -tlnp | grep -E '(6667|4400)'${NC}"
echo ""
echo " Verifică fișierul de log:"
echo -e " ${VERDE}tail -f $PREFIX/log/ircd.log${NC}"
echo ""
echo -e "${ALBASTRU}═══ CONECTARE ═══${NC}"
echo " Cu client IRC:"
echo " Server: Madrid.ES.EU.UnderChat.org (sau 10.0.0.125)"
echo " Port: 6667"
echo ""
echo " Autentificare ca operator:"
echo " /oper Raducu muiesteaua"
echo ""
echo -e "${VERDE}🎉 Distracție plăcută pe UnderChat Network! 🎉${NC}"
echo ""
# Întreabă dacă să pornească serverul automat
echo ""
read -p "Dorești să pornesc serverul ACUM? [D/n] (Da/nu): " pornire_acum
pornire_acum=${pornire_acum:-D}
if [[ "$pornire_acum" =~ ^[DdYy]$ ]]; then
echo ""
log_info "Pornire server IRCd cu configurația Madrid..."
# Verifică dacă există deja un proces
if pgrep -x ircd > /dev/null; then
log_warn "Un proces IRCd rulează deja!"
ps aux | grep "[i]rcd"
echo ""
read -p "Dorești să-l opresc și să pornesc unul nou? [D/n]: " opreste_si_porneste
opreste_si_porneste=${opreste_si_porneste:-D}
if [[ "$opreste_si_porneste" =~ ^[DdYy]$ ]]; then
log_info "Oprire proces existent..."
pkill -15 ircd 2>/dev/null || true
sleep 2
if pgrep -x ircd > /dev/null; then
pkill -9 ircd 2>/dev/null || true
sleep 1
fi
log_success "Proces oprit"
else
log_info "Păstrare proces existent, ieșire din script"
exit 0
fi
fi
# Pornește serverul cu calea completă spre configurație
log_info "Lansare proces ircd..."
if "$PREFIX/bin/ircd" -f "$PREFIX/lib/ircd.conf"; then
sleep 3
# Verifică dacă procesul rulează
if pgrep -x ircd > /dev/null; then
log_success "✓✓✓ SERVER PORNIT CU SUCCES! ✓✓✓"
echo ""
echo "Proces IRCd activ:"
ps aux | grep "[i]rcd"
echo ""
log_success "Poți conecta la: Madrid.ES.EU.UnderChat.org:6667"
echo ""
# Verifică log-ul pentru eventuale avertismente
if [ -f "$PREFIX/log/ircd.log" ]; then
echo "Ultimele linii din log:"
tail -n 10 "$PREFIX/log/ircd.log"
fi
else
log_error "Serverul nu rulează după pornire!"
echo ""
log_error "Verifică log-urile pentru erori:"
echo " tail -f $PREFIX/log/ircd.log"
echo ""
log_info "Sau rulează manual cu:"
echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf"
fi
else
log_error "Eșec la pornirea serverului!"
echo ""
log_error "Verifică configurația și încearcă manual:"
echo " $PREFIX/bin/ircd -c -f $PREFIX/lib/ircd.conf # Test configurație"
echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf # Pornire server"
fi
else
echo ""
log_info "OK! Pornește serverul manual când ești pregătit:"
echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf"
echo ""
log_info "Sau în fundal:"
echo " nohup $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf > $PREFIX/log/startup.log 2>&1 &"
fi
echo ""
log_success "Script finalizat cu succes!"
echo ""

View File

@ -1,394 +0,0 @@
#!/bin/bash
#
# Script de remediere probleme configurare UnderChat IRCd
# Limba: Română
#
# Culori
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; }
log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; }
log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; }
log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; }
echo -e "${ALBASTRU}"
echo "════════════════════════════════════════"
echo " Remediere Probleme Configurare IRCd"
echo "════════════════════════════════════════"
echo -e "${NC}"
# Detectează directorul PREFIX
if [ -n "$1" ]; then
PREFIX="$1"
elif [ -d "$HOME/ircd" ]; then
PREFIX="$HOME/ircd"
elif [ -d "/home/ircd/ircd" ]; then
PREFIX="/home/ircd/ircd"
else
log_error "Nu pot detecta directorul IRCd!"
echo "Utilizare: $0 [PREFIX_PATH]"
echo "Exemplu: $0 /home/ircd/ircd"
exit 1
fi
log_info "Folosesc PREFIX: $PREFIX"
# Pas 1: Verifică și corectează structura directoarelor
log_info "Pas 1: Verificare structură directoare..."
if [ ! -d "$PREFIX/etc" ]; then
log_warn "Directorul $PREFIX/etc nu există, îl creez..."
mkdir -p "$PREFIX/etc"
fi
if [ ! -d "$PREFIX/lib" ]; then
log_warn "Directorul $PREFIX/lib nu există, îl creez..."
mkdir -p "$PREFIX/lib"
fi
# Verifică dacă config-ul e în etc în loc de lib
CONFIG_ETC="$PREFIX/etc/ircd.conf"
CONFIG_LIB="$PREFIX/lib/ircd.conf"
if [ -f "$CONFIG_ETC" ] && [ ! -f "$CONFIG_LIB" ]; then
log_warn "Configurația este în etc/ în loc de lib/, o mut..."
mkdir -p "$PREFIX/lib"
mv "$CONFIG_ETC" "$CONFIG_LIB"
log_success "Mutat $CONFIG_ETC -> $CONFIG_LIB"
elif [ -f "$CONFIG_ETC" ] && [ -f "$CONFIG_LIB" ]; then
log_warn "Configurația există în ambele locuri, verific care e mai nouă..."
if [ "$CONFIG_ETC" -nt "$CONFIG_LIB" ]; then
log_info "Versiunea din etc/ e mai nouă, o copiez în lib/"
cp "$CONFIG_ETC" "$CONFIG_LIB.backup.$(date +%s)"
mv "$CONFIG_ETC" "$CONFIG_LIB"
else
log_info "Versiunea din lib/ e mai nouă, șterg duplicatul din etc/"
rm "$CONFIG_ETC"
fi
fi
# Locația principală e lib/ nu etc/
CONFIG_ETC="$PREFIX/lib/ircd.conf"
if [ ! -f "$CONFIG_ETC" ]; then
log_error "Fișierul de configurare nu există: $CONFIG_ETC"
log_info "Generez o configurație minimă..."
mkdir -p "$(dirname "$CONFIG_ETC")"
cat > "$CONFIG_ETC" << 'EOF'
General {
name = "localhost.localdomain";
description = "UnderChat IRCd Server";
numeric = 1;
vhost = "127.0.0.1";
};
Admin {
Location = "UnderChat Network";
Location = "Romania";
Contact = "admin@underchat.ro";
};
Class {
name = "Other";
pingfreq = 1 minutes 30 seconds;
sendq = 160000;
maxlinks = 100;
usermode = "+ix";
};
Client {
host = "*@*";
ip = "*@*";
class = "Other";
maxlinks = 6;
};
Port {
port = 6667;
vhost = "127.0.0.1";
hidden = yes;
};
Operator {
name = "AdminRoot";
password = "$PLAIN$password";
host = "*@*";
class = "Other";
};
features {
"NETWORK" = "underchat.org";
"DOMAINNAME" = "underchat.org";
"HOST_HIDING" = "TRUE";
"HOST_HIDING_STYLE" = "3";
"HIDDEN_HOST" = "users.underchat.org";
"HIDDEN_IP" = "127.0.0.1";
"HIDDEN_HOSTTYPE" = "3";
"CPATH" = "$PREFIX/lib/ircd.conf";
"MPATH" = "$PREFIX/lib/ircd.motd";
"RPATH" = "$PREFIX/lib/remote.motd";
"PPATH" = "$PREFIX/var/ircd.pid";
};
EOF
log_success "Configurație minimă generată: $CONFIG_ETC"
fi
# Pas 2: Identifică eroarea pe linia 126
log_info "Pas 2: Verificare syntaxă configurație..."
if command -v "$PREFIX/bin/ircd" >/dev/null 2>&1; then
log_info "Test syntaxă cu ircd -k..."
# Salvează output-ul pentru analiză
SYNTAX_CHECK=$("$PREFIX/bin/ircd" -k -f "$CONFIG_ETC" 2>&1)
SYNTAX_EXIT=$?
if [ $SYNTAX_EXIT -eq 0 ]; then
log_success "Sintaxa configurației este corectă!"
else
log_error "Erori de sintaxă detectate:"
echo "$SYNTAX_CHECK"
# Încearcă să identifice linia problematică
if echo "$SYNTAX_CHECK" | grep -q "line [0-9]*"; then
ERROR_LINE=$(echo "$SYNTAX_CHECK" | grep -o "line [0-9]*" | grep -o "[0-9]*")
log_warn "Eroare pe linia $ERROR_LINE, verific..."
# Arată contextul erorii
log_info "Context linia $ERROR_LINE:"
sed -n "$((ERROR_LINE-2)),$((ERROR_LINE+2))p" "$CONFIG_ETC" | nl -ba -v$((ERROR_LINE-2))
fi
fi
else
log_warn "Binarul ircd nu găsit, sar peste testul sintaxă"
fi
# Pas 3: Verifică și corectează probleme comune
log_info "Pas 3: Corectare probleme comune configurație..."
# Backup configurația
cp "$CONFIG_ETC" "$CONFIG_ETC.backup.$(date +%s)"
log_success "Backup creat: $CONFIG_ETC.backup.$(date +%s)"
# Corectări comune:
log_info "Aplicare corectări comune..."
# 1. Șterge linii goale multiple
sed -i '/^$/N;/^\n$/d' "$CONFIG_ETC"
# 2. Corectează spațiile în jurul =
sed -i 's/[[:space:]]*=[[:space:]]*/ = /g' "$CONFIG_ETC"
# 3. Corectează placeholder-urile neînlocuite
log_info "Corectez placeholder-urile EOFCONFIG..."
sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_ETC"
sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_ETC"
sed -i "s|\\.EOFCONFIG_NETWORK|.underchat.org|g" "$CONFIG_ETC"
sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.underchat.org|g" "$CONFIG_ETC"
# Corectare specială pentru EOFCONFIG_CLIENT_PORTS
if grep -q "EOFCONFIG_CLIENT_PORTS" "$CONFIG_ETC"; then
log_warn "EOFCONFIG_CLIENT_PORTS găsit - îl înlocuiesc cu blocuri Port..."
CLIENT_PORTS_BLOCK='# Porturi publice pentru clienți
Port {
vhost = "127.0.0.1" 6660;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6661;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6662;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6663;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6664;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6665;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6666;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6667;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6668;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6669;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 7000;
hidden = yes;
};'
awk -v replacement="$CLIENT_PORTS_BLOCK" '
/EOFCONFIG_CLIENT_PORTS/ {print replacement; next}
{print}
' "$CONFIG_ETC" > "$CONFIG_ETC.tmp" && mv "$CONFIG_ETC.tmp" "$CONFIG_ETC"
log_success "EOFCONFIG_CLIENT_PORTS înlocuit cu blocurile Port"
fi
# Corectare specială pentru EOFCONFIG_SSL_PORTS
if grep -q "EOFCONFIG_SSL_PORTS" "$CONFIG_ETC"; then
log_warn "EOFCONFIG_SSL_PORTS găsit - îl înlocuiesc cu blocuri SSL..."
SSL_PORTS_BLOCK='# Porturi SSL/TLS pentru clienți
Port {
vhost = "127.0.0.1" 6697;
ssl = yes;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 9999;
ssl = yes;
hidden = yes;
};'
awk -v replacement="$SSL_PORTS_BLOCK" '
/EOFCONFIG_SSL_PORTS/ {print replacement; next}
{print}
' "$CONFIG_ETC" > "$CONFIG_ETC.tmp" && mv "$CONFIG_ETC.tmp" "$CONFIG_ETC"
log_success "EOFCONFIG_SSL_PORTS înlocuit cu blocurile SSL"
fi
# 4. Verifică și corectează setările de host hiding
log_info "Verificare și corectare host hiding..."
# Verifică dacă HOST_HIDING_STYLE există
if ! grep -q '"HOST_HIDING_STYLE"' "$CONFIG_ETC"; then
log_warn "HOST_HIDING_STYLE lipsește, îl adaug..."
# Adaugă după HOST_HIDING = TRUE
sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "3";' "$CONFIG_ETC"
else
# Actualizează la versiunea 3 pentru format hexadecimal
sed -i 's/"HOST_HIDING_STYLE" = "[^"]*"/"HOST_HIDING_STYLE" = "3"/' "$CONFIG_ETC"
log_warn "HOST_HIDING_STYLE actualizat la 3 (format hexadecimal)"
fi
# Verifică dacă HIDDEN_IP există
if ! grep -q '"HIDDEN_IP"' "$CONFIG_ETC"; then
log_warn "HIDDEN_IP lipsește, îl adaug..."
# Adaugă după HIDDEN_HOST
sed -i '/"HIDDEN_HOST" = /a\ "HIDDEN_IP" = "127.0.0.1";' "$CONFIG_ETC"
fi
# Verifică dacă HIDDEN_HOSTTYPE există (necesar pentru format hexadecimal)
if ! grep -q '"HIDDEN_HOSTTYPE"' "$CONFIG_ETC"; then
log_warn "HIDDEN_HOSTTYPE lipsește, îl adaug pentru format hexadecimal..."
# Adaugă după HIDDEN_IP
sed -i '/"HIDDEN_IP" = "127.0.0.1"/a\ "HIDDEN_HOSTTYPE" = "3";' "$CONFIG_ETC"
fi
# Verifică dacă CPATH există în features
if ! grep -q '"CPATH"' "$CONFIG_ETC"; then
log_warn "CPATH lipsește din features, îl adaug..."
# Adaugă în secțiunea features
sed -i '/features {/a\ "CPATH" = "'$PREFIX'/lib/ircd.conf";' "$CONFIG_ETC"
fi
# Verifică și adaugă setări pentru notificări WHOIS la operatori
if ! grep -q '"SPY_WHOIS"' "$CONFIG_ETC"; then
log_warn "Setări WHOIS pentru operatori lipsesc, le adaug..."
sed -i '/WHOIS_NOTICE.*TRUE/a\ "SPY_WHOIS" = "TRUE";\n "SNOMASK_OPERDEFAULT" = "1024";\n "SNOMASK_DEFAULT" = "1024";' "$CONFIG_ETC"
fi
# Verifică dacă operatorii au privilegiile WHOIS_NOTICE
if ! grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_ETC"; then
log_warn "Privilegii WHOIS pentru operatori lipsesc, le adaug..."
sed -i '/admin = yes/a\ snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' "$CONFIG_ETC"
fi
# 5. Verifică și corectează modul utilizatorilor în clasa Other
if grep -q 'usermode = "+i"' "$CONFIG_ETC"; then
log_warn "Corectez usermode pentru clasa Other: +i -> +ix"
sed -i 's/usermode = "+i"/usermode = "+ix"/' "$CONFIG_ETC"
fi
# 6. Verifică ghilimelele
if grep -n '[^"]"[^"]' "$CONFIG_ETC" >/dev/null; then
log_warn "Posibile probleme cu ghilimele găsite"
grep -n '[^"]"[^"]' "$CONFIG_ETC"
fi
# 7. Verifică acoladele
OPEN_BRACES=$(grep -o '{' "$CONFIG_ETC" | wc -l)
CLOSE_BRACES=$(grep -o '}' "$CONFIG_ETC" | wc -l)
if [ "$OPEN_BRACES" -ne "$CLOSE_BRACES" ]; then
log_error "Acolade necorect balansate: $OPEN_BRACES deschise, $CLOSE_BRACES închise"
else
log_success "Acolade corect balansate: $OPEN_BRACES perechi"
fi
# Pas 4: Setează permisiuni
log_info "Pas 4: Setare permisiuni..."
chmod 600 "$CONFIG_ETC"
chown $(whoami):$(whoami) "$CONFIG_ETC" 2>/dev/null || true
log_success "Permisiuni setate: 600 pe $CONFIG_ETC"
# Pas 5: Test final
log_info "Pas 5: Test final configurație..."
if [ -x "$PREFIX/bin/ircd" ]; then
FINAL_TEST=$("$PREFIX/bin/ircd" -k -f "$CONFIG_ETC" 2>&1)
FINAL_EXIT=$?
if [ $FINAL_EXIT -eq 0 ]; then
echo -e "${VERDE}"
echo "════════════════════════════════════════"
echo " ✓ CONFIGURAȚIA A FOST REPARATĂ!"
echo "════════════════════════════════════════"
echo -e "${NC}"
log_success "Configurația este acum validă"
log_info "Poți porni serverul cu: $PREFIX/bin/ircd -f $CONFIG_ETC"
else
log_error "Configurația încă are erori:"
echo "$FINAL_TEST"
echo ""
log_warn "Încearcă să regenerezi configurația cu ./install.sh"
fi
else
log_warn "Nu pot testa configurația (ircd nu găsit)"
log_info "Verifică manual cu: $PREFIX/bin/ircd -k -f $CONFIG_ETC"
fi
echo ""
log_info "Locația configurației corecte: $CONFIG_ETC"
log_info "Pentru editare: nano $CONFIG_ETC"

View File

@ -1,257 +0,0 @@
#!/bin/bash
#
# Script specializat pentru repararea placeholder-urilor EOFCONFIG_CLIENT_PORTS în ircd.conf
# Limba: Română
#
# Culori
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; }
log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; }
log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; }
log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; }
echo -e "${ALBASTRU}"
echo "════════════════════════════════════════"
echo " Reparare EOFCONFIG_CLIENT_PORTS"
echo "════════════════════════════════════════"
echo -e "${NC}"
# Detectează PREFIX
if [ -n "$1" ]; then
PREFIX="$1"
elif [ -d "$HOME/ircd" ]; then
PREFIX="$HOME/ircd"
elif [ -d "/home/ircd/ircd" ]; then
PREFIX="/home/ircd/ircd"
else
log_error "Nu pot detecta directorul IRCd!"
echo "Utilizare: $0 [PREFIX_PATH]"
exit 1
fi
CONFIG_FILE="$PREFIX/lib/ircd.conf"
if [ ! -f "$CONFIG_FILE" ] && [ -f "$PREFIX/etc/ircd.conf" ]; then
CONFIG_FILE="$PREFIX/etc/ircd.conf"
log_warn "Config găsit în etc/ în loc de lib/ - va fi mutat după reparare"
fi
log_info "Folosesc PREFIX: $PREFIX"
log_info "Config file: $CONFIG_FILE"
if [ ! -f "$CONFIG_FILE" ]; then
log_error "Fișierul de configurare nu există: $CONFIG_FILE"
exit 1
fi
echo ""
echo -e "${GALBEN}═══ DIAGNOSTIC PLACEHOLDER EOFCONFIG ═══${NC}"
# Verifică placeholder-urile problematice
echo ""
log_info "Căutare placeholder-uri EOFCONFIG..."
if grep -q "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE"; then
log_error "EOFCONFIG_CLIENT_PORTS găsit - acesta cauzează eroarea de sintaxă!"
PROBLEM_LINE=$(grep -n "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE" | cut -d: -f1)
log_warn "Pe linia: $PROBLEM_LINE"
fi
if grep -q "EOFCONFIG_SSL_PORTS" "$CONFIG_FILE"; then
log_warn "EOFCONFIG_SSL_PORTS găsit - și acesta trebuie înlocuit"
fi
if grep -q "EOFCONFIG_NETWORK" "$CONFIG_FILE"; then
log_warn "EOFCONFIG_NETWORK găsit - și acesta trebuie înlocuit"
fi
# Afișează contextul erorii
echo ""
log_info "Context linia problematică:"
echo -e "${GALBEN}────────────────────────────────────────${NC}"
grep -n -A3 -B3 "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE" 2>/dev/null || echo "Nu găsesc EOFCONFIG_CLIENT_PORTS"
echo -e "${GALBEN}────────────────────────────────────────${NC}"
# Întrebă dacă să aplice reparația
echo ""
echo -e "${GALBEN}Vrei să înlocuiesc toate placeholder-urile EOFCONFIG cu valori corecte? [y/N]:${NC}"
read -r apply_fixes
if [[ "$apply_fixes" =~ ^[Yy]$ ]]; then
echo ""
echo -e "${VERDE}═══ APLICARE REPARAȚII PLACEHOLDER ═══${NC}"
# Backup
cp "$CONFIG_FILE" "$CONFIG_FILE.backup.eofconfig.$(date +%s)"
log_success "Backup creat: $CONFIG_FILE.backup.eofconfig.*"
# 1. Înlocuiește EOFCONFIG_CLIENT_PORTS cu porturile standard
log_info "Înlocuiesc EOFCONFIG_CLIENT_PORTS cu porturile client standard..."
# Detectează IP-ul din configurație pentru a-l folosi în porturi
DETECTED_IP=$(grep -m1 'vhost = ' "$CONFIG_FILE" | sed 's/.*vhost = "\([^"]*\)".*/\1/' | head -1)
VHOST_IP="${DETECTED_IP:-127.0.0.1}"
log_info "Folosesc IP-ul detectat pentru porturi: $VHOST_IP"
CLIENT_PORTS_BLOCK="# Porturi publice pentru clienți
Port {
vhost = \"$VHOST_IP\" 6660;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6661;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6662;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6663;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6664;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6665;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6666;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6667;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6668;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 6669;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 7000;
hidden = yes;
};"
# Înlocuiește placeholder-ul cu blocul de porturi
if grep -q "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE"; then
# Creează un fișier temporar cu înlocuirea
awk -v replacement="$CLIENT_PORTS_BLOCK" '
/EOFCONFIG_CLIENT_PORTS/ {print replacement; next}
{print}
' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
log_success "EOFCONFIG_CLIENT_PORTS înlocuit cu blocurile Port"
fi
# 2. Înlocuiește EOFCONFIG_SSL_PORTS cu porturile SSL
log_info "Înlocuiesc EOFCONFIG_SSL_PORTS cu porturile SSL..."
SSL_PORTS_BLOCK="# Porturi SSL/TLS pentru clienți
Port {
vhost = \"$VHOST_IP\" 6697;
ssl = yes;
hidden = yes;
};
Port {
vhost = \"$VHOST_IP\" 9999;
ssl = yes;
hidden = yes;
};"
if grep -q "EOFCONFIG_SSL_PORTS" "$CONFIG_FILE"; then
awk -v replacement="$SSL_PORTS_BLOCK" '
/EOFCONFIG_SSL_PORTS/ {print replacement; next}
{print}
' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
log_success "EOFCONFIG_SSL_PORTS înlocuit cu blocurile SSL"
fi
# 3. Înlocuiește alte placeholder-uri comune
log_info "Înlocuiesc alte placeholder-uri EOFCONFIG..."
sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_FILE"
sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_FILE"
sed -i "s|\\.EOFCONFIG_NETWORK|.underchat.org|g" "$CONFIG_FILE"
sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.underchat.org|g" "$CONFIG_FILE"
log_success "Alte placeholder-uri EOFCONFIG înlocuite"
# 4. Reparare specială pentru problema cu snomask (linia 206)
log_info "Verific și repar problema cu snomask..."
if grep -q 'snomask = ".*HACK.*"' "$CONFIG_FILE"; then
log_warn "Găsit snomask problematic cu HACK - îl corectez..."
sed -i 's/snomask = ".*HACK.*"/snomask = "+s";/' "$CONFIG_FILE"
log_success "Snomask corectat la format simplu +s"
fi
echo ""
echo -e "${VERDE}═══ TEST FINAL ═══${NC}"
# Verifică dacă mai există placeholder-uri
if grep -q "EOFCONFIG" "$CONFIG_FILE"; then
log_warn "Încă mai există placeholder-uri EOFCONFIG:"
grep -n "EOFCONFIG" "$CONFIG_FILE"
else
log_success "✓ Toate placeholder-urile EOFCONFIG au fost înlocuite!"
fi
# Test sintaxă
if [ -x "$PREFIX/bin/ircd" ]; then
log_info "Test sintaxă configurație..."
if "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" > /dev/null 2>&1; then
log_success "✓ Sintaxă configurație validă!"
else
log_error "✗ Încă mai sunt erori în configurație:"
"$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" 2>&1 | head -10
fi
fi
echo ""
echo -e "${VERDE}════════════════════════════════════════${NC}"
echo -e "${VERDE} PLACEHOLDER-URI EOFCONFIG REPARATE!${NC}"
echo -e "${VERDE}════════════════════════════════════════${NC}"
echo ""
echo -e "${GALBEN}Rezultat:${NC}"
echo "- EOFCONFIG_CLIENT_PORTS → Blocuri Port 6660-6669, 7000"
echo "- EOFCONFIG_SSL_PORTS → Blocuri SSL Port 6697, 9999"
echo "- EOFCONFIG_NETWORK → underchat.org"
echo "- EOFCONFIG_PREFIX → $PREFIX"
echo ""
echo -e "${GALBEN}Pentru a testa:${NC}"
echo "1. $PREFIX/bin/ircd -c -f $CONFIG_FILE"
echo "2. $PREFIX/bin/ircd -f $CONFIG_FILE"
else
echo ""
log_info "Reparație anulată. Problema va persista."
echo ""
echo -e "${GALBEN}Pentru reparare manuală:${NC}"
echo "1. Editează $CONFIG_FILE"
echo "2. Înlocuiește 'EOFCONFIG_CLIENT_PORTS' cu blocuri Port"
echo "3. Înlocuiește 'EOFCONFIG_SSL_PORTS' cu blocuri SSL"
echo "4. Înlocuiește 'EOFCONFIG_NETWORK' cu 'underchat.org'"
fi

View File

@ -1,241 +0,0 @@
#!/bin/bash
#
# Script specializat pentru diagnosticarea și repararea host hiding în UnderChat IRCd
# Versiunea: 1.0.3 - Bazată pe configurația funcțională de la ns2.node-ase.ovh
# Limba: Română
#
# Culori
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; }
log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; }
log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; }
log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; }
echo -e "${ALBASTRU}"
echo "════════════════════════════════════════"
echo " Diagnostic și Reparare Host Hiding"
echo "════════════════════════════════════════"
echo -e "${NC}"
# Detectează PREFIX
if [ -n "$1" ]; then
PREFIX="$1"
elif [ -d "$HOME/ircd" ]; then
PREFIX="$HOME/ircd"
elif [ -d "/home/ircd/ircd" ]; then
PREFIX="/home/ircd/ircd"
else
log_error "Nu pot detecta directorul IRCd!"
echo "Utilizare: $0 [PREFIX_PATH]"
exit 1
fi
CONFIG_FILE="$PREFIX/etc/ircd.conf"
log_info "Folosesc PREFIX: $PREFIX"
log_info "Config file: $CONFIG_FILE"
if [ ! -f "$CONFIG_FILE" ]; then
log_error "Fișierul de configurare nu există: $CONFIG_FILE"
exit 1
fi
echo ""
echo -e "${GALBEN}═══ DIAGNOSTIC CURENT ═══${NC}"
# Compară cu serverul funcțional (ns2.node-ase.ovh)
echo ""
log_info "Comparare cu configurația funcțională de pe ns2.node-ase.ovh..."
echo -e "${VERDE}Pe serverul funcțional IP-ul se ascunde automat cu format hexadecimal:${NC}"
echo -e " Exemplu: ~Raducu@4C5DA6.3305AC.147F4A.B19664.IP"
echo -e "${GALBEN}Pe serverul tău IP-ul rămâne vizibil:${NC}"
echo -e " Problema: ~Raducu@188.24.5.202"
# Verifică setările actuale de host hiding
echo ""
log_info "Verificare setări HOST_HIDING actuale..."
if grep -q '"HOST_HIDING" = "TRUE"' "$CONFIG_FILE"; then
log_success "HOST_HIDING = TRUE găsit"
else
log_error "HOST_HIDING = TRUE LIPSEȘTE!"
fi
if grep -q '"HOST_HIDING_STYLE"' "$CONFIG_FILE"; then
STYLE=$(grep '"HOST_HIDING_STYLE"' "$CONFIG_FILE" | sed -E 's/.*"HOST_HIDING_STYLE" = "([^"]+)".*/\1/')
log_success "HOST_HIDING_STYLE = $STYLE găsit"
else
log_error "HOST_HIDING_STYLE LIPSEȘTE!"
fi
if grep -q '"HIDDEN_HOST"' "$CONFIG_FILE"; then
HIDDEN_HOST=$(grep '"HIDDEN_HOST"' "$CONFIG_FILE" | sed -E 's/.*"HIDDEN_HOST" = "([^"]+)".*/\1/')
log_success "HIDDEN_HOST = $HIDDEN_HOST găsit"
else
log_error "HIDDEN_HOST LIPSEȘTE!"
fi
if grep -q '"HIDDEN_IP"' "$CONFIG_FILE"; then
HIDDEN_IP=$(grep '"HIDDEN_IP"' "$CONFIG_FILE" | sed -E 's/.*"HIDDEN_IP" = "([^"]+)".*/\1/')
log_success "HIDDEN_IP = $HIDDEN_IP găsit"
else
log_error "HIDDEN_IP LIPSEȘTE!"
fi
# Verifică modul utilizatorilor
echo ""
log_info "Verificare moduri utilizatori..."
if grep -A10 'Class {' "$CONFIG_FILE" | grep -q 'usermode = "+ix"'; then
log_success "Usermode +ix găsit în clase"
else
if grep -A10 'Class {' "$CONFIG_FILE" | grep -q 'usermode = "+i"'; then
log_warn "Usermode +i găsit (ar trebui să fie +ix)"
else
log_error "Niciun usermode +ix găsit!"
fi
fi
# Verifică placeholder-uri neînlocuite
echo ""
log_info "Verificare placeholder-uri..."
if grep -q "EOFCONFIG" "$CONFIG_FILE"; then
log_error "Placeholder-uri EOFCONFIG neînlocuite găsite:"
grep -n "EOFCONFIG" "$CONFIG_FILE" | head -5
fi
# Afișează setările features complete
echo ""
log_info "Secțiunea features actuală:"
echo -e "${GALBEN}────────────────────────────────────────${NC}"
sed -n '/^features {/,/^};$/p' "$CONFIG_FILE" | head -30
echo -e "${GALBEN}────────────────────────────────────────${NC}"
# Întrebă dacă să aplice reparațiile
echo ""
echo -e "${GALBEN}Vrei să aplic reparațiile automate? [y/N]:${NC}"
read -r apply_fixes
if [[ "$apply_fixes" =~ ^[Yy]$ ]]; then
echo ""
echo -e "${VERDE}═══ APLICARE REPARAȚII ═══${NC}"
# Backup
cp "$CONFIG_FILE" "$CONFIG_FILE.backup.hosthiding.$(date +%s)"
log_success "Backup creat"
# 1. Corectează placeholder-uri
if grep -q "EOFCONFIG" "$CONFIG_FILE"; then
log_info "Corectez placeholder-uri EOFCONFIG..."
sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_FILE"
sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_FILE"
sed -i "s|\\.EOFCONFIG_NETWORK|.underchat.org|g" "$CONFIG_FILE"
sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.underchat.org|g" "$CONFIG_FILE"
log_success "Placeholder-uri corectate"
fi
# 2. Setează HOST_HIDING_STYLE pentru format hexadecimal exact ca pe ns2.node-ase.ovh
log_info "Configurez HOST_HIDING_STYLE pentru format hexadecimal..."
# Elimină orice HOST_HIDING_STYLE existent
sed -i '/HOST_HIDING_STYLE/d' "$CONFIG_FILE"
# Adaugă HOST_HIDING_STYLE = "3" pentru format hexadecimal (ca pe ns2.node-ase.ovh)
sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "3";' "$CONFIG_FILE"
log_success "HOST_HIDING_STYLE setat la 3 (format hexadecimal)"
# 3. Setează HIDDEN_HOST pentru format .IP
log_info "Configurez HIDDEN_HOST pentru sufix .IP..."
# Elimină orice HIDDEN_HOST existent
sed -i '/HIDDEN_HOST/d' "$CONFIG_FILE"
# Adaugă HIDDEN_HOST cu sufix .IP (exact ca pe ns2.node-ase.ovh)
sed -i '/"HOST_HIDING_STYLE" = "3"/a\ "HIDDEN_HOST" = "users.underchat.org";' "$CONFIG_FILE"
sed -i '/"HIDDEN_HOST" = "users.underchat.org"/a\ "HIDDEN_IP" = "127.0.0.1";' "$CONFIG_FILE"
log_success "HIDDEN_HOST și HIDDEN_IP configurate"
# 4. Adaugă setări critice pentru ascunderea automată
log_info "Adaug setări pentru ascunderea automată la conectare..."
# Setările specifice pentru a replica comportamentul de pe ns2.node-ase.ovh
if ! grep -q '"HIDDEN_HOSTTYPE"' "$CONFIG_FILE"; then
sed -i '/"HIDDEN_IP" = "127.0.0.1"/a\ "HIDDEN_HOSTTYPE" = "3";' "$CONFIG_FILE"
fi
if ! grep -q '"AUTOCONNECT_MODE"' "$CONFIG_FILE"; then
sed -i '/"HIDDEN_HOSTTYPE" = "3"/a\ "AUTOCONNECT_MODE" = "+ix";' "$CONFIG_FILE"
fi
log_success "Setări pentru ascundere automată adăugate"
# 5. Asigură că toate clasele au usermode +ix pentru ascundere automată
log_info "Configurez toate clasele cu usermode +ix..."
# Înlocuiește orice usermode existent cu +ix în toate clasele
sed -i 's/usermode = "[^"]*"/usermode = "+ix"/' "$CONFIG_FILE"
log_success "Usermode +ix setat în toate clasele"
# 6. Verifică și adaugă setări pentru notificări WHOIS la operatori
log_info "Verificare și adăugare setări notificări WHOIS pentru operatori..."
if ! grep -q '"SPY_WHOIS"' "$CONFIG_FILE"; then
log_info "Adaug setări SPY_WHOIS pentru notificări complete..."
sed -i '/WHOIS_NOTICE.*TRUE/a\ "SPY_WHOIS" = "TRUE";\n "SNOMASK_OPERDEFAULT" = "1024";\n "SNOMASK_DEFAULT" = "1024";' "$CONFIG_FILE"
fi
if ! grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_FILE"; then
log_info "Adaug privilegii WHOIS pentru operatori..."
sed -i '/admin = yes/a\ snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' "$CONFIG_FILE"
fi
log_success "Setări pentru notificări WHOIS la operatori complete"
echo ""
echo -e "${VERDE}═══ TEST FINAL ═══${NC}"
# Test sintaxă
if [ -x "$PREFIX/bin/ircd" ]; then
log_info "Test sintaxă configurație..."
if "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" > /dev/null 2>&1; then
log_success "✓ Sintaxă configurație validă!"
else
log_error "✗ Erori în sintaxă găsite:"
"$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" 2>&1 | head -10
fi
fi
echo ""
echo -e "${VERDE}════════════════════════════════════════${NC}"
echo -e "${VERDE} REPARAȚII APLICATE!${NC}"
echo -e "${VERDE}════════════════════════════════════════${NC}"
echo ""
echo -e "${GALBEN}Pași următori:${NC}"
echo "1. Restart server: $PREFIX/bin/ircd restart"
echo "2. Conectează-te și testează: /mode nickname +x"
echo "3. Verifică cu /whois nickname"
echo ""
echo -e "${GALBEN}Dacă tot nu funcționează:${NC}"
echo "- Recompilează cu: make clean && make install"
echo "- Verifică support compilation cu: ./configure --help | grep hiding"
else
echo ""
log_info "Reparații anulate. Pentru aplicare manuală:"
echo ""
echo -e "${GALBEN}Setări necesare în features:${NC}"
echo ' "HOST_HIDING" = "TRUE";'
echo ' "HOST_HIDING_STYLE" = "1";'
echo ' "HIDDEN_HOST" = "users.underchat.org";'
echo ' "HIDDEN_IP" = "127.0.0.1";'
echo ""
echo -e "${GALBEN}În clase, usermode:${NC}"
echo ' usermode = "+ix";'
fi

View File

@ -1,222 +0,0 @@
#!/bin/bash
#
# Script specializat pentru repararea notificărilor WHOIS la operatori în UnderChat IRCd
# Limba: Română
#
# Culori
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; }
log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; }
log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; }
log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; }
echo -e "${ALBASTRU}"
echo "════════════════════════════════════════"
echo " Reparare Notificări WHOIS Operatori"
echo "════════════════════════════════════════"
echo -e "${NC}"
# Detectează PREFIX
if [ -n "$1" ]; then
PREFIX="$1"
elif [ -d "$HOME/ircd" ]; then
PREFIX="$HOME/ircd"
elif [ -d "/home/ircd/ircd" ]; then
PREFIX="/home/ircd/ircd"
else
log_error "Nu pot detecta directorul IRCd!"
echo "Utilizare: $0 [PREFIX_PATH]"
exit 1
fi
CONFIG_FILE="$PREFIX/etc/ircd.conf"
log_info "Folosesc PREFIX: $PREFIX"
log_info "Config file: $CONFIG_FILE"
if [ ! -f "$CONFIG_FILE" ]; then
log_error "Fișierul de configurare nu există: $CONFIG_FILE"
exit 1
fi
echo ""
echo -e "${GALBEN}═══ DIAGNOSTIC NOTIFICĂRI WHOIS ═══${NC}"
# Verifică setările actuale pentru notificări WHOIS
echo ""
log_info "Verificare setări notificări WHOIS actuale..."
# Verifică features
if grep -q '"OPER_WHOIS_PARANOIA" = "TRUE"' "$CONFIG_FILE"; then
log_success "OPER_WHOIS_PARANOIA = TRUE găsit"
else
log_error "OPER_WHOIS_PARANOIA = TRUE LIPSEȘTE!"
fi
if grep -q '"WHOIS_NOTICE" = "TRUE"' "$CONFIG_FILE"; then
log_success "WHOIS_NOTICE = TRUE găsit"
else
log_error "WHOIS_NOTICE = TRUE LIPSEȘTE!"
fi
if grep -q '"SPY_WHOIS" = "TRUE"' "$CONFIG_FILE"; then
log_success "SPY_WHOIS = TRUE găsit"
else
log_error "SPY_WHOIS = TRUE LIPSEȘTE (necesar pentru notificări complete)!"
fi
# Verifică snomask
if grep -q 'SNOMASK_OPERDEFAULT' "$CONFIG_FILE"; then
SNOMASK_OP=$(grep 'SNOMASK_OPERDEFAULT' "$CONFIG_FILE" | sed -E 's/.*"SNOMASK_OPERDEFAULT" = "([^"]+)".*/\1/')
log_success "SNOMASK_OPERDEFAULT = $SNOMASK_OP găsit"
else
log_error "SNOMASK_OPERDEFAULT LIPSEȘTE!"
fi
# Verifică operatori
echo ""
log_info "Verificare configurație operatori..."
if grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_FILE"; then
log_success "Privilegiul PRIV_WHOIS_NOTICE găsit pentru operatori"
else
log_error "Privilegiul PRIV_WHOIS_NOTICE LIPSEȘTE pentru operatori!"
fi
if grep -A5 'Operator {' "$CONFIG_FILE" | grep -q 'snomask'; then
SNOMASK_OPER=$(grep -A10 'Operator {' "$CONFIG_FILE" | grep 'snomask' | head -1)
log_success "Snomask pentru operatori găsit: $SNOMASK_OPER"
else
log_error "Snomask pentru operatori LIPSEȘTE!"
fi
# Verifică clasa Opers
echo ""
log_info "Verificare clasa Opers..."
if grep -A10 'name = "Opers"' "$CONFIG_FILE" | grep -q 'usermode = "+Wx"'; then
log_success "Usermode +Wx găsit în clasa Opers (corect pentru notificări)"
else
if grep -A10 'name = "Opers"' "$CONFIG_FILE" | grep -q 'usermode = "+W"'; then
log_warn "Usermode +W găsit (ar trebui să fie +Wx pentru notificări complete)"
else
log_error "Niciun usermode +W găsit în clasa Opers!"
fi
fi
# Afișează setările actuale
echo ""
log_info "Setări WHOIS actuale în features:"
echo -e "${GALBEN}────────────────────────────────────────${NC}"
grep -A20 'features {' "$CONFIG_FILE" | grep -E 'WHOIS|SNOMASK' | head -10
echo -e "${GALBEN}────────────────────────────────────────${NC}"
echo ""
log_info "Configurație operatori actuală:"
echo -e "${GALBEN}────────────────────────────────────────${NC}"
sed -n '/^Operator {/,/^};$/p' "$CONFIG_FILE" | head -15
echo -e "${GALBEN}────────────────────────────────────────${NC}"
# Întrebă dacă să aplice reparațiile
echo ""
echo -e "${GALBEN}Vrei să aplic reparațiile pentru notificări WHOIS? [y/N]:${NC}"
read -r apply_fixes
if [[ "$apply_fixes" =~ ^[Yy]$ ]]; then
echo ""
echo -e "${VERDE}═══ APLICARE REPARAȚII NOTIFICĂRI WHOIS ═══${NC}"
# Backup
cp "$CONFIG_FILE" "$CONFIG_FILE.backup.whois.$(date +%s)"
log_success "Backup creat"
# 1. Adaugă sau corectează features pentru WHOIS
log_info "Configurez features pentru notificări WHOIS..."
if ! grep -q '"SPY_WHOIS"' "$CONFIG_FILE"; then
log_info "Adaug SPY_WHOIS pentru notificări complete..."
sed -i '/"WHOIS_NOTICE" = "TRUE"/a\ "SPY_WHOIS" = "TRUE";' "$CONFIG_FILE"
fi
if ! grep -q '"SNOMASK_OPERDEFAULT"' "$CONFIG_FILE"; then
log_info "Adaug SNOMASK_OPERDEFAULT..."
sed -i '/"SPY_WHOIS" = "TRUE"/a\ "SNOMASK_OPERDEFAULT" = "1024";' "$CONFIG_FILE"
fi
if ! grep -q '"SNOMASK_DEFAULT"' "$CONFIG_FILE"; then
log_info "Adaug SNOMASK_DEFAULT..."
sed -i '/"SNOMASK_OPERDEFAULT"/a\ "SNOMASK_DEFAULT" = "1024";' "$CONFIG_FILE"
fi
log_success "Features WHOIS configurate"
# 2. Configurează operatorii cu privilegii WHOIS
log_info "Configurez operatorii cu privilegii WHOIS..."
if ! grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_FILE"; then
log_info "Adaug privilegii WHOIS pentru operatori..."
# Găsește secțiunea Operator și adaugă privilegiile
sed -i '/admin = yes/a\ snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' "$CONFIG_FILE"
fi
log_success "Privilegii WHOIS pentru operatori configurate"
# 3. Actualizează clasa Opers
log_info "Actualizez clasa Opers cu usermode +Wx..."
# Găsește și actualizează usermode în clasa Opers
sed -i '/name = "Opers"/,/}/ s/usermode = "[^"]*"/usermode = "+Wx"/' "$CONFIG_FILE"
log_success "Clasa Opers actualizată cu +Wx"
echo ""
echo -e "${VERDE}═══ TEST FINAL ═══${NC}"
# Test sintaxă
if [ -x "$PREFIX/bin/ircd" ]; then
log_info "Test sintaxă configurație..."
if "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" > /dev/null 2>&1; then
log_success "✓ Sintaxă configurație validă!"
else
log_error "✗ Erori în sintaxă găsite:"
"$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" 2>&1 | head -10
fi
fi
echo ""
echo -e "${VERDE}════════════════════════════════════════${NC}"
echo -e "${VERDE} NOTIFICĂRI WHOIS REPARATE!${NC}"
echo -e "${VERDE}════════════════════════════════════════${NC}"
echo ""
echo -e "${GALBEN}Pași următori:${NC}"
echo "1. Restart server: $PREFIX/bin/ircd restart"
echo "2. Fă-te operator: /oper username parola"
echo "3. Verifică că primești +W: /mode nickname"
echo "4. Testează: askă pe cineva să-ți dea /whois"
echo ""
echo -e "${VERDE}Ar trebui să primești notificarea:${NC}"
echo -e "${ALBASTRU}*** Notice: nickname (user@host) is doing a WHOIS on you${NC}"
else
echo ""
log_info "Reparații anulate. Pentru aplicare manuală:"
echo ""
echo -e "${GALBEN}Setări necesare în features:${NC}"
echo ' "OPER_WHOIS_PARANOIA" = "TRUE";'
echo ' "WHOIS_NOTICE" = "TRUE";'
echo ' "SPY_WHOIS" = "TRUE";'
echo ' "SNOMASK_OPERDEFAULT" = "1024";'
echo ""
echo -e "${GALBEN}În secțiunea Operator:${NC}"
echo ' snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";'
echo ' privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";'
echo ""
echo -e "${GALBEN}În clasa Opers:${NC}"
echo ' usermode = "+Wx";'
fi

View File

@ -1,304 +0,0 @@
#!/bin/bash
#
# Script de instalare automată UnderChat IRCd pentru Madrid.ES.EU.UnderChat.org
# Pre-configurat cu toate setările corecte
# Versiune: v1.0.6-madrid
#
set -e
# Culori
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${VERDE}[INFO]${NC} $1"; }
log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; }
log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; }
log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; }
echo -e "${ALBASTRU}"
echo "═══════════════════════════════════════════════"
echo " Instalare UnderChat IRCd - Madrid Server"
echo "═══════════════════════════════════════════════"
echo -e "${NC}"
# Setări pre-configurate pentru Madrid
PREFIX="$HOME/ircd"
MAXCON=4096
NETWORK_NAME="UnderChat.org"
SERVER_NAME="Madrid.ES.EU.UnderChat.org"
SERVER_DESC="The UnderChat.org Network - Madrid Node"
VHOST_IPV4="10.0.0.125"
SERVER_NUMERIC=1
ADMIN_LOCATION="Madrid, Spain"
ADMIN_CONTACT="admin@UnderChat.org"
OPER_USERNAME="Raducu"
OPER_PASSWORD="muiesteaua"
CLIENT_PORTS="6667"
SERVER_PORT=4400
log_info "Configurație Madrid:"
echo " → Rețea: $NETWORK_NAME"
echo " → Server: $SERVER_NAME"
echo " → IP: $VHOST_IPV4"
echo " → Port client: $CLIENT_PORTS"
echo " → Operator: $OPER_USERNAME"
echo ""
# Verifică dacă suntem în directorul corect
if [ ! -f "./configure" ]; then
log_error "Nu sunt în directorul ircu2! Rulează din directorul unde ai clonat repository-ul."
exit 1
fi
# Compilare
log_info "Pas 1/5: Configurare..."
./configure --prefix="$PREFIX" --with-maxcon=$MAXCON
log_info "Pas 2/5: Compilare..."
make clean
make
log_info "Pas 3/5: Instalare..."
make install
# Creare directoare
log_info "Pas 4/5: Creare structură directoare..."
mkdir -p "$PREFIX/lib"
mkdir -p "$PREFIX/etc"
mkdir -p "$PREFIX/log"
mkdir -p "$PREFIX/var"
# Generare configurație DIRECT fără placeholder-uri
log_info "Pas 5/5: Generare configurație Madrid..."
cat > "$PREFIX/lib/ircd.conf" << EOF
# Configurație UnderChat IRCd - Madrid.ES.EU.UnderChat.org
# Generat automat: $(date)
# Versiune: v1.0.6-madrid
General {
name = "$SERVER_NAME";
vhost = "$VHOST_IPV4";
description = "$SERVER_DESC";
numeric = $SERVER_NUMERIC;
dns server = "8.8.8.8";
dns server = "1.1.1.1";
};
Admin {
Location = "$NETWORK_NAME World";
Location = "$ADMIN_LOCATION";
Contact = "$ADMIN_CONTACT";
};
Class {
name = "Server";
pingfreq = 1 minutes 30 seconds;
connectfreq = 5 minutes;
maxlinks = 1;
sendq = 9000000;
};
Class {
name = "Local";
pingfreq = 1 minutes 30 seconds;
sendq = 160000;
maxlinks = 100;
usermode = "+iw";
};
Class {
name = "Other";
pingfreq = 1 minutes 30 seconds;
sendq = 160000;
maxlinks = 2048;
usermode = "+ix";
};
Class {
name = "Opers";
pingfreq = 1 minutes 30 seconds;
sendq = 160000;
maxlinks = 20;
local = no;
freeform = yes;
mode_lchan = yes;
deop_lchan = yes;
walk_lchan = yes;
show_invis = yes;
see_chan = yes;
list_chan = yes;
usermode = "+Wx";
remove = yes;
};
Client {
host = "*@*";
ip = "*@*";
class = "Other";
maxlinks = 6;
};
Jupe {
nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
nick = "StatServ,NoteServ";
nick = "ChanServ,ChanSaver";
nick = "NickServ,NickSaver";
};
Port {
vhost = "$VHOST_IPV4" $SERVER_PORT;
server = yes;
hidden = yes;
};
Port {
vhost = "$VHOST_IPV4" $CLIENT_PORTS;
hidden = yes;
};
Operator {
name = "$OPER_USERNAME";
password = "\$PLAIN\$$OPER_PASSWORD";
host = "*@*";
class = "Opers";
admin = yes;
hide_oper = no;
hide_channels = no;
snomask = "+s";
privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";
};
features {
"NETWORK" = "$NETWORK_NAME";
"DOMAINNAME" = "$NETWORK_NAME";
"LOG" = "SYSTEM" "FILE" "$PREFIX/log/ircd.log";
"LOG" = "SYSTEM" "LEVEL" "CRIT";
"HUB" = "FALSE";
"RELIABLE_CLOCK" = "FALSE";
"WALLOPS_OPER_ONLY" = "TRUE";
"NODNS" = "FALSE";
"NOIDENT" = "FALSE";
"CLIENT_FLOOD" = "1024";
"BUFFERPOOL" = "27000000";
"DEFAULTMAXSENDQLENGTH" = "40000";
"HOST_HIDING" = "TRUE";
"HOST_HIDING_STYLE" = "3";
"HIDDEN_HOST" = "users.$NETWORK_NAME";
"HIDDEN_IP" = "127.0.0.1";
"HIDDEN_HOSTTYPE" = "3";
"MAXCHANNELSPERUSER" = "60";
"CHANNELLEN" = "200";
"MAXBANS" = "50";
"NICKLEN" = "12";
"NICKNAMEHISTORYLENGTH" = "800";
"HANGONGOODLINK" = "300";
"HANGONRETRYDELAY" = "10";
"CONNECTTIMEOUT" = "90";
"PINGFREQUENCY" = "120";
"CONNECTFREQUENCY" = "600";
"MPATH" = "$PREFIX/lib/ircd.motd";
"RPATH" = "$PREFIX/lib/remote.motd";
"PPATH" = "$PREFIX/var/ircd.pid";
"CPATH" = "$PREFIX/lib/ircd.conf";
"HIS_STATS_u" = "FALSE";
"HIS_STATS_U" = "TRUE";
"HIS_WHOIS_SERVERNAME" = "TRUE";
"HIS_WHOIS_IDLETIME" = "TRUE";
"HIS_WHOIS_LOCALCHAN" = "TRUE";
"HIS_WHO_SERVERNAME" = "TRUE";
"HIS_WHO_HOPCOUNT" = "TRUE";
"HIS_NETSPLIT" = "TRUE";
"HIS_SERVERNAME" = "*.$NETWORK_NAME";
"HIS_SERVERINFO" = "The $NETWORK_NAME World";
"CHECK" = "TRUE";
"CHECK_EXTENDED" = "TRUE";
"MAX_CHECK_OUTPUT" = "1000";
"OPER_WHOIS_PARANOIA" = "TRUE";
"SETHOST" = "TRUE";
"NETWORK_REHASH" = "TRUE";
"HALFOPS" = "TRUE";
"CTCP_VERSIONING" = "FALSE";
"WHOIS_NOTICE" = "TRUE";
"SPY_WHOIS" = "TRUE";
"SNOMASK_OPERDEFAULT" = "1024";
"SNOMASK_DEFAULT" = "1024";
};
EOF
# MOTD
cat > "$PREFIX/lib/ircd.motd" << 'EOFMOTD'
╔═══════════════════════════════════════╗
║ Bine venit pe UnderChat IRCd! ║
║ Madrid.ES.EU.UnderChat.org ║
║ ║
║ Versiune: v1.0.6-madrid ║
║ ║
║ Pentru suport: #support ║
║ Website: https://underchat.org ║
╚═══════════════════════════════════════╝
🌟 UnderChat Network - Madrid Node
• Host hiding pentru protecția utilizatorilor
• Anti-spam și anti-flood protection
• Canale cu diverse moduri și opțiuni
Distracție plăcută pe UnderChat! 🎉
EOFMOTD
# Setare permisiuni
chmod 600 "$PREFIX/lib/ircd.conf"
cp "$PREFIX/lib/ircd.motd" "$PREFIX/etc/ircd.motd"
cp "$PREFIX/lib/ircd.conf" "$PREFIX/etc/ircd.conf"
# Test sintaxă
log_info "Test sintaxă configurație..."
if "$PREFIX/bin/ircd" -c -f "$PREFIX/lib/ircd.conf"; then
log_success "✓ Configurația este validă!"
else
log_error "✗ Erori în configurație - verifică manual"
exit 1
fi
echo ""
echo -e "${VERDE}"
echo "═══════════════════════════════════════════════"
echo " ✓ INSTALARE COMPLETĂ - Madrid Server!"
echo "═══════════════════════════════════════════════"
echo -e "${NC}"
echo ""
echo -e "${GALBEN}Configurație Madrid:${NC}"
echo " Server: $SERVER_NAME"
echo " IP: $VHOST_IPV4"
echo " Port: $CLIENT_PORTS"
echo " Config: $PREFIX/lib/ircd.conf"
echo ""
echo -e "${GALBEN}Pentru a porni serverul:${NC}"
echo " $PREFIX/bin/ircd"
echo ""
echo -e "${GALBEN}Pentru a te loga ca operator:${NC}"
echo " /oper $OPER_USERNAME $OPER_PASSWORD"
echo ""
log_success "Instalare Madrid completă! Pornește serverul acum!"

View File

@ -862,12 +862,16 @@ EOFCONFIG
sed -i "s|EOFCONFIG_OPER_USER|$oper_user|g" "$config_file" sed -i "s|EOFCONFIG_OPER_USER|$oper_user|g" "$config_file"
sed -i "s|EOFCONFIG_OPER_PASS|$oper_pass|g" "$config_file" sed -i "s|EOFCONFIG_OPER_PASS|$oper_pass|g" "$config_file"
# Setare HUB flag și CONNECT section # Setare HUB flag
if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then
sed -i 's|EOFCONFIG_HUB_SETTING|TRUE|g' "$config_file" sed -i 's|EOFCONFIG_HUB_SETTING|TRUE|g' "$config_file"
else
sed -i 's|EOFCONFIG_HUB_SETTING|FALSE|g' "$config_file"
fi
# Adaugă CONNECT section pentru HUB # Generare CONNECT section pentru link server-to-server (independent de HUB/LEAF)
HUB_CONNECT_BLOCK="# Conectare la HUB principal if [ "$HUB_CONFIG" = "yes" ]; then
HUB_CONNECT_BLOCK="# Conectare server-to-server
Connect { Connect {
name = \"$hub_name\"; name = \"$hub_name\";
host = \"$hub_host\"; host = \"$hub_host\";
@ -880,8 +884,7 @@ Connect {
sed -i "s|EOFCONFIG_HUB_CONNECT|$HUB_CONNECT_BLOCK|g" "$config_file" sed -i "s|EOFCONFIG_HUB_CONNECT|$HUB_CONNECT_BLOCK|g" "$config_file"
else else
sed -i 's|EOFCONFIG_HUB_SETTING|FALSE|g' "$config_file" sed -i 's|EOFCONFIG_HUB_CONNECT|# Niciun link server-to-server configurat|g' "$config_file"
sed -i 's|EOFCONFIG_HUB_CONNECT|# Server nu este HUB - fără connect|g' "$config_file"
fi fi
log_success "Fișier de configurare generat: $config_file" log_success "Fișier de configurare generat: $config_file"
@ -1127,22 +1130,34 @@ main() {
read -p " Este aceasta un server HUB? (y/n) [n]: " is_hub read -p " Este aceasta un server HUB? (y/n) [n]: " is_hub
is_hub=${is_hub:-n} is_hub=${is_hub:-n}
# Dacă e HUB, cere informații linking # Configurare LINK server-to-server (independent de HUB/LEAF)
if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then
echo "" echo ""
log_info "Configurare LINK la HUB principal" echo -e "${GALBEN}═══════════════════════════════════════${NC}"
echo -e "${GALBEN}CONFIGURARE LINK SERVER-TO-SERVER${NC}"
echo -e "${GALBEN}═══════════════════════════════════════${NC}"
echo ""
echo " Doriți să configurați un link către alt server IRC?"
echo " (Necesar pentru rețele cu multiple servere)"
echo "" echo ""
read -p " Nume HUB [hub.${network_name}]: " hub_name read -p " Configurare link server-to-server? (y/n) [n]: " configure_link
configure_link=${configure_link:-n}
if [ "$configure_link" = "y" ] || [ "$configure_link" = "Y" ]; then
echo ""
log_info "Configurare conexiune server-to-server"
echo ""
read -p " Nume server remote [hub.${network_name}]: " hub_name
hub_name=${hub_name:-hub.${network_name}} hub_name=${hub_name:-hub.${network_name}}
read -p " IP/Host HUB [192.168.1.100]: " hub_host read -p " IP/Host server remote [10.0.0.100]: " hub_host
hub_host=${hub_host:-192.168.1.100} hub_host=${hub_host:-10.0.0.100}
read -p " Port HUB [4400]: " hub_port read -p " Port server-to-server [4400]: " hub_port
hub_port=${hub_port:-4400} hub_port=${hub_port:-4400}
read -s -p " Parola linking: " hub_password read -s -p " Parola link server: " hub_password
echo "" echo ""
HUB_CONFIG="yes" HUB_CONFIG="yes"

View File

@ -1,34 +0,0 @@
#!/bin/bash
# Quick Install Script pentru Madrid Server
# Rulează pe serverul Madrid: bash <(curl -s https://gitlab.back.ro/underchat/ircu2/-/raw/main/quick-install-madrid.sh)
echo "╔═══════════════════════════════════════════════╗"
echo "║ UnderChat IRCd - Madrid Quick Install ║"
echo "╚═══════════════════════════════════════════════╝"
echo ""
# Cleanup
echo "[1/4] Cleanup instalări vechi..."
rm -rf ~/ircu2 ~/ircd
# Clone
echo "[2/4] Clonare repository..."
cd ~ && git clone https://gitlab.back.ro/underchat/ircu2.git
cd ~/ircu2
# Install
echo "[3/4] Instalare Madrid server..."
chmod +x install-madrid.sh
./install-madrid.sh
# Done
echo ""
echo "[4/4] ✓ Instalare completă!"
echo ""
echo "Pentru a porni serverul:"
echo " ~/ircd/bin/ircd"
echo ""
echo "Pentru verificare:"
echo " ps aux | grep ircd"
echo ""