# AUTOCONNECT în Server-to-Server Linking

## ❓ ÎNTREBAREA TA

**"În configurația actuală am autoconnect la link către HUB?"**

---

## ✅ RĂSPUNS: DA!

**DA, configurația ta are `autoconnect = yes;` activat automat!**

---

## 📋 CE ESTE AUTOCONNECT?

**`autoconnect`** este o setare în blocul `Connect {}` care face ca serverul tău să se **reconecteze automat** la serverul HUB dacă conexiunea se pierde.

---

## 🔍 UNDE E CONFIGURAT?

În `install.sh` linia **1055**, când generează blocul Connect:

```bash
print "    autoconnect = yes;"
```

**Rezultat în `ircd.conf`:**
```conf
Connect {
    name = "HUB.UnderChat.org";
    host = "10.0.0.1";
    password = "parola-link";
    port = 4400;
    class = "Server";
    autoconnect = yes;  ← AICI! ✅
    hub;
};
```

---

## 🎯 CE FACE AUTOCONNECT?

### **Cu `autoconnect = yes;`:**
1. ✅ Serverul pornește → **Conectează automat** la HUB
2. ✅ Conexiune pierdută (netsplit) → **Reconectează automat** după un interval
3. ✅ HUB restart → Serverul tău **reincearcă conexiunea** automat
4. ✅ **NU trebuie** să conectezi manual cu `/CONNECT`

### **Fără `autoconnect` (sau `autoconnect = no;`):**
1. ❌ Serverul pornește → **NU se conectează** automat
2. ❌ Conexiune pierdută → **NU reconectează** automat
3. ❌ Trebuie **manual**: `/CONNECT HUB.UnderChat.org 4400`

---

## 📊 CONFIGURAȚIA TA ACTUALĂ

**În `install.sh`** (generat automat):
```conf
Connect {
    name = "HUB.UnderChat.org";          # Numele serverului HUB
    host = "10.0.0.1";                   # IP-ul HUB-ului
    password = "parola-link";            # Parola pentru link
    port = 4400;                         # Port server-to-server
    class = "Server";                    # Clasa de conexiune
    autoconnect = yes;                   # ✅ ACTIVAT AUTOMAT!
    hub;                                 # Marchează ca HUB
};
```

---

## ⏱️ INTERVAL RECONECTARE

Intervalul de reconectare este controlat de:

**În Class "Server":**
```conf
Class {
    name = "Server";
    pingfreq = 1 minutes 30 seconds;     # Verificare conexiune
    connectfreq = 5 minutes;             # Interval reconectare ← AICI!
    maxlinks = 1;                        # Maxim 1 conexiune
    sendq = 9000000;                     # Queue de send
};
```

**`connectfreq = 5 minutes;`** înseamnă:
- După **5 minute** de la pierderea conexiunii
- Serverul **încearcă automat reconectarea** la HUB

---

## 👁️ DE CE NU VEZI AUTOCONNECT ÎN STATUS?

**PROBLEMA:** Nu vezi mesaje de genul:
```
*** Trying autoconnect to HUB...
*** Link with HUB established
```

**CAUZA:** Lipsește **SNO_OLDSNO (1)** din snomask!

**SOLUȚIE:** Trebuie să ai `snomask = 157445;` (nu 157445)

### **Calcul corect pentru a vedea TOTUL:**

| Bit | Hex | Nume | Descriere |
|-----|-----|------|-----------|
| **1** | **0x1** | **SNO_OLDSNO** | **Link messages** (autoconnect) ⭐ |
| 4 | 0x4 | SNO_OPERKILL | Oper kills |
| 256 | 0x100 | SNO_HACK4 | OPMODE |
| 512 | 0x200 | SNO_GLINE | G-lines |
| 1024 | 0x400 | SNO_NETWORK | Server connects (Net junction) |
| 8192 | 0x2000 | SNO_OLDREALOP | Oper changes |
| 16384 | 0x4000 | SNO_CONNEXIT | Client connects |
| 131072 | 0x20000 | SNO_NICKCHG | Nick changes |

**TOTAL:** 1 + 4 + 256 + 512 + 1024 + 8192 + 16384 + 131072 = **157445**

### **Configurație corectă pentru a vedea autoconnect:**

```conf
Operator {
    name = "Username";
    snomask = 157445;  ← Include SNO_OLDSNO pentru link messages! ✅
};
```

### **Ce vei vedea ACUM:**

```irc
# Când serverul încearcă autoconnect:
[14:05] -irc.server.org- *** Notice -- Link with HUB.UnderChat.org[10.0.0.1] established

# Când conexiunea reușește:
[14:05] -irc.server.org- *** Notice -- Net junction: YourServer HUB.UnderChat.org

# Când conexiunea se pierde:
[14:10] -irc.server.org- *** Notice -- Link with HUB.UnderChat.org canceled: Connection lost

# După 5 minute, încearcă din nou:
[14:15] -irc.server.org- *** Notice -- Link with HUB.UnderChat.org[10.0.0.1] established
```

---

## 🔧 MODIFICARE AUTOCONNECT

### **Dezactivare autoconnect (NU recomandat):**

```bash
nano /home/ircd/ircd/lib/ircd.conf

# Găsește blocul Connect și schimbă:
Connect {
    name = "HUB.UnderChat.org";
    host = "10.0.0.1";
    password = "parola-link";
    port = 4400;
    class = "Server";
    autoconnect = no;   ← Schimbat de la yes la no
    hub;
};

# Salvează: Ctrl+O, Enter, Ctrl+X
# Restart: pkill ircd && /home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf
```

### **Schimbare interval reconectare:**

```bash
nano /home/ircd/ircd/lib/ircd.conf

# Găsește Class "Server" și schimbă:
Class {
    name = "Server";
    pingfreq = 1 minutes 30 seconds;
    connectfreq = 2 minutes;  ← Schimbat de la 5 la 2 minute
    maxlinks = 1;
    sendq = 9000000;
};

# Salvează și restart
```

---

## 🎮 TESTARE AUTOCONNECT

### **Test 1: Verifică configurația:**
```bash
grep -A 10 "Connect {" /home/ircd/ircd/lib/ircd.conf | grep autoconnect
```

**Output așteptat:**
```
    autoconnect = yes;  ✅
```

### **Test 2: Pornește serverul:**
```bash
/home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf
tail -f /home/ircd/ircd/log/ircd.log
```

**Ar trebui să vezi:**
```
[INFO] Attempting autoconnect to HUB.UnderChat.org
[INFO] Connected to HUB.UnderChat.org
```

### **Test 3: Simulează netsplit:**
```bash
# Pe HUB, ca oper:
/SQUIT LeafServer :Test netsplit

# Așteaptă 5 minute (connectfreq)
# Serverul tău va încerca automat reconectarea!
```

**În log ar trebui:**
```
[INFO] Connection to HUB lost
[INFO] Waiting 5 minutes before reconnect attempt
[INFO] Attempting autoconnect to HUB.UnderChat.org
[INFO] Connected to HUB.UnderChat.org
```

---

## 📋 COMPARAȚIE

| Aspect | `autoconnect = yes;` | `autoconnect = no;` |
|--------|---------------------|---------------------|
| **La pornire** | ✅ Conectează automat | ❌ NU conectează |
| **După netsplit** | ✅ Reconectează automat | ❌ NU reconectează |
| **Interval** | Folosește `connectfreq` | N/A |
| **Comandă manuală** | Nu e necesară | Necesită `/CONNECT` |
| **Recomandare** | ✅ **RECOMANDAT** | ❌ Nu pentru production |

---

## 💡 RECOMANDĂRI

### **Pentru Servere LEAF (non-HUB):**
✅ **Păstrează `autoconnect = yes;`** - RECOMANDAT!
- Serverul se reconectează automat la HUB
- Reduce downtime-ul rețelei
- Nu necesită intervenție manuală

### **Pentru Servere HUB:**
⚠️ **Depinde de topologie:**
- Dacă HUB-ul se conectează la alt HUB superior → `autoconnect = yes;`
- Dacă HUB-ul este root (top-level) → `autoconnect = no;` sau fără Connect blocks

### **Interval reconectare:**
✅ **`connectfreq = 5 minutes;`** - Interval bun pentru production
- Nu prea des (evită spam)
- Nu prea rar (reduce downtime)
- Balanță între performanță și disponibilitate

---

## 🎯 CONCLUZIE

### **DA, ai autoconnect activat! ✅**

**Configurația ta:**
```conf
Connect {
    autoconnect = yes;  ← ACTIVAT AUTOMAT!
    connectfreq = 5 minutes;  ← Interval reconectare
};
```

**CE ÎNSEAMNĂ:**
- ✅ Serverul se **conectează automat** la HUB la pornire
- ✅ Se **reconectează automat** după netsplit
- ✅ Interval reconectare: **5 minute**
- ✅ **NU trebuie** intervenție manuală

**RECOMANDARE:** ✅ **Păstrează așa!** Este configurația ideală pentru servere production!

---

## 📚 REFERINȚE

**Documentație:**
- `doc/example.conf` - Exemplu Connect block
- `install.sh` linia 1055 - Generare autoconnect

**Features Related:**
- `CONNECTFREQUENCY` în features
- `MAXIMUM_LINKS` în Class Server

**Comenzi IRC:**
- `/CONNECT server.name port` - Conectare manuală
- `/SQUIT server :reason` - Deconectare server
- `/STATS c` - Vezi Connect blocks (ca oper)

---

**Versiune**: v1.7.5  
**Data**: 15 Februarie 2026  
**Status**: ✅ AUTOCONNECT ACTIVAT în configurație!  
**Interval**: 5 minute (connectfreq)

