Skip to content

IRC gateway for Chatujme.cz — connect via any IRC client (mIRC, HexChat, irssi). Python 3.8+, RFC 1459 subset, SSL/TLS, Docker, IDLER, NickServ. Windows EXE included.

License

Notifications You must be signed in to change notification settings

Chatujme/ChatujmeGW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

187 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatujmeGW

Python 3.8+ License: MIT Docker

IRC Gateway pro Chatujme.cz — připojte se k chatu pomocí libovolného IRC klienta (HexChat, mIRC, irssi, WeeChat a další). Gateway komunikuje s Chatujme.cz API (api.chatujme.cz/irc) a překládá IRC protokol na volání interního API.

Veřejná IRC brána

Chatujme.cz provozuje veřejnou instanci této brány:

Server irc.chatujme.cz
Port 6667
Port SSL/TLS 6697

Přihlášení probíhá standardním IRC způsobem — IRC příkazy NICK, USER a PASS s přihlašovacími údaji k účtu na Chatujme.cz. Registrace nových účtů přes IRC není možná, pouze přes web (chatujme.cz/registrace).

Místnosti se adresují číslem: /join #12345 (číslo místnosti z webu).

Doporučené IRC klienty

Platforma Klient
Windows HexChat, mIRC
macOS HexChat, Textual
Linux HexChat, WeeChat, Irssi
Android Revolution IRC
iOS Palaver

Self-hosting

Požadavky

  • Python 3.8+
  • Žádné externí závislosti (pouze stdlib)

Spuštění

# Plain IRC na portu 6667
python3 chatujmegw.py

# S debug výstupem
python3 chatujmegw.py --port 6667 --listen 0.0.0.0 --debug 1

# SSL/TLS na jednom portu
python3 chatujmegw.py --ssl --ssl-cert cert.pem --ssl-key key.pem --port 6697

# Dual-port režim (plain 6667 + SSL 6697)
python3 chatujmegw.py --port 6667 --ssl-port 6697 --ssl-cert cert.pem --ssl-key key.pem

Parametry

Parametr Popis Výchozí
--port Port pro naslouchání 6667
--listen Bind adresa 0.0.0.0
--debug Debug úroveň (0–2) 0
--ssl SSL/TLS na hlavním portu
--ssl-port Druhý port pro SSL (dual-port mód)
--ssl-cert Cesta k SSL certifikátu (PEM)
--ssl-key Cesta k SSL privátnímu klíči (PEM)

SSL/TLS

Minimální verze TLS 1.2. Self-signed certifikát pro testování:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes \
  -subj "/CN=chatujme.cz/O=ChatujmeGW/C=CZ"

Docker

# Docker Compose
docker compose up -d

# Manuální build
docker build -t chatujmegw .
docker run -d -p 6667:6667 -p 6697:6697 --restart always --name chatujmegw chatujmegw

Build EXE (Windows)

pip install pyinstaller
pyinstaller --onefile --console --icon=chatujme.ico chatujmegw.py

Předkompilovaný dist/chatujmegw.exe je součástí repozitáře.


Podporované IRC příkazy

Základní

Příkaz Popis
NICK Nastavení nicku
PASS Heslo k účtu
USER Uživatelské jméno
JOIN #id Vstup do místnosti (číslo místnosti)
PART #id Odchod z místnosti
PRIVMSG #id :text Zpráva do místnosti
PRIVMSG nick :text Soukromá zpráva
LIST Seznam místností
WHO #id Uživatelé v místnosti
WHOIS nick Informace o uživateli
NAMES #id Seznam uživatelů
AWAY :text Nastavení away zprávy
QUIT Odpojení
PING / PONG Keepalive
CAP Capability negotiation
VERSION Verze serveru
USERHOST nick Host uživatele
MOTD Message of the Day

Správce místnosti (OP)

Příkaz Popis
KICK #id nick :důvod Vykopnutí uživatele
MODE #id +o nick Předání správce
TOPIC #id :text Změna popisu místnosti

NickServ / Registrace

Příkaz Popis
NICKSERV IDENTIFY / NS ID Již přihlášen přes PASS
NICKSERV REGISTER / REGISTER Přesměruje na web registraci

IDLER (anti-idle)

Příkaz Popis
IDLER ON / OFF Zapnout/vypnout
IDLER STATUS Aktuální nastavení
IDLER TIME <s> Interval nečinnosti (výchozí: 2400 s = 40 min)
IDLER TEXT <texty> Zprávy oddělené čárkou (výchozí: ., .., AFK)

CTCP

VERSION, PING, TIME, ACTION (/me)

Symboly u jmen

Symbol Význam
@ Operátor místnosti
% Half-op (omezená práva)
+ Voice

Bezpečnostní funkce

  • Rate limiting: max 5 spojení/IP za 60 s, max 10 příkazů/s na spojení
  • Max 378 současných spojení
  • Validace nicku (4–23 znaků, a-z 0-9 - _, musí začínat písmenem)
  • Validace room ID (číselné, max 999999)
  • IRC protocol injection prevence (sanitizace CRLF, null bytes)
  • Maskování hesel a tokenů v logu
  • In-memory cookies (žádné soubory)
  • API komunikace výhradně přes HTTPS
  • TLS 1.2+ pro SSL spojení

RFC kompatibilita

Gateway implementuje subset RFC 1459.

Numerické kódy (35+)
Kód Název Popis
001 RPL_WELCOME Uvítací zpráva
002 RPL_YOURHOST Info o serveru
003 RPL_CREATED Datum vytvoření
004 RPL_MYINFO Info o serveru
301 RPL_AWAY Uživatel je pryč
302 RPL_USERHOST Host uživatele
305 RPL_UNAWAY Již nejsi pryč
306 RPL_NOWAWAY Jsi označen jako pryč
311 RPL_WHOISUSER WHOIS info
312 RPL_WHOISSERVER WHOIS server
313 RPL_WHOISOPERATOR WHOIS operátor
315 RPL_ENDOFWHO Konec WHO
317 RPL_WHOISIDLE WHOIS idle
318 RPL_ENDOFWHOIS Konec WHOIS
319 RPL_WHOISCHANNELS WHOIS místnosti
321 RPL_LISTSTART Začátek LIST
322 RPL_LIST Položka LIST
323 RPL_LISTEND Konec LIST
324 RPL_CHANNELMODEIS Módy místnosti
331 RPL_NOTOPIC Bez tématu
332 RPL_TOPIC Téma místnosti
351 RPL_VERSION Verze serveru
352 RPL_WHOREPLY WHO odpověď
353 RPL_NAMREPLY Seznam uživatelů
366 RPL_ENDOFNAMES Konec NAMES
368 RPL_ENDOFBANLIST Konec ban listu
372 RPL_MOTD MOTD řádek
375 RPL_MOTDSTART Začátek MOTD
376 RPL_ENDOFMOTD Konec MOTD
378 RPL_WHOISHOST WHOIS host
401 ERR_NOSUCHNICK Nick neexistuje
403 ERR_NOSUCHCHANNEL Místnost neexistuje
421 ERR_UNKNOWNCOMMAND Neznámý příkaz
444 ERR_NOLOGIN Chyba přihlášení
461 ERR_NEEDMOREPARAMS Chybí parametry
474 ERR_BANNEDFROMCHAN Zakázán vstup
482 ERR_CHANOPRIVSNEEDED Nedostatečná oprávnění

Řešení problémů

  • Kódování: nastavte UTF-8 v IRC klientu
  • Firewall: ověřte, že porty 6667/6697 nejsou blokované
  • Timeout: spojení má 5minutový timeout, PING se posílá každých 60 s

Licence

MIT License

Autor

LuRylury@lury.cz

Původní projekt založen na lidegw.

About

IRC gateway for Chatujme.cz — connect via any IRC client (mIRC, HexChat, irssi). Python 3.8+, RFC 1459 subset, SSL/TLS, Docker, IDLER, NickServ. Windows EXE included.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published