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:
parent
dff9707dcd
commit
9e7d1add6d
|
|
@ -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!** 🚀
|
|
||||||
|
|
||||||
129
fix-aarch64.sh
129
fix-aarch64.sh
|
|
@ -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"
|
|
||||||
|
|
||||||
|
|
@ -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 ""
|
|
||||||
394
fix-config.sh
394
fix-config.sh
|
|
@ -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"
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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!"
|
|
||||||
|
|
||||||
41
install.sh
41
install.sh
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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 ""
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue