8.2 KiB
Ghid: Configurare Badwords / Word Filtering în UnderChat IRCd
📋 IMPORTANT: UnderChat IRCd NU are badwords built-in!
UnderChat IRCd (bazat pe Nefarious/ircu) NU include un sistem nativ de filtrare cuvinte (badwords).
✅ SOLUȚII DISPONIBILE
Opțiunea 1: Servicii IRC (RECOMANDAT) ⭐
Instalează servicii IRC precum Anope sau Atheme care au module dedicate de badwords.
A. Anope IRC Services
Link: https://www.anope.org/
Caracteristici:
- ✅ Modul
os_badwords- Filtrare cuvinte globală - ✅ Modul
cs_badwords- Filtrare pe canal - ✅ Suport regex și wildcard patterns
- ✅ Acțiuni: kick, ban, quiet
- ✅ Exceptii pentru operatori
Exemplu configurare:
# Încarcă modulul
module
{
name = "os_badwords"
}
# Configurare badwords
service
{
nick = "OperServ"
user = "services"
host = "services.underchat.org"
}
# Lista de badwords
badword
{
word = "*www.*"
type = "start" # start, end, single
reason = "Spam link detected"
}
badword
{
word = "*http*"
type = "any"
reason = "URL not allowed"
}
badword
{
word = "badword123"
type = "single"
reason = "Offensive language"
}
Comenzi IRC:
/msg OperServ BADWORD ADD *www.* Spam links not allowed
/msg OperServ BADWORD ADD *http* URLs not allowed
/msg OperServ BADWORD DEL *www.*
/msg OperServ BADWORD LIST
B. Atheme IRC Services
Link: https://atheme.github.io/
Modul: operserv/akill + custom filtering
Exemplu:
loadmodule "modules/operserv/akill";
# Apoi folosești AKILL pentru pattern matching
Opțiunea 2: BotServ / Custom Bot
Creează un bot IRC (Python, Node.js) care monitorizează mesajele și kickează/banează utilizatorii care folosesc cuvinte interzise.
Exemplu Bot Python (irc library):
#!/usr/bin/env python3
import irc.bot
import re
class BadwordBot(irc.bot.SingleServerIRCBot):
def __init__(self, channel, nickname, server, port=6667):
irc.bot.SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
self.channel = channel
# Lista de badwords (regex patterns)
self.badwords = [
r'www\.', # Blochează www.
r'http[s]?://', # Blochează link-uri
r'badword', # Cuvânt specific
]
def on_welcome(self, c, e):
c.join(self.channel)
c.privmsg("OperServ", "OPER botuser password") # Login ca oper
def on_pubmsg(self, c, e):
message = e.arguments[0]
nick = e.source.nick
# Verifică fiecare badword
for pattern in self.badwords:
if re.search(pattern, message, re.IGNORECASE):
c.kick(self.channel, nick, f"Badword detected: {pattern}")
c.mode(self.channel, f"+b *!*@{nick}")
return
def main():
server = "madrid.es.eu.underchat.org"
channel = "#underchat"
nickname = "BadwordBot"
bot = BadwordBot(channel, nickname, server, 6667)
bot.start()
if __name__ == "__main__":
main()
Instalare:
pip3 install irc
python3 badword_bot.py
Opțiunea 3: Modificare Cod Sursă IRCd (AVANSAT)
Poți modifica codul sursă al IRCd-ului pentru a adăuga filtrare de cuvinte.
Fișiere de modificat:
ircd/m_privmsg.c- Handler pentru PRIVMSGircd/m_notice.c- Handler pentru NOTICE
Exemplu simplu (pseudo-cod):
// În ircd/m_privmsg.c, funcția m_privmsg()
// Adaugă înainte de trimiterea mesajului:
const char *badwords[] = {"www.", "http", "badword", NULL};
const char *msg = parv[parc - 1];
for (int i = 0; badwords[i] != NULL; i++) {
if (strstr(msg, badwords[i]) != NULL) {
// Blochează mesajul
sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Message blocked: contains forbidden word '%s'",
sptr, badwords[i]);
return 0; // Nu trimite mesajul
}
}
// ... cod existent pentru trimitere mesaj
⚠️ ATENȚIE: Necesită recompilare și poate introduce bug-uri!
Opțiunea 4: Channel Modes (Limitat)
IRCd-ul suportă mode-uri de canal care pot limita cine poate vorbi:
# Doar voice/halfop/op pot vorbi
/MODE #canal +m
# Apoi dai voice doar utilizatorilor de încredere
/MODE #canal +v nickname
# Blochează utilizatori non-autentificați
/MODE #canal +R
Configurare în ircd.conf:
features {
# Restricționează canalele
"CHMODE_r_NONICKCHANGE" = "TRUE";
"CHMODE_m_NONICKCHANGE" = "TRUE";
}
🎯 RECOMANDARE FINALĂ
Pentru filtrare eficientă de "www." și alte pattern-uri:
Instalează Anope IRC Services:
# 1. Descarcă Anope
cd /opt
wget https://github.com/anope/anope/releases/download/2.0.14/anope-2.0.14-source.tar.gz
tar xzf anope-2.0.14-source.tar.gz
cd anope-2.0.14-source
# 2. Compilează
cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/anope ..
make
make install
# 3. Configurează
cd /opt/anope/conf
cp example.conf services.conf
nano services.conf
# Editează:
# - uplink { ... } - IP și port către IRCd
# - serverinfo { ... } - Nume services
# - Încarcă modulul os_badwords
# 4. Pornește serviciile
cd /opt/anope/bin
./services
# 5. Conectează-te la IRC și configurează
/msg OperServ IDENTIFY password
/msg OperServ BADWORD ADD *www.* Spam links blocked
/msg OperServ BADWORD ADD *http* URLs not allowed
📊 COMPARAȚIE SOLUȚII
| Soluție | Dificultate | Eficiență | Mențineță | Recomandare |
|---|---|---|---|---|
| Anope Services | ⚡ Medie | ⭐⭐⭐⭐⭐ | ⚡⚡⚡ Bună | ✅ RECOMANDAT |
| Custom Bot | ⚡⚡ Medie-Ușoară | ⭐⭐⭐⭐ | ⚡⚡ Ok | ✅ OK pentru teste |
| Modificare IRCd | ⚡⚡⚡⚡ Dificilă | ⭐⭐⭐⭐⭐ | ⚡ Dificilă | ❌ Nu recomandat |
| Channel Modes | ⚡ Foarte ușoară | ⭐⭐ | ⚡⚡⚡ Bună | ✅ Limitat |
🔧 CONFIGURARE RAPIDĂ ANOPE
services.conf (simplificat):
###############
# UPLINK
###############
uplink
{
host = "127.0.0.1"
port = 6667
password = "link-password" # Trebuie să corespundă cu Connect {} din ircd.conf
}
###############
# SERVER INFO
###############
serverinfo
{
name = "services.underchat.org"
description = "UnderChat IRC Services"
pid = "data/services.pid"
motd = "conf/services.motd"
}
###############
# MODULE - BADWORDS
###############
module
{
name = "os_badwords"
}
###############
# OPERSERV
###############
service
{
nick = "OperServ"
user = "services"
host = "services.underchat.org"
gecos = "Operator Service"
}
###############
# ADMIN
###############
oper
{
name = "admin"
type = "Services Root"
password = "admin_password_aici"
}
ircd.conf - Adaugă blocul pentru Services:
# Conectare pentru Services
Connect {
name = "services.underchat.org";
host = "127.0.0.1";
password = "link-password"; # Aceeași cu cea din services.conf
port = 6667;
class = "Server";
autoconnect = yes;
};
# UWorld pentru Services (permisiuni speciale)
UWorld {
name = "services.underchat.org";
};
✅ PAȘI FINALI
- ✅ Instalează Anope Services
- ✅ Configurează uplink în services.conf
- ✅ Adaugă Connect {} pentru services în ircd.conf
- ✅ Pornește services:
/opt/anope/bin/services - ✅ Identifică-te ca admin:
/msg OperServ IDENTIFY password - ✅ Adaugă badwords:
/msg OperServ BADWORD ADD *www.* Spam - ✅ Testează: Scrie "www.test.com" în canal → Ar trebui să fie blocat
📚 RESURSE
- Anope Documentation: https://wiki.anope.org/
- Anope Modules: https://wiki.anope.org/index.php/2.0/Modules
- P10 Protocol (pentru linking):
doc/p10.txtîn repository
🎉 REZULTAT FINAL
După configurarea Anope cu modulul os_badwords:
[15:30] <User> Check out www.spam-site.com
[15:30] * User was kicked by OperServ (Badword detected: *www.*)
[15:30] * OperServ sets mode: +b *!*@user.host
Spam-ul cu "www." este BLOCAT automat! ✅
Autor: UnderChat IRCd Team
Data: 14 Februarie 2026
Versiune: 1.0