This repository has been archived by the owner on Sep 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
891 lines (649 loc) · 40.2 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
Author: Jeff Trim
Date: Mar 23, 1989
Last Modified: May 15, 1989
Installing IRC - The Internet Relay Chat Program
System Requirements:
TCP/IP Sockets
BSD Unix [4.3]/[4.2], SUN Unix, HP Unix, Dec Ultrix, Most Socket Compat. Unix
Knowledge of UNIX/C Programming, helps ;-)
....if you don't have sockets (and a good way to know is if the UNIX TELNET(1)
and FTP(1) programs don't work at all) then you can't run IRC! ;-( DRAT!
Wouldn't it be great if all UNIX destributions had SOCKETS?
-=> To Install IRC <=-
This manual attempts to give you the ENTIRE installation procedure for IRC,
and I have made it so that you can skip over the parts you don't want to read
by looking at the NUMBERS located on the right side of the screen. Here are
the CHAPTERS contained in this DOCUMENT:
1) FTP - Getting the program files from "tolsun.oulu.fi" in Finland
2) EDITING THE "struct.h" FILE - and what the various #define's do
3) EDITING THE "Makefile"
4) HOW TO COMPILE AND INITIALIZE THE SOURCE FILES
5) OVERVIEW - of the "irc.conf" file: an introduction to networking
6) A TOUR OF THE /etc/hosts DATABASE - Brief description what it does
7) SERVER CONNECTIONS - How to set up the "irc.conf" file for SERVERS
8) DEFINING YOUR LOCAL HOST INFORMATION - and placing it in "irc.conf"
9) CLIENT CONNECTIONS - How to allow Clients to connect to Servers
10) OPERATOR PRIVILEDGES - How to make yourself an IRC Adminestrator
11) ADMINESTRATOR COMMAND - Telling other IRC users about your site...
12) REMOVING USERS COMPLETELY FROM IRC - How to remove errent users
13) AN EXAMPLE "irc.conf" FILE - Shows you what one REALLY looks like!
14) UPDATES TO THE PROGRAM: - That effect the "irc.conf" file
Appendix:
A) ADDING SUBNETS: - Adding Multiple Unix Sites (V2.01.5+)
If you want to just view over a curtain chapter, take this file into VI and
use the VI SEARCH command to search for the NUMBER of your choice, like
"1)", "2)" and so forth - those numbers are unique to this table of contents
and the CHAPTER headings themselves.
Because we have provided you with this nice manual, DON'T BOTHER ME OR
ANYONE ELSE UNTIL YOU HAVE PERSONALLY WORKED ATLEAST 40 HOURS ON THE
PROGRAM YOURSELF. That way when you do ask questions they'll be
intelligent questions ;-)
----------===========>>>>>>>> Begin Manual <<<<<<<==========-------------
1) FTP: Getting the program files and Unarchiveing them:
First grab a copy of the program files from the anonymous FTP area of
"tolsun.oulu.fi". The files are usually COMPRESS(ed) and TAR(ed) into
an ARCHIVE format so you will need to unarchive them. To do this, first
transfer the archive file on to your UNIX and make a SUBDRIECTORY to
hold the files in -- usually "mkdir IRC". Then place the IRC ARCHIVE into
this new sub-directory.
To uncompress the ARCHIVE type: "uncompress <archive_file>"
For example: "uncompress irc.v2.01.6.tar.Z"
To UNARCHIVE the program files type: "tar -xf <archive_file>"
For example: "tar -xf irc.v2.01.6.tar"
2) EDIT: The "struct.h" file and make changes to the various #DEFINE's:
a) Define what type of UNIX OPERATING SYSTEM your machine uses. IRC currently
supports, BSD42, BSD43, APOLLO, SYSV. To select the one you want,
replace the "0" with a "1" next to the choice you want. All the other
UNIX OPERATING SYSTEM DEFINES should be set to "0".
b) Define DOMAINNAME, if your systems supports the "getdomainname()" system
call. You can check this by typing "domainname" at the UNIX prompt and
seeing if anything appears. IRC will attempt to add your UNIX Internet
System Domain to your hostname if it is not currently present on your
"hostname()". You should define this if you do support getdomainame().
c) Define NOTTY if you want the IRCD to run as a DAEMON. As a Daemon it
will sit in Unix Background and run independant of any Terminal or TTY.
If you want to run IRCD in FOREGROUND and attached to a TTY, undefine
this option. NORMALLY you will want to DEFINE this option and run IRCD
in Unix Background.
d) Define MYNAME to be the Unix Directory path (pwd) to the "ircd"
e) Define CONFIGFILE to the Unix Directory path to the "irc.conf"
password file. The Format of this file will be discussed later.
f) Define PORTNUM alters the Internet Socket Port for IRC. IRC will use
this port to accept connections from other IRCD Servers and IRC Clients.
The current ports being used for IRC are Internet Ports "6667" and "6666"
although these are not OFFICIALLY reserved for IRC, they are the ports
we have unofficially claimed for the program. I recommend you set your
program to use port "6667".
g) Define LOGFILE should be set to "/dev/null" unless you plan to DEBUG
the program. You should be aware that the logfile grows very quickly
so unless you really need a LOGFILE it should be set to "/dev/null".
h) Define TIMESEC to be the amount of IDLE time you will allow your server
to WAIT before attempting to request status of your neighboring servers.
After TIMESEC seconds have passed and no activity has occured on IRC,
IRC will enter a routine where it will send a PING message to all of
the servers connected to your IRCD. It will send one PING to every
server and will expect the other servers to send a PONG message back
saying that they are "okay and functioning". The program has a built
in time stamp that tells IRC the last time that something was received
from a curtain server. PINGFREQUENCY refers to the amount of time
you will allow server connections to be IDLE. After this IDLE time
has expired (IE the server has been IDLE for PINGFREQUENCY seconds)
the program will PING that particular server and will expect a PONG
message response from that server. If no reply to a PING message is
received in 2 * PINGFREQUENCY seconds the connection will be closed,
and reconnection attempts can be made by your IRCD or the remote IRCD
depending upon which server connects to whom.
i) Define PINGFREQUENCY - (see "h" above)
j) Define CONNECTFREQUENCY - will define the number of SECONDS for your
server to wait before it attempts reconnection at it's neighboring
IRC hosts. The default value is 20 minutes (1200 seconds) and that
is generally pretty good for RECONNECTION time. You should probably
not change this Define.
k) Define MAXUSERSPERCHANNEL - Defines the maximum allowed users per
channel in IRC. This effects the number of users that can all talk
at once in a given channel and it should be left at 10 unless you
have at first consulted with an authorized IRC Adminestrator about
it. DO NOT CHANGE THIS DEFINE UNLESS YOU HAVE PERMISSION TO DO SO.
It should be defined to "10" users.
l) Define WRITEDELAY effects the UNIX Socket command WRITE() which is used
to write socket information to the IRCD socket.. and beyond! Sometimes
a socket can become very crowded (if say 10-20 people were using IRC)
and it will lock up the users keyboard until it can get a return value
from the socket, which tells IRC some information about the WRITE() call.
To BREAK this lockup, you need to specify the number of seconds you'll
allow the SOCKET to stay locked up before you'll BREAK the lock - this
typically is 15 seconds and that is a pretty good number for it. I
recommend you leave it DEFAULT value.
--> Shouldn't have to change anything else! < --
3) EDIT Makefile:
Take the file "Makefile" into a text editor and DEFINE (IE remove the "#")
from the Machine type that is yours. Currently the Makefile supports
Berkeley Unix 4.2/4.3, System V and Hewlett Packard Unix. The following
example shows the Makefile defined for Berkeley Unix:
#
# SYS = sysv
# SYS = hpux
SYS = bsd
.. all the other machine types should be UNCOMMENTED (IE should have "#"
in front of them).
4) HOW TO COMPILE AND INITIALIZE THE SORUCE FILES:
To compile everything type "make". Make will compile all of the program
files and produce two files for you: "irc" and "ircd". You will need to
make sure that the "ircd" has the SETUID bit set on so that OTHER users
besides you can boot server if it goes down and you aren't around to boot
it yourself. This will allow them to BOOT the server but it will run under
*YOUR* UID so that you can kill it later if you need to. To turn on the
SETUID bit for IRCD type:
% chmod 4111 ircd
then your directory files should look something like this:
-rwx--x--x 1 wiz 142336 Mar 16 14:17 irc
-rwx------ 1 wiz 707 Mar 16 02:42 irc.conf
-rws--x--x 1 wiz 110592 Mar 16 14:20 ircd
^
|
the SETUID also allows the "IRCD" to read the "irc.conf" file, because it
would be accessed as USER instead of GROUP or OTHER. You want to keep the
"irc.conf" file PROTECTED because there are PASSWORD in it. Keep your
protection up on this file.
+-----------------------------------------------------------------------+
| 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. It is IMPORTANT that you do enable this option if at all
possible!!! The /SUMMON command is pretty important to your users
as it allows them to be SUMMONED to IRC by other users inside of the
IRC program.
The "IRCD" program also needs access to the GROUP of '/dev'. This
directory is where user TTY's are stored (as UNIX treats each Terminal
as a FILE! (which is a bit uncommon - but interesting!)) 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 priviledges
so that they can use the /SUMMON command.
+--------------------------------------------------------------------------+
+ M A K I N G T H E I R C . C O N F F I L E +
+--------------------------------------------------------------------------+
When you first look at this file it can be a bit confusing, so you should pay
close attention to the following. I get a lot of messages from people telling
me how confusing this is so PLEASE - really read this:
5) OVERVIEW: (difference bewtween NAME and NUMERIC Addresses)
There are 2 different types of INETERNET 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 UNIX
named TOLSUN in Finland. It is a UNIQUE address because no other UNIX in
the world has its NAME address the same as "tolsun.oulu.edu". 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 UNIX in the would should be using
those NUMERIC numbers. The NUMERIC address is sometimes 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.
6) The /ect/hosts Database: The 0.25 Cent Tour ;-)
Every UNIX has a file called "/etc/hosts" on it and this file contains
NAME and NUMERIC addresses in it. When you supply IRC with a NAME address
it will at first try to look it up in /ect/hosts, and then (if it's
really smart), use the Local Network File Server (NFS) 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 UNIX 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".
7) SERVER CONNECTIONS: How to connect to other servers/ How other servers can
connect to you:
EDIT the file you speicifed in "struct.h" under the #DEFINE CONFIGFILE:
Create this file using the same UNIX path and Filename you specified in
that #DEFINE. (typically this file should be called "irc.conf").
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
UNIX "tolsun.oulu.fi" and I want to establish SOCKET connections to 3
other IRCD running hosts (yeah - they must be running an IRCD there ;-)
My other three hosts I want to connect to are:
"naakka.tut.fi" - PRIMARY Connection
"orion.cair.du.edu" - Secondary Connection
"hal.oce.orst.edu" - Third Connection
And I want to connect to them in THAT order, meaning I first want to
try connecting to "naakka.tut.fi", then to "orion.cair.du.edu", and
finally to "hal.oce.orst.edu". So if "naakka.tut.fi" is DOWN (not
functioning or whatever) - the program will try to connect to "orion".
If orion is DOWN it will try to connect to "hal" and so forth.
PLEASE limit the number of hosts you will attempt to connect to 3
hosts - we are trying to limit the amount of Network Traffic IRC creates.
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:orion.cair.du.edu:passwd:orion.cair.du.edu:6667
- or -
C:130.253.1.15:passwd:orion.cair.du.edu:6667
Explaination:
Each field is separted with a ":" charcter:
Field 1: Field 1 tells the IRC program why type of COMMAND we want to
carry out. In this case I have specified "C", stating I want
to CONNECT to another host.
Field 2: Tells the IRC program what HOST we want to connect to and the
NAME or NUMERIC address to connect to it. You can use either
the NAME or NUMERIC address, but don't use both of them. Use
the address that works the best. If the host is listed in
/etc/hosts or your program can use the NFS server use the NAME
Address, otherwise use the NUMERIC address.
Field 3: Is the password needed to CONNECT to the TARGET host. Some hosts
require Password protected validation when you connect to them,
and it is in this field that you specify any passwords you might
need. If there is NO password needed, leave this field BLANK
with no SPACES.
Field 4: The HOSTNAME of the TARGET Host goes here, including DOMAINNAME
if any. This is the name that the TARGET server will identify
itself with when you connect to it. If you were connecting to
orion you would recieve "orion.cair.du.edu" - and that is what
you should place in this field.
Field 5: The INTERNET Port that you want to connect to on the TARGET Unix.
Most of the time this will be set to "6667". If there is NO
information in this field (IT'S 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:naakka.tut.fi::naakka.tut.fi:6667
This reads: Connect to host "naakka.tut.fi", with NO PASSWORD,
and expect this server to identify itself to you as "naakka.tu.fi".
*YOU* will connect to this host at PORT 6667.
C:130.253.1.15:Jeff:orion.cair.du.edu:6667
This reads: Connect to a host at adress "130.253.1.15", using a
login password of "Jeff". The TARGET server should Identify
itself as "orion.cair.du.edu". *YOU* will connect at Internet
Port 6667 on this host.
C:orion.cair.du.edu::orion.cair.du.edu
This reads: *DO NOT CONNECT* to "orion.cair.du.edu", but if
"orion.cair.du.edu" happens to request a CONNECTION with me,
allow it, and let "orion.cair.du.edu" connect TO ME.
Now back to our original problem, we wanted OUR server CONNECT to 3
hosts, "naakka.tut.fi", "orion.cair.du.edu" and "hal.oce.orst.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 "naakka.tut.fi" first:
C:hal.oce.orst.edu::hal.oce.orst.edu:6667
C:orion.cair.du.edu::orion.cair.du.edu:6667
C:naakka.tut.fi::naakka.tut.fi:6667
IRCD would first connect to "naakka..", then to "orion..." and finally
to "hal...".
*** RECIPROCAL ENTRIES - MUST HAVE FOR IRC TO WORK ***
FOR THESE SERVERS TO CONNECT TO YOU, you must also have a CORRESPONDING
"N" entry in your file that takes the SAME FORMAT as the "C" entry
did (above).
Even though you have a "C" entry you also need the "N" entry or the IRC
Program will fail. the "N" entry allows you to SPECIFY any passwords
that you will REQUIRE from any CONNECING servers to give you so that they
can be authorized to connect to your IRCD. (If your lost, stay with me it
will be clearer in a moment).
Let us assume that "orion.cair.du.edu" connects to *YOUR* server:
Well you want to place PASSWORD authorization on ORION so you
make your "N" entry for Orion to be:
N:orion.cair.du.edu:golden:orion.cair.du.edu
What this line says is: Expect a Connection from host "orion.cair.du.edu",
and expect a login password of "golden" (or any other password *YOU* want)
and expect the host to Identify itself as "orion.cair.du.edu".
N:130.253.1.15::orion.cair.du.edu
What this line says is: Expect a Connection from host "130.253.1.15", and
DON'T EXPECT a login password. The TARGET Host should identify itself
as "orion.cair.du.edu".
** NOTE ** Do not add a PORT NUMBER to any "N" entry fields, it is not
needed because the OTHER HOSTS are CONNECTING TO YOU, you aren't connecting
to them.
So now, our "irc.conf" file looks like this:
C:hal.oce.orst.edu::hal.oce.orst.edu:6667
C:orion.cair.du.edu::orion.cair.du.edu:6667
C:naakka.tut.fi::naakka.tut.fi:6667
N:hal.oce.orst.edu::hal.oce.orst.edu
N:orion.cair.du.edu::orion.cair.du.edu
N:naakka.tut.fi::naakka.tut.fi
a good rule of thumb is - "For every "C" entry you have in the file, you
MUST have a cooresponding "N" entry".
8) DEFINING YOUR LOCAL HOST INFORMATION - How to tell IRC about your local
UNIX Host.
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
Explaination:
Field 1: Tells IRC that you are providing local UNIX HOST infomation
Command "M".
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: This specifed which Internet Port you wish to use for your
IRC Server. Use the same port as you defined in "struct.h".
Example:
M:tolsun.oulu.fi::Oulu, Finland:6667
This line reads: My Host's name is "tolsun.oulu.fi" and
my site is Geographically located in "Oulu, Finland".
I have defied Internet Port Number "6667" to be used as
my IRCD Socket Port.
M:orion.cair.du.edu::Denver Colorado, USA:6667
This line reads: My Hosts name is "orion.cair.du.edu"
and my site is geographically located in "Denver
Colorado, USA". I have defined Internet Port
number "6667" to be used as my IRCD Socket Port.
9) CLIENT CONNECTIONS - How to let Clients Connect to your IRCD.
A Client is a program that connects to the "ircd". When you compile
all of the program files, two different files are created "irc" and
"ircd". The "irc" program is the CLIENT and the "ircd" is the SERVER
[Deamon]. Whenever ANYONE wants to talk to other users on IRC they
must run the CLIENT program (irc).
To allow you and your users to connect and run a session of Internet Relay
Chat you must make some entries to the "irc.conf" file.
A) LOCAL CLIENTS: (Defined the DEFAULT Host to connect to when IRC is run)
This defines the DEFAULT connection for the "irc" CLIENT. If you are
running an "ircd" SERVER on this SAME UNIX, 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 Hosts connection
information and login 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 a DETAILED description of the FIELD NUMBERS - see item "7)" above ]
For example:
U:tolsun.oulu.fi::tolsun.oulu.fi:6667
- OR -
U:128.214.5.6::tolsun.oulu.fi:6667
You can also optionally leave off the Internet PORT Number
and IRC will attempt a DEFAULT connection to Internet Port 6667 as in:
U:tolsun.oulu.fi::tolsun.oulu.fi
B) REMOTE CLIENTS:
This command tells the "ircd" SERVER what clients are allowed to connect
to *YOUR SERVER*. Obviously you want to let your *OWN* clients connect,
and also any other CLIENTS that want to connect as well. REMOTE CLIENTS
are those clients which are run by users on other UNIXES (anywhere in
the world) and connect your server so that they can talk to other users.
The CLIENTS would be using your server as a CONNECTION point, therefore
the SERVER will be SERVE-ING the CLIENT, even though the REMOTE client
was not part of your LOCAL UNIX Network. All IRC Messages that were
sent to this REMOTE CLIENT would be sent to your server and then passed
on to where-ever the REMOTE CLIENT was connecting from by *your* "ircd".
-----------------------------------------------------------------------
The way a REMOTE CLIENT can connect to your "ircd" server is to type:
(At the UNIX "%" prompt:)
% irc <nickname> <TARGET Host Addr> <Internet Port>
- For Example -
% irc Jeff tolsun.oulu.fi 6667
... would connect a USER on a REMOTE UNIX to the IRCD Server at
"tolsun.oulu.edu" - using a NICKNAME of "Jeff" and connecting
to TOLSUN's Internet Port 6667.
------------------------------------------------------------------------
Format of this command in the "irc.conf" file is:
I:<TARGET Host Addr>:<Password>:<TARGET Hosts NAME>:<Internet Port>
Field: 1 2 3 4 5
[For a detailed description of these fields see item "7)" above]
For 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:tolsun.oulu.fi::tolsun.oulu.fi
If you wanted to let REMOTE CLIENTS from other UNIX's to connect to your
server (for examples sake let's say you wanted let REMOTE UNIX Sites:
"naakka.tut.fi", "orion.cair.du.edu" and "hal.oce.orst.edu" connect their
CLIENTS to your site) You *could* add them to "irc.conf" like this:
I:orion.cair.du.edu::orion.cair.du.edu
I:128.193.64.132::hal.oce.orst.edu
I:naakka.tut.fi:password:naakka.tu.fi
and any REMOTE CLIENTS that want to connect to you can. The ORDER in
which these is entered into the file is NOT IMPORTANT, enter them in
any way you want, it won't effect the PRIORITY of IRC in any way.
10) OPERATOR PRIVILEDGES: How to become the IRC Adminestor on your site
To become an IRC Adminestrator, 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>
Field: 1 2 3 4
Explaination:
Field 1: Is the command to tell IRC that this is an OPERATOR command
entry. This is the "O" command.
Field 2: Tells IRC which host you have the PRIVILEDGES FROM. This
means that you should be logged into this host when you
ask for the priviledges. If you specify "tolsun.oulu.fi"
then IRC will expect your CLIENT to be connected at
"tolsun.oulu.fi" - when you ask for OPERATOR PRIVILEDGES
from "tolsun.oulu.fi". You cannot be logged in at any
other host and be able to use your OPERATOR PRIVILEDGES
at tolsun, only when you are connected at TOLSUN will this
work - this is a safe guard against unauthorized sites
trying to STEAL your operator priviledges.
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 (or Unix)
Example:
O:orion.cair.du.edu:pyunxc:Jeff
There is an OPERATOR at "orion.cair.du.edu" that can get
Operator priviledges if he specifies a password of "pyunxc"
and uses a NICKNAME of "Jeff".
+-----------------------------------------------------------------------+
+ E N A B L I N G O P E R A T O R P R I V I L E D G E S +
+-----------------------------------------------------------------------+
If you ever want (or need) to use your OPERATOR priviledges, run "irc" and
login to the "ircd" normally - then type the following:
/oper <nickname> <password>
If you entered the OPERATOR COMMAND the way I did in the example above you
would type:
/oper Jeff pyunxc
and if you entered everything correctly you would get the message:
"Good morning Gentleman, I am a Hal 9000 Computer" - if you MESSED up
you will probable get a message like "No mere mortals may enter the
twilight zone" - or other funny messages ;-)
You can confirm that your operator priviledges are ACTIVE by typing "/w"
and seeing if there is a "*" next to your name in the listing. If there
is then you have successfully become an IRC ADMINESTRATOR.
11) ADMINESTRATOR - Tell Other IRC users about your IRCD server:
The "A" command is used for telling a few things about youself, like who
you are, who is responsible for your server, and who users should contact
at your site if they have any questions. The "A" command stands for
the ADMINESTRATOR Command line, and in the "irc.conf" file it looks like
this:
A:<Your Name/Location>:<Your Electronic Mailing Addr>:<other>
Field: 1 2 3 4
Explaination:
Field 1: "A" tells IRC that you are making an Adminestrative Command
entry.
Field 2: Use this field to say tell your FULL NAME and where in the
world your UNIX is. Be sure to add your City, State
(Province?) and Country to this entry so everyone will know
what country your UNIX Host is in.
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 [email protected]" 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,
I suggest you add your Government Mailing Address in this
field so that people can send you REAL mail if they want to,
but you can add funny sayings or just general comments
in this field as well if you so desire.
Examples:
A:Jeff Trim - Denver Colorado, USA:INET [email protected] UUCP {hao, isi
s}!udenva!jtrim:Terve! Hei! Moro! 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 [email protected] UUCP {hao, isis}!udenva!jtrim
Terve! Hei! Moro! Heippa! Have you said hello in Finnish today? ;)
*NOTE* that the "A" line cannot be BROKEN in anway - so you must WRAP THIS
line so that is remains one CONTINUOUS line with *NO* Carrige Return Line
Feeds in it. *ALSO* Remeber that you CANNOT use the ':' within the TEXT
of the message it'self - all *other* pieces of text are usable.
12) REMOVING A USER FROM IRC - Remove an Errent 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 unmannagable and this is your
only recourse - the KILL USER command. THIS COMMAND ONLY EFFECTS YOUR
SERVER - If this user can connect to another SERVER somewhere else in
the IRC-Network then you would have to talk to the adminestrator on that
site to disable his access from that IRCD Server as well.
The format of this command is:
K:<Host Name>::<User>
Field: 1 2 3 4
Explaination:
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 user you wanted REMOVED 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.
Field 3: ** NOT USED ** -- leave NULL (no spaces)
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.
13) AN EXAMPLE "irc.conf" FILE:
Keep one last thought in mind, if the OTHER IRCD Unix Site doesn't have
your site listed in THEIR "irc.conf" file - you won't be able to
connect to them - no matter how right your file is! It is simply
useless to attempt connections to IRCD Hosts that don't have you listed
in their files because they'll just HANGUP on you everytime you
connect.
After an exhausting description of every aspect of the "irc.conf" file,
here is a REAL and working example of a totally complete "irc.conf"
file. This is the real file I use on my UNIX site (orion.cair.du.edu)
and I am displaying it for you now so that you'll know how yours should
look after you've completed it:
Since this is that last time I will be speaking to you - good luck and
make a prayer to whichever UNIX God's you may worship ;-) I pray to
UUCP and Yellow Pages myself ;-) Have fun and hope to talk to you
soon on IRC.
----------------- Cut here -------------------------- Cut here ---------------
C:128.193.64.132::hal.oce.orst.edu:6667
C:accuvax.nwu.edu::accuvax.nwu.edu:6667
C:128.214.5.6::tolsun.oulu.fi
N:128.193.64.132::hal.oce.orst.edu
N:accuvax.nwu.edu::accuvax.nwu.edu
N:128.214.5.6::tolsun.oulu.fi
I:orion.cair.du.edu::orion.cair.du.edu
I:128.193.64.132::hal.oce.orst.edu
I:accuvax.nwu.edu::accuvax.nwu.edu
I:128.214.5.6::tolsun.oulu.fi
I:128.193.32.13::jacobs.CS.ORST.EDU
O:orion.cair.du.edu:*censored*:jtrim
K:*.cair.du.edu::root
U:orion.cair.du.edu::orion.cair.du.edu:6667
M:orion.cair.du.edu::Denver Colorado, USA:6667
A:Jeff Trim - Denver Colorado, USA:INET [email protected] UUCP {hao, isi
s}!udenva!jtrim:Terve! Hei! Moro! Heippa! Have you said hello in Finnish today?
;)
-------------- Cut Here ---------------------------- Cut Here ----------------
14) UPDATES TO THE PROGRAM: Lists any program changes that were done after
this manual was written
This section was written to show any changes or upgrading that was done
after version v2.01.4 was released. We have been releasing new versions
of the program very quickly so it is necessary to Document what's new
about each version to the best of our ability ;-) The above documentation
is by no means out of date - and any MAJOR changes that take place in
the program will mean that I will rewrite the ABOVE Documentation so
that it once again reflect reality. This section is used to tell you
about the SMALL fixes to the program that may or may not effect you,
for example MY SITE does not use SUBNETING, but many other sites do,
so if you were using a SUBNET you would want to know that we do in fact
support subneting.
*NOTE* That if we added a new feature in ONE VERSION, the feature *is*
included in the next version as well. For example we added SUBNETING
in version v2.01.5 and it will be included in all future versions of
IRC.
A) SUBNETING (v2.01.5+)
IRC now supports SUBNETING, which is the ability to use WILD CARDS
(*.*) notation when refering to a NAME or NUMERIC host. For example,
Let us say that you wanted the CLIENTS of ANY HOST in your UNIX domain
of "cair.du.edu" to be able to connect to your IRCD Server. You can
now specify a WILD CARD host listing in the "irc.conf" file of:
C:*.cair.du.edu::*.cair.du.edu:6667
N:*.cair.du.edu::*.cair.du.edu
... and that would allow ANY HOST that has a UNIX domainname of
"cair.du.edu" to connect to your host.
This also works for NUMERIC addresses as well. If you wanted all
of the UNIX. For example if you wanted to allow ANY UNIX with
a NUMERIC address of "130.253.1.*" to be able to connect to your
host you could say:
C:130.253.1.*::*.cair.du.edu:6667
N:130.253.1.*::*.cair.du.edu
The reason I added the "*.cair.du.edu" is because the CONNECTING
Host would indetify itself as a REAL NAME address, like
"orion.cair.du.edu", but your don't care if IT IS "orion", but
rather you care that it is FROM A DOMAIN of "cair.du.edu". You
would set this up so that "130.253.1.*" refers to ALL OF THE
MACHINES in the "cair.du.edu" domain, and you would hope that any
Machine within this UNIX DOMAIN would have an INTERNET ADRESS
that begins with "130.253.1", the LAST NUMBER would be the only
ones that's different. But, this isn't always the case.
Examples:
C:128.214.5.*::*.oulu.fi:6667
N:128.214.5.*::*.oulu.fi
This line reads: If any machine with an INTERNET ADDRESS
that starts with "128.214.5" connects to my server, and
identifies itself with a NAME address that ENDS in "oulu.fi",
let them connect to my server.
C:*.du.edu::*.du.edu:6667
N:*.du.edu::*.du.edu
This line reads: If any host conects to me and identifies itself
as a host that ENDS with a NAME Address of "du.edu".
C:*::*:6667
N:*::*
This ones says: Let ANYONE connect to my server! ;-) In
Reality the computer reads this as: I don't care what
what INTERNET ADRESS or NAME ADDRESS they are from, just
let them connect. I DON'T RECOMMEND YOU DO THIS, but this
is a possible option if you need it.
-=> End of IRC README Document <=-