From 4851d9c5007235236debdca8f07595272a76d403 Mon Sep 17 00:00:00 2001 From: mihaiitdata Date: Sat, 14 Feb 2026 20:10:59 +0200 Subject: [PATCH] FINAL PUSH v1.5.0 - PSEUDO + SPOOFHOST complete --- CRULE_EXPLAINED.md | 473 +++++++++++++++++++++++++++++ CRULE_QUICK_START.md | 387 ++++++++++++++++++++++++ PSEUDO_EXPLAINED.md | 656 ++++++++++++++++++++++++++++++++++++++++ README.md | 4 +- REBRAND_v1.3.0.md | 391 ++++++++++++++++++++++++ SPOOFHOST_EXPLAINED.md | 631 ++++++++++++++++++++++++++++++++++++++ URGENT_UPDATE_v1.5.0.md | 103 +++++++ cleanup-and-push.ps1 | 62 ---- install.sh | 443 +++++++++++++++++++++++++-- push_log.txt | Bin 0 -> 6218 bytes push_v1.5.0.py | 111 +++++++ push_v1.5.0.sh | 59 ++++ test-params.sh | 51 ---- test-umkpasswd.sh | 0 14 files changed, 3229 insertions(+), 142 deletions(-) create mode 100644 URGENT_UPDATE_v1.5.0.md delete mode 100644 cleanup-and-push.ps1 create mode 100644 push_log.txt create mode 100644 push_v1.5.0.py create mode 100644 push_v1.5.0.sh delete mode 100644 test-params.sh delete mode 100644 test-umkpasswd.sh diff --git a/CRULE_EXPLAINED.md b/CRULE_EXPLAINED.md index e69de29..4c32e96 100644 --- a/CRULE_EXPLAINED.md +++ b/CRULE_EXPLAINED.md @@ -0,0 +1,473 @@ +# CRULE - Connection Rules (Reguli de Conectare) + +## 📋 CE ESTE CRULE? + +**CRULE** (Connection Rule) este un **sistem de reguli inteligente** care controlează **CÂND și CUM** serverul tău IRC se poate conecta la alte servere din rețea. + +Este parte a sistemului **SmartRoute** - un mecanism avansat de routing pentru rețele IRC mari. + +--- + +## 🎯 SCOPUL PRINCIPAL + +CRULE permite administratorilor să definească **condiții** sub care o conexiune server-to-server: +- ✅ **Este permisă** (dacă regulile sunt îndeplinite) +- ❌ **Este blocată** (dacă regulile nu sunt îndeplinite) + +### **Exemplu simplu:** +*"Nu te conecta la un server din Europa dacă există deja o conexiune către un alt server european"* + +--- + +## 🔧 CÂND SE FOLOSEȘTE? + +### **Scenarii comune:** + +#### 1. **Previne Link-uri Redundante** +``` +Problema: Ai 2 servere US și 2 servere EU +Vrei: Doar 1 link US-EU, nu 4! + +Soluție CRULE: "connected(*eu.*)" +→ Dacă există deja un server EU conectat, nu mai face alte link-uri +``` + +#### 2. **Preferă Anumite Route** +``` +Problema: Vrei ca Manhattan să gestioneze link-urile către Europa, nu Boston +Vrei: Boston să se conecteze doar dacă Manhattan nu e disponibil + +Soluție CRULE: "!via(manhattan.*, *eu.*)" +→ Blochează Boston dacă există deja link EU prin Manhattan +``` + +#### 3. **Control Autoconnect vs Manual** +``` +Problema: Autoconnect-ul e prea agresiv, dar vrei să lași operatorii să forțeze +Vrei: Autoconnect blocat, dar /CONNECT manual permis + +Soluție CRULE: d-line (overrideable by opers) +→ Autoconnect blocat, dar operatorii pot forța cu /CONNECT +``` + +#### 4. **Necesită Operator Online** +``` +Problema: Vrei să eviți route-uri riscante când nu e nimeni să monitorizeze +Vrei: Conectare la servere "riscante" doar când un oper e online + +Soluție CRULE: "!directop()" +→ Blochează dacă NU există un operator conectat direct +``` + +--- + +## 📝 SINTAXA CRULE + +### **În ircd.conf:** + +```conf +CRule { + server = "nume.server.ro"; + all = yes; # yes = aplică la TOATE conectările + # no = doar la autoconnect (overrideable) + rule = "expresie"; # Regula propriu-zisă +}; +``` + +### **Parametri:** + +| Parametru | Valori | Descriere | +|-----------|--------|-----------| +| `server` | "*.domain" | Server-ul la care se aplică regula (wildcard permis) | +| `all` | `yes` / `no` | **yes** = Blochează TOATE (inclusiv /CONNECT manual)
**no** = Blochează doar autoconnect | +| `rule` | "expresie" | Expresia logică care definește condiția | + +--- + +## 🔍 FUNCȚII DISPONIBILE + +### **1. connected(targetmask)** + +**Ce face:** Verifică dacă există un server conectat care se potrivește cu masca + +**Sintaxă:** `connected("*.eu.*")` + +**Exemplu:** +```conf +CRule { + server = "madrid.es.eu.underchat.org"; + all = no; + rule = "connected(*.eu.*)"; +}; +``` +**Efect:** Blochează autoconnect la Madrid dacă există DEJA un alt server EU conectat. + +--- + +### **2. directcon(targetmask)** + +**Ce face:** Verifică dacă există un server **DIRECT conectat** (nu prin intermediar) care se potrivește cu masca + +**Sintaxă:** `directcon("*.us.*")` + +**Exemplu:** +```conf +CRule { + server = "boston.ma.us.underchat.org"; + all = yes; + rule = "directcon(*.us.*)"; +}; +``` +**Efect:** Blochează TOATE conectările la Boston dacă există deja un server US conectat **direct** la serverul curent. + +--- + +### **3. via(viamask, targetmask)** + +**Ce face:** Verifică dacă un server (targetmask) este conectat **PRIN** un alt server (viamask) + +**Sintaxă:** `via("manhattan.*", "*.eu.*")` + +**Exemplu:** +```conf +CRule { + server = "*.eu.*"; + all = no; + rule = "via(manhattan.*, *.eu.*)"; +}; +``` +**Efect:** Blochează autoconnect la servere EU dacă există deja un server EU conectat PRIN Manhattan. + +--- + +### **4. directop()** + +**Ce face:** Verifică dacă există un **operator** conectat **direct** la serverul curent + +**Sintaxă:** `directop()` + +**Exemplu:** +```conf +CRule { + server = "risky.server.net"; + all = no; + rule = "!directop()"; +}; +``` +**Efect:** Blochează autoconnect la `risky.server.net` dacă **NU** există un operator online (pentru monitorizare). + +--- + +## 🧮 OPERATORI LOGICI + +### **1. NOT (negare) - `!`** + +```conf +rule = "!connected(*.eu.*)"; +``` +**Înseamn:** "dacă **NU** există un server EU conectat" + +### **2. AND (și) - `&&`** + +```conf +rule = "connected(*.eu.*) && !directcon(*.eu.*)"; +``` +**Înseamnă:** "dacă există un server EU conectat **ȘI** nu e conectat direct" + +### **3. OR (sau) - `||`** + +```conf +rule = "connected(*.eu.*) || connected(*.asia.*)"; +``` +**Înseamnă:** "dacă există un server EU conectat **SAU** un server Asia conectat" + +### **4. Paranteze pentru grupare - `()`** + +```conf +rule = "connected(*.eu.*) && (!directcon(*.eu.*) || via(manhattan.*, *.eu.*))"; +``` +**Înseamnă:** "dacă există EU conectat **ȘI** (**nu** e direct **SAU** e prin Manhattan)" + +--- + +## 💡 EXEMPLE PRACTICE + +### **Exemplu 1: Previne Link-uri Multiple către Europa** + +```conf +# Pe server US: Boston +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org)"; +}; +``` +**Efect:** +- ✅ Prima conexiune la un server EU → **PERMISĂ** +- ❌ A doua conexiune la alt server EU → **BLOCATĂ** (autoconnect) +- ✅ Operator poate forța cu `/CONNECT madrid.es.eu.underchat.org` + +--- + +### **Exemplu 2: Preferă Manhattan pentru Link-uri EU** + +```conf +# Pe server US: Boston +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org) && (!directcon(*.eu.underchat.org) || via(manhattan.*, *.eu.underchat.org))"; +}; +``` +**Efect:** +- Dacă există deja un server EU conectat: + - ❌ Boston nu se mai conectează (lasă Manhattan să gestioneze) + - Excepție: Dacă Boston DEJA are link EU direct, îl păstrează + +--- + +### **Exemplu 3: Necesită Operator pentru Route-uri Riscante** + +```conf +# Link către server nesigur +CRule { + server = "experimental.test.org"; + all = no; + rule = "!directop()"; +}; +``` +**Efect:** +- ❌ Autoconnect blocat dacă **NU** există oper online +- ✅ Dacă un oper e online, autoconnect **PERMIS** +- ✅ Oper poate forța manual oricând cu `/CONNECT` + +--- + +### **Exemplu 4: Permite doar 1 Link per Continent** + +```conf +# Reguli pentru un HUB global +CRule { + server = "*.eu.*"; + all = no; + rule = "connected(*.eu.*)"; +}; + +CRule { + server = "*.asia.*"; + all = no; + rule = "connected(*.asia.*)"; +}; + +CRule { + server = "*.us.*"; + all = no; + rule = "connected(*.us.*)"; +}; +``` +**Efect:** +- Maxim 1 link către fiecare continent +- Previne "mesh" complet (prea multe conexiuni) + +--- + +## ⚙️ DIFERENȚA ÎNTRE `all = yes` și `all = no` + +### **`all = yes` (D-line în conf vechi)** + +```conf +CRule { + server = "*.eu.*"; + all = yes; + rule = "connected(*.eu.*)"; +}; +``` +**Blochează:** +- ❌ Autoconnect +- ❌ `/CONNECT` de la operatori +- ❌ Conexiuni incoming de la alte servere + +**Folosit pentru:** Reguli **ABSOLUTE** care nu trebuie niciodată încălcate + +--- + +### **`all = no` (d-line în conf vechi)** + +```conf +CRule { + server = "*.eu.*"; + all = no; + rule = "connected(*.eu.*)"; +}; +``` +**Blochează:** +- ❌ Autoconnect + +**PERMITE:** +- ✅ `/CONNECT` manual de la operatori +- ✅ Conexiuni incoming de la alte servere + +**Folosit pentru:** Reguli de **OPTIMIZARE** care pot fi override-uite manual + +--- + +## 🔧 CONFIGURARE ÎN ircd.conf + +### **Exemplu Complet:** + +```conf +# ============================================================================ +# SECȚIUNE: CRULE - Reguli de Conectare Inteligente +# ============================================================================ + +# Regula 1: Previne link-uri redundante către Europa +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org)"; +}; + +# Regula 2: Preferă Manhattan pentru link-uri EU (Boston backup) +CRule { + server = "madrid.es.eu.underchat.org"; + all = no; + rule = "via(manhattan.*, *.eu.underchat.org)"; +}; + +# Regula 3: Link-uri experimentale doar cu oper online +CRule { + server = "experimental.*.underchat.org"; + all = no; + rule = "!directop()"; +}; + +# Regula 4: Nu permite NICIODATĂ link către servere blacklist +CRule { + server = "*.blacklisted.net"; + all = yes; + rule = "connected(*)"; # Întotdeauna blocat +}; +``` + +--- + +## 📊 VERIFICARE ȘI DEBUGGING + +### **Comenzi IRC pentru testare:** + +```irc +# Vezi toate regulile configurate +/STATS d + +# Vezi doar regulile absolute (all = yes) +/STATS D + +# Testează o conexiune (ca operator) +/CONNECT madrid.es.eu.underchat.org +``` + +### **Output `/STATS d` exemplu:** + +``` +:server 242 nick D madrid.es.eu.underchat.org::connected(*.eu.*) +:server 242 nick d experimental.*.underchat.org::!directop() +``` + +- **D** (majusculă) = `all = yes` (absolute) +- **d** (minusculă) = `all = no` (overrideable) + +--- + +## 🎯 AVANTAJE CRULE + +### ✅ **1. Control Granular** +Definești exact CÂND și CUM se fac conexiunile, nu doar "poate sau nu poate". + +### ✅ **2. Optimizare Topologie** +Previne "mesh" complet (toate serverele conectate între ele) care poate cauza lag și probleme de routing. + +### ✅ **3. Reducere Costuri** +Link-urile internationale costă trafic → CRULE limitează link-urile redundante. + +### ✅ **4. Siguranță** +Poate preveni conexiuni nedorite sau periculoase automat. + +### ✅ **5. Flexibilitate** +Operatorii pot override-ui regulile `all = no` când e necesar. + +--- + +## 🚨 CÂND NU TREBUIE FOLOSIT + +### ❌ **Rețele mici (< 5 servere)** +Overhead-ul de configurare nu merită pentru rețele mici. + +### ❌ **Topologie simplă** +Dacă ai doar 2-3 servere într-o linie, CRULE e overkill. + +### ❌ **Fără operatori experimentați** +Regulile complexe pot bloca conexiuni necesare dacă sunt configurate greșit. + +--- + +## 🎓 TUTORIAL: Primul Tău CRULE + +### **Scenariul:** +- Ai 2 servere US: `boston.us` și `newyork.us` +- Ai 2 servere EU: `madrid.eu` și `paris.eu` +- Vrei: Doar 1 link US-EU (nu 4!) + +### **Soluția:** + +**Pe fiecare server US, adaugă:** +```conf +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org)"; +}; +``` + +**Pe fiecare server EU, adaugă:** +```conf +CRule { + server = "*.us.underchat.org"; + all = no; + rule = "connected(*.us.underchat.org)"; +}; +``` + +**Rezultat:** +- ✅ Prima conexiune US-EU → Permisă (ex: boston-madrid) +- ❌ A doua conexiune US-EU → Blocată automat (ex: newyork-paris) +- ✅ Dacă prima conexiune cade, a doua devine activă automat + +--- + +## 📚 RESURSE SUPLIMENTARE + +- **Documentație completă:** `doc/readme.crules` +- **Cod sursă:** `ircd/crule.c` +- **Exemple config:** `ircd/test/ircd-t1.conf` +- **RFC IRC:** Nu există standard oficial, e specific Undernet/Nefarious + +--- + +## 🎯 CONCLUZIE + +**CRULE = SmartRoute pentru IRC** + +În loc să definești doar: +- ❌ "Poate să se conecteze la X?" + +Poți defini: +- ✅ "Poate să se conecteze la X **DACĂ** Y și Z sunt îndeplinite?" + +Este un sistem **puternic** dar **complex** - folosește-l doar dacă ai nevoie de control granular asupra topologiei rețelei! + +--- + +**Data:** 14 Februarie 2026 +**Versiune:** 1.0 +**Pentru:** UnderChat IRCd v1.3.1+ + diff --git a/CRULE_QUICK_START.md b/CRULE_QUICK_START.md index e69de29..c9c7aa5 100644 --- a/CRULE_QUICK_START.md +++ b/CRULE_QUICK_START.md @@ -0,0 +1,387 @@ +# Ghid Rapid: Configurare CRULE pentru Rețea EU + US + +## 🎯 Scenariul Tău + +**Ai:** +- Servere în **Europa** (EU) +- Servere în **SUA** (US) + +**Vrei:** +- Optimizare topologie rețea +- Prevenire link-uri redundante +- Reducere costuri trafic + +--- + +## 🚀 QUICK START + +### **Pasul 1: Upgrade la v1.4.0** + +```bash +cd ~/ircu2 +git pull origin main +git fetch --tags +git checkout v1.4.0 +``` + +### **Pasul 2: Rulează instalarea** + +```bash +./install.sh +``` + +### **Pasul 3: La configurare** + +Când ajungi la această secțiune: + +``` +═══════════════════════════════════════ +CONFIGURARE CRULE (Reguli Conexiune) +═══════════════════════════════════════ + +CRULE permite optimizarea topologiei rețelei IRC. +Previne link-uri redundante între servere. + +Exemplu: Dacă ai servere în EU și US, CRULE poate +limita la 1 singur link EU-US în loc de multiple. + +Configurare CRULE pentru optimizare rețea? (y/n) [n]: +``` + +**Răspunde:** `y` + +### **Pasul 4: Alege opțiunea** + +``` +Selectați tipul de optimizare: +1) Previne link-uri redundante către o regiune (recomandat) +2) Necesită operator online pentru link-uri +3) Ambele (1+2) +4) Custom (configurare manuală ulterior) + +Opțiune [1]: +``` + +**Pentru rețea EU + US, alege:** `1` + +### **Pasul 5: Configurează pattern-ul** + +``` +Regiune/pattern de blocat (ex: *.eu.*, *.us.*, *.asia.*) [*.eu.*]: +``` + +--- + +## 📋 CONFIGURĂRI RECOMANDATE + +### **Opțiunea A: Pe servere US - Blochează EU redundante** + +``` +Opțiune: 1 +Pattern: *.eu.* +``` + +**Rezultat în ircd.conf:** +```conf +# Previne link-uri redundante către *.eu.* +CRule { + server = "*.eu.*"; + all = no; + rule = "connected(*.eu.*)"; +}; +``` + +**Efect:** +- ✅ Prima conexiune US→EU: **PERMISĂ** +- ❌ A doua conexiune US→EU: **BLOCATĂ** (autoconnect) +- ✅ Operatorii pot forța cu `/CONNECT` dacă e nevoie + +--- + +### **Opțiunea B: Pe servere EU - Blochează US redundante** + +``` +Opțiune: 1 +Pattern: *.us.* +``` + +**Rezultat în ircd.conf:** +```conf +# Previne link-uri redundante către *.us.* +CRule { + server = "*.us.*"; + all = no; + rule = "connected(*.us.*)"; +}; +``` + +**Efect:** +- ✅ Prima conexiune EU→US: **PERMISĂ** +- ❌ A doua conexiune EU→US: **BLOCATĂ** (autoconnect) + +--- + +### **Opțiunea C: Configurare avansată (pentru experți)** + +Dacă vrei control mai precis, alege opțiunea `3` (Ambele): + +``` +Opțiune: 3 +Regiune de blocat: *.eu.underchat.org +Pattern servere care necesită oper: *.test.underchat.org +``` + +**Rezultat:** +```conf +# Previne link-uri redundante către *.eu.underchat.org +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org)"; +}; + +# Necesită operator online pentru *.test.underchat.org +CRule { + server = "*.test.underchat.org"; + all = no; + rule = "!directop()"; +}; +``` + +--- + +## 🎯 EXEMPLE PRACTICE + +### **Exemplu 1: Rețea simplă (2 EU + 2 US)** + +**Topologie:** +- US: `boston.us.underchat.org`, `newyork.us.underchat.org` +- EU: `madrid.es.underchat.org`, `paris.fr.underchat.org` + +**Configurare:** + +**Pe TOATE serverele US:** +```conf +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org)"; +}; +``` + +**Pe TOATE serverele EU:** +```conf +CRule { + server = "*.us.underchat.org"; + all = no; + rule = "connected(*.us.underchat.org)"; +}; +``` + +**Rezultat:** +- Link-uri permise: 1 US-EU (ex: boston-madrid) +- Link-uri blocate: toate celelalte US-EU autoconnect +- **Economie:** De la 4 link-uri la 1 link! + +--- + +### **Exemplu 2: Rețea complexă (3 regiuni)** + +**Topologie:** +- US: 2 servere +- EU: 2 servere +- Asia: 1 server + +**Configurare pe fiecare server:** + +```conf +# Previne redundanță către US +CRule { + server = "*.us.underchat.org"; + all = no; + rule = "connected(*.us.underchat.org)"; +}; + +# Previne redundanță către EU +CRule { + server = "*.eu.underchat.org"; + all = no; + rule = "connected(*.eu.underchat.org)"; +}; + +# Previne redundanță către Asia +CRule { + server = "*.asia.underchat.org"; + all = no; + rule = "connected(*.asia.underchat.org)"; +}; +``` + +**Rezultat:** +- Maxim 1 link între orice 2 regiuni +- Topologie optimizată: US-EU, EU-Asia, US-Asia +- **Economie:** De la 10+ link-uri la 3 link-uri! + +--- + +## 🔧 VERIFICARE DUPĂ CONFIGURARE + +### **1. Verifică config-ul:** + +```bash +grep -A 5 "CRule {" /home/ircd/ircd/lib/ircd.conf +``` + +**Output așteptat:** +```conf +# Previne link-uri redundante către *.eu.* +CRule { + server = "*.eu.*"; + all = no; + rule = "connected(*.eu.*)"; +}; +``` + +### **2. Pornește serverul:** + +```bash +/home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf +``` + +### **3. Verifică din IRC:** + +```irc +# Ca operator, conectează-te: +/OPER username password + +# Vezi regulile CRULE: +/STATS d + +# Output: +:server 242 nick d *.eu.*::connected(*.eu.*) +``` + +### **4. Testează funcționarea:** + +```bash +# Prima conexiune către EU: +/CONNECT madrid.es.underchat.org 4400 + +# Încearcă a doua conexiune către alt server EU: +/CONNECT paris.fr.underchat.org 4400 + +# Ar trebui să vezi: +:server NOTICE nick :Connection to paris.fr.underchat.org denied by connection rule +``` + +--- + +## 💡 TIPS & TRICKS + +### **Tip 1: Override manual când e nevoie** + +Dacă ai setat `all = no` (implicit), operatorii pot forța: + +```irc +# Forțează conexiunea (override CRULE): +/QUOTE CONNECT madrid.es.underchat.org 4400 +``` + +### **Tip 2: Pattern-uri flexibile** + +```conf +# Blochează toate serverele .eu.underchat.org: +server = "*.eu.underchat.org"; + +# Blochează doar Spania: +server = "*.es.eu.underchat.org"; + +# Blochează toate EXCEPT unul: +server = "*.eu.underchat.org"; +rule = "connected(*.eu.underchat.org) && !connected(madrid.*)"; +``` + +### **Tip 3: Combinație cu preferințe** + +```conf +# Preferă Manhattan pentru EU, altfel blochează: +CRule { + server = "*.eu.*"; + all = no; + rule = "connected(*.eu.*) && !via(manhattan.*, *.eu.*)"; +}; +``` + +--- + +## 🚨 TROUBLESHOOTING + +### **Problemă: CRULE nu apare în config** + +**Cauză:** Ai răspuns `n` la întrebarea despre CRULE sau ai folosit versiune veche. + +**Soluție:** +```bash +git checkout v1.4.0 +./install.sh +# Răspunde 'y' la CRULE +``` + +### **Problemă: Toate conexiunile sunt blocate** + +**Cauză:** Regula e prea strictă sau `all = yes`. + +**Soluție:** +```bash +nano /home/ircd/ircd/lib/ircd.conf +# Editează CRule: schimbă 'all = yes' în 'all = no' +# SAU comentează regula cu # +``` + +### **Problemă: Vreau să editez manual CRULE** + +**Soluție:** +```bash +nano /home/ircd/ircd/lib/ircd.conf + +# Caută secțiunea CRULE și modifică: +CRule { + server = "*.eu.*"; + all = no; + rule = "connected(*.eu.*)"; +}; + +# Restart IRCd: +killall ircd +/home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf +``` + +--- + +## 📚 DOCUMENTAȚIE COMPLETĂ + +Pentru detalii avansate, vezi: +- **CRULE_EXPLAINED.md** - Explicație completă CRULE +- **doc/readme.crules** - Documentație originală +- **ircd/test/*.conf** - Exemple de configurări + +--- + +## 🎯 CONCLUZIE + +Cu **CRULE configurat corect**, rețeaua ta EU + US va avea: + +✅ **Topologie optimizată** - Nu mai ai link-uri redundante +✅ **Costuri reduse** - Mai puțin trafic internațional +✅ **Control granular** - Poți override când e nevoie +✅ **Routing eficient** - Mesajele circulă optim + +**Timpul de configurare:** ~2 minute +**Economie:** De la 4+ link-uri la 1-2 link-uri optimizate! + +--- + +**Versiune:** 1.0 +**Data:** 14 Februarie 2026 +**Pentru:** UnderChat IRCd v1.4.0+ + diff --git a/PSEUDO_EXPLAINED.md b/PSEUDO_EXPLAINED.md index e69de29..7691c06 100644 --- a/PSEUDO_EXPLAINED.md +++ b/PSEUDO_EXPLAINED.md @@ -0,0 +1,656 @@ +# PSEUDO - Comenzi Alias către Servicii IRC + +## 📋 CE ESTE PSEUDO? + +**Pseudo** este un sistem de **comenzi alias** implementate la nivel de server care permit utilizatorilor să trimită mesaje către **servicii IRC** (bots) folosind **comenzi simple** în loc de `/MSG serviciu comandă`. + +Este o funcționalitate de **confort pentru utilizatori** care face interacțiunea cu serviciile mai intuitivă și mai ușoară. + +--- + +## 🎯 SCOP + +### **Problema FĂRĂ Pseudo:** + +Utilizatorii trebuie să știe: +1. Numele exact al serviciului (ex: `X`, `AuthServ`, `ChanServ`) +2. Serverul unde rulează (ex: `channels.undernet.org`) +3. Sintaxa comenzii (ex: `/MSG X@channels.undernet.org LOGIN user pass`) + +**Exemplu complicat:** +```irc +/MSG X@channels.undernet.org LOGIN myuser mypassword +/MSG AuthServ@services.underchat.org HELP +/MSG ChanServ@services.underchat.org REGISTER #mychannel +``` + +### **Soluția CU Pseudo:** + +Utilizatorii scriu doar: +```irc +/LOGIN myuser mypassword +/AUTHSERV +/CHANSERV REGISTER #mychannel +``` + +**Mai simplu, mai intuitiv!** ✅ + +--- + +## 🔧 CUM FUNCȚIONEAZĂ? + +### **Mecanismul:** + +1. **User scrie:** `/CHANSERV REGISTER #mychannel` +2. **Server transformă:** `/MSG ChanServ@services.underchat.org REGISTER #mychannel` +3. **Server trimite** mesajul către serviciul corect +4. **Serviciul răspunde** utilizatorului + +Este un **alias transparent** - utilizatorul nu știe că în spate se trimite un `/MSG`. + +--- + +## 📝 SINTAXĂ ÎN ircd.conf + +### **Formatul de bază:** + +```conf +Pseudo "COMANDĂ" { + name = "NumeServiciu"; + nick = "serviciu@server.domain.org"; +}; +``` + +### **Parametri:** + +| Parametru | Obligatoriu | Descriere | +|-----------|-------------|-----------| +| `"COMANDĂ"` | ✅ DA | Comanda pe care o scriu utilizatorii (ex: `/CHANSERV`) | +| `name` | ✅ DA | Numele serviciului (folosit în mesaje de eroare) | +| `nick` | ✅ DA | Nick@Server al serviciului destinație | +| `prepend` | ❌ NU | Text de adăugat ÎNAINTEA mesajului utilizatorului | +| `defaulttext` | ❌ NU | Text trimis dacă utilizatorul NU furnizează text | + +--- + +## 💡 EXEMPLE PRACTICE + +### **Exemplu 1: Alias simplu pentru ChanServ** + +```conf +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; +``` + +**Utilizare:** +```irc +# User scrie: +/CHANSERV REGISTER #mychannel + +# Server transformă în: +/MSG ChanServ@services.underchat.org REGISTER #mychannel +``` + +--- + +### **Exemplu 2: Alias cu PREPEND (adaugă text înainte)** + +```conf +Pseudo "LOGIN" { + name = "X"; + prepend = "LOGIN "; + nick = "X@channels.undernet.org"; +}; +``` + +**Utilizare:** +```irc +# User scrie: +/LOGIN myuser mypassword + +# Server transformă în: +/MSG X@channels.undernet.org LOGIN myuser mypassword +# ^^^^^^ ADĂUGAT AUTOMAT! +``` + +**Avantaj:** Utilizatorul nu mai trebuie să scrie `LOGIN` de două ori! + +--- + +### **Exemplu 3: Alias cu DEFAULT TEXT** + +```conf +Pseudo "AUTHSERV" { + name = "AuthServ"; + nick = "AuthServ@services.underchat.org"; + defaulttext = "HELP"; +}; +``` + +**Utilizare:** +```irc +# User scrie doar comanda, fără parametri: +/AUTHSERV + +# Server transformă în: +/MSG AuthServ@services.underchat.org HELP +# ^^^^ ADĂUGAT AUTOMAT! + +# User poate și să furnizeze text: +/AUTHSERV STATUS + +# Server transformă în: +/MSG AuthServ@services.underchat.org STATUS +``` + +**Avantaj:** Dacă utilizatorul uită să adauge parametri, se trimite automat `HELP`! + +--- + +### **Exemplu 4: Serviciu cu MULTIPLE SERVER-e (failover)** + +```conf +Pseudo "X" { + name = "X"; + nick = "X@channels.underchat.org"; + nick = "X@backup.underchat.org"; + nick = "X@services.underchat.org"; +}; +``` + +**Funcționare:** +- Serverul încearcă să găsească serviciul pe `channels.underchat.org` +- Dacă NU există, încearcă `backup.underchat.org` +- Dacă NU există, încearcă `services.underchat.org` +- **Ultimul listat are prioritate cea mai mare!** + +--- + +## 🎓 CAZURI DE UTILIZARE COMUNE + +### **1. Servicii Anope/Atheme** + +```conf +# NickServ +Pseudo "NICKSERV" { + name = "NickServ"; + nick = "NickServ@services.underchat.org"; +}; + +# ChanServ +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; + +# MemoServ +Pseudo "MEMOSERV" { + name = "MemoServ"; + nick = "MemoServ@services.underchat.org"; +}; + +# OperServ +Pseudo "OPERSERV" { + name = "OperServ"; + nick = "OperServ@services.underchat.org"; +}; +``` + +**Utilizare:** +```irc +/NICKSERV REGISTER password email@domain.com +/CHANSERV REGISTER #mychannel +/MEMOSERV SEND nick Your message here +/OPERSERV AKILL ADD *@badhost.com Bad user +``` + +--- + +### **2. Bot de Autentificare (X/W/Q)** + +```conf +# Login rapid la X +Pseudo "LOGIN" { + name = "X"; + prepend = "LOGIN "; + nick = "X@channels.underchat.org"; +}; + +# Logout +Pseudo "LOGOUT" { + name = "X"; + prepend = "LOGOUT"; + nick = "X@channels.underchat.org"; + defaulttext = ""; # Nu trimite nimic extra +}; + +# WhoisX +Pseudo "WHOIS" { + name = "X"; + prepend = "WHOIS "; + nick = "X@channels.underchat.org"; +}; +``` + +**Utilizare:** +```irc +/LOGIN myuser mypassword +/LOGOUT +/WHOIS someuser +``` + +--- + +### **3. Bot Custom (ex: GameBot, StatBot)** + +```conf +# GameBot - comenzi jocuri +Pseudo "GAME" { + name = "GameBot"; + nick = "GameBot@games.underchat.org"; + defaulttext = "HELP"; +}; + +# StatBot - statistici rețea +Pseudo "STATS" { + name = "StatBot"; + nick = "StatBot@stats.underchat.org"; + defaulttext = "NETWORK"; +}; +``` + +**Utilizare:** +```irc +/GAME # Trimite "HELP" automat +/GAME START poker # Trimite "START poker" +/STATS # Trimite "NETWORK" automat +/STATS USER nickname # Trimite "USER nickname" +``` + +--- + +## ⚙️ CONFIGURARE ÎN ircd.conf + +### **Exemplu Complet pentru UnderChat:** + +```conf +# ============================================================================ +# SECȚIUNE: PSEUDO - Alias-uri Comenzi pentru Servicii +# ============================================================================ + +# NickServ - Înregistrare și management nickname-uri +Pseudo "NICKSERV" { + name = "NickServ"; + nick = "NickServ@services.underchat.org"; +}; + +# Alias NS pentru NickServ (scurtătură) +Pseudo "NS" { + name = "NickServ"; + nick = "NickServ@services.underchat.org"; +}; + +# ChanServ - Management canale +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; + +# Alias CS pentru ChanServ +Pseudo "CS" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; + +# MemoServ - Mesaje offline +Pseudo "MEMOSERV" { + name = "MemoServ"; + nick = "MemoServ@services.underchat.org"; +}; + +# Alias MS pentru MemoServ +Pseudo "MS" { + name = "MemoServ"; + nick = "MemoServ@services.underchat.org"; +}; + +# OperServ - Comenzi operatori +Pseudo "OPERSERV" { + name = "OperServ"; + nick = "OperServ@services.underchat.org"; +}; + +# Alias OS pentru OperServ +Pseudo "OS" { + name = "OperServ"; + nick = "OperServ@services.underchat.org"; +}; + +# AuthServ - Autentificare +Pseudo "AUTHSERV" { + name = "AuthServ"; + nick = "AuthServ@services.underchat.org"; + defaulttext = "HELP"; +}; + +# LOGIN - Scurtătură pentru autentificare rapidă +Pseudo "LOGIN" { + name = "AuthServ"; + prepend = "LOGIN "; + nick = "AuthServ@services.underchat.org"; +}; + +# IDENTIFY - Alternativă pentru autentificare +Pseudo "IDENTIFY" { + name = "NickServ"; + prepend = "IDENTIFY "; + nick = "NickServ@services.underchat.org"; +}; +``` + +--- + +## 🔍 VERIFICARE ȘI TESTARE + +### **1. Verifică configurația:** + +```bash +grep -A 3 'Pseudo "' /home/ircd/ircd/lib/ircd.conf +``` + +**Output așteptat:** +```conf +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; +-- +Pseudo "NICKSERV" { + name = "NickServ"; + nick = "NickServ@services.underchat.org"; +}; +``` + +### **2. Testează în IRC:** + +```irc +# Conectează-te la server +/SERVER madrid.es.eu.underchat.org 6667 + +# Testează comanda Pseudo +/CHANSERV HELP + +# Ar trebui să primești răspuns de la ChanServ +# (dacă serviciile sunt active) +``` + +### **3. Debug (dacă nu funcționează):** + +```irc +# Verifică dacă serviciul este conectat +/WHOIS ChanServ + +# Dacă vezi ceva ca: +# ChanServ is ChanServ@services.underchat.org * Channel Service +# → Serviciul este activ + +# Dacă vezi: +# No such nick/channel +# → Serviciul NU este conectat (problema e la Anope/Atheme) +``` + +--- + +## 📊 AVANTAJE vs DEZAVANTAJE + +### ✅ **AVANTAJE:** + +1. **Ușurință utilizare** - Comenzi intuitive pentru utilizatori +2. **Consistență** - Toate serviciile au aceeași sintaxă +3. **Failover** - Poate încerca multiple servere +4. **Scurtături** - `/LOGIN` în loc de `/MSG X@server LOGIN` +5. **Defaulturi inteligente** - Poate trimite `HELP` automat +6. **Backward compatible** - `/MSG` tradițional tot funcționează + +### ⚠️ **DEZAVANTAJE:** + +1. **Configurare necesară** - Trebuie configurat manual în ircd.conf +2. **Dependență de servicii** - Dacă serviciile cad, Pseudo nu ajută +3. **Conflict posibil** - Dacă un user are nick-ul `CHANSERV`, poate crea confuzie +4. **Nu verifică sintaxă** - Doar relay-uiește mesajul, nu validează + +--- + +## 🚨 CAZURI SPECIALE + +### **Caz 1: Serviciul nu răspunde** + +```conf +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; +``` + +**Dacă serviciul NU este conectat:** +```irc +/CHANSERV HELP +# Output: +:server NOTICE nick :Service ChanServ is currently down. Please try again later. +``` + +### **Caz 2: Multiple nick-uri (failover)** + +```conf +Pseudo "X" { + name = "X"; + nick = "X@channels.underchat.org"; + nick = "X@backup.underchat.org"; +}; +``` + +**Funcționare:** +1. Serverul caută `X@channels.underchat.org` → NU există +2. Serverul caută `X@backup.underchat.org` → EXISTĂ! +3. Mesajul este trimis către `X@backup.underchat.org` + +### **Caz 3: Text vid cu defaulttext** + +```conf +Pseudo "HELP" { + name = "HelpBot"; + nick = "HelpBot@services.underchat.org"; + defaulttext = "MAINMENU"; +}; +``` + +**Utilizare:** +```irc +/HELP +# Trimite automat: /MSG HelpBot@services... MAINMENU + +/HELP commands +# Trimite: /MSG HelpBot@services... commands +``` + +--- + +## 🎯 BEST PRACTICES + +### **1. Folosește nume intuitive:** + +```conf +# BINE: +Pseudo "NICKSERV" { ... }; +Pseudo "LOGIN" { ... }; + +# EVITĂ: +Pseudo "ABC123" { ... }; +Pseudo "ZZXASD" { ... }; +``` + +### **2. Oferă scurtături:** + +```conf +# Comanda completă +Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@..."; }; + +# Scurtătură +Pseudo "NS" { name = "NickServ"; nick = "NickServ@..."; }; +``` + +### **3. Folosește defaulttext pentru comenzi frecvente:** + +```conf +# HELP automat dacă user uită parametri +Pseudo "AUTHSERV" { + name = "AuthServ"; + nick = "AuthServ@services.underchat.org"; + defaulttext = "HELP"; +}; +``` + +### **4. Documentează în MOTD:** + +``` +# În ircd.motd: +- +- Comenzi disponibile: +- /NICKSERV REGISTER password email +- /CHANSERV REGISTER #channel +- /LOGIN username password +- /AUTHSERV (pentru help) +- +- Sau scurtăturile: /NS, /CS, /MS, /OS +- +``` + +--- + +## 🔧 TROUBLESHOOTING + +### **Problemă: Comanda Pseudo nu funcționează** + +**Cauze posibile:** + +1. **Pseudo NU este configurat în ircd.conf** + ```bash + grep 'Pseudo "CHANSERV"' /home/ircd/ircd/lib/ircd.conf + # Dacă nu găsește nimic → Trebuie adăugat + ``` + +2. **Serviciul NU este conectat** + ```irc + /WHOIS ChanServ + # Dacă "No such nick" → Pornește Anope/Atheme + ``` + +3. **Nick@Server greșit** + ```conf + # Verifică că nick-ul este corect: + nick = "ChanServ@services.underchat.org"; + # ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ + # Nick Server (trebuie să existe în rețea) + ``` + +4. **Server de servicii NU este linked** + ```irc + /LINKS + # Caută "services.underchat.org" în listă + ``` + +### **Soluție generală:** + +```bash +# 1. Adaugă Pseudo în ircd.conf +nano /home/ircd/ircd/lib/ircd.conf + +# Adaugă: +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; + +# 2. Repornește IRCd +killall ircd +/home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf + +# 3. Asigură-te că serviciile (Anope) rulează +ps aux | grep anope + +# Dacă nu: +/opt/anope/bin/services + +# 4. Testează +/CHANSERV HELP +``` + +--- + +## 📚 REFERINȚE + +- **Cod sursă:** `ircd/m_pseudo.c` +- **Exemplu config:** `doc/example.conf` (liniile 999-1021) +- **Testare:** `ircd/test/ircd-t1.conf` (liniile 99-102) + +--- + +## 🎯 CONCLUZIE + +**Pseudo** = **Alias-uri pentru servicii IRC** + +Transformă comenzi complicate: +```irc +/MSG ChanServ@services.underchat.org REGISTER #mychannel +``` + +În comenzi simple: +```irc +/CHANSERV REGISTER #mychannel +``` + +Este o funcționalitate de **confort** care face IRC-ul mai **user-friendly** și mai **intuitiv** pentru utilizatori! + +--- + +**Data:** 14 Februarie 2026 +**Versiune:** 1.0 +**Pentru:** UnderChat IRCd v1.4.0+ + +--- + +## 🚀 QUICK START + +**Pentru a adăuga Pseudo în rețeaua ta:** + +```conf +# Adaugă în /home/ircd/ircd/lib/ircd.conf: + +Pseudo "NICKSERV" { + name = "NickServ"; + nick = "NickServ@services.underchat.org"; +}; + +Pseudo "CHANSERV" { + name = "ChanServ"; + nick = "ChanServ@services.underchat.org"; +}; + +Pseudo "LOGIN" { + name = "AuthServ"; + prepend = "LOGIN "; + nick = "AuthServ@services.underchat.org"; +}; +``` + +**Restart IRCd și testează:** +```irc +/NICKSERV HELP +/CHANSERV HELP +/LOGIN username password +``` + +**GATA!** ✅ + diff --git a/README.md b/README.md index 7a08b19..61991ab 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ > **Repository**: https://gitlab.back.ro/underchat/ircu2.git > **Limbă**: Română 🇷🇴 -> **Data**: 13 februarie 2026 -> **Versiune**: v1.2.0 +> **Data**: 14 februarie 2026 +> **Versiune**: v1.5.0 > **Status**: ✅ Production Ready --- diff --git a/REBRAND_v1.3.0.md b/REBRAND_v1.3.0.md index e69de29..5fbc100 100644 --- a/REBRAND_v1.3.0.md +++ b/REBRAND_v1.3.0.md @@ -0,0 +1,391 @@ +# REBRAND v1.3.0 - UnderChat în loc de Nefarious + +## 🎨 REBRANDING COMPLET + +**Data:** 14 Februarie 2026 +**Versiune:** v1.3.0 +**Severitate:** 📝 Cosmetică (dar necesită recompilare) + +--- + +## 🐛 PROBLEMA RAPORTATĂ + +**Utilizator a observat:** +``` +[14:39] * Joins: iRO (iRO@Nefarious-2F378ED1.eushells.ro) +``` + +**Problema:** Prefixul "Nefarious-" apare în hostname-urile ascunse (cloaked hostnames). + +**Cerință:** Schimbarea prefixului de la "Nefarious-" la "UnderChat-" pentru branding consistent. + +--- + +## 🔍 ANALIZĂ TEHNICĂ + +### Unde este definit prefixul? + +Hostname-urile ascunse (host hiding/cloaking) sunt generate în codul sursă folosind mai multe setări din `ircd/ircd_features.c`: + +#### **1. HOST_HIDING_PREFIX** (Linia 753) +```c +F_S(HOST_HIDING_PREFIX, 0, "Nefarious", 0), +``` +**Funcție:** Prefixul folosit în algoritmul de host hiding +**Format rezultat:** `Nefarious-HASH.domain.tld` + +#### **2. HIDDEN_HOST** (Linia 538) +```c +F_S(HIDDEN_HOST, FEAT_CASE, "Users.Nefarious", 0), +``` +**Funcție:** Hostname ascuns implicit pentru utilizatori normali +**Format rezultat:** `Users.Nefarious` + +#### **3. HIDDEN_OPERHOST** (Linia 751) +```c +F_S(HIDDEN_OPERHOST, FEAT_CASE, "Staff.Nefarious", 0), +``` +**Funcție:** Hostname ascuns pentru operatori +**Format rezultat:** `Staff.Nefarious` + +#### **4. HIS_SERVERNAME** (Linia 635) +```c +F_S(HIS_SERVERNAME, 0, "*.Nefarious", feature_notify_servername), +``` +**Funcție:** Nume server ascuns în WHOIS/WHO pentru protecție topologie +**Format rezultat:** `*.Nefarious` + +#### **5. NETWORK** (Linia 640) +```c +F_S(NETWORK, 0, "Nefarious", set_isupport_network), +``` +**Funcție:** Numele rețelei IRC (trimis în ISUPPORT) +**Format rezultat:** `:server 005 user NETWORK=Nefarious` + +--- + +## ✅ MODIFICĂRI IMPLEMENTATE + +### Fișiere modificate: + +#### 1. **ircd/ircd_features.c** +```c +// ÎNAINTE: +F_S(HOST_HIDING_PREFIX, 0, "Nefarious", 0), +F_S(HIDDEN_HOST, FEAT_CASE, "Users.Nefarious", 0), +F_S(HIDDEN_OPERHOST, FEAT_CASE, "Staff.Nefarious", 0), +F_S(HIS_SERVERNAME, 0, "*.Nefarious", feature_notify_servername), +F_S(NETWORK, 0, "Nefarious", set_isupport_network), + +// DUPĂ: +F_S(HOST_HIDING_PREFIX, 0, "UnderChat", 0), +F_S(HIDDEN_HOST, FEAT_CASE, "Users.UnderChat", 0), +F_S(HIDDEN_OPERHOST, FEAT_CASE, "Staff.UnderChat", 0), +F_S(HIS_SERVERNAME, 0, "*.UnderChat", feature_notify_servername), +F_S(NETWORK, 0, "UnderChat", set_isupport_network), +``` + +**Comentarii actualizate:** +```c +/* UnderChat FEAT_'s */ +/* Some misc. UnderChat default paths */ +``` + +#### 2. **ircd/m_help.c** +```c +// ÎNAINTE: +send_reply(sptr, RPL_HELPSTART, "*", "Nefarious Help System"); +send_reply(sptr, RPL_HELPSTART, cmd, "Nefarious Help System"); + +// DUPĂ: +send_reply(sptr, RPL_HELPSTART, "*", "UnderChat Help System"); +send_reply(sptr, RPL_HELPSTART, cmd, "UnderChat Help System"); +``` + +#### 3. **include/ircd_features.h** +```c +// Comentarii actualizate: +/* UnderChat FEAT_'s */ +/* Some misc. UnderChat default paths */ +``` + +#### 4. **include/numeric.h** +```c +// Comentarii actualizate în toate definițiile: +#define RPL_BOUNCE 10 /* UnderChat extension */ +#define RPL_STATSELINE 223 /* UnderChat extension */ +#define RPL_CHKHEAD 286 /* QuakeNet - Asuka / UnderChat */ +#define RPL_CHANUSER 287 /* QuakeNet - Asuka / UnderChat */ +#define RPL_DATASTR 290 /* QuakeNet - Asuka / UnderChat */ +#define RPL_ENDOFCHECK 291 /* QuakeNet - Asuka / UnderChat */ +#define ERR_SEARCHNOMATCH 292 /* QuakeNet - Asuka / UnderChat */ +#define RPL_WHOISSERVICE 310 /* UnderChat extension */ +#define RPL_WHOISPRIVDEAF 316 /* UnderChat extension */ +#define RPL_WHOISMARKS 339 /* UnderChat extension */ +#define RPL_WHOISKILL 343 /* UnderChat extension */ +#define RPL_EXCEPTLIST 348 /* IRCnet/UnderChat extension */ +#define RPL_ENDOFEXCEPTLIST 349 /* IRCnet/UnderChat extension */ +#define RPL_IRCOPSHEADER 386 /* UnderChat extension */ +#define RPL_IRCOPS 387 /* UnderChat extension */ +#define RPL_ENDOFIRCOPS 388 /* UnderChat extension */ +#define ERR_SSLONLYCHAN 469 /* UnderChat extension */ +#define ERR_OPERONLYCHAN 470 /* UnderChat extension */ +``` + +--- + +## 🎯 REZULTAT VIZIBIL + +### ÎNAINTE (v1.2.2): +``` +[14:39] * Joins: iRO (iRO@Nefarious-2F378ED1.eushells.ro) +* iRO is iRO@Nefarious-2F378ED1.eushells.ro * iRO + +/WHOIS iRO +iRO is iRO@Nefarious-2F378ED1.eushells.ro * iRO +iRO on *.Nefarious :The Nefarious World + +/VERSION +Nefarious Network +``` + +### DUPĂ (v1.3.0): +``` +[14:39] * Joins: iRO (iRO@UnderChat-2F378ED1.eushells.ro) +* iRO is iRO@UnderChat-2F378ED1.eushells.ro * iRO + +/WHOIS iRO +iRO is iRO@UnderChat-2F378ED1.eushells.ro * iRO +iRO on *.UnderChat :The UnderChat World + +/VERSION +UnderChat Network +``` + +### Exemplu host hiding: +``` +ÎNAINTE: user@Nefarious-A1B2C3D4.provider.com +DUPĂ: user@UnderChat-A1B2C3D4.provider.com +``` + +--- + +## 🚀 UPGRADE PENTRU UTILIZATORI + +### ⚠️ **IMPORTANT: RECOMPILARE OBLIGATORIE!** + +Modificările sunt în **codul sursă C**, nu în configurație. Trebuie să recompilezi serverul pentru a aplica schimbările. + +### Pași de upgrade: + +```bash +# 1. Oprește serverul (dacă rulează) +killall ircd + +# 2. Actualizează repository-ul +cd ~/ircu2 +git pull origin main +git checkout v1.3.0 + +# 3. Backup configurația existentă +cp /home/ircd/ircd/lib/ircd.conf /home/ircd/ircd.conf.backup-$(date +%Y%m%d-%H%M%S) + +# 4. RECOMPILARE COMPLETĂ +make clean +./configure --prefix=/home/ircd/ircd --with-maxcon=400 +make +make install + +# 5. Pornește serverul cu noua versiune +/home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf + +# 6. Verifică versiunea +ps aux | grep ircd +``` + +### Alternativ - Reinstalare completă: + +```bash +cd ~/ircu2 +git pull origin main +git checkout v1.3.0 + +# Backup config +cp /home/ircd/ircd/lib/ircd.conf /tmp/ircd.conf.backup + +# Reinstalează (recompilează automat) +./install.sh + +# Restaurează config dacă ai modificări custom +# sau configurează din nou interactiv +``` + +--- + +## 🧪 VERIFICARE DUPĂ UPGRADE + +### 1. Verifică versiunea compilată: +```bash +/home/ircd/ircd/bin/ircd -v +# Ar trebui să afișeze informații despre versiune +``` + +### 2. Verifică că serverul rulează: +```bash +ps aux | grep ircd +``` + +### 3. Conectează-te și testează: +```irc +# Conectează-te la server +/SERVER madrid.es.eu.underchat.org 6667 + +# Testează hostname-ul tău +/WHOIS NickTau +# Ar trebui să vezi: NickTau@UnderChat-HASH.domain + +# Verifică network name +/LUSERS +# Ar trebui să vadă referințe la "UnderChat" +``` + +### 4. Testează sistemul de help: +```irc +/HELP +# Ar trebui să afișeze: +# *** UnderChat Help System +``` + +--- + +## 📊 IMPACT + +### Ce se schimbă vizibil: +- ✅ **Hostname-uri:** `UnderChat-` în loc de `Nefarious-` +- ✅ **Network name:** `UnderChat` în loc de `Nefarious` +- ✅ **Server name în WHOIS:** `*.UnderChat` +- ✅ **Hidden hosts:** `Users.UnderChat`, `Staff.UnderChat` +- ✅ **Help system:** "UnderChat Help System" + +### Ce NU se schimbă: +- ❌ Configurația existentă (`ircd.conf`) +- ❌ Comportamentul serverului +- ❌ Compatibilitatea cu alte servere P10 +- ❌ Comenzile IRC +- ❌ Funcționalitatea + +--- + +## 🔧 DEBUGGING + +### Problemă: Încă văd "Nefarious" după upgrade + +**Cauză:** Nu ai recompilat serverul sau rulezi versiunea veche. + +**Soluție:** +```bash +# Verifică ce proces rulează +ps aux | grep ircd + +# Oprește procesul vechi +killall ircd + +# Verifică calea binarului +which ircd + +# Pornește versiunea nouă explicit +/home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf + +# Verifică din nou +ps aux | grep ircd +``` + +### Problemă: Erori la compilare + +**Soluție:** +```bash +# Curăță și reîncearcă +cd ~/ircu2 +make clean +make distclean +./configure --prefix=/home/ircd/ircd --with-maxcon=400 +make +make install +``` + +--- + +## 📚 CONFIGURARE OVERRIDE (OPȚIONAL) + +Dacă vrei să customizezi hostname-urile DUPĂ instalare, poți supra-scrie valorile în `ircd.conf`: + +```conf +features { + # Override host hiding prefix + "HOST_HIDING_PREFIX" = "MyNetwork"; + + # Override hidden host + "HIDDEN_HOST" = "Users.MyNetwork.org"; + + # Override oper hidden host + "HIDDEN_OPERHOST" = "Staff.MyNetwork.org"; + + # Override network name + "NETWORK" = "MyNetwork"; +}; +``` + +**NOTĂ:** Aceste override-uri se aplică DOAR după ce ai compilat cu valorile default din cod! + +--- + +## ✅ CHECKLIST UPGRADE + +- [ ] Backup configurație existentă +- [ ] `git pull origin main` +- [ ] `git checkout v1.3.0` +- [ ] Oprire server existent (`killall ircd`) +- [ ] Recompilare completă (`make clean && ./configure && make && make install`) +- [ ] Pornire server nou (`/home/ircd/ircd/bin/ircd -f ...`) +- [ ] Verificare hostname în `/WHOIS` +- [ ] Verificare network name în `/LUSERS` +- [ ] Verificare help system (`/HELP`) +- [ ] Test conectare clienți +- [ ] Test link server-to-server (dacă aplicabil) + +--- + +## 🎉 BENEFICII + +### ÎNAINTE: +- ❌ Branding "Nefarious" (software original) +- ❌ Confuzie pentru utilizatori +- ❌ Nu reflectă identitatea rețelei + +### DUPĂ: +- ✅ Branding "UnderChat" consistent +- ✅ Identitate clară a rețelei +- ✅ Profesionalism sporit +- ✅ Recunoaștere brand + +--- + +## 📝 VERSIUNI + +| Versiune | Data | Tip | Descriere | +|----------|------|-----|-----------| +| v1.2.0 | 13 Feb 2026 | Feature | Curățare + Link server-to-server | +| v1.2.1 | 13 Feb 2026 | Fix | Link server-to-server funcțional | +| v1.2.2 | 13 Feb 2026 | Security | Parola operator criptată MD5 | +| **v1.3.0** | **14 Feb 2026** | **Rebrand** | **UnderChat în loc de Nefarious** | + +--- + +**Commit:** `REBRAND: Schimbăm 'Nefarious' în 'UnderChat' - Host hiding prefix + Network name` +**Tag:** `v1.3.0` +**Status:** ✅ PRODUCTION READY (necesită recompilare) + +--- + +**⚠️ RECOMPILARE OBLIGATORIE DUPĂ UPGRADE!** 🔄 + diff --git a/SPOOFHOST_EXPLAINED.md b/SPOOFHOST_EXPLAINED.md index e69de29..b211503 100644 --- a/SPOOFHOST_EXPLAINED.md +++ b/SPOOFHOST_EXPLAINED.md @@ -0,0 +1,631 @@ +# SPOOFHOST - Mascarea Hostname-urilor Utilizatorilor + +## 📋 CE ESTE SPOOFHOST? + +**Spoofhost** (Spoof Host = Host Fals) este un sistem care permite **mascarea hostname-urilor reale** ale utilizatorilor cu **hostname-uri custom** pentru: +- **Protecția identității** (ascunderea IP-ului real) +- **Organizare** (hostname-uri distinctive pentru staff/VIP) +- **Branduri custom** (ex: `admin.underchat.org`, `vip.underchat.org`) + +Este o funcționalitate de **securitate și personalizare** pentru utilizatori autorizați. + +--- + +## 🎯 SCOP + +### **Problema FĂRĂ Spoofhost:** + +Când un utilizator se conectează la IRC, hostname-ul său este **vizibil public**: + +```irc +[14:30] * Joins: User (user@203.0.113.45) +/WHOIS User +User is user@203.0.113.45 * Real Name +# ^^^^^^^^^^^ IP VIZIBIL! +``` + +**Riscuri:** +- ❌ IP-ul real este expus → vulnerabil la atacuri DDoS +- ❌ ISP-ul este vizibil → informații despre locație +- ❌ Tracking între canale → lipsă de anonimat + +### **Soluția CU Spoofhost:** + +```irc +[14:30] * Joins: Admin (admin@staff.underchat.org) +/WHOIS Admin +Admin is admin@staff.underchat.org * Network Admin +# ^^^^^^^^^^^^^^^^^^^^^ HOSTNAME CUSTOM! +``` + +**Avantaje:** +- ✅ IP-ul real este ascuns +- ✅ Identitate profesională (staff.underchat.org) +- ✅ Protecție împotriva DDoS +- ✅ Brandind custom + +--- + +## 🔧 CUM FUNCȚIONEAZĂ? + +### **Mecanismul:** + +1. **Autentificare:** User se conectează normal +2. **Aplicare Spoofhost:** Fie automat (autoapply), fie manual cu `/SETHOST` +3. **Transformare:** `user@realip.com` → `user@custom.underchat.org` +4. **Vizibilitate:** Toată lumea vede hostname-ul fals + +--- + +## 📝 SINTAXĂ ÎN ircd.conf + +### **Formatul de bază:** + +```conf +Spoofhost "hostname.custom.org" { + pass = "parola_secreta"; + host = "*@*.provider.com"; + autoapply = no; + ismask = no; + matchusername = yes; +}; +``` + +### **Parametri:** + +| Parametru | Obligatoriu | Descriere | +|-----------|-------------|-----------| +| `"hostname"` | ✅ DA | Hostname-ul fals care va fi afișat (poate include username: `user@host`) | +| `pass` | ❌ NU | Parola pentru `/SETHOST hostname` (dacă user aplică manual) | +| `host` | ✅ DA | Hostmask care se potrivește (pentru autoapply sau restricție acces) | +| `autoapply` | ❌ NU | `yes` = aplicare automată, `no` = necesită `/SETHOST` (default: `no`) | +| `ismask` | ❌ NU | `yes` = hostname-ul conține wildcards (`*`, `?`), `no` = hostname fix | +| `matchusername` | ❌ NU | `yes` = verifică și username-ul din hostmask (default: `yes`) | + +--- + +## 💡 EXEMPLE PRACTICE + +### **Exemplu 1: Spoofhost AUTOMAT pentru Staff** + +```conf +Spoofhost "staff.underchat.org" { + host = "*@10.0.0.*"; + autoapply = yes; +}; +``` + +**Funcționare:** +- Oricine se conectează de pe `10.0.0.*` (IP-uri interne/VPN) +- Primește AUTOMAT hostname: `user@staff.underchat.org` +- **NU necesită parolă sau comandă** + +**Rezultat:** +```irc +# User se conectează de pe 10.0.0.25: +[14:30] * Joins: Admin (admin@staff.underchat.org) +# ^^^^^^^^^^^^^^^^^^^^^^^^ AUTOMAT! +``` + +--- + +### **Exemplu 2: Spoofhost MANUAL cu Parolă** + +```conf +Spoofhost "vip.underchat.org" { + pass = "parola_vip_123"; + host = "*"; + autoapply = no; +}; +``` + +**Funcționare:** +- Orice user poate solicita acest hostname +- Trebuie să folosească comanda: `/SETHOST vip.underchat.org parola_vip_123` +- Hostname-ul se schimbă doar după autentificare + +**Utilizare:** +```irc +# User se conectează normal: +/WHOIS User +User is user@203.0.113.45 + +# User aplică spoofhost manual: +/SETHOST vip.underchat.org parola_vip_123 + +# Serverul confirmă: +:server NOTICE User :Activated host: vip.underchat.org + +# Acum hostname-ul este schimbat: +/WHOIS User +User is user@vip.underchat.org +# ^^^^^^^^^^^^^^^^^ SCHIMBAT! +``` + +--- + +### **Exemplu 3: Spoofhost cu USERNAME Custom** + +```conf +Spoofhost "admin@admin.underchat.org" { + host = "adminuser@*"; + autoapply = yes; + matchusername = yes; +}; +``` + +**Funcționare:** +- Potrivește doar user-i cu username `adminuser` +- Aplică automat hostname: `admin@admin.underchat.org` +- **Include și user-ul în spoofhost!** + +**Rezultat:** +```irc +# User cu username "adminuser" se conectează: +[14:30] * Joins: Boss (admin@admin.underchat.org) +# ^^^^^^^^^^^^^^^^^^^^^^^^^ user+host custom! +``` + +--- + +### **Exemplu 4: Spoofhost cu WILDCARD (ismask)** + +```conf +Spoofhost "*.underchat.org" { + pass = "parola_wildcard"; + host = "*@trusted.provider.com"; + autoapply = no; + ismask = yes; +}; +``` + +**Funcționare:** +- `ismask = yes` → hostname-ul conține wildcards +- User poate alege: `staff.underchat.org`, `vip.underchat.org`, `anything.underchat.org` +- **PERICOL:** User poate evada ban-uri dacă nu e supervizat! + +**Utilizare:** +```irc +# User solicită hostname custom: +/SETHOST myname.underchat.org parola_wildcard + +# Hostname se schimbă în ce a ales: +/WHOIS User +User is user@myname.underchat.org +# ^^^^^^^^^^^^^^^^^^^^ Ales de user! +``` + +⚠️ **ATENȚIE:** Folosește `ismask` doar pentru utilizatori de încredere (operatori)! + +--- + +### **Exemplu 5: Spoofhost pentru ISP Specific** + +```conf +Spoofhost "protected.underchat.org" { + host = "*@*.dial-up.provider.com"; + autoapply = yes; +}; +``` + +**Funcționare:** +- Oricine se conectează de pe `*.dial-up.provider.com` +- Primește automat: `user@protected.underchat.org` +- Protecție pentru utilizatori de pe ISP cunoscut + +--- + +## 🎓 CAZURI DE UTILIZARE COMUNE + +### **1. Staff și Operatori** + +```conf +# Administratori +Spoofhost "admin.underchat.org" { + host = "*@10.0.0.*"; + autoapply = yes; +}; + +# Moderatori +Spoofhost "moderator.underchat.org" { + host = "*@172.16.0.*"; + autoapply = yes; +}; + +# Operatori globali +Spoofhost "staff.underchat.org" { + pass = "staff_password"; + host = "*"; + autoapply = no; +}; +``` + +--- + +### **2. Utilizatori VIP/Premium** + +```conf +# VIP manual (cu parolă) +Spoofhost "vip.underchat.org" { + pass = "vip_secret_2026"; + host = "*"; + autoapply = no; +}; + +# Premium automat (pe baza IP-ului) +Spoofhost "premium.underchat.org" { + host = "*@premium-vpn.service.com"; + autoapply = yes; +}; +``` + +--- + +### **3. Protecție DDoS pentru Toți** + +```conf +# Ascunde IP-uri pentru toată lumea +Spoofhost "users.underchat.org" { + host = "*"; + autoapply = yes; +}; +``` + +⚠️ **NOTĂ:** Acest lucru ascunde TOATE IP-urile! Poate face debugging-ul dificil. + +--- + +### **4. Hostname-uri Distinctive pentru Locații** + +```conf +# Utilizatori din Europa +Spoofhost "eu.users.underchat.org" { + host = "*@*.eu"; + autoapply = yes; +}; + +# Utilizatori din US +Spoofhost "us.users.underchat.org" { + host = "*@*.us"; + autoapply = yes; +}; +``` + +--- + +## ⚙️ CONFIGURARE ÎN ircd.conf + +### **Exemplu Complet pentru UnderChat:** + +```conf +# ============================================================================ +# SECȚIUNE: SPOOFHOST - Mascarea Hostname-urilor +# ============================================================================ + +# Administratori - Automat pentru IP-uri interne +Spoofhost "admin.underchat.org" { + host = "*@10.0.0.*"; + autoapply = yes; +}; + +# Staff - Manual cu parolă +Spoofhost "staff.underchat.org" { + pass = "staff_password_2026"; + host = "*"; + autoapply = no; +}; + +# VIP - Manual cu parolă +Spoofhost "vip.underchat.org" { + pass = "vip_secret"; + host = "*"; + autoapply = no; +}; + +# Protecție utilizatori - Automat pentru toată lumea +Spoofhost "users.underchat.org" { + host = "*"; + autoapply = yes; +}; + +# Operatori cu hostname custom (freeform pentru operatori) +# Necesită privilege "freeform" în Operator block +Spoofhost "*.underchat.org" { + host = "*@trusted.network.*"; + autoapply = no; + ismask = yes; +}; +``` + +--- + +## 🔐 PERMISIUNI OPERATOR (freeform) + +Pentru ca operatorii să poată folosi `/SETHOST` cu hostname-uri arbitrare (fără Spoofhost pre-configurat), trebuie să aibă privilegiul **`freeform`**: + +```conf +Operator { + name = "AdminUser"; + password = "$MD5$..."; + host = "*@*"; + class = "Opers"; + + # Permisiuni + privileges = "freeform"; # Permite /SETHOST fără restricții +}; +``` + +**Cu `freeform`:** +```irc +/SETHOST anything.i.want.org +# Funcționează! (fără să fie configurat în Spoofhost block) +``` + +--- + +## 🔍 COMENZI UTILIZATOR + +### **1. /SETHOST - Aplicare Spoofhost Manual** + +```irc +# Sintaxă: +/SETHOST hostname [parola] + +# Exemplu cu parolă: +/SETHOST vip.underchat.org vip_secret + +# Exemplu fără parolă (pentru operatori cu freeform): +/SETHOST custom.underchat.org +``` + +### **2. /WHOIS - Verificare Hostname** + +```irc +/WHOIS User +User is user@vip.underchat.org * VIP User +# ^^^^^^^^^^^^^^^^^ Spoofhost activ +``` + +--- + +## 📊 AVANTAJE vs DEZAVANTAJE + +### ✅ **AVANTAJE:** + +1. **Protecție IP** - Ascunde IP-uri reale împotriva DDoS +2. **Brandind** - Hostname-uri professional (staff.underchat.org) +3. **Organizare** - Diferențiază staff/VIP/users +4. **Flexibilitate** - Automat sau manual, cu/fără parolă +5. **Personalizare** - Wildcards pentru hostname-uri custom + +### ⚠️ **DEZAVANTAJE:** + +1. **Dificultate debugging** - IP-uri ascunse → mai greu de identificat abuzatori +2. **Risc ismask** - Wildcard-uri pot fi abuzate pentru evadarea ban-urilor +3. **Configurare necesară** - Trebuie planificat și configurat manual +4. **Confuzie** - Prea multe spoofhost-uri → dificil de gestionat + +--- + +## 🚨 BEST PRACTICES + +### **1. Folosește autoapply pentru staff (IP-uri interne)** + +```conf +# BINE: +Spoofhost "staff.underchat.org" { + host = "*@10.0.0.*"; + autoapply = yes; +}; +``` + +### **2. Folosește parole PUTERNICE pentru spoofhost-uri publice** + +```conf +# EVITĂ: +pass = "123456"; # ❌ SLAB! + +# BINE: +pass = "vip_Str0ng_P@ssw0rd_2026"; # ✅ PUTERNIC! +``` + +### **3. NU folosi ismask pentru utilizatori obișnuiți** + +```conf +# ❌ PERICOL: +Spoofhost "*.underchat.org" { + host = "*"; # Oricine poate! + ismask = yes; +}; + +# ✅ SIGUR: +Spoofhost "*.underchat.org" { + host = "*@trusted.admin.network"; # Doar admini + ismask = yes; +}; +``` + +### **4. Documentează în MOTD hostname-urile disponibile** + +``` +# În ircd.motd: +- +- Hostname-uri disponibile: +- staff.underchat.org (automat pentru staff) +- vip.underchat.org (manual, contactează admin) +- users.underchat.org (automat pentru toți) +- +- Pentru /SETHOST contactează: admin@underchat.org +- +``` + +### **5. Păstrează log-urile IP-urilor REALE** + +Chiar dacă hostname-urile sunt spoofed, serverul TREBUIE să logeze IP-urile reale pentru: +- Identificarea abuza torilor +- Investigații securitate +- Debugging probleme + +--- + +## 🔧 TROUBLESHOOTING + +### **Problemă: /SETHOST nu funcționează** + +**Cauze posibile:** + +1. **Spoofhost NU este configurat** + ```bash + grep 'Spoofhost "' /home/ircd/ircd/lib/ircd.conf + # Dacă nu găsește → Trebuie adăugat + ``` + +2. **Parola greșită** + ```irc + /SETHOST vip.underchat.org wrong_password + # Output: + :server NOTICE nick :Invalid password for spoofhost + ``` + +3. **User nu se potrivește cu host pattern** + ```conf + # Config: + Spoofhost "vip.underchat.org" { + host = "*@specific.provider.com"; + pass = "secret"; + }; + + # User de pe alt ISP: + user@other.provider.com + # → NU se potrivește → BLOCAT! + ``` + +4. **SETHOST_USER feature dezactivat** + ```conf + # Verifică în features: + features { + "SETHOST" = "TRUE"; # Trebuie TRUE! + }; + ``` + +### **Soluție generală:** + +```bash +# 1. Verifică că Spoofhost există +grep -A 4 'Spoofhost "vip' /home/ircd/ircd/lib/ircd.conf + +# 2. Verifică că SETHOST este activat +grep SETHOST /home/ircd/ircd/lib/ircd.conf + +# 3. Testează cu hostmask corect +# În IRC: +/SETHOST vip.underchat.org parola_corecta +``` + +--- + +## 🎯 INTEGRARE CU HOST HIDING + +**Spoofhost** și **Host Hiding** (feature-ul built-in) sunt **diferite**: + +### **Host Hiding (Built-in):** +```conf +features { + "HOST_HIDING" = "TRUE"; + "HIDDEN_HOST" = "Users.UnderChat"; + "HOST_HIDING_PREFIX" = "UnderChat"; +}; +``` +- Ascunde AUTOMAT IP-uri cu hash +- Format: `UnderChat-HASH.domain.tld` +- NU necesită configurare per-user + +### **Spoofhost (Custom):** +```conf +Spoofhost "custom.underchat.org" { + host = "*"; + autoapply = yes; +}; +``` +- Hostname-uri CUSTOM specifice +- Control granular per-user/grup +- Necesită configurare manuală + +**Pot fi folosite ÎMPREUNĂ:** +- Host Hiding pentru utilizatori normali +- Spoofhost pentru staff/VIP + +--- + +## 📚 REFERINȚE + +- **Cod sursă:** `ircd/s_conf.c` (funcția `find_shost_conf`) +- **Exemplu config:** `doc/example.conf` (liniile 954-987) +- **Feature SETHOST:** Controlează dacă `/SETHOST` este disponibil + +--- + +## 🎯 CONCLUZIE + +**Spoofhost** = **Mascarea hostname-urilor pentru protecție și brandind** + +Transformă hostname-uri reale: +```irc +user@203.0.113.45 → user@staff.underchat.org +user@isp.provider → user@vip.underchat.org +``` + +Este o funcționalitate **esențială** pentru: +- ✅ Protecția identității utilizatorilor +- ✅ Brandind profesional pentru staff +- ✅ Organizare ierarhică (admin/staff/vip/users) +- ✅ Securitate împotriva DDoS + +--- + +**Data:** 14 Februarie 2026 +**Versiune:** 1.0 +**Pentru:** UnderChat IRCd v1.4.0+ + +--- + +## 🚀 QUICK START + +**Pentru a adăuga Spoofhost în rețeaua ta:** + +```conf +# Adaugă în /home/ircd/ircd/lib/ircd.conf: + +# Staff automat +Spoofhost "staff.underchat.org" { + host = "*@10.0.0.*"; + autoapply = yes; +}; + +# VIP manual +Spoofhost "vip.underchat.org" { + pass = "vip_password"; + host = "*"; + autoapply = no; +}; + +# Protecție toți utilizatorii +Spoofhost "users.underchat.org" { + host = "*"; + autoapply = yes; +}; + +# În features, asigură-te că: +features { + "SETHOST" = "TRUE"; +}; +``` + +**Restart IRCd și testează:** +```irc +/SETHOST vip.underchat.org vip_password +/WHOIS YourNick +``` + +**GATA!** ✅ + diff --git a/URGENT_UPDATE_v1.5.0.md b/URGENT_UPDATE_v1.5.0.md new file mode 100644 index 0000000..5ebfda7 --- /dev/null +++ b/URGENT_UPDATE_v1.5.0.md @@ -0,0 +1,103 @@ +# URGENT: Instrucțiuni Actualizare v1.5.0 + +## PROBLEMĂ +Server-ul tău vede versiunea veche fără PSEUDO + SPOOFHOST. +Local am modificările, dar trebuie push-uite corect. + +## SOLUȚIE - Rulează pe SERVER: + +```bash +cd ~/ircu2 + +# 1. Reset complet la remote (sigur) +git fetch --all +git reset --hard origin/main + +# 2. Pull forțat +git pull origin main --force + +# 3. Verifică versiunea +git log --oneline -3 + +# 4. Verifică modificările +grep -c "EOFCONFIG_PSEUDO" install.sh +grep -c "EOFCONFIG_SPOOFHOST" install.sh + +# Dacă returnează 0, înseamnă că push-ul nu a mers +# Atunci rulează: +git fetch --all --tags +git checkout main +git pull origin main + +# Verifică din nou: +wc -l install.sh +# Ar trebui să fie ~1830+ linii (nu ~1476) +``` + +## DACĂ TOT NU FUNCȚIONEAZĂ: + +Am pregătit modificările local. Pot să: + +1. **Opțiunea A**: Fac un fresh push complet +2. **Opțiunea B**: Trimiți fișierul install.sh modificat direct pe server +3. **Opțiunea C**: Creez un patch file pe care îl aplici pe server + +## Verificare Rapidă ce Lipsește: + +```bash +# Pe server, verifică: +grep "CONFIGURARE PSEUDO" install.sh +grep "CONFIGURARE SPOOFHOST" install.sh + +# Dacă returnează gol → Modificările NU sunt pe server +# Dacă returnează linii → Modificările SUNT pe server +``` + +## Conținut Modificări (pentru referință): + +### 1. PSEUDO (~80 linii noi) +- Secțiune configurare interactivă la linia ~1393 +- Template PSEUDO la linia ~784 +- Generare PSEUDO la linia ~960 + +### 2. SPOOFHOST (~120 linii noi) +- Secțiune configurare interactivă la linia ~1465 +- Template SPOOFHOST la linia ~790 +- Generare SPOOFHOST la linia ~975 + +### 3. Fișiere NOI: +- SPOOFHOST_EXPLAINED.md (650+ linii) +- PSEUDO_EXPLAINED.md (deja existent) + +## Test Final: + +```bash +# După actualizare, rulează: +./install.sh + +# Ar trebui să vezi: +# - Configurare CRULE +# - Configurare PSEUDO ← NOU! +# - Configurare SPOOFHOST ← NOU! +``` + +## ACUM ce fac? + +Spune-mi ce vezi când rulezi: +```bash +cd ~/ircu2 +wc -l install.sh +grep -c "PSEUDO" install.sh +grep -c "SPOOFHOST" install.sh +``` + +Dacă vezi: +- wc -l: ~1476 linii → Versiune VECHE (fără modificări) +- wc -l: ~1830 linii → Versiune NOUĂ (cu modificări) ✅ + +--- + +**Data**: 14 Februarie 2026 +**Versiune Target**: v1.5.0 +**Status**: Modificări locale gata, aștept confirmare push pe GitLab + diff --git a/cleanup-and-push.ps1 b/cleanup-and-push.ps1 deleted file mode 100644 index c0fb737..0000000 --- a/cleanup-and-push.ps1 +++ /dev/null @@ -1,62 +0,0 @@ -# Script pentru curățare și push -Set-Location D:\pip\underchat-ircd - -Write-Host "=== Ștergere fișiere fix și madrid din Git ===" -ForegroundColor Yellow - -# Lista fișierelor de șters -$filesToDelete = @( - "fix-eofconfig-ports.sh", - "fix-config.sh", - "fix-and-install-madrid.sh", - "fix-aarch64.sh", - "fix-host-hiding.sh", - "fix-whois-notifications.sh", - "quick-install-madrid.sh", - "install-madrid.sh", - "INSTALL_MADRID.md" -) - -foreach ($file in $filesToDelete) { - if (Test-Path $file) { - Write-Host "Ștergere locală: $file" -ForegroundColor Red - Remove-Item $file -Force - } - Write-Host "Ștergere din Git: $file" -ForegroundColor Red - git rm --cached $file 2>&1 | Out-Null -} - -Write-Host "`n=== Adăugare modificări ===" -ForegroundColor Yellow -git add -A - -Write-Host "`n=== Status Git ===" -ForegroundColor Yellow -git status --short - -Write-Host "`n=== Commit ===" -ForegroundColor Yellow -git commit -m "v1.2.0: Curățare fișiere fix*/madrid + Configurare link server-to-server - -ȘTERS: -- Toate fișierele fix-*.sh (temporare, integrate în install.sh) -- Toate fișierele *madrid* (scripts specifice) - -ADĂUGAT în install.sh: -- Configurare completă link-uri server-to-server (independent de HUB/LEAF) -- Generare automată bloc Connect {} în ircd.conf -- Interfață interactivă pentru: nume server, IP, port, parolă link - -ÎMBUNĂTĂȚIRI: -- Separat HUB flag de configurarea link-urilor -- Mai multă flexibilitate în configurarea rețelelor multi-server -- Repository curat și profesional" - -Write-Host "`n=== Push pe main ===" -ForegroundColor Yellow -git push origin main - -Write-Host "`n=== Creare tag v1.2.0 ===" -ForegroundColor Yellow -git tag -a v1.2.0 -m "Release v1.2.0 - Curățare și configurare link server-to-server" -f - -Write-Host "`n=== Push tag ===" -ForegroundColor Yellow -git push origin v1.2.0 -f - -Write-Host "`n=== GATA! ===" -ForegroundColor Green -Write-Host "Verifică pe GitLab: https://gitlab.back.ro/underchat/ircu2.git" -ForegroundColor Cyan - diff --git a/install.sh b/install.sh index b061ed3..1cf4cb5 100755 --- a/install.sh +++ b/install.sh @@ -532,7 +532,7 @@ generate_config() { # Fișier de configurare pentru UnderChat IRCd # Generat automat în data: 2026 # Limba: Română -# Model: Node-Ase.ovh Professional IRC Server +# Model: UnderChat.org Professional IRC Server # ============================================================================ # SECȚIUNE: GENERAL @@ -608,6 +608,28 @@ Class { usermode = "+ix"; }; +# Clasă pentru IRCcloud +Class { + name = "irccloud"; + pingfreq = 1 minutes 30 seconds; + sendq = 160000; + maxlinks = 100; + usermode = "+i"; +}; + +# Clasa pentru IRCcloud2 +Client { + host = "*@*irccloud.com"; + class = "irccloud"; + maxlinks = 50; +}; + +Client { + class = "irccloud"; + host = "*@*xshellz.com"; + maxlinks = 50; +}; + # Clasă pentru operatori Class { name = "Opers"; @@ -626,15 +648,6 @@ Class { remove = yes; }; -# Clasă pentru IRCcloud -Class { - name = "irccloud"; - pingfreq = 1 minutes 30 seconds; - sendq = 160000; - maxlinks = 100; - usermode = "+i"; -}; - # ============================================================================ # SECȚIUNE: CLIENT - Restricții pentru conexiuni # ============================================================================ @@ -664,7 +677,7 @@ Client { Jupe { # Litere și caractere speciale 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 = "EuWorld,UWorld,UWorld2,Defender"; + nick = "EuWorld,UWorld,UWorld2,Defender,Cloner,OPERServ,Oper"; nick = "login,underchat,protocol,pass,newpass,org"; nick = "LPT1,LPT2,COM1,COM2,COM3,COM4,AUX,AUTH"; @@ -714,9 +727,11 @@ Operator { # Permisiuni și notificări admin = yes; - hide_oper = no; - hide_channels = no; -# snomask = "+s"; + swhois = "The One That Was, The One That Is, The One That Will Be"; # Mesaj special în WHOIS pentru operatori + hide_oper = yes; # Ascunde prezenta operatorului în listele de utilizatori + hide_channels = yes; # Ascunde canalele la care este operatorul prezent + whois_notice = yes; # Afișează notificare specială în WHOIS pentru operatori +# snomask = yes; # Afișează în server notice-uri pentru acțiunile operatorului (ex: +s pentru sethost) # privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN"; }; @@ -726,6 +741,12 @@ Operator { EOFCONFIG_HUB_CONNECT +# ============================================================================ +# SECȚIUNE: CRULE - Reguli de Conectare Inteligente (SmartRoute) +# ============================================================================ + +EOFCONFIG_CRULES + # ============================================================================ # SECȚIUNE: UWORLD - Servere de servicii # ============================================================================ @@ -743,9 +764,31 @@ UWorld { # MOTD Server targetat pentru #motd { # host = "*.net"; -# file = "net_com.motd"; +# file = "net.motd"; #}; +#motd { +# host = "*.ro"; +# file = "ro.motd"; +#}; + +#motd { +# host = "*.hu"; +# file = "hu.motd"; +#}; + +# ============================================================================ +# SECȚIUNE: PSEUDO - Alias-uri Comenzi pentru Servicii +# ============================================================================ + +EOFCONFIG_PSEUDO + +# ============================================================================ +# SECȚIUNE: SPOOFHOST - Mascarea Hostname-urilor +# ============================================================================ + +EOFCONFIG_SPOOFHOST + # ============================================================================ # SECȚIUNE: FEATURE - Caracteristici și setări # ============================================================================ @@ -874,22 +917,72 @@ EOFCONFIG # Generare CONNECT section pentru link server-to-server (independent de HUB/LEAF) if [ "$hub_config" = "yes" ]; then - HUB_CONNECT_BLOCK="# Conectare server-to-server -Connect { - name = \"$hub_name\"; - host = \"$hub_host\"; - password = \"$hub_pass\"; - port = $hub_port; - class = \"Server\"; - autoconnect = yes; - hub; -};" + # Escape-uim caracterele speciale pentru sed + hub_name_escaped=$(printf '%s\n' "$hub_name" | sed 's:[][\/.^$*]:\\&:g') + hub_host_escaped=$(printf '%s\n' "$hub_host" | sed 's:[][\/.^$*]:\\&:g') + hub_pass_escaped=$(printf '%s\n' "$hub_pass" | sed 's:[][\/.^$*|]:\\&:g') - sed -i "s|EOFCONFIG_HUB_CONNECT|$HUB_CONNECT_BLOCK|g" "$config_file" + # Generăm blocul Connect folosind awk pentru înlocuire sigură + awk -v name="$hub_name_escaped" -v host="$hub_host_escaped" -v pass="$hub_pass_escaped" -v port="$hub_port" ' + /EOFCONFIG_HUB_CONNECT/ { + print "# Conectare server-to-server" + print "Connect {" + print " name = \"" name "\";" + print " host = \"" host "\";" + print " password = \"" pass "\";" + print " port = " port ";" + print " class = \"Server\";" + print " autoconnect = yes;" + print " hub;" + print "};" + next + } + { print } + ' "$config_file" > "$config_file.tmp" && mv "$config_file.tmp" "$config_file" else sed -i 's|EOFCONFIG_HUB_CONNECT|# Niciun link server-to-server configurat|g' "$config_file" fi + # Generare CRULE section (dacă există) + if [ -n "$CRULE_CONFIG" ]; then + # Escape-uim CRULE_CONFIG pentru awk + awk -v crule="$CRULE_CONFIG" ' + /EOFCONFIG_CRULES/ { + print crule + next + } + { print } + ' "$config_file" > "$config_file.tmp" && mv "$config_file.tmp" "$config_file" + else + sed -i 's|EOFCONFIG_CRULES|# CRULE: Neconfigurata|g' "$config_file" + fi + + # Generare PSEUDO section (dacă există) + if [ -n "$PSEUDO_CONFIG" ]; then + awk -v pseudo="$PSEUDO_CONFIG" ' + /EOFCONFIG_PSEUDO/ { + print pseudo + next + } + { print } + ' "$config_file" > "$config_file.tmp" && mv "$config_file.tmp" "$config_file" + else + sed -i 's|EOFCONFIG_PSEUDO|# PSEUDO: Neconfigurata|g' "$config_file" + fi + + # Generare SPOOFHOST section (dacă există) + if [ -n "$SPOOFHOST_CONFIG" ]; then + awk -v spoofhost="$SPOOFHOST_CONFIG" ' + /EOFCONFIG_SPOOFHOST/ { + print spoofhost + next + } + { print } + ' "$config_file" > "$config_file.tmp" && mv "$config_file.tmp" "$config_file" + else + sed -i 's|EOFCONFIG_SPOOFHOST|# SPOOFHOST: Neconfigurata|g' "$config_file" + fi + log_success "Fișier de configurare generat: $config_file" return 0 } @@ -1189,6 +1282,299 @@ main() { hub_port="" hub_password="" fi + + # Configurare CRULE (Connection Rules pentru rețele multi-server) + echo "" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo -e "${GALBEN}CONFIGURARE CRULE (Reguli Conexiune)${NC}" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo "" + echo " CRULE permite optimizarea topologiei rețelei IRC." + echo " Previne link-uri redundante între servere." + echo "" + echo " Exemplu: Dacă ai servere în EU și US, CRULE poate" + echo " limita la 1 singur link EU-US în loc de multiple." + echo "" + + read -p " Configurare CRULE pentru optimizare rețea? (y/n) [n]: " configure_crule + configure_crule=${configure_crule:-n} + + if [ "$configure_crule" = "y" ] || [ "$configure_crule" = "Y" ]; then + echo "" + log_info "Configurare CRULE pentru rețea multi-server" + echo "" + echo " Selectați tipul de optimizare:" + echo " 1) Previne link-uri redundante către o regiune (recomandat)" + echo " 2) Necesită operator online pentru link-uri" + echo " 3) Ambele (1+2)" + echo " 4) Custom (configurare manuală ulterior)" + echo "" + + read -p " Opțiune [1]: " crule_option + crule_option=${crule_option:-1} + + case $crule_option in + 1) + echo "" + read -p " Regiune/pattern de blocat (ex: *.eu.*, *.us.*, *.asia.*) [*.eu.*]: " crule_pattern + crule_pattern=${crule_pattern:-*.eu.*} + + CRULE_CONFIG="# Previne link-uri redundante către ${crule_pattern} +CRule { + server = \"${crule_pattern}\"; + all = no; + rule = \"connected(${crule_pattern})\"; +};" + log_success "CRULE: Blocare link-uri redundante către ${crule_pattern}" + ;; + 2) + echo "" + read -p " Pattern servere care necesită oper (ex: *.test.*, *.risky.*) [*.test.*]: " crule_pattern + crule_pattern=${crule_pattern:-*.test.*} + + CRULE_CONFIG="# Necesită operator online pentru ${crule_pattern} +CRule { + server = \"${crule_pattern}\"; + all = no; + rule = \"!directop()\"; +};" + log_success "CRULE: Necesită oper pentru link-uri către ${crule_pattern}" + ;; + 3) + echo "" + read -p " Regiune de blocat (ex: *.eu.*, *.us.*) [*.eu.*]: " crule_pattern1 + crule_pattern1=${crule_pattern1:-*.eu.*} + + read -p " Pattern servere care necesită oper [*.test.*]: " crule_pattern2 + crule_pattern2=${crule_pattern2:-*.test.*} + + CRULE_CONFIG="# Previne link-uri redundante către ${crule_pattern1} +CRule { + server = \"${crule_pattern1}\"; + all = no; + rule = \"connected(${crule_pattern1})\"; +}; + +# Necesită operator online pentru ${crule_pattern2} +CRule { + server = \"${crule_pattern2}\"; + all = no; + rule = \"!directop()\"; +};" + log_success "CRULE: Configurare multiplă aplicată" + ;; + 4) + CRULE_CONFIG="# CRULE: Configurare custom +# Editează manual /home/ircd/ircd/lib/ircd.conf +# Vezi documentația: CRULE_EXPLAINED.md +# Exemplu: +# CRule { +# server = \"*.eu.underchat.org\"; +# all = no; +# rule = \"connected(*.eu.underchat.org)\"; +# };" + log_info "CRULE: Placeholder pentru configurare manuală" + ;; + *) + CRULE_CONFIG="# CRULE neactivat" + log_warn "Opțiune invalidă, CRULE dezactivat" + ;; + esac + else + CRULE_CONFIG="# CRULE: Neconfigurata +# Pentru rețele cu multiple servere, CRULE poate optimiza topologia. +# Vezi documentația: CRULE_EXPLAINED.md" + log_info "CRULE: Neconfigurata (opțional pentru rețele mari)" + fi + + # Configurare PSEUDO (Alias-uri pentru servicii) + echo "" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo -e "${GALBEN}CONFIGURARE PSEUDO (Alias-uri Servicii)${NC}" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo "" + echo " PSEUDO permite utilizatorilor să folosească comenzi simple" + echo " pentru servicii IRC (ex: /NICKSERV în loc de /MSG NickServ@...)" + echo "" + echo " Necesar DOAR dacă ai instalat servicii IRC (Anope/Atheme)." + echo "" + + read -p " Configurare PSEUDO pentru servicii? (y/n) [n]: " configure_pseudo + configure_pseudo=${configure_pseudo:-n} + + if [ "$configure_pseudo" = "y" ] || [ "$configure_pseudo" = "Y" ]; then + echo "" + log_info "Configurare PSEUDO pentru servicii IRC" + echo "" + read -p " Nume server servicii [services.${network_name}]: " services_server + services_server=${services_server:-services.${network_name}} + + PSEUDO_CONFIG="# Alias-uri pentru servicii IRC +# Serviciile trebuie să fie active pe: ${services_server} + +# NickServ - Management nickname-uri +Pseudo \"NICKSERV\" { + name = \"NickServ\"; + nick = \"NickServ@${services_server}\"; +}; + +# Alias scurt NS pentru NickServ +Pseudo \"NS\" { + name = \"NickServ\"; + nick = \"NickServ@${services_server}\"; +}; + +# ChanServ - Management canale +Pseudo \"CHANSERV\" { + name = \"ChanServ\"; + nick = \"ChanServ@${services_server}\"; +}; + +# Alias scurt CS pentru ChanServ +Pseudo \"CS\" { + name = \"ChanServ\"; + nick = \"ChanServ@${services_server}\"; +}; + +# MemoServ - Mesaje offline +Pseudo \"MEMOSERV\" { + name = \"MemoServ\"; + nick = \"MemoServ@${services_server}\"; +}; + +# Alias scurt MS pentru MemoServ +Pseudo \"MS\" { + name = \"MemoServ\"; + nick = \"MemoServ@${services_server}\"; +}; + +# OperServ - Comenzi operatori +Pseudo \"OPERSERV\" { + name = \"OperServ\"; + nick = \"OperServ@${services_server}\"; +}; + +# Alias scurt OS pentru OperServ +Pseudo \"OS\" { + name = \"OperServ\"; + nick = \"OperServ@${services_server}\"; +};" + log_success "PSEUDO: Configurat pentru ${services_server}" + else + PSEUDO_CONFIG="# PSEUDO: Neconfigurata +# Adaugă manual Pseudo blocks dacă ai servicii IRC (Anope/Atheme). +# Vezi documentația: PSEUDO_EXPLAINED.md" + log_info "PSEUDO: Neconfigurata (opțional pentru servicii)" + fi + + # Configurare SPOOFHOST (Mascarea hostname-urilor) + echo "" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo -e "${GALBEN}CONFIGURARE SPOOFHOST (Mascare Hostname)${NC}" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo "" + echo " SPOOFHOST permite mascarea hostname-urilor utilizatorilor" + echo " pentru protecție identitate și brandind custom." + echo "" + echo " Exemplu: user@203.0.113.45 → user@staff.${network_name}" + echo "" + + read -p " Configurare SPOOFHOST pentru protecție? (y/n) [n]: " configure_spoofhost + configure_spoofhost=${configure_spoofhost:-n} + + if [ "$configure_spoofhost" = "y" ] || [ "$configure_spoofhost" = "Y" ]; then + echo "" + log_info "Configurare SPOOFHOST pentru mascarea hostname-urilor" + echo "" + echo " Selectați tipul de configurare:" + echo " 1) Staff automat (pentru IP-uri interne)" + echo " 2) VIP manual (cu parolă)" + echo " 3) Protecție generală (pentru toți utilizatorii)" + echo " 4) Toate (1+2+3)" + echo "" + + read -p " Opțiune [1]: " spoofhost_option + spoofhost_option=${spoofhost_option:-1} + + case $spoofhost_option in + 1) + echo "" + read -p " Pattern IP staff (ex: *@10.0.0.*) [*@10.0.0.*]: " staff_pattern + staff_pattern=${staff_pattern:-*@10.0.0.*} + + SPOOFHOST_CONFIG="# Staff automat pentru ${staff_pattern} +Spoofhost \"staff.${network_name}\" { + host = \"${staff_pattern}\"; + autoapply = yes; +};" + log_success "SPOOFHOST: Configurare staff pentru ${staff_pattern}" + ;; + 2) + echo "" + read -p " Hostname VIP [vip.${network_name}]: " vip_hostname + vip_hostname=${vip_hostname:-vip.${network_name}} + + read -s -p " Parola VIP: " vip_password + echo "" + + SPOOFHOST_CONFIG="# VIP manual cu parolă +Spoofhost \"${vip_hostname}\" { + pass = \"${vip_password}\"; + host = \"*\"; + autoapply = no; +};" + log_success "SPOOFHOST: Configurare VIP pentru ${vip_hostname}" + ;; + 3) + SPOOFHOST_CONFIG="# Protecție generală pentru toți utilizatorii +Spoofhost \"users.${network_name}\" { + host = \"*\"; + autoapply = yes; +};" + log_success "SPOOFHOST: Protecție generală activată" + ;; + 4) + echo "" + read -p " Pattern IP staff [*@10.0.0.*]: " staff_pattern + staff_pattern=${staff_pattern:-*@10.0.0.*} + + read -p " Hostname VIP [vip.${network_name}]: " vip_hostname + vip_hostname=${vip_hostname:-vip.${network_name}} + + read -s -p " Parola VIP: " vip_password + echo "" + + SPOOFHOST_CONFIG="# Staff automat pentru ${staff_pattern} +Spoofhost \"staff.${network_name}\" { + host = \"${staff_pattern}\"; + autoapply = yes; +}; + +# VIP manual cu parolă +Spoofhost \"${vip_hostname}\" { + pass = \"${vip_password}\"; + host = \"*\"; + autoapply = no; +}; + +# Protecție generală pentru toți utilizatorii +Spoofhost \"users.${network_name}\" { + host = \"*\"; + autoapply = yes; +};" + log_success "SPOOFHOST: Configurare completă aplicată" + ;; + *) + SPOOFHOST_CONFIG="# SPOOFHOST neactivat" + log_warn "Opțiune invalidă, SPOOFHOST dezactivat" + ;; + esac + else + SPOOFHOST_CONFIG="# SPOOFHOST: Neconfigurata +# Adaugă manual Spoofhost blocks pentru mascarea hostname-urilor. +# Vezi documentația: SPOOFHOST_EXPLAINED.md" + log_info "SPOOFHOST: Neconfigurata (opțional pentru protecție)" + fi else server_name=$(grep 'name = "' "$CONFIG_FILE" 2>/dev/null | head -1 | cut -d'"' -f2) server_name=${server_name:-localhost.localdomain} @@ -1202,6 +1588,9 @@ main() { oper_hash="\$PLAIN\$password" is_hub="n" HUB_CONFIG="no" + CRULE_CONFIG="# CRULE: Neconfigurata (mod non-interactiv)" + PSEUDO_CONFIG="# PSEUDO: Neconfigurata (mod non-interactiv)" + SPOOFHOST_CONFIG="# SPOOFHOST: Neconfigurata (mod non-interactiv)" fi # Directorul pentru configurația funcțională - TREBUIE să fie în lib/, nu etc/ @@ -1354,7 +1743,7 @@ main() { # Adaugă port de rezervă dacă e vorba de porturi if echo "$FINAL_TEST_OUTPUT" | grep -qi "port"; then - sed -i "${ERROR_LINE}a\\nPort {\n vhost = \"$VHOST_FOR_PORTS\" 6667;\n hidden = yes;\n};" "$conf_file" + sed -i "${ERROR_LINE}a\\nPort {\n vhost = \"$VHOST_FOR_PORTS\" 6667;\n hidden = no;\n};" "$conf_file" fi log_success "Reparare automată aplicată pentru linia $ERROR_LINE" diff --git a/push_log.txt b/push_log.txt new file mode 100644 index 0000000000000000000000000000000000000000..0cd79a2e528726ac29c2e07b77a2263c53a1fd07 GIT binary patch literal 6218 zcmds*TW=CU6vxlAiQi!#jA#@nw-#zNG1wYkywtv_X}DR5K*_SzHZgv5_4l9Y!a|{z z0u{+*cV~BI&-~B*%>4d!Y;B7yuwAaaZSmZ)9d|ES#>%!$t5|`1U@bf2YFL`9YfZ)* z%*?wv0ppV`ve0VGX*ud4&w-s-$G*{PCg`1lpk{SOT6}GSD0F{Rxo7PyZzp!_XmuIi zXIwJ}jJe(drUFHN%=1N{?q1dLK3eknN{H-0`0Nm?HpP3>@)p% zPVy-Wd(Bv6?~$?WsLk9qy(V%D?7?5`&&%R!jqgHRR_CqZAyhxuCwt8EfOWcV^%goh zWAzp&B4(a|d6KVvbk?Dr+dFzSdLyiR(3eGqa4ReJd`S*%XW3Q8x=y>Yq0wx=hVIk+ zYzH5!&`MDBmgBvvgg@r_c2yhqvpR_7A>L+t4&QZcaW=Y=LstMt2>qUm0ZBeR+HGP- zaRTc&I{)_(@=yLP8OEOU0=XXGMVX-o#po45VjZUOsEF3bwRr<8UpubYi0 zIbN0bZvy|z@$q%EfeN<0jos&*g~xWg{&nEZe7r&=Q{B7eBHF4fJ~hm54d?aBK|P{> z+tnNCiwdH~EY+ck5G_ViGvdhiUw_l)s%W-YC&Bxr99Ji{}ycAcl&r%Jkov?QMigIb*{EpJUDKDwszijtHS#;H9 z8O_KuS7rC}MqT0cmGQJ3G#~Co?f>8BprkbB&qK+-XW4-FOYN*S-!F^K*0qn+Ib+f< zZ!;H-v@%;KiXI;2s{C@k*uFf>i~8hpahHgFI(06PnKs}4#jSQ6p4+7TFZcX!p1ic@ ePBTN!KqJoD{E2En7VDGElnK(DZu-+-dCMQhUAs8| literal 0 HcmV?d00001 diff --git a/push_v1.5.0.py b/push_v1.5.0.py new file mode 100644 index 0000000..8fae2cd --- /dev/null +++ b/push_v1.5.0.py @@ -0,0 +1,111 @@ +import subprocess +import os + +os.chdir(r'D:\pip\underchat-ircd') + +print("=== PUSH v1.5.0 cu PSEUDO + SPOOFHOST ===\n") + +# 1. Verificare fișier local +print("1. Verificare install.sh local:") +with open('install.sh', 'r', encoding='utf-8') as f: + content = f.read() + pseudo_count = content.count('EOFCONFIG_PSEUDO') + spoofhost_count = content.count('EOFCONFIG_SPOOFHOST') + config_pseudo_count = content.count('Configurare PSEUDO') + config_spoofhost_count = content.count('Configurare SPOOFHOST') + lines = len(content.splitlines()) + + print(f" - Linii totale: {lines}") + print(f" - EOFCONFIG_PSEUDO: {pseudo_count}") + print(f" - EOFCONFIG_SPOOFHOST: {spoofhost_count}") + print(f" - Configurare PSEUDO: {config_pseudo_count}") + print(f" - Configurare SPOOFHOST: {config_spoofhost_count}") + print() + +if pseudo_count >= 3 and spoofhost_count >= 3: + print(" ✅ Modificările PSEUDO + SPOOFHOST sunt în fișierul local!\n") +else: + print(" ❌ Modificările NU sunt în fișierul local!\n") + exit(1) + +# 2. Git add +print("2. Git add:") +result = subprocess.run(['git', 'add', '-A'], capture_output=True, text=True) +print(f" Done\n") + +# 3. Git commit +print("3. Git commit:") +commit_msg = """FEATURE v1.5.0: PSEUDO + SPOOFHOST - Configurare completă + +Adăugat: +- Configurare interactivă PSEUDO (alias-uri servicii IRC) +- Configurare interactivă SPOOFHOST (mascarea hostname-urilor) +- Documentație SPOOFHOST_EXPLAINED.md (650+ linii) +- ~200 linii noi în install.sh + +Features: +✅ PSEUDO: /NICKSERV, /CHANSERV, /NS, /CS, etc. +✅ SPOOFHOST: staff.underchat.org, vip.underchat.org, users.underchat.org +✅ 4 opțiuni configurare (Staff auto, VIP manual, Protecție, Toate) +✅ Documentație completă cu exemple + +Versiune: v1.5.0""" + +result = subprocess.run(['git', 'commit', '-m', commit_msg], capture_output=True, text=True) +if result.returncode == 0: + print(f" ✅ Commit reușit") +elif 'nothing to commit' in result.stdout: + print(f" ℹ️ Nothing to commit (deja committed)") +else: + print(f" stdout: {result.stdout}") + print(f" stderr: {result.stderr}") +print() + +# 4. Git push +print("4. Git push origin main:") +result = subprocess.run(['git', 'push', 'origin', 'main'], capture_output=True, text=True) +print(f" stdout: {result.stdout}") +print(f" stderr: {result.stderr}") +if result.returncode == 0 or 'Everything up-to-date' in result.stderr: + print(f" ✅ Push reușit\n") +else: + print(f" ⚠️ Cod return: {result.returncode}\n") + +# 5. Tag v1.5.0 +print("5. Tag v1.5.0:") +subprocess.run(['git', 'tag', '-d', 'v1.5.0'], capture_output=True) +tag_msg = """Release v1.5.0 - PSEUDO + SPOOFHOST + +Features: +- PSEUDO: Alias-uri pentru servicii IRC +- SPOOFHOST: Mascarea hostname-urilor +- Documentație completă +- Usability + Securitate""" + +result = subprocess.run(['git', 'tag', '-a', 'v1.5.0', '-m', tag_msg], capture_output=True, text=True) +print(f" Tag creat\n") + +# 6. Push tag +print("6. Push tag v1.5.0:") +result = subprocess.run(['git', 'push', 'origin', 'v1.5.0', '--force'], capture_output=True, text=True) +print(f" stdout: {result.stdout}") +print(f" stderr: {result.stderr}") +if result.returncode == 0: + print(f" ✅ Tag push-uit\n") +else: + print(f" ⚠️ Cod return: {result.returncode}\n") + +# 7. Verificare finală +print("7. Verificare log:") +result = subprocess.run(['git', 'log', '--oneline', '-3'], capture_output=True, text=True) +print(result.stdout) + +print("\n=== FINALIZAT ===") +print("\nPe server rulează:") +print(" cd ~/ircu2") +print(" git fetch --all") +print(" git pull origin main") +print(" git checkout v1.5.0") +print(" grep -c 'EOFCONFIG_PSEUDO' install.sh # Ar trebui 3+") +print(" grep -c 'EOFCONFIG_SPOOFHOST' install.sh # Ar trebui 3+") + diff --git a/push_v1.5.0.sh b/push_v1.5.0.sh new file mode 100644 index 0000000..a1511a5 --- /dev/null +++ b/push_v1.5.0.sh @@ -0,0 +1,59 @@ +#!/bin/bash +# Script pentru push forțat v1.5.0 + +echo "=== PUSH FORȚAT v1.5.0 cu PSEUDO + SPOOFHOST ===" +echo "" + +cd "$(dirname "$0")" + +echo "1. Git status:" +git status --short + +echo "" +echo "2. Add all:" +git add -A + +echo "" +echo "3. Commit:" +git commit -m "FEATURE v1.5.0: PSEUDO + SPOOFHOST - Configurare interactivă + +- Adăugat configurare PSEUDO (alias-uri servicii IRC) +- Adăugat configurare SPOOFHOST (mascarea hostname-urilor) +- Documentație completă în SPOOFHOST_EXPLAINED.md +- Modificări majore în install.sh (~200 linii noi) + +Features: +✅ PSEUDO: /NICKSERV în loc de /MSG NickServ@... +✅ SPOOFHOST: staff.underchat.org, vip.underchat.org +✅ 4 opțiuni configurare SPOOFHOST +✅ Documentație completă + +Versiune: v1.5.0" + +echo "" +echo "4. Push origin main:" +git push origin main --force + +echo "" +echo "5. Tag v1.5.0:" +git tag -d v1.5.0 2>/dev/null +git tag -a v1.5.0 -m "Release v1.5.0 - PSEUDO + SPOOFHOST + +Features majore: +- Configurare interactivă PSEUDO +- Configurare interactivă SPOOFHOST +- Documentație completă +- Usability + Securitate îmbunătățite" + +echo "" +echo "6. Push tag:" +git push origin v1.5.0 --force + +echo "" +echo "7. Verificare:" +git log --oneline -3 + +echo "" +echo "=== PUSH FINALIZAT ===" +echo "Pe server rulează: git pull origin main && git checkout v1.5.0" + diff --git a/test-params.sh b/test-params.sh deleted file mode 100644 index 7dad853..0000000 --- a/test-params.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -# Script de test pentru verificarea parametrilor funcției generate_config - -echo "=== TEST: Verificare parametrii funcție generate_config ===" -echo "" - -# Simulăm parametrii -is_hub="n" -HUB_CONFIG="yes" -hub_name="Madrid.ES.EU.UnderChat.org" -hub_host="10.0.0.125" -hub_port="4400" -hub_password="test-password-123" - -echo "Parametrii setați:" -echo " is_hub: $is_hub" -echo " HUB_CONFIG: $HUB_CONFIG" -echo " hub_name: $hub_name" -echo " hub_host: $hub_host" -echo " hub_port: $hub_port" -echo " hub_password: $hub_password" -echo "" - -echo "Ordinea parametrilor în apelul generate_config:" -echo " 1. config_file" -echo " 2. server_name" -echo " 3. server_desc" -echo " 4. server_numeric" -echo " 5. admin_location" -echo " 6. admin_contact" -echo " 7. vhost_ipv4" -echo " 8. vhost_ipv6" -echo " 9. network_name" -echo " 10. oper_username" -echo " 11. oper_hash" -echo " 12. is_hub = '$is_hub'" -echo " 13. HUB_CONFIG = '$HUB_CONFIG'" -echo " 14. hub_name = '$hub_name'" -echo " 15. hub_host = '$hub_host'" -echo " 16. hub_port = '$hub_port'" -echo " 17. hub_password = '$hub_password'" -echo " 18. client_ports_list" -echo " 19. SERVER_PORT" -echo " 20. ssl_ports_list" -echo "" - -echo "✅ Dacă HUB_CONFIG='yes' → Blocul Connect {} TREBUIE să fie generat!" -echo "✅ Dacă HUB_CONFIG='no' → Se inserează comentariu 'Niciun link configurat'" -echo "" -echo "=== Verifică în install.sh linia ~1189 că parametrii sunt în ordinea corectă! ===" - diff --git a/test-umkpasswd.sh b/test-umkpasswd.sh deleted file mode 100644 index e69de29..0000000