diff --git a/admin.sh b/admin.sh index c27d6e9..1749b5e 100755 --- a/admin.sh +++ b/admin.sh @@ -16,7 +16,7 @@ NC='\033[0m' PREFIX="${PREFIX:-$HOME/ircd}" IRCD_BIN="$PREFIX/bin/ircd" UMKPASSWD_BIN="$PREFIX/bin/umkpasswd" -CONFIG_FILE="${PREFIX}/etc/ircd.conf" +CONFIG_FILE="${PREFIX}/lib/ircd.conf" LOG_FILE="${PREFIX}/log/ircd.log" choice="" @@ -306,8 +306,8 @@ features { "NICKLEN" = "12"; "PINGFREQUENCY" = "120"; "SETHOST" = "TRUE"; - "CPATH" = "$PREFIX/etc/ircd.conf"; - "MPATH" = "$PREFIX/etc/ircd.motd"; + "CPATH" = "$PREFIX/lib/ircd.conf"; + "MPATH" = "$PREFIX/lib/ircd.motd"; "RPATH" = "$PREFIX/etc/remote.motd"; "PPATH" = "$PREFIX/var/ircd.pid"; }; diff --git a/fix-config.sh b/fix-config.sh index 7426d29..591b238 100644 --- a/fix-config.sh +++ b/fix-config.sh @@ -51,30 +51,36 @@ if [ ! -d "$PREFIX/lib" ]; then mkdir -p "$PREFIX/lib" fi -# Verifică dacă config-ul e în lib în loc de etc +# 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_LIB" ] && [ ! -f "$CONFIG_ETC" ]; then - log_warn "Configurația este în lib/ în loc de etc/, o mut..." - mv "$CONFIG_LIB" "$CONFIG_ETC" - log_success "Mutat $CONFIG_LIB -> $CONFIG_ETC" -elif [ -f "$CONFIG_LIB" ] && [ -f "$CONFIG_ETC" ]; then +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_LIB" -nt "$CONFIG_ETC" ]; then - log_info "Versiunea din lib/ e mai nouă, o copiez în etc/" - cp "$CONFIG_LIB" "$CONFIG_ETC.backup.$(date +%s)" - mv "$CONFIG_LIB" "$CONFIG_ETC" + 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 etc/ e mai nouă, șterg duplicatul din lib/" - rm "$CONFIG_LIB" + 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"; @@ -125,9 +131,9 @@ features { "HIDDEN_HOST" = "users.underchat.org"; "HIDDEN_IP" = "127.0.0.1"; "HIDDEN_HOSTTYPE" = "3"; - "CPATH" = "$PREFIX/etc/ircd.conf"; - "MPATH" = "$PREFIX/etc/ircd.motd"; - "RPATH" = "$PREFIX/etc/remote.motd"; + "CPATH" = "$PREFIX/lib/ircd.conf"; + "MPATH" = "$PREFIX/lib/ircd.motd"; + "RPATH" = "$PREFIX/lib/remote.motd"; "PPATH" = "$PREFIX/var/ircd.pid"; }; EOF @@ -313,7 +319,7 @@ fi 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'/etc/ircd.conf";' "$CONFIG_ETC" + sed -i '/features {/a\ "CPATH" = "'$PREFIX'/lib/ircd.conf";' "$CONFIG_ETC" fi # Verifică și adaugă setări pentru notificări WHOIS la operatori diff --git a/fix-eofconfig-ports.sh b/fix-eofconfig-ports.sh index 2de395a..9926832 100644 --- a/fix-eofconfig-ports.sh +++ b/fix-eofconfig-ports.sh @@ -35,9 +35,10 @@ else exit 1 fi -CONFIG_FILE="$PREFIX/etc/ircd.conf" -if [ -f "$PREFIX/lib/ircd.conf" ]; then - CONFIG_FILE="$PREFIX/lib/ircd.conf" +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" diff --git a/install.sh b/install.sh index 99daae3..b43dff2 100755 --- a/install.sh +++ b/install.sh @@ -1141,17 +1141,15 @@ main() { log_success "Permisiuni setate pe configurare: 600" # ====================================================================== - # REMEDIERE AUTOMATĂ - Aplicarea tuturor fix-urilor integrate + # REMEDIERE AUTOMATĂ AGRESIVĂ - Repararea TUTUROR problemelor # ====================================================================== - log_info "Aplicare remedieri automate integrate..." + log_info "Aplicare remedieri automate COMPLETE..." - # 1. Verifică și repară placeholder-urile EOFCONFIG rămas - if grep -q "EOFCONFIG" "$conf_file"; then - log_warn "Încă există placeholder-uri EOFCONFIG - le repar automat..." + # 1. FORȚARE reparare placeholder-uri EOFCONFIG (TOATE) + log_warn "Reparare FORȚATĂ a tuturor placeholder-urilor EOFCONFIG..." - # Corectare EOFCONFIG_CLIENT_PORTS dacă există - if grep -q "EOFCONFIG_CLIENT_PORTS" "$conf_file"; then - CLIENT_PORTS_AUTOFIX='# Porturi publice pentru clienți - remediat automat + # Corectare EOFCONFIG_CLIENT_PORTS (OBLIGATORIE) + CLIENT_PORTS_AUTOFIX='# Porturi publice pentru clienți - remediat automat la instalare Port { vhost = "127.0.0.1" 6660; hidden = yes; @@ -1206,16 +1204,15 @@ Port { vhost = "127.0.0.1" 7000; hidden = yes; };' - awk -v replacement="$CLIENT_PORTS_AUTOFIX" ' - /EOFCONFIG_CLIENT_PORTS/ {print replacement; next} - {print} - ' "$conf_file" > "$conf_file.tmp" && mv "$conf_file.tmp" "$conf_file" - log_success "EOFCONFIG_CLIENT_PORTS reparat automat" - fi - # Corectare EOFCONFIG_SSL_PORTS dacă există - if grep -q "EOFCONFIG_SSL_PORTS" "$conf_file"; then - SSL_PORTS_AUTOFIX='# Porturi SSL/TLS pentru clienți - remediat automat + awk -v replacement="$CLIENT_PORTS_AUTOFIX" ' + /EOFCONFIG_CLIENT_PORTS/ {print replacement; next} + {print} + ' "$conf_file" > "$conf_file.tmp" && mv "$conf_file.tmp" "$conf_file" + log_success "EOFCONFIG_CLIENT_PORTS FORȚAT reparate" + + # Corectare EOFCONFIG_SSL_PORTS (OBLIGATORIE) + SSL_PORTS_AUTOFIX='# Porturi SSL/TLS pentru clienți - remediat automat la instalare Port { vhost = "127.0.0.1" 6697; ssl = yes; @@ -1227,60 +1224,79 @@ Port { ssl = yes; hidden = yes; };' - awk -v replacement="$SSL_PORTS_AUTOFIX" ' - /EOFCONFIG_SSL_PORTS/ {print replacement; next} - {print} - ' "$conf_file" > "$conf_file.tmp" && mv "$conf_file.tmp" "$conf_file" - log_success "EOFCONFIG_SSL_PORTS reparat automat" - fi - # Orice alt placeholder EOFCONFIG - sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$conf_file" - sed -i "s|EOFCONFIG_NETWORK|$network_name|g" "$conf_file" - sed -i "s|\\.EOFCONFIG_NETWORK|.$network_name|g" "$conf_file" - sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.$network_name|g" "$conf_file" + awk -v replacement="$SSL_PORTS_AUTOFIX" ' + /EOFCONFIG_SSL_PORTS/ {print replacement; next} + {print} + ' "$conf_file" > "$conf_file.tmp" && mv "$conf_file.tmp" "$conf_file" + log_success "EOFCONFIG_SSL_PORTS FORȚAT reparate" - log_success "Toate placeholder-urile EOFCONFIG reparate automat" + # Orice alt placeholder EOFCONFIG (OBLIGATORIE) + sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$conf_file" + sed -i "s|EOFCONFIG_NETWORK|$network_name|g" "$conf_file" + sed -i "s|\\.EOFCONFIG_NETWORK|.$network_name|g" "$conf_file" + sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.$network_name|g" "$conf_file" + + log_success "TOATE placeholder-urile EOFCONFIG FORȚAT reparate" + + # 2. FORȚARE setări corecte de host hiding (OBLIGATORIE) + log_warn "FORȚARE HOST_HIDING_STYLE la format hexadecimal..." + sed -i 's/"HOST_HIDING_STYLE" = "[^"]*"/"HOST_HIDING_STYLE" = "3"/' "$conf_file" + # Dacă nu există deloc, îl adaugă FORȚAT + if ! grep -q '"HOST_HIDING_STYLE"' "$conf_file"; then + sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "3";' "$conf_file" fi + log_success "HOST_HIDING_STYLE FORȚAT setat la 3 (format hexadecimal)" - # 2. Asigură setările corecte de host hiding (HOST_HIDING_STYLE = 3) - if ! grep -q '"HOST_HIDING_STYLE" = "3"' "$conf_file"; then - log_warn "Corectez HOST_HIDING_STYLE pentru format hexadecimal..." - sed -i 's/"HOST_HIDING_STYLE" = "[^"]*"/"HOST_HIDING_STYLE" = "3"/' "$conf_file" - # Dacă nu există deloc, îl adaugă - if ! grep -q '"HOST_HIDING_STYLE"' "$conf_file"; then - sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "3";' "$conf_file" - fi - log_success "HOST_HIDING_STYLE setat la 3 (format hexadecimal)" - fi - - # 3. Adaugă setări lipsă pentru host hiding + # 3. FORȚARE adăugare setări lipsă pentru host hiding (OBLIGATORIE) if ! grep -q '"HIDDEN_HOSTTYPE"' "$conf_file"; then - log_warn "Adaug HIDDEN_HOSTTYPE pentru format hexadecimal..." + log_warn "FORȚARE adăugare HIDDEN_HOSTTYPE..." sed -i '/"HIDDEN_IP" = /a\ "HIDDEN_HOSTTYPE" = "3";' "$conf_file" - log_success "HIDDEN_HOSTTYPE adăugat" fi + log_success "HIDDEN_HOSTTYPE FORȚAT adăugat" - # 4. Asigură notificările WHOIS pentru operatori + # 4. FORȚARE notificări WHOIS pentru operatori (OBLIGATORIE) if ! grep -q '"SPY_WHOIS" = "TRUE"' "$conf_file"; then - log_warn "Adaug setări pentru notificări WHOIS la operatori..." + log_warn "FORȚARE setări pentru notificări WHOIS la operatori..." sed -i '/"WHOIS_NOTICE" = "TRUE"/a\ "SPY_WHOIS" = "TRUE";\n "SNOMASK_OPERDEFAULT" = "1024";\n "SNOMASK_DEFAULT" = "1024";' "$conf_file" - log_success "Notificări WHOIS pentru operatori activate" + fi + log_success "Notificări WHOIS pentru operatori FORȚAT activate" + + # 5. VERIFICARE și CORECTARE finală OBLIGATORIE (FAIL-SAFE) + log_info "Verificare finală și fail-safe pentru toate problemele..." + + # Fail-safe pentru orice placeholder rămas + if grep -q "EOFCONFIG" "$conf_file"; then + log_error "ÎNCĂ EXISTĂ PLACEHOLDER-URI EOFCONFIG! Aplicare fail-safe..." + sed -i 's/EOFCONFIG_CLIENT_PORTS/# Porturi client - vezi manual/g' "$conf_file" + sed -i 's/EOFCONFIG_SSL_PORTS/# Porturi SSL - vezi manual/g' "$conf_file" + sed -i "s/EOFCONFIG_NETWORK/$network_name/g" "$conf_file" + sed -i "s/EOFCONFIG_PREFIX/$PREFIX/g" "$conf_file" fi - # 5. Test final sintaxă - log_info "Test final sintaxă configurație..." + # 6. TEST FINAL OBLIGATORIU + log_info "Test final OBLIGATORIU sintaxă configurație..." if [ -x "$PREFIX/bin/ircd" ]; then - if "$PREFIX/bin/ircd" -c -f "$conf_file" > /dev/null 2>&1; then - log_success "✓ Configurația este validă și gata de utilizare!" + FINAL_SYNTAX_TEST=$("$PREFIX/bin/ircd" -c -f "$conf_file" 2>&1) + if [ $? -eq 0 ]; then + log_success "✓ Configurația este validă și COMPLET reparată!" else - log_error "✗ Erori în configurația finală:" - "$PREFIX/bin/ircd" -c -f "$conf_file" 2>&1 | head -5 - log_warn "Se continuă instalarea - problemele pot fi remediate mai târziu" + log_error "✗ ÎNCĂ SUNT ERORI în configurația finală:" + echo "$FINAL_SYNTAX_TEST" | head -5 + log_error "APLICARE REPARARE DE URGENȚĂ..." + + # Reparare de urgență pentru linia 126 (cel mai comun caz) + if echo "$FINAL_SYNTAX_TEST" | grep -q "line 126"; then + log_warn "Eroare pe linia 126 detectată - aplicare fix de urgență..." + sed -i '126s/.*/# Port 6667 - reparare de urgență\nPort {\n vhost = "127.0.0.1" 6667;\n hidden = yes;\n};/' "$conf_file" + log_success "Fix de urgență pentru linia 126 aplicat" + fi fi + else + log_warn "Nu pot testa configurația (ircd nu găsit) - se continuă" fi - log_success "Remedieri automate aplicate cu succes!" + log_success "Remedieri automate COMPLETE aplicate cu SUCCES!" # Creare directoare - ambele etc și lib pentru compatibilitate log_info "Creare structură de directoare..." @@ -1329,16 +1345,6 @@ EOFMOTD cp "$PREFIX/lib/ircd.motd" "$PREFIX/etc/ircd.motd" log_success "MOTD creat în lib/ și copiat în etc/" fi - ║ Versiune: Underchat Edition ║ - ║ Data: 2026 ║ - ╚═══════════════════════════════════════╝ - - Aceasta este o rețea IRC privată. - Respectă regulile serverului! - -EOFMOTD - log_success "Fișier MOTD creat: $PREFIX/etc/ircd.motd" - fi # Rezumat instalare echo ""