mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-25 09:36:38 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42949736f6 |
@@ -0,0 +1,18 @@
|
||||
Welcome to the UnrealIRCd configuration program. This program
|
||||
will help you to compile your IRC server, and ask you questions
|
||||
regarding the setup of it, during the process.
|
||||
|
||||
If you need help to set the IRCd up, mail
|
||||
unreal-support@lists.sourceforge.net or ask at IRC:
|
||||
/server irc.ircsystems.net, /join #unrealircd
|
||||
|
||||
For any sake, read Unreal.nfo and read doc/faq before asking questions
|
||||
|
||||
NOTE: If the code is changed in any way, or the version string is changed,
|
||||
we do _NOT_ support the product, except if you got explicit permission
|
||||
from one of the UnrealIRCd coders. If it fails and you messed with it,
|
||||
you can't blame noone but yourself. Also, non-official UnrealIRCd/32
|
||||
builds (if it doesn't say "geniune" in the display) are _NOT_
|
||||
supported.
|
||||
|
||||
-Stskeeps (Head coder of UnrealIRCd)
|
||||
@@ -0,0 +1,8 @@
|
||||
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||
| UnrealIRCD Custom Create Network Configuration|
|
||||
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||
| |
|
||||
| This will not be too hard, just follow the |
|
||||
| instructions, and answer the questions... |
|
||||
| |
|
||||
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
Unreal3.1.1-Darkshades Release Notes
|
||||
===================================
|
||||
|
||||
* It is REALLY RECOMMENDED that you run only Unreal3.1.1<->Unreal3.1.1,
|
||||
as Unreal3.1+sf got some funny SJOIN bugs that causes the network to
|
||||
desynch
|
||||
|
||||
* It is ADVISABLE that you allocate numerics to each server on your network.
|
||||
You simply in the M: line, just after the port, add :numeric, like:
|
||||
|
||||
M:irc.fyremoon.net:*:Description:6667:20
|
||||
|
||||
Where 20 is the numeric. Numerics are 1-255, 0 means no numeric (bad),
|
||||
and no server must have same numeric
|
||||
|
||||
* We have introduced encrypted irc connections, using SSL
|
||||
You need to set up a SSL port, P:IP:s:*:port
|
||||
To connect securely to another server, add :S at the end of the C:line
|
||||
and make sure it autoconnect/connects to a SSL port
|
||||
|
||||
* Read Unreal.nfo for any sake AND THE DOCS IN doc/. To update/upgrade your IRCd,
|
||||
please run the ./update script. This requires "wget" and "cvs" on the box to function
|
||||
@@ -0,0 +1,20 @@
|
||||
|-------------------------------------------------------------------------|
|
||||
| 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 |
|
||||
---------------------------------------------------------------------------
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _` | | | | | / | | / _` |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Update Script v2.0
|
||||
|
||||
What download program do you want to use?
|
||||
-----------------------------------------
|
||||
|
||||
Type "wget" for wget
|
||||
Type "lynx" for lynx
|
||||
|
||||
>
|
||||
@@ -0,0 +1,2 @@
|
||||
ircdcron/ircd.cron
|
||||
ircdcron/ircdchk
|
||||
-75
@@ -1,75 +0,0 @@
|
||||
# Ignore configure step
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
config.log
|
||||
conftest.*
|
||||
config.settings
|
||||
extras/pcre2*
|
||||
extras/c-ares*
|
||||
config.status
|
||||
extras/ircdcron/ircd.cron
|
||||
extras/ircdcron/ircdchk
|
||||
src/modules/snomasks/Makefile
|
||||
src/modules/chanmodes/Makefile
|
||||
src/modules/extbans/Makefile
|
||||
src/modules/usermodes/Makefile
|
||||
src/modules/Makefile
|
||||
src/modules/third/Makefile
|
||||
/Makefile
|
||||
/src/Makefile
|
||||
/unrealircd
|
||||
include/setup.h
|
||||
|
||||
# Ignore tags file
|
||||
tags
|
||||
|
||||
# Ignore editor files
|
||||
*\#*
|
||||
*~
|
||||
|
||||
# Ignore SSL Stuff
|
||||
server.cert.pem
|
||||
server.key.pem
|
||||
server.req.pem
|
||||
tls.rnd
|
||||
|
||||
# Ignores for platform stuff
|
||||
.DS_Store
|
||||
|
||||
# Ignores for build artifacts
|
||||
*.so
|
||||
*.o
|
||||
*.dSYM
|
||||
*.dylib
|
||||
src/ircd
|
||||
src/version.c
|
||||
src/include
|
||||
|
||||
# Ignores for mac stuff
|
||||
## Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
xcuserdata
|
||||
|
||||
## Other
|
||||
*.xccheckout
|
||||
*.moved-aside
|
||||
*.xcuserstate
|
||||
*.xcscmblueprint
|
||||
|
||||
## Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
|
||||
src/macosx/build/
|
||||
DerivedData
|
||||
src/macosx/pods/
|
||||
|
||||
# Doxygen generated files
|
||||
doc/doxygen/
|
||||
@@ -0,0 +1,2 @@
|
||||
List of helpers in the alpha/beta phase:
|
||||
* Headbang, Alpha/beta tester
|
||||
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* 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
|
||||
+1751
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,15 @@
|
||||
|
||||
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).
|
||||
|
||||
-- Stskeeps
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,99 @@
|
||||
###############################################################################
|
||||
#### 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 unreal-dev@lists.sourceforge.net 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. ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
|
||||
|
||||
|
||||
+237
@@ -0,0 +1,237 @@
|
||||
#/************************************************************************
|
||||
#* IRC - Internet Relay Chat, Makefile
|
||||
#* Copyright (C) 1990, Jarkko Oikarinen
|
||||
#*
|
||||
#* This program is free software; you can redistribute it and/or modify
|
||||
#* it under the terms of the GNU General Public License as published by
|
||||
#* the Free Software Foundation; either version 1, or (at your option)
|
||||
#* any later version.
|
||||
#*
|
||||
#* This program is distributed in the hope that it will be useful,
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#* GNU General Public License for more details.
|
||||
#*
|
||||
#* You should have received a copy of the GNU General Public License
|
||||
#* along with this program; if not, write to the Free Software
|
||||
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#*
|
||||
#* $Id$
|
||||
#*/
|
||||
|
||||
CC=gcc
|
||||
INCLUDEDIR=../include
|
||||
NETWORKSDIR=
|
||||
FROMDOS=/home/cmunk/bin/4dos
|
||||
# [CHANGEME]
|
||||
# Default flags:
|
||||
# Change XCFLAGS if you don't like what Config puts there. Same with
|
||||
# IRCDLIBS.
|
||||
#
|
||||
# If you are configuring by hand, try "-O -g" for XCFLAGS, and leave
|
||||
# IRCDLIBS blank. If that fails, try recomendations below.
|
||||
#
|
||||
XCFLAGS=
|
||||
IRCDLIBS=
|
||||
CRYPTOLIB=
|
||||
OPENSSLINCLUDES=
|
||||
#
|
||||
# use the following on MIPS:
|
||||
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
||||
# For Irix 4.x (SGI), use the following:
|
||||
#CFLAGS= -g -cckr -I$(INCLUDEDIR)
|
||||
#
|
||||
# on NEXT use:
|
||||
#CFLAGS=-bsd -I$(INCLUDEDIR)
|
||||
#on NeXT other than 2.0:
|
||||
#IRCDLIBS=-lsys_s
|
||||
#
|
||||
# AIX 370 flags
|
||||
#CFLAGS=-D_BSD -Hxa -I$(INCLUDEDIR)
|
||||
#IRCDLIBS=-lbsd
|
||||
#
|
||||
# Dynix/ptx V2.0.x
|
||||
#CFLAGS= -I$(INCLUDEDIR) -O -Xo
|
||||
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
||||
#
|
||||
# Dynix/ptx V1.x.x
|
||||
#IRCDLIBS= -lsocket -linet -lnsl -lseq
|
||||
#
|
||||
#use the following on SUN OS without nameserver libraries inside libc
|
||||
#IRCDLIBS=-lresolv
|
||||
#
|
||||
# Solaris 2
|
||||
#IRCDLIBS=-lsocket -lnsl -lresolv -L/usr/ucblib -R/usr/ucblib -lgen
|
||||
#
|
||||
# ESIX
|
||||
#CFLAGS=-O -I$(INCLUDEDIR) -I/usr/ucbinclude
|
||||
#IRCDLIBS=-L/usr/ucblib -L/usr/lib -lsocket -lucb -lns -lnsl
|
||||
#
|
||||
# LDFLAGS - flags to send the loader (ld). SunOS users may want to add
|
||||
# -Bstatic here.
|
||||
#
|
||||
#LDFLAGS=-Bstatic
|
||||
#
|
||||
#Dell SVR4
|
||||
#CC=gcc
|
||||
#CFLAGS= -I$(INCLUDEDIR) -O2
|
||||
#IRCDLIBS=-lsocket -lnsl -lucb
|
||||
|
||||
# [CHANGEME]
|
||||
# IRCDMODE is the mode you want the binary to be.
|
||||
# The 4 at the front is important (allows for setuidness)
|
||||
#
|
||||
# WARNING: if you are making ircd SUID or SGID, check config.h to make sure
|
||||
# you are not defining CMDLINE_CONFIG
|
||||
IRCDMODE = 711
|
||||
|
||||
# [CHANGEME]
|
||||
# IRCDDIR must be the same as DPATH in include/config.h
|
||||
#
|
||||
IRCDDIR=/usr/local/lib/ircd
|
||||
|
||||
# [CHANGEME]
|
||||
# Some SunOS versions want this. Try it without first.
|
||||
#RES=res_init.o res_comp.o res_mkquery.o
|
||||
# BSDI systems want this.
|
||||
#RES=res_skipname.o
|
||||
# The rest are perfectly content with this.
|
||||
RES=
|
||||
|
||||
#
|
||||
# If your system is lacking regex, uncomment this line
|
||||
#
|
||||
#REGEX=../extras/regex/regex.o
|
||||
REGEX=
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get a compile-time error dealing with u_int32_t, comment out
|
||||
# this line.
|
||||
# NEED_U_INT32_T= -DNEED_U_INT32_T
|
||||
NEED_U_INT32_T=
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get a link-time error dealing with strtoul, comment out
|
||||
# this line.
|
||||
# STRTOUL= strtoul.o
|
||||
STRTOUL=
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get crashes around a specific number of clients, and that client
|
||||
# load comes close or a little over the system-defined value of FD_SETSIZE,
|
||||
# override it here and see what happens.
|
||||
FD_SETSIZE=
|
||||
|
||||
# Where is your openssl binary
|
||||
OPENSSLPATH=
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(NEED_U_INT32_T) $(FD_SETSIZE)
|
||||
|
||||
SHELL=/bin/sh
|
||||
SUBDIRS=src
|
||||
BINDIR=$(IRCDDIR)
|
||||
MANDIR=/usr/local/man
|
||||
INSTALL=/usr/bin/install
|
||||
RM=rm
|
||||
CP=cp
|
||||
TOUCH=touch
|
||||
|
||||
all: build
|
||||
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
|
||||
'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
|
||||
'MANDIR=${MANDIR}' 'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||
'RES=${RES}' 'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
|
||||
'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
|
||||
-@if [ -f include/settings.h ] ; then \
|
||||
echo "and include/settings.h" ; \
|
||||
fi
|
||||
|
||||
cleandir: clean
|
||||
rm -rf include/networks.h include/setup.h include/settings.h Makefile Settings
|
||||
|
||||
makex:
|
||||
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
|
||||
@echo "Now install by hand; make install is broken."
|
||||
|
||||
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!."
|
||||
-276
@@ -1,276 +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=@UNRLINCDIR@
|
||||
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
|
||||
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @PTHREAD_LIBS@
|
||||
CRYPTOLIB=@CRYPTOLIB@
|
||||
OPENSSLINCLUDES=
|
||||
|
||||
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
|
||||
#
|
||||
# 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
|
||||
|
||||
URL=@URL@
|
||||
|
||||
# Where is your openssl binary
|
||||
OPENSSLPATH=@OPENSSLPATH@
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
|
||||
XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
|
||||
LDFLAGS=$(XLDFLAGS)
|
||||
|
||||
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}' \
|
||||
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||
'SHELL=${SHELL}' \
|
||||
'CRYPTOLIB=${CRYPTOLIB}' \
|
||||
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
|
||||
'URL=${URL}'
|
||||
|
||||
custommodule:
|
||||
@if test -z "${MODULEFILE}"; then echo "Please set MODULEFILE when calling \`\`make custommodule''. For example, \`\`make custommodule MODULEFILE=callerid''." >&2; exit 1; fi
|
||||
+cd src; ${MAKE} ${MAKEARGS} MODULEFILE=${MODULEFILE} 'EXLIBS=${EXLIBS}' custommodule
|
||||
|
||||
server: Makefile
|
||||
build: Makefile
|
||||
-@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 '* UnrealIRCd compiled successfully'
|
||||
@echo '* YOU ARE NOT DONE YET! Run "make install" to install UnrealIRCd !'
|
||||
@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/setup.h Makefile Settings
|
||||
|
||||
distclean: cleandir
|
||||
rm -rf extras/*.bak extras/*.tar extras/c-ares
|
||||
rm -rf extras/c-ares-* extras/tre-*
|
||||
rm -rf config.log config.settings *.pem ircd.* unrealircd
|
||||
rm -rf Makefile config.status
|
||||
|
||||
depend:
|
||||
@+for i in $(SUBDIRS); do \
|
||||
echo "Making dependencies in $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} depend; ) \
|
||||
done
|
||||
|
||||
install: all
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@BINDIR@
|
||||
$(INSTALL) -m 0700 src/ircd $(DESTDIR)@BINDIR@/unrealircd
|
||||
$(INSTALL) -m 0700 extras/unrealircd-upgrade-script $(DESTDIR)@BINDIR@/unrealircd-upgrade-script
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@DOCDIR@
|
||||
$(INSTALL) -m 0600 doc/Authors doc/coding-guidelines doc/tao.of.irc doc/KEYS doc/RELEASE-NOTES.md $(DESTDIR)@DOCDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@
|
||||
$(INSTALL) -m 0600 doc/conf/*.default.conf $(DESTDIR)@CONFDIR@
|
||||
$(INSTALL) -m 0600 doc/conf/*.optional.conf $(DESTDIR)@CONFDIR@
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/modules.sources.list" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/modules.sources.list $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/spamfilter.conf" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/spamfilter.conf $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
-@extras/patches/patch_spamfilter_conf "$(DESTDIR)@CONFDIR@"
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/badwords.conf" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/badwords.conf $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/dccallow.conf" ] ; then \
|
||||
$(INSTALL) -m 0600 doc/conf/dccallow.conf $(DESTDIR)@CONFDIR@ ; \
|
||||
fi
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/aliases
|
||||
$(INSTALL) -m 0600 doc/conf/aliases/*.conf $(DESTDIR)@CONFDIR@/aliases
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/help
|
||||
$(INSTALL) -m 0600 doc/conf/help/*.conf $(DESTDIR)@CONFDIR@/help
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/examples
|
||||
$(INSTALL) -m 0600 doc/conf/examples/*.conf $(DESTDIR)@CONFDIR@/examples
|
||||
$(INSTALL) -m 0700 unrealircd $(DESTDIR)@SCRIPTDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/*.so $(DESTDIR)@MODULESDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/usermodes
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/usermodes/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/usermodes/*.so $(DESTDIR)@MODULESDIR@/usermodes
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/chanmodes
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/chanmodes/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/chanmodes/*.so $(DESTDIR)@MODULESDIR@/chanmodes
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/snomasks
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/snomasks/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/snomasks/*.so $(DESTDIR)@MODULESDIR@/snomasks
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/extbans
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/extbans/*.so $(DESTDIR)@MODULESDIR@/extbans
|
||||
@#If the conf/ssl directory exists then rename it here to conf/tls
|
||||
@#and add a symlink for backwards compatibility (so that f.e. certbot
|
||||
@#doesn't randomly fail after an upgrade to U5).
|
||||
-@if [ -d "$(DESTDIR)@CONFDIR@/ssl" ] ; then \
|
||||
mv "$(DESTDIR)@CONFDIR@/ssl" "$(DESTDIR)@CONFDIR@/tls" ; \
|
||||
ln -s "$(DESTDIR)@CONFDIR@/tls" "$(DESTDIR)@CONFDIR@/ssl" ; \
|
||||
fi
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CONFDIR@/tls
|
||||
$(INSTALL) -m 0600 doc/conf/tls/curl-ca-bundle.crt $(DESTDIR)@CONFDIR@/tls
|
||||
@# delete modules/cap directory, to avoid confusing with U4 to U5 upgrades:
|
||||
rm -rf $(DESTDIR)@MODULESDIR@/cap
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/third
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/third/*.so 1>/dev/null 2>&1
|
||||
@#This step can fail with zero files, so we ignore exit status:
|
||||
-$(INSTALL) -m 0700 src/modules/third/*.so $(DESTDIR)@MODULESDIR@/third
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@TMPDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@CACHEDIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@PERMDATADIR@
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@LOGDIR@
|
||||
-@if [ ! -f "$(DESTDIR)@CONFDIR@/tls/server.cert.pem" ] ; then \
|
||||
$(INSTALL) -m 0600 server.req.pem $(DESTDIR)@CONFDIR@/tls ; \
|
||||
$(INSTALL) -m 0600 server.key.pem $(DESTDIR)@CONFDIR@/tls ; \
|
||||
$(INSTALL) -m 0600 server.cert.pem $(DESTDIR)@CONFDIR@/tls ; \
|
||||
fi
|
||||
@rm -f $(DESTDIR)@SCRIPTDIR@/source
|
||||
ln -s @BUILDDIR@ $(DESTDIR)@SCRIPTDIR@/source
|
||||
@echo ''
|
||||
@echo '* UnrealIRCd is now installed.'
|
||||
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo '* Leave this directory and run "cd @SCRIPTDIR@" now' ; \
|
||||
fi
|
||||
@echo '* Directory layout:'
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo ' * Base directory: @SCRIPTDIR@' ; \
|
||||
fi
|
||||
@echo ' * Configuration files: @CONFDIR@'
|
||||
@echo ' * Log files: @LOGDIR@'
|
||||
@echo ' * Modules: @MODULESDIR@'
|
||||
@echo '* To start/stop UnrealIRCd run: @SCRIPTDIR@/unrealircd"'
|
||||
@echo ''
|
||||
@echo '* Consult the documentation online at:'
|
||||
@echo ' * https://www.unrealircd.org/docs/'
|
||||
@echo ' * https://www.unrealircd.org/docs/FAQ'
|
||||
@echo '* You may also wish to install a cron job to ensure UnrealIRCd is always running:'
|
||||
@echo ' * https://www.unrealircd.org/docs/Cron_job'
|
||||
@echo ''
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
|
||||
fi
|
||||
|
||||
pem: extras/tls.cnf
|
||||
@echo "Generating server key..."
|
||||
$(OPENSSLPATH) ecparam -out server.key.pem -name secp384r1 -genkey
|
||||
@echo "Generating certificate request..."
|
||||
$(OPENSSLPATH) req -new \
|
||||
-config extras/tls.cnf -sha256 -out server.req.pem \
|
||||
-key server.key.pem -nodes
|
||||
@echo "Generating self-signed certificate..."
|
||||
$(OPENSSLPATH) req -x509 -days 3650 -sha256 -in server.req.pem \
|
||||
-key server.key.pem -out server.cert.pem
|
||||
@echo "Setting permissions on server.*.pem 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
|
||||
|
||||
Makefile: config.status Makefile.in
|
||||
./config.status
|
||||
-1130
File diff suppressed because it is too large
Load Diff
@@ -1,58 +0,0 @@
|
||||
[](https://twitter.com/Unreal_IRCd)
|
||||
|
||||
## About UnrealIRCd
|
||||
UnrealIRCd is an Open Source IRC Server, serving thousands of networks since 1999.
|
||||
It runs on Linux, OS X and Windows and is currently the most widely deployed IRCd
|
||||
with a market share of 42%. UnrealIRCd is a highly advanced IRCd with a strong
|
||||
focus on modularity, an advanced and highly configurable configuration file.
|
||||
Key features include SSL/TLS, cloaking, its advanced anti-flood and anti-spam systems,
|
||||
swear filtering and module support. We are also particularly proud on our extensive
|
||||
online documentation.
|
||||
|
||||
## How to get started
|
||||
Please consult our excellent online documentation at https://www.unrealircd.org/docs/
|
||||
when setting up the IRCd!
|
||||
|
||||
### Step 1: Installation
|
||||
#### Windows
|
||||
Simply download the UnrealIRCd Windows version from www.unrealircd.org
|
||||
|
||||
Alternatively you can compile UnrealIRCd for Windows yourself. However this is not straightforward and thus not recommended.
|
||||
|
||||
#### *BSD/Linux/macOS
|
||||
Do the following steps under a separate account for running UnrealIRCd,
|
||||
[do NOT compile or run as root](https://www.unrealircd.org/docs/Do_not_run_as_root).
|
||||
|
||||
### Step 1: Compile the IRCd
|
||||
|
||||
* Run `./Config`
|
||||
* Run `make`
|
||||
* Run `make install`
|
||||
* Now change to the directory where you installed UnrealIRCd, e.g. `cd /home/xxxx/unrealircd`
|
||||
|
||||
### Step 2: Configuration
|
||||
Configuration files are stored in the conf/ folder by default (eg: /home/xxxx/unrealircd/conf)
|
||||
|
||||
#### Create a configuration file
|
||||
If you are new, then you need to create your own configuration file:
|
||||
Copy conf/examples/example.conf to conf/ and call it unrealircd.conf.
|
||||
Then open it in an editor and carefully modify it using the documentation and FAQ as a guide (see below).
|
||||
|
||||
### Step 3: Booting
|
||||
|
||||
#### Linux/*BSD/macOS
|
||||
Run `./unrealircd start` in the directory where you installed UnrealIRCd.
|
||||
|
||||
#### Windows
|
||||
Start -> All Programs -> UnrealIRCd -> UnrealIRCd
|
||||
|
||||
## Documentation & FAQ
|
||||
You can find the **documentation** online at: https://www.unrealircd.org/docs/
|
||||
|
||||
We also have a good **FAQ**: https://www.unrealircd.org/docs/FAQ
|
||||
|
||||
## Website, support, and other links ##
|
||||
* https://www.unrealircd.org - Our main website
|
||||
* https://forums.unrealircd.org - Support
|
||||
* https://bugs.unrealircd.org - Bug tracker
|
||||
* ircs://irc.unrealircd.org:6697/unreal-support - IRC support
|
||||
@@ -0,0 +1,23 @@
|
||||
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
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
Some notes to remember:
|
||||
-----------------------
|
||||
* Don't EVER try to link it to incompatible IRCds (this does not
|
||||
include services). It is *INCOMPATIBLE*. Please HEED this warning!!!
|
||||
|
||||
* If you need any help you can email me at stskeeps@tspre.org
|
||||
|
||||
* Please read the Changes file about release notes
|
||||
|
||||
* Bugs? Read Unreal.nfo
|
||||
|
||||
* Unreal IRCd is not meant to be a simple IRCd, rather an advanced
|
||||
IRCd, please read the documentation before asking questions
|
||||
|
||||
[ $Id$ ]
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
* The latest *stable* release of the 5.x branch
|
||||
|
||||
See [UnrealIRCd releases](https://www.unrealircd.org/docs/UnrealIRCd_releases) for information on older versions and End Of Life dates.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report issues on the [bug tracker](https://bugs.unrealircd.org) and in the bug submit form **set the 'View Status' to 'private'**.
|
||||
|
||||
Do not report security issues on the forums or in a public IRC channel such as #unreal-support.
|
||||
If you insist on e-mail then you can use syzop@unrealircd.org or security@unrealircd.org. Again, the bug tracker is preferred.
|
||||
|
||||
If you are *unsure* if something is a security issue, then report it at the bug tracker as a 'private' bug anyway. Better safe than sorry.
|
||||
Do not ask around in public channels or forums.
|
||||
|
||||
You should get a response or at least an acknowledgement soon. If you don't hear back within 24 hours, then please try to contact us again.
|
||||
|
||||
## Full policy
|
||||
See https://www.unrealircd.org/docs/Policy:_Handling_of_security_issues for full information.
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/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 ircd.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 "Press enter to proceed to dynamic ircd configuration..."
|
||||
read cc
|
||||
pico unrealircd.conf
|
||||
echo "You should be able to run UnrealIRCd using ./ircd now".
|
||||
@@ -0,0 +1,170 @@
|
||||
TODO for Unreal Next:
|
||||
|
||||
Write in entries in this form:
|
||||
==============================
|
||||
|
||||
* nick - date - priority - [ title ] Flag:
|
||||
description
|
||||
|
||||
Flags:
|
||||
CLOSED
|
||||
= Bug/Idea fixed/implemented. Bug/Idea is up for deletion
|
||||
OPEN
|
||||
= Bug/Idea up for fixing
|
||||
IN-REPAIR <nick>
|
||||
= Bug/Idea In Progress/Repair by <nick>
|
||||
NO-PRODUCE
|
||||
= Bug/Idea is not able to be (re)produced
|
||||
POSTPONED
|
||||
= Bug/Idea is scheduled for another release/time
|
||||
|
||||
If you think that a priority should be higher, make it++
|
||||
|
||||
Priority is 1..10, where 10 is highest, and 1 is lowest.
|
||||
----
|
||||
TODO :
|
||||
----
|
||||
|
||||
* stskeeps - Tue Dec 12 2000 - 1 - [ IPv6 ] OPEN:
|
||||
Add IPv6 compatiblity (requested by many people). Must allow :'s in
|
||||
hostnames, will kill backwards compatiblity when IPv6 is enabled
|
||||
|
||||
* stskeeps - Tue Dec 12 2000 - 1 - [ Code ] OPEN:
|
||||
Split up code, and make the placement of functions more logic
|
||||
|
||||
* codemastr - Tue Dec 12 2000 - 4 - [ Zip_Links ] OPEN:
|
||||
Actually add this since it was planned for 3.0
|
||||
|
||||
* codemastr - Tue Dec 12 2000 - 5 - [ Dynconf Recode ] IN-REPAIR stskeeps:
|
||||
Dynconf has a bunch of bugs that can be resolved with a recode
|
||||
We are doing this with the newconf :) -stskeeps
|
||||
|
||||
* codemastr - Tue Dec 12 2000 - 8 - [ +I Fixes ]:
|
||||
+I still has some bugs that may cause desync and show users
|
||||
that the +I user is actually on the channel.
|
||||
|
||||
* stskeeps - Tue Dec 12 2000 - 1 - [ Bugfixes/Hash ] CLOSED stskeeps:
|
||||
Check for possible hash bug with del_from_client_table or something
|
||||
People still complain about crashes
|
||||
We might have fixed this with recent SERVER passwd fix and other passwd
|
||||
fixes
|
||||
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 10 - [ Bugfixes ] NO-PRODUCE:
|
||||
[[r00t3d](~lok70@168.213.226.rox-62220)] The other one, is lets say you are on
|
||||
server (a), and you set +p to your channel. All the users on Server
|
||||
(b,c, etc..) when they do a /list can see the +p channel in the
|
||||
list. Now if I set it wih chanserv ie.. mlock +ntp, it doesn't do
|
||||
that.. ON all servers (a,b,c) no one sees the +p channel in /list
|
||||
unless they are in the channel allready.
|
||||
Solution: Fix send_list to use PubChannel instead of SecretChannel
|
||||
(Unable to reproduce. +p channels are hidden on all servers -- codemastr)
|
||||
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 10 - [ Bugfixes ]:
|
||||
[[r00t3d](~lok70@168.213.226.rox-62220)] If you are set +I (Tech
|
||||
Admin/Network Admin) and you are set +q/+a in a channel. When someone /whoises
|
||||
you hey see the channel names: *#channel ^#channel.
|
||||
Fix /whois ShowChannel code
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 5 - [ Bugfixes ]:
|
||||
[RexHsu(~webmin@202.109.72.rox-42822)] #TVB ÄÖÄÖ H root@61.151.53.User-42432
|
||||
:0 none
|
||||
[RexHsu(~webmin@202.109.72.rox-42822)] #TVB ÄÖÄÖ H@
|
||||
~webmin@202.109.72.User-42822 :0 none
|
||||
[RexHsu(~webmin@202.109.72.rox-42822)] * End of /WHO list.
|
||||
Chinese nicks "clash", this is not the right nicks i typed in
|
||||
|
||||
* stskeeps - Wed Dec 13 2000 - 5 - [ Bugfixes ]:
|
||||
[eYe-Man(none@of.your.fucking.business)] <eYe-Man> Can you show me how you
|
||||
got
|
||||
OP?
|
||||
[eYe-Man(none@of.your.fucking.business)] <Sexy_20> me i dont know how!!!!!
|
||||
even i dont see where i got OP
|
||||
[eYe-Man(none@of.your.fucking.business)] <Sexy_20> or when some server gave
|
||||
me
|
||||
SJOIN gives people ops? :P
|
||||
|
||||
* stskeeps - Thu Dec 14 2000 - 10 - [ Bugfixes ]
|
||||
InTe[_:#roxnet> -oxygen.phrozen.org- *** Global -- from Irc.LinuxFreakz.Net:
|
||||
No response from dumper.roxnet.org[130.240.202.121], closing
|
||||
link
|
||||
Users can see that using +g ???
|
||||
FIXED: Sat Dec 30 2000 by stskeeps
|
||||
|
||||
* stskeeps - Fri Dec 14 2000 - 1 - [ SSL ]
|
||||
Challenge/Response kind of thing.
|
||||
|
||||
/CHALLENGE nick keyname/commonidentifier type :b64text
|
||||
type = 0, challenge type = 1, response
|
||||
Must be flood controlled in some way
|
||||
Can only work between servers and or U:lines and or
|
||||
+z users
|
||||
|
||||
Example:
|
||||
> :Stskeeps CHALLENGE RaYmAn rayman.pem 0 :0D0FE5F6D46
|
||||
< :RaYmAn CHALLENGE Stskeeps rayman.pem 1 :D0F5F543433
|
||||
|
||||
The way this works is, that the challenger got RaYmAn's public RSA key
|
||||
and he needs to authenticate that he is really talking to RaYmAn (the
|
||||
real one). He then sends a random string to RaYmAn, encrypted with
|
||||
RaYmAn's public key. RaYmAn then decrypts it using his private key, and
|
||||
then re-encrypts the random stuff using his private key, and sends back
|
||||
to Stskeeps, Sts then checks with decrypting the crypted text using the public
|
||||
key, and if its OK, then considers him OK.
|
||||
|
||||
We can use this for NickServ authentication using RSA keys,
|
||||
or server<->server authentication, or /oper authentication
|
||||
(no more stolen passwords, yipieeeeeeee)
|
||||
|
||||
This is also easily possible to add, in IRCii, in BitchX, EPIC,
|
||||
mIRC (DLLs), etc.
|
||||
|
||||
This is also good for raising security/authenticating to another level.
|
||||
Users can check if they are talking to the right person, NickServ databases
|
||||
no longer needs to have passwords, just use RSA keys
|
||||
|
||||
* stskeeps - Sun 17 Dec 2000 - 1 - [ General ]
|
||||
|
||||
P:ip:W:*:port
|
||||
UnrealHTTPD!
|
||||
Sat 30 Dec 2000 - stskeeps - *cough* listen::option http ;)
|
||||
|
||||
* codemastr - Wed 20 Dec 2000 - 3 - [ General ]
|
||||
|
||||
Recode badwords to allow a different replace word for each word
|
||||
|
||||
* codemastr - Wed 20 Dec 2000 - 1 - [ Install ]
|
||||
|
||||
Add make install
|
||||
|
||||
* codemastr - Wed 20 Dec 2000 - 9 - [ Bugfixes ]
|
||||
|
||||
connect to a server, /oper, then run telnet and link a server. Close the telnet but do NOT
|
||||
send a SQUIT, the server displays no notice to opers that the server split.
|
||||
Stskeeps> +j? but yes, there's a bug there
|
||||
|
||||
FIXED Sat 30 Dec 2000 by Stskeeps
|
||||
|
||||
* stskeeps - Sat Dec 23 2000 - 10 - [ Bugfixes ]
|
||||
There's some kind of bug that shows people being on same channel
|
||||
twice. I got a feeling its to do with JOIN/SJOIN as its only remote.
|
||||
[ Stskeeps ] [@ChanServ ] [@Fresh-Prin] [ Fresh-Prin] [@Fresh-Prin]
|
||||
Same person
|
||||
|
||||
* codemastr - Tue Dec 26 2000 - 6 - [ Bugfixes ]
|
||||
(too lazy to type it out)
|
||||
http://sourceforge.net/bugs/?func=detailbug&bug_id=126645&group_id=1968
|
||||
That fix will work except it needs to be modified so it checks remote
|
||||
before denying because of not being oper
|
||||
* stskeeps - Wed Dec 27 2000 - 5 - [Configuration]
|
||||
Add a SWHOIS option to oper {} block, suggested by Robertsog
|
||||
* codemastr - Tue Dec 26 2000 - 6 - [ Bugfixes ]
|
||||
(too lazy to type it out)
|
||||
http://sourceforge.net/bugs/?func=detailbug&bug_id=126645&group_id=1968
|
||||
That fix will work except it needs to be modified so it checks remote
|
||||
before denying because of not being oper
|
||||
* stskeeps - Sun Dec 30 2000 - 10 - [ Bugfixes ]
|
||||
/whois shows what channels +S are in
|
||||
* codemastr - Tue Jan 03 2001 - 1 - [ Idea ]
|
||||
Add /kill logging option suggested by Cerb
|
||||
@@ -0,0 +1,56 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
NOTE: tspre.org does not exist at the moment,
|
||||
as I dont have a shell for it anymore.
|
||||
If anyone want to donate a shell with a background process,
|
||||
and 1 IP with port 6667 open, they are welcome.
|
||||
however, when i get my adsl connection, it will run off that - on a
|
||||
50mhz machine *g*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TSpre.org
|
||||
|
||||
Many here maybe not heard of the Story
|
||||
how IRC started (and how EFnet started)
|
||||
EFnet's name means "Eris-Free Network".
|
||||
Eris was a central hub at the fomer world-
|
||||
wide IRC network, that anyone could just add
|
||||
C:N pairs for and connect to.
|
||||
|
||||
I was inspired of the tought of a network
|
||||
where anyone could link without application and all
|
||||
that shit..
|
||||
|
||||
Combined with the IRCd i made (Unreal) and the tspre.org
|
||||
domain i got donated by Nutcais (my IRC bro). Ive decided to
|
||||
start the TSpre IRC network, where anyone with TSpre servers
|
||||
(dreamforge, IRCu p9, and their alike)
|
||||
|
||||
(mostly preffered is Unreal thou).. Its an experimental
|
||||
network where people can test out thier IRCds and
|
||||
wIRds without having to fill out apps and so on.
|
||||
|
||||
There are no real rules. So just have fun :)
|
||||
|
||||
See http://www.tspre.org for more info on this=)
|
||||
|
||||
--Stskeeps (stskeeps@tspre.org)
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.1.1 =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
* Stskeeps <stskeeps@tspre.org>
|
||||
* codemastr <codemastr@unrealircd.com>
|
||||
* DrBin <drbin@unrealircd.com>
|
||||
|
||||
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 #unrealircd
|
||||
[Note: Please be patient after asking questions, we may do other stuff
|
||||
or we're away. Don't repeat questions, we heard you first time,
|
||||
READ THE TOPIC before you ask anything. We do this on a free
|
||||
base so we are volunteeringly helping you, but we are humans
|
||||
like you, and we got to have peace at times as well.]
|
||||
* Mailing list: unreal-support@lists.sourceforge.net (for support)
|
||||
* READ doc/faq BEFORE ASKING QUESTIONS!
|
||||
|
||||
* Got a bug to report?
|
||||
======================
|
||||
* If the server crashes and dumps core do this:
|
||||
* Go into the Unreal directory and type this:
|
||||
gdb src/ircd core.filename
|
||||
where core.filename is the filename in the dumping core message
|
||||
if it loads gdb, (not saying "command not found" etc), type "bt" in
|
||||
the program (type "quit" to get out again)
|
||||
|
||||
The output coming out there please mail it to
|
||||
unreal-dev@lists.sourceforge.net, along with OS type,
|
||||
what "uname -a" says, any clues what it is, if you did anything etc
|
||||
etc. Please keep the core dump files if we ask you to mail us them
|
||||
if needed
|
||||
|
||||
* If you experince any wierdnesses (that doesnt crash the server)
|
||||
please mail unreal-dev@lists.sourceforge.net with any clues on what
|
||||
you did, what you experinced etc.
|
||||
|
||||
* Got a suggestion?
|
||||
===================
|
||||
* Mail it to unreal-dev@lists.sourceforge.net :) or catch one from
|
||||
the Unreal team online on IRC:)
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
all:
|
||||
@autoconf
|
||||
cp configure ..
|
||||
Vendored
-1438
File diff suppressed because it is too large
Load Diff
Vendored
-1810
File diff suppressed because it is too large
Load Diff
@@ -1,72 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the current language's compiler
|
||||
# or gives an error. (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
||||
# force the compiler to issue an error when a bad flag is given.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
|
||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
||||
[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX
|
||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_COMPILE_FLAGS
|
||||
@@ -1,71 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# Check whether the given FLAG works with the linker or gives an error.
|
||||
# (Warnings, however, are ignored)
|
||||
#
|
||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
||||
# success/failure.
|
||||
#
|
||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
|
||||
# when the check is done. The check is thus made with the flags: "LDFLAGS
|
||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
||||
# issue an error when a bad flag is given.
|
||||
#
|
||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
||||
#
|
||||
# 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 2
|
||||
|
||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
||||
[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
||||
ax_check_save_flags=$LDFLAGS
|
||||
LDFLAGS="$LDFLAGS $4 $1"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
|
||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
||||
[AS_VAR_SET(CACHEVAR,[no])])
|
||||
LDFLAGS=$ax_check_save_flags])
|
||||
AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes],
|
||||
[m4_default([$2], :)],
|
||||
[m4_default([$3], :)])
|
||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
||||
])dnl AX_CHECK_LINK_FLAGS
|
||||
@@ -1,332 +0,0 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_pthread.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro figures out how to build C programs using POSIX threads. It
|
||||
# sets the PTHREAD_LIBS output variable to the threads library and linker
|
||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler
|
||||
# flags that are needed. (The user can also force certain compiler
|
||||
# flags/libs to be tested by setting these environment variables.)
|
||||
#
|
||||
# Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
# multi-threaded programs (defaults to the value of CC otherwise). (This
|
||||
# is necessary on AIX to use the special cc_r compiler alias.)
|
||||
#
|
||||
# NOTE: You are assumed to not only compile your program with these flags,
|
||||
# but also link it with them as well. e.g. you should link with
|
||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
|
||||
#
|
||||
# If you are only building threads programs, you may wish to use these
|
||||
# variables in your default LIBS, CFLAGS, and CC:
|
||||
#
|
||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
# CC="$PTHREAD_CC"
|
||||
#
|
||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
|
||||
# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
|
||||
# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
#
|
||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
|
||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
|
||||
# PTHREAD_CFLAGS.
|
||||
#
|
||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library
|
||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
|
||||
# is not found. If ACTION-IF-FOUND is not specified, the default action
|
||||
# will define HAVE_PTHREAD.
|
||||
#
|
||||
# Please let the authors know if this macro fails on any platform, or if
|
||||
# you have any other suggestions or comments. This macro was based on work
|
||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
|
||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
|
||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also
|
||||
# grateful for the helpful feedback of numerous users.
|
||||
#
|
||||
# Updated for Autoconf 2.68 by Daniel Richard G.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
# scripts that are the output of Autoconf when processing the Macro. You
|
||||
# need not follow the terms of the GNU General Public License when using
|
||||
# or distributing such scripts, even though portions of the text of the
|
||||
# Macro appear in them. The GNU General Public License (GPL) does govern
|
||||
# all other use of the material that constitutes the Autoconf Macro.
|
||||
#
|
||||
# This special exception to the GPL applies to versions of the Autoconf
|
||||
# Macro released by the Autoconf Archive. When you make and distribute a
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 21
|
||||
|
||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
|
||||
AC_DEFUN([AX_PTHREAD], [
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_LANG_PUSH([C])
|
||||
ax_pthread_ok=no
|
||||
|
||||
# We used to check for pthread.h first, but this fails if pthread.h
|
||||
# requires special compiler flags (e.g. on True64 or Sequent).
|
||||
# It gets checked for in the link test anyway.
|
||||
|
||||
# First of all, check if the user has set any of the PTHREAD_LIBS,
|
||||
# etcetera environment variables, and if threads linking works using
|
||||
# them:
|
||||
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
|
||||
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
fi
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
fi
|
||||
|
||||
# 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, and "pthread-config"
|
||||
# which is a program returning the flags for the Pth emulation library.
|
||||
|
||||
ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
|
||||
|
||||
# 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)
|
||||
# ... -mt is also the pthreads flag for HP/aCC
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
# pthread-config: use pthread-config program (for GNU Pth library)
|
||||
|
||||
case ${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 -pthreads/-mt/
|
||||
# -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:
|
||||
|
||||
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
|
||||
;;
|
||||
|
||||
darwin*)
|
||||
ax_pthread_flags="-pthread $ax_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Clang doesn't consider unrecognized options an error unless we specify
|
||||
# -Werror. We throw in some extra Clang-specific options to ensure that
|
||||
# this doesn't happen for GCC, which also accepts -Werror.
|
||||
|
||||
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
|
||||
save_CFLAGS="$CFLAGS"
|
||||
ax_pthread_extra_flags="-Werror"
|
||||
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[ax_pthread_extra_flags=
|
||||
AC_MSG_RESULT([no])])
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test x"$ax_pthread_ok" = xno; then
|
||||
for flag in $ax_pthread_flags; do
|
||||
|
||||
case $flag in
|
||||
none)
|
||||
AC_MSG_CHECKING([whether pthreads work without any flags])
|
||||
;;
|
||||
|
||||
-*)
|
||||
AC_MSG_CHECKING([whether pthreads work with $flag])
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
;;
|
||||
|
||||
pthread-config)
|
||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
|
||||
if test x"$ax_pthread_config" = xno; then continue; fi
|
||||
PTHREAD_CFLAGS="`pthread-config --cflags`"
|
||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_CHECKING([for the pthreads library -l$flag])
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
|
||||
|
||||
# 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_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
|
||||
static void routine(void *a) { a = 0; }
|
||||
static void *start_routine(void *a) { return a; }],
|
||||
[pthread_t th; pthread_attr_t attr;
|
||||
pthread_create(&th, 0, start_routine, 0);
|
||||
pthread_join(th, 0);
|
||||
pthread_attr_init(&attr);
|
||||
pthread_cleanup_push(routine, 0);
|
||||
pthread_cleanup_pop(0) /* ; */])],
|
||||
[ax_pthread_ok=yes],
|
||||
[])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
AC_MSG_RESULT([$ax_pthread_ok])
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
break;
|
||||
fi
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
|
||||
# Various other checks:
|
||||
if test "x$ax_pthread_ok" = xyes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
|
||||
AC_MSG_CHECKING([for joinable pthread attribute])
|
||||
attr_name=unknown
|
||||
for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
|
||||
[int attr = $attr; return attr /* ; */])],
|
||||
[attr_name=$attr; break],
|
||||
[])
|
||||
done
|
||||
AC_MSG_RESULT([$attr_name])
|
||||
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
|
||||
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
|
||||
[Define to necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if more special flags are required for pthreads])
|
||||
flag=no
|
||||
case ${host_os} in
|
||||
aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
|
||||
osf* | hpux*) flag="-D_REENTRANT";;
|
||||
solaris*)
|
||||
if test "$GCC" = "yes"; then
|
||||
flag="-D_REENTRANT"
|
||||
else
|
||||
# TODO: What about Clang on Solaris?
|
||||
flag="-mt -D_REENTRANT"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_MSG_RESULT([$flag])
|
||||
if test "x$flag" != xno; then
|
||||
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT], [
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
|
||||
[[int i = PTHREAD_PRIO_INHERIT;]])],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
|
||||
[ax_cv_PTHREAD_PRIO_INHERIT=no])
|
||||
])
|
||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
|
||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
# More AIX lossage: compile with *_r variant
|
||||
if test "x$GCC" != xyes; then
|
||||
case $host_os in
|
||||
aix*)
|
||||
AS_CASE(["x/$CC"],
|
||||
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
|
||||
[#handle absolute path differently from PATH based program lookup
|
||||
AS_CASE(["x$CC"],
|
||||
[x/*],
|
||||
[AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
|
||||
[AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
|
||||
|
||||
AC_SUBST([PTHREAD_LIBS])
|
||||
AC_SUBST([PTHREAD_CFLAGS])
|
||||
AC_SUBST([PTHREAD_CC])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$ax_pthread_ok" = xyes; then
|
||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
|
||||
:
|
||||
else
|
||||
ax_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
AC_LANG_POP
|
||||
])dnl AX_PTHREAD
|
||||
@@ -1,314 +0,0 @@
|
||||
#serial 1
|
||||
|
||||
dnl Macro: unreal_CHECK_TYPE_SIZES
|
||||
dnl originally called unet_CHECK_TYPE_SIZES
|
||||
dnl
|
||||
dnl Check the size of several types and define a valid int16_t and int32_t.
|
||||
dnl
|
||||
AC_DEFUN([unreal_CHECK_TYPE_SIZES],
|
||||
[dnl Check type sizes
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, int)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, short)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, int)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, short)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, long)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
fi
|
||||
AC_CHECK_SIZEOF(rlim_t)
|
||||
if test "$ac_cv_sizeof_rlim_t" = 8 ; then
|
||||
AC_DEFINE([LONG_LONG_RLIM_T], [], [Define if rlim_t is long long])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_LIBCURL],
|
||||
[
|
||||
AC_ARG_ENABLE(libcurl,
|
||||
[AC_HELP_STRING([--enable-libcurl=DIR],[enable libcurl (remote include) support])],
|
||||
[enable_curl=$enableval],
|
||||
[enable_curl=no])
|
||||
|
||||
AS_IF([test "x$enable_curl" != "xno"],
|
||||
[
|
||||
dnl sane, default directory for Operating System-managed libcURL
|
||||
dnl (when --enable-libcurl is passed without any arguments). On
|
||||
dnl systems with stuff in /usr/local, /usr/local/bin should already
|
||||
dnl be in PATH. On sane systems, this will invoke the curl-config
|
||||
dnl installed by the package manager.
|
||||
CURLCONFIG="curl-config"
|
||||
AS_IF([test "x$enable_curl" != "xyes"],
|
||||
[CURLCONFIG="$enable_curl/bin/curl-config"])
|
||||
|
||||
AC_MSG_CHECKING([$CURLCONFIG])
|
||||
AS_IF([$CURLCONFIG --version 2>/dev/null >/dev/null],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([Could not find curl-config, try editing --enable-libcurl])])
|
||||
|
||||
CURLCFLAG="`$CURLCONFIG --cflags`"
|
||||
CURLLIBS="`$CURLCONFIG --libs`"
|
||||
|
||||
dnl This test must be this way because of #3981
|
||||
AS_IF([$CURLCONFIG --libs | grep -q -e ares],
|
||||
[CURLUSESCARES="1"],
|
||||
[CURLUSESCARES="0"])
|
||||
|
||||
dnl sanity warnings
|
||||
AS_IF([test -z "${CURLLIBS}"],
|
||||
[AC_MSG_WARN([CURLLIBS is empty, that probably means that I could not find $enable_curl/bin/curl-config])])
|
||||
|
||||
dnl Ok this is ugly, basically we need to strip the version of c-ares that curl uses
|
||||
dnl because we want to use our own version (which is hopefully fully binary
|
||||
dnl compatible with the curl one as well).
|
||||
dnl Therefore we need to strip the cares libs in a weird way...
|
||||
dnl If anyone can come up with something better and still portable (no awk!?)
|
||||
dnl then let us know. -- Syzop
|
||||
dnl
|
||||
dnl It is dangerous to mix and match cURL with potentially ABI-incompatible versions of
|
||||
dnl c-ares, just use --with-system-cares.
|
||||
dnl Thus, make sure to use --with-system-cares when using system-cURL. If the user
|
||||
dnl wants bundled c-ares + system libcURL, then we should filter out c-ares
|
||||
dnl flags. _Only_ in that case should we mess with the flags. -- ohnobinki
|
||||
|
||||
AS_IF([test "x$has_system_cares" = "xno" && test "x$BUILDDIR/extras/curl" != "x$enable_curl" && test "$CURLUSESCARES" != "0" ],
|
||||
[
|
||||
AC_MSG_ERROR([[
|
||||
|
||||
You have decided to build unrealIRCd with libcURL (remote includes) support.
|
||||
However, you have system-installed c-ares support has either been disabled
|
||||
(--without-system-cares) or is unavailable.
|
||||
Because UnrealIRCd will use a bundled copy of c-ares which may be incompatible
|
||||
with the system-installed libcURL, this is a bad idea which may result in error
|
||||
messages looking like:
|
||||
|
||||
\`\`[error] unrealircd.conf:9: include: error downloading '(http://example.net/ex.conf)': Could not resolve host: example.net (Successful completion)''
|
||||
|
||||
Or UnrealIRCd might even crash.
|
||||
|
||||
Please build UnrealIRCd with --with-system-cares when enabling --enable-libcurl
|
||||
]])
|
||||
])
|
||||
|
||||
dnl Make sure that linking against cURL works rather than letting the user
|
||||
dnl find out after compiling most of his program. ~ohnobinki
|
||||
IRCDLIBS="$IRCDLIBS $CURLLIBS"
|
||||
CFLAGS="$CFLAGS $CURLCFLAG"
|
||||
AC_DEFINE([USE_LIBCURL], [], [Define if you have libcurl installed to get remote includes and MOTD support])
|
||||
|
||||
AC_MSG_CHECKING([curl_easy_init() in $CURLLIBS])
|
||||
LIBS_SAVEDA="$LIBS"
|
||||
CFLAGS_SAVEDA="$CFLAGS"
|
||||
|
||||
LIBS="$IRCDLIBS $IRCDLIBS_CURL_CARES"
|
||||
CFLAGS="$CFLAGS $CFLAGS_CURL_CARES"
|
||||
AC_LINK_IFELSE(
|
||||
[
|
||||
AC_LANG_PROGRAM(
|
||||
[[#include <curl/curl.h>]],
|
||||
[[CURL *curl = curl_easy_init();]])
|
||||
],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([You asked for libcURL (remote includes) support, but it can't be found at $enable_curl])
|
||||
])
|
||||
LIBS="$LIBS_SAVEDA"
|
||||
CFLAGS="$CFLAGS_SAVEDA"
|
||||
|
||||
URL="url.o"
|
||||
AC_SUBST(URL)
|
||||
]) dnl AS_IF(enable_curl)
|
||||
])
|
||||
|
||||
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
|
||||
|
||||
AC_DEFUN([CHECK_SSL],
|
||||
[
|
||||
AC_ARG_ENABLE(ssl,
|
||||
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/opt/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr])],
|
||||
[],
|
||||
[enable_ssl=no])
|
||||
AS_IF([test $enable_ssl != "no"],
|
||||
[
|
||||
AC_MSG_CHECKING([for OpenSSL])
|
||||
for dir in $enable_ssl /usr/local/opt/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/sfw /usr/local /usr; do
|
||||
ssldir="$dir"
|
||||
if test -f "$dir/include/openssl/ssl.h"; then
|
||||
AC_MSG_RESULT([found in $ssldir/include/openssl])
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/include/ssl.h"; then
|
||||
AC_MSG_RESULT([found in $ssldir/include])
|
||||
found_ssl="yes";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
CFLAGS="$CFLAGS -I$ssldir/include";
|
||||
fi
|
||||
break
|
||||
fi
|
||||
done
|
||||
if test x_$found_ssl != x_yes; then
|
||||
AC_MSG_RESULT(not found)
|
||||
echo ""
|
||||
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
|
||||
echo "The following packages are required:"
|
||||
echo "1) The library package is often called 'openssl-dev', 'openssl-devel' or 'libssl-dev'"
|
||||
echo "2) The binary package is usually called 'openssl'."
|
||||
echo "NOTE: you or your system administrator needs to install the library AND the binary package."
|
||||
echo "After doing so, simply re-run ./Config"
|
||||
exit 1
|
||||
else
|
||||
CRYPTOLIB="-lssl -lcrypto";
|
||||
if test ! "$ssldir" = "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$ssldir/lib";
|
||||
dnl check if binary path exists
|
||||
if test -f "$ssldir/bin/openssl"; then
|
||||
OPENSSLPATH="$ssldir/bin/openssl";
|
||||
fi
|
||||
fi
|
||||
dnl linking require -ldl?
|
||||
AC_MSG_CHECKING([OpenSSL linking with -ldl])
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB -ldl"
|
||||
AC_TRY_LINK([#include <openssl/err.h>], [ERR_clear_error();],
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
CRYPTOLIB="$CRYPTOLIB -ldl"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
|
||||
dnl linking require both -ldl and -lpthread?
|
||||
AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread])
|
||||
LIBS="$SAVE_LIBS $CRYPTOLIB -ldl -lpthread"
|
||||
AC_TRY_LINK([#include <openssl/err.h>], [ERR_clear_error();],
|
||||
[
|
||||
AC_MSG_RESULT(yes)
|
||||
CRYPTOLIB="$CRYPTOLIB -ldl -lpthread"
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
||||
LIBS="$SAVE_LIBS"
|
||||
fi
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_CTX_SET1_CURVES_LIST],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set1_curves_list in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL_CTX *ctx = NULL; SSL_CTX_set1_curves_list(ctx, "test");],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_SSL_CTX_SET1_CURVES_LIST], [], [Define if ssl library has SSL_CTX_set1_curves_list])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_CTX_SET_MIN_PROTO_VERSION],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set_min_proto_version in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL_CTX *ctx = NULL; SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_SSL_CTX_SET_MIN_PROTO_VERSION], [], [Define if ssl library has SSL_CTX_set_min_proto_version])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_CTX_SET_SECURITY_LEVEL],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set_security_level in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL_CTX *ctx = NULL; SSL_CTX_set_security_level(ctx, 1);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_SSL_CTX_SET_SECURITY_LEVEL], [], [Define if ssl library has SSL_CTX_set_security_level])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_ASN1_TIME_diff],
|
||||
[
|
||||
AC_MSG_CHECKING([for ASN1_TIME_diff in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[int one, two; ASN1_TIME_diff(&one, &two, NULL, NULL);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_ASN1_TIME_diff], [], [Define if ssl library has ASN1_TIME_diff])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_X509_get0_notAfter],
|
||||
[
|
||||
AC_MSG_CHECKING([for X509_get0_notAfter in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[X509_get0_notAfter(NULL);],
|
||||
has_function=1,
|
||||
has_function=0)
|
||||
LIBS="$SAVE_LIBS"
|
||||
AC_LANG_POP(C)
|
||||
if test $has_function = 1; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([HAS_X509_get0_notAfter], [], [Define if ssl library has X509_get0_notAfter])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
#!/bin/bash
|
||||
echo "Regenerating 'configure' and headers..."
|
||||
echo "NOTE: Normally only UnrealIRCd developers run this command!!"
|
||||
|
||||
cd "$(dirname "${0}")"
|
||||
|
||||
ACLOCAL_AMFLAGS=(-I autoconf/m4)
|
||||
|
||||
aclocal "${ACLOCAL_AMFLAGS[@]}"
|
||||
autoconf
|
||||
autoheader
|
||||
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# 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
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
pussy
|
||||
fuck
|
||||
whore
|
||||
slut
|
||||
shit
|
||||
asshole
|
||||
bitch
|
||||
cunt
|
||||
vagina
|
||||
penis
|
||||
jackass
|
||||
*fucker*
|
||||
faggot
|
||||
fag
|
||||
horny
|
||||
gay
|
||||
dickhead
|
||||
sonuvabitch
|
||||
*fuck*
|
||||
boobs
|
||||
tits
|
||||
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# 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
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
pussy
|
||||
fuck
|
||||
whore
|
||||
slut
|
||||
shit
|
||||
asshole
|
||||
bitch
|
||||
cunt
|
||||
vagina
|
||||
penis
|
||||
jackass
|
||||
*fucker*
|
||||
faggot
|
||||
fag
|
||||
horny
|
||||
gay
|
||||
dickhead
|
||||
sonuvabitch
|
||||
*fuck*
|
||||
boobs
|
||||
tits
|
||||
-798
@@ -1,798 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
dnl When updating the version, remember to update the following files
|
||||
dnl appropriately:
|
||||
dnl include/windows/setup.h
|
||||
dnl src/windows/unrealinst.iss
|
||||
dnl doc/Config.header
|
||||
dnl src/version.c.SH
|
||||
|
||||
AC_INIT([unrealircd], [5.0.10-git], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
|
||||
AC_CONFIG_SRCDIR([src/ircd.c])
|
||||
AC_CONFIG_HEADER([include/setup.h])
|
||||
AC_CONFIG_AUX_DIR([autoconf])
|
||||
AC_CONFIG_MACRO_DIR([autoconf/m4])
|
||||
|
||||
if test "x$enable_dynamic_linking" = "x"; then
|
||||
echo "Please use ./Config instead of ./configure"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dnl Save CFLAGS, use this when building the libraries like c-ares
|
||||
orig_cflags="$CFLAGS"
|
||||
|
||||
dnl Save build directory early on (used in our m4 macros too)
|
||||
BUILDDIR_NOW="`pwd`"
|
||||
|
||||
dnl Calculate the versions. Perhaps the use of expr is a little too extravagant
|
||||
# Generation version number (e.g.: X in X.Y.Z)
|
||||
UNREAL_VERSION_GENERATION=["5"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_GENERATION], [$UNREAL_VERSION_GENERATION], [Generation version number (e.g.: X for X.Y.Z)])
|
||||
|
||||
# Major version number (e.g.: Y in X.Y.Z)
|
||||
UNREAL_VERSION_MAJOR=["0"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_MAJOR], [$UNREAL_VERSION_MAJOR], [Major version number (e.g.: Y for X.Y.Z)])
|
||||
|
||||
# Minor version number (e.g.: Z in X.Y.Z)
|
||||
UNREAL_VERSION_MINOR=["10"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_MINOR], [$UNREAL_VERSION_MINOR], [Minor version number (e.g.: Z for X.Y.Z)])
|
||||
|
||||
# The version suffix such as a beta marker or release candidate
|
||||
# marker. (e.g.: -rcX for unrealircd-3.2.9-rcX). This macro is a
|
||||
# string instead of an integer because it contains arbitrary data.
|
||||
UNREAL_VERSION_SUFFIX=["-git"]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_SUFFIX], ["$UNREAL_VERSION_SUFFIX"], [Version suffix such as a beta marker or release candidate marker. (e.g.: -rcX for unrealircd-3.2.9-rcX)])
|
||||
|
||||
AC_PATH_PROG(RM,rm)
|
||||
AC_PATH_PROG(CP,cp)
|
||||
AC_PATH_PROG(TOUCH,touch)
|
||||
AC_PATH_PROG(OPENSSLPATH,openssl)
|
||||
AS_IF([test x"$OPENSSLPATH" = "x"],
|
||||
[
|
||||
echo ""
|
||||
echo "Apparently you do not have both the openssl binary and openssl development libraries installed."
|
||||
echo "The following packages are required:"
|
||||
echo "1) The library package is often called 'openssl-dev', 'openssl-devel' or 'libssl-dev'"
|
||||
echo "2) The binary package is usually called 'openssl'."
|
||||
echo "NOTE: you or your system administrator needs to install the library AND the binary package."
|
||||
echo "After doing so, simply re-run ./Config"
|
||||
exit 1
|
||||
])
|
||||
|
||||
AC_PATH_PROG(INSTALL,install)
|
||||
AC_PATH_PROG(GUNZIP, gunzip)
|
||||
AC_PATH_PROG(PKGCONFIG, pkg-config)
|
||||
|
||||
dnl Check for compiler
|
||||
AC_PROG_CC_C99
|
||||
AS_IF([test "$ac_cv_prog_cc_c99" = "no"],
|
||||
[AC_MSG_ERROR([No C99 compiler was found. Please install gcc or clang and other build tools. Eg, on Debian/Ubuntu you probably want to run the following as root: apt-get install build-essential ])])
|
||||
|
||||
dnl Check for make moved down, so the above compiler check takes precedence.
|
||||
AC_CHECK_PROG(MAKER, gmake, gmake, make)
|
||||
AC_PATH_PROG(GMAKE,gmake)
|
||||
AS_IF([$MAKER --version | grep -q "GNU Make"],
|
||||
[GNUMAKE="0"],
|
||||
[AC_MSG_ERROR([It seems your system does not have make/gmake installed. If you are on Linux then install make, otherwise install gmake.])])
|
||||
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(descrypt, crypt,
|
||||
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
|
||||
IRCDLIBS="$IRCDLIBS-ldescrypt "],
|
||||
[AC_CHECK_LIB(crypt, crypt,
|
||||
[AC_DEFINE([HAVE_CRYPT], [], [Define if you have crypt])
|
||||
IRCDLIBS="$IRCDLIBS-lcrypt "])])
|
||||
|
||||
dnl Check for big-endian system, even though these hardly exist anymore...
|
||||
AS_CASE([$host_cpu],
|
||||
[i?86|amd64|x86_64],
|
||||
[ac_cv_c_bigendian=no]
|
||||
)
|
||||
AC_C_BIGENDIAN(
|
||||
AC_DEFINE(NATIVE_BIG_ENDIAN, 1, [machine is bigendian]),
|
||||
AC_DEFINE(NATIVE_LITTLE_ENDIAN, 1, [machine is littleendian]),
|
||||
AC_MSG_ERROR([unknown endianness]),
|
||||
AC_MSG_ERROR([universal endianness is not supported - compile separately and use lipo(1)])
|
||||
)
|
||||
|
||||
dnl HARDENING START
|
||||
dnl This is taken from https://github.com/kmcallister/autoharden
|
||||
dnl With some very small modifications (to remove C++ checking for instance)
|
||||
# We want to check for compiler flag support, but there is no way to make
|
||||
# clang's "argument unused" warning fatal. So we invoke the compiler through a
|
||||
# wrapper script that greps for this message.
|
||||
saved_CC="$CC"
|
||||
saved_CXX="$CXX"
|
||||
saved_LD="$LD"
|
||||
flag_wrap="$srcdir/extras/wrap-compiler-for-flag-check"
|
||||
CC="$flag_wrap $CC"
|
||||
CXX="$flag_wrap $CXX"
|
||||
LD="$flag_wrap $LD"
|
||||
|
||||
# We use the same hardening flags for C and C++. We must check that each flag
|
||||
# is supported by both compilers.
|
||||
AC_DEFUN([check_cc_flag],
|
||||
[AC_LANG_PUSH(C)
|
||||
AX_CHECK_COMPILE_FLAG([$1], [$2], [$3], [-Werror $4])
|
||||
AC_LANG_POP(C)])
|
||||
|
||||
AC_DEFUN([check_link_flag],
|
||||
[AX_CHECK_LINK_FLAG([$1], [$2], [$3], [-Werror $4])])
|
||||
|
||||
AC_ARG_ENABLE([hardening],
|
||||
[AS_HELP_STRING([--enable-hardening],
|
||||
[Enable compiler and linker options to frustrate memory corruption exploits @<:@yes@:>@])],
|
||||
[hardening="$enableval"],
|
||||
[hardening="yes"])
|
||||
|
||||
HARDEN_CFLAGS=""
|
||||
HARDEN_LDFLAGS=""
|
||||
AS_IF([test x"$hardening" != x"no"], [
|
||||
check_cc_flag([-fno-strict-overflow], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fno-strict-overflow"])
|
||||
|
||||
# This one will likely succeed, even on platforms where it does nothing.
|
||||
check_cc_flag([-D_FORTIFY_SOURCE=2], [HARDEN_CFLAGS="$HARDEN_CFLAGS -D_FORTIFY_SOURCE=2"])
|
||||
|
||||
check_cc_flag([-fstack-protector-all],
|
||||
[check_link_flag([-fstack-protector-all],
|
||||
[HARDEN_CFLAGS="$HARDEN_CFLAGS -fstack-protector-all"
|
||||
check_cc_flag([-Wstack-protector], [HARDEN_CFLAGS="$HARDEN_CFLAGS -Wstack-protector"],
|
||||
[], [-fstack-protector-all])
|
||||
check_cc_flag([--param ssp-buffer-size=1], [HARDEN_CFLAGS="$HARDEN_CFLAGS --param ssp-buffer-size=1"],
|
||||
[], [-fstack-protector-all])])])
|
||||
|
||||
# Added in UnrealIRCd 5.0.5 (default on Ubuntu 19.10)
|
||||
check_cc_flag([-fstack-clash-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fstack-clash-protection"])
|
||||
|
||||
# Control Flow Enforcement (ROP hardening) - requires CPU hardware support
|
||||
check_cc_flag([-fcf-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fcf-protection"])
|
||||
|
||||
# At the link step, we might want -pie (GCC) or -Wl,-pie (Clang on OS X)
|
||||
#
|
||||
# The linker checks also compile code, so we need to include -fPIE as well.
|
||||
check_cc_flag([-fPIE],
|
||||
[check_link_flag([-fPIE -pie],
|
||||
[HARDEN_BINCFLAGS="-fPIE"
|
||||
HARDEN_BINLDFLAGS="-pie"],
|
||||
[check_link_flag([-fPIE -Wl,-pie],
|
||||
[HARDEN_BINCFLAGS="-fPIE"
|
||||
HARDEN_BINLDFLAGS="-Wl,-pie"])])])
|
||||
|
||||
check_link_flag([-Wl,-z,relro],
|
||||
[HARDEN_LDFLAGS="$HARDEN_LDFLAGS -Wl,-z,relro"
|
||||
check_link_flag([-Wl,-z,now], [HARDEN_LDFLAGS="$HARDEN_LDFLAGS -Wl,-z,now"])])])
|
||||
AC_SUBST([HARDEN_CFLAGS])
|
||||
AC_SUBST([HARDEN_LDFLAGS])
|
||||
AC_SUBST([HARDEN_BINCFLAGS])
|
||||
AC_SUBST([HARDEN_BINLDFLAGS])
|
||||
|
||||
# End of flag tests.
|
||||
CC="$saved_CC"
|
||||
CXX="$saved_CXX"
|
||||
LD="$saved_LD"
|
||||
dnl HARDENING END
|
||||
|
||||
dnl UnrealIRCd might not be strict-aliasing safe at this time
|
||||
check_cc_flag([-fno-strict-aliasing], [CFLAGS="$CFLAGS -fno-strict-aliasing"])
|
||||
|
||||
dnl UnrealIRCd should be able to compile with -fno-common
|
||||
dnl This also makes ASan (if it is in use) able to instrument these variables.
|
||||
check_cc_flag([-fno-common], [CFLAGS="$CFLAGS -fno-common"])
|
||||
|
||||
dnl Previously -funsigned-char was in a config check. It would always
|
||||
dnl be enabled with gcc and clang. We now unconditionally enable it,
|
||||
dnl skipping the check. This will cause an error if someone uses a
|
||||
dnl non-gcc/non-clang compiler that does not support -funsigned-char
|
||||
dnl which is good. After all, we really depend on it.
|
||||
dnl UnrealIRCd should never be compiled without char being unsigned.
|
||||
CFLAGS="$CFLAGS -funsigned-char"
|
||||
|
||||
dnl Compiler -W checks...
|
||||
|
||||
dnl We should be able to turn this on unconditionally:
|
||||
CFLAGS="$CFLAGS -Wall"
|
||||
|
||||
dnl More warnings (if the compiler supports it):
|
||||
check_cc_flag([-Wextra], [CFLAGS="$CFLAGS -Wextra"])
|
||||
check_cc_flag([-Waggregate-return], [CFLAGS="$CFLAGS -Waggregate-return"])
|
||||
dnl The following few are more experimental, if they have false positives we'll have
|
||||
dnl to disable them:
|
||||
dnl Can't use this, too bad: check_cc_flag([-Wlogical-op], [CFLAGS="$CFLAGS -Wlogical-op"])
|
||||
check_cc_flag([-Wduplicated-cond], [CFLAGS="$CFLAGS -Wduplicated-cond"])
|
||||
check_cc_flag([-Wduplicated-branches], [CFLAGS="$CFLAGS -Wduplicated-branches"])
|
||||
|
||||
dnl And now to filter out certain warnings:
|
||||
dnl [!] NOTE REGARDING THE check_cc_flag used by these:
|
||||
dnl We check for the -Woption even though we are going to use -Wno-option.
|
||||
dnl This is due to the following (odd) gcc behavior:
|
||||
dnl "When an unrecognized warning option is requested (e.g.,
|
||||
dnl -Wunknown-warning), GCC emits a diagnostic stating that the option is not
|
||||
dnl recognized. However, if the -Wno- form is used, the behavior is slightly
|
||||
dnl different: no diagnostic is produced for -Wno-unknown-warning unless
|
||||
dnl other diagnostics are being produced. This allows the use of new -Wno-
|
||||
dnl options with old compilers, but if something goes wrong, the compiler
|
||||
dnl warns that an unrecognized option is present."
|
||||
dnl Since we don't want to use any unrecognized -Wno-option, we test for
|
||||
dnl -Woption instead.
|
||||
|
||||
dnl Pointer signedness warnings are really a pain and 99.9% of the time
|
||||
dnl they are of absolutely no use whatsoever. IMO the person who decided
|
||||
dnl to enable this without -Wall should be shot on sight.
|
||||
check_cc_flag([-Wpointer-sign], [CFLAGS="$CFLAGS -Wno-pointer-sign"])
|
||||
|
||||
dnl This is purely for charsys.c... I like it so we can easily read
|
||||
dnl this for non-utf8. We can remove it once we ditch non-utf8 some day
|
||||
dnl of course, or decide to ignore me and encode them.
|
||||
check_cc_flag([-Winvalid-source-encoding], [CFLAGS="$CFLAGS -Wno-invalid-source-encoding"])
|
||||
|
||||
check_cc_flag([-Wformat-zero-length], [CFLAGS="$CFLAGS -Wno-format-zero-length"])
|
||||
|
||||
check_cc_flag([-Wformat-truncation], [CFLAGS="$CFLAGS -Wno-format-truncation"])
|
||||
|
||||
dnl While it can be useful to occasionally to compile with warnings about
|
||||
dnl unused variables and parameters, we often 'think ahead' when coding things
|
||||
dnl so they may be useless now but not later. Similarly, for variables, we
|
||||
dnl don't always care about a variable that may still be present in a build
|
||||
dnl without DEBUGMODE. Unused variables are optimized out anyway.
|
||||
check_cc_flag([-Wunused], [CFLAGS="$CFLAGS -Wno-unused"])
|
||||
check_cc_flag([-Wunused-parameter], [CFLAGS="$CFLAGS -Wno-unused-parameter"])
|
||||
check_cc_flag([-Wunused-but-set-parameter], [CFLAGS="$CFLAGS -Wno-unused-but-set-parameter"])
|
||||
|
||||
dnl We use this and this warning is meaningless since 'char' is always unsigned
|
||||
dnl in UnrealIRCd compiles (-funsigned-char).
|
||||
check_cc_flag([-Wchar-subscripts], [CFLAGS="$CFLAGS -Wno-char-subscripts"])
|
||||
|
||||
check_cc_flag([-Wsign-compare], [CFLAGS="$CFLAGS -Wno-sign-compare"])
|
||||
|
||||
dnl Don't warn about empty body, we use this, eg via Debug(()) or in if's.
|
||||
check_cc_flag([-Wempty-body], [CFLAGS="$CFLAGS -Wno-empty-body"])
|
||||
|
||||
dnl This one fails with ircstrdup(var, staticstring)
|
||||
dnl Shame we have to turn it off completely...
|
||||
check_cc_flag([-Waddress], [CFLAGS="$CFLAGS -Wno-address"])
|
||||
|
||||
dnl This one breaks our TO_INTFUNC() that is used in m_tkl for tkl_typetochar
|
||||
check_cc_flag([-Wcast-function-type], [CFLAGS="$CFLAGS -Wno-cast-function-type"])
|
||||
|
||||
dnl End of -W... compiler checks.
|
||||
|
||||
|
||||
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
|
||||
DYNAMIC_LDFLAGS=""
|
||||
CFLAGS="$CFLAGS -Wl,-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)])
|
||||
CFLAGS=$hold_cflags
|
||||
if test "$ac_cv_export_dynamic" = "yes"; then
|
||||
DYNAMIC_LDFLAGS="-Wl,-export-dynamic"
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
ac_cv_pic="-fPIC -DPIC -shared"
|
||||
case `uname -s` in
|
||||
Darwin*[)]
|
||||
ac_cv_pic="-std=gnu89 -bundle -flat_namespace -undefined suppress"
|
||||
;;
|
||||
HP-UX*[)]
|
||||
ac_cv_pic="-fPIC"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case `uname -s` in
|
||||
SunOS*[)]
|
||||
ac_cv_pic="-KPIC -DPIC -G"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
|
||||
cat >uscore.c << __EOF__
|
||||
int main() {
|
||||
return 0;
|
||||
}
|
||||
__EOF__
|
||||
$CC -o uscore $CFLAGS uscore.c 1>&5
|
||||
if test -z "`strings -a uscore |grep '^_main$'`"; then
|
||||
ac_cv_underscore=no
|
||||
else
|
||||
ac_cv_underscore=yes
|
||||
fi
|
||||
rm -f uscore uscore.c
|
||||
])
|
||||
dnl libtool has built-in tests that determine proper underscorage
|
||||
if test "$ac_cv_underscore" = "yes"; then
|
||||
AC_DEFINE([UNDERSCORE], [], [Define if your system prepends an underscore to symbols])
|
||||
fi
|
||||
|
||||
MODULEFLAGS="$ac_cv_pic $DYNAMIC_LDFLAGS"
|
||||
dnl DYNAMIC_LINKING is not meant to be defined in include/setup.h, it's
|
||||
dnl defined in the Makefiles using -D. Having it defined globally will
|
||||
dnl only cause braindamage and symbol collisions :-D.
|
||||
dnl AC_DEFINE([DYNAMIC_LINKING], [], [Link dynamically as opposed to statically. (Dynamic linking is the only supported method of linking atm)])
|
||||
])
|
||||
|
||||
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() {
|
||||
int s = socket(AF_INET6, SOCK_STREAM, 0);
|
||||
exit(0); /* We only check if the code compiles, that's enough. We can deal with missing runtime IPv6 */
|
||||
}
|
||||
],
|
||||
[ac_cv_ip6=yes],
|
||||
[ac_cv_ip6=no])
|
||||
])
|
||||
if test "$ac_cv_ip6" = "no"; then
|
||||
AC_MSG_ERROR([Your system does not support IPv6])
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADER(sys/syslog.h,
|
||||
AC_DEFINE([SYSSYSLOGH], [], [Define if you have the <sys/syslog.h> header file.]))
|
||||
AC_CHECK_HEADER(sys/rusage.h,
|
||||
AC_DEFINE([RUSAGEH], [], [Define if you have the <sys/rusage.h> header file.]))
|
||||
AC_CHECK_HEADER(glob.h,
|
||||
AC_DEFINE([GLOBH], [], [Define if you have the <glob.h> header file.]))
|
||||
AC_CHECK_HEADERS([stdint.h inttypes.h])
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_CHECK_FUNCS(strlcpy,
|
||||
AC_DEFINE([HAVE_STRLCPY], [], [Define if you have strlcpy. Otherwise, an internal implementation will be used!]))
|
||||
AC_CHECK_FUNCS(strlcat,
|
||||
AC_DEFINE([HAVE_STRLCAT], [], [Define if you have strlcat]))
|
||||
AC_CHECK_FUNCS(strlncat,
|
||||
AC_DEFINE([HAVE_STRLNCAT], [], [Define if you have strlncat]))
|
||||
|
||||
AC_CHECK_FUNCS([getrusage],
|
||||
[AC_DEFINE([GETRUSAGE_2], [], [Define if you have getrusage])],
|
||||
[AC_CHECK_FUNCS([times],
|
||||
[AC_DEFINE([TIMES_2], [], [Define if you have times])])])
|
||||
AC_CHECK_FUNCS([setproctitle],
|
||||
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])],
|
||||
[AC_CHECK_LIB([util],
|
||||
[setproctitle],
|
||||
[AC_DEFINE([HAVE_SETPROCTITLE], [], [Define if you have setproctitle])
|
||||
IRCDLIBS="$IRCDLIBS-lutil"],
|
||||
[
|
||||
AC_EGREP_HEADER([#define.*PS_STRINGS.*],[sys/exec.h],
|
||||
[AC_DEFINE([HAVE_PSSTRINGS],[], [Define if you have PS_STRINGS])],
|
||||
[AC_CHECK_FUNCS([pstat],
|
||||
[AC_DEFINE([HAVE_PSTAT], [], [Define if you have pstat])])])
|
||||
])
|
||||
]
|
||||
)
|
||||
|
||||
AC_CHECK_FUNCS(explicit_bzero,AC_DEFINE([HAVE_EXPLICIT_BZERO], [], [Define if you have explicit_bzero]))
|
||||
AC_CHECK_FUNCS(syslog,AC_DEFINE([HAVE_SYSLOG], [], [Define if you have syslog]))
|
||||
AC_SUBST(CRYPTOLIB)
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_SUBST(DYNAMIC_LDFLAGS)
|
||||
AC_ARG_WITH(nick-history, [AS_HELP_STRING([--with-nick-history=length],[Specify the length of the nickname history])],
|
||||
[AC_DEFINE_UNQUOTED([NICKNAMEHISTORYLENGTH], [$withval], [Set to the nickname history length you want])],
|
||||
[AC_DEFINE([NICKNAMEHISTORYLENGTH], [2000], [Set to the nickname history length you want])])
|
||||
AC_ARG_WITH(permissions, [AS_HELP_STRING([--with-permissions=permissions], [Specify the default permissions for
|
||||
configuration files])],
|
||||
dnl We have an apparently out-of-place 0 here because of a MacOSX bug and because
|
||||
dnl we assume that a user thinks that `chmod 0600 blah' is the same as `chmod 600 blah'
|
||||
dnl (#3189)
|
||||
[AC_DEFINE_UNQUOTED([DEFAULT_PERMISSIONS], [0$withval], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])],
|
||||
[AC_DEFINE([DEFAULT_PERMISSIONS], [0600], [The default permissions for configuration files. Set to 0 to prevent unrealircd from calling chmod() on the files.])])
|
||||
|
||||
AC_ARG_WITH(bindir, [AS_HELP_STRING([--with-bindir=path],[Specify the directory for the unrealircd binary])],
|
||||
[AC_DEFINE_UNQUOTED([BINDIR], ["$withval"], [Define the directory where the unrealircd binary is located])
|
||||
BINDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([BINDIR], ["$HOME/unrealircd/bin"], [Define the directory where the unrealircd binary is located])
|
||||
BINDIR="$HOME/unrealircd/bin"])
|
||||
|
||||
AC_ARG_WITH(scriptdir, [AS_HELP_STRING([--with-scriptdir=path],[Specify the directory for the unrealircd start-stop script])],
|
||||
[AC_DEFINE_UNQUOTED([SCRIPTDIR], ["$withval"], [Define the directory where the unrealircd start stop scripts is located])
|
||||
SCRIPTDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([SCRIPTDIR], ["$HOME/unrealircd"], [Define the directory where the unrealircd start stop scripts is located])
|
||||
SCRIPTDIR="$HOME/unrealircd"])
|
||||
|
||||
AC_ARG_WITH(confdir, [AS_HELP_STRING([--with-confdir=path],[Specify the directory where configuration files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([CONFDIR], ["$withval"], [Define the location of the configuration files])
|
||||
CONFDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([CONFDIR], ["$HOME/unrealircd/conf"], [Define the location of the configuration files])
|
||||
CONFDIR="$HOME/unrealircd/conf"])
|
||||
|
||||
dnl We have to pass the builddir as well, for the module manager
|
||||
AC_ARG_WITH(builddir, [AS_HELP_STRING([--with-builddir=path],[Specify the build directory])],
|
||||
[AC_DEFINE_UNQUOTED([BUILDDIR], ["$withval"], [Define the build directory])
|
||||
BUILDDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([BUILDDIR], ["$BUILDDIR_NOW"], [Specify the build directory])
|
||||
BUILDDIR="$BUILDDIR_NOW"])
|
||||
|
||||
AC_ARG_WITH(modulesdir, [AS_HELP_STRING([--with-modulesdir=path],[Specify the directory for loadable modules])],
|
||||
[AC_DEFINE_UNQUOTED([MODULESDIR], ["$withval"], [Define the location of the modules])
|
||||
MODULESDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([MODULESDIR], ["$HOME/unrealircd/modules"], [Define the location of the modules])
|
||||
MODULESDIR="$HOME/unrealircd/modules"])
|
||||
|
||||
AC_ARG_WITH(logdir, [AS_HELP_STRING([--with-logdir=path],[Specify the directory where log files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([LOGDIR], ["$withval"], [Define the location of the log files])
|
||||
LOGDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([LOGDIR], ["$HOME/unrealircd/logs"], [Define the location of the log files])
|
||||
LOGDIR="$HOME/unrealircd/logs"])
|
||||
|
||||
AC_ARG_WITH(cachedir, [AS_HELP_STRING([--with-cachedir=path],[Specify the directory where cached files are stored])],
|
||||
[AC_DEFINE_UNQUOTED([CACHEDIR], ["$withval"], [Define the location of the cached remote include files])
|
||||
CACHEDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([CACHEDIR], ["$HOME/unrealircd/cache"], [Define the location of the cached remote include files])
|
||||
CACHEDIR="$HOME/unrealircd/cache"])
|
||||
|
||||
AC_ARG_WITH(tmpdir, [AS_HELP_STRING([--with-tmpdir=path],[Specify the directory where private temporary files are stored. Should not be readable or writable by others, so not /tmp!!])],
|
||||
[AC_DEFINE_UNQUOTED([TMPDIR], ["$withval"], [Define the location of private temporary files])
|
||||
TMPDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([TMPDIR], ["$HOME/unrealircd/tmp"], [Define the location of private temporary files])
|
||||
TMPDIR="$HOME/unrealircd/tmp"])
|
||||
|
||||
AC_ARG_WITH(datadir, [AS_HELP_STRING([--with-datadir=path],[Specify the directory where permanent data is stored])],
|
||||
[AC_DEFINE_UNQUOTED([PERMDATADIR], ["$withval"], [Define the location of permanent data files])
|
||||
PERMDATADIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([DATADIR], ["$HOME/unrealircd/data"], [Define the location of permanent data files])
|
||||
PERMDATADIR="$HOME/unrealircd/data"])
|
||||
|
||||
AC_ARG_WITH(docdir, [AS_HELP_STRING([--with-docdir=path],[Specify the directory where documentation is stored])],
|
||||
[AC_DEFINE_UNQUOTED([DOCDIR], ["$withval"], [Define the location of the documentation])
|
||||
DOCDIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([DOCDIR], ["$HOME/unrealircd/doc"], [Define the location of the documentation])
|
||||
DOCDIR="$HOME/unrealircd/doc"])
|
||||
|
||||
AC_ARG_WITH(pidfile, [AS_HELP_STRING([--with-pidfile=path],[Specify the path of the pid file])],
|
||||
[AC_DEFINE_UNQUOTED([PIDFILE], ["$withval"], [Define the path of the pid file])
|
||||
PIDFILE="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([PIDFILE], ["$HOME/unrealircd/data/unrealircd.pid"], [Define the path of the pid file])
|
||||
PIDFILE="$HOME/unrealircd/data/unrealircd.pid"])
|
||||
|
||||
dnl Ensure that this “feature” can be disabled as it makes it harder to package unrealircd.
|
||||
dnl Users have always been able to specify “./configure LDFLAGS=-Wl,-rpath,/path/to/blah”—binki
|
||||
AC_ARG_WITH(privatelibdir, [AS_HELP_STRING([--with-privatelibdir=path],[Specify the directory where private libraries are stored. Disable when building a package for a distro])],
|
||||
[],
|
||||
[with_privatelibdir="yes"])
|
||||
AS_IF([test "x$with_privatelibdir" = "xno"],
|
||||
[PRIVATELIBDIR=],
|
||||
[test "x$with_privatelibdir" = "xyes"],
|
||||
[PRIVATELIBDIR="$HOME/unrealircd/lib"],
|
||||
[PRIVATELIBDIR="$with_privatelibdir"])
|
||||
AS_IF([test "x$PRIVATELIBDIR" = "x"],
|
||||
[LDFLAGS_PRIVATELIBS=""],
|
||||
[AC_DEFINE_UNQUOTED([PRIVATELIBDIR], ["$PRIVATELIBDIR"], [Define the location of private libraries])
|
||||
LDFLAGS_PRIVATELIBS="-Wl,-rpath,$PRIVATELIBDIR"
|
||||
LDFLAGS="$LDFLAGS $LDFLAGS_PRIVATELIBS"
|
||||
export LDFLAGS])
|
||||
|
||||
AC_SUBST(BUILDDIR)
|
||||
AC_SUBST(BINDIR)
|
||||
AC_SUBST(SCRIPTDIR)
|
||||
AC_SUBST(CONFDIR)
|
||||
AC_SUBST(MODULESDIR)
|
||||
AC_SUBST(LOGDIR)
|
||||
AC_SUBST(CACHEDIR)
|
||||
AC_SUBST(TMPDIR)
|
||||
dnl Why o why PERMDATADIR and not DATADIR you ask?
|
||||
dnl well, Because DATADIR conflicts with the Windows SDK header files.. amazing.
|
||||
AC_SUBST(PERMDATADIR)
|
||||
AC_SUBST(DOCDIR)
|
||||
AC_SUBST(PIDFILE)
|
||||
AC_SUBST(LDFLAGS_PRIVATELIBS)
|
||||
|
||||
AC_ARG_WITH(maxconnections, [AS_HELP_STRING([--with-maxconnections=size], [Specify the max file descriptors to use])],
|
||||
[ac_fd=$withval],
|
||||
[ac_fd=0])
|
||||
AC_DEFINE_UNQUOTED([MAXCONNECTIONS_REQUEST], [$ac_fd], [Set to the maximum number of connections you want])
|
||||
|
||||
AC_ARG_ENABLE([prefixaq],
|
||||
[AS_HELP_STRING([--disable-prefixaq],[Disable chanadmin (+a) and chanowner (+q) prefixes])],
|
||||
[],
|
||||
[enable_prefixaq=yes])
|
||||
AS_IF([test $enable_prefixaq = "yes"],
|
||||
[AC_DEFINE([PREFIX_AQ], [], [Define if you want +a/+q prefixes])])
|
||||
|
||||
AC_ARG_WITH(showlistmodes,
|
||||
[AS_HELP_STRING([--with-showlistmodes], [Specify whether modes are shown in /list])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([LIST_SHOW_MODES], [], [Define if you want modes shown in /list])])])
|
||||
AC_ARG_WITH(no-operoverride, [AS_HELP_STRING([--with-no-operoverride], [Disable OperOverride])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([NO_OPEROVERRIDE], [], [Define if you want OperOverride disabled])])])
|
||||
AC_ARG_WITH(operoverride-verify, [AS_HELP_STRING([--with-operoverride-verify], [Require opers to invite themselves to +s/+p channels])],
|
||||
[AS_IF([test $withval = "yes"],
|
||||
[AC_DEFINE([OPEROVERRIDE_VERIFY], [], [Define if you want opers to have to use /invite to join +s/+p channels])])])
|
||||
AC_ARG_WITH(system-pcre2, [AS_HELP_STRING([--without-system-pcre2], [Use the system pcre2 package instead of bundled, discovered using pkg-config])], [], [with_system_pcre2=yes])
|
||||
AC_ARG_WITH(system-argon2, [AS_HELP_STRING([--without-system-argon2], [Use bundled version instead of system argon2 library. Normally autodetected via pkg-config])], [], [with_system_argon2=yes])
|
||||
AC_ARG_WITH(system-sodium, [AS_HELP_STRING([--without-system-sodium], [Use bundled version instead of system sodium library. Normally autodetected via pkg-config])], [], [with_system_sodium=yes])
|
||||
AC_ARG_WITH(system-cares, [AS_HELP_STRING([--without-system-cares], [Use bundled version instead of system c-ares. Normally autodetected via pkg-config.])], [], [with_system_cares=yes])
|
||||
CHECK_SSL
|
||||
CHECK_SSL_CTX_SET1_CURVES_LIST
|
||||
CHECK_SSL_CTX_SET_MIN_PROTO_VERSION
|
||||
CHECK_SSL_CTX_SET_SECURITY_LEVEL
|
||||
CHECK_ASN1_TIME_diff
|
||||
CHECK_X509_get0_notAfter
|
||||
AC_ARG_ENABLE(dynamic-linking, [AS_HELP_STRING([--disable-dynamic-linking], [Make the IRCd statically link with shared objects rather than dynamically (noone knows if disabling dynamic linking actually does anything or not)])],
|
||||
[enable_dynamic_linking=$enableval], [enable_dynamic_linking="yes"])
|
||||
AS_IF([test $enable_dynamic_linking = "yes"],
|
||||
[AC_ENABLE_DYN],
|
||||
[AC_DEFINE([STATIC_LINKING], [], [Link... statically(?) (defining this macro will probably cause the build tofail)])])
|
||||
|
||||
AC_ARG_ENABLE([werror],
|
||||
[AS_HELP_STRING([--enable-werror],
|
||||
[Turn compilation warnings into errors (-Werror)])],
|
||||
[ac_cv_werror="$enableval"],
|
||||
[ac_cv_werror="no"])
|
||||
|
||||
AC_ARG_ENABLE([asan],
|
||||
[AS_HELP_STRING([--enable-asan],
|
||||
[Enable address sanitizer and other debugging options, not recommended for production servers!])],
|
||||
[ac_cv_asan="$enableval"],
|
||||
[ac_cv_asan="no"])
|
||||
|
||||
AC_CHECK_FUNCS([poll],
|
||||
AC_DEFINE([HAVE_POLL], [], [Define if you have poll]))
|
||||
AC_CHECK_FUNCS([epoll_create epoll_ctl epoll_wait],
|
||||
AC_DEFINE([HAVE_EPOLL], [], [Define if you have epoll]))
|
||||
AC_CHECK_FUNCS([kqueue kevent],
|
||||
AC_DEFINE([HAVE_KQUEUE], [], [Define if you have kqueue]))
|
||||
|
||||
dnl c-ares needs PATH_SEPARATOR set or it will
|
||||
dnl fail on certain solaris boxes. We might as
|
||||
dnl well set it here.
|
||||
export PATH_SEPARATOR
|
||||
|
||||
dnl Use system pcre2 when available, unless --without-system-pcre2.
|
||||
has_system_pcre2="no"
|
||||
AS_IF([test "x$with_system_pcre2" = "xyes"],[
|
||||
PKG_CHECK_MODULES([PCRE2], libpcre2-8 >= 10.00,[has_system_pcre2=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libpcre2*])],[has_system_pcre2=no])])
|
||||
|
||||
AS_IF([test "$has_system_pcre2" = "no"], [
|
||||
dnl REMEMBER TO CHANGE WITH A NEW PCRE2 RELEASE!
|
||||
pcre2_version="10.36"
|
||||
AC_MSG_RESULT(extracting PCRE2 regex library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old pcre2 directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf pcre2-$pcre2_version pcre2
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz pcre2.tar.gz
|
||||
else
|
||||
cp pcre2.tar.gz pcre2.tar.gz.bak
|
||||
gunzip -f pcre2.tar.gz
|
||||
cp pcre2.tar.gz.bak pcre2.tar.gz
|
||||
tar xf pcre2.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring PCRE2 regex library)
|
||||
cd pcre2-$pcre2_version
|
||||
./configure --enable-jit --enable-shared --disable-unicode --prefix=$cur_dir/extras/pcre2 --libdir=$PRIVATELIBDIR || exit 1
|
||||
AC_MSG_RESULT(compiling PCRE2 regex library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing PCRE2 regex library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
PCRE2_CFLAGS="-I$cur_dir/extras/pcre2/include"
|
||||
AC_SUBST(PCRE2_CFLAGS)
|
||||
PCRE2_LIBS=
|
||||
dnl See c-ares's compilation section for more info on this hack.
|
||||
dnl ensure that we're linking against the bundled version of pcre2
|
||||
dnl (we only reach this code if linking against the bundled version is desired).
|
||||
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
|
||||
[PCRE2_LIBS="`$ac_cv_path_PKGCONFIG --libs libpcre2-8.pc`"])
|
||||
dnl For when pkg-config isn't available -- or for when pkg-config
|
||||
dnl doesn't see the libpcre2-8.pc file somehow... (#3982)
|
||||
AS_IF([test -z "$PCRE2_LIBS"],
|
||||
[PCRE2_LIBS="$PRIVATELIBDIR/libpcre2-8.so"])
|
||||
AC_SUBST(PCRE2_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
dnl Use system argon2 when available, unless --without-system-argon2
|
||||
has_system_argon2="no"
|
||||
AS_IF([test "x$with_system_argon2" = "xyes"],[
|
||||
PKG_CHECK_MODULES([ARGON2], [libargon2 >= 0~20161029],[has_system_argon2=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libargon2*])],[has_system_argon2=no])])
|
||||
|
||||
AS_IF([test "$has_system_argon2" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW ARGON2 RELEASE!
|
||||
argon2_version="20181209"
|
||||
AC_MSG_RESULT(extracting Argon2 library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old argon2 directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf argon2-$argon2_version argon2
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz argon2-$argon2_version.tar.gz
|
||||
else
|
||||
cp argon2-$argon2_version.tar.gz argon2-$argon2_version.tar.gz.bak
|
||||
gunzip -f argon2-$argon2_version.tar.gz
|
||||
cp argon2-$argon2_version.tar.gz.bak argon2-$argon2_version.tar.gz
|
||||
tar xf argon2-$argon2_version.tar
|
||||
fi
|
||||
AC_MSG_RESULT(compiling Argon2 library)
|
||||
cd argon2-$argon2_version
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing Argon2 library)
|
||||
$ac_cv_prog_MAKER install PREFIX=$cur_dir/extras/argon2 || exit 1
|
||||
# We need to manually copy the libs to PRIVATELIBDIR because
|
||||
# there is no way to tell make install in libargon2 to do so.
|
||||
# BUT FIRST, delete the old library so it becomes an unlink+create
|
||||
# operation rather than overwriting the existing file which would
|
||||
# lead to a crash of the currently running IRCd.
|
||||
rm -f "$PRIVATELIBDIR/"libargon2*
|
||||
# Now copy the new library files:
|
||||
cp -av $cur_dir/extras/argon2/lib/* $PRIVATELIBDIR/
|
||||
ARGON2_CFLAGS="-I$cur_dir/extras/argon2/include"
|
||||
AC_SUBST(ARGON2_CFLAGS)
|
||||
ARGON2_LIBS="-L$PRIVATELIBDIR -largon2"
|
||||
AC_SUBST(ARGON2_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
dnl Use system sodium when available, unless --without-system-sodium
|
||||
has_system_sodium="no"
|
||||
AS_IF([test "x$with_system_sodium" = "xyes"],[
|
||||
PKG_CHECK_MODULES([SODIUM], [libsodium >= 1.0.16],[has_system_sodium=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libsodium*])],[has_system_sodium=no])])
|
||||
|
||||
AS_IF([test "$has_system_sodium" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW SODIUM RELEASE!
|
||||
sodium_version="1.0.18"
|
||||
AC_MSG_RESULT(extracting sodium library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old sodium directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf sodium-$sodium_version sodium
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz libsodium.tar.gz
|
||||
else
|
||||
cp libsodium.tar.gz libsodium.tar.gz.bak
|
||||
gunzip -f libsodium.tar.gz
|
||||
cp libsodium.tar.gz.bak libsodium.tar.gz
|
||||
tar xf libsodium.tar
|
||||
fi
|
||||
AC_MSG_RESULT(compiling sodium library)
|
||||
cd libsodium-$sodium_version
|
||||
save_cflags="$CFLAGS"
|
||||
CFLAGS="$orig_cflags"
|
||||
export CFLAGS
|
||||
./configure --prefix=$cur_dir/extras/sodium --libdir=$PRIVATELIBDIR --enable-shared --disable-static --enable-opt || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
AC_MSG_RESULT(compiling sodium resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing sodium resolver library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
SODIUM_CFLAGS="-I$cur_dir/extras/sodium/include"
|
||||
AC_SUBST(SODIUM_CFLAGS)
|
||||
SODIUM_LIBS=
|
||||
dnl See c-ares's compilation section for more info on this hack.
|
||||
dnl ensure that we're linking against the bundled version
|
||||
dnl (we only reach this code if linking against the bundled version is desired).
|
||||
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
|
||||
[SODIUM_LIBS="`$ac_cv_path_PKGCONFIG --libs libsodium.pc`"])
|
||||
dnl For when pkg-config isn't available
|
||||
AS_IF([test -z "$SODIUM_LIBS"],
|
||||
[SODIUM_LIBS="-L$PRIVATELIBDIR -lsodium"])
|
||||
AC_SUBST(SODIUM_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
dnl Use system c-ares when available, unless --without-system-cares.
|
||||
has_system_cares="no"
|
||||
AS_IF([test "x$with_system_cares" = "xyes"],[
|
||||
PKG_CHECK_MODULES([CARES], libcares >= 1.6.0,[has_system_cares=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libcares*])],[has_system_cares=no])])
|
||||
|
||||
AS_IF([test "$has_system_cares" = "no"], [
|
||||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
dnl NOTE: when changing this here, ALSO change it in extras/curlinstall
|
||||
dnl and in the comment in this file around line 400!
|
||||
cares_version="1.17.1"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old c-ares directory to force a recompile...
|
||||
rm -rf c-ares-$cares_version c-ares
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz c-ares.tar.gz
|
||||
else
|
||||
cp c-ares.tar.gz c-ares.tar.gz.bak
|
||||
gunzip -f c-ares.tar.gz
|
||||
cp c-ares.tar.gz.bak c-ares.tar.gz
|
||||
tar xf c-ares.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring c-ares library)
|
||||
cd c-ares-$cares_version
|
||||
save_cflags="$CFLAGS"
|
||||
CFLAGS="$orig_cflags"
|
||||
export CFLAGS
|
||||
./configure --prefix=$cur_dir/extras/c-ares --libdir=$PRIVATELIBDIR --enable-shared --disable-tests || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
AC_MSG_RESULT(compiling c-ares resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing c-ares resolver library)
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
CARES_CFLAGS="-I$cur_dir/extras/c-ares/include"
|
||||
AC_SUBST(CARES_CFLAGS)
|
||||
CARES_LIBS="-L$PRIVATELIBDIR"
|
||||
|
||||
dnl Set default library parameters for when pkg-config is not available
|
||||
dnl Ugly cd'ing out of extras/c-ares-xxx ;)
|
||||
dnl Note: must be a full path, not relative path.
|
||||
cd ../..
|
||||
CARESLIBSALT="$PRIVATELIBDIR/libcares.so"
|
||||
cd -
|
||||
case `uname -s` in
|
||||
*FreeBSD*)
|
||||
CARESLIBSALT="$CARESLIBSALT"
|
||||
;;
|
||||
*Linux*)
|
||||
CARESLIBSALT="$CARESLIBSALT -lrt"
|
||||
;;
|
||||
*SunOS*)
|
||||
CARESLIBSALT="$CARESLIBSALT -lrt"
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Use pkg-config for c-ares libraries, and if not available use defaults
|
||||
dnl from above (also if pkg-config returns an empty result).
|
||||
if test "x$ac_cv_path_PKGCONFIG" = "x" ; then
|
||||
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
|
||||
else
|
||||
CARES_LIBSPRE="$CARES_LIBS"
|
||||
dnl the sed expression forces an absolute path to the .so file to be generated
|
||||
dnl because this is what libtool would do. If this wasn't done and /usr/lib*/libcares.so
|
||||
dnl exists, then unrealircd would still try to link against the system c-ares.
|
||||
dnl The [] quotation is needed because the sed expression has [] in it.
|
||||
[CARES_LIBS="$CARES_LIBS `$ac_cv_path_PKGCONFIG --libs libcares.pc | sed -e 's,-L\([^ ]\+lib\) -lcares,\1/libcares.so,'`"]
|
||||
if test "$CARES_LIBS" = "$CARES_LIBSPRE " ; then
|
||||
CARES_LIBS="$CARES_LIBS $CARESLIBSALT"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(CARES_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
AX_PTHREAD()
|
||||
|
||||
CHECK_LIBCURL
|
||||
|
||||
UNRLINCDIR="`pwd`/include"
|
||||
|
||||
dnl Moved to the very end to ensure it doesn't affect any libs or tests.
|
||||
if test "$ac_cv_werror" = "yes" ; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
|
||||
dnl Address sanitizer build
|
||||
if test "$ac_cv_asan" = "yes" ; then
|
||||
CFLAGS="$CFLAGS -O1 -fno-inline -fsanitize=address -fno-omit-frame-pointer -DNOCLOSEFD"
|
||||
IRCDLIBS="-fsanitize=address $IRCDLIBS"
|
||||
fi
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
|
||||
AC_SUBST(UNRLINCDIR)
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
src/Makefile
|
||||
src/modules/Makefile
|
||||
src/modules/chanmodes/Makefile
|
||||
src/modules/usermodes/Makefile
|
||||
src/modules/snomasks/Makefile
|
||||
src/modules/extbans/Makefile
|
||||
src/modules/third/Makefile
|
||||
extras/unrealircd-upgrade-script
|
||||
unrealircd])
|
||||
AC_OUTPUT
|
||||
chmod 0700 unrealircd
|
||||
@@ -0,0 +1,40 @@
|
||||
#************************************************************************
|
||||
#* IRC - Internet Relay Chat, ircd/crypt/Makefile
|
||||
#* Copyright (C) 1991 Darren Reed
|
||||
#*
|
||||
#* This program is free software; you can redistribute it and/or modify
|
||||
#* it under the terms of the GNU General Public License as published by
|
||||
#* the Free Software Foundation; either version 1, or (at your option)
|
||||
#* any later version.
|
||||
#*
|
||||
#* This program is distributed in the hope that it will be useful,
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#* GNU General Public License for more details.
|
||||
#*
|
||||
#* You should have received a copy of the GNU General Public License
|
||||
#* along with this program; if not, write to the Free Software
|
||||
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#*
|
||||
#* $Id$
|
||||
#*/
|
||||
#
|
||||
# Change this to the path of your local ircd.conf file
|
||||
#
|
||||
|
||||
IRCDCONF = ../ircd.conf
|
||||
LIBS=-lcrypt
|
||||
|
||||
all: mkpasswd
|
||||
crypt: install
|
||||
|
||||
mkpasswd: mkpasswd.c
|
||||
cc ${LIBS} -O mkpasswd.c -o mkpasswd
|
||||
|
||||
install:
|
||||
chmod 700 crypter
|
||||
./crypter ${IRCDCONF}
|
||||
@echo 'done.'
|
||||
|
||||
clean:
|
||||
/bin/rm -f mkpasswd
|
||||
@@ -0,0 +1,63 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, ircd/crypt/README
|
||||
* Copyright (C) 1991 Nelson Minar
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
The change implemented here is that the operator password in irc.conf
|
||||
is no longer stored in plaintext form, but is encrypted the same way
|
||||
that user passwords are encrypted on normal UNIX systems. Ie, instead
|
||||
of having
|
||||
|
||||
O:*:goodboy:Nelson
|
||||
|
||||
in your ircd.conf file, you have
|
||||
|
||||
O:*:sCnvYRmbFJ7oI:Nelson
|
||||
|
||||
You still type "/oper Nelson goodboy" to become operator. However, if
|
||||
someone gets ahold of your irc.conf file, they can no longer figure
|
||||
out what the password is from reading it. There are still other
|
||||
security holes, namely server-server passwords, but this closes one
|
||||
obvious problem.
|
||||
|
||||
So how do you generate these icky looking strings for passwords?
|
||||
There's a simple program called mkpasswd to do that for you. Just run
|
||||
mkpasswd, and at the prompt type in your plaintext password. It will
|
||||
spit out the encrypted password, which you should then just copy into
|
||||
the irc.conf file. This should be done only when adding new passwords
|
||||
to your irc.conf file. To change over your irc.conf file to use
|
||||
encrypted passwords, define CRYPT_OPER_PASSWORD in config.h. You will
|
||||
need to recompile your server if you already compiled it with this
|
||||
feature disabled. Once compiled, edit the Makefile in this directory
|
||||
and chang "IRCDCONF" to your irc.conf file. Then "make install" in this
|
||||
directory to replace all the operator passwords in your irc.conf file
|
||||
with the encrypted format.
|
||||
|
||||
Choose your passwords carefully. Do not choose something in a
|
||||
dictionary, make sure its at least 5 characters. Anything past 8
|
||||
characters is ignored.
|
||||
|
||||
One thing to note about crypt() passwords - for every plaintext, there
|
||||
are 4096 different passwords. Some valid encryptions of "goodboy"
|
||||
include t1Ub2RhRQHd4g sCnvYRmbFJ7oI and Xr4Z.Kg5tcdy6. The first
|
||||
two characters (the "salt") determine which of the 4096 passwords
|
||||
you will get. mkpasswd chooses the salt randomly, or alternately
|
||||
will let you specify one on the command line.
|
||||
|
||||
see also - crypt(3)
|
||||
@@ -0,0 +1,77 @@
|
||||
#!/usr/local/bin/perl
|
||||
#************************************************************************
|
||||
#* IRC - Internet Relay Chat, ircd/crypt/crypter
|
||||
#* Copyright (C) 1991 Sean Batt
|
||||
#*
|
||||
#* This program is free software; you can redistribute it and/or modify
|
||||
#* it under the terms of the GNU General Public License as published by
|
||||
#* the Free Software Foundation; either version 1, or (at your option)
|
||||
#* any later version.
|
||||
#*
|
||||
#* This program is distributed in the hope that it will be useful,
|
||||
#* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
#* GNU General Public License for more details.
|
||||
#*
|
||||
#* You should have received a copy of the GNU General Public License
|
||||
#* along with this program; if not, write to the Free Software
|
||||
#* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#*
|
||||
#* $Id$
|
||||
#*
|
||||
#*/
|
||||
|
||||
#From Sean Batt sean@coombs.anu.edu.au
|
||||
#
|
||||
#Temporary output file
|
||||
#
|
||||
$tmpfile = "/tmp/ircd.conf.tmp";
|
||||
|
||||
#
|
||||
#Original ircd.conf file
|
||||
#
|
||||
$ircdconf = @ARGV[0];
|
||||
|
||||
$ircdout = "IRCDOUT";
|
||||
|
||||
print "crypting ",$ircdconf,"\n";
|
||||
@saltset = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '.', '/');
|
||||
|
||||
umask(0077);
|
||||
open ($ircdout, ">/tmp/ircd.conf.tmp") || die "open $!";
|
||||
|
||||
while ($text = <>) {
|
||||
#if its not an "O" line we can ignore it
|
||||
if ($text =~ /^o/i) {
|
||||
chop($text);
|
||||
@oline = split(':', $text);
|
||||
$salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$oline[2] = crypt(@oline[2], $salt);
|
||||
print ($ircdout join(':',@oline)."\n");
|
||||
}
|
||||
elsif ($text =~ /^n/i) {
|
||||
chop($text);
|
||||
@nline = split(':', $text);
|
||||
$salt = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$nline[2] = crypt(@nline[2], $salt);
|
||||
print ($ircdout join(':',@nline)."\n");
|
||||
}
|
||||
elsif ($text =~ /^x/i) {
|
||||
chop($text);
|
||||
@xline = split(':', $text);
|
||||
$salt1 = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$salt2 = $saltset[rand(time)%64].$saltset[(rand(time)>>6)%64];
|
||||
$xline[1] = crypt(@xline[1], $salt1);
|
||||
$xline[2] = crypt(@xline[2], $salt2);
|
||||
print ($ircdout join(':',@xline)."\n");
|
||||
}
|
||||
else {
|
||||
print $ircdout "$text";
|
||||
}
|
||||
}
|
||||
close ($ircdout);
|
||||
close ($ircdin);
|
||||
print "/bin/cp ",$tmpfile," ",$ircdconf,"\n";
|
||||
(fork()==0) ? exec("/bin/cp", $tmpfile, $ircdconf) : wait;
|
||||
|
||||
#unlink($tmpfile);
|
||||
@@ -0,0 +1,43 @@
|
||||
/* simple password generator by Nelson Minar (minar@reed.edu)
|
||||
* copyright 1991, all rights reserved.
|
||||
* You can use this code as long as my name stays with it.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
extern char *getpass();
|
||||
|
||||
int main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
|
||||
char salt[3];
|
||||
char * plaintext;
|
||||
int i;
|
||||
|
||||
if (argc < 2) {
|
||||
srandom(time(0)); /* may not be the BEST salt, but its close */
|
||||
salt[0] = saltChars[random() % 64];
|
||||
salt[1] = saltChars[random() % 64];
|
||||
salt[2] = 0;
|
||||
}
|
||||
else {
|
||||
salt[0] = argv[1][0];
|
||||
salt[1] = argv[1][1];
|
||||
salt[2] = '\0';
|
||||
if ((strchr(saltChars, salt[0]) == NULL) || (strchr(saltChars, salt[1]) == NULL))
|
||||
fprintf(stderr, "illegal salt %s\n", salt), exit(1);
|
||||
}
|
||||
|
||||
plaintext = getpass("Enter Password: ");
|
||||
|
||||
printf("Encryption: %s\n", crypt(plaintext, salt));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
ALN, Alphanumeric System
|
||||
(C) Stskeeps 2000
|
||||
|
||||
ALN is a quick hack to short down usage of bandwidth-using servernames
|
||||
in prefixes, NICK commands, etc etc. It replaces the name with a
|
||||
1 or 2 byte prefix in a system, look at src/aln.c for the prefix
|
||||
types/values. It will be an PROTOCTL, and used in NICK messages and so on,
|
||||
and introduce a new prefix server<->server called |server. The value of the
|
||||
server is calculated by a hash value, the scache system, so that the server
|
||||
can lookup with a new scache function, scache_find_by_hash(int i). The
|
||||
question of it will conflict in similar-hash server names, is a wonder to me
|
||||
:P, we will find out, but scache will fail at same time then.
|
||||
|
||||
|
||||
Examples:
|
||||
& Medb 4 957458466 ~Medb bservice.org D2 0 +iwrx *
|
||||
:BotService Bot - bservice.org - Owner: terri{J}
|
||||
|
||||
where D2 is the hash value of oxygen.phrozen.org (/stats s on a
|
||||
#define DEVELOP server). irc.flirt.org has hash 96 (ALN code AX) for
|
||||
instance.
|
||||
|
||||
@D2 GLOBOPS :message
|
||||
will be a message from server with hash D2, found find-by-hash(256)
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
From cmunk@draconic.fyremoon.net Wed Apr 5 18:09:55 2000
|
||||
Date: Wed, 5 Apr 2000 18:07:55 +0100 (BST)
|
||||
From: "The Nightwalker (Stskeeps)" <cmunk@draconic.fyremoon.net>
|
||||
To: unreal-dev@lists.sourceforge.net
|
||||
Subject: [Unreal-dev] P:Lines
|
||||
|
||||
|
||||
Some stuff i got ideas about.. stripping the IP and port from the M:Line
|
||||
and enforcing the main port to be in a M:line
|
||||
|
||||
M:irc.fyremoon.net:*:Forever is gonna start tonight:*
|
||||
|
||||
P:ip:flags:password1,password2,password3:port
|
||||
| | | \- port to bind to
|
||||
| | |
|
||||
| | \- Commaseperated lists of accepted passwords
|
||||
| | * if none
|
||||
| |
|
||||
| \--- C = Allow clients
|
||||
| S = Allow servers
|
||||
| R = ONLY allow our remote admin connections
|
||||
| (may only be on a P:line of its own)
|
||||
| J = Clients that connect here are counted as Java(Confroomhack)
|
||||
| s = Makes this a SSL port
|
||||
| * = CS
|
||||
|
|
||||
|
|
||||
\--- IP to bind to, * = INADDR_ANY (all interfaces)
|
||||
|
||||
Will make P:Lines more efficent
|
||||
|
||||
---------------------------------------------------------------------
|
||||
Carsten V. Munk - The Nightwalker, known on IRC as Stskeeps or techie
|
||||
* ICQ: 16465977 - E-Mail: stskeeps@tspre.org
|
||||
* Author of UnrealIRCd (http://unreal.tspre.org)
|
||||
* Technical Admin @ irc.roxnet.org, server admin of irc.fyremoon.net
|
||||
"To understand a program you must become both the machine and the program."
|
||||
----------------------------------------------------------------------
|
||||
|
||||
-----BEGIN GEEK CODE BLOCK-----
|
||||
Version: 3.1
|
||||
GCS/CC d- s: a--- C+++ UL P L++ E-- W++ N+ o-- K- w--- O- M V-- PS+ PE- Y+
|
||||
PGP t+ 5 X R- tv- b+ DI++ D++ G e-- h! r z**
|
||||
------END GEEK CODE BLOCK------
|
||||
|
||||
|
||||
_______________________________________________
|
||||
Unreal-dev mailing list
|
||||
Unreal-dev@lists.sourceforge.net
|
||||
http://lists.sourceforge.net/mailman/listinfo/unreal-dev
|
||||
@@ -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-)\)
|
||||
# }
|
||||
# }
|
||||
|
||||
+3
-9
@@ -118,14 +118,8 @@ Tom Hopkins <hoppie@buengf.bu.edu> / September, October 1990:
|
||||
always works on code, so he has to have done alot more than three
|
||||
lines worth. :)
|
||||
|
||||
UnrealIRCd Coders
|
||||
Carsten Munk <stskeeps@unrealircd.com> / May 1999 - December 2008
|
||||
Dominick Meglio <codemastr@unrealircd.com> / June 1999 - August 2005
|
||||
David Flynn / March 2000 - June 2000
|
||||
McSkaf / June 2001 - September 2001
|
||||
Finny Merrill <griever@unrealircd.com> / November 2001 - December 2002
|
||||
Bram Matthys <syzop@unrealircd.com> / January 2002 - date
|
||||
This list is incomplete, type /INFO on IRC to find the updated list.
|
||||
Carsten Munk <stskeeps@mp3fans.co.uk> / May and futher 1999:
|
||||
* Made many features based on Elite.. :/
|
||||
|
||||
Thanks go to those persons not mentioned here who have added their advice,
|
||||
opinions, and code to IRC.
|
||||
@@ -145,4 +139,4 @@ Eric P. Scott <eps@toaster.sfsu.edu>
|
||||
Dan Goodwin <fornax@wpi.wpi.edu>
|
||||
Noah Friedman <friedman@ai.mit.edu>
|
||||
|
||||
[ $Id$ ]
|
||||
[ $Id$ ]
|
||||
@@ -1,31 +0,0 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for UnrealIRCd 5.0.10-git
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
||||
A short installation guide is available online at:
|
||||
https://www.unrealircd.org/docs/Installing_from_source
|
||||
|
||||
Full documentation is available at:
|
||||
https://www.unrealircd.org/docs/UnrealIRCd_5_documentation
|
||||
|
||||
--------------------------------------------------------------------------------------
|
||||
|
||||
The full release notes are available in doc/RELEASE-NOTES.md
|
||||
For easier viewing, check out the latest online release notes at:
|
||||
https://github.com/unrealircd/unrealircd/blob/unreal50/doc/RELEASE-NOTES.md
|
||||
|
||||
UnrealIRCd 5 is compatible with the following services:
|
||||
* anope with the "unreal4" protocol module - version 2.0.7 or higher required!
|
||||
* atheme with the "unreal4" protocol module - tested with version 7.2.9
|
||||
|
||||
--------------------------------------------------------------------------------------
|
||||
@@ -0,0 +1,128 @@
|
||||
SmartRoute
|
||||
Rule based connects
|
||||
Draft 4 - Aug 19, 1994
|
||||
by Tony Vencill
|
||||
|
||||
Rule based connects allow an admin to specify under what conditions
|
||||
a connect should not be allowed. If no rules are specified for a
|
||||
given C and/or N line it will be allowed under any condition.
|
||||
|
||||
A rule may consist of any legal combination of the following functions
|
||||
and operators.
|
||||
|
||||
Functions
|
||||
---------
|
||||
connected(targetmask) - true if a server other than that processing
|
||||
the rule is connected that matches the
|
||||
target mask
|
||||
directcon(targetmask) - true if a server other than that processing
|
||||
the rule is directly connected that matches
|
||||
the target mask
|
||||
via(viamask, targetmask) - true if a server other than that processing
|
||||
the rule matches the target mask and is
|
||||
connected via a directly connected server
|
||||
that matches the via mask
|
||||
directop() - true if an oper is directly connected
|
||||
|
||||
Unary operators
|
||||
---------------
|
||||
! eg: !argument - true if the argument is false
|
||||
|
||||
Binary operartors
|
||||
-----------------
|
||||
&& eg: arg1&&arg2 - true if arg1 and arg2 are both true
|
||||
|| eg: arg1||arg2 - true if arg1, arg2, or both are true
|
||||
|
||||
Parenthesis () are allowed for grouping arguments, but if no parenthesis
|
||||
are included, && will take precedence over ||, ! will take precedence
|
||||
over both && and ||, and the function will be evaluated from left to
|
||||
right. White space in a rule is ignored. Invalid characters in a rule
|
||||
will lead to the rule being ignored.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
A simple example of a connect rule might be:
|
||||
|
||||
connected(*eu.under*)
|
||||
|
||||
This might be used in a US undernet server for a Europe CN pair to
|
||||
insure that a second Europe link is not allowed if one US-EU link
|
||||
already exists. Note that on the undernet, US server names are
|
||||
city.state.us.undernet.org and Europe server names are
|
||||
city.country.eu.undernet.org.
|
||||
|
||||
A more interesting example might be:
|
||||
|
||||
connected(*eu.under*) &&
|
||||
( !direct(*eu.under*) || via(manhat*, *eu.under*) )
|
||||
|
||||
Imagine the Boston undernet server uses this rule on its Europe CN
|
||||
pairs. This says that if a Europe server is already connected, a
|
||||
Boston-Europe connect will not be allowed. It also says that if a
|
||||
Europe server does already exist and Boston is not directly connected
|
||||
to one or more Europe servers or Manhattan is, the Boston-Europe
|
||||
connect will not be allowed. This has the effect of allowing multiple
|
||||
US-EU links but attempting to limit these links to one server (ie:
|
||||
Boston will not initiate its first Europe link if another server is
|
||||
already linking Europe). This rule will also prefer to let Manhattan
|
||||
handle the US-EU link by disallowing Boston-Europe links if a Europe
|
||||
server is already linked to Manhattan.
|
||||
|
||||
A example of the remaining function, directop(), is:
|
||||
|
||||
connected(*eu.under*) || directop()
|
||||
|
||||
If this line is used on Boston for the Paderborn CN pair, it will allow
|
||||
connects to Paderborn only if another Europe server is not already
|
||||
connected and there is not an oper on Boston. If this rule is
|
||||
overrideable (ie: is applied only to autoconnects as described below),
|
||||
then it will disallow Boston autoconnects to Paderborn while a Boston
|
||||
oper is online, but allow oper-initiated connects to Paderborn under any
|
||||
circumstance. This directop() function could be used to invoke less
|
||||
prefered routes only when an oper is not present to handle routing, or
|
||||
conversly to allow use of less preferable routes only when an oper is
|
||||
present to monitor their performance.
|
||||
|
||||
ircd.conf entries
|
||||
-----------------
|
||||
|
||||
A rule is listed in the ircd.conf file using a D or d line (which can
|
||||
be thought of as a "disallow" line). D lines will apply to all oper
|
||||
and server originated connects, while d lines will apply only to
|
||||
autoconnects (ie: they are overrideable by opers). The formats are:
|
||||
|
||||
D:targetmask::rule
|
||||
d:targetmask::rule
|
||||
|
||||
Remember that newlines are not allowed in conf lines. Two examples
|
||||
(from above) are:
|
||||
|
||||
D:*eu.under*::connected(*eu.under*)
|
||||
d:*eu.under*::connected(*eu.under*) || directop()
|
||||
|
||||
Connects originating from other servers will be checked against and
|
||||
matching D lines, while matching d lines will be ignored as it will not
|
||||
be clear whether or not the connection attempt is oper initiated.
|
||||
|
||||
Checking and viewing rules
|
||||
--------------------------
|
||||
|
||||
The chkconf program that comes with the servers has been modified to
|
||||
also check your connect rules. If running in debug mode, parsing errors
|
||||
will show up at debug level 8. To view rules online, "/stats d" can be
|
||||
used to see all rules and "/stats D" can be used to view those rules
|
||||
which affect oper initiated connects and accepts.
|
||||
|
||||
Processing and storage
|
||||
----------------------
|
||||
|
||||
The rules are parsed when the conf file is read and transformed into a
|
||||
more efficiently computed form, then all applicable rules are
|
||||
evaluated each time a connect command is given or an autoconnect is
|
||||
due. If more than one applicable rule is given, only one need
|
||||
evaluate to true for the connect to be allowed (ie: the rules are ored
|
||||
together). Note that conditions that exist when the connect is
|
||||
initiated might differ from conditions when the link is established.
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -1,14 +0,0 @@
|
||||
Although UnrealIRCd is a free program, we do put a great deal of time,
|
||||
effort, and money into keeping UnrealIRCd alive. If you like UnrealIRCd and
|
||||
want to support us then please consider making a donation.
|
||||
|
||||
PayPal Donation Link: https://unrealircd.org/index/donations
|
||||
|
||||
If you don't want to use PayPal, or you want to donate something other than
|
||||
money, then please contact Syzop (syzop@unrealircd.com).
|
||||
|
||||
All those who donate at least a certain minimum amount will have their name
|
||||
and/or company listed in /CREDITS and will be listed on the website.
|
||||
|
||||
Thank you for your support,
|
||||
The UnrealIRCd Team
|
||||
@@ -0,0 +1,16 @@
|
||||
The foll. patches are NEW in 19.mu1 (besides the old patches of stats-w,
|
||||
ban, topic, client connect, signon time, trace times in previous .mu
|
||||
versions):
|
||||
|
||||
* All the modifications contained in U3.2, namely - TSpre8, silence, bquiet
|
||||
|
||||
* The K line comments patch.
|
||||
|
||||
* The operfail notification patch
|
||||
|
||||
* The mixed case userid reject patch
|
||||
|
||||
For info on these check the file README.patches
|
||||
|
||||
- Mmmm
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
For starters, not a lot is new. What is ?
|
||||
|
||||
* STATS o and STATS h added;
|
||||
|
||||
* most STATS options are no longer oper-only;
|
||||
|
||||
* privacy fixes to all of WHO, WHOIS, TRACE and STATS;
|
||||
|
||||
* more options in the ircd.conf file;
|
||||
|
||||
* non-debilitating DNS/ident use (DNS routines written specifically
|
||||
for ircd which indludes small local cache);
|
||||
|
||||
* less bugs;
|
||||
|
||||
* easier to compile;
|
||||
|
||||
* heaps and heaps of new numerics;
|
||||
|
||||
* more problems for old clients that do stupid things;
|
||||
|
||||
* more numeric replies which replace old NOTICE's;
|
||||
|
||||
* compulsory ident checks and optional result usage;
|
||||
|
||||
* sendQ can now be class dependant;
|
||||
|
||||
* server handles client flooding better;
|
||||
|
||||
* for more information on changes, bug fixes during development, see
|
||||
ircd/ChangeLog and common/ChangeLog
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,41 @@
|
||||
The Internet Relay Chat Program - IRC
|
||||
|
||||
Author: Jeff Trim, April '89
|
||||
Revised: Greg Lindahl, Oct '90 (gl8f@virginia.edu)
|
||||
Re-Revised: Helen Rose, March '94 (hrose@kei.com)
|
||||
|
||||
Have you ever wanted to talk with other computer users in other parts of
|
||||
the world? Well guess what? You can! The program is called IRC and it
|
||||
is networked much over North America, Europe, and Asia, Oceania, and parts
|
||||
of Africa. This program is a substitution for talk(1), ytalk(1) and many
|
||||
other multiple talk programs you might have read about. When you are
|
||||
talking in IRC, everything you type will instantly be transmitted around
|
||||
the world to other users that might be watching their terminals at the
|
||||
time - they can then type something and RESPOND to your messages - and
|
||||
vise versa. I should warn you that the program can be very addictive once
|
||||
you begin to make friends and contacts on IRC ;-) especially when you
|
||||
learn how to cuss in 14 languages.
|
||||
|
||||
Topics of discussion on IRC are varied, just like the topics of Usenet
|
||||
newsgroups are varied. Technical and political discussions are
|
||||
popular, especially when world events are in progress. IRC is also a
|
||||
way to expand your horizons, as people from many countries and
|
||||
cultures are on, 24 hours a day. Most conversations are in English,
|
||||
but there are always channels in German, Japanese, and Finnish, and
|
||||
occasionally other languages.
|
||||
|
||||
How To Get IRC (technical)
|
||||
|
||||
IRC is a fully-distributed client-server system, much like
|
||||
NNTP-Usenet, with several clients availble in C and elisp. You may ftp
|
||||
documentation and clients from any of the following sites:
|
||||
|
||||
many kinds of clients (C, elisp, X11, VMS, REXX for VM, MSDOS, Macintosh):
|
||||
cs.bu.edu:/irc/clients
|
||||
ftp.acsu.buffalo.edu:/pub/irc
|
||||
ftp.funet.fi:/pub/unix/irc
|
||||
coombs.anu.edu.au:/pub/irc
|
||||
|
||||
If you have any questions about IRC installation, write to hrose@kei.com.
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -0,0 +1,129 @@
|
||||
[ $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.
|
||||
@@ -0,0 +1,86 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/etiquette
|
||||
* Copyright (C) 1990, Lea Viljanen and Ari Husa
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
HOW TO BEHAVE ON IRC
|
||||
|
||||
Authors: Lea Viljanen (LadyBug) viljanen@kreeta.helsinki.fi
|
||||
Ari Husa (luru) so-luru@tolsun.oulu.fi
|
||||
|
||||
|
||||
1) Language
|
||||
|
||||
The most widely understood and spoken language on IRC is English.
|
||||
However! As IRC is used in many different countries, English is by
|
||||
no means the only language. If you want to speak some other language
|
||||
than English (for example with your friends), go to a separate channel
|
||||
and set the topic (with /topic) to indicate that. For example
|
||||
/topic Finnish only!
|
||||
would mean that this channel would be reserved for Finnish discussion.
|
||||
On the other hand, you should check the topic (with /list command)
|
||||
before you move to a channel to see if there are any restrictions about
|
||||
language.
|
||||
On a channel not restricted by /topic, please speak a language
|
||||
everybody can understand. If you want to do otherwise, change channels
|
||||
and set the topic accordingly.
|
||||
|
||||
|
||||
2) Hello/Goodbye
|
||||
|
||||
It's not necessary to greet everybody on a channel personally.
|
||||
Usually one "Hello" or equivalent is enough. And don't expect everybody
|
||||
to greet you back. On a channel with 20 people that would mean one
|
||||
screenful of hellos. It's sensible not to greet, in order not to be rude
|
||||
to the rest of the channel. If you must say hello, do it with a private /msg.
|
||||
The same applies to goodbyes.
|
||||
|
||||
|
||||
3) Discussion
|
||||
|
||||
When you come to a new channel it's advised you to listen
|
||||
for a while to get an impression of what's discussed. Please feel free
|
||||
to join in, but do not try to force your topic into the discussion
|
||||
if that doesn't come naturally.
|
||||
|
||||
|
||||
4) {}|[]\
|
||||
|
||||
IRC has quite a lot of people from Scandinavian countries,
|
||||
the above characters are letters in their alphabet. This
|
||||
has been explained on IRC about a thousand and one times, so
|
||||
read the following, do not ask it on IRC:
|
||||
|
||||
{ is an A with 2 dots over it
|
||||
} is an A with a small circle above it
|
||||
| is either an O with 2 dots over it or an O with a dash (/) through it
|
||||
[, ], and \ are the preceding three letters in upper case.
|
||||
|
||||
There are a lot of people from Japan as well, who use Kanji characters
|
||||
which may look quite exotic as well. As I don't know Kanji I don't
|
||||
even try to explain any of the characters.
|
||||
|
||||
5) ATTENTION!
|
||||
|
||||
Remember, people on IRC form their opinions about you only by
|
||||
your actions, writings and comments on IRC. So think before you type.
|
||||
Do not "dump" to a channel or user (send large amounts of unwanted
|
||||
information). This is likely to get you /kicked off the channel or
|
||||
/killed off from irc. Dumping causes network 'burbs', connections going
|
||||
down because servers cannot handle the large amount of traffic any more.
|
||||
File diff suppressed because it is too large
Load Diff
+963
@@ -0,0 +1,963 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/INSTALL
|
||||
* Copyright (C) 1990,1991,1992, Jeff Trim, Mike Bolotski,
|
||||
* Jarkko Oikarinen and Darren Reed.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
Installing IRC - The Internet Relay Chat Program
|
||||
|
||||
|
||||
Overview of this document:
|
||||
|
||||
1) The config.h file
|
||||
2) Editing the Makefile
|
||||
3) Compiling IRC
|
||||
4) The ircd.conf file
|
||||
|
||||
|
||||
1) Edit the "config.h" file and make changes to the various #DEFINE's:
|
||||
|
||||
a) Copy the config.h.dist file to config.h before editing.
|
||||
|
||||
b) Define what type of UNIX your machine uses.
|
||||
|
||||
Pick the machine type which best describes your machine and change
|
||||
the #undef to #define (if needed). Some flavours of Unix require no
|
||||
#define and in such cases all others should be #undef'd.
|
||||
|
||||
c) DEBUGMODE
|
||||
|
||||
Define DEBUGMODE if you want to see the ircd debugging information
|
||||
as the daemon is running. Normally this function will be undefined
|
||||
as ircd produces a considerable amount of output. DEBUGMODE must be
|
||||
defined for either of -t or -x command line options to work.
|
||||
|
||||
d) DPATH, SPATH, CPATH, MPATH, LPATH, PPATH
|
||||
|
||||
DPATH is provided so that the other pathnames (SPATH, CPATH, etc)
|
||||
may be provided in just filename form. When the server starts, it
|
||||
chdir's to DPATH before chroot or any other file operation, making
|
||||
it the "current directory" for the server. This is where core files
|
||||
will go if it core dumps.
|
||||
|
||||
Define SPATH to be the directory path to ircd. This is usually
|
||||
/usr/local/bin/ircd, unless you don't have installation permission
|
||||
there.
|
||||
|
||||
Define CPATH to be the directory path to the "irc.conf" file.
|
||||
This path is usually /usr/local/lib/irc.conf. The format of this file
|
||||
will be discussed later.
|
||||
|
||||
The LPATH #define should be set to "/dev/null" unless you plan to
|
||||
debug the program. Note that the logfile grows very quickly.
|
||||
|
||||
Define MPATH to be the path to the 'motd' (message of the day) file
|
||||
for the server. Keep in mind this is displayed whenever anyone
|
||||
signs on to your server.
|
||||
|
||||
The PPATH is optional, but if defined, should point to a file which
|
||||
either doesn't exist (but is creatable) or a previously used PPATH
|
||||
file. It is used for storing the server's PID so a ps(1) isn't
|
||||
necessary.
|
||||
|
||||
e) CHROOTDIR
|
||||
|
||||
To use the CHROOTDIR feature, make sure it is #define'd and that
|
||||
the server is being run as root. The server will chroot to the
|
||||
directory name provded by DPATH.
|
||||
|
||||
f) ENABLE_SUMMON, ENABLE_USERS
|
||||
|
||||
For security conscious server admins, they may wish to leave
|
||||
ENABLE_USERS undefined, disabling the USERS command which can be used
|
||||
to glean information the same as finger can. ENABLE_SUMMON toggles
|
||||
whether the server will attempt to summon local users to irc by
|
||||
writing a message similar to that from talk(1) to a user's tty.
|
||||
|
||||
g) SHOW_INVISIBLE_LUSERS, NO_DEFAULT_INVISIBLE
|
||||
|
||||
On large IRC networks, the number of invisible users is likely to
|
||||
be large and reporting that number cause no pain. To aid and effect
|
||||
this, SHOW_INVISIBLE_LUSERS is provided to cause the LUSERS command
|
||||
to report the number of invisible users to all people and not just
|
||||
operators. The NO_DEFAULT_INVISIBLE define is used to toggle whether
|
||||
clients are automatically made invisible when they register.
|
||||
|
||||
h) OPER_KILL, OPER_REHASH, OPER_RESTART, LOCAL_KILL_ONLY
|
||||
|
||||
The three operator only commands, KILL, REHASH and RESTART, may all
|
||||
be disabled to ensure that an operator who does not have the correct
|
||||
privilidges does not have the power to cause untoward things to occur.
|
||||
To further curb the actions of guest operators, LOCAL_KILL_ONLY can
|
||||
be defined to only allow locally connected clients to be KILLed.
|
||||
|
||||
i) The rest of the user changable #define's should be pretty much self
|
||||
explanatory in the config.h file. It is *NOT* recommended that any
|
||||
of the file undef the line with "STOP STOP" in it be changed.
|
||||
|
||||
3) Configure and compile the code.
|
||||
|
||||
Edit the root Makefile for the server, uncomment/comment the correct
|
||||
CFLAGS/IRCDLIBS lines as appropriate for your system.
|
||||
Change DESTDIR to be the same as the path for DPATH in config.h.
|
||||
Type "make". This will compile the server, the client, and the services.
|
||||
At the end of this step, the server directory will contain 'ircd',
|
||||
and the client directory will contain 'irc'. To get the server installed,
|
||||
type "make install" which will build a default m4 file for preprocessing,
|
||||
copy example.conf and put the server all in DESTDIR. The irc client and
|
||||
a copy of the server will also be placed in BINDIR and the modes set
|
||||
accordingly.
|
||||
|
||||
4) The ircd.conf file.
|
||||
|
||||
After installing the ircd and irc programs, edit the irc.conf file
|
||||
as per the instructions in this section and install it in the
|
||||
location you specified in the config.h file. There is a sample
|
||||
conf file called example.conf in the /doc directory.
|
||||
|
||||
Appendix A describes the differences between IP addresses and host
|
||||
names. If you are unfamiliar with this, you should probably scan
|
||||
through it before proceeding.
|
||||
|
||||
The irc.conf file contains various records that specify configuration
|
||||
options. The record types are as follows:
|
||||
|
||||
1. Server connections (C,N)
|
||||
2. Machine information (M)
|
||||
3. Client connections (I)
|
||||
4. Default local server (U)
|
||||
5. Operator priviliges (O)
|
||||
6. Administrative info (A)
|
||||
7. Excluded accounts (K)
|
||||
8. Excluded machines (Q)
|
||||
9. Connection Classes (Y)
|
||||
10. Leaf connections (L)
|
||||
11. Service connections (S)
|
||||
12. Port connections (P)
|
||||
13. Hub connections (H)
|
||||
|
||||
|
||||
1. SERVER CONNECTIONS: How to connect to other servers
|
||||
How other servers can connect to you
|
||||
|
||||
WARNING:
|
||||
The hostnames used as examples are really only examples and
|
||||
not meant to be used (simply because they don't work) in real life.
|
||||
|
||||
Now you must decide WHICH hosts you want to connect to and WHAT ORDER you
|
||||
want to connect to them in. For my example let us assume I am on the
|
||||
machine "rieska.oulu.fi" and I want to connect to irc daemons on 3 other
|
||||
machines:
|
||||
|
||||
"garfield.mit.edu" - Tertiary Connection
|
||||
"irc.nada.kth.se" - Secondary Connection
|
||||
"nic.funet.fi" - Primary Connection
|
||||
|
||||
And I prefer to connect to them in that order, meaning I first want to
|
||||
try connecting to "nic.funet.fi", then to "irc.nada.kth.edu", and
|
||||
finally to "garfield.mit.edu". So if "nic.funet.fi" is down or
|
||||
unreachable, the program will try to connect to "irc.nada.kth.se".
|
||||
If irc.nada.kth.se is down it will try to connect to garfield and so forth.
|
||||
PLEASE limit the number of hosts you will attempt to connect to down to 3.
|
||||
This is because of two main reasons:
|
||||
a) to save your server from causing extra load and delays
|
||||
to users
|
||||
b) to save internet from extra network traffic
|
||||
(remember the old rwho program with traffic problems when
|
||||
the number of machines increased).
|
||||
|
||||
The format for the CONNECT entry in the "irc.conf" is:
|
||||
|
||||
C:<TARGET Host Addr>:<Password>:<TARGET Host NAME>:<TARGET Host PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
for example:
|
||||
|
||||
C:nic.funet.fi:passwd:nic.funet.fi:6667
|
||||
|
||||
- or -
|
||||
|
||||
C:128.214.6.100:passwd:nic.funet.fi:6667
|
||||
|
||||
- or -
|
||||
|
||||
C:root@nic.funet.fi:passwd:nic.funet.fi:6667
|
||||
|
||||
|
||||
Explanation:
|
||||
|
||||
Each field is separated with a ":" charcter:
|
||||
|
||||
Field 1: Field 1 tells the IRC program which option is being configured.
|
||||
"C" corresponds to a server Connect option.
|
||||
|
||||
Field 2: Specifies the host name or IP address of the machine to connect
|
||||
to. If "user@" prefixes the actual hostname or IP address
|
||||
the server will require that the remote username returned by
|
||||
the ident server be the same as the one given before the "@".
|
||||
|
||||
Field 3: The password of the other host. A password must always be
|
||||
present for the line to be recognized.
|
||||
|
||||
Field 4: The full hostname of the target machine. This is the name that
|
||||
the TARGET server will identify itself with when you connect
|
||||
to it. If you were connecting to nic.funet.fi you would receive
|
||||
"nic.funet.fi" and that is what you should place in
|
||||
this field.
|
||||
|
||||
Field 5: The INTERNET Port that you want to connect to on the TARGET
|
||||
machine. Most of the time this will be set to "6667".
|
||||
If this field is left blank, then no connections will
|
||||
be attempted to the TARGET host, and your host will accept
|
||||
connections FROM the TARGET host instead.
|
||||
|
||||
Some examples:
|
||||
|
||||
C:nic.funet.fi::nic.funet.fi:6667
|
||||
|
||||
This reads: Connect to host "nic.funet.fi", with no password
|
||||
and expect this server to identify itself to you as
|
||||
"nic.funet.fi". Your machine will connect to this host to
|
||||
PORT 6667.
|
||||
|
||||
C:18.72.0.252:Jeff:garfield.mit.edu:6667
|
||||
|
||||
This reads: Connect to a host at address "18.72.0.252", using a
|
||||
password of "Jeff". The TARGET server should identify
|
||||
itself as "garfield.mit.edu". You will connect to Internet
|
||||
Port 6667 on this host.
|
||||
|
||||
C:irc.nada.kth.se::irc.nada.kth.se
|
||||
|
||||
This reads: do not attempt to connect to "irc.nada.kth.se",
|
||||
but if "irc.nada.kth.se" requests a connection,
|
||||
allow it to connect.
|
||||
|
||||
Now back to our original problem, we wanted OUR server CONNECT to 3
|
||||
hosts, "nic.funet.fi", "irc.nada.kth.se" and "garfield.mit.edu" in
|
||||
that order. So as we enter these entries into the file they must be
|
||||
done in REVERSE order of how we could want to connect to them.
|
||||
|
||||
Here's how it would look if we connected "nic.funet.fi" first:
|
||||
|
||||
C:garfield.mit.edu::garfield.mit.edu:6667
|
||||
C:irc.nada.kth.se::irc.nada.kth.se:6667
|
||||
C:nic.funet.fi::nic.funet.fi:6667
|
||||
|
||||
Ircd will attempt to connect to nic.funet.fi first, then to irc.nada
|
||||
and finally to garfield.
|
||||
|
||||
Reciprocal entries:
|
||||
|
||||
Each "C" entry requires a corresponding 'N' entry that specifies
|
||||
connection priviliges to other hosts. The 'N' entry contains
|
||||
the password, if any, that you require other hosts to have before
|
||||
they can connect to you. These entries are of the same format as
|
||||
the "C" entries.
|
||||
|
||||
Let us assume that "garfield.mit.edu" connects to your server
|
||||
and you want to place password authorization authorization on garfield.
|
||||
The "N" entry would be:
|
||||
|
||||
N:garfield.mit.edu:golden:garfield.mit.edu
|
||||
|
||||
This line says: expect a connection from host "garfield.mit.edu",
|
||||
and expect a login password of "golden"
|
||||
and expect the host to identify itself as "garfield.mit.edu".
|
||||
|
||||
N:18.72.0.252::garfield.mit.edu
|
||||
|
||||
This line says: expect a Connection from host "18.72.0.252", and
|
||||
don't expect login password. The connecting host should identify itself
|
||||
as "garfield.mit.edu".
|
||||
|
||||
|
||||
Wildcards domains:
|
||||
To reduce the great amount of servers in IRCnet wildcard
|
||||
DOMAINS were introduced in 2.6. To explain the usage of
|
||||
wildcard domains we take an example of such:
|
||||
*.de - a domain name matching all machines
|
||||
in Germany.
|
||||
Wildcard domains are useful in that ALL SERVERS in Germany
|
||||
(or any other domain area) can be shown as one to the
|
||||
rest of the world. Imagine 100 servers in Germany, it
|
||||
would be incredible waste of netwotk bandwidth to broadcast
|
||||
all of them to all servers around the world.
|
||||
|
||||
So wildcard domains are a great help, but how to use them ?
|
||||
They can be defined in the N-line for a given connection,
|
||||
in place of port number you write a magic number called
|
||||
wildcard count.
|
||||
|
||||
Wildcard count tells you HOW MANY PARTS of your server's name
|
||||
should be replaced by a wildcard. For example, your server's
|
||||
name is "tolsun.oulu.fi" and you want to represent it as
|
||||
"*.oulu.fi" to "nic.funet.fi". In this case the wildcard count
|
||||
is 1, because only one word (tolsun) is replaced by a wildcard.
|
||||
If the wildcard count would be 2, then the wildcard domain would
|
||||
be "*.fi". Note that with wildcard name "*.fi" you could NOT
|
||||
connect to "nic.funet.fi", because that would result in a server
|
||||
name COLLISION (*.fi matches nic.funet.fi).
|
||||
|
||||
I advice you to not to use wildcard servers before you know
|
||||
for sure how they are used, they are mostly beneficial for
|
||||
backbones of countries and other large areas with common domain.
|
||||
|
||||
|
||||
2. MACHINE INFORMATION
|
||||
|
||||
IRC needs to know a few things about your UNIX site, and the "M" command
|
||||
specifies this information for IRC. The fomat of this command is:
|
||||
|
||||
M:<YOUR Host NAME>:xxx:<Geographic Location>:<Internet Port>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "M" specifies a Machine description line
|
||||
|
||||
Field 2: The name of YOUR host adding any Internet DOMAINNAME that
|
||||
might also be present.
|
||||
|
||||
Field 3: -- NOT USED --: Set to Value NULL (No spaces at ALL!).
|
||||
|
||||
Field 4: Geographic Location is used to say WHERE YOUR SEVRER is,
|
||||
and gives people in other parts of the world a good
|
||||
idea of where you are! If your server is in the USA, it is
|
||||
usually best to say: <CITY> <STATE>, USA. Like for Denver
|
||||
I say: "Denver Colorado, USA". Finnish sites (like
|
||||
tolsun.oulu.fi generally say something like "Oulu, Finland".
|
||||
|
||||
Field 5: The Internet port your server will use. Should be set to
|
||||
the same value as in the config.h file.
|
||||
|
||||
|
||||
Example:
|
||||
M:tolsun.oulu.fi::Oulu, Finland:6667
|
||||
|
||||
This line reads: My Host's name is "tolsun.oulu.fi" and
|
||||
my site is located in "Oulu, Finland". My ircd will use
|
||||
Internet Port 6667.
|
||||
|
||||
|
||||
M:orion.cair.du.edu::Denver Colorado, USA:6667
|
||||
|
||||
This line reads: My Hosts name is "orion.cair.du.edu"
|
||||
and my site is located in "Denver Colorado, USA".
|
||||
I have defined Internet Port number "6667" to be used
|
||||
as my IRCD Socket Port.
|
||||
|
||||
|
||||
3. CLIENT CONNECTIONS - How to let clients connect to your IRCD.
|
||||
|
||||
A client is a program that connects to the ircd daemon (ircd). Currently
|
||||
there are clients written in C and in GNU Emacs Lisp. The "irc"
|
||||
program is the C client. Each person that talks via IRC is running
|
||||
their own client.
|
||||
|
||||
The irc.conf files contains entries that specify which clients are allowed
|
||||
to connect to your irc daemon. Obviously you want to allow your cwn
|
||||
machine's clients to connect. You may want to allow clients from
|
||||
other sites to connect. These remote clients will use your server
|
||||
as a connection point. All messages sent by these clients will pass
|
||||
through your machine.
|
||||
|
||||
The format of this entry in the conf file is:
|
||||
|
||||
I:<TARGET Host Addr>:<Password>:<TARGET Hosts NAME>:<Internet Port>
|
||||
Field:1 2 3 4 5
|
||||
|
||||
|
||||
For example, if you were installing IRC on tolsun.oulu.fi and you wanted
|
||||
to allow examples sake let us assume you were making this file for
|
||||
tolsun and you wanted to let your own clients to connect to your
|
||||
server, you would add this entry to the file:
|
||||
|
||||
I:128.214.5.6::tolsun.oulu.fi
|
||||
or
|
||||
I:tolsun.oulu.fi::tolsun.oulu.fi
|
||||
|
||||
If you wanted to let remote clients connect, you could add the
|
||||
following lines:
|
||||
|
||||
I:*.du.edu::*.du.edu
|
||||
|
||||
Allow any clients from machines whose names end in "du.edu" to connect
|
||||
with no password.
|
||||
|
||||
I:128.214.6.100::nic.funet.fi
|
||||
|
||||
Allow clients from a machine with that IP number and the name
|
||||
nic.funet.fi to connect.
|
||||
|
||||
I:*.tut.fi:secret:*.tut.fi
|
||||
|
||||
Allow clients from machines matching *.tut.fi to connect
|
||||
with the password 'secret'.
|
||||
|
||||
I:*::*
|
||||
|
||||
Allow anyone from anywhere to connect your server.
|
||||
This is the easiest way, but it also allows people to for example
|
||||
dump files to your server, or connect 1000 (or how many open
|
||||
sockets per process your OS allows) clients to your machine
|
||||
and take your network ports. Of course the same things can be
|
||||
done by simply telnetting to your machine's SMTP port (for example).
|
||||
|
||||
NEW!!!
|
||||
As of the 2.7.2d version of the server, the server is able to accept
|
||||
connections on multiple ports. I-lines are required for each P-line
|
||||
to allow connections to be accepted. For unix sockets, this means
|
||||
either adding I:/path/port::/path/port or some variation (wildcards
|
||||
are recognised here). For internet ports, there must be an I-line
|
||||
which allows the host access as normal, but the port field of the
|
||||
I-line must match that of the port of the socket accepting the
|
||||
connectiion. A port number of 0 is a wildcard (matches all ports).
|
||||
|
||||
4. DEFAULT HOSTS (for local clients)
|
||||
|
||||
This defines the default connection for the irc client. If you are
|
||||
running an ircd server on the same machine, you will want to define
|
||||
this command to connect to your own host. If your site is not running
|
||||
a server then this command should contain the TARGET host's connection
|
||||
information and password (if any). The format for this command is:
|
||||
|
||||
U:<TARGET Host addr>:<Password>:<TARGET Host NAME>:<Internet Port>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
|
||||
For example:
|
||||
|
||||
U:tolsun.oulu.fi::tolsun.oulu.fi:6667
|
||||
U:128.214.5.6::tolsun.oulu.fi:6667
|
||||
U:tolsun.oulu.fi::tolsun.oulu.fi
|
||||
|
||||
If the port number is omitted, irc will default to using 6667.
|
||||
|
||||
5. OPERATOR Privileges: How to become the IRC administrator on your site
|
||||
|
||||
To become an IRC Administrator, IRC must know who is authorized to become
|
||||
an operator and what their "Nickname" and "Password" is. To add this
|
||||
information, EDIT your "irc.conf" file and add the following command
|
||||
line to it:
|
||||
|
||||
O:<TARGET Host NAME>:<password>:<nickname>:<port>:<class>
|
||||
Field: 1 2 3 4 5 6
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: Speficies Operator record. If you use capital letter ('O')
|
||||
in it, it specifies a global operator. Small letter ('o')
|
||||
specifies a local operator. Local operator has basically the
|
||||
same rights except global operator with some restrictions.
|
||||
|
||||
Field 2: Tells IRC which host you have the privileges FROM. This
|
||||
means that you should be logged into this host when you
|
||||
ask for the priviliges. If you specify "tolsun.oulu.fi"
|
||||
then IRC will expect your CLIENT to be connected at
|
||||
"tolsun.oulu.fi" - when you ask for OPERATOR privileges
|
||||
from "tolsun.oulu.fi". You cannot be logged in at any
|
||||
other host and be able to use your OPERATOR privileges
|
||||
at tolsun, only when you are connected at TOLSUN will this
|
||||
work - this is a safeguard against unauthorized sites.
|
||||
|
||||
|
||||
Field 3: If your AUTHORIZATION Password - this is the password that
|
||||
let's IRC know you are who you say you are! Never tell anyone
|
||||
your password and always keep the "irc.conf" file protected
|
||||
from all of the other users.
|
||||
|
||||
Field 4: The Nickname you usually go by - but you can make this what
|
||||
you want. It is better to make this a NICKNAME that no one
|
||||
else knows, but anything will do. I usually use my own
|
||||
loginname.
|
||||
|
||||
Field 5: Unused.
|
||||
|
||||
Field 6: The class field should refer to an existing class (preferably
|
||||
having a lower number than that for the relevant I-line) and
|
||||
determines the maximum number of simultaneous uses of the
|
||||
O-line allowable through the max. links field in the Y-line.
|
||||
|
||||
Example:
|
||||
O:orion.cair.du.edu:pyunxc:Jeff
|
||||
|
||||
There is an OPERATOR at "orion.cair.du.edu" that can get
|
||||
Operator priviliges if he specifies a password of "pyunxc"
|
||||
and uses a NICKNAME of "Jeff".
|
||||
|
||||
|
||||
|
||||
6. ADMINISTRATIVE INFORMATION
|
||||
|
||||
The "A" command is used for administrative information about a site.
|
||||
The e-mail address of the person running the server should be included
|
||||
here in case problems arise.
|
||||
|
||||
|
||||
A:<Your Name/Location>:<Your Electronic Mailing Addr>:<other>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "A" specifies an Admin record.
|
||||
|
||||
|
||||
Field 2: Use this field to say tell your FULL NAME and where in the
|
||||
world your machine is. Be sure to add your City,
|
||||
State/Province and Country.
|
||||
|
||||
|
||||
Field 3: Use this field to specify your Electronic Mailing Address
|
||||
preferably your Internet Mailing Address. If you have
|
||||
a UUCP or ARAPnet address - please add that as well. Be
|
||||
sure to add any extra DOMAIN information that is needed,
|
||||
for example "mail jtrim@orion" probably won't work as a
|
||||
mail address to me if you happen to be in Alaska. But
|
||||
"mail jtrim@orion.cair.du.edu" would work because you
|
||||
know that "orion" is part of the DOMAIN "cair.du.edu".
|
||||
So be sure to add your DOMAINNAMES to your mailing addresses.
|
||||
|
||||
Field 4: Is really an OTHER field - you can add what you want here,
|
||||
|
||||
|
||||
Examples (the line is just one line in the confuration file, here it
|
||||
is cut into two lines to make it clearer to read):
|
||||
|
||||
A:Jeff Trim - Denver Colorado, USA:INET jtrim@orion.cair.du.edu UUCP {hao,
|
||||
isis}!udenva!jtrim:Terve! Heippa! Have you said hello in Finnish today?;)
|
||||
|
||||
Would look like this when printed out with the /admin command:
|
||||
|
||||
Jeff Trim - Denver Colorado, USA
|
||||
INET jtrim@orion.cair.du.edu UUCP {hao,isis}!udenva!jtrim
|
||||
Terve! Hei! Heippa! Have you said hello in Finnish today? ;)
|
||||
|
||||
|
||||
Note that the A record cannot be split across multiple lines; it will
|
||||
typically be longer than 80 characters and will therefore wrap around
|
||||
the screen.
|
||||
|
||||
|
||||
7. REMOVING A USER FROM IRC Remove an errant user from IRC on your site.
|
||||
|
||||
Obviously it is hoped that you wouldn't have to use this command.
|
||||
Unfortunately sometimes a user can become unmanageable and this is your
|
||||
only recourse - the KILL USER command. THIS COMMAND ONLY AFFECTS YOUR
|
||||
SERVER - If this user can connect to another SERVER somewhere else in
|
||||
the IRC-Network then you would have to talk to the administrator on that
|
||||
site to disable his access from that IRCD Server as well.
|
||||
|
||||
The format of this command is:
|
||||
|
||||
K:<Host Name>:<time interval(s)>:<User>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 1: "K" tells the IRCD that you are making a KILL USER command
|
||||
entry.
|
||||
|
||||
Field 2: In this field you specify the Hostname that the user is
|
||||
connecting from. If you wanted to REMOVE connects
|
||||
to IRC from "orion.cair.du.edu" then you would want to enter
|
||||
"orion.cair.du.edu". If you want to REMOVE ALL HOSTS
|
||||
access you can use '*' (Wild Card notation) and no matter
|
||||
what host the USERNAME (specified in Field 4) connects from
|
||||
s/he will be denied access. Removing all hosts isn't
|
||||
very smart thing to do though, why would you run an ircd
|
||||
if you allow nobody to connect to it anyways ?
|
||||
|
||||
Field 3: Either leave this field empty (no spaces), then then lines
|
||||
is active continuously for the specified user/host machine.
|
||||
You may also specify intervals during the line should be
|
||||
active, see examples above.
|
||||
|
||||
Field 4: The USERNAME of the user you want removed from IRC. For
|
||||
example 'root'.
|
||||
|
||||
|
||||
Some Examples:
|
||||
K:orion.cair.du.edu::jtrim
|
||||
|
||||
If user 'jtrim' connects to IRC from host "orion.cair.du.edu"
|
||||
then IMMEDIATELY REMOVE HIM from my IRCD.
|
||||
|
||||
K:*.cair.du.edu::root
|
||||
|
||||
If user 'root' connects to IRC from any host that has the
|
||||
suffix "cair.du.edu" - then IMMEDIATELY REMOVE THEM from
|
||||
my IRCD.
|
||||
|
||||
K:*::vijay
|
||||
|
||||
This line reads "I don't care WHAT HOST user 'vijay' is on,
|
||||
I will NEVER allow username 'vijay' to login to my IRCD.
|
||||
|
||||
K:*.oulu.fi:0800-1200,1400-1900:*
|
||||
|
||||
This disallows all users from hosts with enddomain 'oulu.fi'
|
||||
access to your server between 8 and 12am, 2 and 7pm.
|
||||
Users get kicked off if they're already signed on when the
|
||||
line becomes active (they'll get a warning 5 minutes ago).
|
||||
|
||||
8. Disallowing SERVERS in your irc net.
|
||||
|
||||
In some cases people run into difficulties in net administration.
|
||||
For one reason or another you do not want a certain server to be
|
||||
in your net (for example because of the security holes it opens
|
||||
for every server if it's not secured carefully). In that case
|
||||
you should use Q-lines in your server. When you specify a server
|
||||
name in Q-line, everytime some server link tries to introduce you
|
||||
a server (remember, all server names are broadcast around the net),
|
||||
that name is checked if it matches the Q-lines in your server.
|
||||
If it matches, then your server disconnects the link. Note that
|
||||
just placing Q-lines to your server probably results in your server
|
||||
being left alone, unless other servers have agreed to have the
|
||||
same Q-line in their ircd configuration files as well.
|
||||
|
||||
Example:
|
||||
Q::of the security holes:foo.bar.baz
|
||||
|
||||
This command excludes a server named "foo.bar.baz", the reason
|
||||
is given to be security holes (you should give a reason, it is
|
||||
polite). The first field is unused, so leave it empty.
|
||||
|
||||
9. Connection Classes.
|
||||
|
||||
To enable more efficient use of MAXIMUM_LINKS, connection classes
|
||||
were implemented. To give a connection a class, add another field
|
||||
(a sixth) to the C/N lines for a particular server.
|
||||
Each line for a server should have the same number as the sixth
|
||||
field. If it is absent, the server deaults it to 0, using the
|
||||
defaults from the config.h file. To define a connection class,
|
||||
you need to include a Y: line in the irc.conf file. This enables
|
||||
you to define the ping frequency, connection frequency and maximum
|
||||
number of links that class should have. Currently, the Y: line MUST
|
||||
appear in the irc.conf file BEFORE it is used in any other way.
|
||||
|
||||
The format for the line is:
|
||||
|
||||
Y:<CLASS>:<PING FREQUENCY>:<CONNECT FREQUENCY>:<MAX LINKS>:<SENDQ>
|
||||
Field: 1 2 3 4 5 6
|
||||
|
||||
Field 2: This is the class number which gains the following attributes
|
||||
and should match that which is on the end of the C/N line.
|
||||
|
||||
Field 3: This field defines how long the server will let the connection
|
||||
remain "silent" before sending a PING message to make sure it is still
|
||||
alive. Unless you are sure of what you are doing, use the default value
|
||||
which is in your config.h file.
|
||||
|
||||
Field 4: By changing this number, you change how often your server
|
||||
checks to see if it can connect to this server. If you want to check
|
||||
very occasionally, use a large value, but if it is an important
|
||||
connection, you might want a smaller value so that you connect to it
|
||||
as soon as possible.
|
||||
|
||||
Field 5: This field defines the maximum number of links this class
|
||||
will allow from automatic connections. Using /CONNECT overrides this
|
||||
feature.
|
||||
|
||||
Field 6: This field defines the 'sendq' value for this class. If this
|
||||
field is not present, the default (from config.h) is assigned.
|
||||
|
||||
NOTE: leaving any of the fields out means their value is 0 (ZERO)!!
|
||||
|
||||
example:
|
||||
|
||||
Y:23:120:300:5
|
||||
|
||||
define class 23 to allow 5 auto-connections, which are checked every
|
||||
300 seconds. The connection is allowed to remain silent for 120
|
||||
seconds before a PING is sent. NOTE: fields 3 & 4 are in seconds.
|
||||
|
||||
You may also give I lines a class (again the sixth field to define
|
||||
which class). This is only usefull (currently) for redefining the
|
||||
ping frequency. It can also be useful as a diagnostic to see how
|
||||
much each I line is used when combined with the TRACE output.
|
||||
|
||||
Another feature of connection class is the ability to do automatic
|
||||
routing by using the class as a 'priority'. If you are connected
|
||||
to a server which has a class lower than one of the servers that is
|
||||
'behind' it, the server will disconnect the lower class one and
|
||||
schedule a 'new' connection for the higher class server.
|
||||
|
||||
10. Leaf Connections.
|
||||
|
||||
To stop servers which should only act as leaves from hubs becoming
|
||||
hubs accidently, the L line was introduced so that hubs can be aware
|
||||
of which servers should and shouldnt be treated as leaves. A leaf
|
||||
server is supposed to remain a node for the entirity of its life
|
||||
whilst connected to the IRC server network. It is quite easy, however
|
||||
for a leaf server to be incorrectly setup and create problems by
|
||||
becoming a node of 2 or more servers, ending its life as a leaf. The
|
||||
L line enables the administrator of an IRC 'Hub server' to 'stop' a
|
||||
server which is meant to act as a leaf trying to make itself a hub.
|
||||
If, for example, the leaf server connects to another server which doesnt
|
||||
have an L-line for it, the one which does will drop the connection, once
|
||||
again making the server a leaf.
|
||||
|
||||
L:<SERVER MASK>:*:<SERVER NAME>:<MAX DEPTH>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Field 2 is a mask of which servers the leaf-like attributes are used on
|
||||
when the server receives SERVER messages. The wildcards * and ? may be
|
||||
used within this field for matching purposes. If this field is empty,
|
||||
it acts the same as if it were a single * (ie matches everything).
|
||||
|
||||
Field 4 is the the server connectted to you that for which you want to
|
||||
enforce leaf-like attributes upon.
|
||||
|
||||
Field 5 is the maximum depth allowed on that leaf and if not specified,
|
||||
a value of 1 is assumed. The depth is checked each time a SERVER message
|
||||
is received by the server, the hops to the server being the field checked
|
||||
against this max depth and if greater, the connection to the server that
|
||||
made its leaf too deep has its connection dropped.
|
||||
For the L-line to come into effect, both fields, 2 and 4, must match up
|
||||
with the new server being introduced and the server which is responsible
|
||||
for introducing this new server.
|
||||
|
||||
11. Service Connections (Not yet implemented)
|
||||
|
||||
Introduction.
|
||||
The Service is a special kind of IRC client. It does not have the full
|
||||
abilities of a normal user but can behave in a more active manner than
|
||||
a normal client. Services as they stand now are not fully implemented.
|
||||
The following line can be added to your ircd.conf file to enable a
|
||||
service:
|
||||
|
||||
S:<TARGET Host Mask>:<password>:<service_name>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
|
||||
Field 2:
|
||||
The host mask should be set to match the hosts(s) from which the
|
||||
service will be connecting from. This may be either an IP# or full
|
||||
name (prefered).
|
||||
|
||||
Field 3:
|
||||
This is the password which must be passed in the SERVICE command.
|
||||
|
||||
Field 4:
|
||||
The 'service name' is only used for the purpose of finding the
|
||||
right S-line from the ircd.conf file for password matching. The
|
||||
actual service name used is that set by NICK commands prior to
|
||||
SERVICE being sent.
|
||||
|
||||
To connect a service to your server, you must first create an S-line
|
||||
entry in your ircd.conf file and get your server to read this in (ie
|
||||
rehash or reboot). Once your server has updated itself, you can then
|
||||
attempt to register your connection as a service.
|
||||
Registering as a service is similar to registering as a normal user
|
||||
except that you must send NICK first and then SERVICE. The service
|
||||
command should look something like this:
|
||||
|
||||
SERVICE secretpassword referencename :Service information
|
||||
|
||||
A successfull registering of a service at the server will result in
|
||||
a RPL_YOURESERVICE (383) being sent back to you. Any other reply as
|
||||
a result of sending service indicates an error has occured.
|
||||
|
||||
A service is not a very useful sort of client, it cannot join channels
|
||||
or issue certain commands although most are available to it. Services,
|
||||
however, are not affected by flood control. It is therefore wise to
|
||||
oversee the use of S-lines with some care.
|
||||
|
||||
12. Port Connections
|
||||
|
||||
Introduction.
|
||||
The port line adds flexibility to the server's ability to accept
|
||||
connections. By use of this line in the ircd.conf file, it is easy
|
||||
to setup both Unix Domain ports for the server to accept connections
|
||||
on as well as extra internet ports.
|
||||
|
||||
P:<Internet IP# Mask>:<*>:<*>:<PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
or
|
||||
|
||||
P:<Directory>:<*>:<*>:<PORT>
|
||||
Field: 1 2 3 4 5
|
||||
|
||||
Explanation
|
||||
Internet Ports
|
||||
Field 1
|
||||
The internet IP mask defines where connections may come from and
|
||||
be accepted. The IP mask uses either *'s or 0's as wildcards. The
|
||||
following two lines are the same:
|
||||
|
||||
P:128.2.*:::6664
|
||||
P:128.2.0.0:::6664
|
||||
|
||||
The incoming isnt matched against the mask, rather the ip# string
|
||||
is decoded and compared segment by segment. Thus
|
||||
P:128.2*.1.2:::6664
|
||||
will not match 128.20.1.2.
|
||||
|
||||
Field 5
|
||||
The port number field tells the server which port number it should
|
||||
listen on for incoming connections.
|
||||
|
||||
Unix Socket Ports.
|
||||
Field 1
|
||||
The path set in field 1 should be the directory name in which to
|
||||
create the unix socket for later listening to. The server will
|
||||
attempt to create the directory before creating the unix socket.
|
||||
|
||||
Field 5
|
||||
The port field when used in combination with a pathname in a P-line
|
||||
is the filename created in the directory set in Field 1.
|
||||
|
||||
Example:
|
||||
P:/tmp/.ircd:::6667
|
||||
|
||||
Creates a unix socket in the /tmp/.ircd directory called "6667".
|
||||
The unix socket (file) must be a numerical.
|
||||
|
||||
13. Hub Connections
|
||||
|
||||
In direct contrast to L-lines, the server also implements H-lines to
|
||||
determine which servers may act as a hub and what they may 'hub for'.
|
||||
If a server is only going to supply its own name (ie act as a solitary
|
||||
leaf) then no H-line is required for, else a H-line must be added as
|
||||
follows:
|
||||
|
||||
H:<SERVER MASK>:*:<SERVER NAME>
|
||||
Field: 1 2 3 4
|
||||
|
||||
Explanation:
|
||||
Field 2
|
||||
All servers that are allowed via this H-line must match the mask
|
||||
given in this field.
|
||||
|
||||
Field 4
|
||||
This field is used to match exactly against a server name, wildcards
|
||||
being treated as literal characters.
|
||||
|
||||
Examples:
|
||||
|
||||
H:*.edu:*:*.bu.edu
|
||||
|
||||
Allows a server named "*.bu.edu" to introduce only servers that
|
||||
match the "*.edu" name mask.
|
||||
|
||||
H:*:*:eff.org
|
||||
|
||||
Allow "eff.org" to introduce (and act as a hub for) any server.
|
||||
|
||||
Note: It is possible to have and use multiple H-lines (or L-lines) for
|
||||
the one server. eg:
|
||||
|
||||
H:*.edu:*:*.bu.edu
|
||||
H:*.au:*:*.bu.edu
|
||||
|
||||
is allowed as is
|
||||
|
||||
L:*.edu:*:*.au
|
||||
L:*.com:*:*.au
|
||||
|
||||
|
||||
Appendix A: Difference between IP addresses and hostnames
|
||||
|
||||
|
||||
There are 2 different types of INTERNET addresses, NAME addresses and
|
||||
NUMERIC addresses. NAME addresses look like ENGLISH words (and indeed
|
||||
they are ENGLISH words that refer to a given host). A NAME address looks
|
||||
like "tolsun.oulu.fi" - and that particular address refers to the machine
|
||||
named TOLSUN in Finland. It is a UNIQUE address because no other machine
|
||||
in the world has its NAME address the same as "tolsun.oulu.fi". Anytime
|
||||
you say "telnet tolsun.oulu.fi" - you would always connect to TOLSUN in
|
||||
Finland. NUMERIC addresses refer to those addresses that are made up of
|
||||
NUMBERS for example "128.214.5.6" is the NUMERIC address for TOLSUN. This
|
||||
address is also UNIQUE in that no other machine in the world will be use
|
||||
those NUMERIC numbers. The NUMERIC address is usually more reliable than
|
||||
the NAME address because not all sites can recognize and translate the
|
||||
NAME address into it's numeric counterpart. NUMERIC always seems to work
|
||||
best, but use a NAME address when you can because it is easier to tell
|
||||
what host you are connected to.
|
||||
|
||||
|
||||
Every Unix machine has a file called "/etc/hosts" on it. This file
|
||||
contains NAME and NUMERIC addresses. When you supply IRC with a NAME
|
||||
address it will at first try to find it in /etc/hosts, and then (if it's
|
||||
really smart), use the local Domain Name Server (DNS) to find the NUMERIC
|
||||
address for the host you want to connect to. Thus if you plan to use NAME
|
||||
addresses keep in mind that on SOME sites the entry for the TARGET machine
|
||||
must be found in /etc/hosts or the NAME address will fail. A typical
|
||||
entry in /etc/hosts looks like this:
|
||||
|
||||
130.253.1.15 orion.cair.du.edu orion.du.edu orion # BSD 4.3
|
||||
|
||||
This particular example is the Host ORION at the University of Denver.
|
||||
Notice that on the far left is the NUMERIC Address for orion. The
|
||||
next few ENGLISH words are the NAME addresses that can be used for orion,
|
||||
"orion.cair.du.edu", "orion.du.edu", "orion". ALL of these NAME addresses
|
||||
will return the NUMERIC address "130.253.1.15" which IRC will use to
|
||||
connect to the TARGET UNIX. (when I say TARGET UNIX I am refering to the
|
||||
UNIX you want to connect to for IRC). Any futher questions about
|
||||
/etc/hosts should be directed to "man hosts".
|
||||
|
||||
|
||||
Appendix B: Enabling Summon Messages
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| E N A B L I N G / S U M M O N M E S S A G E S |
|
||||
+-----------------------------------------------------------------------+
|
||||
|
||||
*NOTE* You must have ROOT or special access to the GROUP tty ('/dev')
|
||||
to do this. If you want to allow users around the world to summon
|
||||
users at your site to irc, then you should make sure that summon works.
|
||||
|
||||
The "IRCD" program needs access to the GROUP of '/dev'. This
|
||||
directory is where user TTY's are stored (as UNIX treats each Terminal
|
||||
as a FILE!) IRCD needs GROUP ACCESS to /dev so that users can be
|
||||
SUMMONED to the program by others users that are *in* the program.
|
||||
This allows people from other Universities around the world to SUMMON
|
||||
your users to IRC so that they can chat with them. Berkeley, SUN, HP-UX
|
||||
and most of the newer versions of UNIX check to see if a USER is
|
||||
accepting MESSAGES via the GROUP access rights on their TTY listing
|
||||
in the /dev directory. For example an entry in '/dev' looks like this:
|
||||
|
||||
(Unix Path on BSD 4.3 UNIX is: /dev/ttyp0)
|
||||
|
||||
crw------- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
|
||||
|
||||
You will note that 'jtrim' OWNS this terminal and can READ/WRITE to this
|
||||
terminal as well (which makes sense because I am ENTERING DATA and
|
||||
RECEIVEING DATA back from the UNIX). I logged into this particular
|
||||
UNIX on "April 29th" at "10:35am" and my TTY is "ttyp0". But further
|
||||
of *note* is that I do not have my MESSAGES ON! (mesg n) -- This is
|
||||
how my terminal would look with MESSAGES ON (mesg y):
|
||||
|
||||
crw--w---- 1 jtrim 20, 0 Apr 29 10:35 ttyp0
|
||||
|
||||
With my MESSAGES ON (mesg y) I can receive TALK(1) requests, use the
|
||||
UNIX WRITE(1) command and other commands that allow users to talk
|
||||
to one another. In IRC this would also allow me to get IRC /SUMMON
|
||||
messages. To set up the "IRCD" program to work with /SUMMON type
|
||||
the following: (using ROOT or an account that has access to '/dev').
|
||||
|
||||
% chgrp tty ircd
|
||||
% chmod 6111 ircd
|
||||
|
||||
The above commands read: "Give IRCD access to GROUP tty (which is /dev)
|
||||
and then when ANYONE runs the IRCD allow SETUID and SETGID priviliges
|
||||
so that they can use the /SUMMON command.
|
||||
@@ -1,47 +0,0 @@
|
||||
pub rsa4096 2015-07-02 [SC] [expires: 2025-06-29]
|
||||
1D2D2B03A0B68ED11D68A24BA7A21B0A108FF4A9
|
||||
uid UnrealIRCd releases (for verification of software downloads only!) <releases@unrealircd.org>
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFWVOFYBEACsWFWM25VDaGXq22GSTJo1O53bgAMCZsqj9VKDriUmj7uvozlp
|
||||
BGHgYFVM4ZT1FUAsWedeIP2aLLkYGmH4odVaAk7IeUa7HfpE45/F6+End6bCpYGe
|
||||
1UdVQM/Bu3VHoUtVvtIFg788JwbplroapA/D0pi/EAN8WYnN9etgLM2lvzwbjBz9
|
||||
xTOefwvgRsKbCH63VW7NCyquEcdEJxnMHB7JZUEuzrOUvhAiIkwKw8wbcn36zX0i
|
||||
wcAFtVO5uVTA/Tdu6nWsZvqVc6R1E3usJzWSwbmoUtPUM5Mk9I9gL73EsqEbgs5N
|
||||
trT00r75RcfiThNEP8NtDtB8AFum6OCSg/+8bdJmKcWVKpuB+lUvP0d4UAqm5vmH
|
||||
/KQh/nyHXKvAvhWqHizozP1WGevpxLFHMjm/+1T167Iil/3UcUyn9qd0CuYSszJw
|
||||
y5Vp6iJHkVo8qxI89rkzSDRi+ppLCBTwuN01ducftDxvIQMVrphdKZLPGzQrltkh
|
||||
lIN4XNS6cOOsrbbk5+Kc2xih6qt+DyiRHaNFQnoMdRVeIrmf4u4ClMcHlzELV8gF
|
||||
D+s0BbVqhVwAhbKMfKaVmvVlj8bSET0z2s0vhZODwlgANpDBLNsIU6leiYRAzub5
|
||||
WY5Hz1m7P8ZXSMPh4/vGh1kg3E9IRKLZDZ65gEYr8nNCzbAYmDQ3IkplIwARAQAB
|
||||
tFxVbnJlYWxJUkNkIHJlbGVhc2VzIChmb3IgdmVyaWZpY2F0aW9uIG9mIHNvZnR3
|
||||
YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVhbGlyY2Qub3JnPokC
|
||||
PgQTAQIAKAUCVZU4VgIbAwUJEswDAAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA
|
||||
CgkQp6IbChCP9KlFzQ/+ObuBgCtXvLcbpq7C2usHxgtEB1rV9khLGugJXevjMaf3
|
||||
+vo4d5cd5go665po8oqDnSUfq+8LPDj/nnroKQcS5Kb4KdHz6rn+53rHWtw6PPGN
|
||||
KswFS05Vy2AkYg4nVXvrGm0oV173qOms2REoStP0mEm7F7ZTJ6k1qgmZ8tcFgfMm
|
||||
fqEl94O5zDWycaJx7K0h3n+xUyhh+lT9Zl3duzVzCc+YI+dD6UOIXBF9TF9fIb8m
|
||||
300MBLwTTHq64nGsZbhfzCHNHAO6hTy5XmE+d1g4R87rKim6lP0V1LTbvhOhYhZg
|
||||
0JrVOr9dhHY4tw1xglz++nMM24t2O9zoRoZjDMHBzzBm3gJq3G160kxVZKKcVaQd
|
||||
nfYvPOBNtyEyaIIJD8vs2Z9jiJLjpoz0LhnE2TmE4M6YqBsSWfFuPrHE+PJQyEQg
|
||||
2zEoTRCSFSLaq+5kl3vKM/cblwkQeKkNe8u6bDNk7bEPUCQstyOqcvoTWE2gs3f2
|
||||
n7wI7BzW3uX5YUp1CcdPig1XxveI4XaKKrhRacvGvvNHdXw1scj1K0SCXvy4EPpf
|
||||
dLthTC6BHwO2P56wlxK0MRL/GD72ttBCcsyLWYdL9OIT6Lx4bZVhvEjKDapWAL04
|
||||
X1mXMHUK1iO4lunbqP3lu6F8qsuI/B2sIiJK7aSjv4bjVRw/jcESrhmCvnN3B3mI
|
||||
RgQQEQIABgUCVZU9NQAKCRBpsoj7n/A5N4E2AJ4i5z98+mA8Ug9utdslGvHFRq+s
|
||||
PgCeILJ7/dJFYZFz1YpaNTbRCHIesaWIXgQQEQgABgUCVZU9ZwAKCRBuZ21Ff+GZ
|
||||
pueXAP9bJ1hPWa3ITIoapW9eTT1eNv+17KqcclwZzxCopbUkFAD+NptTuXpeivM+
|
||||
USWsQJFpFlLdDckcv8QzLQwgzZ8TXtKJAhwEEAEIAAYFAlg796cACgkQ3pO4tH50
|
||||
XrMyWQ/+NJyhO5yibAhN4RgCJ+qFdp9Llm+SQGFjVtw8L7nv3M0Us8xspmVlX7TZ
|
||||
/OK6AhUyaqAmg3ZXruaetrBVIAlP675cXJ1NIPfyT+PvMUbupvqBhyPZKqdnh2WT
|
||||
ZMYdQrvw503h+BlyjGeAWd34tLhtiM1A69tntFu2A7bKhkoxE7KoyCjKmLgUb30M
|
||||
r5guxb6DCUXK8m5ooHl58kLtJrTpW9l3YYXpKe/POYPIK6ULZN7TChtFOTJ+ebx1
|
||||
2LaQGGdRKaCSM1OX7mfvBG8GtljQcGoP+f5TmvRbCGGfiR9r6MdgG6LYTuYf7pR7
|
||||
NBwxveqwJV4iOmd9b+doIra5tRX0TqEKdEqpVHhm4UTZlHVyIpg97Lc/7WiWS1Z5
|
||||
UIhT4YxlztPUvWmCXlleNEqBYK86OsVFqryHDVKtPbH65k/xKfu8w/hHkv7TQ23r
|
||||
eoMs1uBlaUWe3orgUOr0tnFLXz809SAwC9sxQq9TWTm50NqiaQvBVInSUssFYPkG
|
||||
qBljIXtdUzFGBn3sTpFRY6p2yzIo54EQmQAvMQPEJkQ8JQJ47au82DxFUBZYKci5
|
||||
lsJfRueGnn5A36eUZdkhZ6Dm61M3YldYcpRa4Xfi0AWbg5yW/uUipc36Ey+vwWyl
|
||||
x+1IZgjnIIMsyDLuq2tm5p1tiJK2N9L0rxQb/DIK7j8+ZvmlFZQ=
|
||||
=foLZ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
+382
@@ -0,0 +1,382 @@
|
||||
/************************************************************************
|
||||
* IRC - Internet Relay Chat, doc/MANUAL
|
||||
* Copyright (C) 1990, Karl Kleinpaste
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
Date: 04 Apr 1989
|
||||
Author: Karl Kleinpaste
|
||||
karl@cis.ohio-state.edu
|
||||
|
||||
Last modification: 15 May 1992
|
||||
by Mauri Haikola
|
||||
mjh@stekt.oulu.fi
|
||||
|
||||
|
||||
INTERNET RELAY CHAT
|
||||
a real-time conversational system
|
||||
|
||||
|
||||
* 1: Irc - replacement for talk(1)
|
||||
|
||||
Irc is a functional replacement for and improvement to talk(1). Talk
|
||||
is an old, primitive, atrocious, minimalist sort of keyboard/screen
|
||||
conversation tool, using a grotesque, machine-dependent protocol.
|
||||
Irc does everything talk does, but with a better protocol, allowing
|
||||
more than 2 users to talk at once, with access across the aggregate
|
||||
Internet, and providing a whole raft of other useful features.
|
||||
|
||||
* 2: Entering Internet Relay Chat
|
||||
|
||||
There are two ways to enter Internet Relay Chat. If you are using the
|
||||
emacs lisp client, you need to load the client into your Emacs session
|
||||
and then M-x irc. If you are using the C client (easier for beginners)
|
||||
then type (usually) irc. If you wish to be known by a nickname which
|
||||
is not one's login name, type `irc chosen-nickname' instead.
|
||||
|
||||
* 3: How much can be seen from here
|
||||
|
||||
The universe - seriously.
|
||||
|
||||
This is most formally called Internet Relay Chat. Server hosts are
|
||||
connected via a tree structure. The various servers relay control and
|
||||
message data among themselves to advertise the existence of other
|
||||
servers, users, and the channels and other resources being occupied by
|
||||
those users.
|
||||
|
||||
* 4: Structure
|
||||
|
||||
There is quite a lot of structure to the operation of irc, as
|
||||
compared to crufty old talk(1). Since so little could be done with
|
||||
talk(1), it needed little structure. But to keep track of people
|
||||
spread literally around the world (the system was written by Jarkko
|
||||
Oikarinen of Finland, usually seen on the system as `Wiz'), the
|
||||
structure is useful so that one can speak to exactly those people with
|
||||
whom one wishes to speak.
|
||||
|
||||
** 4.1: Nicknames
|
||||
|
||||
All users of irc are known to the system by a `nickname.' By
|
||||
default, one's nickname is one's login name. Nickname clashes are not
|
||||
allowed; this is enforced by the servers. If one's intended nickname
|
||||
clashes with someone else as one enters chat, one will not be able to
|
||||
complete entry to irc until one changes one's nickname to something
|
||||
else.
|
||||
|
||||
** 4.2: Presence on a channel
|
||||
|
||||
Fundamental to the operation of irc is the concept of a channel. All
|
||||
users are `on a channel' while inside irc. One enters the `null
|
||||
channel' first. One cannot send any messages while not in any
|
||||
chatting channel unless one has set up a private conversation in some
|
||||
way. The number of channels is essentially unlimited - whatever will
|
||||
fit in a string of some ungodly length, that must start with a # sign.
|
||||
|
||||
** 4.3: Main modes of channels
|
||||
|
||||
Public
|
||||
|
||||
This is the default mode for a channel. When one is on a public
|
||||
channel, one can be seen by all other users (if one's own user mode
|
||||
permits this). Anyone can notice users on a public channel and join
|
||||
such a channel's conversation.
|
||||
|
||||
Private
|
||||
|
||||
This means that, although anyone can see that one is using chat, no
|
||||
one can tell what channel one is using unless one is already on that
|
||||
channel with oneself. Since the number of potential channels is in
|
||||
the billions, this is quite some security - all one gives away is the
|
||||
acknowledgement that one is using chat.
|
||||
|
||||
Secret
|
||||
|
||||
While one is on a secret channel, no one who is not on one's channel
|
||||
with oneself can even see that one is there. One's name does not show
|
||||
up in a list of active users. The only indication of one's presence
|
||||
is that, when entering chat, all new users are told that there are "N
|
||||
users on P servers." If one checks on all users and finds less than N
|
||||
of them, one knows that others are hiding on secret channels. But a
|
||||
secret channel user still cannot be found except by brute-force
|
||||
checking through all channels, a hopeless proposition in the face of
|
||||
the huge number of possible channel names. Security through obscurity
|
||||
finally means something.
|
||||
|
||||
Changing the mode
|
||||
|
||||
The mode of a channel (private, secret, invite-only, moderated,
|
||||
topic-limited, person-number-limited, no-messages-to-channel, ban
|
||||
someone from channel) is set by the channel operator, who is the
|
||||
first person to join a channel, or someone who has had channel
|
||||
operatorship bestowed on them by another channel operator.
|
||||
|
||||
|
||||
*** 4.4: Conversations not using channels
|
||||
|
||||
It is possible to conduct conversations with others without using the
|
||||
formalized channel structure. Doing so requires that two people set
|
||||
themselves up for private conversation using special commands; see
|
||||
User Commands below.
|
||||
|
||||
* 5: Screen/keyboard structure
|
||||
|
||||
Chat is a full-screen utility. It takes over the screen, with the
|
||||
bulk of activity happening in the top N-2 lines, a modeline (vaguely
|
||||
emacs-like) on the next to last line, and one's input being entered on
|
||||
the last line. A very good version of client is the IRC-II client,
|
||||
avaliable on anonymous ftp from various sites around the world.
|
||||
|
||||
** 5.1: Keyboard input
|
||||
|
||||
When typing commands at irc, one has a minimalist line-editing
|
||||
facility in an emacs style. That is, ^A moves the cursor to the
|
||||
beginning of the line, ^E goes to the end, ^D deletes the character
|
||||
under the cursor, ^K kills from the cursor to the end, and so on.
|
||||
|
||||
** 5.2: Screen activity
|
||||
|
||||
Almost everything happens in the upper bulk of the screen. This
|
||||
includes both messages from other users, as well as the output of the
|
||||
control commands.
|
||||
|
||||
Normal messages from other users appear with the originating nickname
|
||||
in <angle brackets>. Private messages arrive with the originating
|
||||
nickname in *asterisks*. Messages which one sends to everyone appear
|
||||
with a preceding "> " whereas messages which one sends privately to
|
||||
one other user appear with "-> *nickname*."
|
||||
|
||||
Other output (e.g., /who commands, invitations from other users to
|
||||
join channels, and so forth) appears interspersed with other activity
|
||||
on the screen.
|
||||
|
||||
* 6: Command structure
|
||||
|
||||
Ordinary text typed at irc is sent as one's messages to everyone else
|
||||
on the same channel, modulo personal choices for private messages and
|
||||
the like. Commands to irc itself all begin with a command character,
|
||||
which is initially `/' but may be changed to any other character
|
||||
desired.
|
||||
|
||||
Commands may in general be abbreviated to a unique prefix.
|
||||
|
||||
** 6.1: Leaving irc
|
||||
|
||||
The way to get out of irc is to enter the /signoff command. "/si" is
|
||||
sufficient. Also equivalent are "/exit," "/bye," and "/quit." A
|
||||
signoff command may include a comment which will be seen by everyone
|
||||
on the current channel of the person who left.
|
||||
|
||||
** 6.2: Getting help
|
||||
|
||||
Type "/help." Follow the instructions.
|
||||
|
||||
** 6.3: User commands
|
||||
|
||||
The most important commands supported by irc are:
|
||||
|
||||
help signoff who whois
|
||||
list topic join channel
|
||||
links msg invite ignore
|
||||
users stats nick away
|
||||
info clear query cmdch
|
||||
date mode
|
||||
|
||||
*** 6.3.1: help
|
||||
|
||||
Information on how to use the rest of the system is available via
|
||||
/help. The modeline says so as well.
|
||||
|
||||
*** 6.3.2: signoff {comment}
|
||||
|
||||
/signoff exits chat. Optional comment may be included; see above.
|
||||
|
||||
*** 6.3.3: who
|
||||
|
||||
/who returns information on who is using chat. /who without arguments
|
||||
prints info on all users that can be seen. Users of public channels
|
||||
show up with their channel identified. Users of private channels
|
||||
appear, but they are specified as being on a private, unspecified
|
||||
channel. Users of secret channels and users whose user mode is +i
|
||||
(invisible) do not appear at all.
|
||||
|
||||
Giving a channel name as an argument to /who returns only those users of the
|
||||
specified channel. This still doesn't show users of secret channel or
|
||||
invisible users one is actually on the same channel with them. Users
|
||||
of private channels are shown, if an exact channel name is given.
|
||||
|
||||
*** 6.3.4: whois
|
||||
|
||||
This returns information about individual users. Say "/whois
|
||||
nickname" to get information on the login name and host from which the
|
||||
nicknamed user comes.
|
||||
|
||||
*** 6.3.5: topic
|
||||
|
||||
Channels can be given off-the-cuff "topics." Saying "/topic some
|
||||
string of text" will associate that topic with the current channel.
|
||||
|
||||
*** 6.3.6: list
|
||||
|
||||
/list will give lists of active channels, the number of users of each,
|
||||
and the topics therewith associated. Again, secret channels do not
|
||||
appear and private channels only appear as Prv.
|
||||
|
||||
*** 6.3.7: join & channel
|
||||
|
||||
/join or /channel are the means to enter a channel. Give the channel
|
||||
name as an argument. If this is a secret or hidden channel, /who
|
||||
commands will show oneself and any other users of one's channel.
|
||||
|
||||
One's arrival on a channel is announced to the rest of the users
|
||||
already on that channel. Silent, anonymous "lurking" is not
|
||||
supported.
|
||||
|
||||
*** 6.3.8: links
|
||||
|
||||
/links lists the currently-active set of chat servers. Beware: this
|
||||
list can be quite long, and will undoubtedly get longer as chat gains
|
||||
wider use. As of 15 May, 1992, about 130 servers is typical.
|
||||
|
||||
*** 6.3.9: msg
|
||||
|
||||
A single message can be sent privately to a certain user with /msg.
|
||||
Type /msg nickname and the text to be sent. It will be sent privately
|
||||
to the indicated nickname.
|
||||
|
||||
*** 6.3.10: invite
|
||||
|
||||
If there is a user online to whom one wishes to speak, one may invite
|
||||
that user to join oneself on a certain channel. One types "/invite
|
||||
nickname" with an optional channel number. The receiving user gets a
|
||||
one-line message indicating the sender and the invitation. The
|
||||
receiving user is free to ignore the invitation, of course.
|
||||
|
||||
*** 6.3.11: ignore
|
||||
|
||||
If one wants to ignore messages sent by some other user or users, it
|
||||
may be done with /ignore command. One can ignore someone by their
|
||||
nickname, or by their user@host data. Wildcards may be used.
|
||||
|
||||
*** 6.3.12: users
|
||||
|
||||
/users will return a list of the users logged into one's system. With
|
||||
an optional hostname identifying a chat server host, the users logged
|
||||
into that system will be listed.
|
||||
|
||||
*** 6.3.13: stats
|
||||
|
||||
This command returns counts of various protocol operations of one's
|
||||
chat server. It is neither particularly useful nor interesting to
|
||||
users other than operators.
|
||||
|
||||
*** 6.3.14: nick
|
||||
|
||||
One can change nicknames by issuing "/nick new-nickname." All users
|
||||
on one's channel will be advised of the change. NOTE: If one enters
|
||||
chat with a nickname clash (e.g., one's login name is the same as
|
||||
someone else's, and the other user got there first), the system will
|
||||
not let one enter until one issues a /nick command with a unique
|
||||
nickname.
|
||||
|
||||
*** 6.3.15: away
|
||||
|
||||
Sometimes, one wishes to remain connected to the chat system, but one
|
||||
must be elsewhere for a while. One can issue an /away command with
|
||||
arbitrary text as argument, which will mark oneself as being away. If
|
||||
someone sends an away'd user a private message (via /msg or in a
|
||||
private session set up via /query; see below), the sender will get a
|
||||
message back from the server indicating the away-ness and the message
|
||||
which was set.
|
||||
|
||||
*** 6.3.16: info
|
||||
|
||||
/info returns information regarding the author and copyright of the
|
||||
chat system.
|
||||
|
||||
*** 6.3.17: clear
|
||||
|
||||
At times, one wishes that one's screen weren't so cluttered. /clear
|
||||
makes it so.
|
||||
|
||||
*** 6.3.18: query
|
||||
|
||||
This command is used to set up private communications `outside' the
|
||||
normal channel system.
|
||||
|
||||
When one enters "/query nickname," the indicated nickname is set up as
|
||||
the sole recipient of anything which one types thereafter. Thus, if
|
||||
user A executes "/query B" and user B executes "/query A," they have
|
||||
set up a private communication between themselves. Significantly, it
|
||||
remains possible for them to stay on their respective channels, which
|
||||
need not be the same, and listen to whatever conversation is going on
|
||||
around them as well, though they cannot respond to that ambient
|
||||
conversation without leaving the private conversation they have set up.
|
||||
|
||||
One leaves this private mode by issuing /query without arguments.
|
||||
|
||||
*** 6.3.19: cmdch
|
||||
|
||||
The `/' character may not be best for some people to use as their
|
||||
command character. It can be changed with "/cmdch <character>."
|
||||
|
||||
*** 6.3.20: mode
|
||||
|
||||
This command can be used for altering the various modes of a channel
|
||||
(see the explanation of channel modes above). /mode command can only
|
||||
be issued by channel operators.
|
||||
|
||||
** 6.4: Operator commands
|
||||
|
||||
The chat system administrators on each host have additional
|
||||
responsibilities and power over the configuration and operation of the
|
||||
servers. The commands to do so are delineated below.
|
||||
|
||||
*** 6.4.1: oper
|
||||
|
||||
Users who have the potential for operator privileges initially invoke
|
||||
those privileges by "/oper nickname password," where nickname is the
|
||||
nickname under which operation is intended, and password is the
|
||||
password known to the chat system for that nickname.
|
||||
|
||||
*** 6.4.2: kill
|
||||
|
||||
Obnoxious users had best beware the operator who's fast on the /kill
|
||||
command. "/kill nickname" blows any given nickname completely out of
|
||||
the chat system.
|
||||
|
||||
Obnoxiousness is not to be tolerated. But operators should not use
|
||||
/kill lightly.
|
||||
|
||||
*** 6.4.3: quote
|
||||
|
||||
Raw access to the underlying server protocol is possible through the
|
||||
user of the /quote command. "/quote any text at all" is used to send
|
||||
direct, unmodified commands to the servers. This has a wide variety
|
||||
of uses, such as deliberately killing a local or remote chat daemon,
|
||||
invoking operator privileges for otherwise-operator-priv-forbidden
|
||||
users, and related tasks. It is, again, a very powerful operation,
|
||||
and not to be used lightly.
|
||||
|
||||
* 7: Questions, problems, troubles?
|
||||
|
||||
If you have problems, please contact Christopher Davis (ckd@eff.org) or
|
||||
Helen Rose (hrose@eff.org). Known as "ckd" and "Trillian" on irc,
|
||||
respectively. You can also ask for help on some of the operator
|
||||
channels on irc, for example #twilight_zone and #eu-opers. They will
|
||||
be able to assist you in whatever problems you are having with IRC.
|
||||
|
||||
+241
@@ -0,0 +1,241 @@
|
||||
Internet Relay Chat Operator Etiquette Guide (May, 1992)
|
||||
[ $Id$ ]
|
||||
|
||||
Welcome! You've either been selected to be an IRC Operator or you have set
|
||||
up your server and thus have taken on the dual task of IRC Server
|
||||
Administrator and IRC Operator. Your future days will be filled with hours
|
||||
of fun chatting on IRC, and then wondering why everyone you talked to went
|
||||
away, because the links had apparently broken.
|
||||
|
||||
Linking:
|
||||
========
|
||||
|
||||
You will be assigned links from the IRC Routing Coordinators. Please
|
||||
use these links and these links ONLY. The links have been designed to
|
||||
maximize efficiency and make delays in chatting minimal. You will
|
||||
usually be given two links, one to each regional backbone site.
|
||||
Connect to the primary site first and then to the secondary site. You
|
||||
should not need to connect to any other sites. You will be informed if
|
||||
this policy changes.
|
||||
|
||||
Kills
|
||||
=====
|
||||
|
||||
/kill is a special operator command. You should use it with
|
||||
care, and only if absolutely needed. The format is as follows:
|
||||
/kill NICKNAME comment. Comment can be a phrase of almost any length
|
||||
(within reason) and should be used for specifying the reason of the kill.
|
||||
Example: /kill Trillian She's a Ghost
|
||||
IRC Ghosts are created after a net split has occured and the net has yet to
|
||||
relink.
|
||||
|
||||
/wallops PHRASE This is used to talk to those users who have their
|
||||
user mode set to +w. /wallops used to be a way for operators to talk
|
||||
about important matters in linking etc., but it has little use
|
||||
nowadays.
|
||||
|
||||
/TRACE command /TRACE is useful to know what servers are connected to
|
||||
what. Sometimes /trace can be confusing, especially if you are using
|
||||
it for the first time. Here is an example of a trace from
|
||||
stekt1.oulu.fi to cdc835.cdc.polimi.it.
|
||||
|
||||
/TRACE cdc835.cdc.polimi.it
|
||||
|
||||
*** Link stekt1.oulu.fi<2.7.2> ==> cdc835.cdc.polimi.it
|
||||
*** Link rieska.oulu.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link nic.funet.fi<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link ircserver.et.tudelft.nl<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link vesuv.unisg.ch<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Link apollo.di.unipi.it<2.7.1>e ==> cdc835.cdc.polimi.it
|
||||
*** Oper Class[10] ==> Allanon[cdc835.cdc.polimi.it]
|
||||
*** User Class[11] ==> Lupandy[plus2.usr.dsi.unimi.it]
|
||||
*** Serv Class[3] ==> apollo.di.unipi.it[131.114.4.36] 132S 445C
|
||||
*** User Class[11] ==> Punk[pluto.sm.dsi.unimi.it]
|
||||
*** User Class[11] ==> TheEdge[pluto.sm.dsi.unimi.it]
|
||||
*** User Class[10] ==> Mork[cdc835.cdc.polimi.it]
|
||||
*** User Class[11] ==> Lollo[c700-2.sm.dsi.unimi.it]
|
||||
*** User Class[11] ==> Attila[hp2.sm.dsi.unimi.it]
|
||||
*** Class 0 Entries linked 1
|
||||
*** Class 11 Entries linked 5
|
||||
*** Class 10 Entries linked 2
|
||||
*** Class 3 Entries linked 1
|
||||
|
||||
From this output you can see that the route goes first to
|
||||
rieska.oulu.fi (running version 2.7.1e), then nic.funet.fi,
|
||||
ircserver.et.tudelft.nl, vesuv.unisg.ch, and apollo.di.unipi.it, after
|
||||
which cdc835 is the next server. Then we see the connections on
|
||||
cdc835: One operator (Allanon) and 6 users are on line. The class of
|
||||
each connection is given. There is only one server connected to cdc835
|
||||
at the moment, and that server is apollo.di.unipi.it (cdc835 is said
|
||||
to be a "leaf" server at the moment). The numbers 132S 445C in the end
|
||||
of line tell us, that there are 132 servers and 445 clients connected
|
||||
to the servers from apollo onwards. Finally we see a grand total of
|
||||
connections in each connection class.
|
||||
|
||||
|
||||
/SQUIT server {comment}
|
||||
/squit isolates a specified server from the next closest server, when
|
||||
you look at it along the trace path starting from your server.
|
||||
This is usually used in conjunction with CONNECT (explained later) to
|
||||
reroute traffic. This will be described in detail in the section
|
||||
"routing", preceding CONNECT.
|
||||
|
||||
Usage (and examples):
|
||||
|
||||
/squit E
|
||||
|
||||
If the network looks like this initially (and you are on server A)
|
||||
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E <---> F <---> ... (rest of the net)
|
||||
|
||||
|
||||
Then after issuing the previous /squit the network would look like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
|
||||
|
||||
G <---> E <---> F <---> ...
|
||||
|
||||
|
||||
/squit E {comment}
|
||||
|
||||
It usually helps to give a reason why you are sending a
|
||||
SQUIT for a server. This can be accomplished by sending
|
||||
the command "/squit server This link is making the US route
|
||||
through Finland". The SQUIT will then be sent out, and the
|
||||
server sending the squit will WALLOP sending the comment
|
||||
so all operators can see it.
|
||||
|
||||
/CONNECT server {portnum server2}
|
||||
/connect is used to establish a link between two servers. These
|
||||
connections must be authorized by each server's ircd.conf file, but
|
||||
any operator can issue a CONNECT between authorized servers. This
|
||||
command is most often used in conjunction with SQUIT to reroute
|
||||
traffic.
|
||||
If only one argument is given, this command causes the server you
|
||||
are on to attempt to connect to the server specified. For example,
|
||||
"/connect B" (in the previous example) would cause your server (A) to
|
||||
connect to B.
|
||||
Suppose you wanted to reconnect server F to server E? You cannot
|
||||
contact server F since it is no longer part of your network. However,
|
||||
you can tell server E to connect to it. A remote CONNECT can be issued
|
||||
to server E.
|
||||
|
||||
Examples (assume you are on server A):
|
||||
|
||||
/connect B
|
||||
|
||||
If the network initially looks like this:
|
||||
|
||||
A B <---> ... (rest of network)
|
||||
|
||||
Then afterwards (if the connection succeeds) the network will look
|
||||
like this:
|
||||
|
||||
A <---> B <---> ...
|
||||
|
||||
|
||||
In the example where you wanted to reconnect server E to F, the
|
||||
following syntax would be appropriate (note: we are assuming that
|
||||
F's irc socket port is 6667, which is the default)
|
||||
|
||||
/connect F 6667 E
|
||||
|
||||
If the network initially looks like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E F <---> ...
|
||||
|
||||
Then after your CONNECT request the network topology will look like this:
|
||||
|
||||
A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E <---> F <---> ...
|
||||
|
||||
Be careful when connecting servers that you know which command to
|
||||
use! If you simply issued "/connect F" from your server, the
|
||||
network would look like this:
|
||||
|
||||
|
||||
... <---> F <---> A <---> B <---> C <---> D
|
||||
^
|
||||
|
|
||||
v
|
||||
G <---> E
|
||||
|
||||
which for various reasons (discussed below) might be very
|
||||
undesirable.
|
||||
|
||||
Routing
|
||||
=======
|
||||
|
||||
When and how should you do rerouting? This depends on where your
|
||||
server is topologically located and whether you route traffic. If you
|
||||
are a leaf node (i.e. only connect to one server at a time) then
|
||||
chances are you won't need to do any routing at all. Your ircd.conf
|
||||
file should be written to connect to the best possible servers first
|
||||
before trying alternates. At the most, you may decide to squit an
|
||||
alternate server and connect to your primary if/when it goes back up.
|
||||
This only involves local squits, however.
|
||||
|
||||
If you are operating a backbone site, you may find yourself
|
||||
rerouting things quite often. If the servers badger.ugcs.caltech.edu
|
||||
(Pasadena, CA), irc.mit.edu (Boston, MA), minnie.cc.utexas.edu
|
||||
(Austin, TX) and ucsu.colorado.edu (Boulder, CO) were routing traffic
|
||||
in the following way:
|
||||
|
||||
... <---> minnie <---> badger <---> bucsd <---> ucsu <---> ...
|
||||
|
||||
It would make sense to either squit ucsu and reconnect it to minnie,
|
||||
or disconnect minnie from badger and connect to ucsu, because
|
||||
topologically (and geographically) ucsu and minnie are rather close.
|
||||
There are occasions when US traffic for some reasons winds up being
|
||||
routed through Australia. This is another case where traffic should
|
||||
definitely be rerouted. However, there are sometimes occasions when
|
||||
routing is going through "backdoor" methods. If you see something
|
||||
totally outrageous (like the east coast and the west coast being
|
||||
connected by eff.org) please ask for example on channel #twilight_zone
|
||||
before you send any squits, because chances are, it's like that for a
|
||||
reason.
|
||||
|
||||
Of course, any operator can remotely squit or connect servers, so
|
||||
if you see a problem and you're sure you know how to fix it, it's a
|
||||
good idea to do so. If the operator of a server which is is being
|
||||
routed poorly is online, it's probably best to contact him/her first,
|
||||
though.
|
||||
|
||||
Chances are that hub operators will be more familiar with the
|
||||
general topology of the network and which servers connect to which
|
||||
(which is why most of the manual routing is left to them), so if you
|
||||
have any problems, talk to the other operators on operator channels
|
||||
(#twilight_zone, #eu-opers etc.) That's what they are there for!
|
||||
Also, be aware that servers will notify all the operators online of
|
||||
remote SQUITs and CONNECTs via WALLOPS.
|
||||
|
||||
Please let us know if there should be any additions to this guide. Again,
|
||||
this is not MANDATORY, this is just a GUIDE. Please conduct yourself as
|
||||
an IRC Operator would...you are looked upon for assistance, both emotional
|
||||
and mental.
|
||||
|
||||
Helen Rose Christopher Davis Noah Friedman
|
||||
<hrose@cs.bu.edu> <ckd@cs.bu.edu> <friedman@ai.mit.edu>
|
||||
|
||||
January, 1991
|
||||
|
||||
|
||||
Updated by
|
||||
|
||||
Mauri Haikola
|
||||
<mjh@stekt.oulu.fi>
|
||||
|
||||
May, 1992
|
||||
@@ -1,960 +0,0 @@
|
||||
UnrealIRCd 5.X.Y-git Release Notes
|
||||
===============================
|
||||
|
||||
This is the current development version (git) of UnrealIRCd.
|
||||
|
||||
This UnrealIRCd release focusses on channel history. A way to store channel
|
||||
history encrypted on disk has been added (to preserve between server restarts)
|
||||
and the IRCv3 CHATHISTORY command has been implemented to allow fetching
|
||||
thousands of lines of channel history.
|
||||
|
||||
It also contains a breaking change, meaning (almost) everyone will need
|
||||
to change a few things in their configuration file.
|
||||
|
||||
Breaking change:
|
||||
* The set::anti-flood block has been redone so you can have different limits
|
||||
for ''unknown-users'' and ''known-users''.
|
||||
* As a reminder, by default, "known-users" are users who are identified
|
||||
to services OR are on an IP that has been connected for over 2 hours
|
||||
in the past X days. The exact definition of "known-users" is in the
|
||||
[security-group block](https://www.unrealircd.org/docs/Security-group_block).
|
||||
* See [here](https://www.unrealircd.org/docs/FAQ#new-anti-flood-block)
|
||||
for more information on the layout of the new set::anti-flood block.
|
||||
* All violatons of target-flood, nick-flood, join-flood, away-flood,
|
||||
invite-flood, knock-flood, max-concurrent-conversations are now
|
||||
reported to opers with the snomask ```f``` (flood).
|
||||
|
||||
Enhancements:
|
||||
* Add support for database encryption. The way this works
|
||||
is that you define an encryption password in a
|
||||
[secret { } block](https://www.unrealircd.org/docs/Secret_block).
|
||||
Then from the various modules you can refer to this secret
|
||||
block, from
|
||||
[set::reputation::db-secret](https://www.unrealircd.org/docs/Set_block#set::reputation),
|
||||
[set::tkldb::db-secret](https://www.unrealircd.org/docs/Set_block#set::tkldb)
|
||||
and [set::channeldb::db-secret](https://www.unrealircd.org/docs/Set_block#set::channeldb).
|
||||
This way you can encrypt the reputation, TKL and channel
|
||||
database for increased privacy.
|
||||
* Add optional support for
|
||||
[persistent channel history](https://www.unrealircd.org/docs/Set_block#Persistent_channel_history):
|
||||
* This stores channel history on disk for channels that have
|
||||
both ```+H``` and ```+P``` set.
|
||||
* If you enable this then we ALWAYS require you to set an
|
||||
encryption password, as we do not allow storing of
|
||||
channel history in plain text.
|
||||
* If you enable the option, then the history is stored in
|
||||
```data/history/``` in individual .db files. No channel
|
||||
names are visible in the filenames for optimal privacy.
|
||||
* See [Persistent channel history](https://www.unrealircd.org/docs/Set_block#Persistent_channel_history)
|
||||
on how to enable this. By default it is off.
|
||||
* Add optional support for IRCv3
|
||||
[draft/chathistory](https://ircv3.net/specs/extensions/chathistory).
|
||||
This module can be loaded via ```loadmodule "chathistory";```
|
||||
* The maximums for channel mode ```+H``` have been raised and are now
|
||||
different for ```+r``` (registered) and ```-r``` channels. For unregistered
|
||||
channels the limit is now 200 lines / 31 days. For registered channels
|
||||
the limit is 5000 lines / 31 days. The old limit for both was 200 lines / 7 days.
|
||||
These maximums can be changed in the now slightly different
|
||||
[set::history::channel::max-storage-per-channel](https://www.unrealircd.org/docs/Set_block#set::history)
|
||||
block.
|
||||
* Add c-ares and libsodium version output to boot screen and /VERSION.
|
||||
* WHOX now supports displaying the
|
||||
[reputation score](https://www.unrealircd.org/docs/Reputation_score).
|
||||
If you are an IRCOp then you can use e.g. ```WHO * %cuhsnfmdaRr```.
|
||||
* Add ability to [spamfilter](https://www.unrealircd.org/docs/Spamfilter)
|
||||
message tags via the new 'T' target. Right now it would be unusual
|
||||
to use this, but some day when we have more
|
||||
[message tags](https://www.unrealircd.org/docs/Message_tags) it
|
||||
may come in handy.
|
||||
* Support [+draft/reply](https://ircv3.net/specs/client-tags/reply) IRCv3
|
||||
client tag. Can be used by bots (and others) to indicate to what message
|
||||
people are replying to. This module, reply-tag, is loaded by default.
|
||||
* Send [draft/bot](https://ircv3.net/specs/extensions/bot-mode) IRCv3
|
||||
message tag if the user has mode ```+B``` set.
|
||||
|
||||
Fixes:
|
||||
* Forbid using [extended server bans](https://www.unrealircd.org/docs/Extended_server_bans)
|
||||
in ZLINE/GZLINE since they won't work.
|
||||
* Extended server ban ```~a:accname``` was not working for shun, and only
|
||||
partially working for kline/gline.
|
||||
* More accurate /ELINE error message.
|
||||
|
||||
Changed:
|
||||
* Channel mode ```+H``` always showed time in minutes (```m```) until now.
|
||||
From now on it will show it in minutes (```m```), hours (```h```) or
|
||||
days (```d```) depending on the actual value. Eg ```+H 50:7d```.
|
||||
* If you ran ```./unrealircd stop``` we used to wait only 1 second.
|
||||
From now on we will wait up to 10 seconds max. This gives UnrealIRCd
|
||||
plenty of time to write database files.
|
||||
* If you have zero [log blocks](https://www.unrealircd.org/docs/Log_block)
|
||||
then we already automatically logged errors to ```ircd.log```.
|
||||
From now on we will log everything (not only errors) to that file.
|
||||
|
||||
Removed:
|
||||
* Version check for curl and openssl as nowadays they have ABI guarantees.
|
||||
|
||||
Module coders / Developers:
|
||||
* New UnrealDB API and disk format, see
|
||||
https://www.unrealircd.org/docs/Dev:UnrealDB
|
||||
* We now use libsodium for file encryption routines as well
|
||||
as some helpers to lock/clear passwords in memory.
|
||||
* Updated ```HOOKTYPE_LOCAL_NICKCHANGE``` and
|
||||
```HOOKTYPE_REMOTE_NICKCHANGE``` to include an
|
||||
```MessageTag *mtags``` argument in the middle.
|
||||
You can use ```#if UNREAL_VERSION_TIME>=202115``` to detect this.
|
||||
* Updated channel mode ```conv_param``` function to
|
||||
include a ```Channel *channel``` argument at the end.
|
||||
You can use ```#if UNREAL_VERSION_TIME>=202120``` to detect this.
|
||||
* New: ```ModuleSetOptions(modinfo->handle, MOD_OPT_UNLOAD_PRIORITY, priority);```.
|
||||
This can be used for modules to indicate they wish to be unloaded
|
||||
before or after others. It is used by for example the channel
|
||||
and history modules so they can save their databases before
|
||||
chanmode modules or other modules get unloaded.
|
||||
* New CAP [```draft/chathistory```](https://ircv3.net/specs/extensions/chathistory).
|
||||
If a client REQ's this CAP then UnrealIRCd won't send history on-join as
|
||||
it assumes the client will fetch it when they feel the need for it.
|
||||
* New informative CAP:
|
||||
[unrealircd.org/history-backend](https://www.unrealircd.org/history-backend)
|
||||
|
||||
Reminder: UnrealIRCd 4 is no longer supported
|
||||
----------------------------------------------
|
||||
|
||||
UnrealIRCd 4.x is [no longer supported](https://www.unrealircd.org/docs/UnrealIRCd_4_EOL).
|
||||
Admins must [upgrade to UnrealIRCd 5](https://www.unrealircd.org/docs/Upgrading_from_4.x).
|
||||
|
||||
UnrealIRCd 5.0.9.1
|
||||
-------------------
|
||||
The only change between 5.0.9 and 5.0.9.1 is:
|
||||
* Build improvements on *NIX (faster compiling and lower memory requirements)
|
||||
* Windows version is unchanged and still 5.0.9
|
||||
|
||||
UnrealIRCd 5.0.9
|
||||
-----------------
|
||||
The 5.0.9 release comes with several nice feature enhancements. There are no major bug fixes.
|
||||
|
||||
Enhancements:
|
||||
* Changes to the "Client connecting" notice on IRC (for IRCOps):
|
||||
* The format changed slightly, instead of ```{clients}``` it
|
||||
now shows ```[class: clients]```
|
||||
* SSL/TLS information is still shown via ```[secure]```
|
||||
* New: ```[reputation: NNN]``` to show the current
|
||||
[reputation score](https://www.unrealircd.org/docs/Reputation_score)
|
||||
* New: ```[account: abcdef]``` to show the services account,
|
||||
but only if [SASL](https://www.unrealircd.org/docs/SASL) was used.
|
||||
* In the log file the format also changed slightly:
|
||||
* IP information is now added as ```[127.0.0.1]``` in both the
|
||||
connect and disconnect log messages.
|
||||
* The vhost is logged as ```[vhost: xyz]``` instead of ```[VHOST xyz]```
|
||||
* All the other values are now logged as well on-connect,
|
||||
similar to the "Client connecting" notice, so: secure, reputation,
|
||||
account (if applicable).
|
||||
* New option [allow::global-maxperip](https://www.unrealircd.org/docs/Allow_block):
|
||||
this imposes a global (network-wide) restriction on the number of
|
||||
connections per IP address.
|
||||
If you don't have a global-maxperip setting in the allow block then it
|
||||
will default to maxperip plus one. So, if you currently have an
|
||||
allow::maxperip of 3 then global-maxperip will be 4.
|
||||
* [Handshake delay](https://www.unrealircd.org/docs/Set_block#set::handshake-delay)
|
||||
is automatically disabled for users that are exempt from blacklist checking.
|
||||
* Always exempt 127.* from gline, kline, etc.
|
||||
* You can now have dated logfiles thanks to strftime formatting.
|
||||
For example ```log "ircd.%Y-%m-%d.log" { }``` will create a log
|
||||
file like called ircd.2020-01-31.log, a new one every day.
|
||||
* The Windows build now supports TLSv1.3 too.
|
||||
|
||||
Fixes:
|
||||
* Windows: some warnings and error messages on boot were previously
|
||||
missing.
|
||||
|
||||
Changes:
|
||||
* Add doc/KEYS which contains the public key(s) used to sign UnrealIRCd releases
|
||||
* The options set::anti-flood::unknown-flood-* have been renamed and
|
||||
integrated in a new block called
|
||||
[set::anti-flood::handshake-data-flood](https://www.unrealircd.org/docs/Set_block#set::anti-flood::handshake-data-flood).
|
||||
The ban-action can now also be changed. Note that almost nobody will have to
|
||||
change this setting since it has a good default.
|
||||
* On *NIX bump the default maximum connections from 8192 to 16384.
|
||||
That is, when in "auto" mode, which is like for 99% of the users.
|
||||
Note that the system may still limit the actual number of connections
|
||||
to a lower value, epending on the value of ```ulimit -n -H```.
|
||||
|
||||
UnrealIRCd 5.0.8
|
||||
-----------------
|
||||
|
||||
The main purpose of this release is to enhance the
|
||||
[reputation](https://www.unrealircd.org/docs/Reputation_score)
|
||||
functionality. There have also been some other changes and minor
|
||||
bug fixes. For more information, see below.
|
||||
|
||||
Enhancements:
|
||||
* Support for [security groups](https://www.unrealircd.org/docs/Security-group_block),
|
||||
of which four groups always exist by default: known-users, unknown-users,
|
||||
tls-users and tls-and-known-users.
|
||||
* New extended ban ```~G:securitygroupname```. Typical usage would be
|
||||
```MODE #chan +b ~G:unknown-users``` which will ban all users from the
|
||||
channel that are not identified to services and have a reputation
|
||||
score below 25 (by default). The exact settings can be tweaked in the
|
||||
[security group block](https://www.unrealircd.org/docs/Security-group_block).
|
||||
* The reputation command (IRCOp-only) has been extended to make it
|
||||
easier to look for potential troublemakers:
|
||||
* ```REPUTATION Nick``` shows reputation about the nick name
|
||||
* ```REPUTATION IP``` shows reputation about the IP address
|
||||
* ```REPUTATION #channel``` lists users in channel with their reputation score
|
||||
* ```REPUTATION <NN``` lists users with reputation scores below value NN
|
||||
* Only send the first 1000 matches on ```STATS gline``` or a
|
||||
similar command. This to prevent the IRCOp from being flooded off.
|
||||
This value can be changed via
|
||||
[set::max-stats-matches](https://www.unrealircd.org/docs/Set_block#set::max-stats-matches)
|
||||
* Warn when the SSL/TLS server certificate is expired or expires soon
|
||||
(within 7 days).
|
||||
* New option allow::options::reject-on-auth-failure if you want to
|
||||
stop matching on a passworded allow block, see the
|
||||
[allow password documentation](https://www.unrealircd.org/docs/Allow_block#password)
|
||||
for more information. Note that most people won't use this.
|
||||
|
||||
Fixes:
|
||||
* The ```WHO``` command searched on nick name even if it was told
|
||||
to search on a specific account name via WHOX options.
|
||||
* Some typos in the Config script and a warning
|
||||
* Counting clients twice in some circumstances
|
||||
|
||||
Changes:
|
||||
* Support for $(DESTDIR) in 'make install' if packaging for a distro
|
||||
* Mention the ban reason in Q-line server notices
|
||||
* Add self-test to module manager and improve the error message in case
|
||||
the IRCd source directory does not exist.
|
||||
* Print out a more helpful error if you run the unrealircd binary
|
||||
rather than the unrealircd script with an argument like 'mkpasswd' etc.
|
||||
* On *NIX create a symlink 'source' to the UnrealIRCd source
|
||||
|
||||
Module coders / Developers:
|
||||
* The [Doxygen module API docs](https://www.unrealircd.org/api/5/index.html)
|
||||
have been improved, in particular the
|
||||
[Hook API](https://www.unrealircd.org/api/5/group__HookAPI.html)
|
||||
is now 100% documented.
|
||||
|
||||
UnrealIRCd 5.0.7
|
||||
-----------------
|
||||
|
||||
UnrealIRCd 5.0.7 consists mainly of fixes for the 5.x stable series,
|
||||
with some minor enhancements.
|
||||
|
||||
Enhancements:
|
||||
* Add support for ```estonian-utf8```, ```latvian-utf8``` and
|
||||
```lithuanian-utf8``` in
|
||||
[set::allowed-nickchars](https://www.unrealircd.org/docs/Nick_Character_Sets)
|
||||
* Add [message tags](https://www.unrealircd.org/docs/Message_tags)
|
||||
to ```PONG``` to help fix timestamp issues in KiwiIRC.
|
||||
* Dutch helpop file (conf/help/help.nl.conf)
|
||||
|
||||
Fixes:
|
||||
* When having multiple text bans (```+b ~T:censor```), these caused an empty
|
||||
message.
|
||||
* Text bans are now no longer bypassed by voiced users (```+v```).
|
||||
* [Websockets](https://www.unrealircd.org/docs/WebSocket_support) that used
|
||||
```labeled-response``` sometimes received multiple IRC messages in one
|
||||
websocket packet.
|
||||
* The reputation score of [WEBIRC users](https://www.unrealircd.org/docs/WebIRC_block)
|
||||
was previously the score of the WEBIRC IP rather than the end-user IP.
|
||||
* ```STATS badword``` was not working.
|
||||
* When setting a very high channel limit, it showed a weird MODE ```+l``` value.
|
||||
* The ```LINKS``` command worked, even when disabled via
|
||||
```hideserver::disable-links``` in the optional hideserver module.
|
||||
* In some cases ```WHO``` did not show your own entry, such as when
|
||||
searching on account name, which was confusing.
|
||||
* Memory leak when repeatedly using ```./unrealircd reloadtls``` or
|
||||
```/REHASH -tls```.
|
||||
|
||||
Module coders / Developers:
|
||||
* No changes, only some small additions to the
|
||||
[Doxygen module API docs](https://www.unrealircd.org/api/5/index.html)
|
||||
|
||||
UnrealIRCd 5.0.6
|
||||
-----------------
|
||||
|
||||
UnrealIRCd 5.0.6 is a small maintenance release for the stable 5.x series.
|
||||
For existing 5.x users there is probably little reason to upgrade.
|
||||
|
||||
Enhancements:
|
||||
* Spanish help conf was added (conf/help/help.es.conf)
|
||||
|
||||
Fixes:
|
||||
* History playback on join was not obeying the limits from
|
||||
[set::history::channel::playback-on-join](https://www.unrealircd.org/docs/Set_block#set::history).
|
||||
Note that if you want to see more lines, there is the ```HISTORY```
|
||||
command. For more information on the different ways to retrieve history, see
|
||||
[Channel History](https://www.unrealircd.org/docs/Channel_history)
|
||||
* [Spamfilter](https://www.unrealircd.org/docs/Spamfilter) with the
|
||||
['tempshun' action](https://www.unrealircd.org/docs/Actions) was letting
|
||||
the message through.
|
||||
* In very specific circumstances a ```REHASH -tls``` would cause outgoing
|
||||
linking to fail with the error "called a function you should not call".
|
||||
* Crash if empty [set::cloak-method](https://www.unrealircd.org/docs/Set_block#set::cloak-method)
|
||||
* Issues with labeled-response on websockets (partial fix)
|
||||
|
||||
Module coders / Developers:
|
||||
* In ```RPL_ISUPPORT``` we now announce ```BOT=B``` to indicate the user mode and
|
||||
```WHO``` status flag for bots.
|
||||
* ```HOOKTYPE_ACCOUNT_LOGIN``` is called for remote users too now (also on server syncs)
|
||||
* Send ```RPL_LOGGEDOUT``` when logging out of services account
|
||||
* Fix double batch in message tags when using both labeled-response
|
||||
and the ```HISTORY``` command
|
||||
|
||||
UnrealIRCd 5.0.5.1
|
||||
-------------------
|
||||
|
||||
5.0.5.1 reverts the previously introduced UTF8 Spamfilter support.
|
||||
Unfortunately we had to do this, due to a bug in the PCRE2 regex library
|
||||
that caused a freeze / infinite loop with certain regexes and text.
|
||||
|
||||
UnrealIRCd 5.0.5
|
||||
-----------------
|
||||
|
||||
This 5.0.5 release mainly focuses on new features, while also fixing a few bugs.
|
||||
|
||||
Fixes:
|
||||
* [except ban { }](https://www.unrealircd.org/docs/Except_ban_block)
|
||||
without 'type' was not exempting from gline.
|
||||
* Channel mode ```+L #forward``` and ```+k key```: should forward
|
||||
on wrong key, but was also redirecting on correct key.
|
||||
* Crash on 32-bit machines in tkldb (on start or rehash)
|
||||
* Crash when saving channeldb when a parameter channel mode is combined
|
||||
with ```+P``` and that module was loaded after channeldb. This may
|
||||
happen if you use 3rd party modules that add parameter channel modes.
|
||||
|
||||
Enhancements:
|
||||
* [antimixedutf8](https://www.unrealircd.org/docs/Set_block#set::antimixedutf8)
|
||||
has been improved to detect CJK and other scripts and this will now
|
||||
catch more mixed UTF8 spam. Note that, if you previously manually
|
||||
set the score very tight (much lower than the default of 10) then you
|
||||
may have to increase it a bit, or not, depending on your network.
|
||||
* Support for IRCv3 [+typing clienttag](https://ircv3.net/specs/client-tags/typing.html),
|
||||
which adds "user is typing" support to channels and PM (if the client
|
||||
supports it).
|
||||
* New flood countermeasure,
|
||||
[set::anti-flood::target-flood](https://www.unrealircd.org/docs/Set_block#set%3A%3Aanti-flood%3A%3Atarget-flood),
|
||||
which limits flooding to channels and users. This is only meant as a
|
||||
filter for high rate floods. You are still encouraged to use
|
||||
[channel mode +f](https://www.unrealircd.org/docs/Anti-flood_features#Channel_mode_f)
|
||||
in channels which give you more customized and fine-grained options
|
||||
to deal with low- and medium-rate floods.
|
||||
* If a chanop /INVITEs someone, it will now override ban forwards
|
||||
such as ```+b ~f:#forward:*!*@*```.
|
||||
|
||||
Changes:
|
||||
* We now do parallel builds by default (```make -j4```) within ./Config,
|
||||
unless the ```$MAKE``` or ```$MAKEFLAGS``` environment variable is set.
|
||||
* [set::restrict-commands](https://www.unrealircd.org/docs/Set_block#set%3A%3Arestrict-commands):
|
||||
* The ```disable``` option is now removed as it is implied. In other words: if
|
||||
you want to disable a command, then simply don't use ```connect-delay```.
|
||||
* You can now have a block without ```connect-delay``` but still make
|
||||
users bypass the restriction with ```exempt-identified``` and/or
|
||||
```exempt-reputation-score```. Previously this was not possible.
|
||||
* We now give an error when an IRCOp tries to place an *LINE that already
|
||||
exists. (Previously we sometimes replaced the existing *LINE and other
|
||||
times we did not)
|
||||
* Add Polish HELPOP (help.pl.conf)
|
||||
|
||||
Module coders / Developers:
|
||||
* Breaking API change in ```HOOKTYPE_CAN_SEND_TO_USER``` and
|
||||
```HOOKTYPE_CAN_SEND_TO_CHANNEL```: the final argument has changed
|
||||
from ```int notice``` to ```SendType sendtype```, which is an
|
||||
enum, since we now have 3 message options (PRIVMSG, NOTICE, TAGMSG).
|
||||
|
||||
UnrealIRCd 5.0.4
|
||||
------------------
|
||||
|
||||
This new 5.0.4 version fixes quite a number of bugs. It contains only two small feature improvements.
|
||||
|
||||
Fixes:
|
||||
* When placing a SHUN on an online user it was not always effective.
|
||||
* Channeldb was not properly restoring all channel modes, such as +P.
|
||||
* When upgrading UnrealIRCd it could sometimes crash the currently
|
||||
running IRC server (rare), or trigger a crash report on
|
||||
```./unrealircd restart``` (quite common).
|
||||
* UnrealIRCd was giving up too easily on ident lookups.
|
||||
* Crash when unloading a module with moddata.
|
||||
* Crash if an authenticated server sends wrong information (rare).
|
||||
* Removing a TEMPSHUN did not work if the user was on another server.
|
||||
* SAJOIN to 0 (part all channels) resulted in a desync when used on remote users.
|
||||
* Forced nick change from services was not showing up if the user
|
||||
was not in any channels.
|
||||
|
||||
Enhancements:
|
||||
* New option [set::hide-idle-time::policy](https://www.unrealircd.org/docs/Set_block#set%3A%3Ahide-idle-time)
|
||||
by which you can change usermode +I (hide idle time in WHOIS) from
|
||||
oper-only to settable by users. More options will follow in a future
|
||||
release.
|
||||
* In WHOIS you can now see if a user is currently (temp)shunned.
|
||||
This only works for locally connected users for technical reasons,
|
||||
so use ```/WHOIS Nick Nick``` to see it for remote users.
|
||||
|
||||
Changes:
|
||||
* The oper notices and logging with regards to server linking have changed
|
||||
a little. They are more consistent and log more now.
|
||||
* When an IRCOp tries to oper up from an insecure connection we will now
|
||||
mention the https://www.unrealircd.org/docs/FAQ#oper-requires-tls page.
|
||||
This message is customizable through
|
||||
[set::plaintext-policy::oper-message](https://www.unrealircd.org/docs/Set_block#set::plaintext-policy).
|
||||
* The French HELPOP text was updated.
|
||||
|
||||
UnrealIRCd 5.0.3.1
|
||||
-------------------
|
||||
This fixes a crash issue after REHASH in 5.0.3.
|
||||
|
||||
UnrealIRCd 5.0.3
|
||||
-----------------
|
||||
Fixes:
|
||||
* Fix serious flood issue in labeled-response implementation.
|
||||
* An IRCOp SQUIT'ing a far remote server may cause a broken link topology
|
||||
* In channels that are +D (delayed join), PARTs were not shown correctly to
|
||||
channel operators.
|
||||
|
||||
Enhancements:
|
||||
* A new HISTORY command for history playback (```HISTORY #channel number-of-lines```)
|
||||
which allows you to fetch more lines than the on-join history playback.
|
||||
Of course, taking into account the set limits in the +H channel mode.
|
||||
This command is one of the [two interfaces](https://www.unrealircd.org/docs/Channel_history#Ways_to_retrieve_history)
|
||||
to [Channel history](https://www.unrealircd.org/docs/Channel_history).
|
||||
* Two new [message tags](https://www.unrealircd.org/docs/Message_tags),
|
||||
```unrealircd.org/userip``` and ```unrealircd.org/userhost```
|
||||
which communicate the user@ip and real user@host to IRCOps.
|
||||
|
||||
Changes:
|
||||
* Drop the draft/ prefix now that the IRCv3
|
||||
[labeled-response](https://ircv3.net/specs/extensions/labeled-response.html)
|
||||
specification is out of draft.
|
||||
* The operclass permission ```immune:target-limit``` is now called
|
||||
```immune:max-concurrent-conversations```, since it bypasses
|
||||
[set::anti-flood::max-concurrent-conversations](https://www.unrealircd.org/docs/Set_block#set::anti-flood::max-concurrent-conversations).
|
||||
For 99% of the users this change is not important, but it may be
|
||||
if you use highly customized [operclass blocks](https://www.unrealircd.org/docs/Operclass_block)
|
||||
|
||||
Are you upgrading from UnrealIRCd 4.x to UnrealIRCd 5? If so,
|
||||
then check out the *UnrealIRCd 5* release notes [further down](#unrealircd-5). At the
|
||||
very least, check out [Upgrading from 4.x](https://www.unrealircd.org/docs/Upgrading_from_4.x).
|
||||
|
||||
UnrealIRCd 5.0.2
|
||||
-----------------
|
||||
|
||||
Fixes:
|
||||
* Halfop users are not synced correctly, resulting in missing users across links.
|
||||
* [Channel history](https://www.unrealircd.org/docs/Channel_history) used
|
||||
incorrect time internally, resulting in messages expiring too soon.
|
||||
The syntax is now really ```/MODE #chan +H lines:time-in-minutes```.
|
||||
To make clear that the time is in minutes, an 'm' will be added
|
||||
automatically by the server (eg ```+H 15:1440m```).
|
||||
* Documentation: to exempt someone from gline via /ELINE you have to use type 'G', not 'g'.
|
||||
Similarly, to exempt from spamfilter, use type 'F' and not 'f'.
|
||||
* Exempting IPs from throttling via [except throttle](https://www.unrealircd.org/docs/Except_throttle_block) was not working.
|
||||
* Unable to customize [set::tls::outdated-protocols](https://www.unrealircd.org/docs/Set_block#set::ssl::outdated-protocols)
|
||||
and [set::tls::outdated-ciphers](https://www.unrealircd.org/docs/Set_block#set::ssl::outdated-ciphers).
|
||||
* Specifying multiple channels did not work in [set::auto-join](https://www.unrealircd.org/docs/Set_block#set::auto-join),
|
||||
[set::oper-auto-join](https://www.unrealircd.org/docs/Set_block#set::oper-auto-join) and
|
||||
[tld::channel](https://www.unrealircd.org/docs/Tld_block).
|
||||
|
||||
Enhancements:
|
||||
* [Extended server bans](https://www.unrealircd.org/docs/Extended_server_bans) in *LINE and /ELINE allow
|
||||
you to ban or exempt users on criteria other than host/IP. These use a
|
||||
similar syntax to extended bans. Currently supported are ~a, ~S and ~r. Examples:
|
||||
* ```/ELINE ~a:TrustedAccount kG 0 This user can bypass kline/gline when using SASL```
|
||||
* ```/ELINE ~S:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef kGF 0 Trusted user with this certificate fingerprint```
|
||||
* ```/GLINE ~r:*some*stupid*real*name*```
|
||||
* These can also be used in the configuration file, eg: ```except ban { mask ~S:11223344etc; type all; };```
|
||||
* New options that may not be used much, but can be useful on specific networks:
|
||||
* The IRCd may add automatic bans, for example due to a blacklist hit,
|
||||
a spamfilter hit, or because of antirandom or antimixedutf8. The new
|
||||
option [set::automatic-ban-target](https://www.unrealircd.org/docs/Set_block#set::automatic-ban-target) specifies on *what* the ban should
|
||||
be placed. The default is *ip*. Other options are: userip, host, userhost, account, certfp.
|
||||
* Similarly, an oper may type ```/GLINE nickname```. The new option
|
||||
[set::manual-ban-target](https://www.unrealircd.org/docs/Set_block#set::manual-ban-target) specifies on what the ban should be placed.
|
||||
By default this is *host* (fallback to *ip*).
|
||||
* New options to exempt webirc users: [set::connthrottle::webirc-bypass](https://www.unrealircd.org/docs/Connthrottle),
|
||||
[set::restrict-commands::name-of-command::exempt-webirc](https://www.unrealircd.org/docs/Set_block#set::restrict-commands).
|
||||
|
||||
UnrealIRCd 5.0.1
|
||||
-----------------
|
||||
|
||||
Fixes:
|
||||
* IRCd may hang in rare circumstances
|
||||
* Windows: fix repeated "ERROR renaming 'data/reputation.db.tmp'" warnings
|
||||
* Antirandom and blacklist did not deal properly with 'warn' actions
|
||||
* [Authprompt](https://www.unrealircd.org/docs/Authentication#How_it_looks_like)
|
||||
did not always work properly
|
||||
* Line numbers were incorrect in config file warnings/errors when using @if or @define
|
||||
|
||||
Enhancements:
|
||||
* New /ELINE exception type 'm' to bypass allow::maxperip.
|
||||
Or in the configuration file: ```except ban { mask 203.0.113.0/24; type maxperip; };```
|
||||
* IRCOps can override MLOCK restrictions when services are down,
|
||||
if they have the channel:override:mlock operclass permission,
|
||||
such as opers which use the operclass 'netadmin-with-override'.
|
||||
|
||||
Other:
|
||||
* Gottem and k4be have [uploaded their 3rd party modules](https://modules.unrealircd.org/)
|
||||
to unrealircd-contrib so *NIX users can now easily install them using the new
|
||||
[Module manager](https://www.unrealircd.org/docs/Module_manager)
|
||||
|
||||
UnrealIRCd 5
|
||||
-------------
|
||||
After more than 6 months of hard work, UnrealIRCd 5 is now our new "stable" branch.
|
||||
In particular I would like to thank Gottem and 'i' for their source code
|
||||
contributions and PeGaSuS and westor for testing releases.
|
||||
|
||||
When we transitioned from 3.2.x to 4.0.0 there were 175,000 lines of source code
|
||||
added/removed during 3 years of development. This time it was 120,000 lines in
|
||||
only 6 months, a major effort!
|
||||
|
||||
**If you are upgrading from 4.x to 5.x, then it would be wise to read
|
||||
[Upgrading from 4.x](https://www.unrealircd.org/docs/Upgrading_from_4.x).
|
||||
In any case, be sure to upgrade your services package first! (if you use any)**
|
||||
|
||||
UnrealIRCd 5 is compatible with the following services:
|
||||
* [anope](https://www.anope.org/) (version 2.0.7 or higher) -
|
||||
with the "unreal4" protocol module
|
||||
* [atheme](https://atheme.github.io/atheme.html) (version 7.2.9 or higher) -
|
||||
with the "unreal4" protocol module
|
||||
|
||||
Summary
|
||||
--------
|
||||
The most visible change to end-users is channel history. A lot of IRCv3 features were added.
|
||||
Various modules from Gottem have been integrated and enhanced.
|
||||
We now have a 3rd party module manager so you can install modules with 1 simple command.
|
||||
Channel settings of ```+P``` channels and *LINES are saved in a database and
|
||||
restored on startup (via 'channeldb' and 'tkldb' respectively).
|
||||
Channel mode ```+L``` has a slight change of meaning, the existing floodprot
|
||||
mode (```+f```) has a new type to prevent repeated messages and a new drop action.
|
||||
A few extended bans have been added as well (```~f``` and ```~p```).
|
||||
IRCOps now have the ability to add ban exceptions via the ```/ELINE``` command.
|
||||
Advanced admins can use more dynamic configuration options where you can
|
||||
define variables and use them later in the configuration file.
|
||||
Finally, there have been speed improvements, we use better defaults and
|
||||
have added more countermeasures and options against spambots.
|
||||
Under the hood *a significant amount* of the source code was changed and cleaned up.
|
||||
|
||||
Read below for the full list of enhancements, changes and removals (and information for developers too).
|
||||
|
||||
Enhancements
|
||||
-------------
|
||||
* Support for IRCv3 server generated [message tags](https://ircv3.net/specs/extensions/message-tags), which allows us to communicate
|
||||
additional information in protocol messages such as in JOIN and PRIVMSG.
|
||||
Currently implemented and permitted message tags are:
|
||||
* [account](https://ircv3.net/specs/extensions/account-tag-3.2): communicate the services account that a user uses
|
||||
* [msgid](https://ircv3.net/specs/extensions/message-ids): assign an unique message id to each message
|
||||
* [time](https://ircv3.net/specs/extensions/server-time-3.2): assign a time label to each message
|
||||
The last two are mainly for history playback.
|
||||
* Support for IRCv3 [echo-message](https://ircv3.net/specs/extensions/echo-message-3.2), which helps clients, among other things,
|
||||
to see if the message you sent was altered in any way, eg: censored,
|
||||
stripped from color, etc.
|
||||
* Support for IRCv3 [draft/labeled-response-0.2](https://ircv3.net/specs/extensions/labeled-response), which helps clients to
|
||||
correlate commands and responses.
|
||||
* Support for IRCv3 [BATCH](https://ircv3.net/specs/extensions/batch-3.2), needed for some other features.
|
||||
* Recording and playback of [channel history](https://www.unrealircd.org/docs/Channel_history) when channel mode +H is set.
|
||||
The syntax is: ```MODE #chan +H max-lines-to-record:max-time-to-record-in-minutes```.
|
||||
|
||||
For example: ```MODE #chan +H 50:1440``` means the last 50 messages will be stored and no
|
||||
message will be stored longer than 1440 minutes (1 day).
|
||||
|
||||
The channel history is then played back when joining such a channel,
|
||||
but with two things to keep in mind:
|
||||
1) The client must support the 'server-time' CAP ('time' message tag),
|
||||
otherwise history is not shown. Any modern IRC client supports this.
|
||||
2) Only a maximum of 15 lines are played back on-join by default
|
||||
|
||||
The reason for the maximum 15 lines on-join playback is that this can
|
||||
be quite annoying if you rejoin repeatedly and as to not flood the users
|
||||
screen too much (unwanted). In the future we will support a mechanism
|
||||
for clients to "fetch" history - rather than sending it on-join - so
|
||||
they can fetch more than the 15 lines, up to the number of lines and
|
||||
time configured in the +H channel mode.
|
||||
|
||||
You can configure the exact number of lines that are played back and
|
||||
all the limits that apply to +H via [set::history::channel](https://www.unrealircd.org/docs/Set_block#set::history).
|
||||
* For saving and retrieving history we currently have the following options:
|
||||
* *history_backend_mem*: channel history is stored in memory.
|
||||
This is very fast but also means history is lost on restart.
|
||||
* *history_backend_null*: don't store channel history at all.
|
||||
This can be useful to load on servers with no users on it, such as a
|
||||
hub server, where storing history is unnecessary.
|
||||
|
||||
As you can see there is currently no 'disk' backend. However, in the
|
||||
future more options may be added. Also note that 3rd party modules
|
||||
can add history backends as well.
|
||||
* Support for ban exceptions via the new ```/ELINE``` command. This allows you
|
||||
to add exceptions for regular bans (KLINE/GLINE/ZLINE/etc), but also
|
||||
for connection throttling and blacklist checking.
|
||||
For more information, just type ```/ELINE ``` in your IRC client as an IRCOp.
|
||||
* [Websocket](https://www.unrealircd.org/docs/WebSocket_support) support now includes type 'text'
|
||||
in addition to 'binary', which should work with [KiwiIRC](https://kiwiirc.com/)'s nextclient.
|
||||
|
||||
Also, websockets are no longer active on all ports by default. You have to explicitly
|
||||
enable the websocket option in the listen block and also specify type *text* or *binary*,
|
||||
eg: ```listen { ip *; port 6667; options { websocket { type text; } } }```
|
||||
|
||||
Also note that websockets require nick names and channels to consist of UTF8
|
||||
characters only, due to
|
||||
[WebSocket being incompatible with non-UTF8](https://www.unrealircd.org/docs/WebSocket_support#Problems_with_websockets_and_non-UTF8)
|
||||
* There's now a [Module manager](https://www.unrealircd.org/docs/Module_manager)
|
||||
which allows you to install and upgrade 3rd party modules in an easy way:
|
||||
* ```./unrealircd module list``` - to list all available 3rd party modules
|
||||
* ```./unrealircd module install third/something``` - to install the specified module.
|
||||
* You can now test for configuration errors without actually starting the
|
||||
IRC server. This is ideal if you are upgrading UnrealIRCd to a newer
|
||||
version: simply run ```./unrealircd configtest``` to make sure it passes
|
||||
the configuration test, and then you can safely restart the server for
|
||||
the upgrade (in this example case).
|
||||
* Channel mode +L now kicks in for any rejected join, so not just for +l but
|
||||
also for +b, +i, +O, +z, +R and +k. If, for example, the channel is
|
||||
+L #insecure and also +z then, when an insecure user ties to join, they
|
||||
will be redirected to #insecure.
|
||||
* New extended ban ~f to forward users to the specified channel if the ban
|
||||
matches. Example: ```MODE #chan +b ~f:#badisp:*!*@*.isp.org```
|
||||
* Channel mode +f now has a 'd' action: drop message. This will send an
|
||||
error message to the user and not show the message in the channel but
|
||||
otherwise do nothing (no kick or ban).
|
||||
For example: ```MODE #chan +f [5t#d]:15``` will limit sending a maximum of
|
||||
5 messages per 15 seconds per-user and drop any messages sent above that limit.
|
||||
* Channel mode +f now has 'r' floodtype to prevent repeated lines. This will
|
||||
compare the current message to the last message and the one before that
|
||||
the user sent to the channel. If it's a repeat then the user can be
|
||||
kicked (the default action), the message can be dropped ('d') or the
|
||||
user can be banned ('b'). Example: ```MODE #chan +f [1r#d]:15```
|
||||
If you want to permit 1 repeated line but not 2 then use: ```+f [2r#d]:15```
|
||||
* New module **tkldb** (loaded by default): all *LINES and spamfilters are now
|
||||
saved across reboots. No need for services for that anymore.
|
||||
* New module **channeldb** (loaded by default): saves and restores all channel
|
||||
settings including topic, modes, bans etc. of +P (persistent) channels.
|
||||
* New module [restrict-commands](https://www.unrealircd.org/docs/Set_block#set::restrict-commands), which allows you to restrict any IRC
|
||||
command based on criteria such as "how long is this user connected",
|
||||
"is this user registered (has a services account)" etc.
|
||||
The example.conf now ships with configuration to disable LIST the
|
||||
first 60 seconds and disable INVITE the first 120 seconds.
|
||||
If you are having spambot problems then tweaking this configuration
|
||||
may be helpful to you.
|
||||
* New option [set::require-module](https://www.unrealircd.org/docs/Set_block#set::require-module), which allows you to require certain
|
||||
modules on other UnrealIRCd 5 servers, otherwise the link is rejected.
|
||||
* New option [set::min-nick-length](https://www.unrealircd.org/docs/Set_block#set::min-nick-length) to set a minimum nick length.
|
||||
* New module rmtkl (loaded by default): this allows you to remove TKL's
|
||||
such as GLINEs easily via the /RMTKL command.
|
||||
* The [reputation and connthrottle](https://www.unrealircd.org/docs/Connthrottle) modules are now loaded by default.
|
||||
Just as a reminder, what these do is classifying your users in "known
|
||||
users (known IP's)" and "unknown IP's" for IP's that have not been
|
||||
seen before (or only for a short amount of time). Then, when there
|
||||
is a connection flood, unknown/new IP addresses are throttled at
|
||||
20 connections per minute, while known users are always allowed in.
|
||||
* Add support for [defines and conditional configuration](https://www.unrealircd.org/docs/Defines_and_conditional_config) via @define and @if.
|
||||
This is mostly for power users, in particular users who share the same
|
||||
configuration file across several servers.
|
||||
* New extban ~p to hide the part/quit message in PART and QUIT.
|
||||
For example: ```MODE #chan +b ~p:*!*@*.nl```
|
||||
* You will now see a warning when a server is not responding even
|
||||
before they time out. How long to wait for a PONG reply upon PING
|
||||
can be changed via [set::ping-warning](https://www.unrealircd.org/docs/Set_block#set::ping-warning) and defaults to 15 seconds.
|
||||
If you see the warning frequently then your connection is flakey.
|
||||
* Add new setting [set::broadcast-channel-messages](https://www.unrealircd.org/docs/Set_block#set::broadcast-channel-messages) which defines when
|
||||
channel messages are sent across server links. The default setting
|
||||
is *auto* which is the correct setting for pretty much everyone.
|
||||
* Add new option [set::part-instead-of-quit-on-comment-change](https://www.unrealircd.org/docs/Set_block#set::part-instead-of-quit-on-comment-change):
|
||||
when a QUIT message is changed due to channel restrictions, such as
|
||||
stripping color or censoring a word, we normally change the QUIT
|
||||
message. This has an effect on ALL channels, not just the one that
|
||||
imposed the restrictions. While we feel that is the best tradeoff,
|
||||
there is now also this new option (off by default) that will change
|
||||
the QUIT into a PART in such a case, so the other channels that
|
||||
do not have the restrictions (eg: are -S and -G) can still see the
|
||||
original QUIT message.
|
||||
* New module [webredir](https://www.unrealircd.org/docs/Set_block#set::webredir::url). Quite some people run their IRCd on port 443 or 80
|
||||
so their users can avoid firewall restrictions in place. In such a case,
|
||||
with this module, you can now send a HTTP redirect in case some user
|
||||
enters your IRC server name in their browser. Eg https://irc.example.org/
|
||||
can be made to redirect to https://www.example.org/
|
||||
* We now protect against misbehaving SASL servers and will time out
|
||||
SASL sessions after
|
||||
[set::sasl-timeout](https://www.unrealircd.org/docs/Set_block#set::sasl-timeout),
|
||||
which is 15 seconds by default.
|
||||
|
||||
Changed
|
||||
--------
|
||||
* Channel mode +L can now be set by chanops (+o and higher) instead of only
|
||||
by +q (channel owner)
|
||||
* Channel names must now be valid UTF8 by default.
|
||||
We actually have 3 possible settings of [set::allowed-channelchars](https://www.unrealircd.org/docs/Set_block#set::allowed-channelchars):
|
||||
* **utf8**: Channel must be valid UTF8, this is the new default
|
||||
* **ascii**: A very strict setting, for example in use at freenode,
|
||||
the channel name may not contain high ascii or UTF8
|
||||
* **any**: A very loose setting, which allows almost all characters
|
||||
in the channel name. This was the OLD default, up to and
|
||||
including UnrealIRCd 4. It is no longer recommended.
|
||||
|
||||
For most networks this new default setting of utf8 will be fine, since
|
||||
by far most IRC clients use UTF8 for many years already.
|
||||
If you have a network that has a significant portion of chatters
|
||||
that are on old non-UTF8 clients that use a specific character set
|
||||
then you may want to use ```set { allowed-nickchars any; }```
|
||||
Some Russian and Ukrainian networks are known to need this.
|
||||
* The "except tkl" block is now called [except ban](https://www.unrealircd.org/docs/Except_ban_block#UnrealIRCd_5). If no type
|
||||
is specified in an except ban { } block then we exempt the entry
|
||||
from kline, gline, zline, gzline and shun.
|
||||
* We no longer use a blacklist for stats (set::oper-only-stats).
|
||||
We use a whitelist now instead: [set::allow-user-starts](https://www.unrealircd.org/docs/Set_block#set::allow-user-stats).
|
||||
Most users can just remove their old set::oper-only-stats line,
|
||||
since the new default set::allow-user-starts setting is fine.
|
||||
* Windows: we now require a 64-bit version, Windows 7 or later.
|
||||
The new program path is: C:\Program Files\UnrealIRCd 5
|
||||
and the binaries have been moved to a new subdirectory: bin\
|
||||
* Modules lost their m_ prefix, so for example m_map is now just map.
|
||||
Also the modules in cap/ are now directly in modules.
|
||||
* More modules that were previously PERM (permanent) can now be unloaded
|
||||
and reloaded on the fly. This allows more "hotfixing" without restart
|
||||
in case of a bug and also more control for admins at runtime.
|
||||
Only <5 modules out of 173 are permanent now.
|
||||
* User mode +T now blocks channel CTCPs as well.
|
||||
* User mode +q (unkickable) could previously be set by any IRCOp.
|
||||
This has been changed to require the self:unkickablemode operclass
|
||||
permission. This is included in the *-with-override operclasses
|
||||
(eg: netadmin-with-operoverride).
|
||||
* [set::modes-on-join](https://www.unrealircd.org/docs/Set_block#set::modes-on-join) is now ```+nt``` by default.
|
||||
* The [authprompt](https://www.unrealircd.org/docs/Authentication#How_it_looks_like) module is now loaded by default. This means that if
|
||||
you do a soft kline on someone (eg: ```KLINE %*@*.badisp```) then the user
|
||||
has a chance to [authenticate](https://www.unrealircd.org/docs/Authentication#How_it_looks_like) to services, even without SASL, and
|
||||
bypass the ban if (s)he is authenticated.
|
||||
* The WHOX module is now used by default. Previously it was optional.
|
||||
WHOX enhances the "WHO" output, providing additional information to
|
||||
IRC clients such as the services account that someone is using.
|
||||
It is also more universal than standard WHO. Unfortunately this also
|
||||
means the WHO syntax changed to something less logical.
|
||||
* At many places the term *SSL* has been changed to *SSL/TLS* or *TLS*.
|
||||
Configuration items (eg: set::ssl to set::tls) have been renamed
|
||||
as well and so have directories (eg: conf/ssl to conf/tls).
|
||||
The old configuration names still work and currently does NOT raise
|
||||
any warning. Also, when upgrading an existing installation on *NIX,
|
||||
the conf/tls directory will be symlinked to conf/ssl as to not break
|
||||
any Let's Encrypt certificate scripts.
|
||||
* It is now mandatory to have at least one open SSL/TLS port, otherwise
|
||||
UnrealIRCd will refuse to boot. Previously this was a warning.
|
||||
* IRCOps now need to use SSL/TLS in order to oper up, as the
|
||||
[set::plaintext-policy::oper](https://www.unrealircd.org/docs/Set_block#set::plaintext-policy) default setting is now 'deny'.
|
||||
Similarly, [set::outdated-tls-policy::oper](https://www.unrealircd.org/docs/Set_block#set::outdated-tls-policy) is now also 'deny'.
|
||||
You can change this, if you want, but it is not recommended.
|
||||
* [set::outdated-tls-policy::server](https://www.unrealircd.org/docs/Set_block#set::outdated-tls-policy) is now 'deny' as well, since all
|
||||
servers should use reasonable SSL/TLS protocols and ciphers.
|
||||
* The default generated certificated has been changed from RSA 4096 bits
|
||||
to Elliptic Curve Cryptography "384r1". This provides the same amount
|
||||
of security but at higher speed. This only affects the default self-
|
||||
signed certificate. You can still use RSA certificates just fine.
|
||||
* If you do use an RSA certificate, we now require it to be at least
|
||||
2048 bits otherwise UnrealIRCd will refuse to boot.
|
||||
* When matching [allow { } blocks](https://www.unrealircd.org/docs/Allow_block), we now always continue with the next
|
||||
block (if any) if the password did not match or no password was
|
||||
specified. In other words, allow::options::nopasscont is now the
|
||||
default and we behave as if there was a ::wrongpasscont too.
|
||||
* All snomasks are now oper-only. Previously some were not, which
|
||||
was confusing and could lead to information leaks.
|
||||
Also removed weird set::snomask-on-connect accordingly.
|
||||
* The IRCd now uses hash tables that are resilient against hash table
|
||||
attacks. Also, the hash tables have increased in size to speed things
|
||||
up when looking up nick names etc.
|
||||
* Server options in VERSION (eg: Fhin6OoEMR3) are no longer shown to
|
||||
normal users. They don't mean much nowadays anyway.
|
||||
* ```./Config``` now asks fewer questions and configure runs faster since
|
||||
many unnecessary checks have been removed (compatibility with very
|
||||
old compilers / systems).
|
||||
* We now default to system libs (eg: ```--with-system-pcre2``` is assumed)
|
||||
* Spamfilter should catch some more spam evasion techniques.
|
||||
* All /DCCDENY and deny dcc { } parsing and checking is now moved to
|
||||
the 'dccdeny' module.
|
||||
* Windows: If you choose to run UnrealIRCd as a service then it now
|
||||
runs under the low-privilege NetworkService account rather than
|
||||
the high-privilege LocalSystem account.
|
||||
|
||||
Minor issues fixed
|
||||
-------------------
|
||||
* Specifying a custom OpenSSL/LibreSSL path should work now
|
||||
|
||||
Removed
|
||||
--------
|
||||
* Support for old server protocols has been removed.
|
||||
This means UnrealIRCd 5.x cannot link to 3.2.x. It also means you need
|
||||
to use reasonably new services. Generally, if your services can link to
|
||||
4.x then they should be able to link to 5.x as well. More information
|
||||
about this change and why it was done
|
||||
[can be found here](https://www.unrealircd.org/docs/FAQ#old-server-protocol).
|
||||
* Connecting with a server password will no longer send that password
|
||||
to NickServ. Use [SASL](https://www.unrealircd.org/docs/SASL) instead!
|
||||
* Extended ban ~R (registered nick): this was the old method to match
|
||||
registered users. Everyone should use ~a (services account) instead.
|
||||
* The old TRE **posix** regex method has been removed because the TRE
|
||||
library is no longer maintained for over a decade and contains many
|
||||
bugs. (It was already deprecated in UnrealIRCd 4.2.3).
|
||||
Use type **regex** instead, which uses the modern PCRE2 regex engine.
|
||||
* Timesync support has been removed. Use your OS time synchronization
|
||||
instead. (Note that Timesync was already disabled by default in 2018)
|
||||
* Changing time offsets via ```TSCTL OFFSET``` and ```TSCTL SVSTIME``` are no longer
|
||||
supported. Use your OS time synchronization (NTP!). Adjustments via
|
||||
TSCTL are simply not accurate enough.
|
||||
* The *nopost* module was removed since it no longer serves any useful
|
||||
purpose. UnrealIRCd already protects against these kind of attacks
|
||||
via ping cookies ([set::ping-cookie](https://www.unrealircd.org/docs/Set_block#set::ping-cookie), enabled by default).
|
||||
|
||||
Deprecated
|
||||
-----------
|
||||
* The set::official-channels block is now deprecated. This provided a
|
||||
mechanism to pre-configure channels that would have 0 members and
|
||||
would appear in /LIST with those settings, but once you joined all
|
||||
those settings would be gone. Rather confusing.
|
||||
|
||||
Since UnrealIRCd 4.x we have permanent channels (+P) and since 5.x
|
||||
we store these permanent channels in a database so all settings are
|
||||
saved every few minutes and across restarts.
|
||||
|
||||
Since permanent channels (+P) are much better, the official-channels
|
||||
support will be removed in a later version. There's no reason to
|
||||
use official-channels anymore.
|
||||
|
||||
Developers
|
||||
-----------
|
||||
* The module header is now as follows:
|
||||
|
||||
ModuleHeader MOD_HEADER
|
||||
= {
|
||||
"nameofmodule",
|
||||
"5.0",
|
||||
"Some description",
|
||||
"Name of Author",
|
||||
"unrealircd-5",
|
||||
};
|
||||
There's a new author field, the version must start with a digit,
|
||||
and also the name of the module must match the loadmodule name.
|
||||
So for example third/funmod must also be named third/funmod.
|
||||
* The ```MOD_TEST```, ```MOD_INIT```, ```MOD_LOAD``` and ```MOD_UNLOAD``` functions no longer
|
||||
take a name argument. So: ```MOD_INIT(mymod)``` is now ```MOD_INIT()```
|
||||
* We now use our own BuildBot infrastructure, so Travis-CI and AppVeyor
|
||||
have been removed.
|
||||
* We now use a new test framework.
|
||||
* ```Auth_Check()``` now returns ```1``` for allow and ```0``` on deny (!!)
|
||||
* New function ```new_message()``` which should be called when a new message
|
||||
is sent, or at least for all channel events. It adds (or inherits)
|
||||
message tags like 'account', 'msgid', 'time', etc.
|
||||
* Many send functions now take an extra MessageTag *mtags parameter,
|
||||
including but not limited to: sendto_one() and sendto_server().
|
||||
* Command functions (CMD_FUNC) have an extra ```MessageTag *mtags```,
|
||||
on the other hand the ```cptr``` parameter has been removed.
|
||||
* Command functions no longer return ```int``` but are ```void```,
|
||||
the same is true for ```exit_client()```. ```FLUSH_BUFFER``` has been removed too.
|
||||
All this is a consequence of removing this (limited) signaling
|
||||
of client exits. From now on, if you call ```exit_client()``` it will free
|
||||
a lot of the client data and exit the user (close socket, send [s]quit),
|
||||
but it will **not free 'sptr' itself**, so you can simply check if some
|
||||
upstream function killed the client by checking ```IsDead(sptr)```.
|
||||
This is highly recommended after running ```do_cmd()``` or calling other
|
||||
functions that could kill a client. In which case you should return
|
||||
rather than continue doing anything with ```sptr```.
|
||||
Ultimately, in the main loop, the client will be freed (normally in less than 1 second).
|
||||
* New single unified ```sendto_channel()``` and ```sendto_local_common_channels()```
|
||||
functions that are used by all the channel commands.
|
||||
* Numerics should now be sent using ```sendnumeric()```. There's also
|
||||
a format string version ```sendnumericfmt()``` in case you need it,
|
||||
in which case you need to pass the numeric format string yourself.
|
||||
In such a case, don't forget the colon character, like ":%s", where needed.
|
||||
* The parameters in several hooks have changed. Many now have an
|
||||
extra ```MessageTag *mtags``` parameter. Sometimes there are other changes
|
||||
as well, for example ```HOOKTYPE_CHANMSG``` now has 4 extra parameters.
|
||||
* You can call do_cmd() with NULL mtags. Usually this is the correct way.
|
||||
* If you used ```HOOKTYPE_PRE_USERMSG``` to block a message then you
|
||||
should now use ```HOOKTYPE_CAN_SEND_TO_USER```. Similarly, the hook
|
||||
```HOOKTYPE_CAN_SEND``` which deals with channels is now called
|
||||
```HOOKTYPE_CAN_SEND_TO_CHANNEL```. Some other remarks:
|
||||
* You CANNOT use HOOKTYPE_PRE_USERMSG anymore.
|
||||
* The hooks require you to set an error message if you return HOOK_DENY.
|
||||
* You should not send an error message yourself from these hooks.
|
||||
In other words: do not use sendnumeric(). This is done by the
|
||||
hook caller, based on the error message you return.
|
||||
* Thanks to this, all rejecting of user messages now use generic
|
||||
numeric 531 and all rejecting of channel messages use numeric 404.
|
||||
See also under *Client protocol* later in this document.
|
||||
* If you use CommandOverrideAddEx() to specify a priority value (rare)
|
||||
then be aware that in 5.0.1 we now use the 4.0.x behavior again to
|
||||
match the same style of priorities in hooks: overrides with the
|
||||
lowest priority are run first.
|
||||
* If you ever send a timestamp in a printf-like function, such as
|
||||
in ```sendto_server()```, then be sure to use ```%lld``` and cast the timestamp
|
||||
to *long long* so that it is compatible with both *NIX and Windows.
|
||||
Example: ```sendnotice(sptr, "Timestamp is %lld", (long long)ts);```
|
||||
* ```EventAdd()``` changed the order of parameters and expects every_msec now
|
||||
which specifies the time in milliseconds rather than seconds. This
|
||||
allows for additional precision, or at least multiple calls per second.
|
||||
The minimum allowed every_msec value is 100 at this time.
|
||||
The prototype is now: ```EventAdd(Module *module, char *name,
|
||||
vFP event, void *data, long every_msec, int count);```
|
||||
* New ```HOOKTYPE_IS_HANDSHAKE_FINISHED```. If a module returns ```0``` there, then
|
||||
the ```register_user()``` function will not be called and the user will
|
||||
not come online (yet). This is used by CAP and some other stuff.
|
||||
Can be useful if your module needs to "hold" a user in the registration
|
||||
phase.
|
||||
* The function ```is_module_loaded()``` now takes a relative path like
|
||||
"usermodes/noctcp" because with just "ctcp" one could not see the
|
||||
difference between usermodes/noctcp and chanmodes/noctcp.
|
||||
* ```CHFL_CHANPROT``` is now ```CHFL_CHANADMIN```, ```is_chanprot()``` is now ```is_chanadmin()```
|
||||
* All hash tables now use [SipHash](https://en.wikipedia.org/wiki/SipHash), which is a hash function that is
|
||||
resilient against hash table attacks. If you, as a module dev, too
|
||||
use any hash tables anywhere (note: this is quite rare), then you
|
||||
are recommended to use our functions, see the functions siphash()
|
||||
and siphash_nocase() in src/hash.c.
|
||||
* The random generator has been updated to use [ChaCha](https://en.wikipedia.org/wiki/Salsa20#ChaCha20_adoption) (more modern).
|
||||
* You can now save pointers and integers etc. across rehashes by using
|
||||
```LoadPersistentPointer()``` and ```SavePersistentPointer()```. For an example,
|
||||
see ```src/modules/chanmodes/floodprot.c``` how this can be used.
|
||||
Note that there can be no struct or type changes between rehashes.
|
||||
* New ModData types: ```MODDATA_LOCALVAR``` and ```MODDA_GLOBALVAR```. These are
|
||||
settings or things that are locally or globally identified by the
|
||||
variable name only and not attached to any user/channel.
|
||||
* Various files have been renamed. As previously mentioned, the m_
|
||||
prefix was dropped in ```src/modules/m_*.c```. Similarly the s_ prefix
|
||||
was dropped in ```src/s_*.c``` since it no longer had meaning. Also some
|
||||
files have been deleted and integrated elsewhere or renamed to
|
||||
have a name that better reflects their true meaning.
|
||||
Related to this change is that all command functions are now called
|
||||
```cmd_name``` rather than ```m_name```.
|
||||
* ```HOOKTYPE_CHECK_INIT``` and ```HOOKTYPE_PRE_LOCAL_CONNECT```
|
||||
have their return value changed. You should now return ```HOOK_*```, such
|
||||
as ```HOOK_DENY``` or ```HOOK_CONTINUE```.
|
||||
|
||||
Server protocol
|
||||
----------------
|
||||
* UnrealIRCd 5 now assumes you support the following PROTOCTL options:
|
||||
```NOQUIT EAUTH SID NICKv2 SJOIN SJ3 NICKIP TKLEXT2```.
|
||||
If you fail to use ```SID``` or ```EAUTH``` then you will receive an
|
||||
error. For the other options, support is *assumed*, no warning or
|
||||
error is shown when you lack support. These are options that most,
|
||||
if not all, services support since UnrealIRCd 4.x so it shouldn't be
|
||||
a problem. More information [here](https://www.unrealircd.org/docs/FAQ#old-server-protocol)
|
||||
* ```PROTOCTL MTAGS``` indicates that the server is capable of handling
|
||||
message tags and that the server can cope with 4K lines. (Note that
|
||||
the ordinary non-message-tag part is still limited to 512 bytes).
|
||||
* Pseudo ID support in SASL was removed. We now use real UID's.
|
||||
This breaks services who rely on the old pseudo ID format.
|
||||
|
||||
Client protocol
|
||||
----------------
|
||||
* Support for message tags and other IRCv3 features. See the IRCv3
|
||||
specifications for more details.
|
||||
* When a message is blocked, for whatever reason, we now use a generic
|
||||
numeric response: ```:server 531 yourname targetname :reason``` for the block
|
||||
This replaces all the various NOTICEs, ```ERR_NOCTCP```, ```ERR_NONONREG```, etc.
|
||||
with just one single numeric.
|
||||
The only other numerics that you may still encounter when PM'ing are
|
||||
```ERR_NOSUCHNICK```, ```ERR_TOOMANYTARGETS``` and ```ERR_TARGETTOOFAST```, which are
|
||||
generic errors to any command involving targets. And ```ERR_SERVICESDOWN```.
|
||||
Note that channel messages already had a generic numeric for signaling
|
||||
blocked messages for a very long time, ```ERR_CANNOTSENDTOCHAN```.
|
||||
* The 271 response to the SILENCE command is now:
|
||||
```:server 271 yournick listentry!*@*```
|
||||
Previously the nick name appeared twice, which was a mistake.
|
||||
* The 470 numeric, which is sent on /JOIN #channel redirect to #redirect
|
||||
now uses the following format:
|
||||
```:server 470 yournick #channel #redirect :[Link] Cannot join channel...etc..```
|
||||
* Clients are recommended to implement and enable the
|
||||
[server-time](https://ircv3.net/specs/extensions/server-time-3.2)
|
||||
extension by default. When enabled, channel history is played back
|
||||
on-join (if any) when the channel has channel mode +H.
|
||||
Otherwise your users will not see channel history.
|
||||
@@ -1,123 +0,0 @@
|
||||
Rules about patches & modifications to UnrealIRCd
|
||||
|
||||
1. When making a change, always add a small description in the commit log.
|
||||
Don't forget to mention the bug# and credit the reporter (if any).
|
||||
|
||||
2. If new files are made, they must contain proper copyright headers.
|
||||
|
||||
3. Each bug or feature should have a bug# so people can have a discussion
|
||||
about it. This has a few implications (read!!):
|
||||
* People must report bugs/feature requests to bugs.unrealircd.org and
|
||||
not on IRC, e-mail, etc.
|
||||
* That means other people can see the bug# and comment on it. This means
|
||||
discussion is easy to read back for each issue and not spread between
|
||||
several IRC logs.
|
||||
Furthermore, by using the bugtracker instead of directly committing,
|
||||
people could point out that there might be a better way to do things
|
||||
than you originally thought, or it might be that other devs don't like
|
||||
it at all.
|
||||
* If a head coder has 'acknowledged' or 'confirmed' the issue or stated
|
||||
in a comment that it's OK to implement, then any dev may take the issue.
|
||||
The dev should change the status to 'assigned' and work on it, then
|
||||
commit and change it to 'resolved', set 'fixed in version' to the
|
||||
correct release, and add a comment pasting the relevant commit log.
|
||||
Of course other guidelines, in particular rule #7, still applies.
|
||||
|
||||
4. If you don't have direct write access to the repository then you can
|
||||
submit changes as as PR on github. It is very much preferred to also
|
||||
have a bugs.unrealircd.org entry for it as well (see previous item).
|
||||
|
||||
5. For the stable branch, in general, only commit changes that have an
|
||||
associated bugid# and/or were discussed.
|
||||
For branches currently in development (alpha/beta) there's more freedom
|
||||
and if you think the change will be small and is fine without a
|
||||
discussion then feel free to commit.
|
||||
|
||||
6. Regarding reidenting, restructuring or other major code cleanups: please
|
||||
discuss before doing so. The other devs might not agree with you on the
|
||||
particular cleanup you have in mind which would result in another
|
||||
clean-up-the-cleanup commit.
|
||||
You may, however reindent and clean up individual sections when you are
|
||||
working on fixing a particular bug# or implementing a new feature. In fact
|
||||
you're encouraged to do so if the code is confusing without it. However,
|
||||
obey the style of Unreal's code (mostly outlined in this document)
|
||||
and do not introduce yet another (new) style. Also, be careful with doing
|
||||
any cleanup: if you're unsure in any way about the use of something,
|
||||
or something that looks redundant on first sight, then look more
|
||||
carefully... it might indeed be useless and/or redundant, but it might
|
||||
also be a subtle thing that can create great bugs when 'cleaned up'.
|
||||
|
||||
7. During the Release Candidate stage (from RC1 until the final release)
|
||||
only the head coder may commit directly, all others should ask and
|
||||
present their patch before committing. Yes, even if you are changing
|
||||
only 1 line of code or text.
|
||||
|
||||
9. UnrealIRCd should compile on all supported operating systems and
|
||||
platforms, using GCC 3 or higher on *NIX, and Visual Studio 2008 or
|
||||
higher on Windows. This means you cannot blindly use all C99 extensions.
|
||||
|
||||
10. Coders must test their code before committing.
|
||||
|
||||
11. /*
|
||||
* These kind of comments
|
||||
*/
|
||||
|
||||
NOT
|
||||
|
||||
// These kind of comments
|
||||
|
||||
12. if (something == 1)
|
||||
{
|
||||
moo; /* comment */
|
||||
/* This does what what what */
|
||||
cow(go(moo));
|
||||
}
|
||||
|
||||
NOT
|
||||
|
||||
if (something == 1) {
|
||||
}
|
||||
|
||||
13. Do not touch version.c.SH or version.h, unless you are a head coder.
|
||||
If you need a credit in, contact us
|
||||
|
||||
14. Protocol changes must be discussed before making patches for it.
|
||||
|
||||
15. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
|
||||
16. We use tabsize 8 and we use tabs AND NOT SPACES.
|
||||
Some code is old and horrible and has a mix of tabs and spaces used for
|
||||
spacing, that's something we do not want to have ;)
|
||||
|
||||
17. Be careful about overflows. Do not do any unchecked string copies.
|
||||
Instead of strcpy, strcat and sprintf/ircsprintf, use the following
|
||||
functions: strlcpy, strlcat, snprintf/ircnsprintf.
|
||||
If you are copying/writing character-by-character or word-by-word in a
|
||||
loop, eg using *p++ = x; then be very sure about your size counting.
|
||||
Often it's better to avoid such code altogether, by simply using
|
||||
strlcat for everything.
|
||||
|
||||
18. Speed. When optimizing or writing code, keep in mind that readability and
|
||||
stability comes FIRST, and after that comes speed. So we'd rather prefer some
|
||||
readable code (even if difficult) over some odd highly optimized routine which
|
||||
nobody understands, is difficult to extend, and might have several bugs.
|
||||
As mentioned earlier: use ircsnprintf, not snprintf (this is because
|
||||
ircsnprintf is optimized for simple strings like the ones we use).
|
||||
ircsnprintf calls snprintf when it finds a (non-simple) format specifier it
|
||||
can't handle. Simple format specifiers do not have prefixes other than
|
||||
h and l.
|
||||
|
||||
19. Initialize your structs and use the proper memory calls.
|
||||
In UnrealIRCd we use safe_alloc, safe_free, safe_strdup and safe_strldup.
|
||||
Do NOT use malloc, calloc or strdup.
|
||||
|
||||
20. Comment your code! This should speak for itself...
|
||||
Put comments wherever you think they are needed, to aid any further coders
|
||||
with reading your code.. and, in fact, it will aid yourself as well if you
|
||||
would look back at your code 2 years later.
|
||||
If there's some obscure pitfall, DO mention it! Don't just "hope" a next
|
||||
author will see it like you did.
|
||||
|
||||
21. Use enums whenever possible, rather than #define constants. Besides making
|
||||
things more clean, it also aids debugging.
|
||||
@@ -0,0 +1,334 @@
|
||||
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
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
For information on how to compile UnrealIRCd (modules) on Windows, see:
|
||||
https://www.unrealircd.org/docs/Compiling_UnrealIRCd_on_Windows
|
||||
+1762
File diff suppressed because it is too large
Load Diff
@@ -1,43 +0,0 @@
|
||||
/* Standard Aliases */
|
||||
|
||||
alias identify {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
}
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
parameters "IDENTIFY %1-";
|
||||
}
|
||||
type command;
|
||||
}
|
||||
|
||||
alias services {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
parameters "%1-";
|
||||
}
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
parameters "%1-";
|
||||
}
|
||||
type command;
|
||||
}
|
||||
|
||||
alias register {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
parameters "REGISTER %1-";
|
||||
}
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
parameters "REGISTER %1-";
|
||||
}
|
||||
type command;
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
/* Anope Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
alias hostserv { type services; }
|
||||
alias hs { target hostserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/* Atheme Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
alias hostserv { type services; }
|
||||
alias hs { target hostserv; type services; }
|
||||
alias saslserv { type services; }
|
||||
alias sss { target saslserv; type services; }
|
||||
alias gameserv { type services; }
|
||||
alias gms { target gameserv; type services; }
|
||||
alias groupserv { type services; }
|
||||
alias grs { target groupserv; type services; }
|
||||
alias alis { type services; }
|
||||
alias ls { target alis; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/* Auspice Aliases */
|
||||
|
||||
/* Uncomment this, if you have enabled "MassServ, W and X" in auspice */
|
||||
# alias massserv { type services; }
|
||||
# alias ma { target massserv; type services; }
|
||||
# alias W { type services; }
|
||||
# alias X { type services; }
|
||||
|
||||
/* Uncomment this, if you have enabled "WebServ" in auspice */
|
||||
# alias webserv { type services; }
|
||||
# alias ws { target webserv; type services; }
|
||||
|
||||
alias agent { type services; }
|
||||
alias adminserv { type services; }
|
||||
alias as { target adminserv; type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
alias hostserv { type services; }
|
||||
alias ho { target hostserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias rootserv { type services; }
|
||||
alias rs { target rootserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,12 +0,0 @@
|
||||
/* Cygnus Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias rootserv { type services; }
|
||||
alias rs { target rootserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,16 +0,0 @@
|
||||
/* Epona Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
alias botserv { type services; }
|
||||
alias bs { target botserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,14 +0,0 @@
|
||||
/* Generic Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,4 +0,0 @@
|
||||
/* Generic StatServ Aliases */
|
||||
|
||||
alias statserv { type stats; }
|
||||
alias ss { target statserv; type stats; }
|
||||
@@ -1,17 +0,0 @@
|
||||
/* IRCServices Aliases */
|
||||
|
||||
alias nickserv { type services; }
|
||||
alias ns { target nickserv; type services; }
|
||||
alias chanserv { type services; }
|
||||
alias cs { target chanserv; type services; }
|
||||
alias memoserv { type services; spamfilter yes; }
|
||||
alias ms { target memoserv; type services; spamfilter yes; }
|
||||
alias operserv { type services; }
|
||||
alias os { target operserv; type services; }
|
||||
alias helpserv { type services; }
|
||||
alias hs { target helpserv; type services; }
|
||||
alias irciihelp { type services; }
|
||||
alias statserv { type services; }
|
||||
alias ss { target statserv; type services; }
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -1,6 +0,0 @@
|
||||
/* OperStats Aliases */
|
||||
|
||||
alias operserv { type stats; }
|
||||
alias os { target operserv; type stats; }
|
||||
alias statserv { type stats; }
|
||||
alias ss { target statserv; type stats; }
|
||||
@@ -1,51 +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 all { word "pussy"; }
|
||||
badword all { word "fuck"; }
|
||||
badword all { word "whore"; }
|
||||
badword all { word "slut"; }
|
||||
badword all { word "shit"; }
|
||||
badword all { word "asshole"; }
|
||||
badword all { word "bitch"; }
|
||||
badword all { word "cunt"; }
|
||||
badword all { word "vagina"; }
|
||||
badword all { word "penis"; }
|
||||
badword all { word "jackass"; }
|
||||
badword all { word "*fucker*"; }
|
||||
badword all { word "faggot"; }
|
||||
badword all { word "fag"; }
|
||||
badword all { word "horny"; }
|
||||
badword all { word "dickhead"; }
|
||||
badword all { word "sonuvabitch"; }
|
||||
badword all { word "*fuck*"; }
|
||||
badword all { word "tits"; }
|
||||
@@ -1,42 +0,0 @@
|
||||
/* Example of a possible semi-secure /DCCALLOW configuration written by Syzop.
|
||||
* $Id$
|
||||
*
|
||||
* Actually nothing is *100% secure*... there could still be
|
||||
* bugs in the software itself (think: a winamp bug that can
|
||||
* be exploited via an mp3, or: a wmplayer bug that can be
|
||||
* exploited via a specially crafted .wmv, etc..).
|
||||
* If you are really that paranoid you could just remove
|
||||
* all 'allow dcc'-blocks and prompt the user for EVERY file ;).
|
||||
*
|
||||
* Still, I think this file is a good tradeoff between userfriendlyness
|
||||
* and security. Note that when you try to only DENY specific
|
||||
* file type (exe, com, etc) you are *guaranteed* to miss ones
|
||||
* (like: did you know .r17 gets treated as a rar archive?
|
||||
* and that an exe can be disguished as .cmd which is executable
|
||||
* on nt/w2k/xp?)
|
||||
*/
|
||||
|
||||
/* first.. deny everything, then allow known-good stuff... */
|
||||
deny dcc { filename "*"; reason "Possible executable content"; soft yes; }
|
||||
/* common image formats */
|
||||
allow dcc { filename "*.jpg"; soft yes; }
|
||||
allow dcc { filename "*.jpeg"; soft yes; }
|
||||
allow dcc { filename "*.gif"; soft yes; }
|
||||
allow dcc { filename "*.png"; soft yes; }
|
||||
allow dcc { filename "*.bmp"; soft yes; }
|
||||
/* audio / video (but not scripted/playlists!) */
|
||||
allow dcc { filename "*.mp1"; soft yes; }
|
||||
allow dcc { filename "*.mp2"; soft yes; }
|
||||
allow dcc { filename "*.mp3"; soft yes; }
|
||||
allow dcc { filename "*.mpg"; soft yes; }
|
||||
allow dcc { filename "*.mpeg"; soft yes; }
|
||||
allow dcc { filename "*.m1v"; soft yes; }
|
||||
allow dcc { filename "*.m2v"; soft yes; }
|
||||
allow dcc { filename "*.vob"; soft yes; }
|
||||
allow dcc { filename "*.wav"; soft yes; }
|
||||
/* text / misc */
|
||||
allow dcc { filename "*.txt"; soft yes; }
|
||||
allow dcc { filename "*.log"; soft yes; }
|
||||
allow dcc { filename "*.pdf"; soft yes; }
|
||||
allow dcc { filename "*.c"; soft yes; }
|
||||
allow dcc { filename "*.cpp"; soft yes; }
|
||||
@@ -1,592 +0,0 @@
|
||||
/* Configuration file for UnrealIRCd 5
|
||||
*
|
||||
* Simply copy this file to your conf/ directory, call it
|
||||
* 'unrealircd.conf' and walk through it line by line (edit it!)
|
||||
*
|
||||
* Important: All lines, except { and } end with an ;
|
||||
* This is very important, if you miss a ; somewhere then the
|
||||
* configuration file parser will complain and the file will not
|
||||
* be processed correctly!
|
||||
* If this is your first experience with an UnrealIRCd configuration
|
||||
* file then we really recommend you to read a little about the syntax,
|
||||
* this only takes a few minutes and will help you a lot:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* UnrealIRCd 5 documentation (very extensive!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_5_documentation
|
||||
*
|
||||
* Frequently Asked Questions:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* This is a comment, all text here is ignored (comment type #1) */
|
||||
// This is also a comment, this line is ignored (comment type #2)
|
||||
# This is also a comment, again this line is ignored (comment type #3)
|
||||
|
||||
/* UnrealIRCd makes heavy use of modules. Modules allow you to completely
|
||||
* customize the featureset you wish to enable in UnrealIRCd.
|
||||
* See: https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* By using the include below we instruct the IRCd to read the file
|
||||
* 'modules.default.conf' which will load more than 150 modules
|
||||
* shipped with UnrealIRCd. In other words: this will simply load
|
||||
* all the available features in UnrealIRCd.
|
||||
* If you are setting up UnrealIRCd for the first time we suggest you
|
||||
* use this. Then, when everything is up and running you can come
|
||||
* back later to customize the list (if you wish).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Now let's include some other files as well:
|
||||
* - help/help.conf for our on-IRC /HELPOP system
|
||||
* - badwords.conf for channel and user mode +G
|
||||
* - spamfilter.conf as an example for spamfilter usage
|
||||
* (commented out)
|
||||
* - operclass.default.conf contains some good operclasses which
|
||||
* you can use in your oper blocks.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* This is the me { } block which basically says who we are.
|
||||
* It defines our server name, some information line and an unique "sid".
|
||||
* The server id (sid) must start with a digit followed by two digits or
|
||||
* letters. The sid must be unique for your IRC network (each server should
|
||||
* have it's own sid).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* The admin { } block defines what users will see if they type /ADMIN.
|
||||
* It normally contains information on how to contact the administrator.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"email@example.org";
|
||||
}
|
||||
|
||||
/* Clients and servers are put in class { } blocks, we define them here.
|
||||
* Class blocks consist of the following items:
|
||||
* - pingfreq: how often to ping a user / server (in seconds)
|
||||
* - connfreq: how often we try to connect to this server (in seconds)
|
||||
* - sendq: the maximum queue size for a connection
|
||||
* - recvq: maximum receive queue from a connection (flood control)
|
||||
*/
|
||||
|
||||
/* Client class with good defaults */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Special class for IRCOps with higher limits */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Server class with good defaults */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* try to connect every 15 seconds */
|
||||
maxclients 10; /* max servers */
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
/* Allow blocks define which clients may connect to this server.
|
||||
* This allows you to add a server password or restrict the server to
|
||||
* specific IP's only. You also configure the maximum connections
|
||||
* allowed per IP here.
|
||||
* See also: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Allow everyone in, but only 3 connections per IP */
|
||||
allow {
|
||||
ip *@*;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Example of a special allow block on a specific IP:
|
||||
* Requires users on that IP to connect with a password. If the password
|
||||
* is correct then it permits 20 connections on that IP.
|
||||
*/
|
||||
allow {
|
||||
ip *@192.0.2.1;
|
||||
class clients;
|
||||
password "somesecretpasswd";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Oper blocks define your IRC Operators.
|
||||
* IRC Operators are people who have "extra rights" compared to others,
|
||||
* for example they may /KILL other people, initiate server linking,
|
||||
* /JOIN channels even though they are banned, etc.
|
||||
*
|
||||
* For more information about becoming an IRCOp and how to do admin
|
||||
* tasks, see: https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* For details regarding the oper { } block itself, see
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Here is an example oper block for 'bobsmith' with password 'test'.
|
||||
* You MUST change this!!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Oper permissions are defined in an 'operclass' block.
|
||||
* See https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd ships with a number of default blocks, see
|
||||
* the article for a full list. We choose 'netadmin' here.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "is a Network Administrator";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Listen blocks define the ports where the server should listen on.
|
||||
* In other words: the ports that clients and servers may use to
|
||||
* connect to this server.
|
||||
*
|
||||
* Syntax:
|
||||
* listen {
|
||||
* {
|
||||
* ip <ip>;
|
||||
* port <port>;
|
||||
* options {
|
||||
* <options....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Standard IRC port 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Standard IRC SSL/TLS port 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Special SSL/TLS servers-only port for linking */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* NOTE: If you are on an IRCd shell with multiple IP's and you use
|
||||
* the above listen { } blocks then you will likely get an
|
||||
* 'Address already in use' error and the ircd won't start.
|
||||
* This means you MUST bind to a specific IP instead of '*' like:
|
||||
* listen { ip 1.2.3.4; port 6667; }
|
||||
* Of course, replace the IP with the IP that was assigned to you.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Link blocks allow you to link multiple servers together to form a network.
|
||||
* See https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.example.org
|
||||
{
|
||||
incoming {
|
||||
mask *@something;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* or explicitly an IP */
|
||||
hostname hub.example.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* We use the SPKI fingerprint of the other server for authentication.
|
||||
* Run './unrealircd spkifp' on the other side to get it.
|
||||
*/
|
||||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* The link block for services is usually much simpler.
|
||||
* For more information about what Services are,
|
||||
* see https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
link services.example.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "changemeplease";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* U-lines give other servers (even) more power/commands.
|
||||
* If you use services you must add them here.
|
||||
* NEVER put the name of an UnrealIRCd server here!!!
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Here you can add a password for the IRCOp-only /DIE and /RESTART commands.
|
||||
* This is mainly meant to provide a little protection against accidental
|
||||
* restarts and server kills.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* The log block defines what should be logged and to what file.
|
||||
* See also https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* This is a good default, it logs everything */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
flood;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/* With "aliases" you can create an alias like /SOMETHING to send a message to
|
||||
* some user or bot. They are usually used for services.
|
||||
*
|
||||
* We have a number of pre-set alias files, check out the alias/ directory.
|
||||
* As an example, here we include all aliases used for anope services.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Ban nick names so they cannot be used by regular users */
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reserved for Services";
|
||||
}
|
||||
|
||||
/* Ban ip.
|
||||
* Note that you normally use /KLINE, /GLINE and /ZLINE for this.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Hate you";
|
||||
}
|
||||
|
||||
/* Ban server - if we see this server linked to someone then we delink */
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Get out of here.";
|
||||
}
|
||||
|
||||
/* Ban user - just as an example, you normally use /KLINE or /GLINE for this */
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
}
|
||||
|
||||
/* Ban realname allows you to ban clients based on their 'real name'
|
||||
* or 'gecos' field.
|
||||
*/
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Ban and TKL exceptions. Allows you to exempt users / machines from
|
||||
* KLINE, GLINE, etc.
|
||||
* If you are an IRCOp with a static IP (and no untrusted persons on that IP)
|
||||
* then we suggest you add yourself here. That way you can always get in
|
||||
* even if you accidentally place a *LINE ban on yourself.
|
||||
*/
|
||||
|
||||
/* except ban protects you from KLINE and ZLINE */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// you may add more mask entries here..
|
||||
}
|
||||
|
||||
/* except ban with type 'all' protects you from GLINE, GZLINE, QLINE, SHUN */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* With deny dcc blocks you can ban filenames for DCC */
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Possible Sub7 Virus";
|
||||
}
|
||||
|
||||
/* deny channel allows you to ban a channel (mask) entirely */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez is illegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* VHosts (Virtual Hosts) allow users to acquire a different host.
|
||||
* See https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Example vhost which you can use. On IRC type: /VHOST test test
|
||||
* NOTE: only people with an 'unrealircd.com' host may use it so
|
||||
* be sure to change the vhost::mask before you test.
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Blacklist blocks will query an external DNS Blacklist service
|
||||
* whenever a user connects, to see if the IP address is known
|
||||
* to cause drone attacks, is a known hacked machine, etc.
|
||||
* Documentation: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* Or just have a look at the blocks below.
|
||||
*/
|
||||
|
||||
/* DroneBL, probably the most popular blacklist used by IRC Servers.
|
||||
* See https://dronebl.org/ for their documentation and the
|
||||
* meaning of the reply types. At time of writing we use types:
|
||||
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
|
||||
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
|
||||
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
|
||||
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
|
||||
* 16: Autorooting worms.
|
||||
*/
|
||||
blacklist dronebl {
|
||||
dns {
|
||||
name dnsbl.dronebl.org;
|
||||
type record;
|
||||
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone detected. Check https://dronebl.org/lookup?ip=$ip for details.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, see https://rbl.efnetrbl.org/ for documentation
|
||||
* and the meaning of the reply types.
|
||||
* At time of writing: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
|
||||
*
|
||||
* NOTE: If you want to permit TOR proxies on your server, then
|
||||
* you need to remove the '4;' below in the reply section.
|
||||
*/
|
||||
blacklist efnetrbl {
|
||||
dns {
|
||||
name rbl.efnetrbl.org;
|
||||
type record;
|
||||
reply { 1; 4; 5; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone/TOR detected. Check https://rbl.efnetrbl.org/?i=$ip for details.";
|
||||
}
|
||||
|
||||
/* You can include other configuration files */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Network configuration */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Cloak keys should be the same at all servers on the network.
|
||||
* They are used for generating masked hosts and should be kept secret.
|
||||
* The keys should be 3 random strings of 50-100 characters
|
||||
* and must consist of lowcase (a-z), upcase (A-Z) and digits (0-9).
|
||||
* HINT: On *NIX, you can run './unrealircd gencloak' in your shell to let
|
||||
* UnrealIRCd generate 3 random strings for you.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"and another one";
|
||||
"and another one";
|
||||
}
|
||||
}
|
||||
|
||||
/* Server specific configuration */
|
||||
|
||||
set {
|
||||
kline-address "set.this.to.email.address"; /* e-mail or URL shown when a user is banned */
|
||||
modes-on-connect "+ixw"; /* when users connect, they will get these user modes */
|
||||
modes-on-oper "+xws"; /* when someone becomes IRCOp they'll get these modes */
|
||||
modes-on-join "+nt"; /* default channel modes when a new channel is created */
|
||||
oper-auto-join "#opers"; /* IRCOps are auto-joined to this channel */
|
||||
options {
|
||||
hide-ulines; /* hide U-lines in /MAP and /LINKS */
|
||||
show-connect-info; /* show "looking up your hostname" messages on connect */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* maximum number of channels a user may /JOIN */
|
||||
|
||||
/* The minimum time a user must be connected before being allowed to
|
||||
* use a QUIT message. This will hopefully help stop spam.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Or simply set a static quit, meaning any /QUIT reason is ignored */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* static-part does the same for /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Flood protection */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 nick changes per 60 seconds (the default) */
|
||||
connect-flood 3:60; /* 3 connection attempts per 60 seconds (the default) */
|
||||
away-flood 4:120; /* 4 times per 2 minutes you may use /AWAY (default) */
|
||||
}
|
||||
|
||||
/* Settings for spam filter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* default duration of a *LINE ban set by spamfilter */
|
||||
ban-reason "Spam/Advertising"; /* default reason */
|
||||
virus-help-channel "#help"; /* channel to use for 'viruschan' action */
|
||||
/* except "#help"; channel to exempt from Spamfilter */
|
||||
}
|
||||
|
||||
/* Restrict certain commands.
|
||||
* See https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
connect-delay 60;
|
||||
exempt-identified yes;
|
||||
exempt-reputation-score 24;
|
||||
}
|
||||
invite {
|
||||
connect-delay 120;
|
||||
exempt-identified yes;
|
||||
exempt-reputation-score 24;
|
||||
}
|
||||
/* In addition to the ability to restrict any command,
|
||||
* such as shown above. There are also 4 special types
|
||||
* that you can restrict. These are "private-message",
|
||||
* "private-notice", "channel-message" and "channel-notice".
|
||||
* They are commented out (disabled) in this example:
|
||||
*/
|
||||
//private-message {
|
||||
// connect-delay 10;
|
||||
//}
|
||||
//private-notice {
|
||||
// connect-delay 10;
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The following will configure connection throttling of "unknown users".
|
||||
*
|
||||
* When UnrealIRCd detects a high number of users connecting from IP addresses
|
||||
* that have not been seen before, then connections from new IP's are rejected
|
||||
* above the set rate. For example at 10:60 only 10 users per minute can connect
|
||||
* that have not been seen before. Known IP addresses can always get in,
|
||||
* regardless of the set rate. Same for users who login using SASL.
|
||||
*
|
||||
* See also https://www.unrealircd.org/docs/Connthrottle for details.
|
||||
* Or just keep reading the default configuration settings below:
|
||||
*/
|
||||
|
||||
set {
|
||||
connthrottle {
|
||||
/* First we must configure what we call "known users".
|
||||
* By default these are users on IP addresses that have
|
||||
* a score of 24 or higher. A score of 24 means that the
|
||||
* IP was connected to this network for at least 2 hours
|
||||
* in the past month (or minimum 1 hour if registered).
|
||||
* The sasl-bypass option is another setting. It means
|
||||
* that users who authenticate to services via SASL
|
||||
* are considered known users as well.
|
||||
* Users in the "known-users" group (either by reputation
|
||||
* or by SASL) are always allowed in by this module.
|
||||
*/
|
||||
known-users {
|
||||
minimum-reputation-score 24;
|
||||
sasl-bypass yes;
|
||||
}
|
||||
|
||||
/* New users are all users that do not belong in the
|
||||
* known-users group. They are considered "new" and in
|
||||
* case of a high number of such new users connecting
|
||||
* they are subject to connection rate limiting.
|
||||
* By default the rate is 20 new local users per minute
|
||||
* and 30 new global users per minute.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* This configures when this module will NOT be active.
|
||||
* The default settings will disable the module when:
|
||||
* - The reputation module has been running for less than
|
||||
* a week. If running less than 1 week then there is
|
||||
* insufficient data to consider who is a "known user".
|
||||
* - The server has just been booted up (first 3 minutes).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally, you may wish to have a MOTD (Message of the Day), this can be
|
||||
* done by creating an 'ircd.motd' text file in your conf/ directory.
|
||||
* This file will be shown to your users on connect.
|
||||
* For more information see https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
/*
|
||||
* Problems or need more help?
|
||||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- answers 80% of your questions!
|
||||
* 3) If you are still having problems then you can get support:
|
||||
* - Forums: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
|
||||
* Note that we require you to read the documentation and FAQ first!
|
||||
*/
|
||||
@@ -1,456 +0,0 @@
|
||||
/* Fichier de configuration pour UnrealIRCd 5
|
||||
*
|
||||
* Copiez ce fichier dans le répertoire conf/, renommez le
|
||||
* 'unrealircd.conf' et parcourez-le ligne par ligne (modifiez le !)
|
||||
*
|
||||
* Important : Toutes les lignes, sauf celles ne comportant qu'un {
|
||||
* ouvrant, doivent finir par un ; y compris };. C'est très important,
|
||||
* car si vous oubliez un ; quelque part, alors le parser du fichier de
|
||||
* configuration se plaindra et votre fichier ne sera pas lu correctement !
|
||||
* S'il s'agit de votre première expérience avec le fichier de configuration
|
||||
* d'UnrealIRCd, nous vous recommandons de vous documenter un peu à propos
|
||||
* de la syntaxe. Ça ne vous prendra que quelques minutes et vous aidera
|
||||
* beaucoup :
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* Documentation pour UnrealIRCd 5 (très complète !) :
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_5_documentation/fr
|
||||
*
|
||||
* Foire Aux Questions :
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* Ceci est un commentaire, ici, tout le texte est ignoré (type #1) */
|
||||
// Ceci est aussi un commentaire, cette ligne est ignorée (type #2)
|
||||
# Ceci est aussi un commentaire, cette ligne est ignorée (type #3)
|
||||
|
||||
/* UnrealIRCd utilise beaucoup les modules. Ceux-ci vous permettent
|
||||
* de personnaliser complètement les fonctionnalités que vous voulez
|
||||
* activer sur UnrealIRCd.
|
||||
* Voir : https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* En utilisant la ligne include ci-dessous, nous indiquons à l'IRCd de
|
||||
* lire le fichier 'modules.default.conf' ce qui activera plus de 150
|
||||
* modules fournis avec UnrealIRCd. En d'autres termes, ceci activera
|
||||
* toutes les fonctionnalités disponibles d'UnrealIRCd.
|
||||
* Si vous configurez UnrealIRCd pour la première fois, nous vous
|
||||
* conseillons d'utiliser cette ligne. Après, lorsque tout fonctionnera
|
||||
* vous pourrez revenir personnaliser la liste (si vous le souhaitez).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Incluons aussi d'autres fichiers :
|
||||
* - help/help.conf pour le système d'aide sur IRC via /HELPOP
|
||||
* - badwords.conf pour le mode utilisateur et de salon +G
|
||||
* - spamfilter.conf comme exemple d'utilisation de spamfilter
|
||||
* - operclass.default.conf qui contient les classes d'opérateurs
|
||||
* par défaut à utiliser dans vos blocs oper.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* Le bloc me { } indique qui est le serveur.
|
||||
* Il définit le nom du serveur, une ligne d'informations et un identifiant
|
||||
* "sid" unique. L'id du serveur (sid) doit commencer par un chiffre suivit
|
||||
* de deux chiffres ou lettres. Le sid doit être unique sur votre réseau IRC
|
||||
* (chaque serveur doit avoir un sid différent).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "Serveur ExampleNET";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* Le bloc admin { } définit ce que les utilisateurs verront en faisant
|
||||
* /ADMIN. C'est généralement des infos de contact de l'administrateur.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"adresse.email@example.org";
|
||||
}
|
||||
|
||||
/* Les clients et serveurs sont placés dans des classes, que nous
|
||||
* définissons dans ces blocs class { }.
|
||||
* Les blocs de classe comportent les éléments suivants :
|
||||
* - pingfreq: à quelle fréquence envoyer un ping à l'utilisateur ou au
|
||||
* serveur (en secondes)
|
||||
* - connfreq: à quelle fréquence on essaye de se connecter à ce serveur
|
||||
* (en secondes)
|
||||
* - sendq: la taille maximale de la queue d'émission pour une connexion
|
||||
* - recvq: la taille maximale de la queue de réception pour une connexion
|
||||
* (contrôle du flood)
|
||||
*/
|
||||
|
||||
/* Classe pour des clients */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Classe spéciale pour des IRCOps avec des limites plus hautes */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Classe pour des serveurs */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* essayer de se connecter toutes les 15 sec */
|
||||
maxclients 10; /* nombre max de serveurs */
|
||||
sendq 5M;
|
||||
}
|
||||
|
||||
/* Les blocs allow définissent quels clients peuvent se connecter au
|
||||
* serveur. Ils vous permettent d'ajouter un mot de passe ou de restreindre
|
||||
* le serveur à certaines IP seulement. C'est aussi là que vous configurez
|
||||
* le nombre maximum de connexions par IP.
|
||||
* Voir : https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Accepter tout le monde, mais seulement 5 connexions par IP */
|
||||
allow {
|
||||
ip *@*;
|
||||
class clients;
|
||||
maxperip 5;
|
||||
}
|
||||
|
||||
/* Exemple de bloc allow spécial pour une IP donnée :
|
||||
* Les utilisateurs sur cette IP doivent se connecter avec un mot de passe.
|
||||
* S'il est correct, alors autoriser 20 connexions sur cette IP.
|
||||
*/
|
||||
allow {
|
||||
ip *@192.0.2.1;
|
||||
class clients;
|
||||
password "unmotdepassesecret";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Les blocs oper définissent vos Opérateurs IRC.
|
||||
* Les Opérateurs IRC sont des utilisateurs avec des "droits en plus"
|
||||
* par rapport aux autres, par exemple, ils peuvent /KILL (déconnecter)
|
||||
* d'autres utilisateurs, faire se connecter des serveurs entre eux,
|
||||
* /JOIN des salons même s'ils sont bannis, etc ...
|
||||
* Voir aussi : https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Voici un exemple de bloc oper pour 'bobsmith' avec le mot de
|
||||
* passe 'test'.
|
||||
* Vous DEVEZ le modifier !!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Les permissions Oper sont définies dans un bloc 'operclass'.
|
||||
* Voir https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd est fourni avec des classes par défaut, voir la doc
|
||||
* pour une liste complète. Nous avons choisi 'netadmin' ici.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "est un Administrateur du Réseau";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Les blocs listen définissent les ports sur lesquels le serveur écoute.
|
||||
* C'est-à-dire les ports que les clients et les serveurs utilisent pour
|
||||
* se connecter à ce serveur.
|
||||
*
|
||||
* Syntaxe :
|
||||
* listen
|
||||
* {
|
||||
* ip <adresse ip>;
|
||||
* port <numéro de port>;
|
||||
* options {
|
||||
* <options....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Port standard pour IRC 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Port standard pour IRC sur SSL/TLS 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Port SSL/TLS spécial pour la connexion entre serveurs */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* NOTE : Si vous utilisez un serveur IRC avec plusieurs IP et que vous
|
||||
* utilisez les blocs listen ci-dessus, vous aurez peut-être une
|
||||
* erreur 'Address already in use' et l'IRCd ne démarrera pas.
|
||||
* Celle-ci indique que vous devez préciser une IP spécifique
|
||||
* au lieu de '*'. Exemple :
|
||||
* listen 1.2.3.4:6667;
|
||||
* Bien sûr, remplacez 1.2.3.4 par l'IP qui vous est assignée.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Les blocs link vous permettent de connecter plusieurs serveurs ensemble
|
||||
* pour former un réseau IRC.
|
||||
* Voir https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.example.org
|
||||
{
|
||||
incoming {
|
||||
mask *@something;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* ou une IP précise */
|
||||
hostname hub.example.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
password "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF"; /* Empreinte SSL de l'autre serveur */
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* Les U-lines donnent encore plus de pouvoir à certains serveurs.
|
||||
* Si vous utilisez des Services, vous devez les indiquer ici.
|
||||
* NE JAMAIS indiquer le nom d'un serveur UnrealIRCd normal ici !!!
|
||||
* (Si vous ne savez pas ce que sont les Services, voir :
|
||||
* https://www.unrealircd.org/docs/Services )
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Ici vous pouvez indiquer un mot de passe pour les commandes /DIE et
|
||||
* /RESTART, qui sont restreintes aux IRCops.
|
||||
* Il s'agit surtout d'une petite protection contre les redémarrages et
|
||||
* les coupures de serveur accidentels.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* Le bloc log indique ce qui doit être journalisé et dans quel fichier.
|
||||
* Voir aussi https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Ceci est une bonne valeur par défaut, elle journalise presque tout */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/* Avec des "alias", vous pouvez créer un alias comme /UNTRUC pour envoyer
|
||||
* un message à un utilisateur ou à un bot. Ils sont souvent utilisés pour
|
||||
* les services.
|
||||
*
|
||||
* Nous fournissons un certain nombre d'alias par défaut, voir les fichiers
|
||||
* du répertoire aliases/.
|
||||
* Pour exemple, ici nous ajoutons les alias pour les Services Anope.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Bannir des nicks pour qu'ils ne soient pas utilisables par des
|
||||
* utilisateurs normaux
|
||||
*/
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Réservé aux Services";
|
||||
}
|
||||
|
||||
/* Bannir une IP.
|
||||
* NB : vous pouvez aussi utiliser /KLINE, /GLINE et /ZLINE pour ça.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Je vous hais !";
|
||||
}
|
||||
|
||||
/* Bannir un serveur - si ce serveur est connecté au réseau, nous nous
|
||||
* déconnecterons
|
||||
*/
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Va-t-en d'ici.";
|
||||
}
|
||||
|
||||
/* Bannir un utilisateur - juste pour l'exemple, on utilise normalement
|
||||
* /KLINE or /GLINE pour ça
|
||||
*/
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
}
|
||||
|
||||
/* Bannir un realname (ou 'gecos') */
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Exceptions de ban et TKL. Vous permet d'exempter des utilisateurs des
|
||||
* KLINE, GLINE, etc ...
|
||||
* Si vous êtes un IRCOp avec une IP statique (et qu'il n'y a que des
|
||||
* personnes de confiance sur cette IP), alors vous pouvez vous ajouter ici.
|
||||
* Ainsi, vous pourrez toujours vous connecter même si vous vous bannissez
|
||||
* accidentellement.
|
||||
*/
|
||||
|
||||
/* except ban vous protège des KLINE et ZLINE */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// vous pouvez ajouter d'autres lignes mask à la suite
|
||||
}
|
||||
|
||||
/* except ban avec le type 'all' vous protège des GLINE, GZLINE, QLINE, SHUN */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* Avec un bloc deny dcc vous pouvez interdire des noms de fichiers dans
|
||||
* les échanges DCC
|
||||
*/
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Possible virus Sub7";
|
||||
}
|
||||
|
||||
/* deny channel vous permet d'interdire des masques de noms de salons */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Le warez est illegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* Les VHosts (Virtual Hosts - Hôtes Virtuels) permettent aux utilisateurs
|
||||
* d'avoir un nom d'hôte différent.
|
||||
* Voir https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Vhost d'exemple. Sur IRC, entrez /VHOST test test
|
||||
* NOTE : seuls les utilisateurs avec un nom d'hôte 'unrealircd.com'
|
||||
* peuvent l'utiliser, donc modifiez vhost::mask avant de tester.
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Vous pouvez inclure d'autres fichiers de configuration */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Configuration du réseau */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Les clés de cloaking doivent être identiques sur tous les serveurs
|
||||
* d'un réseau. Elles sont utilisées pour générer les noms d'hôtes
|
||||
* masqués et doivent être gardées secrètes. Les clés doivent être
|
||||
* 3 chaînes de 5 à 100 caractères aléatoires (entre 10 et 20 suffisent)
|
||||
* et ne comporter que des minuscules (a-z), des majuscules (A-Z) et des
|
||||
* chiffres (0-9). (voir l'exemple)
|
||||
* NB : sur *NIX, vous pouvez exécuter './unreal gencloak' sur votre
|
||||
* serveur pour que Unreal génère 3 clés aléatoires pour vous.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"et une autre";
|
||||
"et une troisième";
|
||||
}
|
||||
}
|
||||
|
||||
/* Configuration spécifique au serveur */
|
||||
|
||||
set {
|
||||
kline-address "indiquez.une.adresse.email"; /* e-mail ou URL indiquée lorsqu'un utilisateur est banni */
|
||||
modes-on-connect "+ixw"; /* modes utilisateur ajoutés lorsqu'un utilisateur se connecte */
|
||||
modes-on-oper "+xws"; /* modes utilisateur ajoutés lorsqu'un utilisateur devient IRCOp */
|
||||
oper-auto-join "#opers"; /* salon que les IRCOps joignent automatiquement */
|
||||
options {
|
||||
hide-ulines; /* cacher les U-lines de /MAP et /LINKS */
|
||||
show-connect-info; /* afficher les messages "looking up your hostname" à la connexion */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* nombre max de salons par utilisateur */
|
||||
|
||||
/* Temps minimum qu'un utilisateur doit rester connecter avant de pouvoir
|
||||
* utiliser un message de QUIT. Le but est pour réduire le spam.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Ou indiquez un message de QUIT constant, ce qui fait que les raisons
|
||||
* de /QUIT sont ignorées.
|
||||
*/
|
||||
/* static-quit "Le client a quitté"; */
|
||||
|
||||
/* static-part fait la même chose pour /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Protections anti-flood */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* 3 changements de nick par 60 secondes */
|
||||
connect-flood 3:60; /* 3 tentatives de connexions par 60 seconds */
|
||||
away-flood 4:120; /* 4 utilisation de /AWAY par 2 minutes */
|
||||
}
|
||||
|
||||
/* Paramètres de Spamfilter */
|
||||
spamfilter {
|
||||
ban-time 1d; /* durée par défaut des bans *LINE ajoutés par spamfilter */
|
||||
ban-reason "Spam/Publicité"; /* raison par defaut */
|
||||
virus-help-channel "#help"; /* salon par défaut pour l'action 'viruschan' */
|
||||
/* except "#help"; salon à exempter de Spamfilter */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Un problème ou besoin d'aide supplémentaire ?
|
||||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation/fr
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- répond à 80% des questions !
|
||||
* 3) Si vous avez toujours des problèmes, vous pouvez aller sur
|
||||
* irc.unrealircd.org #unreal-support,
|
||||
* mais nous exigeons que vous lisiez LA DOCUMENTATION et la FAQ d'abord !
|
||||
*/
|
||||
@@ -1,505 +0,0 @@
|
||||
/* UnrealIRCd 5 için yapılandırma dosyası
|
||||
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
|
||||
* İletişim: irc.trirc.com:6667 - diablo@unrealircd.org
|
||||
*
|
||||
* Biz buna basit bir 'unrealircd.conf' dosyası diyoruz.
|
||||
* Bu dosyası satır satır editleyip conf/ dizinine kopyalayınız. (düzenleyin!)
|
||||
*
|
||||
* Önemli: Satırların hepsi, açılış başına { satır sonuna ;
|
||||
* }; dahil edin. Bu çok önemli, eğer siz ayrıştırıcıyı ;
|
||||
* eksik koyarsanız yapılandırma dosyası hata verecek
|
||||
* ve dosya doğru işlemde olmayacaktır!
|
||||
* Bu sizin UnrealIRCd yapılandırması ile ilk deneyiminiz ise
|
||||
* dosyayı okumanız için birkaç dakika ayırmanızı öneniriz,
|
||||
* bu size bilgi edinmeniz açısından yardımcı olacaktır:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* UnrealIRCd 5 belgeleme (çok geniş!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_5_documentation
|
||||
*
|
||||
* Sıkça Sorulan Sorular:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* Bu bir açıklamadır, burada tüm metin göz ardı edilir (açıklama tipi #1) */
|
||||
// Bu da bir açıklamadır, bu satır göz ardı edilir (açıklama tipi #2)
|
||||
# Bu da bir açıklamadır, bu satır yine göz ardı edilir (açıklama tipi #3)
|
||||
|
||||
/* UnrealIRCd yoğun modul kullanımını kolaylaştırır. UnrealIRCd'de
|
||||
* etkinleştirmek istediğiniz özellikleri tamamen moduller ile aktif edebilirsiniz.
|
||||
* Görmek için; https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* Biz 'modules.default.conf' dosyasını okumak için IRCd talimatı altında kullanarak
|
||||
* UnrealIRCd ile birlikte gelen 150'den fazla modülleri yükleyecektir.
|
||||
* Başka bir deyişle: Bu sadece UnrealIRCd'de mevcut tüm özelliklerini yükleyecektir.
|
||||
* İlk kez UnrealIRCd kuruyorsanız size bunu kullanmanızı öneririz.
|
||||
* UnrealIRCd'yi ilk kez kuruyorsanız bunu kullanmanızı öneririz.
|
||||
* Daha sonra her şey hazır olduğunda ve çalışıyorsa (eğer isterseniz)
|
||||
* listeyi özelleştirmek için geri dönebilirsiniz.
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Şimdi de diğer bazı dosyaları dahil edelim:
|
||||
* - help/help.conf /HELPOP sistemi
|
||||
* - badwords.conf kanal ve kullanıcı modu için +G
|
||||
* - spamfilter.conf için örnek olarak spamfilter kullanımı
|
||||
* - operclass.default.conf oper bloklarında kullanabileceğiniz
|
||||
* oper sınıflarını görüntüler.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
|
||||
/* me { } bloğu genelde kim olduğumuzu belirtir.
|
||||
* Sunucumuz için isim, birkaç satır bazı bilgileri belirler "sid".
|
||||
* Sunucu kimliği (sid) iki basamağı veya harf tarafından izlenen bir rakam ile
|
||||
* başlamalıdır. Sid IRC ağı için benzersiz olmalıdır (her sunucu için
|
||||
* kendi sid olmalıdır).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* admin { } bloğu /ADMIN sorgusunda kullanıcılara görüntülenecek metni belirler.
|
||||
* Normalde yöneticiye ulaşma konusunda bilgi içerir.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"email@example.org";
|
||||
}
|
||||
|
||||
/* Kullanıcılar ve sunucular için class { } bloğu belirtilir.
|
||||
* Class blokları aşağıdaki işlemlerden oluşur:
|
||||
* - pingfreq: kullanıcı/sunucu için ping'ler arası zaman belirtir (saniyede)
|
||||
* - connfreq: sunucuya bağlanmaya çalıştığınızda tekrar için zaman belirtir (saniyede)
|
||||
* - sendq: bir bağlantı için maksimum veri boyutu
|
||||
* - recvq: bir bağlantı için maksimum alınan veri boyutu (flood kontrol)
|
||||
*/
|
||||
|
||||
/* Kullanıcılar için varsayılan class ayarları */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* IRCOp'lar için varsaylan yüksek limitli özel class ayarları */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Sunucular için varsayılan class ayarları */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* Her 15 saniyede bir bağlanmayı dener */
|
||||
maxclients 10; /* maksimum kullanıcı */
|
||||
sendq 5M;
|
||||
}
|
||||
|
||||
/* Allow blockları sunucunuza kimlerin bağlanabileceğini belirtir.
|
||||
* Bir sunucu şifresi eklenebilir veya belirlitilen bir IP adresi için
|
||||
* giriş izini verilebilir. Ayrıca IP başına ne kadar bağlantıya izin
|
||||
* verileceğini belirtir.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* IP başına sadece 5 bağlantı izini verir */
|
||||
allow {
|
||||
ip *@*;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Örnek olarak özel bir IP bloğu izini:
|
||||
* Bu IP bir şifre ile bağlantı yapması olduğunu gerektirir.
|
||||
* Şifre doğru ise o zaman bu IP 20 bağlantıya izin verecektir.
|
||||
*/
|
||||
allow {
|
||||
ip *@192.0.2.1;
|
||||
class clients;
|
||||
password "somesecretpasswd";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Oper bloğu, IRC Operatorleri tanımlar.
|
||||
* IRC Operatörler, diğer kullanıcılara göre "ekstra haklara" sahip kullanıcılardır.
|
||||
* örneğin diğer kullanıcılara /KILL uygulayabilmesi, sunucu birleştirmesinin başlatılması,
|
||||
* /JOIN yaptığı odalardan banlansa bile tekrar giriş yapabilmesi, vs.
|
||||
*
|
||||
* IRCOp olmak ve nasıl Admin olunacağı hakkında daha fazla bilgi için
|
||||
* https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* Oper {} bloğunun kendisi ile ilgili ayrıntıları görmeniz için
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Örnek bir oper bloğu için 'bobsmith' ile şifresi 'test'.
|
||||
* Bunu değiştirmeniz GEREKİR!!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
password "test";
|
||||
/* Oper izinleri bir "operclass 'bloğunda tanımlanır.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd varsayılan bloklar makalesi için,
|
||||
* tam listesine bakınız. Buradan 'netadmin' seçiyoruz.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "is a Network Administrator";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Listen blokları sunucu portu için gereken bağlantı noktalarını tanımlar.
|
||||
* Diğer bir deyişle: Bu portlar kullanıcılar ve serverlar için
|
||||
* sunucuya bağlantı kurmasını sağlar.
|
||||
*
|
||||
* Kullanımı:
|
||||
* listen
|
||||
* {
|
||||
* ip <ip numarası>;
|
||||
* port <port numarası>;
|
||||
* options {
|
||||
* <seçenekler....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Standard IRC port 6667 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Standard IRC SSL/TLS port 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Özel SSL/TLS sadece sunucuları bağlamak için port */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* DiKKAT: Eğer bir çok IP barındıran bir IRCd Shell kullanıyorsanız
|
||||
* logunuzda olası 'Address already in use' hatasını alacaksınız
|
||||
* ve ircd başlamayacaktır.
|
||||
* Bunun anlamı '*' yerine belirli bir IP yazmanız GEREKİR anlamına gelir:
|
||||
* listen 1.2.3.4:6667;
|
||||
* Açıkçası, IP yi önceden koyduğunuz IP ile değiştirin.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Link blockları bir ağ oluşturmak için birden fazla sunucu bağlamaya izin verir.
|
||||
* Görmek için: https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.example.org
|
||||
{
|
||||
incoming {
|
||||
mask *@something;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* veya açıkça bir IP */
|
||||
hostname hub.example.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Kimlik doğrulaması için diğer sunucunun SPKI parmak izini kullanıyoruz.
|
||||
* Kullanmamız için diğer tarafda './unrealircd spkifp' uygulayıp çalıştırıyoruz.
|
||||
*/
|
||||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* Servis'ler için bağlantı bloğu genellikle çok daha basittir.
|
||||
* Servis'lerin ne olduğu hakkında daha fazla bilgi için,
|
||||
* https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
link services.example.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "changemeplease";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* U-lines satırları sunuculara daha güç/komut kazandırır.
|
||||
* Eğer hizmetlerini kullanmak istiyorsanız onları buraya eklemeniz gerekir.
|
||||
* ASLA buraya (normal) UnrealIRCd sunucunun adını yazmayınız!!!
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Bu blok /DIE ve /RESTART için şifre tanımlamanızı sağlar. Sadece IRCOp'lar içindir.
|
||||
* Bu genelde kazara sunucuyu yeniden başlatma ve kapanmasına karşı biraz
|
||||
* koruma sağlamak içindir.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* Bu log bloğu hangi dosyaya ve nelerin olması gerektiğini tanımlar.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Varsayılan ayarlar, neredeyse her şeyi kaydedecektir */
|
||||
log "ircd.log" {
|
||||
flags {
|
||||
oper;
|
||||
connects;
|
||||
server-connects;
|
||||
kills;
|
||||
errors;
|
||||
sadmin-commands;
|
||||
chg-commands;
|
||||
oper-override;
|
||||
tkl;
|
||||
spamfilter;
|
||||
}
|
||||
}
|
||||
|
||||
/* Bazı kullanıcılara veya botlara bir mesaj göndermek için "aliases"
|
||||
* takma ad oluşturmanızı sağlar. Genellikle servisler için kullanılır.
|
||||
*
|
||||
* Biz önceden ayarlanmış bir takma adı dosyaları dizini oluşturduk, alias/ dizini kontrol ediniz.
|
||||
* Örnek olarak, burada anope servisler ve kullanılan tüm diğer servisler adları bulunmaktadır.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Ban nick bloğu bir nickin sunucuda kullanımını yasaklamanıza olanak sağlar */
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Servisler için ayrılmış";
|
||||
}
|
||||
|
||||
/* Ban ip.
|
||||
* Normalde bunun için /KLINE, /GLINE ve /ZLINE kullanıldığını unutmayınız.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Senden nefret ediyorum";
|
||||
}
|
||||
|
||||
/* Ban server - bir sunucunun bağlanmasını devredışı kılar */
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Defol git buradan.";
|
||||
}
|
||||
|
||||
/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Salak";
|
||||
}
|
||||
|
||||
/* Ban realname bloğu bir kullanıcıyı, GECOS kısmı esas alınarak
|
||||
* banlamanıza olanak sağlar.
|
||||
*/
|
||||
ban realname {
|
||||
mask "Swat Team";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Ban ve TKL istisnaları. Kullanıcıları / makineleri gözetmeksizin
|
||||
* KLINE, GLINE, gibi banlardan muaf tutmanıza olanak sağlar.
|
||||
* Eğer statik IP (ve bu IP üzerinde güvenilmeyen kişiler) ile bir IRCOp
|
||||
* iseniz o zaman kendinizi burada eklemenizi öneririz. Yanlışlıkla kendinize
|
||||
* bir *LINE ban koyarsanız bile yinede muaf tutulacaksınız.
|
||||
*/
|
||||
|
||||
/* except ban bloğu, sizi KLINE ve ZLINE gibi banlardan koruyacaktır */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
// burada daha fazla mask girdileri ekleyebilirsiniz..
|
||||
}
|
||||
|
||||
/* except ban bloğu, sizi 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Olası Sub7 Virüsü";
|
||||
}
|
||||
|
||||
/* Deny channel bloğu, kullanıcıların belirtilen kanallara girmesini engeller */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez is illegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* VHosts (Virtual Hosts) bloğu, kullanıcının yeni bir host alabilmesine olanak sağlar.
|
||||
* Görmeniz için; https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Kullanabileceğiniz örnek vhost. IRC tipi: /VHOST test test
|
||||
* DiKKAT: Güvenlik açısından aşağıdaki vhost::mask yönergesinde
|
||||
* maske 'unrealircd.com' olarak belirlenmiştir.
|
||||
*/
|
||||
vhost {
|
||||
vhost i.hate.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Blacklist blokları, bir kullanıcı bağlandığında IP adresinin drone saldırılarına
|
||||
* neden olduğunu, bilinen bir saldırıya uğramış bir makine olup olmadığını görmek
|
||||
* için harici bir DNS Kara Liste hizmetinden sorgulayacaktır.
|
||||
* Belgeleme: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* veya aşağıdaki bloklar satırına bakınız.
|
||||
*/
|
||||
|
||||
/* DroneBL, muhtemelen IRC Sunucuları tarafından kullanılan en popüler kara liste.
|
||||
* Belgeler ve cevap (reply) tiplerin anlamlarını görmek için https://dronebl.org/
|
||||
* adresine bakınız. Bu zamanda aşağıdaki cevap (reply) tiplerini kullanıyoruz:
|
||||
* 3: IRC Drone, 5: Bottler, 6: Unknown spambot or drone,
|
||||
* 7: DDoS Drone, 8: SOCKS Proxy, 9: HTTP Proxy, 10: ProxyChain,
|
||||
* 11: Web Page Proxy, 12: Open DNS Resolver, 13: Brute force attackers,
|
||||
* 14: Open Wingate Proxy, 15: Compromised router / gateway,
|
||||
* 16: Autorooting worms.
|
||||
*/
|
||||
blacklist dronebl {
|
||||
dns {
|
||||
name dnsbl.dronebl.org;
|
||||
type record;
|
||||
reply { 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone belirlendi. Ayrıntılar için https://dronebl.org/lookup?ip=$ip adresine bakınız.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, belgeler ve cevap (reply) tiplerini görmek için https://rbl.efnetrbl.org/
|
||||
* adresine bakınız.
|
||||
* Yazma sırasında: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
|
||||
*
|
||||
* NOT: Sunucunuzda TOR proxy'lerine izin vermek istiyorsanız,
|
||||
* cevap (reply) tiplerinden '4;' öğesini kaldırmanız gerekiyor.
|
||||
*/
|
||||
blacklist efnetrbl {
|
||||
dns {
|
||||
name rbl.efnetrbl.org;
|
||||
type record;
|
||||
reply { 1; 4; 5; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone/TOR belirlendi. Ayrıntılar için https://rbl.efnetrbl.org/?i=$ip adresine bakınız.";
|
||||
}
|
||||
|
||||
/* Diğer yapılandırma dosyalarını dahil edebilirsiniz */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Ağ yapılandırması */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
hiddenhost-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Gizleme anahtarları ağ üzerindeki bütün sunucularda aynı olmalı.
|
||||
* Bu anahtarlar maskeli hostlar yaratmak ve bunları saklamak için kullanılır.
|
||||
* Anahtarlar 5-100 karakterlik (10-20 karakter yeterli) 3 rastgele diziden oluşmalı ve
|
||||
* küçük harf (a-z), büyük harf (A-Z) ve rakamlardan (0-9) meydana gelmelidirler.. [ilk örneğe bakınız].
|
||||
* IPUCU: './unreal gencloak' Unreal sizin için rastgele 3 adet dizin oluşturur.
|
||||
* Bunu NIX üzerinde çalıştırabilirsiniz.
|
||||
*/
|
||||
cloak-keys {
|
||||
"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
|
||||
"ve diğeri";
|
||||
"ve diğeri";
|
||||
}
|
||||
}
|
||||
|
||||
/* Sunucunun kendine özgü yapılandırması */
|
||||
|
||||
set {
|
||||
kline-address "set.this.to.email.address"; /* bir kullanıcı banlandığında e-mail yada URL satırı gösterir */
|
||||
modes-on-connect "+ixw"; /* kullanıcılar bağlandığında, bu modları alacaktır */
|
||||
modes-on-oper "+xws"; /* Birisi IRC Operatör olduğunda bu modları alacaktır */
|
||||
oper-auto-join "#opers"; /* IRCoplar bu kanala otomatik olarak giriş yapacaktır */
|
||||
options {
|
||||
hide-ulines; /* U-lines satırları /MAP ve /LINKS komutunda gözükmez */
|
||||
show-connect-info; /* sunucuya bağlanırken "looking up your hostname" mesajı görüntülenecektir */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* bir kullanıcının maksimum girebileceği kanal sayısı */
|
||||
|
||||
/* QUIT mesajının görüntülenebilmesi için, bir kullanıcının sunucuya bağlı kalması
|
||||
* gereken süre. Bu durum umarım spamları durdurmak için yardımcı olacaktır.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Kullanıcı sunucudan ayrılırken çıkış sebebini sabitler. /QUIT sebeb gözardı edilecektir. */
|
||||
/* static-quit "Client quit"; */
|
||||
|
||||
/* static-part /PART komutu ile aynı işi görür */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Anti flood Koruması */
|
||||
anti-flood {
|
||||
nick-flood 3:60; /* Her 60 saniyede 3 nick değişikliği (varsayılan) */
|
||||
connect-flood 3:60; /* Her 60 saniyede 3 bağlantı girişi izni (varsayılan) */
|
||||
away-flood 4:120; /* Her 2 dakikada 4 kez /AWAY kullanımı izni (varsayılan) */
|
||||
}
|
||||
|
||||
/* Spam filter Ayarları */
|
||||
spamfilter {
|
||||
ban-time 1d; /* varsayılan spamfilter tarafından ban süresini belirtir */
|
||||
ban-reason "Spam/Advertising"; /* varsayılan sebep */
|
||||
virus-help-channel "#help"; /* 'viruschan' eylemi için kullanılacak kanal */
|
||||
/* except "#help"; Spamfilter'den muaf tutulacak kanal */
|
||||
}
|
||||
}
|
||||
/* Son olarak, bir MOTD (Günün Mesajı) oluşturabilirsiniz, bu
|
||||
* conf/ dizininde 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
|
||||
* Bu dosyanın içeriği bağlantı kuran kullanıcılara gösterilecektir.
|
||||
* Daha fazla bilgi için https://www.unrealircd.org/docs/MOTD_and_Rules bölümünü inceleyiniz.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Sorununuza veya daha fazla yardımamı ihtiyacınız var?
|
||||
* 1) https://www.unrealircd.org/docs/UnrealIRCd_4_documentation
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- sorularınızın %80 ini kapsamakta!
|
||||
* 3) Eğer probleminiz hala devam ediyorsa:
|
||||
* - Forums: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL on port 6697) / #unreal-support
|
||||
* İlk önce Dökümantasyon ve FAQ kısmını okumanızı gerektirdiğini unutmayın!
|
||||
*/
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,236 +0,0 @@
|
||||
/* This file will load (nearly) all modules available on UnrealIRCd.
|
||||
* So all commands, channel modes, user modes, etc..
|
||||
*
|
||||
* If you want to have all UnrealIRCd functionality, then include this
|
||||
* file from your unrealircd.conf by using:
|
||||
* include "modules.default.conf";
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* If you want to customize the modules to load you have two options:
|
||||
* 1) Keep the include for modules.default.conf as usual and make use
|
||||
* of blacklist-module "xyz"; to selectively disable modules.
|
||||
* See https://www.unrealircd.org/docs/Blacklist-module_directive
|
||||
* 2) OR, make a copy of this file (eg: name it modules.custom.conf)
|
||||
* and edit it. Then include that file from your unrealircd.conf
|
||||
* instead of this one.
|
||||
* The downside of option #2 is that you will need to track changes
|
||||
* in the original modules.default.conf with each new UnrealIRCd
|
||||
* release to make sure you don't miss any new functionality (as new
|
||||
* important modules may be added you need to add them to your conf).
|
||||
* You don't have this problem with option #1.
|
||||
*/
|
||||
|
||||
/*** Cloaking (for user mode +x) ***/
|
||||
loadmodule "cloak";
|
||||
|
||||
|
||||
/*** Commands ***/
|
||||
|
||||
// User commands (MINIMAL)
|
||||
// These provide just the minimal set of IRC commands that are
|
||||
// required by RFC1459 along with WATCH and MAP.
|
||||
loadmodule "admin";
|
||||
loadmodule "away";
|
||||
loadmodule "invite";
|
||||
loadmodule "ison";
|
||||
loadmodule "join";
|
||||
loadmodule "kick";
|
||||
loadmodule "links";
|
||||
loadmodule "list";
|
||||
loadmodule "lusers";
|
||||
loadmodule "map";
|
||||
loadmodule "message";
|
||||
loadmodule "mode";
|
||||
loadmodule "motd";
|
||||
loadmodule "names";
|
||||
loadmodule "nick";
|
||||
loadmodule "part";
|
||||
loadmodule "pass";
|
||||
loadmodule "pingpong";
|
||||
loadmodule "protoctl";
|
||||
loadmodule "quit";
|
||||
loadmodule "rules";
|
||||
loadmodule "topic";
|
||||
loadmodule "user";
|
||||
loadmodule "userhost";
|
||||
loadmodule "watch";
|
||||
loadmodule "whox";
|
||||
loadmodule "whois";
|
||||
loadmodule "whowas";
|
||||
|
||||
// User commands (EXTENDED)
|
||||
// These are commands that provide extended functionality.
|
||||
loadmodule "botmotd";
|
||||
loadmodule "cap";
|
||||
loadmodule "cycle";
|
||||
loadmodule "dccallow";
|
||||
loadmodule "help";
|
||||
loadmodule "knock";
|
||||
loadmodule "lag";
|
||||
loadmodule "sasl";
|
||||
loadmodule "setname";
|
||||
loadmodule "silence";
|
||||
loadmodule "starttls";
|
||||
loadmodule "time";
|
||||
loadmodule "userip";
|
||||
loadmodule "vhost";
|
||||
loadmodule "history";
|
||||
|
||||
// IRC Operator commands
|
||||
// Note: several of these like kill are also server-to-server commands
|
||||
// which are required if you link to other servers.
|
||||
loadmodule "addmotd";
|
||||
loadmodule "addomotd";
|
||||
loadmodule "chghost";
|
||||
loadmodule "chgident";
|
||||
loadmodule "chgname";
|
||||
loadmodule "close";
|
||||
loadmodule "connect";
|
||||
loadmodule "squit";
|
||||
loadmodule "dccdeny";
|
||||
loadmodule "globops";
|
||||
loadmodule "kill"; /* also server-to-server */
|
||||
loadmodule "locops";
|
||||
loadmodule "mkpasswd";
|
||||
loadmodule "oper";
|
||||
loadmodule "opermotd";
|
||||
loadmodule "sajoin";
|
||||
loadmodule "samode";
|
||||
loadmodule "sapart";
|
||||
loadmodule "sdesc";
|
||||
loadmodule "sethost";
|
||||
loadmodule "setident";
|
||||
loadmodule "stats";
|
||||
loadmodule "tkl"; /* also server-to-server */
|
||||
loadmodule "trace";
|
||||
loadmodule "tsctl";
|
||||
loadmodule "unsqline";
|
||||
loadmodule "wallops";
|
||||
loadmodule "jumpserver";
|
||||
|
||||
// Server-to-server commands
|
||||
// Don't remove these, unless you never link to other servers.
|
||||
loadmodule "eos";
|
||||
loadmodule "md";
|
||||
loadmodule "netinfo";
|
||||
loadmodule "server";
|
||||
loadmodule "sjoin";
|
||||
loadmodule "sqline";
|
||||
loadmodule "swhois";
|
||||
loadmodule "umode2";
|
||||
loadmodule "sinfo";
|
||||
loadmodule "require-module";
|
||||
|
||||
// Services commands
|
||||
// You could disable these if you don't use Services
|
||||
// https://www.unrealircd.org/docs/Services
|
||||
loadmodule "sendsno";
|
||||
loadmodule "sendumode";
|
||||
loadmodule "svsjoin";
|
||||
loadmodule "svskill";
|
||||
loadmodule "svslusers";
|
||||
loadmodule "svsmode";
|
||||
loadmodule "svsmotd";
|
||||
loadmodule "svsnick";
|
||||
loadmodule "svsnline";
|
||||
loadmodule "svsnolag";
|
||||
loadmodule "svsnoop";
|
||||
loadmodule "svspart";
|
||||
loadmodule "svssilence";
|
||||
loadmodule "svssno";
|
||||
loadmodule "svswatch";
|
||||
|
||||
|
||||
/*** Channel modes ***/
|
||||
loadmodule "chanmodes/floodprot"; /* +f */
|
||||
loadmodule "chanmodes/nocolor"; /* +c */
|
||||
loadmodule "chanmodes/noctcp"; /* +C */
|
||||
loadmodule "chanmodes/stripcolor"; /* +S */
|
||||
loadmodule "chanmodes/issecure"; /* +Z */
|
||||
loadmodule "chanmodes/permanent"; /* +P */
|
||||
loadmodule "chanmodes/link"; /* +L */
|
||||
loadmodule "chanmodes/censor"; /* +G */
|
||||
loadmodule "chanmodes/delayjoin"; /* +D */
|
||||
loadmodule "chanmodes/noknock"; /* +K */
|
||||
loadmodule "chanmodes/noinvite"; /* +V */
|
||||
loadmodule "chanmodes/operonly"; /* +O */
|
||||
loadmodule "chanmodes/nonotice"; /* +T */
|
||||
loadmodule "chanmodes/regonly"; /* +R */
|
||||
loadmodule "chanmodes/nonickchange"; /* +N */
|
||||
loadmodule "chanmodes/nokick"; /* +Q */
|
||||
loadmodule "chanmodes/regonlyspeak"; /* +M */
|
||||
loadmodule "chanmodes/secureonly"; /* +z */
|
||||
loadmodule "chanmodes/history"; /* +H */
|
||||
|
||||
|
||||
/*** User modes ***/
|
||||
loadmodule "usermodes/bot"; /* +B (mark yourself as a bot) */
|
||||
loadmodule "usermodes/servicebot"; /* +S (service bot) */
|
||||
loadmodule "usermodes/noctcp"; /* +T (block CTCP's) */
|
||||
loadmodule "usermodes/censor"; /* +G (censor bad words) */
|
||||
loadmodule "usermodes/showwhois"; /* +W (show if someone does /WHOIS) */
|
||||
loadmodule "usermodes/privacy"; /* +p (privacy, hide channels in /WHOIS) */
|
||||
loadmodule "usermodes/nokick"; /* +q (unkickable oper) */
|
||||
loadmodule "usermodes/regonlymsg"; /* +R (only registered users may private message you) */
|
||||
loadmodule "usermodes/secureonlymsg"; /* +Z (only SSL/TLS users may private message you) */
|
||||
loadmodule "usermodes/privdeaf"; /* +D (don't let other user PM you) */
|
||||
|
||||
|
||||
/*** Server notice masks */
|
||||
loadmodule "snomasks/dccreject"; /* +D (rejected DCC's) */
|
||||
|
||||
|
||||
/*** Extended Bans ***/
|
||||
loadmodule "extbans/join"; /* +b ~j (prevent only joins) */
|
||||
loadmodule "extbans/quiet"; /* +b ~q (prevent only messaging) */
|
||||
loadmodule "extbans/nickchange"; /* +b ~n (prevent only nick changes) */
|
||||
loadmodule "extbans/realname"; /* +b ~r (ban by real name) */
|
||||
loadmodule "extbans/account"; /* +b ~a (ban/exempt if logged in with services account) */
|
||||
loadmodule "extbans/inchannel"; /* +b ~c (ban/exempt if in channel) */
|
||||
loadmodule "extbans/operclass"; /* +b ~O (ban/exempt by operclass) */
|
||||
loadmodule "extbans/certfp"; /* +b ~S (ban/exempt by certfp) */
|
||||
loadmodule "extbans/textban"; /* +b ~T (censor or block text) */
|
||||
loadmodule "extbans/msgbypass"; /* +e ~m (bypass message restrictions) */
|
||||
loadmodule "extbans/timedban"; /* +b ~t (timed bans / temporary bans) */
|
||||
loadmodule "extbans/partmsg"; /* +b ~p (hide part/quit message) */
|
||||
loadmodule "extbans/securitygroup"; /* +b ~G (security group) */
|
||||
|
||||
|
||||
/** IRCv3 extensions */
|
||||
loadmodule "account-notify"; /* send ACCOUNT message upon services account login */
|
||||
loadmodule "message-tags"; /* add tags to messages, required for various IRCv3 features */
|
||||
loadmodule "batch"; /* also required for several IRCv3 features */
|
||||
loadmodule "server-time"; /* adds server timestamp to various messages */
|
||||
loadmodule "message-ids"; /* adds unique msgid to various messages */
|
||||
loadmodule "account-tag"; /* adds services account information to messages */
|
||||
loadmodule "echo-message"; /* shows clients if their messages are altered/filtered */
|
||||
loadmodule "labeled-response"; /* correlate requests and responses easily */
|
||||
loadmodule "bot-tag"; /* indicate the message comes from a bot (draft/bot) */
|
||||
loadmodule "typing-indicator"; /* typing indicator in PM and channels (+typing) */
|
||||
loadmodule "reply-tag"; /* indicate to which message you are responding (+draft/reply) */
|
||||
loadmodule "clienttagdeny"; /* informs clients about supported client-only message tags */
|
||||
loadmodule "sts"; /* strict transport policy (set::tls::sts-policy) */
|
||||
loadmodule "link-security"; /* link-security announce */
|
||||
loadmodule "plaintext-policy"; /* plaintext-policy announce */
|
||||
|
||||
|
||||
/*** Other ***/
|
||||
// These are modules that don't fit in any of the previous sections
|
||||
loadmodule "ident_lookup"; /* Ident lookups if set::options::identd-check is set*/
|
||||
loadmodule "certfp"; /* SSL/TLS certificate fingerprint in /WHOIS (& more) */
|
||||
loadmodule "tls_antidos"; /* prevent TLS DoS (renegotiate floods) */
|
||||
loadmodule "webirc"; /* WEBIRC command. See webirc block. */
|
||||
loadmodule "blacklist"; /* Blacklist support (DNSBL). See blacklist block. */
|
||||
loadmodule "jointhrottle"; /* set::anti-flood::join-flood (previously chanmode +j) */
|
||||
loadmodule "charsys"; /* Provides set::allowed-nickchars (must always be loaded!) */
|
||||
loadmodule "authprompt"; /* Authentication prompt, see set::authentication-prompt */
|
||||
loadmodule "history_backend_mem"; /* History storage backend (used by chanmodes/history) */
|
||||
loadmodule "tkldb"; /* Write TKLines to .db file */
|
||||
loadmodule "channeldb"; /* Write channel settings to .db file (+P channels only) */
|
||||
loadmodule "rmtkl"; /* Easily remove *-Lines in bulk with /RMTKL */
|
||||
loadmodule "restrict-commands"; /* Provides set::restrict-commands settings */
|
||||
loadmodule "reputation"; /* used by Connthrottle and others, see next */
|
||||
loadmodule "connthrottle"; /* see https://www.unrealircd.org/docs/Connthrottle */
|
||||
loadmodule "userip-tag"; /* unrealircd.org/userip tag for ircops */
|
||||
loadmodule "userhost-tag"; /* unrealircd.org/userhost tag for ircops */
|
||||
loadmodule "targetfloodprot"; /* set::anti-flood::target-flood protection */
|
||||
@@ -1,180 +0,0 @@
|
||||
/* This file will load all optional modules. These are features that
|
||||
* not everyone will use or are considered experimental.
|
||||
* You can include this file from your unrealircd.conf like this:
|
||||
* include "modules.optional.conf";
|
||||
* OR... and this is probably a better idea... you can copy-paste it
|
||||
* to another file where you do your own customizations.
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* If you want to customize, make a copy of this file (for example
|
||||
* name it modules.custom.conf) and edit it.
|
||||
* Then include that file from your unrealircd.conf instead of this one.
|
||||
*/
|
||||
|
||||
/*** Commands ***/
|
||||
|
||||
// This add the /IRCOPS command: A more visual way for users
|
||||
// to see which IRCOps are online.
|
||||
loadmodule "ircops";
|
||||
|
||||
// This adds the /STAFF command: This command simply displays
|
||||
// a text file that you can configure here:
|
||||
loadmodule "staff";
|
||||
set { staff-file "network.staff"; }
|
||||
|
||||
|
||||
/*** Channel modes ***/
|
||||
|
||||
// The following module ('nocodes') is not a true channel mode.
|
||||
// It simply enhances the existing channel mode +S/+c to include
|
||||
// stripping/blocking of bold, underline and italic text.
|
||||
loadmodule "nocodes";
|
||||
|
||||
|
||||
/*** Other ***/
|
||||
|
||||
// The hideserver module will hide /MAP and /LINKS to regular users.
|
||||
// It does not truly enhance security as server names can still be
|
||||
// seen at other places.
|
||||
// Comment out the following line to enable this:
|
||||
// loadmodule "hideserver";
|
||||
|
||||
// The antirandom module will kill or *line users that have a nick,
|
||||
// ident and/or realname that is considered "random".
|
||||
// This helps to combat simple botnets/drones.
|
||||
// Note that failure to set the right settings may ban innocent users.
|
||||
// This is especially true if you are on a non-English network where
|
||||
// the module may consider a sequence of characters "random" even though
|
||||
// it is a perfectly pronounceable word in your language.
|
||||
loadmodule "antirandom";
|
||||
set {
|
||||
antirandom {
|
||||
/* THRESHOLD:
|
||||
* This is pretty much the most important setting of all.
|
||||
* For every randomly looking ident the user gets a certain amount of
|
||||
* 'points', if this value reaches 'threshold' then the appropriate
|
||||
* action is taken (killed, *lined, see later on).
|
||||
* lower = more randomly looking users will be catched (but also more
|
||||
* innocent users)
|
||||
* higher = less chance of innocent users getting killed, but also less
|
||||
* chance on bots getting catched.
|
||||
* <2: DON'T!!
|
||||
* 4: Works good, probably a few more innocent kills but if you got
|
||||
* quite a bot problem then this might be a useful setting.
|
||||
* 5: Works well with few innocent kills, probably good to begin with.
|
||||
* 6: If you want to be a tad more careful
|
||||
* >6: For the paranoid. Module can still be quite effective, though :)
|
||||
*/
|
||||
threshold 7;
|
||||
|
||||
/* BAN-ACTION:
|
||||
* Action to take whenever the user is catched as random, options:
|
||||
* warn, kill, gline, gzline, kline, zline, shun, tempshun
|
||||
*/
|
||||
ban-action kill;
|
||||
|
||||
/* BAN-TIME:
|
||||
* Time to ban the user (irrelevant for tempshun/kill).
|
||||
* Something between 1 hour and 2 days is recommended.
|
||||
* If you set it higher than 3 or 4 days then you get quite a risk
|
||||
* of catching innocent users due to dynamic IP, not to mention
|
||||
* your *line list gets filled up... so choose it wisely.
|
||||
*/
|
||||
ban-time 4h;
|
||||
|
||||
/* BAN-REASON:
|
||||
* The ban (or kill) reason to use.
|
||||
* You might want to put in an entry to a FAQ or an email address
|
||||
* where users can mail if they have been catched and don't know what to do.
|
||||
* NOTE: One of the various reasons that ""innocent users"" are catched is
|
||||
* if they just randomly type in info for their nick, ident, or realname.
|
||||
*/
|
||||
ban-reason "You look like a bot. Be sure to fill in your nick/ident/realname properly.";
|
||||
|
||||
/* CONVERT-TO-LOWERCASE:
|
||||
* Convert nicks, idents, and realnames to lowercase before doing random checks?
|
||||
* This has not been tested extensively for false positives, but might be (very)
|
||||
* helpful to catch GnStA5FYhiTH51TUkf style random nicks as random.
|
||||
* Enabled by default.
|
||||
*/
|
||||
convert-to-lowercase yes;
|
||||
|
||||
/* FULLSTATUS-ON-LOAD:
|
||||
* If enabled, then upon loading it will check all users that are currently
|
||||
* connected and give a status report about who it would have killed.
|
||||
* Note that it doesn't actually kill any currently connected users, it is for
|
||||
* informative purposes only.
|
||||
* This can be (very) useful if you use the module for the first time.
|
||||
* But you probably want to disable it after a while, since once the module
|
||||
* is actively dealing with randomly looking persons, it shouldn't report any
|
||||
* users anymore on load and then this check only eats useless CPU on /REHASH.
|
||||
* Enabled by default.
|
||||
*/
|
||||
fullstatus-on-load yes;
|
||||
|
||||
/* SHOW-FAILEDCONNECTS:
|
||||
* This will send out a notice whenever a randomly looking user has been catched
|
||||
* during connecting. Obviously this can be pretty noisy.
|
||||
* Especially recommended to enable during the first few days you use this module.
|
||||
*/
|
||||
show-failedconnects yes;
|
||||
|
||||
/* EXCEPT-HOSTS:
|
||||
* Hostmasks on this list are matched against the IP and hostname of the connecting
|
||||
* user. If it matches then we do not check if the nick/ident/realname is random.
|
||||
* NOTE: Use the REAL host or IP here, not any cloaked hosts!
|
||||
*/
|
||||
except-hosts {
|
||||
mask 192.168.*;
|
||||
mask 127.*;
|
||||
}
|
||||
|
||||
/* EXCEPT-WEBIRC:
|
||||
* This will make antirandom not check connections from WEBIRC gateways.
|
||||
* ( see https://www.unrealircd.org/docs/WebIRC_block )
|
||||
* It seems WEBIRC connections frequently cause false positives so the
|
||||
* default is 'yes'.
|
||||
*/
|
||||
except-webirc yes;
|
||||
}
|
||||
}
|
||||
|
||||
// This module will send a HTTP 301 redirect to any client which sends
|
||||
// a HTTP request to us. This is commented out by default:
|
||||
//loadmodule "webredir";
|
||||
//set {
|
||||
// webredir {
|
||||
// url "https://...";
|
||||
// }
|
||||
//}
|
||||
|
||||
// This adds websocket support. For more information, see:
|
||||
// https://www.unrealircd.org/docs/WebSocket_support
|
||||
loadmodule "websocket";
|
||||
|
||||
// This module will detect and stop spam containing of characters of
|
||||
// mixed "scripts", where (for example) some characters are in
|
||||
// Latin script and other characters are in Cyrillic script.
|
||||
loadmodule "antimixedutf8";
|
||||
set {
|
||||
antimixedutf8 {
|
||||
/* Take action at this 'score'.
|
||||
* 10 is a good and safe default.
|
||||
*/
|
||||
score 10;
|
||||
|
||||
/* Action to take, see:
|
||||
* https://www.unrealircd.org/docs/Actions
|
||||
*/
|
||||
ban-action block;
|
||||
|
||||
/* Block/kill/ban reason (sent to user) */
|
||||
ban-reason "Possible mixed character spam";
|
||||
|
||||
/* Duration of ban (does not apply to block/kill) */
|
||||
ban-time 4h; // For other types
|
||||
}
|
||||
}
|
||||
|
||||
// Currently incomplete and experimental:
|
||||
loadmodule "chathistory";
|
||||
@@ -1,21 +0,0 @@
|
||||
#
|
||||
# This file contains the list of repositories that are used
|
||||
# by the './unrealircd module' command.
|
||||
# Note that 3rd party modules are NOT written by the UnrealIRCd team.
|
||||
# Use such modules at your own risk. In case of problems, contact
|
||||
# the module author. For more information, see:
|
||||
# https://www.unrealircd.org/docs/Module_manager
|
||||
#
|
||||
|
||||
#
|
||||
# This is the unrealircd-contrib repository which is added by default in
|
||||
# UnrealIRCd 5 to make it easy for users to install 3rd party modules.
|
||||
# If you are a module coder and want to add your module to this repository
|
||||
# as well, then read the rules and procedure at:
|
||||
# https://www.unrealircd.org/docs/Rules_for_3rd_party_modules_in_unrealircd-contrib
|
||||
#
|
||||
https://modules.unrealircd.org/modules.list
|
||||
|
||||
# You can add more repositories here. However, do note that all
|
||||
# URLs MUST start with https://
|
||||
|
||||
@@ -1,144 +0,0 @@
|
||||
/* This file defines a number of default operclass blocks which you can
|
||||
* use in your oper blocks (via oper::operclass).
|
||||
*
|
||||
* This file is normally included from your unrealircd.conf through:
|
||||
* include "operclass.default.conf";
|
||||
*
|
||||
* The operclass block is extensively documented at:
|
||||
* https://www.unrealircd.org/docs/Operclass_block
|
||||
* And the permissions itself (operclass::permissions) at:
|
||||
* https://www.unrealircd.org/docs/Operclass_permissions
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* Instead, if you want to change the permissions in an operclass block,
|
||||
* you should copy the definition, or this entire file, to either your
|
||||
* unrealircd.conf or some other file (eg: operclass.conf) that you
|
||||
* you will include from your unrealircd.conf.
|
||||
* Then edit it, and while doing so don't forget to change the name
|
||||
* of your custom operclass block(s), so operclass <name>.
|
||||
*/
|
||||
|
||||
/* Local IRC Operator */
|
||||
operclass locop {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; override { flood; } }
|
||||
client { see; }
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash; }
|
||||
route { local; }
|
||||
kill { local; }
|
||||
server-ban {
|
||||
kline;
|
||||
zline { local; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Global IRC Operator */
|
||||
operclass globop {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; tsctl { view; } }
|
||||
route;
|
||||
kill;
|
||||
server-ban { dccdeny; shun; zline; kline; gline; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Server administrator */
|
||||
operclass admin {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; description; addmotd;
|
||||
addomotd; tsctl { view; } }
|
||||
route;
|
||||
kill;
|
||||
server-ban;
|
||||
}
|
||||
}
|
||||
|
||||
/* Services Admin */
|
||||
operclass services-admin {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; description; addmotd;
|
||||
addomotd; tsctl { view; } }
|
||||
route;
|
||||
kill;
|
||||
server-ban;
|
||||
sacmd;
|
||||
services;
|
||||
}
|
||||
}
|
||||
|
||||
/* Network Administrator */
|
||||
operclass netadmin {
|
||||
permissions {
|
||||
chat;
|
||||
channel { operonly; see; override { flood; } }
|
||||
client;
|
||||
immune;
|
||||
self { getbaddcc; opermodes; set; }
|
||||
server { opermotd; info; close; module; dns; rehash;
|
||||
remote; description; addmotd;
|
||||
addomotd; tsctl; }
|
||||
route;
|
||||
kill;
|
||||
server-ban;
|
||||
sacmd;
|
||||
services;
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'globop' operclass, but with OperOverride capabilities added */
|
||||
operclass globop-with-override {
|
||||
parent globop;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'admin' operclass, but with OperOverride capabilities added */
|
||||
operclass admin-with-override {
|
||||
parent admin;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'services-admin' operclass, but with OperOverride capabilities added */
|
||||
operclass services-admin-with-override {
|
||||
parent services-admin;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Same as 'netadmin' operclass, but with OperOverride capabilities added */
|
||||
operclass netadmin-with-override {
|
||||
parent netadmin;
|
||||
permissions {
|
||||
channel { operonly; see; override; }
|
||||
self { getbaddcc; opermodes; set; unkickablemode; }
|
||||
}
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
/*
|
||||
* This configuration file contains example spamfilter rules.
|
||||
* They are real rules that were useful a long time ago.
|
||||
* Since 2005 these rules are no longer maintained.
|
||||
* The main purpose nowadays is to serve as an example
|
||||
* to give you an idea of how powerful spamfilters can
|
||||
* be in real-life situations.
|
||||
*
|
||||
* Documentation on spamfilter is available at:
|
||||
* https://www.unrealircd.org/docs/Spamfilter
|
||||
*/
|
||||
|
||||
/* General note:
|
||||
* If you want to use a \ in a spamfilter, or in fact
|
||||
* anywhere in the configuration file, then you need
|
||||
* to escape this to \\ instead.
|
||||
*/
|
||||
|
||||
|
||||
/* First some spamfilters with match-type 'simple'.
|
||||
* The only matchers available are * and ?
|
||||
* PRO's: very fast, easy matching: everyone can do this.
|
||||
* CON's: limited ability to fine-tune spamfilters
|
||||
*/
|
||||
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "Come watch me on my webcam and chat /w me :-) http://*:*/me.mpg";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by fyle trojan: see http://www.sophos.com/virusinfo/analyses/trojfylexa.html";
|
||||
}
|
||||
|
||||
/* This signature uses a \ which has to escaped to \\ in the configuration file */
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "C:\\WINNT\\system32\\*.zip";
|
||||
target dcc;
|
||||
action block;
|
||||
reason "Infected by Gaggle worm?";
|
||||
}
|
||||
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "Speed up your mIRC DCC Transfer by up to 75%*www.freewebs.com/mircupdate/mircspeedup.exe";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by mirseed trojan: see http://www.sophos.com/virusinfo/analyses/trojmirseeda.html";
|
||||
}
|
||||
|
||||
spamfilter {
|
||||
match-type simple;
|
||||
match "STOP SPAM, USE THIS COMMAND: //write nospam $decode(*) | .load -rs nospam | //mode $me +R";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by nkie worm: see http://www.trojaninfo.com/nkie/nkie.htm";
|
||||
}
|
||||
|
||||
|
||||
/* Now spamfilters of type 'regex'.
|
||||
* These use powerful regular expressions (Perl/PCRE style)
|
||||
* You may have to learn more about "regex" first before you
|
||||
* can use them. For example the dot ('.') has special meaning.
|
||||
*/
|
||||
|
||||
/* This regex shows a pattern which requires 20 paramaters,
|
||||
* such as "x x x x x x x x x x x x x x x x x x x x"
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "\x01DCC (SEND|RESUME)[ ]+\"(.+ ){20}";
|
||||
target { private; channel; }
|
||||
action kill;
|
||||
reason "mIRC 6.0-6.11 exploit attempt";
|
||||
}
|
||||
|
||||
/* Similarly, this regex shows a pattern that matches
|
||||
* against at least 225 characters in length.
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "\x01DCC (SEND|RESUME).{225}";
|
||||
target { private; channel; }
|
||||
action kill;
|
||||
reason "Possible mIRC 6.12 exploit attempt";
|
||||
}
|
||||
|
||||
/* Earlier you saw an example of a $decode exploit which used
|
||||
* match-type 'simple' and - indeed - the filter was quite simple.
|
||||
* The following uses a regex with a similar example.
|
||||
* Regular expressions are very powerful but here you can see
|
||||
* that it actually complicates writing a filter quite a bit.
|
||||
* With regex in this filter we need to escape the ( and all
|
||||
* the dots, question marks, etc. if we want to match these
|
||||
* characters in literal text.
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^Want To Be An IRCOp\? Try This New Bug Type: //write \$decode\(.+=.?,m\) \| \.load -rs \$decode\(.+=.?,m\)$";
|
||||
target private;
|
||||
action block;
|
||||
reason "Spamming users with an mIRC trojan. Type '/unload -rs newb' to remove the trojan.";
|
||||
}
|
||||
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^http://www\.angelfire\.com/[a-z0-9]+/[a-z0-9]+/[a-z_]+\.jpg <- .*!";
|
||||
target private;
|
||||
action block;
|
||||
reason "Infected by fagot worm: see http://www.f-secure.com/v-descs/fagot.shtml";
|
||||
}
|
||||
|
||||
/* This shows a regex which specifically matches an entire line by
|
||||
* the use of ^ and $
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^!login Wasszup!$";
|
||||
target channel;
|
||||
action gline;
|
||||
reason "Attempting to login to a GTBot";
|
||||
}
|
||||
|
||||
/* An example of how to match against an IP address in text (IPv4 only) */
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "^!packet ([0-9]{1,3}\.){3}[0-9]{1,3} [0-9]{1,15}";
|
||||
target channel;
|
||||
action gline;
|
||||
reason "Attempting to use a GTBot";
|
||||
}
|
||||
|
||||
/* A slightly more complex example with a partial OR matcher (|) */
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "(^wait a minute plz\. i am updating my site|.*my erotic video).*http://.+/erotic(a)?/myvideo\.exe$";
|
||||
target private;
|
||||
action gline;
|
||||
reason "Infected by some trojan (erotica?)";
|
||||
}
|
||||
|
||||
/* In regex a \ is special and needs to be escaped to \\
|
||||
* However in this configuration file, \ is also special and
|
||||
* needs to be escaped to \\ as well.
|
||||
* The result is that we need double escaping:
|
||||
* To match a \ you need to write \\\\ in the configuration file.
|
||||
*/
|
||||
spamfilter {
|
||||
match-type regex;
|
||||
match "C:\\\\WINNT\\\\system32\\\\(notes|videos|xxx|ManualSeduccion|postal|hechizos|images|sex|avril)\.zip";
|
||||
target dcc;
|
||||
action dccblock;
|
||||
reason "Infected by Gaggle worm";
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,522 @@
|
||||
#
|
||||
# IRC - Internet Relay Chat, doc/example.conf
|
||||
# Copyright (C) 1994, Helen Rose
|
||||
# $Id$
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 1, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#
|
||||
# This is an example configuration file for the Unreal3.0-Morrican
|
||||
# and higher IRC servers.
|
||||
#
|
||||
# You only need an ircd.conf (IRC server configuration file) if you are
|
||||
# running an IRC server. If you are running a standalone client this file
|
||||
# is not necessary.
|
||||
#
|
||||
# This file will explain the various lines in the IRC server
|
||||
# configuration file. Not all lines are mandatory. You can check to make
|
||||
# sure that your configuration file is correct by using the program
|
||||
# "chkconf", provided in the server distribution (and when you do "make
|
||||
# install" this program will be installed in the same directory as the irc
|
||||
# server).
|
||||
#
|
||||
# This document modified for use by with the Unreal3.0 IRCD
|
||||
#
|
||||
#
|
||||
# The options for whether a line is needed or not are:
|
||||
# MANDATORY: you absolutely MUST have this line
|
||||
# NETWORKED: you must have this line if you are connecting this irc
|
||||
# server to any other server (servers can run standalone).
|
||||
# SUGGESTED: it is highly suggested that you use this line
|
||||
# OPTIONAL: it's completely up to you whether to define this or not
|
||||
# DISCOURAGED: you really really should not use this line if at all
|
||||
# possible.
|
||||
# OBSOLETE: an old or out of date line that isn't needed.
|
||||
#
|
||||
# MANDATORY lines are absolute *musts*, that is, if you do not have this
|
||||
# line then your server will not work properly. SUGGESTED lines are
|
||||
# close-to-mandatory (that is, the server will run without it, but you are
|
||||
# highly encouraged to use these lines).
|
||||
#
|
||||
# Note that "*" in a field indicates an "unused" field.
|
||||
#
|
||||
#
|
||||
# ========================================================================
|
||||
# NOTE! this entire configuration file is read UPSIDE-DOWN! So if you have
|
||||
# to put something in a specific order (for example, client-connection
|
||||
# lines), put them in reverse order!
|
||||
# ========================================================================
|
||||
#
|
||||
#
|
||||
# M: [MANDATORY]. This line sets your server's name, description, port
|
||||
# number, and IP address to bind to. Fields, in order, are:
|
||||
#
|
||||
# If you leave IP address field blank or
|
||||
# *, it defaults to binding all local IP addresses on the machine.
|
||||
#
|
||||
# M:hostname:IP:Description Of Your Server:port:NS
|
||||
#
|
||||
# NS is a new feature in Unreal3.1. It is optional but it is recommended.
|
||||
# Every server on the network must have a completely unique NS. This number
|
||||
# will be used to identify the server.
|
||||
#
|
||||
M:server.my.net:*:My IRC Server:6667:34
|
||||
#
|
||||
# A: [MANDATORY]. This line lists your administrative information
|
||||
# (contact address, etc). To view this information, /admin (server) will
|
||||
# show it to you.
|
||||
#
|
||||
# The A: line has no set information, in fact, you can put arbitrary text
|
||||
# in there if you wish (it is encouraged that you put at *least* a contact
|
||||
# address for a person responsible for the irc server, however)
|
||||
#
|
||||
A:Generic Internet Access:Admin John Doe:jdoe@generic.com
|
||||
#
|
||||
# Y: [SUGGESTED]. These lines define connection classes. Connection
|
||||
# classes allow you to fine-tune your client and server connections. It is
|
||||
# suggested that clients and servers be placed in seperate classes, and if
|
||||
# you have lots of server connections (if you do have lots of servers you
|
||||
# shouldn't be reading this file :-) each set of servers (defined
|
||||
# arbitrarily by you) should have its own class. If you have clients
|
||||
# coming in from lots of different sites, you may want to seperate them
|
||||
# out into classes. For instance, you may want to put local users in one
|
||||
# class, with remote users in another class.
|
||||
#
|
||||
# The class numbers are not arbitrary. In auto-connecting servers -- that
|
||||
# is, servers that you have a port number (e.g. 6667) on the end of the C:
|
||||
# line (see below) the higher the number the higher the priority in
|
||||
# auto-connecting.
|
||||
#
|
||||
# The fields in order are: class number, ping frequency (in seconds),
|
||||
# connect frequency (in seconds), maximum number of links (used for
|
||||
# auto-connecting, and for limiting the number of clients in that class),
|
||||
# and sendq (this overrides any value set in include/config.h for #define
|
||||
# MAXSENDQLENGTH).
|
||||
#
|
||||
# Note that it is a good idea to have ping frequency the same at both ends
|
||||
# of the link.
|
||||
#
|
||||
# in this case, connect-frequency is 0 indicating that this is a client
|
||||
# class (servers never connect to clients, it is the other way around).
|
||||
Y:1:90:0:20:100000
|
||||
#
|
||||
# These are the recommended server Y:lines for connecting to dalnet.
|
||||
# In addition to these you should have at *least* one client class, and one
|
||||
# oper class (see O:lines). By convention on dalnet, these are usually
|
||||
# numbered from 5 to 10.
|
||||
#
|
||||
# Class 50 - Hub to hub, autoconnect
|
||||
Y:50:90:60:1:4000000
|
||||
#
|
||||
# Class 51 - Hub to hub, no autoconnect
|
||||
Y:51:90:60:0:4000000
|
||||
#
|
||||
# Class 30 - Hub to US leaf
|
||||
Y:30:90:0:0:3500000
|
||||
#
|
||||
# Class 32 - Hub to EU leaf
|
||||
Y:32:180:0:0:3500000
|
||||
#
|
||||
# Class 34 - Hub to AU leaf
|
||||
Y:34:300:0:0:3500000
|
||||
#
|
||||
# Class 40 - US leaf to hub, autoconnect
|
||||
Y:40:90:90:1:3500000
|
||||
#
|
||||
# Class 41 - US leaf to hub, no autoconnect
|
||||
Y:41:90:90:0:3500000
|
||||
#
|
||||
# Class 42 - EU leaf hub
|
||||
Y:42:180:90:1:3500000
|
||||
#
|
||||
# Class 44 - AU leaf to hub
|
||||
Y:44:300:120:1:3500000
|
||||
#
|
||||
# I: [MANDATORY]. The I: lines are client-authorization lines. Without
|
||||
# these lines, no clients will be able to connect to your server.
|
||||
# Wildcards ("*") are permitted. Passwords are also permitted (clients can
|
||||
# be configured to send passwords).
|
||||
#
|
||||
# Ident (for more information on this, see rfc1413) can also be used by
|
||||
# placing a @ in the appropriate fields.
|
||||
#
|
||||
# Fields are as follows:
|
||||
# I:IP-address-mask:optional password:domain-mask::connection class (opt)
|
||||
#
|
||||
# With a password..... This will allow anyone from anywhere to connect
|
||||
# as long as they know the password ("foobar"). Note listing this I: line
|
||||
# first, it will be read *last*, meaning it is the "fall-through". That
|
||||
# is, anyone who doesn't match the I: lines listed below must know the
|
||||
# password ("foobar") to connect.
|
||||
#
|
||||
I:*@*:foobar:*@*::1
|
||||
# This is a standard vanilla I: line which will permit anyone with an IP
|
||||
# address starting with 205.133 OR with a hostname ending in
|
||||
# .toledolink.com to connect to the server. NOTE, the ircd matches on the
|
||||
# *right-most* match, so if I connect as rmiller@glass.toledolink.com
|
||||
# (which is rmiller@205.133.127.8) I will show up on irc as
|
||||
# rmiller@glass.toledolink.com since that is the first match it found.
|
||||
# (Even though the second match is valid).
|
||||
I:205.133.*::*.toledolink.com::1
|
||||
#
|
||||
# using ident
|
||||
I:*@205.133.*::*@*.toledolink.com::1
|
||||
# and you can even specify just certain usernames running ident (as long
|
||||
# as the client's site is running the ident daemon):
|
||||
I:NOMATCH::rmiller@glass.toledolink.com::1
|
||||
# putting NOMATCH in the first field will stop the ircd from matching
|
||||
# automatically against the IP address and it will force the server to
|
||||
# match against the hostname. (the "NOMATCH" string is not mandatory, you
|
||||
# can use any arbitrary text in the first field).
|
||||
I:*@*:ONE:*@*::1
|
||||
# putting the ONE in the password field makes it so that only 1 user matching
|
||||
# that host or IP can connect through that I:line.
|
||||
#
|
||||
#
|
||||
# O: [OPTIONAL]. These lines define operator access. You do not need to
|
||||
# have an operator to run a server. A well configured leaf site should not
|
||||
# need an operator online, if it's connections are well defined, the irc
|
||||
# administrator can use kill -HUP on the ircd to reload the configuration
|
||||
# file.
|
||||
# The fields are as follows:
|
||||
# O:hostname (ident "@" permitted):password:NickName:AccessFlags:class
|
||||
# if the person in "NickName" is not coming from the hostname defined in
|
||||
# the first field then the person will get the error message "No O: lines
|
||||
# for your host".
|
||||
# NOTE that since Crypted Passwords are defined by default in
|
||||
# include/config.h this text probably will not be plaintext. See
|
||||
# ircd/crypt/README for more information.
|
||||
#
|
||||
# class is the Y:Line class you want this operator to end up in after they
|
||||
# have successfully /oper'd.
|
||||
#
|
||||
# Access flags may be left blank, or * to give full access rights. Flags
|
||||
# are in the form of single characters making a string. Any combination
|
||||
# of the following can be used(these are cAsE sensitive characters):
|
||||
#
|
||||
# r = access to /rehash server
|
||||
# R = access to /restart server
|
||||
# D = access to /die server
|
||||
# h = oper can send /help ops
|
||||
# g = oper can send /globops
|
||||
# w = oper can send /wallops
|
||||
# l = oper can send /locops
|
||||
# c = access to do local /squits and /connects
|
||||
# L = access to do remote /squits and /connects
|
||||
# k = access to do local /kills
|
||||
# K = access to do global /kills
|
||||
# b = oper can /kline users from server
|
||||
# B = oper can /unkline users from server
|
||||
# n = oper can send local server notices(/notice $servername message)
|
||||
# G = oper can send global server notices(/notce $*.my.net message)
|
||||
# A = admin
|
||||
# u = oper can set /umode +c
|
||||
# f = oper can set /umode +f
|
||||
# ^ = oper can set /umode +I
|
||||
# e = oper can set /umode +e
|
||||
# W = oper can set /umode +W
|
||||
# H = oper gets auto +x on /oper
|
||||
# o = local oper, flags included: rhgwlckbBnuf
|
||||
# O = global oper, flags included: oRDCK
|
||||
# a = services admin, access to /samode
|
||||
# C = co admin
|
||||
# T = tech admin
|
||||
# A = admin
|
||||
# N = network admin access to remote /rehash and remote /restart and a bunch more
|
||||
# * = flags included: AaNCTzSHW^
|
||||
|
||||
#
|
||||
# This is a plain vanilla O:line:
|
||||
O:*.toledolink.com:nopassword:Russell:*:10
|
||||
#
|
||||
# and this line forces ident:
|
||||
O:rmiller@glass.toledolink.com:nopassword:Russell::10
|
||||
#
|
||||
# This line is a generic "local operator", because of the flags, the only
|
||||
# thing that really makes them global operators, is if they have the flags
|
||||
# CKN set in their access flags.
|
||||
#
|
||||
# this line permits the nickname "jhs" with the password of "ITBites" to
|
||||
# be a local operator only (be able to issue commands locally -- can /kill
|
||||
# and /squit and /connect -- but *only* locally)
|
||||
#
|
||||
O:*.something.net:ITBites:jhs:o:10
|
||||
#
|
||||
# a crypted password line (NOTE that if you have crypted passwords, *all*
|
||||
# of you passwords must be crypted! In fact, if you are getting an error
|
||||
# "Incorrect Password" it may well be because crypted passwords are
|
||||
# defined and you have used plaintext. So my example of plaintext and
|
||||
# crypted strings in the same IRC server configuration file is an
|
||||
# impossibility (but it is just theoretical, which is why I explained both).
|
||||
#
|
||||
O:rmiller@*.toledolink.com:T0eiVgHrqeKTQ:Russell::10
|
||||
#
|
||||
# U: [OPTIONAL]. This line defines the servers that IRC recognizes as being
|
||||
# allowed to make various changes to the IRC environment (mode changes, for
|
||||
# example), without complaining or otherwise obstructing them. For example,
|
||||
# DALnet requires the following line:
|
||||
U:services.my.net:*:*
|
||||
#
|
||||
# X: [ENCOURAGED]. This line defines the password that an operator must use
|
||||
# to restart or die the server. Note that they still myst have they R and D
|
||||
# flags. This is just a security precaution against accidentaly typing
|
||||
# /die or /restart
|
||||
# X:<password for /DIE>:<password for /RESTART>
|
||||
X:diepass:restartpass
|
||||
|
||||
# C: [NETWORKED]. These lines define what servers your server tries to
|
||||
# connect to.
|
||||
# N: [NETWORKED]. These lines define what servers your server permits
|
||||
# connections to be initiated from.
|
||||
# C/N lines MUST be used in pairs. You cannot have one without the other.
|
||||
#
|
||||
# C: lines contain the following fields:
|
||||
# C:remote server's hostname:passwd:remote server's name:port:conn class:options
|
||||
# N: lines contain the following fields:
|
||||
# N:remote server's hostname:passwd:remote server's name:host mask:conn class
|
||||
#
|
||||
# "host mask" is the number of parts in *your* hostname to mask to. For
|
||||
# instance, with my servername being "csa.bu.edu", if I wanted to present
|
||||
# my servername to be "*.bu.edu" I would have a host-mask portion of "1".
|
||||
#
|
||||
# it is *strongly* advised that your C/N line passwords be different for
|
||||
# security's sake.
|
||||
#
|
||||
# ident is allowed in the server's hostname part of the field.
|
||||
# The options field in a C:line is only available as of Unreal3.1.1
|
||||
# Currently the only option is S which declares the link an SSL link.
|
||||
# If the other server is not compiled with SSL then the link will fail.
|
||||
#
|
||||
# these lines tell the server to automatically (note the port number, that
|
||||
# means automatic connection) connect to server2.my.net:
|
||||
C:foobar@server2.my.net:bigspark:server2.my.net:7000:32
|
||||
N:foobar@server2.my.net:bigalpha:server2.my.net::32
|
||||
#
|
||||
# This server's connection lines are more vanilla, masking the host to
|
||||
# *.toledolink.com (as described above):
|
||||
C:*.my.net:camelsrk00l:*.my.net::32
|
||||
N:*.my.net:andsoarellamas:*.my.net:1:32
|
||||
#
|
||||
# This this line makes use of the options field:
|
||||
# C:*.my.net:linkme:*.my.net:6667:32:S
|
||||
# N:*.my.net:linkme:*.my.net::32
|
||||
#
|
||||
# K: [OPTIONAL]. These lines define user@host patterns to be banned from
|
||||
# this particular server (with an optional time field). Note that K: lines
|
||||
# are *not* global, and if you ban a user they can still use any other IRC
|
||||
# server (unless they have specifically been banned there as well).
|
||||
#
|
||||
# The time field (same as reason) is only used if you #define
|
||||
# TIMED_KLINES in config.h, and even then they are discouraged.
|
||||
#
|
||||
# the fields are defined as:
|
||||
# K:hostmask:reason:username
|
||||
# wildcards are permitted in any one of the fields, in other words, you can
|
||||
# K:*::* if you wanted (but your server wouldn't be used much ;-)
|
||||
#
|
||||
# Spaces are permitted in the reason field (you don't have to use _).
|
||||
# The /stats command has been modified to replace all spaces with _'s when
|
||||
# doing a /stats k. K:lines also allows you to specify a file to play to the
|
||||
# user when they are K:lined. To use this feature the reason must be in the
|
||||
# format of |filename. the filename must be kc.anythinghere, this is to prevent
|
||||
# the sending of text files such as your ircd.conf.
|
||||
#
|
||||
# This K: line bans the username "hrose" (the wildcards are used to make
|
||||
# sure that any ident-checking character will match) on any machine from
|
||||
# the University of Boston.
|
||||
K:*.bu.edu:Hacking #UnrealIRCD:*hrose*
|
||||
#
|
||||
# This K: line bans any users from acs*.bu.edu between the hours of 8am
|
||||
# and 12pm and 1pm and 5pm (the time is always the server's local time).
|
||||
# Time-based K-lines such as this require TIMED_KLINES in config.h to be
|
||||
# #defined.
|
||||
K:acs*.bu.edu:0800-1200,1300-1700:*
|
||||
# Note that 24 hour time is used (no "AM" or "PM").
|
||||
# This K: line bans all *.foobar.com users and will play the file |kc.flooding
|
||||
# to the user as the reason.
|
||||
K:*.foobar.com:|kc.flooding:*
|
||||
#
|
||||
# E: [OPTIONAL]. This allows kline exceptions, even if a person matches
|
||||
# a K:line or /kline they are still allowed to connect.
|
||||
#
|
||||
# The fields are as follows
|
||||
# E:hostmask:reason:usermask
|
||||
#
|
||||
E:foo.bar.com:Oper on this server:*john21*
|
||||
#
|
||||
#
|
||||
# q: [DISCOURAGED]. These lines "quarantine" specified servers. Because
|
||||
# of the way they operates, the same q: lines MUST be installed by
|
||||
# everyone or the net will keep breaking. I CANNOT EMPHASIZE THIS ENOUGH.
|
||||
# Do NOT use q: lines lightly!
|
||||
#
|
||||
# This is NOT a nick q-line, if you wish to quarantine a NICK, see below.
|
||||
#
|
||||
# The fields are as follows:
|
||||
# q:*:reason why quarantine is in place:servername
|
||||
#
|
||||
q::this server is too slow and lags the net:cm5.eng.umd.edu
|
||||
#
|
||||
# Q: [OPTIONAL]. Different from the above type of q: line, these lines
|
||||
# prevent users on your server from picking certain nicks. This is useful
|
||||
# if your network has 'reserved' nicknames that should not be taken by
|
||||
# normal users. Note the difference in capitalization and BE CAREFUL!
|
||||
#
|
||||
# The fields are as follows:
|
||||
# Q:*:reason why quarantine is in place:nickname
|
||||
#
|
||||
# For example, You might want to use the following lines:
|
||||
Q::Reserved for services:ChanServ
|
||||
Q::Reserved for services:NickServ
|
||||
Q::Reserved for services:MemoServ
|
||||
Q::Reserved for services:OperServ
|
||||
Q::Reserved for services:HelpServ
|
||||
Q::Reserved for services:StatServ
|
||||
Q::Reserved for operators:IRCop
|
||||
Q::Reserved for operators:*Oper*
|
||||
Q::Reserved for administrators:Admin*
|
||||
#
|
||||
#
|
||||
# T: [OPTIONAL]. These allow you to specify different MOTD and RULES files
|
||||
# based on a users host. This is made so you can have MOTDs in different
|
||||
# languages so all users can see the MOTD and understand it.
|
||||
#
|
||||
# The fields are as follows:
|
||||
# T:host:motdfile:rulesfile
|
||||
#
|
||||
# T:*.fr:french.motd:french.rules
|
||||
#
|
||||
#
|
||||
# e: [OPTIONAL]. These lines allow you to specify a host which will not
|
||||
# be scanned by the proxy scanner when they connect. This is made so you
|
||||
# can allow some open proxys to connect while still killing others. Make
|
||||
# sure you use an IP and not a host for this line or it will not work.
|
||||
# NOTE: These are not the same as E:lines.
|
||||
#
|
||||
# The fields are as follows:
|
||||
# e:IP:*:*
|
||||
#
|
||||
# e:123.123.123:*:*
|
||||
#
|
||||
#
|
||||
# Z: [DISCOURAGED]. These block ALL incoming connections from a certain
|
||||
# IP address mask. They can stop users who log on and issue the SERVER
|
||||
# command a couple of times just to annoy irc ops. They are more
|
||||
# powerful that K-lines because they can stop users before they've had a
|
||||
# chance to register. This works on servers, SO BE VERY CAREFUL WITH
|
||||
# YOUR Z-LINE MASKS. Z-lines are a LAST RESORT. They are much too
|
||||
# dangerous and powerful to be using them instead of K-lines and akills.
|
||||
#
|
||||
# NOTE 1: Z-lines do NOT work on host names! Only IP addresses.
|
||||
# NOTE 2: Z-lines are part of /stats k.
|
||||
# NOTE 3: The :* at the end is REQUIRED. Not using it will cause both
|
||||
# ircd and chkconf to segfault without saying why.
|
||||
#
|
||||
# Syntax:
|
||||
# Z:IP mask:reason for zapping:*
|
||||
Z:127.0.0.1:Please don't log on from the local machine:*
|
||||
#
|
||||
# L: [OPTIONAL]. These lines "Leaf" specified servers. They are only
|
||||
# useful if you are a non-leaf site yourself. There are two ways you can
|
||||
# use L: lines. The first will limit one particular site to a particular
|
||||
# tree depth (including 0, which would mean the server has to connect with
|
||||
# no servers linked behind it otherwise the connection will fail). The
|
||||
# second will allow you to be selective about which other servers you wish
|
||||
# the connecting server to behave as a leaf towards.
|
||||
#
|
||||
# The fields are as follows:
|
||||
# L:disallow connections to this hostmask::server name:depth
|
||||
# For example, this will force kaja.gi.alaska.edu to connect only as a
|
||||
# leaf (if it is not a leaf, the link will be dropped):
|
||||
L:::kaja.gi.alaska.edu
|
||||
# This line will force cm5.eng.umd.edu to have a depth of only 1 below it
|
||||
# (that is, it is allowed to have only leaves connected to it):
|
||||
L:::cm5.eng.umd.edu:1
|
||||
#
|
||||
# This line will prohibit anything matching *.edu to be connected behind
|
||||
# any server matching *.au:
|
||||
L:*.edu::*.au
|
||||
#
|
||||
# H: [OPTIONAL]. These lines define who you permit to act as a "hub" to
|
||||
# you (that is, who you permit to connect non-leafed servers to you).
|
||||
#
|
||||
# the first field may use wildcards, the third field *must* be an exact
|
||||
# match for a server's name (NOT a server's hostname, if they differ, the
|
||||
# server's name must be used). If the servername is a wildcard (e.g. *.au)
|
||||
# that is an acceptable name for the third field.
|
||||
#
|
||||
# The fields are as follows:
|
||||
# H:servers which are permitted entry::hub server
|
||||
#
|
||||
# Example, permit server.my.net to allow any servers behind it to
|
||||
# connect:
|
||||
H:*::server2.my.net
|
||||
#
|
||||
# Example, permit irc-2.mit.edu to allow any MIT servers behind it to
|
||||
# connect:
|
||||
H:*.mit.edu::irc-2.mit.edu
|
||||
#
|
||||
# P: [OPTIONAL]. This field allows the server to listen on various ports
|
||||
# (other than 7000) for connections.
|
||||
#
|
||||
# You can now bind internet ports to specific IP interface devices. To do
|
||||
# this put the IP address of the interface in the host field. To bind to
|
||||
# all interfaces, leave empty or put * in.
|
||||
#
|
||||
# P:lines can be limited to specific connections. For example you can make
|
||||
# a port listen for only server connections. The currently available flags
|
||||
# are:
|
||||
#
|
||||
# S - Server Only
|
||||
# C - Client(User) Only
|
||||
# J - JavaChat (for CR Java Client)
|
||||
# s - Secure SSL
|
||||
# * - CS flags
|
||||
#
|
||||
# The fields are as follows::
|
||||
# P:IP# or UNIX socket file:*:*:port number
|
||||
# for example, an internet domain socket on port 6665 for the local
|
||||
# computer
|
||||
P:127.0.0.1:*:*:6665
|
||||
#
|
||||
# Examples using flags
|
||||
P:127.0.0.1:S:*:6666
|
||||
P:127.0.0.1:C:*:7000
|
||||
#
|
||||
# V: [OPTIONAL]. These lines are very complex and allow you to deny a
|
||||
# server from linking based on what version of Unreal they are running,
|
||||
# as well as what flags the IRCd was compiled with.
|
||||
#
|
||||
# The fields are as follows:
|
||||
# V:protocol:flags:servermask
|
||||
#
|
||||
# The format for the protocol field is as follows:
|
||||
# >protocol - denys any protocols higher than that specified
|
||||
# <protocol - denys any protocols lower than that specified
|
||||
# =protocol - denys the specified protocol
|
||||
# !protocol - denys all but the specified protocol
|
||||
#
|
||||
# The format for the flags field is as follows:
|
||||
# flag - server must have the specifed flag
|
||||
# !flag - server may not have the specified flag
|
||||
#
|
||||
# Examples:
|
||||
# V:<2302:*:*
|
||||
# V:*:S:hub.*
|
||||
# V:=2301:!S:*
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
[ $Id$ ]
|
||||
|
||||
UnrealIRCd FAQ
|
||||
Made by Stskeeps
|
||||
|
||||
This file will contain frequently asked questions about
|
||||
Unreal IRCd. If you need more help email stskeeps@tspre.org
|
||||
|
||||
1) * I compile and everything seems fine during the compiling, but when it
|
||||
comes time for the program to link, I get errors complaining about dns and
|
||||
res things. What causes this?
|
||||
|
||||
A: You need to make sure -lresolv is included in the "extra libraries"
|
||||
option of ./Config (or IRCDLIBS in top-level makefile)
|
||||
|
||||
2) * When I start up the IRCd it complains about something with chdir()?
|
||||
|
||||
A: You need to make sure the right directory is specified when you was
|
||||
asked about "What directory are all the server configuration files in?"
|
||||
./Config question
|
||||
|
||||
3) The server says like:
|
||||
*** Link server1 -> server2 is now synced [secs: 30 recv: 130.4 sent: 120.0]
|
||||
when I link two servers together, what does that mean?
|
||||
|
||||
A: That means the link is "synced" (all infodata transfered about the server).
|
||||
The "secs" (30 in this example) means it took 30 seconds to do the sync
|
||||
"recv: 130.4" means there was recieved 130 KiloBytes and 4 bytes.
|
||||
"sent: 120.0" means there was sent 120 kilobytes from my side.
|
||||
|
||||
4) What is a negative TS split?
|
||||
|
||||
A: Every computer/server has got a time (so they can do TimeStamps) ..
|
||||
When the clock on the computer is set wrong and the computer it links
|
||||
upto is wrong it creates a Negative TS split (means time is lower it
|
||||
actually is. How to fix this is contacting the root of the machine
|
||||
and ask him to fix the time (when you made sure it's YOUR server that's
|
||||
wrong)
|
||||
|
||||
5) What is an uProtocol ?
|
||||
|
||||
A: UnrealIRCd uses numbers to check if a link is compatible with itself
|
||||
F.x Unreal v2.1.3 has got number 2103 while version 2.1 only has got
|
||||
2100 - This means .. if the number is lower/higher than the uProtocol
|
||||
the server uses, it's an incompatible link (of some reasons)
|
||||
|
||||
6) How does T:Lines work and what are they?
|
||||
|
||||
A: T:Lines is a new Unreal feature that makes it able to show different
|
||||
MOTDs and RULES to people who matches a certain hostmask . Lemme show you some examples:
|
||||
|
||||
T:*.dk:motds/danish.motd:rules/danish.rules
|
||||
T:*.fr:motds/french.motd:rules/french.rules
|
||||
|
||||
This will get people from Denmark to see the "Danish" MOTD and the "Dandish" RULLES
|
||||
and people from France to see the French ones:)
|
||||
|
||||
NOTE: T:Lines are read up side down so if you have a T:*:ircd.motd:ircd.rules in the bottom
|
||||
it should be at the top so the other motd lines can work as well
|
||||
|
||||
7) Where can i download updates to Unreal?
|
||||
|
||||
A: Mostly you can download the newest version at
|
||||
http://www.unrealircd.com
|
||||
|
||||
Versions may be spewed out regulary due to new features and bugs..
|
||||
|
||||
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
|
||||
|
||||
12) My IRCd which runs on a FreeBSD says something about FDs and
|
||||
Max: 0 What shall I do??
|
||||
A: Well it's somekinda bug but you can workaround it by removing those
|
||||
lines in src/s_bsd.c: (init_sys())
|
||||
|
||||
<- snippet 1 ->
|
||||
#ifdef RLIMIT_FD_MAX
|
||||
struct rlimit limit;
|
||||
int pid;
|
||||
|
||||
if (!getrlimit(RLIMIT_FD_MAX, &limit))
|
||||
{
|
||||
# ifdef pyr
|
||||
if (limit.rlim_cur < MAXCONNECTIONS)
|
||||
#else
|
||||
if (limit.rlim_max < MAXCONNECTIONS)
|
||||
# endif
|
||||
{
|
||||
(void)fprintf(stderr,"ircd fd table too big\n");
|
||||
(void)fprintf(stderr,"Hard Limit: %d IRC max: %d\n",
|
||||
limit.rlim_max, MAXCONNECTIONS);
|
||||
(void)fprintf(stderr,"Fix MAXCONNECTIONS\n");
|
||||
exit(-1);
|
||||
}
|
||||
# ifndef pyr
|
||||
limit.rlim_cur = limit.rlim_max; /* make soft limit the max */
|
||||
if (setrlimit(RLIMIT_FD_MAX, &limit) == -1)
|
||||
{
|
||||
(void)fprintf(stderr,"error setting max fd's to %d\n",
|
||||
limit.rlim_cur);
|
||||
exit(-1);
|
||||
}
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
<-snippet 2->
|
||||
#ifdef sequent
|
||||
# ifndef DYNIXPTX
|
||||
int fd_limit;
|
||||
|
||||
fd_limit = setdtablesize(MAXCONNECTIONS + 1);
|
||||
if (fd_limit < MAXCONNECTIONS)
|
||||
{
|
||||
(void)fprintf(stderr,"ircd fd table too big\n");
|
||||
(void)fprintf(stderr,"Hard Limit: %d IRC max: %d\n",
|
||||
fd_limit, MAXCONNECTIONS);
|
||||
(void)fprintf(stderr,"Fix MAXCONNECTIONS\n");
|
||||
exit(-1);
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
13) I run debian-sparc and i get errors when compiling in match.c
|
||||
What should I do?
|
||||
A: If it says like this
|
||||
<-snippet->
|
||||
match.c: In function 'myncmp':
|
||||
match.c:247: argument 'str1' doesn't match prototype
|
||||
/usr/include/string.h:255: prototype declaration
|
||||
match.c:247: argument 'str2' doesn't match prototype
|
||||
/usr/include/string.h:255: prototype declaration
|
||||
match.c:247: argument 'n' doesn't match prototype
|
||||
/usr/include/string.h:255: prototype declaration
|
||||
<-end of snippet>
|
||||
|
||||
Then go into include/setup.h and add this line:
|
||||
#define GOT_STRCASECMP
|
||||
|
||||
(C) Carsten Munk 1999-2000
|
||||
@@ -0,0 +1,109 @@
|
||||
|
||||
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"
|
||||
@@ -0,0 +1,82 @@
|
||||
.\" $Id$
|
||||
.TH IRC 1 "7 October 1990"
|
||||
.SH NAME
|
||||
irc \- User Interface to Internet Relay Chat Protocol
|
||||
.SH SYNOPSIS
|
||||
\fBirc\fP [\fB-p\fP \fIportnum\fP] [\fB-c\fP \fIchannel\fP] [ \fInickname\fP [ \fIserver\fP ]]
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
\fBIrc\fP is a user interface to the Internet Relay Chat, a CB-like
|
||||
interactive discussion environment. It is structured into \fIchannels\fP,
|
||||
which are public discussion forums, and also allows for private intercommunication.
|
||||
Each participant has a \fInickname\fP, which is the one specified in the command
|
||||
line or else his login name.
|
||||
.LP
|
||||
Once invoked, \fBirc\fP connects as a client to the specified server,
|
||||
\fIserver\fP or to the default one (see below). The screen splits into a dialogue
|
||||
window (the major part
|
||||
of the screen) and a command line, from which messages can be sent and
|
||||
commands given to control irc.
|
||||
.SH COMMAND SYNTAX
|
||||
The syntax of irc commands is of the form \fB/COMMAND\fP. The most notable
|
||||
ones are listed below. For an uptodate list, use the \fBHELP\fP command
|
||||
of \fBirc\fP. Case is ignored.
|
||||
.IP "\fB/ADMIN\fR [\fIserver\fP]"
|
||||
Prints administrative information about an IRC \fIserver\fP.
|
||||
.IP "\fB/AWAY\fP [\fImessage\fP]"
|
||||
Mark yourself as being away (with an automatic reply \fImessage\fP
|
||||
if specified)
|
||||
.IP "\fB/BYE\fR, \fB/EXIT\fR, \fB/QUIT\fR"
|
||||
Terminate the session
|
||||
.IP "\fB/CHANNEL\fR [\fIchannel\fP]"
|
||||
Join another \fIchannel\fP
|
||||
.IP "\fB/CLEAR\fR"
|
||||
Clear the screen
|
||||
.IP "\fB/HELP\fR [\fIcommand\fP]"
|
||||
Display a brief description of the \fIcommand\fP (or list all commands, if none
|
||||
specified).
|
||||
.IP "\fB/SUMMON\fR \fIuser\fP"
|
||||
Allows to summon a \fIuser\fP specified as a full Internet address, i.e.,
|
||||
\fIlogin@host.domain\fP, to an IRC dialogue session (in much the same
|
||||
way as the talk(1) command). It is usable ONLY if the irc daemon runs on
|
||||
the target machine (host.domain).
|
||||
.IP "\fB/TOPIC\fR \fItopic\fP"
|
||||
Sets the \fItopic\fP for the current channel
|
||||
.IP "\fB/WHO\fR [\fIchannel\fP|*]"
|
||||
Lists all users of IRC if no argument, of the specified \fIchannel\fP or of the
|
||||
current channel (*).
|
||||
.SH ARGUMENTS
|
||||
.IP "\fB-p\fP \fIportnum\fP"
|
||||
TCP/IP "port number. Default is 6667 and this option should seldom if ever"
|
||||
be used.
|
||||
.IP "\fB-c\fP \fIchannel\fP"
|
||||
\fIChannel\fP number to join upon beginning of the session. Default is no channel.
|
||||
.IP "\fInickname\fP"
|
||||
\fINickname\fP used in the session (can be changed with the \fB/NICK\fP command).
|
||||
Default is user login name.
|
||||
.IP "\fIserver\fP"
|
||||
\fIServer\fP to connect to. Default is specified in the irc system configuration
|
||||
file, and can be superseded with the environment variable IRCSERVER.
|
||||
.SH EXAMPLE
|
||||
.RS
|
||||
.nf
|
||||
tolmoon% \fBirc -p6667 Wizard tolsun\fP
|
||||
.fi
|
||||
.RE
|
||||
.LP
|
||||
connects you to irc server in host tolsun (port 6667) with nickname Wizard
|
||||
.SH COPYRIGHT
|
||||
Copyright (c) 1988 University of Oulu, Computing Center, Finland.
|
||||
.nf
|
||||
Copyright (c) 1988,1989,1990 Jarkko Oikarinen
|
||||
.nf
|
||||
All rights reserved.
|
||||
For full COPYRIGHT see LICENSE file with IRC package.
|
||||
.SH "SEE ALSO"
|
||||
ircd(8)
|
||||
.SH BUGS
|
||||
What bugs ?
|
||||
.SH AUTHOR
|
||||
Jarkko Oikarinen <jto@tolsun.oulu.fi>
|
||||
.nf
|
||||
Manual page updated by Michel Fingerhut <Michel.Fingerhut@ircam.fr>
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
.\" $Id$
|
||||
.TH IRCD 8 "29 March 1989"
|
||||
.SH NAME
|
||||
ircd \- The Internet Relay Chat Program Server
|
||||
.SH SYNOPSIS
|
||||
.hy 0
|
||||
.IP \fBircd\fP
|
||||
[-a] [-c] [-i] [-o] [-q] [-t] [-d directory]
|
||||
[-f configfile] [-x debuglevel] [-h hostname] [-p portnum]
|
||||
.SH DESCRIPTION
|
||||
.LP
|
||||
\fIircd\fP is the server (daemon) program for the Internet Relay Chat
|
||||
Program. The \fIircd\fP is a server in that its function is to "serve"
|
||||
the client program \fIirc(1)\fP with messages and commands. All commands
|
||||
and user messages are passed directly to the \fIircd\fP for processing
|
||||
and relaying to other ircd sites. The \fIirc(1)\fP program depends upon
|
||||
there being an \fIircd\fP server running somewhere (either on your local
|
||||
UNIX site or a remote ircd site) so that it will have somewhere to connect
|
||||
to and thus allow the user to begin talking to other users.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-d directory
|
||||
This option tells the server to change to that directory and use
|
||||
that as a reference point when opening \fIircd.conf\fP and other startup
|
||||
files.
|
||||
.TP
|
||||
.B \-o
|
||||
Starts up a local ircdaemon. Standard input can be used to send IRC
|
||||
commands to the daemon. The user logging in from standard input will
|
||||
be given operator privileges on this local ircd. If ircd is a setuid program,
|
||||
it will call setuid(getuid()) before going to local mode. This option
|
||||
can be used in inetd.conf to allow users to open their own irc clients
|
||||
by simply connecting their clients to the correct ports. For example:
|
||||
.TP
|
||||
.B
|
||||
irc stream tcp nowait irc /etc/ircd ircd \\-f/etc/ircd.conf \\-o
|
||||
|
||||
allows users connecting to irc port (specified in /etc/services) to start
|
||||
up their own ircdaemon. The configuration file should be used to check from
|
||||
which hosts these connections are allowed from. This option also turns
|
||||
on the autodie option -a.
|
||||
.TP
|
||||
.B \-a
|
||||
Instructs the server to automatically die off if it loses all it's clients.
|
||||
.TP
|
||||
.B \-t
|
||||
Instructs the server to direct debugging output to standard output.
|
||||
.TP
|
||||
.B \-x#
|
||||
Defines the debuglevel for ircd. The higher the debuglevel, the more stuff
|
||||
gets directed to debugging file (or standard output if -t option was used
|
||||
as well).
|
||||
.TP
|
||||
.B \-i
|
||||
The server was started by inetd and it should start accepting connections
|
||||
from standard input. The following inetd.conf-line could be used to start
|
||||
up ircd automatically when needed:
|
||||
.TP
|
||||
.B
|
||||
ircd stream tcp wait irc /etc/ircd ircd \-i
|
||||
|
||||
allows inetd to start up ircd on request.
|
||||
.TP
|
||||
.B \-f filename
|
||||
Specifies the ircd.conf file to be used for this ircdaemon. The option
|
||||
is used to override the default ircd.conf given at compile time.
|
||||
.TP
|
||||
.B \-c
|
||||
This flag must be given if you are running ircd from \fI/dev/console\fP or
|
||||
any other situation where fd 0 isnt a tty and you want the server to fork
|
||||
off and run in the background. This needs to be given if you are starting
|
||||
\fIircd\fP from an \fIrc\fP (such as \fI/etc/rc.local\fP) file.
|
||||
.TP
|
||||
.B \-q
|
||||
Using the -q option stops the server from doing DNS lookups on all the
|
||||
servers in your \fIircd.conf\fP file when it boots. This can take a lengthy
|
||||
amount of time if you have a large number of servers and they are not all
|
||||
close by.
|
||||
.TP
|
||||
.B \-h hostname
|
||||
Allows the user to manually set the server name at startup. The default
|
||||
name is hostname.domainname.
|
||||
.B \-p portname
|
||||
Specifies the port where the daemon should start waiting for connections.
|
||||
This overrides the default which is given at compile time.
|
||||
.TP
|
||||
.SH
|
||||
If you plan to connect your \fIircd\fP server to an existing Irc-Network,
|
||||
you will need to alter your local IRC CONFIGURATION FILE (typically named
|
||||
"ircd.conf") so that it will accept and make connections to other \fIircd\fP
|
||||
servers. This file contains the hostnames, Network Addresses, and sometimes
|
||||
passwords for connections to other ircds around the world. Because
|
||||
description of the actual file format of the "ircs.conf" file is beyond the
|
||||
scope of this document, please refer to the file INSTALL in the IRC source
|
||||
files documentation directory.
|
||||
.LP
|
||||
BOOTING THE SERVER: The \fIircd\fP server can be started as part of the
|
||||
UNIX boot procedure or just by placing the server into Unix Background.
|
||||
Keep in mind that if it is *not* part of your UNIXES Boot-up procedure
|
||||
then you will have to manually start the \fIircd\fP server each time your
|
||||
UNIX is rebooted. This means if your UNIX is prone to crashing
|
||||
or going for for repairs a lot it would make sense to start the \fIircd\fP
|
||||
server as part of your UNIX bootup procedure. In some cases the \fIirc(1)\fP
|
||||
will automatically attempt to boot the \fIircd\fP server if the user is
|
||||
on the SAME UNIX that the \fIircd\fP is supposed to be running on. If the
|
||||
\fIirc(1)\fP cannot connect to the \fIircd\fP server it will try to start
|
||||
the server on it's own and will then try to reconnect to the newly booted
|
||||
\fIircd\fP server.
|
||||
.SH EXAMPLE
|
||||
.RS
|
||||
.nf
|
||||
tolsun% \fBircd\fP
|
||||
.fi
|
||||
.RE
|
||||
.LP
|
||||
Places \fIircd\fP into UNIX Background and starts up the server for use.
|
||||
Note: You do not have to add the "&" to this command, the program will
|
||||
automatically detach itself from tty.
|
||||
.SH COPYRIGHT
|
||||
(c) 1988,1989 University of Oulu, Computing Center, Finland,
|
||||
.LP
|
||||
(c) 1988,1989 Department of Information Processing Science,
|
||||
University of Oulu, Finland
|
||||
.LP
|
||||
(c) 1988,1989,1990,1991 Jarkko Oikarinen
|
||||
.LP
|
||||
For full COPYRIGHT see LICENSE file with IRC package.
|
||||
.LP
|
||||
.RE
|
||||
.SH FILES
|
||||
/etc/utmp
|
||||
"irc.conf"
|
||||
.SH "SEE ALSO"
|
||||
irc(1)
|
||||
.SH BUGS
|
||||
None... ;-) if somebody finds one, please inform author
|
||||
.SH AUTHOR
|
||||
Jarkko Oikarinen, currently jto@tolsun.oulu.fi,
|
||||
manual page written by Jeff Trim, jtrim@orion.cair.du.edu,
|
||||
later modified by jto@tolsun.oulu.fi.
|
||||
@@ -0,0 +1,47 @@
|
||||
[ $Id$ ]
|
||||
The following macros are included in "ircd.m4" for use with the m4 text
|
||||
preprocessor. "ircd.m4" is parsed before the IRC server conf file so they
|
||||
are all available for use with that.
|
||||
|
||||
NOTE: The "ircd.m4" file is *ONLY* created by a "make install".
|
||||
|
||||
VERSION - current version string as in patchlevel.h
|
||||
DEBUGMODE - if DEBUGMODE is define in config.h, is also defined for m4.
|
||||
HOSTNAME - taken from hostname(1)
|
||||
USER - username of person doing the "make install"
|
||||
PORT - default port number as in config.h
|
||||
PFREQ - default ping frequency as in config.h
|
||||
CFREQ - default connect frequency as in config.h
|
||||
MAXSENDQ - default max sendq as in config.h
|
||||
CL - use this to wrap a class number
|
||||
HOST - use this to wrap a hostname
|
||||
HOSTM - use this to wrap the hostmask number in N-lines
|
||||
ID - when wrapping the host field in an I-line, causes ident string return
|
||||
to be used instead of user supplised username.
|
||||
PASS - use this to wrap passwords in C/N/I/O lines
|
||||
PING - use this to wrap the ping value in Y-lines
|
||||
APORT - use this to wrap the port number in I-lines
|
||||
CPORT - use this to wrap the port number in C-lines
|
||||
SERV - use this to wrap server names
|
||||
|
||||
You might use some of these as
|
||||
C:foo.bar.edu:PASS(boo):foo.bar.edu:APORT(6667)
|
||||
I:ID(128.250.*)::ID(*.mu.oz.au):CPORT(6667)
|
||||
|
||||
In addition to these (rather weak macros), some more complete ones are
|
||||
defined which already perform the above.
|
||||
|
||||
ADMIN - provide fields to it as you would an A-line
|
||||
ALLOW - provide fields to it as you would an N-line
|
||||
BAN - provide fields to it as you would an K-line
|
||||
CLASS - provide fields to it as you would an Y-line
|
||||
CLIENT - provide fields to it as you would an I-line
|
||||
CONNECT - provide fields to it as you would an C-line
|
||||
ME - provide fields to it as you would an M-line
|
||||
HUB - first parameter is server you want to hub, second is optional and is
|
||||
a mask against which other servers introduced must match against.
|
||||
LEAF - works like HUB, except that the mask is matched against server names
|
||||
to check if the link should be dropped.
|
||||
SERVER - uses 6 fields, the first 4 as are found in an N-line, the last two
|
||||
should be as you would use in a C-line. It expands out to provide
|
||||
both a C and N line.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user