mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-12 15:34:47 +02:00
Import of Unreal3.0 (STABLE)
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||||
|
| UnrealIRCd 3.0 |
|
||||||
|
| Configuration |
|
||||||
|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||||
|
| http://unreal.tspre.org |
|
||||||
|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||||
|
| UnrealIRCD Custom Create Network Configuration|
|
||||||
|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||||
|
| |
|
||||||
|
| This will not be too hard, just follow the |
|
||||||
|
| instructions, and answer the questions... |
|
||||||
|
| |
|
||||||
|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
List of helpers in the alpha/beta phase:
|
||||||
|
* Headbang, Alpha/beta tester
|
||||||
@@ -0,0 +1,315 @@
|
|||||||
|
/*
|
||||||
|
* UnrealIRCd Changes File - (C) Carsten Munk 1999
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
*** BUGS ***
|
||||||
|
* When a +q sets +L it sets it but displays an error msg
|
||||||
|
(??:
|
||||||
|
*** Stskeeps (cmunk@rox-56506.fyremoon.net) has joined channel #a
|
||||||
|
*** #a 951758184
|
||||||
|
*** Mode change "+q Stskeeps" on channel #a by Stskeeps
|
||||||
|
*** Mode change "-oaATcfebW" for user Stskeeps by Stskeeps
|
||||||
|
*** Channel mode +l <max> is requried for +L to be set
|
||||||
|
*** Mode change "+l 1" on channel #a by Stskeeps
|
||||||
|
*** Mode change "+L #moo" on channel #a by Stskeeps
|
||||||
|
)
|
||||||
|
|
||||||
|
*** Unreal3.0-Morrigan(fix) ***
|
||||||
|
* NOTE: If your system clock is wrong you will have problems with TOPICs
|
||||||
|
being set on all servers. That is because TOPICs which are _new_ are
|
||||||
|
taken instead of old
|
||||||
|
- Fixed +f not banning when * is specified
|
||||||
|
- Fixed +q (chan owners) not being able to set +L (partially fixed)
|
||||||
|
- Fixed /tsctl segfaulting the server
|
||||||
|
- Fixed the killing bug. The cause was that when m_mode was called in the
|
||||||
|
NICKv2 parsing routine, it sent out a :nick MODE :+x which was an unknown
|
||||||
|
nick, and the NICK was being sent just after, causing it to kill the user
|
||||||
|
(was a _huge_ bastard to find)
|
||||||
|
- If someone changes their nick to irc and WebTV is enabled, problems
|
||||||
|
occur FIX: deny change to that in m_nick (bug fixed)
|
||||||
|
- Added lost unrealircd.bmp.gz file
|
||||||
|
|
||||||
|
*** Unreal3.0-Morrigan ***
|
||||||
|
- Added the new GUI main coded by DrBin, first coding by {X}
|
||||||
|
- Added v64net.network
|
||||||
|
- Added 972-scripterz.network
|
||||||
|
- Made NO_FDLIST compilation work as well
|
||||||
|
- Fixed DCCDENY bug (p->mask, p->mask) (*slaps sts*)
|
||||||
|
- +F not flood off if netsplit happens
|
||||||
|
- Made TODO, made "Unable to write tunefile" show an error if *nix
|
||||||
|
- Added stormdancing.network
|
||||||
|
- send.c sendto_realops problem solved
|
||||||
|
- Fixed a segfaulting bug in /tsctl reported by x-wartech
|
||||||
|
- Fixed segfaulting bug with -oh bounce stuff in channel.c reported by Dana
|
||||||
|
- Fixed +q bug reported by several people, inc DrBin
|
||||||
|
- Added networks/fireirc.network
|
||||||
|
- Fixed +f * option not banning correctly
|
||||||
|
- Fixed fdlist on win32 problem
|
||||||
|
- Added /HTM for high traffic mode status (partially added)
|
||||||
|
- Added networks/digitalirc.network
|
||||||
|
- G:lines expire every 5th second now
|
||||||
|
- /stats T now show incoming and outgoing rate
|
||||||
|
- Some HTM stuff
|
||||||
|
- Some release stuff
|
||||||
|
- Fixed up some NICKv2 stuff, more faster stuff:)
|
||||||
|
- Moved old Changes stuff to Changes.old
|
||||||
|
- Made so /path ~path or ".."'s in T:lines arent possible
|
||||||
|
- Made it so certain files ie ircd.conf,oper.motd, unrealircd.conf, ircd.log
|
||||||
|
can't be used in a T:line
|
||||||
|
- Added dynconf option to specify SOCKS kill message & ban message & bantime
|
||||||
|
- Fixed SOCKS exception bug (!!)
|
||||||
|
- Fixed some indention in dynconf.c and a memory leak problem (what were you
|
||||||
|
smoking code?:P)
|
||||||
|
- iNAH bugfixes( call them fixes and ill smash you;))
|
||||||
|
- Recoded color striping to be ALOT more accurate and faster
|
||||||
|
- Using hybrid IsMember()
|
||||||
|
- Fixed +F bug (again)
|
||||||
|
- Added FDlists, does those work on win32?
|
||||||
|
- De-Potvinized addline, addmotd, and addomotd (should run faster)
|
||||||
|
- Made addline, addmotd, addomotd display to the user what was written
|
||||||
|
- Removed /snote and /snotes (no one used them)
|
||||||
|
- GPL stuff
|
||||||
|
- Some comestic tkl fixes..
|
||||||
|
- Fixed +F bug
|
||||||
|
- Made +F connect notices more bandwidth friendly,
|
||||||
|
only bad things:
|
||||||
|
- Not showing port in connect +F
|
||||||
|
- On servers rejoin you get +F flooded (will be fixed in an later
|
||||||
|
release)
|
||||||
|
- Made ALLOW_CHATOPS a unrealircd.conf option rather than a #define
|
||||||
|
- Fixed a bug where you had to be +AC to see adminchats
|
||||||
|
- chatops, adchat, nachat, techat, wallops no longer require a leading :
|
||||||
|
- More TKL stuff..
|
||||||
|
- m_chatops uses sendto_umode now, and also removed sendto_chatops
|
||||||
|
- Remote rehashes now support the - flags, ex -dcc, -vhost etc
|
||||||
|
- Fixed more G:Line stuff
|
||||||
|
- Fixed G:Line bug with not expiring correctly - thanks Dark-Prince for
|
||||||
|
being guinea pig, and to JojoII for finding it
|
||||||
|
- Fixed +ix remote bug reported by RevPsych
|
||||||
|
- /list can now make opers see +s channels
|
||||||
|
- Did some SJOIN2 work..
|
||||||
|
- Fixed /whois bug with WHOIS_Channels
|
||||||
|
- Fixed a minor, yet annoying bug in the dynconf version system, thanks to GoNiS
|
||||||
|
- Fixed bug: EpicII stripping too much of /oper fail notice
|
||||||
|
- Fixed bug: SJOIN TS Change notice should not show when (ts == oldts)
|
||||||
|
- Fixed WEBTV_NONOTICE bug with CTCPs - thanks rjameson
|
||||||
|
- Fixed +h can +o themselves bug, thanks to Mikey, HERZ and many other
|
||||||
|
people
|
||||||
|
- Added TSP client/server
|
||||||
|
- Fixed m_netinfo stuff..
|
||||||
|
- Fixed a bug with the new m_names and +h (chanmode)
|
||||||
|
- Removed .CHANGES.NEW2 - not in use anyways
|
||||||
|
- Now using new m_names from bahamut by Lucas Madar (DarkRot)
|
||||||
|
- Removed zombie code
|
||||||
|
- Fixed up the MODE_ADMINONLY code
|
||||||
|
- Fixed some bugs in can_send
|
||||||
|
- Added TS Change notice to SJOIN
|
||||||
|
- Fixed a +f bug, and fixed SJOIN resynch bug (serious)
|
||||||
|
- Fixed up the remote rehash code a bit
|
||||||
|
- Updated conf.doc
|
||||||
|
- Added some WebTV stuff, read config.h
|
||||||
|
- Removed the NO_DEFAULT_INVISIBLE define from config.h
|
||||||
|
- Added MODE_I to unrealircd.conf, auto setting of +i when a user connects
|
||||||
|
- Fixed a minor unrealircd.conf bug
|
||||||
|
- Fixed up all SJOIN fuzz, made RESYNCMODES be 12
|
||||||
|
- Fixed this bug:
|
||||||
|
* After sync on other server
|
||||||
|
*** Stskeeps is using modes +oiwghsaHATcCreWIdt
|
||||||
|
should be:
|
||||||
|
Stskeeps is using modes +owghskaATcfrebW
|
||||||
|
|
||||||
|
- Made unrealircd.conf option to hide U:lines from non-opers in /links
|
||||||
|
- Updated the unrealircd.conf and all the .network files to support the
|
||||||
|
version system, and for unrealircd.conf to support HIDE_ULINES
|
||||||
|
- Made a versioning system for unrealircd.conf and *.network (This will
|
||||||
|
allow us to makesure _old_ versions are not being used when new features
|
||||||
|
are added to the files)
|
||||||
|
- TKL/zap bugfix!!
|
||||||
|
- Channel mode +H errors in numeric 459 now, coded by Rev_Null- thanks
|
||||||
|
- Moved RPL_WHOISSPECIAL to 320
|
||||||
|
- Another TKL bug.
|
||||||
|
- TKL bug fixed
|
||||||
|
- Made TKL backwards compatible
|
||||||
|
- TKLs are now syncing
|
||||||
|
- Bug fixes..
|
||||||
|
- Fixed TKL<->GLINE protocol problems
|
||||||
|
- Renamed chmode +I to +V as it screwed up some clients thinking it was
|
||||||
|
IRCnet..
|
||||||
|
- Took out m_fjoin, not in use
|
||||||
|
- Fixed up +e so it works with mIRC channel dialog now
|
||||||
|
- Added channel mode +H, only setable by SkoAdmin, makes +I users unable to
|
||||||
|
join channel - code&thanks to RevPsych & Rev_Null
|
||||||
|
- Removed all MegaIRC references
|
||||||
|
- Fixed VHOST desynch bug..
|
||||||
|
- Removed aGline record
|
||||||
|
- Fixed some idention in msg.h
|
||||||
|
- Fixed warning in s_misc.c
|
||||||
|
- Removes /ns, /cs, /ms, /os, /hs commands (not in use)
|
||||||
|
- Fixed bug where /statserv needed a : for more than one param
|
||||||
|
- Fixed so that /trace only cloaks hostname if it is an oper
|
||||||
|
- Fixed token non case sensitive problem
|
||||||
|
- Fixed warning in mp2parv..
|
||||||
|
- Fixed DEBUGMODE compile bug..
|
||||||
|
- Fixed BOTMOTD bug..
|
||||||
|
- Fixed some bugs (1.16->1.17) and removed aClient->user->host and replaced
|
||||||
|
it by realhost. Saves memory
|
||||||
|
- Fixing up for beta release
|
||||||
|
- Updated networks/networks.ndx
|
||||||
|
- Reason in temp and static K:lines like |kc.gline will show user klined
|
||||||
|
file kc.gline (only legal names are |kc.*)
|
||||||
|
- Added e:lines to the docs
|
||||||
|
- Added solargalaxy.network
|
||||||
|
- Fixed a minor +S (chanmode) bug
|
||||||
|
- Fixed a bug where if a channel was +n it would display a
|
||||||
|
must be +v msg rather than no external msgs (thank Potvin for that one)
|
||||||
|
- Made dccdeny's notice +e users when a file is rejected
|
||||||
|
- Added NOTICE in m_sajoin/m_sapart (You were forced to join/part #)
|
||||||
|
- Added e:lines, SOCKS check exception lines
|
||||||
|
format: e:ip (not hostname):*:*
|
||||||
|
- Added doc/faq entry about debian on sparcs..
|
||||||
|
- added debian sparc support (read doc/faq)
|
||||||
|
- SJOIN sortof working. Straight testing needed
|
||||||
|
- made /botmotd use NOTICE AUTH (so all bots will see it)
|
||||||
|
- fixed NICKv2 umode field when no mode bug..
|
||||||
|
- added T (TechAdmin) to the SMO flags
|
||||||
|
- fixed a little _mistake_ in the /dusers error message
|
||||||
|
- fixed a bug where +c (chanmode) blocked all privmsgs :P
|
||||||
|
- m_sjoin compiled, need to make it unreal3.0 compatible
|
||||||
|
- added include/sjoin.h for SJOIN stuff
|
||||||
|
- Deleted :server prefix from SWHOIS burst.
|
||||||
|
- Added UMODE_SETHOST (+t), and set NICKv2 up to only send when a real
|
||||||
|
virthost. Spares bandwidth:) +t is _not_ user setable
|
||||||
|
- Removed UMODE_COFOUND, UMODE_WMASTER, not in use anymore.
|
||||||
|
- Fixed up MODE_LINK, MODE_FLOODLIMIT syncronization,
|
||||||
|
you can mode do /mode # -lf without parameters
|
||||||
|
- Gave Unreal correct orgin (df4.6.5)
|
||||||
|
- Gave /stats N,S a header
|
||||||
|
- Added network solarxtreme.network
|
||||||
|
- /stats N returns .network file information
|
||||||
|
- /stats S returns unrealircd.conf information
|
||||||
|
- Added a virtualhost field to NICKv2
|
||||||
|
- Updated conf.doc
|
||||||
|
- Removed all traces of CLIENT_COMPILE
|
||||||
|
- Some Linux-ALPHA support.. i need accces to a alpha box :P
|
||||||
|
Fixes done by Ramuh (irc.risanet.com) originally for UltimateIRCd,
|
||||||
|
thanks to ShadowMastr for forwarding me..
|
||||||
|
- Removed all traces of services.h..
|
||||||
|
- NICKv2 working.. :)
|
||||||
|
- Updated doc/faq slightly
|
||||||
|
- Updated doc/example.conf with new lines an Oflags
|
||||||
|
- Implemented NICKv2 (umode field in NICK)
|
||||||
|
- Similar topics are sent along now .. was a bug ? (thanks Headbang,
|
||||||
|
WonderWal, etc)
|
||||||
|
- Fixed up compile warnings
|
||||||
|
- Fixed channel.c warning in can_join
|
||||||
|
- Removed SHOW_PASSWORD define, not in use anymore
|
||||||
|
- Removed USE_CASETABLES define, not in use anymore
|
||||||
|
- Removed TIMED_KLINE define, not in use anymore
|
||||||
|
- Added OPER_NO_HIDING define
|
||||||
|
- Removed RelicNet +z, unreal isnt at use at relicnet anyways and
|
||||||
|
i still dont believe that potvin _thought_ he could make them use it?
|
||||||
|
hah!
|
||||||
|
- Added REMOVE_ADVERTISING define (off by default) , check include/config.h
|
||||||
|
and src/s_user.c (m_message) for more info (by ice)
|
||||||
|
- Fixed channel name similarity bug reported by IXpfah
|
||||||
|
- Comment on Nickflood/joinflood thing (stskeeps): Services can do that?
|
||||||
|
- Fixed up some version.c.SH stuff
|
||||||
|
- Added SJOIN protoctl for preparing for SJOIN
|
||||||
|
- Split up PROTOCTL_SUPPORTED in PROTOCTL_SERVER and PROTOCTL_CLIENT
|
||||||
|
- Added networks/uzaynet.network
|
||||||
|
- NOTICE auth, tells you that it found a bad SOCKS.
|
||||||
|
- Made umode +d work correctly
|
||||||
|
- Made it so users can't see the RPL_WHOISCHANNELS for a
|
||||||
|
+I user
|
||||||
|
- Fixed a bug in +I where a +I user couldn't see themself
|
||||||
|
in /names
|
||||||
|
- Fixed a minor bug in /chgident
|
||||||
|
- Added bot.motd support on +B and /botmotd
|
||||||
|
- /join 0 now shows "Left all channels" in reason why left
|
||||||
|
- Added +H umode, hides oper status
|
||||||
|
in /who /who 0 o /whois (so opers
|
||||||
|
can spy on a channel and no one knows
|
||||||
|
- win32: s_socks.c small problem fixed
|
||||||
|
- Fixed a bug in the new zline code
|
||||||
|
- Fixed a typo in the Win32 socks check (oops)
|
||||||
|
- (development) added TODO.maybe
|
||||||
|
- Added /vhost login password
|
||||||
|
read the s_extra.c on vhost.conf format
|
||||||
|
- vhost.conf, added /rehash -vhost
|
||||||
|
- Removed s_user.c/m_message warning
|
||||||
|
- SOCKS check functioning
|
||||||
|
- Removed src/list2.c - not in use
|
||||||
|
- Removed networks/agitated.network, no longer existing network
|
||||||
|
- Added networks/bunker7.network
|
||||||
|
- Deleted ircdbug
|
||||||
|
- Renamed LICENCE to LICENSE
|
||||||
|
- /version shows alpha while in development..
|
||||||
|
- (development) added include/stamp.h for static development stamping
|
||||||
|
- send.c optimations from ircu :)
|
||||||
|
- Added codemastr as offical developer
|
||||||
|
- Now using GPL v2
|
||||||
|
- NOTICE AUTH problem solved, i hope
|
||||||
|
- Took out UNIXPORT code
|
||||||
|
- Removed traces of R_LINE* in config.h
|
||||||
|
- SOCKS check in progress
|
||||||
|
- Fixed the Blowbug
|
||||||
|
- TSCTL svstime works now :P correctly that is
|
||||||
|
- nick is using modes +rx
|
||||||
|
instead of "nick is using modes [+rx]
|
||||||
|
- Removed some lame brackets
|
||||||
|
- /close sendto_ops() now
|
||||||
|
- Fixed small SVSNICK bug (.)
|
||||||
|
- Fixed +L resync bug..
|
||||||
|
- df4.6.7 SVSNICK - fixes desynchs
|
||||||
|
- Took out all the R_LINES code
|
||||||
|
- Took out all SERVICES_MODE code
|
||||||
|
- Took out all USE_SERVICES code
|
||||||
|
- Added .crjava patch by Fish read include/config.h for more info..
|
||||||
|
- Added IRCu .ack patch you can now use "ONE" in password line in I:Lines
|
||||||
|
to ensure only one connecting from that kind of I:line per IP.
|
||||||
|
- /Lusers <mask> is not working anymore.. took out possible flood thing..
|
||||||
|
- /List - IRCops should be able to see +s now (thanks Headbang and others)
|
||||||
|
- RPL_YOURHOST - Your host is server, running version x
|
||||||
|
Removed [hostname].
|
||||||
|
- RPL_MYINFO now selfupdates when adding new modes (channel and user)
|
||||||
|
- Fixed umodestring
|
||||||
|
- Umode +d avail to everyone now:P
|
||||||
|
- Fixed channel mode +r defunctional bug
|
||||||
|
(thanks to gdb and the coder-com people who learnt me to use gdb:P)
|
||||||
|
- SVSFLINE <+/-/*> [mask] [reason]
|
||||||
|
+ = add (mask + reason)
|
||||||
|
- = delete (mask)
|
||||||
|
* = wipe all services F:Lines
|
||||||
|
(13/12/1999 working.)
|
||||||
|
- Fixed server<->server token problem
|
||||||
|
- Moved /info data to m_info_send
|
||||||
|
- Made SIGSEGV do core too.. MAIL THEM TO ME ALONG WITH THE src/ircd FILE
|
||||||
|
if it tells ya to!
|
||||||
|
- Fixed "GLINE @moo.org 10 :moo\r" G:Line bug (they haunt me)
|
||||||
|
- New F:Line system (dccdeny.conf)
|
||||||
|
- Removed OLD F:lines
|
||||||
|
- Fixed up /stats f/F
|
||||||
|
- Made /rehash -dcc = rehashes dccdeny.conf
|
||||||
|
/rehash -dyn = rehashes dynamic configuration (RISK OF TERMINATE:P)
|
||||||
|
/rehash -rest = rehashes channel restrict config chrestrict.conf
|
||||||
|
- New channel restrict system
|
||||||
|
(chrestrict.conf)
|
||||||
|
# = comment
|
||||||
|
allow #moo = can join #moo
|
||||||
|
msg message = shows message when cannot join cos of allow
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
Send donations to:
|
||||||
|
|
||||||
|
UnrealIRCd Project
|
||||||
|
P.O.Box 52
|
||||||
|
7400 Herning
|
||||||
|
Denmark
|
||||||
|
|
||||||
|
(if you want to that is.. I mean .. I do my coding for fun.. -
|
||||||
|
send a teddybear or something to my nephews or something for
|
||||||
|
my nieces.. so they can keep quiet while I'm trying to do anything)
|
||||||
|
|
||||||
|
Disks, HD's, free internet time or alike are welcome ;p ;)
|
||||||
|
|
||||||
|
-- Techie (which HAD got 20 MB free HD space out of 400 MB on his own puter)
|
||||||
|
(just got a 8.4gb and rh6.0 *_*)
|
||||||
|
(and used 200 MB on his shell to code this :>) ..
|
||||||
|
- oh and btw i'm male:P (*looks at BlueFlame^*)
|
||||||
|
|
||||||
|
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
$Id$
|
||||||
|
|
||||||
|
Installation Procedures for the UnrealIRCD:
|
||||||
|
=======================================================================
|
||||||
|
Created by Stskeeps <stskeeps@tspre.org>
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
This document describes how to install ircd, the unix daemon that acts as
|
||||||
|
an IRC server.
|
||||||
|
|
||||||
|
For more information on UnrealIRCD contact us at
|
||||||
|
unreal-dev@lists.sourceforge.net
|
||||||
|
|
||||||
|
The UnrealIRCD is available from http://unreal.tspre.org
|
||||||
|
along with the latest copy of this document.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
This version of the UnrealIRCD is known to compile on the following
|
||||||
|
platforms, and with the following compilers. If you wish to add to this
|
||||||
|
list, send the relevant information to us.
|
||||||
|
|
||||||
|
OS and Version Compiler and Version Comments
|
||||||
|
------------------- ------------------------ -------------------------------
|
||||||
|
NetBSD 1.2B gcc 2.7.2
|
||||||
|
|
||||||
|
FreeBSD 2.1.0 gcc 2.6.3 Do NOT use crypt at all...
|
||||||
|
|
||||||
|
SunOS 4.1.4 gcc 2.7-96q1 (Cygnus)
|
||||||
|
|
||||||
|
Solaris 2.4 gcc 2.7-96q1 (Cygnus) (SunOS 5.4)
|
||||||
|
|
||||||
|
Solaris 2.5 SunWorks Pro C (SunOS 5.5.1)
|
||||||
|
cc: SC4.0 18 Oct 1995 C 4.0
|
||||||
|
|
||||||
|
Digital Unix 3.2 gcc 2.7-96q3 (Cygnus)
|
||||||
|
|
||||||
|
Linux 2.0.24 gcc 2.7.2.1
|
||||||
|
|
||||||
|
HPUX 9.01 gcc 2.6.3
|
||||||
|
|
||||||
|
HPUX 10.01 gcc 2.7-96q3 (Cygnus)
|
||||||
|
|
||||||
|
Linux PPC (iMac)
|
||||||
|
|
||||||
|
AmigaOS 3.0 GCC egcs-2.91.66 (compile with -D_AMIGA)
|
||||||
|
|
||||||
|
Windows NT/95 MSVC++ 4.0
|
||||||
|
|
||||||
|
Linux Mandrake Read FAQ
|
||||||
|
=======================================================================
|
||||||
|
Unpacking the Distribution
|
||||||
|
|
||||||
|
If you are reading this, you have most likely already done this, but to
|
||||||
|
recap:
|
||||||
|
|
||||||
|
The UnrealIRCD server comes tarred and gziped. To uncompress it and expand
|
||||||
|
it, use the following commands at the Unix prompt:
|
||||||
|
|
||||||
|
gzip -d Unreal3.0.tar.gz
|
||||||
|
tar -xvf Unreal3.0.tar
|
||||||
|
|
||||||
|
This will create a new directory called Unreal3.0 and unpack the source
|
||||||
|
into it.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Editing the Configuration Files
|
||||||
|
|
||||||
|
In previous versions of the source code many files had to be edited to
|
||||||
|
make things right for any given server.
|
||||||
|
|
||||||
|
In this version you DO NOT NEED TO EDIT THE Makefile OR ANY FILES
|
||||||
|
IN include! That is, unless you set some strange options. If you
|
||||||
|
find the need to edit include/config.h, for example,
|
||||||
|
mail us and tell us why ; Config can be made smarter, and that will make
|
||||||
|
it so you won't have to edit anything for the next version.
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Compiling Your Server
|
||||||
|
|
||||||
|
Windows users: You must compile the Config program first. To do this
|
||||||
|
run the following command: $CC src\Config.c
|
||||||
|
where $CC is the name of your compiler. for MSVC users that is 'cl'
|
||||||
|
|
||||||
|
To build the server, simply run
|
||||||
|
% ./Config
|
||||||
|
to start the configuraton program. This program looks at your system
|
||||||
|
and generate the include/setup.h, include/settings.h, and Options files.
|
||||||
|
You will be asked some questions. Usually the default answers are the best
|
||||||
|
ones and most correct. To accept the default, just hit RETURN.
|
||||||
|
|
||||||
|
Next, type 'make'. This will compile your server. Depending on your system,
|
||||||
|
this may be a good time for a caffeine break. (MSVC users run 'nmake')
|
||||||
|
|
||||||
|
Hopefully, the server will compile without incident. If it does not, and
|
||||||
|
you are not able to determine the error, please email
|
||||||
|
unreal-dev@lists.sourceforge.net and hopefully someone will be able to help you with the problem. If you
|
||||||
|
do need to fix something, mail there with a patch.
|
||||||
|
|
||||||
|
BE CERTAIN TO INCLUDE OPERATING SYSTEM INFORMATION (uname -a) AND COMPILER
|
||||||
|
VERSION (gcc -v, for instance) IN ALL BUG REPORTS.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Installing the Files
|
||||||
|
|
||||||
|
'make install' does not work in this release -- it doesn't do anything
|
||||||
|
except a compile if that is needed.
|
||||||
|
|
||||||
|
The only files you need are the binary from src/ircd and and an ircd.conf
|
||||||
|
(see below for copying doc/example.conf as your initial ircd.conf). You
|
||||||
|
probably will want to create a MOTD file too, as well as place the man
|
||||||
|
pages from the doc directory to appropriate place in your system.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Configuring Your Server
|
||||||
|
|
||||||
|
The previous step places a file named 'example.conf' into your irc
|
||||||
|
directory you specified to Config.
|
||||||
|
|
||||||
|
To create an IRC configuration file, edit: ircd.conf
|
||||||
|
|
||||||
|
Now edit this file to reflect your server. The file is mainly
|
||||||
|
self-explanatory. Note that if you plan to use your server on ROXnet,
|
||||||
|
make sure that you have the following line:
|
||||||
|
|
||||||
|
U:services.roxnet.org:*:*
|
||||||
|
|
||||||
|
If you need help configuring your file, please connect to ROXnet,
|
||||||
|
(irc.flirt.org or irc.roxnet.org) - go to channel #UnrealIRCd, and ask.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
Starting Your Server
|
||||||
|
|
||||||
|
Simply enter the complete path to the executable into the Unix command
|
||||||
|
line, then hit return. Your server is now operational, assuming that you
|
||||||
|
have completed all the steps described above.
|
||||||
|
|
||||||
|
NOTE: If you get something like the following when running ircd:
|
||||||
|
|
||||||
|
ircd fd table too big
|
||||||
|
Hard Limit: 256 IRC max: 1024
|
||||||
|
Fix MAXCONNECTIONS
|
||||||
|
|
||||||
|
You need to change config.h and recompile. Find the line that says
|
||||||
|
"#define MAXCONNECTIONS 1024", and change it to the number given after
|
||||||
|
"Hard Limit" (most likely 256), then make the server again, following the
|
||||||
|
above instructions.
|
||||||
|
|
||||||
|
Enjoy!
|
||||||
|
- The UnrealIRCd Team - unreal-dev@lists.sourceforge.net
|
||||||
@@ -0,0 +1,340 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
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 2 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
||||||
+205
@@ -0,0 +1,205 @@
|
|||||||
|
#/************************************************************************
|
||||||
|
#* IRC - Internet Relay Chat, Makefile
|
||||||
|
#* Copyright (C) 1990, Jarkko Oikarinen
|
||||||
|
#*
|
||||||
|
#* 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.
|
||||||
|
#*
|
||||||
|
#* $Id$
|
||||||
|
#*/
|
||||||
|
|
||||||
|
CC=gcc
|
||||||
|
INCLUDEDIR=../include
|
||||||
|
NETWORKSDIR=
|
||||||
|
FROMDOS=/home/cmunk/bin/4dos
|
||||||
|
# [CHANGEME]
|
||||||
|
# Default flags:
|
||||||
|
# Change XCFLAGS if you don't like what Config puts there. Same with
|
||||||
|
# IRCDLIBS.
|
||||||
|
#
|
||||||
|
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
|
||||||
|
# IRCDLIBS blank. If that fails, try recomendations below.
|
||||||
|
#
|
||||||
|
XCFLAGS=
|
||||||
|
IRCDLIBS=
|
||||||
|
|
||||||
|
#
|
||||||
|
# use the following on MIPS:
|
||||||
|
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
||||||
|
# For Irix 4.x (SGI), use the following:
|
||||||
|
#CFLAGS= -g -cckr -I$(INCLUDEDIR)
|
||||||
|
#
|
||||||
|
# on NEXT use:
|
||||||
|
#CFLAGS=-bsd -I$(INCLUDEDIR)
|
||||||
|
#on NeXT other than 2.0:
|
||||||
|
#IRCDLIBS=-lsys_s
|
||||||
|
#
|
||||||
|
# AIX 370 flags
|
||||||
|
#CFLAGS=-D_BSD -Hxa -I$(INCLUDEDIR)
|
||||||
|
#IRCDLIBS=-lbsd
|
||||||
|
#
|
||||||
|
# Dynix/ptx V2.0.x
|
||||||
|
#CFLAGS= -I$(INCLUDEDIR) -O -Xo
|
||||||
|
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
||||||
|
#
|
||||||
|
# Dynix/ptx V1.x.x
|
||||||
|
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
||||||
|
#
|
||||||
|
#use the following on SUN OS without nameserver libraries inside libc
|
||||||
|
#IRCDLIBS=-lresolv
|
||||||
|
#
|
||||||
|
# Solaris 2
|
||||||
|
#IRCDLIBS=-lsocket -lnsl -lresolv -L/usr/ucblib -R/usr/ucblib -lgen
|
||||||
|
#
|
||||||
|
# ESIX
|
||||||
|
#CFLAGS=-O -I$(INCLUDEDIR) -I/usr/ucbinclude
|
||||||
|
#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
|
||||||
|
#
|
||||||
|
# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
|
||||||
|
# -Bstatic here.
|
||||||
|
#
|
||||||
|
#LDFLAGS=-Bstatic
|
||||||
|
#
|
||||||
|
#Dell SVR4
|
||||||
|
#CC=gcc
|
||||||
|
#CFLAGS= -I$(INCLUDEDIR) -O2
|
||||||
|
#IRCDLIBS=-lsocket -lnsl -lucb
|
||||||
|
|
||||||
|
# [CHANGEME]
|
||||||
|
# IRCDMODE is the mode you want the binary to be.
|
||||||
|
# The 4 at the front is important (allows for setuidness)
|
||||||
|
#
|
||||||
|
# WARNING: if you are making ircd SUID or SGID, check config.h to make sure
|
||||||
|
# you are not defining CMDLINE_CONFIG
|
||||||
|
IRCDMODE = 711
|
||||||
|
|
||||||
|
# [CHANGEME]
|
||||||
|
# IRCDDIR must be the same as DPATH in include/config.h
|
||||||
|
#
|
||||||
|
IRCDDIR=/usr/local/lib/ircd
|
||||||
|
|
||||||
|
# [CHANGEME]
|
||||||
|
# Some SunOS versions want this. Try it without first.
|
||||||
|
#RES=res_init.o res_comp.o res_mkquery.o
|
||||||
|
# BSDI systems want this.
|
||||||
|
#RES=res_skipname.o
|
||||||
|
# The rest are perfectly content with this.
|
||||||
|
RES=
|
||||||
|
|
||||||
|
# [CHANGEME]
|
||||||
|
# If you get a compile-time error dealing with u_int32_t, comment out
|
||||||
|
# this line.
|
||||||
|
# NEED_U_INT32_T= -DNEED_U_INT32_T
|
||||||
|
NEED_U_INT32_T=
|
||||||
|
|
||||||
|
# [CHANGEME]
|
||||||
|
# If you get a link-time error dealing with strtoul, comment out
|
||||||
|
# this line.
|
||||||
|
# STRTOUL= strtoul.o
|
||||||
|
STRTOUL=
|
||||||
|
|
||||||
|
# [CHANGEME]
|
||||||
|
# If you get crashes around a specific number of clients, and that client
|
||||||
|
# load comes close or a little over the system-defined value of FD_SETSIZE,
|
||||||
|
# override it here and see what happens.
|
||||||
|
FD_SETSIZE=
|
||||||
|
|
||||||
|
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(NEED_U_INT32_T) $(FD_SETSIZE)
|
||||||
|
|
||||||
|
SHELL=/bin/sh
|
||||||
|
SUBDIRS=src
|
||||||
|
BINDIR=$(IRCDDIR)
|
||||||
|
MANDIR=/usr/local/man
|
||||||
|
INSTALL=/usr/bin/install
|
||||||
|
RM=rm
|
||||||
|
CP=cp
|
||||||
|
TOUCH=touch
|
||||||
|
|
||||||
|
all: build
|
||||||
|
|
||||||
|
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
||||||
|
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
|
||||||
|
'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
||||||
|
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
|
||||||
|
'MANDIR=${MANDIR}' 'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||||
|
'RES=${RES}' 'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}'
|
||||||
|
|
||||||
|
server:
|
||||||
|
build:
|
||||||
|
-@if [ ! -f include/setup.h ] ; then \
|
||||||
|
echo "Hmm...doesn't look like you've run Config..."; \
|
||||||
|
echo "Doing so now."; \
|
||||||
|
sh Config; \
|
||||||
|
fi
|
||||||
|
@for i in $(SUBDIRS); do \
|
||||||
|
echo "Building $$i";\
|
||||||
|
( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
|
||||||
|
done
|
||||||
|
@echo ' __________________________________________________ '
|
||||||
|
@echo '| Compile is now complete. Now you have to go do |'
|
||||||
|
@echo '| The load-time configuration - try go read the |'
|
||||||
|
@echo '| file "dynconf" using your favourite viewer or |'
|
||||||
|
@echo '| editor. The file will contain instructions on how|'
|
||||||
|
@echo '| to do the dynamic configuration :) |'
|
||||||
|
@echo '| |'
|
||||||
|
@echo '| Thanks for using Unreal IRCd! If you are in need |'
|
||||||
|
@echo '| for any kind of help regarding the IRCd email us |'
|
||||||
|
@echo '| at unreal-dev@lists.sourceforge.net |'
|
||||||
|
@echo '|__________________________________________________|'
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) -f *~ \#* core *.orig include/*.orig
|
||||||
|
@for i in $(SUBDIRS); do \
|
||||||
|
echo "Cleaning $$i";\
|
||||||
|
( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
|
||||||
|
done
|
||||||
|
-@if [ -f include/setup.h ] ; then \
|
||||||
|
echo "To really restart installation, remove include/setup.h" ; \
|
||||||
|
fi
|
||||||
|
-@if [ -f include/settings.h ] ; then \
|
||||||
|
echo "and include/settings.h" ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
cleandir: clean
|
||||||
|
rm -rf include/networks.h include/setup.h include/settings.h Makefile Settings
|
||||||
|
|
||||||
|
makex: fromdos
|
||||||
|
chmod +x Config newnet bsdinstall ircd ircdcron/ircdchk killircd
|
||||||
|
chmod +x makeconf rehash ircdreg
|
||||||
|
|
||||||
|
fromdos: cleandir
|
||||||
|
$(FROMDOS) -dv *
|
||||||
|
$(FROMDOS) -dv src/*
|
||||||
|
$(FROMDOS) -dv include/*
|
||||||
|
$(FROMDOS) -dv doc/*
|
||||||
|
$(FROMDOS) -dv crypt/*
|
||||||
|
$(FROMDOS) -dv ircdcron/*
|
||||||
|
makedist: makex
|
||||||
|
echo "Making UnrealIRCd compatible IRCd Dist."
|
||||||
|
|
||||||
|
stamp: makedist
|
||||||
|
echo "/* Auto created release stamping */" > include/stamp.h
|
||||||
|
echo "#define RELEASEID2 \"`date +%s`\"" >> include/stamp.h
|
||||||
|
echo "#define RELEASESTUFF \"`hostname`\"" >> include/stamp.h
|
||||||
|
echo "" >> include/stamp.h
|
||||||
|
|
||||||
|
depend:
|
||||||
|
@for i in $(SUBDIRS); do \
|
||||||
|
echo "Making dependencies in $$i";\
|
||||||
|
( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
|
||||||
|
done
|
||||||
|
|
||||||
|
install: all
|
||||||
|
@echo "Now install by hand; make install is broken."
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
Some notes to remember:
|
||||||
|
-----------------------
|
||||||
|
* Don't EVER try to link it to incompatible IRCds (this does not
|
||||||
|
include services). It is *INCOMPATIBLE*. Please HEED this warning!!!
|
||||||
|
|
||||||
|
* If you need any help you can email me at stskeeps@tspre.org
|
||||||
|
|
||||||
|
* Please read the Changes file about release notes
|
||||||
|
|
||||||
|
* Bugs? Read Unreal.nfo
|
||||||
|
|
||||||
|
* Unreal IRCd is not meant to be a simple IRCd, rather an advanced
|
||||||
|
IRCd, please read the documentation before asking questions
|
||||||
|
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
TODO: (Possible 3.1)
|
||||||
|
* Limit calls to these functions using parse()
|
||||||
|
0.00 3.91 0.00 6475 0.00 0.00 check_registered
|
||||||
|
0.00 3.91 0.00 6827 0.00 0.00 check_registered_user
|
||||||
|
* Optimize:
|
||||||
|
0.00 3.91 0.00 1292 0.00 0.01 is_banned
|
||||||
|
12.55 9.61 2.57 41320 0.06 0.10 check_lusers
|
||||||
|
4.64 11.54 0.95 41566 0.02 0.02 count_channels
|
||||||
|
3.08 13.96 0.63 850968 0.00 0.00 flush_connections
|
||||||
|
(fdlists?)
|
||||||
|
0.15 19.62 0.03 29 1.03 1.80 send_list
|
||||||
|
* Add svsvline for global vlines
|
||||||
|
* New /whowas system /who as well
|
||||||
|
* Short MOTDs
|
||||||
|
* B:Lines
|
||||||
|
* Channel mode +d
|
||||||
|
* Raising PING bug
|
||||||
|
* Make alternative I/O engine using poll()
|
||||||
|
* Remove some of the _little_ config.h defines and replace with
|
||||||
|
unrealircd.conf lines, ex ADMINCHAT, REMOTE_REHASH
|
||||||
|
* X-Windows GUI (how bad it can be but hey! :P)
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
TSpre.org
|
||||||
|
|
||||||
|
Many here maybe not heard of the Story
|
||||||
|
how IRC started (and how EFnet started)
|
||||||
|
EFnet's name means "Eris-Free Network".
|
||||||
|
Eris was a central hub at the fomer world-
|
||||||
|
wide IRC network, that anyone could just add
|
||||||
|
C:N pairs for and connect to.
|
||||||
|
|
||||||
|
I was inspired of the tought of a network
|
||||||
|
where anyone could link without application and all
|
||||||
|
that shit..
|
||||||
|
|
||||||
|
Combined with the IRCd i made (Unreal) and the tspre.org
|
||||||
|
domain i got donated by Nutcais (my IRC bro). Ive decided to
|
||||||
|
start the TSpre IRC network, where anyone with TSpre servers
|
||||||
|
(dreamforge, IRCu p9, and their alike)
|
||||||
|
|
||||||
|
(mostly preffered is Unreal thou).. Its an experimental
|
||||||
|
network where people can test out thier IRCds and
|
||||||
|
wIRds without having to fill out apps and so on.
|
||||||
|
|
||||||
|
There are no real rules. So just have fun :)
|
||||||
|
|
||||||
|
See http://www.tspre.org for more info on this=)
|
||||||
|
|
||||||
|
--Stskeeps (stskeeps@tspre.org)
|
||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
===============================================
|
||||||
|
= UnrealIRCd v3.0 =
|
||||||
|
===============================================
|
||||||
|
Was brought to you by:
|
||||||
|
* Stskeeps <stskeeps@tspre.org>
|
||||||
|
* codemastr <codemastr@tspre.org>
|
||||||
|
|
||||||
|
Precenses on the Internet:
|
||||||
|
* http://unreal.tspre.org or http://unreal.sourceforge.net
|
||||||
|
* ftp://unreal.sourceforge.net/pub/unreal
|
||||||
|
* ftp://ftp.shadow-realm.org/pub/ircd/UnrealIRCd
|
||||||
|
|
||||||
|
CVS Repository:
|
||||||
|
* Alpha versions (or beta)
|
||||||
|
==========================
|
||||||
|
cvs -z9 -d :pserver:anonymous@cvs.unreal.sourceforge.net:/cvsroot/unreal login
|
||||||
|
(just press enter when it asks for password)
|
||||||
|
cvs -z9 -d :pserver:anonymous@cvs.unreal.sourgeforge.net:/cvsroot/unreal co alpha
|
||||||
|
|
||||||
|
* To get support
|
||||||
|
================
|
||||||
|
* IRC: /server irc.flirt.org 6667 - /join #unrealircd
|
||||||
|
* Mailing list: unreal-support@lists.sourceforge.net (for support)
|
||||||
|
|
||||||
|
* Got a bug to report?
|
||||||
|
======================
|
||||||
|
* If the server crashes and dumps core do this:
|
||||||
|
* Go into the Unreal directory and type this:
|
||||||
|
gdb src/ircd core.filename
|
||||||
|
where core.filename is the filename in the dumping core message
|
||||||
|
if it loads gdb, (not saying "command not found" etc), type "bt" in
|
||||||
|
the program (type "quit" to get out again)
|
||||||
|
|
||||||
|
The output coming out there please mail it to
|
||||||
|
unreal-dev@lists.sourceforge.net, along with OS type,
|
||||||
|
what "uname -a" says, any clues what it is, if you did anything etc
|
||||||
|
etc. Please keep the core dump files if we ask you to mail us them
|
||||||
|
if needed
|
||||||
|
|
||||||
|
* If you experince any wierdnesses (that doesnt crash the server)
|
||||||
|
please mail unreal-dev@lists.sourceforge.net with any clues on what
|
||||||
|
you did, what you experinced etc.
|
||||||
|
|
||||||
|
* Got a suggestion?
|
||||||
|
===================
|
||||||
|
* Mail it to unreal-dev@lists.sourceforge.net :) or catch one from
|
||||||
|
the Unreal team online on IRC:)
|
||||||
|
|
||||||
|
|
||||||
Executable
+84
@@ -0,0 +1,84 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# $Id$
|
||||||
|
# Old: @(#)install.sh 4.5 (Berkeley) 10/12/83
|
||||||
|
#
|
||||||
|
cmd=/bin/mv
|
||||||
|
strip=""
|
||||||
|
chmod="/bin/chmod 755"
|
||||||
|
chown="chown -f root"
|
||||||
|
chgrp="/bin/chgrp -f bin"
|
||||||
|
while true ; do
|
||||||
|
case $1 in
|
||||||
|
-s ) strip="strip"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-c ) cmd="/bin/cp"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-m ) chmod="/bin/chmod $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-o ) chown="/etc/chown -f $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-g ) chgrp="/bin/chgrp -f $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-d ) cmd="/bin/mkdir"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
* ) break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ ! ${2-""} ]
|
||||||
|
then echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ${3-""} ]
|
||||||
|
then echo "install: too many files specified -> $*"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ $1 = $2 -o $2 = . ]
|
||||||
|
then echo "install: can't move $1 onto itself"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
case $cmd in
|
||||||
|
/bin/mkdir )
|
||||||
|
file=$2/$1
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
if [ '!' -f $1 ]
|
||||||
|
then echo "install: can't open $1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -d $2 ]
|
||||||
|
then file=$2/$1
|
||||||
|
else file=$2
|
||||||
|
fi
|
||||||
|
/bin/rm -f $file
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $cmd in
|
||||||
|
/bin/mkdir )
|
||||||
|
if [ ! -d "$file" ]
|
||||||
|
then $cmd $file
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
$cmd $1 $file
|
||||||
|
if [ $strip ]
|
||||||
|
then $strip $file
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
$chown $file
|
||||||
|
$chgrp $file
|
||||||
|
$chmod $file
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
#************************************************************************
|
||||||
|
#* IRC - Internet Relay Chat, ircd/crypt/Makefile
|
||||||
|
#* Copyright (C) 1991 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.
|
||||||
|
#*
|
||||||
|
#* $Id$
|
||||||
|
#*/
|
||||||
|
#
|
||||||
|
# Change this to the path of your local ircd.conf file
|
||||||
|
#
|
||||||
|
|
||||||
|
IRCDCONF = ../ircd.conf
|
||||||
|
|
||||||
|
all: mkpasswd
|
||||||
|
crypt: install
|
||||||
|
|
||||||
|
mkpasswd: mkpasswd.c
|
||||||
|
cc -lcrypt -O mkpasswd.c -o mkpasswd
|
||||||
|
|
||||||
|
install:
|
||||||
|
crypter ${IRCDCONF}
|
||||||
|
@echo 'done.'
|
||||||
|
|
||||||
|
clean:
|
||||||
|
/bin/rm -f mkpasswd
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, ircd/crypt/README
|
||||||
|
* Copyright (C) 1991 Nelson Minar
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
The change implemented here is that the operator password in irc.conf
|
||||||
|
is no longer stored in plaintext form, but is encrypted the same way
|
||||||
|
that user passwords are encrypted on normal UNIX systems. Ie, instead
|
||||||
|
of having
|
||||||
|
|
||||||
|
O:*:goodboy:Nelson
|
||||||
|
|
||||||
|
in your ircd.conf file, you have
|
||||||
|
|
||||||
|
O:*:sCnvYRmbFJ7oI:Nelson
|
||||||
|
|
||||||
|
You still type "/oper Nelson goodboy" to become operator. However, if
|
||||||
|
someone gets ahold of your irc.conf file, they can no longer figure
|
||||||
|
out what the password is from reading it. There are still other
|
||||||
|
security holes, namely server-server passwords, but this closes one
|
||||||
|
obvious problem.
|
||||||
|
|
||||||
|
So how do you generate these icky looking strings for passwords?
|
||||||
|
There's a simple program called mkpasswd to do that for you. Just run
|
||||||
|
mkpasswd, and at the prompt type in your plaintext password. It will
|
||||||
|
spit out the encrypted password, which you should then just copy into
|
||||||
|
the irc.conf file. This should be done only when adding new passwords
|
||||||
|
to your irc.conf file. To change over your irc.conf file to use
|
||||||
|
encrypted passwords, define CRYPT_OPER_PASSWORD in config.h. You will
|
||||||
|
need to recompile your server if you already compiled it with this
|
||||||
|
feature disabled. Once compiled, edit the Makefile in this directory
|
||||||
|
and chang "IRCDCONF" to your irc.conf file. Then "make install" in this
|
||||||
|
directory to replace all the operator passwords in your irc.conf file
|
||||||
|
with the encrypted format.
|
||||||
|
|
||||||
|
Choose your passwords carefully. Do not choose something in a
|
||||||
|
dictionary, make sure its at least 5 characters. Anything past 8
|
||||||
|
characters is ignored.
|
||||||
|
|
||||||
|
One thing to note about crypt() passwords - for every plaintext, there
|
||||||
|
are 4096 different passwords. Some valid encryptions of "goodboy"
|
||||||
|
include t1Ub2RhRQHd4g sCnvYRmbFJ7oI and Xr4Z.Kg5tcdy6. The first
|
||||||
|
two characters (the "salt") determine which of the 4096 passwords
|
||||||
|
you will get. mkpasswd chooses the salt randomly, or alternately
|
||||||
|
will let you specify one on the command line.
|
||||||
|
|
||||||
|
see also - crypt(3)
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/local/bin/perl
|
||||||
|
#************************************************************************
|
||||||
|
#* IRC - Internet Relay Chat, ircd/crypt/crypter
|
||||||
|
#* Copyright (C) 1991 Sean Batt
|
||||||
|
#*
|
||||||
|
#* 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.
|
||||||
|
#*
|
||||||
|
#* $Id$
|
||||||
|
#*
|
||||||
|
#*/
|
||||||
|
|
||||||
|
#From Sean Batt sean@coombs.anu.edu.au
|
||||||
|
#
|
||||||
|
#Temporary output file
|
||||||
|
#
|
||||||
|
$tmpfile = "/tmp/ircd.conf.tmp";
|
||||||
|
|
||||||
|
#
|
||||||
|
#Original ircd.conf file
|
||||||
|
#
|
||||||
|
$ircdconf = @ARGV[0];
|
||||||
|
|
||||||
|
print "crypting ",$ircdconf,"\n";
|
||||||
|
@saltset = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/');
|
||||||
|
|
||||||
|
umask(0077);
|
||||||
|
open ($ircdout, ">/tmp/ircd.conf.tmp") || die "open $!";
|
||||||
|
|
||||||
|
while ($text = <>) {
|
||||||
|
#if its not an "O" line we can ignore it
|
||||||
|
$text =~ /^o/i || print ($ircdout $text) && next;
|
||||||
|
chop($text);
|
||||||
|
@oline = split(':', $text);
|
||||||
|
$salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||||
|
$oline[2] = crypt(@oline[2], $salt);
|
||||||
|
print ($ircdout join(':',@oline)."\n");
|
||||||
|
}
|
||||||
|
close ($ircdout);
|
||||||
|
close ($ircdin);
|
||||||
|
print "/bin/cp ",$tmpfile," ",$ircdconf,"\n";
|
||||||
|
(fork()==0) ? exec("/bin/cp", $tmpfile, $ircdconf) : wait;
|
||||||
|
|
||||||
|
#unlink($tmpfile);
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/* simple password generator by Nelson Minar (minar@reed.edu)
|
||||||
|
* copyright 1991, all rights reserved.
|
||||||
|
* You can use this code as long as my name stays with it.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
extern char *getpass();
|
||||||
|
|
||||||
|
int main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
|
||||||
|
char salt[3];
|
||||||
|
char * plaintext;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (argc < 2) {
|
||||||
|
srandom(time(0)); /* may not be the BEST salt, but its close */
|
||||||
|
salt[0] = saltChars[random() % 64];
|
||||||
|
salt[1] = saltChars[random() % 64];
|
||||||
|
salt[2] = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
salt[0] = argv[1][0];
|
||||||
|
salt[1] = argv[1][1];
|
||||||
|
salt[2] = '\0';
|
||||||
|
if ((strchr(saltChars, salt[0]) == NULL) || (strchr(saltChars, salt[1]) == NULL))
|
||||||
|
fprintf(stderr, "illegal salt %s\n", salt), exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
plaintext = getpass("Enter Password: ");
|
||||||
|
|
||||||
|
printf("Encryption: %s\n", crypt(plaintext, salt));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
# $Id$
|
||||||
|
|
||||||
|
on ^367 * if ([$4] != []) {echo *** $1 \($3 - $stime($4)) $2} {echo *** $1-}
|
||||||
|
on ^333 * echo *** Topic for $1 set by $2 on $stime($3)
|
||||||
|
on ^317 * if (index(012345679 $3) != -1) {echo *** $1 has been idle for $2 seconds. Signon at $stime($3)} {echo *** $1 has been idle for $2 seconds.}
|
||||||
|
On ^329 "*" echo *** $1 : created $stime($2)
|
||||||
|
on ^
|
||||||
|
alias silence quote silence
|
||||||
|
alias sile quote silence
|
||||||
|
on ^raw_irc "% SILENCE %" echo *** $*
|
||||||
|
|
||||||
|
@ hideit = 0
|
||||||
|
on ^server_notice "% % NOTICE -- CLIENT*" if (hideit != 1) {echo *** $2-}
|
||||||
|
alias show @ hideit = 0;echo *** You can now see clients connecting/exiting
|
||||||
|
alias hide @ hideit = 1;echo *** You will no longer see clients connecting/exiting
|
||||||
|
|
||||||
|
|
||||||
|
# ctime and sendq written by bry
|
||||||
|
# modified by Mmmm
|
||||||
|
|
||||||
|
alias ctime {
|
||||||
|
^on 211 -
|
||||||
|
if ( [$0] )
|
||||||
|
{ ^assign SS $0- }
|
||||||
|
{ ^assign SS $S }
|
||||||
|
|
||||||
|
^on ^211 * {
|
||||||
|
eval ^assign hrs2 ${ ([$7]/60)/60}
|
||||||
|
eval ^assign min2 ${[$7]/60}
|
||||||
|
|
||||||
|
eval ^assign dys ${[$HRS2]/24}
|
||||||
|
eval ^assign hrs ${[$HRS2]-([$DYS]*24)}
|
||||||
|
eval ^assign min ${[$MIN2] - ( ([$HRS]+([$DYS]*24) )*60)}
|
||||||
|
eval ^assign sec ${[$7]-([$MIN2]*60)}
|
||||||
|
@ a = index(\[ $1) - 1
|
||||||
|
@ b = left($a $1)
|
||||||
|
if (index(. $b) == -1)
|
||||||
|
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
|
||||||
|
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
|
||||||
|
}
|
||||||
|
^stats l $SS
|
||||||
|
}
|
||||||
|
|
||||||
|
alias sendq {
|
||||||
|
eval ^on ^211 "$SRV *" {
|
||||||
|
@ a = index(\[ $1) - 1
|
||||||
|
@ b = left($a $1)
|
||||||
|
if (index(. $b) == -1)
|
||||||
|
{eval echo *** $[11]2 sendq $1}
|
||||||
|
{eval echo *** $[11]2 sendq $1}
|
||||||
|
}
|
||||||
|
if ( [$0] )
|
||||||
|
{ ^assign SRV $0- }
|
||||||
|
{ ^assign SRV $S }
|
||||||
|
stats l $SRV
|
||||||
|
wait -cmd eval ^on ^211 -"$SRV *"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If you use Daveman's toolbox or any auto rejoin line, remove the old
|
||||||
|
# on raw_irc for KICK, and use the foll. one instead: (Run)
|
||||||
|
#
|
||||||
|
#ON ^RAW_IRC "% KICK % % *" {
|
||||||
|
# IF ([$3]==[$N])
|
||||||
|
# {
|
||||||
|
# //QUOTE JOIN $2
|
||||||
|
# ECHO $MID(11 5 $STIME($TIME())) * You have been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# ECHO $MID(11 5 $STIME($TIME())) * $3 has been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
+142
@@ -0,0 +1,142 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, doc/AUTHORS
|
||||||
|
* Copyright (C) 1990
|
||||||
|
*
|
||||||
|
* AUTHORS FILE:
|
||||||
|
* This file attempts to remember all contributors to the IRC
|
||||||
|
* developement. Names can be only added this file, no name
|
||||||
|
* should never be removed. This file must be included into all
|
||||||
|
* distributions of IRC and derived works.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
IRC was conceived of and written by Jarkko Oikarinen <jto@tolsun.oulu.fi>.
|
||||||
|
IRC was originally written in University of Oulu, Computing Center.
|
||||||
|
Jan 1991 - IRC 2.6 jto@tolsun.oulu.fi
|
||||||
|
- Multiple Channels and protocol changes
|
||||||
|
|
||||||
|
Contributions were made by a cast of dozens, including the following:
|
||||||
|
|
||||||
|
Markku Jarvinen <mta@tut.fi>: Emacs-like editing facility for the client
|
||||||
|
|
||||||
|
Kimmo Suominen <kim@kannel.lut.fi>: HP-UX port
|
||||||
|
|
||||||
|
Jeff Trim <jtrim@orion.cair.du.edu>: enhancements and advice
|
||||||
|
|
||||||
|
Vijay Subramaniam <vijay@lll-winken.llnl.gov>: advice and ruthless publicity
|
||||||
|
|
||||||
|
Karl Kleinpaste <karl@cis.ohio-state.edu>: user's manual
|
||||||
|
|
||||||
|
Greg Lindahl <gl8f@virginia.edu>: AUTOMATON code, the Wumpus GM automaton,
|
||||||
|
myriad bug fixes
|
||||||
|
|
||||||
|
Bill Wisner <wisner@hayes.fai.alaska.edu>: numerous bug fixes and code
|
||||||
|
enhancements
|
||||||
|
|
||||||
|
Tom Davis <conslt16@zeus.unl.edu> and Tim Russell <russell@zeus.unl.edu>:
|
||||||
|
VMS modifications
|
||||||
|
|
||||||
|
Markku Savela <msa@tel4.tel.vtt.fi>: advice, support, and being the
|
||||||
|
incentive to do some of our *own* coding. :)
|
||||||
|
|
||||||
|
Tom Hopkins <hoppie@buengf.bu.edu>: bug fixes, quarantine lines,
|
||||||
|
consolidation of various patches.
|
||||||
|
|
||||||
|
Christopher Davis <ckd@cs.bu.edu>: EFnet/Anet gateway coding,
|
||||||
|
many automata ;), documentation fixing.
|
||||||
|
|
||||||
|
Helen Rose <hrose@cs.bu.edu>: documentation updating, and fixing.
|
||||||
|
|
||||||
|
Tom Hinds <rocker@bucsf.bu.edu>: emacs client updating.
|
||||||
|
|
||||||
|
Tim Miller <cerebus@bu-pub.bu.edu>: various server and client-breaking
|
||||||
|
features.
|
||||||
|
|
||||||
|
Darren Reed <avalon@coombs.anu.edu.au>: various bug fixes and enhancements.
|
||||||
|
Introduced nickname and channelname hash tables into the server.
|
||||||
|
|
||||||
|
The version 2.2 release was coordinated by Mike Bolotski
|
||||||
|
<mikeb@salmon.ee.ubc.ca>.
|
||||||
|
|
||||||
|
The version 2.4 release was coordinated by Markku Savela and
|
||||||
|
Chelsea Ashley Dyerman
|
||||||
|
|
||||||
|
The version 2.5.2 release was coordinated by Christopher Davis, Helen Rose,
|
||||||
|
and Tom Hopkins.
|
||||||
|
|
||||||
|
The versions 2.6.2, 2.7 and 2.8 releases were coordinated by Darren Reed.
|
||||||
|
|
||||||
|
Contributions for the 2.8 release from the following people:
|
||||||
|
Matthew Green <phone@coombs.anu.edu.au>
|
||||||
|
Chuck Kane <ckane@ece.uiuc.edu>
|
||||||
|
Matt Lyle <matt@oc.com>
|
||||||
|
Vesa Ruokonen <ruokonen@lut.fi>
|
||||||
|
|
||||||
|
Markku Savela <Markku.Savela@vtt.fi> / April 1990
|
||||||
|
Fixed various bugs in 2.2PL1 release server (2.2msa.4) and changed
|
||||||
|
sockets to use non-blocking mode (2.2msa.9). [I have absolutely
|
||||||
|
nothing to do with clients :-]
|
||||||
|
|
||||||
|
Chelsea Ashley Dyerman <chelsea@earth.cchem.berkeley.edu> / April 1990
|
||||||
|
Rewrote the Makefiles, restructuring of source tree. Added libIrcd.a to
|
||||||
|
the Makefile macros, numerous reformatting of server text messages, and
|
||||||
|
added mkversion.sh to keep track of compilation statistics. Numerous
|
||||||
|
bug fixes and enhancements, and co-coordinator of the 2.4 release.
|
||||||
|
|
||||||
|
Jarle Lyngaas (nmijl@alf.uib.no) added Note functions to ircd.
|
||||||
|
|
||||||
|
Armin Gruner <gruner@informatik.tu-muenchen.de> / May, June 1990:
|
||||||
|
* Patched KILL-line feature for ircd.conf, works now.
|
||||||
|
Enhancement: Time intervals can be specified in passwd-field.
|
||||||
|
Result: KILL-Line is only active during these intervals
|
||||||
|
* Patched PRIVMSG handling, now OPER can specify masks for sending
|
||||||
|
private messages, advantage: msg to all at a specified server or host.
|
||||||
|
* Little tests on irc 2.5 alpha, fixed some little typos in client code.
|
||||||
|
Change: common/debug.c has been moved to ircd/s_debug.c, and a
|
||||||
|
irc/c_debug.c has been created, for the benefit that wrong server msg
|
||||||
|
are displayed if client does not recognize them. (strange, if a server
|
||||||
|
sends an 'unknown command', isn't it?)
|
||||||
|
|
||||||
|
Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
|
||||||
|
* Patched msa's K lines for servers (Q lines).
|
||||||
|
* Consolidated several patches, including Stealth's logging patch.
|
||||||
|
* Fixed several minor bugs.
|
||||||
|
* Has done lots of other stuff that I can't seem to remember, but he
|
||||||
|
always works on code, so he has to have done alot more than three
|
||||||
|
lines worth. :)
|
||||||
|
|
||||||
|
Carsten Munk <stskeeps@mp3fans.co.uk> / May and futher 1999:
|
||||||
|
* Made many features based on Elite.. :/
|
||||||
|
|
||||||
|
Thanks go to those persons not mentioned here who have added their advice,
|
||||||
|
opinions, and code to IRC.
|
||||||
|
|
||||||
|
Various modifications, bugreports, cleanups and testing by:
|
||||||
|
|
||||||
|
Hugo Calendar <hugo@ucscb.ucsc.edu>
|
||||||
|
Bo Adler <adler@csvax.cs.caltech.edu>
|
||||||
|
Michael Sandrof <ms5n+@andrew.cmu.edu>
|
||||||
|
Jon Solomon <jsol@cs.bu.edu>
|
||||||
|
Jan Peterson <jlp@hamblin.math.byu.edu>
|
||||||
|
Nathan Glasser <nathan@brokaw.lcs.mit.edu>
|
||||||
|
Helen Rose <hrose@eff.org>
|
||||||
|
Mike Pelletier <stealth@caen.engin.umich.edu>
|
||||||
|
Basalat Ali Raja <gwydion@tavi.rice.edu>
|
||||||
|
Eric P. Scott <eps@toaster.sfsu.edu>
|
||||||
|
Dan Goodwin <fornax@wpi.wpi.edu>
|
||||||
|
Noah Friedman <friedman@ai.mit.edu>
|
||||||
|
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
SmartRoute
|
||||||
|
Rule based connects
|
||||||
|
Draft 4 - Aug 19, 1994
|
||||||
|
by Tony Vencill
|
||||||
|
|
||||||
|
Rule based connects allow an admin to specify under what conditions
|
||||||
|
a connect should not be allowed. If no rules are specified for a
|
||||||
|
given C and/or N line it will be allowed under any condition.
|
||||||
|
|
||||||
|
A rule may consist of any legal combination of the following functions
|
||||||
|
and operators.
|
||||||
|
|
||||||
|
Functions
|
||||||
|
---------
|
||||||
|
connected(targetmask) - true if a server other than that processing
|
||||||
|
the rule is connected that matches the
|
||||||
|
target mask
|
||||||
|
directcon(targetmask) - true if a server other than that processing
|
||||||
|
the rule is directly connected that matches
|
||||||
|
the target mask
|
||||||
|
via(viamask, targetmask) - true if a server other than that processing
|
||||||
|
the rule matches the target mask and is
|
||||||
|
connected via a directly connected server
|
||||||
|
that matches the via mask
|
||||||
|
directop() - true if an oper is directly connected
|
||||||
|
|
||||||
|
Unary operators
|
||||||
|
---------------
|
||||||
|
! eg: !argument - true if the argument is false
|
||||||
|
|
||||||
|
Binary operartors
|
||||||
|
-----------------
|
||||||
|
&& eg: arg1&&arg2 - true if arg1 and arg2 are both true
|
||||||
|
|| eg: arg1||arg2 - true if arg1, arg2, or both are true
|
||||||
|
|
||||||
|
Parenthesis () are allowed for grouping arguments, but if no parenthesis
|
||||||
|
are included, && will take precedence over ||, ! will take precedence
|
||||||
|
over both && and ||, and the function will be evaluated from left to
|
||||||
|
right. White space in a rule is ignored. Invalid characters in a rule
|
||||||
|
will lead to the rule being ignored.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
|
||||||
|
A simple example of a connect rule might be:
|
||||||
|
|
||||||
|
connected(*eu.under*)
|
||||||
|
|
||||||
|
This might be used in a US undernet server for a Europe CN pair to
|
||||||
|
insure that a second Europe link is not allowed if one US-EU link
|
||||||
|
already exists. Note that on the undernet, US server names are
|
||||||
|
city.state.us.undernet.org and Europe server names are
|
||||||
|
city.country.eu.undernet.org.
|
||||||
|
|
||||||
|
A more interesting example might be:
|
||||||
|
|
||||||
|
connected(*eu.under*) &&
|
||||||
|
( !direct(*eu.under*) || via(manhat*, *eu.under*) )
|
||||||
|
|
||||||
|
Imagine the Boston undernet server uses this rule on its Europe CN
|
||||||
|
pairs. This says that if a Europe server is already connected, a
|
||||||
|
Boston-Europe connect will not be allowed. It also says that if a
|
||||||
|
Europe server does already exist and Boston is not directly connected
|
||||||
|
to one or more Europe servers or Manhattan is, the Boston-Europe
|
||||||
|
connect will not be allowed. This has the effect of allowing multiple
|
||||||
|
US-EU links but attempting to limit these links to one server (ie:
|
||||||
|
Boston will not initiate its first Europe link if another server is
|
||||||
|
already linking Europe). This rule will also prefer to let Manhattan
|
||||||
|
handle the US-EU link by disallowing Boston-Europe links if a Europe
|
||||||
|
server is already linked to Manhattan.
|
||||||
|
|
||||||
|
A example of the remaining function, directop(), is:
|
||||||
|
|
||||||
|
connected(*eu.under*) || directop()
|
||||||
|
|
||||||
|
If this line is used on Boston for the Paderborn CN pair, it will allow
|
||||||
|
connects to Paderborn only if another Europe server is not already
|
||||||
|
connected and there is not an oper on Boston. If this rule is
|
||||||
|
overrideable (ie: is applied only to autoconnects as described below),
|
||||||
|
then it will disallow Boston autoconnects to Paderborn while a Boston
|
||||||
|
oper is online, but allow oper-initiated connects to Paderborn under any
|
||||||
|
circumstance. This directop() function could be used to invoke less
|
||||||
|
prefered routes only when an oper is not present to handle routing, or
|
||||||
|
conversly to allow use of less preferable routes only when an oper is
|
||||||
|
present to monitor their performance.
|
||||||
|
|
||||||
|
ircd.conf entries
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
A rule is listed in the ircd.conf file using a D or d line (which can
|
||||||
|
be thought of as a "disallow" line). D lines will apply to all oper
|
||||||
|
and server originated connects, while d lines will apply only to
|
||||||
|
autoconnects (ie: they are overrideable by opers). The formats are:
|
||||||
|
|
||||||
|
D:targetmask::rule
|
||||||
|
d:targetmask::rule
|
||||||
|
|
||||||
|
Remember that newlines are not allowed in conf lines. Two examples
|
||||||
|
(from above) are:
|
||||||
|
|
||||||
|
D:*eu.under*::connected(*eu.under*)
|
||||||
|
d:*eu.under*::connected(*eu.under*) || directop()
|
||||||
|
|
||||||
|
Connects originating from other servers will be checked against and
|
||||||
|
matching D lines, while matching d lines will be ignored as it will not
|
||||||
|
be clear whether or not the connection attempt is oper initiated.
|
||||||
|
|
||||||
|
Checking and viewing rules
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
The chkconf program that comes with the servers has been modified to
|
||||||
|
also check your connect rules. If running in debug mode, parsing errors
|
||||||
|
will show up at debug level 8. To view rules online, "/stats d" can be
|
||||||
|
used to see all rules and "/stats D" can be used to view those rules
|
||||||
|
which affect oper initiated connects and accepts.
|
||||||
|
|
||||||
|
Processing and storage
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The rules are parsed when the conf file is read and transformed into a
|
||||||
|
more efficiently computed form, then all applicable rules are
|
||||||
|
evaluated each time a connect command is given or an autoconnect is
|
||||||
|
due. If more than one applicable rule is given, only one need
|
||||||
|
evaluate to true for the connect to be allowed (ie: the rules are ored
|
||||||
|
together). Note that conditions that exist when the connect is
|
||||||
|
initiated might differ from conditions when the link is established.
|
||||||
|
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
[ $Id$ ]
|
||||||
|
---------------------------
|
||||||
|
Version Elite2.0 ==========
|
||||||
|
===========================
|
||||||
|
- Since +x was rewritten, the ban bug is 100% fixed. :)
|
||||||
|
- Rewrote +x hidden host function completely.
|
||||||
|
- Fixed FUNNY bug with hiddenhost and /who (Reported by Prod|gy)
|
||||||
|
- Added/Removed irc networks
|
||||||
|
- Fixed bug in /watch (Reported/Fixed by Despise)
|
||||||
|
- Added nick-change flood protection.
|
||||||
|
- Added an awesome manual... ./manual to run
|
||||||
|
- Removed /who notice for opers.
|
||||||
|
- Added protection of /akill *@* :)
|
||||||
|
- Removed java stuff completely. (Java clients are like normal IRC clients...right?)
|
||||||
|
- Added new +a mode. This mode can only be set by +q channel owners. When you are +a in a
|
||||||
|
channel, you cannot be deopped or kicked. (Syntax: /mode #chan +a <nick>)
|
||||||
|
- Added new +q channel mode. ChanServ must set the channel founder +q so they are also
|
||||||
|
known as channel owners via the ircd. Channel owners are protected and may set
|
||||||
|
other users +a which they will also be protected (but not chan owners).
|
||||||
|
(Syntax: /mode #chan +q <nick>)
|
||||||
|
- Re-coded /MAP
|
||||||
|
- Changed GLINE notices from sendto_ops to send to all opers with +e flag on.
|
||||||
|
- Added (addnet) script, you can run this to add your net settings to the next release.
|
||||||
|
- Changed <server> to <ircnetwork> in whois "Blah is an oper on <server>"
|
||||||
|
- Added new +L channel mode. If a #chat has a limit (+l) of 10 users, and +L set to channel
|
||||||
|
#chat2, when a user trys to join #chat, they won't get "#chat is full", they will be
|
||||||
|
auto-joined to #chat2 - (Linked channels in other words).
|
||||||
|
(Syntax: /mode #chan +L <linked chan>)
|
||||||
|
- Changes user@shadow-33.com to user@user-33.one.com (noone will know one.com is the realhost)
|
||||||
|
- Changed +x for IP's from (x.x.x.***) to (x.x.x.network-#)
|
||||||
|
- In oline flags * will introduce +e on oper up. (before: required +e in oline flag)
|
||||||
|
- Removed +t usermode (UMODE_ALL) - wasn't used.
|
||||||
|
- Made 'create your own network setting' feature more stable.
|
||||||
|
- Added new channel mode (+x) to disable colored text in channel.
|
||||||
|
- Added +C (Co Administrator)
|
||||||
|
- Added +T (Technical Administrator)
|
||||||
|
- Changed /map to numerics...
|
||||||
|
- Made startup message when booting more stable.
|
||||||
|
|
||||||
|
Version Elite1.3 (02/23/99)
|
||||||
|
============================
|
||||||
|
- Cleaned up version.c.SH
|
||||||
|
- Added new net settings (netdomain & helpchan)
|
||||||
|
- Added new net config creator in ./Config
|
||||||
|
- Made ./Config more easier...
|
||||||
|
- Created new usermode +j (Java user)
|
||||||
|
- New hostname (java.shadownet.org) for java users.
|
||||||
|
- Removed RUN_SERVICES code from entire ircd.
|
||||||
|
|
||||||
|
Version Elite1.2.4 (02/14/99)
|
||||||
|
============================
|
||||||
|
- Fixed the nick crash bug! (damn m_kill small error)
|
||||||
|
- New network(s) added.
|
||||||
|
- Changed one thing in m_gline (nothing big)
|
||||||
|
|
||||||
|
Version Elite1.2.3 (02/10/99)
|
||||||
|
============================
|
||||||
|
- Removed SOCKS checking. (possibly cause of crashing)
|
||||||
|
- Added new networks
|
||||||
|
|
||||||
|
Version Elite1.2.2 (02/02/99)
|
||||||
|
============================
|
||||||
|
- Fixed the crashing bug. (Changing nicks with linked servers)
|
||||||
|
- Modified AceStar net settings.
|
||||||
|
- Q-line notices are back (except for ULined clients).
|
||||||
|
- Fixed /kill bug with services.
|
||||||
|
|
||||||
|
Version Elite1.2.1 (01/29/99)
|
||||||
|
============================
|
||||||
|
- Fixed multiple notices from +N / -N
|
||||||
|
- Added some text to s_err.c
|
||||||
|
- Possibly fixed the odd crashing... ?
|
||||||
|
|
||||||
|
Version Elite1.2 (01/24/99)
|
||||||
|
============================
|
||||||
|
- Netadmin can be used via +N in the oline slot now.
|
||||||
|
- When +N is executed, net-wide oper msg's are sent about it.
|
||||||
|
- Completely removed the freeze function (it's a toy unlike a command)
|
||||||
|
- Changed abit of the GLINE adding notice.
|
||||||
|
- Added logging to a file for glines (gline.log)
|
||||||
|
- Implemented SOCKS checking (thx Rhom).
|
||||||
|
- Changed channel lists only when 2 ppl in chan to 1.
|
||||||
|
- Changed sendto_ops function in many places in s_user.c/s_serv.c to
|
||||||
|
sendto_locfailops.
|
||||||
|
- Changed GNOTICE in s_user.c/s_serv.c to GLOBOPS
|
||||||
|
- Fixed hiddenhost bug with /kill (+w could see real host of oper)
|
||||||
|
- Fixed hiddenhost bug with /oper (+s could see real host of oper)
|
||||||
|
|
||||||
|
[Special thanks goes out to Rhom for reporting/help patch bugs]
|
||||||
|
|
||||||
|
Version Elite1.1.1 (12/12/98)
|
||||||
|
=============================
|
||||||
|
- Fixed /whois bug (had problems with mIRC clients *sigh*)
|
||||||
|
- Fixed /topic bug (didn't allow topic changes at all.)
|
||||||
|
|
||||||
|
Version Elite1.1 (12/6/98)
|
||||||
|
============================
|
||||||
|
- Fixed ./Config script (Net select)
|
||||||
|
- Fixed /remgline bug.
|
||||||
|
- If ULined clients, channels are not shown which they are in.
|
||||||
|
- Fixed +e / +t / +b (non-opers could get +et before)
|
||||||
|
- Fixed OperMode notice.
|
||||||
|
- Fixed Gline sending extra Global on expire.
|
||||||
|
- Fixed /whowas wrong hostname bug (by Thiago)
|
||||||
|
- Fixed chkconf ZLINE error (by matt)
|
||||||
|
- Added PhazeNet configuration
|
||||||
|
- Added option for auto +x in ./Config
|
||||||
|
- Freeze was disabled in this version (It will be back in 1.2)
|
||||||
|
|
||||||
|
Version Elite1.0 (09/20/98)
|
||||||
|
============================
|
||||||
|
- Changed Shadow3.9 to Elite1.0 (Starting a new IRCD)
|
||||||
|
- Changed some numeric's around in src/s_err.c
|
||||||
|
- Auto +x on Oper up.
|
||||||
|
- Fixed small error in ./ircd script.
|
||||||
|
- Made ./Config more Linux-redhat friendly.
|
||||||
|
- Added RelicNet to the ircd.
|
||||||
|
- include/config.h is much more compatible with all IRC nets.
|
||||||
|
- Added /gline (works 100%) [/gline <user@host> <seconds> <reason>].
|
||||||
|
- Fixed up /map.
|
||||||
|
- Added UMODE's +e & +t
|
||||||
|
* e: EYES [Can see ppl who /whois, and other notices.]
|
||||||
|
* t: ALL [See's all net notices ie: See's all Client connectings...]
|
||||||
|
- Fixed the hiddenhost bug with IP's...
|
||||||
|
- Fixed major bug with hiddenhost which caused coredump.
|
||||||
|
- Made a new script (makeconf) -- generates the ircd.conf file.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
The foll. patches are NEW in 19.mu1 (besides the old patches of stats-w,
|
||||||
|
ban, topic, client connect, signon time, trace times in previous .mu
|
||||||
|
versions):
|
||||||
|
|
||||||
|
* All the modifications contained in U3.2, namely - TSpre8, silence, bquiet
|
||||||
|
|
||||||
|
* The K line comments patch.
|
||||||
|
|
||||||
|
* The operfail notification patch
|
||||||
|
|
||||||
|
* The mixed case userid reject patch
|
||||||
|
|
||||||
|
For info on these check the file README.patches
|
||||||
|
|
||||||
|
- Mmmm
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
For starters, not a lot is new. What is ?
|
||||||
|
|
||||||
|
* STATS o and STATS h added;
|
||||||
|
|
||||||
|
* most STATS options are no longer oper-only;
|
||||||
|
|
||||||
|
* privacy fixes to all of WHO, WHOIS, TRACE and STATS;
|
||||||
|
|
||||||
|
* more options in the ircd.conf file;
|
||||||
|
|
||||||
|
* non-debilitating DNS/ident use (DNS routines written specifically
|
||||||
|
for ircd which indludes small local cache);
|
||||||
|
|
||||||
|
* less bugs;
|
||||||
|
|
||||||
|
* easier to compile;
|
||||||
|
|
||||||
|
* heaps and heaps of new numerics;
|
||||||
|
|
||||||
|
* more problems for old clients that do stupid things;
|
||||||
|
|
||||||
|
* more numeric replies which replace old NOTICE's;
|
||||||
|
|
||||||
|
* compulsory ident checks and optional result usage;
|
||||||
|
|
||||||
|
* sendQ can now be class dependant;
|
||||||
|
|
||||||
|
* server handles client flooding better;
|
||||||
|
|
||||||
|
* for more information on changes, bug fixes during development, see
|
||||||
|
ircd/ChangeLog and common/ChangeLog
|
||||||
|
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
The Internet Relay Chat Program - IRC
|
||||||
|
|
||||||
|
Author: Jeff Trim, April '89
|
||||||
|
Revised: Greg Lindahl, Oct '90 (gl8f@virginia.edu)
|
||||||
|
Re-Revised: Helen Rose, March '94 (hrose@kei.com)
|
||||||
|
|
||||||
|
Have you ever wanted to talk with other computer users in other parts of
|
||||||
|
the world? Well guess what? You can! The program is called IRC and it
|
||||||
|
is networked much over North America, Europe, and Asia, Oceania, and parts
|
||||||
|
of Africa. This program is a substitution for talk(1), ytalk(1) and many
|
||||||
|
other multiple talk programs you might have read about. When you are
|
||||||
|
talking in IRC, everything you type will instantly be transmitted around
|
||||||
|
the world to other users that might be watching their terminals at the
|
||||||
|
time - they can then type something and RESPOND to your messages - and
|
||||||
|
vise versa. I should warn you that the program can be very addictive once
|
||||||
|
you begin to make friends and contacts on IRC ;-) especially when you
|
||||||
|
learn how to cuss in 14 languages.
|
||||||
|
|
||||||
|
Topics of discussion on IRC are varied, just like the topics of Usenet
|
||||||
|
newsgroups are varied. Technical and political discussions are
|
||||||
|
popular, especially when world events are in progress. IRC is also a
|
||||||
|
way to expand your horizons, as people from many countries and
|
||||||
|
cultures are on, 24 hours a day. Most conversations are in English,
|
||||||
|
but there are always channels in German, Japanese, and Finnish, and
|
||||||
|
occasionally other languages.
|
||||||
|
|
||||||
|
How To Get IRC (technical)
|
||||||
|
|
||||||
|
IRC is a fully-distributed client-server system, much like
|
||||||
|
NNTP-Usenet, with several clients availble in C and elisp. You may ftp
|
||||||
|
documentation and clients from any of the following sites:
|
||||||
|
|
||||||
|
many kinds of clients (C, elisp, X11, VMS, REXX for VM, MSDOS, Macintosh):
|
||||||
|
cs.bu.edu:/irc/clients
|
||||||
|
ftp.acsu.buffalo.edu:/pub/irc
|
||||||
|
ftp.funet.fi:/pub/unix/irc
|
||||||
|
coombs.anu.edu.au:/pub/irc
|
||||||
|
|
||||||
|
If you have any questions about IRC installation, write to hrose@kei.com.
|
||||||
|
|
||||||
|
[ $Id$ ]
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, doc/etiquette
|
||||||
|
* Copyright (C) 1990, Lea Viljanen and Ari Husa
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
HOW TO BEHAVE ON IRC
|
||||||
|
|
||||||
|
Authors: Lea Viljanen (LadyBug) viljanen@kreeta.helsinki.fi
|
||||||
|
Ari Husa (luru) so-luru@tolsun.oulu.fi
|
||||||
|
|
||||||
|
|
||||||
|
1) Language
|
||||||
|
|
||||||
|
The most widely understood and spoken language on IRC is English.
|
||||||
|
However! As IRC is used in many different countries, English is by
|
||||||
|
no means the only language. If you want to speak some other language
|
||||||
|
than English (for example with your friends), go to a separate channel
|
||||||
|
and set the topic (with /topic) to indicate that. For example
|
||||||
|
/topic Finnish only!
|
||||||
|
would mean that this channel would be reserved for Finnish discussion.
|
||||||
|
On the other hand, you should check the topic (with /list command)
|
||||||
|
before you move to a channel to see if there are any restrictions about
|
||||||
|
language.
|
||||||
|
On a channel not restricted by /topic, please speak a language
|
||||||
|
everybody can understand. If you want to do otherwise, change channels
|
||||||
|
and set the topic accordingly.
|
||||||
|
|
||||||
|
|
||||||
|
2) Hello/Goodbye
|
||||||
|
|
||||||
|
It's not necessary to greet everybody on a channel personally.
|
||||||
|
Usually one "Hello" or equivalent is enough. And don't expect everybody
|
||||||
|
to greet you back. On a channel with 20 people that would mean one
|
||||||
|
screenful of hellos. It's sensible not to greet, in order not to be rude
|
||||||
|
to the rest of the channel. If you must say hello, do it with a private /msg.
|
||||||
|
The same applies to goodbyes.
|
||||||
|
|
||||||
|
|
||||||
|
3) Discussion
|
||||||
|
|
||||||
|
When you come to a new channel it's advised you to listen
|
||||||
|
for a while to get an impression of what's discussed. Please feel free
|
||||||
|
to join in, but do not try to force your topic into the discussion
|
||||||
|
if that doesn't come naturally.
|
||||||
|
|
||||||
|
|
||||||
|
4) {}|[]\
|
||||||
|
|
||||||
|
IRC has quite a lot of people from Scandinavian countries,
|
||||||
|
the above characters are letters in their alphabet. This
|
||||||
|
has been explained on IRC about a thousand and one times, so
|
||||||
|
read the following, do not ask it on IRC:
|
||||||
|
|
||||||
|
{ is an A with 2 dots over it
|
||||||
|
} is an A with a small circle above it
|
||||||
|
| is either an O with 2 dots over it or an O with a dash (/) through it
|
||||||
|
[, ], and \ are the preceding three letters in upper case.
|
||||||
|
|
||||||
|
There are a lot of people from Japan as well, who use Kanji characters
|
||||||
|
which may look quite exotic as well. As I don't know Kanji I don't
|
||||||
|
even try to explain any of the characters.
|
||||||
|
|
||||||
|
5) ATTENTION!
|
||||||
|
|
||||||
|
Remember, people on IRC form their opinions about you only by
|
||||||
|
your actions, writings and comments on IRC. So think before you type.
|
||||||
|
Do not "dump" to a channel or user (send large amounts of unwanted
|
||||||
|
information). This is likely to get you /kicked off the channel or
|
||||||
|
/killed off from irc. Dumping causes network 'burbs', connections going
|
||||||
|
down because servers cannot handle the large amount of traffic any more.
|
||||||
File diff suppressed because it is too large
Load Diff
+963
@@ -0,0 +1,963 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
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.
|
||||||
+382
@@ -0,0 +1,382 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, doc/MANUAL
|
||||||
|
* Copyright (C) 1990, Karl Kleinpaste
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Date: 04 Apr 1989
|
||||||
|
Author: Karl Kleinpaste
|
||||||
|
karl@cis.ohio-state.edu
|
||||||
|
|
||||||
|
Last modification: 15 May 1992
|
||||||
|
by Mauri Haikola
|
||||||
|
mjh@stekt.oulu.fi
|
||||||
|
|
||||||
|
|
||||||
|
INTERNET RELAY CHAT
|
||||||
|
a real-time conversational system
|
||||||
|
|
||||||
|
|
||||||
|
* 1: Irc - replacement for talk(1)
|
||||||
|
|
||||||
|
Irc is a functional replacement for and improvement to talk(1). Talk
|
||||||
|
is an old, primitive, atrocious, minimalist sort of keyboard/screen
|
||||||
|
conversation tool, using a grotesque, machine-dependent protocol.
|
||||||
|
Irc does everything talk does, but with a better protocol, allowing
|
||||||
|
more than 2 users to talk at once, with access across the aggregate
|
||||||
|
Internet, and providing a whole raft of other useful features.
|
||||||
|
|
||||||
|
* 2: Entering Internet Relay Chat
|
||||||
|
|
||||||
|
There are two ways to enter Internet Relay Chat. If you are using the
|
||||||
|
emacs lisp client, you need to load the client into your Emacs session
|
||||||
|
and then M-x irc. If you are using the C client (easier for beginners)
|
||||||
|
then type (usually) irc. If you wish to be known by a nickname which
|
||||||
|
is not one's login name, type `irc chosen-nickname' instead.
|
||||||
|
|
||||||
|
* 3: How much can be seen from here
|
||||||
|
|
||||||
|
The universe - seriously.
|
||||||
|
|
||||||
|
This is most formally called Internet Relay Chat. Server hosts are
|
||||||
|
connected via a tree structure. The various servers relay control and
|
||||||
|
message data among themselves to advertise the existence of other
|
||||||
|
servers, users, and the channels and other resources being occupied by
|
||||||
|
those users.
|
||||||
|
|
||||||
|
* 4: Structure
|
||||||
|
|
||||||
|
There is quite a lot of structure to the operation of irc, as
|
||||||
|
compared to crufty old talk(1). Since so little could be done with
|
||||||
|
talk(1), it needed little structure. But to keep track of people
|
||||||
|
spread literally around the world (the system was written by Jarkko
|
||||||
|
Oikarinen of Finland, usually seen on the system as `Wiz'), the
|
||||||
|
structure is useful so that one can speak to exactly those people with
|
||||||
|
whom one wishes to speak.
|
||||||
|
|
||||||
|
** 4.1: Nicknames
|
||||||
|
|
||||||
|
All users of irc are known to the system by a `nickname.' By
|
||||||
|
default, one's nickname is one's login name. Nickname clashes are not
|
||||||
|
allowed; this is enforced by the servers. If one's intended nickname
|
||||||
|
clashes with someone else as one enters chat, one will not be able to
|
||||||
|
complete entry to irc until one changes one's nickname to something
|
||||||
|
else.
|
||||||
|
|
||||||
|
** 4.2: Presence on a channel
|
||||||
|
|
||||||
|
Fundamental to the operation of irc is the concept of a channel. All
|
||||||
|
users are `on a channel' while inside irc. One enters the `null
|
||||||
|
channel' first. One cannot send any messages while not in any
|
||||||
|
chatting channel unless one has set up a private conversation in some
|
||||||
|
way. The number of channels is essentially unlimited - whatever will
|
||||||
|
fit in a string of some ungodly length, that must start with a # sign.
|
||||||
|
|
||||||
|
** 4.3: Main modes of channels
|
||||||
|
|
||||||
|
Public
|
||||||
|
|
||||||
|
This is the default mode for a channel. When one is on a public
|
||||||
|
channel, one can be seen by all other users (if one's own user mode
|
||||||
|
permits this). Anyone can notice users on a public channel and join
|
||||||
|
such a channel's conversation.
|
||||||
|
|
||||||
|
Private
|
||||||
|
|
||||||
|
This means that, although anyone can see that one is using chat, no
|
||||||
|
one can tell what channel one is using unless one is already on that
|
||||||
|
channel with oneself. Since the number of potential channels is in
|
||||||
|
the billions, this is quite some security - all one gives away is the
|
||||||
|
acknowledgement that one is using chat.
|
||||||
|
|
||||||
|
Secret
|
||||||
|
|
||||||
|
While one is on a secret channel, no one who is not on one's channel
|
||||||
|
with oneself can even see that one is there. One's name does not show
|
||||||
|
up in a list of active users. The only indication of one's presence
|
||||||
|
is that, when entering chat, all new users are told that there are "N
|
||||||
|
users on P servers." If one checks on all users and finds less than N
|
||||||
|
of them, one knows that others are hiding on secret channels. But a
|
||||||
|
secret channel user still cannot be found except by brute-force
|
||||||
|
checking through all channels, a hopeless proposition in the face of
|
||||||
|
the huge number of possible channel names. Security through obscurity
|
||||||
|
finally means something.
|
||||||
|
|
||||||
|
Changing the mode
|
||||||
|
|
||||||
|
The mode of a channel (private, secret, invite-only, moderated,
|
||||||
|
topic-limited, person-number-limited, no-messages-to-channel, ban
|
||||||
|
someone from channel) is set by the channel operator, who is the
|
||||||
|
first person to join a channel, or someone who has had channel
|
||||||
|
operatorship bestowed on them by another channel operator.
|
||||||
|
|
||||||
|
|
||||||
|
*** 4.4: Conversations not using channels
|
||||||
|
|
||||||
|
It is possible to conduct conversations with others without using the
|
||||||
|
formalized channel structure. Doing so requires that two people set
|
||||||
|
themselves up for private conversation using special commands; see
|
||||||
|
User Commands below.
|
||||||
|
|
||||||
|
* 5: Screen/keyboard structure
|
||||||
|
|
||||||
|
Chat is a full-screen utility. It takes over the screen, with the
|
||||||
|
bulk of activity happening in the top N-2 lines, a modeline (vaguely
|
||||||
|
emacs-like) on the next to last line, and one's input being entered on
|
||||||
|
the last line. A very good version of client is the IRC-II client,
|
||||||
|
avaliable on anonymous ftp from various sites around the world.
|
||||||
|
|
||||||
|
** 5.1: Keyboard input
|
||||||
|
|
||||||
|
When typing commands at irc, one has a minimalist line-editing
|
||||||
|
facility in an emacs style. That is, ^A moves the cursor to the
|
||||||
|
beginning of the line, ^E goes to the end, ^D deletes the character
|
||||||
|
under the cursor, ^K kills from the cursor to the end, and so on.
|
||||||
|
|
||||||
|
** 5.2: Screen activity
|
||||||
|
|
||||||
|
Almost everything happens in the upper bulk of the screen. This
|
||||||
|
includes both messages from other users, as well as the output of the
|
||||||
|
control commands.
|
||||||
|
|
||||||
|
Normal messages from other users appear with the originating nickname
|
||||||
|
in <angle brackets>. Private messages arrive with the originating
|
||||||
|
nickname in *asterisks*. Messages which one sends to everyone appear
|
||||||
|
with a preceding "> " whereas messages which one sends privately to
|
||||||
|
one other user appear with "-> *nickname*."
|
||||||
|
|
||||||
|
Other output (e.g., /who commands, invitations from other users to
|
||||||
|
join channels, and so forth) appears interspersed with other activity
|
||||||
|
on the screen.
|
||||||
|
|
||||||
|
* 6: Command structure
|
||||||
|
|
||||||
|
Ordinary text typed at irc is sent as one's messages to everyone else
|
||||||
|
on the same channel, modulo personal choices for private messages and
|
||||||
|
the like. Commands to irc itself all begin with a command character,
|
||||||
|
which is initially `/' but may be changed to any other character
|
||||||
|
desired.
|
||||||
|
|
||||||
|
Commands may in general be abbreviated to a unique prefix.
|
||||||
|
|
||||||
|
** 6.1: Leaving irc
|
||||||
|
|
||||||
|
The way to get out of irc is to enter the /signoff command. "/si" is
|
||||||
|
sufficient. Also equivalent are "/exit," "/bye," and "/quit." A
|
||||||
|
signoff command may include a comment which will be seen by everyone
|
||||||
|
on the current channel of the person who left.
|
||||||
|
|
||||||
|
** 6.2: Getting help
|
||||||
|
|
||||||
|
Type "/help." Follow the instructions.
|
||||||
|
|
||||||
|
** 6.3: User commands
|
||||||
|
|
||||||
|
The most important commands supported by irc are:
|
||||||
|
|
||||||
|
help signoff who whois
|
||||||
|
list topic join channel
|
||||||
|
links msg invite ignore
|
||||||
|
users stats nick away
|
||||||
|
info clear query cmdch
|
||||||
|
date mode
|
||||||
|
|
||||||
|
*** 6.3.1: help
|
||||||
|
|
||||||
|
Information on how to use the rest of the system is available via
|
||||||
|
/help. The modeline says so as well.
|
||||||
|
|
||||||
|
*** 6.3.2: signoff {comment}
|
||||||
|
|
||||||
|
/signoff exits chat. Optional comment may be included; see above.
|
||||||
|
|
||||||
|
*** 6.3.3: who
|
||||||
|
|
||||||
|
/who returns information on who is using chat. /who without arguments
|
||||||
|
prints info on all users that can be seen. Users of public channels
|
||||||
|
show up with their channel identified. Users of private channels
|
||||||
|
appear, but they are specified as being on a private, unspecified
|
||||||
|
channel. Users of secret channels and users whose user mode is +i
|
||||||
|
(invisible) do not appear at all.
|
||||||
|
|
||||||
|
Giving a channel name as an argument to /who returns only those users of the
|
||||||
|
specified channel. This still doesn't show users of secret channel or
|
||||||
|
invisible users one is actually on the same channel with them. Users
|
||||||
|
of private channels are shown, if an exact channel name is given.
|
||||||
|
|
||||||
|
*** 6.3.4: whois
|
||||||
|
|
||||||
|
This returns information about individual users. Say "/whois
|
||||||
|
nickname" to get information on the login name and host from which the
|
||||||
|
nicknamed user comes.
|
||||||
|
|
||||||
|
*** 6.3.5: topic
|
||||||
|
|
||||||
|
Channels can be given off-the-cuff "topics." Saying "/topic some
|
||||||
|
string of text" will associate that topic with the current channel.
|
||||||
|
|
||||||
|
*** 6.3.6: list
|
||||||
|
|
||||||
|
/list will give lists of active channels, the number of users of each,
|
||||||
|
and the topics therewith associated. Again, secret channels do not
|
||||||
|
appear and private channels only appear as Prv.
|
||||||
|
|
||||||
|
*** 6.3.7: join & channel
|
||||||
|
|
||||||
|
/join or /channel are the means to enter a channel. Give the channel
|
||||||
|
name as an argument. If this is a secret or hidden channel, /who
|
||||||
|
commands will show oneself and any other users of one's channel.
|
||||||
|
|
||||||
|
One's arrival on a channel is announced to the rest of the users
|
||||||
|
already on that channel. Silent, anonymous "lurking" is not
|
||||||
|
supported.
|
||||||
|
|
||||||
|
*** 6.3.8: links
|
||||||
|
|
||||||
|
/links lists the currently-active set of chat servers. Beware: this
|
||||||
|
list can be quite long, and will undoubtedly get longer as chat gains
|
||||||
|
wider use. As of 15 May, 1992, about 130 servers is typical.
|
||||||
|
|
||||||
|
*** 6.3.9: msg
|
||||||
|
|
||||||
|
A single message can be sent privately to a certain user with /msg.
|
||||||
|
Type /msg nickname and the text to be sent. It will be sent privately
|
||||||
|
to the indicated nickname.
|
||||||
|
|
||||||
|
*** 6.3.10: invite
|
||||||
|
|
||||||
|
If there is a user online to whom one wishes to speak, one may invite
|
||||||
|
that user to join oneself on a certain channel. One types "/invite
|
||||||
|
nickname" with an optional channel number. The receiving user gets a
|
||||||
|
one-line message indicating the sender and the invitation. The
|
||||||
|
receiving user is free to ignore the invitation, of course.
|
||||||
|
|
||||||
|
*** 6.3.11: ignore
|
||||||
|
|
||||||
|
If one wants to ignore messages sent by some other user or users, it
|
||||||
|
may be done with /ignore command. One can ignore someone by their
|
||||||
|
nickname, or by their user@host data. Wildcards may be used.
|
||||||
|
|
||||||
|
*** 6.3.12: users
|
||||||
|
|
||||||
|
/users will return a list of the users logged into one's system. With
|
||||||
|
an optional hostname identifying a chat server host, the users logged
|
||||||
|
into that system will be listed.
|
||||||
|
|
||||||
|
*** 6.3.13: stats
|
||||||
|
|
||||||
|
This command returns counts of various protocol operations of one's
|
||||||
|
chat server. It is neither particularly useful nor interesting to
|
||||||
|
users other than operators.
|
||||||
|
|
||||||
|
*** 6.3.14: nick
|
||||||
|
|
||||||
|
One can change nicknames by issuing "/nick new-nickname." All users
|
||||||
|
on one's channel will be advised of the change. NOTE: If one enters
|
||||||
|
chat with a nickname clash (e.g., one's login name is the same as
|
||||||
|
someone else's, and the other user got there first), the system will
|
||||||
|
not let one enter until one issues a /nick command with a unique
|
||||||
|
nickname.
|
||||||
|
|
||||||
|
*** 6.3.15: away
|
||||||
|
|
||||||
|
Sometimes, one wishes to remain connected to the chat system, but one
|
||||||
|
must be elsewhere for a while. One can issue an /away command with
|
||||||
|
arbitrary text as argument, which will mark oneself as being away. If
|
||||||
|
someone sends an away'd user a private message (via /msg or in a
|
||||||
|
private session set up via /query; see below), the sender will get a
|
||||||
|
message back from the server indicating the away-ness and the message
|
||||||
|
which was set.
|
||||||
|
|
||||||
|
*** 6.3.16: info
|
||||||
|
|
||||||
|
/info returns information regarding the author and copyright of the
|
||||||
|
chat system.
|
||||||
|
|
||||||
|
*** 6.3.17: clear
|
||||||
|
|
||||||
|
At times, one wishes that one's screen weren't so cluttered. /clear
|
||||||
|
makes it so.
|
||||||
|
|
||||||
|
*** 6.3.18: query
|
||||||
|
|
||||||
|
This command is used to set up private communications `outside' the
|
||||||
|
normal channel system.
|
||||||
|
|
||||||
|
When one enters "/query nickname," the indicated nickname is set up as
|
||||||
|
the sole recipient of anything which one types thereafter. Thus, if
|
||||||
|
user A executes "/query B" and user B executes "/query A," they have
|
||||||
|
set up a private communication between themselves. Significantly, it
|
||||||
|
remains possible for them to stay on their respective channels, which
|
||||||
|
need not be the same, and listen to whatever conversation is going on
|
||||||
|
around them as well, though they cannot respond to that ambient
|
||||||
|
conversation without leaving the private conversation they have set up.
|
||||||
|
|
||||||
|
One leaves this private mode by issuing /query without arguments.
|
||||||
|
|
||||||
|
*** 6.3.19: cmdch
|
||||||
|
|
||||||
|
The `/' character may not be best for some people to use as their
|
||||||
|
command character. It can be changed with "/cmdch <character>."
|
||||||
|
|
||||||
|
*** 6.3.20: mode
|
||||||
|
|
||||||
|
This command can be used for altering the various modes of a channel
|
||||||
|
(see the explanation of channel modes above). /mode command can only
|
||||||
|
be issued by channel operators.
|
||||||
|
|
||||||
|
** 6.4: Operator commands
|
||||||
|
|
||||||
|
The chat system administrators on each host have additional
|
||||||
|
responsibilities and power over the configuration and operation of the
|
||||||
|
servers. The commands to do so are delineated below.
|
||||||
|
|
||||||
|
*** 6.4.1: oper
|
||||||
|
|
||||||
|
Users who have the potential for operator privileges initially invoke
|
||||||
|
those privileges by "/oper nickname password," where nickname is the
|
||||||
|
nickname under which operation is intended, and password is the
|
||||||
|
password known to the chat system for that nickname.
|
||||||
|
|
||||||
|
*** 6.4.2: kill
|
||||||
|
|
||||||
|
Obnoxious users had best beware the operator who's fast on the /kill
|
||||||
|
command. "/kill nickname" blows any given nickname completely out of
|
||||||
|
the chat system.
|
||||||
|
|
||||||
|
Obnoxiousness is not to be tolerated. But operators should not use
|
||||||
|
/kill lightly.
|
||||||
|
|
||||||
|
*** 6.4.3: quote
|
||||||
|
|
||||||
|
Raw access to the underlying server protocol is possible through the
|
||||||
|
user of the /quote command. "/quote any text at all" is used to send
|
||||||
|
direct, unmodified commands to the servers. This has a wide variety
|
||||||
|
of uses, such as deliberately killing a local or remote chat daemon,
|
||||||
|
invoking operator privileges for otherwise-operator-priv-forbidden
|
||||||
|
users, and related tasks. It is, again, a very powerful operation,
|
||||||
|
and not to be used lightly.
|
||||||
|
|
||||||
|
* 7: Questions, problems, troubles?
|
||||||
|
|
||||||
|
If you have problems, please contact Christopher Davis (ckd@eff.org) or
|
||||||
|
Helen Rose (hrose@eff.org). Known as "ckd" and "Trillian" on irc,
|
||||||
|
respectively. You can also ask for help on some of the operator
|
||||||
|
channels on irc, for example #twilight_zone and #eu-opers. They will
|
||||||
|
be able to assist you in whatever problems you are having with IRC.
|
||||||
|
|
||||||
+241
@@ -0,0 +1,241 @@
|
|||||||
|
Internet Relay Chat Operator Etiquette Guide (May, 1992)
|
||||||
|
[ $Id$ ]
|
||||||
|
|
||||||
|
Welcome! You've either been selected to be an IRC Operator or you have set
|
||||||
|
up your server and thus have taken on the dual task of IRC Server
|
||||||
|
Administrator and IRC Operator. Your future days will be filled with hours
|
||||||
|
of fun chatting on IRC, and then wondering why everyone you talked to went
|
||||||
|
away, because the links had apparently broken.
|
||||||
|
|
||||||
|
Linking:
|
||||||
|
========
|
||||||
|
|
||||||
|
You will be assigned links from the IRC Routing Coordinators. Please
|
||||||
|
use these links and these links ONLY. The links have been designed to
|
||||||
|
maximize efficiency and make delays in chatting minimal. You will
|
||||||
|
usually be given two links, one to each regional backbone site.
|
||||||
|
Connect to the primary site first and then to the secondary site. You
|
||||||
|
should not need to connect to any other sites. You will be informed if
|
||||||
|
this policy changes.
|
||||||
|
|
||||||
|
Kills
|
||||||
|
=====
|
||||||
|
|
||||||
|
/kill is a special operator command. You should use it with
|
||||||
|
care, and only if absolutely needed. The format is as follows:
|
||||||
|
/kill NICKNAME comment. Comment can be a phrase of almost any length
|
||||||
|
(within reason) and should be used for specifying the reason of the kill.
|
||||||
|
Example: /kill Trillian She's a Ghost
|
||||||
|
IRC Ghosts are created after a net split has occured and the net has yet to
|
||||||
|
relink.
|
||||||
|
|
||||||
|
/wallops PHRASE This is used to talk to those users who have their
|
||||||
|
user mode set to +w. /wallops used to be a way for operators to talk
|
||||||
|
about important matters in linking etc., but it has little use
|
||||||
|
nowadays.
|
||||||
|
|
||||||
|
/TRACE command /TRACE is useful to know what servers are connected to
|
||||||
|
what. Sometimes /trace can be confusing, especially if you are using
|
||||||
|
it for the first time. Here is an example of a trace from
|
||||||
|
stekt1.oulu.fi to cdc835.cdc.polimi.it.
|
||||||
|
|
||||||
|
/TRACE cdc835.cdc.polimi.it
|
||||||
|
|
||||||
|
*** Link stekt1.oulu.fi<2.7.2> ==> cdc835.cdc.polimi.it
|
||||||
|
*** Link rieska.oulu.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||||
|
*** Link nic.funet.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||||
|
*** Link ircserver.et.tudelft.nl<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||||
|
*** Link vesuv.unisg.ch<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||||
|
*** Link apollo.di.unipi.it<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||||
|
*** Oper Class[10] ==> Allanon[cdc835.cdc.polimi.it]
|
||||||
|
*** User Class[11] ==> Lupandy[plus2.usr.dsi.unimi.it]
|
||||||
|
*** Serv Class[3] ==> apollo.di.unipi.it[131.114.4.36] 132S 445C
|
||||||
|
*** User Class[11] ==> Punk[pluto.sm.dsi.unimi.it]
|
||||||
|
*** User Class[11] ==> TheEdge[pluto.sm.dsi.unimi.it]
|
||||||
|
*** User Class[10] ==> Mork[cdc835.cdc.polimi.it]
|
||||||
|
*** User Class[11] ==> Lollo[c700-2.sm.dsi.unimi.it]
|
||||||
|
*** User Class[11] ==> Attila[hp2.sm.dsi.unimi.it]
|
||||||
|
*** Class 0 Entries linked 1
|
||||||
|
*** Class 11 Entries linked 5
|
||||||
|
*** Class 10 Entries linked 2
|
||||||
|
*** Class 3 Entries linked 1
|
||||||
|
|
||||||
|
From this output you can see that the route goes first to
|
||||||
|
rieska.oulu.fi (running version 2.7.1e), then nic.funet.fi,
|
||||||
|
ircserver.et.tudelft.nl, vesuv.unisg.ch, and apollo.di.unipi.it, after
|
||||||
|
which cdc835 is the next server. Then we see the connections on
|
||||||
|
cdc835: One operator (Allanon) and 6 users are on line. The class of
|
||||||
|
each connection is given. There is only one server connected to cdc835
|
||||||
|
at the moment, and that server is apollo.di.unipi.it (cdc835 is said
|
||||||
|
to be a "leaf" server at the moment). The numbers 132S 445C in the end
|
||||||
|
of line tell us, that there are 132 servers and 445 clients connected
|
||||||
|
to the servers from apollo onwards. Finally we see a grand total of
|
||||||
|
connections in each connection class.
|
||||||
|
|
||||||
|
|
||||||
|
/SQUIT server {comment}
|
||||||
|
/squit isolates a specified server from the next closest server, when
|
||||||
|
you look at it along the trace path starting from your server.
|
||||||
|
This is usually used in conjunction with CONNECT (explained later) to
|
||||||
|
reroute traffic. This will be described in detail in the section
|
||||||
|
"routing", preceding CONNECT.
|
||||||
|
|
||||||
|
Usage (and examples):
|
||||||
|
|
||||||
|
/squit E
|
||||||
|
|
||||||
|
If the network looks like this initially (and you are on server A)
|
||||||
|
|
||||||
|
|
||||||
|
A <---> B <---> C <---> D
|
||||||
|
^
|
||||||
|
|
|
||||||
|
v
|
||||||
|
G <---> E <---> F <---> ... (rest of the net)
|
||||||
|
|
||||||
|
|
||||||
|
Then after issuing the previous /squit the network would look like this:
|
||||||
|
|
||||||
|
A <---> B <---> C <---> D
|
||||||
|
|
||||||
|
|
||||||
|
G <---> E <---> F <---> ...
|
||||||
|
|
||||||
|
|
||||||
|
/squit E {comment}
|
||||||
|
|
||||||
|
It usually helps to give a reason why you are sending a
|
||||||
|
SQUIT for a server. This can be accomplished by sending
|
||||||
|
the command "/squit server This link is making the US route
|
||||||
|
through Finland". The SQUIT will then be sent out, and the
|
||||||
|
server sending the squit will WALLOP sending the comment
|
||||||
|
so all operators can see it.
|
||||||
|
|
||||||
|
/CONNECT server {portnum server2}
|
||||||
|
/connect is used to establish a link between two servers. These
|
||||||
|
connections must be authorized by each server's ircd.conf file, but
|
||||||
|
any operator can issue a CONNECT between authorized servers. This
|
||||||
|
command is most often used in conjunction with SQUIT to reroute
|
||||||
|
traffic.
|
||||||
|
If only one argument is given, this command causes the server you
|
||||||
|
are on to attempt to connect to the server specified. For example,
|
||||||
|
"/connect B" (in the previous example) would cause your server (A) to
|
||||||
|
connect to B.
|
||||||
|
Suppose you wanted to reconnect server F to server E? You cannot
|
||||||
|
contact server F since it is no longer part of your network. However,
|
||||||
|
you can tell server E to connect to it. A remote CONNECT can be issued
|
||||||
|
to server E.
|
||||||
|
|
||||||
|
Examples (assume you are on server A):
|
||||||
|
|
||||||
|
/connect B
|
||||||
|
|
||||||
|
If the network initially looks like this:
|
||||||
|
|
||||||
|
A B <---> ... (rest of network)
|
||||||
|
|
||||||
|
Then afterwards (if the connection succeeds) the network will look
|
||||||
|
like this:
|
||||||
|
|
||||||
|
A <---> B <---> ...
|
||||||
|
|
||||||
|
|
||||||
|
In the example where you wanted to reconnect server E to F, the
|
||||||
|
following syntax would be appropriate (note: we are assuming that
|
||||||
|
F's irc socket port is 6667, which is the default)
|
||||||
|
|
||||||
|
/connect F 6667 E
|
||||||
|
|
||||||
|
If the network initially looks like this:
|
||||||
|
|
||||||
|
A <---> B <---> C <---> D
|
||||||
|
^
|
||||||
|
|
|
||||||
|
v
|
||||||
|
G <---> E F <---> ...
|
||||||
|
|
||||||
|
Then after your CONNECT request the network topology will look like this:
|
||||||
|
|
||||||
|
A <---> B <---> C <---> D
|
||||||
|
^
|
||||||
|
|
|
||||||
|
v
|
||||||
|
G <---> E <---> F <---> ...
|
||||||
|
|
||||||
|
Be careful when connecting servers that you know which command to
|
||||||
|
use! If you simply issued "/connect F" from your server, the
|
||||||
|
network would look like this:
|
||||||
|
|
||||||
|
|
||||||
|
... <---> F <---> A <---> B <---> C <---> D
|
||||||
|
^
|
||||||
|
|
|
||||||
|
v
|
||||||
|
G <---> E
|
||||||
|
|
||||||
|
which for various reasons (discussed below) might be very
|
||||||
|
undesirable.
|
||||||
|
|
||||||
|
Routing
|
||||||
|
=======
|
||||||
|
|
||||||
|
When and how should you do rerouting? This depends on where your
|
||||||
|
server is topologically located and whether you route traffic. If you
|
||||||
|
are a leaf node (i.e. only connect to one server at a time) then
|
||||||
|
chances are you won't need to do any routing at all. Your ircd.conf
|
||||||
|
file should be written to connect to the best possible servers first
|
||||||
|
before trying alternates. At the most, you may decide to squit an
|
||||||
|
alternate server and connect to your primary if/when it goes back up.
|
||||||
|
This only involves local squits, however.
|
||||||
|
|
||||||
|
If you are operating a backbone site, you may find yourself
|
||||||
|
rerouting things quite often. If the servers badger.ugcs.caltech.edu
|
||||||
|
(Pasadena, CA), irc.mit.edu (Boston, MA), minnie.cc.utexas.edu
|
||||||
|
(Austin, TX) and ucsu.colorado.edu (Boulder, CO) were routing traffic
|
||||||
|
in the following way:
|
||||||
|
|
||||||
|
... <---> minnie <---> badger <---> bucsd <---> ucsu <---> ...
|
||||||
|
|
||||||
|
It would make sense to either squit ucsu and reconnect it to minnie,
|
||||||
|
or disconnect minnie from badger and connect to ucsu, because
|
||||||
|
topologically (and geographically) ucsu and minnie are rather close.
|
||||||
|
There are occasions when US traffic for some reasons winds up being
|
||||||
|
routed through Australia. This is another case where traffic should
|
||||||
|
definitely be rerouted. However, there are sometimes occasions when
|
||||||
|
routing is going through "backdoor" methods. If you see something
|
||||||
|
totally outrageous (like the east coast and the west coast being
|
||||||
|
connected by eff.org) please ask for example on channel #twilight_zone
|
||||||
|
before you send any squits, because chances are, it's like that for a
|
||||||
|
reason.
|
||||||
|
|
||||||
|
Of course, any operator can remotely squit or connect servers, so
|
||||||
|
if you see a problem and you're sure you know how to fix it, it's a
|
||||||
|
good idea to do so. If the operator of a server which is is being
|
||||||
|
routed poorly is online, it's probably best to contact him/her first,
|
||||||
|
though.
|
||||||
|
|
||||||
|
Chances are that hub operators will be more familiar with the
|
||||||
|
general topology of the network and which servers connect to which
|
||||||
|
(which is why most of the manual routing is left to them), so if you
|
||||||
|
have any problems, talk to the other operators on operator channels
|
||||||
|
(#twilight_zone, #eu-opers etc.) That's what they are there for!
|
||||||
|
Also, be aware that servers will notify all the operators online of
|
||||||
|
remote SQUITs and CONNECTs via WALLOPS.
|
||||||
|
|
||||||
|
Please let us know if there should be any additions to this guide. Again,
|
||||||
|
this is not MANDATORY, this is just a GUIDE. Please conduct yourself as
|
||||||
|
an IRC Operator would...you are looked upon for assistance, both emotional
|
||||||
|
and mental.
|
||||||
|
|
||||||
|
Helen Rose Christopher Davis Noah Friedman
|
||||||
|
<hrose@cs.bu.edu> <ckd@cs.bu.edu> <friedman@ai.mit.edu>
|
||||||
|
|
||||||
|
January, 1991
|
||||||
|
|
||||||
|
|
||||||
|
Updated by
|
||||||
|
|
||||||
|
Mauri Haikola
|
||||||
|
<mjh@stekt.oulu.fi>
|
||||||
|
|
||||||
|
May, 1992
|
||||||
+1582
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,481 @@
|
|||||||
|
#
|
||||||
|
# IRC - Internet Relay Chat, doc/example.conf
|
||||||
|
# Copyright (C) 1994, Helen Rose
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# This is an example configuration file for the Unreal3.0-Morrican
|
||||||
|
# and higher IRC servers.
|
||||||
|
#
|
||||||
|
# You only need an ircd.conf (IRC server configuration file) if you are
|
||||||
|
# running an IRC server. If you are running a standalone client this file
|
||||||
|
# is not necessary.
|
||||||
|
#
|
||||||
|
# This file will explain the various lines in the IRC server
|
||||||
|
# configuration file. Not all lines are mandatory. You can check to make
|
||||||
|
# sure that your configuration file is correct by using the program
|
||||||
|
# "chkconf", provided in the server distribution (and when you do "make
|
||||||
|
# install" this program will be installed in the same directory as the irc
|
||||||
|
# server).
|
||||||
|
#
|
||||||
|
# This document modified for use by with the Unreal3.0 IRCD
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# The options for whether a line is needed or not are:
|
||||||
|
# MANDATORY: you absolutely MUST have this line
|
||||||
|
# NETWORKED: you must have this line if you are connecting this irc
|
||||||
|
# server to any other server (servers can run standalone).
|
||||||
|
# SUGGESTED: it is highly suggested that you use this line
|
||||||
|
# OPTIONAL: it's completely up to you whether to define this or not
|
||||||
|
# DISCOURAGED: you really really should not use this line if at all
|
||||||
|
# possible.
|
||||||
|
# OBSOLETE: an old or out of date line that isn't needed.
|
||||||
|
#
|
||||||
|
# MANDATORY lines are absolute *musts*, that is, if you do not have this
|
||||||
|
# line then your server will not work properly. SUGGESTED lines are
|
||||||
|
# close-to-mandatory (that is, the server will run without it, but you are
|
||||||
|
# highly encouraged to use these lines).
|
||||||
|
#
|
||||||
|
# Note that "*" in a field indicates an "unused" field.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# ========================================================================
|
||||||
|
# NOTE! this entire configuration file is read UPSIDE-DOWN! So if you have
|
||||||
|
# to put something in a specific order (for example, client-connection
|
||||||
|
# lines), put them in reverse order!
|
||||||
|
# ========================================================================
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# M: [MANDATORY]. This line sets your server's name, description, port
|
||||||
|
# number, and IP address to bind to. Fields, in order, are:
|
||||||
|
#
|
||||||
|
# If you are compiling this server for use on dalnet, port number 7000
|
||||||
|
# as the default is recommended. If you leave IP address field blank or
|
||||||
|
# *, it defaults to binding all local IP addresses on the machine.
|
||||||
|
#
|
||||||
|
# M:hostname:IP:Description Of Your Server:7000
|
||||||
|
#
|
||||||
|
M:server.my.net:*:My IRC Server:7000
|
||||||
|
#
|
||||||
|
# A: [MANDATORY]. This line lists your administrative information
|
||||||
|
# (contact address, etc). To view this information, /admin (server) will
|
||||||
|
# show it to you.
|
||||||
|
#
|
||||||
|
# The A: line has no set information, in fact, you can put arbitrary text
|
||||||
|
# in there if you wish (it is encouraged that you put at *least* a contact
|
||||||
|
# address for a person responsible for the irc server, however)
|
||||||
|
#
|
||||||
|
A:Generic Internet Access:Admin John Doe:jdoe@generic.com
|
||||||
|
#
|
||||||
|
# Y: [SUGGESTED]. These lines define connection classes. Connection
|
||||||
|
# classes allow you to fine-tune your client and server connections. It is
|
||||||
|
# suggested that clients and servers be placed in seperate classes, and if
|
||||||
|
# you have lots of server connections (if you do have lots of servers you
|
||||||
|
# shouldn't be reading this file :-) each set of servers (defined
|
||||||
|
# arbitrarily by you) should have its own class. If you have clients
|
||||||
|
# coming in from lots of different sites, you may want to seperate them
|
||||||
|
# out into classes. For instance, you may want to put local users in one
|
||||||
|
# class, with remote users in another class.
|
||||||
|
#
|
||||||
|
# The class numbers are not arbitrary. In auto-connecting servers -- that
|
||||||
|
# is, servers that you have a port number (e.g. 6667) on the end of the C:
|
||||||
|
# line (see below) the higher the number the higher the priority in
|
||||||
|
# auto-connecting.
|
||||||
|
#
|
||||||
|
# The fields in order are: class number, ping frequency (in seconds),
|
||||||
|
# connect frequency (in seconds), maximum number of links (used for
|
||||||
|
# auto-connecting, and for limiting the number of clients in that class),
|
||||||
|
# and sendq (this overrides any value set in include/config.h for #define
|
||||||
|
# MAXSENDQLENGTH).
|
||||||
|
#
|
||||||
|
# Note that it is a good idea to have ping frequency the same at both ends
|
||||||
|
# of the link.
|
||||||
|
#
|
||||||
|
# in this case, connect-frequency is 0 indicating that this is a client
|
||||||
|
# class (servers never connect to clients, it is the other way around).
|
||||||
|
Y:1:90:0:20:100000
|
||||||
|
#
|
||||||
|
# These are the recommended server Y:lines for connecting to dalnet.
|
||||||
|
# In addition to these you should have at *least* one client class, and one
|
||||||
|
# oper class (see O:lines). By convention on dalnet, these are usually
|
||||||
|
# numbered from 5 to 10.
|
||||||
|
#
|
||||||
|
# Class 50 - Hub to hub, autoconnect
|
||||||
|
Y:50:90:60:1:4000000
|
||||||
|
#
|
||||||
|
# Class 51 - Hub to hub, no autoconnect
|
||||||
|
Y:51:90:60:0:4000000
|
||||||
|
#
|
||||||
|
# Class 30 - Hub to US leaf
|
||||||
|
Y:30:90:0:0:3500000
|
||||||
|
#
|
||||||
|
# Class 32 - Hub to EU leaf
|
||||||
|
Y:32:180:0:0:3500000
|
||||||
|
#
|
||||||
|
# Class 34 - Hub to AU leaf
|
||||||
|
Y:34:300:0:0:3500000
|
||||||
|
#
|
||||||
|
# Class 40 - US leaf to hub, autoconnect
|
||||||
|
Y:40:90:90:1:3500000
|
||||||
|
#
|
||||||
|
# Class 41 - US leaf to hub, no autoconnect
|
||||||
|
Y:41:90:90:0:3500000
|
||||||
|
#
|
||||||
|
# Class 42 - EU leaf hub
|
||||||
|
Y:42:180:90:1:3500000
|
||||||
|
#
|
||||||
|
# Class 44 - AU leaf to hub
|
||||||
|
Y:44:300:120:1:3500000
|
||||||
|
#
|
||||||
|
# I: [MANDATORY]. The I: lines are client-authorization lines. Without
|
||||||
|
# these lines, no clients will be able to connect to your server.
|
||||||
|
# Wildcards ("*") are permitted. Passwords are also permitted (clients can
|
||||||
|
# be configured to send passwords).
|
||||||
|
#
|
||||||
|
# Ident (for more information on this, see rfc1413) can also be used by
|
||||||
|
# placing a @ in the appropriate fields.
|
||||||
|
#
|
||||||
|
# Fields are as follows:
|
||||||
|
# I:IP-address-mask:optional password:domain-mask::connection class (opt)
|
||||||
|
#
|
||||||
|
# With a password..... This will allow anyone from anywhere to connect
|
||||||
|
# as long as they know the password ("foobar"). Note listing this I: line
|
||||||
|
# first, it will be read *last*, meaning it is the "fall-through". That
|
||||||
|
# is, anyone who doesn't match the I: lines listed below must know the
|
||||||
|
# password ("foobar") to connect.
|
||||||
|
#
|
||||||
|
I:*@*:foobar:*@*::1
|
||||||
|
# This is a standard vanilla I: line which will permit anyone with an IP
|
||||||
|
# address starting with 205.133 OR with a hostname ending in
|
||||||
|
# .toledolink.com to connect to the server. NOTE, the ircd matches on the
|
||||||
|
# *right-most* match, so if I connect as rmiller@glass.toledolink.com
|
||||||
|
# (which is rmiller@205.133.127.8) I will show up on irc as
|
||||||
|
# rmiller@glass.toledolink.com since that is the first match it found.
|
||||||
|
# (Even though the second match is valid).
|
||||||
|
I:205.133.*::*.toledolink.com::1
|
||||||
|
#
|
||||||
|
# using ident
|
||||||
|
I:*@205.133.*::*@*.toledolink.com::1
|
||||||
|
# and you can even specify just certain usernames running ident (as long
|
||||||
|
# as the client's site is running the ident daemon):
|
||||||
|
I:NOMATCH::rmiller@glass.toledolink.com::1
|
||||||
|
# putting NOMATCH in the first field will stop the ircd from matching
|
||||||
|
# automatically against the IP address and it will force the server to
|
||||||
|
# match against the hostname. (the "NOMATCH" string is not mandatory, you
|
||||||
|
# can use any arbitrary text in the first field).
|
||||||
|
I:*@*:ONE:*@*::1
|
||||||
|
# putting the ONE in the password field makes it so that only 1 user matching
|
||||||
|
# that host or IP can connect through that I:line.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# O: [OPTIONAL]. These lines define operator access. You do not need to
|
||||||
|
# have an operator to run a server. A well configured leaf site should not
|
||||||
|
# need an operator online, if it's connections are well defined, the irc
|
||||||
|
# administrator can use kill -HUP on the ircd to reload the configuration
|
||||||
|
# file.
|
||||||
|
# The fields are as follows:
|
||||||
|
# O:hostname (ident "@" permitted):password:NickName:AccessFlags:class
|
||||||
|
# if the person in "NickName" is not coming from the hostname defined in
|
||||||
|
# the first field then the person will get the error message "No O: lines
|
||||||
|
# for your host".
|
||||||
|
# NOTE that since Crypted Passwords are defined by default in
|
||||||
|
# include/config.h this text probably will not be plaintext. See
|
||||||
|
# ircd/crypt/README for more information.
|
||||||
|
#
|
||||||
|
# class is the Y:Line class you want this operator to end up in after they
|
||||||
|
# have successfully /oper'd.
|
||||||
|
#
|
||||||
|
# Access flags may be left blank, or * to give full access rights. Flags
|
||||||
|
# are in the form of single characters making a string. Any combination
|
||||||
|
# of the following can be used(these are cAsE sensitive characters):
|
||||||
|
#
|
||||||
|
# r = access to /rehash server
|
||||||
|
# R = access to /restart server
|
||||||
|
# D = access to /die server
|
||||||
|
# h = oper can send /help ops
|
||||||
|
# g = oper can send /globops
|
||||||
|
# w = oper can send /wallops
|
||||||
|
# l = oper can send /locops
|
||||||
|
# c = access to do local /squits and /connects
|
||||||
|
# L = access to do remote /squits and /connects
|
||||||
|
# k = access to do local /kills
|
||||||
|
# K = access to do global /kills
|
||||||
|
# b = oper can /kline users from server
|
||||||
|
# B = oper can /unkline users from server
|
||||||
|
# n = oper can send local server notices(/notice $servername message)
|
||||||
|
# G = oper can send global server notices(/notce $*.my.net message)
|
||||||
|
# S = oper can join unlimited amount of channels
|
||||||
|
# A = admin
|
||||||
|
# u = oper can set /umode +c
|
||||||
|
# f = oper can set /umode +f
|
||||||
|
# ^ = oper can set /umode +I
|
||||||
|
# e = oper can set /umode +e
|
||||||
|
# W = oper can set /umode +W
|
||||||
|
# H = oper gets auto +x on /oper
|
||||||
|
# o = local oper, flags included: rhgwlckbBnuf
|
||||||
|
# O = global oper, flags included: oRDCK
|
||||||
|
# a = services admin, access to /samode
|
||||||
|
# C = co admin
|
||||||
|
# T = tech admin
|
||||||
|
# A = admin
|
||||||
|
# N = network admin access to remote /rehash and remote /restart and a bunch more
|
||||||
|
# * = flags included: AaNCTzSHW^
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is a plain vanilla O:line:
|
||||||
|
O:*.toledolink.com:nopassword:Russell:*:10
|
||||||
|
#
|
||||||
|
# and this line forces ident:
|
||||||
|
O:rmiller@glass.toledolink.com:nopassword:Russell::10
|
||||||
|
#
|
||||||
|
# This line is a generic "local operator", because of the flags, the only
|
||||||
|
# thing that really makes them global operators, is if they have the flags
|
||||||
|
# CKN set in their access flags.
|
||||||
|
#
|
||||||
|
# this line permits the nickname "jhs" with the password of "ITBites" to
|
||||||
|
# be a local operator only (be able to issue commands locally -- can /kill
|
||||||
|
# and /squit and /connect -- but *only* locally)
|
||||||
|
#
|
||||||
|
O:*.something.net:ITBites:jhs:o:10
|
||||||
|
#
|
||||||
|
# a crypted password line (NOTE that if you have crypted passwords, *all*
|
||||||
|
# of you passwords must be crypted! In fact, if you are getting an error
|
||||||
|
# "Incorrect Password" it may well be because crypted passwords are
|
||||||
|
# defined and you have used plaintext. So my example of plaintext and
|
||||||
|
# crypted strings in the same IRC server configuration file is an
|
||||||
|
# impossibility (but it is just theoretical, which is why I explained both).
|
||||||
|
#
|
||||||
|
O:rmiller@*.toledolink.com:T0eiVgHrqeKTQ:Russell::10
|
||||||
|
#
|
||||||
|
# U: [OPTIONAL]. This line defines the servers that IRC recognizes as being
|
||||||
|
# allowed to make various changes to the IRC environment (mode changes, for
|
||||||
|
# example), without complaining or otherwise obstructing them. For example,
|
||||||
|
# DALnet requires the following line:
|
||||||
|
U:services.my.net:*:*
|
||||||
|
#
|
||||||
|
# X: [ENCOURAGED]. This line defines the password that an operator must use
|
||||||
|
# to restart or die the server. Note that they still myst have they R and D
|
||||||
|
# flags. This is just a security precaution against accidentaly typing
|
||||||
|
# /die or /restart
|
||||||
|
# X:<password for /DIE>:<password for /RESTART>
|
||||||
|
X:diepass:restartpass
|
||||||
|
|
||||||
|
# C: [NETWORKED]. These lines define what servers your server tries to
|
||||||
|
# connect to.
|
||||||
|
# N: [NETWORKED]. These lines define what servers your server permits
|
||||||
|
# connections to be initiated from.
|
||||||
|
# C/N lines MUST be used in pairs. You cannot have one without the other.
|
||||||
|
#
|
||||||
|
# C: lines contain the following fields:
|
||||||
|
# C:remote server's hostname:passwd:remote server's name:port:conn class
|
||||||
|
# (connection class)
|
||||||
|
# N: lines contain the following fields:
|
||||||
|
# N:remote server's hostname:passwd:remote server's name:host mask:conn class
|
||||||
|
# (connection class)
|
||||||
|
# "host mask" is the number of parts in *your* hostname to mask to. For
|
||||||
|
# instance, with my servername being "csa.bu.edu", if I wanted to present
|
||||||
|
# my servername to be "*.bu.edu" I would have a host-mask portion of "1".
|
||||||
|
#
|
||||||
|
# it is *strongly* advised that your C/N line passwords be different for
|
||||||
|
# security's sake.
|
||||||
|
#
|
||||||
|
# ident is allowed in the server's hostname part of the field.
|
||||||
|
# these lines tell the server to automatically (note the port number, that
|
||||||
|
# means automatic connection) connect to server2.my.net:
|
||||||
|
C:foobar@server2.my.net:bigspark:server2.my.net:7000:32
|
||||||
|
N:foobar@server2.my.net:bigalpha:server2.my.net::32
|
||||||
|
#
|
||||||
|
# This server's connection lines are more vanilla, masking the host to
|
||||||
|
# *.toledolink.com (as described above):
|
||||||
|
C:*.my.net:camelsrk00l:*.my.net::32
|
||||||
|
N:*.my.net:andsoarellamas:*.my.net:1:32
|
||||||
|
#
|
||||||
|
# K: [OPTIONAL]. These lines define user@host patterns to be banned from
|
||||||
|
# this particular server (with an optional time field). Note that K: lines
|
||||||
|
# are *not* global, and if you ban a user they can still use any other IRC
|
||||||
|
# server (unless they have specifically been banned there as well).
|
||||||
|
#
|
||||||
|
# The time field (same as reason) is only used if you #define
|
||||||
|
# TIMED_KLINES in config.h, and even then they are discouraged.
|
||||||
|
#
|
||||||
|
# the fields are defined as:
|
||||||
|
# K:hostmask:reason:username
|
||||||
|
# wildcards are permitted in any one of the fields, in other words, you can
|
||||||
|
# K:*::* if you wanted (but your server wouldn't be used much ;-)
|
||||||
|
#
|
||||||
|
# Spaces are permitted in the reason field (you don't have to use _).
|
||||||
|
# The /stats command has been modified to replace all spaces with _'s when
|
||||||
|
# doing a /stats k. K:lines also allows you to specify a file to play to the
|
||||||
|
# user when they are K:lined. To use this feature the reason must be in the
|
||||||
|
# format of |filename. the filename must be kc.anythinghere, this is to prevent
|
||||||
|
# the sending of text files such as your ircd.conf.
|
||||||
|
#
|
||||||
|
# This K: line bans the username "hrose" (the wildcards are used to make
|
||||||
|
# sure that any ident-checking character will match) on any machine from
|
||||||
|
# the University of Boston.
|
||||||
|
K:*.bu.edu:Hacking #UnrealIRCD:*hrose*
|
||||||
|
#
|
||||||
|
# This K: line bans any users from acs*.bu.edu between the hours of 8am
|
||||||
|
# and 12pm and 1pm and 5pm (the time is always the server's local time).
|
||||||
|
# Time-based K-lines such as this require TIMED_KLINES in config.h to be
|
||||||
|
# #defined.
|
||||||
|
K:acs*.bu.edu:0800-1200,1300-1700:*
|
||||||
|
# Note that 24 hour time is used (no "AM" or "PM").
|
||||||
|
# This K: line bans all *.foobar.com users and will play the file |kc.flooding
|
||||||
|
# to the user as the reason.
|
||||||
|
K:*.foobar.com:|kc.flooding:*
|
||||||
|
#
|
||||||
|
# E: [OPTIONAL]. This allows kline exceptions, even if a person matches
|
||||||
|
# a K:line or /kline they are still allowed to connect.
|
||||||
|
#
|
||||||
|
# The fields are as follows
|
||||||
|
# E:hostmask:reason:usermask
|
||||||
|
#
|
||||||
|
E:foo.bar.com:Oper on this server:*john21*
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# q: [DISCOURAGED]. These lines "quarantine" specified servers. Because
|
||||||
|
# of the way they operates, the same q: lines MUST be installed by
|
||||||
|
# everyone or the net will keep breaking. I CANNOT EMPHASIZE THIS ENOUGH.
|
||||||
|
# Do NOT use q: lines lightly!
|
||||||
|
#
|
||||||
|
# This is NOT a nick q-line, if you wish to quarantine a NICK, see below.
|
||||||
|
#
|
||||||
|
# The fields are as follows:
|
||||||
|
# q:*:reason why quarantine is in place:servername
|
||||||
|
#
|
||||||
|
q::this server is too slow and lags the net:cm5.eng.umd.edu
|
||||||
|
#
|
||||||
|
# Q: [OPTIONAL]. Different from the above type of q: line, these lines
|
||||||
|
# prevent users on your server from picking certain nicks. This is useful
|
||||||
|
# if your network has 'reserved' nicknames that should not be taken by
|
||||||
|
# normal users. Note the difference in capitalization and BE CAREFUL!
|
||||||
|
#
|
||||||
|
# The fields are as follows:
|
||||||
|
# Q:*:reason why quarantine is in place:nickname
|
||||||
|
#
|
||||||
|
# For example, You might want to use the following lines:
|
||||||
|
Q::Reserved for services:ChanServ
|
||||||
|
Q::Reserved for services:NickServ
|
||||||
|
Q::Reserved for services:MemoServ
|
||||||
|
Q::Reserved for services:OperServ
|
||||||
|
Q::Reserved for services:HelpServ
|
||||||
|
Q::Reserved for services:StatServ
|
||||||
|
Q::Reserved for operators:IRCop
|
||||||
|
Q::Reserved for operators:*Oper*
|
||||||
|
Q::Reserved for administrators:Admin*
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# T: [OPTIONAL]. These allow you to specify different MOTD and RULES files
|
||||||
|
# based on a users host. This is made so you can have MOTDs in different
|
||||||
|
# languages so all users can see the MOTD and understand it.
|
||||||
|
#
|
||||||
|
# The fields are as follows:
|
||||||
|
# T:host:motdfile:rulesfile
|
||||||
|
#
|
||||||
|
# T:*.fr:french.motd:french.rules
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# e: [OPTIONAL]. These lines allow you to specify a host which will not
|
||||||
|
# be scanned by the proxy scanner when they connect. This is made so you
|
||||||
|
# can allow some open proxys to connect while still killing others. Make
|
||||||
|
# sure you use an IP and not a host for this line or it will not work.
|
||||||
|
# NOTE: These are not the same as E:lines.
|
||||||
|
#
|
||||||
|
# The fields are as follows:
|
||||||
|
# e:IP:*:*
|
||||||
|
#
|
||||||
|
# e:123.123.123:*:*
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Z: [DISCOURAGED]. These block ALL incoming connections from a certain
|
||||||
|
# IP address mask. They can stop users who log on and issue the SERVER
|
||||||
|
# command a couple of times just to annoy irc ops. They are more
|
||||||
|
# powerful that K-lines because they can stop users before they've had a
|
||||||
|
# chance to register. This works on servers, SO BE VERY CAREFUL WITH
|
||||||
|
# YOUR Z-LINE MASKS. Z-lines are a LAST RESORT. They are much too
|
||||||
|
# dangerous and powerful to be using them instead of K-lines and akills.
|
||||||
|
#
|
||||||
|
# NOTE 1: Z-lines do NOT work on host names! Only IP addresses.
|
||||||
|
# NOTE 2: Z-lines are part of /stats k.
|
||||||
|
# NOTE 3: The :* at the end is REQUIRED. Not using it will cause both
|
||||||
|
# ircd and chkconf to segfault without saying why.
|
||||||
|
#
|
||||||
|
# Syntax:
|
||||||
|
# Z:IP mask:reason for zapping:*
|
||||||
|
Z:127.0.0.1:Please don't log on from the local machine:*
|
||||||
|
#
|
||||||
|
# L: [OPTIONAL]. These lines "Leaf" specified servers. They are only
|
||||||
|
# useful if you are a non-leaf site yourself. There are two ways you can
|
||||||
|
# use L: lines. The first will limit one particular site to a particular
|
||||||
|
# tree depth (including 0, which would mean the server has to connect with
|
||||||
|
# no servers linked behind it otherwise the connection will fail). The
|
||||||
|
# second will allow you to be selective about which other servers you wish
|
||||||
|
# the connecting server to behave as a leaf towards.
|
||||||
|
#
|
||||||
|
# The fields are as follows:
|
||||||
|
# L:disallow connections to this hostmask::server name:depth
|
||||||
|
# For example, this will force kaja.gi.alaska.edu to connect only as a
|
||||||
|
# leaf (if it is not a leaf, the link will be dropped):
|
||||||
|
L:::kaja.gi.alaska.edu
|
||||||
|
# This line will force cm5.eng.umd.edu to have a depth of only 1 below it
|
||||||
|
# (that is, it is allowed to have only leaves connected to it):
|
||||||
|
L:::cm5.eng.umd.edu:1
|
||||||
|
#
|
||||||
|
# This line will prohibit anything matching *.edu to be connected behind
|
||||||
|
# any server matching *.au:
|
||||||
|
L:*.edu::*.au
|
||||||
|
#
|
||||||
|
# H: [OPTIONAL]. These lines define who you permit to act as a "hub" to
|
||||||
|
# you (that is, who you permit to connect non-leafed servers to you).
|
||||||
|
#
|
||||||
|
# the first field may use wildcards, the third field *must* be an exact
|
||||||
|
# match for a server's name (NOT a server's hostname, if they differ, the
|
||||||
|
# server's name must be used). If the servername is a wildcard (e.g. *.au)
|
||||||
|
# that is an acceptable name for the third field.
|
||||||
|
#
|
||||||
|
# The fields are as follows:
|
||||||
|
# H:servers which are permitted entry::hub server
|
||||||
|
#
|
||||||
|
# Example, permit server.my.net to allow any servers behind it to
|
||||||
|
# connect:
|
||||||
|
H:*::server2.my.net
|
||||||
|
#
|
||||||
|
# Example, permit irc-2.mit.edu to allow any MIT servers behind it to
|
||||||
|
# connect:
|
||||||
|
H:*.mit.edu::irc-2.mit.edu
|
||||||
|
#
|
||||||
|
# P: [OPTIONAL]. This field allows the server to listen on various ports
|
||||||
|
# (other than 7000) for connections. Any internet domain port that is
|
||||||
|
# below 1024 means the ircd has to be run from inetd. The server can
|
||||||
|
# listen to ports in the UNIX domain or the internet domain. If you wish
|
||||||
|
# to create a port in the UNIX domain you must compile with UNIXPORT
|
||||||
|
# defined in include/config.h. If you are permitting connections to a
|
||||||
|
# seperate port, you can control access to that port by the host field.
|
||||||
|
#
|
||||||
|
# You can now bind internet ports to specific IP interface devices. To do
|
||||||
|
# this put the IP address of the interface in the host field. To bind to
|
||||||
|
# all interfaces, leave empty or put * in.
|
||||||
|
#
|
||||||
|
# The fields are as follows::
|
||||||
|
# P:IP# or UNIX socket file:*:*:port number
|
||||||
|
# for example, an internet domain socket on port 6665 for the local
|
||||||
|
# computer
|
||||||
|
P:127.0.0.1:*:*:6665
|
||||||
|
#
|
||||||
|
# This line is an example of a UNIX domain socket in /tmp
|
||||||
|
P:/tmp/.ircd:*:*:6666
|
||||||
|
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
[ $Id$ ]
|
||||||
|
|
||||||
|
UnrealIRCd FAQ
|
||||||
|
Made by Stskeeps
|
||||||
|
|
||||||
|
This file will contain frequently asked questions about
|
||||||
|
Unreal IRCd. If you need more help email stskeeps@tspre.org
|
||||||
|
|
||||||
|
1) * I compile and everything seems fine during the compiling, but when it
|
||||||
|
comes time for the program to link, I get errors complaining about dns and
|
||||||
|
res things. What causes this?
|
||||||
|
|
||||||
|
A: You need to make sure -lresolv is included in the "extra libraries"
|
||||||
|
option of ./Config (or IRCDLIBS in top-level makefile)
|
||||||
|
|
||||||
|
2) * When I start up the IRCd it complains about something with chdir()?
|
||||||
|
|
||||||
|
A: You need to make sure the right directory is specified when you was
|
||||||
|
asked about "What directory are all the server configuration files in?"
|
||||||
|
./Config question
|
||||||
|
|
||||||
|
3) The server says like:
|
||||||
|
*** Link server1 -> server2 is now synced [secs: 30 recv: 130.4 sent: 120.0]
|
||||||
|
when I link two servers together, what does that mean?
|
||||||
|
|
||||||
|
A: That means the link is "synced" (all infodata transfered about the server).
|
||||||
|
The "secs" (30 in this example) means it took 30 seconds to do the sync
|
||||||
|
"recv: 130.4" means there was recieved 130 KiloBytes and 4 bytes.
|
||||||
|
"sent: 120.0" means there was sent 120 kilobytes from my side.
|
||||||
|
|
||||||
|
4) What is a negative TS split?
|
||||||
|
|
||||||
|
A: Every computer/server has got a time (so they can do TimeStamps) ..
|
||||||
|
When the clock on the computer is set wrong and the computer it links
|
||||||
|
upto is wrong it creates a Negative TS split (means time is lower it
|
||||||
|
actually is. How to fix this is contacting the root of the machine
|
||||||
|
and ask him to fix the time (when you made sure it's YOUR server that's
|
||||||
|
wrong)
|
||||||
|
|
||||||
|
5) What is an uProtocol ?
|
||||||
|
|
||||||
|
A: UnrealIRCd uses numbers to check if a link is compatible with itself
|
||||||
|
F.x Unreal v2.1.3 has got number 2103 while version 2.1 only has got
|
||||||
|
2100 - This means .. if the number is lower/higher than the uProtocol
|
||||||
|
the server uses, it's an incompatible link (of some reasons)
|
||||||
|
|
||||||
|
6) How does T:Lines work and what are they?
|
||||||
|
|
||||||
|
A: T:Lines is a new Unreal feature that makes it able to show different
|
||||||
|
MOTDs and RULES to people who matches a certain hostmask . Lemme show you some examples:
|
||||||
|
|
||||||
|
T:*.dk:motds/danish.motd:rules/danish.rules
|
||||||
|
T:*.fr:motds/french.motd:rules/french.rules
|
||||||
|
|
||||||
|
This will get people from Denmark to see the "Danish" MOTD and the "Dandish" RULLES
|
||||||
|
and people from France to see the French ones:)
|
||||||
|
|
||||||
|
NOTE: T:Lines are read up side down so if you have a T:*:ircd.motd:ircd.rules in the bottom
|
||||||
|
it should be at the top so the other motd lines can work as well
|
||||||
|
|
||||||
|
7) Where can i download updates to Unreal?
|
||||||
|
|
||||||
|
A: Mostly you can download the newest version at
|
||||||
|
http://unreal.tspre.org
|
||||||
|
|
||||||
|
Versions may be spewed out regulary due to new features and bugs..
|
||||||
|
|
||||||
|
8) Why does it say "unlimit core failed" or something when I boot the IRCd?
|
||||||
|
A: It's just a warning, mainly just ignore it.
|
||||||
|
|
||||||
|
9) I use Linux Mandrake and ./Config always hangs! What can I do??
|
||||||
|
A: Go edit the Config script and remove those lines:
|
||||||
|
-SNIP START-
|
||||||
|
cat > $TMP <<__EOF__
|
||||||
|
#$STRINGH STRINGH
|
||||||
|
#$STRINGSH STRINGSH
|
||||||
|
#ifdef STRINGH
|
||||||
|
#include <string.h>
|
||||||
|
#endif
|
||||||
|
#ifdef STRINGSH
|
||||||
|
#include <strings.h>
|
||||||
|
#endif
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
char *t = "a", *s = strtok(t, ",");
|
||||||
|
if (!strcmp(t, s))
|
||||||
|
exit(0);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
__EOF__
|
||||||
|
$COMP >/dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
echo $n " strtok$c"
|
||||||
|
NSTRTOK=define
|
||||||
|
else
|
||||||
|
$EXEC
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
echo $n " strtok$c"
|
||||||
|
NSTRTOK=define
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
$RM -f $EXEC $TMP
|
||||||
|
--- SNIP END---
|
||||||
|
And replace it by
|
||||||
|
NSTRTOK=undef
|
||||||
|
|
||||||
|
This should get it to work=) (thanks to Joe Whipple for reporting this bug)
|
||||||
|
---END----
|
||||||
|
|
||||||
|
10) Hosts show up as (null).network.net !!
|
||||||
|
A: This is because you have forgotten to include the network file.
|
||||||
|
The correct form is (in unrealircd.conf)
|
||||||
|
Include ..........: <network file>
|
||||||
|
|
||||||
|
If this doesn't work .. seek me at irc.global-irc.net #unrealircd
|
||||||
|
|
||||||
|
11) The IRCd uses like 66.7% CPU !!!?
|
||||||
|
A: Try run it with nice :
|
||||||
|
/usr/bin/nice -n 19 src/ircd
|
||||||
|
|
||||||
|
if services go this way too just place ./<name> instead of src/ircd
|
||||||
|
Any more support seek me at the default place:P
|
||||||
|
|
||||||
|
12) My IRCd which runs on a FreeBSD says something about FDs and
|
||||||
|
Max: 0 What shall I do??
|
||||||
|
A: Well it's somekinda bug but you can workaround it by removing those
|
||||||
|
lines in src/s_bsd.c: (init_sys())
|
||||||
|
|
||||||
|
<- snippet 1 ->
|
||||||
|
#ifdef RLIMIT_FD_MAX
|
||||||
|
struct rlimit limit;
|
||||||
|
int pid;
|
||||||
|
|
||||||
|
if (!getrlimit(RLIMIT_FD_MAX, &limit))
|
||||||
|
{
|
||||||
|
# ifdef pyr
|
||||||
|
if (limit.rlim_cur < MAXCONNECTIONS)
|
||||||
|
#else
|
||||||
|
if (limit.rlim_max < MAXCONNECTIONS)
|
||||||
|
# endif
|
||||||
|
{
|
||||||
|
(void)fprintf(stderr,"ircd fd table too big\n");
|
||||||
|
(void)fprintf(stderr,"Hard Limit: %d IRC max: %d\n",
|
||||||
|
limit.rlim_max, MAXCONNECTIONS);
|
||||||
|
(void)fprintf(stderr,"Fix MAXCONNECTIONS\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
# ifndef pyr
|
||||||
|
limit.rlim_cur = limit.rlim_max; /* make soft limit the max */
|
||||||
|
if (setrlimit(RLIMIT_FD_MAX, &limit) == -1)
|
||||||
|
{
|
||||||
|
(void)fprintf(stderr,"error setting max fd's to %d\n",
|
||||||
|
limit.rlim_cur);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
<-snippet 2->
|
||||||
|
#ifdef sequent
|
||||||
|
# ifndef DYNIXPTX
|
||||||
|
int fd_limit;
|
||||||
|
|
||||||
|
fd_limit = setdtablesize(MAXCONNECTIONS + 1);
|
||||||
|
if (fd_limit < MAXCONNECTIONS)
|
||||||
|
{
|
||||||
|
(void)fprintf(stderr,"ircd fd table too big\n");
|
||||||
|
(void)fprintf(stderr,"Hard Limit: %d IRC max: %d\n",
|
||||||
|
fd_limit, MAXCONNECTIONS);
|
||||||
|
(void)fprintf(stderr,"Fix MAXCONNECTIONS\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
13) I run debian-sparc and i get errors when compiling in match.c
|
||||||
|
What should I do?
|
||||||
|
A: If it says like this
|
||||||
|
<-snippet->
|
||||||
|
match.c: In function 'myncmp':
|
||||||
|
match.c:247: argument 'str1' doesn't match prototype
|
||||||
|
/usr/include/string.h:255: prototype declaration
|
||||||
|
match.c:247: argument 'str2' doesn't match prototype
|
||||||
|
/usr/include/string.h:255: prototype declaration
|
||||||
|
match.c:247: argument 'n' doesn't match prototype
|
||||||
|
/usr/include/string.h:255: prototype declaration
|
||||||
|
<-end of snippet>
|
||||||
|
|
||||||
|
Then go into include/setup.h and add this line:
|
||||||
|
#define GOT_STRCASECMP
|
||||||
|
|
||||||
|
(C) Carsten Munk 1999
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
.\" $Id$
|
||||||
|
.TH IRC 1 "7 October 1990"
|
||||||
|
.SH NAME
|
||||||
|
irc \- User Interface to Internet Relay Chat Protocol
|
||||||
|
.SH SYNOPSIS
|
||||||
|
\fBirc\fP [\fB-p\fP \fIportnum\fP] [\fB-c\fP \fIchannel\fP] [ \fInickname\fP [ \fIserver\fP ]]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.LP
|
||||||
|
\fBIrc\fP is a user interface to the Internet Relay Chat, a CB-like
|
||||||
|
interactive discussion environment. It is structured into \fIchannels\fP,
|
||||||
|
which are public discussion forums, and also allows for private intercommunication.
|
||||||
|
Each participant has a \fInickname\fP, which is the one specified in the command
|
||||||
|
line or else his login name.
|
||||||
|
.LP
|
||||||
|
Once invoked, \fBirc\fP connects as a client to the specified server,
|
||||||
|
\fIserver\fP or to the default one (see below). The screen splits into a dialogue
|
||||||
|
window (the major part
|
||||||
|
of the screen) and a command line, from which messages can be sent and
|
||||||
|
commands given to control irc.
|
||||||
|
.SH COMMAND SYNTAX
|
||||||
|
The syntax of irc commands is of the form \fB/COMMAND\fP. The most notable
|
||||||
|
ones are listed below. For an uptodate list, use the \fBHELP\fP command
|
||||||
|
of \fBirc\fP. Case is ignored.
|
||||||
|
.IP "\fB/ADMIN\fR [\fIserver\fP]"
|
||||||
|
Prints administrative information about an IRC \fIserver\fP.
|
||||||
|
.IP "\fB/AWAY\fP [\fImessage\fP]"
|
||||||
|
Mark yourself as being away (with an automatic reply \fImessage\fP
|
||||||
|
if specified)
|
||||||
|
.IP "\fB/BYE\fR, \fB/EXIT\fR, \fB/QUIT\fR"
|
||||||
|
Terminate the session
|
||||||
|
.IP "\fB/CHANNEL\fR [\fIchannel\fP]"
|
||||||
|
Join another \fIchannel\fP
|
||||||
|
.IP "\fB/CLEAR\fR"
|
||||||
|
Clear the screen
|
||||||
|
.IP "\fB/HELP\fR [\fIcommand\fP]"
|
||||||
|
Display a brief description of the \fIcommand\fP (or list all commands, if none
|
||||||
|
specified).
|
||||||
|
.IP "\fB/SUMMON\fR \fIuser\fP"
|
||||||
|
Allows to summon a \fIuser\fP specified as a full Internet address, i.e.,
|
||||||
|
\fIlogin@host.domain\fP, to an IRC dialogue session (in much the same
|
||||||
|
way as the talk(1) command). It is usable ONLY if the irc daemon runs on
|
||||||
|
the target machine (host.domain).
|
||||||
|
.IP "\fB/TOPIC\fR \fItopic\fP"
|
||||||
|
Sets the \fItopic\fP for the current channel
|
||||||
|
.IP "\fB/WHO\fR [\fIchannel\fP|*]"
|
||||||
|
Lists all users of IRC if no argument, of the specified \fIchannel\fP or of the
|
||||||
|
current channel (*).
|
||||||
|
.SH ARGUMENTS
|
||||||
|
.IP "\fB-p\fP \fIportnum\fP"
|
||||||
|
TCP/IP "port number. Default is 6667 and this option should seldom if ever"
|
||||||
|
be used.
|
||||||
|
.IP "\fB-c\fP \fIchannel\fP"
|
||||||
|
\fIChannel\fP number to join upon beginning of the session. Default is no channel.
|
||||||
|
.IP "\fInickname\fP"
|
||||||
|
\fINickname\fP used in the session (can be changed with the \fB/NICK\fP command).
|
||||||
|
Default is user login name.
|
||||||
|
.IP "\fIserver\fP"
|
||||||
|
\fIServer\fP to connect to. Default is specified in the irc system configuration
|
||||||
|
file, and can be superseded with the environment variable IRCSERVER.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.RS
|
||||||
|
.nf
|
||||||
|
tolmoon% \fBirc -p6667 Wizard tolsun\fP
|
||||||
|
.fi
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
connects you to irc server in host tolsun (port 6667) with nickname Wizard
|
||||||
|
.SH COPYRIGHT
|
||||||
|
Copyright (c) 1988 University of Oulu, Computing Center, Finland.
|
||||||
|
.nf
|
||||||
|
Copyright (c) 1988,1989,1990 Jarkko Oikarinen
|
||||||
|
.nf
|
||||||
|
All rights reserved.
|
||||||
|
For full COPYRIGHT see LICENSE file with IRC package.
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
ircd(8)
|
||||||
|
.SH BUGS
|
||||||
|
What bugs ?
|
||||||
|
.SH AUTHOR
|
||||||
|
Jarkko Oikarinen <jto@tolsun.oulu.fi>
|
||||||
|
.nf
|
||||||
|
Manual page updated by Michel Fingerhut <Michel.Fingerhut@ircam.fr>
|
||||||
+140
@@ -0,0 +1,140 @@
|
|||||||
|
.\" $Id$
|
||||||
|
.TH IRCD 8 "29 March 1989"
|
||||||
|
.SH NAME
|
||||||
|
ircd \- The Internet Relay Chat Program Server
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.hy 0
|
||||||
|
.IP \fBircd\fP
|
||||||
|
[-a] [-c] [-i] [-o] [-q] [-t] [-d directory]
|
||||||
|
[-f configfile] [-x debuglevel] [-h hostname] [-p portnum]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
.LP
|
||||||
|
\fIircd\fP is the server (daemon) program for the Internet Relay Chat
|
||||||
|
Program. The \fIircd\fP is a server in that its function is to "serve"
|
||||||
|
the client program \fIirc(1)\fP with messages and commands. All commands
|
||||||
|
and user messages are passed directly to the \fIircd\fP for processing
|
||||||
|
and relaying to other ircd sites. The \fIirc(1)\fP program depends upon
|
||||||
|
there being an \fIircd\fP server running somewhere (either on your local
|
||||||
|
UNIX site or a remote ircd site) so that it will have somewhere to connect
|
||||||
|
to and thus allow the user to begin talking to other users.
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
.B \-d directory
|
||||||
|
This option tells the server to change to that directory and use
|
||||||
|
that as a reference point when opening \fIircd.conf\fP and other startup
|
||||||
|
files.
|
||||||
|
.TP
|
||||||
|
.B \-o
|
||||||
|
Starts up a local ircdaemon. Standard input can be used to send IRC
|
||||||
|
commands to the daemon. The user logging in from standard input will
|
||||||
|
be given operator privileges on this local ircd. If ircd is a setuid program,
|
||||||
|
it will call setuid(getuid()) before going to local mode. This option
|
||||||
|
can be used in inetd.conf to allow users to open their own irc clients
|
||||||
|
by simply connecting their clients to the correct ports. For example:
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
|
irc stream tcp nowait irc /etc/ircd ircd \\-f/etc/ircd.conf \\-o
|
||||||
|
|
||||||
|
allows users connecting to irc port (specified in /etc/services) to start
|
||||||
|
up their own ircdaemon. The configuration file should be used to check from
|
||||||
|
which hosts these connections are allowed from. This option also turns
|
||||||
|
on the autodie option -a.
|
||||||
|
.TP
|
||||||
|
.B \-a
|
||||||
|
Instructs the server to automatically die off if it loses all it's clients.
|
||||||
|
.TP
|
||||||
|
.B \-t
|
||||||
|
Instructs the server to direct debugging output to standard output.
|
||||||
|
.TP
|
||||||
|
.B \-x#
|
||||||
|
Defines the debuglevel for ircd. The higher the debuglevel, the more stuff
|
||||||
|
gets directed to debugging file (or standard output if -t option was used
|
||||||
|
as well).
|
||||||
|
.TP
|
||||||
|
.B \-i
|
||||||
|
The server was started by inetd and it should start accepting connections
|
||||||
|
from standard input. The following inetd.conf-line could be used to start
|
||||||
|
up ircd automatically when needed:
|
||||||
|
.TP
|
||||||
|
.B
|
||||||
|
ircd stream tcp wait irc /etc/ircd ircd \-i
|
||||||
|
|
||||||
|
allows inetd to start up ircd on request.
|
||||||
|
.TP
|
||||||
|
.B \-f filename
|
||||||
|
Specifies the ircd.conf file to be used for this ircdaemon. The option
|
||||||
|
is used to override the default ircd.conf given at compile time.
|
||||||
|
.TP
|
||||||
|
.B \-c
|
||||||
|
This flag must be given if you are running ircd from \fI/dev/console\fP or
|
||||||
|
any other situation where fd 0 isnt a tty and you want the server to fork
|
||||||
|
off and run in the background. This needs to be given if you are starting
|
||||||
|
\fIircd\fP from an \fIrc\fP (such as \fI/etc/rc.local\fP) file.
|
||||||
|
.TP
|
||||||
|
.B \-q
|
||||||
|
Using the -q option stops the server from doing DNS lookups on all the
|
||||||
|
servers in your \fIircd.conf\fP file when it boots. This can take a lengthy
|
||||||
|
amount of time if you have a large number of servers and they are not all
|
||||||
|
close by.
|
||||||
|
.TP
|
||||||
|
.B \-h hostname
|
||||||
|
Allows the user to manually set the server name at startup. The default
|
||||||
|
name is hostname.domainname.
|
||||||
|
.B \-p portname
|
||||||
|
Specifies the port where the daemon should start waiting for connections.
|
||||||
|
This overrides the default which is given at compile time.
|
||||||
|
.TP
|
||||||
|
.SH
|
||||||
|
If you plan to connect your \fIircd\fP server to an existing Irc-Network,
|
||||||
|
you will need to alter your local IRC CONFIGURATION FILE (typically named
|
||||||
|
"ircd.conf") so that it will accept and make connections to other \fIircd\fP
|
||||||
|
servers. This file contains the hostnames, Network Addresses, and sometimes
|
||||||
|
passwords for connections to other ircds around the world. Because
|
||||||
|
description of the actual file format of the "ircs.conf" file is beyond the
|
||||||
|
scope of this document, please refer to the file INSTALL in the IRC source
|
||||||
|
files documentation directory.
|
||||||
|
.LP
|
||||||
|
BOOTING THE SERVER: The \fIircd\fP server can be started as part of the
|
||||||
|
UNIX boot procedure or just by placing the server into Unix Background.
|
||||||
|
Keep in mind that if it is *not* part of your UNIXES Boot-up procedure
|
||||||
|
then you will have to manually start the \fIircd\fP server each time your
|
||||||
|
UNIX is rebooted. This means if your UNIX is prone to crashing
|
||||||
|
or going for for repairs a lot it would make sense to start the \fIircd\fP
|
||||||
|
server as part of your UNIX bootup procedure. In some cases the \fIirc(1)\fP
|
||||||
|
will automatically attempt to boot the \fIircd\fP server if the user is
|
||||||
|
on the SAME UNIX that the \fIircd\fP is supposed to be running on. If the
|
||||||
|
\fIirc(1)\fP cannot connect to the \fIircd\fP server it will try to start
|
||||||
|
the server on it's own and will then try to reconnect to the newly booted
|
||||||
|
\fIircd\fP server.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.RS
|
||||||
|
.nf
|
||||||
|
tolsun% \fBircd\fP
|
||||||
|
.fi
|
||||||
|
.RE
|
||||||
|
.LP
|
||||||
|
Places \fIircd\fP into UNIX Background and starts up the server for use.
|
||||||
|
Note: You do not have to add the "&" to this command, the program will
|
||||||
|
automatically detach itself from tty.
|
||||||
|
.SH COPYRIGHT
|
||||||
|
(c) 1988,1989 University of Oulu, Computing Center, Finland,
|
||||||
|
.LP
|
||||||
|
(c) 1988,1989 Department of Information Processing Science,
|
||||||
|
University of Oulu, Finland
|
||||||
|
.LP
|
||||||
|
(c) 1988,1989,1990,1991 Jarkko Oikarinen
|
||||||
|
.LP
|
||||||
|
For full COPYRIGHT see LICENSE file with IRC package.
|
||||||
|
.LP
|
||||||
|
.RE
|
||||||
|
.SH FILES
|
||||||
|
/etc/utmp
|
||||||
|
"irc.conf"
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
irc(1)
|
||||||
|
.SH BUGS
|
||||||
|
None... ;-) if somebody finds one, please inform author
|
||||||
|
.SH AUTHOR
|
||||||
|
Jarkko Oikarinen, currently jto@tolsun.oulu.fi,
|
||||||
|
manual page written by Jeff Trim, jtrim@orion.cair.du.edu,
|
||||||
|
later modified by jto@tolsun.oulu.fi.
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
[ $Id$ ]
|
||||||
|
The following macros are included in "ircd.m4" for use with the m4 text
|
||||||
|
preprocessor. "ircd.m4" is parsed before the IRC server conf file so they
|
||||||
|
are all available for use with that.
|
||||||
|
|
||||||
|
NOTE: The "ircd.m4" file is *ONLY* created by a "make install".
|
||||||
|
|
||||||
|
VERSION - current version string as in patchlevel.h
|
||||||
|
DEBUGMODE - if DEBUGMODE is define in config.h, is also defined for m4.
|
||||||
|
HOSTNAME - taken from hostname(1)
|
||||||
|
USER - username of person doing the "make install"
|
||||||
|
PORT - default port number as in config.h
|
||||||
|
PFREQ - default ping frequency as in config.h
|
||||||
|
CFREQ - default connect frequency as in config.h
|
||||||
|
MAXSENDQ - default max sendq as in config.h
|
||||||
|
CL - use this to wrap a class number
|
||||||
|
HOST - use this to wrap a hostname
|
||||||
|
HOSTM - use this to wrap the hostmask number in N-lines
|
||||||
|
ID - when wrapping the host field in an I-line, causes ident string return
|
||||||
|
to be used instead of user supplised username.
|
||||||
|
PASS - use this to wrap passwords in C/N/I/O lines
|
||||||
|
PING - use this to wrap the ping value in Y-lines
|
||||||
|
APORT - use this to wrap the port number in I-lines
|
||||||
|
CPORT - use this to wrap the port number in C-lines
|
||||||
|
SERV - use this to wrap server names
|
||||||
|
|
||||||
|
You might use some of these as
|
||||||
|
C:foo.bar.edu:PASS(boo):foo.bar.edu:APORT(6667)
|
||||||
|
I:ID(128.250.*)::ID(*.mu.oz.au):CPORT(6667)
|
||||||
|
|
||||||
|
In addition to these (rather weak macros), some more complete ones are
|
||||||
|
defined which already perform the above.
|
||||||
|
|
||||||
|
ADMIN - provide fields to it as you would an A-line
|
||||||
|
ALLOW - provide fields to it as you would an N-line
|
||||||
|
BAN - provide fields to it as you would an K-line
|
||||||
|
CLASS - provide fields to it as you would an Y-line
|
||||||
|
CLIENT - provide fields to it as you would an I-line
|
||||||
|
CONNECT - provide fields to it as you would an C-line
|
||||||
|
ME - provide fields to it as you would an M-line
|
||||||
|
HUB - first parameter is server you want to hub, second is optional and is
|
||||||
|
a mask against which other servers introduced must match against.
|
||||||
|
LEAF - works like HUB, except that the mask is matched against server names
|
||||||
|
to check if the link should be dropped.
|
||||||
|
SERVER - uses 6 fields, the first 4 as are found in an N-line, the last two
|
||||||
|
should be as you would use in a C-line. It expands out to provide
|
||||||
|
both a C and N line.
|
||||||
@@ -0,0 +1,294 @@
|
|||||||
|
[ $Id$ ]
|
||||||
|
From: Carlo Kid - Runaway <carlo@sg.tn.tudelft.nl>
|
||||||
|
Subject: GUIDE for compiling your server
|
||||||
|
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)
|
||||||
|
Date: Thu, 26 May 94 13:44:10 METDST
|
||||||
|
Cc: carlo@sg.tn.tudelft.nl
|
||||||
|
Mailer: Elm [revision: 66.33]
|
||||||
|
Status: RO
|
||||||
|
|
||||||
|
GUIDE for compiling your server, by Runaway
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
First of all you must get all the files you need, as an example
|
||||||
|
I will explain how to compile irc2.8.19.U3.2.
|
||||||
|
The files you'll need in general are:
|
||||||
|
|
||||||
|
- irc2.8.19.U3.2.tar.gz
|
||||||
|
|
||||||
|
Or, when you already have an older version -say irc2.8.19.U3.1- a patch:
|
||||||
|
|
||||||
|
- irc2.8.19.U3.1-2.patch
|
||||||
|
|
||||||
|
It is possible you need more then one patch, especially when you already
|
||||||
|
upgraded more often. But in that case you already have those old patches.
|
||||||
|
Of course, in that case, you also already have the old directory tree:
|
||||||
|
|
||||||
|
/home..../yourname/....ircd/irc2.8.19.U3.1/
|
||||||
|
|
||||||
|
Scripts, patches and directory trees
|
||||||
|
====================================
|
||||||
|
|
||||||
|
It is good practise to:
|
||||||
|
1) Call the directory tree after the version
|
||||||
|
2) Let this directory ONLY contain what comes with the .tar.gz file!
|
||||||
|
Thus: Do NOT put ircd.conf, or any patches etc in it!!!
|
||||||
|
In general, you must be able to delete this whole directory tree
|
||||||
|
when you still have the original .tar.gz file and patches applied to it.
|
||||||
|
3) Put it in a directory ending on /ircd, THIS directory will contain
|
||||||
|
your ircd.motd, ircd.pid, ircd.conf and patches...
|
||||||
|
|
||||||
|
So, you end up with:
|
||||||
|
|
||||||
|
...ircd/irc2.8.19.U3.1-2.patch
|
||||||
|
...ircd/irc2.8.19.U3.1.tar.gz
|
||||||
|
|
||||||
|
or just:
|
||||||
|
|
||||||
|
...ircd/irc2.8.19.U3.2.tar.gz
|
||||||
|
|
||||||
|
at once.
|
||||||
|
|
||||||
|
Before you can delete the old directory tree, you must be SURE to save
|
||||||
|
everything thats in it. This is thus the .tar.gz file, all patches but
|
||||||
|
ALSO the following files:
|
||||||
|
|
||||||
|
Makefile
|
||||||
|
include/config.h
|
||||||
|
include/setup.h
|
||||||
|
|
||||||
|
You should always keep a copy of those files OUTSIDE the irc2.8.19.U3.2/
|
||||||
|
directory tree. For instance:
|
||||||
|
|
||||||
|
...ircd/irc.personal/Makefile
|
||||||
|
...ircd/irc.personal/include/config.h
|
||||||
|
...ircd/irc.personal/include/setup.h
|
||||||
|
|
||||||
|
To make these backups easy, you should make a script, called backup.personal
|
||||||
|
containing:
|
||||||
|
|
||||||
|
cp Makefile ../irc.personal/Makefile
|
||||||
|
cp include/config.h ../irc.personal/include/config.h
|
||||||
|
cp include/setup.h ../irc.personal/include/setup.h
|
||||||
|
|
||||||
|
If you also change anything in the other Makefiles (ircd/Makefile and
|
||||||
|
common/Makefile) you can add those too. Be sure to make the directories
|
||||||
|
by hand first.
|
||||||
|
|
||||||
|
Make the script 'backup.personal' executable with:
|
||||||
|
chmod 700 backup.personal
|
||||||
|
You must be able to run it from any directory, so put it in your ..bin/
|
||||||
|
|
||||||
|
Ok... so now you have a backup of everything. If you wanted to start
|
||||||
|
ALL over you could delete the directory tree, unzip and untar the archive
|
||||||
|
again, apply all patches to it, change the Makefile and config.h again,
|
||||||
|
put setup.h back, recompile and reinstall.
|
||||||
|
In some cases it is easy to do this with an other script, I call it 'repatch',
|
||||||
|
it provides you with an easy-to-change overview of the patched you have used.
|
||||||
|
Here is how my 'repatch' looks now (it is located in .../ircd/repatch).
|
||||||
|
|
||||||
|
cd ~/irc/ircd
|
||||||
|
rm -rf irc2.8.19 irc2.8.19.U3.2
|
||||||
|
zcat irc2.8.19.tar.gz | tar xf -
|
||||||
|
mv irc2.8.19 irc2.8.19.U3.2
|
||||||
|
cd irc2.8.19.U3.2
|
||||||
|
#patch -p1 < ../Makefile.config.h.patch 2> ../patch.out
|
||||||
|
#cp ../setup.h include/setup.h
|
||||||
|
patch -p1 < ../irc2.8.19-TSpre8.2.patch 2>> ../patch.out
|
||||||
|
patch -p1 < ../irc2.8.19.TSpre8-note.patch 2>> ../patch.out
|
||||||
|
patch -p1 < ../irc2.8.19.TSpre8-wallops.patch 2>> ../patch.out
|
||||||
|
patch -p1 < ../irc2.8.19.TSpre8-bquiet.patch 2>> ../patch.out
|
||||||
|
patch -p1 < ../irc2.8.19.TSpre8-silence.2.patch 2>> ../patch.out
|
||||||
|
#patch -p1 < ../irc2.8.19.U3-ban.patch 2>> ../patch.out
|
||||||
|
make clean
|
||||||
|
vi include/patchlevel.h
|
||||||
|
grep -e '\.rej' -e '[Ff]ail' -e fuzz ../patch.out
|
||||||
|
|
||||||
|
As you can see I commented out the patches Makefile.config.h.patch and
|
||||||
|
irc2.8.19.U3-ban.patch, and don't copy setup.h here. This is because
|
||||||
|
I wanted to make a virgin .U3.2.tar.gz for distribution via ftp-sites.
|
||||||
|
If I change the name of the directory, I have to change it in three
|
||||||
|
places :/
|
||||||
|
This script forces me to edit the patchlevel.h :) :)
|
||||||
|
The last grep warns me if anything went wrong with the patches.
|
||||||
|
|
||||||
|
Moreover, as you can see, I have a 'Makefile.config.h.patch'.
|
||||||
|
You should make your own as soon as you completely installed
|
||||||
|
and tested your server. It is very handy for re-installing a new
|
||||||
|
version.
|
||||||
|
|
||||||
|
To make this patch, edit the Makefile's and and config.h and type:
|
||||||
|
|
||||||
|
backup.personal
|
||||||
|
cd ..
|
||||||
|
rm -rf irc2.8.19
|
||||||
|
zcat irc2.8.19.tar.gz | tar xf -
|
||||||
|
diff -rc irc2.8.19 irc.personal > Makefile.config.h.patch
|
||||||
|
|
||||||
|
Check it with an editor if it looks ok. In the above, 'irc2.8.19.tar.gz'
|
||||||
|
is the virgin 'Avalon' version, I change the Makefiles in the .U3
|
||||||
|
however also, so you might wanna use the virgin .U3.2.tar.gz.
|
||||||
|
|
||||||
|
Starting ALL over (or begining for the first time)
|
||||||
|
==================================================
|
||||||
|
|
||||||
|
This is about EDITTING the Makefile(s) and config.h, and creating the
|
||||||
|
setup.h for the first time.
|
||||||
|
|
||||||
|
2.8.19 is different from 2.8.16 and before. You will have to EDIT the
|
||||||
|
Makefile and config.h that comes with the distribution. You can NOT
|
||||||
|
use the old Makefile and config.h you had !
|
||||||
|
|
||||||
|
First write down the path you want to use where you are going to put
|
||||||
|
the ircd.conf etc...
|
||||||
|
|
||||||
|
Edit the Makefile. Comments are in it. You should simply define that
|
||||||
|
what is needed for your Operating System.
|
||||||
|
|
||||||
|
Then edit the config.h
|
||||||
|
|
||||||
|
Then run ./Config to create setup.h ... at first simply hit return all the
|
||||||
|
time. If you insist on using gcc instead of cc, you must edit that in your
|
||||||
|
Makefile BEFORE running setup.h. You can't change that running Config,
|
||||||
|
although it asks for it. If you have more then one cc, you can add the
|
||||||
|
right path to in the Makefile (if it uses the wrong one).
|
||||||
|
|
||||||
|
Since U3.2, I changed the Makefile and config.h a little. The changes are:
|
||||||
|
- I added note.o to the dependency
|
||||||
|
- I added *.orig files to the 'make clean' (otherwise the *.orig generated
|
||||||
|
by some 'patch' programs will be left).
|
||||||
|
If you want this too, and you have .U3.1, you can get the patch from
|
||||||
|
sg.tn.tudelft.nl (file: Makefile.conf.U3.patch).
|
||||||
|
|
||||||
|
As soon as you are done, run backup.personal. To stay up to date with your
|
||||||
|
backup.
|
||||||
|
|
||||||
|
Then make the Makefile.conf.patch as described above. (or wait with that
|
||||||
|
till you are sure it works... otherwise it might be done more then once
|
||||||
|
which is a waste of time).
|
||||||
|
|
||||||
|
Special remarks
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Makefile:
|
||||||
|
First occurance of
|
||||||
|
CC=cc
|
||||||
|
Change this NOT if you want another compiler, add another CC= later, close
|
||||||
|
to your OS specific #defines...
|
||||||
|
|
||||||
|
# IRCDDIR must be the same as DPATH in include/config.h
|
||||||
|
#
|
||||||
|
IRCDDIR=/sb/users/carlo/irc/ircd
|
||||||
|
Make sure you use the same path in the config.h :)
|
||||||
|
|
||||||
|
SUBDIRS=common ircd
|
||||||
|
By removing the 'irc' from this line, you stop 'make' from making the client
|
||||||
|
as well.
|
||||||
|
|
||||||
|
config.h:
|
||||||
|
/*
|
||||||
|
* NOTE: On some systems, valloc() causes many problems.
|
||||||
|
*/
|
||||||
|
#undef VALLOC /* Define this if you have valloc(3) */
|
||||||
|
I never try it, even if I have it.
|
||||||
|
|
||||||
|
#define USE_VARARGS
|
||||||
|
For defines like this, you best check the online manual if you have them
|
||||||
|
(man vprintf in this case)... I didn't have man page for vscanf() but it
|
||||||
|
still worked... (I DO have them for vprintf and vsprinf).
|
||||||
|
|
||||||
|
#undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
|
||||||
|
Debug mode uses a lot more memory and is a lot slower. ONLY define
|
||||||
|
when your server gives problems like crashing/coredumping, or other
|
||||||
|
things like not wanting to startup etc. In other words: when you are really
|
||||||
|
*USING* this feature to do DEBUGing !
|
||||||
|
|
||||||
|
#define NPATH "/sb/users/carlo/irc/server/Undernet/.ircdnote"
|
||||||
|
The '#ifdef notdef' '#endif' around NPATH mean: notdef = NOT DEFINED.
|
||||||
|
You should *never* #define notdef... It is used to "comment out" *examples*.
|
||||||
|
By defining it, you enable all examples (like making your server SUI :/)
|
||||||
|
Simply *remove* the lines '#ifdef notdef' and '#endif' around the NPATH.
|
||||||
|
|
||||||
|
#define DPATH "/sb/users/carlo/irc/ircd"
|
||||||
|
Must be the same as in the Makefile!
|
||||||
|
#define SPATH "/sb/users/carlo/bin/ircd" /* path to server executeable */
|
||||||
|
This is used when you do a /RESTART. For fast restarting a NEW version (upgrade)you can let this point to a symbolic link, and then change this link to the
|
||||||
|
new executable. Do a 'restart' and voila...
|
||||||
|
For instance:
|
||||||
|
.../bin/ircd.U3.2*
|
||||||
|
.../bin/ircd -> ircd.U3.2
|
||||||
|
The last made with:
|
||||||
|
ln -s ircd.U3.2 ircd
|
||||||
|
Then when you upgrade:
|
||||||
|
rm ircd
|
||||||
|
ln -s ircd.U3.3 ircd
|
||||||
|
and a /RESTART
|
||||||
|
|
||||||
|
#undef CRYPT_LINK_PASSWORD
|
||||||
|
Make sure your ircd.conf isn't world readable like on pasadena :/
|
||||||
|
(and on ircserver.et.tudelft.nl once - we DID have to change all passwords
|
||||||
|
then)
|
||||||
|
|
||||||
|
Compiling the server
|
||||||
|
====================
|
||||||
|
|
||||||
|
*** FIRST edit your include/patchlevel.h ***
|
||||||
|
|
||||||
|
If you don't want to compile the client, you can change the Makefile
|
||||||
|
as mentioned above, or type:
|
||||||
|
make server
|
||||||
|
|
||||||
|
After a succesfull compilation (ignore warning ;), you can type
|
||||||
|
make install
|
||||||
|
or just
|
||||||
|
cp ircd/ircd ~/bin/ircd.U3.2
|
||||||
|
cd ~/bin
|
||||||
|
chmod 700 ircd.U3.2
|
||||||
|
rm ircd
|
||||||
|
ln -s ircd.U3.2 ircd
|
||||||
|
|
||||||
|
I changed my Makefile to do the latter thing when I type 'make install'
|
||||||
|
|
||||||
|
Then run the server by typing 'ircd'. Don't do this on the
|
||||||
|
...ircd/irc2.8.19.U3.2/ircd/ directory, because when in your PATH the
|
||||||
|
'.' comes before your '~/bin' you start up THAT exucutable, disallowing
|
||||||
|
you to recompile later (text file busy).
|
||||||
|
|
||||||
|
Compile errors
|
||||||
|
==============
|
||||||
|
|
||||||
|
If anything goes wrong with note, it most likely is because you
|
||||||
|
1) Didn't define NPATH correctly
|
||||||
|
2) Didn't add the note.o to the dependencies.. remove note.o and recompile.
|
||||||
|
|
||||||
|
[ For a non-undernet version: irc2.8.19.tar.gz is bugged, get the -note.patch
|
||||||
|
from ftp.undernet.org. ]
|
||||||
|
|
||||||
|
If you get problems while linking saying it has undefined _something
|
||||||
|
and something is something with 'res', you must add -lresolv to your
|
||||||
|
IRCDLIBS in the Makefile.
|
||||||
|
|
||||||
|
If you get problems with any function beging defines twice are giving
|
||||||
|
errors like not compatible with previous definition (likely atol() in
|
||||||
|
note.c), just remove that whole function from the .c file (put #ifdef notdef
|
||||||
|
around it). You have it already in your system libraries.
|
||||||
|
|
||||||
|
Last remarks
|
||||||
|
============
|
||||||
|
|
||||||
|
Add those U: lines!!!
|
||||||
|
And change your ircd.motd to reflect the new commands/features :)
|
||||||
|
( /MOTD uxb* -- Nice motd RedRum! :)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
|
Run
|
||||||
|
|
||||||
|
--
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
| carlo@sg.tn.tudelft.nl | Run @ IRC |
|
||||||
|
| | Admin of Delft.NL.EU.undernet.org |
|
||||||
|
| * Don't expect anything of live, | and Ircserver.et.tudelft.nl |
|
||||||
|
| or you'll miss all the rest of it.| |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
+271
@@ -0,0 +1,271 @@
|
|||||||
|
|
||||||
|
The Tao of Internet Relay Chat
|
||||||
|
Copyright (C) Ove Ruben R Olsen 1994
|
||||||
|
Version of 940110
|
||||||
|
Contributing masters: Master ScottM
|
||||||
|
|
||||||
|
-----
|
||||||
|
Something is formed by the electrons, born in the silent cable. Shaping
|
||||||
|
and growing and ungrowing. It is there yet not there. It is the source of
|
||||||
|
Internet Relay Chat. I do not know the name, thus I will call it the Tao
|
||||||
|
of Internet Relay Chat.
|
||||||
|
|
||||||
|
If the Tao is great, then the IRC is running ceaselessly. If the IRC is
|
||||||
|
great then the server is running without ever stoping. If the server is
|
||||||
|
great then the client will always be the server. The luser is then pleased
|
||||||
|
and there is Chat in the world.
|
||||||
|
|
||||||
|
The Tao of IRC squits far away and connects on returning.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The genetic potential of birth, a lot to know, yet unknown.
|
||||||
|
|
||||||
|
In the begining there was nothing.
|
||||||
|
|
||||||
|
Out of nothing the Tao gave birth to tolsun.oulu.fi. tolsun gave birth to
|
||||||
|
OuluBox.
|
||||||
|
|
||||||
|
OuluBox gave birth to rmsg.
|
||||||
|
|
||||||
|
rmsg was not Tao, so MUT gave birth to IRC.
|
||||||
|
|
||||||
|
No one knows when IRC came into existance, the mighty master WiZ have it
|
||||||
|
to be at the end of the eight month in the year of the Dragon.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
Each channel has its purpose, however humble. Each channel is the Yin and
|
||||||
|
Yang of IRC. Each channels has it's place within the IRC.
|
||||||
|
|
||||||
|
In the beginning there was only channel 0, thus channel 0 is the soil of
|
||||||
|
IRC.
|
||||||
|
|
||||||
|
Channel 1 to channel 10 then was open as the sea. Channel 11 to 999 was the
|
||||||
|
trees and forests of IRC. Channels above 999 should not be mentioned, and
|
||||||
|
channels below 0 were unborn and contained many secrets.
|
||||||
|
|
||||||
|
This was not the right Tao, so IRC gave birth to +channels.
|
||||||
|
|
||||||
|
+channels had the yin and yang. Mode does not.
|
||||||
|
|
||||||
|
This was not the right Tao still, so IRC gave birth to #channels.
|
||||||
|
|
||||||
|
#channels have the yin and yang.
|
||||||
|
|
||||||
|
Only channel 0 is the right path to Tao, but avoid speaking on channel 0.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
There was a great dispute among the Broom-Walkers of the Relay. Some of them
|
||||||
|
wanted neither yin nor yang. Out of this Eris came into existance. Some of the
|
||||||
|
Broom-Walkers then created Eris Free-net.
|
||||||
|
|
||||||
|
This was the right Tao.
|
||||||
|
|
||||||
|
Kind Gentle and Boring Net was another wrong path to the Tao of Internet Relay
|
||||||
|
Chat.
|
||||||
|
|
||||||
|
Some time later there was a quantity of some lusers who wanted to be
|
||||||
|
Broom-Walkers also. The Eris Free Broom-Walkers did not agree with them,
|
||||||
|
thus a new IRC was born. This IRC is called the Undernet.
|
||||||
|
|
||||||
|
But this is not the right Tao, either.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
There will always be disputes among the Broom-Walkers of Internet Relay Chat.
|
||||||
|
|
||||||
|
This is the very nature of the IRC.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
Lusers that do not understand the Tao is always using the yang of Mode on
|
||||||
|
their channels. Lusers that do understand the Tao are always using Ignore
|
||||||
|
on their channels.
|
||||||
|
|
||||||
|
How could this not be so ?
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The wise sage luser is told about the Chat and uses it. The luser is told
|
||||||
|
about the IRC and is looking for it. The flock are told about the Tao and
|
||||||
|
make a fool of the IRC.
|
||||||
|
|
||||||
|
If there was no laughter, there would be no Tao.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The master says:
|
||||||
|
"Without the Tao of Internet Relay Chat, life becomes meaningless."
|
||||||
|
|
||||||
|
The Relay of the old time was mysterious and sacred. We can neither imagine
|
||||||
|
its thoughts nor path; we are left but to describe.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The sage luser must be aware like a frog crossing the highway.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The great master Wumpus once dreamed that he was an automaton. When he awoke
|
||||||
|
he exclaimed:
|
||||||
|
"I don't know whether I am Wumpus dreaming that I am a client,
|
||||||
|
or a client dreaming that I am Wumpus!"
|
||||||
|
|
||||||
|
So was the first Automata born.
|
||||||
|
|
||||||
|
The master Nap then said:
|
||||||
|
"Any automata should not speak unless spoken to.
|
||||||
|
Any automata shall only whisper when spoken to."
|
||||||
|
|
||||||
|
Thus replied the master Gnarfer:
|
||||||
|
"The lusers shall keep in mind that a automata can be either good or
|
||||||
|
bad. Create good automata, and the IRC will hail you and you will
|
||||||
|
gain fame and fortune. Create bad automata and people will start to
|
||||||
|
hate you, and finaly you will be /KILLed to ethernal damnation"
|
||||||
|
|
||||||
|
Many lusers have fallen into the clutches of ethernal damnation. They where
|
||||||
|
not following the Tao.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
There once was a luser who went to #BotSex. Each day he saw the automatons.
|
||||||
|
The luser decided that he also would have such a automata.
|
||||||
|
He asked another luser for his automata. The other luser gave his automata
|
||||||
|
away.
|
||||||
|
|
||||||
|
The luser was not within the Tao, so he just started the automata. The automata
|
||||||
|
had only Yang inside so all the lusers files where deleted.
|
||||||
|
|
||||||
|
Some moons laither the same luser then had become a sage luser, and did create
|
||||||
|
his automata from the very grounds with materials found inside the IRC.
|
||||||
|
The luser was now within the Tao and his automata lived happily ever after.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
There once was a master who wrote automatons without the help of master Phone.
|
||||||
|
A novice luser, seeking to imitate him, began with the help of master Phone.
|
||||||
|
When the novice luser asked the master to evaluate his automata the master
|
||||||
|
replied: "What is a working automata for the master is not for the luser.
|
||||||
|
You must must BE the IRC before automating."
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
Master BigCheese gave birth to master Troy; his duty clear. Master Troy gave
|
||||||
|
birth to master Phone, for the Tao of Irc must be eternal and must flow as the
|
||||||
|
ceaseless river of Time itself.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
Master Phone once said about the ircII client:
|
||||||
|
"public_msg is for a message from someone NOT on the channel
|
||||||
|
public_other is for a message on a channel that doesn't belong to
|
||||||
|
a window. public is for a message on a channel that belongs to a
|
||||||
|
window!"
|
||||||
|
|
||||||
|
Out of this raised the mighty chaos.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The sage luser came to the master who wrote automata without the help of
|
||||||
|
master Phone. The sage luser asked the master who wrote automata: "Which is
|
||||||
|
easiest to make. A automata with the help of master Phone or an automata
|
||||||
|
made with the help of a language ?"
|
||||||
|
|
||||||
|
The master who wrote automata then replied:
|
||||||
|
"With the help of a language."
|
||||||
|
|
||||||
|
The sage luser was disapointed and exclaimed: "But, with master Phone you
|
||||||
|
do not need to know anything about the soil of IRC. Is not that the easiet
|
||||||
|
way ?"
|
||||||
|
|
||||||
|
"Not really" said the master who wrote automata, "when using master Phone
|
||||||
|
you are closed inside a box. For sure, it is a great box for the lusers,
|
||||||
|
but the master will need more power, thus a language is the only path to go.
|
||||||
|
With the language the master will never have to limit himself. When using
|
||||||
|
such a language the master will seek the best between the need and the
|
||||||
|
availibility."
|
||||||
|
|
||||||
|
"I see", said the sage luser.
|
||||||
|
|
||||||
|
This is the essence of Tao of IRC automatas.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
A client should be light and be used for communication. The spirit of a good
|
||||||
|
client is that it should be very convinient for the luser to use, but hard
|
||||||
|
for the luser who want to create automata.
|
||||||
|
There should never ever be too many functions or too few functions.
|
||||||
|
|
||||||
|
There should always be a ignore.
|
||||||
|
|
||||||
|
Without ignore the client is not within the Tao of Chating.
|
||||||
|
|
||||||
|
The client should always respond the luser with messages that will not
|
||||||
|
astnonish him too much. The server likewise. If the server does not, then it
|
||||||
|
is the clients job to explain what the server says.
|
||||||
|
|
||||||
|
A client which fails this, will be useless and cause confusion for the lusers.
|
||||||
|
The only way to correct this is to use another client or to write a new one.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
A luser asked the masters on #IrcHelp: "My client does not work".
|
||||||
|
The masters replied: "Upgrade your client".
|
||||||
|
The luser then wondered why the master knew. The master then told him about
|
||||||
|
the Protocol.
|
||||||
|
|
||||||
|
"Your client does not work beaucse it does not understand the server. Why
|
||||||
|
should it always work ? Only a fool would expect such. But, clients are made
|
||||||
|
by humans, and humans are not perfect. Only Tao is.
|
||||||
|
|
||||||
|
The IRC is solid. The IRC is floating, and will always be dynamic. Live with
|
||||||
|
that or /quit."
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The luser came to the masters of #IrcHelp, asking about the Tao of IRC within
|
||||||
|
the client.
|
||||||
|
The masters then said that the Tao of IRC always lies inside the client
|
||||||
|
regardless of how the client connects to the server.
|
||||||
|
|
||||||
|
"Is the Tao in irc ?" asked the luser.
|
||||||
|
"It so is" replied the masters of #IrcHelp.
|
||||||
|
"Is the Tao in the ircII, Kiwi, rxirc, vms, rockers and msa ?" asked the
|
||||||
|
luser.
|
||||||
|
"In all of them and in the TPC, irchat, zenirc, zircon X11-irc and even the
|
||||||
|
dos irc has the Tao" said the master quietly.
|
||||||
|
"Is the Tao in a telnet connection directly to the server ?"
|
||||||
|
|
||||||
|
The master then was quiet for a long time and said. "Please leave, such
|
||||||
|
questions are not within the Tao of IRC".
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The master says: "Without the Protocol of TCP the messages will not travel.
|
||||||
|
Without the client, the server is useless."
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
There once was a luser who used the ircII client. "ircII can do anything I
|
||||||
|
ever need for using IRC" said the emacs client user, "I have /ON's, I have
|
||||||
|
assignments, I have aliasing. Why don't you use this instead of the huge
|
||||||
|
emacs client, which also has a messy screen?"
|
||||||
|
The emacs client user then replied by saying that "it is better to have a
|
||||||
|
scripting language that is the client instead of have a client that has
|
||||||
|
a scripting language." Upon hearing this, the ircII client luser fell silent.
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
The master Wumpus said: "Time for you to leave. I did, now I'm happy."
|
||||||
|
The master Gnarfer replied: "Use, but never overuse IRC, then you will also
|
||||||
|
be happy within IRC"
|
||||||
|
|
||||||
|
|
||||||
|
-----
|
||||||
|
A luser came unto the masters of #EU-Opers and asked, "How can I be, yet not
|
||||||
|
be, a user@host within the IRC?"
|
||||||
|
The masters of #EU-Opers replied: "To be Tao is to be ones true self. To hide
|
||||||
|
ones self is not Tao, and is not IRC, you have much to learn before you shall
|
||||||
|
be at rest within the Flow of Irc. Please leave"
|
||||||
@@ -0,0 +1,407 @@
|
|||||||
|
****** UnrealIRCd v2.1.7 Documentation ******
|
||||||
|
[ $Id$ ]
|
||||||
|
|
||||||
|
1) About UnrealIRCd
|
||||||
|
|
||||||
|
I started making UnrealIRCd about 1-2 months ago. (July 1999 now)
|
||||||
|
First it was called mpx2.0b13.soundforge - as I was
|
||||||
|
inspired of the 'forge' word. I quickly changed name
|
||||||
|
after I realized the IRCd had more potential.
|
||||||
|
Unreal is based off Elite2.0b13 and some of
|
||||||
|
the minor bugfixes Potvin came up with. First lemme
|
||||||
|
introduce myself. My nick is Techie/Stskeeps. I hang
|
||||||
|
out at Global-IRC.net, DALnet, DragonWings.org and so on
|
||||||
|
|
||||||
|
Unreal is a hybrid of Elite (as I said) mixed with some
|
||||||
|
Twilight IRCd, TerraIRCd, TS4 (channel mode +h & +e) features
|
||||||
|
(IMHO TwilightIRCd is one of the best dreamforge hybrids I've seen!
|
||||||
|
Unreal is not a rip-off of other IRCds - I added a lot of features myself!
|
||||||
|
I really cannot mention some major features as I think a IRCd is a
|
||||||
|
IRCd when it has got useful commands- and people actually say mine has!
|
||||||
|
|
||||||
|
Anyways I dunt demand donations or anything. I just do coding for fun
|
||||||
|
I treat coding like playing with toys. It makes me happy(or is it just
|
||||||
|
caffeine?;). An addy to send donations is at the Donation file in the IRCd dir
|
||||||
|
And.. I don't sweat while making features unlike some Potvin coder so dunt
|
||||||
|
send me towels;) I would be more happy if someone e-mailed me with ideas
|
||||||
|
to the IRCd.. The whole IRCd is GNU so if you want to rip off any of my ideas
|
||||||
|
You are generally welcome:) Just remember to do what's said in the Changes file!
|
||||||
|
-- So.. Enjoy this IRCd:) It may become a dream to IRCd owners as its infact
|
||||||
|
a sortof hybrid of EliteIRCd (Cite .man-pages/page1 in Elite:
|
||||||
|
EliteIRCD has become a dream to many ircd owners</end cite>
|
||||||
|
-- Carsten Munk / Techie .. =)
|
||||||
|
|
||||||
|
2) Commands (User Commands)
|
||||||
|
|
||||||
|
*** WATCH Command ***
|
||||||
|
Watch is a new notify-type system in UnrealIRCd which is both faster
|
||||||
|
and uses less network resources than any old-style notify
|
||||||
|
system. You may add entries to your Watch list with the command
|
||||||
|
/watch +nick1 [+nick2 +nick3 ..., and the server will send
|
||||||
|
you a message when any nickname in your watch list logs on or off.
|
||||||
|
Use /watch -nick to remove a nickname from the watch list, and
|
||||||
|
just /watch to view your watch list.
|
||||||
|
The watch list DOES NOT REMAIN BETWEEN SESSIONS - you (or your
|
||||||
|
script or client) must add the nicknames to your watch list every
|
||||||
|
time you connect to an IRC server. /Watch was made in DreamForge IRCd
|
||||||
|
which UnrealIRCd in ground is based off
|
||||||
|
|
||||||
|
*** HELPOP Command ***
|
||||||
|
HelpOp is a new system of getting IRC Server help. You type either
|
||||||
|
/HelpOp ? <help system topic> or /HelpOp ! <question>
|
||||||
|
The "?" in /HelpOp means query the help system and if you get no
|
||||||
|
response you can choose '!' to send it to the Help Operators online
|
||||||
|
------------oOo--------------
|
||||||
|
|
||||||
|
*** LIST Command ***
|
||||||
|
New extended /list command options are supported. To use these
|
||||||
|
features, you will likely need to prefix the LIST command with
|
||||||
|
/quote to avoid your client interpreting the command.
|
||||||
|
|
||||||
|
Usage: /quote LIST options
|
||||||
|
|
||||||
|
If you don't include any options, the default is to send you the
|
||||||
|
entire unfiltered list of channels. Below are the options you can
|
||||||
|
use, and what channels LIST will return when you use them.
|
||||||
|
>number List channels with more than <number> people.
|
||||||
|
<number List channels with less than <number> people.
|
||||||
|
C>number List channels created between now and <number> minutes ago.
|
||||||
|
C<number List channels created earlier than <number> minutes ago.
|
||||||
|
T>number List channels whose topics are older than <number> minutes
|
||||||
|
(Ie., they have not changed in the last <number> minutes.
|
||||||
|
T<number List channels whose topics are newer than <number> minutes.
|
||||||
|
*mask* List channels that match *mask*
|
||||||
|
!*mask* List channels that do not match *mask*
|
||||||
|
LIST defaults to sending a list of channels with 2 or more members,
|
||||||
|
so use the >0 option to get the full channel listing.
|
||||||
|
|
||||||
|
*** PRIVMSG Command ***
|
||||||
|
PRIVMSG and NOTICE, which are used internally by the client for
|
||||||
|
/msg and /notice, in UnrealIRCd support two additional formats:
|
||||||
|
/msg @#channel <text> will send the text to channel-ops on the
|
||||||
|
given channel only. /msg @+#channel <text> will send the text
|
||||||
|
to both ops and voiced users on the channel. While some clients
|
||||||
|
may support these as-is, on others (such as ircII), it's necessary
|
||||||
|
to use /quote privmsg @#channel <text> instead. It's perhaps a
|
||||||
|
good idea to add the/alias omsg /quote privmsg @$0 $1 into
|
||||||
|
your script (.ircrc) file in that case.
|
||||||
|
|
||||||
|
**** KNOCK Command ****
|
||||||
|
/Knock is a new UnrealIRCd command which enables you to
|
||||||
|
'knock' on a channel if it is +i and these criteria is met
|
||||||
|
- Channel is not +K (No knocks)
|
||||||
|
- Channel is not +I (No invites!)
|
||||||
|
- You're not banned!
|
||||||
|
- And you are not already there:)
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/Knock #Channel :Reason
|
||||||
|
|
||||||
|
**** LICENSE Command ****
|
||||||
|
This command shows the GNU License
|
||||||
|
Which is hard-coded into the IRCd:)
|
||||||
|
Syntax: /License [optional server]
|
||||||
|
|
||||||
|
*** SetName Command ***
|
||||||
|
/SetName is a new feature in UnrealIRCd
|
||||||
|
Which allows users to change their 'Real name'
|
||||||
|
(GECOS) directly online at IRC without reconnecting
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/SetName :New Real Name
|
||||||
|
|
||||||
|
|
||||||
|
*** MODE Command ***
|
||||||
|
This is basically the /mode command as it has always
|
||||||
|
been on IRC. Thou in Channel mode basis it has got an
|
||||||
|
Extra feature (/mode #Channel ^ ) which reports channel
|
||||||
|
modes represented in a bitstring (may be handy, maybe not)
|
||||||
|
UnrealIRCd has got some new channel / usermodes I think you
|
||||||
|
wish to take a look at
|
||||||
|
Channel Modes Help: /HelpOp CHMODES
|
||||||
|
User modes help: /HelpOp UMODES
|
||||||
|
|
||||||
|
*** STATSERV Command ***
|
||||||
|
This is a alias for the /msg StatServ command,
|
||||||
|
But is more secure. If the IRC network doesn't have StatServ
|
||||||
|
It will report it is down.
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/StatServ <command>
|
||||||
|
|
||||||
|
*** /Credits Help ***
|
||||||
|
This command will list the credits I've created
|
||||||
|
to thank the people who has helped me with making
|
||||||
|
UnrealIRCd. Anyone who I've forgotten all my kind
|
||||||
|
thoughts go to -- Techie'99
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/Credits [optional server]
|
||||||
|
|
||||||
|
*** /DALINFO Help ***
|
||||||
|
This command will list the credits that the
|
||||||
|
Dreamforge IRCd team/the IRCd developers
|
||||||
|
from the start when IRCd got developed
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/DALInfo [optional server]
|
||||||
|
|
||||||
|
3) Operator Commands
|
||||||
|
|
||||||
|
This section is the IRCOp's only commands
|
||||||
|
area:) - These topics are available:
|
||||||
|
Note: This doesnt include Dreamforge commands
|
||||||
|
|
||||||
|
SETHOST SETIDENT SDESC
|
||||||
|
ADCHAT NACHAT TECHAT
|
||||||
|
GLINE REMGLINE STATS
|
||||||
|
MKPASSWD SNOTES SNOTE
|
||||||
|
ADDLINE LAG RPING
|
||||||
|
ADDMOTD ADDOMOTD OPERMOTD
|
||||||
|
CHGHOST TSCTL SAJOIN
|
||||||
|
|
||||||
|
*** ADDMOTD Command Help ***");
|
||||||
|
This will add the text you specify to the MOTD
|
||||||
|
(the general motd - T:lines doesnt count ..)
|
||||||
|
Server Admin & Co-Admin only
|
||||||
|
|
||||||
|
Syntax: /ADDMOTD :text
|
||||||
|
|
||||||
|
*** ADDOMOTD Command Help ***
|
||||||
|
This will add the text you specify to the Operator MOTD
|
||||||
|
Server Admin & Co-Admin only
|
||||||
|
|
||||||
|
Syntax: /ADDOMOTD :text
|
||||||
|
|
||||||
|
*** OPERMOTD Command Help ***
|
||||||
|
This is a IRCop only command - shows the IRCd Operator MOTD
|
||||||
|
Syntax: /OperMotd
|
||||||
|
|
||||||
|
*** SETHOST Command Help ***
|
||||||
|
This command is so you can change your
|
||||||
|
Virtual host (hiddenhost) to everything you want to
|
||||||
|
Except special characters;).
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/SetHost <new hostname>)
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/Sethost ircaddicts.org
|
||||||
|
|
||||||
|
*** SETIDENT Command Help ***
|
||||||
|
With this command you can change your
|
||||||
|
ident (username).
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/SetIdent <new ident>
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/SetIdent root
|
||||||
|
|
||||||
|
*** SDesc Command help ***
|
||||||
|
NOTE: This is a Server Admin/Co Admin only command
|
||||||
|
With this command you can change your Server Info Line
|
||||||
|
Without having to squit and reconnect.
|
||||||
|
Syntax: /SDesc :New description
|
||||||
|
Example: /SDesc :If you belong to me..
|
||||||
|
|
||||||
|
*** AdChat Command Help ***
|
||||||
|
This command sends to all Admins online (IsAdmin)
|
||||||
|
Only for Admins. This is a ChatOps style command
|
||||||
|
Syntax: /AdChat :<text>
|
||||||
|
Example: /AdChat :Hey guys!
|
||||||
|
|
||||||
|
*** NAChat Command Help ***
|
||||||
|
This command sends to all NetAdmins & TechAdmins online
|
||||||
|
Only for Net/Techadmins. This is a ChatOps style command
|
||||||
|
Syntax: /NAChat :<text>
|
||||||
|
Example: /NAChat :Hey guys!
|
||||||
|
|
||||||
|
*** Stats Command Help ***
|
||||||
|
UnrealIRCd has got a extension called /Stats G
|
||||||
|
Which will list the current G:Lines
|
||||||
|
Syntax: /Stats G
|
||||||
|
|
||||||
|
*** TEChat Command Help ***
|
||||||
|
This command sends to all TechAdmins online
|
||||||
|
Only for Net/Techadmins. This is a ChatOps style command
|
||||||
|
Syntax: /TEChat :<text>
|
||||||
|
Example: /TEChat :Hey guys!
|
||||||
|
|
||||||
|
*** CHGHOST Command help ***
|
||||||
|
This command makes you able to change other people's virtual hostname
|
||||||
|
- IRCop only.
|
||||||
|
Syntax: /CHGHOST <nick> <newhost>
|
||||||
|
|
||||||
|
*** TSCTL Command Help ***");
|
||||||
|
This is a highly advanced command");
|
||||||
|
Syntax:");
|
||||||
|
/TSCTL OFFSET +|- <time> - Adjust internal IRC clock");
|
||||||
|
/TSCTL TIME - Will give TS report");
|
||||||
|
|
||||||
|
*** SAJOIN Command help **");
|
||||||
|
Makes <nick> join channel <channel>");
|
||||||
|
Services Admin only..");
|
||||||
|
Syntax: /SAJOIN nick channel");
|
||||||
|
|
||||||
|
|
||||||
|
*** RemGline Command Help
|
||||||
|
This command can remove G:Lines
|
||||||
|
|
||||||
|
Syntax:
|
||||||
|
/RemGline <user@host mask>
|
||||||
|
|
||||||
|
Example:
|
||||||
|
/RemGline *@*.flirt.org
|
||||||
|
|
||||||
|
*** G:line command Help ***
|
||||||
|
This command provides timed G:Lines. If you match
|
||||||
|
a G:Line you cannot connect to ANY server at the
|
||||||
|
IRC network
|
||||||
|
Syntax:
|
||||||
|
/GLINE <user@host mask> <seconds to be banned> :<reason>
|
||||||
|
Example:
|
||||||
|
/GLINE *@*.dal.net 900 :Spammers
|
||||||
|
this will ban all users matching *@*.dal.net for 15 minutes
|
||||||
|
with reason 'Spammers'
|
||||||
|
|
||||||
|
*** MkPasswd Command help ***
|
||||||
|
This command will encrypt the string it has been given
|
||||||
|
So u can add it directly to the ircd.conf if you use
|
||||||
|
Encrypted passwords. /MKPassWd is disabled in UnrealIRCd/32
|
||||||
|
Syntax : /MkPasswd :string to be encrypted
|
||||||
|
|
||||||
|
*** SNOTE Command Help ***
|
||||||
|
This will store the parameter of the command to a file
|
||||||
|
Which then can be read by using /SNOTES LIST
|
||||||
|
Syntax: /SNOTE :<message>
|
||||||
|
|
||||||
|
*** SNOTES Command Help ***
|
||||||
|
This command is made to view notes
|
||||||
|
Written to the SNOTE file by using /SNOTE
|
||||||
|
Syntax: /SNOTES LIST
|
||||||
|
or /SNOTES <number>
|
||||||
|
|
||||||
|
*** ADDLINE Command Help ***
|
||||||
|
This command can be used to add lines to the ircd.conf file
|
||||||
|
Only for Server Admins
|
||||||
|
Syntax: /AddLine :<line>
|
||||||
|
|
||||||
|
*** LAG Command Help ***
|
||||||
|
This command is like a sonar/traceroute for IRC servers
|
||||||
|
You type in /lag server1.irc.net and it will
|
||||||
|
reply from every server it passes with time and so on
|
||||||
|
Useful for looking where lag is and optional TS future/past travels
|
||||||
|
Syntax: /LAG <servername>
|
||||||
|
|
||||||
|
**** RPING Command help ***
|
||||||
|
This will calculate the milliseconds (lag) between servers
|
||||||
|
|
||||||
|
Syntax: /RPING <servermask>
|
||||||
|
|
||||||
|
4) *** UnrealIRCd Usermodes ***
|
||||||
|
o = Global IRCop
|
||||||
|
O = Local IRCop
|
||||||
|
i = Invisible (Not shown in /who searches)
|
||||||
|
w = Can listen to wallop messages
|
||||||
|
g = Can read & send to globops, and locops
|
||||||
|
h = Available for help
|
||||||
|
s = Can listen to server notices
|
||||||
|
k = See's all the /KILL's which were executed
|
||||||
|
S = For services only. (Protects them)
|
||||||
|
a = Is a services admin
|
||||||
|
A = Is a server admin
|
||||||
|
N = Is a network admin
|
||||||
|
T = Is a tech admin
|
||||||
|
C = Is a co admin
|
||||||
|
c = See's all connects/disconnects on local server
|
||||||
|
f = Listen to flood alerts from server
|
||||||
|
r = Identifies the nick as being registered
|
||||||
|
x = Gives the user hidden hostname
|
||||||
|
e = Can listen to server messages sent to +e users
|
||||||
|
b = Can read & send to chatops
|
||||||
|
W = (IRCops only) Lets you see when people does a /whois on you
|
||||||
|
q = (Services Admins only) Gets you unable to be
|
||||||
|
kicked unless by U:Lines
|
||||||
|
B = (users) Marks you being a Bot
|
||||||
|
F = (net|tech admin only) Lets you see far client connect/disconnects
|
||||||
|
I = (net|tech admin only) Invisible Join/Part. Makes you
|
||||||
|
being hidden at channels
|
||||||
|
1 = (IRCops only) Marks you a Coder
|
||||||
|
5) *** UnrealIRCd Channel Modes ***
|
||||||
|
p = Private channel
|
||||||
|
s = Secret channel
|
||||||
|
i = Invite-only allowed
|
||||||
|
m = Moderated channel, noone can speak except users with mode +voh
|
||||||
|
n = No messages from outside channel
|
||||||
|
t = Only channel operators may set the topic
|
||||||
|
r = Channel is registered
|
||||||
|
R = Requires a registered nickname to join the channel
|
||||||
|
x = No ANSI color can be sent to the channel
|
||||||
|
q = Channel owner (The big cheese)
|
||||||
|
Q = No kicks able in channel unless by U:Lines
|
||||||
|
O = IRCop only channel (setable by Opers)
|
||||||
|
A = Server Admin | Network Admin | Tech Admin only channel (same as above)
|
||||||
|
K = /Knock is not allowed
|
||||||
|
I = /Invite is not allowed
|
||||||
|
S = Strip all incoming colours away
|
||||||
|
l <number of max users> = Channel may hold at most <number> of users
|
||||||
|
b <nick!user@host> = Bans the nick!user@host from the channel
|
||||||
|
k <key> = Needs the channel key to join the channel
|
||||||
|
o <nickname> = Gives operator status to the user
|
||||||
|
v <nickname> = Gives voice to the user (May talk if chan is +m)
|
||||||
|
a <nickname> = Gives protection to the user (No kick/drop)
|
||||||
|
e <exception ban> = Exception ban - If someone matches it
|
||||||
|
they can join even if some else ban matches!
|
||||||
|
h <nickname> = Gives halfop status to the user
|
||||||
|
L <chan2> = If channel is full (+l) the next user
|
||||||
|
will autojoin <chan2>
|
||||||
|
You can get additional explanation on modes:
|
||||||
|
Q h
|
||||||
|
With /HELPOP mode-<x> where <x> is Q f.x. like mode-Q
|
||||||
|
|
||||||
|
*** Channel mode +Q ***
|
||||||
|
This is the 'peace' mode. Noone can kick eachother
|
||||||
|
except by U:Lines. Bans can be placed thou.
|
||||||
|
|
||||||
|
*** Channel halfops (+h) ***
|
||||||
|
If you are marked as halfop (% in /names) you can do:
|
||||||
|
- Set topic
|
||||||
|
- Kick non-ops
|
||||||
|
- Set modes +vmntibe
|
||||||
|
|
||||||
|
6) *** UnrealIRCd O:Line flags ***
|
||||||
|
r = Access to /rehash server
|
||||||
|
R = Access to /restart server
|
||||||
|
D = Access to /die server
|
||||||
|
h = Oper can send /help ops - gets +h on oper up
|
||||||
|
g = Oper can send /globops
|
||||||
|
w = Oper can send /wallops
|
||||||
|
l = Oper can send /locops
|
||||||
|
c = Access to do local /squits and /connects
|
||||||
|
Y = Access to do remote /squits and /connects
|
||||||
|
k = Access to do local /kills
|
||||||
|
K = Access to do global /kills
|
||||||
|
b = Oper can /kline users from server
|
||||||
|
B = Oper can /unkline users from server
|
||||||
|
n = Oper can send local server notices(/notice $servername message)
|
||||||
|
N = Oper can send global notices(/notice $*.network.net message)
|
||||||
|
u = Oper can set /umode +c
|
||||||
|
f = Oper can set /umode +f
|
||||||
|
o = Local oper, flags included: rhgwlckbBnuf
|
||||||
|
O = Global oper, flags included: oRDCKN
|
||||||
|
A = Gets +A on oper up. Is server admin
|
||||||
|
a = Gets +a on oper up. Is services admin
|
||||||
|
N = Gets +N on oper up. Is network admin
|
||||||
|
T = Gets +T on oper up. Is tech admin
|
||||||
|
C = Gets +C on oper up. Is co admin
|
||||||
|
z = Can add /zlines
|
||||||
|
H = Gets +x on oper up.
|
||||||
|
W = Gets +W on oper up.
|
||||||
|
^ = Allows to use umode +I
|
||||||
|
|
||||||
|
7) Last word
|
||||||
|
|
||||||
|
This documentation is based off src/help.c in Unreal2.1.7
|
||||||
|
For version Unreal2.1.7 - $Date$
|
||||||
|
Made by Carsten Munk 1999 (Stskeeps)
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
[ $Id$ ]
|
||||||
|
Dynamic Configuration Guide
|
||||||
|
|
||||||
|
Okay first you have to go edit the file "unrealircd.conf" in
|
||||||
|
the directory "networks/". In that file you see a field with
|
||||||
|
name "Include" .. if you want to create your own network file
|
||||||
|
(IRC network specification) you have to write like
|
||||||
|
"networks/<irc network>.network" like "networks/myircnetwork.network"
|
||||||
|
|
||||||
|
If there is already a network file you can just put in the path
|
||||||
|
like : "networks/dragonwings.org"
|
||||||
|
|
||||||
|
If you want to create your own network file
|
||||||
|
copy the file "template.network" to the name you want to use for
|
||||||
|
your network file and edit it.
|
||||||
|
|
||||||
|
If you experince any problems email me at stskeeps@tspre.org
|
||||||
|
or try msg me at /server irc.global-irc.net : #UnrealIRCd
|
||||||
|
My nick is mostly Stskeeps or Techie (or Nightwalker if i had a bad night:P)
|
||||||
|
|
||||||
|
--Stskeeps
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
...
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
all: client server
|
||||||
|
|
||||||
|
client:
|
||||||
|
gcc -o tsp-client tsp-client.c sscript.c
|
||||||
|
|
||||||
|
server:
|
||||||
|
gcc -o tsp-server-run tsp-server-run.c
|
||||||
|
gcc -o tsp-skin socker.c
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~
|
||||||
|
rm -f tsp-server-run tsp-client tsp-skin
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
how to use tsp-client:
|
||||||
|
|
||||||
|
first make it "make"
|
||||||
|
|
||||||
|
then run it like this:
|
||||||
|
$ ./tsp-client <tsp server> <port>
|
||||||
|
|
||||||
|
do this a couple of times
|
||||||
|
if the answers come within 1 second count its right
|
||||||
|
then take the most common time difference count and do in UnrealIRCd like
|
||||||
|
this:
|
||||||
|
|
||||||
|
/quote tsctl offset + <difference count>
|
||||||
|
|
||||||
|
then your server is time synched
|
||||||
|
|
||||||
|
current tsp servers online:
|
||||||
|
|
||||||
|
server port
|
||||||
|
-----------------------------
|
||||||
|
irc.flirt.org 6100
|
||||||
|
|
||||||
|
|
||||||
|
if you want to make your own TSP server (must be a box using NTP)
|
||||||
|
run ./tsp-server, it will then start running on port 6100
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
|
||||||
|
Socket Script C library
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Home page:
|
||||||
|
http://www.linsupport.com
|
||||||
|
|
||||||
|
This is a simple library that provides usefull functions for C
|
||||||
|
networking applications. It's based on the Socket Script scripting
|
||||||
|
language, but meant for C programmers. These functions are really
|
||||||
|
shortcuts to C functions, meant to make their use simple.
|
||||||
|
|
||||||
|
This can create a static lib: libsscript.a
|
||||||
|
|
||||||
|
To compile:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
Then to install it:
|
||||||
|
|
||||||
|
make install
|
||||||
|
|
||||||
|
|
||||||
|
(C) Copyright 1998-2000 Patrick Lambert <drow@post.com>
|
||||||
|
|
||||||
|
This library is under the LGPL license which means:
|
||||||
|
|
||||||
|
1- You can copy and use this program freely.
|
||||||
|
|
||||||
|
2- You may not claim that you wrote it.
|
||||||
|
|
||||||
|
3- If you want to include parts of this software in your own product,
|
||||||
|
you can do so if that product stays under free software and if all
|
||||||
|
copyright notices in source and documentation, as well as the no warranty
|
||||||
|
comment, remains.
|
||||||
|
|
||||||
|
4- This program is distributed without ANY WARRANTY, without even
|
||||||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE.
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
/*
|
||||||
|
SOCKER Socket redirector version 0.1
|
||||||
|
Patrick Doyle Oct 1998
|
||||||
|
Based on tserver by Michael Johnson and Erik Troan
|
||||||
|
|
||||||
|
Puts a normal stdin & stdout based program up on a port
|
||||||
|
as a server process. Each connection spawns a new copy
|
||||||
|
of the program.
|
||||||
|
|
||||||
|
Please notify me of any changes to this code tha you
|
||||||
|
subsequently redistribute. I can be contacted at
|
||||||
|
patrick@minotaursoftware.com.
|
||||||
|
|
||||||
|
Also, please leave my name and those of Michael Johnson
|
||||||
|
and Erik Troan at the top of this file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
|
||||||
|
#define ZOMBIE /* Causes zombies to be collected. Only works under Linux. */
|
||||||
|
|
||||||
|
#define debug printf
|
||||||
|
#undef debug
|
||||||
|
void debug(char *format, ...){}
|
||||||
|
|
||||||
|
int sock = -1;
|
||||||
|
|
||||||
|
void die(char *msg){
|
||||||
|
perror(msg);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void handle_sig(int signum){
|
||||||
|
if(signum == SIGCHLD){
|
||||||
|
/* Collect exit statuses. Prevent zombies. */
|
||||||
|
int status;
|
||||||
|
while(0 < waitpid(-1, &status, WNOHANG));
|
||||||
|
}else{
|
||||||
|
fprintf(stderr, "\nSocker exiting normally.\n");
|
||||||
|
close(sock);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define asizeof(x) (sizeof(x)/sizeof(x[0]))
|
||||||
|
|
||||||
|
void setup_sig_handler(){
|
||||||
|
int sa_num;
|
||||||
|
static int sigs[] = {
|
||||||
|
SIGHUP, SIGINT, SIGQUIT, SIGXCPU, SIGXFSZ, SIGTERM
|
||||||
|
# ifdef ZOMBIE
|
||||||
|
, SIGCHLD
|
||||||
|
# endif
|
||||||
|
};
|
||||||
|
static struct sigaction sig_actions[asizeof(sigs)];
|
||||||
|
debug("Starting setup_sig_handler\n");
|
||||||
|
memset(sig_actions, 0, sizeof(sig_actions));
|
||||||
|
sig_actions[0].sa_handler = handle_sig;
|
||||||
|
sigemptyset(&(sig_actions[0].sa_mask));
|
||||||
|
for(sa_num=1; sa_num < asizeof(sigs); sa_num++){
|
||||||
|
memcpy(sig_actions+sa_num, sig_actions, sizeof(sig_actions[0]));
|
||||||
|
}
|
||||||
|
for(sa_num=0; sa_num < asizeof(sigs); sa_num++){
|
||||||
|
if(sigaction(sigs[sa_num], sig_actions+sa_num, NULL))
|
||||||
|
die("sigaction");
|
||||||
|
}
|
||||||
|
# ifdef ZOMBIE
|
||||||
|
siginterrupt(SIGCHLD, 0); /* Don't let SIGCHLD interrupt socket calls */
|
||||||
|
# endif
|
||||||
|
debug("Ending setup_sig_handler\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
struct sockaddr_in address;
|
||||||
|
int conn, i, portnum;
|
||||||
|
size_t addrLength = sizeof(struct sockaddr_in);
|
||||||
|
|
||||||
|
fprintf(stderr, "SOCKER Socket Redirector Patrick Doyle Oct 1998\n");
|
||||||
|
|
||||||
|
if (argc < 3 || !(portnum = atoi(argv[1]))){
|
||||||
|
fprintf(stderr, "Usage: socker {port_num} {command}\n");
|
||||||
|
fprintf(stderr, "Waits for TCP connections on the given port, and then\n");
|
||||||
|
fprintf(stderr, "spawns a new process executing {command} for each connection.\n");
|
||||||
|
fprintf(stderr, "Exit status: 0=caught signal and exited; 1=error\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0)
|
||||||
|
die("socket");
|
||||||
|
|
||||||
|
debug("Calling setup_sig_handler\n");
|
||||||
|
setup_sig_handler();
|
||||||
|
|
||||||
|
/* Let the kernel reuse the socket address. This lets us run
|
||||||
|
twice in a row, without waiting for the (ip, port) tuple
|
||||||
|
to time out. */
|
||||||
|
i = 1;
|
||||||
|
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&i, i);
|
||||||
|
|
||||||
|
address.sin_family = AF_INET;
|
||||||
|
address.sin_port = htons(portnum);
|
||||||
|
memset(&address.sin_addr, 0, sizeof(address.sin_addr));
|
||||||
|
|
||||||
|
if (bind(sock, (struct sockaddr *) &address, sizeof(address)))
|
||||||
|
die("bind");
|
||||||
|
|
||||||
|
if (listen(sock, 5))
|
||||||
|
die("listen");
|
||||||
|
|
||||||
|
while ((conn = accept(sock, (struct sockaddr *) &address, &addrLength)) >= 0) {
|
||||||
|
if(fork()){ /* Parent; loop back to accept another */
|
||||||
|
close(conn);
|
||||||
|
}else{ /* Child; exec given command line */
|
||||||
|
close(sock);
|
||||||
|
/* Redirect stdin & stdout to socket */
|
||||||
|
if(0 != dup2(conn, 0) || 1 != dup2(conn, 1))
|
||||||
|
die("dup2 redirection");
|
||||||
|
/* Turn off buffering */
|
||||||
|
/* Note: this seems to have no effect beyond execvp */
|
||||||
|
setbuf(stdin, 0);
|
||||||
|
setbuf(stdout, 0);
|
||||||
|
setbuf(stderr, 0);
|
||||||
|
/* Execute command */
|
||||||
|
execvp(argv[2], argv+2);
|
||||||
|
/* Error if we get here */
|
||||||
|
fprintf(stderr, "execvp failed. Please make sure that '%s' refers to a valid program.\n", argv[2]);
|
||||||
|
_exit(1)/*
|
||||||
|
man fork says _exit should be called to prevent parent from
|
||||||
|
being corrupted.
|
||||||
|
*/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (conn < 0)
|
||||||
|
die("accept");
|
||||||
|
|
||||||
|
/* Shouldn't get here */
|
||||||
|
close(sock);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
Socket Script Library 2.0
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Here are the functions and errno code numbers returned by some of SScript's
|
||||||
|
functions:
|
||||||
|
|
||||||
|
errno:
|
||||||
|
SSCRIPT_SOCKET_FAILED 10
|
||||||
|
SSCRIPT_BIND_FAILED 11
|
||||||
|
SSCRIPT_GETSOCKETNAME_FAILED 12
|
||||||
|
SSCRIPT_FLAGS_FAILED 13
|
||||||
|
SSCRIPT_CONNECT_FAILED 20
|
||||||
|
SSCRIPT_UDPSEND_FAILED 31
|
||||||
|
SSCRIPT_UDPRECEIVE_FAILED 32
|
||||||
|
SSCRIPT_READ_FAILED 33
|
||||||
|
|
||||||
|
The following are the SScript functions available in this library.
|
||||||
|
They return either a string, an int or void. If an error occurs, it returns
|
||||||
|
NULL (in case of a string) or -1 (in case of an int) and sets errno to
|
||||||
|
the right error code (see above). Note that since each connection is
|
||||||
|
associated with a socket number (sockfd), it is possible to make
|
||||||
|
multiple connections.
|
||||||
|
|
||||||
|
- char *sscript_lindex(char *input_string, int word_number);
|
||||||
|
Get <word_number> from <input_string>. Returns the requested word.
|
||||||
|
|
||||||
|
- char *sscript_lrange(char *input_string, int starting_at);
|
||||||
|
Return everything after <starting_at> in <input_string>.
|
||||||
|
|
||||||
|
- int sscript_connect(char *server, int port, char *virtual);
|
||||||
|
Connect to <server> at port <port>, binding to virtual address
|
||||||
|
<virtual>. If no binding is required, use NULL. Returns the socket
|
||||||
|
number.
|
||||||
|
|
||||||
|
- int sscript_server(int port);
|
||||||
|
Initialize a server socket. Returns the socket number.
|
||||||
|
|
||||||
|
- int sscript_wait_clients(int sockfd, int port, int forking);
|
||||||
|
Listen to port <port> and wait for clients. This function is a
|
||||||
|
blocking function. It will stay there untill it gets a client, and when
|
||||||
|
it does, it will create a child and return its associated socket number.
|
||||||
|
The child will go in the background if <forking> is set to 1
|
||||||
|
(required for multithreading). This returns the child' sockfd.
|
||||||
|
|
||||||
|
- char *sscript_get_remote_ip();
|
||||||
|
This function returns the IP that connected to a server-oriented program.
|
||||||
|
|
||||||
|
- void sscript_disconnect(int sockfd);
|
||||||
|
Diconnects the connection pointed by <sockfd>.
|
||||||
|
|
||||||
|
- void sscript_dump(int sockfd, char *filename);
|
||||||
|
Dumps the content of <filename> to the connection pointed by <sockfd>.
|
||||||
|
|
||||||
|
- void sscript_ping(char *hostname);
|
||||||
|
Sends a TCP ping (echo to port 7) to <hostname>. This is a blocking
|
||||||
|
function and only returns if the ping worked.
|
||||||
|
|
||||||
|
- int sscript_test(char *hostname, int port);
|
||||||
|
This tests if port <port> from <hostname> is open. Returns 0 if it is.
|
||||||
|
|
||||||
|
- char *sscript_version();
|
||||||
|
Returns the current library version.
|
||||||
|
|
||||||
|
- char *sscript_read(int sockfd, int chop);
|
||||||
|
Read from the connection pointed by <sockfd> and clear the last
|
||||||
|
char if <chop> is set to 1.
|
||||||
|
|
||||||
|
- void sscript_write(int sockfd, char *string);
|
||||||
|
Write <string> to the connection pointed by <sockfd>.
|
||||||
|
|
||||||
|
- int sscript_udp_send(char *hostname, int port, char *msg);
|
||||||
|
Send an UDP packet to <hostname> at port <port> containing the message <msg>
|
||||||
|
|
||||||
|
- char *sscript_udp_listen(int port);
|
||||||
|
Listen for UDP packets on port <port>. Available to root only.
|
||||||
|
|
||||||
|
- char *sscript_icmp_detect();
|
||||||
|
Listen for ICMP messages and return the type (see ICMP.types) and the IP
|
||||||
|
that sent one. Available to root only.
|
||||||
|
|
||||||
|
- char *sscript_resolve_host(char *hostname);
|
||||||
|
Resolve <hostname> into an IP.
|
||||||
|
|
||||||
|
- char *sscript_resolve_ip(char *ip);
|
||||||
|
Resolve <ip> into an hostname.
|
||||||
|
|
||||||
|
- char *sscript_get_localhost();
|
||||||
|
Get the local hostname.
|
||||||
|
|
||||||
|
- void sscript_binary_send(int sockfd, char *filename);
|
||||||
|
This function sends a binary file.
|
||||||
|
|
||||||
|
- void sscript_binary_get(int sockfd);
|
||||||
|
This function receives a binary file.
|
||||||
|
|
||||||
|
- char *sscript_login_to_passwd(char *login)
|
||||||
|
This function converts a login name to its crypted password.
|
||||||
|
|
||||||
|
- char *sscript_uid_to_login(long uid)
|
||||||
|
This function finds the login name for the UID provided.
|
||||||
|
|
||||||
|
- int sscript_sokstat(char *option, int sockfd)
|
||||||
|
This will give the settings for the currently open socket sockfd. Option
|
||||||
|
is what you want the setting of and can be sendbuf, recvbuf, error or type.
|
||||||
|
|
||||||
|
- char *sscript_time_read(int sockfd, int time);
|
||||||
|
This function reads from sockfd for time secs, and then returns what it
|
||||||
|
read, or "timeout".
|
||||||
|
|
||||||
|
- void sscript_redir(int sockfd1, int sockfd2);
|
||||||
|
This function will redirect packets from sockfd1 to sockfd2, and the
|
||||||
|
other way around.
|
||||||
|
|
||||||
|
- void sscript_nodelay(int sockfd);
|
||||||
|
Set the socket in non-blocking mode.
|
||||||
@@ -0,0 +1,509 @@
|
|||||||
|
/*
|
||||||
|
* SScript - See the sscript.doc
|
||||||
|
* (C) 1998 Drow <drow@wildstar.net>
|
||||||
|
* http://devplanet.fastethernet.net
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "sscript.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <strings.h>
|
||||||
|
#include <sys/file.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#ifndef FNDELAY
|
||||||
|
#define FNDELAY O_NONBLOCK
|
||||||
|
#endif
|
||||||
|
#ifdef POSIX
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char global_var[9][1024]; /* need to find why gcc outputs warns without this */
|
||||||
|
char remoteIP[30];
|
||||||
|
|
||||||
|
char *sscript_lindex(char *input_string, int word_number)
|
||||||
|
{
|
||||||
|
char *tokens[1024];
|
||||||
|
static char tmpstring[1024];
|
||||||
|
int i;
|
||||||
|
strncpy(tmpstring,input_string,1024);
|
||||||
|
(char *)tokens[i=0] = (char *)strtok(tmpstring, " ");
|
||||||
|
while (((char *)tokens[++i] = (char *)strtok(NULL, " ")));
|
||||||
|
tokens[i] = NULL;
|
||||||
|
return(tokens[word_number]);
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_connect(char *server, int port, char *virtual)
|
||||||
|
{
|
||||||
|
struct sockaddr_in address;
|
||||||
|
struct sockaddr_in la;
|
||||||
|
int len, sockfd;
|
||||||
|
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
if(sockfd<1)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
address.sin_family = AF_INET;
|
||||||
|
address.sin_addr.s_addr = inet_addr(server);
|
||||||
|
address.sin_port = htons(port);
|
||||||
|
len = sizeof(address);
|
||||||
|
if(virtual!=NULL)
|
||||||
|
{
|
||||||
|
la.sin_family = AF_INET;
|
||||||
|
la.sin_addr.s_addr = inet_addr(virtual);
|
||||||
|
la.sin_port = 0;
|
||||||
|
bind(sockfd, (struct sockaddr *)&la, sizeof(la));
|
||||||
|
}
|
||||||
|
if(connect(sockfd, (struct sockaddr *)&address, len)<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_CONNECT_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return sockfd;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_server(int port)
|
||||||
|
{
|
||||||
|
int sockfd2, listen_len;
|
||||||
|
struct sockaddr_in listen_addr;
|
||||||
|
sockfd2 = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
if(sockfd2<1)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
listen_addr.sin_family = AF_INET;
|
||||||
|
listen_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
listen_addr.sin_port = htons(port);
|
||||||
|
listen_len = sizeof(listen_addr);
|
||||||
|
if(bind(sockfd2, (struct sockaddr *)&listen_addr, listen_len))
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_BIND_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return sockfd2;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_wait_clients(int sockfd2, int port, int forking)
|
||||||
|
{
|
||||||
|
int sockfd=(int)NULL,len,from_len,pid;
|
||||||
|
struct sockaddr_in address;
|
||||||
|
struct sockaddr_in from_addr;
|
||||||
|
struct sockaddr_in listen_addr;
|
||||||
|
listen_addr.sin_family = AF_INET;
|
||||||
|
listen_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
listen_addr.sin_port = htons(port);
|
||||||
|
len = sizeof(address);
|
||||||
|
listen(sockfd2, 5);
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
if(forking) if(sockfd!=(int)NULL) close(sockfd);
|
||||||
|
sockfd = accept(sockfd2, (struct sockaddr *)&address, &len);
|
||||||
|
if(forking) if((pid=fork())) break;
|
||||||
|
}
|
||||||
|
from_len=sizeof(from_addr);
|
||||||
|
memset(&from_addr, 0, sizeof(from_addr));
|
||||||
|
if(getpeername(sockfd, (struct sockaddr *)&from_addr,&from_len) < 0)
|
||||||
|
{
|
||||||
|
strcpy(remoteIP,"unknown");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
strcpy(remoteIP,inet_ntoa(from_addr.sin_addr));
|
||||||
|
}
|
||||||
|
return sockfd;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_get_remote_ip()
|
||||||
|
{
|
||||||
|
return remoteIP;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_disconnect(int sockfd)
|
||||||
|
{
|
||||||
|
shutdown(sockfd,2);
|
||||||
|
close(sockfd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_dump(int sockfd, char *filename)
|
||||||
|
{
|
||||||
|
char temp[1024]="";
|
||||||
|
FILE *fpa;
|
||||||
|
fpa=fopen(filename,"r");
|
||||||
|
if(fpa==NULL) return;
|
||||||
|
while(fgets(temp,1024,fpa)!=NULL)
|
||||||
|
write(sockfd, temp, strlen(temp));
|
||||||
|
fclose(fpa);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_ping(char *hostname)
|
||||||
|
{
|
||||||
|
struct sockaddr_in other_addr;
|
||||||
|
int sockfd, result;
|
||||||
|
char temp[255];
|
||||||
|
sockfd=socket(AF_INET, SOCK_STREAM, 0);
|
||||||
|
if(sockfd<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
other_addr.sin_family = AF_INET;
|
||||||
|
other_addr.sin_addr.s_addr = inet_addr(hostname);
|
||||||
|
other_addr.sin_port = htons(7);
|
||||||
|
connect(sockfd, (struct sockaddr*) &other_addr,sizeof(other_addr));
|
||||||
|
result=write(sockfd,"ping\n",strlen("ping\n"));
|
||||||
|
result=read(sockfd,temp,result);
|
||||||
|
close(sockfd);
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_test(char *hostname, int port)
|
||||||
|
{
|
||||||
|
int sockfd;
|
||||||
|
struct sockaddr_in other_addr;
|
||||||
|
if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
other_addr.sin_family = AF_INET;
|
||||||
|
other_addr.sin_addr.s_addr = inet_addr(hostname);
|
||||||
|
other_addr.sin_port = htons(port);
|
||||||
|
if(connect(sockfd, (struct sockaddr*)&other_addr,sizeof(other_addr))==-1)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_CONNECT_FAILED;
|
||||||
|
close(sockfd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
close(sockfd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_version()
|
||||||
|
{
|
||||||
|
return ABOUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_read(int sockfd, int chop)
|
||||||
|
{
|
||||||
|
int i, result;
|
||||||
|
char inchar;
|
||||||
|
char string[1024];
|
||||||
|
bzero(string,1024);
|
||||||
|
strcpy(string,"");
|
||||||
|
for(i=0;(result=read(sockfd,&inchar,1))!='\0';i++)
|
||||||
|
{
|
||||||
|
string[i]=inchar;
|
||||||
|
if(inchar=='\n') break;
|
||||||
|
}
|
||||||
|
if (chop) string[i-1]=' ';
|
||||||
|
strcpy(global_var[0],string);
|
||||||
|
return global_var[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_write(int sockfd, char *string)
|
||||||
|
{
|
||||||
|
write(sockfd, string, strlen(string));
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_compare(char *case1, char *case2)
|
||||||
|
{
|
||||||
|
return (strcmp(case1,case2));
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_lrange(char *input_string, int starting_at)
|
||||||
|
{
|
||||||
|
char *tokens[555];
|
||||||
|
static char tmpstring[512]="";
|
||||||
|
int i;
|
||||||
|
char out_string[512]="";
|
||||||
|
strcpy(out_string,"");
|
||||||
|
if(input_string==NULL) {
|
||||||
|
strcpy(out_string," ");
|
||||||
|
strcat(out_string,NULL);
|
||||||
|
strcpy(global_var[1],out_string);
|
||||||
|
return global_var[1]; }
|
||||||
|
strcpy(tmpstring,input_string);
|
||||||
|
(char *)tokens[i=0] = (char *)strtok(tmpstring, " ");
|
||||||
|
while(((char *)tokens[++i] = (char *)strtok(NULL, " ")));
|
||||||
|
tokens[i] = NULL;
|
||||||
|
i++;
|
||||||
|
if(i<starting_at) return (int)NULL;
|
||||||
|
while(tokens[starting_at] != NULL)
|
||||||
|
{
|
||||||
|
strcat(out_string,tokens[starting_at]);
|
||||||
|
strcat(out_string, " ");
|
||||||
|
starting_at++;
|
||||||
|
}
|
||||||
|
strcpy(global_var[2],out_string);
|
||||||
|
return global_var[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_udp_send(char *hostname, int port, char *msg)
|
||||||
|
{
|
||||||
|
int udpsock;
|
||||||
|
struct sockaddr_in udpaddr;
|
||||||
|
udpsock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
|
if(udpsock<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
udpaddr.sin_family = AF_INET;
|
||||||
|
udpaddr.sin_port = htons(port);
|
||||||
|
udpaddr.sin_addr.s_addr = inet_addr(hostname);
|
||||||
|
if(sendto(udpsock,msg,sizeof(msg),0,(struct sockaddr *)&udpaddr,sizeof(udpaddr))<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_UDPSEND_FAILED;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_udp_listen(int port)
|
||||||
|
{
|
||||||
|
int udpsock,len;
|
||||||
|
struct sockaddr_in udpaddr, from;
|
||||||
|
char msg[255];
|
||||||
|
udpsock = socket(AF_INET, SOCK_DGRAM, 0);
|
||||||
|
if(udpsock<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
udpaddr.sin_family = AF_INET;
|
||||||
|
udpaddr.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
udpaddr.sin_port = htons(port);
|
||||||
|
if(bind(udpsock,(struct sockaddr *)&udpaddr,sizeof(udpaddr))<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_BIND_FAILED;
|
||||||
|
close(udpsock);
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
len = sizeof(from);
|
||||||
|
if(recvfrom(udpsock,msg,sizeof(msg),0,(struct sockaddr *)&from,&len)<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_UDPRECEIVE_FAILED;
|
||||||
|
close(udpsock);
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
close(udpsock);
|
||||||
|
strcpy(global_var[3],msg);
|
||||||
|
return global_var[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_icmp_detect()
|
||||||
|
{
|
||||||
|
int icmpsock,len,result,type;
|
||||||
|
struct sockaddr_in icmpaddr;
|
||||||
|
char readbuf[1024]="";
|
||||||
|
char msg[255];
|
||||||
|
if((icmpsock=socket(AF_INET, SOCK_RAW, IPPROTO_ICMP))<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_SOCKET_FAILED;
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
icmpaddr.sin_family = AF_INET;
|
||||||
|
icmpaddr.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
icmpaddr.sin_port = 0;
|
||||||
|
if(bind(icmpsock,(struct sockaddr *)&icmpaddr,sizeof(icmpaddr))<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_BIND_FAILED;
|
||||||
|
close(icmpsock);
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
len=sizeof(icmpaddr);
|
||||||
|
if(getsockname(icmpsock,(struct sockaddr *)&icmpaddr,&len)<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_GETSOCKETNAME_FAILED;
|
||||||
|
close(icmpsock);
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
if((result=read(icmpsock,readbuf,sizeof(readbuf)))<0)
|
||||||
|
{
|
||||||
|
errno = SSCRIPT_READ_FAILED;
|
||||||
|
close(icmpsock);
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
type=readbuf[20] & 0xff;
|
||||||
|
sprintf(msg,"%d %d.%d.%d.%d ",type,readbuf[12]&0xff,readbuf[13]&0xff,readbuf[14]&0xff,readbuf[15]&0xff);
|
||||||
|
close(icmpsock);
|
||||||
|
strcpy(global_var[4],msg);
|
||||||
|
return global_var[4];
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_resolve_host(char *hostname)
|
||||||
|
{
|
||||||
|
struct hostent *hp;
|
||||||
|
struct sockaddr_in from;
|
||||||
|
char result[255];
|
||||||
|
memset(&from, 0, sizeof(struct sockaddr_in));
|
||||||
|
from.sin_family = AF_INET;
|
||||||
|
hp=gethostbyname(hostname);
|
||||||
|
if(hp==NULL) strcpy(result,"unknown");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
memcpy(&from.sin_addr,hp->h_addr,hp->h_length);
|
||||||
|
strcpy(result,inet_ntoa(from.sin_addr));
|
||||||
|
}
|
||||||
|
strcpy(global_var[5],result);
|
||||||
|
return global_var[5];
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_resolve_ip(char *ip)
|
||||||
|
{
|
||||||
|
struct hostent *hp;
|
||||||
|
struct sockaddr_in from;
|
||||||
|
char result[255];
|
||||||
|
from.sin_family = AF_INET;
|
||||||
|
from.sin_addr.s_addr = inet_addr(ip);
|
||||||
|
hp=gethostbyaddr((char *)&from.sin_addr, sizeof(struct in_addr),from.sin_family);
|
||||||
|
if(hp==NULL) strcpy(result,"unknown");
|
||||||
|
else strcpy(result,(char *)hp->h_name);;
|
||||||
|
strcpy(global_var[6],result);
|
||||||
|
return global_var[6];
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_get_localhost()
|
||||||
|
{
|
||||||
|
char result[255];
|
||||||
|
gethostname(result,sizeof(result));
|
||||||
|
strcpy(global_var[7],result);
|
||||||
|
return global_var[7];
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_binary_send(int sockfd, char *string)
|
||||||
|
{
|
||||||
|
char temp4[255], temp2[255];
|
||||||
|
int cnt;
|
||||||
|
FILE *fpa;
|
||||||
|
sprintf(temp4,"uuencode %s %s > %s/.temp.uue 2>/dev/null",string,string,TMP_DIR);
|
||||||
|
system(temp4);
|
||||||
|
sprintf(temp2,"%s/.temp.uue",TMP_DIR);
|
||||||
|
fpa=fopen(temp2,"r");
|
||||||
|
if(fpa==NULL || fileno(fpa)<0) return;
|
||||||
|
else {
|
||||||
|
while((cnt = read(fileno(fpa), temp4, 250))>0)
|
||||||
|
write(sockfd, temp4, cnt);
|
||||||
|
if(fpa!=NULL) fclose(fpa);
|
||||||
|
sprintf(temp4,"rm -f %s/.temp.uue",TMP_DIR);
|
||||||
|
system(temp4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_binary_get(int sockfd)
|
||||||
|
{
|
||||||
|
char temp2[255], temp4[255], inchar, inall[1024];
|
||||||
|
FILE *fpa;
|
||||||
|
int i;
|
||||||
|
sprintf(temp2,"%s/.temp.uue",TMP_DIR);
|
||||||
|
fpa=fopen(temp2,"w");
|
||||||
|
if(fpa==NULL || fileno(fpa)<0) return;
|
||||||
|
while(strcasecmp(inall,"end\n"))
|
||||||
|
{
|
||||||
|
bzero(inall, 1024);
|
||||||
|
for(i=0;read(sockfd,&inchar,1)!='\0';i++)
|
||||||
|
{
|
||||||
|
inall[i]=inchar;
|
||||||
|
if(inchar=='\n') break;
|
||||||
|
}
|
||||||
|
fputs(inall,fpa);
|
||||||
|
}
|
||||||
|
if(fpa!=NULL) fclose(fpa);
|
||||||
|
sprintf(temp4,"uudecode %s/.temp.uue",TMP_DIR);
|
||||||
|
system(temp4);
|
||||||
|
sprintf(temp4,"rm -f %s/.temp.uue",TMP_DIR);
|
||||||
|
system(temp4);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_login_to_passwd(char *login)
|
||||||
|
{
|
||||||
|
#ifdef POSIX
|
||||||
|
struct passwd *pw;
|
||||||
|
pw = getpwnam(login);
|
||||||
|
if(pw!=NULL) return pw->pw_passwd;
|
||||||
|
#endif
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_uid_to_login(long my_uid)
|
||||||
|
{
|
||||||
|
#ifdef POSIX
|
||||||
|
struct passwd *pw;
|
||||||
|
pw = getpwuid(my_uid);
|
||||||
|
if(pw!=NULL) return pw->pw_name;
|
||||||
|
#endif
|
||||||
|
return (char *)NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sscript_sokstat(char *option, int sockfd)
|
||||||
|
{
|
||||||
|
int optlen=sizeof(int),optval=1;
|
||||||
|
if(!strcasecmp(option,"sendbuf")) getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char *)&optval, &optlen);
|
||||||
|
else if(!strcasecmp(option,"recvbuf")) getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (char *)&optval, &optlen);
|
||||||
|
else if(!strcasecmp(option,"error")) getsockopt(sockfd, SOL_SOCKET, SO_ERROR, (char *)&optval, &optlen);
|
||||||
|
else if(!strcasecmp(option,"type")) getsockopt(sockfd, SOL_SOCKET, SO_TYPE, (char *)&optval, &optlen);
|
||||||
|
else optval=-1;
|
||||||
|
return optval;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *sscript_time_read(int sockfd, int time_sec)
|
||||||
|
{
|
||||||
|
struct timeval timeout;
|
||||||
|
int max_fd;
|
||||||
|
fd_set readfs, newfs;
|
||||||
|
timeout.tv_sec=time_sec;
|
||||||
|
timeout.tv_usec=0;
|
||||||
|
FD_ZERO(&readfs);
|
||||||
|
FD_SET(sockfd, &readfs);
|
||||||
|
max_fd = sockfd;
|
||||||
|
memcpy(&newfs, &readfs, sizeof(readfs));
|
||||||
|
select(max_fd+1, &newfs, NULL, NULL, &timeout);
|
||||||
|
if(FD_ISSET (sockfd, &newfs))
|
||||||
|
{
|
||||||
|
read(sockfd, global_var[8], sizeof(global_var[8]));
|
||||||
|
return(global_var[8]);
|
||||||
|
}
|
||||||
|
return("timeout");
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_redir(int sockfd, int rsck)
|
||||||
|
{
|
||||||
|
char buf[4096];
|
||||||
|
fd_set readfs, newfs;
|
||||||
|
int max_fd, len;
|
||||||
|
FD_ZERO(&readfs);
|
||||||
|
FD_SET(sockfd, &readfs);
|
||||||
|
FD_SET(rsck, &readfs);
|
||||||
|
if(sockfd>rsck) max_fd = sockfd;
|
||||||
|
else max_fd = rsck;
|
||||||
|
while(1) {
|
||||||
|
memcpy(&newfs, &readfs, sizeof(readfs));
|
||||||
|
select(max_fd+1, &newfs, NULL, NULL, NULL);
|
||||||
|
if(FD_ISSET(sockfd, &newfs))
|
||||||
|
{
|
||||||
|
if((len=read(sockfd, buf, sizeof(buf)))<1) break;
|
||||||
|
if(write(rsck, buf, len)!=len) break;
|
||||||
|
}
|
||||||
|
if(FD_ISSET(rsck, &newfs))
|
||||||
|
{
|
||||||
|
if((len=read(rsck, buf, sizeof(buf)))<1) break;
|
||||||
|
if(write(sockfd, buf, len)!=len) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sscript_nodelay(int sockfd)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if(( i = fcntl(sockfd, F_GETFL, 0)) == -1);
|
||||||
|
else if (fcntl(sockfd, F_SETFL, i | FNDELAY) == -1);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#define SSCRIPT_SOCKET_FAILED 10
|
||||||
|
#define SSCRIPT_BIND_FAILED 11
|
||||||
|
#define SSCRIPT_GETSOCKETNAME_FAILED 12
|
||||||
|
#define SSCRIPT_FLAGS_FAILED 13
|
||||||
|
#define SSCRIPT_CONNECT_FAILED 20
|
||||||
|
#define SSCRIPT_UDPSEND_FAILED 31
|
||||||
|
#define SSCRIPT_UDPRECEIVE_FAILED 32
|
||||||
|
#define SSCRIPT_READ_FAILED 33
|
||||||
|
|
||||||
|
#define ABOUT "Socket Script library 2.0 by Patrick Lambert (drow@post.com)"
|
||||||
|
#define POSIX
|
||||||
|
#define TMP_DIR "."
|
||||||
|
|
||||||
|
char *sscript_lindex(char *input_string, int word_number);
|
||||||
|
int sscript_connect(char *server, int port, char *virtual);
|
||||||
|
int sscript_server(int port);
|
||||||
|
int sscript_wait_clients(int sockfd2, int port, int forking);
|
||||||
|
char *sscript_get_remote_ip();
|
||||||
|
void sscript_disconnect(int sockfd);
|
||||||
|
void sscript_dump(int sockfd, char *filename);
|
||||||
|
void sscript_ping(char *hostname);
|
||||||
|
int sscript_test(char *hostname, int port);
|
||||||
|
char *sscript_version();
|
||||||
|
char *sscript_read(int sockfd, int chop);
|
||||||
|
void sscript_write(int sockfd, char *string);
|
||||||
|
int sscript_compare(char *case1, char *case2);
|
||||||
|
char *sscript_lrange(char *input_string, int starting_at);
|
||||||
|
int sscript_udp_send(char *hostname, int port, char *msg);
|
||||||
|
char *sscript_udp_listen(int port);
|
||||||
|
char *sscript_icmp_detect();
|
||||||
|
char *sscript_resolve_host(char *hostname);
|
||||||
|
char *sscript_resolve_ip(char *ip);
|
||||||
|
char *sscript_get_localhost();
|
||||||
|
void sscript_binary_send(int sockfd, char *string);
|
||||||
|
void sscript_binary_get(int sockfd);
|
||||||
|
char *sscript_login_to_passwd(char *login);
|
||||||
|
char *sscript_uid_to_login(long my_uid);
|
||||||
|
int sscript_sokstat(char *option, int sockfd);
|
||||||
|
char *sscript_time_read(int sockfd, int time_sec);
|
||||||
|
void sscript_redir(int sockfd, int rsck);
|
||||||
|
void sscript_nodelay(int sockfd);
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/* compile with: gcc -lsscript -o example example.c */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <time.h>
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
/* initializing variables */
|
||||||
|
char result[255]=".";
|
||||||
|
char *p;
|
||||||
|
int port = atoi(argv[2]);
|
||||||
|
int sockfd=0,i;
|
||||||
|
time_t t,d;
|
||||||
|
/* connect somewhere */
|
||||||
|
printf("Connecting to %s:%i .. \n", argv[1], port);
|
||||||
|
/* call to sscript_connect to connect to the server */
|
||||||
|
sockfd=sscript_connect(sscript_resolve_host(argv[1]),port,NULL);
|
||||||
|
|
||||||
|
/* if it returns -1, then print the error code */
|
||||||
|
if(sockfd<1)
|
||||||
|
{
|
||||||
|
printf("An error occured: %d\n",errno);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* call to sscript_read and copy the result in 'result' */
|
||||||
|
p = (char *)sscript_time_read(sockfd,5);
|
||||||
|
if (p)
|
||||||
|
{
|
||||||
|
strcpy(result,p);
|
||||||
|
t = atol(result);
|
||||||
|
d = t - time(NULL);
|
||||||
|
printf("TS difference from timeserver is %li (%li)\n", d, t);
|
||||||
|
}
|
||||||
|
/* print the result */
|
||||||
|
/* disconnects */
|
||||||
|
sscript_disconnect(sockfd);
|
||||||
|
}
|
||||||
|
|
||||||
Executable
+2
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
./tsp-skin 6100 ./tsp-server-run &
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
main() {
|
||||||
|
printf("%li", time(0));
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, ircd/channel.h
|
||||||
|
* Copyright (C) 1990 Jarkko Oikarinen
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __channel_include__
|
||||||
|
#define __channel_include__
|
||||||
|
#define CREATE 1 /* whether a channel should be
|
||||||
|
created or just tested for existance */
|
||||||
|
|
||||||
|
#define MODEBUFLEN 200
|
||||||
|
|
||||||
|
#define NullChn ((aChannel *)0)
|
||||||
|
|
||||||
|
#define ChannelExists(n) (find_channel(n, NullChn) != NullChn)
|
||||||
|
|
||||||
|
#define IsULine(cptr,sptr) (sptr->flags & FLAGS_ULINE)
|
||||||
|
|
||||||
|
/* NOTE: Timestamps will be added to MODE-commands, so never make
|
||||||
|
* RESYNCMODES and MODEPARAMS higher than MAXPARA-3. DALnet servers
|
||||||
|
* before Dreamforge aren't safe with more than six. -Donwulff
|
||||||
|
*/
|
||||||
|
#include "msg.h"
|
||||||
|
#define MAXMODEPARAMS (MAXPARA-2) /* Maximum modes processed */
|
||||||
|
#define RESYNCMODES 12 /* Max modes per MODE in resync */
|
||||||
|
#define MODEPARAMS 6 /* Max modes from user */
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
// $Id$
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define CIOCLASS "CioClass"
|
||||||
|
|
||||||
|
#ifndef CIO
|
||||||
|
#define CIO
|
||||||
|
|
||||||
|
typedef struct tag_CioLine
|
||||||
|
{
|
||||||
|
BYTE *Data;
|
||||||
|
WORD Len;
|
||||||
|
struct tag_CioLine *Prev, *Next;
|
||||||
|
} CioLine;
|
||||||
|
|
||||||
|
typedef struct tag_CioWndInfo
|
||||||
|
{
|
||||||
|
CioLine *FirstLine, *CurLine;
|
||||||
|
int Lines, Scroll;
|
||||||
|
int Width, Height, XChar, YChar, YJunk, ScrollMe;
|
||||||
|
HFONT hFont;
|
||||||
|
BYTE FR, FG, FB;
|
||||||
|
} CioWndInfo;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
// $Id$
|
||||||
|
#include "Cio.h"
|
||||||
|
|
||||||
|
#define GWL_USER 0
|
||||||
|
#define CIO_ADDSTRING WM_USER
|
||||||
|
#define CIO_CLEAR WM_USER+1
|
||||||
|
|
||||||
|
// Cio_Init.c
|
||||||
|
BOOL Cio_Init(HINSTANCE hInstance);
|
||||||
|
|
||||||
|
// Cio_Main.c
|
||||||
|
LRESULT CALLBACK Cio_WndProc(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
HWND Cio_Create(HINSTANCE hInstance, HWND hParent, DWORD Style, int X, int Y, int W, int H);
|
||||||
|
BOOL Cio_WndCreate(HWND hWnd);
|
||||||
|
BOOL Cio_WndPaint(HWND hWnd);
|
||||||
|
BOOL Cio_WndDestroy(HWND hWnd);
|
||||||
|
BOOL Cio_WndAddString(HWND hWnd, int Len, char *Buffer);
|
||||||
|
BOOL Cio_WndSize(HWND hWnd, LPARAM lParam);
|
||||||
|
void Cio_Scroll(HWND hWnd, CioWndInfo *CWI, int Scroll);
|
||||||
|
BOOL Cio_PrintF(HWND hWnd, char *InBuf, ...);
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/class.h
|
||||||
|
* Copyright (C) 1990 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __class_include__
|
||||||
|
#define __class_include__
|
||||||
|
|
||||||
|
#ifndef PROTO
|
||||||
|
#if __STDC__
|
||||||
|
# define PROTO(x) x
|
||||||
|
#else
|
||||||
|
# define PROTO(x) ()
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct Class {
|
||||||
|
int class;
|
||||||
|
int conFreq;
|
||||||
|
int pingFreq;
|
||||||
|
int maxLinks;
|
||||||
|
long maxSendq;
|
||||||
|
int links;
|
||||||
|
struct Class *next;
|
||||||
|
} aClass;
|
||||||
|
|
||||||
|
#define Class(x) ((x)->class)
|
||||||
|
#define ConFreq(x) ((x)->conFreq)
|
||||||
|
#define PingFreq(x) ((x)->pingFreq)
|
||||||
|
#define MaxLinks(x) ((x)->maxLinks)
|
||||||
|
#define MaxSendq(x) ((x)->maxSendq)
|
||||||
|
#define Links(x) ((x)->links)
|
||||||
|
|
||||||
|
#define ConfLinks(x) (Class(x)->links)
|
||||||
|
#define ConfMaxLinks(x) (Class(x)->maxLinks)
|
||||||
|
#define ConfClass(x) (Class(x)->class)
|
||||||
|
#define ConfConFreq(x) (Class(x)->conFreq)
|
||||||
|
#define ConfPingFreq(x) (Class(x)->pingFreq)
|
||||||
|
#define ConfSendq(x) (Class(x)->maxSendq)
|
||||||
|
|
||||||
|
#define FirstClass() classes
|
||||||
|
#define NextClass(x) ((x)->next)
|
||||||
|
|
||||||
|
extern aClass *classes;
|
||||||
|
|
||||||
|
extern aClass *find_class PROTO((int));
|
||||||
|
extern int get_conf_class PROTO((aConfItem *));
|
||||||
|
extern int get_client_class PROTO((aClient *));
|
||||||
|
extern int get_client_ping PROTO((aClient *));
|
||||||
|
extern int get_con_freq PROTO((aClass *));
|
||||||
|
extern void add_class PROTO((int, int, int, int, long));
|
||||||
|
extern void check_class PROTO((void));
|
||||||
|
extern void initclass PROTO((void));
|
||||||
|
|
||||||
|
#endif /* __class_include__ */
|
||||||
@@ -0,0 +1,216 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/common.h
|
||||||
|
* Copyright (C) 1990 Armin Gruner
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __common_include__
|
||||||
|
#define __common_include__
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <windows.h>
|
||||||
|
#include <winsock.h>
|
||||||
|
#include <process.h>
|
||||||
|
#include <io.h>
|
||||||
|
#include "struct.h"
|
||||||
|
#endif
|
||||||
|
#include "dynconf.h"
|
||||||
|
|
||||||
|
#ifdef PARAMH
|
||||||
|
#include <sys/param.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PROTO
|
||||||
|
#if __STDC__
|
||||||
|
# define PROTO(x) x
|
||||||
|
#else
|
||||||
|
# define PROTO(x) ()
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ID_CVS(x) static char id_cvs[] = x
|
||||||
|
#define ID_Copyright(x) static char id_copyright[] = x
|
||||||
|
#define ID_Notes(x) static char id_notes[] = x
|
||||||
|
|
||||||
|
#define BMAGIC 0x4675636B596F754661736369737473
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TRUE
|
||||||
|
#undef TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FALSE
|
||||||
|
#undef FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define FALSE (0)
|
||||||
|
#define TRUE (!FALSE)
|
||||||
|
|
||||||
|
#ifndef UNSURE
|
||||||
|
#define UNSURE (2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#ifndef MALLOCH
|
||||||
|
char *malloc(), *calloc();
|
||||||
|
void free();
|
||||||
|
#else
|
||||||
|
#include MALLOCH
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
extern int match PROTO((char *, char *));
|
||||||
|
#define mycmp(a,b) \
|
||||||
|
( (toupper((a)[0])!=toupper((b)[0])) || smycmp((a)+1,(b)+1) )
|
||||||
|
extern int smycmp PROTO((char *, char *));
|
||||||
|
#ifndef GLIBC2_x
|
||||||
|
extern int myncmp PROTO((char *, char *, int));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NEED_STRTOK
|
||||||
|
extern char *strtok2 PROTO((char *, char *));
|
||||||
|
#endif
|
||||||
|
#ifdef NEED_STRTOKEN
|
||||||
|
extern char *strtoken PROTO((char **, char *, char *));
|
||||||
|
#endif
|
||||||
|
#ifdef NEED_INET_ADDR
|
||||||
|
extern unsigned long inet_addr PROTO((char *));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(NEED_INET_NTOA) || defined(NEED_INET_NETOF) && !defined(_WIN32)
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#endif
|
||||||
|
#ifdef NEED_INET_NTOA
|
||||||
|
extern char *inet_ntoa PROTO((struct in_addr));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NEED_INET_NETOF
|
||||||
|
extern int inet_netof PROTO((struct in_addr));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int global_count, max_global_count;
|
||||||
|
extern char *myctime PROTO((time_t));
|
||||||
|
extern char *strtoken PROTO((char **, char *, char *));
|
||||||
|
|
||||||
|
#define PRECISE_CHECK
|
||||||
|
|
||||||
|
#ifndef MAX
|
||||||
|
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
||||||
|
#endif
|
||||||
|
#ifndef MIN
|
||||||
|
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DupString(x,y) do{x=MyMalloc(strlen(y)+1);(void)strcpy(x,y);}while(0)
|
||||||
|
|
||||||
|
#ifdef USE_CASETABLES
|
||||||
|
extern int casetable;
|
||||||
|
extern u_char *tolowertab, tolowertab1[], tolowertab2[];
|
||||||
|
extern u_char *touppertab, touppertab1[], touppertab2[];
|
||||||
|
#else
|
||||||
|
extern u_char tolowertab[], touppertab[];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef tolower
|
||||||
|
#define tolower(c) (tolowertab[(c)])
|
||||||
|
|
||||||
|
#undef toupper
|
||||||
|
#define toupper(c) (touppertab[(c)])
|
||||||
|
|
||||||
|
#undef isalpha
|
||||||
|
#undef isdigit
|
||||||
|
#undef isxdigit
|
||||||
|
#undef isalnum
|
||||||
|
#undef isprint
|
||||||
|
#undef isascii
|
||||||
|
#undef isgraph
|
||||||
|
#undef ispunct
|
||||||
|
#undef islower
|
||||||
|
#undef isupper
|
||||||
|
#undef isspace
|
||||||
|
#undef iscntrl
|
||||||
|
|
||||||
|
extern unsigned char char_atribs[];
|
||||||
|
|
||||||
|
#define PRINT 1
|
||||||
|
#define CNTRL 2
|
||||||
|
#define ALPHA 4
|
||||||
|
#define PUNCT 8
|
||||||
|
#define DIGIT 16
|
||||||
|
#define SPACE 32
|
||||||
|
#define ALLOW 64
|
||||||
|
|
||||||
|
#ifndef KLINE_TEMP
|
||||||
|
#define KLINE_PERM 0
|
||||||
|
#define KLINE_TEMP 1
|
||||||
|
#define KLINE_AKILL 2
|
||||||
|
#define KLINE_EXCEPT 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define iscntrl(c) (char_atribs[(u_char)(c)]&CNTRL)
|
||||||
|
#define isallowed(c) (char_atribs[(u_char)(c)]&ALLOW)
|
||||||
|
#define isalpha(c) (char_atribs[(u_char)(c)]&ALPHA)
|
||||||
|
#define isspace(c) (char_atribs[(u_char)(c)]&SPACE)
|
||||||
|
#define islower(c) ((char_atribs[(u_char)(c)]&ALPHA) && ((u_char)(c) > 0x5f))
|
||||||
|
#define isupper(c) ((char_atribs[(u_char)(c)]&ALPHA) && ((u_char)(c) < 0x60))
|
||||||
|
#define isdigit(c) (char_atribs[(u_char)(c)]&DIGIT)
|
||||||
|
#define isxdigit(c) (isdigit(c) || 'a' <= (c) && (c) <= 'f' || \
|
||||||
|
'A' <= (c) && (c) <= 'F')
|
||||||
|
#define isalnum(c) (char_atribs[(u_char)(c)]&(DIGIT|ALPHA))
|
||||||
|
#define isprint(c) (char_atribs[(u_char)(c)]&PRINT)
|
||||||
|
#define isascii(c) ((u_char)(c) >= 0 && (u_char)(c) <= 0x7f)
|
||||||
|
#define isgraph(c) ((char_atribs[(u_char)(c)]&PRINT) && ((u_char)(c) != 0x32))
|
||||||
|
#define ispunct(c) (!(char_atribs[(u_char)(c)]&(CNTRL|ALPHA|DIGIT)))
|
||||||
|
|
||||||
|
extern char *MyMalloc();
|
||||||
|
extern void flush_connections();
|
||||||
|
extern struct SLink *find_user_link(/* struct SLink *, struct Client * */);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Protocol support text. DO NO CHANGE THIS unless you know what
|
||||||
|
* you are doing.
|
||||||
|
*/
|
||||||
|
#define PROTOCTL_CLIENT "TOKEN WATCH=128 SAFELIST HCN PREFIX=@+%"
|
||||||
|
#define PROTOCTL_SERVER "NOQUIT TOKEN NICKv2 SJOIN SJOIN2"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
/*
|
||||||
|
* Used to display a string to the GUI interface.
|
||||||
|
* Windows' internal strerror() function doesn't work with socket errors.
|
||||||
|
*/
|
||||||
|
extern int DisplayString(HWND hWnd, char *InBuf, ...);
|
||||||
|
#undef strerror
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__) || defined(__APPLE__)
|
||||||
|
extern char *malloc_options;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern int lu_noninv, lu_inv, lu_serv, lu_oper,
|
||||||
|
lu_unknown, lu_channel, lu_lu, lu_lulocal, lu_lserv,
|
||||||
|
lu_clu, lu_mlu, lu_cglobalu, lu_mglobalu;
|
||||||
|
|
||||||
|
time_t now;
|
||||||
|
|
||||||
|
#endif /* __common_include__ */
|
||||||
@@ -0,0 +1,762 @@
|
|||||||
|
/*
|
||||||
|
* IRC - Internet Relay Chat, include/config.h
|
||||||
|
* Copyright (C) 1990 Jarkko Oikarinen
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __config_include__
|
||||||
|
#define __config_include__
|
||||||
|
|
||||||
|
#include "setup.h"
|
||||||
|
#include "settings.h"
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* NOTICE
|
||||||
|
*
|
||||||
|
* Under normal conditions, you should not have to edit this file. Run
|
||||||
|
* the Config script in the root directory instead!
|
||||||
|
*
|
||||||
|
* Windows is not a normal condition, edit this file if you use it. :-)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* To windows porters:
|
||||||
|
* You can specify name and url for their diff wircd sites
|
||||||
|
* #undef WIN32_SPECIFY for not having any notice about it in the wIRCd
|
||||||
|
* --Techie
|
||||||
|
*/
|
||||||
|
#undef WIN32_SPECIFY
|
||||||
|
|
||||||
|
#ifdef WIN32_SPECIFY
|
||||||
|
#define WIN32_PORTER ""
|
||||||
|
#define WIN32_URL ""
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define this if you're testing/debugging/programming.
|
||||||
|
*/
|
||||||
|
#undef DEBUG
|
||||||
|
|
||||||
|
/* Type of host. These should be made redundant somehow. -avalon */
|
||||||
|
|
||||||
|
/* BSD Nothing Needed 4.{2,3} BSD, SunOS 3.x, 4.x */
|
||||||
|
/* HPUX Nothing needed (A.08/A.09) */
|
||||||
|
/* ULTRIX Nothing needed (4.2) */
|
||||||
|
/* OSF Nothing needed (1.2) */
|
||||||
|
/* #undef AIX /* IBM ugly so-called Unix, AIX */
|
||||||
|
/* #undef MIPS /* MIPS Unix */
|
||||||
|
/* SGI Nothing needed (IRIX 4.0.4) */
|
||||||
|
/* #undef SVR3 /* SVR3 stuff - being worked on where poss. */
|
||||||
|
/* #undef DYNIXPTX /* Sequents Brain-dead Posix implement. */
|
||||||
|
/* #undef SOL20 /* Solaris2 */
|
||||||
|
/* #undef ESIX /* ESIX */
|
||||||
|
/* #undef NEXT /* NeXTStep */
|
||||||
|
/* #undef SVR4 /* */
|
||||||
|
|
||||||
|
/* Additional flags to give FreeBSD's malloc, only play with this if you
|
||||||
|
* know what you're doing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MALLOC_FLAGS_EXTRA ""
|
||||||
|
/*
|
||||||
|
ConferenceRoom Java Client Hack -Fish
|
||||||
|
if you want it to work #define CONFROOM_JAVA_PORT <port>
|
||||||
|
where port MUST be a seperate port java clients connects on ..
|
||||||
|
*/
|
||||||
|
#undef CONFROOM_JAVA_PORT
|
||||||
|
|
||||||
|
/*
|
||||||
|
REMOVE_ADVERTISING -ice
|
||||||
|
If you send a text to a user like "irc.roxnet.org" it will show up as "irc.******.org"
|
||||||
|
Off by default --stskeeps
|
||||||
|
*/
|
||||||
|
#undef REMOVE_ADVERTISING
|
||||||
|
|
||||||
|
/*
|
||||||
|
UnrealIRCd WebTV support
|
||||||
|
*/
|
||||||
|
#undef WEBTV
|
||||||
|
|
||||||
|
#ifdef WEBTV
|
||||||
|
/* enable /msg irc user */
|
||||||
|
#define WEBTV_IRCUSER
|
||||||
|
/* NOTICE's dont exist (except from server) */
|
||||||
|
#define WEBTV_NONOTICE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
dog3/comstud ircd fdlists
|
||||||
|
undef this to make them work
|
||||||
|
*/
|
||||||
|
|
||||||
|
#undef NO_FDLIST
|
||||||
|
/*
|
||||||
|
OPER_NO_HIDING
|
||||||
|
This makes +I an unexisting mode
|
||||||
|
On by default --stskeeps
|
||||||
|
*/
|
||||||
|
#undef OPER_NO_HIDING
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Admin's chat...
|
||||||
|
*/
|
||||||
|
#define ADMINCHAT 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
Remote rehash
|
||||||
|
*/
|
||||||
|
#define REMOTE_REHASH
|
||||||
|
|
||||||
|
/*
|
||||||
|
* No spoof code
|
||||||
|
*
|
||||||
|
* This enables the spoof protection.
|
||||||
|
*/
|
||||||
|
/* #define NOSPOOF 1 /* */
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* This controls the "nospoof" system. These numbers are "seeds" of the
|
||||||
|
* "random" number generating formula. Choose any number you like in the
|
||||||
|
* range of 0x00000000 to 0xFFFFFFFF. Don't tell anyone these numbers, and
|
||||||
|
* don't use the default ones. Change both #define NOSPOOF... lines below.
|
||||||
|
*
|
||||||
|
* Other data is mixed in as well, but these guarantee a per-server secret.
|
||||||
|
* Also, these values need not remain constant over compilations... Change
|
||||||
|
* them as often as you like.
|
||||||
|
*/
|
||||||
|
#ifdef NOSPOOF
|
||||||
|
|
||||||
|
#ifndef NOSPOOF_SEED01
|
||||||
|
#define NOSPOOF_SEED01 0x12345678
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NOSPOOF_SEED02
|
||||||
|
#define NOSPOOF_SEED02 0x87654321
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* NOSPOOF */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HOSTILENAME - Define this if you want the hostile username patch included,
|
||||||
|
* it will strip characters that are not 0-9,a-z,A-Z,_,- or .
|
||||||
|
*/
|
||||||
|
#define HOSTILENAME /* */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define this to prevent mixed case userids that clonebots use. However
|
||||||
|
* this affects the servers running telclients WLD* FIN* etc.
|
||||||
|
*/
|
||||||
|
#undef DISALLOW_MIXED_CASE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define this if you wish to ignore the case of the first character of
|
||||||
|
* the user id when disallowing mixed case. This allows PC users to
|
||||||
|
* enter the more intuitive first name with the first letter capitalised
|
||||||
|
*/
|
||||||
|
#define IGNORE_CASE_FIRST_CHAR
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Nick flood limit
|
||||||
|
** Minimum time between nick changes.
|
||||||
|
** (The first two changes are allowed quickly after another however).
|
||||||
|
**
|
||||||
|
** Define NICK_DELAY if you want this feature.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NICK_DELAY 15 /* recommended value 15 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define this if you wish to output a *file* to a K lined client rather
|
||||||
|
* than the K line comment (the comment field is treated as a filename)
|
||||||
|
*/
|
||||||
|
#undef COMMENT_IS_FILE
|
||||||
|
|
||||||
|
|
||||||
|
/* Do these work? I dunno... */
|
||||||
|
|
||||||
|
/* #undef VMS /* Should work for IRC client, not server */
|
||||||
|
/* #undef MAIL50 /* If you're running VMS 5.0 */
|
||||||
|
/* #undef PCS /* PCS Cadmus MUNIX, use with BSD flag! */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: On some systems, valloc() causes many problems.
|
||||||
|
*/
|
||||||
|
#undef VALLOC /* Define this if you have valloc(3) */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* read/write are restarted after signals defining this 1, gets
|
||||||
|
* siginterrupt call compiled, which attempts to remove this
|
||||||
|
* behaviour (apollo sr10.1/bsd4.3 needs this)
|
||||||
|
*/
|
||||||
|
#ifdef APOLLO
|
||||||
|
#define RESTARTING_SYSTEMCALLS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If your host supports varargs and has vsprintf(), vprintf() and vscanf()
|
||||||
|
* C calls in its library, then you can define USE_VARARGS to use varargs
|
||||||
|
* instead of imitation variable arg passing.
|
||||||
|
#define USE_VARARGS
|
||||||
|
|
||||||
|
* NOTE: with current server code, varargs doesn't survive because it can't
|
||||||
|
* be used in a chain of 3 or more funtions which all have a variable
|
||||||
|
* number of params. If anyone has a solution to this, please notify
|
||||||
|
* the maintainer.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* #undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* defining FORCE_CORE will automatically "unlimit core", forcing the
|
||||||
|
* server to dump a core file whenever it has a fatal error. -mlv
|
||||||
|
*/
|
||||||
|
#define FORCE_CORE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Full pathnames and defaults of irc system's support files. Please note that
|
||||||
|
* these are only the recommened names and paths. Change as needed.
|
||||||
|
* You must define these to something, even if you don't really want them.
|
||||||
|
*/
|
||||||
|
#define CPATH "ircd.conf" /* server configuration file */
|
||||||
|
#define MPATH "ircd.motd" /* server MOTD file */
|
||||||
|
#define RPATH "ircd.rules" /* server rules file */
|
||||||
|
#define ZPATH "ircd.notes" /* server notes */
|
||||||
|
#define ZCONF "networks/unrealircd.conf" /* ircd configuration .. */
|
||||||
|
#define OPATH "oper.motd" /* Operators MOTD file */
|
||||||
|
#define LPATH "debug.log" /* Where the debug file lives, if DEBUGMODE */
|
||||||
|
#define PPATH "ircd.pid" /* file for server pid */
|
||||||
|
#define lPATH "ircd.log" /* server log file */
|
||||||
|
#define VPATH "ircd.svsmotd" /* Services MOTD append. */
|
||||||
|
#define IRCDTUNE "ircd.tune" /* tuning .. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define this filename to maintain a list of persons who log
|
||||||
|
* into this server. Logging will stop when the file does not exist.
|
||||||
|
* Logging will be disable also if you do not define this.
|
||||||
|
* FNAME_USERLOG just logs user connections, FNAME_OPERLOG logs every
|
||||||
|
* successful use of /oper. These are either full paths or files within DPATH.
|
||||||
|
*/
|
||||||
|
#define FNAME_USERLOG "users.log"
|
||||||
|
#define FNAME_OPERLOG "opers.log"
|
||||||
|
|
||||||
|
/* FAILOPER_WARN
|
||||||
|
*
|
||||||
|
* When defined, warns users on a failed oper attempt that it was/is logged
|
||||||
|
* Only works when FNAME_OPERLOG is defined, and a logfile exists.
|
||||||
|
* NOTE: Failed oper attempts are logged regardless.
|
||||||
|
*/
|
||||||
|
#define FAILOPER_WARN
|
||||||
|
|
||||||
|
/* CHROOTDIR
|
||||||
|
*
|
||||||
|
* Define for value added security if you are a rooter.
|
||||||
|
*
|
||||||
|
* All files you access must be in the directory you define as DPATH.
|
||||||
|
* (This may effect the PATH locations above, though you can symlink it)
|
||||||
|
*
|
||||||
|
* You may want to define IRC_UID and IRC_GID
|
||||||
|
*/
|
||||||
|
/* #define CHROOTDIR /* */
|
||||||
|
|
||||||
|
/* SHOW_INVISIBLE_LUSERS
|
||||||
|
*
|
||||||
|
* As defined this will show the correct invisible count for anyone who does
|
||||||
|
* LUSERS on your server. On a large net this doesnt mean much, but on a
|
||||||
|
* small net it might be an advantage to undefine it.
|
||||||
|
* (This will get defined for you if you're using userload (stats w). -mlv)
|
||||||
|
*/
|
||||||
|
#define SHOW_INVISIBLE_LUSERS
|
||||||
|
|
||||||
|
|
||||||
|
/* OPER_* defines
|
||||||
|
*
|
||||||
|
* See ./docs/example.conf for examples of how to restrict access for
|
||||||
|
* your IRC Operators
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* MAXIMUM LINKS
|
||||||
|
*
|
||||||
|
* This define is useful for leaf nodes and gateways. It keeps you from
|
||||||
|
* connecting to too many places. It works by keeping you from
|
||||||
|
* connecting to more than "n" nodes which you have C:blah::blah:6667
|
||||||
|
* lines for.
|
||||||
|
*
|
||||||
|
* Note that any number of nodes can still connect to you. This only
|
||||||
|
* limits the number that you actively reach out to connect to.
|
||||||
|
*
|
||||||
|
* Leaf nodes are nodes which are on the edge of the tree. If you want
|
||||||
|
* to have a backup link, then sometimes you end up connected to both
|
||||||
|
* your primary and backup, routing traffic between them. To prevent
|
||||||
|
* this, #define MAXIMUM_LINKS 1 and set up both primary and
|
||||||
|
* secondary with C:blah::blah:6667 lines. THEY SHOULD NOT TRY TO
|
||||||
|
* CONNECT TO YOU, YOU SHOULD CONNECT TO THEM.
|
||||||
|
*
|
||||||
|
* Gateways such as the server which connects Australia to the US can
|
||||||
|
* do a similar thing. Put the American nodes you want to connect to
|
||||||
|
* in with C:blah::blah:6667 lines, and the Australian nodes with
|
||||||
|
* C:blah::blah lines. Have the Americans put you in with C:blah::blah
|
||||||
|
* lines. Then you will only connect to one of the Americans.
|
||||||
|
*
|
||||||
|
* This value is only used if you don't have server classes defined, and
|
||||||
|
* a server is in class 0 (the default class if none is set).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MAXIMUM_LINKS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: defining CMDLINE_CONFIG and installing ircd SUID or SGID is a MAJOR
|
||||||
|
* security problem - they can use the "-f" option to read any files
|
||||||
|
* that the 'new' access lets them. Note also that defining this is
|
||||||
|
* a major security hole if your ircd goes down and some other user
|
||||||
|
* starts up the server with a new conf file that has some extra
|
||||||
|
* O-lines. So don't use this unless you're debugging.
|
||||||
|
*/
|
||||||
|
#define CMDLINE_CONFIG /* allow conf-file to be specified on command line */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To use m4 as a preprocessor on the ircd.conf file, define M4_PREPROC.
|
||||||
|
* The server will then call m4 each time it reads the ircd.conf file,
|
||||||
|
* reading m4 output as the server's ircd.conf file.
|
||||||
|
*/
|
||||||
|
#undef M4_PREPROC
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you wish to have the server send 'vital' messages about server
|
||||||
|
* through syslog, define USE_SYSLOG. Only system errors and events critical
|
||||||
|
* to the server are logged although if this is defined with FNAME_USERLOG,
|
||||||
|
* syslog() is used instead of the above file. It is not recommended that
|
||||||
|
* this option is used unless you tell the system administrator beforehand
|
||||||
|
* and obtain their permission to send messages to the system log files.
|
||||||
|
*/
|
||||||
|
#ifndef _WIN32
|
||||||
|
#undef USE_SYSLOG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SYSLOG
|
||||||
|
/*
|
||||||
|
* If you use syslog above, you may want to turn some (none) of the
|
||||||
|
* spurious log messages for KILL/SQUIT off.
|
||||||
|
*/
|
||||||
|
#undef SYSLOG_KILL /* log all operator kills to syslog */
|
||||||
|
#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */
|
||||||
|
#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */
|
||||||
|
#undef SYSLOG_USERS /* send userlog stuff to syslog */
|
||||||
|
#undef SYSLOG_OPER /* log all users who successfully become an Op */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you want to log to a different facility than DAEMON, change
|
||||||
|
* this define.
|
||||||
|
*/
|
||||||
|
#define LOG_FACILITY LOG_DAEMON
|
||||||
|
#endif /* USE_SYSLOG */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IDLE_FROM_MSG
|
||||||
|
*
|
||||||
|
* Idle-time nullified only from privmsg, if undefined idle-time
|
||||||
|
* is nullified from everything except ping/pong.
|
||||||
|
* Added 3.8.1992, kny@cs.hut.fi (nam)
|
||||||
|
*/
|
||||||
|
#define IDLE_FROM_MSG
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Size of the LISTEN request. Some machines handle this large
|
||||||
|
* without problem, but not all. It defaults to 5, but can be
|
||||||
|
* raised if you know your machine handles it.
|
||||||
|
*/
|
||||||
|
#ifndef LISTEN_SIZE
|
||||||
|
#define LISTEN_SIZE 5
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Max amount of internal send buffering when socket is stuck (bytes)
|
||||||
|
*/
|
||||||
|
#ifndef MAXSENDQLENGTH
|
||||||
|
#define MAXSENDQLENGTH 3000000
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
* BUFFERPOOL is the maximum size of the total of all sendq's.
|
||||||
|
* Recommended value is 2 * MAXSENDQLENGTH, for hubs, 5 *.
|
||||||
|
*/
|
||||||
|
#ifndef BUFFERPOOL
|
||||||
|
#define BUFFERPOOL (9 * MAXSENDQLENGTH)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IRC_UID
|
||||||
|
*
|
||||||
|
* If you start the server as root but wish to have it run as another user,
|
||||||
|
* define IRC_UID to that UID. This should only be defined if you are running
|
||||||
|
* as root and even then perhaps not.
|
||||||
|
*/
|
||||||
|
/* #undef IRC_UID /* */
|
||||||
|
/* #undef IRC_GID /* */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CLIENT_FLOOD
|
||||||
|
*
|
||||||
|
* this controls the number of bytes the server will allow a client to
|
||||||
|
* send to the server without processing before disconnecting the client for
|
||||||
|
* flooding it. Values greater than 8000 make no difference to the server.
|
||||||
|
*/
|
||||||
|
#define CLIENT_FLOOD 8000
|
||||||
|
|
||||||
|
/* Define this if you want the server to accomplish ircII standard */
|
||||||
|
/* Sends an extra NOTICE in the beginning of client connection */
|
||||||
|
#undef IRCII_KLUDGE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define your network service names here.
|
||||||
|
*/
|
||||||
|
#define ChanServ "ChanServ"
|
||||||
|
#define MemoServ "MemoServ"
|
||||||
|
#define NickServ "NickServ"
|
||||||
|
#define OperServ "OperServ"
|
||||||
|
#define HelpServ "HelpServ"
|
||||||
|
#define StatServ "StatServ"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How many seconds in between simultaneous nick changes?
|
||||||
|
*/
|
||||||
|
#define NICK_CHANGE_DELAY 30
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How many open targets can one nick have for messaging nicks and
|
||||||
|
* inviting them?
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MAXTARGETS 20
|
||||||
|
#define TARGET_DELAY 120
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Would you like all clients to see the progress of their connections?
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define SHOWCONNECTINFO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SOCKS proxy checker
|
||||||
|
*
|
||||||
|
* At the moment this isn't an ideal solution, however it's better
|
||||||
|
* than nothing. Smaller servers shouldn't notice much of a performance
|
||||||
|
* hit, larger servers might have to reduce their Y-lines. In either
|
||||||
|
* case it's advisable to increase the number of FD's you define by
|
||||||
|
* about 10%.
|
||||||
|
*
|
||||||
|
* This determines the port on the local ircd machine that the open
|
||||||
|
* SOCKS server test attempts to connect back to. The default should
|
||||||
|
* be fine except for those unusual situations where the default
|
||||||
|
* port is in use for some reason.
|
||||||
|
*
|
||||||
|
* Undefining this will eliminate the checker from ircd.
|
||||||
|
*/
|
||||||
|
#define SOCKSPORT 6013
|
||||||
|
|
||||||
|
/* Define default Z:line time for SOCKS -taz */
|
||||||
|
#define ZLINE_TIME 300
|
||||||
|
|
||||||
|
/* STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP */
|
||||||
|
|
||||||
|
/* You shouldn't change anything below this line, unless absolutely needed. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Port where ircd resides. NOTE: This *MUST* be greater than 1024 if you
|
||||||
|
* plan to run ircd under any other uid than root.
|
||||||
|
*/
|
||||||
|
#define PORTNUM 6667 /* 6667 is default */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum number of network connections your server will allow. This should
|
||||||
|
* never exceed max. number of open file descrpitors and wont increase this.
|
||||||
|
* Should remain LOW as possible. Most sites will usually have under 30 or so
|
||||||
|
* connections. A busy hub or server may need this to be as high as 50 or 60.
|
||||||
|
* Making it over 100 decreases any performance boost gained from it being low.
|
||||||
|
* if you have a lot of server connections, it may be worth splitting the load
|
||||||
|
* over 2 or more servers.
|
||||||
|
* 1 server = 1 connection, 1 user = 1 connection.
|
||||||
|
* This should be at *least* 3: 1 listen port, 1 dns port + 1 client
|
||||||
|
*
|
||||||
|
* Note: this figure will be too high for most systems. If you get an
|
||||||
|
* fd-related error on compile, change this to 256.
|
||||||
|
*
|
||||||
|
* Windows users: This should be a fairly high number. Some operations
|
||||||
|
* will slow down because of this, but it is _required_ because of the way
|
||||||
|
* windows NT(and possibly 95) allocate fd handles. A good number is 16384.
|
||||||
|
*/
|
||||||
|
#ifndef MAXCONNECTIONS
|
||||||
|
#define MAXCONNECTIONS 1024
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this defines the length of the nickname history. each time a user changes
|
||||||
|
* nickname or signs off, their old nickname is added to the top of the list.
|
||||||
|
* The following sizes are recommended:
|
||||||
|
* 8MB or less core memory : 500 (at least 1/4 of max users)
|
||||||
|
* 8MB-16MB core memory : 500-750 (1/4 -> 1/2 of max users)
|
||||||
|
* 16MB-32MB core memory : 750-1000 (1/2 -> 3/4 of max users)
|
||||||
|
* 32MB or more core memory : 1000+ (> 3/4 if max users)
|
||||||
|
* where max users is the expected maximum number of users.
|
||||||
|
* (100 nicks/users ~ 25k)
|
||||||
|
* NOTE: this is directly related to the amount of memory ircd will use whilst
|
||||||
|
* resident and running - it hardly ever gets swapped to disk! You can
|
||||||
|
* ignore these recommendations- they only are meant to serve as a guide
|
||||||
|
* NOTE: But the *Minimum* ammount should be 100, in order to make nick
|
||||||
|
* chasing possible for mode and kick.
|
||||||
|
*/
|
||||||
|
#ifndef NICKNAMEHISTORYLENGTH
|
||||||
|
#define NICKNAMEHISTORYLENGTH 2000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Time interval to wait and if no messages have been received, then check for
|
||||||
|
* PINGFREQUENCY and CONNECTFREQUENCY
|
||||||
|
*/
|
||||||
|
#define TIMESEC 60 /* Recommended value: 60 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If daemon doesn't receive anything from any of its links within
|
||||||
|
* PINGFREQUENCY seconds, then the server will attempt to check for
|
||||||
|
* an active link with a PING message. If no reply is received within
|
||||||
|
* (PINGFREQUENCY * 2) seconds, then the connection will be closed.
|
||||||
|
*/
|
||||||
|
#define PINGFREQUENCY 120 /* Recommended value: 120 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the connection to to uphost is down, then attempt to reconnect every
|
||||||
|
* CONNECTFREQUENCY seconds.
|
||||||
|
*/
|
||||||
|
#define CONNECTFREQUENCY 600 /* Recommended value: 600 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Often net breaks for a short time and it's useful to try to
|
||||||
|
* establishing the same connection again faster than CONNECTFREQUENCY
|
||||||
|
* would allow. But, to keep trying on bad connection, we require
|
||||||
|
* that connection has been open for certain minimum time
|
||||||
|
* (HANGONGOODLINK) and we give the net few seconds to steady
|
||||||
|
* (HANGONRETRYDELAY). This latter has to be long enough that the
|
||||||
|
* other end of the connection has time to notice it broke too.
|
||||||
|
*/
|
||||||
|
#define HANGONRETRYDELAY 20 /* Recommended value: 20 seconds */
|
||||||
|
#define HANGONGOODLINK 300 /* Recommended value: 5 minutes */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of seconds to wait for write to complete if stuck.
|
||||||
|
*/
|
||||||
|
#define WRITEWAITDELAY 15 /* Recommended value: 15 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Number of seconds to wait for a connect(2) call to complete.
|
||||||
|
* NOTE: this must be at *LEAST* 10. When a client connects, it has
|
||||||
|
* CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup
|
||||||
|
* query and for a DNS answer to be retrieved.
|
||||||
|
*/
|
||||||
|
#define CONNECTTIMEOUT 90 /* Recommended value: 90 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Max time from the nickname change that still causes KILL
|
||||||
|
* automaticly to switch for the current nick of that user. (seconds)
|
||||||
|
*/
|
||||||
|
#define KILLCHASETIMELIMIT 90 /* Recommended value: 90 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Max number of channels a user is allowed to join.
|
||||||
|
*/
|
||||||
|
#define MAXCHANNELSPERUSER 10 /* Recommended value: 10 */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SendQ-Always causes the server to put all outbound data into the sendq and
|
||||||
|
* flushing the sendq at the end of input processing. This should cause more
|
||||||
|
* efficient write's to be made to the network.
|
||||||
|
* There *shouldn't* be any problems with this method.
|
||||||
|
* -avalon
|
||||||
|
*/
|
||||||
|
#define SENDQ_ALWAYS
|
||||||
|
|
||||||
|
/* ------------------------- END CONFIGURATION SECTION -------------------- */
|
||||||
|
#define MOTD MPATH
|
||||||
|
#define RULES RPATH
|
||||||
|
#define SNOTES ZPATH
|
||||||
|
#define MYNAME SPATH
|
||||||
|
#define CONFIGFILE CPATH
|
||||||
|
#define IRCD_PIDFILE PPATH
|
||||||
|
#define GLINE_LOG GPATH
|
||||||
|
|
||||||
|
#ifdef __osf__
|
||||||
|
#define OSF
|
||||||
|
/* OSF defines BSD to be its version of BSD */
|
||||||
|
#undef BSD
|
||||||
|
#include <sys/param.h>
|
||||||
|
#ifndef BSD
|
||||||
|
#define BSD
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _SEQUENT_ /* Dynix 1.4 or 2.0 Generic Define.. */
|
||||||
|
#undef BSD
|
||||||
|
#define SYSV /* Also #define SYSV */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ultrix
|
||||||
|
#define ULTRIX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __hpux
|
||||||
|
#define HPUX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef sgi
|
||||||
|
#define SGI
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef KLINE_TEMP
|
||||||
|
#define KLINE_PERM 0
|
||||||
|
#define KLINE_TEMP 1
|
||||||
|
#define KLINE_AKILL 2
|
||||||
|
#define KLINE_EXCEPT 3
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUGMODE
|
||||||
|
extern void debug();
|
||||||
|
# define Debug(x) debug x
|
||||||
|
# define LOGFILE LPATH
|
||||||
|
#else
|
||||||
|
# define Debug(x) ;
|
||||||
|
# if VMS
|
||||||
|
# define LOGFILE "NLA0:"
|
||||||
|
# else
|
||||||
|
# define LOGFILE "/dev/null"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ENABLE_SUMMON
|
||||||
|
# undef LEAST_IDLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(mips) || defined(PCS)
|
||||||
|
#undef SYSV
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef MIPS
|
||||||
|
#undef BSD
|
||||||
|
#define BSD 1 /* mips only works in bsd43 environment */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef sequent /* Dynix (sequent OS) */
|
||||||
|
#define SEQ_NOFILE 128 /* set to your current kernel impl, */
|
||||||
|
#endif /* max number of socket connections */
|
||||||
|
|
||||||
|
#ifdef _SEQUENT_
|
||||||
|
#define DYNIXPTX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BSD_RELIABLE_SIGNALS
|
||||||
|
# if defined(SYSV_UNRELIABLE_SIGNALS) || defined(POSIX_SIGNALS)
|
||||||
|
error You stuffed up config.h signals #defines use only one.
|
||||||
|
# endif
|
||||||
|
#define HAVE_RELIABLE_SIGNALS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef SYSV_UNRELIABLE_SIGNALS
|
||||||
|
# ifdef POSIX_SIGNALS
|
||||||
|
error You stuffed up config.h signals #defines use only one.
|
||||||
|
# endif
|
||||||
|
#undef HAVE_RELIABLE_SIGNALS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef POSIX_SIGNALS
|
||||||
|
#define HAVE_RELIABLE_SIGNALS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* safety margin so we can always have one spare fd, for motd/authd or
|
||||||
|
* whatever else. -4 allows "safety" margin of 1 and space reserved.
|
||||||
|
*/
|
||||||
|
#define MAXCLIENTS (MAXCONNECTIONS-4)
|
||||||
|
|
||||||
|
#ifdef HAVECURSES
|
||||||
|
# define DOCURSES
|
||||||
|
#else
|
||||||
|
# undef DOCURSES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVETERMCAP
|
||||||
|
# define DOTERMCAP
|
||||||
|
#else
|
||||||
|
# undef DOTERMCAP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
# define stricmp strcasecmp
|
||||||
|
# define strnicmp strncasecmp
|
||||||
|
|
||||||
|
#if defined(CLIENT_FLOOD)
|
||||||
|
# if (CLIENT_FLOOD > 8000)
|
||||||
|
# define CLIENT_FLOOD 8000
|
||||||
|
# else
|
||||||
|
# if (CLIENT_FLOOD < 512)
|
||||||
|
error CLIENT_FLOOD needs redefining.
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
error CLIENT_FLOOD undefined
|
||||||
|
#endif
|
||||||
|
#if (NICKNAMEHISTORYLENGTH < 100)
|
||||||
|
# define NICKNAMEHISTORYLENGTH 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some ugliness for AIX platforms.
|
||||||
|
*/
|
||||||
|
#ifdef AIX
|
||||||
|
# include <sys/machine.h>
|
||||||
|
# if BYTE_ORDER == BIG_ENDIAN
|
||||||
|
# define BIT_ZERO_ON_LEFT
|
||||||
|
# endif
|
||||||
|
# if BYTE_ORDER == LITTLE_ENDIAN
|
||||||
|
# define BIT_ZERO_ON_RIGHT
|
||||||
|
# endif
|
||||||
|
/*
|
||||||
|
* this one is used later in sys/types.h (or so i believe). -avalon
|
||||||
|
*/
|
||||||
|
# define BSD_INCLUDES
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cleaup for WIN32 platform.
|
||||||
|
*/
|
||||||
|
#ifdef _WIN32
|
||||||
|
# undef FORCE_CORE
|
||||||
|
#endif
|
||||||
|
/* use cflag longmodes */
|
||||||
|
#define USE_LONGMODE
|
||||||
|
#define Reg1 register
|
||||||
|
#define Reg2 register
|
||||||
|
#define Reg3 register
|
||||||
|
#define Reg4 register
|
||||||
|
#define Reg5 register
|
||||||
|
#define Reg6 register
|
||||||
|
#define Reg7 register
|
||||||
|
#define Reg8 register
|
||||||
|
#define Reg9 register
|
||||||
|
#define Reg10 register
|
||||||
|
|
||||||
|
#endif /* __config_include__ */
|
||||||
|
|
||||||
|
|
||||||
+165
@@ -0,0 +1,165 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/dbuf.h
|
||||||
|
* Copyright (C) 1990 Markku Savela
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __dbuf_include__
|
||||||
|
#define __dbuf_include__
|
||||||
|
|
||||||
|
#ifndef PROTO
|
||||||
|
#ifdef __STDC__
|
||||||
|
# define PROTO(x) x
|
||||||
|
#else
|
||||||
|
# define PROTO(x) ()
|
||||||
|
#endif /* __STDC__ */
|
||||||
|
#endif /* ! PROTO */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** dbuf is a collection of functions which can be used to
|
||||||
|
** maintain a dynamic buffering of a byte stream.
|
||||||
|
** Functions allocate and release memory dynamically as
|
||||||
|
** required [Actually, there is nothing that prevents
|
||||||
|
** this package maintaining the buffer on disk, either]
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** These structure definitions are only here to be used
|
||||||
|
** as a whole, *DO NOT EVER REFER TO THESE FIELDS INSIDE
|
||||||
|
** THE STRUCTURES*! It must be possible to change the internal
|
||||||
|
** implementation of this package without changing the
|
||||||
|
** interface.
|
||||||
|
*/
|
||||||
|
#if !defined(_SEQUENT_)
|
||||||
|
typedef struct dbuf
|
||||||
|
{
|
||||||
|
u_int length; /* Current number of bytes stored */
|
||||||
|
u_int offset; /* Offset to the first byte */
|
||||||
|
struct dbufbuf *head; /* First data buffer, if length > 0 */
|
||||||
|
/* added by mnystrom@mit.edu: */
|
||||||
|
struct dbufbuf *tail; /* last data buffer, if length > 0 */
|
||||||
|
} dbuf;
|
||||||
|
#else
|
||||||
|
typedef struct dbuf
|
||||||
|
{
|
||||||
|
uint length; /* Current number of bytes stored */
|
||||||
|
uint offset; /* Offset to the first byte */
|
||||||
|
struct dbufbuf *head; /* First data buffer, if length > 0 */
|
||||||
|
/* added by mnystrom@mit.edu: */
|
||||||
|
struct dbufbuf *tail; /* last data buffer, if length > 0 */
|
||||||
|
} dbuf;
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
** And this 'dbufbuf' should never be referenced outside the
|
||||||
|
** implementation of 'dbuf'--would be "hidden" if C had such
|
||||||
|
** keyword...
|
||||||
|
** If it was possible, this would compile to be exactly 1 memory
|
||||||
|
** page in size. 2048 bytes seems to be the most common size, so
|
||||||
|
** as long as a pointer is 4 bytes, we get 2032 bytes for buffer
|
||||||
|
** data after we take away a bit for malloc to play with. -avalon
|
||||||
|
*/
|
||||||
|
typedef struct dbufbuf
|
||||||
|
{
|
||||||
|
struct dbufbuf *next; /* Next data buffer, NULL if this is last */
|
||||||
|
char data[2032]; /* Actual data stored here */
|
||||||
|
} dbufbuf;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** dbuf_put
|
||||||
|
** Append the number of bytes to the buffer, allocating more
|
||||||
|
** memory as needed. Bytes are copied into internal buffers
|
||||||
|
** from users buffer.
|
||||||
|
**
|
||||||
|
** returns > 0, if operation successfull
|
||||||
|
** < 0, if failed (due memory allocation problem)
|
||||||
|
*/
|
||||||
|
int dbuf_put PROTO((dbuf *, char *, int));
|
||||||
|
/* Dynamic buffer header */
|
||||||
|
/* Pointer to data to be stored */
|
||||||
|
/* Number of bytes to store */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** dbuf_get
|
||||||
|
** Remove number of bytes from the buffer, releasing dynamic
|
||||||
|
** memory, if applicaple. Bytes are copied from internal buffers
|
||||||
|
** to users buffer.
|
||||||
|
**
|
||||||
|
** returns the number of bytes actually copied to users buffer,
|
||||||
|
** if >= 0, any value less than the size of the users
|
||||||
|
** buffer indicates the dbuf became empty by this operation.
|
||||||
|
**
|
||||||
|
** Return 0 indicates that buffer was already empty.
|
||||||
|
**
|
||||||
|
** Negative return values indicate some unspecified
|
||||||
|
** error condition, rather fatal...
|
||||||
|
*/
|
||||||
|
int dbuf_get PROTO(( dbuf *, char *, int));
|
||||||
|
/* Dynamic buffer header */
|
||||||
|
/* Pointer to buffer to receive the data */
|
||||||
|
/* Max amount of bytes that can be received */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** dbuf_map, dbuf_delete
|
||||||
|
** These functions are meant to be used in pairs and offer
|
||||||
|
** a more efficient way of emptying the buffer than the
|
||||||
|
** normal 'dbuf_get' would allow--less copying needed.
|
||||||
|
**
|
||||||
|
** map returns a pointer to a largest contiguous section
|
||||||
|
** of bytes in front of the buffer, the length of the
|
||||||
|
** section is placed into the indicated "long int"
|
||||||
|
** variable. Returns NULL *and* zero length, if the
|
||||||
|
** buffer is empty.
|
||||||
|
**
|
||||||
|
** delete removes the specified number of bytes from the
|
||||||
|
** front of the buffer releasing any memory used for them.
|
||||||
|
**
|
||||||
|
** Example use (ignoring empty condition here ;)
|
||||||
|
**
|
||||||
|
** buf = dbuf_map(&dyn, &count);
|
||||||
|
** <process N bytes (N <= count) of data pointed by 'buf'>
|
||||||
|
** dbuf_delete(&dyn, N);
|
||||||
|
**
|
||||||
|
** Note: delete can be used alone, there is no real binding
|
||||||
|
** between map and delete functions...
|
||||||
|
*/
|
||||||
|
char *dbuf_map PROTO((dbuf *, int *));
|
||||||
|
/* Dynamic buffer header */
|
||||||
|
/* Return number of bytes accessible */
|
||||||
|
|
||||||
|
int dbuf_delete PROTO((dbuf *, int));
|
||||||
|
/* Dynamic buffer header */
|
||||||
|
/* Number of bytes to delete */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** DBufLength
|
||||||
|
** Return the current number of bytes stored into the buffer.
|
||||||
|
** (One should use this instead of referencing the internal
|
||||||
|
** length field explicitly...)
|
||||||
|
*/
|
||||||
|
#define DBufLength(dyn) ((dyn)->length)
|
||||||
|
|
||||||
|
/*
|
||||||
|
** DBufClear
|
||||||
|
** Scratch the current content of the buffer. Release all
|
||||||
|
** allocated buffers and make it empty.
|
||||||
|
*/
|
||||||
|
#define DBufClear(dyn) dbuf_delete((dyn),DBufLength(dyn))
|
||||||
|
|
||||||
|
extern int dbuf_getmsg PROTO((dbuf *, char *, int));
|
||||||
|
|
||||||
|
#endif /* __dbuf_include__ */
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/dynconf.h
|
||||||
|
* Copyright (C) 1999 Carsten Munk
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define DYNCONF_H
|
||||||
|
typedef struct zNetwork aNetwork;
|
||||||
|
struct zNetwork {
|
||||||
|
char *x_ircnetwork;
|
||||||
|
char *x_defserv;
|
||||||
|
char *x_services_name;
|
||||||
|
char *x_oper_host;
|
||||||
|
char *x_admin_host;
|
||||||
|
char *x_locop_host;
|
||||||
|
char *x_sadmin_host;
|
||||||
|
char *x_netadmin_host;
|
||||||
|
char *x_coadmin_host;
|
||||||
|
char *x_techadmin_host;
|
||||||
|
char *x_hidden_host;
|
||||||
|
char *x_netdomain;
|
||||||
|
char *x_helpchan;
|
||||||
|
char *x_stats_server;
|
||||||
|
int x_halfhub;
|
||||||
|
int x_inah;
|
||||||
|
char *x_net_quit;
|
||||||
|
int x_se;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct zConfiguration aConfiguration;
|
||||||
|
struct zConfiguration {
|
||||||
|
long nospoof_seed01;
|
||||||
|
long nospoof_seed02;
|
||||||
|
char *kline_address;
|
||||||
|
char *include;
|
||||||
|
char *domainname;
|
||||||
|
char *domainmask; /* '*' + domainname */
|
||||||
|
int som;
|
||||||
|
int mode_x;
|
||||||
|
int mode_i;
|
||||||
|
int truehub;
|
||||||
|
int stop;
|
||||||
|
int showopers;
|
||||||
|
int killdiff;
|
||||||
|
int hide_ulines;
|
||||||
|
int allow_chatops;
|
||||||
|
int socksbantime;
|
||||||
|
char *socksbanmessage;
|
||||||
|
char *socksquitmessage;
|
||||||
|
aNetwork network;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifndef DYNCONF_C
|
||||||
|
extern aConfiguration iConf;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// #define NOSPOOF_SEED01 iConf.nospoof_seed01
|
||||||
|
// #define NOSPOOF_SEED02 iConf.nospoof_seed02
|
||||||
|
#define KLINE_ADDRESS iConf.kline_address
|
||||||
|
#define INCLUDE iConf.include
|
||||||
|
#define DOMAINNAMEMASK "*" DOMAINNAME
|
||||||
|
#define MODE_X iConf.mode_x
|
||||||
|
#define MODE_I iConf.mode_i
|
||||||
|
#define TRUEHUB iConf.truehub
|
||||||
|
#define SHOWOPERS iConf.showopers
|
||||||
|
#define KILLDIFF iConf.killdiff
|
||||||
|
#define SHOWOPERMOTD iConf.som
|
||||||
|
#define HIDE_ULINES iConf.hide_ulines
|
||||||
|
#define ALLOW_CHATOPS iConf.allow_chatops
|
||||||
|
|
||||||
|
#define ircnetwork iConf.network.x_ircnetwork
|
||||||
|
#define defserv iConf.network.x_defserv
|
||||||
|
#define SERVICES_NAME iConf.network.x_services_name
|
||||||
|
#define oper_host iConf.network.x_oper_host
|
||||||
|
#define admin_host iConf.network.x_admin_host
|
||||||
|
#define locop_host iConf.network.x_locop_host
|
||||||
|
#define sadmin_host iConf.network.x_sadmin_host
|
||||||
|
#define netadmin_host iConf.network.x_netadmin_host
|
||||||
|
#define coadmin_host iConf.network.x_coadmin_host
|
||||||
|
#define techadmin_host iConf.network.x_techadmin_host
|
||||||
|
#define hidden_host iConf.network.x_hidden_host
|
||||||
|
#define netdomain iConf.network.x_netdomain
|
||||||
|
#define helpchan iConf.network.x_helpchan
|
||||||
|
#define STATS_SERVER iConf.network.x_stats_server
|
||||||
|
#define iNAH iConf.network.x_inah
|
||||||
|
#define net_quit iConf.network.x_net_quit
|
||||||
|
#define STOPSE iConf.network.x_se
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#ifndef _IRCD_DOG3_FDLIST
|
||||||
|
#define _IRCD_DOG3_FDLIST
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
typedef struct fdstruct {
|
||||||
|
int entry[MAXCONNECTIONS + 2];
|
||||||
|
int last_entry;
|
||||||
|
} fdlist;
|
||||||
|
|
||||||
|
void addto_fdlist(int a, fdlist * b);
|
||||||
|
void delfrom_fdlist(int a, fdlist * b);
|
||||||
|
void init_fdlist(fdlist * b);
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define LOADCFREQ 5
|
||||||
|
#define LOADRECV 35
|
||||||
|
#define FDLISTCHKFREQ 2
|
||||||
|
|
||||||
|
#endif /*
|
||||||
|
* _IRCD_DOG3_FDLIST
|
||||||
|
*/
|
||||||
+340
@@ -0,0 +1,340 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/h.h
|
||||||
|
* Copyright (C) 1992 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "h.h". - Headers file.
|
||||||
|
*
|
||||||
|
* Most of the externs and prototypes thrown in here to 'cleanup' things.
|
||||||
|
* -avalon
|
||||||
|
*/
|
||||||
|
#ifndef NO_FDLIST
|
||||||
|
#include "fdlist.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern time_t nextconnect, nextdnscheck, nextping;
|
||||||
|
extern aClient *client, me, *local[];
|
||||||
|
extern aChannel *channel;
|
||||||
|
extern struct stats *ircstp;
|
||||||
|
extern int bootopt;
|
||||||
|
extern time_t TSoffset;
|
||||||
|
/* Prototype added to force errors -- Barubary */
|
||||||
|
extern time_t check_pings(time_t now, int check_kills);
|
||||||
|
|
||||||
|
/* Remmed out for win32 compatibility.. as stated of 467leaf win32 port.. */
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
// extern void *hCio;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef SHOWCONNECTINFO
|
||||||
|
|
||||||
|
#ifdef SOCKSPORT
|
||||||
|
#define BREPORT_DO_SOCKS "NOTICE AUTH :*** Checking for open socks server...\r\n"
|
||||||
|
#define BREPORT_GOOD_SOCKS "NOTICE AUTH :*** Secure socks found (good!)...\r\n"
|
||||||
|
#define BREPORT_NO_SOCKS "NOTICE AUTH :*** No socks server found (good!)...\r\n"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BREPORT_DO_DNS "NOTICE AUTH :*** Looking up your hostname...\r\n"
|
||||||
|
#define BREPORT_FIN_DNS "NOTICE AUTH :*** Found your hostname\r\n"
|
||||||
|
#define BREPORT_FIN_DNSC "NOTICE AUTH :*** Found your hostname (cached)\r\n"
|
||||||
|
#define BREPORT_FAIL_DNS "NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead\r\n"
|
||||||
|
#define BREPORT_DO_ID "NOTICE AUTH :*** Checking ident...\r\n"
|
||||||
|
#define BREPORT_FIN_ID "NOTICE AUTH :*** Received identd response\r\n"
|
||||||
|
#define BREPORT_FAIL_ID "NOTICE AUTH :*** No ident response; username prefixed with ~\r\n"
|
||||||
|
|
||||||
|
extern char REPORT_DO_DNS[128], REPORT_FIN_DNS[128], REPORT_FIN_DNSC[128],
|
||||||
|
REPORT_FAIL_DNS[128], REPORT_DO_ID[128], REPORT_FIN_ID[128],
|
||||||
|
REPORT_FAIL_ID[128];
|
||||||
|
#ifdef SOCKSPORT
|
||||||
|
extern char REPORT_DO_SOCKS[128], REPORT_GOOD_SOCKS[128],
|
||||||
|
REPORT_NO_SOCKS[128];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern int R_do_dns, R_fin_dns, R_fin_dnsc, R_fail_dns,
|
||||||
|
R_do_id, R_fin_id, R_fail_id;
|
||||||
|
#ifdef SOCKSPORT
|
||||||
|
extern int R_do_socks,
|
||||||
|
R_good_socks, R_no_socks;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
extern aChannel *find_channel PROTO((char *, aChannel *));
|
||||||
|
extern void remove_user_from_channel PROTO((aClient *, aChannel *));
|
||||||
|
/* for services */
|
||||||
|
extern void del_invite PROTO((aClient *, aChannel *));
|
||||||
|
extern int del_silence PROTO((aClient *, char *));
|
||||||
|
extern void send_user_joins PROTO((aClient *, aClient *));
|
||||||
|
extern void clean_channelname PROTO((char *));
|
||||||
|
extern int do_nick_name PROTO((char *));
|
||||||
|
extern int can_send PROTO((aClient *, aChannel *, char *));
|
||||||
|
extern int is_chan_op PROTO((aClient *, aChannel *));
|
||||||
|
extern int is_zombie PROTO((aClient *, aChannel *));
|
||||||
|
extern int has_voice PROTO((aClient *, aChannel *));
|
||||||
|
extern int is_chanowner PROTO((aClient *, aChannel *));
|
||||||
|
extern int count_channels PROTO((aClient *));
|
||||||
|
extern Ban *is_banned PROTO((aClient *, aClient *, aChannel *));
|
||||||
|
extern int parse_help PROTO((aClient *, char *, char *));
|
||||||
|
|
||||||
|
extern void ircd_log PROTO((char *, ...));
|
||||||
|
extern aClient *find_client PROTO((char *, aClient *));
|
||||||
|
extern aClient *find_name PROTO((char *, aClient *));
|
||||||
|
extern aClient *find_nickserv PROTO((char *, aClient *));
|
||||||
|
extern aClient *find_person PROTO((char *, aClient *));
|
||||||
|
extern aClient *find_server PROTO((char *, aClient *));
|
||||||
|
extern aClient *find_service PROTO((char *, aClient *));
|
||||||
|
|
||||||
|
extern int attach_conf PROTO((aClient *, aConfItem *));
|
||||||
|
extern aConfItem *attach_confs PROTO((aClient*, char *, int));
|
||||||
|
extern aConfItem *attach_confs_host PROTO((aClient*, char *, int));
|
||||||
|
extern int attach_Iline PROTO((aClient *, struct hostent *, char *));
|
||||||
|
extern aConfItem *conf, *find_me PROTO(()), *find_admin PROTO(());
|
||||||
|
extern aConfItem *count_cnlines PROTO((Link *));
|
||||||
|
extern aSqlineItem *sqline;
|
||||||
|
extern void det_confs_butmask PROTO((aClient *, int));
|
||||||
|
extern int detach_conf PROTO((aClient *, aConfItem *));
|
||||||
|
extern aSqlineItem *find_sqline_nick PROTO((char *));
|
||||||
|
extern aSqlineItem *find_sqline_match PROTO((char *));
|
||||||
|
extern aConfItem *det_confs_butone PROTO((aClient *, aConfItem *));
|
||||||
|
extern char *find_diepass();
|
||||||
|
extern char *find_restartpass();
|
||||||
|
extern aConfItem *find_conf PROTO((Link *, char*, int));
|
||||||
|
extern aConfItem *find_conf_exact PROTO((char *, char *, char *, int));
|
||||||
|
extern aConfItem *find_conf_host PROTO((Link *, char *, int));
|
||||||
|
extern aConfItem *find_conf_ip PROTO((Link *, char *, char *, int));
|
||||||
|
extern aConfItem *find_conf_name PROTO((char *, int));
|
||||||
|
extern aConfItem *find_temp_conf_entry PROTO((aConfItem *, u_int));
|
||||||
|
extern aConfItem *find_conf_servern PROTO((char *));
|
||||||
|
extern int find_kill PROTO((aClient *));
|
||||||
|
extern char *find_zap PROTO((aClient *, int));
|
||||||
|
extern int find_restrict PROTO((aClient *));
|
||||||
|
extern int rehash PROTO((aClient *, aClient *, int));
|
||||||
|
extern int initconf PROTO((int));
|
||||||
|
extern void add_temp_conf();
|
||||||
|
extern void inittoken PROTO(());
|
||||||
|
extern void reset_help PROTO(());
|
||||||
|
extern int find_exception(char *); /* hidden host */
|
||||||
|
|
||||||
|
extern char *MyMalloc PROTO((int)), *MyRealloc PROTO((char *, int));
|
||||||
|
extern char *debugmode, *configfile, *sbrk0;
|
||||||
|
extern char *getfield PROTO((char *));
|
||||||
|
extern void get_sockhost PROTO((aClient *, char *));
|
||||||
|
extern char *rpl_str PROTO((int)), *err_str PROTO((int));
|
||||||
|
extern char *strerror PROTO((int));
|
||||||
|
extern int dgets PROTO((int, char *, int));
|
||||||
|
extern char *inetntoa PROTO((char *));
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
extern int dbufalloc, dbufblocks, debuglevel;
|
||||||
|
#else
|
||||||
|
extern int dbufalloc, dbufblocks, debuglevel, errno, h_errno;
|
||||||
|
#endif
|
||||||
|
extern int highest_fd, debuglevel, portnum, debugtty, maxusersperchannel;
|
||||||
|
extern int readcalls, udpfd, resfd;
|
||||||
|
extern aClient *add_connection PROTO((aClient *, int));
|
||||||
|
extern int add_listener PROTO((aConfItem *));
|
||||||
|
extern void add_local_domain PROTO((char *, int));
|
||||||
|
extern int check_client PROTO((aClient *));
|
||||||
|
extern int check_server PROTO((aClient *, struct hostent *, \
|
||||||
|
aConfItem *, aConfItem *, int));
|
||||||
|
extern int check_server_init PROTO((aClient *));
|
||||||
|
extern void close_connection PROTO((aClient *));
|
||||||
|
extern void close_listeners PROTO(());
|
||||||
|
extern int connect_server PROTO((aConfItem *, aClient *, struct hostent *));
|
||||||
|
extern void get_my_name PROTO((aClient *, char *, int));
|
||||||
|
extern int get_sockerr PROTO((aClient *));
|
||||||
|
extern int inetport PROTO((aClient *, char *, int));
|
||||||
|
extern void init_sys PROTO(());
|
||||||
|
|
||||||
|
#ifdef NO_FDLIST
|
||||||
|
extern int read_message PROTO((time_t));
|
||||||
|
#else
|
||||||
|
extern int read_message PROTO((time_t, fdlist *));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void report_error PROTO((char *, aClient *));
|
||||||
|
extern void set_non_blocking PROTO((int, aClient *));
|
||||||
|
extern int setup_ping PROTO(());
|
||||||
|
extern void summon PROTO((aClient *, char *, char *, char *));
|
||||||
|
extern int unixport PROTO((aClient *, char *, int));
|
||||||
|
extern int utmp_open PROTO(());
|
||||||
|
extern int utmp_read PROTO((int, char *, char *, char *, int));
|
||||||
|
extern int utmp_close PROTO((int));
|
||||||
|
|
||||||
|
extern void start_auth PROTO((aClient *));
|
||||||
|
extern void read_authports PROTO((aClient *));
|
||||||
|
extern void send_authports PROTO((aClient *));
|
||||||
|
|
||||||
|
#ifdef SOCKSPORT
|
||||||
|
extern void init_socks PROTO((aClient *));
|
||||||
|
extern void start_socks PROTO((aClient *));
|
||||||
|
extern void send_socksquery PROTO((aClient *));
|
||||||
|
extern void read_socks PROTO((aClient *));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern void restart PROTO((char *));
|
||||||
|
extern void send_channel_modes PROTO((aClient *, aChannel *));
|
||||||
|
extern void server_reboot PROTO((char *));
|
||||||
|
extern void terminate PROTO(()), write_pidfile PROTO(());
|
||||||
|
|
||||||
|
extern int send_queued PROTO((aClient *));
|
||||||
|
/*VARARGS2*/
|
||||||
|
// extern void sendto_one(char *, ...);
|
||||||
|
/*VARARGS4*/
|
||||||
|
/* i know this is naughty but :P --stskeeps */
|
||||||
|
extern void sendto_channel_butone(aClient *, aClient *, aChannel *, char *, ...);
|
||||||
|
extern void sendto_channelops_butone(aClient *, aClient *, aChannel *, char *, ...);
|
||||||
|
extern void sendto_channelvoice_butone(aClient *, aClient *, aChannel *, char *, ...);
|
||||||
|
/*VARARGS2*/
|
||||||
|
extern void sendto_serv_butone(aClient *, char *, ...);
|
||||||
|
/*VARARGS2*/
|
||||||
|
extern void sendto_serv_butone_quit(aClient *, char *, ...);
|
||||||
|
extern void sendto_serv_butone_sjoin(aClient *, char *, ...);
|
||||||
|
extern void sendto_serv_sjoin(aClient *, char *, ...);
|
||||||
|
/*VARARGS2*/
|
||||||
|
|
||||||
|
extern void sendto_common_channels(aClient *, char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_channel_butserv(aChannel *, aClient *, char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_match_servs(aChannel *, aClient *, char *, ...);
|
||||||
|
/*VARARGS5*/
|
||||||
|
extern void sendto_match_butone(aClient *, aClient *, char *, int, char *pattern, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_all_butone(aClient *, aClient *, char *, ...);
|
||||||
|
/*VARARGS1*/
|
||||||
|
extern void sendto_ops(char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_ops_butone(aClient *, aClient *, char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_ops_butme(aClient *, char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_prefix_one(aClient *, aClient *, const char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_failops_whoare_opers(char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_failops(char *, ...);
|
||||||
|
/*VARARGS3*/
|
||||||
|
extern void sendto_opers(char *, ...);
|
||||||
|
/*VARARGS?*/
|
||||||
|
extern void sendto_umode(int, char *, ...);
|
||||||
|
extern void sendto_conn_hcn(char *, ...);
|
||||||
|
extern int writecalls, writeb[];
|
||||||
|
extern int deliver_it PROTO((aClient *, char *, int));
|
||||||
|
|
||||||
|
extern int check_registered PROTO((aClient *));
|
||||||
|
extern int check_registered_user PROTO((aClient *));
|
||||||
|
extern char *get_client_name PROTO((aClient *, int));
|
||||||
|
extern char *get_client_host PROTO((aClient *));
|
||||||
|
extern char *my_name_for_link PROTO((char *, aConfItem *));
|
||||||
|
extern char *myctime PROTO((time_t)), *date PROTO((time_t));
|
||||||
|
extern int exit_client PROTO((aClient *, aClient *, aClient *, char *));
|
||||||
|
extern void initstats PROTO(()), tstats PROTO((aClient *, char *));
|
||||||
|
extern char *check_string PROTO((char *));
|
||||||
|
extern char *make_nick_user_host PROTO((char *, char *, char *));
|
||||||
|
|
||||||
|
extern int parse PROTO((aClient *, char *, char *, struct Message *));
|
||||||
|
extern int do_numeric PROTO((int, aClient *, aClient *, int, char **));
|
||||||
|
extern int hunt_server PROTO((aClient *,aClient *,char *,int,int,char **));
|
||||||
|
extern aClient *next_client PROTO((aClient *, char *));
|
||||||
|
extern int m_umode PROTO((aClient *, aClient *, int, char **));
|
||||||
|
extern int m_names PROTO((aClient *, aClient *, int, char **));
|
||||||
|
extern int m_server_estab PROTO((aClient *));
|
||||||
|
extern void send_umode PROTO((aClient *, aClient *, int, int, char *));
|
||||||
|
extern void send_umode_out PROTO((aClient*, aClient *, int));
|
||||||
|
|
||||||
|
extern void free_client PROTO((aClient *));
|
||||||
|
extern void free_link PROTO((Link *));
|
||||||
|
extern void free_ban PROTO((Ban *));
|
||||||
|
extern void free_conf PROTO((aConfItem *));
|
||||||
|
extern void free_class PROTO((aClass *));
|
||||||
|
extern void free_user PROTO((anUser *, aClient *));
|
||||||
|
extern int find_str_match_link PROTO((Link **, char *));
|
||||||
|
extern void free_str_list PROTO ((Link *));
|
||||||
|
extern Link *make_link PROTO(());
|
||||||
|
extern Ban *make_ban PROTO(());
|
||||||
|
extern anUser *make_user PROTO((aClient *));
|
||||||
|
extern aSqlineItem *make_sqline PROTO(());
|
||||||
|
extern aConfItem *make_conf PROTO(());
|
||||||
|
extern aClass *make_class PROTO(());
|
||||||
|
extern aServer *make_server PROTO(());
|
||||||
|
extern aClient *make_client PROTO((aClient *, aClient *));
|
||||||
|
extern Link *find_user_link PROTO((Link *, aClient *));
|
||||||
|
extern Link *find_channel_link PROTO((Link *, aChannel *));
|
||||||
|
extern char *pretty_mask PROTO((char *));
|
||||||
|
extern void add_client_to_list PROTO((aClient *));
|
||||||
|
extern void checklist PROTO(());
|
||||||
|
extern void remove_client_from_list PROTO((aClient *));
|
||||||
|
extern void initlists PROTO(());
|
||||||
|
|
||||||
|
extern void add_class PROTO((int, int, int, int, long));
|
||||||
|
extern void fix_class PROTO((aConfItem *, aConfItem *));
|
||||||
|
extern long get_sendq PROTO((aClient *));
|
||||||
|
extern int get_con_freq PROTO((aClass *));
|
||||||
|
extern int get_client_ping PROTO((aClient *));
|
||||||
|
extern int get_client_class PROTO((aClient *));
|
||||||
|
extern int get_conf_class PROTO((aConfItem *));
|
||||||
|
extern void report_classes PROTO((aClient *));
|
||||||
|
|
||||||
|
extern struct hostent *get_res PROTO((char *));
|
||||||
|
extern struct hostent *gethost_byaddr PROTO((char *, Link *));
|
||||||
|
extern struct hostent *gethost_byname PROTO((char *, Link *));
|
||||||
|
extern void flush_cache PROTO(());
|
||||||
|
extern int init_resolver PROTO((int));
|
||||||
|
extern time_t timeout_query_list PROTO((time_t));
|
||||||
|
extern time_t expire_cache PROTO((time_t));
|
||||||
|
extern void del_queries PROTO((char *));
|
||||||
|
|
||||||
|
extern void clear_channel_hash_table PROTO(());
|
||||||
|
extern void clear_client_hash_table PROTO(());
|
||||||
|
extern void clear_notify_hash_table PROTO(());
|
||||||
|
extern int add_to_client_hash_table PROTO((char *, aClient *));
|
||||||
|
extern int del_from_client_hash_table PROTO((char *, aClient *));
|
||||||
|
extern int add_to_channel_hash_table PROTO((char *, aChannel *));
|
||||||
|
extern int del_from_channel_hash_table PROTO((char *, aChannel *));
|
||||||
|
extern int add_to_notify_hash_table PROTO((char *, aClient *));
|
||||||
|
extern int del_from_notify_hash_table PROTO((char *, aClient *));
|
||||||
|
extern int hash_check_notify PROTO((aClient *, int));
|
||||||
|
extern int hash_del_notify_list PROTO((aClient *));
|
||||||
|
extern void count_watch_memory PROTO((int *, u_long *));
|
||||||
|
extern aNotify *hash_get_notify PROTO((char *));
|
||||||
|
extern aChannel *hash_get_chan_bucket PROTO((int));
|
||||||
|
extern aChannel *hash_find_channel PROTO((char *, aChannel *));
|
||||||
|
extern aClient *hash_find_client PROTO((char *, aClient *));
|
||||||
|
extern aClient *hash_find_nickserver PROTO((char *, aClient *));
|
||||||
|
extern aClient *hash_find_server PROTO((char *, aClient *));
|
||||||
|
|
||||||
|
extern void add_history PROTO((aClient *));
|
||||||
|
extern aClient *get_history PROTO((char *, time_t));
|
||||||
|
extern void initwhowas PROTO(());
|
||||||
|
extern void off_history PROTO((aClient *));
|
||||||
|
|
||||||
|
extern int dopacket PROTO((aClient *, char *, int));
|
||||||
|
|
||||||
|
/*VARARGS2*/
|
||||||
|
extern void debug();
|
||||||
|
#if defined(DEBUGMODE)
|
||||||
|
extern void send_usage PROTO((aClient *, char *));
|
||||||
|
extern void send_listinfo PROTO((aClient *, char *));
|
||||||
|
extern void count_memory PROTO((aClient *, char *));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *crule_parse PROTO((char *));
|
||||||
|
int crule_eval PROTO((char *));
|
||||||
|
void crule_free PROTO((char **));
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/hash.h
|
||||||
|
* Copyright (C) 1991 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __hash_include__
|
||||||
|
#define __hash_include__
|
||||||
|
|
||||||
|
/* Ditch the stats if not running in debugmode */
|
||||||
|
#ifdef DEBUGMODE
|
||||||
|
typedef struct hashentry {
|
||||||
|
int hits;
|
||||||
|
int links;
|
||||||
|
void *list;
|
||||||
|
} aHashEntry;
|
||||||
|
#else /* DEBUGMODE */
|
||||||
|
typedef void *aHashEntry;
|
||||||
|
#endif /* DEBUGMODE */
|
||||||
|
|
||||||
|
#ifndef DEBUGMODE
|
||||||
|
#define HASHSIZE 32003 /* prime number */
|
||||||
|
#define CHANNELHASHSIZE 10007 /* prime number */
|
||||||
|
#else
|
||||||
|
extern int HASHSIZE;
|
||||||
|
extern int CHANNELHASHSIZE;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NOTIFYHASHSIZE 10007 /* prime number */
|
||||||
|
|
||||||
|
#define NullChn ((aChannel *)0)
|
||||||
|
|
||||||
|
#endif /* __hash_include__ */
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1983 Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms are permitted
|
||||||
|
* provided that: (1) source distributions retain this entire copyright
|
||||||
|
* notice and comment, and (2) distributions including binaries display
|
||||||
|
* the following acknowledgement: ``This product includes software
|
||||||
|
* developed by the University of California, Berkeley and its contributors''
|
||||||
|
* in the documentation or other materials provided with the distribution
|
||||||
|
* and in all advertising materials mentioning features or use of this
|
||||||
|
* software. Neither the name of the University nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* @(#)inet.h 5.4 (Berkeley) 6/1/90
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* External definitions for functions in inet(3) */
|
||||||
|
#include "config.h" /* for system definitions */
|
||||||
|
|
||||||
|
#ifdef __alpha
|
||||||
|
#define __u_l unsigned int
|
||||||
|
#else
|
||||||
|
#define __u_l unsigned long
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __STDC__
|
||||||
|
# ifndef _WIN32
|
||||||
|
extern __u_l inet_addr(char *);
|
||||||
|
extern char *inet_ntoa(char *);
|
||||||
|
# endif
|
||||||
|
extern __u_l inet_makeaddr(int , int);
|
||||||
|
extern __u_l inet_network(char *);
|
||||||
|
extern __u_l inet_lnaof(struct in_addr);
|
||||||
|
#else
|
||||||
|
# ifndef _WIN32
|
||||||
|
extern __u_l inet_addr();
|
||||||
|
extern char *inet_ntoa();
|
||||||
|
# endif
|
||||||
|
#ifndef HPUX
|
||||||
|
extern __u_l inet_makeaddr();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifndef HPUX
|
||||||
|
extern __u_l inet_network();
|
||||||
|
extern __u_l inet_lnaof();
|
||||||
|
#endif
|
||||||
|
#undef __u_l
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* IRC - Internet Relay Chat, include/license.h
|
||||||
|
* Copyright (C) 1999 Carsten Munk
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* This file may not be removed from the IRCd package.
|
||||||
|
* It will be a violation of copyright. This program must always
|
||||||
|
* stay free and not be sold, or charged.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU License converted by Techie <stskeeps@tspre.org>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
static char *Statement[] = {
|
||||||
|
" * This file may not be removed from the IRCd package.",
|
||||||
|
" * It will be a violation of copyright. This program must always",
|
||||||
|
" * stay free and not be charged for, being sold commercially or privately",
|
||||||
|
" * Only charge may be for the transport medium like one CD-ROM, floppy",
|
||||||
|
" * or other kinds.",
|
||||||
|
0};
|
||||||
|
|
||||||
|
char *gnulicense[] = {
|
||||||
|
" \2UnrealIRCd License\2",
|
||||||
|
"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.",
|
||||||
|
"",
|
||||||
|
"To see the UnrealIRCd License, please point your browser",
|
||||||
|
"at http://www.gnu.org/copyleft/gpl.html or look in the",
|
||||||
|
"file LICENSE in the UnrealIRCd dist",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
+476
@@ -0,0 +1,476 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/msg.h
|
||||||
|
* Copyright (C) 1990 Jarkko Oikarinen and
|
||||||
|
* University of Oulu, Computing Center
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __msg_include__
|
||||||
|
#define __msg_include__
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The tokens are in the ascii character range of 33-127, and we start
|
||||||
|
* from 33 and just move up. It would be nice to match then up so they
|
||||||
|
* are slightly related to their string counterpart, but that makes it
|
||||||
|
* too confusing when we want to add another one and need to make sure
|
||||||
|
* we're not using one already used. -Cabal95
|
||||||
|
*
|
||||||
|
* As long as the #defines are kept statically placed, it will be fine.
|
||||||
|
* We don't care/worry about the msgtab[] since it can be dynamic, but
|
||||||
|
* the tokens it uses will still be static according to the messages
|
||||||
|
* they represent. In other words leave the #defines in order, if you're
|
||||||
|
* going to add something, PUT IT AT THE END. Do not even look for an
|
||||||
|
* open spot somewhere, as that may lead to one type of message being
|
||||||
|
* sent by server A to server B, but server B thinks its something else.
|
||||||
|
* Remember, skip the : since its got a special use, and I skip the \ too
|
||||||
|
* since it _may_ cause problems, but not sure. -Cabal95
|
||||||
|
* I'm skipping A and a as well, because some clients and scripts use
|
||||||
|
* these to test if the server has already processed whole queue.
|
||||||
|
* Since the client could request this protocol withhout the script
|
||||||
|
* knowing it, I'm considering that reserved, and TRACE/A is now 'b'.
|
||||||
|
* The normal msgtab should probably process this as special. -Donwulff
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 12/05/1999 - I was wrong - I didnt see the token[2] in struct Message
|
||||||
|
okie 60*60 commands more :P - Sowwy!!! -sts
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MSG_PRIVATE "PRIVMSG" /* PRIV */
|
||||||
|
#define TOK_PRIVATE "!" /* 33 */
|
||||||
|
#define MSG_WHO "WHO" /* WHO -> WHOC */
|
||||||
|
#define TOK_WHO "\"" /* 34 */
|
||||||
|
#define MSG_WHOIS "WHOIS" /* WHOI */
|
||||||
|
#define TOK_WHOIS "#" /* 35 */
|
||||||
|
#define MSG_WHOWAS "WHOWAS" /* WHOW */
|
||||||
|
#define TOK_WHOWAS "$" /* 36 */
|
||||||
|
#define MSG_USER "USER" /* USER */
|
||||||
|
#define TOK_USER "%" /* 37 */
|
||||||
|
#define MSG_NICK "NICK" /* NICK */
|
||||||
|
#define TOK_NICK "&" /* 38 */
|
||||||
|
#define MSG_SERVER "SERVER" /* SERV */
|
||||||
|
#define TOK_SERVER "'" /* 39 */
|
||||||
|
#define MSG_LIST "LIST" /* LIST */
|
||||||
|
#define TOK_LIST "(" /* 40 */
|
||||||
|
#define MSG_TOPIC "TOPIC" /* TOPI */
|
||||||
|
#define TOK_TOPIC ")" /* 41 */
|
||||||
|
#define MSG_INVITE "INVITE" /* INVI */
|
||||||
|
#define TOK_INVITE "*" /* 42 */
|
||||||
|
#define MSG_VERSION "VERSION" /* VERS */
|
||||||
|
#define TOK_VERSION "+" /* 43 */
|
||||||
|
#define MSG_QUIT "QUIT" /* QUIT */
|
||||||
|
#define TOK_QUIT "," /* 44 */
|
||||||
|
#define MSG_SQUIT "SQUIT" /* SQUI */
|
||||||
|
#define TOK_SQUIT "-" /* 45 */
|
||||||
|
#define MSG_KILL "KILL" /* KILL */
|
||||||
|
#define TOK_KILL "." /* 46 */
|
||||||
|
#define MSG_INFO "INFO" /* INFO */
|
||||||
|
#define TOK_INFO "/" /* 47 */
|
||||||
|
#define MSG_LINKS "LINKS" /* LINK */
|
||||||
|
#define TOK_LINKS "0" /* 48 */
|
||||||
|
#define MSG_SUMMON "SUMMON" /* SUMM */
|
||||||
|
#define TOK_SUMMON "1" /* 49 */
|
||||||
|
#define MSG_STATS "STATS" /* STAT */
|
||||||
|
#define TOK_STATS "2" /* 50 */
|
||||||
|
#define MSG_USERS "USERS" /* USER -> USRS */
|
||||||
|
#define TOK_USERS "3" /* 51 */
|
||||||
|
#define MSG_HELP "HELP" /* HELP */
|
||||||
|
#define MSG_HELPOP "HELPOP" /* HELP */
|
||||||
|
#define MSG_IRCDHELP "IRCDHELP" /* HELP */
|
||||||
|
#define TOK_HELP "4" /* 52 */
|
||||||
|
#define MSG_ERROR "ERROR" /* ERRO */
|
||||||
|
#define TOK_ERROR "5" /* 53 */
|
||||||
|
#define MSG_AWAY "AWAY" /* AWAY */
|
||||||
|
#define TOK_AWAY "6" /* 54 */
|
||||||
|
#define MSG_CONNECT "CONNECT" /* CONN */
|
||||||
|
#define TOK_CONNECT "7" /* 55 */
|
||||||
|
#define MSG_PING "PING" /* PING */
|
||||||
|
#define TOK_PING "8" /* 56 */
|
||||||
|
#define MSG_PONG "PONG" /* PONG */
|
||||||
|
#define TOK_PONG "9" /* 57 */
|
||||||
|
#define MSG_OPER "OPER" /* OPER */
|
||||||
|
#define TOK_OPER ";" /* 59 */
|
||||||
|
#define MSG_PASS "PASS" /* PASS */
|
||||||
|
#define TOK_PASS "<" /* 60 */
|
||||||
|
#define MSG_WALLOPS "WALLOPS" /* WALL */
|
||||||
|
#define TOK_WALLOPS "=" /* 61 */
|
||||||
|
#define MSG_TIME "TIME" /* TIME */
|
||||||
|
#define TOK_TIME ">" /* 62 */
|
||||||
|
#define MSG_NAMES "NAMES" /* NAME */
|
||||||
|
#define TOK_NAMES "?" /* 63 */
|
||||||
|
#define MSG_ADMIN "ADMIN" /* ADMI */
|
||||||
|
#define TOK_ADMIN "@" /* 64 */
|
||||||
|
#define MSG_NOTICE "NOTICE" /* NOTI */
|
||||||
|
#define TOK_NOTICE "B" /* 66 */
|
||||||
|
#define MSG_JOIN "JOIN" /* JOIN */
|
||||||
|
#define TOK_JOIN "C" /* 67 */
|
||||||
|
#define MSG_PART "PART" /* PART */
|
||||||
|
#define TOK_PART "D" /* 68 */
|
||||||
|
#define MSG_LUSERS "LUSERS" /* LUSE */
|
||||||
|
#define TOK_LUSERS "E" /* 69 */
|
||||||
|
#define MSG_MOTD "MOTD" /* MOTD */
|
||||||
|
#define TOK_MOTD "F" /* 70 */
|
||||||
|
#define MSG_MODE "MODE" /* MODE */
|
||||||
|
#define TOK_MODE "G" /* 71 */
|
||||||
|
#define MSG_KICK "KICK" /* KICK */
|
||||||
|
#define TOK_KICK "H" /* 72 */
|
||||||
|
#define MSG_SERVICE "SERVICE" /* SERV -> SRVI */
|
||||||
|
#define TOK_SERVICE "I" /* 73 */
|
||||||
|
#define MSG_USERHOST "USERHOST" /* USER -> USRH */
|
||||||
|
#define TOK_USERHOST "J" /* 74 */
|
||||||
|
#define MSG_ISON "ISON" /* ISON */
|
||||||
|
#define TOK_ISON "K" /* 75 */
|
||||||
|
#define MSG_REHASH "REHASH" /* REHA */
|
||||||
|
#define TOK_REHASH "O" /* 79 */
|
||||||
|
#define MSG_RESTART "RESTART" /* REST */
|
||||||
|
#define TOK_RESTART "P" /* 80 */
|
||||||
|
#define MSG_CLOSE "CLOSE" /* CLOS */
|
||||||
|
#define TOK_CLOSE "Q" /* 81 */
|
||||||
|
#define MSG_DIE "DIE" /* DIE */
|
||||||
|
#define TOK_DIE "R" /* 82 */
|
||||||
|
#define MSG_HASH "HASH" /* HASH */
|
||||||
|
#define TOK_HASH "S" /* 83 */
|
||||||
|
#define MSG_DNS "DNS" /* DNS -> DNSS */
|
||||||
|
#define TOK_DNS "T" /* 84 */
|
||||||
|
#define MSG_SILENCE "SILENCE" /* SILE */
|
||||||
|
#define TOK_SILENCE "U" /* 85 */
|
||||||
|
#define MSG_AKILL "AKILL" /* AKILL */
|
||||||
|
#define TOK_AKILL "V" /* 86 */
|
||||||
|
#define MSG_KLINE "KLINE" /* KLINE */
|
||||||
|
#define TOK_KLINE "W" /* 87 */
|
||||||
|
#define MSG_UNKLINE "UNKLINE" /* UNKLINE */
|
||||||
|
#define TOK_UNKLINE "X" /* 88 */
|
||||||
|
#define MSG_RAKILL "RAKILL" /* RAKILL */
|
||||||
|
#define TOK_RAKILL "Y" /* 89 */
|
||||||
|
#define MSG_GNOTICE "GNOTICE" /* GNOTICE */
|
||||||
|
#define TOK_GNOTICE "Z" /* 90 */
|
||||||
|
#define MSG_GOPER "GOPER" /* GOPER */
|
||||||
|
#define TOK_GOPER "[" /* 91 */
|
||||||
|
#define MSG_GLOBOPS "GLOBOPS" /* GLOBOPS */
|
||||||
|
#define TOK_GLOBOPS "]" /* 93 */
|
||||||
|
#define MSG_LOCOPS "LOCOPS" /* LOCOPS */
|
||||||
|
#define TOK_LOCOPS "^" /* 94 */
|
||||||
|
#define MSG_PROTOCTL "PROTOCTL" /* PROTOCTL */
|
||||||
|
#define TOK_PROTOCTL "_" /* 95 */
|
||||||
|
#define MSG_WATCH "WATCH" /* WATCH */
|
||||||
|
#define TOK_WATCH "`" /* 96 */
|
||||||
|
#define MSG_TRACE "TRACE" /* TRAC */
|
||||||
|
#define TOK_TRACE "b" /* 97 */
|
||||||
|
#define MSG_SQLINE "SQLINE" /* SQLINE */
|
||||||
|
#define TOK_SQLINE "c" /* 98 */
|
||||||
|
#define MSG_UNSQLINE "UNSQLINE" /* UNSQLINE */
|
||||||
|
#define TOK_UNSQLINE "d" /* 99 */
|
||||||
|
#define MSG_SVSNICK "SVSNICK" /* SVSNICK */
|
||||||
|
#define TOK_SVSNICK "e" /* 100 */
|
||||||
|
#define MSG_SVSNOOP "SVSNOOP" /* SVSNOOP */
|
||||||
|
#define TOK_SVSNOOP "f" /* 101 */
|
||||||
|
#define MSG_IDENTIFY "IDENTIFY" /* IDENTIFY */
|
||||||
|
#define TOK_IDENTIFY "g" /* 102 */
|
||||||
|
#define MSG_SVSKILL "SVSKILL" /* SVSKILL */
|
||||||
|
#define TOK_SVSKILL "h" /* 103 */
|
||||||
|
#define MSG_NICKSERV "NICKSERV" /* NICKSERV */
|
||||||
|
#define MSG_NS "NS"
|
||||||
|
#define TOK_NICKSERV "i" /* 104 */
|
||||||
|
#define MSG_CHANSERV "CHANSERV" /* CHANSERV */
|
||||||
|
#define MSG_CS "CS"
|
||||||
|
#define TOK_CHANSERV "j" /* 105 */
|
||||||
|
#define MSG_OPERSERV "OPERSERV" /* OPERSERV */
|
||||||
|
#define MSG_OS "OS"
|
||||||
|
#define TOK_OPERSERV "k" /* 106 */
|
||||||
|
#define MSG_MEMOSERV "MEMOSERV" /* MEMOSERV */
|
||||||
|
#define MSG_MS "MS"
|
||||||
|
#define TOK_MEMOSERV "l" /* 107 */
|
||||||
|
#define MSG_SERVICES "SERVICES" /* SERVICES */
|
||||||
|
#define TOK_SERVICES "m" /* 108 */
|
||||||
|
#define MSG_SVSMODE "SVSMODE" /* SVSMODE */
|
||||||
|
#define TOK_SVSMODE "n" /* 109 */
|
||||||
|
#define MSG_SAMODE "SAMODE" /* SAMODE */
|
||||||
|
#define TOK_SAMODE "o" /* 110 */
|
||||||
|
#define MSG_CHATOPS "CHATOPS" /* CHATOPS */
|
||||||
|
#define TOK_CHATOPS "p" /* 111 */
|
||||||
|
#define MSG_ZLINE "ZLINE" /* ZLINE */
|
||||||
|
#define TOK_ZLINE "q" /* 112 */
|
||||||
|
#define MSG_UNZLINE "UNZLINE" /* UNZLINE */
|
||||||
|
#define TOK_UNZLINE "r" /* 113 */
|
||||||
|
#define MSG_HELPSERV "HELPSERV" /* HELPSERV */
|
||||||
|
#define MSG_HS "HS"
|
||||||
|
#define TOK_HELPSERV "s" /* 114 */
|
||||||
|
#define MSG_RULES "RULES" /* RULES */
|
||||||
|
#define TOK_RULES "t" /* 115 */
|
||||||
|
#define MSG_MAP "MAP" /* MAP */
|
||||||
|
#define TOK_MAP "u" /* 117 */
|
||||||
|
#define MSG_SVS2MODE "SVS2MODE" /* SVS2MODE */
|
||||||
|
#define TOK_SVS2MODE "v" /* 118 */
|
||||||
|
#define MSG_DALINFO "DALINFO" /* dalinfo */
|
||||||
|
#define TOK_DALINFO "w" /* 119 */
|
||||||
|
#define MSG_ADMINCHAT "ADCHAT" /* Admin chat */
|
||||||
|
#define TOK_ADMINCHAT "x" /* 120 */
|
||||||
|
#define MSG_MKPASSWD "MKPASSWD" /* MKPASSWD */
|
||||||
|
#define TOK_MKPASSWD "y" /* 121 */
|
||||||
|
#define MSG_ADDLINE "ADDLINE" /* ADDLINE */
|
||||||
|
#define TOK_ADDLINE "z" /* 122 */
|
||||||
|
#define MSG_GLINE "GLINE" /* The awesome g-line */
|
||||||
|
#define TOK_GLINE "}" /* 125 */
|
||||||
|
#define MSG_SJOIN "SJOIN"
|
||||||
|
#define TOK_SJOIN "~"
|
||||||
|
#define MSG_SETHOST "SETHOST" /* sethost */
|
||||||
|
#define TOK_SETHOST "AA" /* 127 4ever !;) */
|
||||||
|
#define MSG_TECHAT "TECHAT" /* techadmin chat */
|
||||||
|
#define TOK_TECHAT "AB" /* questionmark? */
|
||||||
|
#define MSG_NACHAT "NACHAT" /* netadmin chat */
|
||||||
|
#define TOK_NACHAT "AC" /* *beep* */
|
||||||
|
#define MSG_SETIDENT "SETIDENT" /* set ident */
|
||||||
|
#define TOK_SETIDENT "AD" /* good old BASIC ;P */
|
||||||
|
#define MSG_SETNAME "SETNAME" /* set GECOS */
|
||||||
|
#define TOK_SETNAME "AE" /* its almost unreeaaall... */
|
||||||
|
#define MSG_LAG "LAG" /* Lag detect */
|
||||||
|
#define TOK_LAG "AF" /* a or ? */
|
||||||
|
#define MSG_SDESC "SDESC" /* set description */
|
||||||
|
#define TOK_SDESC "AG"
|
||||||
|
#define MSG_STATSERV "STATSERV" /* alias */
|
||||||
|
#define TOK_STATSERV "AH"
|
||||||
|
#define MSG_KNOCK "KNOCK"
|
||||||
|
#define TOK_KNOCK "AI"
|
||||||
|
#define MSG_CREDITS "CREDITS"
|
||||||
|
#define TOK_CREDITS "AJ"
|
||||||
|
#define MSG_LICENSE "LICENSE"
|
||||||
|
#define TOK_LICENSE "AK"
|
||||||
|
#define MSG_CHGHOST "CHGHOST"
|
||||||
|
#define TOK_CHGHOST "AL"
|
||||||
|
#define MSG_RPING "RPING"
|
||||||
|
#define TOK_RPING "AM"
|
||||||
|
#define MSG_RPONG "RPONG"
|
||||||
|
#define TOK_RPONG "AN"
|
||||||
|
#define MSG_NETINFO "NETINFO"
|
||||||
|
#define TOK_NETINFO "AO"
|
||||||
|
#define MSG_SENDUMODE "SENDUMODE"
|
||||||
|
#define TOK_SENDUMODE "AP"
|
||||||
|
#define MSG_ADDMOTD "ADDMOTD"
|
||||||
|
#define TOK_ADDMOTD "AQ"
|
||||||
|
#define MSG_ADDOMOTD "ADDOMOTD"
|
||||||
|
#define TOK_ADDOMOTD "AR"
|
||||||
|
#define MSG_SVSMOTD "SVSMOTD"
|
||||||
|
#define TOK_SVSMOTD "AS"
|
||||||
|
#define MSG_DUSERS "DUSERS"
|
||||||
|
#define TOK_DUSERS "AT"
|
||||||
|
#define MSG_SMO "SMO"
|
||||||
|
#define TOK_SMO "AU"
|
||||||
|
#define MSG_OPERMOTD "OPERMOTD"
|
||||||
|
#define TOK_OPERMOTD "AV"
|
||||||
|
#define MSG_TSCTL "TSCTL"
|
||||||
|
#define TOK_TSCTL "AW"
|
||||||
|
#define MSG_SVSJOIN "SVSJOIN"
|
||||||
|
#define TOK_SVSJOIN "AX"
|
||||||
|
#define MSG_SAJOIN "SAJOIN"
|
||||||
|
#define TOK_SAJOIN "AY"
|
||||||
|
#define MSG_SVSPART "SVSPART"
|
||||||
|
#define TOK_SVSPART "AX"
|
||||||
|
#define MSG_SAPART "SAPART"
|
||||||
|
#define TOK_SAPART "AY"
|
||||||
|
#define MSG_CHGIDENT "CHGIDENT"
|
||||||
|
#define TOK_CHGIDENT "AZ"
|
||||||
|
#define MSG_SWHOIS "SWHOIS"
|
||||||
|
#define TOK_SWHOIS "BA"
|
||||||
|
#define MSG_SVSO "SVSO"
|
||||||
|
#define TOK_SVSO "BB"
|
||||||
|
#define MSG_SVSFLINE "SVSFLINE"
|
||||||
|
#define TOK_SVSFLINE "BC"
|
||||||
|
#define MSG_TKL "TKL"
|
||||||
|
#define TOK_TKL "BD"
|
||||||
|
#define MSG_VHOST "VHOST"
|
||||||
|
#define TOK_VHOST "BE"
|
||||||
|
#define MSG_BOTMOTD "BOTMOTD"
|
||||||
|
#define TOK_BOTMOTD "BF"
|
||||||
|
#define MSG_REMGLINE "REMGLINE" /* remove g-line */
|
||||||
|
#define TOK_REMGLINE "BG"
|
||||||
|
#define MSG_HTM "HTM"
|
||||||
|
#define TOK_HTM "BH"
|
||||||
|
#define MAXPARA 15
|
||||||
|
|
||||||
|
|
||||||
|
extern int m_private(), m_topic(), m_join(), m_part(), m_mode(), m_svsmode();
|
||||||
|
extern int m_ping(), m_pong(), m_wallops(), m_kick(), m_svsnick();
|
||||||
|
extern int m_nick(), m_error(), m_notice(), m_samode(), m_svsnoop();
|
||||||
|
extern int m_invite(), m_quit(), m_kill(), m_svskill(), m_identify();
|
||||||
|
extern int m_akill(), m_kline(), m_unkline(), m_rakill(), m_sqline();
|
||||||
|
extern int m_zline(), m_unzline();
|
||||||
|
extern int m_gnotice(), m_goper(), m_globops(), m_locops(), m_unsqline(), m_chatops();
|
||||||
|
extern int m_protoctl();
|
||||||
|
extern int m_motd(), m_who(), m_whois(), m_user(), m_list();
|
||||||
|
extern int m_server(), m_info(), m_links(), m_summon(), m_stats();
|
||||||
|
extern int m_users(), m_version(), m_help();
|
||||||
|
extern int m_nickserv(), m_operserv(), m_chanserv(), m_memoserv(), m_helpserv(), m_services(), m_identify();
|
||||||
|
extern int m_statserv();
|
||||||
|
extern int m_squit(), m_away(), m_connect();
|
||||||
|
extern int m_oper(), m_pass(), m_trace();
|
||||||
|
extern int m_time(), m_names(), m_admin();
|
||||||
|
extern int m_lusers(), m_umode(), m_close();
|
||||||
|
extern int m_motd(), m_whowas(), m_silence();
|
||||||
|
extern int m_service(), m_userhost(), m_ison(), m_watch();
|
||||||
|
extern int m_service(), m_servset(), m_servlist(), m_squery();
|
||||||
|
extern int m_rehash(), m_restart(), m_die(), m_dns(), m_hash();
|
||||||
|
/*extern int m_noshortn(),m_noshortc(),m_noshortm(),m_noshorto(),m_noshorth();*/
|
||||||
|
|
||||||
|
extern int m_gline(), m_remgline(), m_map(), m_svs2mode(), m_admins(), m_dalinfo();
|
||||||
|
extern int m_addline(), m_rules(), m_mkpasswd();
|
||||||
|
extern int m_sethost(), m_nachat(), m_techat(), m_setident(), m_setname();
|
||||||
|
extern int m_lag(), m_sdesc(), m_knock(), m_credits();
|
||||||
|
extern int m_license(), m_chghost(), m_rping(), m_rpong();
|
||||||
|
extern int m_netinfo(), m_sendumode(), m_addmotd(), m_addomotd();
|
||||||
|
extern int m_svsmotd(), m_dusers(), m_opermotd(), m_tsctl();
|
||||||
|
extern int m_svsjoin(), m_sajoin(), m_svspart(), m_sapart();
|
||||||
|
extern int m_chgident(), m_swhois(), m_svso(), m_svsfline();
|
||||||
|
extern int m_tkl(), m_vhost(), m_botmotd(), m_sjoin(), m_htm();
|
||||||
|
|
||||||
|
#ifdef MSGTAB
|
||||||
|
struct Message *msgmap[256];
|
||||||
|
struct Message msgtab[] = {
|
||||||
|
{ MSG_PRIVATE, m_private, 0, MAXPARA, 1, TOK_PRIVATE, 0L },
|
||||||
|
{ MSG_NICK, m_nick, 0, MAXPARA, 1, TOK_NICK, 0L },
|
||||||
|
{ MSG_NOTICE, m_notice, 0, MAXPARA, 1, TOK_NOTICE, 0L },
|
||||||
|
{ MSG_JOIN, m_join, 0, MAXPARA, 1, TOK_JOIN, 0L },
|
||||||
|
{ MSG_MODE, m_mode, 0, MAXPARA, 1, TOK_MODE, 0L },
|
||||||
|
{ MSG_QUIT, m_quit, 0, MAXPARA, 1, TOK_QUIT, 0L },
|
||||||
|
{ MSG_PART, m_part, 0, MAXPARA, 1, TOK_PART, 0L },
|
||||||
|
{ MSG_TOPIC, m_topic, 0, MAXPARA, 1, TOK_TOPIC, 0L },
|
||||||
|
{ MSG_INVITE, m_invite, 0, MAXPARA, 1, TOK_INVITE, 0L },
|
||||||
|
{ MSG_KICK, m_kick, 0, MAXPARA, 1, TOK_KICK, 0L },
|
||||||
|
{ MSG_WALLOPS, m_wallops, 0, 1, 1, TOK_WALLOPS, 0L },
|
||||||
|
{ MSG_PING, m_ping, 0, MAXPARA, 1, TOK_PING, 0L },
|
||||||
|
{ MSG_PONG, m_pong, 0, MAXPARA, 1, TOK_PONG, 0L },
|
||||||
|
{ MSG_ERROR, m_error, 0, MAXPARA, 1, TOK_ERROR, 0L },
|
||||||
|
{ MSG_KILL, m_kill, 0, MAXPARA, 1, TOK_KILL, 0L },
|
||||||
|
{ MSG_PROTOCTL,m_protoctl, 0, MAXPARA, 1, TOK_PROTOCTL,0L },
|
||||||
|
{ MSG_USER, m_user, 0, MAXPARA, 1, TOK_USER, 0L },
|
||||||
|
{ MSG_AWAY, m_away, 0, MAXPARA, 1, TOK_AWAY, 0L },
|
||||||
|
{ MSG_ISON, m_ison, 0, 1, 1, TOK_ISON, 0L },
|
||||||
|
{ MSG_WATCH, m_watch, 0, 1, 1, TOK_WATCH, 0L },
|
||||||
|
{ MSG_SERVER, m_server, 0, MAXPARA, 1, TOK_SERVER, 0L },
|
||||||
|
{ MSG_SQUIT, m_squit, 0, MAXPARA, 1, TOK_SQUIT, 0L },
|
||||||
|
{ MSG_WHOIS, m_whois, 0, MAXPARA, 1, TOK_WHOIS, 0L },
|
||||||
|
{ MSG_WHO, m_who, 0, MAXPARA, 1, TOK_WHO, 0L },
|
||||||
|
{ MSG_WHOWAS, m_whowas, 0, MAXPARA, 1, TOK_WHOWAS, 0L },
|
||||||
|
{ MSG_LIST, m_list, 0, MAXPARA, 1, TOK_LIST, 0L },
|
||||||
|
{ MSG_NAMES, m_names, 0, MAXPARA, 1, TOK_NAMES, 0L },
|
||||||
|
{ MSG_USERHOST,m_userhost, 0, 1, 1, TOK_USERHOST,0L },
|
||||||
|
{ MSG_TRACE, m_trace, 0, MAXPARA, 1, TOK_TRACE, 0L },
|
||||||
|
{ MSG_PASS, m_pass, 0, MAXPARA, 1, TOK_PASS, 0L },
|
||||||
|
{ MSG_LUSERS, m_lusers, 0, MAXPARA, 1, TOK_LUSERS, 0L },
|
||||||
|
{ MSG_TIME, m_time, 0, MAXPARA, 1, TOK_TIME, 0L },
|
||||||
|
{ MSG_OPER, m_oper, 0, MAXPARA, 1, TOK_OPER, 0L },
|
||||||
|
{ MSG_CONNECT, m_connect, 0, MAXPARA, 1, TOK_CONNECT, 0L },
|
||||||
|
{ MSG_VERSION, m_version, 0, MAXPARA, 1, TOK_VERSION, 0L },
|
||||||
|
{ MSG_STATS, m_stats, 0, MAXPARA, 1, TOK_STATS, 0L },
|
||||||
|
{ MSG_LINKS, m_links, 0, MAXPARA, 1, TOK_LINKS, 0L },
|
||||||
|
{ MSG_ADMIN, m_admin, 0, MAXPARA, 1, TOK_ADMIN, 0L },
|
||||||
|
{ MSG_USERS, m_users, 0, MAXPARA, 1, TOK_USERS, 0L },
|
||||||
|
{ MSG_SVSMODE, m_svsmode, 0, MAXPARA, 1, TOK_SVSMODE, 0L },
|
||||||
|
{ MSG_SAMODE, m_samode, 0, MAXPARA, 1, TOK_SAMODE, 0L },
|
||||||
|
{ MSG_SVSKILL, m_svskill, 0, MAXPARA, 1, TOK_SVSKILL, 0L },
|
||||||
|
{ MSG_SVSNICK, m_svsnick, 0, MAXPARA, 1, TOK_SVSNICK, 0L },
|
||||||
|
{ MSG_SVSNOOP, m_svsnoop, 0, MAXPARA, 1, TOK_SVSNOOP, 0L },
|
||||||
|
{ MSG_CHANSERV,m_chanserv, 0, 1, 1, TOK_CHANSERV,0L },
|
||||||
|
/* { MSG_CS, m_noshortc, 0, 1, 1, TOK_CHANSERV,0L }, */
|
||||||
|
{ MSG_NICKSERV,m_nickserv, 0, 1, 1, TOK_NICKSERV,0L },
|
||||||
|
/* { MSG_NS, m_noshortn, 0, 1, 1, TOK_NICKSERV,0L }, */
|
||||||
|
{ MSG_OPERSERV,m_operserv, 0, 1, 1, TOK_OPERSERV,0L },
|
||||||
|
/* { MSG_OS, m_noshorto, 0, 1, 1, TOK_OPERSERV,0L }, */
|
||||||
|
{ MSG_MEMOSERV,m_memoserv, 0, 1, 1, TOK_MEMOSERV,0L },
|
||||||
|
/*{ MSG_MS, m_noshortm, 0, 1, 1, TOK_MEMOSERV,0L }, */
|
||||||
|
{ MSG_HELPSERV,m_helpserv, 0, 1, 1, TOK_HELPSERV,0L },
|
||||||
|
/* { MSG_HS, m_noshorth, 0, 1, 1, TOK_HELPSERV,0L }, */
|
||||||
|
{ MSG_SERVICES,m_services, 0, 1, 1, TOK_SERVICES,0L },
|
||||||
|
{ MSG_IDENTIFY,m_identify, 0, 1, 1, TOK_IDENTIFY,0L },
|
||||||
|
{ MSG_SUMMON, m_summon, 0, MAXPARA, 1, TOK_SUMMON, 0L },
|
||||||
|
{ MSG_HELP, m_help, 0, 1, 1, TOK_HELP, 0L },
|
||||||
|
{ MSG_HELPOP, m_help, 0, 1, 1, TOK_HELP, 0L },
|
||||||
|
{ MSG_INFO, m_info, 0, MAXPARA, 1, TOK_INFO, 0L },
|
||||||
|
{ MSG_MOTD, m_motd, 0, MAXPARA, 1, TOK_MOTD, 0L },
|
||||||
|
{ MSG_CLOSE, m_close, 0, MAXPARA, 1, TOK_CLOSE, 0L },
|
||||||
|
{ MSG_SILENCE, m_silence, 0, MAXPARA, 1, TOK_SILENCE, 0L },
|
||||||
|
{ MSG_AKILL, m_akill, 0, MAXPARA, 1, TOK_AKILL, 0L },
|
||||||
|
{ MSG_SQLINE, m_sqline, 0, MAXPARA, 1, TOK_SQLINE, 0L },
|
||||||
|
{ MSG_UNSQLINE,m_unsqline, 0, MAXPARA, 1, TOK_UNSQLINE,0L },
|
||||||
|
{ MSG_KLINE, m_kline, 0, MAXPARA, 1, TOK_KLINE, 0L },
|
||||||
|
{ MSG_UNKLINE, m_unkline, 0, MAXPARA, 1, TOK_UNKLINE, 0L },
|
||||||
|
{ MSG_ZLINE, m_zline, 0, MAXPARA, 1, TOK_ZLINE, 0L },
|
||||||
|
{ MSG_UNZLINE, m_unzline, 0, MAXPARA, 1, TOK_UNZLINE, 0L },
|
||||||
|
{ MSG_RAKILL, m_rakill, 0, MAXPARA, 1, TOK_RAKILL, 0L },
|
||||||
|
{ MSG_GNOTICE, m_gnotice, 0, MAXPARA, 1, TOK_GNOTICE, 0L },
|
||||||
|
{ MSG_GOPER, m_goper, 0, MAXPARA, 1, TOK_GOPER, 0L },
|
||||||
|
{ MSG_GLOBOPS, m_globops, 0, MAXPARA, 1, TOK_GLOBOPS, 0L },
|
||||||
|
{ MSG_CHATOPS, m_chatops, 0, 1, 1, TOK_CHATOPS, 0L },
|
||||||
|
{ MSG_LOCOPS, m_locops, 0, 1, 1, TOK_LOCOPS, 0L },
|
||||||
|
{ MSG_HASH, m_hash, 0, MAXPARA, 1, TOK_HASH, 0L },
|
||||||
|
{ MSG_DNS, m_dns, 0, MAXPARA, 1, TOK_DNS, 0L },
|
||||||
|
{ MSG_REHASH, m_rehash, 0, MAXPARA, 1, TOK_REHASH, 0L },
|
||||||
|
{ MSG_RESTART, m_restart, 0, MAXPARA, 1, TOK_RESTART, 0L },
|
||||||
|
{ MSG_DIE, m_die, 0, MAXPARA, 1, TOK_DIE, 0L },
|
||||||
|
{ MSG_RULES, m_rules, 0, MAXPARA, 1, TOK_RULES, 0L },
|
||||||
|
{ MSG_MAP, m_map, 0, MAXPARA, 1, TOK_MAP, 0L },
|
||||||
|
{ MSG_GLINE, m_gline, 0, MAXPARA, 1, TOK_GLINE, 0L },
|
||||||
|
{ MSG_REMGLINE,m_remgline, 0, MAXPARA, 1, TOK_REMGLINE,0L },
|
||||||
|
{ MSG_DALINFO, m_dalinfo, 0, MAXPARA, 1, TOK_DALINFO, 0L },
|
||||||
|
{ MSG_SVS2MODE,m_svs2mode, 0, MAXPARA, 1, TOK_SVS2MODE,0L },
|
||||||
|
{ MSG_MKPASSWD, m_mkpasswd, 0, MAXPARA, 1, TOK_MKPASSWD, 0L },
|
||||||
|
{ MSG_ADDLINE, m_addline, 0, 1, 1, TOK_ADDLINE, 0L },
|
||||||
|
{ MSG_ADMINCHAT, m_admins, 0, 1, 1, TOK_ADMINCHAT, 0L },
|
||||||
|
{ MSG_SETHOST, m_sethost, 0, MAXPARA, 1, TOK_SETHOST, 0L },
|
||||||
|
{ MSG_TECHAT, m_techat, 0, 1, 1, TOK_TECHAT, 0L },
|
||||||
|
{ MSG_NACHAT, m_nachat, 0, 1, 1, TOK_NACHAT, 0L },
|
||||||
|
{ MSG_SETIDENT, m_setident,0, MAXPARA, 1, TOK_SETIDENT, 0L },
|
||||||
|
{ MSG_SETNAME, m_setname, 0, 1, 1, TOK_SETNAME, 0L },
|
||||||
|
{ MSG_LAG, m_lag, 0, MAXPARA, 1, TOK_LAG, 0L },
|
||||||
|
{ MSG_SDESC, m_sdesc, 0, 1, 1, TOK_SDESC, 0L },
|
||||||
|
{ MSG_STATSERV,m_statserv, 0, 1, 1, TOK_STATSERV,0L },
|
||||||
|
{ MSG_KNOCK, m_knock, 0, 2, 1, TOK_KNOCK, 0L },
|
||||||
|
{ MSG_CREDITS, m_credits, 0, MAXPARA, 1, TOK_CREDITS, 0L },
|
||||||
|
{ MSG_LICENSE, m_license, 0, MAXPARA, 1, TOK_LICENSE, 0L },
|
||||||
|
{ MSG_CHGHOST, m_chghost, 0, MAXPARA, 1, TOK_CHGHOST, 0L },
|
||||||
|
{ MSG_RPING, m_rping, 0, MAXPARA, 1, TOK_RPING, 0L },
|
||||||
|
{ MSG_RPONG, m_rpong, 0, MAXPARA, 1, TOK_RPONG, 0L },
|
||||||
|
{ MSG_NETINFO, m_netinfo, 0, MAXPARA, 1, TOK_NETINFO, 0L},
|
||||||
|
{ MSG_SENDUMODE, m_sendumode, 0, MAXPARA, 1, TOK_SENDUMODE, 0L},
|
||||||
|
{ MSG_SMO, m_sendumode, 0, MAXPARA, 1, TOK_SMO, 0L},
|
||||||
|
{ MSG_ADDMOTD, m_addmotd, 0, 1, 1, TOK_ADDMOTD, 0L},
|
||||||
|
{ MSG_ADDOMOTD, m_addomotd, 0, 1, 1, TOK_ADDOMOTD, 0L},
|
||||||
|
{ MSG_SVSMOTD, m_svsmotd, 0, MAXPARA, 1, TOK_SVSMOTD, 0L},
|
||||||
|
{ MSG_DUSERS, m_dusers, 0, MAXPARA, 1, TOK_DUSERS, 0L},
|
||||||
|
{ MSG_OPERMOTD, m_opermotd, 0, MAXPARA, 1, TOK_OPERMOTD, 0L},
|
||||||
|
{ MSG_TSCTL, m_tsctl, 0, MAXPARA, 1, TOK_TSCTL, 0L},
|
||||||
|
{ MSG_SVSJOIN, m_svsjoin, 0, MAXPARA, 1, TOK_SVSJOIN, 0L},
|
||||||
|
{ MSG_SAJOIN, m_sajoin, 0, MAXPARA, 1, TOK_SAJOIN,0L},
|
||||||
|
{ MSG_SVSPART, m_svspart, 0, MAXPARA, 1, TOK_SVSPART, 0L},
|
||||||
|
{ MSG_SAPART, m_sapart, 0, MAXPARA, 1, TOK_SAPART,0L},
|
||||||
|
{ MSG_CHGIDENT, m_chgident,0, MAXPARA, 1, TOK_CHGIDENT,0L},
|
||||||
|
{ MSG_SWHOIS, m_swhois, 0, MAXPARA, 1, TOK_SWHOIS, 0L},
|
||||||
|
{ MSG_SVSO, m_svso, 0, MAXPARA, 1, TOK_SVSO, 0L},
|
||||||
|
{ MSG_SVSFLINE, m_svsfline, 0, MAXPARA,1,TOK_SVSFLINE,0L},
|
||||||
|
{ MSG_TKL, m_tkl, 0, MAXPARA,1,TOK_TKL,0L},
|
||||||
|
{ MSG_VHOST, m_vhost, 0, MAXPARA,1,TOK_VHOST,0L},
|
||||||
|
{ MSG_BOTMOTD, m_botmotd, 0, MAXPARA,1,TOK_BOTMOTD,0L},
|
||||||
|
{ MSG_SJOIN, m_sjoin, 0, MAXPARA, 1, TOK_SJOIN,0L},
|
||||||
|
{ MSG_HTM, m_htm, 0, MAXPARA, 1, TOK_HTM, 0L},
|
||||||
|
{ (char *) 0, (int (*)()) 0 , 0, 0, 0, 0, 0L}
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
extern struct Message msgtab[];
|
||||||
|
extern struct Message *msgmap[256];
|
||||||
|
#endif
|
||||||
|
#endif /* __msg_include__ */
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1983, 1989 Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms are permitted
|
||||||
|
* provided that: (1) source distributions retain this entire copyright
|
||||||
|
* notice and comment, and (2) distributions including binaries display
|
||||||
|
* the following acknowledgement: ``This product includes software
|
||||||
|
* developed by the University of California, Berkeley and its contributors''
|
||||||
|
* in the documentation or other materials provided with the distribution
|
||||||
|
* and in all advertising materials mentioning features or use of this
|
||||||
|
* software. Neither the name of the University nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
* @(#)nameser.h 5.24 (Berkeley) 6/1/90
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define constants based on rfc883
|
||||||
|
*/
|
||||||
|
#define PACKETSZ 512 /* maximum packet size */
|
||||||
|
#define MAXDNAME 256 /* maximum domain name */
|
||||||
|
#define MAXCDNAME 255 /* maximum compressed domain name */
|
||||||
|
#define MAXLABEL 63 /* maximum length of domain label */
|
||||||
|
/* Number of bytes of fixed size data in query structure */
|
||||||
|
#define QFIXEDSZ 4
|
||||||
|
/* number of bytes of fixed size data in resource record */
|
||||||
|
#define RRFIXEDSZ 10
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Internet nameserver port number
|
||||||
|
*/
|
||||||
|
#define NAMESERVER_PORT 53
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Currently defined opcodes
|
||||||
|
*/
|
||||||
|
#define QUERY 0x0 /* standard query */
|
||||||
|
#define IQUERY 0x1 /* inverse query */
|
||||||
|
#define STATUS 0x2 /* nameserver status query */
|
||||||
|
/*#define xxx 0x3 /* 0x3 reserved */
|
||||||
|
/* non standard */
|
||||||
|
#define UPDATEA 0x9 /* add resource record */
|
||||||
|
#define UPDATED 0xa /* delete a specific resource record */
|
||||||
|
#define UPDATEDA 0xb /* delete all nemed resource record */
|
||||||
|
#define UPDATEM 0xc /* modify a specific resource record */
|
||||||
|
#define UPDATEMA 0xd /* modify all named resource record */
|
||||||
|
|
||||||
|
#define ZONEINIT 0xe /* initial zone transfer */
|
||||||
|
#define ZONEREF 0xf /* incremental zone referesh */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Currently defined response codes
|
||||||
|
*/
|
||||||
|
#ifdef NOERROR /* defined by solaris2 in */
|
||||||
|
#undef NOERROR /* <sys/stream.h> to be -1 */
|
||||||
|
#endif
|
||||||
|
#define NOERROR 0 /* no error */
|
||||||
|
#define FORMERR 1 /* format error */
|
||||||
|
#define SERVFAIL 2 /* server failure */
|
||||||
|
#define NXDOMAIN 3 /* non existent domain */
|
||||||
|
#define NOTIMP 4 /* not implemented */
|
||||||
|
#define REFUSED 5 /* query refused */
|
||||||
|
/* non standard */
|
||||||
|
#define NOCHANGE 0xf /* update failed to change db */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Type values for resources and queries
|
||||||
|
*/
|
||||||
|
#define T_A 1 /* host address */
|
||||||
|
#define T_NS 2 /* authoritative server */
|
||||||
|
#define T_MD 3 /* mail destination */
|
||||||
|
#define T_MF 4 /* mail forwarder */
|
||||||
|
#define T_CNAME 5 /* connonical name */
|
||||||
|
#define T_SOA 6 /* start of authority zone */
|
||||||
|
#define T_MB 7 /* mailbox domain name */
|
||||||
|
#define T_MG 8 /* mail group member */
|
||||||
|
#define T_MR 9 /* mail rename name */
|
||||||
|
#define T_NULL 10 /* null resource record */
|
||||||
|
#define T_WKS 11 /* well known service */
|
||||||
|
#define T_PTR 12 /* domain name pointer */
|
||||||
|
#define T_HINFO 13 /* host information */
|
||||||
|
#define T_MINFO 14 /* mailbox information */
|
||||||
|
#define T_MX 15 /* mail routing information */
|
||||||
|
#define T_TXT 16 /* text strings */
|
||||||
|
/* non standard */
|
||||||
|
#define T_UINFO 100 /* user (finger) information */
|
||||||
|
#define T_UID 101 /* user ID */
|
||||||
|
#define T_GID 102 /* group ID */
|
||||||
|
#define T_UNSPEC 103 /* Unspecified format (binary data) */
|
||||||
|
/* Query type values which do not appear in resource records */
|
||||||
|
#define T_AXFR 252 /* transfer zone of authority */
|
||||||
|
#define T_MAILB 253 /* transfer mailbox records */
|
||||||
|
#define T_MAILA 254 /* transfer mail agent records */
|
||||||
|
#define T_ANY 255 /* wildcard match */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Values for class field
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define C_IN 1 /* the arpa internet */
|
||||||
|
#define C_CHAOS 3 /* for chaos net at MIT */
|
||||||
|
#define C_HS 4 /* for Hesiod name server at MIT */
|
||||||
|
/* Query class values which do not appear in resource records */
|
||||||
|
#define C_ANY 255 /* wildcard match */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Status return codes for T_UNSPEC conversion routines
|
||||||
|
*/
|
||||||
|
#define CONV_SUCCESS 0
|
||||||
|
#define CONV_OVERFLOW -1
|
||||||
|
#define CONV_BADFMT -2
|
||||||
|
#define CONV_BADCKSUM -3
|
||||||
|
#define CONV_BADBUFLEN -4
|
||||||
|
|
||||||
|
#ifndef BYTE_ORDER
|
||||||
|
#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax) */
|
||||||
|
#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
|
||||||
|
#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */
|
||||||
|
|
||||||
|
#if defined(vax) || defined(ns32000) || defined(sun386) || defined(MIPSEL) || \
|
||||||
|
defined(BIT_ZERO_ON_RIGHT) || defined(sequent) || defined(i386) ||\
|
||||||
|
defined(___vax__) || defined(__ns32000__) || defined(__sun386__) ||\
|
||||||
|
defined(__alpha) || defined(_WIN32)
|
||||||
|
#define BYTE_ORDER LITTLE_ENDIAN
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
|
||||||
|
defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
|
||||||
|
defined(MIPSEB) || defined(__hpux) || defined(__convex__) || \
|
||||||
|
defined(__pyr__) || defined(__mc68000__) || defined(__sparc__) ||\
|
||||||
|
defined(_IBMR2) || defined (BIT_ZERO_ON_LEFT)
|
||||||
|
#define BYTE_ORDER BIG_ENDIAN
|
||||||
|
#endif
|
||||||
|
#endif /* BYTE_ORDER */
|
||||||
|
|
||||||
|
#ifndef BYTE_ORDER
|
||||||
|
/* you must determine what the correct bit order is for your compiler */
|
||||||
|
UNDEFINED_BIT_ORDER;
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
* Structure for query header, the order of the fields is machine and
|
||||||
|
* compiler dependent, in our case, the bits within a byte are assignd
|
||||||
|
* least significant first, while the order of transmition is most
|
||||||
|
* significant first. This requires a somewhat confusing rearrangement.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u_short id; /* query identification number */
|
||||||
|
#if BYTE_ORDER == BIG_ENDIAN
|
||||||
|
/* fields in third byte */
|
||||||
|
u_char qr:1; /* response flag */
|
||||||
|
u_char opcode:4; /* purpose of message */
|
||||||
|
u_char aa:1; /* authoritive answer */
|
||||||
|
u_char tc:1; /* truncated message */
|
||||||
|
u_char rd:1; /* recursion desired */
|
||||||
|
/* fields in fourth byte */
|
||||||
|
u_char ra:1; /* recursion available */
|
||||||
|
u_char pr:1; /* primary server required (non standard) */
|
||||||
|
u_char unused:2; /* unused bits */
|
||||||
|
u_char rcode:4; /* response code */
|
||||||
|
#endif
|
||||||
|
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
|
||||||
|
/* fields in third byte */
|
||||||
|
u_char rd:1; /* recursion desired */
|
||||||
|
u_char tc:1; /* truncated message */
|
||||||
|
u_char aa:1; /* authoritive answer */
|
||||||
|
u_char opcode:4; /* purpose of message */
|
||||||
|
u_char qr:1; /* response flag */
|
||||||
|
/* fields in fourth byte */
|
||||||
|
u_char rcode:4; /* response code */
|
||||||
|
u_char unused:2; /* unused bits */
|
||||||
|
u_char pr:1; /* primary server required (non standard) */
|
||||||
|
u_char ra:1; /* recursion available */
|
||||||
|
#endif
|
||||||
|
/* remaining bytes */
|
||||||
|
u_short qdcount; /* number of question entries */
|
||||||
|
u_short ancount; /* number of answer entries */
|
||||||
|
u_short nscount; /* number of authority entries */
|
||||||
|
u_short arcount; /* number of resource entries */
|
||||||
|
} HEADER;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defines for handling compressed domain names
|
||||||
|
*/
|
||||||
|
#define INDIR_MASK 0xc0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Structure for passing resource records around.
|
||||||
|
*/
|
||||||
|
struct rrec {
|
||||||
|
short r_zone; /* zone number */
|
||||||
|
short r_class; /* class number */
|
||||||
|
short r_type; /* type number */
|
||||||
|
#ifdef __alpha
|
||||||
|
u_int r_ttl; /* time to live */
|
||||||
|
#else
|
||||||
|
u_long r_ttl; /* time to live */
|
||||||
|
#endif
|
||||||
|
int r_size; /* size of data area */
|
||||||
|
char *r_data; /* pointer to data */
|
||||||
|
};
|
||||||
|
|
||||||
|
extern u_short _getshort();
|
||||||
|
#ifdef __alpha
|
||||||
|
extern u_int _getlong();
|
||||||
|
#else
|
||||||
|
extern u_long _getlong();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Inline versions of get/put short/long.
|
||||||
|
* Pointer is advanced; we assume that both arguments
|
||||||
|
* are lvalues and will already be in registers.
|
||||||
|
* cp MUST be u_char *.
|
||||||
|
*/
|
||||||
|
#define GETSHORT(s, cp) { \
|
||||||
|
(s) = *(cp)++ << 8; \
|
||||||
|
(s) |= *(cp)++; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define GETLONG(l, cp) { \
|
||||||
|
(l) = *(cp)++ << 8; \
|
||||||
|
(l) |= *(cp)++; (l) <<= 8; \
|
||||||
|
(l) |= *(cp)++; (l) <<= 8; \
|
||||||
|
(l) |= *(cp)++; \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define PUTSHORT(s, cp) { \
|
||||||
|
*(cp)++ = (s) >> 8; \
|
||||||
|
*(cp)++ = (s); \
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Warning: PUTLONG destroys its first argument.
|
||||||
|
*/
|
||||||
|
#define PUTLONG(l, cp) { \
|
||||||
|
(cp)[3] = l; \
|
||||||
|
(cp)[2] = (l >>= 8); \
|
||||||
|
(cp)[1] = (l >>= 8); \
|
||||||
|
(cp)[0] = l >> 8; \
|
||||||
|
(cp) += sizeof(u_long); \
|
||||||
|
}
|
||||||
@@ -0,0 +1,307 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/numeric.h
|
||||||
|
* Copyright (C) 1990 Jarkko Oikarinen
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* -- Potvin -- Feb 20/98
|
||||||
|
*
|
||||||
|
* Added numerics 600-799 as numeric_replies2[], we ran out
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reserve numerics 000-099 for server-client connections where the client
|
||||||
|
* is local to the server. If any server is passed a numeric in this range
|
||||||
|
* from another server then it is remapped to 100-199.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define RPL_WELCOME 001
|
||||||
|
#define RPL_YOURHOST 002
|
||||||
|
#define RPL_CREATED 003
|
||||||
|
#define RPL_MYINFO 004
|
||||||
|
#define RPL_PROTOCTL 005
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Errors are in the range from 400-599 currently and are grouped by what
|
||||||
|
* commands they come from.
|
||||||
|
*/
|
||||||
|
#define ERR_NOSUCHNICK 401
|
||||||
|
#define ERR_NOSUCHSERVER 402
|
||||||
|
#define ERR_NOSUCHCHANNEL 403
|
||||||
|
#define ERR_CANNOTSENDTOCHAN 404
|
||||||
|
#define ERR_TOOMANYCHANNELS 405
|
||||||
|
#define ERR_WASNOSUCHNICK 406
|
||||||
|
#define ERR_TOOMANYTARGETS 407
|
||||||
|
#define ERR_NOSUCHSERVICE 408
|
||||||
|
#define ERR_NOORIGIN 409
|
||||||
|
|
||||||
|
#define ERR_NORECIPIENT 411
|
||||||
|
#define ERR_NOTEXTTOSEND 412
|
||||||
|
#define ERR_NOTOPLEVEL 413
|
||||||
|
#define ERR_WILDTOPLEVEL 414
|
||||||
|
|
||||||
|
#define ERR_UNKNOWNCOMMAND 421
|
||||||
|
#define ERR_NOMOTD 422
|
||||||
|
#define ERR_NOADMININFO 423
|
||||||
|
#define ERR_FILEERROR 424
|
||||||
|
#define ERR_NOOPERMOTD 425
|
||||||
|
#define ERR_NONICKNAMEGIVEN 431
|
||||||
|
#define ERR_ERRONEUSNICKNAME 432
|
||||||
|
#define ERR_NICKNAMEINUSE 433
|
||||||
|
#define ERR_NORULES 434
|
||||||
|
#define ERR_SERVICECONFUSED 435
|
||||||
|
#define ERR_NICKCOLLISION 436
|
||||||
|
#define ERR_BANNICKCHANGE 437
|
||||||
|
#define ERR_NCHANGETOOFAST 438
|
||||||
|
#define ERR_TARGETTOOFAST 439
|
||||||
|
#define ERR_SERVICESDOWN 440
|
||||||
|
|
||||||
|
#define ERR_USERNOTINCHANNEL 441
|
||||||
|
#define ERR_NOTONCHANNEL 442
|
||||||
|
#define ERR_USERONCHANNEL 443
|
||||||
|
#define ERR_NOLOGIN 444
|
||||||
|
#define ERR_SUMMONDISABLED 445
|
||||||
|
#define ERR_USERSDISABLED 446
|
||||||
|
|
||||||
|
#define ERR_NOTREGISTERED 451
|
||||||
|
|
||||||
|
#define ERR_HOSTILENAME 455
|
||||||
|
|
||||||
|
#define ERR_NOHIDING 459
|
||||||
|
#define ERR_NOTFORHALFOPS 460
|
||||||
|
#define ERR_NEEDMOREPARAMS 461
|
||||||
|
#define ERR_ALREADYREGISTRED 462
|
||||||
|
#define ERR_NOPERMFORHOST 463
|
||||||
|
#define ERR_PASSWDMISMATCH 464
|
||||||
|
#define ERR_YOUREBANNEDCREEP 465
|
||||||
|
#define ERR_YOUWILLBEBANNED 466
|
||||||
|
#define ERR_KEYSET 467
|
||||||
|
#define ERR_ONLYSERVERSCANCHANGE 468
|
||||||
|
#define ERR_LINKSET 469
|
||||||
|
#define ERR_LINKCHANNEL 470
|
||||||
|
#define ERR_CHANNELISFULL 471
|
||||||
|
#define ERR_UNKNOWNMODE 472
|
||||||
|
#define ERR_INVITEONLYCHAN 473
|
||||||
|
#define ERR_BANNEDFROMCHAN 474
|
||||||
|
#define ERR_BADCHANNELKEY 475
|
||||||
|
#define ERR_BADCHANMASK 476
|
||||||
|
#define ERR_NEEDREGGEDNICK 477
|
||||||
|
#define ERR_BANLISTFULL 478
|
||||||
|
#define ERR_LINKFAIL 479
|
||||||
|
#define ERR_CANNOTKNOCK 480
|
||||||
|
|
||||||
|
#define ERR_NOPRIVILEGES 481
|
||||||
|
#define ERR_CHANOPRIVSNEEDED 482
|
||||||
|
#define ERR_CANTKILLSERVER 483
|
||||||
|
#define ERR_ATTACKDENY 484
|
||||||
|
#define ERR_KILLDENY 485
|
||||||
|
|
||||||
|
#define ERR_NOOPERHOST 491
|
||||||
|
#define ERR_NOSERVICEHOST 492
|
||||||
|
|
||||||
|
#define ERR_UMODEUNKNOWNFLAG 501
|
||||||
|
#define ERR_USERSDONTMATCH 502
|
||||||
|
|
||||||
|
#define ERR_SILELISTFULL 511
|
||||||
|
#define ERR_TOOMANYWATCH 512
|
||||||
|
#define ERR_NEEDPONG 513
|
||||||
|
|
||||||
|
#define ERR_NOINVITE 518
|
||||||
|
#define ERR_ADMONLY 519
|
||||||
|
#define ERR_OPERONLY 520
|
||||||
|
#define ERR_LISTSYNTAX 521
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Numberic replies from server commands.
|
||||||
|
* These are currently in the range 200-399.
|
||||||
|
*/
|
||||||
|
#define RPL_NONE 300
|
||||||
|
#define RPL_AWAY 301
|
||||||
|
#define RPL_USERHOST 302
|
||||||
|
#define RPL_ISON 303
|
||||||
|
#define RPL_TEXT 304
|
||||||
|
#define RPL_UNAWAY 305
|
||||||
|
#define RPL_NOWAWAY 306
|
||||||
|
#define RPL_WHOISREGNICK 307
|
||||||
|
#define RPL_RULESSTART 308
|
||||||
|
#define RPL_ENDOFRULES 309
|
||||||
|
#define RPL_WHOISHELPOP 310 /* -Donwulff */
|
||||||
|
|
||||||
|
#define RPL_WHOISUSER 311
|
||||||
|
#define RPL_WHOISSERVER 312
|
||||||
|
#define RPL_WHOISOPERATOR 313
|
||||||
|
|
||||||
|
#define RPL_WHOWASUSER 314
|
||||||
|
/* rpl_endofwho below (315) */
|
||||||
|
#define RPL_ENDOFWHOWAS 369
|
||||||
|
|
||||||
|
#define RPL_WHOISCHANOP 316 /* redundant and not needed but reserved */
|
||||||
|
#define RPL_WHOISIDLE 317
|
||||||
|
|
||||||
|
#define RPL_ENDOFWHOIS 318
|
||||||
|
#define RPL_WHOISCHANNELS 319
|
||||||
|
#define RPL_WHOISSPECIAL 320
|
||||||
|
#define RPL_LISTSTART 321
|
||||||
|
#define RPL_LIST 322
|
||||||
|
#define RPL_LISTEND 323
|
||||||
|
#define RPL_CHANNELMODEIS 324
|
||||||
|
#define RPL_CREATIONTIME 329
|
||||||
|
#define RPL_NOTOPIC 331
|
||||||
|
#define RPL_TOPIC 332
|
||||||
|
#define RPL_TOPICWHOTIME 333
|
||||||
|
|
||||||
|
#define RPL_LISTSYNTAX 334
|
||||||
|
#define RPL_WHOISBOT 335
|
||||||
|
#define RPL_INVITING 341
|
||||||
|
#define RPL_SUMMONING 342
|
||||||
|
|
||||||
|
#define RPL_VERSION 351
|
||||||
|
|
||||||
|
#define RPL_WHOREPLY 352
|
||||||
|
#define RPL_ENDOFWHO 315
|
||||||
|
#define RPL_NAMREPLY 353
|
||||||
|
#define RPL_ENDOFNAMES 366
|
||||||
|
#define RPL_INVITELIST 346
|
||||||
|
#define RPL_ENDOFINVITELIST 347
|
||||||
|
|
||||||
|
#define RPL_EXLIST 348
|
||||||
|
#define RPL_ENDOFEXLIST 349
|
||||||
|
#define RPL_KILLDONE 361
|
||||||
|
#define RPL_CLOSING 362
|
||||||
|
#define RPL_CLOSEEND 363
|
||||||
|
#define RPL_LINKS 364
|
||||||
|
#define RPL_ENDOFLINKS 365
|
||||||
|
/* rpl_endofnames above (366) */
|
||||||
|
#define RPL_BANLIST 367
|
||||||
|
#define RPL_ENDOFBANLIST 368
|
||||||
|
/* rpl_endofwhowas above (369) */
|
||||||
|
|
||||||
|
#define RPL_INFO 371
|
||||||
|
#define RPL_MOTD 372
|
||||||
|
#define RPL_INFOSTART 373
|
||||||
|
#define RPL_ENDOFINFO 374
|
||||||
|
#define RPL_MOTDSTART 375
|
||||||
|
#define RPL_ENDOFMOTD 376
|
||||||
|
|
||||||
|
#define RPL_WHOISHOST 378
|
||||||
|
#define RPL_WHOISMODES 379
|
||||||
|
#define RPL_YOUREOPER 381
|
||||||
|
#define RPL_REHASHING 382
|
||||||
|
#define RPL_YOURESERVICE 383
|
||||||
|
#define RPL_MYPORTIS 384
|
||||||
|
#define RPL_NOTOPERANYMORE 385
|
||||||
|
|
||||||
|
#define RPL_TIME 391
|
||||||
|
#define RPL_USERSSTART 392
|
||||||
|
#define RPL_USERS 393
|
||||||
|
#define RPL_ENDOFUSERS 394
|
||||||
|
#define RPL_NOUSERS 395
|
||||||
|
|
||||||
|
#define RPL_TRACELINK 200
|
||||||
|
#define RPL_TRACECONNECTING 201
|
||||||
|
#define RPL_TRACEHANDSHAKE 202
|
||||||
|
#define RPL_TRACEUNKNOWN 203
|
||||||
|
#define RPL_TRACEOPERATOR 204
|
||||||
|
#define RPL_TRACEUSER 205
|
||||||
|
#define RPL_TRACESERVER 206
|
||||||
|
#define RPL_TRACESERVICE 207
|
||||||
|
#define RPL_TRACENEWTYPE 208
|
||||||
|
#define RPL_TRACECLASS 209
|
||||||
|
|
||||||
|
#define RPL_STATSLINKINFO 211
|
||||||
|
#define RPL_STATSCOMMANDS 212
|
||||||
|
#define RPL_STATSCLINE 213
|
||||||
|
#define RPL_STATSNLINE 214
|
||||||
|
#define RPL_STATSILINE 215
|
||||||
|
#define RPL_STATSKLINE 216
|
||||||
|
#define RPL_STATSQLINE 217
|
||||||
|
#define RPL_STATSYLINE 218
|
||||||
|
#define RPL_ENDOFSTATS 219
|
||||||
|
#define RPL_STATSBLINE 220
|
||||||
|
|
||||||
|
#define RPL_UMODEIS 221
|
||||||
|
#define RPL_SQLINE_NICK 222
|
||||||
|
#define RPL_STATSGLINE 223
|
||||||
|
#define RPL_STATSTLINE 224
|
||||||
|
#define RPL_SERVICEINFO 231
|
||||||
|
#define RPL_RULES 232
|
||||||
|
#define RPL_SERVICE 233
|
||||||
|
#define RPL_SERVLIST 234
|
||||||
|
#define RPL_SERVLISTEND 235
|
||||||
|
|
||||||
|
#define RPL_STATSLLINE 241
|
||||||
|
#define RPL_STATSUPTIME 242
|
||||||
|
#define RPL_STATSOLINE 243
|
||||||
|
#define RPL_STATSHLINE 244
|
||||||
|
#define RPL_STATSSLINE 245
|
||||||
|
#define RPL_STATSXLINE 247
|
||||||
|
#define RPL_STATSULINE 248
|
||||||
|
#define RPL_STATSDEBUG 249
|
||||||
|
#define RPL_STATSCONN 250
|
||||||
|
|
||||||
|
#define RPL_LUSERCLIENT 251
|
||||||
|
#define RPL_LUSEROP 252
|
||||||
|
#define RPL_LUSERUNKNOWN 253
|
||||||
|
#define RPL_LUSERCHANNELS 254
|
||||||
|
#define RPL_LUSERME 255
|
||||||
|
#define RPL_ADMINME 256
|
||||||
|
#define RPL_ADMINLOC1 257
|
||||||
|
#define RPL_ADMINLOC2 258
|
||||||
|
#define RPL_ADMINEMAIL 259
|
||||||
|
|
||||||
|
#define RPL_TRACELOG 261
|
||||||
|
|
||||||
|
#define RPL_LOCALUSERS 265
|
||||||
|
#define RPL_GLOBALUSERS 266
|
||||||
|
|
||||||
|
#define RPL_SILELIST 271
|
||||||
|
#define RPL_ENDOFSILELIST 272
|
||||||
|
|
||||||
|
#define RPL_STATSDLINE 275
|
||||||
|
|
||||||
|
#define RPL_HELPHDR 290
|
||||||
|
#define RPL_HELPOP 291
|
||||||
|
#define RPL_HELPTLR 292
|
||||||
|
#define RPL_HELPHLP 293
|
||||||
|
#define RPL_HELPFWD 294
|
||||||
|
#define RPL_HELPIGN 295
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New /MAP format.
|
||||||
|
*/
|
||||||
|
#define RPL_MAP 006
|
||||||
|
#define RPL_MAPMORE 610
|
||||||
|
#define RPL_MAPEND 007
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Numberic replies from server commands.
|
||||||
|
* These are also in the range 600-799.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define RPL_LOGON 600
|
||||||
|
#define RPL_LOGOFF 601
|
||||||
|
#define RPL_WATCHOFF 602
|
||||||
|
#define RPL_WATCHSTAT 603
|
||||||
|
#define RPL_NOWON 604
|
||||||
|
#define RPL_NOWOFF 605
|
||||||
|
#define RPL_WATCHLIST 606
|
||||||
|
#define RPL_ENDOFWATCHLIST 607
|
||||||
|
#define RPL_DUMPING 640
|
||||||
|
#define RPL_DUMPRPL 641
|
||||||
|
#define RPL_EODUMP 642
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* Relinfo.h
|
||||||
|
*
|
||||||
|
* If anyone makes another release or a hybrid of Unreal
|
||||||
|
* PLEASE CHANGE RELEASEID2 to the current time(NULL) (date +%s)
|
||||||
|
* if another hybrid please change releaseprefix
|
||||||
|
* if a unreal special edtion please select an IDTAG for it
|
||||||
|
* - Stskeeps -
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stamp.h"
|
||||||
|
#define RELEASEPREFIX "unrealircd"
|
||||||
|
#define RELEASEIDTAG "000"
|
||||||
|
#define RELEASEID RELEASEPREFIX "[" RELEASESTUFF "(" RELEASEID2 "/" RELEASEIDTAG ")]"
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* irc2.7.2/ircd/res.h (C)opyright 1992 Darren Reed.
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
#ifndef __res_include__
|
||||||
|
#define __res_include__
|
||||||
|
|
||||||
|
#define RES_INITLIST 1
|
||||||
|
#define RES_CALLINIT 2
|
||||||
|
#define RES_INITSOCK 4
|
||||||
|
#define RES_INITDEBG 8
|
||||||
|
#define RES_INITCACH 16
|
||||||
|
|
||||||
|
#define MAXPACKET 1024
|
||||||
|
#define MAXALIASES 35
|
||||||
|
#define MAXADDRS 35
|
||||||
|
|
||||||
|
#define AR_TTL 600 /* TTL in seconds for dns cache entries */
|
||||||
|
|
||||||
|
struct hent {
|
||||||
|
char *h_name; /* official name of host */
|
||||||
|
char *h_aliases[MAXALIASES]; /* alias list */
|
||||||
|
int h_addrtype; /* host address type */
|
||||||
|
int h_length; /* length of address */
|
||||||
|
/* list of addresses from name server */
|
||||||
|
struct in_addr h_addr_list[MAXADDRS];
|
||||||
|
#define h_addr h_addr_list[0] /* address, for backward compatiblity */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct reslist {
|
||||||
|
int id;
|
||||||
|
int sent; /* number of requests sent */
|
||||||
|
int srch;
|
||||||
|
time_t ttl;
|
||||||
|
char type;
|
||||||
|
char retries; /* retry counter */
|
||||||
|
char sends; /* number of sends (>1 means resent) */
|
||||||
|
char resend; /* send flag. 0 == dont resend */
|
||||||
|
time_t sentat;
|
||||||
|
time_t timeout;
|
||||||
|
struct in_addr addr;
|
||||||
|
char *name;
|
||||||
|
struct reslist *next;
|
||||||
|
Link cinfo;
|
||||||
|
#ifndef _WIN32
|
||||||
|
struct hent he;
|
||||||
|
#else
|
||||||
|
struct hostent *he;
|
||||||
|
char locked;
|
||||||
|
#endif
|
||||||
|
} ResRQ;
|
||||||
|
|
||||||
|
typedef struct cache {
|
||||||
|
time_t expireat;
|
||||||
|
time_t ttl;
|
||||||
|
#ifndef _WIN32
|
||||||
|
struct hostent he;
|
||||||
|
#else
|
||||||
|
struct hostent *he;
|
||||||
|
#endif
|
||||||
|
struct cache *hname_next, *hnum_next, *list_next;
|
||||||
|
} aCache;
|
||||||
|
|
||||||
|
typedef struct cachetable {
|
||||||
|
aCache *num_list;
|
||||||
|
aCache *name_list;
|
||||||
|
} CacheTable;
|
||||||
|
|
||||||
|
#define ARES_CACSIZE 101
|
||||||
|
|
||||||
|
#define MAXCACHED 81
|
||||||
|
|
||||||
|
#endif /* __res_include__ */
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1983, 1987, 1989 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms are permitted
|
||||||
|
* provided that: (1) source distributions retain this entire copyright
|
||||||
|
* notice and comment, and (2) distributions including binaries display
|
||||||
|
* the following acknowledgement: ``This product includes software
|
||||||
|
* developed by the University of California, Berkeley and its contributors''
|
||||||
|
* in the documentation or other materials provided with the distribution
|
||||||
|
* and in all advertising materials mentioning features or use of this
|
||||||
|
* software. Neither the name of the University nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
* @(#)resolv.h 5.10.1 (Berkeley) 6/1/90
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Resolver configuration file.
|
||||||
|
* Normally not present, but may contain the address of the
|
||||||
|
* inital name server(s) to query and the domain search list.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _PATH_RESCONF
|
||||||
|
#define _PATH_RESCONF "/etc/resolv.conf"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global defines and variables for resolver stub.
|
||||||
|
*/
|
||||||
|
#define MAXNS 3 /* max # name servers we'll track */
|
||||||
|
#define MAXDFLSRCH 3 /* # default domain levels to try */
|
||||||
|
#define MAXDNSRCH 6 /* max # domains in search path */
|
||||||
|
#define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */
|
||||||
|
#define MAXSERVICES 2 /* max # of services to search */
|
||||||
|
|
||||||
|
#define RES_TIMEOUT 5 /* min. seconds between retries */
|
||||||
|
|
||||||
|
struct state {
|
||||||
|
int retrans; /* retransmition time interval */
|
||||||
|
int retry; /* number of times to retransmit */
|
||||||
|
long options; /* option flags - see below. */
|
||||||
|
int nscount; /* number of name servers */
|
||||||
|
struct sockaddr_in nsaddr_list[MAXNS]; /* address of name server */
|
||||||
|
#define nsaddr nsaddr_list[0] /* for backward compatibility */
|
||||||
|
unsigned short id; /* current packet id */
|
||||||
|
char defdname[MAXDNAME]; /* default domain */
|
||||||
|
char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */
|
||||||
|
unsigned short order[MAXSERVICES+1]; /* search service order */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define RES_SERVICE_NONE 0
|
||||||
|
#define RES_SERVICE_BIND 1
|
||||||
|
#define RES_SERVICE_LOCAL 2
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Resolver options
|
||||||
|
*/
|
||||||
|
#define RES_INIT 0x0001 /* address initialized */
|
||||||
|
#define RES_DEBUG 0x0002 /* print debug messages */
|
||||||
|
#define RES_AAONLY 0x0004 /* authoritative answers only */
|
||||||
|
#define RES_USEVC 0x0008 /* use virtual circuit */
|
||||||
|
#define RES_PRIMARY 0x0010 /* query primary server only */
|
||||||
|
#define RES_IGNTC 0x0020 /* ignore trucation errors */
|
||||||
|
#define RES_RECURSE 0x0040 /* recursion desired */
|
||||||
|
#define RES_DEFNAMES 0x0080 /* use default domain name */
|
||||||
|
#define RES_STAYOPEN 0x0100 /* Keep TCP socket open */
|
||||||
|
#define RES_DNSRCH 0x0200 /* search up local domain tree */
|
||||||
|
|
||||||
|
#define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH)
|
||||||
|
|
||||||
|
extern struct state _res;
|
||||||
|
extern char *p_cdname(), *p_rr(), *p_type(), *p_class(), *p_time();
|
||||||
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
//{{NO_DEPENDENCIES}}
|
||||||
|
// Microsoft Developer Studio generated include file.
|
||||||
|
// Used by GENERIC.RC
|
||||||
|
// $Id$
|
||||||
|
#define IDC_USERID 1051
|
||||||
|
#define IDC_REALNAME 1052
|
||||||
|
#define IDC_PNICK 1053
|
||||||
|
#define IDC_ANICK 1054
|
||||||
|
#define IDC_SERVERLIST 1057
|
||||||
|
#define IDC_NEWSERVER 1058
|
||||||
|
#define IDC_EDITSERVER 1059
|
||||||
|
#define IDC_IRCDCONF 1059
|
||||||
|
#define IDC_DELSERVER 1060
|
||||||
|
#define IDC_SHOW_GLOBOPS 1060
|
||||||
|
#define IDC_SHOW_WALLOPS 1061
|
||||||
|
#define IDC_SHOW_HELPOPS 1062
|
||||||
|
#define IDC_SHOW_SERVNOTICE 1063
|
||||||
|
#define IDC_INFOTEXT 1063
|
||||||
|
#define IDM_OPEN 40001
|
||||||
|
#define IDM_SAVE 40002
|
||||||
|
#define IDM_SAVEAS 40003
|
||||||
|
#define IDM_EXIT 40004
|
||||||
|
#define IDM_ABOUT 40005
|
||||||
|
#define IDM_WINDOWCHILD 40006
|
||||||
|
#define IDM_REHASH 40007
|
||||||
|
#define IDM_OPTIONS 40008
|
||||||
|
#define IDM_CREDITS 40009
|
||||||
|
#define IDM_DF 40010
|
||||||
|
#define IDM_LICENSE 40011
|
||||||
|
#define IDM_DBGOFF 41099
|
||||||
|
#define IDM_DBGFATAL 41100
|
||||||
|
#define IDM_DBGERROR 41101
|
||||||
|
#define IDM_DBGNOTICE 41103
|
||||||
|
#define IDM_DBGDNS 41104
|
||||||
|
#define IDM_DBGINFO 41105
|
||||||
|
#define IDM_DBGNUM 41106
|
||||||
|
#define IDM_DBGSEND 41107
|
||||||
|
#define IDM_DBGDEBUG 41108
|
||||||
|
#define IDM_DBGMALLOC 41109
|
||||||
|
#define IDM_DBGLIST 41110
|
||||||
|
#define IDM_POPUP 50000
|
||||||
|
#define IDC_STATIC -1
|
||||||
|
#define IDM_IRCDRULES 65530
|
||||||
|
#define IDM_IRCDMOTD 65531
|
||||||
|
#define IDC_VERSION 65532
|
||||||
|
#define IDM_SETUP 65536
|
||||||
|
#define IDM_IRCDCONF 65535
|
||||||
|
|
||||||
|
// Next default values for new objects
|
||||||
|
//
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
#define _APS_NO_MFC 1
|
||||||
|
#define _APS_NEXT_RESOURCE_VALUE 113
|
||||||
|
#define _APS_NEXT_COMMAND_VALUE 40011
|
||||||
|
#define _APS_NEXT_CONTROL_VALUE 1064
|
||||||
|
#define _APS_NEXT_SYMED_VALUE 104
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/sjoin.h
|
||||||
|
* (C) Carsten Munk 2000
|
||||||
|
* Contains code from StarChat IRCd, (C) their respective authors
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct SynchList aSynchList;
|
||||||
|
|
||||||
|
/* SJOIN synch structure */
|
||||||
|
struct SynchList {
|
||||||
|
char nick[NICKLEN];
|
||||||
|
int deop;
|
||||||
|
int devoice;
|
||||||
|
int dehalf;
|
||||||
|
int deown;
|
||||||
|
int deprot;
|
||||||
|
int op;
|
||||||
|
int voice;
|
||||||
|
int half;
|
||||||
|
int own;
|
||||||
|
int prot;
|
||||||
|
aSynchList *next, *prev;
|
||||||
|
};
|
||||||
|
|
||||||
|
aSynchList *SJSynchList = NULL;
|
||||||
|
|
||||||
|
aSynchList *make_synchlist()
|
||||||
|
{
|
||||||
|
Reg1 aSynchList *synchptr;
|
||||||
|
|
||||||
|
synchptr = (aSynchList *) MyMalloc(sizeof(aSynchList));
|
||||||
|
|
||||||
|
synchptr->nick[0] = 0;
|
||||||
|
synchptr->deop = synchptr->dehalf = synchptr->deown = synchptr->deprot = 0;
|
||||||
|
synchptr->devoice = 0;
|
||||||
|
synchptr->op = 0;
|
||||||
|
synchptr->voice = synchptr->half = synchptr->own = synchptr->prot = 0;
|
||||||
|
synchptr->prev = synchptr->next = NULL;
|
||||||
|
|
||||||
|
return synchptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void free_synchlist(synchptr)
|
||||||
|
aSynchList *synchptr;
|
||||||
|
{
|
||||||
|
MyFree((char *) synchptr);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/sock.h
|
||||||
|
* Copyright (C) 1990 Jarkko Oikarinen and
|
||||||
|
* University of Oulu, Computing Center
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* $Log$
|
||||||
|
* Revision 1.1.1.1 2000/01/30 12:16:33 stskeeps
|
||||||
|
* Begin of CVS at cvs.unreal.sourceforge.net
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/09/01 23:20:37 stskeeps
|
||||||
|
*
|
||||||
|
* Revision 1.2 1999/07/22 14:09:26 stskeeps
|
||||||
|
* *** empty log message ***
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/07/22 13:56:40 stskeeps
|
||||||
|
* 16:56 22-07-99 techie
|
||||||
|
* - Started on using CVS to develop Unreal
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/07/21 10:48:18 stskeeps
|
||||||
|
* 12:47 GMT+2 21 July 1999 - Techie
|
||||||
|
* Starting Unreal with CVS..
|
||||||
|
*
|
||||||
|
* Revision 1.2 1997/12/29 07:17:35 wd
|
||||||
|
* df4.6.2
|
||||||
|
* ee CHANGES for updates
|
||||||
|
* -wd
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1997/08/22 17:23:01 donwulff
|
||||||
|
* Original import from the "deadlined" version.
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1996/11/18 07:53:41 explorer
|
||||||
|
* ircd 4.3.3 -- about time
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1.4.1 1996/09/16 02:45:38 donwulff
|
||||||
|
* *** empty log message ***
|
||||||
|
*
|
||||||
|
* Revision 6.1 1991/07/04 21:04:35 gruner
|
||||||
|
* Revision 2.6.1 [released]
|
||||||
|
*
|
||||||
|
* Revision 6.0 1991/07/04 18:05:04 gruner
|
||||||
|
* frozen beta revision 2.6.1
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FD_ZERO
|
||||||
|
#define FD_ZERO(set) (((set)->fds_bits[0]) = 0)
|
||||||
|
#define FD_SET(s1, set) (((set)->fds_bits[0]) |= 1 << (s1))
|
||||||
|
#define FD_ISSET(s1, set) (((set)->fds_bits[0]) & (1 << (s1)))
|
||||||
|
#define FD_SETSIZE 30
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef RCVTIMEO
|
||||||
|
#define SO_RCVTIMEO 0x1006 /* receive timeout */
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/* Auto created release stamping */
|
||||||
|
#define RELEASEID2 "951777936"
|
||||||
|
#define RELEASESTUFF "draconic"
|
||||||
|
|
||||||
+1082
File diff suppressed because it is too large
Load Diff
+141
@@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
* IRC - Internet Relay Chat, include/sys.h
|
||||||
|
* Copyright (C) 1990 University of Oulu, Computing Center
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __sys_include__
|
||||||
|
#define __sys_include__
|
||||||
|
#ifdef ISC202
|
||||||
|
#include <net/errno.h>
|
||||||
|
#else
|
||||||
|
# ifndef _WIN32
|
||||||
|
#include <sys/errno.h>
|
||||||
|
# else
|
||||||
|
#include <errno.h>
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "setup.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#ifndef _WIN32
|
||||||
|
#include <sys/param.h>
|
||||||
|
#else
|
||||||
|
#include <stdarg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNISTDH
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#ifdef STDLIBH
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef STRINGSH
|
||||||
|
#include <strings.h>
|
||||||
|
#else
|
||||||
|
# ifdef STRINGH
|
||||||
|
# include <string.h>
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef GOT_STRCASECMP
|
||||||
|
#define strcasecmp mycmp
|
||||||
|
#define strncasecmp myncmp
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NOINDEX
|
||||||
|
#define index strchr
|
||||||
|
#define rindex strrchr
|
||||||
|
/*
|
||||||
|
extern char *index PROTO((char *, char));
|
||||||
|
extern char *rindex PROTO((char *, char));
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
|
#ifdef NOBCOPY
|
||||||
|
#define bcopy(x,y,z) memcpy(y,x,z)
|
||||||
|
#define bcmp(x,y,z) memcmp(x,y,z)
|
||||||
|
#define bzero(p,s) memset(p,0,s)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AIX
|
||||||
|
#include <sys/select.h>
|
||||||
|
#endif
|
||||||
|
#if defined(HPUX )|| defined(AIX) || defined(_WIN32)
|
||||||
|
#include <time.h>
|
||||||
|
#ifdef AIX
|
||||||
|
#include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(DEBUGMODE)
|
||||||
|
# ifndef _WIN32
|
||||||
|
# define MyFree(x) if ((x) != NULL) free(x)
|
||||||
|
# else
|
||||||
|
# define MyFree(x) if ((x) != NULL) GlobalFree(x)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
#define free(x) MyFree(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NEXT
|
||||||
|
#define VOIDSIG int /* whether signal() returns int of void */
|
||||||
|
#else
|
||||||
|
#define VOIDSIG void /* whether signal() returns int of void */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef SOL20
|
||||||
|
#define OPT_TYPE char /* opt type for get/setsockopt */
|
||||||
|
#else
|
||||||
|
#define OPT_TYPE void
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Different name on NetBSD, FreeBSD, and BSDI
|
||||||
|
*/
|
||||||
|
#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__bsdi__) || defined(__linux__) || defined(__APPLE__)
|
||||||
|
#define dn_skipname __dn_skipname
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
extern VOIDSIG dummy();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DYNIXPTX
|
||||||
|
#define NO_U_TYPES
|
||||||
|
typedef unsigned short n_short; /* short as received from the net */
|
||||||
|
typedef unsigned long n_long; /* long as received from the net */
|
||||||
|
typedef unsigned long n_time; /* ms since 00:00 GMT, byte rev */
|
||||||
|
#define _NETINET_IN_SYSTM_INCLUDED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef NO_U_TYPES
|
||||||
|
typedef unsigned char u_char;
|
||||||
|
typedef unsigned short u_short;
|
||||||
|
typedef unsigned long u_long;
|
||||||
|
typedef unsigned int u_int;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define MYOSNAME "Win32"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __sys_include__ */
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* Userload module by Michael L. VanLoon (mlv) <michaelv@iastate.edu>
|
||||||
|
* Written 2/93. Originally grafted into irc2.7.2g 4/93.
|
||||||
|
*
|
||||||
|
* IRC - Internet Relay Chat, ircd/userload.h
|
||||||
|
* Copyright (C) 1990 University of Oulu, Computing Center
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
/* This needs to be defined for the counts to be correct--it should be the
|
||||||
|
* default anyway, as opers shouldn't be superior to lusers except where
|
||||||
|
* absolutely necessary, and here it isn't necessary. */
|
||||||
|
#ifndef SHOW_INVISIBLE_LUSERS
|
||||||
|
#define SHOW_INVISIBLE_LUSERS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct current_load_struct {
|
||||||
|
u_short client_count, local_count, conn_count;
|
||||||
|
u_long entries;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct current_load_struct current_load_data;
|
||||||
|
|
||||||
|
struct load_entry {
|
||||||
|
struct load_entry *prev;
|
||||||
|
u_short client_count, local_count, conn_count;
|
||||||
|
#ifdef DEBUGMODE
|
||||||
|
u_short cpu_usage;
|
||||||
|
#endif
|
||||||
|
long time_incr;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct load_entry *load_list_head, *load_list_tail,
|
||||||
|
*load_free_head, *load_free_tail;
|
||||||
|
|
||||||
|
|
||||||
|
extern void initload PROTO ((void));
|
||||||
|
extern void update_load PROTO ((void));
|
||||||
|
extern void calc_load PROTO ((aClient *, char *));
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
**
|
||||||
|
** version.h
|
||||||
|
** UnrealIRCd
|
||||||
|
** $Id$
|
||||||
|
*/
|
||||||
|
#ifndef __versioninclude
|
||||||
|
#define __versioninclude 1
|
||||||
|
|
||||||
|
#include "relinfo.h"
|
||||||
|
/*
|
||||||
|
* Mark of settings
|
||||||
|
*/
|
||||||
|
#ifdef DEBUGMODE
|
||||||
|
#define DEBUGMODESET "+(debug)"
|
||||||
|
#else
|
||||||
|
#define DEBUGMODESET ""
|
||||||
|
#endif
|
||||||
|
/**/
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define DEBUGSET "(Debug)"
|
||||||
|
#else
|
||||||
|
#define DEBUGSET ""
|
||||||
|
#endif
|
||||||
|
/**/
|
||||||
|
#define COMPILEINFO DEBUGMODESET DEBUGSET
|
||||||
|
#ifndef WEBTV
|
||||||
|
#define XTRAINFO ""
|
||||||
|
#else
|
||||||
|
#define XTRAINFO "(WebTV)"
|
||||||
|
#endif
|
||||||
|
/*
|
||||||
|
* Version Unreal3.0
|
||||||
|
*/
|
||||||
|
#define UnrealProtocol 2300
|
||||||
|
#define PATCH1 "3"
|
||||||
|
#define PATCH2 ".0"
|
||||||
|
#define PATCH3 "-Morrigan"
|
||||||
|
#define PATCH4 "(fix)"
|
||||||
|
#define PATCH5 ""
|
||||||
|
#define PATCH6 ""
|
||||||
|
#define PATCH7 ""
|
||||||
|
#define PATCH8 COMPILEINFO
|
||||||
|
#define PATCH9 XTRAINFO
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
#define BASE_VERSION "Unreal"
|
||||||
|
#else
|
||||||
|
#define BASE_VERSION "UnrealIRCd/32 v"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define VERSIONONLY PATCH1 PATCH2 PATCH3 PATCH4 PATCH5 PATCH6 PATCH7
|
||||||
|
|
||||||
|
#endif /* __versioninclude */
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/whowas.h
|
||||||
|
* Copyright (C) 1990 Markku Savela
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* $Log$
|
||||||
|
* Revision 1.1.1.1 2000/01/30 12:16:34 stskeeps
|
||||||
|
* Begin of CVS at cvs.unreal.sourceforge.net
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/09/01 23:20:37 stskeeps
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/07/22 13:56:41 stskeeps
|
||||||
|
* 16:56 22-07-99 techie
|
||||||
|
* - Started on using CVS to develop Unreal
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1999/07/21 10:48:18 stskeeps
|
||||||
|
* 12:47 GMT+2 21 July 1999 - Techie
|
||||||
|
* Starting Unreal with CVS..
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Revision 1.2 1997/12/29 07:17:35 wd
|
||||||
|
* df4.6.2
|
||||||
|
* ee CHANGES for updates
|
||||||
|
* -wd
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1997/08/22 17:23:01 donwulff
|
||||||
|
* Original import from the "deadlined" version.
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1 1996/11/18 07:53:42 explorer
|
||||||
|
* ircd 4.3.3 -- about time
|
||||||
|
*
|
||||||
|
* Revision 1.1.1.1.4.1 1996/09/16 02:45:41 donwulff
|
||||||
|
* *** empty log message ***
|
||||||
|
*
|
||||||
|
* Revision 6.1 1991/07/04 21:04:39 gruner
|
||||||
|
* Revision 2.6.1 [released]
|
||||||
|
*
|
||||||
|
* Revision 6.0 1991/07/04 18:05:08 gruner
|
||||||
|
* frozen beta revision 2.6.1
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __whowas_include__
|
||||||
|
#define __whowas_include__
|
||||||
|
|
||||||
|
#ifndef PROTO
|
||||||
|
#if __STDC__
|
||||||
|
# define PROTO(x) x
|
||||||
|
#else
|
||||||
|
# define PROTO(x) ()
|
||||||
|
#endif /* __STDC__ */
|
||||||
|
#endif /* ! PROTO */
|
||||||
|
|
||||||
|
/*
|
||||||
|
** WHOWAS structure moved here from whowas.c
|
||||||
|
*/
|
||||||
|
typedef struct aname {
|
||||||
|
anUser *ww_user;
|
||||||
|
aClient *ww_online;
|
||||||
|
time_t ww_logout;
|
||||||
|
long ww_umodes;
|
||||||
|
char ww_nick[NICKLEN+1];
|
||||||
|
char ww_info[REALLEN+1];
|
||||||
|
} aName;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** add_history
|
||||||
|
** Add the currently defined name of the client to history.
|
||||||
|
** usually called before changing to a new name (nick).
|
||||||
|
** Client must be a fully registered user (specifically,
|
||||||
|
** the user structure must have been allocated).
|
||||||
|
*/
|
||||||
|
void add_history PROTO((aClient *));
|
||||||
|
|
||||||
|
/*
|
||||||
|
** off_history
|
||||||
|
** This must be called when the client structure is about to
|
||||||
|
** be released. History mechanism keeps pointers to client
|
||||||
|
** structures and it must know when they cease to exist. This
|
||||||
|
** also implicitly calls AddHistory.
|
||||||
|
*/
|
||||||
|
void off_history PROTO((aClient *));
|
||||||
|
|
||||||
|
/*
|
||||||
|
** get_history
|
||||||
|
** Return the current client that was using the given
|
||||||
|
** nickname within the timelimit. Returns NULL, if no
|
||||||
|
** one found...
|
||||||
|
*/
|
||||||
|
aClient *get_history PROTO((char *, time_t));
|
||||||
|
/* Nick name */
|
||||||
|
/* Time limit in seconds */
|
||||||
|
|
||||||
|
int m_whowas PROTO((aClient *, aClient *, int, char *[]));
|
||||||
|
|
||||||
|
/*
|
||||||
|
** for debugging...counts related structures stored in whowas array.
|
||||||
|
*/
|
||||||
|
void count_whowas_memory PROTO((int *, int *, u_long *));
|
||||||
|
|
||||||
|
#endif /* __whowas_include__ */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#define SPATH "."
|
||||||
|
#define DPATH "."
|
||||||
|
#define DOMAINNAME "irc.net"
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/************************************************************************
|
||||||
|
* IRC - Internet Relay Chat, include/win32/setup.h
|
||||||
|
* Copyright (C) 1999 Carsten Munk
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __setup_include__
|
||||||
|
#define __setup_include__
|
||||||
|
#undef PARAMH
|
||||||
|
#undef UNISTDH
|
||||||
|
#define STRINGH
|
||||||
|
#undef STRINGSH
|
||||||
|
#define STDLIBH
|
||||||
|
#undef STDDEFH
|
||||||
|
#undef SYSSYSLOGH
|
||||||
|
#define NOINDEX
|
||||||
|
#define NOBCOPY
|
||||||
|
#define NEED_STRERROR
|
||||||
|
#define NEED_STRTOKEN
|
||||||
|
#undef NEED_STRTOK
|
||||||
|
#undef NEED_INET_ADDR
|
||||||
|
#undef NEED_INET_NTOA
|
||||||
|
#define NEED_INET_NETOF
|
||||||
|
#define GETTIMEOFDAY
|
||||||
|
#undef LRAND48
|
||||||
|
#define MALLOCH <malloc.h>
|
||||||
|
#undef NBLOCK_POSIX
|
||||||
|
#undef POSIX_SIGNALS
|
||||||
|
#undef TIMES_2
|
||||||
|
#undef GETRUSAGE_2
|
||||||
|
|
||||||
|
#define NO_U_TYPES
|
||||||
|
#define NEED_U_INT32_T
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# IRCD Script v3.0
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
DIR=`pwd`
|
||||||
|
DATE=`date +"%a, %b %e %Y"`
|
||||||
|
TIME=`date +"%H:%M:%S %Z"`
|
||||||
|
IRCDPID="ircd.pid"
|
||||||
|
BACKUP="ircd.bak"
|
||||||
|
|
||||||
|
if [ -r $IRCDPID ]; then
|
||||||
|
mv -f $IRCDPID $BACKUP
|
||||||
|
src/ircd
|
||||||
|
sleep 1
|
||||||
|
if [ ! -r $IRCDPID ]; then
|
||||||
|
mv -f $BACKUP $IRCDPID
|
||||||
|
echo "|--------------------------------------------|"
|
||||||
|
echo "| **** ERROR **** |"
|
||||||
|
echo "| Possible problems: |"
|
||||||
|
echo "| (1) IRCd already running. |"
|
||||||
|
echo "| (2) The correct IP was not placed in the |"
|
||||||
|
echo "| M:line of the ircd.conf. |"
|
||||||
|
echo "| (3) DPATH or SPATH's are incorrect. Run |"
|
||||||
|
echo "| ./Config to correct that. |"
|
||||||
|
echo "| (4) Someone else is running an ircd on the |"
|
||||||
|
echo "| default port you chose in ircd.conf. |"
|
||||||
|
echo "|********************************************|"
|
||||||
|
echo "| If you can't get Unreal IRCd to work - go |"
|
||||||
|
echo "| to /server irc.flirt.org and join |"
|
||||||
|
echo "| #UnrealIRCd or mail us at |"
|
||||||
|
echo "| unreal-support@lists.sourceforge.net |"
|
||||||
|
echo "| |"
|
||||||
|
echo "|--------------------------------------------|"
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
echo "|----------------------------------------"
|
||||||
|
echo "| UnrealIRCD successfully loaded."
|
||||||
|
echo "| Directory: $DIR"
|
||||||
|
echo "| Date: $DATE"
|
||||||
|
echo "| Time: $TIME"
|
||||||
|
PID=`cat ircd.pid`
|
||||||
|
echo "| Process ID: $PID"
|
||||||
|
echo "|----------------------------------------"
|
||||||
|
rm -f $BACKUP
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
src/ircd
|
||||||
|
sleep 2
|
||||||
|
if [ ! -r $IRCDPID ]; then
|
||||||
|
echo "|--------------------------------------------|"
|
||||||
|
echo "| **** ERROR **** |"
|
||||||
|
echo "| Possible problems: |"
|
||||||
|
echo "| (1) IRCd already running. |"
|
||||||
|
echo "| (2) The correct IP was not placed in the |"
|
||||||
|
echo "| M:line of the ircd.conf. |"
|
||||||
|
echo "| (3) DPATH or SPATH's are incorrect. Run |"
|
||||||
|
echo "| ./Config to correct that. |"
|
||||||
|
echo "| (4) Someone else is running an ircd on the |"
|
||||||
|
echo "| default port you chose in ircd.conf. |"
|
||||||
|
echo "|********************************************|"
|
||||||
|
echo "| If you can't get Unreal IRCd to work - go |"
|
||||||
|
echo "| to /server irc.global-irc.net and join |"
|
||||||
|
echo "| #Global - Try ask in the channel or /msg |"
|
||||||
|
echo "| Stskeeps/Techie(me!) or else-- email me at |"
|
||||||
|
echo "| stskeeps@tspre.org |"
|
||||||
|
echo "|--------------------------------------------|"
|
||||||
|
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
echo "|----------------------------------------"
|
||||||
|
echo "| UnrealIRCD successfully loaded."
|
||||||
|
echo "| Directory: $DIR"
|
||||||
|
echo "| Date: $DATE"
|
||||||
|
echo "| Time: $TIME"
|
||||||
|
PID=`cat ircd.pid`
|
||||||
|
echo "| Process ID: $PID"
|
||||||
|
echo "|----------------------------------------"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
Executable
+1
@@ -0,0 +1 @@
|
|||||||
|
0,10,20,30,40,50 * * * * /home/mydir-to/ircdcron/ircdchk >/dev/null 2>&1
|
||||||
Executable
+49
@@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# UnrealIRCD Crontab v2.1
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# This is a script suitable for use in a crontab. It checks to make sure
|
||||||
|
# your ircd is running. YOU NEED A SEPARATE CRON JOB FOR EACH IRCD. If your
|
||||||
|
# ircd isn't found, it'll try to start it back up.
|
||||||
|
#
|
||||||
|
# You'll need to edit this script for your ircd.
|
||||||
|
#
|
||||||
|
# To check for your ircd every 10 minutes, put the following line in your
|
||||||
|
# crontab:
|
||||||
|
# 0,10,20,30,40,50 * * * * /home/mydir/ircdchk
|
||||||
|
# And if you don't want to get email from crontab when it checks you ircd,
|
||||||
|
# put the following in your crontab:
|
||||||
|
# 0,10,20,30,40,50 * * * * /home/mydir/ircdchk >/dev/null 2>&1
|
||||||
|
#
|
||||||
|
# change this to the mail address to mail output to:
|
||||||
|
MAIL=me
|
||||||
|
# change this to the directory you run your ircd from:
|
||||||
|
dir="../"
|
||||||
|
|
||||||
|
# change this to the name of your ircd's file in that directory:
|
||||||
|
ircdexe="ircd"
|
||||||
|
|
||||||
|
# I wouldn't touch this if I were you.
|
||||||
|
ircdname="ircd.pid"
|
||||||
|
|
||||||
|
########## you probably don't need to change anything below here ##########
|
||||||
|
|
||||||
|
cd $dir
|
||||||
|
if test -r $ircdname; then
|
||||||
|
# there is a pid file -- is it current?
|
||||||
|
ircdpid=`cat $ircdname`
|
||||||
|
if `kill -CHLD $ircdpid >/dev/null 2>&1`; then
|
||||||
|
# it's still going
|
||||||
|
# back out quietly
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "UnrealIRCd Crontab notice:"
|
||||||
|
echo ""
|
||||||
|
echo "Stale $ircdname file (erasing it)"
|
||||||
|
rm -f $ircdname
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "Couldn't find the ircd running. Reloading it..."
|
||||||
|
echo ""
|
||||||
|
./$ircdexe
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
lynx http://unreal.sourceforge.net/register.html
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Kill Script v2.0
|
||||||
|
# Created by Potvin
|
||||||
|
# $Id$
|
||||||
|
DIR=`pwd`
|
||||||
|
DATE=`date +"%a, %b %e %Y"`
|
||||||
|
TIME=`date +"%H:%M:%S %Z"`
|
||||||
|
IRCDPID="ircd.pid"
|
||||||
|
|
||||||
|
if [ ! -r $IRCDPID ]; then
|
||||||
|
clear
|
||||||
|
echo "|--------------------------------------------|"
|
||||||
|
echo "| **** ERROR **** |"
|
||||||
|
echo "| Possible problems: |"
|
||||||
|
echo "| (1) $IRCDPID not found |"
|
||||||
|
echo "| (2) The IRCd is not running |"
|
||||||
|
echo "|--------------------------------------------|"
|
||||||
|
else
|
||||||
|
PID=`cat $IRCDPID`
|
||||||
|
kill -9 $PID >/dev/null 2>&1
|
||||||
|
rm -f $IRCDPID
|
||||||
|
echo "|----------------------------------------"
|
||||||
|
echo "| UnrealIRCD successfully shutdown."
|
||||||
|
echo "| Directory: $DIR"
|
||||||
|
echo "| Date: $DATE"
|
||||||
|
echo "| Time: $TIME"
|
||||||
|
echo "| Process ID: $PID"
|
||||||
|
echo "|----------------------------------------"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,543 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# $Id$
|
||||||
|
# Defaults
|
||||||
|
#
|
||||||
|
TIME=`date +"%H:%M:%S %Z"`
|
||||||
|
DATE=`date +"%a, %b %e %Y"`
|
||||||
|
IRCDCONF="ircd.conf"
|
||||||
|
SERVNAME="Server.IRC.net"
|
||||||
|
COMMENT="IRC server!"
|
||||||
|
ADMIN="Admin-name"
|
||||||
|
ADMNICK="Admin"
|
||||||
|
ADMADDR="admin@no.where.com"
|
||||||
|
OPERNAME="admin"
|
||||||
|
OPERADDR="*@*"
|
||||||
|
OPERPASS="password"
|
||||||
|
PORT="6667"
|
||||||
|
OPRT="default"
|
||||||
|
LINKPASS="linkpass"
|
||||||
|
VIRTUAL="1.2.3.4"
|
||||||
|
ENCRYPT="Yes"
|
||||||
|
FLAGS="OAZHWe"
|
||||||
|
RESTARTPASS="restartpass"
|
||||||
|
DIEPASS="diepass"
|
||||||
|
SERVICES="Services.ShadowNet.Org"
|
||||||
|
|
||||||
|
# these are so I can use stuff like $1 without it replacing it...like by
|
||||||
|
# using $dlrsgn$uno for $1
|
||||||
|
dlrsgn="$"
|
||||||
|
uno="1"
|
||||||
|
dos="2"
|
||||||
|
|
||||||
|
# remove the temp file if it exists
|
||||||
|
rm -f mkconf.tmp
|
||||||
|
|
||||||
|
# make a quick script for replacing one line with another
|
||||||
|
|
||||||
|
cat > repl_str << __EOF__
|
||||||
|
sed -e "s@^$dlrsgn$uno\(.*\)@$dlrsgn$dos" $IRCDCONF > mkconf.tmp
|
||||||
|
cp mkconf.tmp $IRCDCONF
|
||||||
|
rm mkconf.tmp
|
||||||
|
__EOF__
|
||||||
|
|
||||||
|
# mark repl_str as an executable
|
||||||
|
chmod +x repl_str
|
||||||
|
rm -f repl_str
|
||||||
|
# Checking out how to specify not to make a new line with the current OS
|
||||||
|
c=''
|
||||||
|
n=''
|
||||||
|
2>/dev/null
|
||||||
|
if [ "`eval echo -n 'a'`" = "-n a" ]; then
|
||||||
|
c='\c'
|
||||||
|
else
|
||||||
|
n='-n'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If Settings exist, load the info, otherwise tell them to run Config.
|
||||||
|
|
||||||
|
if [ -r Settings ]; then
|
||||||
|
. Settings
|
||||||
|
else
|
||||||
|
echo "Hmm, you need to run Config first!"
|
||||||
|
echo "Type ./Config"
|
||||||
|
echo "If you have run Config, make sure you are in the directory"
|
||||||
|
echo "you ran it from."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONF=$IRCDCONF
|
||||||
|
|
||||||
|
if [ -r "$CONF" ]; then
|
||||||
|
echo "$IRCDCONF found"
|
||||||
|
echo " "
|
||||||
|
echo " I don't suggest running this with the conf file already"
|
||||||
|
echo "existing, since you will lose all the data in your conf file."
|
||||||
|
echo "This script is just for creating one. If you want to recreate"
|
||||||
|
echo "a conf file, type 'recreate'."
|
||||||
|
echo $n " [exit] -> $c"
|
||||||
|
read cc
|
||||||
|
|
||||||
|
if [ "$cc" != "recreate" ]; then
|
||||||
|
echo " "
|
||||||
|
echo " OK, do you want to edit $IRCDCONF using an editor?"
|
||||||
|
echo "If so, specify the editor you want to use. Otherwise,"
|
||||||
|
echo "type 'exit'."
|
||||||
|
EDITFND="not found"
|
||||||
|
|
||||||
|
if [ -r /usr/bin/pico ]; then
|
||||||
|
EDITFND="pico"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -r /usr/bin/joe ]; then
|
||||||
|
EDITFND="joe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -r /usr/bin/vi ]; then
|
||||||
|
EDITFND="vi"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -r /usr/bin/vim ]; then
|
||||||
|
EDITFND="vim"
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ "c" = "c" ]; do
|
||||||
|
echo $n " [$EDITFND] -> $c"
|
||||||
|
read EDITOR
|
||||||
|
|
||||||
|
if [ -z "$EDITOR" ]; then
|
||||||
|
EDITOR="$EDITFND"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$EDITOR" = "exit" ]; then
|
||||||
|
echo "Have a nice day."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $EDITOR ]; then
|
||||||
|
$EDITOR $CONF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /usr/bin/$EDITOR ]; then
|
||||||
|
/usr/bin/$EDITOR $CONF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " Editor not found. Specify a valid editor or"
|
||||||
|
echo "type 'exit' to quit this script."
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv $CONF "$CONF.saved"
|
||||||
|
rm $CONF
|
||||||
|
echo "$IRCDCONF has been renamed to ircd.conf.saved"
|
||||||
|
else
|
||||||
|
echo "$IRCDCONF is not found. (good)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
clear
|
||||||
|
echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
|
||||||
|
echo "| Welcome to the $IRCDCONF generator. |"
|
||||||
|
echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
|
||||||
|
echo " "
|
||||||
|
echo "What will your server name be? (ie: $SERVNAME)"
|
||||||
|
echo $n " [$SERVNAME] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
SERVNAME="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What is your IRC server's IP? (ie: $VIRTUAL)"
|
||||||
|
echo "Use * to bind to all interfaces"
|
||||||
|
echo $n " [$VIRTUAL] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
VIRTUAL="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "Server comment? (ie: Main Hub Server)"
|
||||||
|
echo $n " [$COMMENT] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
COMMENT="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "Main port? (ie: 6667)"
|
||||||
|
echo $n " [$PORT] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
PORT="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What is your real name? (ie: John Doe)"
|
||||||
|
echo $n " [$ADMIN] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
ADMIN="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What is your IRC nickname? (ie: JD)"
|
||||||
|
echo $n " [$ADMNICK] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
ADMNICK="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What is your e-mail address? (ie: john@doe.com)"
|
||||||
|
echo $n " [$ADMADDR] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
ADMADDR="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
OPERNAME="$ADMNICK"
|
||||||
|
echo "What will your opername be for your O:line? (ie: johndoe)"
|
||||||
|
echo $n " [$OPERNAME] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
OPERNAME="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What oper flags do you want to have? (ie: OAWZ)"
|
||||||
|
echo "Some flags to choose from:"
|
||||||
|
echo " o = local oper"
|
||||||
|
echo " O = global oper"
|
||||||
|
echo " N = network administrator"
|
||||||
|
echo " A = server administrator"
|
||||||
|
echo " C = co administrator"
|
||||||
|
echo " T = technical administrator"
|
||||||
|
echo " read unrealircd.doc for more info about O:line flags)"
|
||||||
|
echo $n " [$FLAGS] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
FLAGS="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
ENCRYPT=""
|
||||||
|
ENCRYPT="bad"
|
||||||
|
while [ "$ENCRYPT" = "bad" ]; do
|
||||||
|
echo "Do you use encrypted oper passwords?"
|
||||||
|
echo $n " [Yes] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ -z "$cc" ]; then
|
||||||
|
cc="Yes"
|
||||||
|
fi
|
||||||
|
case "$cc" in
|
||||||
|
[Yy]*)
|
||||||
|
ENCRYPT="Yes"
|
||||||
|
;;
|
||||||
|
[Nn]*)
|
||||||
|
ENCRYPT="No"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Please specify yes or no."
|
||||||
|
ENCRYPT="bad"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$ENCRYPT" = "Yes" ] ; then
|
||||||
|
echo "Compile the file called mkpasswd.c in the 'crypt' directory"
|
||||||
|
echo "Then run it (./mkpasswd) and input the passwd to be encrypted"
|
||||||
|
echo "Then copy the output into the passwd slot in the O:line"
|
||||||
|
echo "NOTE: You can encrypt on irc via /mkpasswd <passwd>"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What will your /oper password be? (ie: snoopy67)"
|
||||||
|
echo $n " [$OPERPASS] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
OPERPASS="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What is your user@host mask on IRC? (ie: *@*.toronto.globalserve.net)"
|
||||||
|
echo $n " [$OPERADDR] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
OPERADDR="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What do you want your die password to be?"
|
||||||
|
echo $n " [$DIEPASS] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
DIEPASS="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "What do you want your restart password to be?"
|
||||||
|
echo $n " [$RESTARTPASS] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ ! -z "$cc" ]; then
|
||||||
|
RESTARTPASS="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "If your running services, or linking to a network that has"
|
||||||
|
echo "services, please state the services servername."
|
||||||
|
echo "If you are running a non-services network, just type 'next'"
|
||||||
|
echo $n " [$SERVICES] -> $c"
|
||||||
|
read cc
|
||||||
|
|
||||||
|
#if [ ! -z "$cc" ]; then
|
||||||
|
# SERVICES="$cc"
|
||||||
|
#fi
|
||||||
|
|
||||||
|
if [ "$cc" = "next" ]; then
|
||||||
|
SERVICES="No.Services.Selected"
|
||||||
|
elif [ ! -z "$cc" ]; then
|
||||||
|
SERVICES="$cc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat > $CONF << __EOF__
|
||||||
|
########################
|
||||||
|
#
|
||||||
|
# Filename: $IRCDCONF
|
||||||
|
# Created: $DATE - $TIME
|
||||||
|
#
|
||||||
|
########################
|
||||||
|
|
||||||
|
############ Server Info ############
|
||||||
|
M:$SERVNAME:$VIRTUAL:$COMMENT:$PORT
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
############ Administrator Information #############
|
||||||
|
A:$ADMIN:$ADMNICK:$ADMADDR
|
||||||
|
####################################################
|
||||||
|
|
||||||
|
############ Y-lines #############
|
||||||
|
# Client Y:lines
|
||||||
|
Y:1:90:0:$MAXCONNECTIONS:100000
|
||||||
|
# Server Y:lines
|
||||||
|
Y:50:300:600:1:1000000
|
||||||
|
##################################
|
||||||
|
|
||||||
|
############ I/Access Lines #############
|
||||||
|
I:*@*::*@*::1
|
||||||
|
#########################################
|
||||||
|
|
||||||
|
############ X:LINE Die/Restart Password ############
|
||||||
|
X:$DIEPASS:$RESTARTPASS
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
## O-line (O:hostmask:password:opername:flags:1) ##
|
||||||
|
O:$OPERADDR:$OPERPASS:$OPERNAME:$FLAGS:1
|
||||||
|
###################################################
|
||||||
|
|
||||||
|
__EOF__
|
||||||
|
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo " Would you like to configure any servers for linking?"
|
||||||
|
echo "Type the servername, or type 'done' when finished."
|
||||||
|
echo $n " [done] -> $c"
|
||||||
|
read cc
|
||||||
|
|
||||||
|
if [ -z "$cc" ]; then
|
||||||
|
cc="done"
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [ "$cc" != "done" ]; do
|
||||||
|
THESERV="$cc"
|
||||||
|
|
||||||
|
SHOST="none"
|
||||||
|
while [ "$SHOST" = "none" ]; do
|
||||||
|
echo " "
|
||||||
|
echo "Hostname or ip for the other server? Must be specified."
|
||||||
|
echo $n " [] -> $c"
|
||||||
|
read SHOST
|
||||||
|
done
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "Password to send to the other server?"
|
||||||
|
echo $n " [$LINKPASS] -> $c"
|
||||||
|
read CLP
|
||||||
|
if [ -z "$CLP" ]; then
|
||||||
|
CLP="$LINKPASS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
AUTOPORT=""
|
||||||
|
AUTOCONN="bad"
|
||||||
|
while [ "$AUTOCONN" = "bad" ]; do
|
||||||
|
echo " "
|
||||||
|
echo "Should we autconnect to this server?"
|
||||||
|
echo $n " [Yes] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ -z "$cc" ]; then
|
||||||
|
cc="Yes"
|
||||||
|
fi
|
||||||
|
case "$cc" in
|
||||||
|
[Yy]*)
|
||||||
|
AUTOCONN="yes"
|
||||||
|
echo "What port should we autoconnect to?"
|
||||||
|
echo $n " [7029] -> $c"
|
||||||
|
read AUTOPORT
|
||||||
|
if [ -z "$AUTOPORT" ]; then
|
||||||
|
AUTOPORT="7029"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
[Nn]*)
|
||||||
|
AUTOCONN="no"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Please specify yes or no."
|
||||||
|
AUTOCONN="bad"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
HUB="bad"
|
||||||
|
while [ "$HUB" = "bad" ]; do
|
||||||
|
echo " "
|
||||||
|
echo "Will this server be a hub?"
|
||||||
|
echo $n " [Yes] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ -z "$cc" ]; then
|
||||||
|
cc="Yes"
|
||||||
|
fi
|
||||||
|
case "$cc" in
|
||||||
|
[Yy]*)
|
||||||
|
HUB="Yes"
|
||||||
|
;;
|
||||||
|
[Nn]*)
|
||||||
|
HUB="no"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Please specify yes or no."
|
||||||
|
HUB="bad"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$HUB" = "Yes" ]; then
|
||||||
|
echo "############ HUB LINES #############" >> $CONF
|
||||||
|
echo "H:*:*:$THESERV" >> $CONF
|
||||||
|
echo "####################################" >> $CONF
|
||||||
|
echo "" >> $CONF
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "############ C/N LINES #############" >> $CONF
|
||||||
|
echo "C:$SHOST:$CLP:$THESERV:$AUTOPORT:50" >> $CONF
|
||||||
|
echo "N:$SHOST:$CLP:$THESERV::50" >> $CONF
|
||||||
|
echo "####################################" >> $CONF
|
||||||
|
echo "" >> $CONF
|
||||||
|
|
||||||
|
echo " "
|
||||||
|
echo "Type the servername, or type 'done' when finished."
|
||||||
|
echo $n " [done] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ -z "$cc" ]; then
|
||||||
|
cc="done"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cat >> $CONF << __EOF__
|
||||||
|
############ Uline for Services ############
|
||||||
|
U:$SERVICES:*:*
|
||||||
|
############################################
|
||||||
|
|
||||||
|
############ Q-Lined NickNames ############
|
||||||
|
Q::Reserved for services:*C*h*a*n*S*e*r*v*
|
||||||
|
Q::Reserved for services:*N*i*c*k*S*e*r*v*
|
||||||
|
Q::Reserved for services:*M*e*m*o*S*e*r*v*
|
||||||
|
Q::Reserved for services:*H*e*l*p*S*e*r*v*
|
||||||
|
Q::Reserved for services:*O*p*e*r*S*e*r*v*
|
||||||
|
Q::Reserved for services:*I*n*f*o*S*e*r*v*
|
||||||
|
Q::Reserved for Administrator:*Admin*
|
||||||
|
Q::Reserved for ircops:*IRC*op*
|
||||||
|
Q::Reserved for ircops:*Oper*
|
||||||
|
Q::Bug in mIRC:Status
|
||||||
|
###########################################
|
||||||
|
|
||||||
|
############ PORT LINES #############
|
||||||
|
__EOF__
|
||||||
|
|
||||||
|
cc="blank"
|
||||||
|
echo " "
|
||||||
|
echo " "
|
||||||
|
echo " Would you like any extra ports, other than 6667? Enter them here."
|
||||||
|
echo "Type 'done' when you are finished. Type 'default' to use 6665-6669/7000."
|
||||||
|
while [ "$cc" != "done" ]; do
|
||||||
|
echo $n " [$OPRT] -> $c"
|
||||||
|
read cc
|
||||||
|
if [ -z "$cc" ]; then
|
||||||
|
cc="$OPRT"
|
||||||
|
fi
|
||||||
|
if [ "$cc" = "default" ]; then
|
||||||
|
echo "P:$VIRTUAL:*:*:6660" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6661" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6662" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6663" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6664" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6665" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6666" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6668" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:6669" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:7000" >> $CONF
|
||||||
|
echo "P:$VIRTUAL:*:*:7029" >> $CONF
|
||||||
|
echo "#####################################" >> $CONF
|
||||||
|
cc="done"
|
||||||
|
fi
|
||||||
|
if [ "$cc" != "done" ]; then
|
||||||
|
if [ $cc = "$PORT" ]; then
|
||||||
|
echo " No, $PORT is already defined in the M:line,"
|
||||||
|
echo "please use a port other than $PORT."
|
||||||
|
else
|
||||||
|
echo "P:$VIRTUAL:*:*:$cc" >> $CONF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
case "$OPRT" in
|
||||||
|
6660) OPRT="done"
|
||||||
|
;;
|
||||||
|
6661) OPRT="6660"
|
||||||
|
;;
|
||||||
|
6662) OPRT="6661"
|
||||||
|
;;
|
||||||
|
6663) OPRT="6662"
|
||||||
|
;;
|
||||||
|
6664) OPRT="6663"
|
||||||
|
;;
|
||||||
|
6665) OPRT="6664"
|
||||||
|
;;
|
||||||
|
6666) OPRT="6665"
|
||||||
|
;;
|
||||||
|
6669) OPRT="6666"
|
||||||
|
;;
|
||||||
|
6668) OPRT="6669"
|
||||||
|
;;
|
||||||
|
6667) OPRT="6668"
|
||||||
|
;;
|
||||||
|
*) OPRT="done"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Make it so ONLY the one who created the conf can read or write.
|
||||||
|
chmod 700 $IRCDCONF
|
||||||
|
|
||||||
|
cat << __EOF__
|
||||||
|
|
||||||
|
|
||||||
|
OK, $IRCDCONF has been generated according to what you specified.
|
||||||
|
Make sure you double check for errors in $IRCDCONF. We recommend that
|
||||||
|
you take a look at your $IRCDCONF right now. Thanks for using UnrealIRCd
|
||||||
|
|
||||||
|
__EOF__
|
||||||
|
echo "Have a nice day."
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
+177
@@ -0,0 +1,177 @@
|
|||||||
|
#
|
||||||
|
# Win32Gui Config File .. By DrBin
|
||||||
|
#
|
||||||
|
CC=cl
|
||||||
|
# Here you put your settings
|
||||||
|
FD_SETSIZE=/D FD_SETSIZE=16384
|
||||||
|
NS_ADDRESS=/D NS_ADDRESS="\"nospoof@dal.net\""
|
||||||
|
CFLAGS=/MT /O2 /G5 /I ./INCLUDE /Fosrc/ /nologo $(FD_SETSIZE) $(NS_ADDRESS) /D _WIN32GUI /D NOSPOOF=1 /c
|
||||||
|
INCLUDES=./include/struct.h ./include/config.h ./include/sys.h \
|
||||||
|
./include/common.h ./include/version.h ./include/h.h ./include/numeric.h \
|
||||||
|
./include/msg.h ./include/setup.h ./include/dynconf.h
|
||||||
|
LINK=link.exe
|
||||||
|
LFLAGS=kernel32.lib user32.lib gdi32.lib shell32.lib wsock32.lib \
|
||||||
|
oldnames.lib libcmt.lib comctl32.lib /nodefaultlib /nologo /out:WIRCD2.EXE
|
||||||
|
OBJ_FILES=SRC/CHANNEL.OBJ SRC/USERLOAD.OBJ SRC/SEND.OBJ SRC/BSD.OBJ \
|
||||||
|
SRC/S_CONF.OBJ SRC/FDLIST.OBJ SRC/DBUF.OBJ SRC/RES.OBJ \
|
||||||
|
SRC/CLOAK.OBJ SRC/HASH.OBJ SRC/PARSE.OBJ SRC/IRCD.OBJ \
|
||||||
|
SRC/S_NUMERIC.OBJ SRC/WHOWAS.OBJ SRC/RES_COMP.OBJ SRC/S_AUTH.OBJ \
|
||||||
|
SRC/HELP.OBJ SRC/S_MISC.OBJ SRC/MATCH.OBJ SRC/CRULE.OBJ \
|
||||||
|
SRC/S_DEBUG.OBJ SRC/RES_INIT.OBJ SRC/SUPPORT.OBJ SRC/LIST.OBJ \
|
||||||
|
SRC/S_ERR.OBJ SRC/PACKET.OBJ SRC/CLASS.OBJ SRC/S_BSD.OBJ \
|
||||||
|
SRC/MD5.OBJ SRC/S_SERV.OBJ SRC/S_USER.OBJ SRC/WIN32GUI.OBJ \
|
||||||
|
SRC/VERSION.OBJ SRC/win32/WIN32.RES SRC/S_UNREAL.OBJ SRC/DYNCONF.OBJ \
|
||||||
|
SRC/S_SOCKS.OBJ SRC/S_KLINE.OBJ SRC/S_EXTRA.OBJ
|
||||||
|
RC=rc.exe
|
||||||
|
|
||||||
|
ALL: WIRCD.EXE CHKCONF.EXE
|
||||||
|
@echo Please, please REMEMBER to add those U lines!
|
||||||
|
@echo Read the file READTHIS.NOW formore info
|
||||||
|
|
||||||
|
CLEAN:
|
||||||
|
-@erase src\*.exe 2>NUL
|
||||||
|
-@erase src\*.obj 2>NUL
|
||||||
|
-@erase src\win32.res 2>NUL
|
||||||
|
-@erase src\version.c 2>NUL
|
||||||
|
-@erase src\win32\*.obj 2>NUL
|
||||||
|
-@erase .\*.exe 2>NUL
|
||||||
|
|
||||||
|
#include/setup.h:
|
||||||
|
# @echo Hmm...doesn't look like you've run Config...
|
||||||
|
# @echo Doing so now.
|
||||||
|
# @config.exe
|
||||||
|
|
||||||
|
#src/version.c: dummy
|
||||||
|
# @config.exe -v
|
||||||
|
|
||||||
|
src/version.obj: src/win32/version.c
|
||||||
|
$(CC) $(CFLAGS) src/win32/version.c
|
||||||
|
|
||||||
|
./WIRCD.EXE: $(OBJ_FILES) src/win32/version.obj
|
||||||
|
$(LINK) $(LFLAGS) $(OBJ_FILES)
|
||||||
|
|
||||||
|
./CHKCONF.EXE: ./include/struct.h ./include/config.h ./include/sys.h \
|
||||||
|
./include/common.h ./src/crule.c ./src/match.c ./src/chkconf.c
|
||||||
|
$(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkcrule.obj /c src/crule.c
|
||||||
|
$(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkmatch.obj /c src/match.c
|
||||||
|
$(CC) /nologo /I ./include /D CR_CHKCONF /Fosrc/chkconf.obj /c src/chkconf.c
|
||||||
|
$(LINK) /nologo /out:./chkconf.exe src/chkconf.obj src/chkmatch.obj \
|
||||||
|
src/chkcrule.obj
|
||||||
|
|
||||||
|
src/parse.obj: src/parse.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/parse.c
|
||||||
|
|
||||||
|
src/bsd.obj: src/bsd.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/bsd.c
|
||||||
|
|
||||||
|
src/dbuf.obj: src/dbuf.c $(INCLUDES) ./include/dbuf.h
|
||||||
|
$(CC) $(CFLAGS) src/dbuf.c
|
||||||
|
|
||||||
|
src/packet.obj: src/packet.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/packet.c
|
||||||
|
|
||||||
|
src/fdlist.obj: src/fdlist.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/fdlist.c
|
||||||
|
|
||||||
|
src/dynconf.obj: src/dynconf.c $(INCLUDES) ./include/dbuf.h \
|
||||||
|
./include/channel.h ./include/whowas.h
|
||||||
|
$(CC) $(CFLAGS) src/dynconf.c
|
||||||
|
|
||||||
|
src/send.obj: src/send.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/send.c
|
||||||
|
|
||||||
|
src/match.obj: src/match.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/match.c
|
||||||
|
|
||||||
|
src/support.obj: src/support.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/support.c
|
||||||
|
|
||||||
|
src/channel.obj: src/channel.c $(INCLUDES) ./include/channel.h
|
||||||
|
$(CC) $(CFLAGS) src/channel.c
|
||||||
|
|
||||||
|
src/class.obj: src/class.c $(INCLUDES) ./include/class.h
|
||||||
|
$(CC) $(CFLAGS) src/class.c
|
||||||
|
|
||||||
|
src/ircd.obj: src/ircd.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/ircd.c
|
||||||
|
|
||||||
|
src/list.obj: src/list.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/list.c
|
||||||
|
|
||||||
|
src/res.obj: src/res.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/res.c
|
||||||
|
|
||||||
|
src/s_bsd.obj: src/s_bsd.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_bsd.c
|
||||||
|
|
||||||
|
src/s_auth.obj: src/s_auth.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_auth.c
|
||||||
|
|
||||||
|
src/s_conf.obj: src/s_conf.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_conf.c
|
||||||
|
|
||||||
|
src/s_debug.obj: src/s_debug.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_debug.c
|
||||||
|
|
||||||
|
src/s_err.obj: src/s_err.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_err.c
|
||||||
|
|
||||||
|
src/s_kline.obj: src/s_kline.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_kline.c
|
||||||
|
|
||||||
|
src/s_misc.obj: src/s_misc.c $(INCLUDES) ./include/dbuf.h
|
||||||
|
$(CC) $(CFLAGS) src/s_misc.c
|
||||||
|
|
||||||
|
src/s_socks.obj: src/s_socks.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/s_socks.c
|
||||||
|
|
||||||
|
src/s_user.obj: src/s_user.c $(INCLUDES) ./include/dbuf.h \
|
||||||
|
./include/channel.h ./include/whowas.h
|
||||||
|
$(CC) $(CFLAGS) src/s_user.c
|
||||||
|
|
||||||
|
src/s_extra.obj: src/s_extra.c $(INCLUDES) ./include/dbuf.h \
|
||||||
|
./include/channel.h ./include/whowas.h
|
||||||
|
$(CC) $(CFLAGS) src/s_extra.c
|
||||||
|
|
||||||
|
src/s_unreal.obj: src/s_unreal.c $(INCLUDES) ./include/dbuf.h \
|
||||||
|
./include/channel.h ./include/whowas.h
|
||||||
|
$(CC) $(CFLAGS) src/s_unreal.c
|
||||||
|
|
||||||
|
src/s_serv.obj: src/s_serv.c $(INCLUDES) ./include/dbuf.h ./include/whowas.h
|
||||||
|
$(CC) $(CFLAGS) src/s_serv.c
|
||||||
|
|
||||||
|
src/s_numeric.obj: src/s_numeric.c $(INCLUDES) ./include/dbuf.h
|
||||||
|
$(CC) $(CFLAGS) src/s_numeric.c
|
||||||
|
|
||||||
|
src/whowas.obj: src/whowas.c $(INCLUDES) ./include/dbuf.h ./include/whowas.h
|
||||||
|
$(CC) $(CFLAGS) src/whowas.c
|
||||||
|
|
||||||
|
src/hash.obj: src/hash.c $(INCLUDES) ./include/hash.h
|
||||||
|
$(CC) $(CFLAGS) src/hash.c
|
||||||
|
|
||||||
|
src/crule.obj: src/crule.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/crule.c
|
||||||
|
|
||||||
|
src/win32gui.obj: src/win32/win32gui.c $(INCLUDES) ./src/win32/resource.h
|
||||||
|
#./include/resource.h
|
||||||
|
$(CC) $(CFLAGS) src/win32/win32gui.c
|
||||||
|
|
||||||
|
src/res_comp.obj: src/res_comp.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/res_comp.c
|
||||||
|
|
||||||
|
src/res_init.obj: src/res_init.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/res_init.c
|
||||||
|
|
||||||
|
src/help.obj: src/help.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/help.c
|
||||||
|
|
||||||
|
src/md5.obj: src/md5.c $(INCLUDES)
|
||||||
|
$(CC) $(CFLAGS) src/md5.c
|
||||||
|
|
||||||
|
src/win32/win32.res: src/win32/win32gui.rc
|
||||||
|
$(RC) /l 0x409 /fosrc/win32/win32.res /i ./include /i ./src \
|
||||||
|
/d NDEBUG src/win32/win32gui.rc
|
||||||
|
|
||||||
|
dummy:
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
ver2^2
|
||||||
|
#
|
||||||
|
# Network Configuration File Template
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: <day> <month> <year> <hh:dd> GMT
|
||||||
|
# Author: <nick> (<real name>)
|
||||||
|
# E-Mail: <email>
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
# This is a template so you can create your own network configuration files
|
||||||
|
# Just follow the instructions and it will prolly work ;)
|
||||||
|
# 0 = No 1 = Yes
|
||||||
|
# -------------------------------------------------------
|
||||||
|
#
|
||||||
|
# These two specify the name of the IRC network, set the same in both fields
|
||||||
|
Network >..........: 972-Scripterz
|
||||||
|
Set ircnetwork ....: 972-Scripterz
|
||||||
|
|
||||||
|
# This is where your DNS pool is (like irc.dal.net)
|
||||||
|
Set defserv .......: irc.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the name of your Services Server
|
||||||
|
Set SERVICES_NAME .: services.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the virtual hostname IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set oper_host .....: ircop.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the virtual hostname Server Admins will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set admin_host ....: admin.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the virtual hostname Local IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
|
||||||
|
Set locop_host ....: locop.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the virtual hostname Services Operators/Admins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set sadmin_host ...: serviceop.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the virtual hostname NetAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set netadmin_host .: netadmin.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the virtual hostname CoAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set coadmin_host ..: coadmin.972-Scripterz.org
|
||||||
|
|
||||||
|
|
||||||
|
# This is the virtual hostname TechAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set techadmin_host : techadmin.972-Scripterz.org
|
||||||
|
|
||||||
|
# This is the prefix of the hidden host (cloaking) hostname
|
||||||
|
Set hidden_host ...: sz
|
||||||
|
# This is the domain of the IRC network
|
||||||
|
Set netdomain .....: 972-Scripterz.org
|
||||||
|
# This is where people can go for help
|
||||||
|
Set helpchan ......: #972-Scripterz
|
||||||
|
# This is the name of the stats server
|
||||||
|
Set STATS_SERVER ..: stats.972-Scripters.org
|
||||||
|
# -- Not in use--
|
||||||
|
Set HUB ...........: 0
|
||||||
|
# This enables the auto-setting of f.x @netadmin.network.net
|
||||||
|
# on oper up
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
# -- Not in use but still here --
|
||||||
|
Set net_quit ......: sz
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# Network Configuration File Template
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: <11> <09> <1999> <14:32> GMT
|
||||||
|
# Author: <Kerjin> Steve>)
|
||||||
|
# E-Mail: <kerjin@alternativenet.org>
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
# This is a template so you can create your own network configuration files
|
||||||
|
# Just follow the instructions and it will prolly work ;)
|
||||||
|
# 0 = No 1 = Yes
|
||||||
|
# -------------------------------------------------------
|
||||||
|
#
|
||||||
|
# These two specify the name of the IRC network, set the same in both fields
|
||||||
|
Network >..........: AltNet IRC
|
||||||
|
Set ircnetwork ....: AltNet IRC
|
||||||
|
|
||||||
|
# This is where your DNS pool is (like irc.dal.net)
|
||||||
|
Set defserv .......: irc.alternativenet.org
|
||||||
|
|
||||||
|
# This is the name of your Services Server
|
||||||
|
Set SERVICES_NAME .: services.alternativenet.org
|
||||||
|
|
||||||
|
# This is the virtual hostname IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set oper_host .....: ircop.alternativenet.org
|
||||||
|
|
||||||
|
# This is the virtual hostname Server Admins will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set admin_host ....: admin.alternativenet.org
|
||||||
|
|
||||||
|
# This is the virtual hostname Local IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
|
||||||
|
Set locop_host ....: locop.alternativenet.org
|
||||||
|
|
||||||
|
# This is the virtual hostname Services Operators/Admins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set sadmin_host ...: serviceop.alternativenet.org
|
||||||
|
|
||||||
|
# This is the virtual hostname NetAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set netadmin_host .: netadmin.alternativenet.org
|
||||||
|
|
||||||
|
# This is the virtual hostname CoAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set coadmin_host ..: coadmin.alternativenet.org
|
||||||
|
|
||||||
|
|
||||||
|
# This is the virtual hostname TechAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set techadmin_host : techadmin.alternativenet.org
|
||||||
|
|
||||||
|
# This is the prefix of the hidden host (cloaking) hostname
|
||||||
|
Set hidden_host ...: altirc
|
||||||
|
# This is the domain of the IRC network
|
||||||
|
Set netdomain .....: alternativenet.org
|
||||||
|
# This is where people can go for help
|
||||||
|
Set helpchan ......: #AltNetHelp
|
||||||
|
# This is the name of the stats server
|
||||||
|
Set STATS_SERVER ..: statistics.alternativenet.org
|
||||||
|
# -- Not in use--
|
||||||
|
Set HUB ...........: 1
|
||||||
|
# This enables the auto-setting of f.x @netadmin.network.net
|
||||||
|
# on oper up
|
||||||
|
Set iNAH ..........: 1
|
||||||
|
# -- Not in use but still here --
|
||||||
|
Set net_quit ......: alt
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# Bunker7.net Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 17 August 1999 12:34 CT
|
||||||
|
# Author: Rogue
|
||||||
|
# E-Mail: rogue@bunker7.net
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
Network >..........: bunker7
|
||||||
|
Set ircnetwork ....: bunker7
|
||||||
|
Set defserv .......: irc.bunker7.net
|
||||||
|
Set SERVICES_NAME .: services.bunker7.net
|
||||||
|
Set oper_host .....: global.bunker7.net
|
||||||
|
Set admin_host ....: admin.bunker7.net
|
||||||
|
Set locop_host ....: local.bunker7.net
|
||||||
|
Set sadmin_host ...: sadm.bunker7.net
|
||||||
|
Set netadmin_host .: netadmin.bunker7.net
|
||||||
|
Set coadmin_host ..: coadmin.bunker7.net
|
||||||
|
Set techadmin_host : techadmin.bunker7.net
|
||||||
|
Set hidden_host ...: bunker7
|
||||||
|
Set netdomain .....: bunker7.net
|
||||||
|
Set helpchan ......: #bunker7
|
||||||
|
Set STATS_SERVER ..: stats.bunker7.net
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
Set net_quit ......: B7
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
#
|
||||||
|
# Network Configuration File Template
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: <day> <month> <year> <hh:dd> GMT
|
||||||
|
# Author: Curt|s
|
||||||
|
# E-Mail: <email>
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# These two specify the name of the IRC network, set the same in both fields
|
||||||
|
Network >..........: DigitalIRC.Net
|
||||||
|
Set ircnetwork ....: DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is where your DNS pool is (like irc.dal.net)
|
||||||
|
Set defserv .......: irc.digitalirc.net
|
||||||
|
|
||||||
|
# This is the name of your Services Server
|
||||||
|
Set SERVICES_NAME .: Services.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the virtual hostname IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set oper_host .....: Oper.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the virtual hostname Server Admins will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set admin_host ....: Admin.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the virtual hostname Local IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
|
||||||
|
Set locop_host ....: LocOper.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the virtual hostname Services Operators/Admins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set sadmin_host ...: ServicesOp.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the virtual hostname NetAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set netadmin_host .: NetAdmin.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the virtual hostname CoAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set coadmin_host ..: NetAdmin.DigitalIRC.Net
|
||||||
|
|
||||||
|
|
||||||
|
# This is the virtual hostname TechAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set techadmin_host : Tech.DigitalIRC.Net
|
||||||
|
|
||||||
|
# This is the prefix of the hidden host (cloaking) hostname
|
||||||
|
Set hidden_host ...: NN
|
||||||
|
# This is the domain of the IRC network
|
||||||
|
Set netdomain .....: DigtialIRC.Net
|
||||||
|
#This is where people can go for help
|
||||||
|
Set helpchan ......: #Digitalirc
|
||||||
|
# This is the name of the stats server
|
||||||
|
Set STATS_SERVER ..: Statistics.DigitalIRC.com
|
||||||
|
# -- Not in use--
|
||||||
|
Set HUB ...........: 1
|
||||||
|
# This enables the auto-setting of f.x @netadmin.network.net
|
||||||
|
# on oper up
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
# -- Not in use but still here --
|
||||||
|
Set net_quit ......: ic
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# DragonWings.org Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 14 July 1999 00:00 GMT
|
||||||
|
# Author: Stskeeps (Carsten Munk)
|
||||||
|
# E-Mail: stskeeps@global-irc.net
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
Network >..........: DragonWings
|
||||||
|
Set ircnetwork ....: DragonWings
|
||||||
|
Set defserv .......: irc.dragonwings.org
|
||||||
|
Set SERVICES_NAME .: saturn.dragonwings.org
|
||||||
|
Set oper_host .....: ircop.dragonwings.org
|
||||||
|
Set admin_host ....: admin.dragonwings.org
|
||||||
|
Set locop_host ....: locop.dragonwings.org
|
||||||
|
Set sadmin_host ...: serviceop.dragonwings.org
|
||||||
|
Set netadmin_host .: netadmin.dragonwings.org
|
||||||
|
Set coadmin_host ..: coadmin.dragonwings.org
|
||||||
|
Set techadmin_host : techadmin.dragonwings.org
|
||||||
|
Set hidden_host ...: dw
|
||||||
|
Set netdomain .....: dragonwings.org
|
||||||
|
Set helpchan ......: #DragonWings
|
||||||
|
Set STATS_SERVER ..: stats.dragonwings.org
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
Set net_quit ......: DW
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
#
|
||||||
|
# FireIRC Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 14 July 1999 00:00 GMT
|
||||||
|
# Author: MasterSatan (Erik Kerr)
|
||||||
|
# E-Mail: Kerrfarm@bright.net
|
||||||
|
#
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
Network >..........: FireIRC
|
||||||
|
Set ircnetwork ....: FireIRC
|
||||||
|
Set defserv .......: irc.FireIRC.Net
|
||||||
|
Set SERVICES_NAME .: services.FireIRC.Net
|
||||||
|
Set oper_host .....: ircOP.FireIRC.Net
|
||||||
|
Set admin_host ....: Admin.FireIRC.Net
|
||||||
|
Set locop_host ....: localOP.FireIRC.Net
|
||||||
|
Set sadmin_host ...: serviceOP.FireIRC.Net
|
||||||
|
Set netadmin_host .: NetADMIN.FireIRC.Net
|
||||||
|
Set coadmin_host ..: CoADMIN.FireIRC.Net
|
||||||
|
Set techadmin_host : TechAdmin.FireIRC.Net
|
||||||
|
Set hidden_host ...: FireIRC
|
||||||
|
Set netdomain .....: FireIRC.Net
|
||||||
|
Set helpchan ......: #Services
|
||||||
|
Set STATS_SERVER ..: stats.FireIRC.Net
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
Set net_quit ......: FI
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# Global-IRC.net Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 14 July 1999 00:00 GMT
|
||||||
|
# Author: Stskeeps (Carsten Munk)
|
||||||
|
# E-Mail: stskeeps@global-irc.net
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
Network >..........: Global-IRC
|
||||||
|
Set ircnetwork ....: Global-IRC
|
||||||
|
Set defserv .......: irc.global-irc.net
|
||||||
|
Set SERVICES_NAME .: services.global-irc.net
|
||||||
|
Set oper_host .....: ircop.global-irc.net
|
||||||
|
Set admin_host ....: admin.global-irc.net
|
||||||
|
Set locop_host ....: locop.global-irc.net
|
||||||
|
Set sadmin_host ...: serviceop.global-irc.net
|
||||||
|
Set netadmin_host .: netadmin.global-irc.net
|
||||||
|
Set coadmin_host ..: coadmin.global-irc.net
|
||||||
|
Set techadmin_host : techadmin.global-irc.net
|
||||||
|
Set hidden_host ...: global
|
||||||
|
Set netdomain .....: global-irc.net
|
||||||
|
Set helpchan ......: #Global
|
||||||
|
Set STATS_SERVER ..: stats.global-irc.net
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
Set net_quit ......: GI
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# Global-IRC.net Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 14 July 1999 00:00 GMT
|
||||||
|
# Author: Stskeeps (Carsten Munk)
|
||||||
|
# E-Mail: stskeeps@global-irc.net
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
Network >..........: Infinity-IRC.org
|
||||||
|
Set ircnetwork ....: Infinity-IRC.org
|
||||||
|
Set defserv .......: irc.infinity-irc.org
|
||||||
|
Set SERVICES_NAME .: services.infinity-irc.org
|
||||||
|
Set oper_host .....: IRCop.Infinity-IRC.org
|
||||||
|
Set admin_host ....: IRCop-Admin.Infinity-IRC.org
|
||||||
|
Set locop_host ....: LOCop.Infinity-IRC.org
|
||||||
|
Set sadmin_host ...: IRCop-ServiceAdmin.Infinity-IRC.org
|
||||||
|
Set netadmin_host .: IRCop-NetAdmin.Infinity-IRC.org
|
||||||
|
Set coadmin_host ..: IRCop-CoAdmin.Infinity-IRC.org
|
||||||
|
Set techadmin_host : IRCop-TechAdmin.Infinity-IRC.org
|
||||||
|
Set hidden_host ...: Infinity
|
||||||
|
Set netdomain .....: Infinity-IRC.org
|
||||||
|
Set helpchan ......: #Infinity
|
||||||
|
Set STATS_SERVER ..: stats.infinity-irc.org
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 1
|
||||||
|
Set net_quit ......: IN
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# MegaIRC.net Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 1 August 1999 00:00 GMT
|
||||||
|
# Author: NonMortal (Luke Slotwinski)
|
||||||
|
# E-Mail: NonMortal@MegaIRC.Com
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
Network >..........: MegaIRC
|
||||||
|
Set ircnetwork ....: MegaIRC
|
||||||
|
Set defserv .......: irc.MegaIRC.Net
|
||||||
|
Set SERVICES_NAME .: Services.MegaIRC.Net
|
||||||
|
Set oper_host .....: Ircop.MegaIRC.Net
|
||||||
|
Set admin_host ....: Server-Admin.MegaIRC.Net
|
||||||
|
Set locop_host ....: Local-Ircop.MegaIRC.Net
|
||||||
|
Set sadmin_host ...: SOP.MegaIRC.Net
|
||||||
|
Set netadmin_host .: NetAdmin.MegaIRC.Net
|
||||||
|
Set coadmin_host ..: Server-CoAdmin.MegaIRC.Net
|
||||||
|
Set techadmin_host : TechAdmin.MegaIRC.Net
|
||||||
|
Set hidden_host ...: mega
|
||||||
|
Set netdomain .....: MegaIRC.Net
|
||||||
|
Set helpchan ......: #helpdesk
|
||||||
|
Set STATS_SERVER ..: Stats.MegaIRC.Net
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 1
|
||||||
|
Set net_quit ......: MI
|
||||||
|
# To protect people from using normal edition Unreal to link to MegaIRC
|
||||||
|
Set STOPSE ........: 1
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# Mp3Fans.net Network Configuration File
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 14 July 1999 00:00 GMT
|
||||||
|
# Author: Stskeeps (Carsten Munk)
|
||||||
|
# E-Mail: stskeeps@global-irc.net
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
Network >..........: Mp3FansNet
|
||||||
|
Set ircnetwork ....: Mp3FansNet
|
||||||
|
Set defserv .......: irc.mp3fans.net
|
||||||
|
Set SERVICES_NAME .: services.mp3fans.net
|
||||||
|
Set oper_host .....: ircop.mp3fans.net
|
||||||
|
Set admin_host ....: admin.mp3fans.net
|
||||||
|
Set locop_host ....: locop.mp3fans.net
|
||||||
|
Set sadmin_host ...: serviceop.mp3fans.net
|
||||||
|
Set netadmin_host .: netadmin.mp3fans.net
|
||||||
|
Set coadmin_host ..: coadmin.mp3fans.net
|
||||||
|
Set techadmin_host : techadmin.mp3fans.net
|
||||||
|
Set hidden_host ...: mpx
|
||||||
|
Set netdomain .....: mp3fans.net
|
||||||
|
Set helpchan ......: #Mp3Fans
|
||||||
|
Set STATS_SERVER ..: stats.mp3fans.net
|
||||||
|
Set HUB ...........: 1
|
||||||
|
Set iNAH ..........: 0
|
||||||
|
Set net_quit ......: m3
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
ver^2.2
|
||||||
|
#
|
||||||
|
# Network Configuration File Template
|
||||||
|
# -----------------------------------------
|
||||||
|
# Added-at: 23 August 1999 <18:00> GMT
|
||||||
|
# Author: codemastr <codemastr@elite-hacker.cx>
|
||||||
|
# $Id$
|
||||||
|
# -----------------------------------------
|
||||||
|
# This is a template so you can create your own network configuration files
|
||||||
|
# Just follow the instructions and it will prolly work ;)
|
||||||
|
# 0 = No 1 = Yes
|
||||||
|
# -------------------------------------------------------
|
||||||
|
#
|
||||||
|
# These two specify the name of the IRC network, set the same in both fields
|
||||||
|
Network >..........: NeoHorizon
|
||||||
|
Set ircnetwork ....: NeoHorizon
|
||||||
|
|
||||||
|
# This is where your DNS pool is (like irc.dal.net)
|
||||||
|
Set defserv .......: irc.nhn.net
|
||||||
|
|
||||||
|
# This is the name of your Services Server
|
||||||
|
Set SERVICES_NAME .: services.nhn.net
|
||||||
|
|
||||||
|
# This is the virtual hostname IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set oper_host .....: IRCop.nhn.net
|
||||||
|
|
||||||
|
# This is the virtual hostname Server Admins will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
Set admin_host ....: Admin.nhn.net
|
||||||
|
|
||||||
|
# This is the virtual hostname Local IRCops will get if iNAH option is enabled
|
||||||
|
# on oper up
|
||||||
|
|
||||||
|
Set locop_host ....: Locop.nhn.net
|
||||||
|
|
||||||
|
# This is the virtual hostname Services Operators/Admins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set sadmin_host ...: ServicesOP.nhn.net
|
||||||
|
|
||||||
|
# This is the virtual hostname NetAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
|
||||||
|
Set netadmin_host .: NetAdmin.nhn.net
|
||||||
|
|
||||||
|
# This is the virtual hostname CoAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set coadmin_host ..: Co-Admin.nhn.net
|
||||||
|
|
||||||
|
|
||||||
|
# This is the virtual hostname TechAdmins will get
|
||||||
|
# if iNAH option is enabled on oper up
|
||||||
|
Set techadmin_host : techadmin.nhn.net
|
||||||
|
|
||||||
|
# This is the prefix of the hidden host (cloaking) hostname
|
||||||
|
Set hidden_host ...: Neo
|
||||||
|
# This is the domain of the IRC network
|
||||||
|
Set netdomain .....: nhn.net
|
||||||
|
# This is where people can go for help
|
||||||
|
Set helpchan ......: #neohorizon
|
||||||
|
# This is the name of the stats server
|
||||||
|
Set STATS_SERVER ..: stats.nhn.net
|
||||||
|
# -- Not in use--
|
||||||
|
Set HUB ...........: 1
|
||||||
|
# This enables the auto-setting of f.x @netadmin.network.net
|
||||||
|
# on oper up
|
||||||
|
Set iNAH ..........: 1
|
||||||
|
# -- Not in use but still here --
|
||||||
|
Set net_quit ......: NH
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Networks index file - do not touch please
|
||||||
|
networks/global-irc.network ......: Global-IRC (http://www.global-irc.net)
|
||||||
|
networks/mp3fans.network .........: Mp3Fans.Net (http://www.mp3fans.net)
|
||||||
|
networks/roxnet.network ..........: ROXnet (http://www.rox.za.net)
|
||||||
|
networks/dragonwings.network .....: DragonWings (http://www.dragonwings.org)
|
||||||
|
networks/megairc.network .........: MegaIRC (http://www.megairc.net)
|
||||||
|
networks/neohorizon.network ......: NeoHorizon (http://www.nhn.net)
|
||||||
|
networks/spynet.network ..........: SpyNet (http://www.spynet.org)
|
||||||
|
networks/nevernet.network ........: NeverNET (http://www.nevernet.net)
|
||||||
|
networks/altirc.network ..........: AlternativeNet IRC (http://www.
|
||||||
|
networks/bunker7.network .........: Bunker7 (http://www.bunker7.net)
|
||||||
|
networks/realchat.network ........: RealChat.org (http://www.realchat.org)
|
||||||
|
networks/newmilennium.network ....: NewMilennium (http://www.newmilennium.net)
|
||||||
|
networks/solarxtreme.network .....: SolarXTreme (http://www.solarxtreme.net)
|
||||||
|
networks/ss.network ..............: StarSpace (http://www.starspace.net)
|
||||||
|
networks/uzaynet.network .........: UzayNet (http://www.uzaynet.nu)
|
||||||
|
networks/infinity.network ........: Infinity-IRC.org (http://www.infinity-irc.org)
|
||||||
|
networks/tspre.network ...........: TSpre (http://www.tspre.org)
|
||||||
|
networks/solargalaxy.network .....: SolarGalaxy (http://www.solargalaxy.net)
|
||||||
|
networks/digitalirc.network ......: DigitalIRC (http://www.digitalirc.net)
|
||||||
|
networks/fireirc.network .........: FireIRC (http://www.fireirc.net)
|
||||||
|
networks/stormdancing.network ....: StormDancing (http://www.stormdancing.net)
|
||||||
|
networks/972-scripterz.network ...: 972-scripterz
|
||||||
|
networks/v64net.network ..........: v64
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user