From 636a0184fd3f968c2ca157acdfdbc596d7fe441c Mon Sep 17 00:00:00 2001
From: cyan <>
Date: Mon, 8 Sep 2003 12:14:15 +0000
Subject: [PATCH] Rewrote the default ircd.conf from scratch to be Synchronet
 IRCd specific and documented inside the file.

---
 ctrl/ircd.conf | 447 +++++++++++++++++++++++++------------------------
 1 file changed, 229 insertions(+), 218 deletions(-)

diff --git a/ctrl/ircd.conf b/ctrl/ircd.conf
index 7cfb8b4f1d..b999c48637 100644
--- a/ctrl/ircd.conf
+++ b/ctrl/ircd.conf
@@ -1,265 +1,276 @@
+# $Id$
 #
-# ircd.conf.example
+# ircd.conf - Synchronet IRCd default configuration file by Randy Sommerfeld.
 #
-# For use with the Synchronet IRC daemon, based off of ircd.conf from
-# Bahamut 1.4
+# *** The format of this file is very similar to that of the configuration file
+#     used by Bahamut and other IRC daemons out there.  You should be able to
+#     take a Bahamut ircd.conf and allow Synchronet IRCd use it as-is, other
+#     configs will need a little editing, first.
 #
-# --- This file supports tokens.  The supported tokens are:
+# *** If you're new to IRC or configuring the IRCd, please read the enclosed
+#     comments very carefully.  Wrong configuration options in this file will
+#     destabalize your server, or at worst crash the IRCd.  You've been warned.
 #
-# SYSTEM_HOST_NAME	Your system hostname as defined in scfg
-# SYSTEM_NAME		Your BBS name as defined in scfg
-# SYSTEM_QWKID		Your QWKID as defined in scfg
-# VERSION_NOTICE	The short form Synchronet version notice
+# *** Unlike the traditional ircd, which reads the configuration file from the
+#     bottom up, we read this file from the top down.
 #
-# ---
+# *** This file supports some basic tokens.  The supported tokens are:
 #
+#	SYSTEM_HOST_NAME	Your system hostname as defined in scfg
+#	SYSTEM_NAME		Your BBS name as defined in scfg
+#	SYSTEM_QWKID		Your QWKID as defined in scfg
+#	VERSION_NOTICE		The short form Synchronet version notice
+#	QWK_PASSWORD		Your QWK network password as defined
 #
-# M: {MANDATORY} - This line sets the server name and description.
+########## M:Line ## Required ## Compatibility: 'IP' unused
+#	This line configures what your server name and description are set to.
+# If you're running the IRCd standalone from jsexec, you can also define what
+# port it uses to accept connections on, also.  If you're connecting to the
+# Synchronet IRC Network, your server name must be your 'qwkid.synchro.net'
+# hostname, and that host must point to the IP address that the IRCd will be
+# running on.
 #
-#   {M:Line Syntax}
-# M:Hostname:IP(Unused):Server Description:Port(Unused)
+# M:hostname:ip(Unused):description:port
 #
 M:SYSTEM_QWKID.synchro.net:*:SYSTEM_NAME:*
 #
+########## A:Line ## Required ## Compatibility: FULL
+#	This line defines what sort of information is returned when a user uses
+# the /ADMIN command.  It's intended to provide some sort of useful information
+# about who runs the server.  By default, it'll display some information about
+# your BBS.  The final string MUST be a valid contact email address.
 #
-# A: {MANDATORY} - This line provides your administrative information, such as
-# contact addresses.  This informationis viewed with /admin <server>.  The
-# last part of your admin info MUST be a valid email address as per RFC1459.
+# A:line1:line2:contact email
 #
 A:SYSTEM_NAME (SYSTEM_QWKID):VERSION_NOTICE:Sysop- <sysop@SYSTEM_HOST_NAME>
 #
-#
-# Y: {SUGGESTED} - These lines define connection classes, which allow you to
-# fine-tune client and server connections.  Clients and servers should be 
-# placed in seperate classes, and eachset of servers should have their own 
-# class.  You may also wish to seperate clients into seperate classes based 
-# on location.
-#
-# The class numbers are not arbitrary.  In auto-connecting servers, the higher
-# number, the higher the auto-connect priority.
-#
-#   {Y:Line Syntax}
-# Y:Class Number:Ping Frequency:Connect Frequency:Maximum Links:SendQ
-#
-# Ping Frequency - The amount of time (in seconds) that the server will wait
-# before dropping the connection with Ping Timeout.
-#
-# Connect Frequency - The amount of time between attempts to connect to servers
-# in that class.  Set this to 0 for client Y:Lines.
-#
-# {Synchronet} Y:Lines are unsupported as of version 1.0, but will be in the
-# future.
-#
-# Class 50 - Hub to hub, autoconnect
-Y:50:90:600:1:20000000
-# Class 51 - Hub to EU hub, autoconnect
-Y:51:180:600:1:20000000
-# Class 33 - Hub to AS leaf
-Y:33:240:0:0:15000000
-# Class 32 - Hub to EU leaf
-Y:32:180:0:0:15000000
-# Class 30 - Hub to US leaf
-Y:30:90:0:0:15000000
-# Class 10 - for known Operators
-Y:10:400:100:100:2000000
-# Class 1 - Normal Users
-Y:1:400:100:100:1000000
-#
-#
-# I: {MANDATORY} - These lines are client-authorization lines.  Without them,
-# clients will be unable to connect to your server.  Wildcards are permitted.
-# You may also require a password or port to connect, but are optional.
-#
-# Ident (RFC 1413) can also be used by placing a @ in the appropriate fields.
-#
-#   {I:Line Syntax}
-# I:IP Address Mask:Password:Domain-Mask:Port:Connection Class
-#
-# {Synchronet} I:Lines are unsupported as of 1.0, however they MAY be added
-# in the future.
-#
-# Standard I:Line allowing anybody to connect to the server:
+########## Y:Line ## Suggested ## Compatibility: FULL
+#	Y:Lines allow you to define 'IRC classes' that are assigned to users
+# and servers when they connect.  It allows you to choose how long a connection
+# can idle before the server sends a PING, how often your IRCd will attempt to
+# auto-connect to uplink servers, the maximum number of clients allowed per
+# IRC class, and the maximum 'sendq' that a user can have before they get
+# disconnected for having excessive amounts of data waiting to be pushed.
+#
+# Y:class number:ping frequency:connect frequency:maximum links:sendq
+#
+#Class 1: Normal users coming in from the net
+Y:1:120:0:100:1000000
+#Class 2: Users coming in from the local BBS
+Y:2:30:0:100:1000000
+#Class 10: IRC operators
+Y:10:400:0:100:2000000
+#Class 30: Leaf->Hub connections
+Y:30:60:300:1:15000000
+#Class 40: Hub->Hub connections
+Y:40:90:60:10:20000000
+#Class 50: Hub->QWK Master connections
+Y:50:90:60:1:20000000
+#
+########## I:Line ## Required ## Compatibility: FULL
+#	When a regular user connects, the IRCd will match them against this
+# list of I:Lines until it finds a match.  The IRCd will stop searching when it
+# finds a match, so you'll want to list your most exclusive lines first, and
+# then the most generic line last.  You may also define that a particular
+# password be required to connect for certain hosts, or that they connect to
+# a particular port.  Matching users will be thrown into a particular IRC
+# class as defined by the above Y:Lines.
+#
+# I:ip mask:password:hostmask:port:irc class
+#
+#BBS users
+I:*@127.0.0.1::*@SYSTEM_QWKID.synchro.net::2
+#everyone else
 I:*@*::*@*::1
 #
-# Oper Hostmasking I:Line requiring the user to connect on a specific port (ie.
-# 7139), and provide the correct password (ie. $packWitU:opernick:operpass):
-#I:*@*:oper.$packWitU:*@*:7149:10
-#
-# Putting NOMATCH in the first field will stop the ircd from matching against
-# the IP, and will force it to match against the hostname.
-I:NOMATCH::rmiller@glass.toledolink.com::1
-#
-#
-# O: {OPTIONAL} - These lines define IRC Operator access.
-#
-# If the user issuing the oper command is not coming from the hostname defined,
-# the user will receive the error message "No O:Lines for your host". The class
-# field denotes the Y:Line class that you want the user to end up in after
-# they've successfully issued the /oper command.
-#
-# {Synchronet} All opers have global operator privledges.  This may change
-# in the future, however, as of 1.0 per-operator flags (such as in Bahamut)
-# are unsupported.
+########## O:Line ## Optional ## Compatibility: EXTENDED
+#	These define who will be able to use the /OPER command to gain special
+# IRC operator access to your server.  This should not be done lightly, as an
+# operator can cause considerable damage to the network, thus care should be
+# taken to secure these lines as much as possible.  In particular, if the user
+# is registered with the BBS, you shouldn't use wildcards in the username
+# portion so that they're forced to ident via their BBS password, and then
+# via their defined /OPER password.
+#	Several flags may be used to greater fine-tune the type of access that
+# each operator has.  Note that if you're only a leaf server on the Synchronet
+# IRC network, your access will be limited to the equivalent of an 'o' flag.
+#
+#	FLAG	COMMAND			NOTES
+#	r	/REHASH
+#	R	/RESTART
+#	D	/DIE
+#	g	/GLOBOPS
+#	w	/WALLOPS
+#	l	/LOCOPS
+#	c	/SQUIT + /CONNECT	Can only SQUIT or CONNECT locally.
+#	C	/SQUIT + /CONNECT	SQUIT or CONNECT servers globally.
+#	k	/KILL			Can only KILL locally.
+#	K	/KILL			Allow global kills.
+#	b	/KLINE
+#	B	/UNKLINE
+#	n	/NOTICE $servername	Global messages to local server only.
+#	N	/NOTICE $*.synchro.net	Allow messages across whole network.
+#	A	-- Unavailable in Synchronet IRCd as of latest version --
+#	a	-- Unavailable in Synchronet IRCd as of latest version --
+#	u	-- Unavailable in Synchronet IRCd as of latest version --
+#	f	-- Unavailable in Synchronet IRCd as of latest version --
+#	F	-- Unavailable in Synchronet IRCd as of latest version --
+#	s	/CHATOPS
+#	x	/DEBUG + /EVAL
+#	o	"Local Operator" which is inclusive of flags: rgwlckbBnuf
+#	O	"Global Operator" which is inclusive of flags: oCKNs
+#	S	Check password against the BBS system password.
+#
+#	Note that the flags 'R', 'D', and 'x' do not appear in any of 'o' or
+# 'O', and must be explicitly defined.  Note that /DEBUG and /EVAL (the 'x'
+# flag) are particuarily dangerous commands and should not be enabled unless
+# you're sure of what you're doing.  The 'S' flag is a special flag which will
+# check against the BBS system password instead of the defined O:Line password.
+#
+#	A user who successfully uses the /OPER command will be assigned their
+# new IRC class as defined by the relevant Y:Line.  A user who does not
+# succeed in an /OPER attempt will have that attempt logged and broadcast
+# locally.
+#
+# O:hostmask:password:nick:flags:irc class
+#
+O:*@SYSTEM_QWKID.synchro.net:*:Sysop:OS:10
+O:bbsuser@*.somebbs.com:mypa$$word:Joe:o:10
+#
+########## U:Line ## Optional ## Compatibility: FULL
+#	A U:Line is a special kind of line that defines which servers on the
+# network are allowed to send unchecked MODE commands among other 'special'
+# services commands (AKILL, et al).  If you're linking to the Synchronet IRC
+# this must be set to 'services.synchro.net'.  Otherwise it should be set to
+# whichever server will be hosting 'services' such as ChanServ, MemoServ,
+# NickServ, or similar.
+#
+# U:server name:*:*
 #
-#   {O:Line Syntax}
-# O:Hostname:Password:Nickname:AccessFlags(Ignored):Class
-#
-O:*@SYSTEM_HOST_NAME:SYSTEM_PASSWORD:Sysop:*:10
-O:*jdoe@*.generic.com:j0hnsPa$$:john:*:10
-#
-#
-# U: {OPTIONAL} - This line defines servers that are allowed to make changes to
-# the IRC environment (ie. mode changes), without obstructing them.
-#
-#   {U:Line Syntax}
-# U:Server Name:Unused:Unused
-#
-# {Synchronet} The following U:Line is required to connect to the Synchronet
-# IRC network.
 U:services.synchro.net:*:*
 #
+########## X:Line ## Optional ## Compatibility: FULL
+#	This is a simple line that adds an extra parameter (a password) to the
+# /DIE and /RESTART commands respectively.  This is in addition to the regular
+# IRC operator requirement and the relevant 'D' and 'R' flags on the O:Line.
 #
-# X: {SUGGESTED} - This line defines the passwords required for an oper to
-# /restart or /die the server, in addition to them having the R or D flags in
-# their O:Line.
-#
-# {Synchronet} Unsupported as of 1.0
-#
-#   {X:Line Syntax}
-# X:diepass:restartpass
-#
-#
-# C: {NETWORKED} - These lines define what servers your server tries to connect
-# to.
-#
-# N: {NETWORKED} - These lines define what servers are permitted to initiate
-# connections to your server.
-#
-# C/N Lines MUST be used in pairs.  One cannot be used without the other.
-#
-# Both the C:Line's port field and the N:Line's flag field may be left blank.
-# If a port is specified in the C:Line, your server will auto-connect.
-#
-# {Synchronet} Currently, Synchronet IRCD does not accept any flags, and
-# definitely does NOT accept Bahamut 'E' or 'Z' connections (encrypted
-# and/or gzipped.)
-#
-#   {C/N:Line Syntax}
-# C:Remote Hostname:Password:Remote Servername:Port:Class
-# N:Remote Hostname:Password:Remote Servername:Flags:Class
-#
-C:127.0.0.1:password:bahamut.synchro.net::30
-N:127.0.0.1:password:bahamut.synchro.net::30
-C:127.0.0.1:password:services.synchro.net::30
-N:127.0.0.1:password:services.synchro.net::30
-#
-#
-# K: {OPTIONAL} - A simplified K:Line as per Synchronet, this is what you
-# define to keep certain users from connecting to your server.  TEMPORARY
-# K:Lines may be added via the IRC operator /KLINE command, but they are not
-# saved on the fly.  Thus, all permanent K:Lines must be placed here by hand.
-# Bahamut-style kline.conf is NOT supported.
-#
-#   {K:Line Syntax}
-# K:hostmask:reason for kline
-#
-K:*@*.lamers.com:No lamers allowed
-K:*root@*:For your own protection, don't IRC as root.
-#
-# q: {OBSOLETE} - q:lines have been removed from bahamut.
-#
-# Q: {OPTIONAL} - These lines prevent users on your server from using certain
-# nicknames.  These are 'reserved' nick names that should not be taken by
-# normal users.  * and ? wildcards are allowed inside the nickname field.
-#
-#   {Q:Line Syntax}
-# Q:*:Reason:Nickname
-#
-# {Synchronet} These Q:Lines are required to link to the Synchronet IRC
-# network.
-#
-Q::Reserved for Services:*Serv
-Q::Reserved for Services:Global
-Q::Reserved for Operators:IRCop
-Q::Reserved for Sysop:Sysop
-#
-#
-# Z: {DISCOURAGED} - These lines block ALL incoming connections from a certain
-# IP address mask.  They are more powerful than K:Lines because they stop users
-# before they've had a chance to register.  This works on servers too, so be
-# VERY careful!  These lines should be used as a LAST RESORT!
-#
-# Z:lines do NOT work on hostnames.
-#
-#   {Z:Line Syntax}
-# Z:IP:Reason for zapping:*
-#
-Z:0.0.0.0:Bogus/Spoofed IP:*
-#
+# X:die password:restart password
+#
+#X:diepass:restartpass
+#
+########## C:Line + N:Line ## Optional ## Compatibility: EXTENDED
+#	These lines define what servers you will be connecting to (C:Line) and
+# receiving connections from (N:Line).  C and N:Lines must always occur in
+# pairs, even if you'll only ever be connecting in one direction.  If you
+# define a port on the C:Line, the IRCd will use the relevant IRC class (as
+# defined on Y:Lines above) to auto-connect at the configured interval.
 #
-# H: {OPTIONAL} - These lines define who you allow to act as a hub.  The first
-# field may use wildcards, and the third field MUST be an exact match for a
-# server's name (NOT the server's hostname!).
+# 	Synchronet IRCd also supports certain flags on the N:Line for
+# determining certain types of behaviour.
+#
+#	FLAG	DESCRIPTION
+#	t	Server is a 'time master' to synchronize time from.
+#	q	Use the relevant server's local QWK password to authenticate.
+#	c	Server is allowed to send special 'CLINE' command.
 #
-#   {H:Line Syntax}
-# H:Servers which are permitted::Hub Servername
-H:*::vert.synchro.net
-H:*::rrx.synchro.net
+# C:hostname or ip address:password:server name:port:irc class
+# N:hostname or ip address:password:server name:flags:irc class
+C:vert.synchro.net:QWK_PASSWORD:vert.synchro.net:6667:30
+N:vert.synchro.net:QWK_PASSWORD:vert.synchro.net:t:30
+#C:rrx.synchro.net:password:rrx.synchro.net::30
+#N:rrx.synchro.net:password:rrx.synchro.net::30
 #
+########## K:Line ## Optional ## Compatibility: CUSTOM
+#	These are the infamous K:Lines (or 'kill' lines) which let you decide
+# what hostmasks should be banned from your server.  The format of this command
+# differs from the standard ircd's, and 'kline.conf' (as per Bahamut 1.4) is
+# not supported at this time.
 #
-# P: {SUGGESTED} - This line allows the server to listen on various additional
-# ports other than what was defined in your Synchronet services config file.
+# K:banmask:reason
 #
-# {Synchronet} This is currently unsupported as of 1.0, but may be in the
-# future.
+K:*.whitehouse.gov:Obviously bogus domain.
+K:~root@*:For your protection, don't IRC as root.
+#K:~*@*:Only users who have registered with the BBS may connect
 #
-#   {P:Line Syntax}
-# P:Remote IP:Local IP:Unused:Port
+########## Q:Line ## Suggested ## Compatibility: FULL
+#	Q:Lines allow you to restrict what nicknames may be used on your
+# server.  If you're linking to the Synchronet IRC Network, these Q:Lines as
+# defined are required.  A user trying to /NICK over to these nicknames or
+# register with a nick that matches a mask here will be given the reason as
+# defined for having their change request denied.
 #
-#P:*:*::6667
+# Q:*:reason:nickmask
 #
+Q:*:Reserved for Services:*Serv
+Q:*:Reserved for Services:Global
+Q:*:Reserved for Operators:IRCop
+Q:*:Reserved for Sysop:Sysop
 #
-# E: {DISCOURAGED} - These lines bypass K:Lines for matching clients.  
-# Username is optional.
+########## Z:Line ## Optional ## Compatibility: FULL
+#	This is to be considered a 'last resort' type of line that will ban
+# users from your server based on IP address only.  The users will be dropped
+# from the server as fast as possible without any processing having been done.
+# This is useful if you're being DOS attacked from a certain IP or range.
+# Be careful with Z:Lines, as you cuold possibly be banning servers wishing to
+# connect to you.
 #
-# Don't use these if you can avoid it!  Services will fight with them!
+# Z:ipmask:reason:*
 #
-# {Synchronet} Unsupported as of 1.0, no plans to add this line in the
-# immediate future.
+Z:0.0.0.0:Obviously bogus IP address:*
 #
-#   {E:Line Syntax}
-# E:Hostmask:Unused:Username
+########## H:Line ## Optional ## Compatibility: EXTENDED
+#	This line has a special meaning for the Synchronet IRCd, in particular
+# it defines which servers are considered to be 'full hubs' and have the
+# responsibility of managing synchronization and control issues.  Hubs are also
+# allowed to have servers connect 'behind' them.
 #
-#E:*.twcny.rr.com::ayukawa
+# H:servermask permitted behind:*:server name
 #
+H:*:*:vert.synchro.net
+H:*:*:freebsd.synchro.net
+H:*:*:rrx.synchro.net
+#An example H:Line which would allow france.synchro.net to connect only *.fr
+#servers to the network.
+#H:*.fr:*:france.synchro.net
 #
-# F: {DISCOURAGED} - These lines bypass K:Lines and also class limits for 
-# matching clients.  Username is optional.
+########## P:Line ## Optional ## Compatibility: FULL
+#	This is a simple type of line that tells the IRCd to listen on
+# additional ports other than what was defined on the M:Line (if you're running
+# from jsexec) or inside the Synchronet services configuration.  One port per
+# line.
 #
-# Don't use these if you can avoid it!  Services will fight with them!
+# P:*:*:*:port
 #
-# {Synchronet} Unsupported as of 1.0, no plans to add this line in the
-# immediate future.
+#P:*:*:*:7000
+#P:*:*:*:6666
 #
-#   {F:Line Syntax}
-# F:Hostmask:Unused:Username
+########## E:Line ## UNSUPPORTED ## Compatibility: UNSUPPORTED
+#	This is an 'exemption' line which will allow users to slip through
+# K:Lines.  These should be as specific as possible.
+# Currently, E:Lines are unsupported by the Synchronet IRCd.
 #
-#F:*.twcny.rr.com::*
+# E:hostmask:*:username mask
 #
+#E:*.shawcable.net:*:cyan
 #
-# T: {OPTIONAL} - These lines override the default proxy monitor information.
-# You should only have one T:Line.  If either field is left empty, the default
-# will be used.
+########## F:Line ## UNSUPPORTED ## Compatibility: UNSUPPORTED
+#	Another exemtion line, this is virtually identical to an E:Line except
+# that an F:Line will also bypass the defined IRC class limits in addition to
+# allowing a user to slip through a K:Line.
+# Currently, F:Lines are unsupported by the Synchronet IRCd.
+#
+# F:hostmask:*:username mask
 #
-# Note: http:// is automatically prefixed on the specified URL
+#F:*.synchro.net:*:*digtlman
 #
-# {Synchronet} Proxy monitoring is unsupported as of 1.0, but may be in the
-# future.  This is probably something that should be done at the services
-# level as opposed to the server level.
+########## T:Line ## UNSUPPORTED ## Compatibility: UNSUPPORTED
+#	A simple line that defines the hostname where proxy scans will
+# originate from.  A message is displayed to the user upon connect containing
+# the URL as defined here pointing them towards more information.
+# The http:// is automatically prefixed on the defined URL.
 #
-#   {T:Line Syntax}
-# T:Hostname:URL
+# T:hostname:url
 #
-#T:monitorbot.synchro.net:www.synchro.net/proxies
+#T:rrx.synchro.net:www.synchro.net/proxyscan
 #
-#   End ircd.conf.example
+##EOF##
-- 
GitLab