The TR-IRCD 5.0 is no longer based only on Bahamut, though the procotol
modules use the same definition. Network code, and module code ideas are
borrowed from hybrid-7, the coming EFnet ircd. Information about hybrid can be
gained on http://www.the-project.org.
Next Release 5.5
a) New Features
- Linked Channels, channelmode +L
- Channelmode +C : block channel ctcp
- Channelmode +w : disable wordfilters
- Channelmode +g : moderation on non registered nicknames
- Channelmode +d : Hide quit/part reason messages
- New config files for klines, glines, qlines, zlines, jupiters
- /infoconf command
- /copyright command
- /ucheck command, to check for updates - only for systems using cvs
- Turkish help files
- A new thread for the loader
- A new thread for the proxy scanner - based on libopm
- /proxychk command to do additional scan tasks
- A configuration file for the integrated proxy scanner
- Greek and Greeklish numeric replies
- Usermode +h : Helper
- Usermode +H : see hidden things (realhost, secret channels) This also took
away these privileges from operators
- Added see_hidden configuration directive for operators
- Modified the listenblock to set serverports, clientports, serviceports,
and client_ssl ports
- Channelmodes and usermodes are sorted automatically as they become
- The operdo command has been made modular
- Added SSL for client connections, code based on the SSL Extension to
Bahamut, modified to comply with the new network architecture.
- Many bugfixes
- Many code cleanups
- REXCOM command as a new interface for kline/quarantine/sgline/etc using
- The web server can be used to configure the ircd, making changes visible
on the fly, and enabling saving the new configuration file.
- Unix Socket interface is being used to communicate between proxy thread
and the main ircd thread
Current Release 5.1.x
- The ircd now supports modules and dynamic linking of modules.
- The whole network architecture has been rewritten. Old Bahamut network code,
which was based on an ancient version of hybrid (5.3) is totally removed. The
new architecture is mostly inspired by hybrid7.
- The ircd can now be compiled to choose between select/poll/kqueue/devpoll/SIGIO
- Old linked list structures are removed, new double linked lists are
- Many code sections are improved.
- File descriptor management is improved, in order to work with the new
- DBuf* and friends are removed, linebuf and friends from hybrid7 are
- Heap Allocation functions are improved
- Protocol message management functions are improved.
- Introduction of hook management similar to hybrid7
- A new ircd.conf, similar to the one from hybrid7 is introduced.
- Channelmodes can now be loaded just like protocol command modules to the
ircd while running.
- The Ircd is now compatible with other state of the art ircds:
- TR-IRCD 4.x
- Bahamut Halcyon
- The Ircd supports protocol modules which do the initialization for
compatiblity and evolve callbacks for different functions so that the server can
send different lines to different ircds (NICK, SERVER, CAPAB, etc...)
- The ircd no longer uses flags and similar in the main loop, it uses an event
- The name resolving code has been improved, libadns is now integrated.
- The ircvsnprintf() is improved and introduces new determiners:
- %C = client structure name, depending if a user structure is available,
only the name or nick!user@[fake]host
- %~C = client structure name
- %^C = client structure name, depending if a user structure is available,
- %*C = faked server name (if servername is being hidden), or equivalent of %D
- %!C = client structure ID.
- %H = channel structure name
- %K = confitem structure name
- %N = protocol numeric value
- Whole sendto_* function set has been rewritten.
- New prefix preparation functions are introduced. Currently to support
Tokens, and identities from Bahamut 1.6
- Numerics and notices are sent easier.
- Newly created channels are +Tn instead of +tn
- A new local channel &SNOTICE is introduced, to send even less notices
directly to ircops.
- Identity management similar to Bahamut 1.6
- Zipped links and encrypted links are now fully functional.
- The Ircd can be run in compatibility mode, then every kenora extensions will
be disabled and the ircd will work like chimera.
- This disabling includes identities, tokens, and some channelmode modules.
- In native mode the ircd supports the new CLIENT line
- The Ircd supports Greek to Greeklish conversion via the usermode +t
(translation) (Code evolved from irc.gr ircd)
- The Ircd can be compiled with OpenSSL Support to create the DH Key instead
of the GMP based way. Both ways can be used.
- MD5 based checksum control code a la Bahamut Halcyon has been added, can be
done via /hash
- The ircd completely supports IPv6, both for client and server connections.
The included asynchronous dns client library ensures correct resolving of IPv6
- A new conversion script takes care of the conversion from the old
configuration files to the new format.
- Kline behavior is changed, klines will no longer be written to the server
kline file, and zlines also not.
- A new LogEvent system handles log functions as events and manages them when
- Makefile has also support for uninstall and uninstall_all
- Detection for GNU Make utility is available
- Token Version 1 protocol support is finalized
- Many new modes are introduced:
- Channelmode +x : Hides the nick, who issued OP only commands:
- Channelmode +M : Moderated nick!user@host's : addresses that cannot send to
- Channelmode +z : Banned channels : Users in given channels cannot join this
channel ( +z #ircops )
- Channelmode +T : Topic change only by protected users
- Channelmode +h : halfops, users that are permitted to kick
- Channelmode +f : Flood control (Lines:in time) works perfectly with the new
flood code from hybrid7
- Channelmodes +N : No users with unresolved IPs may join.
- Multiple language support similar to the way services works, therefore also
not compatible to the way hybrid7 works. User based language selection will be
possible (/setlang), but also server standard language will be allowed to be changed.
- The ircd can easily detect http proxies and disconnect connections from
- Under contribution, /locops, /sadmins, /admins, /rnotice is available.
- RNOTICE can be used to send a notice to all registered users.
- Server Names can now be hidden, there is a server hide technology that can
be configured to hide servers in /links, /map.
- Or read LINKS from a file, or flatten the output of links, that every server
looks as if connected to the local server
- A new command, TMODE, ensures that channel modes are timestamped and modes
from the newer channel after the netjoin are ignored.
- The NETSET command can be used to use /set for all network servers.
- The ircd can now be compiled under this environments: GNU/Linux, FreeBSD,
HPUX 11.00, Cygwin Latest, Solaris, OSF
- Every ./configure option can be used on GNU/BSD
- Cygwin does not support shared modules. Therefore, you are required to
./configure with --disable-shared-modules
- Preliminary support for MacOS X, with code evolved from hybrid7 is
- Removal of umode +i, and make +i standard non removeable (Do we need to send
it via NICK for backwards compatibility ?)
a) Cosmetic and IRCop friendly issues
- Operators can join +b, +i and +l channels
- Operators can see /whois (requires umode +h)
- Operators can do /names and /who for every channel
- Operators can send to +m and +b channels
- Quit messages are now filtered for "irc." and "/server"
- Only channel operators can send channel notices
- Invite requires chanop status as defined with IRCnets RFCs
- Modified Operator notices to include the corresponding O:Line
hostname and Uid
- Modified Qlined nickname texts to include the evaluating
qline and reason
- m_operdo function : OPERDO command with 3 parameters
- /operdo mode #channel parameters
- /operdo kick #channel user reason
- /operdo topic #channel :topic
- Implemented a way to create autokill and kline exclusions.
The result is the EXCLUDE command, which is working just like an autokill, but
it only reverses the effect. An exclusion prevents any types of klines from
affecting a user. An exclusion may expire like autokills, and may also be
removed by REXCLUDE commands.
- The exclusion list may be viewed through an /stats E, and any
temporary exclusion may be removed by an explicit /rehash excludes.
- Added new protocol commands: m_ircops, m_map, m_display
- m_display requires the third field of the X:Line to print out the server
- IRCOPS command displays the list of online ircops
- MAP command is an oper only command to display network map
- DISPLAY command prints out the server config file
b) Protocol Additions
- m_nethtm function : NETHTM command to move every server to
/htm if desynched
- m_(un)gline function : GLINE and UNGLINE commands, actually
placing klines and propagating. (Format : /gline duration user@host :reason)
- m_svsjoin function : SVSJOIN command to make a nick join a
channel, with TS3
- m_(un)jupiter function : JUPITER command to jupiter channel
name masks, so that they cannot be joined.
- Added Command Aliases: /ns for /nickserv, /cs for /chanserv,
/ms for /memoserv, /os for /operserv
c) Mode Problematic
they do not appear in a /names list, and cannot receive channel text. This is a
needed option, for those server owned channels are kept open with the server
itself sitting in them, and noone should see the server as a user.
Added ZOMBIE usermode flag, can only be set with SVSMODE +z,
a zombie may not send privmsgs.
Created #services channel, which is also +q, and used by
services for services log purposes.
Every server owned channel, the #services channel are kept
+tnOq, except &NOTICES, which is only +tnq. #services is additionally +ps.
Created usermode +R, which stops non +r nicknames from sending text.
Created channelmode +a, PROTECT, which ONLY protects a user from being
Created channelmode +u, OWNER, which is kick aquivalent to kick and deop
- Added Chanmode +e : ban exceptions with regards to irc2
- Added Chanmode +I : channel invites with regards to irc2
- Removed many usermodes, rewrote sendto_*ops_lev to use server
owned channels, instead of sending notices.
- +s +k +c +m +e +d +f +y +b are removed
- Introduced &STATS, &CONNECTS, &NOTICES, &SPAMBOT, &DEBUG,
&FLOOD, &REJECTS, &KILLS, &DCCSEND, where the server sends a notice to that
channel, the names correspond to those removed usermodes.
- Added QUIET usermode flag, and +q Channelmode. Noone except
the server may be set quiet, and only the server itself can set a channel +q,
even not the U:Lined. If a channel is set +q, a new user joining cannot see
other users in that channel. No text can be send to a +q channel. If a user is
d) More Features
- Added Usermode +x : spoofed hostnames based on
crypt() Requires CAPAB to DT1, a Protocol Change designed by DarkStar and me.
- chatops does not exist anymore.
- Rearranged source files for many items.
- A better was to filter QUIT messages was implemented
- Seperated many functions into different files to get a better readibility
- Implemented fixes from Bahamut 1.4.29
- Fakehosts are created using md5
- Added KILLNOIDENT command to /set, which blocks every user without an ident
- Added a way to let operators choose their own fakehost output via /server
- Added a way to change the ircop fakehost (via the 5.th field of the oper
Iline) without changing STAFF_ADDRESS
- Added a way to block http proxies.
e) SERVICE structures
- Implemented SERVICE structures with regards to IRCnet. These
do differ from that what you may be used to from that network, but still use the
same concept. A service is a structure between user and server. It is like a
user, for it does not receive a burst. But also like a server, because, via the
options in SERVSET command, the service can choose what kinds of protocol
commands it is willing to see. A Service can be talked to via the SQUERY
command, and the list of services online is got through SERVLIST command.
- The SERVSET command also differs from that on IRCnet. I used
MODE like letters.
- The modes on servset are: PONQKSZLRUjkpmt. These mean:
prefixed messages, OPERs, NICKs, QUITs, KILLs, SERVERs, SERVICEs, SQUITs, Remote
NICKs, UMODEs, JOINs, KICKs, PARTs, MODEs, TOPICs.
- The commands look like these:
SERVICE name ident :description - if a client is connecting to
SERVICE name timestamp hopcount flags ident host server
:description - if a remote server is introducing a service
A Flag is got from the S:line, U for Ulined, A for AKILL
enabled, H for Routing capable.
SERVSET name +modes-modes
is the way the servset command should be used.
SERVLIST does not have any parametres, and
SQUERY name :text is the usage for the squery command.