1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-01 15:06:38 +02:00

2 Commits

Author SHA1 Message Date
cmunk 5f49057d01 Addition of Unreal3.1-beta3 2000-05-28 08:45:32 +00:00
cvs2hg 7c8ad67b28 fixup commit for branch 'unlabeled-1.1.1.1.4' 2000-02-28 22:45:49 +00:00
340 changed files with 25446 additions and 68079 deletions
-19
View File
@@ -1,19 +0,0 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Configuration Program
for Unreal3.2-Selene(beta2)
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 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.
-35
View File
@@ -1,35 +0,0 @@
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... |
| |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
-86
View File
@@ -1,86 +0,0 @@
Unreal3.2-Selene (BETA4) RELEASE NOTES
======================================
I M P O R T A N T R E A D I N G
* Unreal3.2-Selene 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 new
unrealircd.conf (what the ircd.conf is called now). See doc/ for more
information on the configuration format
* We have introduced a new cloaking algoritm (+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)
* We use autoconf to help with compiliation, and this should make us able
to a lot more platform (we have even ported to BeOS).
* We require a pthreads library for the SOCKS scan now - and this is now
done in the background (no more waiting!).
* The IRCd is now modularized, and you load modules with the loadmodule
command. You will most likely want to add these lines:
loadmodule "src/modules/commands.so";
loadmodule "src/modules/scan.so";
loadmodule "src/modules/scan_socks.so";
loadmodule "src/modules/scan_http.so";
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.
* We have some IPv6 support, and there are some minor bugs in it.
* The documentation is NOT yet 100% complete
* 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:
/mode yournick +s +cF
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:
/mode yournick -s -c
The current snomasks are:
c - local connects
F - far connects
f - flood notices
k - kill notices
e - 'eyes' notices
j - 'junk' notices
v - vhost notices
G - gline/shun notices
It shouldn't be too hard to figure out, just play around with it a bit :)
* /who needs testing it was recoded and may contain bugs
* 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
aliases/ircservices.conf (IRCServices, Daylight)
aliases/epona.conf (Epona)
aliases/generic.conf (Magick, Sirius, Wrecked)
aliases/operstats.conf (OperStats)
aliases/genericstats.conf (GeoStats, NeoStats)
* You can now use an IP in the oper::from and vhost::from fields even if the host resolves
* Added an http proxy scanner (scan_http.so)
* MAKE SURE YOU RERUN ./Config AND RUN make clean BEFORE USING THIS VERSION!!!
* THIS IS A BETA VERSION. THINGS MAY NOT WORK. REPORT ANY BUGS TO THESE
ADDRESSES:
* coders@lists.unrealircd.org and bugs@lists.unrealircd.org
-20
View File
@@ -1,20 +0,0 @@
|-------------------------------------------------------------------------|
| 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? |
| |
| A initiative have been started, to help this problem, as more and more |
| SSL-enabled IRC servers will be started in the future, and people will |
| have trouble authenticating that they are really at the right server. |
| This initiative is called SICI (Secure IRC Certification Initiative. We |
| sign your certificates for free, using the simple way of authenticating |
| you by going to your IRC server and testing if it's really you. |
| |
| You can send in your "server.req.pem" file to us at our email |
| certs@sici.ircsystems.net, with contact info on you (IRC network, nick, |
| status). We will then contact you, and check if you have provided true |
| information. If you need more information about SICI, visit our website |
| http://sici.ircsystems.net, where you can download our root certificate,|
| and read even more about this project. | Press enter to continue |
---------------------------------------------------------------------------
-17
View File
@@ -1,17 +0,0 @@
_ _ _ ___________ _____ _
| | | | | |_ _| ___ \/ __ \ | |
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
Update Script v2.0
What download program do you want to use?
-----------------------------------------
Type "wget" for wget
Type "lynx" for lynx
>
-77
View File
@@ -1,77 +0,0 @@
#
# 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
@@ -1,6 +0,0 @@
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
@@ -1,52 +0,0 @@
--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
-993
View File
@@ -1,993 +0,0 @@
/*
* UnrealIRCd Changes File - (C) Carsten Munk 1999-2000 &
* The UnrealIRCd Team
*
* $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.
*
*/
[ Unreal3.2-Selene ]
- Fixed a _serious_ bug in SERVER command, reported by Valen, Forrester,
M0rpheus, JK, and Hiten.
- Fixed /botserv problem
- Fixed permission problem with SSL .pem files (was o+r)
- Removed a redundant time.h include reported by trippin
- Modified rehash flags to use strnicmp rather than match (faster)
- Fixed some points of confusion of possible cptr->passwd bug in
m_server_estab, reported and fixed by Kanzen_Greiver
- Fixed some more points of ->passwd bugs
- Added in devdev's INSTALL replacement
- Made it so you don't get a +W notice if you /who or /whois yourself reported by Ron885
- You can no longer specify an *@unrealircd.com/org, or unreal-*@lists.sourceforge.net email
as your KLINE_ADDRESS (the "Why am I K:lined?" messages got too annoying)
- Removed some irc.flirt.org references.
- Made it so if a channel is +O or +A and you are not +O or +A and not in the channel, you can not
/topic #channel same for +b if not +o or on the channel. Suggested by Sysop_Mars
- Fixed a bug where you would receive a double notice when someone does a /who 0 o
- Added first part of the new config parser, s_conf2.c
- Added the next part of the new config parser, and some even more
- Fixed a missing : on numeric 379 found by script0r
- Added some a bit functional _conf_class code
- Some more _conf_class code
- Typing /stats or /stats invalid-flag will return a list of valid flags
- You no longer receive a /stats +e notice when no flag is specified, or an invalid flag is specified
- Some more newconf code, and some more
- Added drpass (X:line) to the config code
- Some more config2 code
- Removed parser builtin directive include, and replaced it with our own
- The config2 now uses strerror() to display an error, rather than the numeric
- Fixed s_user.c so umode N and T cannot coexist
- Added tld (T:line) to the config code
- Finished _conf_oper
- A report_configuration code (showoff)
- Finished _conf_listen
- Finished _conf_allow
- Added TODO in top of s_conf2.c
- Fixed a bug reported by S7 that affected chg* and set* as well as sdesc
- Started work on the except parser
- Wierdoe parse things
- Made except parser use a specialized _configflag_except instead of wasting
a byte.
- Changed version to "Unreal3.2-Selene" (Selene = female character in a
comic mag i found at my grandmas :P)
- Finished _conf_vhost
- Made _conf_listen understand listen <port> {}
- Finished _conf_link
- Added some _conf_link validity and added ->class option (forgot it)
- Made ircd.c use the newconf with me.* setup. Uses the first and the best
as listener
- Finished _conf_ban (try and attack us now idiots!)
- Made "No response from", use GLOBOPS instead of GNOTICE.
Fixes TODO Bugfixes Thu Dec 14 2000 Priority 10 added by Stskeeps
- Fixed telnet close server thing, fixes Wed 20 Dec 2000 priority 9,
added by codemastr
- Fixed /whois shows what channels +S are in.
Closes stskeeps/Dec30-2000-10-Bugfixes =======
- Fixed a STATS_ONLYOPER bug
- Fixed a ircd.tune bug (the file may not write if it didn't exist)
- Fixed a serious bug reported by Kanzen_Griever
- Merged in sts-laptop branch
- Made /admin use the new config (had to modify some newconf stuff to make a backwards copy
of the list as well)
- Made U:lines loaded from the newconf, also made /stats U read the U:lines from the newconf
- Added listen {} runtime-configuration code work :))
- Removed unrealircd.conf from the stock
- X:line was replaced with drpass {} in /restart and /die (will make them faster as well)
- Made +u do a auditorium/star chat feature, suggested by |Martin|=======
- Fixed a G:line bug that would allow certain masks to be interpreted as *@*
- Fixed the same bug in shun that affected G:line
- Made +f faster by replacing 2 strchr()s and a strrchr() with a if () inside an existing loop
- Fixed a +f bug reported by Enstyne
- Fixed a SVSMODE/SVS2MODE bug that could cause an incorrect +i and +o count, reported by CaliMonk
- Fixed another SVS2MODE bug that would make it send an empty MODE change
- Removed the old chmode +x = +c and +I = +V support (3.x use +cV and 2.1.7 is obsolete)
- Implimented except socks {} and tld {}
- Removed the old read_tlines code and made /stats t show tld {} blocks
- Fixed bug with /whois showing +S user channels (ChanServ)
- Made /mode (umode change) only send 1 unknown mode msg, forgot who suggested this one
- Made /rehash -motd/rules use tld {}
- Heavily recoded /rehash (removed a ton of coding)
- Updated match() to have some optimizations from bahamut
- +GScm now affect /part msgs (requested by SegFault and others)
- Added Find_link, serv->conf, did a Find_tld fixup, removed serv->nline,
removing a lot of my_name_for_link crap, indented s_serv.c
- Recoded m_server(YES!) -stskeeps
- Fixed a +S bug reported by script0r
- Fixed a #undef USE_SSL problem found by codemastr.. caused by
Sts(TM)coding
- Added set {} (unrealircd.conf/network file replacement)
- Made vhost {} use from {} for hosts
- Fixed some stskeeps-drunk-coding stuff in m_server
- Fixed a typo "receive" not "recieve"
- Made SVSNICK check if a nick is valid
- Made get_sendq be a macro
- Added find_ban, AllowClient() (old attach_Iline)
- Temporary disabled /svsnoop, /akill, /sqline /unsqline, /kline, /unkline
/zline, /rakill, /unzline and /svso
- chkconf is not being built anymore
- Ripped out s_conf.c with the roots.
- Ripped out add_listener
- Disabled a lot of stuff that needs to adapt to conf2
- Made allow {} work
- Changed allow {} to do user@host instead of user item
- Took out my_name_for_link
- Temporary disabled D:d lines/SQLines/Qlines
- Fixed some /connect stuff
- Disabled rehash temporary
- Made ban user/ban realname work (s_unreal.c needs to be modified)
- Added Zogg to credits
- NOTE: Unreal-devel is handicapped right now, code in progress, do not use
- Did a little speed up on Find_ban
- Made /setname and /chgname use ban realname {}
- Made /oper work with newconf (come get us now bastards!)
- Made +c show class names in connect
- Fixed a minor problem with ban {} and oper {}
- Made ban nick {} work
- Added the first (sorta) working version of the config converter
- updconf now makes use of from {} in oper {} to eliminate duplicate O:lines
- Made allow {} passwords work (AllowClient) - TODO: I:line encryptions
- Made allow { maxperip }; work, the old ONE password thing, just better
- Added a hack to updconf so ONE sets maxperip to 1 and made another hack
-I IPMASK:HOSTMASK:IPs,... to allow you to specify an ipmax. ex.
-I *@205.188.*:*@*.aol.com:10,*@*:*@*:100 that will allow 10 on your aol.com allow,
and 100 on your *@* allow
- /vhost uses newconf
- Removed old vhost.conf code
- Fixed check_pings (check_kills) code, so G:lines & ban nick/ip/realname
works again
- /connect works now :), TODO: D:d lines, V:line needs fixing, badly
says "Unknown location" atm on uplink
- Took out MyMalloc & co, direct to malloc/realloc/free now. Crashed in
DEBUGMODE
- Added ConfigItem_link->ipnum
- Fixed a compile bug with DEBUGMODE
- Changed a load of old aConfItem crap .., FIX: ConfigItem_link->options
- Fixed a /connect bug
- Made /svsnoop "work" again, moved it to s_svs.c (and made that file too)
- Made /svso work again, moved it to same place as svsnoop.
- Made /rakill and /akill work again :). Added banflag.type2
FIX: *@* detection
- Fixed a check_pings problem with usernames
- ban ip {} works 100% now
- Made /stats C work and /stats H. Intregrated into one.
- Made /zline, /unzline work.
- Added CONF_BAN_TYPE_TEMPORARY
- Fixed a ban ip {} bug in check_pings
- Removed some waste of oldconf
- Moved advanced_check to s_svs.c
- Made /kline work again, with newconf
- Made /trace work again properly with class names
- Made /sqline /unsqline work again.
- Made SQLINE synching work with newconf
- Fixed a little problem with SERVER servername :info crashing the ircd
Long live the Floridan way of counting
- ban server {} works the original way it was intended to now
- Classes keep reference counts now, and moving classes (oper) works good
too.
- Added /trace class search results (class->clients)
- Fixed some protocol error in server_synch
- Made listener code work good ..
- Made reference counts work again
- Started some rehash work
- Made full class work on servers too
- Fixed a refcount bug
- Fixed a spread server bug
- Some more rehash stuff
- Fixed check_pings problem (crash)
- Fixed negative timestamps problem (crash)
- Fixed a problem with cptr->class counting for servers
- Made a bunch of /stats flags work with newconf
- Added some MALLOCD (mini debug malloc by stskeeps..)
- Removed some C++ comments
- Made close_listeners work correctly again
- Removed some old check_* mammut code
- Fixed a bunch of possible bugs in newconf
- Added sendto_realops logging of config errors
- Made /rehash work .. sortof. Fixed some crash bugs
- Added /stats P on listener info (oper-only)
- listener temporary stuff works now
- Fixed temporary stuf with conf_link
- Fixed a problem with +x
- Made CPATH be unrealircd.conf and init_conf2 use configfile instead
- Disabled calls to dynconf
- Added validate_conf, added dynconf checking, me, admin, class, oper
testing
- Added config_progress() Fixed temporary stuff
with conf_link
- Made tld {} get rehashed
- Made listen/allow get validated
- Finished up validate_conf()
- Made badwords be in newconf (you can now specify a replace word for each word)
- Made vhosts and badwords rehash
- Fixed a bug in the rehash code
- Made it so set::auto-join and set::oper-auto-join can be excluded to mean no auto join
- Changed prefix_quit to prefix-quit (all others use - not _)
- Fixed a minor bug causing a mode without any flags to be sent
- Finished up deny dcc {}.
TODOs: dcc_del_wild_match doesn't work. dcc_wipe_services() either
- Made deny_dcc get rehashed
- Made it so the IRCd can survive with certain set {} errors (uses defaults)
- stats-server and services-server are no longer required (missing = disabled services aliases)
- socks set {} options are now optional. Defaults are used if missing
- If an invalid ban or except is found, it is removed
- Some small SSL fixes ..
- Added a notice on connect for SSL users with key length
- Fixed a /kline and /unkline buffer overflow, reported by [-Th3Dud3-]
- Fixed a crash in /stats k regarding temporary K:lines
- Fixed a missing " in validate_conf
- Replaced a few strlen()s with sizeof(), should make the IRCd start a bit faster
- Fixed a svsmotd bug (from 3.1) prevented adding lines to the svsmotd
- Recoded some dynamic motd stuff. Now uses 1 function.
- Removed an unused var from the old T:line code
- Removed a redundant check in SVSKILL
- Removed some old code from LUSERS (it was moved due to IRCStats but some leftovers remained)
- Added deny channel { channel "channelmask"; reason "why"; }; and
allow channel { channel "channelmask"; };. Replaces chrestrict
- Made those above get rehashed
- Killed ircdupstr and called it ircstrdup
- Made link { options { work OK again. Had a dead loop as well
- Made autoconnect work again :>. Changes in behavouir: It connects more at
a time now. You need autoconnect flag in options.
- Minor OpenBSD support cleanup
- bsd.c, channel.c, s_svs.c, s_unreal.c, s_kline.c, and s_extra.c now use ANSI
standards for naming function params
- Made connfreq unable to less than 10
- Added deny link { mask "servermask"; rule "connectionrule"; type all/auto; }; (equivilant of D/dlines)
- Made admin {} get rehashed
- Got /stats x to work again
- Recoded check_pings, with bits used from bahamut-ircd/hybrid-ircd, credits
to lucas.
- Removed return_servers() and made servers be called Servers, and be a
global variable. Done on request on Great Master codemastr.
- Made crule.c use the server list rather than the whole client list for checking (faster)
- Sped up some channel stuff a lot using a bahamut type user search
- Added CommandHash optimation .. this is not done 100% yet. uses msgtab as
reference
- Removed msgtab part of parse, removed the bigass hashtable msgtab,
removed inittoken, made command initalization happen in init_CommandHash
- Adapted /stats M to it. Removed /helpop ?commands temporary. Confirming
hashtable works.
- Fixed windows CRLF problem in conf2, reported by Zogg
- Added Member and Membership and made the IRCd support this. Using
"freelinks", todo: garbage collection
- Added find_member_link and find_membership_link. Made Floodopt only
get allocated for local users. Removed aFloodOpt in Link,
- Made a speedup in is_halfop (dumb code)
- Somehow is_halfop and co got called when a server set a mode .., added
IsServer check (auto-return 1)
- Fixed the 9-month old win32 DNS bug, caused by Stskeeps's incidential
delete. Found by Zogg and CVSweb
- Made autoconnect msgs only go to +os
- Made DNS cache list show a notice to other ops
- Made /stats C show flags correctly
- Added deny version {}
- Made deny link {} rehash
- Removed class.c, from the old conf
- Removed dynconf.c, from the old dynconf
- Fixed a deny version {} bug (oops)
- Fixed a config_load win32 problem, found by Zogg, fixed by Stskeeps/codemastr
- Overwrote s_conf.c with s_conf2.c, and removed s_conf2.c. Viva la Conf2!
- Added /stats I, Y, b, d, D, v
- /who now got its right behavoiur regarding masks, bug found by Zogg
(acptr is not cptr)
- Made set::modes-on-connect work :) (strip out MODE_X and stuff plz?)
- Moved dynconf stuff from s_svs.c to s_conf.c, on popular request
- Made NAME_SERVER (set::dns::nameserver work). The IRCd no longer
uses /etc/resolv.conf as reference.
- Updated most of /stats S for newconf
- You can now specify oper flags using the old method:
(new method) flags { flags here }; (old method) flags flags_here;
- Removed a lot of vars and stuff from the old config, also made some cleanups to reduce source size
- Made del_Command().
- Rewrote makeconf and makenet to use newconf (added some new features to makeconf as well)
- Made MembershipL->flood get bzero on out delegation
- Removed stskeeps's lazy add_CommandX (tm) code
- Made IRCd not crash on /kick from servers
- Fixed a typo in makeconf
- Made /whois not return channels for services
- Made makeconf use "ban nick" instead of "ban nickname"
- Fixed ssl_client_handshake bug reported by IpAddress
- Made ./Setup not do dynamic configuration any more
- Changed reference in Setup from ircd.conf to unrealircd.conf (cosmetic)
- Changed output of updconf from ircd.conf.new to unrealircd.conf.new
- Changed the output of makeconf from ircd.conf to unrealircd.conf
- Renamed hostmask to hostname like it should be in makeconf - IpAddress
- Added "get_host" old 'H' O:flag
- Added #define KILL_LOGGING, by otherguy
- Added /cycle #channels, suggested by ^loki^
- Added Modules, using dlopen() and LoadLibrary for *nix/win32.
- Added /module load <path.to.so>, /module status (list modules),
/module unload <modulename>
- Added loadmodule "filename.so"; and made the modules
unable to get loaded twice with same name.
- Reintroduced "fake lag". Flood algoritm works this way:
Make next check for parsing be
(1 + (length of command+parameters / 60)
- Started on commands.so making, works good atm -on req of codemastr,
both as m_module.so and commands.so :) - long live dynamiclinking
- Fixed bug with double module unloading, bug found by RaYmAn
- Win32 Changes
- Had to convert the connect messages back to strlen() because of a bug found by Bagge
working on a way to make it better though
- Added unknown connection flood protection (settable in config.h)
- Made chmode +z only settable by umode +z users or U:lines or services.
- Updated badwords.channel.conf and badwords.message.conf to use newconf (requires an include in
the config file)
- Made conf2 able to load empty files as well, with warnings
- Added module_sym("functionname"), for modules, like, sajoin might want to
do fp_m_join = module_sym("m_join");
- Put out m_chghost, m_sethost in modules, remade Makefile structure and
added src/modules
- Modified an old Unreal3.1.1 to be network file converter, and converted
all of the networks files to the new format.
- Fixed a bug with RAKILL and UNSQLINE not working
- Moved m_chgident to an .so
- Changed license of m_dummy.c (dummy module, skeleton), so people can do
closed source modules.
- Moved m_setname to a .so
- Started work on the new improved command hashing system
- Modified command hashing system to Sts's belief of how eggs should be
made. (quick, dirty and fcked up)
- Fixed a bunch of bugs in the command hash system caused by sts:
- You can't send numerics to servers
- Using ERR_NOPRIVLEDGES (says you aren't oper)
- Disabled commands allowed by unregistered users from registered users
- Removed networks/unrealircd.conf
- Implimented new logging system using log {} (if you leave it out it reverts to the old ircd.log)
- Added Hooks, only one working now is HOOKTYPE_LOCAL_QUIT
- Added log flag kline (accidentily forgot it)
- Added #define HOOKTYPE_LOCAL_NICKCHANGE
- Made MyMalloc be MyMallocEx in codemastr's log {} code. Fixes junk pointer
problem - discovered by sts/Morbid
- Removed the old /rehash flags, reported by Morbid
- Reverted Demigurus's select() speedup patch, did speedup, but it
also caused a good bit of CPU.
- Fixed a globops bug that required it to have a : found by ROXnet
- Removed KILL_LOGGING replaced by log {}, found by Morbid
- Removed PROTO() and general h.h/proto.h cleanups (made source 3.14K smaller)
- Implimented a system using chmod() at startup to try and keep the config file from being read
by people who shouldn't have access. (set through ./Config)
- Added oper::swhois idea by Robertsog (NOTE: since this is done before the mode change, a U:Line changing
the SWHOIS after you /oper will override this)
- Added a donation credit
- Reverted a change
- Fixed a double definition (double m_chghost and m_chghost.so)
- Moved /sdesc, /setident to modules.
- allow { } now supports encrypted passwords -Syzop
- Made static linking a little more possible
- Made /kick not core on users kicking servers. (WTF?)
- Fixed a problem with users opping servers.. Found by Morbid
- Fixed a problem with SDESC module token being wrong - Found by eternal
- If no oper flags are found, default to locop (suggested by devdev)
- Added tld::channel so you can make people join a channel based on hostmask
- Made it so a motd or rules loaded in 2 seperate tld {} is only read into memory once (may need debugging?)
- Fixed a bug where the IRCd didn't validate hosts specified in a vhost {}
- Added the ability to specify a username to spoof in a vhost {} instead of vhost "host.name";
you can vhost "user@host.name"; (suggested by IpAddress)
- Fixed a bug where you could use an infinitely large host in a vhost {} (now limited to HOSTLEN)
- Fixed improper old username being displayed reported by IpAddress
- Added M_NOLAG.
- Added new CRC32-hex-based IPv4 and hostname cloaking form
- Make users that send a forbidden file get auto blocked from sending other
files. sptr->flags & FLAGS_DCCBLOCKED.
- Readded timestamp to log, accidentily got removed
- Made it so /stats C doesn't show the user@host of servers to non-opers
- Possibly fixed the vhost crashing bug, with much help from IpAddress
- Found a way to do +x IPv4 cloaking right.
- Added set::cloak-keys { longvalue; longvalue; longvalue; }; for the cipher
- Fixed a NETINFO parameter problem - solves the new NETINFO format
- Made a little hack to newconf to allow varname=value; to try and keep it some what similar
to the new config files of other IRCds. NOTE: the = is completely optional, it is allowed
but not required
- # comments can be used anywhere in a line now (just like // comments) for compatibility with other
IRCds
- Added sajoin/sapart error message patch by NiQuiL (modified slightly by codemastr)
- Implimented IRCNet style server redirection, based on the hybrid-7 code. Some clients will connect
to the specified server automatically, others will require you to do it manually.
- Made /info use @unrealircd.com emails instead of @tspre.org
- Removed FNAME_OPERLOG and replaced it with log {} flag oper
- Removed OWNLOGON (did nothing?)
- Replaced FNAME_USERLOG with log {} flag connects (logs user connects and disconnects)
- added temporary define #define OLD_CLOAK
- Fixed up some codemastr(TM) coding regarding M_*
- Implimented a cloak fix based on code by Zogg (just used a #define ircabs rather than abs())
- Expanded the chmod() security fix to files added via include filename;
- Possible FD leak in ircd_log, caused by some codemastr coding(TM)
- #define HELP_WHO for the "did a /who 0 o"
- Added a new Win32 GUI does it work, no one knows
- Rewrote the ircd_log function a bit to fix the FD bug better, not sure wtf I was smoking
when I wrote the last one :P
- When IRCOps are breaking into chans with invite only (+i) or
key-protection (+k) a eyes-notice is sent like it is on banwalk. -NiQuiL
- Added unitedirc.network -NiQuiL
- Removed a , in NiQuiL's banwalk message
- Fixed DEBUGMODE problem, found by someone ..
- Don't know why but m_file.so was in the modules makefile, removed
- Added irc2.10.3's resolver. Fixes debian-woody-libresolv problems..
Still some fixes to be done
- More res.c fixes ..
- Final res.c fixes
- Added /rehash -all patch by NiQuiL
- res.c: fixed ircsprintf problems
- Fixed ircd_log to work in windows
- Removed __P, windows doesn't like it, and only old compilers need it
- Fixed a ban realname {} bug that _may_ have something to do with the negative user count bug
- Fixed do_dns_async problem with new res.c
- Removed doc/ADD-TO-IRCRC, doc/INSTALL, doc/Manual, doc/Operators,
doc/irc.1, doc/ircd.8, doc/server-compile-guide
- Made it so Invitewalk and Keywalk don't show for U:lines
- Fixed a cloak bug caused by stskeeps(tm) "not knowing how to use << and >> coding"
- Fixed some cloak bugs, and applied +x crypto to hostnames as well
- Changed some non-error messages in newconf from config_status to config_progress
- Added a way for newconf to report its errors in windows using a "Config Error" dialog
- Fixed the /stats Z bug reported by RaYmAn
- Added missing resource.h defineand missing +1 in MyMalloc of win_log reported by McSkaf
Seemed to work without the +1 but added it just to be safe.
- Fixed possible crash bug imposed by too many users per ip in AllowClient -found and fixed by McSkaf
- Made IP Mismatches getting sent to UMODE_JUNK instead
- Added method mod_load in dummy example and made it work. mod_load() is executed
when server is ready
- Fixed minor problem with mod_load code
- Fixed possible crash with /quote dns l
- Removed newdns
- Fixed a memory bug in win32 code found and fixed by McSkaf, and fixed a typo
- Fixed a win32 bug found by RaYmAn causing the tray icon not to be displayed sometimes
- Fixed a bunch of Win32 bugs reported and fixed by McSkaf
- Made the IRCd delete its tray icon in win32 on SIGSEGV
- Brought 005 up-to-date with spefication - added CHANMODES= support
- Applied res.c.patch from McSkaf, fixes win32 GPF, but fixed mising HE(ocp)
- Applied s_debug.c/config.h patch from McSkaf, makes DEBUGMODE under
win32 working again - fixed some errors in the unix part of it.
- Made the rehash button work in Win32
- Fixed up some CHANMODES= support and added WALLCHOPS support
- Added keyboard shortcuts to the win32 config and about popup menus
- Possible fixed a buggie in +f
- Fixed a bug causing Found your hostname (cached) to be displayed 2 times
- Fixed RTLD_NOW problem with openbsd
- Removed SJOIN/SJOIN2 support in SJOIN
- Fixed a +f bug, found by NiQuiL
- Applied McSkaf's winlocal.patch, seems to work ok, fixed some problems
though in unix/win32 (cptr->fd can be -3. Should fix some READ ERRORS as
well.
- Some Open(aaaaaaaaaaargh)BSD patches, most stubborn compiler i've ever
seen. gmtime warning still there
- Had to revert McSkaf's winlocal.patch, caused too many crashes. I believe
there is a better way to do this ..
- Added a new StripColors heavily based on the one from xchat by Peter Zelezny
- Fixed doc error in s_conf.c
- Made IPv6 compile atleast, and work. Current problems:
- Made you able to bind to specific IPv6 IPs (we don't have FFFF::*
functionality yet)
- Made a crazed out IPv6 cloaking
- Made chghost/chgident able to do :'s
- Finished up IPv6 - Kudos to bball/NiQuiL (shells), perian/bunda/larne
(testing)
- Made listen format able to do:
listen [ip]:port, for IPv6 - listen [3fff:ff::1]:6667
- Fixed some compilation error with IPv6
- Fixed-fixed listen format troubles, larne++
- Possible fixed some +d bug(s)
- Added doc/unrealircd.conf.txt (by devdev), doc/services-install-guide
(zyrol, edited a bit by stskeeps)
- Added richedit 1.0 support so Credits,License, etc show the bold and underline formats in win32
code by codemastr with help from McSkaf (still needs work to support reverse and color)
- Added code so the rich edit _should_ work with any version of the richedit dll
- Changed all TStime() to use timeofday - CPU SAVE
- Removed userload.c & userload.h
- Added McSkaf's patch for the richedit to be able to support reverse codes
- Fixed the problems with 100% cpu, hopefully
- Fixed the 100% cpu problem, again, HTM is screwed now though?
- Got /stats O working
- Made the topic for a +s channel hidden from non-members (reported by Bagge)
- Removed ce_vardatanum (wasted CPU and memory)
- Added code to make the config parser try and stay alive when an error is encountered
- Added events code and converted some stuff to events
- Converted htmcalc/lcf to events
- Fixed /stats L bug found by larne
- Fixed the loop, made htmcalc more clean
- Applied McSkaf's winlocal patch II, only changed Debug() and removed
DEBUGMODE from config.h. Still cores, but we might be closer to a
solution. Broken code, do not use devel right now
- Fixed to winlocal by McSkaf
- More fixes
- Made /die not show admins IP (fixed by Stskeeps after his users nuked him..)
- Added McSkaf's mIRC color parse patch
- More winlocal fixes, and a +f bugfix
- Added HOOKTYPE_LOCAL_CONNECT (aClient *)
- Fixed DEBUGMODE under win32
- Fixed /trace problem with slots (idea from ircu2.10.01+winnt)
- Fixed listener problem, reported by McSkaf
- Minor Win32 bug fix
- Fixed problem with addto_fdlist(cptr->fd) caused by slotpatch
- Fixed minor socksfd problem in read_message
- Fixed identd problem
- Commited McSkaf's tab patch for win32
- Possible fixed fdlist problem with default_fdlist
- Added some numeric checking in m_server*
- Made possible speedup of fdlist checking in s_bsd.c
- Updated makefile.win32 for events.c
- Added McSkaf's rehash patch
- Made the Status Dialog update its values every 5 seconds
- Made slot arrangement be different.
- Merged McSkaf's hostname patch, debug patch, s_misc patch
- Made validate_configuration check for !conf_listen
- Made newconf state unknown directives (found by Madkiss)
- Small s_socks.c bugfix possible causing indetectable socks
- Fixed /whois problem, maybe introduced some others?
- Removed send_out_svsmode, not in use and broken too
- Made Config say Unreal3.2
- Made a popup menu for the tray icon to contain the same 'buttons' as the GUI does
- Made Unreal run correctly on OpenBSD (thanks to PFAK for the shell)
- Fixed with bug with ircd not -r'ing users on nick switch
- Fixed the /stats C = crash if it is a leaf bug found by BaTmAn
- Added a patch by McSkaf to make Unreal reload its tray icon if explorer restarts
- Fixed a win32 bug found by eternal
- Fixed yet another win32 bug (I think I should test before I commit ;P)
- Changed how hooks work, making them support voidfuncs
- Added src/modules/scan.c and src/modules/scan_dummy.c
- Made militime() just as accurate on win32 as on linux
- Made match() a little bit faster
- Fixed codemastr's broken millitime patch (sys/timeb.h)
- Added scan_socks.c, added and moved some stuff to
include/modules/scan.h (the dir too)
- Converted threads to IRC*Thread by codemastr.
- Updated the win32 thread code (maybe it will work now?)
- One last final change for the win32 thread stuff, but at least it works now :)
- Added hooks to allow you to add config directives
- HOOKTYPE_CONFIG_UNKNOWN sent after config parsing, look in conf_unknown for all the
blocks the config parser didn't understand
- HOOKTYPE_REHASH sent when a rehash is being done
Note: if you parse a block in conf_unknown make sure to del_ConfigItem it from the list
or Unreal will return an unknown directive error for it.
- Fixed problem with u_int32_t servicesstamps, with SVSMODE and SVS2MODE,
found by Andrew Church
- Unknown ban * {}, except * {}, deny * {}, allow * {} are accessible to modules
- Fixed some scan_socks problems - this needs a good hand with
- Fixed up scan_dummy.c
- Fixed /quote sethost : and /quote setident : exploit, found by ac1d, fixed
by Griever
- Allowed capturing of unknown set {} variables by modules
- Minor src/Makefile screwup fix
- Added some pthread checking support
- Fixed double dependicies bug.. stupid dlsym
- Added /version using numeric 105 for remove clients to show protoctl (idea from hybrid)
- Added HOOKTYPE_PRE_LOCAL_CONNECT to allow banning before connection. If the module parsing
this hook returns >0 the register_user exits
- Removed src/agent.c (empty file)
- Removed src/userload.obj from the win32 makefile
- Added link::options::quarantine suggested by DumbFish
- Made blackhole.so work
- Fixed a set_non_blocking bug
- Fixed a codemastr screwup in quarantine code
- Removed the old SOCKS check code.
- Fixed a quarantine bug
- Added NETWORK= numeric 005 token for mIRC 5.91
- Fixed some scan-socks and blackhole fuckups
- Added ./configure, autoconf generated configure script, (still need to update ./Config)
- Config fixes, settings.h and Makefile.dist are now dead. RIP.
- Fixed a typo in configure
- Rewrote Config, it is now perfectly suited for an autoconf interface rather than a standalone config
- Minor fixes to Config, a license, etc
- Made changes to Config (removed a few unnecessary loops)
- Made CRYPTOIRCD get cached in config.cache
- Fixed generation of certs, moved from configure.in to Config
- Fixed lack of -lssl
- Fixed the keywalk bug reported by BaTmAn (?)
- Fixed a few configure problems with sunos and amiga
- Fixed an OpenBSD bug reported by perian
- Moved config/ to autoconf/
- Some fixes to configure.in that seemly got deleted?
- Some more configure.in fixes, and made ./Config -q & -quick (do not ask
questions, just run with data in config.settings)
- Some more more configure.in fixes, regarding -export-dynamic, and buffer
pools, and some illegal if test $var = othervar
- Fixed a configure.in error with IRCDLOBS
- Taking some more Config changes
- Some more INET6 fixes
- Made Unreal use FSU Pthreads if the pthreads on the system will show multiple copies of Unreal in ps
- Fixed a /rehash bug dealing with echoing to stderr
- Added MAXCONNECTIONS to configure
- Added a little utility to make converting an m_* command to a module easier
- Moved m_svsmode and m_svs2mode to m_svsmode.so and updated modulize a bit
- Moved m_swhois and m_svsmotd to modules
- Fixed a bug where configure would pick both -ldescrypt and -lcrypt
- Fixed /stats to work fully with newconf
- Added mod_depend checking, see scan_socks.c for example
- Added in Griever's SJOIN fix
- Made mod_depend a bit cleaner to use
- Removed some remnants of umode +b
- Added configure check for glob.h
- Added the ability to use file globs in loadmodule and include (only if your system has glob)
- Added ./Config option to enable IPv6 (and made a configure check to make sure we can)
- Fixed autoconf/Makefile screwup caused by codemastr
- Fixed a problem with IPv6 always enabled (could you check this fix, code?)
- Fixed a bug allowing channek keys to have spaces
- Cleaned up some thread porting code
- Added a new versioning system to allow easy tracking of bugs
- Made glob() use GLOB_LIMIT on OpenBSD 2.9 to help prevent a DoS
- Fixed makeconf
- Changed the way modules work. We're now at MOD_VERSION 2
- Changed ALL MODULES to version 2
- Commited the +k fix to +L
- Made version.c depend on ../Changes
- Made the ircd call mod_unload when it shuts down
- Made use of the new module_load parameter in mod_init, and made commands.so use mod_load
- Fixed a module bug where loading == unloading
- Moved blackhole into scan.c and removed blackhole.c, and fixed some
blackhole bugs.
- Updated thread porting code to support more functions
- Fixed a pthread_join
- Rewrote updconf a bit, should work flawlessly now (?)
- Made a minor message change to ./Setup
- Fixed some minor mod_load troubles, and made it go a little more sensible
regarding retarded rehashes
- Added some thread debugging, and fixed a SVS2MODE bug
- Fixed a major scan bug caused by stskeeps(TM) lazy-coding
- Hmm .. minor s_bsd.c read_message fix
- Some /info stuff, updated docs, .CHANGES.NEW, .RELEASENOTES
- /htm fix by Griever
- Fixed a bunch of warnings reported by Red Hat 7
- Random cosmetic fixes
- Updated the stats help list for newconf
- Removed include/userload.h (not used)
- Removed a few missed userload.h references
- Minor cosmetic fixes, and SVSNLINE (ban realname).
SVSNLINE + reason_why_moo :realname mask - Add global ban realname
('_' is converted into spaces)
SVSNLINE - :realname mask - Remove global ban realname
SVSNLINE * - Wipes all global ban realname
- Fixed FIXME dcc_deny_wipe_services
- Fixed some IsToken / sendto_serv_butone screwups - Stskeeps(TM) coding
- Actually added m_svsnline.c
- Removed a bunch of unused coding
- Win32 fixes
- Made a /scan fix, and fixed some version numbers found by Morbid
- Updated m_template.c to use module version 2
- Removed a // comment in src/ircd.c
- Fixed a bunch of updconf bugs reported by DarkSypher
- Fixed an SVSFLINE bug when removing an unknown dccdeny
- Made win32 compile and work ..
- Made scan_socks & scan work under win32. Only bug is a \1 IP in /quote scan (?)
- Added set { blackhole "insideip:port" { "outsideip"; }; }; (useful if
being behind firewall)
- Fixed a little scan.so bug
- Fixed so we compile without symbols in win32 ..
- Fixed some rant stuff
- Fixed a documentation bug in unrealircd.conf.txt, made config_error
actually bitch when loop.ircd_booted
- Made badword fix found by eternal/Jsmj
- Changed pthread process check to pthread_join on proposal and idea by
codemastr
- Some configure.in fixes to pthread stuff
- Added possiblity to add parameters to configure in Config
- Minor SJOIN fix ..
- Fixed a ban {} bug where temporary bans were not cleared on rehash
- Fixed a validate_conf problem found by Janos
- Fixed some minor invalid numeric stuff
- Fixed problem with MAXCONNECTIONS when no parameters given in ./configure
- Fixed some possible points of confusion with hash.c regarding unsigned int
& signed int
- Fixed u_intXX_t problem
- Removed the redefining stuff in s_conf.c
- Documentation (example.conf from Osiris)
- Documentation bug fix
- Changed version to -beta1
- Various preparitions for beta1
- Commited the web server prototype made by Stskeeps, web design by WildChild
- Ripped out the old DF watch system, using bahamut's now
- Fixed some CHINESE_NICK stuff
- Fixed an sdesc bug reported by Alzirr
- Fixed a little gcc 3.0 bug with Unreal
- Fixed *** nick has quit (no Days come, days go), by defaulting to "Quit: "
- Fixed -nexus.nexusirc.org- *** Notice -- Trying to send [:Alzirr WALLOPS
:test bug, found by Alzirr
- Fixed struct IN_ADDR problems on some OS'es
- Fixed some more gcc 3.0 problems and made FSU pthreads a bit easier to install
- Fixed some updconf bugs reported by Joe
- Fixed a bug where 'fake direction' messages were sent to non-ops reported by Janos
- Made it so unreal searches harder for SSL headers and libraries
- Fixed possible bug with allowing :'s in +k/+L ..
- Added a credit
- Fixed a typo in /stats and a /chatops bug found by Cas
- Made oper {} (and vhost {}) allow you to enter an IP even if your host resolves by request of Cas
- Added set::options:show-klines and set::options::show-tkl to make /stats G and /stats K oper only
- Added a patch by Zogg to fix a socks scanner problem
- Fixed a /sapart bug found by SubZero
- Minor bugfix in scan_socks, + some comments
- Fixed some flaws in httpd, that made it break unmercifully
- Added correct uptime to web interface
- Patched in zogg's scan_socks patch, second edition
- Added in Ossie's example.conf v2
- Major changes to the win32 editor
- Fixed a bug in the new editor, hopefully now it works flawlessly (?)
- Fixed a bug in the win32 status dialog causing it to get screwed up, found by Auspice
- Fixed a scan_socks problem under win32
- Added a 3d border to the color selector in the win32 editor
- Fixed a win32 bug dealing with the new RTF parser
- Fixed a scan_socks problem under win32
- Fixed a MOTD rehash bug found by fryo
- Made CR compatilbity actually work, it autojoins now :)
- Started updating network files (remove all the obsolete ones)
- Fixed SQLINE problem
- Added doc/coding-guidelines
- Readded header info to network files which was lost in the update
- Updated a few network files that managed to slip by the update process
- Updated networks/networks.ndx and alphabetized it and added all network files submitted in 3.2 format
(didn't feel like converting right now ;P)
- Win32 code cleanup
- Made my_itoa use _itoa on win32
- Implimented SVSMODE #channel -b nick to remove all matching bans against a nick, idea from bahamut
- Added SVSMODE #channel -b to remove all bans
- Added SVSMODE #channel -qaohv to remove all users of that respective level, and made all the # SVSMODE
flags work in SVS2MODE
- Made a bunch of config errors non fatal
- Added 2 more network files (yea, I'm slow)
- Fixed SQLINE bug, FINALLY. (forgot to set type ..oops..)
- Added more network files...
- Fixed a bug affecting /oper and /vhost caused by IP checking
- Added wildcard support to include and loadmodule in win32
- Added SVSMODE # -e to work just like -b
- Fixed SVSMODE compile error
- Added tgf's patches for these bugs:
* if you dont have a rules file and do "rehash -motd" then the server
segfaults.
* setgid has to be called before setuid... cos if you change to a non-priv
uid first then you are not allowed to setgid!
- Added more network files
- Fixed a possible restart/die bug
- Fixed a bug where /die didn't do anything on win32 reported by Gilou
- Fixed a bug where /restart didn't send out notices on win32
- Made /restart call mod_unload for all modules
- Fixed a typo in the win32 makefile
- Rewrote Addit, hopefully it fixes the SJOIN problems?
- Fixed fence post marker overwrite in /vhost, found and fixed by tgf
- Made the Win32 version report the actual OS to opers in /version rather than just say 'Win32'
- Removed some obsolete code
- Added set::oper-only-stats which allows you to set any/all stats as oper only (* = all). Code is kind of
ugly since some flags are case insensitive and C == H but it works and seems pretty fast.
- Added set::anti-spam-quit-message-time idea from hybrid7
- Made the config smarter, for yes/no options yes/true/on/1 = yes no/false/off/0 = no
- Made Unreal be able to recover from a bunch of config errors
- Added stats flag r to the stats help list
- Fixed bindip problem with it not being made
- Made even more config errors recoverable
- Added more network files
- Fixed some typos in s_conf.c
- Fixed a win32 bug where /restart didn't remove the tray icon, reported by PHANTOm and Gilou
- Fixed Osiris's example.conf
- Fixed IPv6 bindip error found by Madkiss
- Added log::maxsize, when this size is reached the log is cleared and started over again
- Fixed a codemastr-on-crack /version bug, and fixed some IPv6 stuff in
scan*
- Fixed some more IPv6 stuff in httpd
- Implimented snomask (similar to IRCu) and moved several usermodes to it
- Added a config check to detect what order we should specify the SSL libraries in
- Fixed bug with SSL, detected properly and fixed by Chawmp
- Fixed an oper-only-stats bug
- Updated some documentation to prepar for release
- Docs prepare
- Fixed a major snomask bug found by narf
- Using bahamut /who now, this needs some testing.
- HCN fix
- /who fix .. removed nick matching functionality..
- Fixed a SNOMASK problem found by Arantis
- Fixed a umode2 bug that crashed the server
- Fixed vhost bug that forgot to add a \0 in the end of the string
- /who fix
- Another /who fix, what crashed it I assume - helped by narf to find this
- Fixed a bug were operflag eyes didn't work
- /who fixes regarding +I +H and crap
- Preparation for beta2
- Fixed sts on crack win32 code
- Fixed a win2000 bug causing Unreal to crash on the credits dialog, thanks to llthangel and WildChild for
helping fix the bug
- Fixed a win32 bug that can cause unexpected crashes while using the editor
- Some httpd stuff and a #define CHROOTDIR problem found by Zhadum
- Added scan_http, scans on 80, 3128, 8080 in a threaded manner
- Fixed a /gline crash bug found by DemOnBaBy
- Http proxy scanner cleanup
- Added SOCKS5 detection based on code in Epona
- Cleaned up /mode a bit
- Cleaned up command parsing a bit (faster)
- Added config directive alias for services/bot aliases
- Fixed some credits, recoded httpd (still in progress)
- Disabled #undef PROPER_CORE
- Added alias {} to doc/example.conf
- Fixed a bug in alias {} found by RaYmAn
- Fixed another alias {} bug
- Added Bahamut usermode +R (only accept private messages from +r users)
- Moved FAILOPER_WARN define to set::options::fail-oper-warn
- Fixed an alias {} bug found by James-Bond
- Moved SHOWCONNECTINFO define to set::options::show-connect-info
- Added support for nested comments in the configuration file (by chasm)
- Added chasm to /info
- Started work on usermode +V (WebTV mode)
- Some aClient cleanups to reduce memory usage
- Made a bunch of messages check +V and if +V use PRIVMSG instead of NOTICE
- Cleaned up NOSPOOF code a bit
- Cleaned up /oper (a lot)
- Fixed a bug where the /oper recode broke oper host masking (found by James-Bond)
- Fixed something that could cause a possible bug in /oper ?
- log::maxsize can now be entered in the format 1MB, 1MegaByte, 1MByte, etc (KB,MB,GB,TB are the only sizes
recognized)
- Fixed a bug where log::maxsize would say it started a new log file if the log file didn't exist
- Converted /mkpasswd, /away, and /svsnoop to modules
- Added the ability to add aliases like /identify (complex, so see example.conf for samples)
- Added a bug reporting tool (still alpha)
- Removed some win32 debug code that was left, reported by TheEggMan
- Win32 cleanup
- Made except socks become except scan, and made it actually WORK, and some
bugreport fixes
- HTTPd VFS fixes
- Modified updconf to reflect the except socks -> except scan change
- Fixed a typo in the win32 makefile
- Made the config a bit more sturdy (would have done more, but got boring :P)
- Moved /svso and /svsnick to modules
- Updated the win32 makefile
- modulize documentation, some web server fixes, preparation for uabr
- Some more VFS/PHTML fixes, it actually works now, thanks to butter
- Fixed a IPv6 bindip problem
- Removed bsd.c and made socket.c, moving signal stuff to ircd.c, possible
fixing a IPv6 bug
- Made Inet_si2p (sin to presensation), fixing the "*", bug, some debugging
fixes, fixed a lot of IPv6 bugs, hopefully - thanks to JK for borrowing
his box
- Fixed a #undef INET6 bug
- Made Link denied error a little more descriptive
- Various coding regardign bugreport
- Made port default to 6667 when options autoconnect in link {}
- Made some changes to allow Unreal to compile on win32
- Fixed a scan.c bug on win32
- Made the http scanner work on win32
- Fixed a bug where /userhost would report oper status regardless of +H
- Added some stuff that should fix the bug in Windows when including files in other directories
- Added aliases/ which contains config files for aliases to some popular IRC services (more will be added)
- Made makeconf load scan_http.so
- Fixed a /who bug, found by IXpfah
- Updated makefile.win32 for all the new modules
- Added in Fish's patches
- Added bitching when you lack needed IRC commands
- Removed REMGLINE
- Fixed a typo in the win32 makefile
- Really removed remgline (since sts didn't really do it)
- Made changes so the new modules compile on win32
- Added headers to all the new modules
- Fixed a typo in config.h
- Final changes to prepare for beta3
- Fixed some bugreport stuff
- Fixed codemastr-on-crack bug regarding oflag
- Fixed a win32 bug where the http scanner didn't get loaded
- Hopefully fixed the weird Z:line bug on win32?
- Fixed the Z:line bug (caused by stskeeps-on-crack coding) reported by Power2All
- Removed the tokens for /users, /summon, and /samode (these never come from a server so they don't need
it)
- Added a utility to auto create version.c for win32. It's the worst coding I've ever done, but it works :P
- Added a hell lot of DNS debugging code, and fixed the BIGENDIAN problem
with resolver. Thanks to dawn and Trash.net for shell on a sparc
- Added umodes.c, long val = get_umode('c');
- Added new umode system to win32 makefile
- Made umode_delete(flag, mode);
- made the umodestring variable smaller to conserve memory
- Added M_RESETIDLE to fix a /privmsg bug
- Fixed a bug with nickserv passwords found and fixed by Mathieu
- Fixed a DEBUGMODE problem with umodes.c
- Fixed a snomask bug found by Rob
- Made the missing commands error a little more.. tardfriendly
- Preperation for beta4
- Made some nameser.h changes to work win win32
- Fixed a typo in makenet found by 'Eternal Bliss'
- Updated module dependancies to allow a module to load the module containing the symbol
- Fixed a win32 bug where the editor would cut off text, reported by Inter
- Added make install to copy files for you when you install unreal
- Replaced killircd, ircd, and rehash with ./unreal start|stop|rehash
- Fixed a bug where the win32 help dialog links were plain text
- IPv6 fixes to Inet_si2p & Inet_si2pB
- IPv6 fixes to make dual ipv4/ipv6 work
- IPv6 fixes for IP_OPTIONS (disables under IPv6, i mean .. IRC multicast.
WTF?)
- Made ./unreal generated by configure to make sure it has the correct path of the exe
- Added autoconf check for setproctitle
- Added some setproctitle(.., me.name) for extra l33tness :P~
- Changed the setproctitle check to also check in -lutil (some OSes have it there)
- Added aliases/auspice.conf, and added a /register command to aliases/aliases.conf
- Fixed a win32 typo in the .rc
- VERSION M_SERVER fix by skold
- Fixed connecting with IPv6
- Ident requests now orgin with the listener that the user connected on
- More IPv6 fixes, DNS resolving actually works now too.. (crackhead IRCnet
coding)
- Webserver caching fix
- A little bug fix that prevented the G:line hostmask checker from checking ?
- Made the /kline hostmask checker work like the G:line checker, (it was too easy to K:line *@*)
- Fixed a bug where ./unreal rehash would kill the IRCd instead of rehashing :P
- Made ./unreal restart (to restart Unreal) and made the pid file location more accurate
- Added support for PS_STRINGS and pstat to change the progrma name (couldn't test since I don't have an OS
that uses them)
- Fixed a win32 bug where pasting text into the editor would not
show up in the correct font
- Added hscroll bars to the win32 editor (if needed)
- The win32 editor now allows you to edit files included via tld {} (probably needs testing)
- Made the win32 editor allow you to edit include "" files
- Recoded the win32 rehash button to be much better
- Recoded the way the editor menu works (hopefully this is much
better?)
- Added the ability to create new files via the win32 editor
- Fixed a win32 editor bug caused by me being drunk or something :P
- Fixed the last of the font and editor-cutting-text bugs (hopefully)
- Commented out three lines of code that were causing SSL to freeze on
/connect, TODO: code in new SSL error handling (Griever)
- Fixed password crash bug, found by \dev\NULL-Z-[Zap]
- Added new auth.c API and a lot of different crap .. will document later
- Made make install copy modules (oops)
- Added configure code to get the Auth crypt working
- Made Events do thread locking (so we can do funny things and kill small
furry animals in the attempt for the perfect scanning module) .. yes, this
is drunken coding
- Made delayed module unloading possible, make a int mod_delay() adding
an event, for e_unload_module_delayed
- Updated makefile.win32 for the Auth system
- Redid the event system somewhat
- Fixed a little event issue involving data types.
- Changed the name of the hook functions from add_Hook, del_Hook,
add_HookX, del_HookX to HookAdd, HookDel, HookAddEx, HookDelEx
so the names are more standard.
- Added host54.net to /credits
- Fixed a FSU Pthreads bug that caused it not to work on Slackware (help from Frank Mueller)
- Started some work on CIDR support (added some functions from hybrid7)
- Added some functions for generic linked list modifications
- Slightly improved +x v2 algo, win32 releases should be compiled with
this improvement OFF, at least until 3.2 final. COMPAT_BETA4_KEYS makes
it compat w/ beta4 and pre.
- Made checking for redundant bans both ways an ifdef, off by default.
Note that undefing this might SLIGHTLY break compat w/ beta4 and pre
- Added "griever would like to thank" section to /credits
- Auth/SSL fixes, list.c fix, code: could you add auth.c and ssl.c to
makefile.win32?. If SSL is enabled, we can use MD5, SHA1, and crypt()
even on win32
- Added ssl.c and cidr.c to the win32 makefile
- Added ssl-pubkey auth method (parameter = pem file for public key)
- Converted tkl, events, commands, hooks, and all config structs to ListStruct
- can_gkline/t and can_gzline/Z flags added, docs not modded yet
- Added snomask +n (nick change notices) I personally hate it, but people wanted it...
- Added oper::snomask to allow you to specify a default snomask for an oper
- Added snomask +q (Qline notice), triggered when a nick is being denied from a user due to
a Q:line.
- Added HOOKTYPE_SERVER_CONNECT and HOOKTYPE_SERVER_QUIT for when servers connect and
disconnect respectively
- Added module v3 code. Needs testing, and NO MODULES DOES NOT COMPILE
- Fixed a win32 movude v3 bug
- Small v3 fix with no dependency problem
- Fixed some more module v3 problems and upgrade all modules
- Fixed a ton of module v3 problems (cause: Stskeeps is an idiot)
- Yes, even more module v3 bugfixes
- Module v3 bugfixes. cause: codemastr lack find n replace skill
- Moved the mkpasswd program into ./unreal mkpasswd <method> <password>
- Recoded m_oper almost completely, note that the fceT flags are ignored
now (you still get them, they just dont do shit). Remove them for me
please, as well as the +T usermode. I haven't tested this completely but
I see nowhere a bug could happen.
- Removed umode +T (useless) and the fue oflags since
oper::snomask supercedes them.
- Fixed another module v3 bug caused by Stskeeps drunkeness
- Started adding HP-UX module support (Not enough added where it actually works yet)
- Added some more HP-UX code
- Made "Module already loaded" a non fatal error (funny msg on rehash)
- Fixed typical codemastr "Let's delete this from a list we haven't even
added it to yet *giggles and twirls around*" bug, do to with config_set_unknown
- Fixed events bug, added recoded scan module, got a lot of stuff to fix so
far. Problems, unloading, (delay), tkl doesn't always sweep it all,
- Some scan unloading stuff
-1751
View File
File diff suppressed because it is too large Load Diff
-482
View File
@@ -1,482 +0,0 @@
#!/bin/sh
#
# Config script for UnrealIRCd
# (C) 2001 The UnrealIRCd Team
#
# This configure script is free software; the UnrealIRCd Team gives
# unlimited permission to copy, distribute and modify as long as the
# copyright headers stay intact
#
#
# Rewritten completely to be an interface to autoconf by codemastr
# This was inspired by the config by Michael Graff (explorer@flame.org)
# but was written from scratch
# In order to be faster than the old Config, this assumes that all information
# in the cache file is valid and therefore doesn't check it, so if you messed with
# default values thats your problem :P
RUN_CONFIGURE () {
ARG=""
if [ "$NOSPOOF" = "1" ] ; then
ARG="$ARG--enable-nospoof "
fi
if [ -n "$HUB" ] ; then
ARG="$ARG--enable-hub "
fi
if [ "$CRYPTOIRCD" = "1" ] ; then
ARG="$ARG--enable-ssl "
fi
if [ "$INET6" = "1" ] ; then
ARG="$ARG--enable-inet6 "
fi
ARG="$ARG--with-listen=$LISTEN_SIZE "
ARG="$ARG--with-dpath=$DPATH "
ARG="$ARG--with-spath=$SPATH "
ARG="$ARG--with-nick-history=$NICKNAMEHISTORYLENGTH "
ARG="$ARG--with-sendq=$MAXSENDQLENGTH "
ARG="$ARG--with-bufferpool=$BUFFERPOOL "
ARG="$ARG--with-hostname=$DOMAINNAME "
ARG="$ARG--with-permissions=$DEFPERM "
ARG="$ARG--with-fd-setsize=$MAXCONNECTIONS "
ARG="$ARG--enable-dynamic-linking "
ARG="$ARG $EXTRAPARA "
CONF="./configure $ARG"
echo $CONF
$CONF
if [ "$CRYPTOIRCD" = "1" ] ; then
if [ ! -f server.req.pem ]; then
export OPENSSLPATH
make pem
cat .SICI
read cc
else
echo "SSL certificate already existing, no need to regenerate"
fi
fi
}
c=""
n=""
NOSPOOF=""
DPATH="`pwd`"
SPATH="`pwd`/src/ircd"
HUB="1"
DOMAINNAME=`hostname`
DEFPERM="0600"
CRYPTOIRCD=""
LISTEN_SIZE="5"
NICKNAMEHISTORYLENGTH="2000"
MAXSENDQLENGTH="3000000"
BUFFERPOOL="9"
MAXCONNECTIONS="1024"
INET6=""
EXTRAPARA=""
if [ "`eval echo -n 'a'`" = "-n a" ] ; then
c="\c"
else
n="-n"
fi
#parse arguments
NOCACHE=""
NOINTRO=""
if [ "$1" = "--help" ] ; then
echo "Config utility for UnrealIRCd"
echo "-----------------------------"
echo "Syntax: ./Config [options]"
echo "-nocache Ignore settings saved in config.settings"
echo "-nointro Skip intro (release notes, etc)"
echo "-quick Skip questions, go straight to configure"
echo "-C Clean ./configure cache"
exit 0
fi
if [ "$1" = "-nocache" -o "$2" = "-nocache" ] ; then
NOCACHE="1"
fi
if [ "$1" = "-nointro" -o "$2" = "-nointro" ] ; then
NOINTRO="1"
fi
if [ -f "config.settings" -a -z "$NOCACHE" ] ; then
. config.settings
fi
if [ "$1" = "-C" -o "$2" = "-C" ] ; then
rm -f config.cache
fi
if [ "$1" = "-quick" -o "$1" = "-q" -o "$2" = "-quick" ] ; then
echo "running quick config"
RUN_CONFIGURE
exit 0
fi
clear
if [ -f ".CHANGES.NEW" -a -z "$NOINTRO" ] ; then
more .CHANGES.NEW
echo $n "[Enter to continue]"
read cc
clear
fi
if [ -f ".RELEASE.NOTES" -a -z "$NOINTRO" ] ; then
more .RELEASE.NOTES
echo $n "[Enter to continue]"
read cc
clear
fi
TEST=""
while [ -z "$TEST" ] ; do
if [ "$NOSPOOF" = "1" ] ; then
TEST="Yes"
else
TEST="No"
fi
echo ""
echo "Many older operating systems have an insecure TCP/IP stack"
echo "which may be vulnerable to IP spoofing attacks, if you run"
echo "an operating system that is vulnerable to such attacks"
echo "enable this option. If you aren't sure if your OS is vulnerable"
echo "you should still enable it."
echo ""
echo "Do you have an insecure operating system and therefore want to"
echo "use the server anti-spoof protection?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Yy]*)
NOSPOOF="1"
;;
[Nn]*)
NOSPOOF=""
;;
*)
echo ""
echo "You must enter either Yes or No"
TEST=""
;;
esac
done
TEST="$DPATH"
echo ""
echo "What directory are all the server configuration files in?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
DPATH=$TEST
else
DPATH=$cc
fi
TEST="$SPATH"
echo ""
echo "What is the path to the ircd binary including the name of the binary?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
SPATH=$TEST
else
SPATH=$cc
fi
TEST=""
while [ -z "$TEST" ] ; do
if [ "$HUB" = "1" ] ; then
TEST="Hub"
else
TEST="Leaf"
fi
echo ""
echo "Would you like to compile as a hub or as a leaf?"
echo "Type Hub to select hub and Leaf to select leaf."
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Hh]*)
HUB="1"
;;
[Ll]*)
HUB=""
;;
*)
echo ""
echo "You must enter either Hub or Leaf"
TEST=""
;;
esac
done
TEST="$DOMAINNAME"
echo ""
echo "What is the hostname of the server running your IRCd?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
DOMAINNAME=$TEST
else
DOMAINNAME=$cc
fi
TEST=""
while [ -z "$TEST" ] ; do
TEST="$DEFPERM"
echo ""
echo "What should the default permissions for your configuration files be? (Set this to 0 to disable)"
echo "It is strongly recommended that you use 0600 to prevent unwanted reading of the file"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
DEFPERM=$TEST
break
fi
case "$cc" in
[0-9]*)
DEFPERM="$cc"
;;
*)
echo ""
echo "You must enter a number"
TEST=""
;;
esac
done
TEST=""
while [ -z "$TEST" ] ; do
if [ "$CRYPTOIRCD" = "1" ] ; then
TEST="Yes"
else
TEST="No"
fi
echo ""
echo "Do you want to support SSL (Secure Sockets Layer) connections?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Yy]*)
CRYPTOIRCD="1"
;;
[Nn]*)
CRYPTOIRCD=""
;;
*)
echo ""
echo "You must enter either Yes or No"
TEST=""
;;
esac
done
TEST=""
while [ -z "$TEST" ] ; do
if [ "$INET6" = "1" ] ; then
TEST="Yes"
else
TEST="No"
fi
echo ""
echo "Do you want to enable IPv6 support?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
cc=$TEST
fi
case "$cc" in
[Yy]*)
INET6="1"
;;
[Nn]*)
INET6=""
;;
*)
echo ""
echo "You must enter either Yes or No"
TEST=""
;;
esac
done
TEST=""
while [ -z "$TEST" ] ; do
TEST="$LISTEN_SIZE"
echo ""
echo "What listen() backlog value do you wish to use? Some older servers"
echo "have problems with more than 5, others work fine with many more."
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
LISTEN_SIZE=$TEST
break
fi
case "$cc" in
[1-9]*)
LISTEN_SIZE="$cc"
;;
*)
echo ""
echo "You must enter a number"
TEST=""
;;
esac
done
TEST=""
while [ -z "$TEST" ] ; do
TEST="$NICKNAMEHISTORYLENGTH"
echo ""
echo "How far back do you want to keep the nickname history?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
NICKNAMEHISTORYLENGTH=$TEST
break
fi
case "$cc" in
[1-9]*)
NICKNAMEHISTORYLENGTH="$cc"
;;
*)
echo ""
echo "You must enter a number"
TEST=""
;;
esac
done
TEST=""
while [ -z "$TEST" ] ; do
TEST="$MAXSENDQLENGTH"
echo ""
echo "What is the maximum sendq length you wish to have?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
MAXSENDQLENGTH=$TEST
break
fi
case "$cc" in
[1-9][0-9][0-9][0-9]*)
MAXSENDQLENGTH="$cc"
;;
*)
echo ""
echo "You must enter a number greater than or equal to 1000"
TEST=""
;;
esac
done
TEST=""
while [ -z "$TEST" ] ; do
TEST="$BUFFERPOOL"
echo ""
echo "How many buffer pools would you like?"
echo "This number will be multiplied by MAXSENDQLENGTH."
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
BUFFERPOOL=$TEST
break
fi
case "$cc" in
[1-9]*)
BUFFERPOOL="$cc"
;;
*)
echo ""
echo "You must enter a number"
TEST=""
;;
esac
done
echo ""
TEST=""
while [ -z "$TEST" ] ; do
TEST="$MAXCONNECTIONS"
echo ""
echo "How many file descriptors (or sockets) can the IRCd use?"
echo $n "[$TEST] -> $c"
read cc
if [ -z "$cc" ] ; then
MAXCONNECTIONS=$TEST
break
fi
case "$cc" in
[1-9][0-9][0-9]*)
MAXCONNECTIONS="$cc"
;;
*)
echo ""
echo "You must to enter a number greater than or equal to 100"
TEST=""
;;
esac
done
echo ""
echo "Would you like any more parameters to configure?"
echo "Write them here:"
echo $n "[]-> $c"
read EXTRAPARA
rm -f config.settings
cat > config.settings << __EOF__
#
NOSPOOF="$NOSPOOF"
DPATH="$DPATH"
SPATH="$SPATH"
CRYPT_OPER_PASSWORD="$CRYPT_OPER_PASSWORD"
CRYPT_LINK_PASSWORD="$CRYPT_LINK_PASSWORD"
CRYPT_ILINE_PASSWORD="$CRYPT_ILINE_PASSWORD"
CRYPT_XLINE_PASSWORD="$CRYPT_XLINE_PASSWORD"
INET6="$INET6"
LISTEN_SIZE="$LISTEN_SIZE"
MAXSENDQLENGTH="$MAXSENDQLENGTH"
BUFFERPOOL="$BUFFERPOOL"
MAXCONNECTIONS="$MAXCONNECTIONS"
NICKNAMEHISTORYLENGTH="$NICKNAMEHISTORYLENGTH"
HUB="$HUB"
DOMAINNAME="$DOMAINNAME"
DEFPERM="$DEFPERM"
CRYPTOIRCD="$CRYPTOIRCD"
EXTRAPARA="$EXTRAPARA"
__EOF__
RUN_CONFIGURE
cat << __EOF__
_______________________________________________________________________
| |
| UnrealIRCd Compile-Time Config |
|_______________________________________________________________________|
|_______________________________________________________________________|
| |
| Now all you have to do is type 'make' and let it compile. When that's |
| done, you will receive other instructions on what to do next. |
| |
|_______________________________________________________________________|
|_______________________________________________________________________|
| - The UnrealIRCd Team - |
| |
| * Stskeeps stskeeps@unrealircd.com |
| * codemastr codemastr@unrealircd.com |
|_______________________________________________________________________|
__EOF__
-19
View File
@@ -1,19 +0,0 @@
Send donations to:
------------------
UnrealIRCd Project
C/O Carsten Munk
P.O.Box 52
7400 Herning
Denmark
(if you want to that is .. it will just make us a little more able to code
even more on this project. You will get in /credits if you do so).
Payment preferred (if money, is western union) - contact me on email
regarding other methods
-- Stskeeps
[ $Id$ ]
-99
View File
@@ -1,99 +0,0 @@
###############################################################################
#### Unreal IRC Unix Daemon Installation Guide ####
#### UnrealIRCD ver 3.1.1 ####
#### unreal-dev@lists.sourceforge.com ####
#### http://www.unrealircd.com/ ####
###############################################################################
#### Unpackaging the IRCD ####
#### ####
#### 1) gzip -d Unreal3.1.1.tar.gz ####
#### ####
#### 2) tar xvf Unreal3.1.1.tar ####
#### ####
#### 3) cd Unreal3.1.1/ ####
###############################################################################
#### Compiling the IRCD ####
#### ####
#### 1) Supported Operating Systems ####
#### ####
#### OS and Version Compiler and Version Comments ####
#### --------------- ------------------------ ------------------------ ####
#### NetBSD 1.2B gcc 2.7.2 ####
#### FreeBSD 2.1.0 gcc 2.6.3 Don't 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 ####
#### PUX 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 ####
#### ####
#### 2) DO NOT edit the MakeFile or any of the files to configure your ####
#### IRCd. The newest releases of Unreal only require you to run: ####
#### ####
#### ./Config ####
#### ####
#### 2a) Windows users: please read WIN32 ####
#### ####
#### 3) When in ./Config put in the best answers to your knowledge. ####
#### This is all pretty self explanatory. We suggest, to advoid ####
#### problems later on, put the DPATH and SPATH as the default. ####
#### (When it asks where the config files and binarys will be). ####
#### Also, when it asks for max file connections, the default is ####
#### 1024, but above it you will see what your true limit is. ####
#### Please put the maxfd number in or else your IRCD will not ####
#### start at all and you will have to re-compile. ####
#### ####
#### 4) make ####
#### This will compile your server based on you settings chosen in ####
#### ./Config ####
#### ####
#### 4a) Hopefully, the server will compile without incident. If it ####
#### does not, and you are not able to determine the error, please ####
#### email supporters@lists.unrealircd.org and hopefully someone ####
#### will be able to help you. Another suggestion is going on IRC ####
#### /server irc.ircsystems.net #UnrealIRCD ####
#### ####
#### 4b) make install - IS NOT NEEDED ####
#### ####
###############################################################################
#### Configuring the Server ####
#### ####
#### 1) ./makeconf ####
#### This executable has been created to help with your ircd.conf ####
#### creation process. It walks you through the steps and makes the ####
#### file for you. Note: If you want to edit your ircd.conf you ####
#### should only need to: edit ircd.conf. If you ./makeconf again ####
#### it will delete the old ircd.conf and re-write a new one. ####
#### ####
###############################################################################
#### Starting the Server ####
#### ####
#### 1) Make sure you're in the top level Unreal3.1.1 directory.. ####
#### ####
#### 2) ./ircd ####
#### ####
#### 3) If you get the error screen, please go through and check each ####
#### point presented, if you have no luck, go on IRC ####
#### /server irc.ircsystems.net #UnrealIRCD ####
#### ####
#### 4) /server yourserverip or domainname ####
#### ####
###############################################################################
#### Updating the IRCD ####
#### ####
#### 1) ./update ####
#### Newer releases of Unreal allow the use of ./update which logs ####
#### into the Unreal server and allows you to pick a new version to ####
#### to upgrade to. ####
#### ####
###############################################################################
-340
View File
@@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
-240
View File
@@ -1,240 +0,0 @@
#/************************************************************************
#* IRC - Internet Relay Chat, Makefile
#* Copyright (C) 1990, Jarkko Oikarinen
#*
#* This program is free software; you can redistribute it and/or modify
#* it under the terms of the GNU General Public License as published by
#* the Free Software Foundation; either version 1, or (at your option)
#* any later version.
#*
#* This program is distributed in the hope that it will be useful,
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#* GNU General Public License for more details.
#*
#* You should have received a copy of the GNU General Public License
#* along with this program; if not, write to the Free Software
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#*
#* $Id$
#*/
CC=@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
# IRCDLIBS.
#
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
# IRCDLIBS blank. If that fails, try recomendations below.
#
#XCFLAGS=-O -g -export-dynamic -pthread -DSCAN_API=1
IRCDLIBS=@IRCDLIBS@
CRYPTOLIB=@CRYPTOLIB@
OPENSSLINCLUDES=
XCFLAGS=@CFLAGS@
#
# use the following on MIPS:
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
# For Irix 4.x (SGI), use the following:
#CFLAGS= -g -cckr -I$(INCLUDEDIR)
#
# on NEXT use:
#CFLAGS=-bsd -I$(INCLUDEDIR)
#on NeXT other than 2.0:
#IRCDLIBS=-lsys_s
#
# AIX 370 flags
#CFLAGS=-D_BSD -Hxa -I$(INCLUDEDIR)
#IRCDLIBS=-lbsd
#
# Dynix/ptx V2.0.x
#CFLAGS= -I$(INCLUDEDIR) -O -Xo
#IRCDLIBS= -lsocket -linet -lnsl -lseq
#
# Dynix/ptx V1.x.x
#IRCDLIBS= -lsocket -linet -lnsl -lseq
#
#use the following on SUN OS without nameserver libraries inside libc
#IRCDLIBS=-lresolv
#
# Solaris 2
#IRCDLIBS=-lsocket -lnsl -lresolv -L/usr/ucblib -R/usr/ucblib -lgen
#
# ESIX
#CFLAGS=-O -I$(INCLUDEDIR) -I/usr/ucbinclude
#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
#
# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
# -Bstatic here.
#
#LDFLAGS=-Bstatic
#
#Dell SVR4
#CC=gcc
#CFLAGS= -I$(INCLUDEDIR) -O2
#IRCDLIBS=-lsocket -lnsl -lucb
# [CHANGEME]
# IRCDMODE is the mode you want the binary to be.
# The 4 at the front is important (allows for setuidness)
#
# WARNING: if you are making ircd SUID or SGID, check config.h to make sure
# you are not defining CMDLINE_CONFIG
IRCDMODE = 711
# [CHANGEME]
# IRCDDIR must be the same as DPATH in include/config.h
#
IRCDDIR=@IRCDDIR@
#
# If your system is lacking regex, uncomment this line
#
#REGEX=../extras/regex/regex.o
REGEX=@REGEX@
# [CHANGEME]
# If you get a link-time error dealing with strtoul, comment out
# this line.
# STRTOUL= strtoul.o
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@
# Where is your openssl binary
OPENSSLPATH=@OPENSSLPATH@
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(FD_SETSIZE)
SHELL=/bin/sh
SUBDIRS=src
BINDIR=@BINDIR@
INSTALL=@INSTALL@
RM=@RM@
CP=@CP@
TOUCH=@TOUCH@
RES=
all: build
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
'CRYPTOLIB=${CRYPTOLIB}' 'REGEX=${REGEX}' \
'CRYPTOINCLUDES=${CRYPTOINCLUDES}'
server:
build:
-@if [ ! -f include/setup.h ] ; then \
echo "Hmm...doesn't look like you've run Config..."; \
echo "Doing so now."; \
sh Config; \
fi
@for i in $(SUBDIRS); do \
echo "Building $$i";\
( cd $$i; ${MAKE} ${MAKEARGS} build; ) \
done
@echo ' __________________________________________________ '
@echo '| Compile is now complete. Now you have to go do |'
@echo '| The load-time configuration - try go read the |'
@echo '| file "dynconf" using your favourite viewer or |'
@echo '| editor. The file will contain instructions on how|'
@echo '| to do the dynamic configuration :) |'
@echo '| You might want to see include/config.h to adjust |'
@echo '| some settings |'
@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 |'
@echo '| read the Unreal.nfo file. |'
@echo '|__________________________________________________|'
clean:
$(RM) -f *~ \#* core *.orig include/*.orig
@for i in $(SUBDIRS); do \
echo "Cleaning $$i";\
( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
done
-@if [ -f include/setup.h ] ; then \
echo "To really restart installation, remove include/setup.h" ; \
fi
cleandir: clean
rm -rf include/networks.h include/setup.h Makefile Settings
makex:
chmod +x Config newnet ircd ircdcron/ircdchk killircd
chmod +x makeconf rehash ircdreg
fromdos: cleandir
$(FROMDOS) -dv *
$(FROMDOS) -dv src/*
$(FROMDOS) -dv include/*
$(FROMDOS) -dv doc/*
$(FROMDOS) -dv crypt/*
$(FROMDOS) -dv ircdcron/*
makedist: makex
echo "Stamping.."
stamp: makedist
echo "/* Auto created release stamping */" > include/stamp.h
echo "#define RELEASEID2 \"`date +%s`\"" >> include/stamp.h
echo "#define RELEASESTUFF \"`hostname`\"" >> include/stamp.h
echo "" >> include/stamp.h
depend:
@for i in $(SUBDIRS); do \
echo "Making dependencies in $$i";\
( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
done
install: all
$(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/conf.doc doc/faq doc/tao.of.irc doc/coding-guidelines doc/example.conf doc/features.txt doc/unrealircd.conf.txt doc/Crule.readme doc/commands.txt doc/example.settings doc/services-install-guide doc/unrealircd.doc $(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 LICENSE Donation $(IRCDDIR)
$(INSTALL) -m 0700 bugreport makeconf 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!."
-23
View File
@@ -1,23 +0,0 @@
Unreal IRCD Win32 Version
-=-=-=-=-=-=-=-=-=-=-=-=-
Ok, in order to save time, and my nerves i am writing this short readme, and eventually an FAQ (after people ask questions) =)
This is information on how to run the win32 version, it does not say, and WILL not say how to use an ircd, as that is sufficiently docuimented in the docs !!!!
you will NEED to modify/create an ircd.conf, follow the documentation for that.
Right, thats almost it( that i can think of), but what happens if the server Crashes ???
----------------------------------------------------------------------------------------
ok i Have now coded the first bit of usefull (for me) code that dumps the stack to a dialog box, WHAT EVER YOU DO you must do the following:
1. Copy and paste EVERYTHING in that dialog box, and send it to me in an e-mail
2. Include in that e-mail EVERYTHING that happened in the lead up to the crash
i hope thats SIMPLE to follow, but it will help me soo much !!!!!
DrBin (Dave)
drbin@tspre.org
-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$ ]
-35
View File
@@ -1,35 +0,0 @@
#!/bin/sh
clear
echo "Starting up UnrealIRCd Setup"
echo ""
echo "Press enter to proceed to setup..."
read cc
more -d Unreal.nfo
echo "Press enter to proceed to FAQ..."
read cc
more -d doc/faq
echo "Press enter to proceed to configuration..."
read cc
if [ "$1" != "-noconfig" ] ; then
./Config
fi
echo "Press enter to proceed to compiling..."
read cc
make
echo "Press enter to proceed to unrealircd.conf making..."
read cc
./makeconf
echo "Press enter to proceed to network configuration..."
read cc
clear
echo "Do you want to use one of these network files, or make your own?"
cd networks
ls *.network
echo "[Type "no" if you want to make your own]"
read cc
if [ "$cc" == "no" ] ; then
./makenet
fi
echo "Now just edit your unrealircd.conf and you should be ready to run"
echo "UnrealIRCd with ./ircd"
-77
View File
@@ -1,77 +0,0 @@
===============================================
= UnrealIRCd v3.2-Selene (beta1) =
===============================================
Was brought to you by:
The core team:
==============
* Stskeeps <stskeeps@tspre.org>
* codemastr <codemastr@unrealircd.com>
Coders team:
============
* McSkaf <mcskaf@unrealircd.org>
* Griever <griever@unrealircd.org>
* Zogg <zogg@unrealircd.org>
* NiQuiL <niquil@unrealircd.org>
* assyrian <assyrian@unrealircd.org>
In former versions:
* DrBin <drbin@unrealircd.com>
* llthangel <llthangel@unrealircd.org>
Precenses on the Internet:
* http://www.unrealircd.com
CVS:
To get anonymous access: (read only)
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
press enter when asked for password
and to get latest stable:
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
latest beta:
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r beta -d Unreal-beta unreal"
* To get support
================
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
[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: supporters@lists.unrealircd.org (for support)
* READ doc/faq BEFORE ASKING QUESTIONS!
* Want to discuss, chat, etc?
=============================
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
* 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
coders@lists.unrealircd.org , along with OS type,
what "uname -a" says, any clues what it is, if you did anything etc
etc. Please keep the core dump files if we ask you to mail us them
if needed
* If you experince any wierdnesses (that doesnt crash the server)
please mail coders@lists.unrealircd.org with any clues on what
you did, what you experinced etc.
* Got a suggestion?
===================
* Mail it to coders@lists.unrealircd.org :) or catch one from
the Unreal team online on IRC:)
-37
View File
@@ -1,37 +0,0 @@
/* Standard Aliases */
alias identify {
format "^#" {
alias chanserv;
parameters "IDENTIFY %1-";
};
format "^[^#]" {
alias nickserv;
parameters "IDENTIFY %1-";
};
type command;
};
alias services {
format "^#" {
alias chanserv;
parameters "%1-";
};
format "^[^#]" {
alias nickserv;
parameters "%1-";
};
type command;
};
alias register {
format "^#" {
alias chanserv;
parameters "REGISTER %1-";
};
format "^[^#]" {
alias nickserv;
parameters "REGISTER %1-";
};
type command;
};
-16
View File
@@ -1,16 +0,0 @@
/* 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";
-16
View File
@@ -1,16 +0,0 @@
/* 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
@@ -1,14 +0,0 @@
/* 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
@@ -1,4 +0,0 @@
/* Generic StatServ Aliases */
alias statserv { type stats; };
alias ss { nick statserv; type stats; };
-17
View File
@@ -1,17 +0,0 @@
/* 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
@@ -1,6 +0,0 @@
/* OperStats Aliases */
operserv { type stats; };
os { nick operserv; type stats; };
statserv { type stats; };
ss { nick statserv; type stats; };
-3
View File
@@ -1,3 +0,0 @@
all:
@autoconf
cp configure ..
-342
View File
@@ -1,342 +0,0 @@
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])
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
dnl
dnl This macro figures out how to build C programs using POSIX
dnl threads. It sets the PTHREAD_LIBS output variable to the threads
dnl library and linker flags, and the PTHREAD_CFLAGS output variable
dnl to any special C compiler flags that are needed. (The user can also
dnl force certain compiler flags/libs to be tested by setting these
dnl environment variables.)
dnl
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
dnl multi-threaded programs (defaults to the value of CC otherwise).
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
dnl
dnl If you are only building threads programs, you may wish to
dnl use these variables in your default LIBS, CFLAGS, and CC:
dnl
dnl LIBS="$PTHREAD_LIBS $LIBS"
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
dnl CC="$PTHREAD_CC"
dnl
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE
dnl to that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
dnl
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
dnl to run it if it is not found. If ACTION-IF-FOUND is not specified,
dnl the default action will define HAVE_PTHREAD.
dnl
dnl Please let the authors know if this macro fails on any platform,
dnl or if you have any other suggestions or comments. This macro was
dnl based on work by SGJ on autoconf scripts for FFTW (www.fftw.org)
dnl (with help from M. Frigo), as well as ac_pthread and hb_pthread
dnl macros posted by AFC to the autoconf macro repository. We are also
dnl grateful for the helpful feedback of numerous users.
dnl
dnl @version $Id$
dnl @author Steven G. Johnson <stevenj@alum.mit.edu> and Alejandro Forero Cuervo <bachue@bachue.com>
dnl This has been recoded a lot. It now fully supports caching and is a bit faster
AC_DEFUN([ACX_PTHREAD], [
AC_CANONICAL_HOST
acx_pthread_ok=no
# First, check if the POSIX threads header, pthread.h, is available.
# If it isn't, don't bother looking for the threads libraries.
AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
# We must check for the threads library under a number of different
# names; the ordering is very important because some systems
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
# libraries is broken (non-POSIX).
# Create a list of thread flags to try. Items starting with a "-" are
# C compiler flags, and other items are library names, except for "none"
# which indicates that we try without any flags at all.
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
# pthreads: AIX (must check this before -lpthread)
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
# -pthreads: Solaris/gcc
# -mthreads: Mingw32/gcc, Lynx/gcc
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
# doesn't hurt to check since this sometimes defines pthreads too;
# also defines -D_REENTRANT)
# pthread: Linux, etcetera
# --thread-safe: KAI C++
case "${host_cpu}-${host_os}" in
*solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
# tests will erroneously succeed. (We need to link with -pthread or
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
# a function called by this macro, so we could check for that, but
# who knows whether they'll stub that too in a future libc.) So,
# we'll just look for -pthreads and -lpthread first:
acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
;;
esac
result=none
if test "$acx_pthread_ok" = "no"; then
AC_CACHE_CHECK(what flags pthreads needs,ac_cv_pthreadflag,[
for flag in $acx_pthread_flags; do
case $flag in
none)
result="none"
;;
-*)
PTHREAD_CFLAGS="$flag"
result="$flag"
;;
*)
PTHREAD_LIBS="-l$flag"
result="-l$flag"
;;
esac
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
# need a special flag -Kthread to make this header compile.)
# We check for pthread_join because it is in -lpthread on IRIX
# while pthread_create is in libc. We check for pthread_attr_init
# due to DEC craziness with -lpthreads. We check for
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
AC_TRY_LINK([#include <pthread.h>],
[pthread_t th; pthread_join(th, 0);
pthread_attr_init(0); pthread_cleanup_push(0, 0);
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
[acx_pthread_ok=yes])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
if test "$acx_pthread_ok" = "yes"; then
dnl AC_MSG_RESULT($result)
ac_cv_pthreadflag=$result
break;
fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
done
fi
])
case $ac_cv_pthreadflag in
none)
;;
-l*)
PTHREAD_LIBS=$ac_cv_pthreadflag
;;
*)
PTHREAD_CFLAGS=$ac_cv_pthreadflag
;;
esac
# Various other checks:
if test "x$ac_cv_pthreadflag"!=x; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
# Detect AIX lossage: threads are created detached by default
# and the JOINABLE attribute has a nonstandard name (UNDETACHED).
AC_CACHE_CHECK([for joinable pthread attribute],ac_cv_pthreadjoin,[
AC_TRY_LINK([#include <pthread.h>],
[int attr=PTHREAD_CREATE_JOINABLE;],
ac_cv_pthreadjoin=PTHREAD_CREATE_JOINABLE, ac_cv_pthreadjoin=unknown)
if test "$ac_cv_pthreadjoin" = "unknown"; then
AC_TRY_LINK([#include <pthread.h>],
[int attr=PTHREAD_CREATE_UNDETACHED;],
ac_cv_pthreadjoin=PTHREAD_CREATE_UNDETACHED, ac_cv_pthreadjoin=unknown)
fi
])
if test "$ac_cv_pthreadjoin" != "PTHREAD_CREATE_JOINABLE"; then
AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ac_cv_pthreadjoin,
[Define to the necessary symbol if this constant
uses a non-standard name on your system.])
fi
if test "$ac_cv_pthreadjoin" = "unknown"; then
AC_MSG_WARN([we do not know how to create joinable pthreads])
fi
AC_CACHE_CHECK([if more special flags are required for pthreads],ac_cv_pthreadspecial,[
ac_cv_pthreadspecial=no
case "${host_cpu}-${host_os}" in
*-aix* | *-freebsd*) ac_cv_pthreadspecial="-D_THREAD_SAFE";;
*solaris* | alpha*-osf*) ac_cv_pthreadspecial="-D_REENTRANT";;
esac
])
if test "$ac_cv_pthreadspecial" != "no"; then
PTHREAD_CFLAGS="$ac_cv_pthreadspecial $PTHREAD_CFLAGS"
fi
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
# More AIX lossage: must compile with cc_r
AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
else
PTHREAD_CC="$CC"
fi
if test "x$ac_cv_pthreadflag"!=x; then
AC_CACHE_CHECK(if pthreads uses one thread per process, ac_cv_thread_multi, [
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
AC_TRY_RUN([
#include <pthread.h>
int pid;
int mypid = -1;
pthread_mutex_t mutex;
void testthreads(void *p)
{
pthread_mutex_lock(&mutex);
mypid = getpid();
pthread_mutex_unlock(&mutex);
pthread_exit(NULL);
}
int main() {
int i;
pthread_t thread;
pthread_attr_t attrs;
pid = getpid();
pthread_attr_init(&attrs);
pthread_mutex_init(&mutex, NULL);
pthread_mutex_lock(&mutex);
pthread_create(&thread, &attrs, (void*)testthreads, NULL);
pthread_mutex_unlock(&mutex);
sleep(2);
pthread_mutex_lock(&mutex);
if (mypid == pid)
exit(0);
else
exit(1);
}
],ac_cv_thread_multi=no, ac_cv_thread_multi=yes)
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
])
if test "$USESTDTHREAD" != "1"; then
if test "$ac_cv_thread_multi" = "yes"; then
AC_MSG_RESULT(Ok we'll install FSU Pthreads)
cd extras
if [[ -f "pthreads.tar.gz" ]] ; then
gunzip -fd pthreads.tar.gz
fi
tar xf pthreads.tar
cd threads/src
rm -f Makefile
case "${host_cpu}-${host_os}" in
*-freebsd*)
cp Makefile.FreeBSD Makefile
make
;;
*-linux*)
cp Makefile.Linux Makefile
make
;;
*-solaris2*)
cp Makefile.Solaris Makefile
make
;;
*)
./configure
;;
esac
cd ../../../
if test "$ac_cv_pthreadspecial" != no; then
PTHREAD_CFLAGS="-I=../extras/threads/include $ac_cv_pthreadspecial"
else
PTHREAD_CFLAGS="-I=../extras/threads/include"
fi
PTHREAD_LIBS="../extras/threads/lib/libgthreads.a ../extras/threads/lib/libmalloc.a"
fi
fi
fi
AC_SUBST(PTHREAD_LIBS)
AC_SUBST(PTHREAD_CFLAGS)
AC_SUBST(PTHREAD_CC)
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$acx_pthread_ok" = xyes; then
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
:
else
acx_pthread_ok=no
$2
fi
])dnl ACX_PTHREAD
-352
View File
@@ -1,352 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(src/ircd.c)
AC_CONFIG_HEADER(include/setup.h)
AC_PROG_CC
if test "$ac_cv_prog_gcc" = "yes"; then
AC_CACHE_CHECK(if you have gcc 3.0 or higher, ac_cv_gcc3, [
if test -z "`gcc -v 2>&1 |grep 'gcc version 3.'`"; then
ac_cv_gcc3="no"
else
ac_cv_gcc3="yes"
fi
])
if test "$ac_cv_gcc3" = "yes"; then
CFLAGS="$CFLAGS -Wnone"
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)
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 ")
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl ")
AC_SUBST(IRCDLIBS)
AC_SUBST(MKPASSWDLIBS)
AC_DEFUN(AC_INSTALL_REGEX,
[
AC_MSG_RESULT(Ok we'll install regex)
cd extras/regex
./configure
make
cd ../..
REGEX="../extras/regex/regex.o"
])
openssl=no
AC_DEFUN(AC_ENABLE_SSL,
[
if test "$openssl" = "yes"; then
AC_DEFINE(USE_SSL)
AC_CACHE_CHECK(what order we should supply the SSL libraries in, ac_cv_ssl_libs, [
save_libs="$LIBS"
LIBS="$LIBS -lssl -lcrypto -lssl"
AC_TRY_LINK([#include <openssl/ssl.h>], [
SSL_write(NULL, NULL, NULL);
], ac_cv_ssl_libs="-lssl -lcrypto -lssl" LIBS="$save_libs", ac_cv_ssl_libs="-lssl -lcrypto -lssl" LIBS="$save_libs")])
CRYPTOLIB="$ac_cv_ssl_libs"
CFLAGS="$CFLAGS -I/usr/local/include -I/usr/local/ssl/include -L/usr/local/lib -L/usr/local/ssl/lib"
else
AC_WARN(SSL support could not be enabled because openssl/ssl.h could not be found)
fi
])
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"
else
case `uname -s` in
SunOS*[)]
ac_cv_pic="-KPIC -DPIC -G"
;;
esac
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, [
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
])
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(regex.h,AC_DEFINE(HAVE_REGEX),AC_INSTALL_REGEX)
AC_CHECK_HEADER(openssl/ssl.h,openssl=yes)
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,[
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
dnl Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_SETPGRP
AC_FUNC_SETVBUF_REVERSED
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))
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))
AC_SUBST(REGEX)
AC_SUBST(STRTOUL)
AC_SUBST(CRYPTOLIB)
AC_SUBST(MODULEFLAGS)
AC_ARG_WITH(listen, [ --with-listen=backlog Specify the listen backlog value],
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
AC_ARG_WITH(nick-history, [ --with-nick-history=length Specify the length of the nickname history],
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
AC_ARG_WITH(sendq, [ --with-sendq=maxsendq Specify the max sendq for the server],
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
AC_ARG_WITH(bufferpool, [ --with-bufferpool=size Specify the size of the buffer pool],
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(9 * MAXSENDQLENGTH)]))
AC_ARG_WITH(hostname, [ --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, [ --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, [ --with-dpath=path Specify the path where configuration files are stored],
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval", AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`")
AC_ARG_WITH(fd-setsize, [ --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, [ --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, [ --enable-nospoof Enable spoofing protection], AC_DEFINE(NOSPOOF))
AC_ARG_ENABLE(hub, [ --enable-hub Compile as a hub server], AC_DEFINE(HUB))
AC_ARG_ENABLE(ssl, [ --enable-ssl Enable client and server SSL connections ], AC_ENABLE_SSL)
AC_ARG_ENABLE(dynamic-linking, [ --enable-dynamic-linking Make the IRCd dynamically link shared objects rather than statically ], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
AC_ARG_ENABLE(inet6, [ --enable-inet6 Make the IRCd support IPv6 ], AC_ENABLE_INET6)
AC_ARG_ENABLE(standardthreads, [ --enable-standardthreads Use standard threads ], USESTDTHREAD="1")
AC_SUBST(IRCDDIR)
AC_SUBST(BINDIR)
ACX_PTHREAD
CC="$PTHREAD_CC"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
IRCDLIBS="$IRCDLIBS $PTHREAD_LIBS"
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 "${host_cpu}-${host_os}" in
SunOS*5.*)
CFLAGS="$CFLAGS -DSOL20"
;;
*solaris*)
CFLAGS="$CFLAGS -D_SOLARIS"
IRCDLIBS="$IRCDLIBS -lresolv "
;;
*AmigaOS*68020*)
CFLAGS="$CFLAGS -D_AMIGA -m68020"
;;
*AmigaOS*68030*)
CFLAGS="$CFLAGS -D_AMIGA -m68030"
;;
*AmigaOS*68040*)
CFLAGS="$CFLAGS -D_AMIGA -m68040"
;;
*AmigaOS*68060*)
CFLAGS="$CFLAGS -D_AMIGA -m68060"
;;
esac
AC_OUTPUT(Makefile src/modules/Makefile unreal)
chmod 0700 unreal
-53
View File
@@ -1,53 +0,0 @@
/*
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 "boobs"; };
badword channel { word "tits"; };
-53
View File
@@ -1,53 +0,0 @@
/*
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 "boobs"; };
badword message { word "tits"; };
-25
View File
@@ -1,25 +0,0 @@
#!/bin/sh
DATE=`date +%Y%m%d-%H%M%S`
HOSTNAME=`hostname`
USERNAME=`whoami`
BUGREPORT=bugreport.$HOSTNAME.$USERNAME.$DATE.txt
echo "UnrealIRCd Bug Report" > $BUGREPORT
echo "---------------------" >> $BUGREPORT
echo "" >> $BUGREPORT
echo "Made at `date`">> $BUGREPORT
echo "`src/ircd -v`" >> $BUGREPORT
echo "Operating system:" >> $BUGREPORT
ls -l *core* >> $BUGREPORT
uname -a >> $BUGREPORT
gdb -x .bugreport.gdb src/ircd *core* >> $BUGREPORT 2>&1
cat |sendmail -t << __EOF__&
To: bugs-unreal@tspre.org
From: autobugreport@unrealircd.com
Subject: Bug report - $BUGREPORT
`cat $BUGREPORT`
.
__EOF__
-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
-5445
View File
File diff suppressed because it is too large Load Diff
+72
View File
@@ -0,0 +1,72 @@
# $Id$
on ^367 * if ([$4] != []) {echo *** $1 \($3 - $stime($4)) $2} {echo *** $1-}
on ^333 * echo *** Topic for $1 set by $2 on $stime($3)
on ^317 * if (index(012345679 $3) != -1) {echo *** $1 has been idle for $2 seconds. Signon at $stime($3)} {echo *** $1 has been idle for $2 seconds.}
On ^329 "*" echo *** $1 : created $stime($2)
on ^
alias silence quote silence
alias sile quote silence
on ^raw_irc "% SILENCE %" echo *** $*
@ hideit = 0
on ^server_notice "% % NOTICE -- CLIENT*" if (hideit != 1) {echo *** $2-}
alias show @ hideit = 0;echo *** You can now see clients connecting/exiting
alias hide @ hideit = 1;echo *** You will no longer see clients connecting/exiting
# ctime and sendq written by bry
# modified by Mmmm
alias ctime {
^on 211 -
if ( [$0] )
{ ^assign SS $0- }
{ ^assign SS $S }
^on ^211 * {
eval ^assign hrs2 ${ ([$7]/60)/60}
eval ^assign min2 ${[$7]/60}
eval ^assign dys ${[$HRS2]/24}
eval ^assign hrs ${[$HRS2]-([$DYS]*24)}
eval ^assign min ${[$MIN2] - ( ([$HRS]+([$DYS]*24) )*60)}
eval ^assign sec ${[$7]-([$MIN2]*60)}
@ a = index(\[ $1) - 1
@ b = left($a $1)
if (index(. $b) == -1)
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
{eval echo *** $1 $[2]DYS days, $[2]HRS hrs, $[2]MIN min, $[2]SEC s}
}
^stats l $SS
}
alias sendq {
eval ^on ^211 "$SRV *" {
@ a = index(\[ $1) - 1
@ b = left($a $1)
if (index(. $b) == -1)
{eval echo *** $[11]2 sendq $1}
{eval echo *** $[11]2 sendq $1}
}
if ( [$0] )
{ ^assign SRV $0- }
{ ^assign SRV $S }
stats l $SRV
wait -cmd eval ^on ^211 -"$SRV *"
}
# If you use Daveman's toolbox or any auto rejoin line, remove the old
# on raw_irc for KICK, and use the foll. one instead: (Run)
#
#ON ^RAW_IRC "% KICK % % *" {
# IF ([$3]==[$N])
# {
# //QUOTE JOIN $2
# ECHO $MID(11 5 $STIME($TIME())) * You have been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
# }
# {
# ECHO $MID(11 5 $STIME($TIME())) * $3 has been kicked off channel $2 by $LEFT($INDEX(! $0) $0) \($MID(1 256 $4-)\)
# }
# }
-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.
+963
View File
@@ -0,0 +1,963 @@
/************************************************************************
* IRC - Internet Relay Chat, doc/INSTALL
* Copyright (C) 1990,1991,1992, Jeff Trim, Mike Bolotski,
* Jarkko Oikarinen and Darren Reed.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id$
*/
Installing IRC - The Internet Relay Chat Program
Overview of this document:
1) The config.h file
2) Editing the Makefile
3) Compiling IRC
4) The ircd.conf file
1) Edit the "config.h" file and make changes to the various #DEFINE's:
a) Copy the config.h.dist file to config.h before editing.
b) Define what type of UNIX your machine uses.
Pick the machine type which best describes your machine and change
the #undef to #define (if needed). Some flavours of Unix require no
#define and in such cases all others should be #undef'd.
c) DEBUGMODE
Define DEBUGMODE if you want to see the ircd debugging information
as the daemon is running. Normally this function will be undefined
as ircd produces a considerable amount of output. DEBUGMODE must be
defined for either of -t or -x command line options to work.
d) DPATH, SPATH, CPATH, MPATH, LPATH, PPATH
DPATH is provided so that the other pathnames (SPATH, CPATH, etc)
may be provided in just filename form. When the server starts, it
chdir's to DPATH before chroot or any other file operation, making
it the "current directory" for the server. This is where core files
will go if it core dumps.
Define SPATH to be the directory path to ircd. This is usually
/usr/local/bin/ircd, unless you don't have installation permission
there.
Define CPATH to be the directory path to the "irc.conf" file.
This path is usually /usr/local/lib/irc.conf. The format of this file
will be discussed later.
The LPATH #define should be set to "/dev/null" unless you plan to
debug the program. Note that the logfile grows very quickly.
Define MPATH to be the path to the 'motd' (message of the day) file
for the server. Keep in mind this is displayed whenever anyone
signs on to your server.
The PPATH is optional, but if defined, should point to a file which
either doesn't exist (but is creatable) or a previously used PPATH
file. It is used for storing the server's PID so a ps(1) isn't
necessary.
e) CHROOTDIR
To use the CHROOTDIR feature, make sure it is #define'd and that
the server is being run as root. The server will chroot to the
directory name provded by DPATH.
f) ENABLE_SUMMON, ENABLE_USERS
For security conscious server admins, they may wish to leave
ENABLE_USERS undefined, disabling the USERS command which can be used
to glean information the same as finger can. ENABLE_SUMMON toggles
whether the server will attempt to summon local users to irc by
writing a message similar to that from talk(1) to a user's tty.
g) SHOW_INVISIBLE_LUSERS, NO_DEFAULT_INVISIBLE
On large IRC networks, the number of invisible users is likely to
be large and reporting that number cause no pain. To aid and effect
this, SHOW_INVISIBLE_LUSERS is provided to cause the LUSERS command
to report the number of invisible users to all people and not just
operators. The NO_DEFAULT_INVISIBLE define is used to toggle whether
clients are automatically made invisible when they register.
h) OPER_KILL, OPER_REHASH, OPER_RESTART, LOCAL_KILL_ONLY
The three operator only commands, KILL, REHASH and RESTART, may all
be disabled to ensure that an operator who does not have the correct
privilidges does not have the power to cause untoward things to occur.
To further curb the actions of guest operators, LOCAL_KILL_ONLY can
be defined to only allow locally connected clients to be KILLed.
i) The rest of the user changable #define's should be pretty much self
explanatory in the config.h file. It is *NOT* recommended that any
of the file undef the line with "STOP STOP" in it be changed.
3) Configure and compile the code.
Edit the root Makefile for the server, uncomment/comment the correct
CFLAGS/IRCDLIBS lines as appropriate for your system.
Change DESTDIR to be the same as the path for DPATH in config.h.
Type "make". This will compile the server, the client, and the services.
At the end of this step, the server directory will contain 'ircd',
and the client directory will contain 'irc'. To get the server installed,
type "make install" which will build a default m4 file for preprocessing,
copy example.conf and put the server all in DESTDIR. The irc client and
a copy of the server will also be placed in BINDIR and the modes set
accordingly.
4) The ircd.conf file.
After installing the ircd and irc programs, edit the irc.conf file
as per the instructions in this section and install it in the
location you specified in the config.h file. There is a sample
conf file called example.conf in the /doc directory.
Appendix A describes the differences between IP addresses and host
names. If you are unfamiliar with this, you should probably scan
through it before proceeding.
The irc.conf file contains various records that specify configuration
options. The record types are as follows:
1. Server connections (C,N)
2. Machine information (M)
3. Client connections (I)
4. Default local server (U)
5. Operator priviliges (O)
6. Administrative info (A)
7. Excluded accounts (K)
8. Excluded machines (Q)
9. Connection Classes (Y)
10. Leaf connections (L)
11. Service connections (S)
12. Port connections (P)
13. Hub connections (H)
1. SERVER CONNECTIONS: How to connect to other servers
How other servers can connect to you
WARNING:
The hostnames used as examples are really only examples and
not meant to be used (simply because they don't work) in real life.
Now you must decide WHICH hosts you want to connect to and WHAT ORDER you
want to connect to them in. For my example let us assume I am on the
machine "rieska.oulu.fi" and I want to connect to irc daemons on 3 other
machines:
"garfield.mit.edu" - Tertiary Connection
"irc.nada.kth.se" - Secondary Connection
"nic.funet.fi" - Primary Connection
And I prefer to connect to them in that order, meaning I first want to
try connecting to "nic.funet.fi", then to "irc.nada.kth.edu", and
finally to "garfield.mit.edu". So if "nic.funet.fi" is down or
unreachable, the program will try to connect to "irc.nada.kth.se".
If irc.nada.kth.se is down it will try to connect to garfield and so forth.
PLEASE limit the number of hosts you will attempt to connect to down to 3.
This is because of two main reasons:
a) to save your server from causing extra load and delays
to users
b) to save internet from extra network traffic
(remember the old rwho program with traffic problems when
the number of machines increased).
The format for the CONNECT entry in the "irc.conf" is:
C:<TARGET Host Addr>:<Password>:<TARGET Host NAME>:<TARGET Host PORT>
Field: 1 2 3 4 5
for example:
C:nic.funet.fi:passwd:nic.funet.fi:6667
- or -
C:128.214.6.100:passwd:nic.funet.fi:6667
- or -
C:root@nic.funet.fi:passwd:nic.funet.fi:6667
Explanation:
Each field is separated with a ":" charcter:
Field 1: Field 1 tells the IRC program which option is being configured.
"C" corresponds to a server Connect option.
Field 2: Specifies the host name or IP address of the machine to connect
to. If "user@" prefixes the actual hostname or IP address
the server will require that the remote username returned by
the ident server be the same as the one given before the "@".
Field 3: The password of the other host. A password must always be
present for the line to be recognized.
Field 4: The full hostname of the target machine. This is the name that
the TARGET server will identify itself with when you connect
to it. If you were connecting to nic.funet.fi you would receive
"nic.funet.fi" and that is what you should place in
this field.
Field 5: The INTERNET Port that you want to connect to on the TARGET
machine. Most of the time this will be set to "6667".
If this field is left blank, then no connections will
be attempted to the TARGET host, and your host will accept
connections FROM the TARGET host instead.
Some examples:
C:nic.funet.fi::nic.funet.fi:6667
This reads: Connect to host "nic.funet.fi", with no password
and expect this server to identify itself to you as
"nic.funet.fi". Your machine will connect to this host to
PORT 6667.
C:18.72.0.252:Jeff:garfield.mit.edu:6667
This reads: Connect to a host at address "18.72.0.252", using a
password of "Jeff". The TARGET server should identify
itself as "garfield.mit.edu". You will connect to Internet
Port 6667 on this host.
C:irc.nada.kth.se::irc.nada.kth.se
This reads: do not attempt to connect to "irc.nada.kth.se",
but if "irc.nada.kth.se" requests a connection,
allow it to connect.
Now back to our original problem, we wanted OUR server CONNECT to 3
hosts, "nic.funet.fi", "irc.nada.kth.se" and "garfield.mit.edu" in
that order. So as we enter these entries into the file they must be
done in REVERSE order of how we could want to connect to them.
Here's how it would look if we connected "nic.funet.fi" first:
C:garfield.mit.edu::garfield.mit.edu:6667
C:irc.nada.kth.se::irc.nada.kth.se:6667
C:nic.funet.fi::nic.funet.fi:6667
Ircd will attempt to connect to nic.funet.fi first, then to irc.nada
and finally to garfield.
Reciprocal entries:
Each "C" entry requires a corresponding 'N' entry that specifies
connection priviliges to other hosts. The 'N' entry contains
the password, if any, that you require other hosts to have before
they can connect to you. These entries are of the same format as
the "C" entries.
Let us assume that "garfield.mit.edu" connects to your server
and you want to place password authorization authorization on garfield.
The "N" entry would be:
N:garfield.mit.edu:golden:garfield.mit.edu
This line says: expect a connection from host "garfield.mit.edu",
and expect a login password of "golden"
and expect the host to identify itself as "garfield.mit.edu".
N:18.72.0.252::garfield.mit.edu
This line says: expect a Connection from host "18.72.0.252", and
don't expect login password. The connecting host should identify itself
as "garfield.mit.edu".
Wildcards domains:
To reduce the great amount of servers in IRCnet wildcard
DOMAINS were introduced in 2.6. To explain the usage of
wildcard domains we take an example of such:
*.de - a domain name matching all machines
in Germany.
Wildcard domains are useful in that ALL SERVERS in Germany
(or any other domain area) can be shown as one to the
rest of the world. Imagine 100 servers in Germany, it
would be incredible waste of netwotk bandwidth to broadcast
all of them to all servers around the world.
So wildcard domains are a great help, but how to use them ?
They can be defined in the N-line for a given connection,
in place of port number you write a magic number called
wildcard count.
Wildcard count tells you HOW MANY PARTS of your server's name
should be replaced by a wildcard. For example, your server's
name is "tolsun.oulu.fi" and you want to represent it as
"*.oulu.fi" to "nic.funet.fi". In this case the wildcard count
is 1, because only one word (tolsun) is replaced by a wildcard.
If the wildcard count would be 2, then the wildcard domain would
be "*.fi". Note that with wildcard name "*.fi" you could NOT
connect to "nic.funet.fi", because that would result in a server
name COLLISION (*.fi matches nic.funet.fi).
I advice you to not to use wildcard servers before you know
for sure how they are used, they are mostly beneficial for
backbones of countries and other large areas with common domain.
2. MACHINE INFORMATION
IRC needs to know a few things about your UNIX site, and the "M" command
specifies this information for IRC. The fomat of this command is:
M:<YOUR Host NAME>:xxx:<Geographic Location>:<Internet Port>
Field: 1 2 3 4 5
Explanation:
Field 1: "M" specifies a Machine description line
Field 2: The name of YOUR host adding any Internet DOMAINNAME that
might also be present.
Field 3: -- NOT USED --: Set to Value NULL (No spaces at ALL!).
Field 4: Geographic Location is used to say WHERE YOUR SEVRER is,
and gives people in other parts of the world a good
idea of where you are! If your server is in the USA, it is
usually best to say: <CITY> <STATE>, USA. Like for Denver
I say: "Denver Colorado, USA". Finnish sites (like
tolsun.oulu.fi generally say something like "Oulu, Finland".
Field 5: The Internet port your server will use. Should be set to
the same value as in the config.h file.
Example:
M:tolsun.oulu.fi::Oulu, Finland:6667
This line reads: My Host's name is "tolsun.oulu.fi" and
my site is located in "Oulu, Finland". My ircd will use
Internet Port 6667.
M:orion.cair.du.edu::Denver Colorado, USA:6667
This line reads: My Hosts name is "orion.cair.du.edu"
and my site is located in "Denver Colorado, USA".
I have defined Internet Port number "6667" to be used
as my IRCD Socket Port.
3. CLIENT CONNECTIONS - How to let clients connect to your IRCD.
A client is a program that connects to the ircd daemon (ircd). Currently
there are clients written in C and in GNU Emacs Lisp. The "irc"
program is the C client. Each person that talks via IRC is running
their own client.
The irc.conf files contains entries that specify which clients are allowed
to connect to your irc daemon. Obviously you want to allow your cwn
machine's clients to connect. You may want to allow clients from
other sites to connect. These remote clients will use your server
as a connection point. All messages sent by these clients will pass
through your machine.
The format of this entry in the conf file is:
I:<TARGET Host Addr>:<Password>:<TARGET Hosts NAME>:<Internet Port>
Field:1 2 3 4 5
For example, if you were installing IRC on tolsun.oulu.fi and you wanted
to allow examples sake let us assume you were making this file for
tolsun and you wanted to let your own clients to connect to your
server, you would add this entry to the file:
I:128.214.5.6::tolsun.oulu.fi
or
I:tolsun.oulu.fi::tolsun.oulu.fi
If you wanted to let remote clients connect, you could add the
following lines:
I:*.du.edu::*.du.edu
Allow any clients from machines whose names end in "du.edu" to connect
with no password.
I:128.214.6.100::nic.funet.fi
Allow clients from a machine with that IP number and the name
nic.funet.fi to connect.
I:*.tut.fi:secret:*.tut.fi
Allow clients from machines matching *.tut.fi to connect
with the password 'secret'.
I:*::*
Allow anyone from anywhere to connect your server.
This is the easiest way, but it also allows people to for example
dump files to your server, or connect 1000 (or how many open
sockets per process your OS allows) clients to your machine
and take your network ports. Of course the same things can be
done by simply telnetting to your machine's SMTP port (for example).
NEW!!!
As of the 2.7.2d version of the server, the server is able to accept
connections on multiple ports. I-lines are required for each P-line
to allow connections to be accepted. For unix sockets, this means
either adding I:/path/port::/path/port or some variation (wildcards
are recognised here). For internet ports, there must be an I-line
which allows the host access as normal, but the port field of the
I-line must match that of the port of the socket accepting the
connectiion. A port number of 0 is a wildcard (matches all ports).
4. DEFAULT HOSTS (for local clients)
This defines the default connection for the irc client. If you are
running an ircd server on the same machine, you will want to define
this command to connect to your own host. If your site is not running
a server then this command should contain the TARGET host's connection
information and password (if any). The format for this command is:
U:<TARGET Host addr>:<Password>:<TARGET Host NAME>:<Internet Port>
Field: 1 2 3 4 5
For example:
U:tolsun.oulu.fi::tolsun.oulu.fi:6667
U:128.214.5.6::tolsun.oulu.fi:6667
U:tolsun.oulu.fi::tolsun.oulu.fi
If the port number is omitted, irc will default to using 6667.
5. OPERATOR Privileges: How to become the IRC administrator on your site
To become an IRC Administrator, IRC must know who is authorized to become
an operator and what their "Nickname" and "Password" is. To add this
information, EDIT your "irc.conf" file and add the following command
line to it:
O:<TARGET Host NAME>:<password>:<nickname>:<port>:<class>
Field: 1 2 3 4 5 6
Explanation:
Field 1: Speficies Operator record. If you use capital letter ('O')
in it, it specifies a global operator. Small letter ('o')
specifies a local operator. Local operator has basically the
same rights except global operator with some restrictions.
Field 2: Tells IRC which host you have the privileges FROM. This
means that you should be logged into this host when you
ask for the priviliges. If you specify "tolsun.oulu.fi"
then IRC will expect your CLIENT to be connected at
"tolsun.oulu.fi" - when you ask for OPERATOR privileges
from "tolsun.oulu.fi". You cannot be logged in at any
other host and be able to use your OPERATOR privileges
at tolsun, only when you are connected at TOLSUN will this
work - this is a safeguard against unauthorized sites.
Field 3: If your AUTHORIZATION Password - this is the password that
let's IRC know you are who you say you are! Never tell anyone
your password and always keep the "irc.conf" file protected
from all of the other users.
Field 4: The Nickname you usually go by - but you can make this what
you want. It is better to make this a NICKNAME that no one
else knows, but anything will do. I usually use my own
loginname.
Field 5: Unused.
Field 6: The class field should refer to an existing class (preferably
having a lower number than that for the relevant I-line) and
determines the maximum number of simultaneous uses of the
O-line allowable through the max. links field in the Y-line.
Example:
O:orion.cair.du.edu:pyunxc:Jeff
There is an OPERATOR at "orion.cair.du.edu" that can get
Operator priviliges if he specifies a password of "pyunxc"
and uses a NICKNAME of "Jeff".
6. ADMINISTRATIVE INFORMATION
The "A" command is used for administrative information about a site.
The e-mail address of the person running the server should be included
here in case problems arise.
A:<Your Name/Location>:<Your Electronic Mailing Addr>:<other>
Field: 1 2 3 4
Explanation:
Field 1: "A" specifies an Admin record.
Field 2: Use this field to say tell your FULL NAME and where in the
world your machine is. Be sure to add your City,
State/Province and Country.
Field 3: Use this field to specify your Electronic Mailing Address
preferably your Internet Mailing Address. If you have
a UUCP or ARAPnet address - please add that as well. Be
sure to add any extra DOMAIN information that is needed,
for example "mail jtrim@orion" probably won't work as a
mail address to me if you happen to be in Alaska. But
"mail jtrim@orion.cair.du.edu" would work because you
know that "orion" is part of the DOMAIN "cair.du.edu".
So be sure to add your DOMAINNAMES to your mailing addresses.
Field 4: Is really an OTHER field - you can add what you want here,
Examples (the line is just one line in the confuration file, here it
is cut into two lines to make it clearer to read):
A:Jeff Trim - Denver Colorado, USA:INET jtrim@orion.cair.du.edu UUCP {hao,
isis}!udenva!jtrim:Terve! Heippa! Have you said hello in Finnish today?;)
Would look like this when printed out with the /admin command:
Jeff Trim - Denver Colorado, USA
INET jtrim@orion.cair.du.edu UUCP {hao,isis}!udenva!jtrim
Terve! Hei! Heippa! Have you said hello in Finnish today? ;)
Note that the A record cannot be split across multiple lines; it will
typically be longer than 80 characters and will therefore wrap around
the screen.
7. REMOVING A USER FROM IRC Remove an errant user from IRC on your site.
Obviously it is hoped that you wouldn't have to use this command.
Unfortunately sometimes a user can become unmanageable and this is your
only recourse - the KILL USER command. THIS COMMAND ONLY AFFECTS YOUR
SERVER - If this user can connect to another SERVER somewhere else in
the IRC-Network then you would have to talk to the administrator on that
site to disable his access from that IRCD Server as well.
The format of this command is:
K:<Host Name>:<time interval(s)>:<User>
Field: 1 2 3 4
Explanation:
Field 1: "K" tells the IRCD that you are making a KILL USER command
entry.
Field 2: In this field you specify the Hostname that the user is
connecting from. If you wanted to REMOVE connects
to IRC from "orion.cair.du.edu" then you would want to enter
"orion.cair.du.edu". If you want to REMOVE ALL HOSTS
access you can use '*' (Wild Card notation) and no matter
what host the USERNAME (specified in Field 4) connects from
s/he will be denied access. Removing all hosts isn't
very smart thing to do though, why would you run an ircd
if you allow nobody to connect to it anyways ?
Field 3: Either leave this field empty (no spaces), then then lines
is active continuously for the specified user/host machine.
You may also specify intervals during the line should be
active, see examples above.
Field 4: The USERNAME of the user you want removed from IRC. For
example 'root'.
Some Examples:
K:orion.cair.du.edu::jtrim
If user 'jtrim' connects to IRC from host "orion.cair.du.edu"
then IMMEDIATELY REMOVE HIM from my IRCD.
K:*.cair.du.edu::root
If user 'root' connects to IRC from any host that has the
suffix "cair.du.edu" - then IMMEDIATELY REMOVE THEM from
my IRCD.
K:*::vijay
This line reads "I don't care WHAT HOST user 'vijay' is on,
I will NEVER allow username 'vijay' to login to my IRCD.
K:*.oulu.fi:0800-1200,1400-1900:*
This disallows all users from hosts with enddomain 'oulu.fi'
access to your server between 8 and 12am, 2 and 7pm.
Users get kicked off if they're already signed on when the
line becomes active (they'll get a warning 5 minutes ago).
8. Disallowing SERVERS in your irc net.
In some cases people run into difficulties in net administration.
For one reason or another you do not want a certain server to be
in your net (for example because of the security holes it opens
for every server if it's not secured carefully). In that case
you should use Q-lines in your server. When you specify a server
name in Q-line, everytime some server link tries to introduce you
a server (remember, all server names are broadcast around the net),
that name is checked if it matches the Q-lines in your server.
If it matches, then your server disconnects the link. Note that
just placing Q-lines to your server probably results in your server
being left alone, unless other servers have agreed to have the
same Q-line in their ircd configuration files as well.
Example:
Q::of the security holes:foo.bar.baz
This command excludes a server named "foo.bar.baz", the reason
is given to be security holes (you should give a reason, it is
polite). The first field is unused, so leave it empty.
9. Connection Classes.
To enable more efficient use of MAXIMUM_LINKS, connection classes
were implemented. To give a connection a class, add another field
(a sixth) to the C/N lines for a particular server.
Each line for a server should have the same number as the sixth
field. If it is absent, the server deaults it to 0, using the
defaults from the config.h file. To define a connection class,
you need to include a Y: line in the irc.conf file. This enables
you to define the ping frequency, connection frequency and maximum
number of links that class should have. Currently, the Y: line MUST
appear in the irc.conf file BEFORE it is used in any other way.
The format for the line is:
Y:<CLASS>:<PING FREQUENCY>:<CONNECT FREQUENCY>:<MAX LINKS>:<SENDQ>
Field: 1 2 3 4 5 6
Field 2: This is the class number which gains the following attributes
and should match that which is on the end of the C/N line.
Field 3: This field defines how long the server will let the connection
remain "silent" before sending a PING message to make sure it is still
alive. Unless you are sure of what you are doing, use the default value
which is in your config.h file.
Field 4: By changing this number, you change how often your server
checks to see if it can connect to this server. If you want to check
very occasionally, use a large value, but if it is an important
connection, you might want a smaller value so that you connect to it
as soon as possible.
Field 5: This field defines the maximum number of links this class
will allow from automatic connections. Using /CONNECT overrides this
feature.
Field 6: This field defines the 'sendq' value for this class. If this
field is not present, the default (from config.h) is assigned.
NOTE: leaving any of the fields out means their value is 0 (ZERO)!!
example:
Y:23:120:300:5
define class 23 to allow 5 auto-connections, which are checked every
300 seconds. The connection is allowed to remain silent for 120
seconds before a PING is sent. NOTE: fields 3 & 4 are in seconds.
You may also give I lines a class (again the sixth field to define
which class). This is only usefull (currently) for redefining the
ping frequency. It can also be useful as a diagnostic to see how
much each I line is used when combined with the TRACE output.
Another feature of connection class is the ability to do automatic
routing by using the class as a 'priority'. If you are connected
to a server which has a class lower than one of the servers that is
'behind' it, the server will disconnect the lower class one and
schedule a 'new' connection for the higher class server.
10. Leaf Connections.
To stop servers which should only act as leaves from hubs becoming
hubs accidently, the L line was introduced so that hubs can be aware
of which servers should and shouldnt be treated as leaves. A leaf
server is supposed to remain a node for the entirity of its life
whilst connected to the IRC server network. It is quite easy, however
for a leaf server to be incorrectly setup and create problems by
becoming a node of 2 or more servers, ending its life as a leaf. The
L line enables the administrator of an IRC 'Hub server' to 'stop' a
server which is meant to act as a leaf trying to make itself a hub.
If, for example, the leaf server connects to another server which doesnt
have an L-line for it, the one which does will drop the connection, once
again making the server a leaf.
L:<SERVER MASK>:*:<SERVER NAME>:<MAX DEPTH>
Field: 1 2 3 4 5
Field 2 is a mask of which servers the leaf-like attributes are used on
when the server receives SERVER messages. The wildcards * and ? may be
used within this field for matching purposes. If this field is empty,
it acts the same as if it were a single * (ie matches everything).
Field 4 is the the server connectted to you that for which you want to
enforce leaf-like attributes upon.
Field 5 is the maximum depth allowed on that leaf and if not specified,
a value of 1 is assumed. The depth is checked each time a SERVER message
is received by the server, the hops to the server being the field checked
against this max depth and if greater, the connection to the server that
made its leaf too deep has its connection dropped.
For the L-line to come into effect, both fields, 2 and 4, must match up
with the new server being introduced and the server which is responsible
for introducing this new server.
11. Service Connections (Not yet implemented)
Introduction.
The Service is a special kind of IRC client. It does not have the full
abilities of a normal user but can behave in a more active manner than
a normal client. Services as they stand now are not fully implemented.
The following line can be added to your ircd.conf file to enable a
service:
S:<TARGET Host Mask>:<password>:<service_name>
Field: 1 2 3 4
Explanation:
Field 2:
The host mask should be set to match the hosts(s) from which the
service will be connecting from. This may be either an IP# or full
name (prefered).
Field 3:
This is the password which must be passed in the SERVICE command.
Field 4:
The 'service name' is only used for the purpose of finding the
right S-line from the ircd.conf file for password matching. The
actual service name used is that set by NICK commands prior to
SERVICE being sent.
To connect a service to your server, you must first create an S-line
entry in your ircd.conf file and get your server to read this in (ie
rehash or reboot). Once your server has updated itself, you can then
attempt to register your connection as a service.
Registering as a service is similar to registering as a normal user
except that you must send NICK first and then SERVICE. The service
command should look something like this:
SERVICE secretpassword referencename :Service information
A successfull registering of a service at the server will result in
a RPL_YOURESERVICE (383) being sent back to you. Any other reply as
a result of sending service indicates an error has occured.
A service is not a very useful sort of client, it cannot join channels
or issue certain commands although most are available to it. Services,
however, are not affected by flood control. It is therefore wise to
oversee the use of S-lines with some care.
12. Port Connections
Introduction.
The port line adds flexibility to the server's ability to accept
connections. By use of this line in the ircd.conf file, it is easy
to setup both Unix Domain ports for the server to accept connections
on as well as extra internet ports.
P:<Internet IP# Mask>:<*>:<*>:<PORT>
Field: 1 2 3 4 5
or
P:<Directory>:<*>:<*>:<PORT>
Field: 1 2 3 4 5
Explanation
Internet Ports
Field 1
The internet IP mask defines where connections may come from and
be accepted. The IP mask uses either *'s or 0's as wildcards. The
following two lines are the same:
P:128.2.*:::6664
P:128.2.0.0:::6664
The incoming isnt matched against the mask, rather the ip# string
is decoded and compared segment by segment. Thus
P:128.2*.1.2:::6664
will not match 128.20.1.2.
Field 5
The port number field tells the server which port number it should
listen on for incoming connections.
Unix Socket Ports.
Field 1
The path set in field 1 should be the directory name in which to
create the unix socket for later listening to. The server will
attempt to create the directory before creating the unix socket.
Field 5
The port field when used in combination with a pathname in a P-line
is the filename created in the directory set in Field 1.
Example:
P:/tmp/.ircd:::6667
Creates a unix socket in the /tmp/.ircd directory called "6667".
The unix socket (file) must be a numerical.
13. Hub Connections
In direct contrast to L-lines, the server also implements H-lines to
determine which servers may act as a hub and what they may 'hub for'.
If a server is only going to supply its own name (ie act as a solitary
leaf) then no H-line is required for, else a H-line must be added as
follows:
H:<SERVER MASK>:*:<SERVER NAME>
Field: 1 2 3 4
Explanation:
Field 2
All servers that are allowed via this H-line must match the mask
given in this field.
Field 4
This field is used to match exactly against a server name, wildcards
being treated as literal characters.
Examples:
H:*.edu:*:*.bu.edu
Allows a server named "*.bu.edu" to introduce only servers that
match the "*.edu" name mask.
H:*:*:eff.org
Allow "eff.org" to introduce (and act as a hub for) any server.
Note: It is possible to have and use multiple H-lines (or L-lines) for
the one server. eg:
H:*.edu:*:*.bu.edu
H:*.au:*:*.bu.edu
is allowed as is
L:*.edu:*:*.au
L:*.com:*:*.au
Appendix A: Difference between IP addresses and hostnames
There are 2 different types of INTERNET addresses, NAME addresses and
NUMERIC addresses. NAME addresses look like ENGLISH words (and indeed
they are ENGLISH words that refer to a given host). A NAME address looks
like "tolsun.oulu.fi" - and that particular address refers to the machine
named TOLSUN in Finland. It is a UNIQUE address because no other machine
in the world has its NAME address the same as "tolsun.oulu.fi". Anytime
you say "telnet tolsun.oulu.fi" - you would always connect to TOLSUN in
Finland. NUMERIC addresses refer to those addresses that are made up of
NUMBERS for example "128.214.5.6" is the NUMERIC address for TOLSUN. This
address is also UNIQUE in that no other machine in the world will be use
those NUMERIC numbers. The NUMERIC address is usually more reliable than
the NAME address because not all sites can recognize and translate the
NAME address into it's numeric counterpart. NUMERIC always seems to work
best, but use a NAME address when you can because it is easier to tell
what host you are connected to.
Every Unix machine has a file called "/etc/hosts" on it. This file
contains NAME and NUMERIC addresses. When you supply IRC with a NAME
address it will at first try to find it in /etc/hosts, and then (if it's
really smart), use the local Domain Name Server (DNS) to find the NUMERIC
address for the host you want to connect to. Thus if you plan to use NAME
addresses keep in mind that on SOME sites the entry for the TARGET machine
must be found in /etc/hosts or the NAME address will fail. A typical
entry in /etc/hosts looks like this:
130.253.1.15 orion.cair.du.edu orion.du.edu orion # BSD 4.3
This particular example is the Host ORION at the University of Denver.
Notice that on the far left is the NUMERIC Address for orion. The
next few ENGLISH words are the NAME addresses that can be used for orion,
"orion.cair.du.edu", "orion.du.edu", "orion". ALL of these NAME addresses
will return the NUMERIC address "130.253.1.15" which IRC will use to
connect to the TARGET UNIX. (when I say TARGET UNIX I am refering to the
UNIX you want to connect to for IRC). Any futher questions about
/etc/hosts should be directed to "man hosts".
Appendix B: Enabling Summon Messages
+-----------------------------------------------------------------------+
| E N A B L I N G / S U M M O N M E S S A G E S |
+-----------------------------------------------------------------------+
*NOTE* You must have ROOT or special access to the GROUP tty ('/dev')
to do this. If you want to allow users around the world to summon
users at your site to irc, then you should make sure that summon works.
The "IRCD" program needs access to the GROUP of '/dev'. This
directory is where user TTY's are stored (as UNIX treats each Terminal
as a FILE!) IRCD needs GROUP ACCESS to /dev so that users can be
SUMMONED to the program by others users that are *in* the program.
This allows people from other Universities around the world to SUMMON
your users to IRC so that they can chat with them. Berkeley, SUN, HP-UX
and most of the newer versions of UNIX check to see if a USER is
accepting MESSAGES via the GROUP access rights on their TTY listing
in the /dev directory. For example an entry in '/dev' looks like this:
(Unix Path on BSD 4.3 UNIX is: /dev/ttyp0)
crw------- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
You will note that 'jtrim' OWNS this terminal and can READ/WRITE to this
terminal as well (which makes sense because I am ENTERING DATA and
RECEIVEING DATA back from the UNIX). I logged into this particular
UNIX on "April 29th" at "10:35am" and my TTY is "ttyp0". But further
of *note* is that I do not have my MESSAGES ON! (mesg n) -- This is
how my terminal would look with MESSAGES ON (mesg y):
crw--w---- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
With my MESSAGES ON (mesg y) I can receive TALK(1) requests, use the
UNIX WRITE(1) command and other commands that allow users to talk
to one another. In IRC this would also allow me to get IRC /SUMMON
messages. To set up the "IRCD" program to work with /SUMMON type
the following: (using ROOT or an account that has access to '/dev').
% chgrp tty ircd
% chmod 6111 ircd
The above commands read: "Give IRCD access to GROUP tty (which is /dev)
and then when ANYONE runs the IRCD allow SETUID and SETGID priviliges
so that they can use the /SUMMON command.
+382
View File
@@ -0,0 +1,382 @@
/************************************************************************
* IRC - Internet Relay Chat, doc/MANUAL
* Copyright (C) 1990, Karl Kleinpaste
*
* $Id$
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
Date: 04 Apr 1989
Author: Karl Kleinpaste
karl@cis.ohio-state.edu
Last modification: 15 May 1992
by Mauri Haikola
mjh@stekt.oulu.fi
INTERNET RELAY CHAT
a real-time conversational system
* 1: Irc - replacement for talk(1)
Irc is a functional replacement for and improvement to talk(1). Talk
is an old, primitive, atrocious, minimalist sort of keyboard/screen
conversation tool, using a grotesque, machine-dependent protocol.
Irc does everything talk does, but with a better protocol, allowing
more than 2 users to talk at once, with access across the aggregate
Internet, and providing a whole raft of other useful features.
* 2: Entering Internet Relay Chat
There are two ways to enter Internet Relay Chat. If you are using the
emacs lisp client, you need to load the client into your Emacs session
and then M-x irc. If you are using the C client (easier for beginners)
then type (usually) irc. If you wish to be known by a nickname which
is not one's login name, type `irc chosen-nickname' instead.
* 3: How much can be seen from here
The universe - seriously.
This is most formally called Internet Relay Chat. Server hosts are
connected via a tree structure. The various servers relay control and
message data among themselves to advertise the existence of other
servers, users, and the channels and other resources being occupied by
those users.
* 4: Structure
There is quite a lot of structure to the operation of irc, as
compared to crufty old talk(1). Since so little could be done with
talk(1), it needed little structure. But to keep track of people
spread literally around the world (the system was written by Jarkko
Oikarinen of Finland, usually seen on the system as `Wiz'), the
structure is useful so that one can speak to exactly those people with
whom one wishes to speak.
** 4.1: Nicknames
All users of irc are known to the system by a `nickname.' By
default, one's nickname is one's login name. Nickname clashes are not
allowed; this is enforced by the servers. If one's intended nickname
clashes with someone else as one enters chat, one will not be able to
complete entry to irc until one changes one's nickname to something
else.
** 4.2: Presence on a channel
Fundamental to the operation of irc is the concept of a channel. All
users are `on a channel' while inside irc. One enters the `null
channel' first. One cannot send any messages while not in any
chatting channel unless one has set up a private conversation in some
way. The number of channels is essentially unlimited - whatever will
fit in a string of some ungodly length, that must start with a # sign.
** 4.3: Main modes of channels
Public
This is the default mode for a channel. When one is on a public
channel, one can be seen by all other users (if one's own user mode
permits this). Anyone can notice users on a public channel and join
such a channel's conversation.
Private
This means that, although anyone can see that one is using chat, no
one can tell what channel one is using unless one is already on that
channel with oneself. Since the number of potential channels is in
the billions, this is quite some security - all one gives away is the
acknowledgement that one is using chat.
Secret
While one is on a secret channel, no one who is not on one's channel
with oneself can even see that one is there. One's name does not show
up in a list of active users. The only indication of one's presence
is that, when entering chat, all new users are told that there are "N
users on P servers." If one checks on all users and finds less than N
of them, one knows that others are hiding on secret channels. But a
secret channel user still cannot be found except by brute-force
checking through all channels, a hopeless proposition in the face of
the huge number of possible channel names. Security through obscurity
finally means something.
Changing the mode
The mode of a channel (private, secret, invite-only, moderated,
topic-limited, person-number-limited, no-messages-to-channel, ban
someone from channel) is set by the channel operator, who is the
first person to join a channel, or someone who has had channel
operatorship bestowed on them by another channel operator.
*** 4.4: Conversations not using channels
It is possible to conduct conversations with others without using the
formalized channel structure. Doing so requires that two people set
themselves up for private conversation using special commands; see
User Commands below.
* 5: Screen/keyboard structure
Chat is a full-screen utility. It takes over the screen, with the
bulk of activity happening in the top N-2 lines, a modeline (vaguely
emacs-like) on the next to last line, and one's input being entered on
the last line. A very good version of client is the IRC-II client,
avaliable on anonymous ftp from various sites around the world.
** 5.1: Keyboard input
When typing commands at irc, one has a minimalist line-editing
facility in an emacs style. That is, ^A moves the cursor to the
beginning of the line, ^E goes to the end, ^D deletes the character
under the cursor, ^K kills from the cursor to the end, and so on.
** 5.2: Screen activity
Almost everything happens in the upper bulk of the screen. This
includes both messages from other users, as well as the output of the
control commands.
Normal messages from other users appear with the originating nickname
in <angle brackets>. Private messages arrive with the originating
nickname in *asterisks*. Messages which one sends to everyone appear
with a preceding "> " whereas messages which one sends privately to
one other user appear with "-> *nickname*."
Other output (e.g., /who commands, invitations from other users to
join channels, and so forth) appears interspersed with other activity
on the screen.
* 6: Command structure
Ordinary text typed at irc is sent as one's messages to everyone else
on the same channel, modulo personal choices for private messages and
the like. Commands to irc itself all begin with a command character,
which is initially `/' but may be changed to any other character
desired.
Commands may in general be abbreviated to a unique prefix.
** 6.1: Leaving irc
The way to get out of irc is to enter the /signoff command. "/si" is
sufficient. Also equivalent are "/exit," "/bye," and "/quit." A
signoff command may include a comment which will be seen by everyone
on the current channel of the person who left.
** 6.2: Getting help
Type "/help." Follow the instructions.
** 6.3: User commands
The most important commands supported by irc are:
help signoff who whois
list topic join channel
links msg invite ignore
users stats nick away
info clear query cmdch
date mode
*** 6.3.1: help
Information on how to use the rest of the system is available via
/help. The modeline says so as well.
*** 6.3.2: signoff {comment}
/signoff exits chat. Optional comment may be included; see above.
*** 6.3.3: who
/who returns information on who is using chat. /who without arguments
prints info on all users that can be seen. Users of public channels
show up with their channel identified. Users of private channels
appear, but they are specified as being on a private, unspecified
channel. Users of secret channels and users whose user mode is +i
(invisible) do not appear at all.
Giving a channel name as an argument to /who returns only those users of the
specified channel. This still doesn't show users of secret channel or
invisible users one is actually on the same channel with them. Users
of private channels are shown, if an exact channel name is given.
*** 6.3.4: whois
This returns information about individual users. Say "/whois
nickname" to get information on the login name and host from which the
nicknamed user comes.
*** 6.3.5: topic
Channels can be given off-the-cuff "topics." Saying "/topic some
string of text" will associate that topic with the current channel.
*** 6.3.6: list
/list will give lists of active channels, the number of users of each,
and the topics therewith associated. Again, secret channels do not
appear and private channels only appear as Prv.
*** 6.3.7: join & channel
/join or /channel are the means to enter a channel. Give the channel
name as an argument. If this is a secret or hidden channel, /who
commands will show oneself and any other users of one's channel.
One's arrival on a channel is announced to the rest of the users
already on that channel. Silent, anonymous "lurking" is not
supported.
*** 6.3.8: links
/links lists the currently-active set of chat servers. Beware: this
list can be quite long, and will undoubtedly get longer as chat gains
wider use. As of 15 May, 1992, about 130 servers is typical.
*** 6.3.9: msg
A single message can be sent privately to a certain user with /msg.
Type /msg nickname and the text to be sent. It will be sent privately
to the indicated nickname.
*** 6.3.10: invite
If there is a user online to whom one wishes to speak, one may invite
that user to join oneself on a certain channel. One types "/invite
nickname" with an optional channel number. The receiving user gets a
one-line message indicating the sender and the invitation. The
receiving user is free to ignore the invitation, of course.
*** 6.3.11: ignore
If one wants to ignore messages sent by some other user or users, it
may be done with /ignore command. One can ignore someone by their
nickname, or by their user@host data. Wildcards may be used.
*** 6.3.12: users
/users will return a list of the users logged into one's system. With
an optional hostname identifying a chat server host, the users logged
into that system will be listed.
*** 6.3.13: stats
This command returns counts of various protocol operations of one's
chat server. It is neither particularly useful nor interesting to
users other than operators.
*** 6.3.14: nick
One can change nicknames by issuing "/nick new-nickname." All users
on one's channel will be advised of the change. NOTE: If one enters
chat with a nickname clash (e.g., one's login name is the same as
someone else's, and the other user got there first), the system will
not let one enter until one issues a /nick command with a unique
nickname.
*** 6.3.15: away
Sometimes, one wishes to remain connected to the chat system, but one
must be elsewhere for a while. One can issue an /away command with
arbitrary text as argument, which will mark oneself as being away. If
someone sends an away'd user a private message (via /msg or in a
private session set up via /query; see below), the sender will get a
message back from the server indicating the away-ness and the message
which was set.
*** 6.3.16: info
/info returns information regarding the author and copyright of the
chat system.
*** 6.3.17: clear
At times, one wishes that one's screen weren't so cluttered. /clear
makes it so.
*** 6.3.18: query
This command is used to set up private communications `outside' the
normal channel system.
When one enters "/query nickname," the indicated nickname is set up as
the sole recipient of anything which one types thereafter. Thus, if
user A executes "/query B" and user B executes "/query A," they have
set up a private communication between themselves. Significantly, it
remains possible for them to stay on their respective channels, which
need not be the same, and listen to whatever conversation is going on
around them as well, though they cannot respond to that ambient
conversation without leaving the private conversation they have set up.
One leaves this private mode by issuing /query without arguments.
*** 6.3.19: cmdch
The `/' character may not be best for some people to use as their
command character. It can be changed with "/cmdch <character>."
*** 6.3.20: mode
This command can be used for altering the various modes of a channel
(see the explanation of channel modes above). /mode command can only
be issued by channel operators.
** 6.4: Operator commands
The chat system administrators on each host have additional
responsibilities and power over the configuration and operation of the
servers. The commands to do so are delineated below.
*** 6.4.1: oper
Users who have the potential for operator privileges initially invoke
those privileges by "/oper nickname password," where nickname is the
nickname under which operation is intended, and password is the
password known to the chat system for that nickname.
*** 6.4.2: kill
Obnoxious users had best beware the operator who's fast on the /kill
command. "/kill nickname" blows any given nickname completely out of
the chat system.
Obnoxiousness is not to be tolerated. But operators should not use
/kill lightly.
*** 6.4.3: quote
Raw access to the underlying server protocol is possible through the
user of the /quote command. "/quote any text at all" is used to send
direct, unmodified commands to the servers. This has a wide variety
of uses, such as deliberately killing a local or remote chat daemon,
invoking operator privileges for otherwise-operator-priv-forbidden
users, and related tasks. It is, again, a very powerful operation,
and not to be used lightly.
* 7: Questions, problems, troubles?
If you have problems, please contact Christopher Davis (ckd@eff.org) or
Helen Rose (hrose@eff.org). Known as "ckd" and "Trillian" on irc,
respectively. You can also ask for help on some of the operator
channels on irc, for example #twilight_zone and #eu-opers. They will
be able to assist you in whatever problems you are having with IRC.
+241
View File
@@ -0,0 +1,241 @@
Internet Relay Chat Operator Etiquette Guide (May, 1992)
[ $Id$ ]
Welcome! You've either been selected to be an IRC Operator or you have set
up your server and thus have taken on the dual task of IRC Server
Administrator and IRC Operator. Your future days will be filled with hours
of fun chatting on IRC, and then wondering why everyone you talked to went
away, because the links had apparently broken.
Linking:
========
You will be assigned links from the IRC Routing Coordinators. Please
use these links and these links ONLY. The links have been designed to
maximize efficiency and make delays in chatting minimal. You will
usually be given two links, one to each regional backbone site.
Connect to the primary site first and then to the secondary site. You
should not need to connect to any other sites. You will be informed if
this policy changes.
Kills
=====
/kill is a special operator command. You should use it with
care, and only if absolutely needed. The format is as follows:
/kill NICKNAME comment. Comment can be a phrase of almost any length
(within reason) and should be used for specifying the reason of the kill.
Example: /kill Trillian She's a Ghost
IRC Ghosts are created after a net split has occured and the net has yet to
relink.
/wallops PHRASE This is used to talk to those users who have their
user mode set to +w. /wallops used to be a way for operators to talk
about important matters in linking etc., but it has little use
nowadays.
/TRACE command /TRACE is useful to know what servers are connected to
what. Sometimes /trace can be confusing, especially if you are using
it for the first time. Here is an example of a trace from
stekt1.oulu.fi to cdc835.cdc.polimi.it.
/TRACE cdc835.cdc.polimi.it
*** Link stekt1.oulu.fi<2.7.2> ==> cdc835.cdc.polimi.it
*** Link rieska.oulu.fi<2.7.1>e ==> cdc835.cdc.polimi.it
*** Link nic.funet.fi<2.7.1>e ==> cdc835.cdc.polimi.it
*** Link ircserver.et.tudelft.nl<2.7.1>e ==> cdc835.cdc.polimi.it
*** Link vesuv.unisg.ch<2.7.1>e ==> cdc835.cdc.polimi.it
*** Link apollo.di.unipi.it<2.7.1>e ==> cdc835.cdc.polimi.it
*** Oper Class[10] ==> Allanon[cdc835.cdc.polimi.it]
*** User Class[11] ==> Lupandy[plus2.usr.dsi.unimi.it]
*** Serv Class[3] ==> apollo.di.unipi.it[131.114.4.36] 132S 445C
*** User Class[11] ==> Punk[pluto.sm.dsi.unimi.it]
*** User Class[11] ==> TheEdge[pluto.sm.dsi.unimi.it]
*** User Class[10] ==> Mork[cdc835.cdc.polimi.it]
*** User Class[11] ==> Lollo[c700-2.sm.dsi.unimi.it]
*** User Class[11] ==> Attila[hp2.sm.dsi.unimi.it]
*** Class 0 Entries linked 1
*** Class 11 Entries linked 5
*** Class 10 Entries linked 2
*** Class 3 Entries linked 1
From this output you can see that the route goes first to
rieska.oulu.fi (running version 2.7.1e), then nic.funet.fi,
ircserver.et.tudelft.nl, vesuv.unisg.ch, and apollo.di.unipi.it, after
which cdc835 is the next server. Then we see the connections on
cdc835: One operator (Allanon) and 6 users are on line. The class of
each connection is given. There is only one server connected to cdc835
at the moment, and that server is apollo.di.unipi.it (cdc835 is said
to be a "leaf" server at the moment). The numbers 132S 445C in the end
of line tell us, that there are 132 servers and 445 clients connected
to the servers from apollo onwards. Finally we see a grand total of
connections in each connection class.
/SQUIT server {comment}
/squit isolates a specified server from the next closest server, when
you look at it along the trace path starting from your server.
This is usually used in conjunction with CONNECT (explained later) to
reroute traffic. This will be described in detail in the section
"routing", preceding CONNECT.
Usage (and examples):
/squit E
If the network looks like this initially (and you are on server A)
A <---> B <---> C <---> D
^
|
v
G <---> E <---> F <---> ... (rest of the net)
Then after issuing the previous /squit the network would look like this:
A <---> B <---> C <---> D
G <---> E <---> F <---> ...
/squit E {comment}
It usually helps to give a reason why you are sending a
SQUIT for a server. This can be accomplished by sending
the command "/squit server This link is making the US route
through Finland". The SQUIT will then be sent out, and the
server sending the squit will WALLOP sending the comment
so all operators can see it.
/CONNECT server {portnum server2}
/connect is used to establish a link between two servers. These
connections must be authorized by each server's ircd.conf file, but
any operator can issue a CONNECT between authorized servers. This
command is most often used in conjunction with SQUIT to reroute
traffic.
If only one argument is given, this command causes the server you
are on to attempt to connect to the server specified. For example,
"/connect B" (in the previous example) would cause your server (A) to
connect to B.
Suppose you wanted to reconnect server F to server E? You cannot
contact server F since it is no longer part of your network. However,
you can tell server E to connect to it. A remote CONNECT can be issued
to server E.
Examples (assume you are on server A):
/connect B
If the network initially looks like this:
A B <---> ... (rest of network)
Then afterwards (if the connection succeeds) the network will look
like this:
A <---> B <---> ...
In the example where you wanted to reconnect server E to F, the
following syntax would be appropriate (note: we are assuming that
F's irc socket port is 6667, which is the default)
/connect F 6667 E
If the network initially looks like this:
A <---> B <---> C <---> D
^
|
v
G <---> E F <---> ...
Then after your CONNECT request the network topology will look like this:
A <---> B <---> C <---> D
^
|
v
G <---> E <---> F <---> ...
Be careful when connecting servers that you know which command to
use! If you simply issued "/connect F" from your server, the
network would look like this:
... <---> F <---> A <---> B <---> C <---> D
^
|
v
G <---> E
which for various reasons (discussed below) might be very
undesirable.
Routing
=======
When and how should you do rerouting? This depends on where your
server is topologically located and whether you route traffic. If you
are a leaf node (i.e. only connect to one server at a time) then
chances are you won't need to do any routing at all. Your ircd.conf
file should be written to connect to the best possible servers first
before trying alternates. At the most, you may decide to squit an
alternate server and connect to your primary if/when it goes back up.
This only involves local squits, however.
If you are operating a backbone site, you may find yourself
rerouting things quite often. If the servers badger.ugcs.caltech.edu
(Pasadena, CA), irc.mit.edu (Boston, MA), minnie.cc.utexas.edu
(Austin, TX) and ucsu.colorado.edu (Boulder, CO) were routing traffic
in the following way:
... <---> minnie <---> badger <---> bucsd <---> ucsu <---> ...
It would make sense to either squit ucsu and reconnect it to minnie,
or disconnect minnie from badger and connect to ucsu, because
topologically (and geographically) ucsu and minnie are rather close.
There are occasions when US traffic for some reasons winds up being
routed through Australia. This is another case where traffic should
definitely be rerouted. However, there are sometimes occasions when
routing is going through "backdoor" methods. If you see something
totally outrageous (like the east coast and the west coast being
connected by eff.org) please ask for example on channel #twilight_zone
before you send any squits, because chances are, it's like that for a
reason.
Of course, any operator can remotely squit or connect servers, so
if you see a problem and you're sure you know how to fix it, it's a
good idea to do so. If the operator of a server which is is being
routed poorly is online, it's probably best to contact him/her first,
though.
Chances are that hub operators will be more familiar with the
general topology of the network and which servers connect to which
(which is why most of the manual routing is left to them), so if you
have any problems, talk to the other operators on operator channels
(#twilight_zone, #eu-opers etc.) That's what they are there for!
Also, be aware that servers will notify all the operators online of
remote SQUITs and CONNECTs via WALLOPS.
Please let us know if there should be any additions to this guide. Again,
this is not MANDATORY, this is just a GUIDE. Please conduct yourself as
an IRC Operator would...you are looked upon for assistance, both emotional
and mental.
Helen Rose Christopher Davis Noah Friedman
<hrose@cs.bu.edu> <ckd@cs.bu.edu> <friedman@ai.mit.edu>
January, 1991
Updated by
Mauri Haikola
<mjh@stekt.oulu.fi>
May, 1992
-41
View File
@@ -1,41 +0,0 @@
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.
-334
View File
@@ -1,334 +0,0 @@
Written by ^MrMike^ (mike@sector001.org) for the UnrealIRCd
Modified by codemastr to include a few other commands
(note, this file will be updated in CVS asap)
PRIVMSG
- Used to send a message to a person or a channel
Syntax: MSG <nick>,<nick2>,<nick3>,<nick4> <text>
Example: PRIVMSG Stskeeps :Hello. Unreal is a very good ircd.
Example: PRIVMSG Stskeeps,codemastr,DrBin :Hello Unreal Coding Team
NOTICE
- Mainly used for one-time communication or for the results of a command.
Syntax: NOTICE <nick>,<nick2>,<nick3>,<nick4> <text>
Example: NOTICE codemastr :Hi. How are you?
Example: NOTICE codemastr,Stskeeps :Hi codemastr and Stskeeps.
MODE
- Used to change the mode of a channel or a user. You can only change modes for channel you are an Operator or Half-Op on. Also, you can only changes user modes for yourself.
Syntax: MODE <channel/user> <mode>
Example: MODE #UnrealIRCD +tn
Example: MODE #UnrealIRCD +ootn codemastr Stskeeps
NICK
- Changes your "online identity" on a server. All those in the channel you are in will be alerted of your nickname change.
Syntax: NICK <new nickname>
Example: NICK |codemastr|
JOIN
- Used to enter one or more channels on an IRC server. All occupants of the channel will be notified of your arrival.
Syntax: JOIN <chan>,<chan2>,<chan3>
Example: JOIN #UnrealIRCD
Example: JOIN #UnrealIRCD,#OperHelp
PING
- Determines the amount of lag (time it takes for a response to reach a person and come back) between yourself and someone else.
Syntax: PING <user>
Example: PING Stskeeps
WHOIS
- Shows information about the user in question, such as their "name", channels they are currently in, their hostmask, etc.
Syntax: WHOIS <user>
Example: WHOIS DrBin
ISON
- Used to determine of a certain user or users are currently on the IRC server based upon their nickname.
Syntax: ISON <user> <user2> <user3> <user4>
Example: ISON Stskeeps DrBin codemastr NickServ ChanServ OperServ MemoServ
USER
- Used during registration to server (i.e. during inital connection sequence.)
PART
- Used to part (or leave) a channel you currently occupy. All those in the channel will be notified of your departure.
Syntax: PART <chan>,<chan2>,<chan3>,<chan4>
Example: PART #UnrealIRCD
Example: PART #UnrealIRCD,#OperHelp
QUIT
- Disconnects you from the IRC server. Those in the channels you occupy will be notified of your departure. If you do not specify a reason, your nickname becomes the reason.
Syntax: QUIT <reason>
Example: QUIT Leaving!
USERHOST
- Returns the userhost of the user in question. Usually used by scripts or bots to retrieve userhost information.
Syntax: USERHOST <nickname>
Example: USERHOST codemastr
SVSNICK
- Can only be used by a U:Lined server (i.e. services). Changes the nickname of the user in question.
Syntax: SVSNICK <nickname> <new nickname> :<timestamp>
Example: SVSNICK Stskeeps Techie :963086432
SVSMODE
- Can only be used by a U:Lined server (i.e. services). Changes the mode of the channel or user in question.
Syntax: SVSMODE <channel/user> :<mode>
Example: SVSMODE #UnrealIRCD :+o Stskeeps
Example: SVSMODE codemastr :+i
LUSERS
- Provides local and global user information (such as current and maximum user count).
Syntax: LUSERS <server>
CHANSERV
- Will send a secure message to ChanServ. Similar to /msg ChanServ, but more secure. May not work if server is configured improperly.
TOPIC
- Sets/Changes the topic of the channel in question, or just display the current topic.
Syntax: TOPIC <channel>
Syntax: TOPIC <channel> <topic>
Example: TOPIC #operhelp
Example: TOPIC #UnrealIRCD Welcome to the Unreal IRCD Home Channel.
INVITE
- Sends a user an invitation to join a perticular channel. You must be an operator on the channel in order to invite a user into it.
Syntax: INVITE <user> <channel>
Example: INVITE codemastr #OperHelp
KICK
- Removes a user from a channel. Can only be used by Operators or Half-Ops. If no reason is specified, your nickname becomes the reason.
Syntax: KICK <channel> <user> <reason>
WALLOPS
- Sends a "message" to all those with the umode +w. Only IRCops can send wallops, while anyone can view them.
Syntax: WALLOPS <message>
KILL
- Forcefully disconnects a user from an IRC Sever. Can only be used by IRCops.
Syntax: KILL <user> <reason>
Example: KILL Clone5 Cloning is not allowed
AWAY
- Sets your online status to "away".
Syntax: AWAY <reason> (AWAY without a reason will unset you away)
Example: AWAY Walking the dog...
SQUIT
- Disconnects an IRC Server from the network
Syntax: SQUIT <server>
Example: SQUIT leaf.*
WHO
- Searches user information (-i users only) for supplied information. IRCops are a ble to search +i users.
Syntax: WHO <search>
Example: WHO *.aol.com
WHOWAS
- Retrieves previous 'WHOIS' information for users no longer connected to the server.
Syntax: WHOWAS <nickname>
Example: WHOWAS Stskeeps
LIST
- Provides a complete listing of all channels on the network. If a search string is specified, it will only show those matching the search string.
Syntax: LIST <search string>
Example: LIST
Example: LIST *ircd*
NAMES
- Provides a list of users on the specified channel.
Syntax: NAMES <channel>
Example: NAMES #help
OPER
- Attempts to give a user IRCop status.
Syntax: OPER <uid> <pass>
Example: OPER codemastr codeit
CONNECT
- Links another IRC server to the one you are currently on. Remote connections are also possible.
Syntax: CONNECT <server>
Syntax: <CONNECT> <hub> <port> <leaf>
Example: CONNECT leaf.*
Example: CONNECT hub.* 6667 leaf.*
VERSION
- Provides version information of the IRCD software in usage.
Syntax: VERSION
STATS
- Provides certain statistical information about the server (for example, u will provide uptime information).
Syntax: STATS <letter>
Example: STATS u
LINKS
- Lists all of the servers currently linked to the network.
Syntax: LINKS
ADMIN
- Provides administrative information regarding the server.
Syntax: ADMIN <server>
SAMODE
- Allowed a services administrator to change the mode on a channel, without having operator status.
Syntax: SAMODE <channel> <mode>
Example: SAMODE #UnrealIRCD +m
SVSKILL
- Can only be used by a U:Lined server. Forcefully disconnects a user from the network.
Syntax: SVSKILL <user> <reason>
Example: SVSKILL codemastr Goodbye
SVSNOOP
- Can only be used by a U:Lined server. Enabled or disables whether Global IRCop functions exist on the server in question or not.
Syntax: SVSNOOP <server> <+/->
Example: SVSNOOP leaf.* -
MOTD
- Displays the Message of the Day.
Syntax: MOTD
Syntax: MOTD <server>
KLINE
- "Bans" a hostmask from connection to the IRC server.
Syntax: KLINE <hostmask> <reason>
Example: KLINE *@*.aol.com Abuse
UNKLINE
- Removes a k:line from the server.
Syntax: UNKLINE <hostmask>
Example: UNKLINE *@*.aol.com
ZLINE
- Disables all access to the IRC server from a specified IP.
Syntax: ZLINE <ip>
Example: ZLINE 127.0.0.1
UNZLINE
- Removes a currently active z:Line.
Syntax: UNZLINE <ip>
Example: ZLINE 127.0.0.1
GLOBOPS
- Sends a global "message" to all IRCops. Only viewable by IRCops (unlike WallOps, which can be viewed by normal users).
Syntax: GLOBOPS <message>
Example: GLOBOPS Going to be akilling those clones...
CHATOPS
- GLOBOPS is usually reserved for important network information. Therefore, for Oper Chat, CHATOPS was invented. IRCops with the +c flag enabled will be able to send/receive CHATOPS messages.
Syntax: CHATOPS <message>
Example: CHATOPS How's everyone doing today?
LOCOPS
- Similar to GLOBOPS, except only received by those IRCops local to your server.
Syntax: LOCOPS <message>
Example: LOCOPS Going to be adding a temp k:line for that user...
REHASH
- Prompts the server to reread its configuration file (ircd.conf). Will also remove any temporarly lines (i.e. k:line).
Syntax: REHASH
RESTART
- Kills and restarts the irc daemon, disconnecting all users currently on that server.
Syntax: RESTART
Syntax: RESTART <password>
DIE
- Kills the irc daemon, disconnecting all users currently on that server.
Syntax: DIE
Syntax: DIE <password>
RULES
- Reads the rules.conf file and sends the contents to the user.
Syntax: RULES
MAP
- Provides a "network map" of the IRC network. Mainly used for routing purposes.
Syntax: MAP
DALINFO
- Original DALnet ircd credits.
Syntax: DALINFO
MKPASSWD
- Used for generating an encrypted password. Mainly used for encrypted O:Line passwords.
Syntax: MKPASSWD <password>
Example: MKPASSWD codeit
ADDLINE
- Adds a line to the server's ircd.conf file. After added, you must REHASH the server for it to take affect.
Syntax: ADDLINE <line>
Example: ADDLINE C:127.0.0.1:server.dal.net:linking:7325:50
TECHAT
- Similar to CHATOPS, but only Technical Admins are able to send/receive messages on this "channel".
Syntax: TECHAT <message>
Example: TECHAT What do you think of the new routing map?
NACHAT
- Similar to CHATOPS (and TECHAT), but only Network Admins are able to send/recieve messages.
Syntax: NACHAT <message>
Example: NACHAT Linking a new server in a couple minutes...
KNOCK
- For channels which are invite only, you can "knock" on the channel to request an invite.
Syntax: KNOCK <channel> <message>
Example: KNOCK #secret_chan I'm an op, let me in!
CREDITS
- Credits for Unreal IRCD.
Syntax: CREDITS
LICENSE
- GPL information.
Syntax: LICENSE
SVSJOIN
- Forces a user to join a channel. Can only be used by a U:Lined server.
Syntax: SVSJOIN <nick> <channel>
Example: SVSJOIN codemastr #jail
SAJOIN
- Forces a user to join a channel. Can only be used by a Services Admin.
Syntax: SAJOIN <nick> <channel>
Example: SAJOIN Stskeeps #OperHelp
SVSPART
- Forces a user to leave a channel. Can only be used by a U:Lined server.
Syntax: SVSPART <nick> <channel>
Example: SVSPART codemastr #jail
SAPART
- Forces a user to leave a channel. Can only be used by a Services Admin.
Syntax: SAPART <nick> <channel>
Example: SAPART Stskeeps #OperHelp
SETHOST
- Changes the hostname of yourself. Only available to IRCops.
Syntax: SETHOST <host>
Example: SETHOST coder.tspre.org
SETIDENT
- Changes the ident of yourself. Only available to IRCops.
Syntax: SETIDENT <ident>
Example: SETIDENT coder
SETNAME
- Changes the "IRC Name" (or "Real Name") of yourself. Available to everyone.
Syntax: SETNAME <name>
Example: SETNAME Unreal Coding Team Member
CHGHOST
- Changes the hostname of a user currently on the IRC network. Only available to IRCops.
Syntax: CHGHOST <nick> <host>
Example: CHGHOST codemastr coder.tspre.org
CHGIDENT
- Changes the ident of a user currently on the IRC network. Only available to IRCops.
Syntax: CHGIDENT <nick> <ident>
Example: CHGIDENT codemastr coder
CHGNAME
- Changes the "IRC Name" (or "Real Name") of a user currently on the IRC network. Only available to IRCops.
Syntax: CHGNAME <nick> <name>
Example: CHGNAME codemastr Unreal Coding Team Member
+478 -720
View File
File diff suppressed because it is too large Load Diff
-62
View File
@@ -1,62 +0,0 @@
/*
* 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";
/* This needs to be an unused port, that the IRCd will bind
* to, and make insecure proxies connect to.
*/
blackhole [ip]:port;
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;
};
socks {
ban-message "Insecure SOCKS server";
quit-message "Insecure SOCKS server";
ban-time "1d";
};
/*
* 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;
};
};
+53 -12
View File
@@ -52,7 +52,7 @@ A: T:Lines is a new Unreal feature that makes it able to show different
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 "Danish" RULLES
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
@@ -61,16 +61,65 @@ A: T:Lines is a new Unreal feature that makes it able to show different
7) Where can i download updates to Unreal?
A: Mostly you can download the newest version at
http://www.unrealircd.com
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.ircsystems.net #unrealircd
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??
@@ -141,12 +190,4 @@ match.c:247: argument 'n' doesn't match prototype
Then go into include/setup.h and add this line:
#define GOT_STRCASECMP
14) I have my ircd linked to 3.2beta4 and lower servers and people walk
bans!!
In include/config.h, define COMPAT_BETA4_KEYS, and make sure all servers
are using the exact same cloak keys. If you are running pre-3.2 servers
along with 3.2 servers this is unavoidable.
(C) Carsten Munk 1999-2000
(C) also Finny Merrill 2001
(C) Carsten Munk 1999
-109
View File
@@ -1,109 +0,0 @@
RPL_PROTOCTL (RPL_ISUPPORT):
version: 2.1+ (new version: 3.1+)
This sends a numeric during client signon that lists various features that
Unreal supports. This allows client and script writers to know what features
they can use, and various parameters about the irc server. The numeric
used is '005' to try and maintain some semblance of compatibility with
DALnet which has a similar feature. The 005 numeric may be split across
multiple lines if the length exceeds 512 characters.
The format is:
:servername 005 target feature1 feature2... :are supported by this server.
:servername 005 target feature200... :are supported by this server.
features are either a word describing the feature eg: 'SILENCE', or a word
describing the feature and an equals and a list of parameters.
eg: SILENCE=15 (says that we support silence, and we support up to 15 of
them per user), or FOO=12,3 (says we support FOO with parameters 12 and 3)
for example ircu2.10.08 lists:
:test.undernet.org 005 test SILENCE=15 WHOX WALLCHOPS USERIP CPRIVMSG
CNOTICE MODES=6 MAXCHANNELS=10 MAXBANS=30 NICKLEN=9 TOPICLEN=160
KICKLEN=160
-------------------------------------------------------------------------
UnrealIRCd Supports:
:unreal.server 005 nick MAP KNOCK SAFELIST HCN WATCH=%i SILENCE=%i MODES=%i
MAXCHANNELS=%i MAXBANS=%i NICKLEN=%i TOPICLEN=%i
KICKLEN=%i CHANTYPES=# PREFIX=%s :are supported by this server
Feature "MAP"
-------------
/map shows the servers as the server percieves them, who's connected
to who in a pretty display, with number of users attached to each server
Numerics used:
RPL_MAP (006)
RPL_MAPEND (007)
Feature "KNOCK"
---------------
Command: /KNOCK #Channel :<Reason>
This command will only work if you are not a member of the channel and the
+K (No knocks) mode is not on, and the channel is not +i (and you are not
banned). This will send a notice to ops in the channel, about that the user
"knocked".
Feature "SAFELIST"
------------------
This note means that the user will not get disconnected when doing a /list,
as some IRC networks do
Feature "HCN"
-------------
This is a special feature that you activate using /protoctl +HCN,
that will cause +c notices when being oper, being in the Hybrid IRCd style
Feature "WATCH"
---------------
Parameters: How many watch entries are possible
This will ensure the server is able to do the DALnet WATCH command
Feature "SILENCE"
-----------------
Parameters: How many silence entries you can have
Version: unknown, ircu2.9.32 at least.
Silence is a server side ignore. You can /silence +hostmask or
/silence +nick, to add someone to your silence list, or use /silence
-hostmask to remove it. /silence will list your 'silence list'.
you can /silence nick, to see someone elses silence list (useful for
helping someone). Silence is preferably used as a last resort as it
tends to use server CPU time.
Syntax:
SILENCE +hostmask
SILENCE +nick
SILENCE -hostmask
SILENCE -nick
SILENCE nick
reply:
RPL_SILELIST 217
RPL_ENDOFSILELIST 218
Feature/Modifier "MODES"
------------------------
Parameters: How many modes with parameters you can use in one /mode buffer
Feature/Modifier "MAXCHANNELS"
------------------------------
Parameters: How many channels a normal user can join (opers may have
unlimited)
Feature/Modifier "MAXBANS"
+82
View File
@@ -0,0 +1,82 @@
.\" $Id$
.TH IRC 1 "7 October 1990"
.SH NAME
irc \- User Interface to Internet Relay Chat Protocol
.SH SYNOPSIS
\fBirc\fP [\fB-p\fP \fIportnum\fP] [\fB-c\fP \fIchannel\fP] [ \fInickname\fP [ \fIserver\fP ]]
.SH DESCRIPTION
.LP
\fBIrc\fP is a user interface to the Internet Relay Chat, a CB-like
interactive discussion environment. It is structured into \fIchannels\fP,
which are public discussion forums, and also allows for private intercommunication.
Each participant has a \fInickname\fP, which is the one specified in the command
line or else his login name.
.LP
Once invoked, \fBirc\fP connects as a client to the specified server,
\fIserver\fP or to the default one (see below). The screen splits into a dialogue
window (the major part
of the screen) and a command line, from which messages can be sent and
commands given to control irc.
.SH COMMAND SYNTAX
The syntax of irc commands is of the form \fB/COMMAND\fP. The most notable
ones are listed below. For an uptodate list, use the \fBHELP\fP command
of \fBirc\fP. Case is ignored.
.IP "\fB/ADMIN\fR [\fIserver\fP]"
Prints administrative information about an IRC \fIserver\fP.
.IP "\fB/AWAY\fP [\fImessage\fP]"
Mark yourself as being away (with an automatic reply \fImessage\fP
if specified)
.IP "\fB/BYE\fR, \fB/EXIT\fR, \fB/QUIT\fR"
Terminate the session
.IP "\fB/CHANNEL\fR [\fIchannel\fP]"
Join another \fIchannel\fP
.IP "\fB/CLEAR\fR"
Clear the screen
.IP "\fB/HELP\fR [\fIcommand\fP]"
Display a brief description of the \fIcommand\fP (or list all commands, if none
specified).
.IP "\fB/SUMMON\fR \fIuser\fP"
Allows to summon a \fIuser\fP specified as a full Internet address, i.e.,
\fIlogin@host.domain\fP, to an IRC dialogue session (in much the same
way as the talk(1) command). It is usable ONLY if the irc daemon runs on
the target machine (host.domain).
.IP "\fB/TOPIC\fR \fItopic\fP"
Sets the \fItopic\fP for the current channel
.IP "\fB/WHO\fR [\fIchannel\fP|*]"
Lists all users of IRC if no argument, of the specified \fIchannel\fP or of the
current channel (*).
.SH ARGUMENTS
.IP "\fB-p\fP \fIportnum\fP"
TCP/IP "port number. Default is 6667 and this option should seldom if ever"
be used.
.IP "\fB-c\fP \fIchannel\fP"
\fIChannel\fP number to join upon beginning of the session. Default is no channel.
.IP "\fInickname\fP"
\fINickname\fP used in the session (can be changed with the \fB/NICK\fP command).
Default is user login name.
.IP "\fIserver\fP"
\fIServer\fP to connect to. Default is specified in the irc system configuration
file, and can be superseded with the environment variable IRCSERVER.
.SH EXAMPLE
.RS
.nf
tolmoon% \fBirc -p6667 Wizard tolsun\fP
.fi
.RE
.LP
connects you to irc server in host tolsun (port 6667) with nickname Wizard
.SH COPYRIGHT
Copyright (c) 1988 University of Oulu, Computing Center, Finland.
.nf
Copyright (c) 1988,1989,1990 Jarkko Oikarinen
.nf
All rights reserved.
For full COPYRIGHT see LICENSE file with IRC package.
.SH "SEE ALSO"
ircd(8)
.SH BUGS
What bugs ?
.SH AUTHOR
Jarkko Oikarinen <jto@tolsun.oulu.fi>
.nf
Manual page updated by Michel Fingerhut <Michel.Fingerhut@ircam.fr>
+140
View File
@@ -0,0 +1,140 @@
.\" $Id$
.TH IRCD 8 "29 March 1989"
.SH NAME
ircd \- The Internet Relay Chat Program Server
.SH SYNOPSIS
.hy 0
.IP \fBircd\fP
[-a] [-c] [-i] [-o] [-q] [-t] [-d directory]
[-f configfile] [-x debuglevel] [-h hostname] [-p portnum]
.SH DESCRIPTION
.LP
\fIircd\fP is the server (daemon) program for the Internet Relay Chat
Program. The \fIircd\fP is a server in that its function is to "serve"
the client program \fIirc(1)\fP with messages and commands. All commands
and user messages are passed directly to the \fIircd\fP for processing
and relaying to other ircd sites. The \fIirc(1)\fP program depends upon
there being an \fIircd\fP server running somewhere (either on your local
UNIX site or a remote ircd site) so that it will have somewhere to connect
to and thus allow the user to begin talking to other users.
.SH OPTIONS
.TP
.B \-d directory
This option tells the server to change to that directory and use
that as a reference point when opening \fIircd.conf\fP and other startup
files.
.TP
.B \-o
Starts up a local ircdaemon. Standard input can be used to send IRC
commands to the daemon. The user logging in from standard input will
be given operator privileges on this local ircd. If ircd is a setuid program,
it will call setuid(getuid()) before going to local mode. This option
can be used in inetd.conf to allow users to open their own irc clients
by simply connecting their clients to the correct ports. For example:
.TP
.B
irc stream tcp nowait irc /etc/ircd ircd \\-f/etc/ircd.conf \\-o
allows users connecting to irc port (specified in /etc/services) to start
up their own ircdaemon. The configuration file should be used to check from
which hosts these connections are allowed from. This option also turns
on the autodie option -a.
.TP
.B \-a
Instructs the server to automatically die off if it loses all it's clients.
.TP
.B \-t
Instructs the server to direct debugging output to standard output.
.TP
.B \-x#
Defines the debuglevel for ircd. The higher the debuglevel, the more stuff
gets directed to debugging file (or standard output if -t option was used
as well).
.TP
.B \-i
The server was started by inetd and it should start accepting connections
from standard input. The following inetd.conf-line could be used to start
up ircd automatically when needed:
.TP
.B
ircd stream tcp wait irc /etc/ircd ircd \-i
allows inetd to start up ircd on request.
.TP
.B \-f filename
Specifies the ircd.conf file to be used for this ircdaemon. The option
is used to override the default ircd.conf given at compile time.
.TP
.B \-c
This flag must be given if you are running ircd from \fI/dev/console\fP or
any other situation where fd 0 isnt a tty and you want the server to fork
off and run in the background. This needs to be given if you are starting
\fIircd\fP from an \fIrc\fP (such as \fI/etc/rc.local\fP) file.
.TP
.B \-q
Using the -q option stops the server from doing DNS lookups on all the
servers in your \fIircd.conf\fP file when it boots. This can take a lengthy
amount of time if you have a large number of servers and they are not all
close by.
.TP
.B \-h hostname
Allows the user to manually set the server name at startup. The default
name is hostname.domainname.
.B \-p portname
Specifies the port where the daemon should start waiting for connections.
This overrides the default which is given at compile time.
.TP
.SH
If you plan to connect your \fIircd\fP server to an existing Irc-Network,
you will need to alter your local IRC CONFIGURATION FILE (typically named
"ircd.conf") so that it will accept and make connections to other \fIircd\fP
servers. This file contains the hostnames, Network Addresses, and sometimes
passwords for connections to other ircds around the world. Because
description of the actual file format of the "ircs.conf" file is beyond the
scope of this document, please refer to the file INSTALL in the IRC source
files documentation directory.
.LP
BOOTING THE SERVER: The \fIircd\fP server can be started as part of the
UNIX boot procedure or just by placing the server into Unix Background.
Keep in mind that if it is *not* part of your UNIXES Boot-up procedure
then you will have to manually start the \fIircd\fP server each time your
UNIX is rebooted. This means if your UNIX is prone to crashing
or going for for repairs a lot it would make sense to start the \fIircd\fP
server as part of your UNIX bootup procedure. In some cases the \fIirc(1)\fP
will automatically attempt to boot the \fIircd\fP server if the user is
on the SAME UNIX that the \fIircd\fP is supposed to be running on. If the
\fIirc(1)\fP cannot connect to the \fIircd\fP server it will try to start
the server on it's own and will then try to reconnect to the newly booted
\fIircd\fP server.
.SH EXAMPLE
.RS
.nf
tolsun% \fBircd\fP
.fi
.RE
.LP
Places \fIircd\fP into UNIX Background and starts up the server for use.
Note: You do not have to add the "&" to this command, the program will
automatically detach itself from tty.
.SH COPYRIGHT
(c) 1988,1989 University of Oulu, Computing Center, Finland,
.LP
(c) 1988,1989 Department of Information Processing Science,
University of Oulu, Finland
.LP
(c) 1988,1989,1990,1991 Jarkko Oikarinen
.LP
For full COPYRIGHT see LICENSE file with IRC package.
.LP
.RE
.SH FILES
/etc/utmp
"irc.conf"
.SH "SEE ALSO"
irc(1)
.SH BUGS
None... ;-) if somebody finds one, please inform author
.SH AUTHOR
Jarkko Oikarinen, currently jto@tolsun.oulu.fi,
manual page written by Jeff Trim, jtrim@orion.cair.du.edu,
later modified by jto@tolsun.oulu.fi.
+47
View File
@@ -0,0 +1,47 @@
[ $Id$ ]
The following macros are included in "ircd.m4" for use with the m4 text
preprocessor. "ircd.m4" is parsed before the IRC server conf file so they
are all available for use with that.
NOTE: The "ircd.m4" file is *ONLY* created by a "make install".
VERSION - current version string as in patchlevel.h
DEBUGMODE - if DEBUGMODE is define in config.h, is also defined for m4.
HOSTNAME - taken from hostname(1)
USER - username of person doing the "make install"
PORT - default port number as in config.h
PFREQ - default ping frequency as in config.h
CFREQ - default connect frequency as in config.h
MAXSENDQ - default max sendq as in config.h
CL - use this to wrap a class number
HOST - use this to wrap a hostname
HOSTM - use this to wrap the hostmask number in N-lines
ID - when wrapping the host field in an I-line, causes ident string return
to be used instead of user supplised username.
PASS - use this to wrap passwords in C/N/I/O lines
PING - use this to wrap the ping value in Y-lines
APORT - use this to wrap the port number in I-lines
CPORT - use this to wrap the port number in C-lines
SERV - use this to wrap server names
You might use some of these as
C:foo.bar.edu:PASS(boo):foo.bar.edu:APORT(6667)
I:ID(128.250.*)::ID(*.mu.oz.au):CPORT(6667)
In addition to these (rather weak macros), some more complete ones are
defined which already perform the above.
ADMIN - provide fields to it as you would an A-line
ALLOW - provide fields to it as you would an N-line
BAN - provide fields to it as you would an K-line
CLASS - provide fields to it as you would an Y-line
CLIENT - provide fields to it as you would an I-line
CONNECT - provide fields to it as you would an C-line
ME - provide fields to it as you would an M-line
HUB - first parameter is server you want to hub, second is optional and is
a mask against which other servers introduced must match against.
LEAF - works like HUB, except that the mask is matched against server names
to check if the link should be dropped.
SERVER - uses 6 fields, the first 4 as are found in an N-line, the last two
should be as you would use in a C-line. It expands out to provide
both a C and N line.
+294
View File
@@ -0,0 +1,294 @@
[ $Id$ ]
From: Carlo Kid - Runaway <carlo@sg.tn.tudelft.nl>
Subject: GUIDE for compiling your server
To: wastelanders@rush.cc.edu (New Wastelanders MailingList)
Date: Thu, 26 May 94 13:44:10 METDST
Cc: carlo@sg.tn.tudelft.nl
Mailer: Elm [revision: 66.33]
Status: RO
GUIDE for compiling your server, by Runaway
===============================================
First of all you must get all the files you need, as an example
I will explain how to compile irc2.8.19.U3.2.
The files you'll need in general are:
- irc2.8.19.U3.2.tar.gz
Or, when you already have an older version -say irc2.8.19.U3.1- a patch:
- irc2.8.19.U3.1-2.patch
It is possible you need more then one patch, especially when you already
upgraded more often. But in that case you already have those old patches.
Of course, in that case, you also already have the old directory tree:
/home..../yourname/....ircd/irc2.8.19.U3.1/
Scripts, patches and directory trees
====================================
It is good practise to:
1) Call the directory tree after the version
2) Let this directory ONLY contain what comes with the .tar.gz file!
Thus: Do NOT put ircd.conf, or any patches etc in it!!!
In general, you must be able to delete this whole directory tree
when you still have the original .tar.gz file and patches applied to it.
3) Put it in a directory ending on /ircd, THIS directory will contain
your ircd.motd, ircd.pid, ircd.conf and patches...
So, you end up with:
...ircd/irc2.8.19.U3.1-2.patch
...ircd/irc2.8.19.U3.1.tar.gz
or just:
...ircd/irc2.8.19.U3.2.tar.gz
at once.
Before you can delete the old directory tree, you must be SURE to save
everything thats in it. This is thus the .tar.gz file, all patches but
ALSO the following files:
Makefile
include/config.h
include/setup.h
You should always keep a copy of those files OUTSIDE the irc2.8.19.U3.2/
directory tree. For instance:
...ircd/irc.personal/Makefile
...ircd/irc.personal/include/config.h
...ircd/irc.personal/include/setup.h
To make these backups easy, you should make a script, called backup.personal
containing:
cp Makefile ../irc.personal/Makefile
cp include/config.h ../irc.personal/include/config.h
cp include/setup.h ../irc.personal/include/setup.h
If you also change anything in the other Makefiles (ircd/Makefile and
common/Makefile) you can add those too. Be sure to make the directories
by hand first.
Make the script 'backup.personal' executable with:
chmod 700 backup.personal
You must be able to run it from any directory, so put it in your ..bin/
Ok... so now you have a backup of everything. If you wanted to start
ALL over you could delete the directory tree, unzip and untar the archive
again, apply all patches to it, change the Makefile and config.h again,
put setup.h back, recompile and reinstall.
In some cases it is easy to do this with an other script, I call it 'repatch',
it provides you with an easy-to-change overview of the patched you have used.
Here is how my 'repatch' looks now (it is located in .../ircd/repatch).
cd ~/irc/ircd
rm -rf irc2.8.19 irc2.8.19.U3.2
zcat irc2.8.19.tar.gz | tar xf -
mv irc2.8.19 irc2.8.19.U3.2
cd irc2.8.19.U3.2
#patch -p1 < ../Makefile.config.h.patch 2> ../patch.out
#cp ../setup.h include/setup.h
patch -p1 < ../irc2.8.19-TSpre8.2.patch 2>> ../patch.out
patch -p1 < ../irc2.8.19.TSpre8-note.patch 2>> ../patch.out
patch -p1 < ../irc2.8.19.TSpre8-wallops.patch 2>> ../patch.out
patch -p1 < ../irc2.8.19.TSpre8-bquiet.patch 2>> ../patch.out
patch -p1 < ../irc2.8.19.TSpre8-silence.2.patch 2>> ../patch.out
#patch -p1 < ../irc2.8.19.U3-ban.patch 2>> ../patch.out
make clean
vi include/patchlevel.h
grep -e '\.rej' -e '[Ff]ail' -e fuzz ../patch.out
As you can see I commented out the patches Makefile.config.h.patch and
irc2.8.19.U3-ban.patch, and don't copy setup.h here. This is because
I wanted to make a virgin .U3.2.tar.gz for distribution via ftp-sites.
If I change the name of the directory, I have to change it in three
places :/
This script forces me to edit the patchlevel.h :) :)
The last grep warns me if anything went wrong with the patches.
Moreover, as you can see, I have a 'Makefile.config.h.patch'.
You should make your own as soon as you completely installed
and tested your server. It is very handy for re-installing a new
version.
To make this patch, edit the Makefile's and and config.h and type:
backup.personal
cd ..
rm -rf irc2.8.19
zcat irc2.8.19.tar.gz | tar xf -
diff -rc irc2.8.19 irc.personal > Makefile.config.h.patch
Check it with an editor if it looks ok. In the above, 'irc2.8.19.tar.gz'
is the virgin 'Avalon' version, I change the Makefiles in the .U3
however also, so you might wanna use the virgin .U3.2.tar.gz.
Starting ALL over (or begining for the first time)
==================================================
This is about EDITTING the Makefile(s) and config.h, and creating the
setup.h for the first time.
2.8.19 is different from 2.8.16 and before. You will have to EDIT the
Makefile and config.h that comes with the distribution. You can NOT
use the old Makefile and config.h you had !
First write down the path you want to use where you are going to put
the ircd.conf etc...
Edit the Makefile. Comments are in it. You should simply define that
what is needed for your Operating System.
Then edit the config.h
Then run ./Config to create setup.h ... at first simply hit return all the
time. If you insist on using gcc instead of cc, you must edit that in your
Makefile BEFORE running setup.h. You can't change that running Config,
although it asks for it. If you have more then one cc, you can add the
right path to in the Makefile (if it uses the wrong one).
Since U3.2, I changed the Makefile and config.h a little. The changes are:
- I added note.o to the dependency
- I added *.orig files to the 'make clean' (otherwise the *.orig generated
by some 'patch' programs will be left).
If you want this too, and you have .U3.1, you can get the patch from
sg.tn.tudelft.nl (file: Makefile.conf.U3.patch).
As soon as you are done, run backup.personal. To stay up to date with your
backup.
Then make the Makefile.conf.patch as described above. (or wait with that
till you are sure it works... otherwise it might be done more then once
which is a waste of time).
Special remarks
---------------
Makefile:
First occurance of
CC=cc
Change this NOT if you want another compiler, add another CC= later, close
to your OS specific #defines...
# IRCDDIR must be the same as DPATH in include/config.h
#
IRCDDIR=/sb/users/carlo/irc/ircd
Make sure you use the same path in the config.h :)
SUBDIRS=common ircd
By removing the 'irc' from this line, you stop 'make' from making the client
as well.
config.h:
/*
* NOTE: On some systems, valloc() causes many problems.
*/
#undef VALLOC /* Define this if you have valloc(3) */
I never try it, even if I have it.
#define USE_VARARGS
For defines like this, you best check the online manual if you have them
(man vprintf in this case)... I didn't have man page for vscanf() but it
still worked... (I DO have them for vprintf and vsprinf).
#undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
Debug mode uses a lot more memory and is a lot slower. ONLY define
when your server gives problems like crashing/coredumping, or other
things like not wanting to startup etc. In other words: when you are really
*USING* this feature to do DEBUGing !
#define NPATH "/sb/users/carlo/irc/server/Undernet/.ircdnote"
The '#ifdef notdef' '#endif' around NPATH mean: notdef = NOT DEFINED.
You should *never* #define notdef... It is used to "comment out" *examples*.
By defining it, you enable all examples (like making your server SUI :/)
Simply *remove* the lines '#ifdef notdef' and '#endif' around the NPATH.
#define DPATH "/sb/users/carlo/irc/ircd"
Must be the same as in the Makefile!
#define SPATH "/sb/users/carlo/bin/ircd" /* path to server executeable */
This is used when you do a /RESTART. For fast restarting a NEW version (upgrade)you can let this point to a symbolic link, and then change this link to the
new executable. Do a 'restart' and voila...
For instance:
.../bin/ircd.U3.2*
.../bin/ircd -> ircd.U3.2
The last made with:
ln -s ircd.U3.2 ircd
Then when you upgrade:
rm ircd
ln -s ircd.U3.3 ircd
and a /RESTART
#undef CRYPT_LINK_PASSWORD
Make sure your ircd.conf isn't world readable like on pasadena :/
(and on ircserver.et.tudelft.nl once - we DID have to change all passwords
then)
Compiling the server
====================
*** FIRST edit your include/patchlevel.h ***
If you don't want to compile the client, you can change the Makefile
as mentioned above, or type:
make server
After a succesfull compilation (ignore warning ;), you can type
make install
or just
cp ircd/ircd ~/bin/ircd.U3.2
cd ~/bin
chmod 700 ircd.U3.2
rm ircd
ln -s ircd.U3.2 ircd
I changed my Makefile to do the latter thing when I type 'make install'
Then run the server by typing 'ircd'. Don't do this on the
...ircd/irc2.8.19.U3.2/ircd/ directory, because when in your PATH the
'.' comes before your '~/bin' you start up THAT exucutable, disallowing
you to recompile later (text file busy).
Compile errors
==============
If anything goes wrong with note, it most likely is because you
1) Didn't define NPATH correctly
2) Didn't add the note.o to the dependencies.. remove note.o and recompile.
[ For a non-undernet version: irc2.8.19.tar.gz is bugged, get the -note.patch
from ftp.undernet.org. ]
If you get problems while linking saying it has undefined _something
and something is something with 'res', you must add -lresolv to your
IRCDLIBS in the Makefile.
If you get problems with any function beging defines twice are giving
errors like not compatible with previous definition (likely atol() in
note.c), just remove that whole function from the .c file (put #ifdef notdef
around it). You have it already in your system libraries.
Last remarks
============
Add those U: lines!!!
And change your ircd.motd to reflect the new commands/features :)
( /MOTD uxb* -- Nice motd RedRum! :)
-------------------------------------------------------------------
Run
--
-------------------------------------------------------------------------------
| carlo@sg.tn.tudelft.nl | Run @ IRC |
| | Admin of Delft.NL.EU.undernet.org |
| * Don't expect anything of live, | and Ircserver.et.tudelft.nl |
| or you'll miss all the rest of it.| |
-------------------------------------------------------------------------------
-82
View File
@@ -1,82 +0,0 @@
Services Install Guide For Unreal 3.2 by zyrorl (zyrorl@unrealircd.org)
=======================================================================
last updated: 4/5/2001 (4th May 2001)
First of all you will be required to download a services package for your
network.
A few of the most popular services are:
IRCServices - http://www.ircservices.za.net/
Epona - http://www.pegsoft.net/epona/
Wrecked - http://www.wrecked.net/services/index.html
Magick - http://www.magick.tm/
Sirius - http://ircsystems.net/sirius
After you have downloaded the appropriate services package, you will have to
upload it to your shell, and untar and un-gzip the file by typing: tar -zxvf
services.x.x.tar.gz
Then you will need to enter the directory created by your services package (for
a listing type ls -a) and type ./configure . This will run the configure script
to setup your services. The script will ask you questions regarding the path
want to install your services to, where you want the services data files to be
installed to, encryption options, and the type of ircd that you are using (Most
probably Unreal). If you have previously used any other services package, it
may also ask you if you would like to convert their databases. It may also ask
you if you would like the services to dump a core file when a segmentation fault
occurs so that you can find out the cause of the problem and bug report to the
developers of the ircd services.
Then you will be required to compile your services package by typing "make" or
possibly "gmake". To install services after compiled, type "make install".
Then you will need to enter the directory that you specified for the location
for the data of the services. You will most likely see a example.conf file in
the folder. You will need to rename this file to services.conf by typing "mv
example.conf services.conf" and then you will need to edit the services.conf
file in your favourite text editor. We recommend new users use pico, to edit
the file using pico type "pico services.conf". Edit the file to your liking,
make sure you follow their recommendations in settings, and make sure you edit
the root services passwords, server to link to, password and port.
After you have configured your services you will then be required to edit your
unrealircd.conf. You will require to add server connection lines to your server
in order for services to work. All services on your network will need to have
the same U line as the server that services are linking to. A sample of the
configuration for services for unrealircd.conf is listed below:
link services.yournetwork.net {
username *;
hostname 0.0.0.0; /*Server Ip Address Or Hostmask */
bind-ip *; /* IP To Bind To When Connecting */
port 6667; /* Port Number */
password-connect "passwordsend"; /*Password To Send On Connection*/
password-receive "passwordreceive"; /* Password To Receive From
Server Connecting */
class servers;
};
Make sure you then add a u:line entry for services. All the servers on your
network will be required to have a U:line. For UnrealIRCD 3.2 the U:lines
should look something like this:
ulines {
services.yournetwork.net;
};
Servers Running UnrealIRCD 3.1.1 Darkshades or below the U:Line for the servers
should look something like this:
U:services.yournetwork.net:*:*
You will then be required to edit your unrealircd.conf's network configuration
services name line, which has to be the same name as chosen on the connection
line for your services. ie. in this case your network configuration line would
look something like:
services-name "services.yournetwork.net";
Then you will require to /rehash your ircd and then go back to your services
directory and type ./services to run services.
-271
View File
@@ -1,271 +0,0 @@
The Tao of Internet Relay Chat
Copyright (C) Ove Ruben R Olsen 1994
Version of 940110
Contributing masters: Master ScottM
-----
Something is formed by the electrons, born in the silent cable. Shaping
and growing and ungrowing. It is there yet not there. It is the source of
Internet Relay Chat. I do not know the name, thus I will call it the Tao
of Internet Relay Chat.
If the Tao is great, then the IRC is running ceaselessly. If the IRC is
great then the server is running without ever stoping. If the server is
great then the client will always be the server. The luser is then pleased
and there is Chat in the world.
The Tao of IRC squits far away and connects on returning.
-----
The genetic potential of birth, a lot to know, yet unknown.
In the begining there was nothing.
Out of nothing the Tao gave birth to tolsun.oulu.fi. tolsun gave birth to
OuluBox.
OuluBox gave birth to rmsg.
rmsg was not Tao, so MUT gave birth to IRC.
No one knows when IRC came into existance, the mighty master WiZ have it
to be at the end of the eight month in the year of the Dragon.
-----
Each channel has its purpose, however humble. Each channel is the Yin and
Yang of IRC. Each channels has it's place within the IRC.
In the beginning there was only channel 0, thus channel 0 is the soil of
IRC.
Channel 1 to channel 10 then was open as the sea. Channel 11 to 999 was the
trees and forests of IRC. Channels above 999 should not be mentioned, and
channels below 0 were unborn and contained many secrets.
This was not the right Tao, so IRC gave birth to +channels.
+channels had the yin and yang. Mode does not.
This was not the right Tao still, so IRC gave birth to #channels.
#channels have the yin and yang.
Only channel 0 is the right path to Tao, but avoid speaking on channel 0.
-----
There was a great dispute among the Broom-Walkers of the Relay. Some of them
wanted neither yin nor yang. Out of this Eris came into existance. Some of the
Broom-Walkers then created Eris Free-net.
This was the right Tao.
Kind Gentle and Boring Net was another wrong path to the Tao of Internet Relay
Chat.
Some time later there was a quantity of some lusers who wanted to be
Broom-Walkers also. The Eris Free Broom-Walkers did not agree with them,
thus a new IRC was born. This IRC is called the Undernet.
But this is not the right Tao, either.
-----
There will always be disputes among the Broom-Walkers of Internet Relay Chat.
This is the very nature of the IRC.
-----
Lusers that do not understand the Tao is always using the yang of Mode on
their channels. Lusers that do understand the Tao are always using Ignore
on their channels.
How could this not be so ?
-----
The wise sage luser is told about the Chat and uses it. The luser is told
about the IRC and is looking for it. The flock are told about the Tao and
make a fool of the IRC.
If there was no laughter, there would be no Tao.
-----
The master says:
"Without the Tao of Internet Relay Chat, life becomes meaningless."
The Relay of the old time was mysterious and sacred. We can neither imagine
its thoughts nor path; we are left but to describe.
-----
The sage luser must be aware like a frog crossing the highway.
-----
The great master Wumpus once dreamed that he was an automaton. When he awoke
he exclaimed:
"I don't know whether I am Wumpus dreaming that I am a client,
or a client dreaming that I am Wumpus!"
So was the first Automata born.
The master Nap then said:
"Any automata should not speak unless spoken to.
Any automata shall only whisper when spoken to."
Thus replied the master Gnarfer:
"The lusers shall keep in mind that a automata can be either good or
bad. Create good automata, and the IRC will hail you and you will
gain fame and fortune. Create bad automata and people will start to
hate you, and finaly you will be /KILLed to ethernal damnation"
Many lusers have fallen into the clutches of ethernal damnation. They where
not following the Tao.
-----
There once was a luser who went to #BotSex. Each day he saw the automatons.
The luser decided that he also would have such a automata.
He asked another luser for his automata. The other luser gave his automata
away.
The luser was not within the Tao, so he just started the automata. The automata
had only Yang inside so all the lusers files where deleted.
Some moons laither the same luser then had become a sage luser, and did create
his automata from the very grounds with materials found inside the IRC.
The luser was now within the Tao and his automata lived happily ever after.
-----
There once was a master who wrote automatons without the help of master Phone.
A novice luser, seeking to imitate him, began with the help of master Phone.
When the novice luser asked the master to evaluate his automata the master
replied: "What is a working automata for the master is not for the luser.
You must must BE the IRC before automating."
-----
Master BigCheese gave birth to master Troy; his duty clear. Master Troy gave
birth to master Phone, for the Tao of Irc must be eternal and must flow as the
ceaseless river of Time itself.
-----
Master Phone once said about the ircII client:
"public_msg is for a message from someone NOT on the channel
public_other is for a message on a channel that doesn't belong to
a window. public is for a message on a channel that belongs to a
window!"
Out of this raised the mighty chaos.
-----
The sage luser came to the master who wrote automata without the help of
master Phone. The sage luser asked the master who wrote automata: "Which is
easiest to make. A automata with the help of master Phone or an automata
made with the help of a language ?"
The master who wrote automata then replied:
"With the help of a language."
The sage luser was disapointed and exclaimed: "But, with master Phone you
do not need to know anything about the soil of IRC. Is not that the easiet
way ?"
"Not really" said the master who wrote automata, "when using master Phone
you are closed inside a box. For sure, it is a great box for the lusers,
but the master will need more power, thus a language is the only path to go.
With the language the master will never have to limit himself. When using
such a language the master will seek the best between the need and the
availibility."
"I see", said the sage luser.
This is the essence of Tao of IRC automatas.
-----
A client should be light and be used for communication. The spirit of a good
client is that it should be very convinient for the luser to use, but hard
for the luser who want to create automata.
There should never ever be too many functions or too few functions.
There should always be a ignore.
Without ignore the client is not within the Tao of Chating.
The client should always respond the luser with messages that will not
astnonish him too much. The server likewise. If the server does not, then it
is the clients job to explain what the server says.
A client which fails this, will be useless and cause confusion for the lusers.
The only way to correct this is to use another client or to write a new one.
-----
A luser asked the masters on #IrcHelp: "My client does not work".
The masters replied: "Upgrade your client".
The luser then wondered why the master knew. The master then told him about
the Protocol.
"Your client does not work beaucse it does not understand the server. Why
should it always work ? Only a fool would expect such. But, clients are made
by humans, and humans are not perfect. Only Tao is.
The IRC is solid. The IRC is floating, and will always be dynamic. Live with
that or /quit."
-----
The luser came to the masters of #IrcHelp, asking about the Tao of IRC within
the client.
The masters then said that the Tao of IRC always lies inside the client
regardless of how the client connects to the server.
"Is the Tao in irc ?" asked the luser.
"It so is" replied the masters of #IrcHelp.
"Is the Tao in the ircII, Kiwi, rxirc, vms, rockers and msa ?" asked the
luser.
"In all of them and in the TPC, irchat, zenirc, zircon X11-irc and even the
dos irc has the Tao" said the master quietly.
"Is the Tao in a telnet connection directly to the server ?"
The master then was quiet for a long time and said. "Please leave, such
questions are not within the Tao of IRC".
-----
The master says: "Without the Protocol of TCP the messages will not travel.
Without the client, the server is useless."
-----
There once was a luser who used the ircII client. "ircII can do anything I
ever need for using IRC" said the emacs client user, "I have /ON's, I have
assignments, I have aliasing. Why don't you use this instead of the huge
emacs client, which also has a messy screen?"
The emacs client user then replied by saying that "it is better to have a
scripting language that is the client instead of have a client that has
a scripting language." Upon hearing this, the ircII client luser fell silent.
-----
The master Wumpus said: "Time for you to leave. I did, now I'm happy."
The master Gnarfer replied: "Use, but never overuse IRC, then you will also
be happy within IRC"
-----
A luser came unto the masters of #EU-Opers and asked, "How can I be, yet not
be, a user@host within the IRC?"
The masters of #EU-Opers replied: "To be Tao is to be ones true self. To hide
ones self is not Tao, and is not IRC, you have much to learn before you shall
be at rest within the Flow of Irc. Please leave"
-432
View File
@@ -1,432 +0,0 @@
* * * * * * * * * * * * * * * * * * *
* Unrealircd.conf Documentation *
* http://www.unrealircd.com *
* Made for Version 3.2+ Daemon *
* by devdev *
* * * * * * * * * * * * * * * * * * *
* * * * T a b l e o f C o n t e n t s * * * *
Section 1.0 : Introduction
Section 2.0 : me{} line
2.1 : Syntax
2.2 : Variables
Section 3.0 : admin{} line
3.1 : Syntax
3.2 : Variables
Section 4.0 : class{} line
4.1 : Syntax
4.2 : Variables
Section 5.0 : allow{} line
5.1 : Syntax
5.2 : Variables
Section 6.0 : drpass{} line
6.1 : Syntax
6.2 : Variables
Section 7.0 : oper{} line
7.1 : Syntax
7.2 : Variables
7.3 : Oper Flags
7.4 : Flag Usage
Section 8.0 : listen{} line
8.1 : Syntax
8.2 : Variables
8.3 : Port Options
9.0 : link{} line
9.1 : Syntax
9.2 : Variables
9.3 : Link Options
Section 10.0 : ulines{} line
10.1 : Syntax
10.2 : Variables
Section 11.0 : tld{} line
11.1 : Syntax
11.2 : Variables
Section 12.0 : ban{} line
12.1 : ban nick{}
12.2 : ban ip{}
12.3 : ban server{}
12.4 : ban realname{}
12.5 : ban user{}
Section 13.0 : except{} line
13.1 : except ban{}
13.2 : except socks{}
Section 14.0 : vhost{} line
14.1 : Syntax
14.2 : Variables
* * * * * * * * * * * * * * * * * * * * * * * *
1.0) Introduction:
As you may have noticed, in this version of Unreal, the ircd.conf
has changed dramatically and has a new name... unrealircd.conf.
This will be a fully explanatory guide to the new unrealircd.conf
Every aspect of the new config file is explained below.
2.0) me{} (Server Information Line):
This is the same idea as the old M:line. Gives the server name,
description, and numeric. This, however, does not include the ip
of the server.
2.1) Syntax:
me {
name <server>;
info "<description>";
numeric <numeric>;
};
2.2) Variables:
<server> Server name (irc.network.com)
<description> Server description (Network Hub)
<numeric> Connection Numeric (Number 1-254)
3.0) admin{} (Administrator Line):
This is the same as the A:line. This line gives information about
the server owner/administrator including Name, nickname, and email.
This is not restricted to a number of lines. Shown at /admin
3.1) Syntax:
admin {
"<line>";
};
3.2) Variables:
<line> Text shown at /admin (Admin Name)
The "<line>"; can be repeated as many times as you wish. We suggest
placing the admins nickname and an email to reach them at.
4.0) class{} (Connection Classes Line):
These connection classes are used to define the ping freqency, maximum
amount of clients, and sendq limit for a certain class.
4.1) Syntax:
class <class name> {
connfreq <connfreq>; /*server only*/
ping freq <pingfrq>;
maxclients <maxclients>;
sendq <sendqlimit>;
};
4.2) Variables:
<class type> Name of connection class (client, server, oper)
<connfreq> Seconds between connection attempts (seconds)
<pingfrq> Ping Frequency (every x seconds) (seconds)
<maxclients> Number of maximum connections (number)
<sendqlimit> Limit for sends (number)
5.0) allow{} (Allowed Connections):
This line specifies from which hostnames/ips users can connect from and their
restrictions.
5.1) Syntax:
allow {
ip "<ip>";
hostname "<host>";
class <classname>;
password "<password>";
maxperip <max>;
};
5.2) Variables:
<ip> IP to allow connections from (1.2.3.4)
<host> Hostname to allow connections from (ident@host)
<classname> Class name to use defined above (name)
<password> Password required for connection (password)
<max> Maximum per ip address (number)
6.0) drpass{} (Die/Restart Password):
This line will defy the passwords required to restart or shutdown the irc server.
6.1) Syntax:
drpass {
die "<diepass>";
restart "<restartpass>";
};
6.2) Variables:
<diepass> Password to shutdown the server (password)
<restartpass> Password to restart the server (password)
7.0) oper{} (IRC Operator Line):
This line will define who (after suppling a login and password) will be allowed to have certain permissions
granted. Such as global kills compared to local kills, and being able to restart the server.
7.1) Syntax:
oper <login> {
class <classname>;
from {
userhost <host>;
userhost <host>
};
password "<password>";
flags {
<flag>;
<flag>;
}
};
7.2) Variables
<login> Login user name (opername)
<classname> Class the oper will connect from (class)
<host> Host the oper is allowed to op from (ident@host)
<password> Password to accompany login-name (password)
<flag> Flags to define permissions (see 7.3)
7.3) Oper Flags (old and new)
Old | New |Description
------- |---------------- |------------------------------
N | netadmin | Network Admnistrator
T | techadmin | Technical Administrator
A | admin | Server Administrator
a | sadmin | Services Operator
C | coadmin | Co Administrator
o | local | Local IRC Operator
O | global | Global IRC Operator
r | can_rehash | Is able to rehash the server
e | eyes | Can use the eyes message mode
D | can_die | Can shutdown the server (with password)
R | can_restart | Can restart the server (with password)
h | helpop | ..is available for help. Can see /helpops
g | can_globops | Can use /globops
w | can_wallops | Can use /wallops
l | locop | Can't kill remote users
c | can_localroute | Can locally /connect and /squit servers
L | can_globalroute | Can globally /connect and /squit servers
k | can_localkill | Can do local /kills
K | can_globalkill | Can do global /kills
b | can_kline | Can set a /kline
B | can_unkline | Can unset a /kline
n | can_localnotice | Can send local notices
G | can_globalnotice| Can send global notices
z | can_zline | Can set /zlines
^ | can_stealth | Is invisible to /names
7.4) Oper Flag Usage:
Usage:
flags oldflags;
[or]
flags { new flag; new flag; };
Example:
flags oN;
[or]
flags { netadmin; helpop; };
Local operators are defined by having no additional flags in the oper line or if the IRCD finsd an error in
the flags, locop will be set (default).
8.0) listen{} (Available Ports):
These line(s) define which ports the IRCd will be using. Ports that servers and clients can connect to.
8.1) Syntax:
listen <ip>:<port>;
{
options
{
<option>;
<option>;
};
};
8.2) Variables:
<ip> IP Address to bind to (1.2.3.4)
<port> Port to listen on (port)
<option> Option for the port to use (see 8.3)
8.3) Port Options
standard Normally listens on the port
ssl Port is available to accept SSL connections.
serveronly Port can only have servers connect to it (not clients)
clientsonly Port can only have clients connect to it
9.0) link{} (Connecting Servers):
This line will define what server can connect to yours.
9.1) Syntax:
link <servername>;
{
username <usermask>;
hostname <hostname>;
bind-ip <bindip>;
port <port>;
hub *; /* for connecting a hub */
leaf *; /* for connecting a leaf */
leaf-depth <leaf-depth>; /* for connecting a leaf */
password-connect "<cpassword>";
password-receive "<rpassword>";
class <class>;
rsa-auth "<keypath>";
options {
<option>;
<option>;
};
};
9.2) Variables
<servername> Server name to connect to (server.network.com)
<username> Username for authenticating connection (username)
<hostname> Hostname for authenticating connection (hostname)
<bindip> IP your server will bind to to connect (ip)
hub or leaf Place hub *; or leaf *; depending on
what type of server you're linking to
<leaf-depth> Number of servers below yours (number)
<cpassword> Password to send to the server (password)
<rpassword> Password you expect to receive (password)
<class> Class for servers (classname)
<keypath> Path use for rsa-authentication (keypath)
<option> Option used for connecting (see 9.3)
9.3) Link Options
autoconnect Automaticlly tries to connect to the server
ssl Defines you are connecting to a SSL server
zip Will make them compressed later
10.0) ulines{} (Ulined Servers):
This line will define servers that can have more control over the network. Services
require this line in order to modify channels without being irc-operators.
10.1) Syntax:
ulines {
<server>;
<server>;
};
10.2) Variables:
<server> Server to be u:lined, can be infinate (servername)
11.0) tld{} (MOTD and Rules by Domains):
This line defines which hosts will read which set of MOTDs/Rules. For instance, if you have
a bilingual network, connections from .fr can show a french MOTD and Rule file instead
of the default ircd.motd and ircd.rules
11.1) Syntax:
tld {
mask <mask>;
motd "<motd>";
rules "<rules>";
};
11.2) Variables:
<mask> Mask that will define the new set (ident@host)
<motd> Filename of the motd file (filename)
<rules> Filename of the rules file (filename)
12.0) ban{} (Bans):
This line has many parts to it and can ban different things. See the sections below
on more information on banning.
12.1) ban nick{}
This line is used for restricting the use of certain nicknames
Syntax:
ban nick {
mask "<nickname>";
reason "<reason>";
};
12.2) ban ip{}
Used for removing a entire ip from connecting.
Syntax:
ban ip { mask <ipaddress>; reason "<reason>"; };
12.3) ban server{}
Used for restrictring a server from connecting to you.
Syntax:
ban server {
mask <servername>;
reason "<reason>";
};
12.4) ban realname{}
Used to keep select individuals with certain realnames off the server.
Syntax:
ban realname {
mask "<real name>";
reason "<reason>";
};
12.5) ban user{}
This line is the same as the old K:Lines. It bans a host mask from connecting.
Syntax:
ban user { mask <ident@host>; reason "<reason>"; };
13.0) except{} (Cannot Be Banned):
Used to make sure your own IRCops dont ban you, or so you dont accidently ban an entire
nation's worth of addresses, etc.
13.1) except ban{}
This is so a realname and user cannot be banned.
Syntax:
except ban {
mask <ident@host>;
};
13.2) except socks{}
This line is used so the socks server does not ban a client.
Syntax:
except socks {
mask 216.73.27.177;
};
14.0) vhost{} (Vanity Hosts):
The vhost{} line is used so a user can change their hostname from blah.dialup.com to
a more fun hostname such as tends.to.write.some.really.evildocs.net
/vhost <login> <password>
14.1) Syntax:
vhost {
vhost <vhost>;
from {
userhost <mask>;
};
login <login>;
password <password>;
};
14.2) Variables:
<vhost> Name of the vhost to use (vhost)
<mask> Allowed masks to use the vhost (ident@host)
<login> A login name to use (login)
<password> Password to supply with login (password)
+373 -1028
View File
File diff suppressed because it is too large Load Diff
-311
View File
@@ -1,311 +0,0 @@
/*
** 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)) == INVALID_SOCKET) // 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);
}
-1
View File
@@ -1 +0,0 @@
...
Binary file not shown.
-98
View File
@@ -1,98 +0,0 @@
# 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
@@ -1,60 +0,0 @@
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;
-462
View File
@@ -1,462 +0,0 @@
#!/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
@@ -1,23 +0,0 @@
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
@@ -1,4 +0,0 @@
clean:
default:
all:
echo "."
-4948
View File
File diff suppressed because it is too large Load Diff
-490
View File
@@ -1,490 +0,0 @@
/* 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:
*/
-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.
-509
View File
@@ -1,509 +0,0 @@
/*
* SScript - See the sscript.doc
* (C) 1998 Drow <drow@wildstar.net>
* http://devplanet.fastethernet.net
*/
#include "sscript.h"
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <net/if.h>
#include <strings.h>
#include <sys/file.h>
#include <signal.h>
#include <unistd.h>
#include <netdb.h>
#include <arpa/inet.h>
#ifndef FNDELAY
#define FNDELAY O_NONBLOCK
#endif
#ifdef POSIX
#include <pwd.h>
#include <sys/utsname.h>
#endif
char global_var[9][1024]; /* need to find why gcc outputs warns without this */
char remoteIP[30];
char *sscript_lindex(char *input_string, int word_number)
{
char *tokens[1024];
static char tmpstring[1024];
int i;
strncpy(tmpstring,input_string,1024);
(char *)tokens[i=0] = (char *)strtok(tmpstring, " ");
while (((char *)tokens[++i] = (char *)strtok(NULL, " ")));
tokens[i] = NULL;
return(tokens[word_number]);
}
int sscript_connect(char *server, int port, char *virtual)
{
struct sockaddr_in address;
struct sockaddr_in la;
int len, sockfd;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd<1)
{
errno = SSCRIPT_SOCKET_FAILED;
return -1;
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr(server);
address.sin_port = htons(port);
len = sizeof(address);
if(virtual!=NULL)
{
la.sin_family = AF_INET;
la.sin_addr.s_addr = inet_addr(virtual);
la.sin_port = 0;
bind(sockfd, (struct sockaddr *)&la, sizeof(la));
}
if(connect(sockfd, (struct sockaddr *)&address, len)<0)
{
errno = SSCRIPT_CONNECT_FAILED;
return -1;
}
return sockfd;
}
int sscript_server(int port)
{
int sockfd2, listen_len;
struct sockaddr_in listen_addr;
sockfd2 = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd2<1)
{
errno = SSCRIPT_SOCKET_FAILED;
return -1;
}
listen_addr.sin_family = AF_INET;
listen_addr.sin_addr.s_addr = htonl(INADDR_ANY);
listen_addr.sin_port = htons(port);
listen_len = sizeof(listen_addr);
if(bind(sockfd2, (struct sockaddr *)&listen_addr, listen_len))
{
errno = SSCRIPT_BIND_FAILED;
return -1;
}
return sockfd2;
}
int sscript_wait_clients(int sockfd2, int port, int forking)
{
int sockfd=(int)NULL,len,from_len,pid;
struct sockaddr_in address;
struct sockaddr_in from_addr;
struct sockaddr_in listen_addr;
listen_addr.sin_family = AF_INET;
listen_addr.sin_addr.s_addr = htonl(INADDR_ANY);
listen_addr.sin_port = htons(port);
len = sizeof(address);
listen(sockfd2, 5);
for(;;)
{
if(forking) if(sockfd!=(int)NULL) close(sockfd);
sockfd = accept(sockfd2, (struct sockaddr *)&address, &len);
if(forking) if((pid=fork())) break;
}
from_len=sizeof(from_addr);
memset(&from_addr, 0, sizeof(from_addr));
if(getpeername(sockfd, (struct sockaddr *)&from_addr,&from_len) < 0)
{
strcpy(remoteIP,"unknown");
}
else
{
strcpy(remoteIP,inet_ntoa(from_addr.sin_addr));
}
return sockfd;
}
char *sscript_get_remote_ip()
{
return remoteIP;
}
void sscript_disconnect(int sockfd)
{
shutdown(sockfd,2);
close(sockfd);
}
void sscript_dump(int sockfd, char *filename)
{
char temp[1024]="";
FILE *fpa;
fpa=fopen(filename,"r");
if(fpa==NULL) return;
while(fgets(temp,1024,fpa)!=NULL)
write(sockfd, temp, strlen(temp));
fclose(fpa);
}
void sscript_ping(char *hostname)
{
struct sockaddr_in other_addr;
int sockfd, result;
char temp[255];
sockfd=socket(AF_INET, SOCK_STREAM, 0);
if(sockfd<0)
{
errno = SSCRIPT_SOCKET_FAILED;
return;
}
other_addr.sin_family = AF_INET;
other_addr.sin_addr.s_addr = inet_addr(hostname);
other_addr.sin_port = htons(7);
connect(sockfd, (struct sockaddr*) &other_addr,sizeof(other_addr));
result=write(sockfd,"ping\n",strlen("ping\n"));
result=read(sockfd,temp,result);
close(sockfd);
}
int sscript_test(char *hostname, int port)
{
int sockfd;
struct sockaddr_in other_addr;
if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
{
errno = SSCRIPT_SOCKET_FAILED;
return -1;
}
other_addr.sin_family = AF_INET;
other_addr.sin_addr.s_addr = inet_addr(hostname);
other_addr.sin_port = htons(port);
if(connect(sockfd, (struct sockaddr*)&other_addr,sizeof(other_addr))==-1)
{
errno = SSCRIPT_CONNECT_FAILED;
close(sockfd);
return -1;
}
close(sockfd);
return 0;
}
char *sscript_version()
{
return ABOUT;
}
char *sscript_read(int sockfd, int chop)
{
int i, result;
char inchar;
char string[1024];
bzero(string,1024);
strcpy(string,"");
for(i=0;(result=read(sockfd,&inchar,1))!='\0';i++)
{
string[i]=inchar;
if(inchar=='\n') break;
}
if (chop) string[i-1]=' ';
strcpy(global_var[0],string);
return global_var[0];
}
void sscript_write(int sockfd, char *string)
{
write(sockfd, string, strlen(string));
}
int sscript_compare(char *case1, char *case2)
{
return (strcmp(case1,case2));
}
char *sscript_lrange(char *input_string, int starting_at)
{
char *tokens[555];
static char tmpstring[512]="";
int i;
char out_string[512]="";
strcpy(out_string,"");
if(input_string==NULL) {
strcpy(out_string," ");
strcat(out_string,NULL);
strcpy(global_var[1],out_string);
return global_var[1]; }
strcpy(tmpstring,input_string);
(char *)tokens[i=0] = (char *)strtok(tmpstring, " ");
while(((char *)tokens[++i] = (char *)strtok(NULL, " ")));
tokens[i] = NULL;
i++;
if(i<starting_at) return (int)NULL;
while(tokens[starting_at] != NULL)
{
strcat(out_string,tokens[starting_at]);
strcat(out_string, " ");
starting_at++;
}
strcpy(global_var[2],out_string);
return global_var[2];
}
int sscript_udp_send(char *hostname, int port, char *msg)
{
int udpsock;
struct sockaddr_in udpaddr;
udpsock = socket(AF_INET, SOCK_DGRAM, 0);
if(udpsock<0)
{
errno = SSCRIPT_SOCKET_FAILED;
return -1;
}
udpaddr.sin_family = AF_INET;
udpaddr.sin_port = htons(port);
udpaddr.sin_addr.s_addr = inet_addr(hostname);
if(sendto(udpsock,msg,sizeof(msg),0,(struct sockaddr *)&udpaddr,sizeof(udpaddr))<0)
{
errno = SSCRIPT_UDPSEND_FAILED;
return -1;
}
return 0;
}
char *sscript_udp_listen(int port)
{
int udpsock,len;
struct sockaddr_in udpaddr, from;
char msg[255];
udpsock = socket(AF_INET, SOCK_DGRAM, 0);
if(udpsock<0)
{
errno = SSCRIPT_SOCKET_FAILED;
return (char *)NULL;
}
udpaddr.sin_family = AF_INET;
udpaddr.sin_addr.s_addr = INADDR_ANY;
udpaddr.sin_port = htons(port);
if(bind(udpsock,(struct sockaddr *)&udpaddr,sizeof(udpaddr))<0)
{
errno = SSCRIPT_BIND_FAILED;
close(udpsock);
return (char *)NULL;
}
len = sizeof(from);
if(recvfrom(udpsock,msg,sizeof(msg),0,(struct sockaddr *)&from,&len)<0)
{
errno = SSCRIPT_UDPRECEIVE_FAILED;
close(udpsock);
return (char *)NULL;
}
close(udpsock);
strcpy(global_var[3],msg);
return global_var[3];
}
char *sscript_icmp_detect()
{
int icmpsock,len,result,type;
struct sockaddr_in icmpaddr;
char readbuf[1024]="";
char msg[255];
if((icmpsock=socket(AF_INET, SOCK_RAW, IPPROTO_ICMP))<0)
{
errno = SSCRIPT_SOCKET_FAILED;
return (char *)NULL;
}
icmpaddr.sin_family = AF_INET;
icmpaddr.sin_addr.s_addr = INADDR_ANY;
icmpaddr.sin_port = 0;
if(bind(icmpsock,(struct sockaddr *)&icmpaddr,sizeof(icmpaddr))<0)
{
errno = SSCRIPT_BIND_FAILED;
close(icmpsock);
return (char *)NULL;
}
len=sizeof(icmpaddr);
if(getsockname(icmpsock,(struct sockaddr *)&icmpaddr,&len)<0)
{
errno = SSCRIPT_GETSOCKETNAME_FAILED;
close(icmpsock);
return (char *)NULL;
}
if((result=read(icmpsock,readbuf,sizeof(readbuf)))<0)
{
errno = SSCRIPT_READ_FAILED;
close(icmpsock);
return (char *)NULL;
}
type=readbuf[20] & 0xff;
sprintf(msg,"%d %d.%d.%d.%d ",type,readbuf[12]&0xff,readbuf[13]&0xff,readbuf[14]&0xff,readbuf[15]&0xff);
close(icmpsock);
strcpy(global_var[4],msg);
return global_var[4];
}
char *sscript_resolve_host(char *hostname)
{
struct hostent *hp;
struct sockaddr_in from;
char result[255];
memset(&from, 0, sizeof(struct sockaddr_in));
from.sin_family = AF_INET;
hp=gethostbyname(hostname);
if(hp==NULL) strcpy(result,"unknown");
else
{
memcpy(&from.sin_addr,hp->h_addr,hp->h_length);
strcpy(result,inet_ntoa(from.sin_addr));
}
strcpy(global_var[5],result);
return global_var[5];
}
char *sscript_resolve_ip(char *ip)
{
struct hostent *hp;
struct sockaddr_in from;
char result[255];
from.sin_family = AF_INET;
from.sin_addr.s_addr = inet_addr(ip);
hp=gethostbyaddr((char *)&from.sin_addr, sizeof(struct in_addr),from.sin_family);
if(hp==NULL) strcpy(result,"unknown");
else strcpy(result,(char *)hp->h_name);;
strcpy(global_var[6],result);
return global_var[6];
}
char *sscript_get_localhost()
{
char result[255];
gethostname(result,sizeof(result));
strcpy(global_var[7],result);
return global_var[7];
}
void sscript_binary_send(int sockfd, char *string)
{
char temp4[255], temp2[255];
int cnt;
FILE *fpa;
sprintf(temp4,"uuencode %s %s > %s/.temp.uue 2>/dev/null",string,string,TMP_DIR);
system(temp4);
sprintf(temp2,"%s/.temp.uue",TMP_DIR);
fpa=fopen(temp2,"r");
if(fpa==NULL || fileno(fpa)<0) return;
else {
while((cnt = read(fileno(fpa), temp4, 250))>0)
write(sockfd, temp4, cnt);
if(fpa!=NULL) fclose(fpa);
sprintf(temp4,"rm -f %s/.temp.uue",TMP_DIR);
system(temp4);
}
}
void sscript_binary_get(int sockfd)
{
char temp2[255], temp4[255], inchar, inall[1024];
FILE *fpa;
int i;
sprintf(temp2,"%s/.temp.uue",TMP_DIR);
fpa=fopen(temp2,"w");
if(fpa==NULL || fileno(fpa)<0) return;
while(strcasecmp(inall,"end\n"))
{
bzero(inall, 1024);
for(i=0;read(sockfd,&inchar,1)!='\0';i++)
{
inall[i]=inchar;
if(inchar=='\n') break;
}
fputs(inall,fpa);
}
if(fpa!=NULL) fclose(fpa);
sprintf(temp4,"uudecode %s/.temp.uue",TMP_DIR);
system(temp4);
sprintf(temp4,"rm -f %s/.temp.uue",TMP_DIR);
system(temp4);
}
char *sscript_login_to_passwd(char *login)
{
#ifdef POSIX
struct passwd *pw;
pw = getpwnam(login);
if(pw!=NULL) return pw->pw_passwd;
#endif
return (char *)NULL;
}
char *sscript_uid_to_login(long my_uid)
{
#ifdef POSIX
struct passwd *pw;
pw = getpwuid(my_uid);
if(pw!=NULL) return pw->pw_name;
#endif
return (char *)NULL;
}
int sscript_sokstat(char *option, int sockfd)
{
int optlen=sizeof(int),optval=1;
if(!strcasecmp(option,"sendbuf")) getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, (char *)&optval, &optlen);
else if(!strcasecmp(option,"recvbuf")) getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (char *)&optval, &optlen);
else if(!strcasecmp(option,"error")) getsockopt(sockfd, SOL_SOCKET, SO_ERROR, (char *)&optval, &optlen);
else if(!strcasecmp(option,"type")) getsockopt(sockfd, SOL_SOCKET, SO_TYPE, (char *)&optval, &optlen);
else optval=-1;
return optval;
}
char *sscript_time_read(int sockfd, int time_sec)
{
struct timeval timeout;
int max_fd;
fd_set readfs, newfs;
timeout.tv_sec=time_sec;
timeout.tv_usec=0;
FD_ZERO(&readfs);
FD_SET(sockfd, &readfs);
max_fd = sockfd;
memcpy(&newfs, &readfs, sizeof(readfs));
select(max_fd+1, &newfs, NULL, NULL, &timeout);
if(FD_ISSET (sockfd, &newfs))
{
read(sockfd, global_var[8], sizeof(global_var[8]));
return(global_var[8]);
}
return("timeout");
}
void sscript_redir(int sockfd, int rsck)
{
char buf[4096];
fd_set readfs, newfs;
int max_fd, len;
FD_ZERO(&readfs);
FD_SET(sockfd, &readfs);
FD_SET(rsck, &readfs);
if(sockfd>rsck) max_fd = sockfd;
else max_fd = rsck;
while(1) {
memcpy(&newfs, &readfs, sizeof(readfs));
select(max_fd+1, &newfs, NULL, NULL, NULL);
if(FD_ISSET(sockfd, &newfs))
{
if((len=read(sockfd, buf, sizeof(buf)))<1) break;
if(write(rsck, buf, len)!=len) break;
}
if(FD_ISSET(rsck, &newfs))
{
if((len=read(rsck, buf, sizeof(buf)))<1) break;
if(write(sockfd, buf, len)!=len) break;
}
}
}
void sscript_nodelay(int sockfd)
{
int i;
if(( i = fcntl(sockfd, F_GETFL, 0)) == -1);
else if (fcntl(sockfd, F_SETFL, i | FNDELAY) == -1);
}
-45
View File
@@ -1,45 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define SSCRIPT_SOCKET_FAILED 10
#define SSCRIPT_BIND_FAILED 11
#define SSCRIPT_GETSOCKETNAME_FAILED 12
#define SSCRIPT_FLAGS_FAILED 13
#define SSCRIPT_CONNECT_FAILED 20
#define SSCRIPT_UDPSEND_FAILED 31
#define SSCRIPT_UDPRECEIVE_FAILED 32
#define SSCRIPT_READ_FAILED 33
#define ABOUT "Socket Script library 2.0 by Patrick Lambert (drow@post.com)"
#define POSIX
#define TMP_DIR "."
char *sscript_lindex(char *input_string, int word_number);
int sscript_connect(char *server, int port, char *virtual);
int sscript_server(int port);
int sscript_wait_clients(int sockfd2, int port, int forking);
char *sscript_get_remote_ip();
void sscript_disconnect(int sockfd);
void sscript_dump(int sockfd, char *filename);
void sscript_ping(char *hostname);
int sscript_test(char *hostname, int port);
char *sscript_version();
char *sscript_read(int sockfd, int chop);
void sscript_write(int sockfd, char *string);
int sscript_compare(char *case1, char *case2);
char *sscript_lrange(char *input_string, int starting_at);
int sscript_udp_send(char *hostname, int port, char *msg);
char *sscript_udp_listen(int port);
char *sscript_icmp_detect();
char *sscript_resolve_host(char *hostname);
char *sscript_resolve_ip(char *ip);
char *sscript_get_localhost();
void sscript_binary_send(int sockfd, char *string);
void sscript_binary_get(int sockfd);
char *sscript_login_to_passwd(char *login);
char *sscript_uid_to_login(long my_uid);
int sscript_sokstat(char *option, int sockfd);
char *sscript_time_read(int sockfd, int time_sec);
void sscript_redir(int sockfd, int rsck);
void sscript_nodelay(int sockfd);
-39
View File
@@ -1,39 +0,0 @@
/* compile with: gcc -lsscript -o example example.c */
#include <stdio.h>
#include <errno.h>
#include <time.h>
main(int argc, char *argv[])
{
/* initializing variables */
char result[255]=".";
char *p;
int port = atoi(argv[2]);
int sockfd=0,i;
time_t t,d;
/* connect somewhere */
printf("Connecting to %s:%i .. \n", argv[1], port);
/* call to sscript_connect to connect to the server */
sockfd=sscript_connect(sscript_resolve_host(argv[1]),port,NULL);
/* if it returns -1, then print the error code */
if(sockfd<1)
{
printf("An error occured: %d\n",errno);
exit(1);
}
/* call to sscript_read and copy the result in 'result' */
p = (char *)sscript_time_read(sockfd,5);
if (p)
{
strcpy(result,p);
t = atol(result);
d = t - time(NULL);
printf("TS difference from timeserver is %li (%li)\n", d, t);
}
/* print the result */
/* disconnects */
sscript_disconnect(sockfd);
}
-2
View File
@@ -1,2 +0,0 @@
#!/bin/sh
./tsp-skin 6100 ./tsp-server-run &
-3
View File
@@ -1,3 +0,0 @@
main() {
printf("%li", time(0));
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 B

-124
View File
@@ -1,124 +0,0 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>
$ TITLE
</title>
<style type="text/css" media="screen">
BODY {
scrollbar-base-color : Black;
scrollbar-3d-light-color : #D3D3D3;
scrollbar-dark-shadow-color : #D3D3D3;
scrollbar-shadow-color : #D3D3D3;
scrollbar-highlight-color : #D3D3D3;
scrollbar-arrow-color : Black;
scrollbar-face-color : #D3D3D3;
background-color : #FFFFFF;
font-size : 8pt;
font-family : "Trebuchet MS", Arial, Tahoma;
}
.text, INPUT {
font-family : "Trebuchet MS", Arial, Tahoma;
font-size : 12px;
}
.status {
font-family : "Trebuchet MS", Arial, Tahoma;
font-size : 10px;
}
.title {
font-family : "Trebuchet MS", Arial, Tahoma;
font-size : 15pt;
}
.button {
font-family : Tahoma;
border : 1px solid #C8C8C8;
font-size : 11px;
cursor : hand;
background-color : #E5E5E5;
}
#background { position: absolute; z-index: 0; top: 0px; left: 0px; width: 650px; height: 450px; visibility: visible }
#content { position: absolute; top: 77px; left: 133px; width: 399px; height: 283px; visibility: visible }
#unrealIRCdLink { font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 432px; left: 0px; width: 650px; height: 16px; visibility: visible; }
#icon { z-index: 1; font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 13px; left: 22px; width: 72px; height: 73px; visibility: visible; scrollbar-3d-light-color: #D3D3D3; scrollbar-arrow-color: Black; scrollbar-base-color: Black; scrollbar-dark-shadow-color: #D3D3D3; scrollbar-face-color: #D3D3D3; scrollbar-highlight-color: #D3D3D3; scrollbar-shadow-color: #D3D3D3 }
#button1img { z-index: 3; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
#button1text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 150px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button1bg { z-index: 1; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
#button2img { z-index: 3; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
#button2text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 180px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button2bg { z-index: 1; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
#button3img { z-index: 3; position: absolute; top: 210px; left: 11px; width: 111px; height: 23px; }
#button3text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 210px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button3bg { z-index: 1; position: absolute; top: 210px; left: 11px; width: 111px; height: 23px; }
#button4img { z-index: 3; position: absolute; top: 240px; left: 11px; width: 111px; height: 23px; }
#button4text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 240px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button4bg { z-index: 1; position: absolute; top: 240px; left: 11px; width: 111px; height: 23px; }
#button5img { z-index: 3; position: absolute; top: 270px; left: 11px; width: 111px; height: 23px; }
#button5text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 270px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button5bg { z-index: 1; position: absolute; top: 270px; left: 11px; width: 111px; height: 23px; }
#button6img { z-index: 3; position: absolute; top: 300px; left: 11px; width: 111px; height: 23px; }
#button6text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 300px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button6bg { z-index: 1; position: absolute; top: 300px; left: 11px; width: 111px; height: 23px; }
#button7img { z-index: 3; position: absolute; top: 330px; left: 11px; width: 111px; height: 23px; }
#button7text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 330px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button7bg { z-index: 1; position: absolute; top: 330px; left: 11px; width: 111px; height: 23px; }
#button8img { z-index: 3; position: absolute; top: 360px; left: 11px; width: 111px; height: 23px; }
#button8text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 360px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button8bg { z-index: 1; position: absolute; top: 360px; left: 11px; width: 111px; height: 23px; }
#button9img { z-index: 3; position: absolute; top: 390px; left: 11px; width: 111px; height: 23px; }
#button9text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 390px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button9bg { z-index: 1; position: absolute; top: 390px; left: 11px; width: 111px; height: 23px; }
#button10img { z-index: 3; position: absolute; top: 420px; left: 11px; width: 111px; height: 23px; }
#button10text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 420px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button10bg { z-index: 1; position: absolute; top: 420px; left: 11px; width: 111px; height: 23px; }
</style>
</head>
<body bgcolor="#ffffff" text="black" link="black" vlink="black" alink="black">
<div id="button1img"><a href="http://www.unrealircd.org" onMouseOver="document.button1.src='../sections/active.gif';" onMouseOut="document.button1.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button1" border="0"></a></div>
<div id="button1text" align="center"><center>Operators</center></div>
<div id="button1bg"><img src="../sections/bg.gif" border="0"></div>
<div id="button2img"><a href="http://www.unrealircd.org" onMouseOver="document.button2.src='../sections/active.gif';" onMouseOut="document.button2.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button2" border="0"></a></div>
<div id="button2text" align="center"><center>Other stuff</center></div>
<div id="button2bg"><img src="../sections/bg.gif" border="0"></div>
<div id="icon"><img
$ ICON
width="72" height="73" border="0"></div>
<div id="background"><img src="../back/background.jpg" width="650" border="0"></div>
<div id="unrealIRCdLink">
<table width="650" height="18" border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="3"><img src="../back/line.gif" width="650"></td></tr>
<tr width="650"><td valign="middle" align="right" height="9" width="97"><a target="_blank" href="http://www.unrealircd.com/" onMouseOver="document.unreallink.src='../unrealircd.com/active.gif';" onMouseOut="document.unreallink.src='../unrealircd.com/inactive.gif';"><img src="../unrealircd.com/inactive.gif" name="unreallink" border="0"></a></td>
$ STATUSLINE
</div>
<div id="content">
<div align="left"><i><span class="title">
$ SECTION
</span></i></div>
<center><table border="0" cellpadding="20" cellspacing="0" width="470" height="250" borderColorDark="black" borderColorLight="black"><tr><td valign="top" borderColorDark="#ffffff" borderColorLight="#ffffff">
$ DATA
</td></tr></table></center>
</div>
</body>
</html>
-90
View File
@@ -1,90 +0,0 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>
$ TITLE
</title>
<style type="text/css" media="screen">
<!--
BODY {
scrollbar-base-color : Black;
scrollbar-3d-light-color : #D3D3D3;
scrollbar-dark-shadow-color : #D3D3D3;
scrollbar-shadow-color : #D3D3D3;
scrollbar-highlight-color : #D3D3D3;
scrollbar-arrow-color : Black;
scrollbar-face-color : #D3D3D3;
background-color : #FFFFFF;
font-size : 8pt;
font-family : "Trebuchet MS", Arial, Tahoma;
}
.text, INPUT {
font-family : "Trebuchet MS", Arial, Tahoma;
font-size : 12px;
}
.status {
font-family : "Trebuchet MS", Arial, Tahoma;
font-size : 10px;
}
.title {
font-family : "Trebuchet MS", Arial, Tahoma;
font-size : 15pt;
}
.button {
font-family : Tahoma;
border : 1px solid #C8C8C8;
font-size : 11px;
cursor : hand;
background-color : #E5E5E5;
}
#background { position: absolute; z-index: 0; top: 0px; left: 0px; width: 650px; height: 450px; visibility: visible }
#content { position: absolute; top: 77px; left: 133px; width: 399px; height: 283px; visibility: visible }
#unrealIRCdLink { font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 432px; left: 0px; width: 650px; height: 16px; visibility: visible; }
#icon { z-index: 1; font-size: 8pt; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; top: 13px; left: 22px; width: 72px; height: 73px; visibility: visible; scrollbar-3d-light-color: #D3D3D3; scrollbar-arrow-color: Black; scrollbar-base-color: Black; scrollbar-dark-shadow-color: #D3D3D3; scrollbar-face-color: #D3D3D3; scrollbar-highlight-color: #D3D3D3; scrollbar-shadow-color: #D3D3D3 }
#button1img { z-index: 3; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
#button1text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 150px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button1bg { z-index: 1; position: absolute; top: 150px; left: 11px; width: 111px; height: 23px; }
#button2img { z-index: 3; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
#button2text { font-size: 10px; font-family: "Trebuchet MS", Arial, Tahoma; position: absolute; z-index: 2; top: 180px; left: 11px; width: 111px; height: 23px; padding: 1px}
#button2bg { z-index: 1; position: absolute; top: 180px; left: 11px; width: 111px; height: 23px; }
--></style>
</head>
<body bgcolor="#ffffff" text="black" link="black" vlink="black" alink="black">
<div id="button1img"><a href="http://www.unrealircd.org" onMouseOver="document.button1.src='../sections/active.gif';" onMouseOut="document.button1.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button1" border="0"></a></div>
<div id="button1text" align="center"><center>Operators</center></div>
<div id="button1bg"><img src="../sections/bg.gif" border="0"></div>
<div id="button2img"><a href="http://www.unrealircd.org" onMouseOver="document.button2.src='../sections/active.gif';" onMouseOut="document.button2.src='../sections/inactive.gif';"><img src="../sections/inactive.gif" name="button2" border="0"></a></div>
<div id="button2text" align="center"><center>Other stuff</center></div>
<div id="button2bg"><img src="../sections/bg.gif" border="0"></div>
<div id="icon"><img
$ ICON
width="72" height="73" border="0"></div>
<div id="background"><img src="../back/background.jpg" width="650" border="0"></div>
<div id="unrealIRCdLink">
<table width="650" height="18" border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="3"><img src="../back/line.gif" width="650"></td></tr>
<tr width="650"><td valign="middle" align="right" height="9" width="97"><a target="_blank" href="http://www.unrealircd.com/" onMouseOver="document.unreallink.src='../unrealircd.com/active.gif';" onMouseOut="document.unreallink.src='../unrealircd.com/inactive.gif';"><img src="../unrealircd.com/inactive.gif" name="unreallink" border="0"></a></td>
$ STATUSLINE
<!-- statusline <td align="center" height="9" width="450"><table width="398" height="9" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top" align="center"><span class="status">Status Text goes here</span></td></tr></table></td><td align="right" height="9" width="159"><img src="../back/grad.jpg"></td></tr></table> -->
</div>
<div id="content">
<div align="left"><i><span class="title">
$ SECTION
</span></i></div>
<center><table border="0" cellpadding="20" cellspacing="0" width="470" height="250" borderColorDark="black" borderColorLight="black"><tr><td valign="top" borderColorDark="#ffffff" borderColorLight="#ffffff">
$ DATA
</td></tr></table></center>
</div>
</body>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

-81
View File
@@ -1,81 +0,0 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<title>loader</title>
<csactions>
<csaction name="3093F4DA0" class="Open Window" type="onevent" val0="section/opers" val1="" val2="650" val3="450" val4="false" val5="false" val6="false" val7="false" val8="false" val9="false" val10="false">
</csactions>
<csscriptdict>
<script><!--
function CSClickReturn () {
var bAgent = window.navigator.userAgent;
var bAppName = window.navigator.appName;
if ((bAppName.indexOf("Explorer") >= 0) && (bAgent.indexOf("Mozilla/3") >= 0) && (bAgent.indexOf("Mac") >= 0))
return true; // dont follow link
else return false; // dont follow link
}
CSStopExecution = false;
function CSAction(array) {
return CSAction2(CSAct, array);
}
function CSAction2(fct, array) {
var result;
for (var i=0;i<array.length;i++) {
if(CSStopExecution) return false;
var actArray = fct[array[i]];
if(actArray == null) return false;
var tempArray = new Array;
for(var j=1;j<actArray.length;j++) {
if((actArray[j] != null) && (typeof(actArray[j]) == "object") && (actArray[j].length == 2)) {
if(actArray[j][0] == "VAR") {
tempArray[j] = CSStateArray[actArray[j][1]];
}
else {
if(actArray[j][0] == "ACT") {
tempArray[j] = CSAction(new Array(new String(actArray[j][1])));
}
else
tempArray[j] = actArray[j];
}
}
else
tempArray[j] = actArray[j];
}
result = actArray[0](tempArray);
}
return result;
}
CSAct = new Object;
function CSOpenWindow(action) {
var wf = "";
wf = wf + "width=" + action[3];
wf = wf + ",height=" + action[4];
wf = wf + ",resizable=" + (action[5] ? "yes" : "no");
wf = wf + ",scrollbars=" + (action[6] ? "yes" : "no");
wf = wf + ",menubar=" + (action[7] ? "yes" : "no");
wf = wf + ",toolbar=" + (action[8] ? "yes" : "no");
wf = wf + ",directories=" + (action[9] ? "yes" : "no");
wf = wf + ",location=" + (action[10] ? "yes" : "no");
wf = wf + ",status=" + (action[11] ? "yes" : "no");
window.open(action[1],action[2],wf);
}
// --></script>
</csscriptdict>
<csactiondict>
<script><!--
CSAct[/*CMP*/ '3093F4DA0'] = new Array(CSOpenWindow,/*URL*/ 'section/opers','',650,450,false,false,false,false,false,false,false);
// --></script>
</csactiondict>
</head>
<body bgcolor="#ffffff">
<p><br><br><br><br>
<center><a href="#" onclick="CSAction(new Array(/*CMP*/'3093F4DA0'));" csclick="3093F4DA0">Load the Configuration Console</a></center>
</body>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

-47
View File
@@ -1,47 +0,0 @@
/************************************************************************
* Unreal Internet Relay Chat Daemon, include/auth.h
* Copyright (C) 2001 Carsten V. Munk (stskeeps@tspre.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id$
*/
typedef struct {
char *data;
short type;
} anAuthStruct;
#define AUTHTYPE_PLAINTEXT 0
#define AUTHTYPE_UNIXCRYPT 1
#define AUTHTYPE_MD5 2
#define AUTHTYPE_SHA1 3
#define AUTHTYPE_SSL_PUBKEY 4
#ifdef USE_SSL
//#define AUTHENABLE_MD5
//#define AUTHENABLE_SHA1
//#define AUTHENABLE_SSL_PUBKEY
/* OpenSSL provides a crypt() */
#ifndef AUTHENABLE_UNIXCRYPT
#define AUTHENABLE_UNIXCRYPT
#endif
#endif
-22
View File
@@ -1,22 +0,0 @@
#ifndef __BADWORDS_H
#define __BADWORDS_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef HAVE_REGEX
#include <regex.h>
#else
#include "../extras/regex/regex.h"
#endif
#define MAX_MATCH 1
#define MAX_WORDLEN 64
#define PATTERN "\\w*%s\\w*"
#define REPLACEWORD "<censored>"
char *stripbadwords(char *, int);
#endif
+5 -5
View File
@@ -21,8 +21,8 @@
#ifndef __channel_include__
#define __channel_include__
#define CREATE 1 /* whether a channel should be
created or just tested for existance */
#define CREATE 1 /* whether a channel should be
created or just tested for existance */
#define MODEBUFLEN 200
@@ -30,7 +30,7 @@
#define ChannelExists(n) (find_channel(n, NullChn) != NullChn)
#define IsULine(sptr) (sptr->flags & FLAGS_ULINE)
#define IsULine(cptr,sptr) (sptr->flags & FLAGS_ULINE)
/* NOTE: Timestamps will be added to MODE-commands, so never make
* RESYNCMODES and MODEPARAMS higher than MAXPARA-3. DALnet servers
@@ -38,7 +38,7 @@
*/
#include "msg.h"
#define MAXMODEPARAMS (MAXPARA-2) /* Maximum modes processed */
#define RESYNCMODES 12 /* Max modes per MODE in resync */
#define MODEPARAMS 6 /* Max modes from user */
#define RESYNCMODES 12 /* Max modes per MODE in resync */
#define MODEPARAMS 6 /* Max modes from user */
#endif
+12 -9
View File
@@ -7,18 +7,21 @@
#ifndef CIO
#define CIO
typedef struct tag_CioLine {
BYTE *Data;
WORD Len;
struct tag_CioLine *Prev, *Next;
typedef struct tag_CioLine
{
BYTE *Data;
WORD Len;
struct tag_CioLine *Prev, *Next;
} CioLine;
typedef struct tag_CioWndInfo {
typedef struct tag_CioWndInfo
{
CioLine *FirstLine, *CurLine;
int Lines, Scroll;
int Width, Height, XChar, YChar, YJunk, ScrollMe;
HFONT hFont;
BYTE FR, FG, FB;
int Lines, Scroll;
int Width, Height, XChar, YChar, YJunk, ScrollMe;
HFONT hFont;
BYTE FR, FG, FB;
} CioWndInfo;
#endif
+2 -3
View File
@@ -10,12 +10,11 @@ BOOL Cio_Init(HINSTANCE hInstance);
// Cio_Main.c
LRESULT CALLBACK Cio_WndProc(HWND, UINT, WPARAM, LPARAM);
HWND Cio_Create(HINSTANCE hInstance, HWND hParent, DWORD Style, int X, int Y,
int W, int H);
HWND Cio_Create(HINSTANCE hInstance, HWND hParent, DWORD Style, int X, int Y, int W, int H);
BOOL Cio_WndCreate(HWND hWnd);
BOOL Cio_WndPaint(HWND hWnd);
BOOL Cio_WndDestroy(HWND hWnd);
BOOL Cio_WndAddString(HWND hWnd, int Len, char *Buffer);
BOOL Cio_WndSize(HWND hWnd, LPARAM lParam);
void Cio_Scroll(HWND hWnd, CioWndInfo * CWI, int Scroll);
void Cio_Scroll(HWND hWnd, CioWndInfo *CWI, int Scroll);
BOOL Cio_PrintF(HWND hWnd, char *InBuf, ...);
+15 -15
View File
@@ -31,12 +31,12 @@
#endif
typedef struct Class {
int class;
int conFreq;
int pingFreq;
int maxLinks;
long maxSendq;
int links;
int class;
int conFreq;
int pingFreq;
int maxLinks;
long maxSendq;
int links;
struct Class *next;
} aClass;
@@ -57,15 +57,15 @@ typedef struct Class {
#define FirstClass() classes
#define NextClass(x) ((x)->next)
extern aClass *classes;
extern aClass *classes;
extern aClass *find_class PROTO((int));
extern int get_conf_class PROTO((aConfItem *));
extern int get_client_class PROTO((aClient *));
extern int get_client_ping PROTO((aClient *));
extern int get_con_freq PROTO((aClass *));
extern void add_class PROTO((int, int, int, int, long));
extern void check_class PROTO((void));
extern void initclass PROTO((void));
extern aClass *find_class PROTO((int));
extern int get_conf_class PROTO((aConfItem *));
extern int get_client_class PROTO((aClient *));
extern int get_client_ping PROTO((aClient *));
extern int get_con_freq PROTO((aClass *));
extern void add_class PROTO((int, int, int, int, long));
extern void check_class PROTO((void));
extern void initclass PROTO((void));
#endif /* __class_include__ */
+29 -140
View File
@@ -29,7 +29,7 @@
#include <winsock.h>
#include <process.h>
#include <io.h>
//#include "struct.h"
#include "struct.h"
#endif
#include "dynconf.h"
#include "ircsprintf.h"
@@ -37,9 +37,6 @@
#ifdef PARAMH
#include <sys/param.h>
#endif
#if !defined(IN_ADDR)
#include "sys.h"
#endif
#ifndef PROTO
#if __STDC__
@@ -50,21 +47,17 @@
#endif
#ifdef DEVELOP_CVS
#define ID_CVS(x) static char id_cvs[] = x
#define ID_Copyright(x) static char id_copyright[] = x
#define ID_Notes(x) static char id_notes[] = x
#else
#define ID_CVS(x)
#define ID_Copyright(x)
#define ID_Notes(x)
#endif
#define BMAGIC 0x4675636B596F754661736369737473
#define BASE_VERSION "Unreal"
#ifndef _WIN32
#define FDwrite(x,y,z) write(x, y, z)
#else
#define FDwrite(x,y,z) send(x, y, z, 0)
#endif
#ifndef NULL
#define NULL 0
#endif
@@ -86,29 +79,27 @@
#if 0
#ifndef MALLOCH
char *malloc(), *calloc();
void free();
char *malloc(), *calloc();
void free();
#else
#include MALLOCH
#endif
#endif
#define TS time_t
extern int match PROTO((char *, char *));
extern int match PROTO((char *, char *));
#define mycmp(a,b) \
( (toupper((a)[0])!=toupper((b)[0])) || smycmp((a)+1,(b)+1) )
extern int smycmp PROTO((char *, char *));
extern int smycmp PROTO((char *, char *));
#ifndef GLIBC2_x
extern int myncmp PROTO((char *, char *, int));
#endif
extern int myncmp PROTO((char *, char *, int));
#endif
#ifdef NEED_STRTOK
extern char *strtok2 PROTO((char *, char *));
extern char *strtok2 PROTO((char *, char *));
#endif
#ifdef NEED_STRTOKEN
extern char *strtoken PROTO((char **, char *, char *));
extern char *strtoken PROTO((char **, char *, char *));
#endif
#ifdef NEED_INET_ADDR
extern unsigned long inet_addr PROTO((char *));
@@ -125,7 +116,7 @@ extern char *inet_ntoa PROTO((struct IN_ADDR));
extern int inet_netof PROTO((struct IN_ADDR));
#endif
int global_count, max_global_count;
int global_count, max_global_count;
extern char *myctime PROTO((time_t));
extern char *strtoken PROTO((char **, char *, char *));
@@ -142,10 +133,6 @@ extern char *strtoken PROTO((char **, char *, char *));
extern u_char tolowertab[], touppertab[];
#if defined(CHINESE_NICK) || defined(JAPANESE_NICK)
#define USE_LOCALE
#endif
#ifndef USE_LOCALE
#undef tolower
#define tolower(c) (tolowertab[(c)])
@@ -200,138 +187,40 @@ extern unsigned char char_atribs[];
#define ispunct(c) (!(char_atribs[(u_char)(c)]&(CNTRL|ALPHA|DIGIT)))
#endif
#ifndef MALLOCD
#define MyFree free
#define MyMalloc malloc
#define MyRealloc realloc
#else
#define MyFree(x) ircd_log("%s:%i: free %02x", __FILE__, __LINE__, x); free(x)
#define MyMalloc(x) StsMalloc(x, __FILE__, __LINE__)
#define MyRealloc realloc
static char *StsMalloc(size_t size, char *file, long line)
{
void *x;
x = malloc(size);
ircd_log("%s:%i: malloc %02x", file, line, x);
return x;
}
// #ifndef DMALLOC
extern char *MyMalloc();
// #else
// #define MyMalloc malloc
// #define MyRealloc realloc
// #define MyFree free
// #endif
extern void flush_connections();
extern struct SLink *find_user_link(/* struct SLink *, struct Client * */);
#endif
extern struct SLink *find_user_link( /* struct SLink *, struct Client * */ );
#define EVENT_HASHVALUE 337
#define EVENT_CHECKIT match
#define EVENT_CRC unreallogo
/*
* Protocol support text. DO NO CHANGE THIS unless you know what
* you are doing.
*/
#ifdef ZIP_LINKS
#define ZIPSTUFF " ZIP"
#else
#define ZIPSTUFF ""
#endif
/* IRCu/Hybrid/Unreal way now :) -Stskeeps */
#define PROTOCTL_CLIENT \
" MAP" \
" KNOCK" \
" SAFELIST" \
" HCN" \
" WALLCHOPS" \
" WATCH=%i" \
" SILENCE=%i" \
" MODES=%i" \
" MAXCHANNELS=%i" \
" MAXBANS=%i" \
" NICKLEN=%i" \
" TOPICLEN=%i" \
" KICKLEN=%i" \
" CHANTYPES=%s" \
" PREFIX=%s" \
" CHANMODES=%s,%s,%s,%s" \
" NETWORK=%s" \
" :are supported by this server"
#define PROTOCTL_PARAMETERS MAXWATCH, \
MAXSILES, \
MAXMODEPARAMS, \
MAXCHANNELSPERUSER, \
MAXBANS, \
NICKLEN, \
TOPICLEN, \
TOPICLEN, \
"#", \
"(ohv)@%+", \
"ohvbeqa", \
"k", \
"lfL", \
"psmntirRcOAQKVHGCuzN", \
ircnet005
/* Server-Server PROTOCTL -Stskeeps */
#define PROTOCTL_SERVER "NOQUIT" \
" TOKEN" \
" NICKv2" \
" SJOIN" \
" SJOIN2" \
" UMODE2" \
" VL" \
" SJ3" \
" NS" \
" SJB64" \
ZIPSTUFF
#define PROTOCTL_CLIENT "TOKEN WATCH=128 SAFELIST HCN PREFIX=@+%"
#define PROTOCTL_SERVER "NOQUIT TOKEN NICKv2 SJOIN SJOIN2 UMODE2 ALN"
#ifdef _WIN32
/*
* Used to display a string to the GUI interface.
* Windows' internal strerror() function doesn't work with socket errors.
*/
extern int DisplayString(HWND hWnd, char *InBuf, ...);
extern int DisplayString(HWND hWnd, char *InBuf, ...);
#undef strerror
// winlocal
#else
typedef int SOCKET;
#define INVALID_SOCKET -1
// winlocal
#endif
#if defined(__FreeBSD__) || defined(__APPLE__)
extern char *malloc_options;
#endif
extern int lu_noninv, lu_inv, lu_serv, lu_oper,
lu_unknown, lu_channel, lu_lu, lu_lulocal, lu_lserv,
lu_clu, lu_mlu, lu_cglobalu, lu_mglobalu;
TS now;
#if defined(__STDC__)
#define __const const
#define __signed signed
#define __volatile volatile
#ifndef __GNUC__
#define __inline
#endif
#else
#ifndef __GNUC__
#define __const
#define __inline
#define __signed
#define __volatile
#ifndef NO_ANSI_KEYWORDS
#define const /* delete ANSI C keywords */
#define inline
#define signed
#define volatile
#endif
#endif
#endif
extern int lu_noninv, lu_inv, lu_serv, lu_oper,
lu_unknown, lu_channel, lu_lu, lu_lulocal, lu_lserv,
lu_clu, lu_mlu, lu_cglobalu, lu_mglobalu;
time_t now;
#endif /* __common_include__ */

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