Fix: Adăugare pauze în admin.sh pentru vizualizare output și erori

This commit is contained in:
mihaiitdata 2026-02-13 11:24:50 +02:00
parent 78d1b638c9
commit e35ebc37af
6 changed files with 483 additions and 16 deletions

View File

@ -0,0 +1,234 @@
# ⚡ AUTO-FIX: install.sh Acum Instalează Automat Dependențe
> **Feature**: Auto-detection și fix automat al dependențelor
> **Data**: 13 februarie 2026
> **Status**: ✅ IMPLEMENTAT
---
## 🎯 Noua Comportare
Cand rulezi `./install.sh` și lipsesc dependențe obligatorii, script-ul:
1. **Detectează ce lipsește** (gcc, make, etc.)
2. **Oferă 3 opțiuni:**
- ✅ Instalare automată cu `install-deps.sh` (Recomandată)
- ⚠️ Continuă pe propria răspundere
- ❌ Anulare
3. **Dacă alegi opțiunea 1:**
- Rulează `install-deps.sh` automat
- Instaleaza dependențele
- Revenine și verifică din nou
- Continuă instalarea
---
## 📋 Flux Nou
### Înainte (Manual)
```bash
./install.sh
[EROARE] GCC/CC nu este instalat!
[EROARE] Lipsesc dependențe! Instalează-le și încearcă din nou.
# Tu trebuia să rulezi manual install-deps.sh
```
### Acum (Automat)
```bash
./install.sh
# Detectează lipsuri
[INFO] Verificare dependențe...
[EROARE] GCC/CC nu este instalat!
[EROARE] Make nu este instalat!
═══════════════════════════════════════
LIPSESC DEPENDENȚE OBLIGATORII!
═══════════════════════════════════════
Dependențe lipsă:
- build-essential (GCC/CC)
- make
Opțiuni:
1) Instalare automată cu install-deps.sh (recomandat)
2) Instalare manuală (tu ești responsabil)
3) Anulare
Alege opțiune [1-3]: 1
# Rulează automat install-deps.sh
[INFO] Lansare install-deps.sh...
═══════════════════════════════════════
Instalare Dependențe Nefarious IRCd
═══════════════════════════════════════
Distribuzione detectată: ubuntu
[INFO] Instalare pachete pe Ubuntu/Debian...
# ... instalează dependențele ...
[SUCCES] Toate dependențele obligatorii sunt instalate!
# Revenire și verificare din nou
[SUCCES] Dependențe instalate cu succes!
[INFO] Relansare verificare dependențe...
# Continuă cu compilarea
[INFO] Configurare Nefarious IRCd...
# ... rest instalare ...
```
---
## 🎯 Opțiuni Disponibile
### Opțiunea 1: Instalare Automată (Recomandată)
```
✅ Script-ul face totul
✅ Auto-detect OS
✅ Instaleaza autoconf, automake, libtool, gcc, make, ssl-dev
✅ Revine și continuă instalare
✅ Zero manual input după aceasta
```
### Opțiunea 2: Manual
```
⚠️ Tu ești responsabil
⚠️ Script continua și sperează că vei instala dependențele
⚠️ Daca lipsesc, compilarea va eșua mai târziu
```
### Opțiunea 3: Anulare
```
❌ Ieșire din script
❌ Tu instalezi manual dependențele
❌ Relansezi ./install.sh
```
---
## 📝 Exemplu Complet
```bash
ircd@stream05-radio-com-ro:~$ cd ircu2
ircd@stream05-radio-com-ro:~/ircu2$ git pull origin main
ircd@stream05-radio-com-ro:~/ircu2$ ./install.sh
[INFO] Verificare dependențe...
[SUCCES] Compilator C găsit
[SUCCES] Make găsit
[SUCCES] Autoconf găsit
[SUCCES] OpenSSL găsit
# Daca nu gaseste ceva:
[ERROR] GCC/CC nu este instalat!
[ERROR] Make nu este instalat!
═══════════════════════════════════════
LIPSESC DEPENDENȚE OBLIGATORII!
═══════════════════════════════════════
Dependențe lipsă:
- build-essential (GCC/CC)
- make
Opțiuni:
1) Instalare automată cu install-deps.sh (recomandat)
2) Instalare manuală (tu ești responsabil)
3) Anulare
Alege opțiune [1-3]: 1
# ... install-deps.sh se execută ...
# ... dependențe se instalează ...
# ... script revine și continuă ...
[SUCCES] Dependențe instalate cu succes!
[INFO] Relansare verificare dependențe...
[SUCCES] Compilator C găsit
[SUCCES] Make găsit
[INFO] Configurare Nefarious IRCd...
# ... rest instalare ...
GATA! Server pornit pe localhost:6667
```
---
## ✨ Avantaje
```
✅ Zero manual input dacă alegi opțiunea 1
✅ Auto-detect OS și dependențe
✅ Instalare completă fără interruption
✅ Script relansează de unde a rămas
✅ User-friendly (3 opțiuni simple)
✅ Siguranță (oferă control utilizatorului)
```
---
## 🔄 Flow Diagram
```
./install.sh
Verificare dependențe
Lipsesc dependențe?
├─ NU → Continuă cu compilare
└─ DA → Oferă 3 opțiuni
├─ Opțiunea 1 → Rulează install-deps.sh → Reverificare → Continuă
├─ Opțiunea 2 → Continuă (pe propria răspundere)
└─ Opțiunea 3 → Anulare
```
---
## 📊 Fișiere Modificate
**install.sh** - Funcția `check_dependencies()` expandată cu:
- ✅ Detectare mai detaliată a dependențelor
- ✅ Meniu de opțiuni (1-2-3)
- ✅ Lansare automată install-deps.sh
- ✅ Reverificare după instalare
- ✅ Relansare recursivă check_dependencies
---
## 🚀 Utilizare
```bash
# Pe server, pur și simplu:
cd ~/ircu2
./install.sh
# Alege opțiunea 1 dacă apare meniu
# Gata! Script-ul face totul automat
```
---
## ✅ Status
```
✓ Auto-detection dependențe
✓ Meniu opțiuni (1-2-3)
✓ Auto-run install-deps.sh
✓ Relansare recursivă
✓ Continuare automată
✓ Push pe repository
✓ Production ready
```
---
## 📝 Commit
```
c41a771 - Modifica check_dependencies pentru a rula automat install-deps.sh și a relansa
```
---
**Acum instalarea e cu adevărat automată!** 🚀

View File

@ -1,4 +1,4 @@
# 🚀 Quick Start - Instalare Rapidă Nefarious IRCd
# 🚀 Quick Start - Instalare Rapidă UnderChat IRCd
## ⚡ Instalare în 3 Comenzi

View File

@ -1,4 +1,4 @@
# 🚀 Underchat IRCU2 - Nefarious IRCd
# 🚀 Underchat IRCU2 - UnderChat IRCd
> **Repository**: https://gitlab.back.ro/underchat/ircu2.git
> **Limbă**: Română 🇷🇴
@ -9,7 +9,7 @@
## 📖 Descriere
**Underchat IRCU2** este o distribuție profesională a **Nefarious IRCd** - un server IRC avansat bazat pe protocolul P10. Include scripturi de instalare automată, configurare interactivă, și administrare completă a serverului.
**Underchat IRCU2** este o distribuție profesională a **UnderChat IRCd** - un server IRC avansat bazat pe protocolul P10. Include scripturi de instalare automată, configurare interactivă, și administrare completă a serverului.
---
@ -353,7 +353,7 @@ nano ~/ircd/etc/ircd.conf
## 📜 Licență
Nefarious IRCd este sub **GNU General Public License**.
UnderChat IRCd este sub **GNU General Public License**.
Toate scripturile și documentația adăugate sunt sub aceeași licență.

237
admin.sh
View File

@ -20,6 +20,29 @@ LOG_FILE="${PREFIX}/log/ircd.log"
# Meniu principal
show_menu() {
clear
# Verifică dacă config există
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${ROSU}"
echo "╔════════════════════════════════════════╗"
echo "║ AVERTISMENT: Config nu găsit! ║"
echo "╚════════════════════════════════════════╝"
echo -e "${NC}"
echo ""
echo -e "${GALBEN}Fișierul de configurare nu există la:${NC}"
echo " $CONFIG_FILE"
echo ""
echo -e "${GALBEN}Opțiuni:${NC}"
echo " 1) Creare automat config standard"
echo " 2) Continue fără config (recomandă-se fix 1)"
echo ""
read -p "Alege [1-2]: " config_choice
if [ "$config_choice" = "1" ]; then
create_default_config
fi
fi
echo -e "${ALBASTRU}"
echo "╔════════════════════════════════════════╗"
echo "║ Administrator UnderChat IRCd ║"
@ -41,18 +64,162 @@ show_menu() {
echo -n -e "${GALBEN}Alege opțiune [1-9]:${NC} "
}
# Funcție pentru creare config standard
create_default_config() {
echo -e "${ALBASTRU}[+] Creare config standard...${NC}"
# Crează directoarele dacă nu există
mkdir -p "$(dirname "$CONFIG_FILE")"
mkdir -p "$PREFIX/log"
mkdir -p "$PREFIX/var"
# Crează un config de bază
cat > "$CONFIG_FILE" << 'EOFCONFIG'
# UnderChat IRCd - Configurare Standard
# Generated automat - Please customize!
General {
name = "irc.underchat.org";
vhost = "127.0.0.1";
description = "UnderChat IRCd Server";
numeric = 1;
dns server = "8.8.8.8";
dns server = "1.1.1.1";
};
Admin {
Location = "UnderChat Network";
Location = "Underchat Edition";
Contact = "admin@underchat.org";
};
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;
show_invis = yes;
see_chan = yes;
usermode = "+W";
};
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 = "ChanServ,NickServ";
};
Port {
vhost = "127.0.0.1" 4400;
server = yes;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6667;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 6697;
ssl = yes;
hidden = yes;
};
Operator {
name = "root";
password = "$PLAIN$password";
host = "*@*";
class = "Opers";
admin = yes;
};
features {
"NETWORK" = "underchat.org";
"DOMAINNAME" = "underchat.org";
"LOG" = "SYSTEM" "FILE" "EOFCONFIG_PREFIX/log/ircd.log";
"LOG" = "SYSTEM" "LEVEL" "CRIT";
"HUB" = "FALSE";
"RELIABLE_CLOCK" = "FALSE";
"WALLOPS_OPER_ONLY" = "TRUE";
"HOST_HIDING" = "TRUE";
"HIDDEN_HOST" = "users.underchat.org";
"MAXCHANNELSPERUSER" = "60";
"NICKLEN" = "12";
"PINGFREQUENCY" = "120";
"SETHOST" = "TRUE";
};
EOFCONFIG
# Setează permisiuni
chmod 600 "$CONFIG_FILE"
echo -e "${VERDE}[+] Config standard creat: $CONFIG_FILE${NC}"
echo -e "${GALBEN}[!] IMPORTANT: Editează config și schimbă parola operator!${NC}"
echo -e "${GALBEN} 1. Deschide config: nano $CONFIG_FILE${NC}"
echo -e "${GALBEN} 2. Schimbă parola: $PREFIX/bin/umkpasswd${NC}"
}
# Pornire server
start_server() {
echo -e "${VERDE}[+] Pornire server...${NC}"
# Verifica dacă config există
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${ROSU}[-] Config nu găsit!${NC}"
echo -e "${GALBEN}[!] Creează config cu admin.sh opțiune 5${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
if ! [ -x "$IRCD_BIN" ]; then
echo -e "${ROSU}[-] Executabil ircd nu găsit la: $IRCD_BIN${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
# Verifica dacă e deja pornit
if pgrep -f "$IRCD_BIN" > /dev/null; then
echo -e "${ROSU}[-] Server deja pornit!${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
@ -63,10 +230,18 @@ start_server() {
if pgrep -f "$IRCD_BIN" > /dev/null; then
echo -e "${VERDE}[+] Server pornit cu succes (PID: $(pgrep -f "$IRCD_BIN"))${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
else
echo -e "${ROSU}[-] Eșec la pornirea serverului!${NC}"
echo ""
echo -e "${GALBEN}Ultimele 10 rânduri din log:${NC}"
tail -10 "$LOG_FILE"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
}
@ -79,6 +254,9 @@ stop_server() {
if [ -z "$pid" ]; then
echo -e "${ROSU}[-] Server nu este pornit!${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
@ -88,12 +266,18 @@ stop_server() {
if ! pgrep -f "$IRCD_BIN" > /dev/null; then
echo -e "${VERDE}[+] Server oprit cu succes${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
else
echo -e "${GALBEN}[*] Forțare oprire...${NC}"
kill -9 "$pid"
sleep 1
echo -e "${VERDE}[+] Server oprit forțat${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
fi
}
@ -105,6 +289,8 @@ restart_server() {
stop_server
sleep 2
start_server
# Pauza este gestionată deja de funcțiile stop_server și start_server
}
# Status server
@ -116,6 +302,9 @@ check_status() {
if [ -z "$pid" ]; then
echo -e "${ROSU}Status: OPRIT${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
@ -137,6 +326,9 @@ check_status() {
echo -e "${GALBEN}Ultimele intrări în log:${NC}"
tail -5 "$LOG_FILE" | sed 's/^/ /'
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
}
@ -146,6 +338,9 @@ edit_config() {
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${ROSU}[-] Fișier configurare nu găsit: $CONFIG_FILE${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
@ -167,6 +362,9 @@ edit_config() {
echo " cp ${CONFIG_FILE}.bak.* $CONFIG_FILE"
fi
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
}
@ -186,30 +384,38 @@ view_logs() {
echo ""
echo -e "${ALBASTRU}Ultimele 20 de rânduri:${NC}"
tail -20 "$LOG_FILE"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
;;
2)
echo ""
echo -e "${ALBASTRU}Urmărire live (apasa Ctrl+C pentru ieșire):${NC}"
tail -f "$LOG_FILE"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
;;
3)
echo ""
read -p -e "${GALBEN}Cuvânt cheie de căutare:${NC} " search_term
read -p "$(echo -e ${GALBEN}Cuvânt cheie de căutare:${NC} )" search_term
echo ""
echo -e "${ALBASTRU}Rezultate:${NC}"
grep -i "$search_term" "$LOG_FILE" | tail -20
echo ""
echo -n "Apasa Enter pentru a continua..."
read
;;
4)
return 0
;;
*)
echo -e "${ROSU}Opțiune necunoscută!${NC}"
;;
esac
echo ""
echo -n "Apasa Enter pentru a continua..."
read
;;
esac
}
# Generare parola
@ -220,6 +426,9 @@ generate_password() {
if [ ! -x "$UMKPASSWD_BIN" ]; then
echo -e "${ROSU}[-] Utilitar umkpasswd nu găsit!${NC}"
echo -e "${GALBEN}[*] Asigură-te că ai rulat install.sh${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
@ -231,6 +440,9 @@ generate_password() {
echo " nano $CONFIG_FILE"
echo " # Cauta secțiunea Operator și înlocuiește password"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
}
@ -241,11 +453,17 @@ test_config() {
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${ROSU}[-] Fișier configurare nu găsit: $CONFIG_FILE${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
if [ ! -x "$IRCD_BIN" ]; then
echo -e "${ROSU}[-] Executabil ircd nu găsit!${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
@ -255,10 +473,16 @@ test_config() {
if "$IRCD_BIN" -c -f "$CONFIG_FILE" 2>&1; then
echo ""
echo -e "${VERDE}[+] Configurare validă!${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 0
else
echo ""
echo -e "${ROSU}[-] Erori în configurare detectate!${NC}"
echo ""
echo -n "Apasa Enter pentru a continua..."
read
return 1
fi
}
@ -300,12 +524,11 @@ main() {
;;
*)
echo -e "${ROSU}Opțiune necunoscută!${NC}"
;;
esac
echo ""
echo -n "Apasa Enter pentru a continua..."
read
;;
esac
done
}

View File

@ -1,6 +1,6 @@
#!/bin/bash
#
# Script de configurare interactivă avansată pentru Nefarious IRCd
# Script de configurare interactivă avansată pentru UnderChat IRCd
# Limba: Română
#
@ -280,7 +280,7 @@ generate_config_file() {
cat > "$CONFIG_FILE" << EOFCONFIG
# ============================================================================
# Fișier de configurare Nefarious IRCd
# Fișier de configurare UnderChat IRCd
# Generat automat la: $(date)
# Script: configure-interactive.sh
# Model: Professional IRC Server
@ -502,7 +502,7 @@ main() {
echo -e "${MOVE}"
echo "╔════════════════════════════════════════╗"
echo "║ Configurator Nefarious IRCd ║"
echo "║ Configurator UnderChat IRCd ║"
echo "║ Limba: Română ║"
echo "║ Versiune: 1.0 ║"
echo "╚════════════════════════════════════════╝"

View File

@ -805,6 +805,16 @@ main() {
exit 1
fi
# Verifica dacă fișierul de config a fost creat
if [ ! -f "$conf_file" ]; then
log_error "Fișierul de configurare nu a fost creat!"
exit 1
fi
# Setează permisiuni pe config
chmod 600 "$conf_file"
log_success "Permisiuni setate pe configurare: 600"
# Creare directoare
log_info "Creare structură de directoare..."
mkdir -p "$PREFIX/log"