1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-12 22:44:46 +02:00

37 Commits

Author SHA1 Message Date
Bram Matthys c75d4d64a0 3.2 with -d -P, just to be sure. 2004-04-25 00:06:55 +00:00
Bram Matthys 00bd34adf4 3.2! 2004-04-24 23:16:03 +00:00
Bram Matthys c7dcad793c 3.2-RC1fix
and screw all those weird changesa!~J@J~Lds
2004-03-07 22:26:23 +00:00
Bram Matthys 6feeb23ae3 3.2-RC2 2004-03-07 18:58:42 +00:00
Bram Matthys 8ea0ac5f4c RC1 2004-02-14 20:23:42 +00:00
Bram Matthys 4560beb895 Unreal3.2-beta19 2003-11-24 19:42:37 +00:00
stskeeps dae494ddb1 beta18 2003-09-23 18:42:03 +00:00
stskeeps 33f23cefb8 3.2-beta17 2003-06-15 17:14:10 +00:00
stskeeps b67cdeda7b 3.2-beta16 2003-05-03 15:42:48 +00:00
stskeeps 778efe22e3 beta15 2003-03-03 18:42:24 +00:00
stskeeps b9a2b18077 beta15 release 2003-03-03 18:34:45 +00:00
stskeeps e638fef3a7 3.2-beta14 2003-01-18 20:10:27 +00:00
stskeeps 7b88c81ef2 beta14 2003-01-17 22:07:01 +00:00
stskeeps b6cef35228 3-2beta13 2002-12-09 20:13:51 +00:00
stskeeps 51e5031fbd Unreal3.2-beta12 2002-08-25 12:08:08 +00:00
stskeeps 19d3ff1a84 3.2-beta11 2002-08-07 21:30:49 +00:00
stskeeps c2dc1e4909 beta10 2002-05-20 19:43:14 +00:00
stskeeps fdd3c1a2d8 3.2-beta9 2002-03-24 17:53:11 +00:00
stskeeps 104990002e b8 2002-03-17 23:26:09 +00:00
stskeeps c39013f134 beta7 2002-03-12 20:49:09 +00:00
stskeeps a09902cf2c beta6 AGAIN 2002-01-11 22:33:09 +00:00
stskeeps e527514f03 beta6 2002-01-07 21:10:06 +00:00
stskeeps bd4542cda1 extra beta5 2001-12-24 23:07:25 +00:00
stskeeps 769b98a83d Unreal3.2-beta5 2001-12-24 14:09:22 +00:00
stskeeps cad17acd21 . 2001-10-28 17:09:43 +00:00
stskeeps 49f524b6a4 beta4 2001-10-28 16:25:13 +00:00
stskeeps 20ae445980 3.2-
beta3
2001-10-08 17:47:39 +00:00
stskeeps 51dd0849e2 . 2001-08-07 21:37:25 +00:00
stskeeps c294689287 beta2 2001-08-07 19:00:40 +00:00
stskeeps a3641d1ffb Unreal3.1.1->Unreal3.2-beta1 2001-07-13 21:06:54 +00:00
stskeeps f4d102edfb Merge beta with unreal3_1_1_darkshades 2000-12-10 21:23:50 +00:00
stskeeps 2cadcc8624 . 2000-08-20 12:00:43 +00:00
stskeeps 750a9d31ff Upgrade to Unreal3.1-Silverheart+ 2000-08-20 11:40:43 +00:00
stskeeps 0efacfa2ab *** empty log message *** 2000-08-07 17:54:57 +00:00
stskeeps 70f34f75fc *** empty log message *** 2000-08-07 17:49:38 +00:00
stskeeps c37c0594cb Merge of devel (Mon Aug 7 18:33:23 BST 2000) 2000-08-07 17:33:42 +00:00
stskeeps 206dc189ba Unreal3.1-beta3 to Unreal3.1 2000-07-16 20:37:15 +00:00
418 changed files with 103849 additions and 46683 deletions
+15 -9
View File
@@ -1,14 +1,20 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Welcome to the UnrealIRCd configuration program. This program
will help you to compile your IRC server, and ask you questions
Configuration Program
for Unreal3.2
This program will help you to compile your IRC server, and ask you
questions regarding the compile-time settings of it during the process.
regarding the setup of it, during the process.
If you need help to set the IRCd up, mail
unreal-support@lists.sourceforge.net or ask at IRC:
/server irc.ircsystems.net, /join #unrealircd
If you have problems regarding the setup & compile, read Unreal.nfo to get
more information on where to get help. Please, before running this setup,
read the documentation in the "doc" folder. Docs are also avail online @
http://www.unrealircd.com/unreal32docs.html
For any sake, read Unreal.nfo and read doc/faq before asking questions
Press Escape now if you want to abort the setup, or press Enter
to continue.
+35
View File
@@ -0,0 +1,35 @@
Configuration rant, by Stskeeps
--------------------------------
Right.. so you think you are done now, you can boot your IRCd and be happy,
and it just works. No, you still got a lot to do. You need to read all of
the documentation through. Would you even have made it this far without
makeconf?.
Well, today, people think they can be 3 months on IRC, and be ready to run
an IRC daemon. I hate to say this, but I don't think so.
If you cannot read an IRC help file, or understand what stuff like "desynch",
"masskill", "k-line", or what "mode # +l 5" means - or you got no experince
in the UNIX field at all, like, you MUST know how to invoke a editor in a
shell, or to unzip a file. If you don't know/can do these things, I suggest
you stop trying to set this up, and go read on some UNIX tutorials, and IRC
tutorials. It takes a LOT of work to run a IRC server good.
I mean. I sit on the #unreal-support support channel each day, and I see
countless questions about stuff that IS IN the documentation. Numerous
people don't even bother to look at the config files (CONFIG_FILE_STOP
problem).
You need to look at the documentation now. You need to see how to "include"
other configuration files. You need to know how to work out how to use
doc/example.settings. I can only tell you, if you ask for support, and it
is for errors that you could solve by reading the first lines of a document,
then you'll be firmly ignored. I'm sorry, we cannot help your laziness.
Anyhow, good luck with setting this up. Hope you understand what I am saying
here. You will learn a lot more reading, than just ignoring what we are
saying.
--Stskeeps
-8
View File
@@ -1,8 +0,0 @@
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
| UnrealIRCD Custom Create Network Configuration|
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
| |
| This will not be too hard, just follow the |
| instructions, and answer the questions... |
| |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
+50
View File
@@ -0,0 +1,50 @@
Unreal3.2 Release Notes
========================
==[ GENERAL INFORMATION ]==
* If you are upgrading, make sure you run make clean and ./Config before doing make
* The official UnrealIRCd documentation is doc/unreal32docs.html
online version at: http://www.vulnscan.org/UnrealIrcd/unreal32docs.html
FAQ: http://www.vulnscan.org/UnrealIrcd/faq/
Read them before asking for help.
* Report bugs at http://bugs.unrealircd.org/
== [ NEW ]==
- Added german docs (doc/unreal32docs.de.html)
- In a spamfilter reason field '_' gets converted to a space (' '),
now also added '__' which gets converted to underscore itself ('_').
==[ MAJOR BUGS FIXED ]==
- '/spamfiltere remove' was often removing the wrong entry (RC2 bug)
- The TRE regex library was sometimes matching too much if [range].+
was used multiple times.
- Fixed a remote include issue and added timeouts in case a connection/transfer fails
==[ MINOR BUGS FIXED ]==
- Sometimes hosts were not resolved on Windows due to a resolver bug
- spamfilter and sqline: memory leak on /rehash (a few kb)
- spamfilter: protect against insane long reason/regex fields in configfile
- set::modes-on-join now accepts extended channelmodes
- Opteron: various crashbugs fixed, should work ok now.
- Win32 GUI "rehash all" option did not reload motd/rules.
- Same for ./unreal rehash on *NIX
- Usermode 'r' (registered) was unset if you changed the case of your
nick (eg: 'blah'->'Blah'), this affected at least ircservices.
- vhost::swhois wasn't shown if you did a remote /whois.
- Made './curlinstall' work with new c-ares-1.0.0.
- Fixed compile problem on some machines related to TRE / libintl.
- /who +m was incorrectly hiding +H users even for opers.
- Fixed /rehash bug if an .so or remote include didn't load properly
==[ CHANGED ]==
- spamfilter.conf: fixed fyle sig, added sigs for: soex, Nkie, LOI, Gaggle,
changed a lot of sigs from block to gline.
- Windows: now using new Inno Setup which made the installer 300k smaller
- Docs, help.conf and other text updates.
==[ COMMING UP ]==
- You can expect module support on windows in a nearby release.
==[ ADDITIONAL INFO ]==
* See Changelog
+15
View File
@@ -0,0 +1,15 @@
|-------------------------------------------------------------------------|
| Congratulations on your new SSL self-signed certificate for your IRCd. |
| However, wouldn't it be better that you get your certifcate signed by |
| some kind of Certification Authority (CA), so your users can check that |
| they are really connected to the real server, so they feel secure? |
| |
| There is an initiative at CACert.org - They offer SSL Certificates |
| for use with your IRCd for free, so your users can be sure that they |
| can trust you and your server. |
| |
| To get a free signed certificate please visit http://www.CACert.org |
| _________________________|
| | Press enter to continue |
---------------------------------------------------------------------------
+17
View File
@@ -0,0 +1,17 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Update Script v2.0
What download program do you want to use?
-----------------------------------------
Type "wget" for wget
Type "lynx" for lynx
>
+77
View File
@@ -0,0 +1,77 @@
#
# UnrealIRCd Bug Reporting Script
# Copyright (c) 2001, The UnrealIRCd Team
# All rights reserved
#
# Redistribution and use in source and binary forms, with or without modification, are permitted
# provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this list of conditions
# and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
# and the following disclaimer in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of the The UnrealIRCd Team nor the names of its contributors may be used
# to endorse or promote products derived from this software without specific prior written permission.
# * The source code may not be redistributed for a fee or in closed source
# programs, without expressed oral consent by the UnrealIRCd Team, however
# for operating systems where binary distribution is required, if URL
# is passed with the package to get the full source
# * No warranty is given unless stated so by the The UnrealIRCd Team
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# First we define some nice settings and some nice functions
set print pretty on
# dumplist <linked list> <structure format>
define dumplist
echo Dumping linked list $arg0 in format $arg1\n
set $p = $arg0
while $p
print *($arg1 *) $p
set $p = $p->next
end
end
# dumparray <name> <size>
define dumparray
echo Dumping array $arg0 size $arg1\n
set $p = 0
while $p < $arg1
if $arg0[$p]
print *$arg0[$p]
end
set $p = $p + 1
end
end
echo Full backtrace:\n
echo ---------------\n
echo \n
bt full
echo \n
echo Backup parse() buffer:\n
echo ----------------------\n
echo \n
print backupbuf
echo \n
echo me output:\n
echo ----------------------\n
print me
echo \n
echo IRCstats:\n
echo ----------------------\n
print IRCstats
echo \n
echo Modules:\n
echo ----------------------\n
dumparray Modules 50
quit
+6
View File
@@ -0,0 +1,6 @@
ircdcron/ircd.cron
ircdcron/ircdchk
src/modules/Makefile
src/ssl.rnd
src/win32/devel/StackTrace.lib
src/win32/gnu_regex.lib
Vendored
+52
View File
@@ -0,0 +1,52 @@
--leave-preprocessor-space
--dont-break-procedure-type
--no-space-after-function-call-names
--brace-indent0
--indent-level8
-ip8
--dont-line-up-parentheses
--continuation-indentation4
--case-indentation2
--no-space-after-casts
--blank-lines-after-procedures
--no-blank-lines-after-declarations
--braces-on-struct-decl-line
--paren-indentation0
--case-brace-indentation0
--line-length80
--declaration-indentation5
-T size_t
-T aClass
-T TS
-T aClient
-T aServer
-T anUser
-T aChannel
-T Mode
-T aConfItem
-T aMessage
-T aMessageTree
-T aGline
-T aListingArgs
-T snomask_t
-T n_short
-T n_long
-T n_time
-T u_char
-T u_short
-T u_long
-T u_int
-T dbuf
-T dbufbuf
-T aHashEntry
-T Link
-T Dlink
-T VOIDSIG
-T aHostent
-T ResRQ
-T aCache
-T CacheTable
-T cainfo
-T reinfo
-T RETSIGTYPE
-T OPT_TYPE
-2
View File
@@ -1,2 +0,0 @@
List of helpers in the alpha/beta phase:
* Headbang, Alpha/beta tester
+3099 -306
View File
File diff suppressed because it is too large Load Diff
+785
View File
@@ -1,3 +1,788 @@
OLD CHANGES:
[Unreal3.1.1-Darkshades]
- Fixed /userhost showing "unknown" as username for a lot of people
- Fixed ./update error
- Fixed a NO_FDLIST define problem in send.c and channel.c
- Added define PROPER_COREDUMP, will not launch s_segv when done and make
proper coredumps
- Fixed the G:line bugs, i hope - moved tkl_sweep into a loopstruct
- Removed the ERR_NOTONCHANNEL message =P
- Made some memory cleanups on the command list (saved 268 bytes)
- More memory cleanups, changed aClient->refcnt to a signed char,
aClient->hopcount to unsigned char
- Changed aChannel->mode.msgs & .per to unsigned short, and changed
.kmode to unsigned char
- Changed aChannel->users to unsigned short (max 65536 users per channel)
and FloodOpt->nmsg to an unsigned short
- Removed SUMMON totally
- Fixed another SJOIN problem, but not the exact one i was looking for
- Added IRCd bot (raw commands) and the IRC bot, webtv.c
- Added WHOIS command (working) to IRCbot-
- Fixed a fun doublechar token problem (the AA unknown command)
- Removed _alot_ of unused variables
- Fixed *some* -Wall warnings (still alot left to fix)
- Fixed some more -Wall warnings
- ./update now checks when you specify wget if it exists, if not it tries lynx
- Cached MOTDs are now dynamically allocated (saves alot of memory)
- Made aClient->passwd dynamically allocated (saves 32bytes per user/server)
- Fixed a NOTICE crash bug, reported by EJ
- Removed a excessive va_end in send.c
- Fixed a bug when running the ircd with -h
- Readded /summon to return ERR_SUMMONDISABLED (required by RFC1459)
- Made /users return ERR_USERSDISABLED (required by RFC1459)
- Removed all utmp calls
- Fixed Something ... cant remember what ... oh yes, fixed if (sptr->passwd[0]) to if (sptr->passwd)
it stopped the server crashing !
- Made Code revisions so that we can compile on Win32, and fixed some of sts's late nite
coding sessions(dbin)
- Fixed some REAL dumb find_server_quick bugs
- Fixed a wierd NOTICE bug
- Modified and fixed the NOTICE bug totally, with some waste of the nospoof
system
- Fixed a bug where +K could be set when +i was not (reported by rapta)
- Made it so if you set -i on a channel that is +K it sets -iK
- Fixed whowas so it no longer reports away messages
- Made major changes to +I (may need debugging)
- When you set +I while on a chan it sends a PART to the rest of the channel
- When you set -I which on a chan it sends a JOIN to the rest of the channel
- Net/TechAdmins now receive a JOIN/PART when you JOIN/PART a channel
- Net/TechAdmins can now see +I users in /names
- Fixed a typo in s_err.c reported by TRON
- Fixed more -Wall warnings
- Added #define LIST_SHOW_MODES to show channel modes in a /list (NOTE: only shows modes, not params)
- Fixed /mode # + bug reported by PhatNet/Mind
- Possible fixed the SJOIN kick bug (mode +Q), servers can now always kick
- Added NEW DNS resolver (Win32 Only atm) ... use by defining NEWDNS
- FIXED "BUG" caused by NEWDNS *shrug*
- Fixed the passwd NICK problem
- Fixed the problem with NewDNS (ive always known about it but never known how it happens) [a pointer prob]
- Redhat 7 (broken string.h problem), ./Config
- Added SSL connections, open ports with P:ip:s:*:port to make them SSL
ports, made after hq.alert.sk's implementation
- Added P:line flags C - client only, S - server only, J - java clients (replaces CONFROOM_JAVA_PORT)
- Fixed up a few various things
- Made SHOWCONNECTNOTICES work properly again, also with SSL
- Changed ./Config to detect SSL better, and generate certificates properly
- Removed some annoying logging in ssl.c
- Merged in changes from TEMPcvs branch
- Fixed a /UNSQLINE para problem, found by Joe
- #define SHOW_SECRET now allows all ircops to see +s channels in /whois. If not defined, only net/tech admins can.
- Added #define CENSOR_QUIT, for WaveRide
- Fixed hashing bug that caused the server to crash on exit
- Made find_server_b64_or_real be a little faster, possible fixing bug
- Made /stats s checking check for sanity or insanity (ignore them for 0
numerics)
- Fixed SJOIN (mp2parv) bug, that caused insane desynchs
- Changed Cannot find server message to be to sendto_realops
- Fixed a warning in CENSOR_QUIT
- Fixed the G:Line user wrongly matching (ip-alike addys didnt check user)
- Added protoctl SJB64, which adds B64-9 timestamps to many timestamping
operations
- Added ircsprintf %B (base64-9^10) with ! as prefix, and %b (no prefix)
- Fixed a few places where for some reason sprintf() was used rather than ircsprintf()
- Tokenized ADCHAT, TECHAT, NACHAT, SWHOIS, and SVSKILL
- Fixed a bug in opermode that would make it display a notice on invalid modes
- Fixed a bug where the Found your hostname (cached) message was messed up
- Fixed a memory leak in the new password code
- Fixed a sptr->passwd bug
- Removed the unnecessary param from IsULine() it is now just IsULine(sptr)
- ircsprintf() is now used everywhere
- Fixed the SJB64 bugs that misplaced users
- Removed sendto_helpops and replaced it with sendto_umode
- Added is_chanownprotop() checks if +q +a or +o with 1 loop
- Added chmode +N (no nick changes) (opers, ulines, +o +q or +a can override)
- Added some fixes on the SJB64 crashing bug, and added tokenization in
channel messsages (yahooooo!)
- Fixed the /list bug, reported by many people
- Fixed a linking bug (where did that come from)
- Fixed bug where duplicate numerics could occur
- Fixed the hashing bug (thank you ROXnet ...)
- Fixed a wierd channel message bug ||
- Fixed a bug where non-NS servers would crash when linking
- Added TS2ts (supporting the SJB64 stuff), and fixed the !0 timestamp bug
- Fixed the /list only showing 64 channels bug! Also sped /list up in the process
- Probably fixed the hash bug, again.
- Possible fixed some b64 bugs
- Autodetects /usr/sbin/openssl now, thanks trinity
- Tokenized PING and PONG
- Fixes a missing : in SJOIN
- Possible fixed a internal server list bug
- When IRC WebTV bot cannot find a command, it sends it to parse() instead,
thanks [Real]
- Added burst.c in extras/
- Moved lopt and whowas to anUser (saves 8 bytes for every server)
- Removed aClient->history, not used (saves 4 bytes for every user/server)
- Fixed compile error with SSL
- Fixed a /list and /quit bug
- Fixed the masskill bug with replacing "Server Exists" code.. i removed it
accidentialy last time
- Added /botserv /bs command, patch by ATHnet.de
- /who's now show +i users for opers in channels, idea by Strider@ChatCircuit
- Fixed NO_OPEROVERRIDE bug reported by otherguy
- #define STATSWRITING will make ircd write ircd.stats every 4 seconds,
idea/sortof by WaveRide
Format of ircd.stats:
<global users>
<global invisible users>
<global servers>
<irc operators>
<unknown connections>
<local clients>
<local servers>
<local max clients>
<global max clients>
- Fixed +d (deaf) so it works again
- Removed some leftovers from the &channel code (which fixed a minor bug as well)
- Fixed a SJOIN3<->services problem
- Fixed a typo where it still said +I instead of +V in an error message
- Fixed the "Bad file descriptor" bug in SSL. This bugfix may be a bit risky
as it is manipulating BIO fds. The reason openssl freaked at this, was
that when a fd is closed, we change fds from 4 to 3 etc, in other words,
we renumber fds. SSL didn't know this and if you would call SSL_set_fd it
would close the connection/crash. Added SSL_change_fd() to change the FD
directly through BIO_set_fd.
- Fixed the masskill bug, hopefully. Was a delimiter/number array bug in
find_server_b64_or_real, causing negative base64 to be accepted (bad).
value 1-256 will never be able to be in two letters (a server name)
- Fixed \r\n bug, hopefully
- made SSL use same cert client/server
- Fixed help.c bug reported by Curt|s
- Different fixes, unreal.tspre.org -> unrealircd.com
- Fixed-fixed-fixed the \r\n bug and removed some useless cpu wasting code
- Removed remapping fds, and did a severe select() speedup, suggested by
Demiurgus. Should speed CPU a lot
- Updated some messages
- Fixed-fixed-fixed the U:line branching thing made by codemastr
- Fixed a G: line-turn-into Z:line problem, reported by eYe-Man
- Added SJOIN (SJ3 only) instead of JOIN/MODE in /join and discovered a bug in
SJOIN code, that if the line doesnt have a " " appeneded, it wont take the
last users or first for that sake. Hopefully patched SJ3 code for it
- Added OPT target OPT_SJB64 and OPT_NOT_SJB64
- Made SSL server<->server work, using __blocking__ sockets (this is only
in connect moment thou) -stskeeps
- Removed 1.0 msg/s when not in HTM
- Fixed cutoff server infos in synch
- Added so /gline and /shun accepts time periods in 1d2h3s etc. a recode of
some potvin stuff
- Added so blocking is only effective when SSL_connect()'ing
- Fixed a couple of SJOIN/Link problems detected by Curt|s
- Changed some stuff with SSL, you may want to seperate server.pem into
server.key.pem and server.cert.pem (or "rm Makefile" and "./Config")
- Fixed a couple of SJOIN/Link problems detected by Curt|s
- Made /stats C show SSL/Zip flags
- Fixed the Stskeeps "mass G:line on /rehash" (tm) bug
- Removed last point of confusion in ALN/NS
- Removed CRYPTOIRCD (replaced by SSL)
- Added support for some more SJB64 stuff
- Added some more support for some even more SJB64 stuff
- Added some network files and even more network files
- Fixed some copyright stuff in ssl.c
- Fixed a /map problem
- Updated doc/conf.doc and doc/example.conf
- Fixed a bug where /map showed U:lines while HIDE_ULINES was set
- Removed "on network" in /whois oper
- Added code to makenet to stop fake submissions
- Fixed some /whois channels code, which may break +I /whois
- Fixed overflow in SJOIN
- Added SMO *, all users
- If a +r user is /who'ed, it shows a "r" in flags field. Suggested by
Mirar.
- Fixed a typo in ssl.c
- Added SICI information, Donation information, fixed a ./Config problem
overwriting certs ..
- Added hatblade's files
- Added some credits
- Fixed a real bad /whois bug, reported by BiGi
- Fixed a problem with /sajoin .. atleast possible
- Added infofield in /stats L for clients/listeners
- Fixed a blocking socket thing
- Fixed up /stats L bug
- Changed CONNECTTIMEOUT to 30sec
- Changed some _more_ credits
- Fixed compile error found by Headbang
- #define CHINESE_NICK will make you able to use chinese nicks
thanks to RexHsu and Aim
- Fixed up CHINESE_NICK and JAPANESE_NICK, suggested by Aim, see
include/config.h
- Config change in SSL.h detection part
- SSL error change to sendto_umode(UMODE_JUNK)
- Fixed a hash error, topic problem
[fixes]
- Fixed a +d bug (it didnt send ` prefixes)
- Fixed a SJOIN bug, i think, thanks to Web
- Fixed a chinese nick thing, thanks to miCro and RexHsu
- Fixed a typo in config.h
- Fixed a bug in sendto_channel_prefix_tok reported by Strider@ChatCircuit
- Fixed P:line bug, caused by codemastr(tm) coding, (masskills), reported by
sidv@sid-kitty-land.org
- Some few fixes from CodeM and Barubary:
- Fixed /whois to show users for opers when not in the channel.
- Fixed /whois to allow only global eyes opers to see user modes.
- Fixed /whois to not show idle times of global opers to anyone except
another global oper or services.
- Fixed /who to show users for opers when not in the channel.
- Fixed restart bug, reported by RaYmAn
- Fix-fixed " Fixed /whois to not show idle times of global opers to
anyone" patch
- Fixed a recently found exploit involving reverse DNS (fix from bahamut)
- Made more openssl binary detection using 'which'
- Added message when trying to join a +z channel
- New segmentation fault code by Kanzen_Greiver
*** Unreal3.1 *** (final)
- Moved REMOVE_ADVERTISE a little
- Fixed bug where you could /mode #test +L #test (link a channel to
itself)
- Fixed a bug where a +L channel didn't have to be valid ex /mode #test
+L blah would work, dangerous if 0 is used
- Fixed /map showing U:lines even if HIDE_ULINES was set oops :)
- Fixed a bug where opers couldn't walk through +l
- Fixed a bug where /mode #test +f *N:N was recognized the same as +f N:N
(if *2:3 was set then /mode #chan +f 2:3 it wouldn't set, thought it was the same)
- Removed src/cio_init.c src/cio_main.c src/win32.c src/win32.rc as we don't
use that anymore
- Added ircsprintf() (ircsprintf.c and ircsprintf.h)
- Converted to use ircsprintf
- Now using sprintf_irc from ircu, as %li would screw up the hybrid variant
- Some fdlist updates from bahamut
- Header change
- Some more Header change
- Added agent.c for IRCd Agents (remote control etc)
- Fixed up some make misalignments
- Fixed +I /names
- Removed TESTNET defines
- Added poll() engine from bahamut (hard!)
- Made /vhost send failed login's to +e
- Made /stats V/R/F use raw rather than NOTICE
- Fixed some poll() engine problems
- Some more problems with poll()
- Removed the \2's from the is a Coder msg, whywere they there, no one
knows (codemastr) Because i was the only one using it =P (Stskeeps)
- Fixed /names problem..
- Made /mode <nick> use get_mode_str() to list the modes
- Made /lusers info be pre-calculated :) Saves hell of a lot CPU time
- Made /stats z/Z oper only
- Fixed SJOIN bug only totally fixed when all servers upgraded
- Moving old 3.0 stuff to Changes.old
- Re-added README.ALPHA
- Fixed some more SJOIN bugs
- Fixed NICKv2 bugs with non NICKv2
- Fixed up /info, there will be a better layout for this
- Fixed up some poll() engine bugs (i hope)
- Start of telnet proxy scan code
- Took telnet proxy scan code out again =/ It really fux0red up
- Added networks/treklink.network
- Added options to /HTM, ON/OFF TO (what load do we auto start at) NOISY/QUIET (toggle whether HTM should
announce when it starts)
- Fixed a little bug where /part didn't show the correct channel case
- Made unresolved host connections go faster, idea from PTLink IRCd v3.5.4 great job :)
- Removed support for & and + channels (i hope) and made m_message more
handy and support for /notice +#channel, %#channel etc etc
- Topic fix?
- Incorperated the bahamut m_list and send_list, it's faster and smaller :P
- When /HTM is active /list is disabled to non-opers
- OperMOTD is now loaded into memory (faster, saves memory, and CPU)
- Added /rehash -omotd to rehash the OperMOTD
- Added unrealircd.conf option for SETUID and SETGID if ircd started as root. And you can turn that off/on
by defining/undefining BIG_SECURITY_HOLE in config.h
- Fixed small bug in ircd.c and dynconf.c (not using #ifndef BIG_SECURITY_HOLE)
- Removed & and + channels for sure..
- All MOTDs, RULES are read into memory (including T:lines)
- Added /rehash -bmotd (BotMOTD) /rehash -motd/-rules (MOTDs/RULES)
- Fixed memory leak in dynconf.c, allocated 2048 on each /rehash -dynconf
- Fixed _serious_ memory leak in cloak.c, abused 128 bytes every time
someone went +x
- Alphabeticalized making..
- flush_connections more better
- Fixed calls to check_registered*, more CPU spare:)
- Fixed a bug in /tsctl svstime
- Fixed a bug in the cached MOTDs
- Added support for remote /htm
- Even more tokensation
- Removed IRCII_KLUDGE
- Fixed /lusers wrong reply
- Removed V28PlusOnly define
- Fixed a bug in channel_modes()
- More and more and more tokenzation >:)
- Fixed a bug in m_user
- Removed have_ops() and is_deopped(), they weren't used
- Reorganized can_send() to make it faster
- More tokenzation >:)
- Fixed ircsprintf() %lu error when %lu == 0
- Added devel/ directory, put ideas/specifications in here
- Added devel/new.plines to describe new upcoming P:lines
- Added NO_IDENT_CHECKING in config.h
- Fixed bugs in get_version() and also made it a bit faster
- Fixed RPL_MYINFO problem with UnrealIRCd/32 version and ircII
misunderstanding it, prob other clients too
- Updated msg.h hashtable to get most used commands more close
- Removed some unused defines in msg.h
- Removed dusers (not in use)
- m_user stuff
- Made use of : 's in between ircd.conf field working, using this format:
A:"Test test:Moo":Moo:moo
- Fixed some /lusers miscalculations
- Added INET6 patch, now for making it work :P
- More INET6 patching (not working atm)
- INET6 compiles now, works? :P
- Fixed some WebTV stuff
- Made the m_message routine not do a user hash lookup if it starts with #
- Removed some fields in structures like aClient etc that was unused
- Removed Client->iown and the OWNLOGON code
- Removed Channel->blist
- Removed heaps of unused variables in functions
- Fixed THE G:line bug, missing parameter
- Hopefully fixed some calculation bugs
- +F bugfix
- In TKL a gline shows reason in quit message now
- Fixed the SVSMOTD OPERMOTD and BOTMOTD bug, suggest parantheses problem
- In K:Line it shows reason in quit message now, not sure about AKILL
- Experimental NOTE in register_user added
- Implemented hybrid scache.c, created by orabidoo and Dianora
- Fixed /connect scache problem, and actually fixed the OPERMOTD bug
- The hopefully last calculation bug..
- Made bans and exceptions actually sync *ducks*, done in old fashion MODE
manner, better than making BS (bansync) or incorporating it in SJOIN
- Made /opermotd oper-only, bug reported by Bagge@ROXnet
- Made TOPICs be dynamically allocated - saves heaps memory
- Added hybrids/+cs'es /whowas system. Improved so it doesn't use static
character arrays, and uses dynamically allocated strings instead
- Added UMODE2 PROTOCTL and command, when a usermode change it uses :nick
UMODE2 +-umodes. token = '|'
- Made CONNECTFAST default, will ensure faster connecting
- Updated /helpop to list more commands and new modes
- the 1-message-per-2-sec not applied to opers
- Topic fix with dynamic allocation
- 1-message-per-2-sec now 1-message-per-1.5-sec
- Removed TS fix notice
- Removed User %s tries to become server notice
- Made MAXCHANNELSPERUSER an unrealircd.conf option
- Changed unrealircd.conf version to 1.2
- Credit changes..
- Uses dgets() from hybrid now, should be a minor CPU fix
- Moved WebTV support, and +I disabling to an unrealircd.conf option
- Updated doc/conf.doc, removed references to DALnet, and fixed typos
- Moved doc/Elite.Changes to doc/History/Elite.Changes, away away away with
that one
- Tokenized SQLINE
- Recoded dynconf, validates data too now
- Fixed a /list bug that crashed the server
- Fixed a minor bug in the new dynconf
- Fixed a bug in vhost.conf and dccdeny.conf where if the line was not valid it would crash, now it just
ignores that line
- Added comment support to vhost.conf, dccdeny.conf, and chrestrict.conf (makes loading faster)
- Fixed one of those "code, what the fuck were you smoking" bugs in m_svsmode etc
(what = MODE_DEL - eh?)
- Added AUTO_JOIN_CHANS to unrealircd.conf to force a user to join 1 or
more channels on connect, read networks/unrealircd.conf for more info
- Added networks/axenet.network
- Possible change in the -1 operator bug
- /info changes
- Unreal3.1-beta1 release
- Added a bunch of networks
- Updated doc/conf.doc
- Updated networks/networks.ndx cause someone *cough* sts *cough* forgot
- Updated m_svso to -H the user
- Added Solaris2.5 support and cleaned up Solaris2.x support
- A little /list fix
- Changed the unrealircd.conf version to 1.3
- Fixed a bug in the AUTO_JOIN_CHANS
- Added OPER_AUTO_JOIN_CHANS to unrealircd.conf, same as AUTO_JOIN_CHANS
but is called on /oper
- Readded /ns, /cs, etc but this time they point to /nickserv, /chanserv,
etc
- Removed IRCd Agents and made it so all opers can join unlimited channels
- Updated src/chkconf.c to recognize new lines
- Added "/mode #chan qa" support to send a list of +q users / +a users in a chan
- Fixed "/mode #chan qa" ... see channel.c m_join for the problem ... sts you owe me a tenner =P ..
- Removed Reg1, Reg2 etc etc and register. Modern compilers optimize better
that way
- Sidenote: /msg nick@ bug can easily be caused in m_message
- Unreal3.1-beta1(build2)
- Disabled ID_* stuff but is still there, saves memory
- Made user->virthost a dynamic string now
- Fixed a virthost bug again, and starting to wreck in meow's badword patch,
gonna be a swearword filter and new version of REMOVE_ADVERTISING
- Added meow's badword patch
- Moved the badword patch chmode to +G (G Rated Channel) cause thats what some other ircd's use so lets try
and keep cross compatibility :P
- Added networks/interturk.network
- Fixed a bug in /names thanks to lucas for reporting it and fixing it :)
- Changed the badword umode to +G also
- Removed some unused variables from dynconf.h
- Cleaned up the dynconf and network file code to use less memory
- Fixed the kill bug in NICKv2, caused by codemastr(TM) code
(was calling m_join before sending NICK info to other servers)
- SO NO IT WAS NOT MY FAULT *slap* (Stskeeps) -
- Did an attempt on fixing the /msg nick@ bug
- /stats s in DEVELOP mode will show cached scache hosts
- Added src/aln.c, for the new ALN system, read doc/aln.doc
- Minor ALN fix
- Introduced ALN system, look at send.c::sendto_serv_butone_nickcmd, a
little better, we can scrape some functions now
- Some more ALN stuff, the server now understands |<aln> prefixes,
find_client too
- Added the "IRC Operators Message Of The Day" to /opermotd
- Made Y:1 class in makeconf max 250 (we might get some complaints here,
but people can change to their limit, but we have to make it this low
because else the program rj had can flood/crash the server
- Fixed a ALN problem with |nick persons getting killed off
- Removed an OLD EliteIRCD reference in ./Config, thanks to Linus
- Moved the ALN prefix to @ instead of |, as | would conflict with
clients
- Fixed ALN problem with it masskilling everyone :P
- ** RELEASE OF UNREAL3.1-BETA2 **
- Small Linux-ALPHA fix
- A small vsendto_prefix bugfix(?)
- Added /stats e to list e:lines
- Fixed a small /list problem
- Added #define USE_LOCALE, uses locale stuff in *nix versions
to make better toupper() tolower(). might help some chinese nick
things too
- Fixed a few minor NOSPOOF things
- Changed ircsprintf() to work with %lu with 0-5
- Added unreal-test.network, for the upcoming Unreal TESTnet (for beta
testers and developers only)
- Using MyFree/MyMalloc now instead of MyRealloc.. lets hope it fixes
something
- Fixed the virthost (possible), need extensive testing
- Possible fix of some server_estab problems
- Added networks/cc2.network, networks/kissland.network, and networks/digital-irc.network
- Changed unrealircd.conf version to 1.5
- Added HOST_TIMEOUT and HOST_RETRIES to unrealircd.conf to customize host resolving times
- Added Freelinks garbage collector (by Stskeeps :)), saves a lot of memory.
Check include/config.h on configuring it (default values should do)
- Fixed a /chghost and /chgident buffer overflow problem reported
by Gravitron.
- Added Solaris2.6 and 2.7 support
- Added /dccdeny to add a temporary dccdeny, erased on /rehash -dccdeny
- Added /undccdeny, if the EXACT file you type is found it is removed, else it uses wildcards to search
- Made it so you can't add duplicate dccdenys
- IRCstats.operators count fix. It MUST work now.
- Fixed a bug in dccdeny
- Added a logo to the IRCd startup and made it work a little bit better
- Made version.c update when .c.SH is changed
- Made sendto_serv_butone_token work with ALN prefixes too
- Fixed an SQLINE bug
- SVSFLINEs now sync when a server links
- SVSFLINEs are now tokenized
- Fixed the /nick othernick thing failing (ALN fault, lets hope it doesnt
break other stuff)
- Implemented DOUGH_HASH from hybrid IRCd
- Ran Unreal thru another memory leak check
- Fixed a whowas.c memory leak
- Added /rehash -garbage which will clean up freelinks
- NOTE on PTlinks so called make yourself oper bug.. cannot see how it
can trigger at all.
- Fixed up some E:line code
- Added n:lines banning based on real names (E:lines override n:lines)
- Fixed a minor bug in m_message
- Fixed up and ALNized SERVER commands like @E8 SERVER name
for instance.. sts tends to severely drool over this
- Hopefully fixed the /msg unknownnick missing ERR_NOSUCHNICK bug
- Fixed the cannot change to lowercase nick thing, and made
find_server() call hash_find_server instead of hash_find_client
*slaps* to stskeeps :P
- Fixed a bug caused by sts's '/msg unknownnick missing ERR_NOSUCHNICK bug' fix :)
- n:lines now checked on /setname (not checked for opers)
- Fixed a bug caused by a line of code I forgot to remove ;P
- Fixed the pesky \r bug caused by windows editors. Unreal ignores \r now
in ircd.conf
- For any sake, included the PTlink bugfix.., had some reports from
zurna.net of it
- Fixed an n:line bug(nice bug really? :P)
- Removed behavoir of co-admins able to set +q in #channels
(i think this was cos i was co-admin long time ago -sts)
- Made IRCops able to talk through +b, suggested by The_Cat
- Added /chgname nick :new realname and /svsname as an alias for it
(suggested by ^Tux^)
- Fixed Sts's favorite mistake
- Indented Unreal .c files
- PROTOCTL's can be said more than once now
- Fixed a /dccdeny - /undccdeny bug reported by auspice
- Fixed the negative oper count bug. Was caused by codemastr-coding(TM)
- Removed the old non-caching motd functions
- Some IRCstats.unknown fixes..
- Took out compatibility for "Pyramid OS", is ancient and let them
fix their fscked up os
- If a user (unknown connection) floods 2K (2048 byte) the user is
disconnected and tkl z:lined for 600 secs (10 mins). Idea by GZ
from StarChat IRCd, code recoded by Stskeeps
- A ircd.conf Y:Line class is not added if it contains max clients
> (MAXCONNECTIONS - 15)
- Flood activates only at unknown connections and only at 4K now ..
- Fixed a bug in m_setname with n:lines
- Added n:line support to m_chgname
- n:lines are now checked after a rehash
- Did a bugfix on ALN and non-ALN servers
- Fixed a bug with /chgname with incorrect parameters to other servers
- "Fixed" the /stats u bug?
- Fixed +f not working (?)
- Made the Own-protection just reduce the class maxli instead of bitching..
- Did a dirty hack on ALN problem with colliding hash (will deny linking in
wrong servers)
- Fixed /stats C not showing N:lines, reported by auspice
- Fixed codemastr (possible) fucked up the shell ircd script with
overwriting it ...
- Created /shun, /gline style. /shun +user@host time reason /shun -user@host
will extend it so you can /shun +nick later
- A little anti-0 fix in channel.c
- Made MODE_X, MODE_I etc show mode change to user
- Added channel mode +C to disallow channel CTCPs, /me (CTCP ACTION) is still allowed
- Fixed a bunch of +H bugs
- Fixed a bug where the channel was still shown in /who for +I users
- First part of ZIP_LINKS
- Fixed a typo in ./newnet
- Made /close reset IRCstats.unknown ..
- Made SVSO (ofcourse) IRCstats.operators--;
- Another IRCstats.unknown fix. Hope this works (hacked from undernet code)
- NETINFO protocol 0 is accepted as valid protocool (for services etc)
- /stats s is now avail only for opers in mainstream
- Took out "nick did a /userhost on you"
- Reduced hashtable size
- Took out sequent/dynix support
- Fixed a bug that prolly was fixed by Potvin, but was "not fixed correctly"
- Fixed a crash problem in register_user and most likely fixed the "strange
vhost" thing, (was a dumb bug, mising ircsprintf)
- Fixed the *** NickServ sets mode +creep SVS2MODE bug..
- sendto_serv_butone_token_opt ()..
- Small testing stuff
- In ./Config it runs a quick test to see how many socket()s you can do
- Fixed the double +cF notice on local connections exiting, ugly hack
- Removed the last traces of unix sockets, flag 0x10 free now
- Made all ircops able to use +F (totally this time)
- /quote close do not show realhost of caller anymore
- /shun accepts nick in add mode now (adds *@host)
- Allowed /shunned users to use /pong now
- Fixed (by DrBin) Shun and Gline bug, where they replaced eachothers ->type
.... Learn that (= != ==) /me looks at Sts
- You can now specify 0 as the time for any TKL (ex Glines, Shun) for it to be perm
- Fixed a +L bug, (3.1 only) where any op could set +L
- Added channel mode +u, "Auditorium". Makes /names and /who #channel only
show @'s
- Added config.h setting to disable oper overrides, NO_OPEROVERRIDE
- Added Debug support to win32 makefile ... compile with syntax
NMAKE -f makefile.win32 DEBUG=1
inorder to have debug support ... leave the DEBUG=1 out for normal builds
- Fixed ircsprintf.h ... we do want it to compile in debug mode yes ?
- Made /addline write to correct place when you use -f
- Made /zline not memory corrupt/crash, bad df bug
- Fixed a counting bug with unknown connections, very hopefully
- Fixed /htm giving wrong response when /htm to 1
- Fixed /shun showing "1970" to permanently shunned users
- Fixed ./Config showing freebsd 3.0 in freebsd 4
- Made so badwords.*.conf accepts # comments
- Added some default default badwords.message.conf and badwords.channel.conf
- Made so auditorium mode shows users to @'s
- Fixed a bug where /chgident would overflow into the *real* host if it where greater than USERLEN
because _someone_ aka sts told it to check against HOSTLEN rather than USERLEN... reported by wshs
- Fixed a bug in badwords not loading words correctly, and upped word limit
to 50
- Small fix with ./Config showing incorrect path of stddef.h
- Made operkick be part of NO_OPEROVERRIDE
- Made admins unable to be shunned
- Made some socket errors which normally only showed up in DEBUGMODE, show
up in ircd.log as well
- Fixed a wrongly outputted message (in hash collision detect)
- Removed aHush, not in use
- Removed DISALLOW_MIXED_CASE and IGNORE_FIRST_CHAR, waste of space
- Made IDLE_FROM_MSG stock define
- Made IRCII_KLUDGE disappear :P
- Fixed SENDQ_ALWAYS to be mainstream define (as always)
- Removed s_gline, not in use, removed some modeless channel checks (not needed), removed an old zombie
code, and removed a line from aHush that was missed
- Added networks/seveneagle.network
- /msg irc <command> now works whether or not WEBTV_SUPPORT is on
- Moved /mode #channel ^ and ListBits() to #ifdef DEVELOP
- Made it so servers behind a U:lined server (ex Juped Server) are U:lined too, helpful if HIDE_ULINES is
on (from bahamut)
- Added find_uline (from bahamut) for the new U:line code
- Modified /map to work with the new U:line code
- Redid s_err.c to be ALOT faster, based on bahamut's s_err.c (ALOT of
work)
- Fixed last R_LINE stuff (check_time_interval)
- Fixed /setname desynch
- Removed IsService(), and some wierd stuff
- Broken INETD support removed
- Removed some odd Clone stuff(?)
- Added Blowfish encryption ability (SetSecure()), will extend to more
better encryption
- Fixed a typo in /stats z
- Some more crypto stuff, will work on the new engine tommorow
- You can now encrypt the I:line passwords using mkpasswd (must have CRYPT_ILINE_PASSWORD defined)
- Editted Config to ask if you want encrypted I:line passwords
- Made it so you can encrypt restart/die passwords (same as I:line passwords)
- Editted Config to ask about encrypted restart/die passwords
- Made it so you can *view* a channel topic using /topic #channel without being a member
- Removed , support from /topic (not needed)
- Removed count_channels (not in use)
- Made a major is_banned speed up
- Redid K:line and n:line checking to be alot faster
- Fixed crypto stuff 100% :))
- Added CRYPTOIRCd ('r') to version string
- Added some more crypto stuff
- /crypto <algoritm> <keyfile laying in keys/> <parameters>
- Fixed a ->passwd bug caused by codemastr..
- Added fclose() calls to the vhost, dccdeny, and chrestrict confs
- Some V:line stuff (added VL protoctl, and parsing of the SERVER command for the proto and flags)
- Fixed so that in +c it shows if a user is connected securely
- Backported the passwd stuff, not needed.
- Fixed a crash problem on /quit or /squit
- Fixed some aligning in the VL PROTOCTL
- Fixed some fucked up passwd stuff again ..
- Fixed a little Client Protoctl problem
- Fixed a crypto problem (forgot an #ifdef bad sts!)
- Fully added V:lines (doesn't really do much till the next version, since old versions don't support it)
- Added /stats v to list V:lines (/stats V still does vhost.conf)
- Added OpenBSD 2.x support, thanks to noriko for donating the development shell
- Added so stuff like Lost connection to, (report_error) only goes to realops
- Added some more descriptive error messages
- Added doc/crypto.doc describing the encrypted irc protocol
- Fixed a sendto_serv_butone_token problem
- Removed any trace of MD5, we use random() for nospoof now, this fixed a
license problem too
- Removed NOSPOOF_SEED01 and 02
- Added VHP protoctl, (not in use in the synch). This makes virthost field
in NICKv2 use the real virthost even if its +t. (Thanks to SL7)
- Added support for the CR Java Chat auto join feature
- Fixed a msg.h location problem ..
- Added secure connections and openssl tracing to Config
- Added regex portablity and checks in Config
- Added a #define capability to config.h (DISABLE_USERMOD),
disables /sethost, /setident, /chgname, /chghost, /chgident
- Fixed a /rehash -garbage bug reported by Curt|s
- Added networks/makenet (generates a network configuration file)
- Added networks/staticedge.network
- Fixed some host revealing nick collision stuff
- Tokenized nick->nick PRIVMSG and NOTICE
- Made it so you can remove a protoctl by putting a - in front
- Fixed a bug in summon
- Added protection against webproxies
- Fixed TKL?
- Added SJ3, removed the old
- SJ3 bugfix, and another
- Hopefully a res.c fix.
- Fixed a +I bug
- Fixed a more SJ3 bug
- Updated networks/networks.ndx (bad sts!)
- Added networks/linuxsquare.network
- Added networks/chatstation.network
[recall]
- Fixed the pesky hostname bug
- Fixed a NO_OPEROVERDIE bug reported by Taz
- Fixed a +L bug
- Fixed a typo in Config
- SJ3 fixes. Let's hope this works (f*cken hell..)
- Fixed a V:line bug
- Added /infoserv (you can stop bugging us now skold ;P)
- Removed ALN, and the ALN system.
- Added base64 encoding instead, for ALN v2 (NS)
- Removed a SJ3 debug msg
- Removed SVSMODE +l support, and fixed servicestamp and +d support
- Changed to ircu/hybrid6/unreal mix of numeric 005
- Fixed a SJ3 Fake Direction loopbug (kills on nick collisions)
- SJ3 fixes, loop fix
- Added NS, new generation ALN.
- Added llthangel's whoisfix.patch, Makes sure +hv users show up as
%#channel instead of +#channel. Bug report by ^Fanta.
- Changed find_server_quick to work with masks too ..
- Removed UPING UDP socket. Only resfd opens a udp fd now
- Small memory cleanup
- NS introduction in sendto_serv_butone_token
- Fixed Q:lined nick NickServ from <unregistered> on Nickname Server message
- Fixed a problem in synch using acptr->name as info line
- Introduced NS in SQLINE..
- Fixed a problem in SVS2MODE not displaying mode changes, and well known
why
- Recoded SVSNOOP, but the IRCd doesn't get it at all??
- added llthangel to credits
- Changed channel.c so when you kick someone as halfop it doesn't show as an
OperKick (unless you kick an op) (reported by ^Fanta, patch by llthangel)
(rc2)
- Fixed SVS2MODE bug with illegal modes
- Fixed /notice @%+ bug, where it didnt work at all
- Fixed a small chmode +u bug
- Added sendto_chanops_butone because of codemastr's laziness
- Fixed a few +u bugs
- Fixed a +I bug (yes another one)
- Changed channel.c so that when an opped non +q/+a Oper kicks a user who
is +q/+a it invokes an OperKick (patch by llthangel)
- Fixed the +lL (+Ll) bug, will first be fixed 100% when all is 3.1
- Possible fixed the lopts bug
- Fixed a egcs problem in Config, the strtok bug
- Fixed the 'ulimit core size failed' bug (now checks whether it should
set the core size to unlimited in ./Config
- Changed s_user.c so that Opers will see +s channels in /whois
(patch by llthangel)
- +u now lists +a and +q people, and sends JOINs/PARTs to +a and +q people
- Fixed a /mode (umode) typo where it said no such channel rather than no such nick,
reported by llthangel
- Disabled anything with time in /list options temporary, causes bugs
- Fixed a little /chghost bug
- Fixed a SJ3 bug with ban syncing to SJ2 servers
- Fixed some cloak bugs(???)
- Made it so you can /knock without a reason, and a few /knock cleanups
- Made it so if the server name specified in the M:line does not contain a "."
the ircd logs it to ircd.log and dies
- Updated ./ircd to also say to look at ircd.log
- Fixed a SQLINE synch bug
- Added command line option -F to prevent the ircd to fork out
- Fixed the f*cken TKL bug
- Fixed a netsplit bug
- Changed some find_server(name, NULL) to find_server_quick to speed up
lookup of servers
- Made find_server_quick a prototype, and made some work more quicker as
well
- Removed the : in :nick NICK newnick :timestamp
- Added script ./update to help update, uses pull technology (wget, cvs)
- Added script ./Setup which makes the user forced through Unreal.nfo, FAQ,
Config, and all the things we want them to read/do to compile the IRCd
- Updated PREFIX Client Protoctl
- Added ^MrMike^'s command list, this one will be updated
- Removed ID_CVS, hopefully fixing some bastard stuff
- Fixed a last minute SJOIN bug
[ last fixes ]
- Re-added res_comp.c and win32.c and res_mkquery.c, which was damaged by
the ID_CVS remove
- Fixed a SHOWCONNECTINFO bug
- Fixed a MODE_STRIPWORDS bug
- Fixed a PART bug
- Fixed a STRIPBADWORDS bug
- Fixed a BotMOTD bug
- Added Dianora's /userhost
- Recoded /links using NS
- Recoded /map a bit using NS, and added usercounts to Server struct
- Some crazy time_t -> TS stuff, will save us some time in 2038
- Fixed the "/mode #blah +Cplkf 1 moo 5:5" ( mode/#blah [+pClkf 1moo 5:5]
problem
- Hopefully fixed the +x problem
- Fixed a bug with mkpasswd on OpenBSD
- Added desynch +e warning, and updated ./update enough ...
- Updated update to work better, and that you can use lynx instead of wget
- Added #undef SHUN_NOTICES, to add notices for users who are shunned
- Fixed bug with U:Lines should be able to privmsg/notice and recieve
badwords :P, does not work in channels
- Removed the old GLINE system, TKL is now standard.
- Added INV_TRACK define, we want people testing this.
- Fixed the -1 usercount bug, found by codemastr, fixed by Stskeeps
- Fixed a +h bug reported by Dukemaster
- Added IRIX support (does it work?)
- Fixed crypter so it actually functions (Makefile now sets mode 700) and
it encrypts X and N lines too.
- Fixed empty mode sends in register_user, reported by Bagge
- Added some portability stuff
- Fixed some empty-line/missing parameter stuff in dccdeny, vhost,
and dynconf, chrestrict
- Made vhost strip too long vhosts
- Removed INV_TRACK
- Fixed a typo in /vhost
- Fixed some problems/typos/notlookingsogood (TM) bugs, in the tkl code
- Fixed ban merging/similar bug in SJOIN
- Made /kick for opers only be possible for netadmin/techadmin
- Fixed /server so it doesnt support SERVER name :info anymore..
*** Unreal3.0-Morrigan(fix) ***
+475 -1505
View File
File diff suppressed because it is too large Load Diff
+23 -3
View File
@@ -1,12 +1,32 @@
UnrealIRCd is a free program, but we do put a lot of time, effort, and money
into creating and maintaining Unreal. To make it easier for user's to show their
appreciation, the Unreal team has decided to accept donations through PayPal. If
you like Unreal, and you'd like to see it continue to exist, please consider making
a donation. We're not asking for anything huge, whatever you can afford is fine.
PayPal Donation Link:
<https://www.paypal.com/xclick/business=donation%40unrealircd.com&
item_name=UnrealIRCd+Donation&no_shipping=1&cn=Comments&tax=0&currency_code=USD>
Or simply send a payment through PayPal to:
donation@unrealircd.com
If you don't want to use PayPal, or you want to donate something other than money
(old computer hardware, etc.), contact Stskeeps (stskeeps@unrealircd.com) and send
your donation to:
Send donations to:
------------------
UnrealIRCd Project
C/O Carsten Munk
P.O.Box 52
7400 Herning
Denmark
-- Stskeeps
All those who donate at least $10 USD will have their name and/or company listed in /credits.
Additionally, all donators will be listed on the website (regardless of the amount). To make
this possible, please include along with your donation the name (or nickname) you want to
appear in the list as well as the company name (or IRC server) to list.
Thank you for your support,
The UnrealIRCd Team
[ $Id$ ]
-156
View File
@@ -1,156 +0,0 @@
$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
Linux 2.3.x gcc 2.95.2 glibc 2.1.3
=======================================================================
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
+23
View File
@@ -0,0 +1,23 @@
**** Remote Includes ****
Setting up UnrealIRCd to work with remote includes is not very difficult. The first step is to
download c-ares. C-ares can be downloaded from <http://daniel.haxx.se/projects/c-ares/>
download the latest version of c-ares and extract the .tar.gz somewhere.
Now, download the latest version of curl, available at <http://curl.haxx.se/download.html>
again, extract the tar.gz somewhere.
Next, go to the Unreal3.2 directory and run the curlinstall script. You run the script
as follows:
./curlinstall ares_path curl_path
Paths should be complete pathnames. If you extracted c-ares to /home/username/c-ares-1.0.0
and curl to /home/username/curl-7.11.0 then you would run:
./curlinstall /home/username/c-ares-1.0.0 /home/username/curl-7.11.0
Lastly, run ./Config. When asked whether to enable remote includes say "yes" and when asked
for the path curl was installed to include the path that is printed out after ./curlinstall
completes. Then simply run make to compile Unreal as usual and remote includes should work
fine.
+84 -43
View File
@@ -19,10 +19,11 @@
#* $Id$
#*/
CC=gcc
CC=@CC@
INCLUDEDIR=../include
NETWORKSDIR=
FROMDOS=/home/cmunk/bin/4dos
# [CHANGEME]
# Default flags:
# Change XCFLAGS if you don't like what Config puts there. Same with
@@ -31,9 +32,13 @@ FROMDOS=/home/cmunk/bin/4dos
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
# IRCDLIBS blank. If that fails, try recomendations below.
#
XCFLAGS=
IRCDLIBS=
#XCFLAGS=-O -g -export-dynamic
IRCDLIBS=@IRCDLIBS@ @TRELIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
XCFLAGS=-I@TREINCDIR@ @CFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
@@ -87,53 +92,49 @@ IRCDMODE = 711
# [CHANGEME]
# IRCDDIR must be the same as DPATH in include/config.h
#
IRCDDIR=/usr/local/lib/ircd
IRCDDIR=@IRCDDIR@
# [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=
URL=@URL@
# [CHANGEME]
# If you get a link-time error dealing with strtoul, comment out
# this line.
# STRTOUL= strtoul.o
STRTOUL=
STRTOUL=@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=
FD_SETSIZE=@FD_SETSIZE@
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(NEED_U_INT32_T) $(FD_SETSIZE)
# Where is your openssl binary
OPENSSLPATH=@OPENSSLPATH@
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) @LDFLAGS@ $(FD_SETSIZE)
SHELL=/bin/sh
SUBDIRS=src
BINDIR=$(IRCDDIR)
MANDIR=/usr/local/man
INSTALL=/usr/bin/install
RM=rm
CP=cp
TOUCH=touch
BINDIR=@BINDIR@
INSTALL=@INSTALL@
RM=@RM@
CP=@CP@
TOUCH=@TOUCH@
RES=
all: build
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
'MANDIR=${MANDIR}' 'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
'RES=${RES}' 'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}'
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
'CRYPTOLIB=${CRYPTOLIB}' \
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' 'URL=${URL}'
custommodule:
cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
server:
build:
@@ -147,11 +148,13 @@ build:
( 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 '| Compile is now complete. |'
@echo '| You should now read the documentation and learn |'
@echo '| how to configure your IRCd. |'
@echo '| |'
@echo '| If you really like UnrealIRCd, and would like to |'
@echo '| make a donation, please read the Donation file in|'
@echo '| this archive. :) |'
@echo '| |'
@echo '| Thanks for using Unreal IRCd! If you are in need |'
@echo '| for any kind of help regarding the IRCd please |'
@@ -167,16 +170,13 @@ clean:
-@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
rm -rf include/networks.h include/setup.h Makefile Settings
makex: fromdos
chmod +x Config newnet bsdinstall ircd ircdcron/ircdchk killircd
chmod +x makeconf rehash ircdreg
makex:
chmod +x Config newnet ircd ircdcron/ircdchk killircd
chmod +x rehash ircdreg
fromdos: cleandir
$(FROMDOS) -dv *
@@ -186,7 +186,7 @@ fromdos: cleandir
$(FROMDOS) -dv crypt/*
$(FROMDOS) -dv ircdcron/*
makedist: makex
echo "Making UnrealIRCd compatible IRCd Dist."
echo "Stamping.."
stamp: makedist
echo "/* Auto created release stamping */" > include/stamp.h
@@ -201,5 +201,46 @@ depend:
done
install: all
@echo "Now install by hand; make install is broken."
$(INSTALL) -m 0700 -d $(IRCDDIR)
$(INSTALL) -m 0700 src/ircd $(BINDIR)
$(INSTALL) -m 0700 -d $(IRCDDIR)/networks
$(INSTALL) -m 0600 networks/*.network $(IRCDDIR)/networks
$(INSTALL) -m 0700 networks/makenet $(IRCDDIR)/networks
$(INSTALL) -m 0600 networks/networks.ndx $(IRCDDIR)/networks
$(INSTALL) -m 0700 -d $(IRCDDIR)/doc
$(INSTALL) -m 0600 doc/Authors doc/example.conf doc/example.settings doc/coding-guidelines doc/tao.of.irc doc/unreal32docs.html $(IRCDDIR)/doc
$(INSTALL) -m 0700 -d $(IRCDDIR)/aliases
$(INSTALL) -m 0600 aliases/*.conf $(IRCDDIR)/aliases
$(TOUCH) $(IRCDDIR)/unrealircd.conf
chmod 0600 $(IRCDDIR)/unrealircd.conf
$(INSTALL) -m 0600 badwords.*.conf help.conf LICENSE Donation $(IRCDDIR)
$(INSTALL) -m 0700 unreal $(IRCDDIR)
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
pem: src/ssl.cnf
@echo "Generating certificate request .. "
$(OPENSSLPATH) req -new \
-config src/ssl.cnf -out server.req.pem \
-keyout server.key.pem -nodes
@echo "Generating self-signed certificate .. "
$(OPENSSLPATH) req -x509 -days 365 -in server.req.pem \
-key server.key.pem -out server.cert.pem
@echo "Generating fingerprint .."
$(OPENSSLPATH) x509 -subject -dates -fingerprint -noout \
-in server.cert.pem
@echo "Setting o-rwx & g-rwx for files... "
chmod o-rwx server.req.pem server.key.pem server.cert.pem
chmod g-rwx server.req.pem server.key.pem server.cert.pem
@echo "Done!. If you want to encrypt the private key, run"
@echo "make encpem"
encpem: server.key.pem
@echo "Encrypting server key .."
$(OPENSSLPATH) rsa -in server.key.pem -out server.key.c.pem -des3
-@if [ -f server.key.c.pem ] ; then \
echo "Replacing unencrypted with encrypted .." ; \
cp server.key.c.pem server.key.pem ; \
rm -f server.key.c.pem ; \
fi
+24
View File
@@ -0,0 +1,24 @@
==[ COMPILING ]==
To build the ircd, run:
./Config
make
If you specified an alternative location during ./Config you also need
to run "make install".
==[ MAKING A CONFIG FILE ]==
If you are new, then you need to create your own configfile:
copy doc/example.conf to your main UnrealIRCd directory and call
it unrealircd.conf .
Then open it in an editor and carefully modify it, consult the docs
(doc/unreal32docs.html, or online: www.unrealircd.com/unreal32docs.html)
for more information about every block/setting.
Common problems are explained in the FAQ, which is located at:
http://www.vulnscan.org/UnrealIrcd/faq/ .
==[ BOOTING YOUR IRCD ]==
Just type: ./unreal start
Note that after booting the errors are usually logged to ircd.log,
so check that file if you have any problems.
Again, check the FAQ (and docs) if you have any boot problems.
-13
View File
@@ -1,13 +0,0 @@
WARNING! WARNING! WARNING! WARNING! WARNING!
============================================
THIS IS AN BETA VERSION OF UNREAL. THIS IS
AT NO WAY SUPPORTED BY THE DEVELOPERS. DO NOT
COMPLAIN ABOUT ANY DAMAGE CAUSED WITH THIS VERSION
OF UNREALIRCD - AS THIS IS A VERSION IN DEVELOPMENT.
If - however you decide to compile and run this version
please tell us if you find any bugs, please mail
unreal-dev@lists.sourceforge.net if you do. Any
ideas for features etc goes to same address.
-15
View File
@@ -1,15 +0,0 @@
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$ ]
-52
View File
@@ -1,52 +0,0 @@
Unreal3.1-Silverheart
Scheduled for 4.0:
* /mode #channel +T hostmask=#channel
On join and a person matches the hostmask,
the person will be joined to #channel instead
/mode # T says what T records there are
----------------
* B:Lines or ircu i:lines
* Raising PING bug
* Config Remote access
-----------------------------------------------------------
* Add svsvline for global vlines
---------------
Assigned to codemastr:
* Remove some of the _little_ config.h defines and replace with
unrealircd.conf lines, ex ADMINCHAT, REMOTE_REHASH
* Documentation documentation AND DOCUMENTATION
Assigned to DrBin:
------------------
* Write Windowze GUI for Remote admin thing
* Write protocoll specification for remote admin thing
* Implement protocoll =)
* modify all instances of exit() to be more win32 frendly =) ...
* Bugg Stskeeps about the 1-message-per-1.5-sec ... and to use an unrealircd.conf line
to say what %age of CPU _can_ be used by the server ... and work out what that means...
-----------------------------------------------------------
* X-Windows GUI (how bad it can be but hey! :P)
* IPv6 support (will need to recode IP portion of cloak.c)
HERZ|v6 is HERZ@3ffe:2502:100:f00d:0:0:0:1 (uncloaked)
HERZ|v6 is HERZ@3ffe:2502:100:f00d:0:0:0:*4314*
or something :P
(from irc2.10.3)
* CTCP flood protection(?)
* More /HTM stuff, when HTM is active certain features are disabled
* A /who flag system, like bahamut's
* More unrealircd.conf options
* Something like bahamut/hybrids P:line system where you can specify
which IPs can you a specific port, maybe port specific passwords too?
* /hush or /shun (shun most likely)
* add -SIGTERM support, /restarts on SIGTERM
* Recode dynconf and all the other new confs
* Make proxy scanner scan port 23 also (postponed)
* #define for auto oflag +H
* Port to MacOS 7-9, 68k architecture and PPC
* Port to BeOS
-54
View File
@@ -1,54 +0,0 @@
NOTE: tspre.org does not exist at the moment,
as I dont have a shell for it anymore.
If anyone want to donate a shell with a background process,
and 1 IP with port 6667 open, they are welcome.
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)
+59 -44
View File
@@ -1,55 +1,70 @@
===============================================
= UnrealIRCd v3.1 =
= UnrealIRCd v3.2 =
===============================================
Was brought to you by:
The core team:
==============
* Stskeeps <stskeeps@tspre.org>
* codemastr <codemastr@tspre.org>
* DrBin <drbin@tspre.org>
* codemastr <codemastr@unrealircd.com>
* Syzop <syzop@unrealircd.org>
* Luke <luke@unrealircd.com>
Contributors
============
* McSkaf <mcskaf@unrealircd.org>
* Zogg <zogg@unrealircd.org>
* NiQuiL <niquil@unrealircd.org>
* assyrian <assyrian@unrealircd.org>
* nighthawk <nighthawk@unrealircd.com>
* DrBin <drbin@unrealircd.com>
* llthangel <llthangel@unrealircd.org>
* Griever <griever@unrealircd.com>
Documentation:
==============
* CKnight^ <cknight@unrealircd.com>
Precenses on the Internet:
* http://unreal.tspre.org or http://unreal.sourceforge.net
* ftp://unreal.sourceforge.net/pub/unreal
* http://www.unrealircd.com
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
CVS
====
To get anonymous access: (read only)
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
* To get support
================
* IRC: /server irc.ircsystems.net 6667 - /join #unrealircd
[Note: Please be patient after asking questions, we may do other stuff
or we're away. Don't repeat questions, we heard you first time,
READ THE TOPIC before you ask anything. We do this on a free
base so we are volunteeringly helping you, but we are humans
like you, and we got to have peace at times as well.]
* Mailing list: unreal-support@lists.sourceforge.net (for support)
* READ doc/faq BEFORE ASKING QUESTIONS!
* 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
press enter when asked for password
Then, choose the appropiate branch you want:
* 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.
latest 3.2 release ("stable"):
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
* Got a suggestion?
===================
* Mail it to unreal-dev@lists.sourceforge.net :) or catch one from
the Unreal team online on IRC:)
latest 3.2 fixes / development ("unreal3_2_fixes"):
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r unreal3_2_fixes -d Unreal-stable unreal"
To get support
================
Before asking others for help you MUST:
* read the docs (doc/unreal32docs.html or online: www.unrealircd.com/unreal32docs.html)
* check the FAQ (www.vulnscan.org/UnrealIrcd/faq/)
Means of support:
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
[Note: Follow the bots instructions in order to get voice.
Please be patient after asking questions, we may do other stuff
or we're away. Don't repeat questions, we heard you first time,
READ THE TOPIC before you ask anything. We do this on a free
base so we are volunteeringly helping you, but we are humans
like you, and we got to have peace at times as well.]
* Forum: http://forums.unrealircd.com/
* Mailing list: unreal-users@lists.sourceforge.net
(http://lists.sourceforge.net/lists/listinfo/unreal-users also
has links to the archive).
UnrealIRCd Bugtracker (Where to report bugs or make suggestions)
==================================================================
http://bugs.unrealircd.org
Want to discuss, chat, etc?
=============================
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
+43
View File
@@ -0,0 +1,43 @@
/* Standard Aliases */
alias identify {
format "^#" {
nick chanserv;
type services;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
nick nickserv;
type services;
parameters "IDENTIFY %1-";
};
type command;
};
alias services {
format "^#" {
nick chanserv;
type services;
parameters "%1-";
};
format "^[^#]" {
nick nickserv;
type services;
parameters "%1-";
};
type command;
};
alias register {
format "^#" {
nick chanserv;
type services;
parameters "REGISTER %1-";
};
format "^[^#]" {
nick nickserv;
type services;
parameters "REGISTER %1-";
};
type command;
};
+19
View File
@@ -0,0 +1,19 @@
/* Anope Aliases */
alias nickserv { type services; };
alias ns { nick nickserv; type services; };
alias chanserv { type services; };
alias cs { nick chanserv; type services; };
alias memoserv { type services; };
alias ms { nick memoserv; type services; };
alias operserv { type services; };
alias os { nick operserv; type services; };
alias helpserv { type services; };
alias hs { nick helpserv; type services; };
alias botserv { type services; };
alias bs { nick botserv; type services; };
alias hostserv { type services; };
alias hs { nick hostserv; type services; };
include "aliases/aliases.conf";
+16
View File
@@ -0,0 +1,16 @@
/* Auspice Aliases */
alias nickserv { type services; };
alias ns { nick nickserv; type services; };
alias chanserv { type services; };
alias cs { nick chanserv; type services; };
alias memoserv { type services; };
alias ms { nick memoserv; type services; };
alias helpserv { type services; };
alias hs { nick helpserv; type services; };
alias operserv { type services; };
alias os { nick operserv; type services; };
alias rootserv { type services; };
alias rs { nick rootserv; type services; };
include "aliases/aliases.conf";
+12
View File
@@ -0,0 +1,12 @@
/* Cygnus Aliases */
alias nickserv { type services; };
alias ns { nick nickserv; type services; };
alias chanserv { type services; };
alias cs { nick chanserv; type services; };
alias memoserv { type services; };
alias ms { nick memoserv; type services; };
alias rootserv { type services; };
alias rs { nick rootserv; type services; };
include "aliases/aliases.conf";
+16
View File
@@ -0,0 +1,16 @@
/* Epona Aliases */
alias nickserv { type services; };
alias ns { nick nickserv; type services; };
alias chanserv { type services; };
alias cs { nick chanserv; type services; };
alias memoserv { type services; };
alias ms { nick memoserv; type services; };
alias operserv { type services; };
alias os { nick operserv; type services; };
alias helpserv { type services; };
alias hs { nick helpserv; type services; };
alias botserv { type services; };
alias bs { nick botserv; type services; };
include "aliases/aliases.conf";
+14
View File
@@ -0,0 +1,14 @@
/* Generic Aliases */
alias nickserv { type services; };
alias ns { nick nickserv; type services; };
alias chanserv { type services; };
alias cs { nick chanserv; type services; };
alias memoserv { type services; };
alias ms { nick memoserv; type services; };
alias operserv { type services; };
alias os { nick operserv; type services; };
alias helpserv { type services; };
alias hs { nick helpserv; type services; };
include "aliases/aliases.conf";
+4
View File
@@ -0,0 +1,4 @@
/* Generic StatServ Aliases */
alias statserv { type stats; };
alias ss { nick statserv; type stats; };
+17
View File
@@ -0,0 +1,17 @@
/* IRCServices Aliases */
alias nickserv { type services; };
alias ns { nick nickserv; type services; };
alias chanserv { type services; };
alias cs { nick chanserv; type services; };
alias memoserv { type services; };
alias ms { nick memoserv; type services; };
alias operserv { type services; };
alias os { nick operserv; type services; };
alias helpserv { type services; };
alias hs { nick helpserv; type services; };
alias irciihelp { type services; };
alias statserv { type services; };
alias ss { nick statserv; type services; };
include "aliases/aliases.conf";
+6
View File
@@ -0,0 +1,6 @@
/* OperStats Aliases */
alias operserv { type stats; };
alias os { nick operserv; type stats; };
alias statserv { type stats; };
alias ss { nick statserv; type stats; };
+3
View File
@@ -0,0 +1,3 @@
all:
@autoconf
cp configure ..
+141
View File
@@ -0,0 +1,141 @@
dnl aclocal.m4 generated automatically by aclocal 1.4-p4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE.
dnl Macro: unet_CHECK_TYPE_SIZES
dnl
dnl Check the size of several types and define a valid int16_t and int32_t.
dnl
AC_DEFUN(unreal_CHECK_TYPE_SIZES,
[dnl Check type sizes
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
if test "$ac_cv_sizeof_int" = 2 ; then
AC_CHECK_TYPE(int16_t, int)
AC_CHECK_TYPE(u_int16_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 2 ; then
AC_CHECK_TYPE(int16_t, short)
AC_CHECK_TYPE(u_int16_t, unsigned short)
else
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
fi
if test "$ac_cv_sizeof_int" = 4 ; then
AC_CHECK_TYPE(int32_t, int)
AC_CHECK_TYPE(u_int32_t, unsigned int)
elif test "$ac_cv_sizeof_short" = 4 ; then
AC_CHECK_TYPE(int32_t, short)
AC_CHECK_TYPE(u_int32_t, unsigned short)
elif test "$ac_cv_sizeof_long" = 4 ; then
AC_CHECK_TYPE(int32_t, long)
AC_CHECK_TYPE(u_int32_t, unsigned long)
else
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
fi
AC_CHECK_SIZEOF(rlim_t)
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
AC_DEFINE(LONG_LONG_RLIM_T)
fi
])
AC_DEFUN(CHECK_LIBCURL,
[
AC_ARG_ENABLE(libcurl,
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
[
CURLCFLAG=`$enableval/bin/curl-config --cflags`
CFLAGS="$CFLAGS $CURLCFLAG -DUSE_LIBCURL"
CURLLIBS=`$enableval/bin/curl-config --libs`
dnl curl-7.11.0 and up will include the ares info, older versions do not
if test "x`echo $CURLLIBS |grep .*ares.*`" = x ; then
CURLLIBS="$CURLLIBS -lares"
fi
IRCDLIBS="$IRCDLIBS $CURLLIBS"
URL="url.o"
AC_SUBST(URL)
])
])
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
AC_DEFUN([CHECK_SSL],
[
AC_ARG_ENABLE(ssl,
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr])],
[
AC_MSG_CHECKING(for openssl)
for dir in $enableval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do
ssldir="$dir"
if test -f "$dir/include/openssl/ssl.h"; then
AC_MSG_RESULT(found in $ssldir/include/openssl)
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break;
fi
if test -f "$dir/include/ssl.h"; then
AC_MSG_RESULT(found in $ssldir/include)
found_ssl="yes";
if test ! "$ssldir" = "/usr" ; then
CFLAGS="$CFLAGS -I$ssldir/include";
fi
break
fi
done
if test x_$found_ssl != x_yes; then
AC_MSG_RESULT(not found)
AC_WARN(disabling ssl support)
else
CRYPTOLIB="-lssl -lcrypto";
if test ! "$ssldir" = "/usr" ; then
LDFLAGS="$LDFLAGS -L$ssldir/lib";
fi
AC_DEFINE(USE_SSL)
fi
],
)
])
AC_DEFUN([CHECK_ZLIB],
[
AC_ARG_ENABLE(ziplinks,
[AC_HELP_STRING([--enable-ziplinks],[enable ziplinks will check /usr/local /usr /usr/pkg])],
[
AC_MSG_CHECKING(for zlib)
for dir in $enableval /usr/local /usr /usr/pkg; do
zlibdir="$dir"
if test -f "$dir/include/zlib.h"; then
AC_MSG_RESULT(found in $zlibdir)
found_zlib="yes";
if test "$zlibdir" = "/usr" ; then
CFLAGS="$CFLAGS -DZIP_LINKS";
else
CFLAGS="$CFLAGS -I$zlibdir/include -DZIP_LINKS";
fi
break;
fi
done
if test x_$found_zlib != x_yes; then
AC_MSG_RESULT(not found)
AC_WARN(disabling ziplink support)
else
IRCDLIBS="$IRCDLIBS -lz";
if test "$zlibdir" != "/usr" ; then
LDFLAGS="$LDFLAGS -L$zlibdir/lib";
fi
HAVE_ZLIB=yes
fi
AC_SUBST(HAVE_ZLIB)
],
)
])
+400
View File
@@ -0,0 +1,400 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/ircd.c)
if test $# = 0; then
echo "You might want to run ./Config or provide some parameters to this script."
echo "./configure --help for information about this script"
exit 0
fi
AC_CONFIG_HEADER(include/setup.h)
AC_PROG_CC
if test "$ac_cv_prog_gcc" = "yes"; then
CFLAGS="$CFLAGS -funsigned-char"
AC_CACHE_CHECK(if gcc has a working -pipe, ac_cv_pipe, [
save_cflags="$CFLAGS"
CFLAGS="$CFLAGS -pipe"
AC_TRY_COMPILE(,, ac_cv_pipe="yes", ac_cv_pipe="no")
CFLAGS="$save_cflags"
])
if test "$ac_cv_pipe" = "yes"; then
CFLAGS="-pipe $CFLAGS"
fi
fi
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(OPENSSLPATH,openssl)
AC_PATH_PROG(INSTALL,install)
AC_CHECK_PROG(MAKER, gmake, gmake, make)
AC_PATH_PROG(GMAKE,gmake)
AC_PATH_PROG(GUNZIP, gunzip)
AC_PATH_PROG(PKGCONFIG, pkg-config)
dnl Checks for libraries.
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
AC_CHECK_LIB(socket, socket,IRCDLIBS="$IRCDLIBS-lsocket " SOCKLIB="-lsocket")
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl " INETLIB="-lnsl")
AC_SUBST(IRCDLIBS)
AC_SUBST(MKPASSWDLIBS)
dnl module checking based on Hyb7's module checking code
AC_DEFUN(AC_ENABLE_DYN,
[
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS -ldl",
[
AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found)
AC_DEFINE(STATIC_LINKING)
]))
hold_cflags=$CFLAGS
CFLAGS="$CFLAGS -export-dynamic"
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
if test "$ac_cv_export_dynamic" = "no"; then
CFLAGS=$hold_cflags
fi
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
if test "$ac_cv_prog_gcc" = "yes"; then
ac_cv_pic="-fPIC -DPIC -shared"
case `uname -s` in
Darwin*[)]
ac_cv_pic="-bundle -flat_namespace -undefined suppress"
;;
esac
else
case `uname -s` in
SunOS*[)]
ac_cv_pic="-KPIC -DPIC -G"
;;
esac
fi
])
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
cat >uscore.c << __EOF__
int main() {
return 0;
}
__EOF__
$CC -o uscore $CFLAGS uscore.c 1>&5
if test -z "`strings -a uscore |grep '^_main$'`"; then
ac_cv_underscore=no
else
ac_cv_underscore=yes
fi
rm -f uscore uscore.c
])
if test "$ac_cv_underscore" = "yes"; then
AC_DEFINE(UNDERSCORE)
fi
MODULEFLAGS=$ac_cv_pic
AC_DEFINE(DYNAMIC_LINKING)
])
AC_DEFUN(AC_ENABLE_INET6,[
AC_CACHE_CHECK(if your system has IPv6 support, ac_cv_ip6, [
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
int main() {
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
exit(1);
exit(0);
}
], ac_cv_ip6=yes, ac_cv_ip6=no)
])
if test "$ac_cv_ip6" = "no"; then
AC_MSG_WARN(Your system does not support IPv6 so it will not be enabled)
else
AC_DEFINE(INET6)
fi
LIBS="$save_libs"
])
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(PARAMH))
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(STDLIBH))
AC_CHECK_HEADER(stddef.h,AC_DEFINE(STDDEFH))
AC_CHECK_HEADER(sys/syslog.h,AC_DEFINE(SYSSYSLOGH))
AC_CHECK_HEADER(unistd.h,AC_DEFINE(UNISTDH))
AC_CHECK_HEADER(string.h,AC_DEFINE(STRINGH))
AC_CHECK_HEADER(strings.h,AC_DEFINE(STRINGSH))
AC_CHECK_HEADER(malloc.h,AC_DEFINE(MALLOCH,<malloc.h>))
AC_CHECK_HEADER(sys/rusage.h,AC_DEFINE(RUSAGEH))
AC_CHECK_HEADER(glob.h,AC_DEFINE(GLOBH))
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_TYPE_UID_T
unreal_CHECK_TYPE_SIZES
AC_CACHE_CHECK(what kind of nonblocking sockets you have, ac_cv_nonblocking,[
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB"
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef O_NONBLOCK
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}
],ac_cv_nonblocking=O_NONBLOCK,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(0);
}
int main() {
#ifdef O_NDELAY
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
}],ac_cv_nonblocking=O_NDELAY,[
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <signal.h>
alarmed() {
exit(1);
}
int main() {
#ifdef FIONBIO
char b[12], x[32];
int f, l = sizeof(x);
f = socket(AF_INET, SOCK_DGRAM, 0);
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
signal(SIGALRM, alarmed);
alarm(3);
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
alarm(0);
exit(0);
}
#endif
exit(1);
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
AC_DEFINE(NBLOCK_POSIX)
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
AC_DEFINE(NBLOCK_BSD)
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
AC_DEFINE(NBLOCK_SYSV)
fi
LIBS="$save_libs"
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
AC_CHECK_FUNCS(snprintf,AC_DEFINE(HAVE_SNPRINTF))
AC_CHECK_FUNCS(vsnprintf,AC_DEFINE(HAVE_VSNPRINTF))
AC_CHECK_FUNCS(strlcpy, AC_DEFINE(HAVE_STRLCPY))
AC_CHECK_FUNCS(strlcat, AC_DEFINE(HAVE_STRLCAT))
AC_CHECK_FUNCS(strlncat, AC_DEFINE(HAVE_STRLNCAT))
AC_CACHE_CHECK(if we can set the core size to unlimited, ac_cv_force_core,[
AC_TRY_RUN([
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
int main() {
struct rlimit corelim;
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
if (setrlimit(RLIMIT_CORE, &corelim))
exit(1);
exit(0);
}
],ac_cv_force_core=yes,ac_cv_force_core=no)
])
if test "$ac_cv_force_core" = "yes"; then
AC_DEFINE(FORCE_CORE)
fi
AC_FUNC_VPRINTF
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(GETTIMEOFDAY),[AC_CHECK_FUNCS(lrand48,AC_DEFINE(LRADN48))])
AC_CHECK_FUNCS(getrusage,AC_DEFINE(GETRUSAGE_2),[AC_CHECK_FUNCS(times,AC_DEFINE(TIMES_2))])
AC_CHECK_FUNCS(setproctitle,AC_DEFINE(HAVE_SETPROCTITLE),[
AC_CHECK_LIB(util,setproctitle,AC_DEFINE(HAVE_SETPROCTITLE) IRCDLIBS="$IRCDLIBS-lutil",[
AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,AC_DEFINE(HAVE_PSSTRINGS),[
AC_CHECK_FUNCS(pstat,AC_DEFINE(HAVE_PSTAT))
])
])
])
AC_CACHE_CHECK(what type of signals you have, ac_cv_sigtype, [
AC_TRY_RUN([
#include <signal.h>
int main() {
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
}
], ac_cv_sigtype=POSIX, [
AC_TRY_RUN([
#include <signal.h>
int calls = 0;
void handler()
{
if (calls)
return;
calls++;
kill(getpid(), SIGTERM);
sleep(1);
}
int main() {
signal(SIGTERM, handler);
kill(getpid(), SIGTERM);
exit(0);
}
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
if test "$ac_cv_sigtype" = "POSIX"; then
AC_DEFINE(POSIX_SIGNALS)
elif test "$ac_cv_sigtype" = "BSD"; then
AC_DEFINE(BSD_RELIABLE_SIGNALS)
else
AC_DEFINE(SYSV_UNRELIABLE_SIGNALS)
fi
AC_CHECK_FUNCS(strtoken,,AC_DEFINE(NEED_STRTOKEN))
AC_CHECK_FUNCS(strtok,,AC_DEFINE(NEED_STRTOK))
AC_CHECK_FUNCS(strerror,,AC_DEFINE(NEED_STRERROR))
AC_CHECK_FUNCS(index,,AC_DEFINE(NOINDEX))
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
AC_CHECK_FUNCS(bcopy,,AC_DEFINE(NEED_BCOPY))
AC_CHECK_FUNCS(bcmp,,AC_DEFINE(NEED_BCMP))
AC_CHECK_FUNCS(bzero,,AC_DEFINE(NEED_BZERO))
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(GOT_STRCASECMP))
save_libs="$LIBS"
LIBS="$LIBS $SOCKLIB $INETLIB"
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE(NEED_INET_ADDR))
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE(NEED_INET_NTOA))
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE(NEED_INET_NETOF))
LIBS="$save_libs"
AC_CHECK_FUNCS(syslog,AC_DEFINE(HAVE_SYSLOG))
AC_CHECK_FUNCS(vsyslog,AC_DEFINE(HAVE_VSYSLOG))
AC_SUBST(STRTOUL)
AC_SUBST(CRYPTOLIB)
AC_SUBST(MODULEFLAGS)
AC_ARG_WITH(listen, [AC_HELP_STRING([--with-listen=backlog],[Specify the listen backlog value])],
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
AC_ARG_WITH(nick-history, [AC_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
AC_ARG_WITH(sendq, [AC_HELP_STRING([--with-sendq=maxsendq],[Specify the max sendq for the server])],
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
AC_ARG_WITH(bufferpool, [AC_HELP_STRING([--with-bufferpool=size],[Specify the size of the buffer pool])],
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(18 * MAXSENDQLENGTH)]))
AC_ARG_WITH(hostname, [AC_HELP_STRING([--with-hostname=host],[Specify the local hostname of the server])], AC_DEFINE_UNQUOTED(DOMAINNAME,"$withval"),AC_DEFINE_UNQUOTED(DOMAINNAME,"`hostname`"))
AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`")
AC_ARG_WITH(permissions, [AC_HELP_STRING([--with-permissions=permissions],[Specify the default permissions for
configuration files])], AC_DEFINE_UNQUOTED(DEFAULT_PERMISSIONS,$withval), AC_DEFINE(DEFAULT_PERMISSIONS, 0600))
AC_ARG_WITH(dpath, [AC_HELP_STRING([--with-dpath=path],[Specify the path where configuration files are stored])],
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval"; mkdir $withval/tmp, AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`" mkdir `pwd`/tmp)
AC_ARG_WITH(fd-setsize, [AC_HELP_STRING([--with-fd-setsize=size],[Specify the max file descriptors to use])],
ac_fd=$withval, ac_fd=1024)
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $ac_fd)
AC_ARG_WITH(spath, [AC_HELP_STRING([--with-spath],[Specify the location of the executable])],
AC_DEFINE_UNQUOTED(SPATH,"$withval") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
AC_ARG_ENABLE(nospoof, [AC_HELP_STRING([--enable-nospoof],[Enable spoofing protection])], AC_DEFINE(NOSPOOF))
AC_ARG_ENABLE(prefixaq, [AC_HELP_STRING([--enable-prefixaq],[Enable chanadmin and chanowner prefixes])], AC_DEFINE(PREFIX_AQ))
AC_ARG_ENABLE(hub, [AC_HELP_STRING([--enable-hub],[Compile as a hub server])], AC_DEFINE(HUB))
CHECK_SSL
CHECK_ZLIB
CHECK_LIBCURL
AC_ARG_ENABLE(dynamic-linking, [AC_HELP_STRING([--enable-dynamic-linking],[Make the IRCd dynamically link shared objects rather than statically])], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
AC_ARG_ENABLE(inet6, [AC_HELP_STRING([--enable-inet6],[Make the IRCd support IPv6])], AC_ENABLE_INET6)
AC_SUBST(IRCDDIR)
AC_SUBST(BINDIR)
AC_MSG_CHECKING(if FD_SETSIZE is large enough to allow $ac_fd file descriptors)
AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
int main() {
if (FD_SETSIZE >= $ac_fd)
exit(0);
exit(1);
}
], AC_MSG_RESULT(yes), [
FD_SETSIZE="-DFD_SETSIZE=$ac_fd"
AC_MSG_RESULT(no)
])
AC_SUBST(FD_SETSIZE)
case `uname -s` in
*SunOS*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
*solaris*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
esac
dnl REMEMBER TO CHANGE WITH A NEW RELEASE!
tre_version="0.6.6"
AC_MSG_RESULT(extracting TRE regex library)
cur_dir=`pwd`
cd extras
dnl remove old tre directory to force a recompile...
rm -rf tre-$tre_version
if test "x$ac_cv_path_GUNZIP" = "x" ; then
tar xfz tre.tar.gz
else
cp tre.tar.gz tre.tar.gz.bak
gunzip -f tre.tar.gz
cp tre.tar.gz.bak tre.tar.gz
tar xf tre.tar
fi
AC_MSG_RESULT(configuring TRE regex library)
cd tre-$tre_version
./configure --disable-agrep --disable-shared --disable-system-abi --disable-wchar --disable-multibyte --prefix=$cur_dir/extras/regexp
AC_MSG_RESULT(compiling TRE regex library)
$ac_cv_prog_MAKER
AC_MSG_RESULT(installing TRE regex library)
$ac_cv_prog_MAKER install
TREINCDIR="$cur_dir/extras/regexp/include"
AC_SUBST(TREINCDIR)
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
TRELIBS="-L../extras/regexp/lib -ltre"
else
TRELIBS=`$ac_cv_path_PKGCONFIG --libs tre.pc`
fi
AC_SUBST(TRELIBS)
cd $cur_dir
AC_OUTPUT(Makefile src/modules/Makefile unreal ircdcron/ircdchk)
chmod 0700 unreal
chmod 0700 ircdcron/ircdchk
+52
View File
@@ -0,0 +1,52 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that the +G channel/user mode
will work properly. You can easily modify this file at your will.
If you got words to add to this file, please mail badwords@tspre.org
This is some filling space, scroll down to see the words
*/
badword channel { word "pussy"; };
badword channel { word "fuck"; };
badword channel { word "whore"; };
badword channel { word "slut"; };
badword channel { word "shit"; };
badword channel { word "asshole"; };
badword channel { word "bitch"; };
badword channel { word "cunt"; };
badword channel { word "vagina"; };
badword channel { word "penis"; };
badword channel { word "jackass"; };
badword channel { word "*fucker*"; };
badword channel { word "faggot"; };
badword channel { word "fag"; };
badword channel { word "horny"; };
badword channel { word "gay"; };
badword channel { word "dickhead"; };
badword channel { word "sonuvabitch"; };
badword channel { word "*fuck*"; };
badword channel { word "tits"; };
+52
View File
@@ -0,0 +1,52 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that the +G channel/user mode
will work properly. You can easily modify this file at your will.
If you got words to add to this file, please mail badword messages@tspre.org
This is some filling space, scroll down to see the words
*/
badword message { word "pussy"; };
badword message { word "fuck"; };
badword message { word "whore"; };
badword message { word "slut"; };
badword message { word "shit"; };
badword message { word "asshole"; };
badword message { word "bitch"; };
badword message { word "cunt"; };
badword message { word "vagina"; };
badword message { word "penis"; };
badword message { word "jackass"; };
badword message { word "*fucker*"; };
badword message { word "faggot"; };
badword message { word "fag"; };
badword message { word "horny"; };
badword message { word "gay"; };
badword message { word "dickhead"; };
badword message { word "sonuvabitch"; };
badword message { word "*fuck*"; };
badword message { word "tits"; };
+52
View File
@@ -0,0 +1,52 @@
/*
Unreal Internet Relay Chat Daemon
Copyright (C) Carsten V. Munk 2000
NOTE: Those words are not meant to insult you (the user)
but is meant to be a list of words so that quit message censoring
will work properly. You can easily modify this file at your will.
If you got words to add to this file, please mail badword badwords@tspre.org
This is some filling space, scroll down to see the words
*/
badword quit { word "pussy"; };
badword quit { word "fuck"; };
badword quit { word "whore"; };
badword quit { word "slut"; };
badword quit { word "shit"; };
badword quit { word "asshole"; };
badword quit { word "bitch"; };
badword quit { word "cunt"; };
badword quit { word "vagina"; };
badword quit { word "penis"; };
badword quit { word "jackass"; };
badword quit { word "*fucker*"; };
badword quit { word "faggot"; };
badword quit { word "fag"; };
badword quit { word "horny"; };
badword quit { word "gay"; };
badword quit { word "dickhead"; };
badword quit { word "sonuvabitch"; };
badword quit { word "*fuck*"; };
badword quit { word "tits"; };
-84
View File
@@ -1,84 +0,0 @@
#! /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
+1360
View File
File diff suppressed because it is too large Load Diff
Vendored
+1375
View File
File diff suppressed because it is too large Load Diff
Vendored Executable
+11088
View File
File diff suppressed because it is too large Load Diff
-38
View File
@@ -1,38 +0,0 @@
#************************************************************************
#* 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
-63
View File
@@ -1,63 +0,0 @@
/************************************************************************
* 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)
-55
View File
@@ -1,55 +0,0 @@
#!/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);
-43
View File
@@ -1,43 +0,0 @@
/* 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;
}
Executable
+66
View File
@@ -0,0 +1,66 @@
#!/bin/sh
if test "x$1" = x -o "x$2" = x ; then
echo "Syntax:"
echo "curlinstall ares_path libcurl_path"
echo ""
exit 1
fi
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
c="\c"
else
n="-n"
fi
save_PWD=`pwd`
echo "Installing ares"
cd $1
./configure --prefix=$HOME/ares && make && make install
SSLFLAG=""
while [ -z "$SSLFLAG" ] ; do
echo ""
echo "Should libcurl be built with SSL support?"
echo $n "-> " $c
read cc
case "$cc" in
[Yy]*)
SSLFLAG="--with-ssl"
;;
[Nn]*)
SSLFLAG="--without-ssl"
;;
*)
echo ""
echo "You must enter either Yes or No"
;;
esac
done
if [ -f $HOME/ares/lib/libcares.a ] ; then
if [ -f $HOME/ares/lib/libares.a ] ; then
rm -f $HOME/ares/lib/libares.a
fi
cp $HOME/ares/lib/libcares.a $HOME/ares/lib/libares.a
fi
echo "Installing libcurl"
cd $2
CPPFLAGS="-I$HOME/ares/include" ./configure --prefix=$HOME/curl --disable-shared \
--disable-thread --enable-ares=$HOME/ares --disable-ipv6 $SSLFLAG
cp -R $HOME/ares/lib ares
make && make install
if [ -f $HOME/curl/lib/libares.a ] ; then
rm -f $HOME/curl/lib/libares.a
fi
cp $HOME/ares/lib/libares.a $HOME/curl/lib
cd $save_PWD
echo ""
echo ""
echo "libcurl has been installed. When running ./Config specify:"
echo "$HOME/curl"
echo "for the directory you installed libcurl to."
-26
View File
@@ -1,26 +0,0 @@
ALN, Alphanumeric System
(C) Stskeeps 2000
ALN is a quick hack to short down usage of bandwidth-using servernames
in prefixes, NICK commands, etc etc. It replaces the name with a
1 or 2 byte prefix in a system, look at src/aln.c for the prefix
types/values. It will be an PROTOCTL, and used in NICK messages and so on,
and introduce a new prefix server<->server called |server. The value of the
server is calculated by a hash value, the scache system, so that the server
can lookup with a new scache function, scache_find_by_hash(int i). The
question of it will conflict in similar-hash server names, is a wonder to me
:P, we will find out, but scache will fail at same time then.
Examples:
& Medb 4 957458466 ~Medb bservice.org D2 0 +iwrx *
:BotService Bot - bservice.org - Owner: terri{J}
where D2 is the hash value of oxygen.phrozen.org (/stats s on a
#define DEVELOP server). irc.flirt.org has hash 96 (ALN code AX) for
instance.
@D2 GLOBOPS :message
will be a message from server with hash D2, found find-by-hash(256)
-48
View File
@@ -1,48 +0,0 @@
From cmunk@draconic.fyremoon.net Wed Apr 5 18:09:55 2000
Date: Wed, 5 Apr 2000 18:07:55 +0100 (BST)
From: "The Nightwalker (Stskeeps)" <cmunk@draconic.fyremoon.net>
To: unreal-dev@lists.sourceforge.net
Subject: [Unreal-dev] P:Lines
Some stuff i got ideas about.. stripping the IP and port from the M:Line
and enforcing the main port to be in a M:line
M:irc.fyremoon.net:*:Forever is gonna start tonight:*
P:ip:flags:password1,password2,password3:port
| | | \- port to bind to
| | |
| | \- Commaseperated lists of accepted passwords
| | * if none
| |
| \--- C = Allow clients
| S = Allow servers
| R = ONLY allow our remote admin connections
| (may only be on a P:line of its own)
| J = Clients that connect here are counted as Java(Confroomhack)
| * = CS
|
\--- IP to bind to, * = INADDR_ANY (all interfaces)
Will make P:Lines more efficent
---------------------------------------------------------------------
Carsten V. Munk - The Nightwalker, known on IRC as Stskeeps or techie
* ICQ: 16465977 - E-Mail: stskeeps@tspre.org
* Author of UnrealIRCd (http://unreal.tspre.org)
* Technical Admin @ irc.roxnet.org, server admin of irc.fyremoon.net
"To understand a program you must become both the machine and the program."
----------------------------------------------------------------------
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/CC d- s: a--- C+++ UL P L++ E-- W++ N+ o-- K- w--- O- M V-- PS+ PE- Y+
PGP t+ 5 X R- tv- b+ DI++ D++ G e-- h! r z**
------END GEEK CODE BLOCK------
_______________________________________________
Unreal-dev mailing list
Unreal-dev@lists.sourceforge.net
http://lists.sourceforge.net/mailman/listinfo/unreal-dev
-72
View File
@@ -1,72 +0,0 @@
# $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-)\)
# }
# }
+6 -2
View File
@@ -118,8 +118,12 @@ Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
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.. :/
UnrealIRCd Coders
Carsten Munk <stskeeps@unrealircd.com> / May 1999, date
Dominick Meglio <codemastr@unrealircd.com> / June 1999, date
David Flynn / March 2000, June 2000
McSkaf / June 2001, September 2001
Finny Merrill <griever@unrealircd.com> / November 2001, date
Thanks go to those persons not mentioned here who have added their advice,
opinions, and code to IRC.
-128
View File
@@ -1,128 +0,0 @@
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$ ]
-16
View File
@@ -1,16 +0,0 @@
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$ ]
-34
View File
@@ -1,34 +0,0 @@
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$ ]
-41
View File
@@ -1,41 +0,0 @@
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$ ]
-129
View File
@@ -1,129 +0,0 @@
[ $Id$ ]
Take this with a grain of salt.. it's heaps old and this isn't Elite anymore
---------------------------
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.
-86
View File
@@ -1,86 +0,0 @@
/************************************************************************
* 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
View File
@@ -1,963 +0,0 @@
/************************************************************************
* 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
View File
@@ -1,382 +0,0 @@
/************************************************************************
* 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
View File
@@ -1,241 +0,0 @@
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
+195
View File
@@ -0,0 +1,195 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnrealIRCd - 3.2 - Offical Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p> <font size="-1">I M P O R T A N T R E A D I N G</font></p>
<p><font size="-1">(YES, YOU WILL NEED TO READ ALL OF THIS)</font></p>
<p><font size="-1">* Unreal3.2 is a lot different than Unreal3.1.1. Forget
all you have learned about setting up Unreal3.1.1 - this is a lot different.
We have got a new configuration format that integrates all the former config
files,ircd.conf, vhost.conf, chrestrict.conf, unrealircd.conf, into to one newunrealircd.conf
(what the ircd.conf is called now). See doc/ for more information on the configuration
format</font></p>
<p><font size="-1">* THIS IS A BETA VERSION, REPORT BUGS ON http://bugs.unrealircd.org</font></p>
<p><font size="-1">* We have introduced a new cloaking algorithm (+x), which makes
it incompatible with Unreal3.1.1 - these can however still link, but the hostname
will look different. This is made of three big numbers, configured in the config
file - and these MUST be the same on all servers on the network. Keep these
numbers secret, and the cloaking algorithm is uncrackable (within 55 years,
that is). The +x algorithm was changed slightly to fix a method of cracking
that was found. #define COMPAT_BETA4_KEYS to use the beta4 system for compatibility
with older betas.</font></p>
<p><font size="-1">* If you use Linux and have problems where the IRCd complains
that MAXCONNECTIONS is larger than FD_SETSIZE, you need to get your root to
edit /usr/include/bits/types.h - #define __FD_SETSIZE 1024 to be somenumber
that is equal or higher than MAXCONNECTIONS. This is a problem with Linux that
it is hard coded and non override able in some distributions. We recommend you
use FreeBSD or the variants of this if you need to run high load IRC servers.</font></p>
<p><font size="-1">* We use autoconf to help with compilation, and this should
make us able to a lot more platform (we have even ported to BeOS).</font></p>
<p><font size="-1">* We require a pthreads library for the SOCKS scan now - and
this is now done in the background (no more waiting!).</font></p>
<p><font size="-1">* The IRCd is now modularized, and you load modules with the
loadmodule command. You will most likely want to add these lines:<br>
loadmodule &quot;src/modules/commands.so&quot;;<br>
loadmodule &quot;src/modules/scan.so&quot;;<br>
loadmodule &quot;src/modules/scan_socks.so&quot;;<br>
loadmodule &quot;src/modules/scan_http.so&quot;;</font></p>
<p><font size="-1"> If you would like to code a module, doc/ will contain a module
guide,and we got an example module in src/modules/m_dummy.c.</font></p>
<p><font size="-1">* We have some IPv6 support, and there are some minor bugs
in it.</font></p>
<p><font size="-1">* The documentation is NOT yet 100% complete</font></p>
<p><font size="-1">* We have added snomask (similar to ircu), basically this allowed
us to remove several modes. Modes +cfFkje are gone, but don't worry, you can
still use them. They are now added like this:</font></p>
<p><font size="-1"> /mode yournick +s +cF</font></p>
<p><font size="-1"> You set the flags in the second parameter of the mode command
for a mode change +s, setting -s with no parameters removes all your snomask.
You can remove a specific snomask by doing:</font></p>
<p><font size="-1"> /mode yournick -s -c</font></p>
<p><font size="-1">The current snomasks are:</font></p>
<p><font size="-1"> c - local connects<br>
F - far connects<br>
f - flood notices<br>
k - kill notices<br>
e - 'eyes' notices<br>
j - 'junk' notices<br>
v - vhost notices<br>
G - gline/shun notices<br>
n - nick change notices<br>
q - deny nick (Q:line) rejection notices</font></p>
<p><font size="-1"> It shouldn't be too hard to figure out, just play around with
it a bit :)</font></p>
<p><font size="-1">* /who needs testing it was recorded and may contain bugs</font></p>
<p><font size="-1">* We have added alias {} which allows you to dynamically create
commands such as /nickserv Read example.conf for more information on how to
create your own. To use standard ones include one of the following files</font></p>
<p><font size="-1"> aliases/ircservices.conf (IRCServices, Daylight)<br>
aliases/epona.conf (Epona)<br>
aliases/auspice.conf (Auspice)<br>
aliases/generic.conf (Magick, Sirius, Wrecked)<br>
aliases/operstats.conf (OperStats)<br>
aliases/genericstats.conf (GeoStats, NeoStats)</font></p>
<p><font size="-1">* You can now use an IP in the oper::from and vhost::from fields
even if the host resolves</font></p>
<p><font size="-1">* Added an http proxy scanner (scan_http.so)</font></p>
<p><font size="-1">* Added oper::snomask to specify default oper snomask modes</font></p>
<p><font size="-1">* /helpop text has been moved to a config directive, help {}.
To keep the standard help text you need to include help.conf so add include
&quot;help.conf&quot;; to your config file.</font></p>
<p><font size="-1">* To be able to use G:lines you must now have the can_gkline
flag (or t if old style flags)</font></p>
<p><font size="-1">* Usermode +T (Tech Admin) has been removed, since it is 100%
useless</font></p>
<p><font size="-1">* Added a make install to copy files to the installation location</font></p>
<p><font size="-1">* Removed ./ircd, ./killircd, crypt/mkpasswd, ./rehash and
merged them into a new ./unreal [start|stop|rehash|mkpasswd] for mkpasswd the
format is</font></p>
<p><font size="-1"> ./unreal mkpasswd [method] [password]</font></p>
<p><font size="-1">* Added a new system for crypting passwords. You now do for
example password &quot;my password&quot; { crypt; }; This allows you to have
some crypted passwords and others not. If you have SSL enabled you may also
use the md5 and sha1 methods.</font></p>
<p><font size="-1">* The old blackhole is now set::scan::endpoint and specifies
an IP and port to tell proxies to connect to.</font></p>
<p><font size="-1">* You can now specify a cipher list for SSL links (read doc/conf.doc
for more info)</font></p>
<p><font size="-1">* +I is now in invisibility.so so it is easily disabled</font></p>
<p><font size="-1">* set::socks has been replaced by set::scan (read doc/conf.doc
for more info)</font></p>
<p><font size="-1">* If you experience problems with the scanners, perhaps check
out BOPM (http://www.blitzed.org/bopm)</font></p>
<p><font size="-1">* log {} syslog support added (read doc/unreal32docs.html for
more info)</font></p>
<p><font size="-1">* Added ripemd-160 password encryption support</font></p>
<p><font size="-1">* Enabled sha1 and md5 password encryption on Win32 regardless
of whether SSL is used.</font></p>
<p><font size="-1">* Added WinNT/2k/XP service support (experimental) To use this
you use the unreal.exe utility: unreal install -installs the service<br>
unreal uninstall -uninstalls the service <br>
unreal start -starts the service <br>
unreal stop -stops the service<br>
unreal restart -restarts the service<br>
unreal rehash -rehashes the config file</font></p>
<p><font size="-1"> Config errors and crashes are now logged to service.log when
in service mode.</font></p>
<p><font size="-1">* Implemented a new win32 debugger to make fixing bugs much
easier.</font></p>
<p><font size="-1">* Added a win32 installer to simplify installing under Windows.</font></p>
<p><font size="-1">* AKILL/RAKILL is deprecated. Server command still works but
will be removed eventually (aliases to TKL G). For normal opers it notices that
the commands are deprecated.</font></p>
<p><font size="-1">Made the config parser smarter when it comes to time values
and size values. Entries are no longer limited to 1d2h1m. You can now enter
&quot;1day 2 hours 1 minute&quot; for example. See doc/conf.doc for more information.</font></p>
<p><font size="-1">* The oper override code has been rewritten to be less intrusive.
You can now no longer automatically join a channel for which you must override
a mode. You must /invite yourself to the channel. The idea behind this is it
prevents the accidental &quot;rejoin on kick&quot; ban override and joining
a +s channel without realizing it is +s and therefore you shouldn't know it
exists.</font></p>
<p><font size="-1">* If you use the SSL features of Unreal, you should use OpenSSL
0.9.6e or later. This is important as the older versions may make the program
exploitable. See http://www.openssl.org for more information</font></p>
<p><font size="-1">* We have made a lot of changes to deal with SSL, and if you
find any flaws or problems, please contact the coder team. We however think
that the changes will make SSL more transparent and make it work more efficiently.</font></p>
<p><font size="-1">* Added technical documentation in doc/technical. This directory
will contain information about the protocol used by Unreal.</font></p>
<p><font size="-1">* Added EGD support for SSL. EGD allows entropy to be gathered
on systems that do not have a random device (/dev/random or /dev/urandom) or
have an unreliable random device. Unreal has been tested using EGADS (http://www.securesoftware.com/egads.php)
[With EGD support enabled], PRNGD (http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html),
and EGD (http://egd.sourceforge.net). Other EGD compatible programs should work
as well.</font></p>
<p><font size="-1">* We have created a new complete set of docs! doc/unreal32docs.html
is now a complete<br>
set of docs! It is still not finished, however it contains atleast what was
already<br>
avail. in the other doc files. <br>
It can also be view online @ http://www.unrealircd.com/unreal32docs.html</font></p>
<p><font size="-1">* We have removed ./Setup - Please read the new docs for information
on configuring &amp;<br>
setting up Unreal3.2</font></p>
<p><font size="-1">* Removed makeconf - Read the docs to make a config file</font></p>
<p><font size="-1">* Added set::ssl::options with the following options:<br>
fail-if-no-clientcert - If SSL client connects and doesn't provide a client<br>
certificate, abort connection immediately<br>
verify-certificate - Check the certificate's validity using X509 methods, check if<br>
we trust CA's, etc. <br>
It however does slip self signed certificates through UNLESS<br>
no-self-signed - Don't allow self-signed certificates through (requires<br>
verify-certificate)</font></p>
<p><font size="-1">* Added the ability specify which CA's are trusted using set::ssl::trusted-ca-file</font></p>
<p><font size="-1">* A new configuration system has been added. The system is a bit more strict (meaning it
will complain more often) but it will never crash due to configuration errors, just
display a message saying errors exist.</font></p>
<p><font size="-1">* SVSLUSERS was added to all U:lines to change local and global max user counts (this is
NOT meant so you can make the max count higher than it really should be.)</font></p>
<p><font size="-1">* A new oper flag, can_override/v has been added. This is an attempt to stop oper abuse.
All opers can no longer use oper-override, this oflag MUST be in place for oper-override
to be allowed. Can_override is NOT assumed to be present no matter what your flags,
meaning you could be +N but still not be allowed to use oper-override.</font></p>
<p><font size="-1">* UNKLINE and UNZLINE have been removed in favor of a system like G:lines, to remove you
now /kline -user@host or /zline -user@host</font></p>
<p><font size="-1">* MAKE SURE YOU RERUN ./Config AND RUN make clean BEFORE USING
THIS VERSION!!!</font></p>
<p> </p>
<p> </p>
<p><font size="+2"><strong>Notes on compatibility</strong><a name="notesoncompatibility" id="notesoncompatibility"></a></font><br>
</p>
<p>Unreal 3.2 is ONLY compatible with Unreal3.1.4 and Unreal3.2 servers. DO NOT
ATTEMPT to link to servers that it is NOT compatible with.</p>
<p>
</body>
</html>
+41
View File
@@ -0,0 +1,41 @@
Some minor rules about patches & modifications to UnrealIRCd
1. When making a change, always add a small description in Changes, in the
BOTTOM
2. If new files are made, it must contain proper copyright headers,
and a $Id$ somewhere.
3. /*
* These kind of comments
*/
NOT
// These kind of comments
4. if (something == 1)
{
moo; /* comment */
/* This does what what what */
cow(go(moo));
}
NOT
if (something == 1) {
}
5. Do not touch version.c.SH or version.h, unless you are a head coder
if you need a credit in, contact us
6. Patches are submitted to coders@lists.unrealircd.org,
using "cvs diff -u > patchname". A submision must contain description of
what it does, etc.
7. Protocol changes must be discussed before making patches for it.
8. We do NOT rip people off. If we use other people's code, it MUST be
properly credited.
+43
View File
@@ -0,0 +1,43 @@
==[ IMPORTANT MESSAGE ABOUT DISABLING NOSPOOF ]==
Disabling NOSPOOF at windows (w9x, nt, w2k, xp) is NOT recommended since this
will allow users to use "spoofed hosts" (like the IP of someone you trust).
If you got problems with NOSPOOF fix your client (bot?) instead (you should
PONG back to the initial PING at connect).
==[ HOW TO COMPILE UNREALIRCD WITHOUT SSL AT WINDOWS ]==
First of all you need Microsoft Visual C++, compiling with cygwin
is not supported.
== "old" VC++ 6.0 ==
1. You need the Platform SDK (PSDK)
Grab it at: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ ->
core sdk -> install this sdk.
Note that this can take some time to download because it's >200Mb
(450mb installed) [!].
2. To compile:
start -> programs -> platform sdk blabla -> open build env. -> (choose os) ->
set blabla build env (debug). This will launch a DOS window.
3. Go to your UnrealIrcd dir (like: cd \dev\unreal3.2) and then compile with:
nmake -f makefile.win32
This will generate a wircd.exe and unreal.exe
4. Copy the src\win32\tre.dll to your UnrealIrcd main dir.
5. Done!
== VC++ 7.x (.NET) ==
1. Start the Visual Studio .NET Command Prompt
2. Go to your UnrealIrcd dir (like: cd \dev\unreal3.2) and then compile with:
nmake -f makefile.win32
This will generate a wircd.exe and unreal.exe
3. Copy the src\win32\tre.dll to your UnrealIrcd main dir.
4. Done!
==[ HOW TO COMPILE UNREALIRCD WITH SSL AT WINDOWS ]==
Ouch, that's much work ;).
You need to compile openssl yourself.
Then have a look at makefile.win32 for instruction on how
to enable / specify path / etc...
DO NOT ask us for help with compiling openssl!
==[ AND ZIP LINKS SUPPORT? ]==
See makefile.win32 for instructions.
-1762
View File
File diff suppressed because it is too large Load Diff
+781 -478
View File
File diff suppressed because it is too large Load Diff
+53
View File
@@ -0,0 +1,53 @@
/*
* Example set {} block
*/
set {
/*
* This is the mail users will get shown when k-lined
*/
kline-address "mail.to.mail.to";
/*
* What modes will users get when connecting to this server
*/
modes-on-connect "+ix";
/* What channels users will autojoin */
auto-join "0";
/* What channels opers will autojoin on connect*/
oper-auto-join "0";
dns {
/* What IP has our DNS server got? */
nameserver 127.0.0.1;
/* How long time will we wait for each attempt? */
timeout 2s;
/* How many attempts will we do */
retries 2s;
};
options {
enable-opermotd;
enable-chatops;
hide-ulines;
// webtv-support;
identd-check;
};
/*
* How many channels each user can join
*/
maxchannelsperuser 10;
/*
* This is a new thing in Unreal3.2.
* You _need_ to make three numbers up, bigger than 100000
* These MUST be the SAME on EVERY server in your NETWORK
* If people discover these keys, it is easier for them to crack
* the +x algoritm.
*/
cloak-keys
{
0;
0;
0;
};
};
-193
View File
@@ -1,193 +0,0 @@
[ $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
-82
View File
@@ -1,82 +0,0 @@
.\" $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
View File
@@ -1,140 +0,0 @@
.\" $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.
-47
View File
@@ -1,47 +0,0 @@
[ $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.
-294
View File
@@ -1,294 +0,0 @@
[ $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.| |
-------------------------------------------------------------------------------
+102
View File
@@ -0,0 +1,102 @@
Numeric 005 Documentation (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
Numeric 005 allows the server to inform the client of any protocol specific features in the
IRCd. The numeric is sent at connection time immediately after numeric 004. Additionally
the numeric is sent when a /version request is made by a local user, for remote users
numeric 105 is used but contains the same information.
Due to the limit imposed by RFC1459 on both the buffer size (512) and the amount of
parameters that can be sent in a single command (15) a total of 13 parameters may be
specified in each 005. Because of this, a client must be able to accept multiple 005s
consecutively. The format for the 005 message is as follows:
":" <servername> "005" SPACE <nickname> SPACE <token[=value]> SPACE ... ":are supported
by this server"
Currently UnrealIRCd supports several tokens that are included in numeric 005. A list of
all tokens, their respective value and a brief description are listed below.
Token Value Default Value Description
------------------------------------------------------------------------------------------------
MAP none none Informs the client that the /map
command is present.
KNOCK none none Informs the client that the /knock
command is present.
SAFELIST none none The LIST command is sent in
multiple iterations so that the
client's queue does not get filled
causing the user to be killed.
HCN none none The server supports the HCN
(Hybrid Connect Notice) protocol.
MAXCHANNELS number 10 The maximum number of channels a
user may join.
MAXBANS number 60 The maximum number of bans that
may be placed for a channel.
NICKLEN number 30 Maximum length of a user's
nickname.
TOPICLEN number 307 Maximum length of a channel's
topic.
KICKLEN number 307 Maximum length of a kick reason.
MAXTARGETS number 20 Maximum targets for the PRIVMSG
command.
AWAYLEN number 307 Maximum length of an away message.
WALLCHOPS none none Indicates that you may use
NOTICE/PRIVMSG to send to +ohv by
using PRIVMSG/NOTICE [@|%|+]#channel.
WATCH number 128 Indicates the presence of the
WATCH command and specifies the
maximum number of watch entries.
SILENCE number 15 Indicates the maximum number of
entries on the silence list.
MODES number 13 Indicates the number of channel
modes with parameters that may be
sent at one time.
CHANTYPES chars # Indicates the prefixes available
for channels.
PREFIX (modes)prefixes (qaohv)~&@%+ Indicates the modes on a channel
that corespond to the given
nickname prefixes.
CHANMODES A,B,C,D be,k,lfL, Specifies how each channel mode is
psmntirRcOAQKVHGCuzN set/unset. The A section specifies
modes that add a nick/mask to a
list. The B section specifies
modes that require a parameter
to be both set and unset. The C
section specifies modes that
only require a parameter to be
set, and the D section
specifies modes that require no
parameters.
NETWORK string no default value Specifies the name of the
network that the server is
connected to.
CASEMAPPING string ascii Specifies what definition the
server uses when determining if
characters are upper/lowercase
of eachother.
EXTBAN prefix,types ~,cqr Specifies what extbans are
supported by the server. The prefix
defines which character indicates
an extban and the types defines
which extbans the server supports.
+11
View File
@@ -0,0 +1,11 @@
base64 Documentation (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
The base64 system used by Unreal is defined as follows:
0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T
U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x
y z { }
These numbers are translated to and from their decimal equivilents of 0-64 in order to
provide a shorter way of expressing a number.
+130
View File
@@ -0,0 +1,130 @@
PROTOCTL Documentation (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
The PROTOCTL command allows servers to negotiate protocol specific features when a link
occurs. The PROTOCTL command is sent during a link before the SERVER and PASS commands. The
command contains tokens that list what protocols the server supports.
PROTOCTL SPACE <token> SPACE ...
UnrealIRCd supports several tokens that add additional protocol support to the server. A
list of all supported tokens and their function listed below.
Token Description
------------------------------------------------------------------------------------------------
NOQUIT Informs the server it need not send out a QUIT for each user on the server
when an SQUIT occurs. Instead an SQUIT is sent out for each server that has
been disconnected from the network and the server can then assume all users
that were on those servers have left as well.
TOKEN Informs the server that it may send "tokenized commands", that is a shortened
name for the commands. This allows the server to save bandwidth by sending
less information to other servers. See doc/technical/token.txt for a list of
all commands and their respective token.
NICKv2 Notifies the server that it supports the extended NICK command (version 2),
this command allows the server to specify more information in the NICK
command rather than having to send out a NICK, MODE, and CHGHOST
command. This token only affects a NICK command introducing a client, not one
in which a client is changing his/her nickname. The format for a NICKv2 NICK
command is:
:<sender> NICK <nickname> <hops> <TS> <username> <host> <server>
<servicestamp> <umodes> <vhost> :<info>
If the user has no modes set the umodes parameter is a +, if the user has no
vhost set the vhost parameter is an *.
SJOIN SJOIN is an obsolete token that is only supported for backwards
compatibility. It should not be used.
SJOIN2 SJOIN2 is an obsolete token that is only supported for backwards
compatibility. It should not be used.
UMODE2 Informs the server that support for the UMODE2 command exists. The UMODE2
command is a shortened form of the MODE command but only applys to
usermodes. In a normal MODE command, when applied to usermodes, the nickname
is specified two times. Both as the sender prefix and as the first parameter,
UMODE2 solves this problem in order to save bandwidth, the format for UMODE2
is as follows:
:<sender> UMODE2 <modes>
VL Notifies the server that Vline information is included in the info field of
the SERVER command. Vline information consists of the protocol number of the
server and compiletime options supported. This allows denial of a server
based on version and/or features supported. The VL information is passed only
during connection, it is not filtered to other servers on the network, only
the uplink. The syntax for a VL supporting SERVER command is:
SERVER <servername> <hops> :U<protocol>-<versionflags> <info>
If an * appears for either protocol and/or versionflags no Vline checking is
done, this is often used by services programs where support for all versions
is desired. See doc/technical/vl.txt for a list of version flags and protocol
numbers.
SJ3 Notifies the server that the SJOIN command with SJ3 syntax is
supported. SJOIN is used at link time to inform servers about the channels on
the server. It is a combination of the JOIN commands, and MODE commands
associated with distribution of channel information. The syntax for the SJOIN
command with SJ3 syntax is:
:<sender> SJOIN <ts> <chname> [<modes>] [<mode para> ...] :<[[*~@%+]member] ...
[&"ban/except] ...>
The ts parameter is the time at which the channel, chname, was created. The
modes parameter is only included if modes are set, if not modes and mode para
are excluded. If modes exists and modes requiring parameters (+klLf) are set,
one mode para parameter is included for each value. The last parameter
specifies a list of channel members and the channel ban and except list. The
members are listed with the prefixes they have. * = +q, ~ = +a, @ = +o, % =
+h, + = +v. If no prefix is specified for the member then the user is a
normal user. The & prefix is used to denote a +b, and the " prefix denotes a
+e. It is important that if a & or " is encountered that you do not continue
to check that entry for other prefixes as a ban/except may contain *~@
characters which will intefere with prefixes.
When synching, if ts lower than the local value, the information supplied by
the remote server replaces the local (ie remove local +ohv that are not
recorded on the remote server). The opposite is true when the ts is
higher. Bans/excepts do not apply to the previous rule. If the ts is the
same, information is merged therefore the modes from both servers are added
together. If +l is set and both servers have different values, the highest is
choosen, for +f the highest of each param, N:M is chosen, and if one server
has * set, then it is included. For +k and +L the "highest" in a string
comparison is used.
NS When specified informs the server that numeric server names are
supported. Numeric server names are a base64 number that is associated with
each server. This number is used as a shorthand name for the server. It is
used in the server parameter of the NICK command and can also be used in the
prefix for a message. In the event that the prefix is an NS, rather than
using :<sender>, the format is @<ns> the ns should be translated into the
server name so that the message can be processed. The format for a SERVER
message (at sync time) that supports NS is:
SERVER <servername> <hops> :U<protocol>-<versionflags>-<numeric> <info>
The VL protocol must also be supported. The numeric is passed to all servers
on the network through the SERVER command using the syntax:
:<sender> SERVER <servername> <hops> <numeric> :<info>
Note: anywhere a :<sender> is expected an @<ns> may be received if the source
is a server. See doc/technical/base64.txt for information on the base64
system used.
SJB64 This token allows timestamps to be specified in base64 notation to conserve
bandwidth. When SJB64 is supported, anywhere a timestamp can appear may be in
base64 notation. A base64 timestamp is preceeded by a ! to identify that it
is an sjb64 rather than a regular timestamp, if this is the case the
characters following the ! represent the timestamp in base64. See
doc/technical/base64.txt for information on the base64 system used.
ZIP If both servers have this set then the link will be (zlib) compressed after
the SERVER message. If one of the servers does not have ZIP in his PROTOCTL
message then the link stays uncompressed.
TKLEXT This allows 10 instead of 8 parameters in TKL's for spamfilter, see s_kline.c
function m_tkl for more info on this (added in 3.2RC2).
+122
View File
@@ -0,0 +1,122 @@
Token List (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
Command Token
------------------------------------------------------------------------------------------------
PRIVMSG !
WHO \
WHOIS #
WHOWAS $
USER %
NICK &
SERVER '
LIST (
TOPIC )
INVITE *
VERSION +
QUIT ,
SQUIT -
KILL .
INFO /
LINKS 0
SUMMON 1
STATS 2
USERS 3
HELP 4
HELPOP 4
ERROR 5
AWAY 6
CONNECT 7
PING 8
PONG 9
OPER ;
PASS <
WALLOPS =
TIME >
NAMES ?
ADMIN @
NOTICE B
JOIN C
PART D
LUSERS E
MOTD F
MODE G
KICK H
USERHOST J
ISON K
REHASH O
RESTART P
CLOSE Q
DIE R
HASH S
DNS T
SILENCE U
AKILL V
KLINE W
UNKLINE X
RAKILL Y
GNOTICE Z
GOPER [
GLOBOPS ]
LOCOPS ^
PROTOCTL _
WATCH `
TRACE b
SQLINE c
UNSQLINE d
SVSNICK e
SVSNOOP f
SVSKILL h
SVSMODE n
SAMODE o
CHATOPS p
ZLINE q
UNZLINE r
RULES t
MAP u
SVS2MODE v
DALINFO w
ADCHAT x
MKPASSWD y
ADDLINE z
GLINE }
SETHOST AA
NACHAT AC
SETIDENT AD
SETNAME AE
LAG AF
SDESC AG
KNOCK AI
CREDITS AJ
LICENSE AK
CHGHOST AL
RPING AM
RPONG AN
NETINFO AO
SENDUMODE AP
ADDMODE AQ
ADDOMODE AR
SVSMODE AS
SMO AU
OPERMOTD AV
TSCTL AW
SAJOIN AX
SAPART AY
CHGIDENT AZ
SWHOIS BA
SVSO BB
SVSFLINE BC
TKL BD
VHOST BE
BOTMOTD BF
HTM BH
SHUN BL
SVSJOIN BR
SVSPART BT
SJOIN ~
UMODE2 |
+32
View File
@@ -0,0 +1,32 @@
VL Information (c) 2002 codemastr (Dominick Meglio) [codemastr@unrealircd.com]
(As of Unreal3.2-beta11)
Protocol Version
------------------------------------------------------------------------------------------------
2303 3.2-Selene
2302 3.1.1-Darkshades, 3.1.2-Darkshades, 3.1.3-Komara, 3.1.4-Meadows
2301 3.1-Silverheart
2300 3.0-Morrigana
Flag Description
------------------------------------------------------------------------------------------------
c Server is chrooted
C command line config enabled
D Server is in debugmode
F Using file descriptor lists
h Compiled as a hub
i Shows invisible users in /trace
n NOSPOOF enabled
V Uses valloc()
W Windows version
Y Syslog logging enabled
K No ident checking (?)
6 IPv6 supported
X STRIPBADWORDS enabled (chmode/umode +G)
P Uses poll()
e SSL supported
O OperOverride enabled
o OperOverride without verify
Z Zip links supported
3 3rd party modules (were) loaded
E Extended channel modes supported
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-407
View File
@@ -1,407 +0,0 @@
****** 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)
-21
View File
@@ -1,21 +0,0 @@
[ $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
+311
View File
@@ -0,0 +1,311 @@
/*
** burst.c
**
** Nicolas Pioch, Dec 93
** <Nicolas.Pioch@enst.fr>
** Carsten V. Munk Nov 2000
*/
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/param.h>
#include <sys/signal.h>
#include <netinet/in.h>
#include <sys/un.h>
#include <netdb.h>
#include <errno.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <ctype.h>
#include <string.h>
#include <fcntl.h>
#include <stdio.h>
#ifdef POSIX
#include <sys/select.h>
#endif
#define MYBUFSIZE 2048
char *jupedservername, *uplinkservername, *jupereason;
int options;
char *password;
typedef struct aClient {
int socket;
char buffer[MYBUFSIZE+1];
int read;
int write;
} aClient;
void fatalrestart(aClient *robotptr, const char *s);
void fatal(const char *s) {
perror(s);
exit(1);
}
typedef void (*signalhandler)(int);
static void signal_catcher(int sig, int code, struct sigcontext *scp) {
fprintf(stderr, "Caught signal %d with code %d\n", sig, code);
switch(sig) {
case SIGFPE: /* Floating point exception */
case SIGILL: /* Illegal instruction */
case SIGSEGV: /* Segmentation violation */
case SIGBUS: /* Bus error */
case SIGSYS: /* Bad argument to system call */
fatal("Fatal signal received, aborting...");
break;
case SIGQUIT:
case SIGINT:
case SIGTERM: /* On se barre */
fatal("AAAAAAAAArrrrrrrrgh!");
break;
}
signal(sig, (signalhandler)signal_catcher);
}
typedef union socket_address {
struct sockaddr_un unixx;
struct sockaddr_in inet;
} socket_address;
void name_to_number(int address_family, const char *hostname, int port,
socket_address *addr, int *len2) {
u_long iaddr;
int len;
struct hostent *host;
char *inaddr;
bzero ((char *) addr, sizeof (socket_address) );
if ( address_family == AF_UNIX ) {
strcpy(addr->unixx.sun_path,hostname);
*len2=sizeof( struct sockaddr_un );
} else {
if ((hostname) && (hostname[0])) {
if (hostname[0] >= '0' && hostname[0] <= '9') {
iaddr = inet_addr(hostname);
inaddr = (char *) &iaddr;
len=sizeof(iaddr);
} else {
host=gethostbyname (hostname);
if (!host)
fatal("Unknown host");
inaddr=host->h_addr_list[0];
len=host->h_length;
}
bcopy(inaddr, (char *)&addr->inet.sin_addr, len);
}
addr->inet.sin_port=htons((u_short) port);
*len2=sizeof(struct sockaddr_in);
}
addr->inet.sin_family = address_family;
}
int read_data(aClient *robotptr) {
int nbytes;
if ((nbytes=read(robotptr->socket, &(robotptr->buffer[robotptr->write]),
(sizeof(robotptr->buffer) - robotptr->write - 1))) < 0)
fatalrestart(robotptr, "read on socket");
if (nbytes == 0) {
close(robotptr->socket);
fatalrestart(robotptr, "Connection Closed");
}
robotptr->write+=nbytes;
robotptr->buffer[robotptr->write]=0;
return(nbytes);
}
void send_data(int socketfd, const char *data, int length) {
int length2;
length2=write(socketfd, data, length);
if (length2 != length)
fprintf(stderr, "*** write truncated to %d chars...\n", length2);
}
int create_client(const char *hostname, const int hostport) {
int descript;
socket_address hostaddr;
int adlen;
/* winlocal
if ((descript=socket(PF_INET, SOCK_STREAM, 0)) < 0)
*/
if ((descript=socket(PF_INET, SOCK_STREAM, 0)) == -1) // winlocal
fatal("socket");
name_to_number(AF_INET, hostname, hostport, &hostaddr, &adlen);
if (connect(descript, &hostaddr.inet, adlen) < 0)
fatal("connect");
return(descript);
}
void parse_line(aClient *robotptr) {
char *toparse;
toparse=(robotptr->buffer + robotptr->read);
printf("%s\n",toparse);
/* Special handling for PING messages */
if (!strncasecmp(toparse, "PING ", 5) || !strncasecmp(toparse, "8 ", 2)){
toparse=strtok(toparse, "\r\n");
toparse[1]='\0';
send_data(robotptr->socket, toparse, strlen(toparse));
return;
}
if (!strncasecmp(toparse, "AO", 2) || !strncasecmp(toparse, "NETINFO", 7))
{
if (!(options & 0x80))
exit(1);
}
}
void parse_data(aClient *robotptr) {
int next;
while((robotptr->read < robotptr->write)
&& ((robotptr->buffer[robotptr->read] == '\r')
|| (robotptr->buffer[robotptr->read] == '\n')))
robotptr->read++;
for(next=robotptr->read; next<=robotptr->write; next++) {
if ((robotptr->buffer[next] == '\r')
|| (robotptr->buffer[next] == '\n'))
break;
}
if (next<robotptr->write) {
robotptr->buffer[next]=0;
next++;
parse_line(robotptr);
robotptr->read=next;
parse_data(robotptr);
}
if (robotptr->read == robotptr->write) {
robotptr->read=robotptr->write=0;
} else {
bcopy((robotptr->buffer + robotptr->read),
(robotptr->buffer), (robotptr->write-robotptr->read));
robotptr->write-=robotptr->read;
robotptr->read=0;
}
}
void run_client(aClient *robotptr) {
fd_set mask, returnmask[3];
int selectval;
FD_ZERO(&mask);
FD_SET(robotptr->socket, &mask);
while (1) {
bcopy((char *)&mask,(char *)returnmask,sizeof(fd_set));
FD_ZERO(returnmask+1);
bcopy((char *)&mask,(char *)(returnmask+2),sizeof(fd_set));
selectval=select(FD_SETSIZE,
returnmask, returnmask+1, returnmask+2, NULL);
if (selectval) {
read_data(robotptr);
parse_data(robotptr);
}
}
}
void initialize(aClient *robotptr) {
char passphrase[MYBUFSIZE];
robotptr->socket=create_client(uplinkservername, atol(jupereason));
sprintf(passphrase,
"PROTOCTL %s %s %s %s %s %s %s %s %s\r\n",
(options & 0x1) ? "NOQUIT" : "",
(options & 0x2) ? "TOKEN" : "",
(options & 0x4) ? "NICKv2" : "",
(options & 0x8) ? "SJOIN" : "",
(options & 0x10) ? "SJOIN2" : "",
(options & 0x20) ? "UMODE2" : "",
(options & 0x40) ? "NS" : "",
(options & 0x100) ? "SJ3" : "",
(options & 0x200) ? "SJB64" : "");
write(robotptr->socket, passphrase, strlen(passphrase));
sprintf(passphrase, "PASS %s\r\nSERVER %s 1 :[Burst analysis].\r\n",
password,jupedservername);
write(robotptr->socket, passphrase, strlen(passphrase));
}
void fatalrestart(aClient *robotptr, const char *s) {
perror(s);
close(robotptr->socket);
sleep(10);
initialize(robotptr);
run_client(robotptr);
}
int main(int argc, char* argv[]) {
aClient robot;
char *p;
if (argc != 6) {
fprintf(stderr, "IRCd burst generator, by Carsten V. Munk 2000, based off jupe.c by Nicolas Pioch\n");
fprintf(stderr,
"Usage: %s <burstservername> <uplink> <port> <options> <password>\n", argv[0]);
fprintf(stderr, "Options can be a combination of these:\n");
fprintf(stderr, "1 = Enable NOQUIT 2 = Enable TOKEN\n");
fprintf(stderr, "3 = Enable NICKv2 4 = Enable SJOIN\n");
fprintf(stderr, "5 = Enable SJOIN2 6 = Enable UMODE2\n");
fprintf(stderr, "7 = Enable NS 8 = Ignore end of burst\n");
fprintf(stderr, "9 = Enable SJ3 a = Enable SJB64\n");
fatal("incorrect argument count");
exit(1);
}
jupedservername=argv[1];
uplinkservername=argv[2];
jupereason=argv[3];
password = argv[5];
p = argv[4];
for (; *p; p++)
{
if (*p == '1')
options |= 0x1;
if (*p == '2')
options |= 0x2;
if (*p == '3')
options |= 0x4;
if (*p == '4')
options |= 0x8;
if (*p == '5')
options |= 0x10;
if (*p == '6')
options |= 0x20;
if (*p == '7')
options |= 0x40;
if (*p == '8')
options |= 0x80;
if (*p == '9')
options |= 0x100;
if (*p == 'a')
options |= 0x200;
}
/* installe le signal_catcher */
signal(SIGTERM,(signalhandler)signal_catcher);
robot.read=robot.write=0;
initialize(&robot);
run_client(&robot);
exit(0);
}
+128
View File
@@ -0,0 +1,128 @@
/*
* IRC - Internet Relay Chat, src/modules/channeldumper.c
* (C) 2002 Carsten V. Munk <stskeeps@tspre.org>
*
*
* See file AUTHORS in IRC package for additional names of
* the programmers.
*
* 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.
*/
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "channel.h"
#include <time.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <io.h>
#endif
#include <fcntl.h>
#include "h.h"
#include "proto.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif
#ifndef DYNAMIC_LINKING
ModuleHeader channeldumper_Header
#else
#define channeldumper_Header Mod_Header
ModuleHeader Mod_Header
#endif
= {
"channeldumper",
"$Id$",
"Channel dump to text timed",
"3.2-b8-1",
NULL
};
static ModuleInfo ChannelDumperModInfo;
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Init(ModuleInfo *modinfo)
#else
int channeldumper_Init(ModuleInfo *modinfo)
#endif
{
tainted++;
bcopy(modinfo,&ChannelDumperModInfo, modinfo->size);
return MOD_SUCCESS;
}
EVENT(e_channeldump);
static Event *ChannelDumpEvent = NULL;
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Load(int module_load)
#else
int channeldumper_Load(int module_load)
#endif
{
LockEventSystem();
ChannelDumpEvent = EventAddEx(ChannelDumperModInfo.handle, "e_channeldump", 5, 0, e_channeldump, NULL);
UnlockEventSystem();
return MOD_SUCCESS;
}
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Unload(int module_unload)
#else
int channeldumper_Unload(int module_unload)
#endif
{
tainted--;
LockEventSystem();
EventDel(ChannelDumpEvent);
UnlockEventSystem();
return MOD_SUCCESS;
}
EVENT(e_channeldump)
{
aChannel *chptr;
unsigned int hashnum;
Member *m;
FILE *f;
f = fopen("ircd.channeldump", "w");
if (!f)
return;
for (hashnum = 0; hashnum < CH_MAX; hashnum++)
{
for (chptr = (aChannel *)hash_get_chan_bucket(hashnum); chptr; chptr
= chptr->hnextch)
{
if (SecretChannel(chptr))
continue;
fprintf(f, "C %s %s\r\n",
chptr->chname, chptr->topic ? chptr->topic : "");
for (m = chptr->members; m; m = m->next)
fprintf(f, "M %s\r\n",
m->cptr->name);
}
}
fclose(f);
return;
}
+151
View File
@@ -0,0 +1,151 @@
/*
* Defizzer, 3rd party module for Unreal3.2-beta15 and up
* (C) Carsten V. Munk 2003 <stskeeps@tspre.org>
* You can do everything you desire with this module, under the condition that if you
* meet the author, you must buy him a drink of his choice.
* Copyright notice must ALWAYS stay in place.
*
* Removes unidented fizzer clients from the network pre-local-connect
*/
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "channel.h"
#include <time.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <io.h>
#endif
#include <fcntl.h>
#include "h.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif
DLLFUNC int h_defizzer_connect(aClient *sptr);
static Hook *LocConnect = NULL;
ModuleInfo DefizzerModInfo;
#ifndef DYNAMIC_LINKING
ModuleHeader defizzer_Header
#else
#define defizzer_Header Mod_Header
ModuleHeader Mod_Header
#endif
= {
"defizzer", /* Name of module */
"$Id$", /* Version */
"de-Fizzer", /* Short description of module */
"3.2-b8-1",
NULL
};
/* The purpose of these ifdefs, are that we can "static" link the ircd if we
* want to
*/
/* This is called on module init, before Server Ready */
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Init(ModuleInfo *modinfo)
#else
int defizzer_Init(ModuleInfo *modinfo)
#endif
{
bcopy(modinfo,&DefizzerModInfo,modinfo->size);
LocConnect = HookAddEx(DefizzerModInfo.handle, HOOKTYPE_PRE_LOCAL_CONNECT, h_defizzer_connect);
return MOD_SUCCESS;
}
/* Is first run when server is 100% ready */
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Load(int module_load)
#else
int defizzer_Load(int module_load)
#endif
{
}
/* Called when module is unloaded */
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Unload(int module_unload)
#else
int defizzer_Unload(int module_unload)
#endif
{
HookDel(LocConnect);
return MOD_SUCCESS;
}
static void ban_fizzer(aClient *cptr)
{
int i;
aClient *acptr;
char hostip[128], mo[100], mo2[100];
char *tkllayer[9] = {
me.name, /*0 server.name */
"+", /*1 +|- */
"z", /*2 G */
"*", /*3 user */
NULL, /*4 host */
NULL,
NULL, /*6 expire_at */
NULL, /*7 set_at */
NULL /*8 reason */
};
strlcpy(hostip, Inet_ia2p(&cptr->ip), sizeof(hostip));
tkllayer[4] = hostip;
tkllayer[5] = me.name;
ircsprintf(mo, "%li", 86400 + TStime());
ircsprintf(mo2, "%li", TStime());
tkllayer[6] = mo;
tkllayer[7] = mo2;
tkllayer[8] = "Fizzer";
m_tkl(&me, &me, 9, tkllayer);
return;
}
DLLFUNC int h_defizzer_connect(aClient *sptr)
{
char user[USERLEN + 1];
char *infobackup;
char *s1, *s2;
/*
* Algorithm is basically like this, inspired by Zaphod:
* Exchange first word with second in realname, prepend with
* ~, then add in second word and first word upto limit of username.
* sounds fun?
*/
infobackup = strdup(sptr->info);
if (!(s1 = strtok(infobackup, " ")))
{
free(infobackup);
return 0;
}
if (!(s2 = strtok(NULL, " ")))
{
free(infobackup);
return 0;
}
snprintf(user, sizeof(user), "%s%s%s", (IDENT_CHECK ? "~" : ""), s2, s1);
free(infobackup);
if (!strcmp(user, sptr->user->username))
{
ircstp->is_ref++;
ban_fizzer(sptr);
return exit_client(sptr, sptr, &me, "Fizzer client");
}
return 0;
}
+43 -1
View File
@@ -1 +1,43 @@
...
These are 3rd party programs modules, or unsupported modules.
Custom modules are compiled by copying them to src/modules
and running from the root directory
$ make custommodule MODULEFILE=modulename
This will produce a .so you can load. Upon load, this will show a "3" in the
/version flags, as it contains third party modules (we do not support if it
crashes because of the tainted module)
======================
Name: burst.c
Description:
Little program to test out the different aspects of the unreal protocol and
produce net.burst dumps
=======================
Name: m_rawto.c
Is a 3rd party module
Description:
Implements the RAWTO command, will allow U:lines to send raw data to
anywhere it pleases.
:uline.server RAWTO towho :what to send
=========================
Name: channeldumper.c
Is a 3rd party module
Description:
Dumps a list of non secret channels to ircd.channels or something every 5 seconds,
C #channel topic
M member1
M member2
C #channel2 topic
M member3
You can't rely on topic being there
+157
View File
@@ -0,0 +1,157 @@
/*
* Unreal Internet Relay Chat Daemon, m_rawto.c
* (C) 2002 Carsten V. Munk
* RAWTO Module - 3rd party
*
* 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.
*
* Use of this module will make it a 3rd party module, and will
* add to your /version thing. We DO NOT SUPPORT THIS.
*/
#include "config.h"
#include "struct.h"
#include "common.h"
#include "sys.h"
#include "numeric.h"
#include "msg.h"
#include "channel.h"
#include <time.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <io.h>
#endif
#include <fcntl.h>
#include "h.h"
#include "proto.h"
#ifdef STRIPBADWORDS
#include "badwords.h"
#endif
#ifdef _WIN32
#include "version.h"
#endif
DLLFUNC int m_rawto(aClient *cptr, aClient *sptr, int parc, char *parv[]);
/* Place includes here */
#define MSG_RAWTO "RAWTO" /* */
#define TOK_RAWTO "3A" /* 112 */
#ifndef DYNAMIC_LINKING
ModuleHeader m_rawto_Header
#else
#define m_rawto_Header Mod_Header
ModuleHeader Mod_Header
#endif
= {
"rawto", /* Name of module */
"$Id$", /* Version */
"command /rawto", /* Short description of module */
"3.2-b5",
NULL
};
/* The purpose of these ifdefs, are that we can "static" link the ircd if we
* want to
*/
/* This is called on module init, before Server Ready */
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Init(int module_load)
#else
int m_rawto_Init(int module_load)
#endif
{
/*
* We call our add_Command crap here
*/
add_Command(MSG_RAWTO, TOK_RAWTO, m_rawto, 2);
tainted++;
return MOD_SUCCESS;
}
/* Is first run when server is 100% ready */
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Load(int module_load)
#else
int m_rawto_Load(int module_load)
#endif
{
return MOD_SUCCESS;
}
/* Called when module is unloaded */
#ifdef DYNAMIC_LINKING
DLLFUNC int Mod_Unload(int module_unload)
#else
int m_rawto_Unload(int module_unload)
#endif
{
if (del_Command(MSG_RAWTO, TOK_RAWTO, m_rawto) < 0)
{
sendto_realops("Failed to delete commands when unloading %s",
m_rawto_Header.name);
}
tainted--;
return MOD_SUCCESS;
}
/*
* m_rawto Send a raw string to anywhere
* if you are U:line
* parv[0] = sender prefix
* parv[1] = whoto
* parv[2] = string
*/
DLLFUNC int m_rawto(aClient *cptr, aClient *sptr, int parc, char *parv[])
{
aClient *acptr = NULL;
if (!IsULine(sptr))
{
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
return -1;
}
if (parc < 3)
{
sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS),
me.name, parv[0], "RAWTO");
return -1;
}
if ((acptr = find_client(parv[1], NULL)))
{
if (MyConnect(acptr))
{
sendto_one(acptr, "%s", parv[2]);
return 0;
}
else
{
sendto_one(acptr, ":%s %s %s :%s",
parv[0], IsToken(acptr->from) ? TOK_RAWTO : MSG_RAWTO,
parv[1], parv[2]);
return 0;
}
}
return 0;
}
+5563
View File
File diff suppressed because it is too large Load Diff
+98
View File
@@ -0,0 +1,98 @@
# Makefile for regex.
#
# Copyright (C) 1992, 1993 Free Software Foundation, Inc.
#
# 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, 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.
version = 0.12
# You can define CPPFLAGS on the command line. Aside from system-specific
# flags, you can define:
# -DREGEX_MALLOC to use malloc/realloc/free instead of alloca.
# -DDEBUG to enable the compiled pattern disassembler and execution
# tracing; code runs substantially slower.
# -DEXTRACT_MACROS to use the macros EXTRACT_* (as opposed to
# the corresponding C procedures). If not -DDEBUG, the macros
# are used.
CPPFLAGS =
# Likewise, you can override CFLAGS to optimize, use -Wall, etc.
CFLAGS = -g
# Ditto for LDFLAGS and LOADLIBES.
LDFLAGS =
LOADLIBES =
srcdir = @srcdir@
VPATH = @srcdir@
CC = @CC@
DEFS = @DEFS@
SHELL = /bin/sh
subdirs = moo
default all:: regex.o
.PHONY: default all
regex.o: regex.c regex.h
$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) -I. -I$(srcdir) -c $<
clean mostlyclean::
rm -f *.o
distclean:: clean
rm -f Makefile config.status
extraclean:: distclean
rm -f patch* *~* *\#* *.orig *.rej *.bak core a.out
configure: configure.in
autoconf
config.status: configure
sh configure --no-create
Makefile: Makefile.in config.status
sh config.status
makeargs = $(MFLAGS) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CFLAGS)' CC='$(CC)' \
DEFS='$(DEFS)' LDFLAGS='$(LDFLAGS)' LOADLIBES='$(LOADLIBES)'
default all install \
mostlyclean clean distclean extraclean realclean \
TAGS check::
for d in $(subdirs); do (cd $$d; $(MAKE) $(makeargs) $@); done
.PHONY: install mostlyclean clean distclean extraclean realclean TAGS check
# Prevent GNU make 3 from overflowing arg limit on system V.
.NOEXPORT:
distfiles = AUTHORS ChangeLog COPYING INSTALL NEWS README \
*.in configure regex.c regex.h
distdir = regex-$(version)
distargs = version=$(version) distdir=../$(distdir)/$$d
dist: TAGS configure
@echo "Version numbers in: Makefile.in, ChangeLog, NEWS,"
@echo " regex.c, regex.h,"
@echo " and doc/xregex.texi (if modified)."
rm -rf $(distdir)
mkdir $(distdir)
ln $(distfiles) $(distdir)
for d in $(subdirs); do (cd $$d; $(MAKE) $(distargs) dist); done
tar czhf $(distdir).tar.Z $(distdir)
rm -rf $(distdir)
.PHONY: dist
+60
View File
@@ -0,0 +1,60 @@
This directory contains the GNU regex library. It is compliant with
POSIX.2, except for internationalization features.
See the file NEWS for a list of major changes in the current release.
See the file INSTALL for compilation instructions. (The only thing
installed is the documentation; regex.c is compiled into regex.o, but
not installed anywhere.)
The subdirectory `doc' contains a (programmers') manual for the library.
It's probably out-of-date. Improvements are welcome.
The subdirectory `test' contains the various tests we've written.
We know this code is not as fast as it might be. If you have specific
suggestions, profiling results, or other such useful information to
report, please do.
Emacs 18 is not going use this revised regex (but Emacs 19 will). If
you want to try it with Emacs 18, apply the patch at the end of this
file first.
Mail bug reports to bug-gnu-utils@prep.ai.mit.edu.
Please include an actual regular expression that fails (and the syntax
used to compile it); without that, there's no way to reproduce the bug,
so there's no way we can fix it. Even if you include a patch, also
include the regular expression in error; otherwise, we can't know for
sure what you're trying to fix.
Here is the patch to make this version of regex work with Emacs 18.
*** ORIG/search.c Tue Jan 8 13:04:55 1991
--- search.c Sun Jan 5 10:57:00 1992
***************
*** 25,26 ****
--- 25,28 ----
#include "commands.h"
+
+ #include <sys/types.h>
#include "regex.h"
***************
*** 477,479 ****
/* really needed. */
! && *(searchbuf.buffer) == (char) exactn /* first item is "exact match" */
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
--- 479,482 ----
/* really needed. */
! /* first item is "exact match" */
! && *(searchbuf.buffer) == (char) RE_EXACTN_VALUE
&& searchbuf.buffer[1] + 2 == searchbuf.used) /*first is ONLY item */
***************
*** 1273,1275 ****
searchbuf.allocated = 100;
! searchbuf.buffer = (char *) malloc (searchbuf.allocated);
searchbuf.fastmap = search_fastmap;
--- 1276,1278 ----
searchbuf.allocated = 100;
! searchbuf.buffer = (unsigned char *) malloc (searchbuf.allocated);
searchbuf.fastmap = search_fastmap;
Vendored Executable
+462
View File
@@ -0,0 +1,462 @@
#!/bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf.
# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
# 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, 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.
# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] [--no-create]
# [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE] [TARGET]
# Ignores all args except --srcdir, --prefix, --exec-prefix, --no-create, and
# --with-PACKAGE unless this script has special code to handle it.
for arg
do
# Handle --exec-prefix with a space before the argument.
if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix=
# Handle --host with a space before the argument.
elif test x$next_host = xyes; then next_host=
# Handle --prefix with a space before the argument.
elif test x$next_prefix = xyes; then prefix=$arg; next_prefix=
# Handle --srcdir with a space before the argument.
elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir=
else
case $arg in
# For backward compatibility, also recognize exact --exec_prefix.
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*)
exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e)
next_exec_prefix=yes ;;
-gas | --gas | --ga | --g) ;;
-host=* | --host=* | --hos=* | --ho=* | --h=*) ;;
-host | --host | --hos | --ho | --h)
next_host=yes ;;
-nfp | --nfp | --nf) ;;
-no-create | --no-create | --no-creat | --no-crea | --no-cre | --no-cr | --no-c | --no- | --no)
no_create=1 ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
next_prefix=yes ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*)
srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s)
next_srcdir=yes ;;
-with-* | --with-*)
package=`echo $arg|sed 's/-*with-//'`
# Delete all the valid chars; see if any are left.
if test -n "`echo $package|sed 's/[-a-zA-Z0-9_]*//g'`"; then
echo "configure: $package: invalid package name" >&2; exit 1
fi
eval "with_`echo $package|sed s/-/_/g`=1" ;;
*) ;;
esac
fi
done
trap 'rm -f conftest* core; exit 1' 1 3 15
rm -f conftest*
compile='${CC-cc} $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
# A filename unique to this package, relative to the directory that
# configure is in, which we can look for to find out if srcdir is correct.
unique_file=regex.c
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
srcdirdefaulted=yes
# Try the directory containing this script, then `..'.
prog=$0
confdir=`echo $prog|sed 's%/[^/][^/]*$%%'`
test "X$confdir" = "X$prog" && confdir=.
srcdir=$confdir
if test ! -r $srcdir/$unique_file; then
srcdir=..
fi
fi
if test ! -r $srcdir/$unique_file; then
if test x$srcdirdefaulted = xyes; then
echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2
else
echo "configure: Can not find sources in \`${srcdir}'." 1>&2
fi
exit 1
fi
# Preserve a srcdir of `.' to avoid automounter screwups with pwd.
# But we can't avoid them for `..', to make subdirectories work.
case $srcdir in
.|/*|~*) ;;
*) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute.
esac
if test -z "$CC"; then
echo checking for gcc
saveifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
if test -f $dir/gcc; then
CC="gcc"
break
fi
done
IFS="$saveifs"
fi
test -z "$CC" && CC="cc"
# Find out if we are using GNU C, under whatever name.
cat > conftest.c <<EOF
#ifdef __GNUC__
yes
#endif
EOF
${CC-cc} -E conftest.c > conftest.out 2>&1
if egrep yes conftest.out >/dev/null 2>&1; then
GCC=1 # For later tests.
fi
rm -f conftest*
# Make sure to not get the incompatible SysV /etc/install and
# /usr/sbin/install, which might be in PATH before a BSD-like install,
# or the SunOS /usr/etc/install directory, or the AIX /bin/install,
# or the AFS install, which mishandles nonexistent args. (Sigh.)
if test -z "$INSTALL"; then
echo checking for install
saveifs="$IFS"; IFS="${IFS}:"
for dir in $PATH; do
test -z "$dir" && dir=.
case $dir in
/etc|/usr/sbin|/usr/etc|/usr/afsws/bin) ;;
*)
if test -f $dir/install; then
if grep dspmsg $dir/install >/dev/null 2>&1; then
: # AIX
else
INSTALL="$dir/install -c"
INSTALL_PROGRAM='$(INSTALL)'
INSTALL_DATA='$(INSTALL) -m 644'
break
fi
fi
;;
esac
done
IFS="$saveifs"
fi
INSTALL=${INSTALL-cp}
INSTALL_PROGRAM=${INSTALL_PROGRAM-'$(INSTALL)'}
INSTALL_DATA=${INSTALL_DATA-'$(INSTALL)'}
echo checking for AIX
echo checking how to run the C preprocessor
if test -z "$CPP"; then
CPP='${CC-cc} -E'
cat > conftest.c <<EOF
#include <stdio.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
:
else
CPP=/lib/cpp
fi
rm -f conftest*
fi
cat > conftest.c <<EOF
#ifdef _AIX
yes
#endif
EOF
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "yes" conftest.out >/dev/null 2>&1; then
DEFS="$DEFS -D_ALL_SOURCE=1"
fi
rm -f conftest*
echo checking for DYNIX/ptx libseq
cat > conftest.c <<EOF
#if defined(_SEQUENT_)
yes
#endif
EOF
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "yes" conftest.out >/dev/null 2>&1; then
SEQUENT=1
fi
rm -f conftest*
test -n "$SEQUENT" && test -f /usr/lib/libseq.a &&
LIBS="$LIBS -lseq"
echo checking for POSIXized ISC
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
ISC=1 # If later tests want to check for ISC.
DEFS="$DEFS -D_POSIX_SOURCE=1"
if test -n "$GCC"; then
CC="$CC -posix"
else
CC="$CC -Xp"
fi
fi
echo checking for minix/config.h
cat > conftest.c <<EOF
#include <minix/config.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
MINIX=1
fi
rm -f conftest*
# The Minix shell can't assign to the same variable on the same line!
if test -n "$MINIX"; then
DEFS="$DEFS -D_POSIX_SOURCE=1"
DEFS="$DEFS -D_POSIX_1_SOURCE=2"
DEFS="$DEFS -D_MINIX=1"
fi
echo checking for ANSI C header files
cat > conftest.c <<EOF
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
# SunOS string.h does not declare mem*, contrary to ANSI.
echo '#include <string.h>' > conftest.c
eval "$CPP $DEFS conftest.c > conftest.out 2>&1"
if egrep "memchr" conftest.out >/dev/null 2>&1; then
# SGI's /bin/cc from Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
cat > conftest.c <<EOF
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#define XOR(e,f) (((e) && !(f)) || (!(e) && (f)))
int main () { int i; for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
eval $compile
if test -s conftest && (./conftest; exit) 2>/dev/null; then
DEFS="$DEFS -DSTDC_HEADERS=1"
fi
rm -f conftest*
fi
rm -f conftest*
fi
rm -f conftest*
for hdr in string.h
do
trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'`
echo checking for ${hdr}
cat > conftest.c <<EOF
#include <${hdr}>
EOF
err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"`
if test -z "$err"; then
DEFS="$DEFS -D${trhdr}=1"
fi
rm -f conftest*
done
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo checking for working alloca.h
cat > conftest.c <<EOF
#include <alloca.h>
main() { exit(0); }
t() { char *p = alloca(2 * sizeof(int)); }
EOF
if eval $compile; then
DEFS="$DEFS -DHAVE_ALLOCA_H=1"
fi
rm -f conftest*
decl="#ifdef __GNUC__
#define alloca __builtin_alloca
#else
#if HAVE_ALLOCA_H
#include <alloca.h>
#else
#ifdef _AIX
#pragma alloca
#else
char *alloca ();
#endif
#endif
#endif
"
echo checking for alloca
cat > conftest.c <<EOF
$decl
main() { exit(0); }
t() { char *p = (char *) alloca(1); }
EOF
if eval $compile; then
:
else
alloca_missing=1
fi
rm -f conftest*
if test -n "$alloca_missing"; then
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
# that cause trouble. Some versions do not even contain alloca or
# contain a buggy version. If you still want to use their alloca,
# use ar to extract alloca.o from them instead of compiling alloca.c.
ALLOCA=alloca.o
fi
prog='/* Ultrix mips cc rejects this. */
typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *p;
char **p2;
/* HPUX 7.0 cc rejects these. */
++p;
p2 = (char const* const*) p;'
echo checking for working const
cat > conftest.c <<EOF
main() { exit(0); }
t() { $prog }
EOF
if eval $compile; then
:
else
DEFS="$DEFS -Dconst="
fi
rm -f conftest*
if test -z "$prefix"
then
echo checking for gcc to derive installation directory prefix
saveifs="$IFS"; IFS="$IFS:"
for dir in $PATH; do
test -z "$dir" && dir=.
if test $dir != . && test -f $dir/gcc; then
# Not all systems have dirname.
prefix=`echo $dir|sed 's%/[^/][^/]*$%%'`
break
fi
done
IFS="$saveifs"
fi
if test -n "$prefix"; then
test -z "$exec_prefix" && exec_prefix='${prefix}'
prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%"
fi
if test -n "$exec_prefix"; then
prsub="$prsub
s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\
exec_prefix\\1=\\2$exec_prefix%"
fi
trap 'rm -f config.status; exit 1' 1 3 15
echo creating config.status
rm -f config.status
cat > config.status <<EOF
#!/bin/sh
# Generated automatically by configure.
# Run this file to recreate the current configuration.
# This directory was configured as follows,
# on host `(hostname || uname -n) 2>/dev/null`:
#
# $0 $*
for arg
do
case "\$arg" in
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
exec /bin/sh $0 $* ;;
*) echo "Usage: config.status --recheck" 2>&1; exit 1 ;;
esac
done
trap 'rm -f Makefile; exit 1' 1 3 15
CC='$CC'
INSTALL='$INSTALL'
INSTALL_PROGRAM='$INSTALL_PROGRAM'
INSTALL_DATA='$INSTALL_DATA'
CPP='$CPP'
ALLOCA='$ALLOCA'
LIBS='$LIBS'
srcdir='$srcdir'
DEFS='$DEFS'
prefix='$prefix'
exec_prefix='$exec_prefix'
prsub='$prsub'
EOF
cat >> config.status <<\EOF
top_srcdir=$srcdir
for file in .. Makefile; do if [ "x$file" != "x.." ]; then
srcdir=$top_srcdir
# Remove last slash and all that follows it. Not all systems have dirname.
dir=`echo $file|sed 's%/[^/][^/]*$%%'`
if test "$dir" != "$file"; then
test "$top_srcdir" != . && srcdir=$top_srcdir/$dir
test ! -d $dir && mkdir $dir
fi
echo creating $file
rm -f $file
echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file
sed -e "
$prsub
s%@CC@%$CC%g
s%@INSTALL@%$INSTALL%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
s%@CPP@%$CPP%g
s%@ALLOCA@%$ALLOCA%g
s%@LIBS@%$LIBS%g
s%@srcdir@%$srcdir%g
s%@DEFS@%$DEFS%
" $top_srcdir/${file}.in >> $file
fi; done
exit 0
EOF
chmod +x config.status
test -n "$no_create" || ./config.status
+23
View File
@@ -0,0 +1,23 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(regex.c)
AC_PROG_CC
AC_PROG_INSTALL
dnl I'm not sure if AC_AIX and AC_DYNIX_SEQ are really necessary. The
dnl Autoconf documentation isn't specific about which BSD functions they
dnl provide.
AC_AIX
AC_DYNIX_SEQ
AC_ISC_POSIX
AC_MINIX
AC_STDC_HEADERS
AC_HAVE_HEADERS(string.h)
AC_ALLOCA
AC_CONST
AC_PREFIX(gcc)
AC_OUTPUT(Makefile doc/Makefile test/Makefile)
+4
View File
@@ -0,0 +1,4 @@
clean:
default:
all:
echo "."
+4948
View File
File diff suppressed because it is too large Load Diff
+490
View File
@@ -0,0 +1,490 @@
/* Definitions for data structures and routines for the regular
expression library, version 0.12.
Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
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, 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 __REGEXP_LIBRARY_H__
#define __REGEXP_LIBRARY_H__
/* POSIX says that <sys/types.h> must be included (by the caller) before
<regex.h>. */
#ifdef VMS
/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
should be there. */
#include <stddef.h>
#endif
/* The following bits are used to determine the regexp syntax we
recognize. The set/not-set meanings are chosen so that Emacs syntax
remains the value 0. The bits are given in alphabetical order, and
the definitions shifted by one from the previous bit; thus, when we
add or remove a bit, only one other definition need change. */
typedef unsigned reg_syntax_t;
/* If this bit is not set, then \ inside a bracket expression is literal.
If set, then such a \ quotes the following character. */
#define RE_BACKSLASH_ESCAPE_IN_LISTS (1)
/* If this bit is not set, then + and ? are operators, and \+ and \? are
literals.
If set, then \+ and \? are operators and + and ? are literals. */
#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
/* If this bit is set, then character classes are supported. They are:
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
If not set, then character classes are not supported. */
#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
/* If this bit is set, then ^ and $ are always anchors (outside bracket
expressions, of course).
If this bit is not set, then it depends:
^ is an anchor if it is at the beginning of a regular
expression or after an open-group or an alternation operator;
$ is an anchor if it is at the end of a regular expression, or
before a close-group or an alternation operator.
This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
POSIX draft 11.2 says that * etc. in leading positions is undefined.
We already implemented a previous draft which made those constructs
invalid, though, so we haven't changed the code back. */
#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
/* If this bit is set, then special characters are always special
regardless of where they are in the pattern.
If this bit is not set, then special characters are special only in
some contexts; otherwise they are ordinary. Specifically,
* + ? and intervals are only special when not after the beginning,
open-group, or alternation operator. */
#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
/* If this bit is set, then *, +, ?, and { cannot be first in an re or
immediately after an alternation or begin-group operator. */
#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
/* If this bit is set, then . matches newline.
If not set, then it doesn't. */
#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
/* If this bit is set, then . doesn't match NUL.
If not set, then it does. */
#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
/* If this bit is set, nonmatching lists [^...] do not match newline.
If not set, they do. */
#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
/* If this bit is set, either \{...\} or {...} defines an
interval, depending on RE_NO_BK_BRACES.
If not set, \{, \}, {, and } are literals. */
#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
/* If this bit is set, +, ? and | aren't recognized as operators.
If not set, they are. */
#define RE_LIMITED_OPS (RE_INTERVALS << 1)
/* If this bit is set, newline is an alternation operator.
If not set, newline is literal. */
#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
/* If this bit is set, then `{...}' defines an interval, and \{ and \}
are literals.
If not set, then `\{...\}' defines an interval. */
#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
/* If this bit is set, (...) defines a group, and \( and \) are literals.
If not set, \(...\) defines a group, and ( and ) are literals. */
#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
/* If this bit is set, then \<digit> matches <digit>.
If not set, then \<digit> is a back-reference. */
#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
/* If this bit is set, then | is an alternation operator, and \| is literal.
If not set, then \| is an alternation operator, and | is literal. */
#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
/* If this bit is set, then an ending range point collating higher
than the starting range point, as in [z-a], is invalid.
If not set, then when ending range point collates higher than the
starting range point, the range is ignored. */
#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
/* If this bit is set, then an unmatched ) is ordinary.
If not set, then an unmatched ) is invalid. */
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
/* This global variable defines the particular regexp syntax to use (for
some interfaces). When a regexp is compiled, the syntax used is
stored in the pattern buffer, so changing this does not affect
already-compiled regexps. */
extern reg_syntax_t re_syntax_options;
/* Define combinations of the above bits for the standard possibilities.
(The [[[ comments delimit what gets put into the Texinfo file, so
don't delete them!) */
/* [[[begin syntaxes]]] */
#define RE_SYNTAX_EMACS 0
#define RE_SYNTAX_AWK \
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
#define RE_SYNTAX_POSIX_AWK \
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
#define RE_SYNTAX_GREP \
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
| RE_NEWLINE_ALT)
#define RE_SYNTAX_EGREP \
(RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
| RE_NEWLINE_ALT | RE_NO_BK_PARENS \
| RE_NO_BK_VBAR)
#define RE_SYNTAX_POSIX_EGREP \
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
/* Syntax bits common to both basic and extended POSIX regex syntax. */
#define _RE_SYNTAX_POSIX_COMMON \
(RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
| RE_INTERVALS | RE_NO_EMPTY_RANGES)
#define RE_SYNTAX_POSIX_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
isn't minimal, since other operators, such as \`, aren't disabled. */
#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
#define RE_SYNTAX_POSIX_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \
| RE_UNMATCHED_RIGHT_PAREN_ORD)
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
| RE_NO_BK_PARENS | RE_NO_BK_REFS \
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
/* [[[end syntaxes]]] */
/* Maximum number of duplicates an interval can allow. Some systems
(erroneously) define this in other header files, but we want our
value, so remove any previous define. */
#ifdef RE_DUP_MAX
#undef RE_DUP_MAX
#endif
#define RE_DUP_MAX ((1 << 15) - 1)
/* POSIX `cflags' bits (i.e., information for `regcomp'). */
/* If this bit is set, then use extended regular expression syntax.
If not set, then use basic regular expression syntax. */
#define REG_EXTENDED 1
/* If this bit is set, then ignore case when matching.
If not set, then case is significant. */
#define REG_ICASE (REG_EXTENDED << 1)
/* If this bit is set, then anchors do not match at newline
characters in the string.
If not set, then anchors do match at newlines. */
#define REG_NEWLINE (REG_ICASE << 1)
/* If this bit is set, then report only success or fail in regexec.
If not set, then returns differ between not matching and errors. */
#define REG_NOSUB (REG_NEWLINE << 1)
/* POSIX `eflags' bits (i.e., information for regexec). */
/* If this bit is set, then the beginning-of-line operator doesn't match
the beginning of the string (presumably because it's not the
beginning of a line).
If not set, then the beginning-of-line operator does match the
beginning of the string. */
#define REG_NOTBOL 1
/* Like REG_NOTBOL, except for the end-of-line. */
#define REG_NOTEOL (1 << 1)
/* If any error codes are removed, changed, or added, update the
`re_error_msg' table in regex.c. */
typedef enum
{
REG_NOERROR = 0, /* Success. */
REG_NOMATCH, /* Didn't find a match (for regexec). */
/* POSIX regcomp return error codes. (In the order listed in the
standard.) */
REG_BADPAT, /* Invalid pattern. */
REG_ECOLLATE, /* Not implemented. */
REG_ECTYPE, /* Invalid character class name. */
REG_EESCAPE, /* Trailing backslash. */
REG_ESUBREG, /* Invalid back reference. */
REG_EBRACK, /* Unmatched left bracket. */
REG_EPAREN, /* Parenthesis imbalance. */
REG_EBRACE, /* Unmatched \{. */
REG_BADBR, /* Invalid contents of \{\}. */
REG_ERANGE, /* Invalid range end. */
REG_ESPACE, /* Ran out of memory. */
REG_BADRPT, /* No preceding re for repetition op. */
/* Error codes we've added. */
REG_EEND, /* Premature end. */
REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
} reg_errcode_t;
/* This data structure represents a compiled pattern. Before calling
the pattern compiler, the fields `buffer', `allocated', `fastmap',
`translate', and `no_sub' can be set. After the pattern has been
compiled, the `re_nsub' field is available. All other fields are
private to the regex routines. */
struct re_pattern_buffer
{
/* [[[begin pattern_buffer]]] */
/* Space that holds the compiled pattern. It is declared as
`unsigned char *' because its elements are
sometimes used as array indexes. */
unsigned char *buffer;
/* Number of bytes to which `buffer' points. */
unsigned long allocated;
/* Number of bytes actually used in `buffer'. */
unsigned long used;
/* Syntax setting with which the pattern was compiled. */
reg_syntax_t syntax;
/* Pointer to a fastmap, if any, otherwise zero. re_search uses
the fastmap, if there is one, to skip over impossible
starting points for matches. */
char *fastmap;
/* Either a translate table to apply to all characters before
comparing them, or zero for no translation. The translation
is applied to a pattern when it is compiled and to a string
when it is matched. */
char *translate;
/* Number of subexpressions found by the compiler. */
size_t re_nsub;
/* Zero if this pattern cannot match the empty string, one else.
Well, in truth it's used only in `re_search_2', to see
whether or not we should use the fastmap, so we don't set
this absolutely perfectly; see `re_compile_fastmap' (the
`duplicate' case). */
unsigned can_be_null : 1;
/* If REGS_UNALLOCATED, allocate space in the `regs' structure
for `max (RE_NREGS, re_nsub + 1)' groups.
If REGS_REALLOCATE, reallocate space if necessary.
If REGS_FIXED, use what's there. */
#define REGS_UNALLOCATED 0
#define REGS_REALLOCATE 1
#define REGS_FIXED 2
unsigned regs_allocated : 2;
/* Set to zero when `regex_compile' compiles a pattern; set to one
by `re_compile_fastmap' if it updates the fastmap. */
unsigned fastmap_accurate : 1;
/* If set, `re_match_2' does not return information about
subexpressions. */
unsigned no_sub : 1;
/* If set, a beginning-of-line anchor doesn't match at the
beginning of the string. */
unsigned not_bol : 1;
/* Similarly for an end-of-line anchor. */
unsigned not_eol : 1;
/* If true, an anchor at a newline matches. */
unsigned newline_anchor : 1;
/* [[[end pattern_buffer]]] */
};
typedef struct re_pattern_buffer regex_t;
/* search.c (search_buffer) in Emacs needs this one opcode value. It is
defined both in `regex.c' and here. */
#define RE_EXACTN_VALUE 1
/* Type for byte offsets within the string. POSIX mandates this. */
typedef int regoff_t;
/* This is the structure we store register match data in. See
regex.texinfo for a full description of what registers match. */
struct re_registers
{
unsigned num_regs;
regoff_t *start;
regoff_t *end;
};
/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
`re_match_2' returns information about at least this many registers
the first time a `regs' structure is passed. */
#ifndef RE_NREGS
#define RE_NREGS 30
#endif
/* POSIX specification for registers. Aside from the different names than
`re_registers', POSIX uses an array of structures, instead of a
structure of arrays. */
typedef struct
{
regoff_t rm_so; /* Byte offset from string's start to substring's start. */
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
} regmatch_t;
/* Declarations for routines. */
/* To avoid duplicating every routine declaration -- once with a
prototype (if we are ANSI), and once without (if we aren't) -- we
use the following macro to declare argument types. This
unfortunately clutters up the declarations a bit, but I think it's
worth it. */
#if __STDC__
#define _RE_ARGS(args) args
#else /* not __STDC__ */
#define _RE_ARGS(args) ()
#endif /* not __STDC__ */
/* Sets the current default syntax to SYNTAX, and return the old syntax.
You can also simply assign to the `re_syntax_options' variable. */
extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
/* Compile the regular expression PATTERN, with length LENGTH
and syntax given by the global `re_syntax_options', into the buffer
BUFFER. Return NULL if successful, and an error string if not. */
extern const char *re_compile_pattern
_RE_ARGS ((const char *pattern, int length,
struct re_pattern_buffer *buffer));
/* Compile a fastmap for the compiled pattern in BUFFER; used to
accelerate searches. Return 0 if successful and -2 if was an
internal error. */
extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
/* Search in the string STRING (with length LENGTH) for the pattern
compiled into BUFFER. Start searching at position START, for RANGE
characters. Return the starting position of the match, -1 for no
match, or -2 for an internal error. Also return register
information in REGS (if REGS and BUFFER->no_sub are nonzero). */
extern int re_search
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, int range, struct re_registers *regs));
/* Like `re_search', but search in the concatenation of STRING1 and
STRING2. Also, stop searching at index START + STOP. */
extern int re_search_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, int range, struct re_registers *regs, int stop));
/* Like `re_search', but return how many characters in STRING the regexp
in BUFFER matched, starting at position START. */
extern int re_match
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string,
int length, int start, struct re_registers *regs));
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
extern int re_match_2
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1,
int length1, const char *string2, int length2,
int start, struct re_registers *regs, int stop));
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
ENDS. Subsequent matches using BUFFER and REGS will use this memory
for recording register information. STARTS and ENDS must be
allocated with malloc, and must each be at least `NUM_REGS * sizeof
(regoff_t)' bytes long.
If NUM_REGS == 0, then subsequent matches should allocate their own
register data.
Unless this function is called, the first search or match using
PATTERN_BUFFER will allocate its own register data, without
freeing the old data. */
extern void re_set_registers
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
unsigned num_regs, regoff_t *starts, regoff_t *ends));
/* 4.2 bsd compatibility. */
extern char *re_comp _RE_ARGS ((const char *));
extern int re_exec _RE_ARGS ((const char *));
/* POSIX compatibility. */
extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags));
extern int regexec
_RE_ARGS ((const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags));
extern size_t regerror
_RE_ARGS ((int errcode, const regex_t *preg, char *errbuf,
size_t errbuf_size));
extern void regfree _RE_ARGS ((regex_t *preg));
#endif /* not __REGEXP_LIBRARY_H__ */
/*
Local variables:
make-backup-files: t
version-control: t
trim-versions-without-asking: nil
End:
*/
BIN
View File
Binary file not shown.
-12
View File
@@ -1,12 +0,0 @@
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
-26
View File
@@ -1,26 +0,0 @@
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
-40
View File
@@ -1,40 +0,0 @@
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.
-149
View File
@@ -1,149 +0,0 @@
/*
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;
}
-115
View File
@@ -1,115 +0,0 @@
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.

Some files were not shown because too many files have changed in this diff Show More