home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * IRC - Internet Relay Chat, doc/INSTALL
- * Copyright (C) 1990,1991,1992, Jeff Trim, Mike Bolotski,
- * Jarkko Oikarinen and Darren Reed.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 1, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
- Installing IRC - The Internet Relay Chat Program
-
-
- Overview of this document:
-
- 1) The config.h file
- 2) Editing the Makefile
- 3) Compiling IRC
- 4) The ircd.conf file
-
-
- 1) Edit the "config.h" file and make changes to the various #DEFINE's:
-
- a) Copy the config.h.dist file to config.h before editing.
-
- b) Define what type of UNIX your machine uses.
-
- Pick the machine type which best describes your machine and change
- the #undef to #define (if needed). Some flavours of Unix require no
- #define and in such cases all others should be #undef'd.
-
- c) DEBUGMODE
-
- Define DEBUGMODE if you want to see the ircd debugging information
- as the daemon is running. Normally this function will be undefined
- as ircd produces a considerable amount of output. DEBUGMODE must be
- defined for either of -t or -x command line options to work.
-
- d) DPATH, SPATH, CPATH, MPATH, LPATH, PPATH
-
- DPATH is provided so that the other pathnames (SPATH, CPATH, etc)
- may be provided in just filename form. When the server starts, it
- chdir's to DPATH before chroot or any other file operation, making
- it the "current directory" for the server. This is where core files
- will go if it core dumps.
-
- Define SPATH to be the directory path to ircd. This is usually
- /usr/local/bin/ircd, unless you don't have installation permission
- there.
-
- Define CPATH to be the directory path to the "irc.conf" file.
- This path is usually /usr/local/lib/irc.conf. The format of this file
- will be discussed later.
-
- The LPATH #define should be set to "/dev/null" unless you plan to
- debug the program. Note that the logfile grows very quickly.
-
- Define MPATH to be the path to the 'motd' (message of the day) file
- for the server. Keep in mind this is displayed whenever anyone
- signs on to your server.
-
- The PPATH is optional, but if defined, should point to a file which
- either doesn't exist (but is creatable) or a previously used PPATH
- file. It is used for storing the server's PID so a ps(1) isn't
- necessary.
-
- e) CHROOTDIR
-
- To use the CHROOTDIR feature, make sure it is #define'd and that
- the server is being run as root. The server will chroot to the
- directory name provded by DPATH.
-
- f) ENABLE_SUMMON, ENABLE_USERS
-
- For security conscious server admins, they may wish to leave
- ENABLE_USERS undefined, disabling the USERS command which can be used
- to glean information the same as finger can. ENABLE_SUMMON toggles
- whether the server will attempt to summon local users to irc by
- writing a message similar to that from talk(1) to a user's tty.
-
- g) SHOW_INVISIBLE_LUSERS, NO_DEFAULT_INVISIBLE
-
- On large IRC networks, the number of invisible users is likely to
- be large and reporting that number cause no pain. To aid and effect
- this, SHOW_INVISIBLE_LUSERS is provided to cause the LUSERS command
- to report the number of invisible users to all people and not just
- operators. The NO_DEFAULT_INVISIBLE define is used to toggle whether
- clients are automatically made invisible when they register.
-
- h) OPER_KILL, OPER_REHASH, OPER_RESTART, LOCAL_KILL_ONLY
-
- The three operator only commands, KILL, REHASH and RESTART, may all
- be disabled to ensure that an operator who does not have the correct
- privilidges does not have the power to cause untoward things to occur.
- To further curb the actions of guest operators, LOCAL_KILL_ONLY can
- be defined to only allow locally connected clients to be KILLed.
-
- i) The rest of the user changable #define's should be pretty much self
- explanatory in the config.h file. It is *NOT* recommended that any
- of the file undef the line with "STOP STOP" in it be changed.
-
- 3) Configure and compile the code.
-
- Edit the root Makefile for the server, uncomment/comment the correct
- CFLAGS/IRCDLIBS lines as appropriate for your system.
- Change DESTDIR to be the same as the path for DPATH in config.h.
- Type "make". This will compile the server, the client, and the services.
- At the end of this step, the server directory will contain 'ircd',
- and the client directory will contain 'irc'. To get the server installed,
- type "make install" which will build a default m4 file for preprocessing,
- copy example.conf and put the server all in DESTDIR. The irc client and
- a copy of the server will also be placed in BINDIR and the modes set
- accordingly.
-
- 4) The ircd.conf file.
-
- After installing the ircd and irc programs, edit the irc.conf file
- as per the instructions in this section and install it in the
- location you specified in the config.h file. There is a sample
- conf file called example.conf in the /doc directory.
-
- Appendix A describes the differences between IP addresses and host
- names. If you are unfamiliar with this, you should probably scan
- through it before proceeding.
-
- The irc.conf file contains various records that specify configuration
- options. The record types are as follows:
-
- 1. Server connections (C,N)
- 2. Machine information (M)
- 3. Client connections (I)
- 4. Default local server (U)
- 5. Operator priviliges (O)
- 6. Administrative info (A)
- 7. Excluded accounts (K)
- 8. Excluded machines (Q)
- 9. Connection Classes (Y)
- 10. Leaf connections (L)
- 11. Service connections (S)
- 12. Port connections (P)
- 13. Hub connections (H)
-
-
- 1. SERVER CONNECTIONS: How to connect to other servers
- How other servers can connect to you
-
- WARNING:
- The hostnames used as examples are really only examples and
- not meant to be used (simply because they don't work) in real life.
-
- Now you must decide WHICH hosts you want to connect to and WHAT ORDER you
- want to connect to them in. For my example let us assume I am on the
- machine "rieska.oulu.fi" and I want to connect to irc daemons on 3 other
- machines:
-
- "garfield.mit.edu" - Tertiary Connection
- "irc.nada.kth.se" - Secondary Connection
- "nic.funet.fi" - Primary Connection
-
- And I prefer to connect to them in that order, meaning I first want to
- try connecting to "nic.funet.fi", then to "irc.nada.kth.edu", and
- finally to "garfield.mit.edu". So if "nic.funet.fi" is down or
- unreachable, the program will try to connect to "irc.nada.kth.se".
- If irc.nada.kth.se is down it will try to connect to garfield and so forth.
- PLEASE limit the number of hosts you will attempt to connect to down to 3.
- This is because of two main reasons:
- a) to save your server from causing extra load and delays
- to users
- b) to save internet from extra network traffic
- (remember the old rwho program with traffic problems when
- the number of machines increased).
-
- The format for the CONNECT entry in the "irc.conf" is:
-
- C:<TARGET Host Addr>:<Password>:<TARGET Host NAME>:<TARGET Host PORT>
- Field: 1 2 3 4 5
-
- for example:
-
- C:nic.funet.fi:passwd:nic.funet.fi:6667
-
- - or -
-
- C:128.214.6.100:passwd:nic.funet.fi:6667
-
- - or -
-
- C:root@nic.funet.fi:passwd:nic.funet.fi:6667
-
-
- Explanation:
-
- Each field is separated with a ":" charcter:
-
- Field 1: Field 1 tells the IRC program which option is being configured.
- "C" corresponds to a server Connect option.
-
- Field 2: Specifies the host name or IP address of the machine to connect
- to. If "user@" prefixes the actual hostname or IP address
- the server will require that the remote username returned by
- the ident server be the same as the one given before the "@".
-
- Field 3: The password of the other host. A password must always be
- present for the line to be recognized.
-
- Field 4: The full hostname of the target machine. This is the name that
- the TARGET server will identify itself with when you connect
- to it. If you were connecting to nic.funet.fi you would receive
- "nic.funet.fi" and that is what you should place in
- this field.
-
- Field 5: The INTERNET Port that you want to connect to on the TARGET
- machine. Most of the time this will be set to "6667".
- If this field is left blank, then no connections will
- be attempted to the TARGET host, and your host will accept
- connections FROM the TARGET host instead.
-
- Some examples:
-
- C:nic.funet.fi::nic.funet.fi:6667
-
- This reads: Connect to host "nic.funet.fi", with no password
- and expect this server to identify itself to you as
- "nic.funet.fi". Your machine will connect to this host to
- PORT 6667.
-
- C:18.72.0.252:Jeff:garfield.mit.edu:6667
-
- This reads: Connect to a host at address "18.72.0.252", using a
- password of "Jeff". The TARGET server should identify
- itself as "garfield.mit.edu". You will connect to Internet
- Port 6667 on this host.
-
- C:irc.nada.kth.se::irc.nada.kth.se
-
- This reads: do not attempt to connect to "irc.nada.kth.se",
- but if "irc.nada.kth.se" requests a connection,
- allow it to connect.
-
- Now back to our original problem, we wanted OUR server CONNECT to 3
- hosts, "nic.funet.fi", "irc.nada.kth.se" and "garfield.mit.edu" in
- that order. So as we enter these entries into the file they must be
- done in REVERSE order of how we could want to connect to them.
-
- Here's how it would look if we connected "nic.funet.fi" first:
-
- C:garfield.mit.edu::garfield.mit.edu:6667
- C:irc.nada.kth.se::irc.nada.kth.se:6667
- C:nic.funet.fi::nic.funet.fi:6667
-
- Ircd will attempt to connect to nic.funet.fi first, then to irc.nada
- and finally to garfield.
-
- Reciprocal entries:
-
- Each "C" entry requires a corresponding 'N' entry that specifies
- connection priviliges to other hosts. The 'N' entry contains
- the password, if any, that you require other hosts to have before
- they can connect to you. These entries are of the same format as
- the "C" entries.
-
- Let us assume that "garfield.mit.edu" connects to your server
- and you want to place password authorization authorization on garfield.
- The "N" entry would be:
-
- N:garfield.mit.edu:golden:garfield.mit.edu
-
- This line says: expect a connection from host "garfield.mit.edu",
- and expect a login password of "golden"
- and expect the host to identify itself as "garfield.mit.edu".
-
- N:18.72.0.252::garfield.mit.edu
-
- This line says: expect a Connection from host "18.72.0.252", and
- don't expect login password. The connecting host should identify itself
- as "garfield.mit.edu".
-
-
- Wildcards domains:
- To reduce the great amount of servers in IRCnet wildcard
- DOMAINS were introduced in 2.6. To explain the usage of
- wildcard domains we take an example of such:
- *.de - a domain name matching all machines
- in Germany.
- Wildcard domains are useful in that ALL SERVERS in Germany
- (or any other domain area) can be shown as one to the
- rest of the world. Imagine 100 servers in Germany, it
- would be incredible waste of netwotk bandwidth to broadcast
- all of them to all servers around the world.
-
- So wildcard domains are a great help, but how to use them ?
- They can be defined in the N-line for a given connection,
- in place of port number you write a magic number called
- wildcard count.
-
- Wildcard count tells you HOW MANY PARTS of your server's name
- should be replaced by a wildcard. For example, your server's
- name is "tolsun.oulu.fi" and you want to represent it as
- "*.oulu.fi" to "nic.funet.fi". In this case the wildcard count
- is 1, because only one word (tolsun) is replaced by a wildcard.
- If the wildcard count would be 2, then the wildcard domain would
- be "*.fi". Note that with wildcard name "*.fi" you could NOT
- connect to "nic.funet.fi", because that would result in a server
- name COLLISION (*.fi matches nic.funet.fi).
-
- I advice you to not to use wildcard servers before you know
- for sure how they are used, they are mostly beneficial for
- backbones of countries and other large areas with common domain.
-
-
- 2. MACHINE INFORMATION
-
- IRC needs to know a few things about your UNIX site, and the "M" command
- specifies this information for IRC. The fomat of this command is:
-
- M:<YOUR Host NAME>:xxx:<Geographic Location>:<Internet Port>
- Field: 1 2 3 4 5
-
- Explanation:
-
- Field 1: "M" specifies a Machine description line
-
- Field 2: The name of YOUR host adding any Internet DOMAINNAME that
- might also be present.
-
- Field 3: -- NOT USED --: Set to Value NULL (No spaces at ALL!).
-
- Field 4: Geographic Location is used to say WHERE YOUR SEVRER is,
- and gives people in other parts of the world a good
- idea of where you are! If your server is in the USA, it is
- usually best to say: <CITY> <STATE>, USA. Like for Denver
- I say: "Denver Colorado, USA". Finnish sites (like
- tolsun.oulu.fi generally say something like "Oulu, Finland".
-
- Field 5: The Internet port your server will use. Should be set to
- the same value as in the config.h file.
-
-
- Example:
- M:tolsun.oulu.fi::Oulu, Finland:6667
-
- This line reads: My Host's name is "tolsun.oulu.fi" and
- my site is located in "Oulu, Finland". My ircd will use
- Internet Port 6667.
-
-
- M:orion.cair.du.edu::Denver Colorado, USA:6667
-
- This line reads: My Hosts name is "orion.cair.du.edu"
- and my site is located in "Denver Colorado, USA".
- I have defined Internet Port number "6667" to be used
- as my IRCD Socket Port.
-
-
- 3. CLIENT CONNECTIONS - How to let clients connect to your IRCD.
-
- A client is a program that connects to the ircd daemon (ircd). Currently
- there are clients written in C and in GNU Emacs Lisp. The "irc"
- program is the C client. Each person that talks via IRC is running
- their own client.
-
- The irc.conf files contains entries that specify which clients are allowed
- to connect to your irc daemon. Obviously you want to allow your cwn
- machine's clients to connect. You may want to allow clients from
- other sites to connect. These remote clients will use your server
- as a connection point. All messages sent by these clients will pass
- through your machine.
-
- The format of this entry in the conf file is:
-
- I:<TARGET Host Addr>:<Password>:<TARGET Hosts NAME>:<Internet Port>
- Field:1 2 3 4 5
-
-
- For example, if you were installing IRC on tolsun.oulu.fi and you wanted
- to allow examples sake let us assume you were making this file for
- tolsun and you wanted to let your own clients to connect to your
- server, you would add this entry to the file:
-
- I:128.214.5.6::tolsun.oulu.fi
- or
- I:tolsun.oulu.fi::tolsun.oulu.fi
-
- If you wanted to let remote clients connect, you could add the
- following lines:
-
- I:*.du.edu::*.du.edu
-
- Allow any clients from machines whose names end in "du.edu" to connect
- with no password.
-
- I:128.214.6.100::nic.funet.fi
-
- Allow clients from a machine with that IP number and the name
- nic.funet.fi to connect.
-
- I:*.tut.fi:secret:*.tut.fi
-
- Allow clients from machines matching *.tut.fi to connect
- with the password 'secret'.
-
- I:*::*
-
- Allow anyone from anywhere to connect your server.
- This is the easiest way, but it also allows people to for example
- dump files to your server, or connect 1000 (or how many open
- sockets per process your OS allows) clients to your machine
- and take your network ports. Of course the same things can be
- done by simply telnetting to your machine's SMTP port (for example).
-
- NEW!!!
- As of the 2.7.2d version of the server, the server is able to accept
- connections on multiple ports. I-lines are required for each P-line
- to allow connections to be accepted. For unix sockets, this means
- either adding I:/path/port::/path/port or some variation (wildcards
- are recognised here). For internet ports, there must be an I-line
- which allows the host access as normal, but the port field of the
- I-line must match that of the port of the socket accepting the
- connectiion. A port number of 0 is a wildcard (matches all ports).
-
- 4. DEFAULT HOSTS (for local clients)
-
- This defines the default connection for the irc client. If you are
- running an ircd server on the same machine, you will want to define
- this command to connect to your own host. If your site is not running
- a server then this command should contain the TARGET host's connection
- information and password (if any). The format for this command is:
-
- U:<TARGET Host addr>:<Password>:<TARGET Host NAME>:<Internet Port>
- Field: 1 2 3 4 5
-
-
- For example:
-
- U:tolsun.oulu.fi::tolsun.oulu.fi:6667
- U:128.214.5.6::tolsun.oulu.fi:6667
- U:tolsun.oulu.fi::tolsun.oulu.fi
-
- If the port number is omitted, irc will default to using 6667.
-
- 5. OPERATOR Privileges: How to become the IRC administrator on your site
-
- To become an IRC Administrator, IRC must know who is authorized to become
- an operator and what their "Nickname" and "Password" is. To add this
- information, EDIT your "irc.conf" file and add the following command
- line to it:
-
- O:<TARGET Host NAME>:<password>:<nickname>:<port>:<class>
- Field: 1 2 3 4 5 6
-
- Explanation:
-
- Field 1: Speficies Operator record. If you use capital letter ('O')
- in it, it specifies a global operator. Small letter ('o')
- specifies a local operator. Local operator has basically the
- same rights except global operator with some restrictions.
-
- Field 2: Tells IRC which host you have the privileges FROM. This
- means that you should be logged into this host when you
- ask for the priviliges. If you specify "tolsun.oulu.fi"
- then IRC will expect your CLIENT to be connected at
- "tolsun.oulu.fi" - when you ask for OPERATOR privileges
- from "tolsun.oulu.fi". You cannot be logged in at any
- other host and be able to use your OPERATOR privileges
- at tolsun, only when you are connected at TOLSUN will this
- work - this is a safeguard against unauthorized sites.
-
-
- Field 3: If your AUTHORIZATION Password - this is the password that
- let's IRC know you are who you say you are! Never tell anyone
- your password and always keep the "irc.conf" file protected
- from all of the other users.
-
- Field 4: The Nickname you usually go by - but you can make this what
- you want. It is better to make this a NICKNAME that no one
- else knows, but anything will do. I usually use my own
- loginname.
-
- Field 5: Unused.
-
- Field 6: The class field should refer to an existing class (preferably
- having a lower number than that for the relevant I-line) and
- determines the maximum number of simultaneous uses of the
- O-line allowable through the max. links field in the Y-line.
-
- Example:
- O:orion.cair.du.edu:pyunxc:Jeff
-
- There is an OPERATOR at "orion.cair.du.edu" that can get
- Operator priviliges if he specifies a password of "pyunxc"
- and uses a NICKNAME of "Jeff".
-
-
-
- 6. ADMINISTRATIVE INFORMATION
-
- The "A" command is used for administrative information about a site.
- The e-mail address of the person running the server should be included
- here in case problems arise.
-
-
- A:<Your Name/Location>:<Your Electronic Mailing Addr>:<other>
- Field: 1 2 3 4
-
- Explanation:
-
- Field 1: "A" specifies an Admin record.
-
-
- Field 2: Use this field to say tell your FULL NAME and where in the
- world your machine is. Be sure to add your City,
- State/Province and Country.
-
-
- Field 3: Use this field to specify your Electronic Mailing Address
- preferably your Internet Mailing Address. If you have
- a UUCP or ARAPnet address - please add that as well. Be
- sure to add any extra DOMAIN information that is needed,
- for example "mail jtrim@orion" probably won't work as a
- mail address to me if you happen to be in Alaska. But
- "mail jtrim@orion.cair.du.edu" would work because you
- know that "orion" is part of the DOMAIN "cair.du.edu".
- So be sure to add your DOMAINNAMES to your mailing addresses.
-
- Field 4: Is really an OTHER field - you can add what you want here,
-
-
- Examples (the line is just one line in the confuration file, here it
- is cut into two lines to make it clearer to read):
-
- A:Jeff Trim - Denver Colorado, USA:INET jtrim@orion.cair.du.edu UUCP {hao,
- isis}!udenva!jtrim:Terve! Heippa! Have you said hello in Finnish today?;)
-
- Would look like this when printed out with the /admin command:
-
- Jeff Trim - Denver Colorado, USA
- INET jtrim@orion.cair.du.edu UUCP {hao,isis}!udenva!jtrim
- Terve! Hei! Heippa! Have you said hello in Finnish today? ;)
-
-
- Note that the A record cannot be split across multiple lines; it will
- typically be longer than 80 characters and will therefore wrap around
- the screen.
-
-
- 7. REMOVING A USER FROM IRC Remove an errant user from IRC on your site.
-
- Obviously it is hoped that you wouldn't have to use this command.
- Unfortunately sometimes a user can become unmanageable and this is your
- only recourse - the KILL USER command. THIS COMMAND ONLY AFFECTS YOUR
- SERVER - If this user can connect to another SERVER somewhere else in
- the IRC-Network then you would have to talk to the administrator on that
- site to disable his access from that IRCD Server as well.
-
- The format of this command is:
-
- K:<Host Name>:<time interval(s)>:<User>
- Field: 1 2 3 4
-
- Explanation:
-
- Field 1: "K" tells the IRCD that you are making a KILL USER command
- entry.
-
- Field 2: In this field you specify the Hostname that the user is
- connecting from. If you wanted to REMOVE connects
- to IRC from "orion.cair.du.edu" then you would want to enter
- "orion.cair.du.edu". If you want to REMOVE ALL HOSTS
- access you can use '*' (Wild Card notation) and no matter
- what host the USERNAME (specified in Field 4) connects from
- s/he will be denied access. Removing all hosts isn't
- very smart thing to do though, why would you run an ircd
- if you allow nobody to connect to it anyways ?
-
- Field 3: Either leave this field empty (no spaces), then then lines
- is active continuously for the specified user/host machine.
- You may also specify intervals during the line should be
- active, see examples above.
-
- Field 4: The USERNAME of the user you want removed from IRC. For
- example 'root'.
-
-
- Some Examples:
- K:orion.cair.du.edu::jtrim
-
- If user 'jtrim' connects to IRC from host "orion.cair.du.edu"
- then IMMEDIATELY REMOVE HIM from my IRCD.
-
- K:*.cair.du.edu::root
-
- If user 'root' connects to IRC from any host that has the
- suffix "cair.du.edu" - then IMMEDIATELY REMOVE THEM from
- my IRCD.
-
- K:*::vijay
-
- This line reads "I don't care WHAT HOST user 'vijay' is on,
- I will NEVER allow username 'vijay' to login to my IRCD.
-
- K:*.oulu.fi:0800-1200,1400-1900:*
-
- This disallows all users from hosts with enddomain 'oulu.fi'
- access to your server between 8 and 12am, 2 and 7pm.
- Users get kicked off if they're already signed on when the
- line becomes active (they'll get a warning 5 minutes ago).
-
- 8. Disallowing SERVERS in your irc net.
-
- In some cases people run into difficulties in net administration.
- For one reason or another you do not want a certain server to be
- in your net (for example because of the security holes it opens
- for every server if it's not secured carefully). In that case
- you should use Q-lines in your server. When you specify a server
- name in Q-line, everytime some server link tries to introduce you
- a server (remember, all server names are broadcast around the net),
- that name is checked if it matches the Q-lines in your server.
- If it matches, then your server disconnects the link. Note that
- just placing Q-lines to your server probably results in your server
- being left alone, unless other servers have agreed to have the
- same Q-line in their ircd configuration files as well.
-
- Example:
- Q::of the security holes:foo.bar.baz
-
- This command excludes a server named "foo.bar.baz", the reason
- is given to be security holes (you should give a reason, it is
- polite). The first field is unused, so leave it empty.
-
- 9. Connection Classes.
-
- To enable more efficient use of MAXIMUM_LINKS, connection classes
- were implemented. To give a connection a class, add another field
- (a sixth) to the C/N lines for a particular server.
- Each line for a server should have the same number as the sixth
- field. If it is absent, the server deaults it to 0, using the
- defaults from the config.h file. To define a connection class,
- you need to include a Y: line in the irc.conf file. This enables
- you to define the ping frequency, connection frequency and maximum
- number of links that class should have. Currently, the Y: line MUST
- appear in the irc.conf file BEFORE it is used in any other way.
-
- The format for the line is:
-
- Y:<CLASS>:<PING FREQUENCY>:<CONNECT FREQUENCY>:<MAX LINKS>:<SENDQ>
- Field: 1 2 3 4 5 6
-
- Field 2: This is the class number which gains the following attributes
- and should match that which is on the end of the C/N line.
-
- Field 3: This field defines how long the server will let the connection
- remain "silent" before sending a PING message to make sure it is still
- alive. Unless you are sure of what you are doing, use the default value
- which is in your config.h file.
-
- Field 4: By changing this number, you change how often your server
- checks to see if it can connect to this server. If you want to check
- very occasionally, use a large value, but if it is an important
- connection, you might want a smaller value so that you connect to it
- as soon as possible.
-
- Field 5: This field defines the maximum number of links this class
- will allow from automatic connections. Using /CONNECT overrides this
- feature.
-
- Field 6: This field defines the 'sendq' value for this class. If this
- field is not present, the default (from config.h) is assigned.
-
- NOTE: leaving any of the fields out means their value is 0 (ZERO)!!
-
- example:
-
- Y:23:120:300:5
-
- define class 23 to allow 5 auto-connections, which are checked every
- 300 seconds. The connection is allowed to remain silent for 120
- seconds before a PING is sent. NOTE: fields 3 & 4 are in seconds.
-
- You may also give I lines a class (again the sixth field to define
- which class). This is only usefull (currently) for redefining the
- ping frequency. It can also be useful as a diagnostic to see how
- much each I line is used when combined with the TRACE output.
-
- Another feature of connection class is the ability to do automatic
- routing by using the class as a 'priority'. If you are connected
- to a server which has a class lower than one of the servers that is
- 'behind' it, the server will disconnect the lower class one and
- schedule a 'new' connection for the higher class server.
-
- 10. Leaf Connections.
-
- To stop servers which should only act as leaves from hubs becoming
- hubs accidently, the L line was introduced so that hubs can be aware
- of which servers should and shouldnt be treated as leaves. A leaf
- server is supposed to remain a node for the entirity of its life
- whilst connected to the IRC server network. It is quite easy, however
- for a leaf server to be incorrectly setup and create problems by
- becoming a node of 2 or more servers, ending its life as a leaf. The
- L line enables the administrator of an IRC 'Hub server' to 'stop' a
- server which is meant to act as a leaf trying to make itself a hub.
- If, for example, the leaf server connects to another server which doesnt
- have an L-line for it, the one which does will drop the connection, once
- again making the server a leaf.
-
- L:<SERVER MASK>:*:<SERVER NAME>:<MAX DEPTH>
- Field: 1 2 3 4 5
-
- Field 2 is a mask of which servers the leaf-like attributes are used on
- when the server receives SERVER messages. The wildcards * and ? may be
- used within this field for matching purposes. If this field is empty,
- it acts the same as if it were a single * (ie matches everything).
-
- Field 4 is the the server connectted to you that for which you want to
- enforce leaf-like attributes upon.
-
- Field 5 is the maximum depth allowed on that leaf and if not specified,
- a value of 1 is assumed. The depth is checked each time a SERVER message
- is received by the server, the hops to the server being the field checked
- against this max depth and if greater, the connection to the server that
- made its leaf too deep has its connection dropped.
- For the L-line to come into effect, both fields, 2 and 4, must match up
- with the new server being introduced and the server which is responsible
- for introducing this new server.
-
- 11. Service Connections (Not yet implemented)
-
- Introduction.
- The Service is a special kind of IRC client. It does not have the full
- abilities of a normal user but can behave in a more active manner than
- a normal client. Services as they stand now are not fully implemented.
- The following line can be added to your ircd.conf file to enable a
- service:
-
- S:<TARGET Host Mask>:<password>:<service_name>
- Field: 1 2 3 4
-
- Explanation:
-
- Field 2:
- The host mask should be set to match the hosts(s) from which the
- service will be connecting from. This may be either an IP# or full
- name (prefered).
-
- Field 3:
- This is the password which must be passed in the SERVICE command.
-
- Field 4:
- The 'service name' is only used for the purpose of finding the
- right S-line from the ircd.conf file for password matching. The
- actual service name used is that set by NICK commands prior to
- SERVICE being sent.
-
- To connect a service to your server, you must first create an S-line
- entry in your ircd.conf file and get your server to read this in (ie
- rehash or reboot). Once your server has updated itself, you can then
- attempt to register your connection as a service.
- Registering as a service is similar to registering as a normal user
- except that you must send NICK first and then SERVICE. The service
- command should look something like this:
-
- SERVICE secretpassword referencename :Service information
-
- A successfull registering of a service at the server will result in
- a RPL_YOURESERVICE (383) being sent back to you. Any other reply as
- a result of sending service indicates an error has occured.
-
- A service is not a very useful sort of client, it cannot join channels
- or issue certain commands although most are available to it. Services,
- however, are not affected by flood control. It is therefore wise to
- oversee the use of S-lines with some care.
-
- 12. Port Connections
-
- Introduction.
- The port line adds flexibility to the server's ability to accept
- connections. By use of this line in the ircd.conf file, it is easy
- to setup both Unix Domain ports for the server to accept connections
- on as well as extra internet ports.
-
- P:<Internet IP# Mask>:<*>:<*>:<PORT>
- Field: 1 2 3 4 5
-
- or
-
- P:<Directory>:<*>:<*>:<PORT>
- Field: 1 2 3 4 5
-
- Explanation
- Internet Ports
- Field 1
- The internet IP mask defines where connections may come from and
- be accepted. The IP mask uses either *'s or 0's as wildcards. The
- following two lines are the same:
-
- P:128.2.*:::6664
- P:128.2.0.0:::6664
-
- The incoming isnt matched against the mask, rather the ip# string
- is decoded and compared segment by segment. Thus
- P:128.2*.1.2:::6664
- will not match 128.20.1.2.
-
- Field 5
- The port number field tells the server which port number it should
- listen on for incoming connections.
-
- Unix Socket Ports.
- Field 1
- The path set in field 1 should be the directory name in which to
- create the unix socket for later listening to. The server will
- attempt to create the directory before creating the unix socket.
-
- Field 5
- The port field when used in combination with a pathname in a P-line
- is the filename created in the directory set in Field 1.
-
- Example:
- P:/tmp/.ircd:::6667
-
- Creates a unix socket in the /tmp/.ircd directory called "6667".
- The unix socket (file) must be a numerical.
-
- 13. Hub Connections
-
- In direct contrast to L-lines, the server also implements H-lines to
- determine which servers may act as a hub and what they may 'hub for'.
- If a server is only going to supply its own name (ie act as a solitary
- leaf) then no H-line is required for, else a H-line must be added as
- follows:
-
- H:<SERVER MASK>:*:<SERVER NAME>
- Field: 1 2 3 4
-
- Explanation:
- Field 2
- All servers that are allowed via this H-line must match the mask
- given in this field.
-
- Field 4
- This field is used to match exactly against a server name, wildcards
- being treated as literal characters.
-
- Examples:
-
- H:*.edu:*:*.bu.edu
-
- Allows a server named "*.bu.edu" to introduce only servers that
- match the "*.edu" name mask.
-
- H:*:*:eff.org
-
- Allow "eff.org" to introduce (and act as a hub for) any server.
-
- Note: It is possible to have and use multiple H-lines (or L-lines) for
- the one server. eg:
-
- H:*.edu:*:*.bu.edu
- H:*.au:*:*.bu.edu
-
- is allowed as is
-
- L:*.edu:*:*.au
- L:*.com:*:*.au
-
-
- Appendix A: Difference between IP addresses and hostnames
-
-
- There are 2 different types of INTERNET addresses, NAME addresses and
- NUMERIC addresses. NAME addresses look like ENGLISH words (and indeed
- they are ENGLISH words that refer to a given host). A NAME address looks
- like "tolsun.oulu.fi" - and that particular address refers to the machine
- named TOLSUN in Finland. It is a UNIQUE address because no other machine
- in the world has its NAME address the same as "tolsun.oulu.fi". Anytime
- you say "telnet tolsun.oulu.fi" - you would always connect to TOLSUN in
- Finland. NUMERIC addresses refer to those addresses that are made up of
- NUMBERS for example "128.214.5.6" is the NUMERIC address for TOLSUN. This
- address is also UNIQUE in that no other machine in the world will be use
- those NUMERIC numbers. The NUMERIC address is usually more reliable than
- the NAME address because not all sites can recognize and translate the
- NAME address into it's numeric counterpart. NUMERIC always seems to work
- best, but use a NAME address when you can because it is easier to tell
- what host you are connected to.
-
-
- Every Unix machine has a file called "/etc/hosts" on it. This file
- contains NAME and NUMERIC addresses. When you supply IRC with a NAME
- address it will at first try to find it in /etc/hosts, and then (if it's
- really smart), use the local Domain Name Server (DNS) to find the NUMERIC
- address for the host you want to connect to. Thus if you plan to use NAME
- addresses keep in mind that on SOME sites the entry for the TARGET machine
- must be found in /etc/hosts or the NAME address will fail. A typical
- entry in /etc/hosts looks like this:
-
- 130.253.1.15 orion.cair.du.edu orion.du.edu orion # BSD 4.3
-
- This particular example is the Host ORION at the University of Denver.
- Notice that on the far left is the NUMERIC Address for orion. The
- next few ENGLISH words are the NAME addresses that can be used for orion,
- "orion.cair.du.edu", "orion.du.edu", "orion". ALL of these NAME addresses
- will return the NUMERIC address "130.253.1.15" which IRC will use to
- connect to the TARGET UNIX. (when I say TARGET UNIX I am refering to the
- UNIX you want to connect to for IRC). Any futher questions about
- /etc/hosts should be directed to "man hosts".
-
-
- Appendix B: Enabling Summon Messages
-
- +-----------------------------------------------------------------------+
- | E N A B L I N G / S U M M O N M E S S A G E S |
- +-----------------------------------------------------------------------+
-
- *NOTE* You must have ROOT or special access to the GROUP tty ('/dev')
- to do this. If you want to allow users around the world to summon
- users at your site to irc, then you should make sure that summon works.
-
- The "IRCD" program needs access to the GROUP of '/dev'. This
- directory is where user TTY's are stored (as UNIX treats each Terminal
- as a FILE!) IRCD needs GROUP ACCESS to /dev so that users can be
- SUMMONED to the program by others users that are *in* the program.
- This allows people from other Universities around the world to SUMMON
- your users to IRC so that they can chat with them. Berkeley, SUN, HP-UX
- and most of the newer versions of UNIX check to see if a USER is
- accepting MESSAGES via the GROUP access rights on their TTY listing
- in the /dev directory. For example an entry in '/dev' looks like this:
-
- (Unix Path on BSD 4.3 UNIX is: /dev/ttyp0)
-
- crw------- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
-
- You will note that 'jtrim' OWNS this terminal and can READ/WRITE to this
- terminal as well (which makes sense because I am ENTERING DATA and
- RECEIVEING DATA back from the UNIX). I logged into this particular
- UNIX on "April 29th" at "10:35am" and my TTY is "ttyp0". But further
- of *note* is that I do not have my MESSAGES ON! (mesg n) -- This is
- how my terminal would look with MESSAGES ON (mesg y):
-
- crw--w---- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
-
- With my MESSAGES ON (mesg y) I can receive TALK(1) requests, use the
- UNIX WRITE(1) command and other commands that allow users to talk
- to one another. In IRC this would also allow me to get IRC /SUMMON
- messages. To set up the "IRCD" program to work with /SUMMON type
- the following: (using ROOT or an account that has access to '/dev').
-
- % chgrp tty ircd
- % chmod 6111 ircd
-
- The above commands read: "Give IRCD access to GROUP tty (which is /dev)
- and then when ANYONE runs the IRCD allow SETUID and SETGID priviliges
- so that they can use the /SUMMON command.
-