TR-IRCD Version 5.0 has the following changes: ---------------------------------------------- Module Support: It is now possible to dynamically link modules to the ircd on runtime. This feature has been also adapted to non dlsym() systems, like hpux. New Network Architecture: The ircd does no longer use the older network architecture of Bahamut Series. It is completely rewritten by hybrid7 coders, and taken from hybrid7 itself. For the socket operation the user is now free to choose between select() poll() : Adviseable to use on Linux based systems poll() on /dev/poll : Adviseable to use on SunOS based systems kqueue() : Recommended to use on FreeBSD based systems poll() on SIGIO Linked Lists vanished, Double Linked Lists are introduced. Hook Management functions help modules to clink into existing code sections. Event Manager: The ircd now uses events to handle the io-loop. It does no longer do additional comparison of flags, but only call the timered events. ircvsnprintf: Improved with determiners to make life easier: %C : client name, or name!user@host %~C : client name only. %^C : client name (user@host) %!C : client id %*C : stealth name %H : channel name %N : numeric number %K : aconf->name sendto functions are rewritten: extern void sendto_channel_butone(aClient *one, int incflags, int exflags, aClient *from, aChannel *chptr, char *token, char *pattern, ...); extern void sendto_channel_butserv(aChannel *chptr, aClient *from, int incflags, int exflags, char *pattern, ...); extern void sendto_common_channels(aClient *user, char *pattern, ...); extern void send_quit_to_common_channels(aClient *from, char *reason); extern int send_message(aClient *to, char *msg, int len); extern void sendto_one(aClient *to, char *pattern, ...); extern void vsendto_one(aClient *to, char *pattern, va_list vl); extern void send_me_notice(aClient *cptr, char *pattern, ...); extern void send_me_numeric(aClient *cptr, int numeric, ...); extern void sendto_one_server(aClient *to, aClient *from, char *token, char *pattern, ...); extern void sendto_one_person(aClient *to, aClient *from, char *token, char *pattern, ...); extern void sendto_ops(char *pattern, ...); extern void sendto_lev(int lev, char *pattern, ...); extern void sendto_gnotice(char *pattern, ...); extern void sendto_users(long umode, char *pattern, ...); extern void sendto_operators(long umode, char *type, char *pattern, ...); extern void sendto_serv_butone(aClient *one, aClient *from, char *token, char *pattern, ...); extern void sendto_match_servs(aChannel *chptr, aClient *from, char *token, char *format, ...); extern void sendto_match_butone(aClient *one, char *mask, int what, char *pattern, ...); extern void sendto_flag_serv_butone(aClient *one, int include, int exclude, aClient *from, char *token, char *pattern, ...); extern void kill_client(aClient *, aClient *, char *, ...); ------------- Identity management: The ircd now passes ids for both users and servers and handles them with the ids. Collision problems get solved easily. Tokens: The commands now have token equivalents and the parse is much more easier since it now is only indexing in the token table. Channel modules are also made modular. But, they only can be loaded once. And not unloaded during runtime. accept_password, operator password, auth password, restart password, die password now have to be encrypted via /mkpasswd or tools/ircpasswd into md5 values. ------------- Channels have new channelmodes +x : HideOps : This will make sure that when entering a channel no channeluser modes are displayed until this user is opped/voiced/halfopped/etc +T : Standard channelmode, means: topic can only be set by +a (protected) users +B : Users in the given channelname are banned in this channel +M : moderated hostnames, like +m on a specific hostname ------------- The ircd will no longer start when run with an unknown parameter. Debug and syslog functions are combined into irclog() The ircd no longer requires syslog. The ircd uses in native mode CLIENT instead of NICK line.