mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-17 10:04:47 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f5f78ca725 |
@@ -0,0 +1,19 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for Unreal3.2-Selene(beta2)
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
regarding the setup of it, during the process.
|
||||
|
||||
If you have problems regarding the setup & compile, read Unreal.nfo to get
|
||||
more information on where to get help. Please, before running this setup,
|
||||
read the documentation in the "doc" folder.
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
|
||||
Configuration rant, by Stskeeps
|
||||
--------------------------------
|
||||
|
||||
Right.. so you think you are done now, you can boot your IRCd and be happy,
|
||||
and it just works. No, you still got a lot to do. You need to read all of
|
||||
the documentation through. Would you even have made it this far without
|
||||
makeconf?.
|
||||
|
||||
Well, today, people think they can be 3 months on IRC, and be ready to run
|
||||
an IRC daemon. I hate to say this, but I don't think so.
|
||||
|
||||
If you cannot read an IRC help file, or understand what stuff like "desynch",
|
||||
"masskill", "k-line", or what "mode # +l 5" means - or you got no experince
|
||||
in the UNIX field at all, like, you MUST know how to invoke a editor in a
|
||||
shell, or to unzip a file. If you don't know/can do these things, I suggest
|
||||
you stop trying to set this up, and go read on some UNIX tutorials, and IRC
|
||||
tutorials. It takes a LOT of work to run a IRC server good.
|
||||
|
||||
I mean. I sit on the #unreal-support support channel each day, and I see
|
||||
countless questions about stuff that IS IN the documentation. Numerous
|
||||
people don't even bother to look at the config files (CONFIG_FILE_STOP
|
||||
problem).
|
||||
|
||||
You need to look at the documentation now. You need to see how to "include"
|
||||
other configuration files. You need to know how to work out how to use
|
||||
doc/example.settings. I can only tell you, if you ask for support, and it
|
||||
is for errors that you could solve by reading the first lines of a document,
|
||||
then you'll be firmly ignored. I'm sorry, we cannot help your laziness.
|
||||
|
||||
Anyhow, good luck with setting this up. Hope you understand what I am saying
|
||||
here. You will learn a lot more reading, than just ignoring what we are
|
||||
saying.
|
||||
|
||||
--Stskeeps
|
||||
@@ -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,86 @@
|
||||
|
||||
Unreal3.2-Selene (BETA4) RELEASE NOTES
|
||||
======================================
|
||||
|
||||
I M P O R T A N T R E A D I N G
|
||||
|
||||
|
||||
* Unreal3.2-Selene is a lot different than Unreal3.1.1. Forget all you have
|
||||
learned about setting up Unreal3.1.1 - this is a lot different. We have got
|
||||
a new configuration format that integrates all the former config files,
|
||||
ircd.conf, vhost.conf, chrestrict.conf, unrealircd.conf, into to one new
|
||||
unrealircd.conf (what the ircd.conf is called now). See doc/ for more
|
||||
information on the configuration format
|
||||
|
||||
* We have introduced a new cloaking algoritm (+x), which makes it
|
||||
incompatible with Unreal3.1.1 - these can however still link, but the
|
||||
hostname will look different. This is made of three big numbers,
|
||||
configured in the config file - and these MUST be the same on all servers
|
||||
on the network. Keep these numbers secret, and the cloaking algorithm is
|
||||
uncrackable (within 55 years, that is)
|
||||
|
||||
* We use autoconf to help with compiliation, and this should make us able
|
||||
to a lot more platform (we have even ported to BeOS).
|
||||
|
||||
* We require a pthreads library for the SOCKS scan now - and this is now
|
||||
done in the background (no more waiting!).
|
||||
|
||||
* The IRCd is now modularized, and you load modules with the loadmodule
|
||||
command. You will most likely want to add these lines:
|
||||
|
||||
loadmodule "src/modules/commands.so";
|
||||
loadmodule "src/modules/scan.so";
|
||||
loadmodule "src/modules/scan_socks.so";
|
||||
loadmodule "src/modules/scan_http.so";
|
||||
|
||||
If you would like to code a module, doc/ will contain a module guide,
|
||||
and we got an example module in src/modules/m_dummy.c.
|
||||
|
||||
* We have some IPv6 support, and there are some minor bugs in it.
|
||||
|
||||
* The documentation is NOT yet 100% complete
|
||||
|
||||
* We have added snomask (similar to ircu), basically this allowed us to remove several modes. Modes +cfFkje
|
||||
are gone, but don't worry, you can still use them. They are now added like this:
|
||||
|
||||
/mode yournick +s +cF
|
||||
|
||||
You set the flags in the second parameter of the mode command for a mode change +s, setting -s with no
|
||||
parameters removes all your snomask. You can remove a specific snomask by doing:
|
||||
|
||||
/mode yournick -s -c
|
||||
|
||||
The current snomasks are:
|
||||
|
||||
c - local connects
|
||||
F - far connects
|
||||
f - flood notices
|
||||
k - kill notices
|
||||
e - 'eyes' notices
|
||||
j - 'junk' notices
|
||||
v - vhost notices
|
||||
G - gline/shun notices
|
||||
|
||||
It shouldn't be too hard to figure out, just play around with it a bit :)
|
||||
|
||||
* /who needs testing it was recoded and may contain bugs
|
||||
|
||||
* We have added alias {} which allows you to dynamically create commands such as /nickserv
|
||||
Read example.conf for more information on how to create your own. To use standard ones include
|
||||
one of the following files
|
||||
|
||||
aliases/ircservices.conf (IRCServices, Daylight)
|
||||
aliases/epona.conf (Epona)
|
||||
aliases/generic.conf (Magick, Sirius, Wrecked)
|
||||
aliases/operstats.conf (OperStats)
|
||||
aliases/genericstats.conf (GeoStats, NeoStats)
|
||||
|
||||
* You can now use an IP in the oper::from and vhost::from fields even if the host resolves
|
||||
|
||||
* Added an http proxy scanner (scan_http.so)
|
||||
|
||||
* MAKE SURE YOU RERUN ./Config AND RUN make clean BEFORE USING THIS VERSION!!!
|
||||
|
||||
* THIS IS A BETA VERSION. THINGS MAY NOT WORK. REPORT ANY BUGS TO THESE
|
||||
ADDRESSES:
|
||||
* coders@lists.unrealircd.org and bugs@lists.unrealircd.org
|
||||
@@ -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,77 @@
|
||||
#
|
||||
# UnrealIRCd Bug Reporting Script
|
||||
# Copyright (c) 2001, The UnrealIRCd Team
|
||||
# All rights reserved
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
# provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright notice, this list of conditions
|
||||
# and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
|
||||
# and the following disclaimer in the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
# * Neither the name of the The UnrealIRCd Team nor the names of its contributors may be used
|
||||
# to endorse or promote products derived from this software without specific prior written permission.
|
||||
# * The source code may not be redistributed for a fee or in closed source
|
||||
# programs, without expressed oral consent by the UnrealIRCd Team, however
|
||||
# for operating systems where binary distribution is required, if URL
|
||||
# is passed with the package to get the full source
|
||||
# * No warranty is given unless stated so by the The UnrealIRCd Team
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'' AND ANY EXPRESS OR
|
||||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
# First we define some nice settings and some nice functions
|
||||
set print pretty on
|
||||
|
||||
# dumplist <linked list> <structure format>
|
||||
define dumplist
|
||||
echo Dumping linked list $arg0 in format $arg1\n
|
||||
set $p = $arg0
|
||||
while $p
|
||||
print *($arg1 *) $p
|
||||
set $p = $p->next
|
||||
end
|
||||
end
|
||||
|
||||
# dumparray <name> <size>
|
||||
define dumparray
|
||||
echo Dumping array $arg0 size $arg1\n
|
||||
set $p = 0
|
||||
while $p < $arg1
|
||||
if $arg0[$p]
|
||||
print *$arg0[$p]
|
||||
end
|
||||
set $p = $p + 1
|
||||
end
|
||||
end
|
||||
|
||||
echo Full backtrace:\n
|
||||
echo ---------------\n
|
||||
echo \n
|
||||
bt full
|
||||
echo \n
|
||||
echo Backup parse() buffer:\n
|
||||
echo ----------------------\n
|
||||
echo \n
|
||||
print backupbuf
|
||||
echo \n
|
||||
echo me output:\n
|
||||
echo ----------------------\n
|
||||
print me
|
||||
echo \n
|
||||
echo IRCstats:\n
|
||||
echo ----------------------\n
|
||||
print IRCstats
|
||||
echo \n
|
||||
echo Modules:\n
|
||||
echo ----------------------\n
|
||||
dumparray Modules 50
|
||||
quit
|
||||
@@ -0,0 +1,6 @@
|
||||
ircdcron/ircd.cron
|
||||
ircdcron/ircdchk
|
||||
src/modules/Makefile
|
||||
src/ssl.rnd
|
||||
src/win32/devel/StackTrace.lib
|
||||
src/win32/gnu_regex.lib
|
||||
@@ -1,2 +0,0 @@
|
||||
github: [syzop]
|
||||
patreon: UnrealIRCd
|
||||
@@ -1,59 +0,0 @@
|
||||
name: Linux CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["unreal60_dev"]
|
||||
pull_request:
|
||||
branches: ["unreal60_dev"]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: read
|
||||
|
||||
env:
|
||||
NOSERVICES: 1
|
||||
RUNTESTFLAGS: "-slightlyfast"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
compiler:
|
||||
- { c: gcc, cpp: g++ }
|
||||
- { c: clang, cpp: clang++ }
|
||||
|
||||
env:
|
||||
CC: ${{ matrix.compiler.c }}
|
||||
CXX: ${{ matrix.compiler.cpp }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
#uses: actions/checkout@v4
|
||||
#no, pin to v4.2.2 for security reasons:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
||||
#and we don't need the credentials later..
|
||||
with:
|
||||
persist-credentials: false
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo rm -f /var/lib/man-db/auto-update
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y --no-install-recommends \
|
||||
build-essential pkg-config libssl-dev libpcre2-dev libargon2-dev \
|
||||
libsodium-dev libc-ares-dev libcurl4-openssl-dev libjansson-dev
|
||||
|
||||
- name: Install python dependencies
|
||||
run: |
|
||||
python -m pip install --break-system-packages pyasyncore pyasynchat
|
||||
|
||||
- name: Build
|
||||
run: extras/build-tests/nix/build
|
||||
|
||||
- name: Run tests
|
||||
run: extras/build-tests/nix/run-tests
|
||||
-93
@@ -1,93 +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/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
|
||||
[D|d]esktop.ini
|
||||
|
||||
# Ignores for build artifacts
|
||||
*.so
|
||||
*.o
|
||||
*.dSYM
|
||||
*.dylib
|
||||
src/ircd
|
||||
src/version.c
|
||||
src/include
|
||||
|
||||
# Ignores for windows stuff
|
||||
## Binaries
|
||||
*.dll
|
||||
*.exe
|
||||
*.map
|
||||
*.pdb
|
||||
*.lib
|
||||
|
||||
## Build artifacts
|
||||
*.obj
|
||||
*.exp
|
||||
*.ilk
|
||||
*.res
|
||||
##Other
|
||||
*.tmp
|
||||
UnrealIRCd.def*
|
||||
*.nativecodeanalysis.xml
|
||||
|
||||
# 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/
|
||||
@@ -1,4 +0,0 @@
|
||||
.DONE:
|
||||
@echo "Please use GNU Make (gmake) to build UnrealIRCd"
|
||||
.DEFAULT:
|
||||
@echo "Please use GNU Make (gmake) to build UnrealIRCd"
|
||||
@@ -1,5 +0,0 @@
|
||||
Help out and make UnrealIRCd a better product!
|
||||
|
||||
You can do so by reporting issues, testing, programming, documenting,
|
||||
translating, helping others, and more.
|
||||
See https://www.unrealircd.org/docs/Contributing
|
||||
@@ -0,0 +1,2 @@
|
||||
List of helpers in the alpha/beta phase:
|
||||
* Headbang, Alpha/beta tester
|
||||
@@ -0,0 +1,993 @@
|
||||
/*
|
||||
* UnrealIRCd Changes File - (C) Carsten Munk 1999-2000 &
|
||||
* The UnrealIRCd Team
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
[ Unreal3.2-Selene ]
|
||||
- Fixed a _serious_ bug in SERVER command, reported by Valen, Forrester,
|
||||
M0rpheus, JK, and Hiten.
|
||||
- Fixed /botserv problem
|
||||
- Fixed permission problem with SSL .pem files (was o+r)
|
||||
- Removed a redundant time.h include reported by trippin
|
||||
- Modified rehash flags to use strnicmp rather than match (faster)
|
||||
- Fixed some points of confusion of possible cptr->passwd bug in
|
||||
m_server_estab, reported and fixed by Kanzen_Greiver
|
||||
- Fixed some more points of ->passwd bugs
|
||||
- Added in devdev's INSTALL replacement
|
||||
- Made it so you don't get a +W notice if you /who or /whois yourself reported by Ron885
|
||||
- You can no longer specify an *@unrealircd.com/org, or unreal-*@lists.sourceforge.net email
|
||||
as your KLINE_ADDRESS (the "Why am I K:lined?" messages got too annoying)
|
||||
- Removed some irc.flirt.org references.
|
||||
- Made it so if a channel is +O or +A and you are not +O or +A and not in the channel, you can not
|
||||
/topic #channel same for +b if not +o or on the channel. Suggested by Sysop_Mars
|
||||
- Fixed a bug where you would receive a double notice when someone does a /who 0 o
|
||||
- Added first part of the new config parser, s_conf2.c
|
||||
- Added the next part of the new config parser, and some even more
|
||||
- Fixed a missing : on numeric 379 found by script0r
|
||||
- Added some a bit functional _conf_class code
|
||||
- Some more _conf_class code
|
||||
- Typing /stats or /stats invalid-flag will return a list of valid flags
|
||||
- You no longer receive a /stats +e notice when no flag is specified, or an invalid flag is specified
|
||||
- Some more newconf code, and some more
|
||||
- Added drpass (X:line) to the config code
|
||||
- Some more config2 code
|
||||
- Removed parser builtin directive include, and replaced it with our own
|
||||
- The config2 now uses strerror() to display an error, rather than the numeric
|
||||
- Fixed s_user.c so umode N and T cannot coexist
|
||||
- Added tld (T:line) to the config code
|
||||
- Finished _conf_oper
|
||||
- A report_configuration code (showoff)
|
||||
- Finished _conf_listen
|
||||
- Finished _conf_allow
|
||||
- Added TODO in top of s_conf2.c
|
||||
- Fixed a bug reported by S7 that affected chg* and set* as well as sdesc
|
||||
- Started work on the except parser
|
||||
- Wierdoe parse things
|
||||
- Made except parser use a specialized _configflag_except instead of wasting
|
||||
a byte.
|
||||
- Changed version to "Unreal3.2-Selene" (Selene = female character in a
|
||||
comic mag i found at my grandmas :P)
|
||||
- Finished _conf_vhost
|
||||
- Made _conf_listen understand listen <port> {}
|
||||
- Finished _conf_link
|
||||
- Added some _conf_link validity and added ->class option (forgot it)
|
||||
- Made ircd.c use the newconf with me.* setup. Uses the first and the best
|
||||
as listener
|
||||
- Finished _conf_ban (try and attack us now idiots!)
|
||||
- Made "No response from", use GLOBOPS instead of GNOTICE.
|
||||
Fixes TODO Bugfixes Thu Dec 14 2000 Priority 10 added by Stskeeps
|
||||
- Fixed telnet close server thing, fixes Wed 20 Dec 2000 priority 9,
|
||||
added by codemastr
|
||||
- Fixed /whois shows what channels +S are in.
|
||||
Closes stskeeps/Dec30-2000-10-Bugfixes =======
|
||||
- Fixed a STATS_ONLYOPER bug
|
||||
- Fixed a ircd.tune bug (the file may not write if it didn't exist)
|
||||
- Fixed a serious bug reported by Kanzen_Griever
|
||||
- Merged in sts-laptop branch
|
||||
- Made /admin use the new config (had to modify some newconf stuff to make a backwards copy
|
||||
of the list as well)
|
||||
- Made U:lines loaded from the newconf, also made /stats U read the U:lines from the newconf
|
||||
- Added listen {} runtime-configuration code work :))
|
||||
- Removed unrealircd.conf from the stock
|
||||
- X:line was replaced with drpass {} in /restart and /die (will make them faster as well)
|
||||
- Made +u do a auditorium/star chat feature, suggested by |Martin|=======
|
||||
- Fixed a G:line bug that would allow certain masks to be interpreted as *@*
|
||||
- Fixed the same bug in shun that affected G:line
|
||||
- Made +f faster by replacing 2 strchr()s and a strrchr() with a if () inside an existing loop
|
||||
- Fixed a +f bug reported by Enstyne
|
||||
- Fixed a SVSMODE/SVS2MODE bug that could cause an incorrect +i and +o count, reported by CaliMonk
|
||||
- Fixed another SVS2MODE bug that would make it send an empty MODE change
|
||||
- Removed the old chmode +x = +c and +I = +V support (3.x use +cV and 2.1.7 is obsolete)
|
||||
- Implimented except socks {} and tld {}
|
||||
- Removed the old read_tlines code and made /stats t show tld {} blocks
|
||||
- Fixed bug with /whois showing +S user channels (ChanServ)
|
||||
- Made /mode (umode change) only send 1 unknown mode msg, forgot who suggested this one
|
||||
- Made /rehash -motd/rules use tld {}
|
||||
- Heavily recoded /rehash (removed a ton of coding)
|
||||
- Updated match() to have some optimizations from bahamut
|
||||
- +GScm now affect /part msgs (requested by SegFault and others)
|
||||
- Added Find_link, serv->conf, did a Find_tld fixup, removed serv->nline,
|
||||
removing a lot of my_name_for_link crap, indented s_serv.c
|
||||
- Recoded m_server(YES!) -stskeeps
|
||||
- Fixed a +S bug reported by script0r
|
||||
- Fixed a #undef USE_SSL problem found by codemastr.. caused by
|
||||
Sts(TM)coding
|
||||
- Added set {} (unrealircd.conf/network file replacement)
|
||||
- Made vhost {} use from {} for hosts
|
||||
- Fixed some stskeeps-drunk-coding stuff in m_server
|
||||
- Fixed a typo "receive" not "recieve"
|
||||
- Made SVSNICK check if a nick is valid
|
||||
- Made get_sendq be a macro
|
||||
- Added find_ban, AllowClient() (old attach_Iline)
|
||||
- Temporary disabled /svsnoop, /akill, /sqline /unsqline, /kline, /unkline
|
||||
/zline, /rakill, /unzline and /svso
|
||||
- chkconf is not being built anymore
|
||||
- Ripped out s_conf.c with the roots.
|
||||
- Ripped out add_listener
|
||||
- Disabled a lot of stuff that needs to adapt to conf2
|
||||
- Made allow {} work
|
||||
- Changed allow {} to do user@host instead of user item
|
||||
- Took out my_name_for_link
|
||||
- Temporary disabled D:d lines/SQLines/Qlines
|
||||
- Fixed some /connect stuff
|
||||
- Disabled rehash temporary
|
||||
- Made ban user/ban realname work (s_unreal.c needs to be modified)
|
||||
- Added Zogg to credits
|
||||
- NOTE: Unreal-devel is handicapped right now, code in progress, do not use
|
||||
- Did a little speed up on Find_ban
|
||||
- Made /setname and /chgname use ban realname {}
|
||||
- Made /oper work with newconf (come get us now bastards!)
|
||||
- Made +c show class names in connect
|
||||
- Fixed a minor problem with ban {} and oper {}
|
||||
- Made ban nick {} work
|
||||
- Added the first (sorta) working version of the config converter
|
||||
- updconf now makes use of from {} in oper {} to eliminate duplicate O:lines
|
||||
- Made allow {} passwords work (AllowClient) - TODO: I:line encryptions
|
||||
- Made allow { maxperip }; work, the old ONE password thing, just better
|
||||
- Added a hack to updconf so ONE sets maxperip to 1 and made another hack
|
||||
-I IPMASK:HOSTMASK:IPs,... to allow you to specify an ipmax. ex.
|
||||
-I *@205.188.*:*@*.aol.com:10,*@*:*@*:100 that will allow 10 on your aol.com allow,
|
||||
and 100 on your *@* allow
|
||||
- /vhost uses newconf
|
||||
- Removed old vhost.conf code
|
||||
- Fixed check_pings (check_kills) code, so G:lines & ban nick/ip/realname
|
||||
works again
|
||||
- /connect works now :), TODO: D:d lines, V:line needs fixing, badly
|
||||
says "Unknown location" atm on uplink
|
||||
- Took out MyMalloc & co, direct to malloc/realloc/free now. Crashed in
|
||||
DEBUGMODE
|
||||
- Added ConfigItem_link->ipnum
|
||||
- Fixed a compile bug with DEBUGMODE
|
||||
- Changed a load of old aConfItem crap .., FIX: ConfigItem_link->options
|
||||
- Fixed a /connect bug
|
||||
- Made /svsnoop "work" again, moved it to s_svs.c (and made that file too)
|
||||
- Made /svso work again, moved it to same place as svsnoop.
|
||||
- Made /rakill and /akill work again :). Added banflag.type2
|
||||
FIX: *@* detection
|
||||
- Fixed a check_pings problem with usernames
|
||||
- ban ip {} works 100% now
|
||||
- Made /stats C work and /stats H. Intregrated into one.
|
||||
- Made /zline, /unzline work.
|
||||
- Added CONF_BAN_TYPE_TEMPORARY
|
||||
- Fixed a ban ip {} bug in check_pings
|
||||
- Removed some waste of oldconf
|
||||
- Moved advanced_check to s_svs.c
|
||||
- Made /kline work again, with newconf
|
||||
- Made /trace work again properly with class names
|
||||
- Made /sqline /unsqline work again.
|
||||
- Made SQLINE synching work with newconf
|
||||
- Fixed a little problem with SERVER servername :info crashing the ircd
|
||||
Long live the Floridan way of counting
|
||||
- ban server {} works the original way it was intended to now
|
||||
- Classes keep reference counts now, and moving classes (oper) works good
|
||||
too.
|
||||
- Added /trace class search results (class->clients)
|
||||
- Fixed some protocol error in server_synch
|
||||
- Made listener code work good ..
|
||||
- Made reference counts work again
|
||||
- Started some rehash work
|
||||
- Made full class work on servers too
|
||||
- Fixed a refcount bug
|
||||
- Fixed a spread server bug
|
||||
- Some more rehash stuff
|
||||
- Fixed check_pings problem (crash)
|
||||
- Fixed negative timestamps problem (crash)
|
||||
- Fixed a problem with cptr->class counting for servers
|
||||
- Made a bunch of /stats flags work with newconf
|
||||
- Added some MALLOCD (mini debug malloc by stskeeps..)
|
||||
- Removed some C++ comments
|
||||
- Made close_listeners work correctly again
|
||||
- Removed some old check_* mammut code
|
||||
- Fixed a bunch of possible bugs in newconf
|
||||
- Added sendto_realops logging of config errors
|
||||
- Made /rehash work .. sortof. Fixed some crash bugs
|
||||
- Added /stats P on listener info (oper-only)
|
||||
- listener temporary stuff works now
|
||||
- Fixed temporary stuf with conf_link
|
||||
- Fixed a problem with +x
|
||||
- Made CPATH be unrealircd.conf and init_conf2 use configfile instead
|
||||
- Disabled calls to dynconf
|
||||
- Added validate_conf, added dynconf checking, me, admin, class, oper
|
||||
testing
|
||||
- Added config_progress() Fixed temporary stuff
|
||||
with conf_link
|
||||
- Made tld {} get rehashed
|
||||
- Made listen/allow get validated
|
||||
- Finished up validate_conf()
|
||||
- Made badwords be in newconf (you can now specify a replace word for each word)
|
||||
- Made vhosts and badwords rehash
|
||||
- Fixed a bug in the rehash code
|
||||
- Made it so set::auto-join and set::oper-auto-join can be excluded to mean no auto join
|
||||
- Changed prefix_quit to prefix-quit (all others use - not _)
|
||||
- Fixed a minor bug causing a mode without any flags to be sent
|
||||
- Finished up deny dcc {}.
|
||||
TODOs: dcc_del_wild_match doesn't work. dcc_wipe_services() either
|
||||
- Made deny_dcc get rehashed
|
||||
- Made it so the IRCd can survive with certain set {} errors (uses defaults)
|
||||
- stats-server and services-server are no longer required (missing = disabled services aliases)
|
||||
- socks set {} options are now optional. Defaults are used if missing
|
||||
- If an invalid ban or except is found, it is removed
|
||||
- Some small SSL fixes ..
|
||||
- Added a notice on connect for SSL users with key length
|
||||
- Fixed a /kline and /unkline buffer overflow, reported by [-Th3Dud3-]
|
||||
- Fixed a crash in /stats k regarding temporary K:lines
|
||||
- Fixed a missing " in validate_conf
|
||||
- Replaced a few strlen()s with sizeof(), should make the IRCd start a bit faster
|
||||
- Fixed a svsmotd bug (from 3.1) prevented adding lines to the svsmotd
|
||||
- Recoded some dynamic motd stuff. Now uses 1 function.
|
||||
- Removed an unused var from the old T:line code
|
||||
- Removed a redundant check in SVSKILL
|
||||
- Removed some old code from LUSERS (it was moved due to IRCStats but some leftovers remained)
|
||||
- Added deny channel { channel "channelmask"; reason "why"; }; and
|
||||
allow channel { channel "channelmask"; };. Replaces chrestrict
|
||||
- Made those above get rehashed
|
||||
- Killed ircdupstr and called it ircstrdup
|
||||
- Made link { options { work OK again. Had a dead loop as well
|
||||
- Made autoconnect work again :>. Changes in behavouir: It connects more at
|
||||
a time now. You need autoconnect flag in options.
|
||||
- Minor OpenBSD support cleanup
|
||||
- bsd.c, channel.c, s_svs.c, s_unreal.c, s_kline.c, and s_extra.c now use ANSI
|
||||
standards for naming function params
|
||||
- Made connfreq unable to less than 10
|
||||
- Added deny link { mask "servermask"; rule "connectionrule"; type all/auto; }; (equivilant of D/dlines)
|
||||
- Made admin {} get rehashed
|
||||
- Got /stats x to work again
|
||||
- Recoded check_pings, with bits used from bahamut-ircd/hybrid-ircd, credits
|
||||
to lucas.
|
||||
- Removed return_servers() and made servers be called Servers, and be a
|
||||
global variable. Done on request on Great Master codemastr.
|
||||
- Made crule.c use the server list rather than the whole client list for checking (faster)
|
||||
- Sped up some channel stuff a lot using a bahamut type user search
|
||||
- Added CommandHash optimation .. this is not done 100% yet. uses msgtab as
|
||||
reference
|
||||
- Removed msgtab part of parse, removed the bigass hashtable msgtab,
|
||||
removed inittoken, made command initalization happen in init_CommandHash
|
||||
- Adapted /stats M to it. Removed /helpop ?commands temporary. Confirming
|
||||
hashtable works.
|
||||
- Fixed windows CRLF problem in conf2, reported by Zogg
|
||||
- Added Member and Membership and made the IRCd support this. Using
|
||||
"freelinks", todo: garbage collection
|
||||
- Added find_member_link and find_membership_link. Made Floodopt only
|
||||
get allocated for local users. Removed aFloodOpt in Link,
|
||||
- Made a speedup in is_halfop (dumb code)
|
||||
- Somehow is_halfop and co got called when a server set a mode .., added
|
||||
IsServer check (auto-return 1)
|
||||
- Fixed the 9-month old win32 DNS bug, caused by Stskeeps's incidential
|
||||
delete. Found by Zogg and CVSweb
|
||||
- Made autoconnect msgs only go to +os
|
||||
- Made DNS cache list show a notice to other ops
|
||||
- Made /stats C show flags correctly
|
||||
- Added deny version {}
|
||||
- Made deny link {} rehash
|
||||
- Removed class.c, from the old conf
|
||||
- Removed dynconf.c, from the old dynconf
|
||||
- Fixed a deny version {} bug (oops)
|
||||
- Fixed a config_load win32 problem, found by Zogg, fixed by Stskeeps/codemastr
|
||||
- Overwrote s_conf.c with s_conf2.c, and removed s_conf2.c. Viva la Conf2!
|
||||
- Added /stats I, Y, b, d, D, v
|
||||
- /who now got its right behavoiur regarding masks, bug found by Zogg
|
||||
(acptr is not cptr)
|
||||
- Made set::modes-on-connect work :) (strip out MODE_X and stuff plz?)
|
||||
- Moved dynconf stuff from s_svs.c to s_conf.c, on popular request
|
||||
- Made NAME_SERVER (set::dns::nameserver work). The IRCd no longer
|
||||
uses /etc/resolv.conf as reference.
|
||||
- Updated most of /stats S for newconf
|
||||
- You can now specify oper flags using the old method:
|
||||
(new method) flags { flags here }; (old method) flags flags_here;
|
||||
- Removed a lot of vars and stuff from the old config, also made some cleanups to reduce source size
|
||||
- Made del_Command().
|
||||
- Rewrote makeconf and makenet to use newconf (added some new features to makeconf as well)
|
||||
- Made MembershipL->flood get bzero on out delegation
|
||||
- Removed stskeeps's lazy add_CommandX (tm) code
|
||||
- Made IRCd not crash on /kick from servers
|
||||
- Fixed a typo in makeconf
|
||||
- Made /whois not return channels for services
|
||||
- Made makeconf use "ban nick" instead of "ban nickname"
|
||||
- Fixed ssl_client_handshake bug reported by IpAddress
|
||||
- Made ./Setup not do dynamic configuration any more
|
||||
- Changed reference in Setup from ircd.conf to unrealircd.conf (cosmetic)
|
||||
- Changed output of updconf from ircd.conf.new to unrealircd.conf.new
|
||||
- Changed the output of makeconf from ircd.conf to unrealircd.conf
|
||||
- Renamed hostmask to hostname like it should be in makeconf - IpAddress
|
||||
- Added "get_host" old 'H' O:flag
|
||||
- Added #define KILL_LOGGING, by otherguy
|
||||
- Added /cycle #channels, suggested by ^loki^
|
||||
- Added Modules, using dlopen() and LoadLibrary for *nix/win32.
|
||||
- Added /module load <path.to.so>, /module status (list modules),
|
||||
/module unload <modulename>
|
||||
- Added loadmodule "filename.so"; and made the modules
|
||||
unable to get loaded twice with same name.
|
||||
- Reintroduced "fake lag". Flood algoritm works this way:
|
||||
Make next check for parsing be
|
||||
(1 + (length of command+parameters / 60)
|
||||
- Started on commands.so making, works good atm -on req of codemastr,
|
||||
both as m_module.so and commands.so :) - long live dynamiclinking
|
||||
- Fixed bug with double module unloading, bug found by RaYmAn
|
||||
- Win32 Changes
|
||||
- Had to convert the connect messages back to strlen() because of a bug found by Bagge
|
||||
working on a way to make it better though
|
||||
- Added unknown connection flood protection (settable in config.h)
|
||||
- Made chmode +z only settable by umode +z users or U:lines or services.
|
||||
- Updated badwords.channel.conf and badwords.message.conf to use newconf (requires an include in
|
||||
the config file)
|
||||
- Made conf2 able to load empty files as well, with warnings
|
||||
- Added module_sym("functionname"), for modules, like, sajoin might want to
|
||||
do fp_m_join = module_sym("m_join");
|
||||
- Put out m_chghost, m_sethost in modules, remade Makefile structure and
|
||||
added src/modules
|
||||
- Modified an old Unreal3.1.1 to be network file converter, and converted
|
||||
all of the networks files to the new format.
|
||||
- Fixed a bug with RAKILL and UNSQLINE not working
|
||||
- Moved m_chgident to an .so
|
||||
- Changed license of m_dummy.c (dummy module, skeleton), so people can do
|
||||
closed source modules.
|
||||
- Moved m_setname to a .so
|
||||
- Started work on the new improved command hashing system
|
||||
- Modified command hashing system to Sts's belief of how eggs should be
|
||||
made. (quick, dirty and fcked up)
|
||||
- Fixed a bunch of bugs in the command hash system caused by sts:
|
||||
- You can't send numerics to servers
|
||||
- Using ERR_NOPRIVLEDGES (says you aren't oper)
|
||||
- Disabled commands allowed by unregistered users from registered users
|
||||
- Removed networks/unrealircd.conf
|
||||
- Implimented new logging system using log {} (if you leave it out it reverts to the old ircd.log)
|
||||
- Added Hooks, only one working now is HOOKTYPE_LOCAL_QUIT
|
||||
- Added log flag kline (accidentily forgot it)
|
||||
- Added #define HOOKTYPE_LOCAL_NICKCHANGE
|
||||
- Made MyMalloc be MyMallocEx in codemastr's log {} code. Fixes junk pointer
|
||||
problem - discovered by sts/Morbid
|
||||
- Removed the old /rehash flags, reported by Morbid
|
||||
- Reverted Demigurus's select() speedup patch, did speedup, but it
|
||||
also caused a good bit of CPU.
|
||||
- Fixed a globops bug that required it to have a : found by ROXnet
|
||||
- Removed KILL_LOGGING replaced by log {}, found by Morbid
|
||||
- Removed PROTO() and general h.h/proto.h cleanups (made source 3.14K smaller)
|
||||
- Implimented a system using chmod() at startup to try and keep the config file from being read
|
||||
by people who shouldn't have access. (set through ./Config)
|
||||
- Added oper::swhois idea by Robertsog (NOTE: since this is done before the mode change, a U:Line changing
|
||||
the SWHOIS after you /oper will override this)
|
||||
- Added a donation credit
|
||||
- Reverted a change
|
||||
- Fixed a double definition (double m_chghost and m_chghost.so)
|
||||
- Moved /sdesc, /setident to modules.
|
||||
- allow { } now supports encrypted passwords -Syzop
|
||||
- Made static linking a little more possible
|
||||
- Made /kick not core on users kicking servers. (WTF?)
|
||||
- Fixed a problem with users opping servers.. Found by Morbid
|
||||
- Fixed a problem with SDESC module token being wrong - Found by eternal
|
||||
- If no oper flags are found, default to locop (suggested by devdev)
|
||||
- Added tld::channel so you can make people join a channel based on hostmask
|
||||
- Made it so a motd or rules loaded in 2 seperate tld {} is only read into memory once (may need debugging?)
|
||||
- Fixed a bug where the IRCd didn't validate hosts specified in a vhost {}
|
||||
- Added the ability to specify a username to spoof in a vhost {} instead of vhost "host.name";
|
||||
you can vhost "user@host.name"; (suggested by IpAddress)
|
||||
- Fixed a bug where you could use an infinitely large host in a vhost {} (now limited to HOSTLEN)
|
||||
- Fixed improper old username being displayed reported by IpAddress
|
||||
- Added M_NOLAG.
|
||||
- Added new CRC32-hex-based IPv4 and hostname cloaking form
|
||||
- Make users that send a forbidden file get auto blocked from sending other
|
||||
files. sptr->flags & FLAGS_DCCBLOCKED.
|
||||
- Readded timestamp to log, accidentily got removed
|
||||
- Made it so /stats C doesn't show the user@host of servers to non-opers
|
||||
- Possibly fixed the vhost crashing bug, with much help from IpAddress
|
||||
- Found a way to do +x IPv4 cloaking right.
|
||||
- Added set::cloak-keys { longvalue; longvalue; longvalue; }; for the cipher
|
||||
- Fixed a NETINFO parameter problem - solves the new NETINFO format
|
||||
- Made a little hack to newconf to allow varname=value; to try and keep it some what similar
|
||||
to the new config files of other IRCds. NOTE: the = is completely optional, it is allowed
|
||||
but not required
|
||||
- # comments can be used anywhere in a line now (just like // comments) for compatibility with other
|
||||
IRCds
|
||||
- Added sajoin/sapart error message patch by NiQuiL (modified slightly by codemastr)
|
||||
- Implimented IRCNet style server redirection, based on the hybrid-7 code. Some clients will connect
|
||||
to the specified server automatically, others will require you to do it manually.
|
||||
- Made /info use @unrealircd.com emails instead of @tspre.org
|
||||
- Removed FNAME_OPERLOG and replaced it with log {} flag oper
|
||||
- Removed OWNLOGON (did nothing?)
|
||||
- Replaced FNAME_USERLOG with log {} flag connects (logs user connects and disconnects)
|
||||
- added temporary define #define OLD_CLOAK
|
||||
- Fixed up some codemastr(TM) coding regarding M_*
|
||||
- Implimented a cloak fix based on code by Zogg (just used a #define ircabs rather than abs())
|
||||
- Expanded the chmod() security fix to files added via include filename;
|
||||
- Possible FD leak in ircd_log, caused by some codemastr coding(TM)
|
||||
- #define HELP_WHO for the "did a /who 0 o"
|
||||
- Added a new Win32 GUI does it work, no one knows
|
||||
- Rewrote the ircd_log function a bit to fix the FD bug better, not sure wtf I was smoking
|
||||
when I wrote the last one :P
|
||||
- When IRCOps are breaking into chans with invite only (+i) or
|
||||
key-protection (+k) a eyes-notice is sent like it is on banwalk. -NiQuiL
|
||||
- Added unitedirc.network -NiQuiL
|
||||
- Removed a , in NiQuiL's banwalk message
|
||||
- Fixed DEBUGMODE problem, found by someone ..
|
||||
- Don't know why but m_file.so was in the modules makefile, removed
|
||||
- Added irc2.10.3's resolver. Fixes debian-woody-libresolv problems..
|
||||
Still some fixes to be done
|
||||
- More res.c fixes ..
|
||||
- Final res.c fixes
|
||||
- Added /rehash -all patch by NiQuiL
|
||||
- res.c: fixed ircsprintf problems
|
||||
- Fixed ircd_log to work in windows
|
||||
- Removed __P, windows doesn't like it, and only old compilers need it
|
||||
- Fixed a ban realname {} bug that _may_ have something to do with the negative user count bug
|
||||
- Fixed do_dns_async problem with new res.c
|
||||
- Removed doc/ADD-TO-IRCRC, doc/INSTALL, doc/Manual, doc/Operators,
|
||||
doc/irc.1, doc/ircd.8, doc/server-compile-guide
|
||||
- Made it so Invitewalk and Keywalk don't show for U:lines
|
||||
- Fixed a cloak bug caused by stskeeps(tm) "not knowing how to use << and >> coding"
|
||||
- Fixed some cloak bugs, and applied +x crypto to hostnames as well
|
||||
- Changed some non-error messages in newconf from config_status to config_progress
|
||||
- Added a way for newconf to report its errors in windows using a "Config Error" dialog
|
||||
- Fixed the /stats Z bug reported by RaYmAn
|
||||
- Added missing resource.h defineand missing +1 in MyMalloc of win_log reported by McSkaf
|
||||
Seemed to work without the +1 but added it just to be safe.
|
||||
- Fixed possible crash bug imposed by too many users per ip in AllowClient -found and fixed by McSkaf
|
||||
- Made IP Mismatches getting sent to UMODE_JUNK instead
|
||||
- Added method mod_load in dummy example and made it work. mod_load() is executed
|
||||
when server is ready
|
||||
- Fixed minor problem with mod_load code
|
||||
- Fixed possible crash with /quote dns l
|
||||
- Removed newdns
|
||||
- Fixed a memory bug in win32 code found and fixed by McSkaf, and fixed a typo
|
||||
- Fixed a win32 bug found by RaYmAn causing the tray icon not to be displayed sometimes
|
||||
- Fixed a bunch of Win32 bugs reported and fixed by McSkaf
|
||||
- Made the IRCd delete its tray icon in win32 on SIGSEGV
|
||||
- Brought 005 up-to-date with spefication - added CHANMODES= support
|
||||
- Applied res.c.patch from McSkaf, fixes win32 GPF, but fixed mising HE(ocp)
|
||||
- Applied s_debug.c/config.h patch from McSkaf, makes DEBUGMODE under
|
||||
win32 working again - fixed some errors in the unix part of it.
|
||||
- Made the rehash button work in Win32
|
||||
- Fixed up some CHANMODES= support and added WALLCHOPS support
|
||||
- Added keyboard shortcuts to the win32 config and about popup menus
|
||||
- Possible fixed a buggie in +f
|
||||
- Fixed a bug causing Found your hostname (cached) to be displayed 2 times
|
||||
- Fixed RTLD_NOW problem with openbsd
|
||||
- Removed SJOIN/SJOIN2 support in SJOIN
|
||||
- Fixed a +f bug, found by NiQuiL
|
||||
- Applied McSkaf's winlocal.patch, seems to work ok, fixed some problems
|
||||
though in unix/win32 (cptr->fd can be -3. Should fix some READ ERRORS as
|
||||
well.
|
||||
- Some Open(aaaaaaaaaaargh)BSD patches, most stubborn compiler i've ever
|
||||
seen. gmtime warning still there
|
||||
- Had to revert McSkaf's winlocal.patch, caused too many crashes. I believe
|
||||
there is a better way to do this ..
|
||||
- Added a new StripColors heavily based on the one from xchat by Peter Zelezny
|
||||
- Fixed doc error in s_conf.c
|
||||
- Made IPv6 compile atleast, and work. Current problems:
|
||||
- Made you able to bind to specific IPv6 IPs (we don't have FFFF::*
|
||||
functionality yet)
|
||||
- Made a crazed out IPv6 cloaking
|
||||
- Made chghost/chgident able to do :'s
|
||||
- Finished up IPv6 - Kudos to bball/NiQuiL (shells), perian/bunda/larne
|
||||
(testing)
|
||||
- Made listen format able to do:
|
||||
listen [ip]:port, for IPv6 - listen [3fff:ff::1]:6667
|
||||
- Fixed some compilation error with IPv6
|
||||
- Fixed-fixed listen format troubles, larne++
|
||||
- Possible fixed some +d bug(s)
|
||||
- Added doc/unrealircd.conf.txt (by devdev), doc/services-install-guide
|
||||
(zyrol, edited a bit by stskeeps)
|
||||
- Added richedit 1.0 support so Credits,License, etc show the bold and underline formats in win32
|
||||
code by codemastr with help from McSkaf (still needs work to support reverse and color)
|
||||
- Added code so the rich edit _should_ work with any version of the richedit dll
|
||||
- Changed all TStime() to use timeofday - CPU SAVE
|
||||
- Removed userload.c & userload.h
|
||||
- Added McSkaf's patch for the richedit to be able to support reverse codes
|
||||
- Fixed the problems with 100% cpu, hopefully
|
||||
- Fixed the 100% cpu problem, again, HTM is screwed now though?
|
||||
- Got /stats O working
|
||||
- Made the topic for a +s channel hidden from non-members (reported by Bagge)
|
||||
- Removed ce_vardatanum (wasted CPU and memory)
|
||||
- Added code to make the config parser try and stay alive when an error is encountered
|
||||
- Added events code and converted some stuff to events
|
||||
- Converted htmcalc/lcf to events
|
||||
- Fixed /stats L bug found by larne
|
||||
- Fixed the loop, made htmcalc more clean
|
||||
- Applied McSkaf's winlocal patch II, only changed Debug() and removed
|
||||
DEBUGMODE from config.h. Still cores, but we might be closer to a
|
||||
solution. Broken code, do not use devel right now
|
||||
- Fixed to winlocal by McSkaf
|
||||
- More fixes
|
||||
- Made /die not show admins IP (fixed by Stskeeps after his users nuked him..)
|
||||
- Added McSkaf's mIRC color parse patch
|
||||
- More winlocal fixes, and a +f bugfix
|
||||
- Added HOOKTYPE_LOCAL_CONNECT (aClient *)
|
||||
- Fixed DEBUGMODE under win32
|
||||
- Fixed /trace problem with slots (idea from ircu2.10.01+winnt)
|
||||
- Fixed listener problem, reported by McSkaf
|
||||
- Minor Win32 bug fix
|
||||
- Fixed problem with addto_fdlist(cptr->fd) caused by slotpatch
|
||||
- Fixed minor socksfd problem in read_message
|
||||
- Fixed identd problem
|
||||
- Commited McSkaf's tab patch for win32
|
||||
- Possible fixed fdlist problem with default_fdlist
|
||||
- Added some numeric checking in m_server*
|
||||
- Made possible speedup of fdlist checking in s_bsd.c
|
||||
- Updated makefile.win32 for events.c
|
||||
- Added McSkaf's rehash patch
|
||||
- Made the Status Dialog update its values every 5 seconds
|
||||
- Made slot arrangement be different.
|
||||
- Merged McSkaf's hostname patch, debug patch, s_misc patch
|
||||
- Made validate_configuration check for !conf_listen
|
||||
- Made newconf state unknown directives (found by Madkiss)
|
||||
- Small s_socks.c bugfix possible causing indetectable socks
|
||||
- Fixed /whois problem, maybe introduced some others?
|
||||
- Removed send_out_svsmode, not in use and broken too
|
||||
- Made Config say Unreal3.2
|
||||
- Made a popup menu for the tray icon to contain the same 'buttons' as the GUI does
|
||||
- Made Unreal run correctly on OpenBSD (thanks to PFAK for the shell)
|
||||
- Fixed with bug with ircd not -r'ing users on nick switch
|
||||
- Fixed the /stats C = crash if it is a leaf bug found by BaTmAn
|
||||
- Added a patch by McSkaf to make Unreal reload its tray icon if explorer restarts
|
||||
- Fixed a win32 bug found by eternal
|
||||
- Fixed yet another win32 bug (I think I should test before I commit ;P)
|
||||
- Changed how hooks work, making them support voidfuncs
|
||||
- Added src/modules/scan.c and src/modules/scan_dummy.c
|
||||
- Made militime() just as accurate on win32 as on linux
|
||||
- Made match() a little bit faster
|
||||
- Fixed codemastr's broken millitime patch (sys/timeb.h)
|
||||
- Added scan_socks.c, added and moved some stuff to
|
||||
include/modules/scan.h (the dir too)
|
||||
- Converted threads to IRC*Thread by codemastr.
|
||||
- Updated the win32 thread code (maybe it will work now?)
|
||||
- One last final change for the win32 thread stuff, but at least it works now :)
|
||||
- Added hooks to allow you to add config directives
|
||||
- HOOKTYPE_CONFIG_UNKNOWN sent after config parsing, look in conf_unknown for all the
|
||||
blocks the config parser didn't understand
|
||||
- HOOKTYPE_REHASH sent when a rehash is being done
|
||||
Note: if you parse a block in conf_unknown make sure to del_ConfigItem it from the list
|
||||
or Unreal will return an unknown directive error for it.
|
||||
- Fixed problem with u_int32_t servicesstamps, with SVSMODE and SVS2MODE,
|
||||
found by Andrew Church
|
||||
- Unknown ban * {}, except * {}, deny * {}, allow * {} are accessible to modules
|
||||
- Fixed some scan_socks problems - this needs a good hand with
|
||||
- Fixed up scan_dummy.c
|
||||
- Fixed /quote sethost : and /quote setident : exploit, found by ac1d, fixed
|
||||
by Griever
|
||||
- Allowed capturing of unknown set {} variables by modules
|
||||
- Minor src/Makefile screwup fix
|
||||
- Added some pthread checking support
|
||||
- Fixed double dependicies bug.. stupid dlsym
|
||||
- Added /version using numeric 105 for remove clients to show protoctl (idea from hybrid)
|
||||
- Added HOOKTYPE_PRE_LOCAL_CONNECT to allow banning before connection. If the module parsing
|
||||
this hook returns >0 the register_user exits
|
||||
- Removed src/agent.c (empty file)
|
||||
- Removed src/userload.obj from the win32 makefile
|
||||
- Added link::options::quarantine suggested by DumbFish
|
||||
- Made blackhole.so work
|
||||
- Fixed a set_non_blocking bug
|
||||
- Fixed a codemastr screwup in quarantine code
|
||||
- Removed the old SOCKS check code.
|
||||
- Fixed a quarantine bug
|
||||
- Added NETWORK= numeric 005 token for mIRC 5.91
|
||||
- Fixed some scan-socks and blackhole fuckups
|
||||
- Added ./configure, autoconf generated configure script, (still need to update ./Config)
|
||||
- Config fixes, settings.h and Makefile.dist are now dead. RIP.
|
||||
- Fixed a typo in configure
|
||||
- Rewrote Config, it is now perfectly suited for an autoconf interface rather than a standalone config
|
||||
- Minor fixes to Config, a license, etc
|
||||
- Made changes to Config (removed a few unnecessary loops)
|
||||
- Made CRYPTOIRCD get cached in config.cache
|
||||
- Fixed generation of certs, moved from configure.in to Config
|
||||
- Fixed lack of -lssl
|
||||
- Fixed the keywalk bug reported by BaTmAn (?)
|
||||
- Fixed a few configure problems with sunos and amiga
|
||||
- Fixed an OpenBSD bug reported by perian
|
||||
- Moved config/ to autoconf/
|
||||
- Some fixes to configure.in that seemly got deleted?
|
||||
- Some more configure.in fixes, and made ./Config -q & -quick (do not ask
|
||||
questions, just run with data in config.settings)
|
||||
- Some more more configure.in fixes, regarding -export-dynamic, and buffer
|
||||
pools, and some illegal if test $var = othervar
|
||||
- Fixed a configure.in error with IRCDLOBS
|
||||
- Taking some more Config changes
|
||||
- Some more INET6 fixes
|
||||
- Made Unreal use FSU Pthreads if the pthreads on the system will show multiple copies of Unreal in ps
|
||||
- Fixed a /rehash bug dealing with echoing to stderr
|
||||
- Added MAXCONNECTIONS to configure
|
||||
- Added a little utility to make converting an m_* command to a module easier
|
||||
- Moved m_svsmode and m_svs2mode to m_svsmode.so and updated modulize a bit
|
||||
- Moved m_swhois and m_svsmotd to modules
|
||||
- Fixed a bug where configure would pick both -ldescrypt and -lcrypt
|
||||
- Fixed /stats to work fully with newconf
|
||||
- Added mod_depend checking, see scan_socks.c for example
|
||||
- Added in Griever's SJOIN fix
|
||||
- Made mod_depend a bit cleaner to use
|
||||
- Removed some remnants of umode +b
|
||||
- Added configure check for glob.h
|
||||
- Added the ability to use file globs in loadmodule and include (only if your system has glob)
|
||||
- Added ./Config option to enable IPv6 (and made a configure check to make sure we can)
|
||||
- Fixed autoconf/Makefile screwup caused by codemastr
|
||||
- Fixed a problem with IPv6 always enabled (could you check this fix, code?)
|
||||
- Fixed a bug allowing channek keys to have spaces
|
||||
- Cleaned up some thread porting code
|
||||
- Added a new versioning system to allow easy tracking of bugs
|
||||
- Made glob() use GLOB_LIMIT on OpenBSD 2.9 to help prevent a DoS
|
||||
- Fixed makeconf
|
||||
- Changed the way modules work. We're now at MOD_VERSION 2
|
||||
- Changed ALL MODULES to version 2
|
||||
- Commited the +k fix to +L
|
||||
- Made version.c depend on ../Changes
|
||||
- Made the ircd call mod_unload when it shuts down
|
||||
- Made use of the new module_load parameter in mod_init, and made commands.so use mod_load
|
||||
- Fixed a module bug where loading == unloading
|
||||
- Moved blackhole into scan.c and removed blackhole.c, and fixed some
|
||||
blackhole bugs.
|
||||
- Updated thread porting code to support more functions
|
||||
- Fixed a pthread_join
|
||||
- Rewrote updconf a bit, should work flawlessly now (?)
|
||||
- Made a minor message change to ./Setup
|
||||
- Fixed some minor mod_load troubles, and made it go a little more sensible
|
||||
regarding retarded rehashes
|
||||
- Added some thread debugging, and fixed a SVS2MODE bug
|
||||
- Fixed a major scan bug caused by stskeeps(TM) lazy-coding
|
||||
- Hmm .. minor s_bsd.c read_message fix
|
||||
- Some /info stuff, updated docs, .CHANGES.NEW, .RELEASENOTES
|
||||
- /htm fix by Griever
|
||||
- Fixed a bunch of warnings reported by Red Hat 7
|
||||
- Random cosmetic fixes
|
||||
- Updated the stats help list for newconf
|
||||
- Removed include/userload.h (not used)
|
||||
- Removed a few missed userload.h references
|
||||
- Minor cosmetic fixes, and SVSNLINE (ban realname).
|
||||
SVSNLINE + reason_why_moo :realname mask - Add global ban realname
|
||||
('_' is converted into spaces)
|
||||
SVSNLINE - :realname mask - Remove global ban realname
|
||||
SVSNLINE * - Wipes all global ban realname
|
||||
- Fixed FIXME dcc_deny_wipe_services
|
||||
- Fixed some IsToken / sendto_serv_butone screwups - Stskeeps(TM) coding
|
||||
- Actually added m_svsnline.c
|
||||
- Removed a bunch of unused coding
|
||||
- Win32 fixes
|
||||
- Made a /scan fix, and fixed some version numbers found by Morbid
|
||||
- Updated m_template.c to use module version 2
|
||||
- Removed a // comment in src/ircd.c
|
||||
- Fixed a bunch of updconf bugs reported by DarkSypher
|
||||
- Fixed an SVSFLINE bug when removing an unknown dccdeny
|
||||
- Made win32 compile and work ..
|
||||
- Made scan_socks & scan work under win32. Only bug is a \1 IP in /quote scan (?)
|
||||
- Added set { blackhole "insideip:port" { "outsideip"; }; }; (useful if
|
||||
being behind firewall)
|
||||
- Fixed a little scan.so bug
|
||||
- Fixed so we compile without symbols in win32 ..
|
||||
- Fixed some rant stuff
|
||||
- Fixed a documentation bug in unrealircd.conf.txt, made config_error
|
||||
actually bitch when loop.ircd_booted
|
||||
- Made badword fix found by eternal/Jsmj
|
||||
- Changed pthread process check to pthread_join on proposal and idea by
|
||||
codemastr
|
||||
- Some configure.in fixes to pthread stuff
|
||||
- Added possiblity to add parameters to configure in Config
|
||||
- Minor SJOIN fix ..
|
||||
- Fixed a ban {} bug where temporary bans were not cleared on rehash
|
||||
- Fixed a validate_conf problem found by Janos
|
||||
- Fixed some minor invalid numeric stuff
|
||||
- Fixed problem with MAXCONNECTIONS when no parameters given in ./configure
|
||||
- Fixed some possible points of confusion with hash.c regarding unsigned int
|
||||
& signed int
|
||||
- Fixed u_intXX_t problem
|
||||
- Removed the redefining stuff in s_conf.c
|
||||
- Documentation (example.conf from Osiris)
|
||||
- Documentation bug fix
|
||||
- Changed version to -beta1
|
||||
- Various preparitions for beta1
|
||||
- Commited the web server prototype made by Stskeeps, web design by WildChild
|
||||
- Ripped out the old DF watch system, using bahamut's now
|
||||
- Fixed some CHINESE_NICK stuff
|
||||
- Fixed an sdesc bug reported by Alzirr
|
||||
- Fixed a little gcc 3.0 bug with Unreal
|
||||
- Fixed *** nick has quit (no Days come, days go), by defaulting to "Quit: "
|
||||
- Fixed -nexus.nexusirc.org- *** Notice -- Trying to send [:Alzirr WALLOPS
|
||||
:test bug, found by Alzirr
|
||||
- Fixed struct IN_ADDR problems on some OS'es
|
||||
- Fixed some more gcc 3.0 problems and made FSU pthreads a bit easier to install
|
||||
- Fixed some updconf bugs reported by Joe
|
||||
- Fixed a bug where 'fake direction' messages were sent to non-ops reported by Janos
|
||||
- Made it so unreal searches harder for SSL headers and libraries
|
||||
- Fixed possible bug with allowing :'s in +k/+L ..
|
||||
- Added a credit
|
||||
- Fixed a typo in /stats and a /chatops bug found by Cas
|
||||
- Made oper {} (and vhost {}) allow you to enter an IP even if your host resolves by request of Cas
|
||||
- Added set::options:show-klines and set::options::show-tkl to make /stats G and /stats K oper only
|
||||
- Added a patch by Zogg to fix a socks scanner problem
|
||||
- Fixed a /sapart bug found by SubZero
|
||||
- Minor bugfix in scan_socks, + some comments
|
||||
- Fixed some flaws in httpd, that made it break unmercifully
|
||||
- Added correct uptime to web interface
|
||||
- Patched in zogg's scan_socks patch, second edition
|
||||
- Added in Ossie's example.conf v2
|
||||
- Major changes to the win32 editor
|
||||
- Fixed a bug in the new editor, hopefully now it works flawlessly (?)
|
||||
- Fixed a bug in the win32 status dialog causing it to get screwed up, found by Auspice
|
||||
- Fixed a scan_socks problem under win32
|
||||
- Added a 3d border to the color selector in the win32 editor
|
||||
- Fixed a win32 bug dealing with the new RTF parser
|
||||
- Fixed a scan_socks problem under win32
|
||||
- Fixed a MOTD rehash bug found by fryo
|
||||
- Made CR compatilbity actually work, it autojoins now :)
|
||||
- Started updating network files (remove all the obsolete ones)
|
||||
- Fixed SQLINE problem
|
||||
- Added doc/coding-guidelines
|
||||
- Readded header info to network files which was lost in the update
|
||||
- Updated a few network files that managed to slip by the update process
|
||||
- Updated networks/networks.ndx and alphabetized it and added all network files submitted in 3.2 format
|
||||
(didn't feel like converting right now ;P)
|
||||
- Win32 code cleanup
|
||||
- Made my_itoa use _itoa on win32
|
||||
- Implimented SVSMODE #channel -b nick to remove all matching bans against a nick, idea from bahamut
|
||||
- Added SVSMODE #channel -b to remove all bans
|
||||
- Added SVSMODE #channel -qaohv to remove all users of that respective level, and made all the # SVSMODE
|
||||
flags work in SVS2MODE
|
||||
- Made a bunch of config errors non fatal
|
||||
- Added 2 more network files (yea, I'm slow)
|
||||
- Fixed SQLINE bug, FINALLY. (forgot to set type ..oops..)
|
||||
- Added more network files...
|
||||
- Fixed a bug affecting /oper and /vhost caused by IP checking
|
||||
- Added wildcard support to include and loadmodule in win32
|
||||
- Added SVSMODE # -e to work just like -b
|
||||
- Fixed SVSMODE compile error
|
||||
- Added tgf's patches for these bugs:
|
||||
* if you dont have a rules file and do "rehash -motd" then the server
|
||||
segfaults.
|
||||
* setgid has to be called before setuid... cos if you change to a non-priv
|
||||
uid first then you are not allowed to setgid!
|
||||
- Added more network files
|
||||
- Fixed a possible restart/die bug
|
||||
- Fixed a bug where /die didn't do anything on win32 reported by Gilou
|
||||
- Fixed a bug where /restart didn't send out notices on win32
|
||||
- Made /restart call mod_unload for all modules
|
||||
- Fixed a typo in the win32 makefile
|
||||
- Rewrote Addit, hopefully it fixes the SJOIN problems?
|
||||
- Fixed fence post marker overwrite in /vhost, found and fixed by tgf
|
||||
- Made the Win32 version report the actual OS to opers in /version rather than just say 'Win32'
|
||||
- Removed some obsolete code
|
||||
- Added set::oper-only-stats which allows you to set any/all stats as oper only (* = all). Code is kind of
|
||||
ugly since some flags are case insensitive and C == H but it works and seems pretty fast.
|
||||
- Added set::anti-spam-quit-message-time idea from hybrid7
|
||||
- Made the config smarter, for yes/no options yes/true/on/1 = yes no/false/off/0 = no
|
||||
- Made Unreal be able to recover from a bunch of config errors
|
||||
- Added stats flag r to the stats help list
|
||||
- Fixed bindip problem with it not being made
|
||||
- Made even more config errors recoverable
|
||||
- Added more network files
|
||||
- Fixed some typos in s_conf.c
|
||||
- Fixed a win32 bug where /restart didn't remove the tray icon, reported by PHANTOm and Gilou
|
||||
- Fixed Osiris's example.conf
|
||||
- Fixed IPv6 bindip error found by Madkiss
|
||||
- Added log::maxsize, when this size is reached the log is cleared and started over again
|
||||
- Fixed a codemastr-on-crack /version bug, and fixed some IPv6 stuff in
|
||||
scan*
|
||||
- Fixed some more IPv6 stuff in httpd
|
||||
- Implimented snomask (similar to IRCu) and moved several usermodes to it
|
||||
- Added a config check to detect what order we should specify the SSL libraries in
|
||||
- Fixed bug with SSL, detected properly and fixed by Chawmp
|
||||
- Fixed an oper-only-stats bug
|
||||
- Updated some documentation to prepar for release
|
||||
- Docs prepare
|
||||
- Fixed a major snomask bug found by narf
|
||||
- Using bahamut /who now, this needs some testing.
|
||||
- HCN fix
|
||||
- /who fix .. removed nick matching functionality..
|
||||
- Fixed a SNOMASK problem found by Arantis
|
||||
- Fixed a umode2 bug that crashed the server
|
||||
- Fixed vhost bug that forgot to add a \0 in the end of the string
|
||||
- /who fix
|
||||
- Another /who fix, what crashed it I assume - helped by narf to find this
|
||||
- Fixed a bug were operflag eyes didn't work
|
||||
- /who fixes regarding +I +H and crap
|
||||
- Preparation for beta2
|
||||
- Fixed sts on crack win32 code
|
||||
- Fixed a win2000 bug causing Unreal to crash on the credits dialog, thanks to llthangel and WildChild for
|
||||
helping fix the bug
|
||||
- Fixed a win32 bug that can cause unexpected crashes while using the editor
|
||||
- Some httpd stuff and a #define CHROOTDIR problem found by Zhadum
|
||||
- Added scan_http, scans on 80, 3128, 8080 in a threaded manner
|
||||
- Fixed a /gline crash bug found by DemOnBaBy
|
||||
- Http proxy scanner cleanup
|
||||
- Added SOCKS5 detection based on code in Epona
|
||||
- Cleaned up /mode a bit
|
||||
- Cleaned up command parsing a bit (faster)
|
||||
- Added config directive alias for services/bot aliases
|
||||
- Fixed some credits, recoded httpd (still in progress)
|
||||
- Disabled #undef PROPER_CORE
|
||||
- Added alias {} to doc/example.conf
|
||||
- Fixed a bug in alias {} found by RaYmAn
|
||||
- Fixed another alias {} bug
|
||||
- Added Bahamut usermode +R (only accept private messages from +r users)
|
||||
- Moved FAILOPER_WARN define to set::options::fail-oper-warn
|
||||
- Fixed an alias {} bug found by James-Bond
|
||||
- Moved SHOWCONNECTINFO define to set::options::show-connect-info
|
||||
- Added support for nested comments in the configuration file (by chasm)
|
||||
- Added chasm to /info
|
||||
- Started work on usermode +V (WebTV mode)
|
||||
- Some aClient cleanups to reduce memory usage
|
||||
- Made a bunch of messages check +V and if +V use PRIVMSG instead of NOTICE
|
||||
- Cleaned up NOSPOOF code a bit
|
||||
- Cleaned up /oper (a lot)
|
||||
- Fixed a bug where the /oper recode broke oper host masking (found by James-Bond)
|
||||
- Fixed something that could cause a possible bug in /oper ?
|
||||
- log::maxsize can now be entered in the format 1MB, 1MegaByte, 1MByte, etc (KB,MB,GB,TB are the only sizes
|
||||
recognized)
|
||||
- Fixed a bug where log::maxsize would say it started a new log file if the log file didn't exist
|
||||
- Converted /mkpasswd, /away, and /svsnoop to modules
|
||||
- Added the ability to add aliases like /identify (complex, so see example.conf for samples)
|
||||
- Added a bug reporting tool (still alpha)
|
||||
- Removed some win32 debug code that was left, reported by TheEggMan
|
||||
- Win32 cleanup
|
||||
- Made except socks become except scan, and made it actually WORK, and some
|
||||
bugreport fixes
|
||||
- HTTPd VFS fixes
|
||||
- Modified updconf to reflect the except socks -> except scan change
|
||||
- Fixed a typo in the win32 makefile
|
||||
- Made the config a bit more sturdy (would have done more, but got boring :P)
|
||||
- Moved /svso and /svsnick to modules
|
||||
- Updated the win32 makefile
|
||||
- modulize documentation, some web server fixes, preparation for uabr
|
||||
- Some more VFS/PHTML fixes, it actually works now, thanks to butter
|
||||
- Fixed a IPv6 bindip problem
|
||||
- Removed bsd.c and made socket.c, moving signal stuff to ircd.c, possible
|
||||
fixing a IPv6 bug
|
||||
- Made Inet_si2p (sin to presensation), fixing the "*", bug, some debugging
|
||||
fixes, fixed a lot of IPv6 bugs, hopefully - thanks to JK for borrowing
|
||||
his box
|
||||
- Fixed a #undef INET6 bug
|
||||
- Made Link denied error a little more descriptive
|
||||
- Various coding regardign bugreport
|
||||
- Made port default to 6667 when options autoconnect in link {}
|
||||
- Made some changes to allow Unreal to compile on win32
|
||||
- Fixed a scan.c bug on win32
|
||||
- Made the http scanner work on win32
|
||||
- Fixed a bug where /userhost would report oper status regardless of +H
|
||||
- Added some stuff that should fix the bug in Windows when including files in other directories
|
||||
- Added aliases/ which contains config files for aliases to some popular IRC services (more will be added)
|
||||
- Made makeconf load scan_http.so
|
||||
- Fixed a /who bug, found by IXpfah
|
||||
- Updated makefile.win32 for all the new modules
|
||||
- Added in Fish's patches
|
||||
- Added bitching when you lack needed IRC commands
|
||||
- Removed REMGLINE
|
||||
- Fixed a typo in the win32 makefile
|
||||
- Really removed remgline (since sts didn't really do it)
|
||||
- Made changes so the new modules compile on win32
|
||||
- Added headers to all the new modules
|
||||
- Fixed a typo in config.h
|
||||
- Final changes to prepare for beta3
|
||||
- Fixed some bugreport stuff
|
||||
- Fixed codemastr-on-crack bug regarding oflag
|
||||
- Fixed a win32 bug where the http scanner didn't get loaded
|
||||
- Hopefully fixed the weird Z:line bug on win32?
|
||||
- Fixed the Z:line bug (caused by stskeeps-on-crack coding) reported by Power2All
|
||||
- Removed the tokens for /users, /summon, and /samode (these never come from a server so they don't need
|
||||
it)
|
||||
- Added a utility to auto create version.c for win32. It's the worst coding I've ever done, but it works :P
|
||||
- Added a hell lot of DNS debugging code, and fixed the BIGENDIAN problem
|
||||
with resolver. Thanks to dawn and Trash.net for shell on a sparc
|
||||
- Added umodes.c, long val = get_umode('c');
|
||||
- Added new umode system to win32 makefile
|
||||
- Made umode_delete(flag, mode);
|
||||
- made the umodestring variable smaller to conserve memory
|
||||
- Added M_RESETIDLE to fix a /privmsg bug
|
||||
- Fixed a bug with nickserv passwords found and fixed by Mathieu
|
||||
- Fixed a DEBUGMODE problem with umodes.c
|
||||
- Fixed a snomask bug found by Rob
|
||||
- Made the missing commands error a little more.. tardfriendly
|
||||
- Preperation for beta4
|
||||
- Made some nameser.h changes to work win win32
|
||||
- Fixed a typo in makenet found by 'Eternal Bliss'
|
||||
- Updated module dependancies to allow a module to load the module containing the symbol
|
||||
- Fixed a win32 bug where the editor would cut off text, reported by Inter
|
||||
- Added make install to copy files for you when you install unreal
|
||||
- Replaced killircd, ircd, and rehash with ./unreal start|stop|rehash
|
||||
- Fixed a bug where the win32 help dialog links were plain text
|
||||
- IPv6 fixes to Inet_si2p & Inet_si2pB
|
||||
- IPv6 fixes to make dual ipv4/ipv6 work
|
||||
- IPv6 fixes for IP_OPTIONS (disables under IPv6, i mean .. IRC multicast.
|
||||
WTF?)
|
||||
- Made ./unreal generated by configure to make sure it has the correct path of the exe
|
||||
- Added autoconf check for setproctitle
|
||||
- Added some setproctitle(.., me.name) for extra l33tness :P~
|
||||
- Changed the setproctitle check to also check in -lutil (some OSes have it there)
|
||||
- Added aliases/auspice.conf, and added a /register command to aliases/aliases.conf
|
||||
- Fixed a win32 typo in the .rc
|
||||
- VERSION M_SERVER fix by skold
|
||||
- Fixed connecting with IPv6
|
||||
- Ident requests now orgin with the listener that the user connected on
|
||||
- More IPv6 fixes, DNS resolving actually works now too.. (crackhead IRCnet
|
||||
coding)
|
||||
- Webserver caching fix
|
||||
- A little bug fix that prevented the G:line hostmask checker from checking ?
|
||||
- Made the /kline hostmask checker work like the G:line checker, (it was too easy to K:line *@*)
|
||||
- Fixed a bug where ./unreal rehash would kill the IRCd instead of rehashing :P
|
||||
- Made ./unreal restart (to restart Unreal) and made the pid file location more accurate
|
||||
- Added support for PS_STRINGS and pstat to change the progrma name (couldn't test since I don't have an OS
|
||||
that uses them)
|
||||
- Fixed a win32 bug where pasting text into the editor would not
|
||||
show up in the correct font
|
||||
- Added hscroll bars to the win32 editor (if needed)
|
||||
- The win32 editor now allows you to edit files included via tld {} (probably needs testing)
|
||||
- Made the win32 editor allow you to edit include "" files
|
||||
- Recoded the win32 rehash button to be much better
|
||||
- Recoded the way the editor menu works (hopefully this is much
|
||||
better?)
|
||||
- Added the ability to create new files via the win32 editor
|
||||
- Fixed a win32 editor bug caused by me being drunk or something :P
|
||||
- Fixed the last of the font and editor-cutting-text bugs (hopefully)
|
||||
- Commented out three lines of code that were causing SSL to freeze on
|
||||
/connect, TODO: code in new SSL error handling (Griever)
|
||||
- Fixed password crash bug, found by \dev\NULL-Z-[Zap]
|
||||
- Added new auth.c API and a lot of different crap .. will document later
|
||||
- Made make install copy modules (oops)
|
||||
- Added configure code to get the Auth crypt working
|
||||
- Made Events do thread locking (so we can do funny things and kill small
|
||||
furry animals in the attempt for the perfect scanning module) .. yes, this
|
||||
is drunken coding
|
||||
- Made delayed module unloading possible, make a int mod_delay() adding
|
||||
an event, for e_unload_module_delayed
|
||||
- Updated makefile.win32 for the Auth system
|
||||
- Redid the event system somewhat
|
||||
- Fixed a little event issue involving data types.
|
||||
- Changed the name of the hook functions from add_Hook, del_Hook,
|
||||
add_HookX, del_HookX to HookAdd, HookDel, HookAddEx, HookDelEx
|
||||
so the names are more standard.
|
||||
- Added host54.net to /credits
|
||||
- Fixed a FSU Pthreads bug that caused it not to work on Slackware (help from Frank Mueller)
|
||||
- Started some work on CIDR support (added some functions from hybrid7)
|
||||
- Added some functions for generic linked list modifications
|
||||
- Slightly improved +x v2 algo, win32 releases should be compiled with
|
||||
this improvement OFF, at least until 3.2 final. COMPAT_BETA4_KEYS makes
|
||||
it compat w/ beta4 and pre.
|
||||
- Made checking for redundant bans both ways an ifdef, off by default.
|
||||
Note that undefing this might SLIGHTLY break compat w/ beta4 and pre
|
||||
- Added "griever would like to thank" section to /credits
|
||||
- Auth/SSL fixes, list.c fix, code: could you add auth.c and ssl.c to
|
||||
makefile.win32?. If SSL is enabled, we can use MD5, SHA1, and crypt()
|
||||
even on win32
|
||||
- Added ssl.c and cidr.c to the win32 makefile
|
||||
- Added ssl-pubkey auth method (parameter = pem file for public key)
|
||||
- Converted tkl, events, commands, hooks, and all config structs to ListStruct
|
||||
- can_gkline/t and can_gzline/Z flags added, docs not modded yet
|
||||
- Added snomask +n (nick change notices) I personally hate it, but people wanted it...
|
||||
- Added oper::snomask to allow you to specify a default snomask for an oper
|
||||
- Added snomask +q (Qline notice), triggered when a nick is being denied from a user due to
|
||||
a Q:line.
|
||||
- Added HOOKTYPE_SERVER_CONNECT and HOOKTYPE_SERVER_QUIT for when servers connect and
|
||||
disconnect respectively
|
||||
- Added module v3 code. Needs testing, and NO MODULES DOES NOT COMPILE
|
||||
- Fixed a win32 movude v3 bug
|
||||
- Small v3 fix with no dependency problem
|
||||
- Fixed some more module v3 problems and upgrade all modules
|
||||
- Fixed a ton of module v3 problems (cause: Stskeeps is an idiot)
|
||||
- Yes, even more module v3 bugfixes
|
||||
- Module v3 bugfixes. cause: codemastr lack find n replace skill
|
||||
- Moved the mkpasswd program into ./unreal mkpasswd <method> <password>
|
||||
- Recoded m_oper almost completely, note that the fceT flags are ignored
|
||||
now (you still get them, they just dont do shit). Remove them for me
|
||||
please, as well as the +T usermode. I haven't tested this completely but
|
||||
I see nowhere a bug could happen.
|
||||
- Removed umode +T (useless) and the fue oflags since
|
||||
oper::snomask supercedes them.
|
||||
- Fixed another module v3 bug caused by Stskeeps drunkeness
|
||||
- Started adding HP-UX module support (Not enough added where it actually works yet)
|
||||
- Added some more HP-UX code
|
||||
- Made "Module already loaded" a non fatal error (funny msg on rehash)
|
||||
- Fixed typical codemastr "Let's delete this from a list we haven't even
|
||||
added it to yet *giggles and twirls around*" bug, do to with config_set_unknown
|
||||
- Fixed events bug, added recoded scan module, got a lot of stuff to fix so
|
||||
far. Problems, unloading, (delay), tkl doesn't always sweep it all,
|
||||
- Some scan unloading stuff
|
||||
+1751
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
|
||||
Send donations to:
|
||||
------------------
|
||||
UnrealIRCd Project
|
||||
C/O Carsten Munk
|
||||
P.O.Box 52
|
||||
7400 Herning
|
||||
Denmark
|
||||
|
||||
(if you want to that is .. it will just make us a little more able to code
|
||||
even more on this project. You will get in /credits if you do so).
|
||||
|
||||
Payment preferred (if money, is western union) - contact me on email
|
||||
regarding other methods
|
||||
|
||||
|
||||
-- Stskeeps
|
||||
|
||||
[ $Id$ ]
|
||||
@@ -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 supporters@lists.unrealircd.org and hopefully someone ####
|
||||
#### will be able to help you. Another suggestion is going on IRC ####
|
||||
#### /server irc.ircsystems.net #UnrealIRCD ####
|
||||
#### ####
|
||||
#### 4b) make install - IS NOT NEEDED ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
#### Configuring the Server ####
|
||||
#### ####
|
||||
#### 1) ./makeconf ####
|
||||
#### This executable has been created to help with your ircd.conf ####
|
||||
#### creation process. It walks you through the steps and makes the ####
|
||||
#### file for you. Note: If you want to edit your ircd.conf you ####
|
||||
#### should only need to: edit ircd.conf. If you ./makeconf again ####
|
||||
#### it will delete the old ircd.conf and re-write a new one. ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
#### Starting the Server ####
|
||||
#### ####
|
||||
#### 1) Make sure you're in the top level Unreal3.1.1 directory.. ####
|
||||
#### ####
|
||||
#### 2) ./ircd ####
|
||||
#### ####
|
||||
#### 3) If you get the error screen, please go through and check each ####
|
||||
#### point presented, if you have no luck, go on IRC ####
|
||||
#### /server irc.ircsystems.net #UnrealIRCD ####
|
||||
#### ####
|
||||
#### 4) /server yourserverip or domainname ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
#### Updating the IRCD ####
|
||||
#### ####
|
||||
#### 1) ./update ####
|
||||
#### Newer releases of Unreal allow the use of ./update which logs ####
|
||||
#### into the Unreal server and allows you to pick a new version to ####
|
||||
#### to upgrade to. ####
|
||||
#### ####
|
||||
###############################################################################
|
||||
|
||||
|
||||
|
||||
+106
-138
@@ -20,7 +20,7 @@
|
||||
#*/
|
||||
|
||||
CC=@CC@
|
||||
INCLUDEDIR=@UNRLINCDIR@
|
||||
INCLUDEDIR=../include
|
||||
NETWORKSDIR=
|
||||
FROMDOS=/home/cmunk/bin/4dos
|
||||
|
||||
@@ -33,12 +33,12 @@ FROMDOS=/home/cmunk/bin/4dos
|
||||
# IRCDLIBS blank. If that fails, try recomendations below.
|
||||
#
|
||||
|
||||
#XCFLAGS=-O -g -export-dynamic
|
||||
IRCDLIBS=@IRCDLIBS@ @PCRE2_LIBS@ @ARGON2_LIBS@ @CARES_LIBS@ @SODIUM_LIBS@ @JANSSON_LIBS@ @PTHREAD_LIBS@
|
||||
#XCFLAGS=-O -g -export-dynamic -pthread -DSCAN_API=1
|
||||
IRCDLIBS=@IRCDLIBS@
|
||||
CRYPTOLIB=@CRYPTOLIB@
|
||||
OPENSSLINCLUDES=
|
||||
|
||||
XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_CFLAGS@ @JANSSON_CFLAGS@ @CFLAGS@ @HARDEN_CFLAGS@ @CPPFLAGS@
|
||||
XCFLAGS=@CFLAGS@
|
||||
#
|
||||
# use the following on MIPS:
|
||||
#CFLAGS= -systype bsd43 -DSYSTYPE_BSD43 -I$(INCLUDEDIR)
|
||||
@@ -89,18 +89,34 @@ XCFLAGS=@PTHREAD_CFLAGS@ @PCRE2_CFLAGS@ @ARGON2_CFLAGS@ @CARES_CFLAGS@ @SODIUM_C
|
||||
# you are not defining CMDLINE_CONFIG
|
||||
IRCDMODE = 711
|
||||
|
||||
# Objects that are optional due to optional libraries:
|
||||
URL=@URL@
|
||||
GEOIP_CLASSIC_OBJECTS=@GEOIP_CLASSIC_OBJECTS@
|
||||
GEOIP_CLASSIC_LIBS=@GEOIP_CLASSIC_LIBS@
|
||||
GEOIP_CLASSIC_CFLAGS=@GEOIP_CLASSIC_CFLAGS@
|
||||
# [CHANGEME]
|
||||
# IRCDDIR must be the same as DPATH in include/config.h
|
||||
#
|
||||
IRCDDIR=@IRCDDIR@
|
||||
|
||||
|
||||
#
|
||||
# If your system is lacking regex, uncomment this line
|
||||
#
|
||||
#REGEX=../extras/regex/regex.o
|
||||
REGEX=@REGEX@
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get a link-time error dealing with strtoul, comment out
|
||||
# this line.
|
||||
# STRTOUL= strtoul.o
|
||||
STRTOUL=@STRTOUL@
|
||||
|
||||
# [CHANGEME]
|
||||
# If you get crashes around a specific number of clients, and that client
|
||||
# load comes close or a little over the system-defined value of FD_SETSIZE,
|
||||
# override it here and see what happens.
|
||||
FD_SETSIZE=@FD_SETSIZE@
|
||||
|
||||
# Where is your openssl binary
|
||||
OPENSSLPATH=@OPENSSLPATH@
|
||||
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS)
|
||||
XLDFLAGS=@LDFLAGS_PRIVATELIBS@ @HARDEN_LDFLAGS@ @LDFLAGS@
|
||||
LDFLAGS=$(XLDFLAGS)
|
||||
CFLAGS=-I$(INCLUDEDIR) $(XCFLAGS) $(FD_SETSIZE)
|
||||
|
||||
SHELL=/bin/sh
|
||||
SUBDIRS=src
|
||||
@@ -115,39 +131,44 @@ all: build
|
||||
MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'IRCDLIBS=${IRCDLIBS}' \
|
||||
'LDFLAGS=${LDFLAGS}' 'IRCDMODE=${IRCDMODE}' \
|
||||
'RES=${RES}' 'BINDIR=${BINDIR}' 'INSTALL=${INSTALL}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' \
|
||||
'INCLUDEDIR=${INCLUDEDIR}' 'IRCDDIR=${IRCDDIR}' \
|
||||
'RM=${RM}' 'CP=${CP}' 'TOUCH=${TOUCH}' \
|
||||
'SHELL=${SHELL}' \
|
||||
'CRYPTOLIB=${CRYPTOLIB}' \
|
||||
'CRYPTOINCLUDES=${CRYPTOINCLUDES}' \
|
||||
'URL=${URL}' \
|
||||
'GEOIP_CLASSIC_OBJECTS=${GEOIP_CLASSIC_OBJECTS}' \
|
||||
'GEOIP_CLASSIC_LIBS=${GEOIP_CLASSIC_LIBS}' \
|
||||
'GEOIP_CLASSIC_CFLAGS=${GEOIP_CLASSIC_CFLAGS}'
|
||||
'SHELL=${SHELL}' 'STRTOUL=${STRTOUL}' \
|
||||
'CRYPTOLIB=${CRYPTOLIB}' 'REGEX=${REGEX}' \
|
||||
'CRYPTOINCLUDES=${CRYPTOINCLUDES}'
|
||||
|
||||
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
|
||||
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 \
|
||||
@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 ''
|
||||
@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 \
|
||||
@for i in $(SUBDIRS); do \
|
||||
echo "Cleaning $$i";\
|
||||
( cd $$i; ${MAKE} ${MAKEARGS} clean; ) \
|
||||
done
|
||||
@@ -156,117 +177,64 @@ clean:
|
||||
fi
|
||||
|
||||
cleandir: clean
|
||||
rm -rf include/setup.h Makefile Settings
|
||||
rm -rf include/networks.h include/setup.h Makefile Settings
|
||||
|
||||
makex:
|
||||
chmod +x Config newnet ircd ircdcron/ircdchk killircd
|
||||
chmod +x makeconf rehash ircdreg
|
||||
|
||||
fromdos: cleandir
|
||||
$(FROMDOS) -dv *
|
||||
$(FROMDOS) -dv src/*
|
||||
$(FROMDOS) -dv include/*
|
||||
$(FROMDOS) -dv doc/*
|
||||
$(FROMDOS) -dv crypt/*
|
||||
$(FROMDOS) -dv ircdcron/*
|
||||
makedist: makex
|
||||
echo "Stamping.."
|
||||
|
||||
stamp: makedist
|
||||
echo "/* Auto created release stamping */" > include/stamp.h
|
||||
echo "#define RELEASEID2 \"`date +%s`\"" >> include/stamp.h
|
||||
echo "#define RELEASESTUFF \"`hostname`\"" >> include/stamp.h
|
||||
echo "" >> include/stamp.h
|
||||
|
||||
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 \
|
||||
@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 src/unrealircdctl $(DESTDIR)@BINDIR@/unrealircdctl
|
||||
$(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@/extbans
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/extbans/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/extbans/*.so $(DESTDIR)@MODULESDIR@/extbans
|
||||
$(INSTALL) -m 0700 -d $(DESTDIR)@MODULESDIR@/rpc
|
||||
@rm -f $(DESTDIR)@MODULESDIR@/rpc/*.so 1>/dev/null 2>&1
|
||||
$(INSTALL) -m 0700 src/modules/rpc/*.so $(DESTDIR)@MODULESDIR@/rpc
|
||||
@#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
|
||||
$(INSTALL) -m 0600 doc/conf/tls/tls.cnf $(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@
|
||||
@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 ''
|
||||
@echo '* To ensure UnrealIRCd automatically starts on system startup:'
|
||||
@echo ' * Install a cron job: https://www.unrealircd.org/docs/Cron_job'
|
||||
@echo ' * Or, use systemd: https://www.unrealircd.org/docs/Using_systemd_with_UnrealIRCd'
|
||||
@echo ''
|
||||
-@if [ "@SCRIPTDIR@/bin" = "@BINDIR@" ] ; then \
|
||||
echo 'Again, be sure to change to the @SCRIPTDIR@ directory!' ; \
|
||||
fi
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 src/ircd $(BINDIR)
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0600 networks/*.network $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0700 networks/makenet $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0600 networks/networks.ndx $(IRCDDIR)/networks
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/doc
|
||||
$(INSTALL) -m 0600 doc/Authors doc/conf.doc doc/faq doc/tao.of.irc doc/coding-guidelines doc/example.conf doc/features.txt doc/unrealircd.conf.txt doc/Crule.readme doc/commands.txt doc/example.settings doc/services-install-guide doc/unrealircd.doc $(IRCDDIR)/doc
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/aliases
|
||||
$(INSTALL) -m 0600 aliases/*.conf $(IRCDDIR)/aliases
|
||||
$(TOUCH) $(IRCDDIR)/unrealircd.conf
|
||||
chmod 0600 $(IRCDDIR)/unrealircd.conf
|
||||
$(INSTALL) -m 0600 badwords.*.conf LICENSE Donation $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 bugreport makeconf unreal $(IRCDDIR)
|
||||
$(INSTALL) -m 0700 -d $(IRCDDIR)/modules
|
||||
$(INSTALL) -m 0700 src/modules/*.so $(IRCDDIR)/modules
|
||||
|
||||
pem:
|
||||
@echo "The command 'make pem' is no longer used to generate the TLS certificate."
|
||||
@echo "Please run './unrealircd mkcert' instead."
|
||||
|
||||
Makefile: config.status Makefile.in
|
||||
./config.status
|
||||
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!."
|
||||
|
||||
-1465
File diff suppressed because it is too large
Load Diff
@@ -1,50 +0,0 @@
|
||||
[](https://fosstodon.org/@unrealircd)
|
||||
[](https://twitter.com/Unreal_IRCd)
|
||||
[](https://github.com/unrealircd/unrealircd/actions/workflows/linux-ci.yml)
|
||||
|
||||
## 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 37%](https://www.ircstats.org/servers). UnrealIRCd is a
|
||||
highly advanced IRCd with a strong focus on modularity and security. It uses an
|
||||
advanced and highly configurable configuration file. Other key features include:
|
||||
full IRCv3 support, SSL/TLS, cloaking, JSON-RPC, advanced anti-flood and anti-spam
|
||||
systems, GeoIP, remote includes, and lots of [other features](https://www.unrealircd.org/docs/About_UnrealIRCd).
|
||||
We are also particularly proud on our extensive online documentation.
|
||||
|
||||
## Versions
|
||||
* UnrealIRCd 6 is the *stable* series since December 2021. It is the only supported version.
|
||||
* For full details of release scheduling and EOL dates, see
|
||||
[UnrealIRCd releases](https://www.unrealircd.org/docs/UnrealIRCd_releases) on the wiki
|
||||
|
||||
## How to get started
|
||||
Follow the installation guide on the wiki. See:
|
||||
* [Installing from source for *NIX](https://www.unrealircd.org/docs/Installing_from_source)
|
||||
* [Installation instructions for Windows](https://www.unrealircd.org/docs/Installing_(Windows))
|
||||
|
||||
## Documentation and Support
|
||||
You can find all **documentation** online at: https://www.unrealircd.org/docs/
|
||||
|
||||
We also have a good **FAQ**: https://www.unrealircd.org/docs/FAQ
|
||||
|
||||
If you are in need of support, you can pop up on [**#unreal-support** on `irc.unrealircd.org`](ircs://irc.unrealircd.org:6697/unreal-support)
|
||||
or ask your question on the [forums](https://forums.unrealircd.org).
|
||||
|
||||
## Supported systems
|
||||
We try to **support** all major *NIX systems: all Linux distros but also NetBSD, OpenBSD and macOS,
|
||||
provided the OS version was released within the past ~5 years.
|
||||
|
||||
We use a private BuildBot instance to test each commit. The **tested** systems are (others are
|
||||
likely to work too):
|
||||
* Linux: Debian (10, 11, 12, 13), Ubuntu (18.04, 20.04, 22.04, 24.04, 26.04)
|
||||
* FreeBSD: 15
|
||||
* Windows: Visual Studio 2019
|
||||
|
||||
UnrealIRCd is architecture-agnostic. Most of the BuildBot workers run on x64 but we
|
||||
also have some on x86 and arm64 to ensure these work as well.
|
||||
|
||||
## Other links ##
|
||||
* https://www.unrealircd.org - Main website
|
||||
* https://bugs.unrealircd.org - Bug tracker
|
||||
* https://fosstodon.org/@unrealircd - Mastodon
|
||||
* https://twitter.com/Unreal_IRCd - Twitter
|
||||
@@ -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 UnrealIRCd 6
|
||||
|
||||
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,35 @@
|
||||
#!/bin/sh
|
||||
clear
|
||||
echo "Starting up UnrealIRCd Setup"
|
||||
echo ""
|
||||
echo "Press enter to proceed to setup..."
|
||||
read cc
|
||||
more -d Unreal.nfo
|
||||
echo "Press enter to proceed to FAQ..."
|
||||
read cc
|
||||
more -d doc/faq
|
||||
echo "Press enter to proceed to configuration..."
|
||||
read cc
|
||||
if [ "$1" != "-noconfig" ] ; then
|
||||
./Config
|
||||
fi
|
||||
|
||||
echo "Press enter to proceed to compiling..."
|
||||
read cc
|
||||
make
|
||||
echo "Press enter to proceed to unrealircd.conf making..."
|
||||
read cc
|
||||
./makeconf
|
||||
echo "Press enter to proceed to network configuration..."
|
||||
read cc
|
||||
clear
|
||||
echo "Do you want to use one of these network files, or make your own?"
|
||||
cd networks
|
||||
ls *.network
|
||||
echo "[Type "no" if you want to make your own]"
|
||||
read cc
|
||||
if [ "$cc" == "no" ] ; then
|
||||
./makenet
|
||||
fi
|
||||
echo "Now just edit your unrealircd.conf and you should be ready to run"
|
||||
echo "UnrealIRCd with ./ircd"
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
===============================================
|
||||
= UnrealIRCd v3.2-Selene (beta1) =
|
||||
===============================================
|
||||
Was brought to you by:
|
||||
|
||||
The core team:
|
||||
==============
|
||||
* Stskeeps <stskeeps@tspre.org>
|
||||
* codemastr <codemastr@unrealircd.com>
|
||||
|
||||
Coders team:
|
||||
============
|
||||
* McSkaf <mcskaf@unrealircd.org>
|
||||
* Griever <griever@unrealircd.org>
|
||||
* Zogg <zogg@unrealircd.org>
|
||||
* NiQuiL <niquil@unrealircd.org>
|
||||
* assyrian <assyrian@unrealircd.org>
|
||||
|
||||
In former versions:
|
||||
* DrBin <drbin@unrealircd.com>
|
||||
* llthangel <llthangel@unrealircd.org>
|
||||
|
||||
Precenses on the Internet:
|
||||
* http://www.unrealircd.com
|
||||
|
||||
CVS:
|
||||
To get anonymous access: (read only)
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot login"
|
||||
|
||||
press enter when asked for password
|
||||
|
||||
and to get latest stable:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r stable -d Unreal-stable unreal"
|
||||
|
||||
latest beta:
|
||||
"cvs -d :pserver:anonymous@cvs.ircsystems.net:/home/cmunk/ircsystems/cvsroot checkout -r beta -d Unreal-beta unreal"
|
||||
|
||||
* To get support
|
||||
================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #unreal-support
|
||||
[Note: Please be patient after asking questions, we may do other stuff
|
||||
or we're away. Don't repeat questions, we heard you first time,
|
||||
READ THE TOPIC before you ask anything. We do this on a free
|
||||
base so we are volunteeringly helping you, but we are humans
|
||||
like you, and we got to have peace at times as well.]
|
||||
* Mailing list: supporters@lists.unrealircd.org (for support)
|
||||
* READ doc/faq BEFORE ASKING QUESTIONS!
|
||||
|
||||
* Want to discuss, chat, etc?
|
||||
=============================
|
||||
* IRC: /server irc.ircsystems.net 6667 - /join #UnrealIRCd
|
||||
|
||||
* Got a bug to report?
|
||||
======================
|
||||
* If the server crashes and dumps core do this:
|
||||
* Go into the Unreal directory and type this:
|
||||
gdb src/ircd core.filename
|
||||
where core.filename is the filename in the dumping core message
|
||||
if it loads gdb, (not saying "command not found" etc), type "bt" in
|
||||
the program (type "quit" to get out again)
|
||||
|
||||
The output coming out there please mail it to
|
||||
coders@lists.unrealircd.org , along with OS type,
|
||||
what "uname -a" says, any clues what it is, if you did anything etc
|
||||
etc. Please keep the core dump files if we ask you to mail us them
|
||||
if needed
|
||||
|
||||
* If you experince any wierdnesses (that doesnt crash the server)
|
||||
please mail coders@lists.unrealircd.org with any clues on what
|
||||
you did, what you experinced etc.
|
||||
|
||||
* Got a suggestion?
|
||||
===================
|
||||
* Mail it to coders@lists.unrealircd.org :) or catch one from
|
||||
the Unreal team online on IRC:)
|
||||
|
||||
|
||||
@@ -2,42 +2,36 @@
|
||||
|
||||
alias identify {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
alias chanserv;
|
||||
parameters "IDENTIFY %1-";
|
||||
}
|
||||
};
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
alias nickserv;
|
||||
parameters "IDENTIFY %1-";
|
||||
}
|
||||
};
|
||||
type command;
|
||||
}
|
||||
};
|
||||
|
||||
alias services {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
alias chanserv;
|
||||
parameters "%1-";
|
||||
}
|
||||
};
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
alias nickserv;
|
||||
parameters "%1-";
|
||||
}
|
||||
};
|
||||
type command;
|
||||
}
|
||||
};
|
||||
|
||||
alias register {
|
||||
format "^#" {
|
||||
target chanserv;
|
||||
type services;
|
||||
alias chanserv;
|
||||
parameters "REGISTER %1-";
|
||||
}
|
||||
};
|
||||
format "^[^#]" {
|
||||
target nickserv;
|
||||
type services;
|
||||
alias nickserv;
|
||||
parameters "REGISTER %1-";
|
||||
}
|
||||
};
|
||||
type command;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
/* Auspice Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias rootserv { type services; };
|
||||
alias rs { nick rootserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,16 @@
|
||||
/* Epona Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
alias botserv { type services; };
|
||||
alias bs { nick botserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,14 @@
|
||||
/* Generic Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,4 @@
|
||||
/* Generic StatServ Aliases */
|
||||
|
||||
alias statserv { type stats; };
|
||||
alias ss { nick statserv; type stats; };
|
||||
@@ -0,0 +1,17 @@
|
||||
/* IRCServices Aliases */
|
||||
|
||||
alias nickserv { type services; };
|
||||
alias ns { nick nickserv; type services; };
|
||||
alias chanserv { type services; };
|
||||
alias cs { nick chanserv; type services; };
|
||||
alias memoserv { type services; };
|
||||
alias ms { nick memoserv; type services; };
|
||||
alias operserv { type services; };
|
||||
alias os { nick operserv; type services; };
|
||||
alias helpserv { type services; };
|
||||
alias hs { nick helpserv; type services; };
|
||||
alias irciihelp { type services; };
|
||||
alias statserv { type services; };
|
||||
alias ss { nick statserv; type services; };
|
||||
|
||||
include "aliases/aliases.conf";
|
||||
@@ -0,0 +1,6 @@
|
||||
/* OperStats Aliases */
|
||||
|
||||
operserv { type stats; };
|
||||
os { nick operserv; type stats; };
|
||||
statserv { type stats; };
|
||||
ss { nick statserv; type stats; };
|
||||
Vendored
+342
@@ -0,0 +1,342 @@
|
||||
dnl aclocal.m4 generated automatically by aclocal 1.4-p4
|
||||
|
||||
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
dnl Macro: unet_CHECK_TYPE_SIZES
|
||||
dnl
|
||||
dnl Check the size of several types and define a valid int16_t and int32_t.
|
||||
dnl
|
||||
AC_DEFUN(unreal_CHECK_TYPE_SIZES,
|
||||
[dnl Check type sizes
|
||||
AC_CHECK_SIZEOF(short)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
if test "$ac_cv_sizeof_int" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, int)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 2 ; then
|
||||
AC_CHECK_TYPE(int16_t, short)
|
||||
AC_CHECK_TYPE(u_int16_t, unsigned short)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 16 bits])
|
||||
fi
|
||||
if test "$ac_cv_sizeof_int" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, int)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned int)
|
||||
elif test "$ac_cv_sizeof_short" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, short)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned short)
|
||||
elif test "$ac_cv_sizeof_long" = 4 ; then
|
||||
AC_CHECK_TYPE(int32_t, long)
|
||||
AC_CHECK_TYPE(u_int32_t, unsigned long)
|
||||
else
|
||||
AC_MSG_ERROR([Cannot find a type with size of 32 bits])
|
||||
fi])
|
||||
|
||||
|
||||
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||
dnl
|
||||
dnl This macro figures out how to build C programs using POSIX
|
||||
dnl threads. It sets the PTHREAD_LIBS output variable to the threads
|
||||
dnl library and linker flags, and the PTHREAD_CFLAGS output variable
|
||||
dnl to any special C compiler flags that are needed. (The user can also
|
||||
dnl force certain compiler flags/libs to be tested by setting these
|
||||
dnl environment variables.)
|
||||
dnl
|
||||
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||
dnl multi-threaded programs (defaults to the value of CC otherwise).
|
||||
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
|
||||
dnl
|
||||
dnl If you are only building threads programs, you may wish to
|
||||
dnl use these variables in your default LIBS, CFLAGS, and CC:
|
||||
dnl
|
||||
dnl LIBS="$PTHREAD_LIBS $LIBS"
|
||||
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
dnl CC="$PTHREAD_CC"
|
||||
dnl
|
||||
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
|
||||
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE
|
||||
dnl to that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||
dnl
|
||||
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
|
||||
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands
|
||||
dnl to run it if it is not found. If ACTION-IF-FOUND is not specified,
|
||||
dnl the default action will define HAVE_PTHREAD.
|
||||
dnl
|
||||
dnl Please let the authors know if this macro fails on any platform,
|
||||
dnl or if you have any other suggestions or comments. This macro was
|
||||
dnl based on work by SGJ on autoconf scripts for FFTW (www.fftw.org)
|
||||
dnl (with help from M. Frigo), as well as ac_pthread and hb_pthread
|
||||
dnl macros posted by AFC to the autoconf macro repository. We are also
|
||||
dnl grateful for the helpful feedback of numerous users.
|
||||
dnl
|
||||
dnl @version $Id$
|
||||
dnl @author Steven G. Johnson <stevenj@alum.mit.edu> and Alejandro Forero Cuervo <bachue@bachue.com>
|
||||
|
||||
dnl This has been recoded a lot. It now fully supports caching and is a bit faster
|
||||
|
||||
AC_DEFUN([ACX_PTHREAD], [
|
||||
AC_CANONICAL_HOST
|
||||
acx_pthread_ok=no
|
||||
|
||||
# First, check if the POSIX threads header, pthread.h, is available.
|
||||
# If it isn't, don't bother looking for the threads libraries.
|
||||
AC_CHECK_HEADER(pthread.h, , acx_pthread_ok=noheader)
|
||||
|
||||
# We must check for the threads library under a number of different
|
||||
# names; the ordering is very important because some systems
|
||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
|
||||
# libraries is broken (non-POSIX).
|
||||
|
||||
# Create a list of thread flags to try. Items starting with a "-" are
|
||||
# C compiler flags, and other items are library names, except for "none"
|
||||
# which indicates that we try without any flags at all.
|
||||
|
||||
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt"
|
||||
|
||||
# The ordering *is* (sometimes) important. Some notes on the
|
||||
# individual items follow:
|
||||
|
||||
# pthreads: AIX (must check this before -lpthread)
|
||||
# none: in case threads are in libc; should be tried before -Kthread and
|
||||
# other compiler flags to prevent continual compiler warnings
|
||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
|
||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
|
||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
|
||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
|
||||
# -pthreads: Solaris/gcc
|
||||
# -mthreads: Mingw32/gcc, Lynx/gcc
|
||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
|
||||
# doesn't hurt to check since this sometimes defines pthreads too;
|
||||
# also defines -D_REENTRANT)
|
||||
# pthread: Linux, etcetera
|
||||
# --thread-safe: KAI C++
|
||||
|
||||
case "${host_cpu}-${host_os}" in
|
||||
*solaris*)
|
||||
|
||||
# On Solaris (at least, for some versions), libc contains stubbed
|
||||
# (non-functional) versions of the pthreads routines, so link-based
|
||||
# tests will erroneously succeed. (We need to link with -pthread or
|
||||
# -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
|
||||
# a function called by this macro, so we could check for that, but
|
||||
# who knows whether they'll stub that too in a future libc.) So,
|
||||
# we'll just look for -pthreads and -lpthread first:
|
||||
|
||||
acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
|
||||
;;
|
||||
esac
|
||||
result=none
|
||||
if test "$acx_pthread_ok" = "no"; then
|
||||
AC_CACHE_CHECK(what flags pthreads needs,ac_cv_pthreadflag,[
|
||||
for flag in $acx_pthread_flags; do
|
||||
|
||||
case $flag in
|
||||
none)
|
||||
result="none"
|
||||
;;
|
||||
|
||||
-*)
|
||||
PTHREAD_CFLAGS="$flag"
|
||||
result="$flag"
|
||||
;;
|
||||
|
||||
*)
|
||||
PTHREAD_LIBS="-l$flag"
|
||||
result="-l$flag"
|
||||
;;
|
||||
esac
|
||||
|
||||
save_LIBS="$LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Check for various functions. We must include pthread.h,
|
||||
# since some functions may be macros. (On the Sequent, we
|
||||
# need a special flag -Kthread to make this header compile.)
|
||||
# We check for pthread_join because it is in -lpthread on IRIX
|
||||
# while pthread_create is in libc. We check for pthread_attr_init
|
||||
# due to DEC craziness with -lpthreads. We check for
|
||||
# pthread_cleanup_push because it is one of the few pthread
|
||||
# functions on Solaris that doesn't have a non-functional libc stub.
|
||||
# We try pthread_create on general principles.
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[pthread_t th; pthread_join(th, 0);
|
||||
pthread_attr_init(0); pthread_cleanup_push(0, 0);
|
||||
pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
|
||||
[acx_pthread_ok=yes])
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
if test "$acx_pthread_ok" = "yes"; then
|
||||
dnl AC_MSG_RESULT($result)
|
||||
ac_cv_pthreadflag=$result
|
||||
break;
|
||||
fi
|
||||
|
||||
PTHREAD_LIBS=""
|
||||
PTHREAD_CFLAGS=""
|
||||
done
|
||||
fi
|
||||
])
|
||||
|
||||
case $ac_cv_pthreadflag in
|
||||
none)
|
||||
;;
|
||||
-l*)
|
||||
PTHREAD_LIBS=$ac_cv_pthreadflag
|
||||
;;
|
||||
*)
|
||||
PTHREAD_CFLAGS=$ac_cv_pthreadflag
|
||||
;;
|
||||
esac
|
||||
# Various other checks:
|
||||
if test "x$ac_cv_pthreadflag"!=x; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
|
||||
# Detect AIX lossage: threads are created detached by default
|
||||
# and the JOINABLE attribute has a nonstandard name (UNDETACHED).
|
||||
AC_CACHE_CHECK([for joinable pthread attribute],ac_cv_pthreadjoin,[
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[int attr=PTHREAD_CREATE_JOINABLE;],
|
||||
ac_cv_pthreadjoin=PTHREAD_CREATE_JOINABLE, ac_cv_pthreadjoin=unknown)
|
||||
if test "$ac_cv_pthreadjoin" = "unknown"; then
|
||||
AC_TRY_LINK([#include <pthread.h>],
|
||||
[int attr=PTHREAD_CREATE_UNDETACHED;],
|
||||
ac_cv_pthreadjoin=PTHREAD_CREATE_UNDETACHED, ac_cv_pthreadjoin=unknown)
|
||||
fi
|
||||
])
|
||||
if test "$ac_cv_pthreadjoin" != "PTHREAD_CREATE_JOINABLE"; then
|
||||
AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ac_cv_pthreadjoin,
|
||||
[Define to the necessary symbol if this constant
|
||||
uses a non-standard name on your system.])
|
||||
fi
|
||||
if test "$ac_cv_pthreadjoin" = "unknown"; then
|
||||
AC_MSG_WARN([we do not know how to create joinable pthreads])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([if more special flags are required for pthreads],ac_cv_pthreadspecial,[
|
||||
ac_cv_pthreadspecial=no
|
||||
case "${host_cpu}-${host_os}" in
|
||||
*-aix* | *-freebsd*) ac_cv_pthreadspecial="-D_THREAD_SAFE";;
|
||||
*solaris* | alpha*-osf*) ac_cv_pthreadspecial="-D_REENTRANT";;
|
||||
esac
|
||||
])
|
||||
if test "$ac_cv_pthreadspecial" != "no"; then
|
||||
PTHREAD_CFLAGS="$ac_cv_pthreadspecial $PTHREAD_CFLAGS"
|
||||
fi
|
||||
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
# More AIX lossage: must compile with cc_r
|
||||
AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
|
||||
else
|
||||
PTHREAD_CC="$CC"
|
||||
fi
|
||||
if test "x$ac_cv_pthreadflag"!=x; then
|
||||
AC_CACHE_CHECK(if pthreads uses one thread per process, ac_cv_thread_multi, [
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS $LIBS"
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
AC_TRY_RUN([
|
||||
#include <pthread.h>
|
||||
int pid;
|
||||
int mypid = -1;
|
||||
pthread_mutex_t mutex;
|
||||
void testthreads(void *p)
|
||||
{
|
||||
pthread_mutex_lock(&mutex);
|
||||
mypid = getpid();
|
||||
pthread_mutex_unlock(&mutex);
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
int main() {
|
||||
int i;
|
||||
pthread_t thread;
|
||||
pthread_attr_t attrs;
|
||||
|
||||
pid = getpid();
|
||||
pthread_attr_init(&attrs);
|
||||
pthread_mutex_init(&mutex, NULL);
|
||||
pthread_mutex_lock(&mutex);
|
||||
pthread_create(&thread, &attrs, (void*)testthreads, NULL);
|
||||
pthread_mutex_unlock(&mutex);
|
||||
sleep(2);
|
||||
pthread_mutex_lock(&mutex);
|
||||
if (mypid == pid)
|
||||
exit(0);
|
||||
else
|
||||
exit(1);
|
||||
}
|
||||
],ac_cv_thread_multi=no, ac_cv_thread_multi=yes)
|
||||
LIBS="$save_LIBS"
|
||||
CFLAGS="$save_CFLAGS"
|
||||
])
|
||||
if test "$USESTDTHREAD" != "1"; then
|
||||
if test "$ac_cv_thread_multi" = "yes"; then
|
||||
AC_MSG_RESULT(Ok we'll install FSU Pthreads)
|
||||
cd extras
|
||||
if [[ -f "pthreads.tar.gz" ]] ; then
|
||||
gunzip -fd pthreads.tar.gz
|
||||
fi
|
||||
tar xf pthreads.tar
|
||||
cd threads/src
|
||||
rm -f Makefile
|
||||
case "${host_cpu}-${host_os}" in
|
||||
*-freebsd*)
|
||||
cp Makefile.FreeBSD Makefile
|
||||
make
|
||||
;;
|
||||
*-linux*)
|
||||
cp Makefile.Linux Makefile
|
||||
make
|
||||
;;
|
||||
*-solaris2*)
|
||||
cp Makefile.Solaris Makefile
|
||||
make
|
||||
;;
|
||||
*)
|
||||
./configure
|
||||
;;
|
||||
esac
|
||||
cd ../../../
|
||||
if test "$ac_cv_pthreadspecial" != no; then
|
||||
PTHREAD_CFLAGS="-I=../extras/threads/include $ac_cv_pthreadspecial"
|
||||
else
|
||||
PTHREAD_CFLAGS="-I=../extras/threads/include"
|
||||
fi
|
||||
PTHREAD_LIBS="../extras/threads/lib/libgthreads.a ../extras/threads/lib/libmalloc.a"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(PTHREAD_LIBS)
|
||||
AC_SUBST(PTHREAD_CFLAGS)
|
||||
AC_SUBST(PTHREAD_CC)
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test x"$acx_pthread_ok" = xyes; then
|
||||
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
|
||||
:
|
||||
else
|
||||
acx_pthread_ok=no
|
||||
$2
|
||||
fi
|
||||
|
||||
])dnl ACX_PTHREAD
|
||||
|
||||
|
||||
Vendored
-1748
File diff suppressed because it is too large
Load Diff
Vendored
-1884
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,352 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(src/ircd.c)
|
||||
AC_CONFIG_HEADER(include/setup.h)
|
||||
AC_PROG_CC
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
AC_CACHE_CHECK(if you have gcc 3.0 or higher, ac_cv_gcc3, [
|
||||
if test -z "`gcc -v 2>&1 |grep 'gcc version 3.'`"; then
|
||||
ac_cv_gcc3="no"
|
||||
else
|
||||
ac_cv_gcc3="yes"
|
||||
fi
|
||||
])
|
||||
if test "$ac_cv_gcc3" = "yes"; then
|
||||
CFLAGS="$CFLAGS -Wnone"
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(RM,rm)
|
||||
AC_PATH_PROG(CP,cp)
|
||||
AC_PATH_PROG(TOUCH,touch)
|
||||
AC_PATH_PROG(OPENSSLPATH,openssl)
|
||||
AC_PATH_PROG(INSTALL,install)
|
||||
dnl Checks for libraries.
|
||||
AC_CHECK_LIB(descrypt, crypt, [AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-ldescrypt " MKPASSWDLIBS="-ldescrypt"],
|
||||
AC_CHECK_LIB(crypt, crypt,[ AC_DEFINE(HAVE_CRYPT) IRCDLIBS="$IRCDLIBS-lcrypt " MKPASSWDLIBS="-lcrypt"]))
|
||||
AC_CHECK_LIB(socket, socket,IRCDLIBS="$IRCDLIBS-lsocket ")
|
||||
AC_CHECK_LIB(nsl, inet_ntoa,IRCDLIBS="$IRCDLIBS-lnsl ")
|
||||
|
||||
AC_SUBST(IRCDLIBS)
|
||||
AC_SUBST(MKPASSWDLIBS)
|
||||
AC_DEFUN(AC_INSTALL_REGEX,
|
||||
[
|
||||
AC_MSG_RESULT(Ok we'll install regex)
|
||||
cd extras/regex
|
||||
./configure
|
||||
make
|
||||
cd ../..
|
||||
REGEX="../extras/regex/regex.o"
|
||||
])
|
||||
|
||||
openssl=no
|
||||
AC_DEFUN(AC_ENABLE_SSL,
|
||||
[
|
||||
if test "$openssl" = "yes"; then
|
||||
AC_DEFINE(USE_SSL)
|
||||
AC_CACHE_CHECK(what order we should supply the SSL libraries in, ac_cv_ssl_libs, [
|
||||
save_libs="$LIBS"
|
||||
LIBS="$LIBS -lssl -lcrypto -lssl"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>], [
|
||||
SSL_write(NULL, NULL, NULL);
|
||||
], ac_cv_ssl_libs="-lssl -lcrypto -lssl" LIBS="$save_libs", ac_cv_ssl_libs="-lssl -lcrypto -lssl" LIBS="$save_libs")])
|
||||
CRYPTOLIB="$ac_cv_ssl_libs"
|
||||
CFLAGS="$CFLAGS -I/usr/local/include -I/usr/local/ssl/include -L/usr/local/lib -L/usr/local/ssl/lib"
|
||||
else
|
||||
AC_WARN(SSL support could not be enabled because openssl/ssl.h could not be found)
|
||||
fi
|
||||
])
|
||||
dnl module checking based on Hyb7's module checking code
|
||||
AC_DEFUN(AC_ENABLE_DYN,
|
||||
[
|
||||
AC_CHECK_FUNC(dlopen,, AC_CHECK_LIB(dl, dlopen,IRCDLIBS="$IRCDLIBS-ldl",AC_MSG_WARN(Dynamic linking is not enabled because dlopen was not found) AC_DEFINE(STATIC_LINKING)))
|
||||
hold_cflags=$CFLAGS
|
||||
CFLAGS="$CFLAGS -export-dynamic"
|
||||
AC_CACHE_CHECK(if we need the -export-dynamic flag, ac_cv_export_dynamic, [
|
||||
AC_TRY_LINK(, [int i];, ac_cv_export_dynamic=yes, ac_cv_export_dynamic=no)])
|
||||
if test "$ac_cv_export_dynamic" = "no"; then
|
||||
CFLAGS=$hold_cflags
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK(for compiler option to produce PIC,ac_cv_pic,[
|
||||
if test "$ac_cv_prog_gcc" = "yes"; then
|
||||
ac_cv_pic="-fPIC -DPIC -shared"
|
||||
else
|
||||
case `uname -s` in
|
||||
SunOS*[)]
|
||||
ac_cv_pic="-KPIC -DPIC -G"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
MODULEFLAGS=$ac_cv_pic
|
||||
AC_DEFINE(DYNAMIC_LINKING)
|
||||
])
|
||||
AC_DEFUN(AC_ENABLE_INET6,[
|
||||
AC_CACHE_CHECK(if your system has IPv6 support, ac_cv_ip6, [
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
int main() {
|
||||
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
|
||||
exit(1);
|
||||
exit(0);
|
||||
}
|
||||
], ac_cv_ip6=yes, ac_cv_ip6=no)
|
||||
])
|
||||
if test "$ac_cv_ip6" = "no"; then
|
||||
AC_MSG_WARN(Your system does not support IPv6 so it will not be enabled)
|
||||
else
|
||||
AC_DEFINE(INET6)
|
||||
fi
|
||||
])
|
||||
AC_CHECK_HEADER(sys/param.h,AC_DEFINE(PARAMH))
|
||||
AC_CHECK_HEADER(stdlib.h,AC_DEFINE(STDLIBH))
|
||||
AC_CHECK_HEADER(stddef.h,AC_DEFINE(STDDEFH))
|
||||
AC_CHECK_HEADER(sys/syslog.h,AC_DEFINE(SYSSYSLOGH))
|
||||
AC_CHECK_HEADER(unistd.h,AC_DEFINE(UNISTDH))
|
||||
AC_CHECK_HEADER(string.h,AC_DEFINE(STRINGH))
|
||||
AC_CHECK_HEADER(strings.h,AC_DEFINE(STRINGSH))
|
||||
AC_CHECK_HEADER(regex.h,AC_DEFINE(HAVE_REGEX),AC_INSTALL_REGEX)
|
||||
AC_CHECK_HEADER(openssl/ssl.h,openssl=yes)
|
||||
AC_CHECK_HEADER(malloc.h,AC_DEFINE(MALLOCH,<malloc.h>))
|
||||
AC_CHECK_HEADER(sys/rusage.h,AC_DEFINE(RUSAGEH))
|
||||
AC_CHECK_HEADER(glob.h,AC_DEFINE(GLOBH))
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_TYPE_SIZE_T
|
||||
AC_HEADER_TIME
|
||||
AC_STRUCT_TM
|
||||
AC_TYPE_UID_T
|
||||
unreal_CHECK_TYPE_SIZES
|
||||
|
||||
AC_CACHE_CHECK(what kind of nonblocking sockets you have, ac_cv_nonblocking,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/file.h>
|
||||
#include <signal.h>
|
||||
alarmed() {
|
||||
exit(1);
|
||||
}
|
||||
int main() {
|
||||
#ifdef O_NONBLOCK
|
||||
char b[12], x[32];
|
||||
int f, l = sizeof(x);
|
||||
f = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (f >= 0 && !(fcntl(f, F_SETFL, O_NONBLOCK))) {
|
||||
signal(SIGALRM, alarmed);
|
||||
alarm(3);
|
||||
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
||||
alarm(0);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
],ac_cv_nonblocking=O_NONBLOCK,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/file.h>
|
||||
#include <signal.h>
|
||||
alarmed() {
|
||||
exit(0);
|
||||
}
|
||||
int main() {
|
||||
#ifdef O_NDELAY
|
||||
char b[12], x[32];
|
||||
int f, l = sizeof(x);
|
||||
f = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (f >= 0 && !(fcntl(f, F_SETFL, O_NDELAY))) {
|
||||
signal(SIGALRM, alarmed);
|
||||
alarm(3);
|
||||
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
||||
alarm(0);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
}],ac_cv_nonblocking=O_NDELAY,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/file.h>
|
||||
#include <signal.h>
|
||||
alarmed() {
|
||||
exit(1);
|
||||
}
|
||||
int main() {
|
||||
#ifdef FIONBIO
|
||||
char b[12], x[32];
|
||||
int f, l = sizeof(x);
|
||||
f = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (f >= 0 && !(fcntl(f, F_SETFL, FIONBIO))) {
|
||||
signal(SIGALRM, alarmed);
|
||||
alarm(3);
|
||||
recvfrom(f, b, 12, 0, (struct sockaddr *)x, &l);
|
||||
alarm(0);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
], ac_cv_nonblocking=FIONBIO,ac_cv_nonblocking=none)])])])
|
||||
if test "$ac_cv_nonblocking" = "O_NONBLOCK"; then
|
||||
AC_DEFINE(NBLOCK_POSIX)
|
||||
elif test "$ac_cv_nonblocking" = "O_NDELAY"; then
|
||||
AC_DEFINE(NBLOCK_BSD)
|
||||
elif test "$ac_cv_nonblocking" = "FIONBIO"; then
|
||||
AC_DEFINE(NBLOCK_SYSV)
|
||||
fi
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_FUNC_SETPGRP
|
||||
AC_FUNC_SETVBUF_REVERSED
|
||||
AC_CACHE_CHECK(if we can set the core size to unlimited, ac_cv_force_core,[
|
||||
AC_TRY_RUN([
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
#include <unistd.h>
|
||||
int main() {
|
||||
struct rlimit corelim;
|
||||
corelim.rlim_cur = corelim.rlim_max = RLIM_INFINITY;
|
||||
if (setrlimit(RLIMIT_CORE, &corelim))
|
||||
exit(1);
|
||||
exit(0);
|
||||
}
|
||||
],ac_cv_force_core=yes,ac_cv_force_core=no)
|
||||
])
|
||||
if test "$ac_cv_force_core" = "yes"; then
|
||||
AC_DEFINE(FORCE_CORE)
|
||||
fi
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS(gettimeofday,AC_DEFINE(GETTIMEOFDAY),[AC_CHECK_FUNCS(lrand48,AC_DEFINE(LRADN48))])
|
||||
AC_CHECK_FUNCS(getrusage,AC_DEFINE(GETRUSAGE_2),[AC_CHECK_FUNCS(times,AC_DEFINE(TIMES_2))])
|
||||
AC_CHECK_FUNCS(setproctitle,AC_DEFINE(HAVE_SETPROCTITLE),[
|
||||
AC_CHECK_LIB(util,setproctitle,AC_DEFINE(HAVE_SETPROCTITLE) IRCDLIBS="$IRCDLIBS-lutil",[
|
||||
AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,AC_DEFINE(HAVE_PSSTRINGS),[
|
||||
AC_CHECK_FUNCS(pstat,AC_DEFINE(HAVE_PSTAT))
|
||||
])
|
||||
])
|
||||
])
|
||||
AC_CACHE_CHECK(what type of signals you have, ac_cv_sigtype, [
|
||||
AC_TRY_RUN([
|
||||
#include <signal.h>
|
||||
int main() {
|
||||
sigaction(SIGTERM, (struct sigaction *)0L, (struct sigaction *)0L);
|
||||
}
|
||||
], ac_cv_sigtype=POSIX, [
|
||||
AC_TRY_RUN([
|
||||
#include <signal.h>
|
||||
int calls = 0;
|
||||
void handler()
|
||||
{
|
||||
if (calls)
|
||||
return;
|
||||
calls++;
|
||||
kill(getpid(), SIGTERM);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
signal(SIGTERM, handler);
|
||||
kill(getpid(), SIGTERM);
|
||||
exit(0);
|
||||
}
|
||||
], ac_cv_sigtype=BSD,ac_cv_sigtype=SYSV)])])
|
||||
|
||||
if test "$ac_cv_sigtype" = "POSIX"; then
|
||||
AC_DEFINE(POSIX_SIGNALS)
|
||||
elif test "$ac_cv_sigtype" = "BSD"; then
|
||||
AC_DEFINE(BSD_RELIABLE_SIGNALS)
|
||||
else
|
||||
AC_DEFINE(SYSV_UNRELIABLE_SIGNALS)
|
||||
fi
|
||||
AC_CHECK_FUNCS(strtoken,,AC_DEFINE(NEED_STRTOKEN))
|
||||
AC_CHECK_FUNCS(strtok,,AC_DEFINE(NEED_STRTOK))
|
||||
AC_CHECK_FUNCS(strerror,,AC_DEFINE(NEED_STRERROR))
|
||||
AC_CHECK_FUNCS(index,,AC_DEFINE(NOINDEX))
|
||||
AC_CHECK_FUNCS(strtoul,,STRTOUL="strtoul.o")
|
||||
AC_CHECK_FUNCS(bcopy,,AC_DEFINE(NEED_BCOPY))
|
||||
AC_CHECK_FUNCS(bcmp,,AC_DEFINE(NEED_BCMP))
|
||||
AC_CHECK_FUNCS(bzero,,AC_DEFINE(NEED_BZERO))
|
||||
AC_CHECK_FUNCS(strcasecmp,AC_DEFINE(GOT_STRCASECMP))
|
||||
AC_CHECK_FUNCS(inet_addr,,AC_DEFINE(NEED_INET_ADDR))
|
||||
AC_CHECK_FUNCS(inet_ntoa,,AC_DEFINE(NEED_INET_NTOA))
|
||||
AC_CHECK_FUNCS(inet_netof,,AC_DEFINE(NEED_INET_NETOF))
|
||||
AC_SUBST(REGEX)
|
||||
AC_SUBST(STRTOUL)
|
||||
AC_SUBST(CRYPTOLIB)
|
||||
AC_SUBST(MODULEFLAGS)
|
||||
AC_ARG_WITH(listen, [ --with-listen=backlog Specify the listen backlog value],
|
||||
AC_DEFINE_UNQUOTED(LISTEN_SIZE,$withval),AC_DEFINE(LISTEN_SIZE,5))
|
||||
AC_ARG_WITH(nick-history, [ --with-nick-history=length Specify the length of the nickname history],
|
||||
AC_DEFINE_UNQUOTED(NICKNAMEHISTORYLENGTH,$withval), AC_DEFINE(NICKNAMEHISTORYLENGTH,2000))
|
||||
AC_ARG_WITH(sendq, [ --with-sendq=maxsendq Specify the max sendq for the server],
|
||||
AC_DEFINE_UNQUOTED(MAXSENDQLENGTH,$withval),AC_DEFINE(MAXSENDQLENGTH,3000000))
|
||||
AC_ARG_WITH(bufferpool, [ --with-bufferpool=size Specify the size of the buffer pool],
|
||||
AC_DEFINE_UNQUOTED(BUFFERPOOL,[($withval * MAXSENDQLENGTH)]),AC_DEFINE(BUFFERPOOL,[(9 * MAXSENDQLENGTH)]))
|
||||
|
||||
AC_ARG_WITH(hostname, [ --with-hostname=host Specify the local hostname of the server], AC_DEFINE_UNQUOTED(DOMAINNAME,"$withval"),AC_DEFINE_UNQUOTED(DOMAINNAME,"`hostname`"))
|
||||
AC_DEFINE_UNQUOTED(MYOSNAME,"`uname -a`")
|
||||
AC_ARG_WITH(permissions, [ --with-permissions=permissions Specify the default permissions for
|
||||
configuration files], AC_DEFINE_UNQUOTED(DEFAULT_PERMISSIONS,$withval), AC_DEFINE(DEFAULT_PERMISSIONS, 0600))
|
||||
AC_ARG_WITH(dpath, [ --with-dpath=path Specify the path where configuration files are stored],
|
||||
AC_DEFINE_UNQUOTED(DPATH, "$withval") IRCDDIR="$withval", AC_DEFINE_UNQUOTED(DPATH,"`pwd`") IRCDDIR="`pwd`")
|
||||
AC_ARG_WITH(fd-setsize, [ --with-fd-setsize=size Specify the max file descriptors to use],
|
||||
ac_fd=$withval, ac_fd=1024)
|
||||
AC_DEFINE_UNQUOTED(MAXCONNECTIONS, $ac_fd)
|
||||
AC_ARG_WITH(spath, [ --with-spath Specify the location of the executable],
|
||||
AC_DEFINE_UNQUOTED(SPATH,"$withval") BINDIR="$withval",AC_DEFINE_UNQUOTED(SPATH,"`pwd`/src/ircd") BINDIR="`pwd`/src/ircd")
|
||||
AC_ARG_ENABLE(nospoof, [ --enable-nospoof Enable spoofing protection], AC_DEFINE(NOSPOOF))
|
||||
AC_ARG_ENABLE(hub, [ --enable-hub Compile as a hub server], AC_DEFINE(HUB))
|
||||
AC_ARG_ENABLE(ssl, [ --enable-ssl Enable client and server SSL connections ], AC_ENABLE_SSL)
|
||||
AC_ARG_ENABLE(dynamic-linking, [ --enable-dynamic-linking Make the IRCd dynamically link shared objects rather than statically ], AC_ENABLE_DYN, AC_DEFINE(STATIC_LINKING))
|
||||
AC_ARG_ENABLE(inet6, [ --enable-inet6 Make the IRCd support IPv6 ], AC_ENABLE_INET6)
|
||||
AC_ARG_ENABLE(standardthreads, [ --enable-standardthreads Use standard threads ], USESTDTHREAD="1")
|
||||
AC_SUBST(IRCDDIR)
|
||||
AC_SUBST(BINDIR)
|
||||
ACX_PTHREAD
|
||||
CC="$PTHREAD_CC"
|
||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||
IRCDLIBS="$IRCDLIBS $PTHREAD_LIBS"
|
||||
AC_MSG_CHECKING(if FD_SETSIZE is large enough to allow $ac_fd file descriptors)
|
||||
AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
int main() {
|
||||
if (FD_SETSIZE >= $ac_fd)
|
||||
exit(0);
|
||||
exit(1);
|
||||
}
|
||||
], AC_MSG_RESULT(yes), FD_SETSIZE="-DFD_SETSIZE=$ac_fd" AC_MSG_RESULT(no))
|
||||
AC_SUBST(FD_SETSIZE)
|
||||
case "${host_cpu}-${host_os}" in
|
||||
SunOS*5.*)
|
||||
CFLAGS="$CFLAGS -DSOL20"
|
||||
;;
|
||||
*solaris*)
|
||||
CFLAGS="$CFLAGS -D_SOLARIS"
|
||||
IRCDLIBS="$IRCDLIBS -lresolv "
|
||||
;;
|
||||
*AmigaOS*68020*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68020"
|
||||
;;
|
||||
*AmigaOS*68030*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68030"
|
||||
;;
|
||||
*AmigaOS*68040*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68040"
|
||||
;;
|
||||
*AmigaOS*68060*)
|
||||
CFLAGS="$CFLAGS -D_AMIGA -m68060"
|
||||
;;
|
||||
esac
|
||||
AC_OUTPUT(Makefile src/modules/Makefile unreal)
|
||||
chmod 0700 unreal
|
||||
@@ -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,343 +0,0 @@
|
||||
# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*-
|
||||
# serial 12 (pkg-config-0.29.2)
|
||||
|
||||
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||
dnl
|
||||
dnl This program is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2 of the License, or
|
||||
dnl (at your option) any later version.
|
||||
dnl
|
||||
dnl This program is distributed in the hope that it will be useful, but
|
||||
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with this program; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
dnl 02111-1307, USA.
|
||||
dnl
|
||||
dnl As a special exception to the GNU General Public License, if you
|
||||
dnl distribute this file as part of a program that contains a
|
||||
dnl configuration script generated by Autoconf, you may include it under
|
||||
dnl the same distribution terms that you use for the rest of that
|
||||
dnl program.
|
||||
|
||||
dnl PKG_PREREQ(MIN-VERSION)
|
||||
dnl -----------------------
|
||||
dnl Since: 0.29
|
||||
dnl
|
||||
dnl Verify that the version of the pkg-config macros are at least
|
||||
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
|
||||
dnl installed version of pkg-config, this checks the developer's version
|
||||
dnl of pkg.m4 when generating configure.
|
||||
dnl
|
||||
dnl To ensure that this macro is defined, also add:
|
||||
dnl m4_ifndef([PKG_PREREQ],
|
||||
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
|
||||
dnl
|
||||
dnl See the "Since" comment for each macro you use to see what version
|
||||
dnl of the macros you require.
|
||||
m4_defun([PKG_PREREQ],
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.2])
|
||||
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||
])dnl PKG_PREREQ
|
||||
|
||||
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||
dnl ----------------------------------
|
||||
dnl Since: 0.16
|
||||
dnl
|
||||
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
|
||||
dnl first found in the path. Checks that the version of pkg-config found
|
||||
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
|
||||
dnl used since that's the first version where most current features of
|
||||
dnl pkg-config existed.
|
||||
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
|
||||
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
|
||||
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
|
||||
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
|
||||
|
||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||
fi
|
||||
if test -n "$PKG_CONFIG"; then
|
||||
_pkg_min_version=m4_default([$1], [0.9.0])
|
||||
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
PKG_CONFIG=""
|
||||
fi
|
||||
fi[]dnl
|
||||
])dnl PKG_PROG_PKG_CONFIG
|
||||
|
||||
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
dnl -------------------------------------------------------------------
|
||||
dnl Since: 0.18
|
||||
dnl
|
||||
dnl Check to see whether a particular set of modules exists. Similar to
|
||||
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||
dnl
|
||||
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
dnl only at the first occurrence in configure.ac, so if the first place
|
||||
dnl it's called might be skipped (such as if it is within an "if", you
|
||||
dnl have to call PKG_CHECK_EXISTS manually
|
||||
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
||||
m4_default([$2], [:])
|
||||
m4_ifvaln([$3], [else
|
||||
$3])dnl
|
||||
fi])
|
||||
|
||||
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||
dnl ---------------------------------------------
|
||||
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
|
||||
dnl pkg_failed based on the result.
|
||||
m4_define([_PKG_CONFIG],
|
||||
[if test -n "$$1"; then
|
||||
pkg_cv_[]$1="$$1"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
PKG_CHECK_EXISTS([$3],
|
||||
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes ],
|
||||
[pkg_failed=yes])
|
||||
else
|
||||
pkg_failed=untried
|
||||
fi[]dnl
|
||||
])dnl _PKG_CONFIG
|
||||
|
||||
dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||
dnl ---------------------------
|
||||
dnl Internal check to see if pkg-config supports short errors.
|
||||
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||
_pkg_short_errors_supported=yes
|
||||
else
|
||||
_pkg_short_errors_supported=no
|
||||
fi[]dnl
|
||||
])dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||
|
||||
|
||||
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||
dnl [ACTION-IF-NOT-FOUND])
|
||||
dnl --------------------------------------------------------------
|
||||
dnl Since: 0.4.0
|
||||
dnl
|
||||
dnl Note that if there is a possibility the first call to
|
||||
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||
AC_DEFUN([PKG_CHECK_MODULES],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||
|
||||
pkg_failed=no
|
||||
AC_MSG_CHECKING([for $2])
|
||||
|
||||
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||
|
||||
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
|
||||
and $1[]_LIBS to avoid the need to call pkg-config.
|
||||
See the pkg-config man page for more details.])
|
||||
|
||||
if test $pkg_failed = yes; then
|
||||
AC_MSG_RESULT([no])
|
||||
_PKG_SHORT_ERRORS_SUPPORTED
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||
else
|
||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||
|
||||
m4_default([$4], [AC_MSG_ERROR(
|
||||
[Package requirements ($2) were not met:
|
||||
|
||||
$$1_PKG_ERRORS
|
||||
|
||||
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
||||
installed software in a non-standard prefix.
|
||||
|
||||
_PKG_TEXT])[]dnl
|
||||
])
|
||||
elif test $pkg_failed = untried; then
|
||||
AC_MSG_RESULT([no])
|
||||
m4_default([$4], [AC_MSG_FAILURE(
|
||||
[The pkg-config script could not be found or is too old. Make sure it
|
||||
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||
path to pkg-config.
|
||||
|
||||
_PKG_TEXT
|
||||
|
||||
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||
])
|
||||
else
|
||||
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||
AC_MSG_RESULT([yes])
|
||||
$3
|
||||
fi[]dnl
|
||||
])dnl PKG_CHECK_MODULES
|
||||
|
||||
|
||||
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||
dnl [ACTION-IF-NOT-FOUND])
|
||||
dnl ---------------------------------------------------------------------
|
||||
dnl Since: 0.29
|
||||
dnl
|
||||
dnl Checks for existence of MODULES and gathers its build flags with
|
||||
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
|
||||
dnl and VARIABLE-PREFIX_LIBS from --libs.
|
||||
dnl
|
||||
dnl Note that if there is a possibility the first call to
|
||||
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
|
||||
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
|
||||
dnl configure.ac.
|
||||
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
_save_PKG_CONFIG=$PKG_CONFIG
|
||||
PKG_CONFIG="$PKG_CONFIG --static"
|
||||
PKG_CHECK_MODULES($@)
|
||||
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
|
||||
])dnl PKG_CHECK_MODULES_STATIC
|
||||
|
||||
|
||||
dnl PKG_INSTALLDIR([DIRECTORY])
|
||||
dnl -------------------------
|
||||
dnl Since: 0.27
|
||||
dnl
|
||||
dnl Substitutes the variable pkgconfigdir as the location where a module
|
||||
dnl should install pkg-config .pc files. By default the directory is
|
||||
dnl $libdir/pkgconfig, but the default can be changed by passing
|
||||
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||
dnl parameter.
|
||||
AC_DEFUN([PKG_INSTALLDIR],
|
||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
|
||||
m4_pushdef([pkg_description],
|
||||
[pkg-config installation directory @<:@]pkg_default[@:>@])
|
||||
AC_ARG_WITH([pkgconfigdir],
|
||||
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
|
||||
[with_pkgconfigdir=]pkg_default)
|
||||
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
|
||||
m4_popdef([pkg_default])
|
||||
m4_popdef([pkg_description])
|
||||
])dnl PKG_INSTALLDIR
|
||||
|
||||
|
||||
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
|
||||
dnl --------------------------------
|
||||
dnl Since: 0.27
|
||||
dnl
|
||||
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||
dnl module should install arch-independent pkg-config .pc files. By
|
||||
dnl default the directory is $datadir/pkgconfig, but the default can be
|
||||
dnl changed by passing DIRECTORY. The user can override through the
|
||||
dnl --with-noarch-pkgconfigdir parameter.
|
||||
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
|
||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
|
||||
m4_pushdef([pkg_description],
|
||||
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
|
||||
AC_ARG_WITH([noarch-pkgconfigdir],
|
||||
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
|
||||
[with_noarch_pkgconfigdir=]pkg_default)
|
||||
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
|
||||
m4_popdef([pkg_default])
|
||||
m4_popdef([pkg_description])
|
||||
])dnl PKG_NOARCH_INSTALLDIR
|
||||
|
||||
|
||||
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
|
||||
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
dnl -------------------------------------------
|
||||
dnl Since: 0.28
|
||||
dnl
|
||||
dnl Retrieves the value of the pkg-config variable for the given module.
|
||||
AC_DEFUN([PKG_CHECK_VAR],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
|
||||
|
||||
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
|
||||
AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||
|
||||
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||
])dnl PKG_CHECK_VAR
|
||||
|
||||
dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
|
||||
dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
|
||||
dnl [DESCRIPTION], [DEFAULT])
|
||||
dnl ------------------------------------------
|
||||
dnl
|
||||
dnl Prepare a "--with-" configure option using the lowercase
|
||||
dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
|
||||
dnl PKG_CHECK_MODULES in a single macro.
|
||||
AC_DEFUN([PKG_WITH_MODULES],
|
||||
[
|
||||
m4_pushdef([with_arg], m4_tolower([$1]))
|
||||
|
||||
m4_pushdef([description],
|
||||
[m4_default([$5], [build with ]with_arg[ support])])
|
||||
|
||||
m4_pushdef([def_arg], [m4_default([$6], [auto])])
|
||||
m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
|
||||
m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
|
||||
|
||||
m4_case(def_arg,
|
||||
[yes],[m4_pushdef([with_without], [--without-]with_arg)],
|
||||
[m4_pushdef([with_without],[--with-]with_arg)])
|
||||
|
||||
AC_ARG_WITH(with_arg,
|
||||
AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
|
||||
[AS_TR_SH([with_]with_arg)=def_arg])
|
||||
|
||||
AS_CASE([$AS_TR_SH([with_]with_arg)],
|
||||
[yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
|
||||
[auto],[PKG_CHECK_MODULES([$1],[$2],
|
||||
[m4_n([def_action_if_found]) $3],
|
||||
[m4_n([def_action_if_not_found]) $4])])
|
||||
|
||||
m4_popdef([with_arg])
|
||||
m4_popdef([description])
|
||||
m4_popdef([def_arg])
|
||||
|
||||
])dnl PKG_WITH_MODULES
|
||||
|
||||
dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
|
||||
dnl [DESCRIPTION], [DEFAULT])
|
||||
dnl -----------------------------------------------
|
||||
dnl
|
||||
dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
|
||||
dnl check._[VARIABLE-PREFIX] is exported as make variable.
|
||||
AC_DEFUN([PKG_HAVE_WITH_MODULES],
|
||||
[
|
||||
PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
|
||||
|
||||
AM_CONDITIONAL([HAVE_][$1],
|
||||
[test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
|
||||
])dnl PKG_HAVE_WITH_MODULES
|
||||
|
||||
dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
|
||||
dnl [DESCRIPTION], [DEFAULT])
|
||||
dnl ------------------------------------------------------
|
||||
dnl
|
||||
dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
|
||||
dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
|
||||
dnl and preprocessor variable.
|
||||
AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
|
||||
[
|
||||
PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
|
||||
|
||||
AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
|
||||
[AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
|
||||
])dnl PKG_HAVE_DEFINE_WITH_MODULES
|
||||
@@ -1,475 +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 downloading ... 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"
|
||||
|
||||
dnl Finally, choose the cURL implementation of url.c
|
||||
URL="url_curl.o"
|
||||
],[
|
||||
dnl Choose UnrealIRCds internal implementation of url.c
|
||||
URL="url_unreal.o"
|
||||
]) dnl AS_IF(enable_curl)
|
||||
AC_SUBST(URL)
|
||||
])
|
||||
|
||||
dnl the following 2 macros are based on CHECK_SSL by Mark Ethan Trostler <trostler@juniper.net>
|
||||
|
||||
AC_DEFUN([CHECK_SSL],
|
||||
[
|
||||
AC_ARG_ENABLE(ssl,
|
||||
[AC_HELP_STRING([--enable-ssl=],[enable ssl will check /usr/local/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
|
||||
if test -d "$ssldir/lib64" ; then
|
||||
LDFLAGS="$LDFLAGS -L$ssldir/lib64";
|
||||
else
|
||||
LDFLAGS="$LDFLAGS -L$ssldir/lib";
|
||||
fi
|
||||
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_SIGALGS_LIST],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set1_sigalgs_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_sigalgs_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_SIGALGS_LIST], [], [Define if ssl library has SSL_CTX_set1_sigalgs_list])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
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_SET1_GROUPS_LIST],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_CTX_set1_groups_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_groups_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_GROUPS_LIST], [], [Define if ssl library has SSL_CTX_set1_groups_list])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_SSL_GET_NEGOTIATED_GROUP],
|
||||
[
|
||||
AC_MSG_CHECKING([for SSL_get_negotiated_group in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/ssl.h>],
|
||||
[SSL *ssl = NULL; SSL_get_negotiated_group(ssl);],
|
||||
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_GET_NEGOTIATED_GROUP], [], [Define if ssl library has SSL_get_negotiated_group])
|
||||
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
|
||||
])
|
||||
|
||||
AC_DEFUN([CHECK_X509_check_host],
|
||||
[
|
||||
AC_MSG_CHECKING([for X509_check_host in SSL library])
|
||||
AC_LANG_PUSH(C)
|
||||
SAVE_LIBS="$LIBS"
|
||||
LIBS="$LIBS $CRYPTOLIB"
|
||||
AC_TRY_LINK([#include <openssl/x509v3.h>],
|
||||
[X509_check_host(NULL, NULL, 0, 0, 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_check_host], [], [Define if ssl library has X509_check_host])
|
||||
OPENSSL_HOSTNAME_VALIDATION_OBJ=""
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
OPENSSL_HOSTNAME_VALIDATION_OBJ="openssl_hostname_validation.o"
|
||||
fi
|
||||
AC_SUBST(OPENSSL_HOSTNAME_VALIDATION_OBJ)
|
||||
])
|
||||
|
||||
dnl For geoip-api-c
|
||||
AC_DEFUN([CHECK_GEOIP_CLASSIC],
|
||||
[
|
||||
AC_ARG_ENABLE(geoip_classic,
|
||||
[AC_HELP_STRING([--enable-geoip-classic=no/yes],[enable GeoIP Classic support])],
|
||||
[enable_geoip_classic=$enableval],
|
||||
[enable_geoip_classic=no])
|
||||
|
||||
AS_IF([test "x$enable_geoip_classic" = "xyes"],
|
||||
[
|
||||
dnl First see if the system provides it
|
||||
has_system_geoip_classic="no"
|
||||
PKG_CHECK_MODULES([GEOIP_CLASSIC], [geoip >= 1.6.0],
|
||||
[has_system_geoip_classic=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libGeoIP.*])],
|
||||
[has_system_geoip_classic=no])
|
||||
|
||||
dnl Otherwise fallback to our own..
|
||||
AS_IF([test "$has_system_geoip_classic" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW GEOIP LIBRARY RELEASE!
|
||||
geoip_classic_version="1.6.12"
|
||||
AC_MSG_RESULT(extracting GeoIP Classic library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf GeoIP-$geoip_classic_version geoip-classic
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz geoip-classic.tar.gz
|
||||
else
|
||||
cp geoip-classic.tar.gz geoip-classic.tar.gz.bak
|
||||
gunzip -f geoip-classic.tar.gz
|
||||
cp geoip-classic.tar.gz.bak geoip-classic.tar.gz
|
||||
tar xf geoip-classic.tar
|
||||
fi
|
||||
AC_MSG_RESULT(configuring GeoIP Classic library)
|
||||
cd GeoIP-$geoip_classic_version
|
||||
save_cflags="$CFLAGS"
|
||||
save_ldflags="$LDFLAGS"
|
||||
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
|
||||
LDFLAGS="$HARDEN_LIB_LDFLAGS"
|
||||
export CFLAGS LDFLAGS
|
||||
./configure --prefix=$cur_dir/extras/geoip-classic --libdir=$PRIVATELIBDIR --enable-shared --disable-static || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
LDFLAGS="$save_ldflags"
|
||||
AC_MSG_RESULT(compiling GeoIP Classic library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing GeoIP Classic library)
|
||||
rm -f "$PRIVATELIBDIR/"libGeoIP.so*
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
dnl Try pkg-config first...
|
||||
AS_IF([test -n "$ac_cv_path_PKGCONFIG"],
|
||||
[GEOIP_CLASSIC_LIBS="`$ac_cv_path_PKGCONFIG --libs geoip.pc`"
|
||||
GEOIP_CLASSIC_CFLAGS="`$ac_cv_path_PKGCONFIG --cflags geoip.pc`"])
|
||||
dnl In case the system does not have pkg-config, fallback to hardcoded settings...
|
||||
AS_IF([test -z "$GEOIP_CLASSIC_LIBS"],
|
||||
[GEOIP_CLASSIC_LIBS="-L$PRIVATELIBDIR -lGeoIP"
|
||||
GEOIP_CLASSIC_CFLAGS="-I$cur_dir/extras/geoip-classic/include"])
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
AC_SUBST(GEOIP_CLASSIC_LIBS)
|
||||
AC_SUBST(GEOIP_CLASSIC_CFLAGS)
|
||||
|
||||
GEOIP_CLASSIC_OBJECTS="geoip_classic.so"
|
||||
AC_SUBST(GEOIP_CLASSIC_OBJECTS)
|
||||
AC_DEFINE([GEOIP_ENGINE], ["geoip_classic"], [Classic GeoIP engine])
|
||||
]) dnl AS_IF(enable_geoip_classic)
|
||||
])
|
||||
-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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
badword channel { word "pussy"; };
|
||||
badword channel { word "fuck"; };
|
||||
badword channel { word "whore"; };
|
||||
badword channel { word "slut"; };
|
||||
badword channel { word "shit"; };
|
||||
badword channel { word "asshole"; };
|
||||
badword channel { word "bitch"; };
|
||||
badword channel { word "cunt"; };
|
||||
badword channel { word "vagina"; };
|
||||
badword channel { word "penis"; };
|
||||
badword channel { word "jackass"; };
|
||||
badword channel { word "*fucker*"; };
|
||||
badword channel { word "faggot"; };
|
||||
badword channel { word "fag"; };
|
||||
badword channel { word "horny"; };
|
||||
badword channel { word "gay"; };
|
||||
badword channel { word "dickhead"; };
|
||||
badword channel { word "sonuvabitch"; };
|
||||
badword channel { word "*fuck*"; };
|
||||
badword channel { word "boobs"; };
|
||||
badword channel { word "tits"; };
|
||||
@@ -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 badword messages@tspre.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
This is some filling space, scroll down to see the words
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
badword message { word "pussy"; };
|
||||
badword message { word "fuck"; };
|
||||
badword message { word "whore"; };
|
||||
badword message { word "slut"; };
|
||||
badword message { word "shit"; };
|
||||
badword message { word "asshole"; };
|
||||
badword message { word "bitch"; };
|
||||
badword message { word "cunt"; };
|
||||
badword message { word "vagina"; };
|
||||
badword message { word "penis"; };
|
||||
badword message { word "jackass"; };
|
||||
badword message { word "*fucker*"; };
|
||||
badword message { word "faggot"; };
|
||||
badword message { word "fag"; };
|
||||
badword message { word "horny"; };
|
||||
badword message { word "gay"; };
|
||||
badword message { word "dickhead"; };
|
||||
badword message { word "sonuvabitch"; };
|
||||
badword message { word "*fuck*"; };
|
||||
badword message { word "boobs"; };
|
||||
badword message { word "tits"; };
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
DATE=`date +%Y%m%d-%H%M%S`
|
||||
HOSTNAME=`hostname`
|
||||
USERNAME=`whoami`
|
||||
BUGREPORT=bugreport.$HOSTNAME.$USERNAME.$DATE.txt
|
||||
|
||||
echo "UnrealIRCd Bug Report" > $BUGREPORT
|
||||
echo "---------------------" >> $BUGREPORT
|
||||
echo "" >> $BUGREPORT
|
||||
echo "Made at `date`">> $BUGREPORT
|
||||
echo "`src/ircd -v`" >> $BUGREPORT
|
||||
echo "Operating system:" >> $BUGREPORT
|
||||
ls -l *core* >> $BUGREPORT
|
||||
uname -a >> $BUGREPORT
|
||||
gdb -x .bugreport.gdb src/ircd *core* >> $BUGREPORT 2>&1
|
||||
|
||||
cat |sendmail -t << __EOF__&
|
||||
To: bugs-unreal@tspre.org
|
||||
From: autobugreport@unrealircd.com
|
||||
Subject: Bug report - $BUGREPORT
|
||||
|
||||
`cat $BUGREPORT`
|
||||
|
||||
.
|
||||
__EOF__
|
||||
Vendored
+1360
File diff suppressed because it is too large
Load Diff
Vendored
+1375
File diff suppressed because it is too large
Load Diff
-994
@@ -1,994 +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], [6.2.6], [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 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=["6"]
|
||||
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=["2"]
|
||||
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=["6"]
|
||||
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 Save CFLAGS, use this when building the libraries like c-ares
|
||||
orig_cflags="$CFLAGS"
|
||||
|
||||
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=3], [HARDEN_CFLAGS="$HARDEN_CFLAGS -D_FORTIFY_SOURCE=3"])
|
||||
|
||||
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 (x64)
|
||||
check_cc_flag([-fcf-protection], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fcf-protection"])
|
||||
|
||||
# Similar to above but for arm64
|
||||
check_cc_flag([-mbranch-protection=standard], [HARDEN_CFLAGS="$HARDEN_CFLAGS -mbranch-protection=standard"])
|
||||
|
||||
# Since we have moved from name[1] to name[], setting this should help bounds checking:
|
||||
check_cc_flag([-fstrict-flex-arrays=3], [HARDEN_CFLAGS="$HARDEN_CFLAGS -fstrict-flex-arrays=3"])
|
||||
|
||||
# This zeroes out variables that COULD be accessed before being set.
|
||||
# We are generally very careful about this in our code, but 3rd party
|
||||
# modules are not always so careful. And still useful in case we ourselves
|
||||
# screw up.
|
||||
check_cc_flag([-ftrivial-auto-var-init=zero], [HARDEN_CFLAGS="$HARDEN_CFLAGS -ftrivial-auto-var-init=zero"])
|
||||
|
||||
# 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])
|
||||
|
||||
# Hardening flags to be used for libraries
|
||||
# These are the same of what we have, except we leave out -fstrict-flex-arrays=3
|
||||
# since that would break in some cases of code, and we don't control the libs..
|
||||
HARDEN_LIB_CFLAGS=$(echo "$HARDEN_CFLAGS" | sed 's/-fstrict-flex-arrays=3//')
|
||||
HARDEN_LIB_LDFLAGS="$HARDEN_LDFLAGS"
|
||||
|
||||
# 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 == ADD THESE WARNINGS ==
|
||||
|
||||
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"])
|
||||
check_cc_flag([-Wformat-nonliteral], [CFLAGS="$CFLAGS -Wformat-nonliteral"])
|
||||
|
||||
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"])
|
||||
|
||||
check_cc_flag([-Wparentheses], [CFLAGS="$CFLAGS -Wparentheses"])
|
||||
|
||||
dnl == REMOVE THESE WARNINGS ==
|
||||
|
||||
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"])
|
||||
|
||||
check_cc_flag([-Wformat-overflow], [CFLAGS="$CFLAGS -Wno-format-overflow"])
|
||||
|
||||
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 warns about all our hook calls - RunHook() and others
|
||||
check_cc_flag([-Wdeprecated-non-prototype], [CFLAGS="$CFLAGS -Wno-deprecated-non-prototype"])
|
||||
|
||||
dnl This warns about const char hexchars[16] = "0123456789abcdef";
|
||||
check_cc_flag([-Wunterminated-string-initialization], [CFLAGS="$CFLAGS -Wno-unterminated-string-initialization"])
|
||||
|
||||
dnl Yeah this old clang version is a bit problematic
|
||||
dnl (ships in Ubuntu 16.04 for example)
|
||||
dnl -Wtautological-compare has false positives
|
||||
dnl -Wno-pragmas is needed, despite -Wno-unknown-warning-option
|
||||
AS_IF([$CC --version | grep -q "clang version 3."],
|
||||
[CFLAGS="$CFLAGS -Wno-tautological-compare -Wno-pragmas"])
|
||||
|
||||
dnl This one MUST be LAST!!
|
||||
dnl It disables -Wsomeunknownoption being an error. Which is needed for
|
||||
dnl the pragma's in individual files to selectively disable some warnings
|
||||
dnl on clang/gcc (that may exist in eg gcc but not in clang or vice versa).
|
||||
check_cc_flag([-Wpragmas], [no_pragmas=1],[no_pragmas=0])
|
||||
check_cc_flag([-Wunknown-warning-option], [unknown_warning_option=1], [unknown_warning_option=0])
|
||||
|
||||
if test "$unknown_warning_option" = "1"; then
|
||||
dnl This is the best option
|
||||
CFLAGS="$CFLAGS -Wno-unknown-warning-option"
|
||||
else
|
||||
if test "$no_pragmas" = "1"; then
|
||||
dnl This is a fallback needed for older gcc/clang, it also
|
||||
dnl disables several other useful warnings/errors related
|
||||
dnl to pragma's unfortunately.
|
||||
CFLAGS="$CFLAGS -Wno-pragmas"
|
||||
fi
|
||||
fi
|
||||
|
||||
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(void) {
|
||||
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 $HARDEN_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>
|
||||
#include <stdlib.h>
|
||||
int main(void) {
|
||||
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_MSG_CHECKING([if you have getsockopt TCP_INFO])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <sys/socket.h>]],
|
||||
[[
|
||||
socklen_t optlen = sizeof(struct tcp_info);
|
||||
struct tcp_info ti;
|
||||
ti.tcpi_rtt = 0;
|
||||
ti.tcpi_rttvar = 0;
|
||||
#if defined(__FreeBSD__)
|
||||
ti.__tcpi_pmtu = 0;
|
||||
#else
|
||||
ti.tcpi_pmtu = 0;
|
||||
#endif
|
||||
ti.tcpi_snd_cwnd = 0;
|
||||
ti.tcpi_snd_mss = 0;
|
||||
ti.tcpi_rcv_mss = 0;
|
||||
getsockopt(0, IPPROTO_TCP, TCP_INFO, &ti, &optlen);
|
||||
]])],
|
||||
[AC_DEFINE(HAVE_TCP_INFO, 1, [Have getsockopt TCP_INFO])
|
||||
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
||||
|
||||
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(strlncpy,
|
||||
AC_DEFINE([HAVE_STRLNCPY], [], [Define if you have strlncpy]))
|
||||
|
||||
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_CHECK_FUNCS(strnlen,AC_DEFINE([HAVE_STRNLEN], [], [Define if you have strnlen]))
|
||||
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"])
|
||||
|
||||
AC_ARG_WITH(controlfile, [AS_HELP_STRING([--with-controlfile=path],[Specify the path of the control socket])],
|
||||
[AC_DEFINE_UNQUOTED([CONTROLFILE], ["$withval"], [Define the path of the control socket])
|
||||
CONTROLFILE="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([CONTROLFILE], ["$HOME/unrealircd/data/unrealircd.ctl"], [Define the path of the control socket])
|
||||
CONTROLFILE="$HOME/unrealircd/data/unrealircd.ctl"])
|
||||
|
||||
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])
|
||||
# Create the private library directory now with restrictive permissions.
|
||||
# This must happen here rather than in the Makefile because the bundled
|
||||
# libraries are installed into it during configure. It must also work when
|
||||
# configure is run directly without ./Config having created it first.
|
||||
mkdir -p "$PRIVATELIBDIR" && chmod 0700 "$PRIVATELIBDIR"
|
||||
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(CONTROLFILE)
|
||||
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_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([--with-system-argon2], [Use system argon2 instead of bundled version. Normally we prefer the one shipped with unrealircd because it is much faster])], [], [with_system_argon2=no])
|
||||
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])
|
||||
AC_ARG_WITH(system-jansson, [AS_HELP_STRING([--without-system-jansson], [Use bundled version instead of system jansson. Normally autodetected via pkg-config.])], [], [with_system_jansson=yes])
|
||||
CHECK_SSL
|
||||
CHECK_SSL_CTX_SET1_SIGALGS_LIST
|
||||
CHECK_SSL_CTX_SET1_CURVES_LIST
|
||||
CHECK_SSL_CTX_SET1_GROUPS_LIST
|
||||
CHECK_SSL_GET_NEGOTIATED_GROUP
|
||||
CHECK_SSL_CTX_SET_MIN_PROTO_VERSION
|
||||
CHECK_SSL_CTX_SET_SECURITY_LEVEL
|
||||
CHECK_ASN1_TIME_diff
|
||||
CHECK_X509_get0_notAfter
|
||||
CHECK_X509_check_host
|
||||
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.36,[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.47"
|
||||
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
|
||||
save_cflags="$CFLAGS"
|
||||
save_ldflags="$LDFLAGS"
|
||||
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
|
||||
LDFLAGS="$HARDEN_LIB_LDFLAGS"
|
||||
export CFLAGS LDFLAGS
|
||||
./configure --enable-jit --enable-shared --prefix=$cur_dir/extras/pcre2 --libdir=$PRIVATELIBDIR || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
LDFLAGS="$save_ldflags"
|
||||
AC_MSG_RESULT(compiling PCRE2 regex library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing PCRE2 regex library)
|
||||
rm -f "$PRIVATELIBDIR/"libpcre2*
|
||||
$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="20190702"
|
||||
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.tar.gz
|
||||
else
|
||||
cp argon2.tar.gz argon2.tar.gz.bak
|
||||
gunzip -f argon2.tar.gz
|
||||
cp argon2.tar.gz.bak argon2.tar.gz
|
||||
tar xf argon2.tar
|
||||
fi
|
||||
save_cflags="$CFLAGS"
|
||||
save_ldflags="$LDFLAGS"
|
||||
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
|
||||
LDFLAGS="$HARDEN_LIB_LDFLAGS"
|
||||
export CFLAGS LDFLAGS
|
||||
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/ || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
LDFLAGS="$save_ldflags"
|
||||
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.22"
|
||||
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"
|
||||
save_ldflags="$LDFLAGS"
|
||||
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
|
||||
LDFLAGS="$HARDEN_LIB_LDFLAGS"
|
||||
export CFLAGS LDFLAGS
|
||||
./configure --prefix=$cur_dir/extras/sodium --libdir=$PRIVATELIBDIR --enable-shared --disable-static --enable-opt || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
LDFLAGS="$save_ldflags"
|
||||
AC_MSG_RESULT(compiling sodium resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing sodium resolver library)
|
||||
rm -f "$PRIVATELIBDIR/"libsodium*
|
||||
$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!
|
||||
cares_version="1.34.6"
|
||||
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"
|
||||
save_ldflags="$LDFLAGS"
|
||||
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
|
||||
LDFLAGS="$HARDEN_LIB_LDFLAGS"
|
||||
export CFLAGS LDFLAGS
|
||||
./configure --prefix=$cur_dir/extras/c-ares --libdir=$PRIVATELIBDIR --enable-shared --disable-tests || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
LDFLAGS="$save_ldflags"
|
||||
AC_MSG_RESULT(compiling c-ares resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing c-ares resolver library)
|
||||
rm -f "$PRIVATELIBDIR/"libcares*
|
||||
$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
|
||||
])
|
||||
|
||||
dnl Use system jansson when available, unless --without-system-jansson
|
||||
has_system_jansson="no"
|
||||
AS_IF([test "x$with_system_jansson" = "xyes"],[
|
||||
PKG_CHECK_MODULES([JANSSON], [jansson >= 2.0.0],[has_system_jansson=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libjansson*])],[has_system_jansson=no])])
|
||||
|
||||
AS_IF([test "$has_system_jansson" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW JANSSON RELEASE!
|
||||
jansson_version="2.15.0"
|
||||
AC_MSG_RESULT(extracting jansson library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
dnl remove old jansson directory to force a recompile...
|
||||
dnl and remove its installation prefix just to clean things up.
|
||||
rm -rf jansson-$jansson_version jansson
|
||||
if test "x$ac_cv_path_GUNZIP" = "x" ; then
|
||||
tar xfz jansson.tar.gz
|
||||
else
|
||||
cp jansson.tar.gz jansson.tar.gz.bak
|
||||
gunzip -f jansson.tar.gz
|
||||
cp jansson.tar.gz.bak jansson.tar.gz
|
||||
tar xf jansson.tar
|
||||
fi
|
||||
AC_MSG_RESULT(compiling jansson library)
|
||||
cd jansson-$jansson_version
|
||||
save_cflags="$CFLAGS"
|
||||
save_ldflags="$LDFLAGS"
|
||||
CFLAGS="$orig_cflags $HARDEN_LIB_CFLAGS"
|
||||
LDFLAGS="$HARDEN_LIB_LDFLAGS"
|
||||
export CFLAGS LDFLAGS
|
||||
./configure --prefix=$cur_dir/extras/jansson --libdir=$PRIVATELIBDIR --enable-shared --disable-static || exit 1
|
||||
CFLAGS="$save_cflags"
|
||||
LDFLAGS="$save_ldflags"
|
||||
AC_MSG_RESULT(compiling jansson resolver library)
|
||||
$ac_cv_prog_MAKER || exit 1
|
||||
AC_MSG_RESULT(installing jansson resolver library)
|
||||
rm -f "$PRIVATELIBDIR/"libjansson*
|
||||
$ac_cv_prog_MAKER install || exit 1
|
||||
JANSSON_CFLAGS="-I$cur_dir/extras/jansson/include"
|
||||
AC_SUBST(JANSSON_CFLAGS)
|
||||
JANSSON_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"],
|
||||
[JANSSON_LIBS="`$ac_cv_path_PKGCONFIG --libs jansson.pc`"])
|
||||
dnl ^^^ FIXME FIXME this is likely incorrect the .pc etc
|
||||
dnl For when pkg-config isn't available
|
||||
AS_IF([test -z "$JANSSON_LIBS"],
|
||||
[JANSSON_LIBS="-L$PRIVATELIBDIR -ljansson"])
|
||||
AC_SUBST(JANSSON_LIBS)
|
||||
cd $cur_dir
|
||||
])
|
||||
|
||||
|
||||
AX_PTHREAD()
|
||||
|
||||
CHECK_LIBCURL
|
||||
|
||||
CHECK_GEOIP_CLASSIC
|
||||
|
||||
dnl This does not do much anymore but..
|
||||
AC_ARG_ENABLE(mmdb,
|
||||
[AC_HELP_STRING([--enable-mmdb=no/yes],[enable GeoIP mmdb support])],
|
||||
[enable_mmdb=$enableval],
|
||||
[enable_mmdb=no])
|
||||
AS_IF([test "x$enable_mmdb" = "xyes"],
|
||||
[AC_DEFINE([GEOIP_ENGINE], ["geoip_mmdb"], [MMDB GeoIP engine])])
|
||||
|
||||
dnl Set to include dir
|
||||
UNRLINCDIR="`pwd`/include"
|
||||
|
||||
dnl This is at the end so the (potential) -std=gnu17 is not used
|
||||
dnl when compiling libraries, as their requirements may be different.
|
||||
AC_MSG_CHECKING([if explicit -std=gnu17 is needed])
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <sys/socket.h>]],
|
||||
[[
|
||||
void (*test)();
|
||||
test = exit;
|
||||
test(0);
|
||||
]])],
|
||||
[AC_MSG_RESULT(no)],
|
||||
[CFLAGS="$CFLAGS -std=gnu17"
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
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 -O2 -fno-inline -fsanitize=address,undefined -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/extbans/Makefile
|
||||
src/modules/rpc/Makefile
|
||||
src/modules/third/Makefile
|
||||
extras/unrealircd-upgrade-script
|
||||
unrealircd])
|
||||
AC_OUTPUT
|
||||
chmod 0700 unrealircd
|
||||
+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,32 +0,0 @@
|
||||
|
||||
_ _ _ ___________ _____ _
|
||||
| | | | | |_ _| ___ \/ __ \ | |
|
||||
| | | |_ __ _ __ ___ __ _| | | | | |_/ /| / \/ __| |
|
||||
| | | | '_ \| '__/ _ \/ _ | | | | | / | | / _ |
|
||||
| |_| | | | | | | __/ (_| | |_| |_| |\ \ | \__/\ (_| |
|
||||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for UnrealIRCd 6.2.6
|
||||
|
||||
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_6_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/unreal60_dev/doc/RELEASE-NOTES.md
|
||||
|
||||
UnrealIRCd 6 is compatible with the following services:
|
||||
* anope 2.0.x (stable) with the "unreal4" protocol module - anope 2.0.7 or higher required
|
||||
* anope 2.1.x (dev) with the "unrealircd" protocol module
|
||||
* 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$ ]
|
||||
@@ -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
@@ -1,33 +0,0 @@
|
||||
pub rsa4096 2024-11-18 [SC] [expires: 2030-11-17]
|
||||
36E6F65706E36B0937280299101001DAF48BB56D
|
||||
uid UnrealIRCd releases and patches (for verification of software downloads only!) <releases@unrealircd.org>
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBGc7EBEBEADDZzlLVArYr2kE9NlhnuUF31rW3wvZ4avjhzhmO6bL0I0RESZC
|
||||
PrtiFVJyjcSScObOVONFSC2YQiLVpezkKX4AYoqfnsuWfHg3xlGqCY8Ip+V5XJ6v
|
||||
8G5haFFEgTL10UtqzPNymygWmoEr11u3BUKIzAJAuec7dl7PyfGU2JDkl+NtWm31
|
||||
WyKCMuK3TKaD8UjGd5PPQR4jA6k1Hn8kvUl53EmkJjRyJc1XVz4AjZFywyUENGJv
|
||||
HVdVFOPDaKzIx6N6+2dm0ZxXIPOISycwEQuk1++E7NyOS5u+lzlFN7RAXR/5Ogv5
|
||||
pZzdcsPXp0RHHVeM8qgV7kvRTG9xhfFcXjs9Hanp2siy80HWs56o7nNN2eQNA31W
|
||||
5lfGIWaA3pY4rpBoiQc3IMGD+vkACfRFH468+cx50zP9gbqSaxUaj6Z0e/jBNf26
|
||||
7MIEKUjVCunQjO0Lob346FTAvdnXEXCwwJdQFF2tkxnpUBs6sSXjJwVgsfrkizXS
|
||||
X0qsX7DTn9QpF9Z+0czqdoyJuLLPOFx+6Xj7l2riBYyzMAa8c6odLXTReMaVxFN+
|
||||
clIVMCrfYXuURb4QGKB0ewW/wZd1fgsPAV4D1qypFAnM0D+qsfpKFI1QQY7WEUcC
|
||||
YVMkzjZHPWaBdRQf7KLXasx7/ouM5nIlZdRrPDrCXXiqAlA20aWqvZ8N1wARAQAB
|
||||
tGhVbnJlYWxJUkNkIHJlbGVhc2VzIGFuZCBwYXRjaGVzIChmb3IgdmVyaWZpY2F0
|
||||
aW9uIG9mIHNvZnR3YXJlIGRvd25sb2FkcyBvbmx5ISkgPHJlbGVhc2VzQHVucmVh
|
||||
bGlyY2Qub3JnPokCVAQTAQoAPhYhBDbm9lcG42sJNygCmRAQAdr0i7VtBQJnOxAR
|
||||
AhsDBQkLRzUABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEBAQAdr0i7Vt1hoQ
|
||||
ALCuqTuVqYOiwBsccS8Qt52l+8pOr0hcF49GM+eBM7Evq2tlwL4FOEyzbsO94yRH
|
||||
qTxGg/0puYkF74+vZnS2Vlo/F90FTmypy4oVQr+K/dd11ZEVLEpNcdaXuj68vP4c
|
||||
UCsUPmQyPGERCIlKMe1U+n6yQWgx7xLbuqlOuxcwKDddYa6hhToogUxBbdOZZrYl
|
||||
I4LN38ztSr0xjp0b67gdrMgOByS/r1AOX61L4DL2/glGOCt4GpKWPj8bOrK+Y/eK
|
||||
HRK72TezQ+XPFAqsXNmeaLBVVFM8L3fPBBEmVV5tULZ7+/3Qlyub78/OK3Y1/fV7
|
||||
qFY1S0WnTWY5mBNtUSgF9bGK/UyySNtPFtihmyg0xGQ/cNwiH7QXp38LboEBDoTF
|
||||
lRT42nX1Nw9KpIWqGPTowB4qhN7znAseYkuH1XtDJHm1OKQjUB8lyBupq3cXYUju
|
||||
JJH4zfdpWeLWQktb3D8uQsvEBcIyaVRs8wlPdAQBZBL0cLvE0ACpcsbsua26ihzB
|
||||
ZCGzYmdZvBPpRo2e5xzC9ur3VOQzHqsebFrRKzDD6PgYCgnqJ+03vMToGua9MVX+
|
||||
FFd2BSLO3UGUPdZESNzik2cILyZPRucwGWnL4wh+v+eOP9ZS4QpACye38VkGWUVR
|
||||
YqzzK4QaI3m1xrRbcuCXdiMymWnWV3yW6AU+eGB8aEDW
|
||||
=p0TV
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
File diff suppressed because it is too large
Load Diff
+18
-100
@@ -1,72 +1,21 @@
|
||||
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).
|
||||
Some minor rules about patches & modifications to UnrealIRCd
|
||||
|
||||
2. If new files are made, they must contain proper copyright headers.
|
||||
1. When making a change, always add a small description in Changes, in the
|
||||
BOTTOM
|
||||
|
||||
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.
|
||||
2. If new files are made, it must contain proper copyright headers,
|
||||
and a $Id$ somewhere.
|
||||
|
||||
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
|
||||
*/
|
||||
3. /*
|
||||
* These kind of comments
|
||||
*/
|
||||
|
||||
NOT
|
||||
|
||||
// These kind of comments
|
||||
|
||||
12. if (something == 1)
|
||||
4. if (something == 1)
|
||||
{
|
||||
moo; /* comment */
|
||||
/* This does what what what */
|
||||
@@ -78,46 +27,15 @@ Rules about patches & modifications to UnrealIRCd
|
||||
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
|
||||
5. 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.
|
||||
6. Patches are submitted to coders@lists.unrealircd.org,
|
||||
using "cvs diff -u > patchname". A submision must contain description of
|
||||
what it does, etc.
|
||||
|
||||
7. Protocol changes must be discussed before making patches for it.
|
||||
|
||||
15. We do NOT rip people off. If we use other people's code, it MUST be
|
||||
properly credited.
|
||||
8. 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,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,50 +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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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,747 +0,0 @@
|
||||
/* Configuration file for UnrealIRCd 6
|
||||
*
|
||||
* Simply copy this file to your conf/ directory and call it 'unrealircd.conf'
|
||||
*
|
||||
* If you are in a hurry then you can CTRL+F for: CHANGE THIS
|
||||
* The items that must be changed are indicated with those two words.
|
||||
* However, we actually recommend going through the file line by line
|
||||
* and edit it where needed, so you can see all the basic items and
|
||||
* what they are set to.
|
||||
*
|
||||
* BEFORE YOU PROCEED:
|
||||
* 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 6 documentation (very extensive!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_6_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";
|
||||
include "snomasks.default.conf";
|
||||
|
||||
/* Load the default cloaking module (2021 onwards): */
|
||||
loadmodule "cloak_sha256";
|
||||
/* Or load the old module from UnrealIRCd 3.2/4/5 instead: */
|
||||
//loadmodule "cloak_md5";
|
||||
|
||||
// CHANGE THIS (the 'name' and the 'info'):
|
||||
/* 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). It is common to use 001 for the first server.
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
// CHANGE THIS:
|
||||
/* 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 IPs 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 {
|
||||
mask *;
|
||||
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 {
|
||||
// mask 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'
|
||||
* YOU MUST CHANGE THIS!! (the oper name and the password)
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
|
||||
/* Technically you can put oper passwords in plaintext in the conf but
|
||||
* this is HIGHLY DISCOURAGED. Instead you should generate a password hash:
|
||||
* On *NIX, run: ./unrealircd mkpasswd
|
||||
* On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
|
||||
* .. and then paste the result below:
|
||||
*/
|
||||
password "$argon2id..etc..";
|
||||
/* See https://www.unrealircd.org/docs/Authentication_types for
|
||||
* more information, including even better authentication types
|
||||
* such as 'certfp', and how to generate hashes on Windows.
|
||||
*/
|
||||
|
||||
/* 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:
|
||||
* Insecure plaintext (NOT for production servers)
|
||||
* This listen block is here only for quick testing.
|
||||
* Delete or comment out this listen block on production servers
|
||||
* and use TLS on port 6697 instead.
|
||||
*/
|
||||
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.
|
||||
// * Open a shell on the OTHER SERVER and run the command to get the fingerprint:
|
||||
// * On *NIX, run: ./unrealircd spkifp
|
||||
// * On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
|
||||
// */
|
||||
// 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. You must add the
|
||||
* services server name in ulines { } in the config file on
|
||||
* every UnrealIRCd server on your network.
|
||||
* IMPORTANT: Never put the name of an UnrealIRCd server here,
|
||||
* it's only for Services!
|
||||
*/
|
||||
//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 except
|
||||
* debug stuff and join/part/kick.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.log" { maxsize 100M; }
|
||||
}
|
||||
}
|
||||
|
||||
/* In addition to regular logging, also add a JSON log file.
|
||||
* This includes lots of information about every event so is great
|
||||
* for auditing purposes and is machine readable. It is, however
|
||||
* less readable for humans.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.json.log" { maxsize 250M; type json; }
|
||||
}
|
||||
}
|
||||
|
||||
/* 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 with type 'all' protects you from GLINE, GZLINE, QLINE, SHUN */
|
||||
// except ban {
|
||||
// mask *@192.0.2.1;
|
||||
// type all;
|
||||
// }
|
||||
|
||||
/* This allows IRCCloud connections in without maxperip restrictions
|
||||
* and also exempt them from connect-flood throttling.
|
||||
*/
|
||||
except ban {
|
||||
mask *.irccloud.com;
|
||||
type { maxperip; connect-flood; }
|
||||
}
|
||||
|
||||
/* 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
|
||||
*/
|
||||
// vhost {
|
||||
// vhost i.hate.microsefrs.com;
|
||||
// mask *@*;
|
||||
// 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 {
|
||||
// CHANGE THIS, ALL 4 ITEMS:
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
|
||||
/* Normal defaults */
|
||||
help-channel "#Help";
|
||||
cloak-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.
|
||||
* YOU MUST CHANGE THIS!
|
||||
* The keys should be 3 random strings of 80 characters each (or more).
|
||||
* and must consist of lowcase (a-z), upcase (A-Z) and digits (0-9).
|
||||
* On *NIX, you can run './unrealircd gencloak' in your shell to let
|
||||
* UnrealIRCd generate 3 random strings for you.
|
||||
* On Windows, you can run "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
|
||||
*/
|
||||
cloak-keys {
|
||||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||||
"and another one";
|
||||
"and another one";
|
||||
}
|
||||
}
|
||||
|
||||
/* Server specific configuration */
|
||||
set {
|
||||
// FINALLY, YOU MUST CHANGE THIS NEXT ITEM:
|
||||
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 {
|
||||
/* There are lots of settings for this and most have good defaults.
|
||||
* See https://www.unrealircd.org/docs/Anti-flood_settings
|
||||
*/
|
||||
|
||||
channel {
|
||||
/* For channel-specific anti-flood settings, see
|
||||
* https://www.unrealircd.org/docs/Channel_anti-flood_settings
|
||||
* In UnrealIRCd 6.2.0+ the default is profile "normal".
|
||||
* Chanops can override this via "MODE #channel +F relaxed"
|
||||
* or "+F off". If you are afraid of too many false positives
|
||||
* then you could set this to "relaxed" instead. Note that
|
||||
* doing so would reduce protection for everyone. Another
|
||||
* option is to set it here to "off" to disable this default
|
||||
* channel protection entirely (not recommended).
|
||||
*/
|
||||
default-profile normal;
|
||||
}
|
||||
}
|
||||
|
||||
/* 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 {
|
||||
except {
|
||||
connect-time 60; /* after 60 seconds you can use LIST */
|
||||
identified yes; /* or immediately, if you are identified to services */
|
||||
reputation-score 24; /* or if you have a reputation score of 24 or more */
|
||||
}
|
||||
}
|
||||
invite {
|
||||
except {
|
||||
connect-time 120;
|
||||
identified yes;
|
||||
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 {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
//private-notice {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/* RECOMMENDED:
|
||||
* Everyone should be using IRC over SSL/TLS on port 6697. However, to use
|
||||
* it properly, you have to get a "real" certificate instead of the
|
||||
* self-signed default certificate that was generated by the installer.
|
||||
* The Let's Encrypt initiative allows you to get a free certificate that is
|
||||
* issued by a trusted Certificate Authority. Instructions are at:
|
||||
* https://www.unrealircd.org/docs/Using_Let's_Encrypt_with_UnrealIRCd
|
||||
*
|
||||
* When you follow that guide you will have a "dual certificate" setup:
|
||||
* set::tls:
|
||||
* Your trusted CA certificate, served to clients on port 6697.
|
||||
* (key and certificate change and renew every xx days automatically)
|
||||
* set::server-linking::tls-options
|
||||
* A long-lived self-signed certificate for server linking, with
|
||||
* a stable 'spkifp' signature that you use in link blocks.
|
||||
* This certificate is used automatically in "serversonly" listen blocks
|
||||
* (port 6900 in this configuration file) and automatically used for all
|
||||
* link { } blocks.
|
||||
*
|
||||
*/
|
||||
//set {
|
||||
// tls {
|
||||
// certificate "/etc/letsencrypt/live/irc.example.org/fullchain.pem";
|
||||
// key "/etc/letsencrypt/live/irc.example.org/privkey.pem";
|
||||
// }
|
||||
// server-linking {
|
||||
// tls-options {
|
||||
// certificate "tls/server.cert.pem";
|
||||
// key "tls/server.key.pem";
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
/*
|
||||
* 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 configure which users are exempt from the
|
||||
* restrictions. These users are always allowed in!
|
||||
* 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).
|
||||
* We also allow users who are identified to services via
|
||||
* SASL to bypass the restrictions.
|
||||
*/
|
||||
except {
|
||||
reputation-score 24;
|
||||
identified yes;
|
||||
/* for more options, see
|
||||
* https://www.unrealircd.org/docs/Mask_item
|
||||
*/
|
||||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
/* For IPv6 users, on top of 'maxperip' (which limits
|
||||
* connections per /64), connthrottle also limits how
|
||||
* many unknown users can be online from wider IPv6
|
||||
* prefixes (/56, /48, /32). This is an additional
|
||||
* security measure, separate from the rate-throttle
|
||||
* above. People in the security-group "known-users"
|
||||
* bypass this, as well as set::connthrottle::except.
|
||||
* The defaults below should fit most networks unchanged.
|
||||
* Uncomment to tune. Set a cidr-xx item to max 0;
|
||||
* to disable it.
|
||||
*/
|
||||
//ipv6-unknown-users-limit {
|
||||
// cidr-56 { max 8; }
|
||||
// cidr-48 { max 32; }
|
||||
// cidr-32 { max 256; }
|
||||
//}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* CHANNEL HISTORY:
|
||||
* UnrealIRCd has channel mode +H which can be used by users to read back
|
||||
* channel history, such as from before they joined. For general information
|
||||
* on this feature, see https://www.unrealircd.org/docs/Channel_history
|
||||
*
|
||||
* The history limits can be configured via set::history. The defaults are
|
||||
* probably already good for you, but if you are on a low-memory system
|
||||
* or have thousands of channels then you may want to double check. See
|
||||
* https://www.unrealircd.org/docs/Set_block#set::history for the options.
|
||||
*
|
||||
* In addition to that, you can have "persistent channel history", which
|
||||
* means channel history is stored encrypted on disk so it is preserved
|
||||
* between IRC server restarts, see
|
||||
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
|
||||
* The persistent history feature is NOT enabled by default because you
|
||||
* need to configure a secret { } block for it. The following is a simple
|
||||
* example with passwords stored directly in the configuration file.
|
||||
* To get better security, read https://www.unrealircd.org/docs/Secret_block
|
||||
* on alternative ways so you don't store passwords directly in the config.
|
||||
*/
|
||||
//secret historydb { password "somepassword"; }
|
||||
//set { history { channel { persist yes; db-secret "historydb"; } } }
|
||||
|
||||
/* 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/
|
||||
* 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,659 +0,0 @@
|
||||
/* Archivo de configuración para UnrealIRCd 6
|
||||
*
|
||||
* Simplemente copie este archivo a su directorio conf/, llámelo
|
||||
* 'unrealircd.conf' y revíselo línea por línea (¡edítelo!)
|
||||
*
|
||||
* Importante: Todas las líneas, excepto { y } terminan con ;
|
||||
* Esto es muy importante, si pierde un ; en algún lugar entonces el
|
||||
* el analizador del archivo de configuración se quejará y el archivo no
|
||||
* ser procesado correctamente!
|
||||
* Si esta es tu primera experiencia con una configuración de UnrealIRCd
|
||||
* entonces te recomendamos que leas un poco sobre la sintaxis,
|
||||
* esto solo toma unos minutos y te ayudará mucho:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* Documentación de UnrealIRCd 6 (¡muy extensa!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
|
||||
*
|
||||
* Preguntas frecuentes:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*
|
||||
*/
|
||||
|
||||
/* Esto es un comentario, todo el texto aquí es ignorado (tipo de comentario #1) */
|
||||
// Esto también es un comentario, esta línea se ignora (tipo de comentario #2)
|
||||
# Esto también es un comentario, nuevamente esta línea se ignora (tipo de comentario #3)
|
||||
|
||||
/* UnrealIRCd hace un uso intensivo de los módulos. Los módulos le permiten completamente
|
||||
* personaliza el conjunto de características que deseas habilitar en UnrealIRCd.
|
||||
* Ver: https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* Al usar el incluir a continuación, le indicamos al IRCd que lea el archivo
|
||||
* 'modules.default.conf' que cargará más de 150 módulos
|
||||
* enviado con UnrealIRCd. En otras palabras: esto simplemente cargará
|
||||
* todas las funciones disponibles en UnrealIRCd.
|
||||
* Si está configurando UnrealIRCd por primera vez, le sugerimos
|
||||
* utilizar esta. Luego, cuando todo esté funcionando, puedes venir
|
||||
* volver más tarde para personalizar la lista (si lo desea).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Ahora incluyamos algunos otros archivos también:
|
||||
* - help/help.conf para nuestro sistema on-IRC /HELPOP
|
||||
* - badwords.conf para canal y modo de usuario +G
|
||||
* - spamfilter.conf como ejemplo para el uso de spamfilter
|
||||
* (Comentado)
|
||||
* - operclass.default.conf contiene algunas buenas operclasses que
|
||||
* puedes usar en tus bloques operativos.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
include "snomasks.default.conf";
|
||||
|
||||
/* Cargar el módulo de encubrimiento predeterminado (2021 en adelante): */
|
||||
loadmodule "cloak_sha256";
|
||||
/* O cargue el módulo antiguo de UnrealIRCd 3.2/4/5 en su lugar: */
|
||||
//loadmodule "cloak_md5";
|
||||
|
||||
/* Este es el bloque yo { } que básicamente dice quiénes somos.
|
||||
* Define el nombre de nuestro servidor, alguna línea de información y un "sid" único.
|
||||
* La identificación del servidor (sid) debe comenzar con un dígito seguido de dos dígitos o
|
||||
* cartas. El sid debe ser único para su red IRC (cada servidor debe
|
||||
* tener su propio sid).
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
/* El bloque admin { } define lo que verán los usuarios si escriben /ADMIN.
|
||||
* Normalmente contiene información sobre cómo contactar con el administrador.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"email@example.org";
|
||||
}
|
||||
|
||||
/* Los clientes y servidores se colocan en bloques de clase { }, los definimos aquí.
|
||||
* Los bloques de clase constan de los siguientes elementos:
|
||||
* - pingfreq: con qué frecuencia hacer ping a un usuario/servidor (en segundos)
|
||||
* - connfreq: con qué frecuencia intentamos conectarnos a este servidor (en segundos)
|
||||
* - sendq: el tamaño máximo de cola para una conexión
|
||||
* - recvq: máxima cola de recepción de una conexión (control de inundación)
|
||||
*/
|
||||
|
||||
/* Clase de cliente con buenos valores predeterminados */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Clase especial para IRCOps con límites más altos */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Clase de servidor con buenos valores predeterminados */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* intenta conectarte cada 15 segundos */
|
||||
maxclients 10; /* maximo de servidores */
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
/* Permitir que los bloques definan qué clientes pueden conectarse a este servidor.
|
||||
* Esto le permite agregar una contraseña de servidor o restringir el servidor a
|
||||
* IP específicas solamente. También configuras las conexiones máximas
|
||||
* permitido por IP aquí.
|
||||
* Ver también: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Permitir el ingreso de todos, pero solo 3 conexiones por IP */
|
||||
allow {
|
||||
mask *;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Los bloques Oper definen sus operadores IRC.
|
||||
* Los operadores de IRC son personas que tienen "derechos adicionales" en comparación con otros,
|
||||
* por ejemplo, pueden /MATAR a otras personas, iniciar la vinculación del servidor,
|
||||
* /ÚNETE a los canales aunque estén prohibidos, etc.
|
||||
*
|
||||
* Para obtener más información sobre cómo convertirse en un IRCOp y cómo ser administrador
|
||||
* tareas, ver: https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* Para obtener detalles sobre el propio bloque oper { }, consulte
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Aquí hay un bloque de operación de ejemplo para 'bobsmith'.
|
||||
* ¡DEBES cambiar esto!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
|
||||
/* Technically you can put oper passwords in plaintext in the conf but
|
||||
* this is HIGHLY DISCOURAGED. Instead you should generate a password hash:
|
||||
* On *NIX, run: ./unrealircd mkpasswd
|
||||
* On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
|
||||
* .. and then paste the result below:
|
||||
*/
|
||||
password "$argon2id..etc..";
|
||||
/* See https://www.unrealircd.org/docs/Authentication_types for
|
||||
* more information, including even better authentication types
|
||||
* such as 'certfp', and how to generate hashes on Windows.
|
||||
*/
|
||||
|
||||
/* Los permisos de operación se definen en un bloque 'operclass'.
|
||||
* Ver https://www.unrealircd.org/docs/Operclass_block
|
||||
* UnrealIRCd se envía con una serie de bloques predeterminados, consulte
|
||||
* el artículo para una lista completa. Elegimos 'netadmin' aquí.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "is a Network Administrator";
|
||||
vhost netadmin.example.org;
|
||||
}
|
||||
|
||||
/* Los bloques de escucha definen los puertos donde el servidor debe escuchar.
|
||||
* En otras palabras: los puertos que los clientes y servidores pueden usar para
|
||||
* conectarse a este servidor.
|
||||
*
|
||||
* Sintaxis:
|
||||
* listen {
|
||||
* ip <ip>;
|
||||
* port <port>;
|
||||
* options {
|
||||
* <options....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Puerto IRC estándar 6667
|
||||
* Insecure plaintext (NOT for production servers)
|
||||
* This listen block is here only for quick testing.
|
||||
* Delete or comment out this listen block on production servers
|
||||
* and use TLS on port 6697 instead.
|
||||
*/
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Puerto IRC estándar 6697 */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Puerto especial solo para servidores SSL/TLS para vincular */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* NOTA: Si está en una shell IRCd con múltiples IP y usa
|
||||
* los bloques de escucha anteriores { } entonces probablemente obtendrás un
|
||||
* Error 'Dirección ya en uso' y el ircd no se iniciará.
|
||||
* Esto significa que DEBE vincularse a una IP específica en lugar de '*' como:
|
||||
* escucha { ip 1.2.3.4; puerto 6667; }
|
||||
* Por supuesto, reemplaza la IP con la IP que te fue asignada.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Los bloques de enlace le permiten vincular varios servidores para formar una red.
|
||||
* Ver https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
link hub.ejemplo.org
|
||||
{
|
||||
incoming {
|
||||
mask *@algo;
|
||||
}
|
||||
|
||||
outgoing {
|
||||
bind-ip *; /* o explícitamente una IP */
|
||||
hostname hub.ejemplo.org;
|
||||
port 6900;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Usamos la huella digital SPKI del otro servidor para la autenticación.
|
||||
* Ejecute './unrealircd spkifp' en el otro lado del linkeo para obtenerlo.
|
||||
* ( Windows: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp )
|
||||
*/
|
||||
password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* El bloque de enlace para servicios suele ser mucho más simple.
|
||||
* Para más información sobre qué son los Servicios,
|
||||
* ver https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
link services.ejemplo.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "cambiameporfavor";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* Las líneas U dan a otros servidores (incluso) más poder/comandos.
|
||||
* Si usas servicios debes agregarlos aquí.
|
||||
* ¡NUNCA pongas el nombre de un servidor UnrealIRCd aquí!
|
||||
*/
|
||||
ulines {
|
||||
services.ejemnplo.org;
|
||||
}
|
||||
|
||||
/* Aquí puede agregar una contraseña para los comandos /DIE y /RESTART exclusivos de IRCOp.
|
||||
* Esto está destinado principalmente a proporcionar un poco de protección contra accidentes
|
||||
* reinicios y muertes del servidor.
|
||||
*/
|
||||
drpass {
|
||||
restart "restart";
|
||||
die "die";
|
||||
}
|
||||
|
||||
/* El bloque de registro define qué debe registrarse y en qué archivo.
|
||||
* Ver también https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Este es un buen valor predeterminado, registra todo excepto
|
||||
* cosas de depuración y unión/parte/kick.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.log" { maxsize 100M; }
|
||||
}
|
||||
}
|
||||
|
||||
/* In addition to regular logging, also add a JSON log file.
|
||||
* This includes lots of information about every event so is great
|
||||
* for auditing purposes and is machine readable. It is, however
|
||||
* less readable for humans.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.json.log" { maxsize 250M; type json; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Con "aliases" puedes crear un alias como /ALGO para enviar un mensaje a
|
||||
* algún usuario o bot. Suelen utilizarse para servicios.
|
||||
*
|
||||
* Tenemos una cantidad de archivos de alias preestablecidos, consulte el directorio alias/.
|
||||
* A modo de ejemplo, aquí incluimos todos los alias utilizados para los servicios de anope.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Prohibir los apodos para que no puedan ser utilizados por usuarios regulares */
|
||||
ban nick {
|
||||
mask "*C*h*a*n*S*e*r*v*";
|
||||
reason "Reservado para Servicios";
|
||||
}
|
||||
|
||||
/* Baneo por ip.
|
||||
* Tenga en cuenta que normalmente usa /KLINE, /GLINE y /ZLINE para esto.
|
||||
*/
|
||||
ban ip {
|
||||
mask 195.86.232.81;
|
||||
reason "Te odio";
|
||||
}
|
||||
|
||||
/* Baneo del servidor: si vemos que este servidor está vinculado a alguien, lo desvinculamos */
|
||||
ban server {
|
||||
mask eris.berkeley.edu;
|
||||
reason "Sal de aquí.";
|
||||
}
|
||||
|
||||
/* Baneo de usuario: solo como ejemplo, normalmente usa /KLINE o /GLINE para esto */
|
||||
ban user {
|
||||
mask *tirc@*.saturn.bbn.com;
|
||||
reason "Idiot";
|
||||
}
|
||||
|
||||
/* Baneo del nombre real le permite prohibir clientes en función de su 'nombre real'
|
||||
* o campo 'gecos'.
|
||||
*/
|
||||
ban realname {
|
||||
mask "Equipo Swat";
|
||||
reason "mIRKFORCE";
|
||||
}
|
||||
|
||||
ban realname {
|
||||
mask "sub7server";
|
||||
reason "sub7";
|
||||
}
|
||||
|
||||
/* Excepciones de baneo y TKL. Le permite eximir a los usuarios/máquinas de
|
||||
* KLINE, GLINE, etc.
|
||||
* Si es un IRCOp con una IP estática (y no hay personas que no sean de confianza en esa IP)
|
||||
* entonces te sugerimos que te añadas aquí. Así siempre puedes entrar
|
||||
* incluso si accidentalmente colocas una prohibición de *LINE en ti mismo.
|
||||
*/
|
||||
|
||||
/* excepto el baneo con el tipo 'todos' (all) te proteja de GLINE, GZLINE, QLINE, SHUN */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* This allows IRCCloud connections in without maxperip restrictions
|
||||
* and also exempt them from connect-flood throttling.
|
||||
*/
|
||||
except ban {
|
||||
mask *.irccloud.com;
|
||||
type { maxperip; connect-flood; }
|
||||
}
|
||||
|
||||
/* Con los bloques de denegación de DCC puede prohibir los nombres de archivo para DCC */
|
||||
deny dcc {
|
||||
filename "*sub7*";
|
||||
reason "Posible Sub7 Virus";
|
||||
}
|
||||
|
||||
/* denegar canal le permite prohibir un canal (máscara) por completo */
|
||||
deny channel {
|
||||
channel "*warez*";
|
||||
reason "Warez es ilegal";
|
||||
class "clients";
|
||||
}
|
||||
|
||||
/* Los VHosts (hosts virtuales) permiten a los usuarios adquirir un host diferente.
|
||||
* Ver https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Ejemplo de vhost que puede usar. En el tipo de IRC: prueba de prueba /VHOST
|
||||
* NOTA: solo las personas con un host 'unrealircd.com' pueden usarlo para
|
||||
* asegúrese de cambiar el vhost::mask antes de probar.
|
||||
*/
|
||||
vhost {
|
||||
vhost odio.microsefrs.com;
|
||||
mask *@unrealircd.com;
|
||||
login "test";
|
||||
password "test";
|
||||
}
|
||||
|
||||
/* Los bloques de la lista negra consultarán un servicio de lista negra de DNS externo
|
||||
* cada vez que un usuario se conecta, para ver si se conoce la dirección IP
|
||||
* para causar ataques de drones, es una máquina pirateada conocida, etc.
|
||||
* Documentación: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* O simplemente eche un vistazo a los bloques a continuación.
|
||||
*/
|
||||
|
||||
/* DroneBL, probablemente la lista negra más popular utilizada por los servidores IRC.
|
||||
* Ver https://dronebl.org/ para su documentación y el
|
||||
* significado de los tipos de respuesta. Al momento de escribir usamos tipos:
|
||||
* 3: IRC Drone, 5: Embotellador, 6: Spambot o drone desconocido,
|
||||
* 7: Drone DDoS, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain,
|
||||
* 11: Proxy de página web, 12: Open DNS Resolver, 13: Atacantes de fuerza bruta,
|
||||
* 14: Proxy Wingate abierto, 15: Enrutador / puerta de enlace comprometidos,
|
||||
* 16: Gusanos autoenraizadores.
|
||||
*/
|
||||
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 Detectado. Chequea https://dronebl.org/lookup?ip=$ip para más detalles.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, consulte https://rbl.efnetrbl.org/ para obtener la documentación
|
||||
* y el significado de los tipos de respuesta.
|
||||
* Al momento de escribir: 1 es proxy abierto, 4 es TOR, 5 es drones/inundaciones.
|
||||
*
|
||||
* NOTA: Si desea permitir proxies TOR en su servidor, entonces
|
||||
* necesita eliminar el '4;' abajo en la sección de respuesta.
|
||||
*/
|
||||
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.";
|
||||
}
|
||||
|
||||
/* Puede incluir otros archivos de configuración */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Configuración de la red */
|
||||
set {
|
||||
network-name "EjemploNET";
|
||||
default-server "irc.ejemplo.org";
|
||||
services-server "services.ejemplo.org";
|
||||
stats-server "stats.ejemplo.org";
|
||||
help-channel "#Ayuda";
|
||||
cloak-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
/* Las claves de ocultación deben ser las mismas en todos los servidores de la red.
|
||||
* Se utilizan para generar hosts enmascarados y deben mantenerse en secreto.
|
||||
* Las claves deben ser 3 cadenas aleatorias de 80 caracteres cada una (o más).
|
||||
* y debe constar de minúsculas (a-z), mayúsculas (A-Z) y dígitos (0-9).
|
||||
* SUGERENCIA: En *NIX, puede ejecutar './unrealircd gencloak' en su shell para dejar
|
||||
* UnrealIRCd genera 3 cadenas aleatorias para ti.
|
||||
* On Windows, you can run "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
|
||||
*/
|
||||
cloak-keys {
|
||||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||||
"y otra llave";
|
||||
"y otra llave";
|
||||
}
|
||||
}
|
||||
|
||||
/* Configuración específica del servidor */
|
||||
set {
|
||||
kline-address 'agrega.una.dirección.de.correo-electrónico'; /* correo electrónico o URL que se muestra cuando un usuario está baneado */
|
||||
modes-on-connect "+ixw"; /* cuando los usuarios se conecten, obtendrán estos modos de usuario */
|
||||
modes-on-oper "+xws"; /* cuando alguien se convierte en IRCOp obtendrá estos modos */
|
||||
modes-on-join "+nt"; /* modos de canal predeterminados cuando se crea un nuevo canal */
|
||||
oper-auto-join "#opers"; /* Los IRCOps se unen automáticamente a este canal */
|
||||
options {
|
||||
hide-ulines; /* ocultar líneas U en /MAP y /LINKS */
|
||||
show-connect-info; /* mostrar mensajes de "buscando su nombre de host" al conectarse */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* número máximo de canales que un usuario puede /JOIN */
|
||||
|
||||
/* El tiempo mínimo que un usuario debe estar conectado antes de que se le permita
|
||||
* use un mensaje SALIR. Con suerte, esto ayudará a detener el spam.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* O simplemente establezca una salida estática, lo que significa que se ignora cualquier razón /QUIT */
|
||||
/* static-quit "Salida del cliente"; */
|
||||
|
||||
/* static-part hace lo mismo para /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Protección contra inundaciones:
|
||||
* Hay muchas configuraciones para esto y la mayoría tiene buenos valores predeterminados.
|
||||
* Ver https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* Configuración del filtro de spam */
|
||||
spamfilter {
|
||||
ban-time 1d; /* duración predeterminada de una prohibición de *LINE establecida por spamfilter */
|
||||
ban-reason "Spam/Publicidad"; /* razón por defecto */
|
||||
virus-help-channel "#Ayuda"; /* canal a usar para la acción 'viruschan' */
|
||||
/* except "#Ayuda"; canal para eximir de Spamfilter */
|
||||
}
|
||||
|
||||
/* Restringir ciertos comandos.
|
||||
* Ver https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
except {
|
||||
connect-time 60;
|
||||
identified yes;
|
||||
reputation-score 24;
|
||||
}
|
||||
}
|
||||
invite {
|
||||
except {
|
||||
connect-time 120;
|
||||
identified yes;
|
||||
reputation-score 24;
|
||||
}
|
||||
}
|
||||
/* Además de la capacidad de restringir cualquier comando,
|
||||
* como se muestra arriba. También hay 4 tipos especiales.
|
||||
* que puedes restringir. Estos son "mensajes privados",
|
||||
* "aviso privado", "mensaje de canal" y "aviso de canal".
|
||||
* Están comentados (deshabilitados) en este ejemplo:
|
||||
*/
|
||||
//private-message {
|
||||
// except {
|
||||
// connect-time 10;
|
||||
// }
|
||||
//}
|
||||
//private-notice {
|
||||
// except {
|
||||
// connect-time 10;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Lo siguiente configurará la limitación de conexión de "usuarios desconocidos".
|
||||
*
|
||||
* Cuando UnrealIRCd detecta una gran cantidad de usuarios que se conectan desde direcciones IP
|
||||
* que no se han visto antes, entonces se rechazan las conexiones de nuevas IP
|
||||
* por encima de la tarifa establecida. Por ejemplo a las 10:60 solo se pueden conectar 10 usuarios por minuto
|
||||
* que no se han visto antes. Las direcciones IP conocidas siempre pueden entrar,
|
||||
* independientemente de la tarifa establecida. Lo mismo para los usuarios que inician sesión con SASL.
|
||||
*
|
||||
* Ver también https://www.unrealircd.org/docs/Connthrottle para más detalles.
|
||||
* O simplemente siga leyendo los ajustes de configuración predeterminados a continuación:
|
||||
*/
|
||||
set {
|
||||
connthrottle {
|
||||
/* Primero debemos configurar lo que llamamos "usuarios conocidos".
|
||||
* De forma predeterminada, estos son usuarios en direcciones IP que tienen
|
||||
* una puntuación de 24 o superior. Una puntuación de 24 significa que el
|
||||
* La IP estuvo conectada a esta red durante al menos 2 horas
|
||||
* en el último mes (o mínimo 1 hora si está registrado).
|
||||
* La opción sasl-bypass es otra configuración. Significa
|
||||
* que los usuarios que se autentican en los servicios a través de SASL
|
||||
* también se consideran usuarios conocidos.
|
||||
* Usuarios en el grupo de "usuarios conocidos" (ya sea por reputación
|
||||
* o por SASL) siempre están permitidas en este módulo.
|
||||
*/
|
||||
except {
|
||||
reputation-score 24;
|
||||
identified yes;
|
||||
}
|
||||
|
||||
/* Los nuevos usuarios son todos los usuarios que no pertenecen al
|
||||
* grupo de usuarios conocidos. Se consideran "nuevos" y en
|
||||
* caso de un alto número de tales nuevos usuarios que se conectan
|
||||
* están sujetos a limitación de velocidad de conexión.
|
||||
* Por defecto la tarifa es de 20 nuevos usuarios locales por minuto
|
||||
* y 30 nuevos usuarios globales por minuto.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* Esto configura cuando este módulo NO estará activo.
|
||||
* La configuración predeterminada deshabilitará el módulo cuando:
|
||||
* - El módulo de reputación se ha estado ejecutando durante menos de
|
||||
* una semana. Si se ejecuta menos de 1 semana, entonces hay
|
||||
* datos insuficientes para considerar quién es un "usuario conocido".
|
||||
* - El servidor acaba de iniciarse (primeros 3 minutos).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* HISTORIAL DE UN CANAL:
|
||||
* UnrealIRCd tiene el modo de canal +H que los usuarios pueden usar para volver a leer
|
||||
* los mensajes del canal, antes de que se unieran. Para información general
|
||||
* en esta función, lee https://www.unrealircd.org/docs/Channel_history
|
||||
*
|
||||
* El historial del canal puede ser configurado vía set::history. Los valores predeterminados
|
||||
* son probablemente buenos para ti, pero si está en un sistema con poca memoria
|
||||
* o tiene miles de canales, entonces es posible que debas volver a verificar. Lee
|
||||
* https://www.unrealircd.org/docs/Set_block#set::history para las opciones.
|
||||
*
|
||||
* Además de eso, puedes tener "persistent channel history", cual
|
||||
* significa que el historial del canal se almacena encriptado en el disco
|
||||
* para que se conserve entre reinicios del servidor IRC, lee
|
||||
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
|
||||
* La función de historial persistente NO está habilitada de manera predeterminada
|
||||
* porque usted necesita configurar un bloque de secreto { } para ello. Un sencillo
|
||||
* ejemplo con contraseñas almacenadas directamente en el archivo de configuración.
|
||||
* Para obtener una mejor seguridad, lee https://www.unrealircd.org/docs/Secret_block
|
||||
* las diferentes alternativas para que no almacenes contraseñas directamente en la configuración.
|
||||
*/
|
||||
//secret historydb { password "somepassword"; }
|
||||
//set { history { channel { persist yes; db-secret "historydb"; } } }
|
||||
|
||||
/* Finalmente, es posible que desee tener un MOTD (Mensaje del día), esto puede ser
|
||||
* se hace creando un archivo de texto 'ircd.motd' en su directorio conf/.
|
||||
* Este archivo se mostrará a tus usuarios al conectarse.
|
||||
* Para obtener más información, consulte https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
/*
|
||||
* Problemas o necesita más ayuda?
|
||||
* 1) https://www.unrealircd.org/docs/
|
||||
* 2) https://www.unrealircd.org/docs/Main_Page/es <- ¡responde el 80% de tus preguntas!
|
||||
* 3) Si aún tiene problemas, puede obtener soporte:
|
||||
* - Foros: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL en el puerto 6697) / #unreal-support
|
||||
* ¡Tenga en cuenta que primero le pedimos que lea la documentación y las preguntas frecuentes!
|
||||
*/
|
||||
@@ -1,666 +0,0 @@
|
||||
/* Fichier de configuration pour UnrealIRCd 6
|
||||
*
|
||||
* 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 6 (très complète !) :
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_6_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";
|
||||
include "snomasks.default.conf";
|
||||
|
||||
/* Load the default cloaking module (2021 onwards): */
|
||||
loadmodule "cloak_sha256";
|
||||
/* Or load the old module from UnrealIRCd 3.2/4/5 instead: */
|
||||
//loadmodule "cloak_md5";
|
||||
|
||||
/* 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 {
|
||||
mask *;
|
||||
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 {
|
||||
mask 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'.
|
||||
* Vous DEVEZ le modifier !!
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
|
||||
/* Technically you can put oper passwords in plaintext in the conf but
|
||||
* this is HIGHLY DISCOURAGED. Instead you should generate a password hash:
|
||||
* On *NIX, run: ./unrealircd mkpasswd
|
||||
* On Windows, run: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
|
||||
* .. and then paste the result below:
|
||||
*/
|
||||
password "$argon2id..etc..";
|
||||
/* See https://www.unrealircd.org/docs/Authentication_types for
|
||||
* more information, including even better authentication types
|
||||
* such as 'certfp', and how to generate hashes on Windows.
|
||||
*/
|
||||
|
||||
/* 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
|
||||
* Insecure plaintext (NOT for production servers)
|
||||
* This listen block is here only for quick testing.
|
||||
* Delete or comment out this listen block on production servers
|
||||
* and use TLS on port 6697 instead.
|
||||
*/
|
||||
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 {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.log" { maxsize 100M; }
|
||||
}
|
||||
}
|
||||
|
||||
/* In addition to regular logging, also add a JSON log file.
|
||||
* This includes lots of information about every event so is great
|
||||
* for auditing purposes and is machine readable. It is, however
|
||||
* less readable for humans.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.json.log" { maxsize 250M; type json; }
|
||||
}
|
||||
}
|
||||
|
||||
/* 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 avec le type 'all' vous protège des GLINE, GZLINE, QLINE, SHUN */
|
||||
except ban {
|
||||
mask *@192.0.2.1;
|
||||
type all;
|
||||
}
|
||||
|
||||
/* This allows IRCCloud connections in without maxperip restrictions
|
||||
* and also exempt them from connect-flood throttling.
|
||||
*/
|
||||
except ban {
|
||||
mask *.irccloud.com;
|
||||
type { maxperip; connect-flood; }
|
||||
}
|
||||
|
||||
/* 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";
|
||||
}
|
||||
|
||||
/* Les blocs de liste noire interrogeront un service de liste noire DNS externe
|
||||
* chaque fois qu'un utilisateur se connecte, pour voir si l'adresse IP est connue
|
||||
* pour provoquer des attaques de drones, est une machine piratée connue, etc..
|
||||
* Documentation: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* Ou regardez simplement les blocs ci-dessous.
|
||||
*/
|
||||
|
||||
/* DroneBL, probablement la liste noire la plus populaire utilisée par les serveurs IRC.
|
||||
* Voir https://dronebl.org/ pour leur documentation et les
|
||||
* significations des types de réponse. AAu moment de la rédaction, nous utilisons des 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, voir https://rbl.efnetrbl.org/ pour la documentation
|
||||
* et la signification des types de réponse.
|
||||
* Au moment de la rédaction: 1 is open proxy, 4 is TOR, 5 is drones/flooding.
|
||||
*
|
||||
* REMARQUE: Si vous souhaitez autoriser les proxys TOR sur votre serveur, alors
|
||||
* vous devez supprimer le '4;' ci-dessous dans la section de réponse.
|
||||
*/
|
||||
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.";
|
||||
}
|
||||
|
||||
/* 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";
|
||||
cloak-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 80 caractères aléatoires 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 './unrealircd gencloak' sur votre
|
||||
* serveur pour que Unrealircd génère 3 clés aléatoires pour vous.
|
||||
* On Windows, use "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
|
||||
*/
|
||||
cloak-keys {
|
||||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||||
"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.
|
||||
* Voir: https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* 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 */
|
||||
}
|
||||
|
||||
/* Restreindre certaines commandes.
|
||||
* Voir https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
except {
|
||||
connect-time 60; /* après 60 secondes, vous pouvez utiliser LIST */
|
||||
identified yes; /* ou immédiatement, si vous êtes identifié aux services */
|
||||
reputation-score 24; /* ou si vous avez un score de réputation de 24 ou plus */
|
||||
}
|
||||
}
|
||||
invite {
|
||||
except {
|
||||
connect-time 120;
|
||||
identified yes;
|
||||
reputation-score 24;
|
||||
}
|
||||
}
|
||||
/* En plus de la possibilité de restreindre toute commande,
|
||||
* tel qu'illustré ci-dessus. Il existe également 4 types spéciaux
|
||||
* que vous pouvez restreindre. Ceux-ci sont "private-message",
|
||||
* "private-notice", "channel-message" and "channel-notice".
|
||||
* Ils sont commentés (désactivés) dans cet exemple :
|
||||
*/
|
||||
//private-message {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
//private-notice {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Ce qui suit configurera la limitation de connexion de "unknown users".
|
||||
*
|
||||
* Quand UnrealIRCd détecte un nombre élevé d'utilisateurs se connectant à partir d'adresses IP
|
||||
* qui n'ont pas été vus auparavant, les connexions des nouvelles IP sont rejetées
|
||||
* au-dessus du taux fixé. Par exemple à 10:60 seuls 10 utilisateurs par minute peuvent se connecter
|
||||
* qui n'ont pas été vus auparavant. Les adresses IP connues peuvent toujours entrer,
|
||||
* quel que soit le tarif fixé. Idem pour les utilisateurs qui se connectent avec SASL.
|
||||
*
|
||||
* Voir également https://www.unrealircd.org/docs/Connthrottle pour les détails.
|
||||
* Ou continuez simplement à lire les paramètres de configuration par défaut ci-dessous:
|
||||
*/
|
||||
|
||||
set {
|
||||
connthrottle {
|
||||
/* Nous configurons d'abord quels utilisateurs sont exemptés de la
|
||||
* restrictions. Ces utilisateurs sont toujours autorisés!
|
||||
* Par défaut, ce sont des utilisateurs sur des adresses IP qui ont
|
||||
* un score de 24 ou plus. Un score de 24 signifie que l'IP
|
||||
* était connecté à ce réseauk pendant au moins 2 heures
|
||||
* au cours du mois passé (ou minimum 1h si inscrit).
|
||||
* Nous permettons également aux utilisateurs qui sont identifiés aux services via
|
||||
* SASL contourner les restrictions.
|
||||
*/
|
||||
except {
|
||||
reputation-score 24;
|
||||
identified yes;
|
||||
/* pour plus d'options, voir restrictions
|
||||
* https://www.unrealircd.org/docs/Mask_item
|
||||
*/
|
||||
}
|
||||
|
||||
/* Les nouveaux utilisateurs sont tous les utilisateurs qui n'appartiennent pas au
|
||||
* groupe d'utilisateurs connus. Ils sont considérés comme "nouveaux" et dans
|
||||
* le cas d'un nombre élevé de ces nouveaux utilisateurs se connectant
|
||||
* ils sont soumis à une limitation du débit de connexion.
|
||||
* Par défaut, le taux est de 20 nouveaux utilisateurs locaux par minute
|
||||
* et 30 nouveaux utilisateurs global par minute.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* Ceci configure quand ce module ne sera PAS actif.
|
||||
* Les paramètres par défaut désactiveront le module lors que:
|
||||
* - Le module de réputation fonctionne depuis moins d'une
|
||||
* semaine. Si vous courez moins d'une semaine, il y a
|
||||
* données insuffisantes pour déterminer qui est un "utilisateur connu".
|
||||
* - Le serveur vient d'être démarré (3 premières minutes).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* HISTORIQUE DES CANAUX:
|
||||
* UnrealIRCd a le mode canal +H qui peut être utilisé par les utilisateurs pour relire
|
||||
* historique de la chaîne, comme avant leur adhésion. Pour des informations générales
|
||||
* sur cette fonctionnalité, voir https://www.unrealircd.org/docs/Channel_history
|
||||
*
|
||||
* Les limites de l'historique peuvent être configurées via set::history.
|
||||
* Les valeurs par défaut sont probablement déjà bien pour toi, mais si vous êtes sur un
|
||||
* système à faible mémoire ou ayant des milliers de canaux, vous voudrez peut-être re vérifier.
|
||||
* Voir https://www.unrealircd.org/docs/Set_block#set::history pour les options.
|
||||
*
|
||||
* En plus de cela, vous pouvez avoir "persistent channel history", qui
|
||||
* signifie que l'historique des chaînes est stocké crypté sur le disque
|
||||
* afin qu'il soit préservé entre les redémarrages du serveur IRC, voir
|
||||
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
|
||||
* La fonction d'historique persistant n'est PAS activée par défaut car vous
|
||||
* devez de configurer un bloque de secret { }. Ce qui suit est un simple
|
||||
* exemple avec des mots de passe stockés directement dans le fichier de configuration.
|
||||
* Pour une meilleure sécurité, voir https://www.unrealircd.org/docs/Secret_block
|
||||
* sur des moyens alternatifs pour ne pas stocker les mots de passe directement dans la configuration.
|
||||
*/
|
||||
//secret historydb { password "somepassword"; }
|
||||
//set { history { channel { persist yes; db-secret "historydb"; } } }
|
||||
|
||||
/* Enfin, vous souhaiterez peut-être avoir un MOTD (Le message du jour), cela peut être
|
||||
* fait en créant un archive de text 'ircd.motd' dans votre répertoire conf/.
|
||||
* Ce fichier sera montré à vos utilisateurs lors de la connexion.
|
||||
* Pour plus d'informations, voir https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
/*
|
||||
* Un problème ou besoin d'aide supplémentaire ?
|
||||
* 1) https://www.unrealircd.org/docs/
|
||||
* 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,684 +0,0 @@
|
||||
/* Arquivo de configuração para o UnrealIRCd 6
|
||||
* OBSERVAÇÃO: Este arquivo utiliza a tradução Português do Brasil (pt-br).
|
||||
*
|
||||
* Apenas copie este arquivo para seu diretório conf/ e renomeie-o para 'unrealircd.conf'
|
||||
*
|
||||
* Se você estiver com pressa, pode CTRL+F (localizar) pelo termo ALTERAR ISTO
|
||||
* Os pontos que obrigatoriamente devem ser alterados estão indicados por essas duas palavras.
|
||||
* No entanto, recomendamos que você revise este arquivo linha por linha
|
||||
* e o altere conforme necessário, para que possa ver todos os pontos básicos e seus valores.
|
||||
*
|
||||
* ANTES DE PROSSEGUIR:
|
||||
* Importante: Todas as linhas, exceto { e } terminam com ;
|
||||
* Isto é muito importante, visto que se você esquecer um ; em algum lugar,
|
||||
* a checagem do arquivo de configuração irá criticar e o arquivo não será processado!
|
||||
* Se esta é sua primeira experiência com o arquivo de configuração do UnrealIRCd
|
||||
* então nós recomendamos fortemente que você se dedique um pouco para ler sobre a sintaxe,
|
||||
* isto levará apenas alguns minutos e o ajudará consideravelmente:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* Documentação completa do UnrealIRCd 6 (bem extensa!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_6_documentation
|
||||
*
|
||||
* Questões Frequentes:
|
||||
* https://www.unrealircd.org/docs/FAQ
|
||||
*/
|
||||
|
||||
/* Este é um comentário, todo o texto aqui será ignorado (comentário de tipo #1) */
|
||||
// Este também é um comentário, e esta linha será ignorada (comentário de tipo #2)
|
||||
# Este também é um comentário, e novamente esta linha será ignorada (comentário de tipo #3)
|
||||
|
||||
/* O UnrealIRCd faz um intenso uso dos Módulos, que permitem que você personalize completamente
|
||||
* o conjunto de recursos que você deseja habilitar no UnrealIRCd.
|
||||
* Veja: https://www.unrealircd.org/docs/Modules
|
||||
*
|
||||
* Utilizando o include abaixo, nós instruímos o IRCd a ler o arquivo
|
||||
* 'modules.default.conf' que carregará mais de 150 módulos
|
||||
* que vem com o UnrealIRCd. Em outras palavras: Isso simplesmente irá carregar
|
||||
* todos os recursos disponíveis no UnrealIRCd.
|
||||
* Se você está configurando o UnrealIRCd pela primeira vez, nós sugerimos que você
|
||||
* o use. Então, quando tudo estiver configurado e rodando, você poderá retornar
|
||||
* e personalizar a lista (se você desejar).
|
||||
*/
|
||||
include "modules.default.conf";
|
||||
|
||||
/* Agora vamos incluir alguns outros arquivos de configuração também:
|
||||
* - help/help.conf para nosso sistema de ajuda /HELPOP
|
||||
* - badwords.conf para os modos de usuário e canal +G
|
||||
* - spamfilter.conf como um exemplo para filtragem de spam
|
||||
* (comentado)
|
||||
* - operclass.default.conf contém algumas boas classes de operadores que
|
||||
* você pode usar em seus blocos de operadores.
|
||||
*/
|
||||
include "help/help.conf";
|
||||
include "badwords.conf";
|
||||
//include "spamfilter.conf";
|
||||
include "operclass.default.conf";
|
||||
include "snomasks.default.conf";
|
||||
|
||||
/* Carrega por padrão o módulo de cloaking em SHA256 (implementado em 2021): */
|
||||
loadmodule "cloak_sha256";
|
||||
/* Ou carrega o antigo módulo de clocking em MD5 que veio do UnrealIRCd 3.2/4/5: */
|
||||
//loadmodule "cloak_md5";
|
||||
|
||||
// ALTERAR ISTO (o 'name' e 'info')
|
||||
/* Este é o bloco me { } que basicamente diz quem somos.
|
||||
* Ele define o nome do nosso servidor, algumas linhas informativas e um "sid" único.
|
||||
* O id do servidor (sid) precisa iniciar com um dígito numérico seguido por dois dígitos numéricos
|
||||
* ou alfanuméricos de A à Z. O sid precisa ser único para a sua rede de IRC (cada servidor
|
||||
* deve ter seu próprio sid). É comum utilizar 001 para seu primeiro servidor.
|
||||
*/
|
||||
me {
|
||||
name "irc.exemplo.org";
|
||||
info "Servidor ExemploNET";
|
||||
sid "001";
|
||||
}
|
||||
// ALTERAR ISTO:
|
||||
/* O bloco admin { } define quem os usuário verão quando eles digitarem /ADMIN.
|
||||
* Normalmente contém infomações de como eles podem contatar o administrador.
|
||||
*/
|
||||
admin {
|
||||
"Bob Smith";
|
||||
"bob";
|
||||
"email@exemplo.org";
|
||||
}
|
||||
|
||||
/* Clientes e servidores são colocados no bloco class { }, e os definimos aqui.
|
||||
* Blocos Class consistem nos seguintes itens:
|
||||
* - pingfreq: com que frequência será efetuado ping em um usuário / servidor (em segundos)
|
||||
* - connfreq: quantas vezes tentamos nos conectar a este servidor (em segundos)
|
||||
* - sendq: o tamanho máximo da fila para uma conexão
|
||||
* - recvq: o recebimento máximo da fila para uma conexão (controle de flood)
|
||||
*/
|
||||
|
||||
/* Classe Client padrão, com valores de limites aceitáveis */
|
||||
class clients
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 1000;
|
||||
sendq 200k;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Uma classe Especial para IRCOps com valores de limites mais altos */
|
||||
class opers
|
||||
{
|
||||
pingfreq 90;
|
||||
maxclients 50;
|
||||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
|
||||
/* Classe Server padrão, com valores de limites aceitáveis */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* tenta se conectar a cada 15 segundos */
|
||||
maxclients 10; /* máximo de servidores */
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
/* Blocos allow definem quais classe clients podem se conectar a este servidor.
|
||||
* Isto permite que você adicione uma senha ao servidor ou restrinja o acesso ao servidor
|
||||
* apenas por IPs específicos. Você também pode configurar o máximo de conexões
|
||||
* permitidas por IP.
|
||||
* Veja também: https://www.unrealircd.org/docs/Allow_block
|
||||
*/
|
||||
|
||||
/* Permite todos entrarem, mas apenas 3 conexões simultâneas por IP */
|
||||
allow {
|
||||
mask *;
|
||||
class clients;
|
||||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Exemplo de um bloco especial allow em um IP específico:
|
||||
* Requer que usuários neste IP conectem por uma senha. Se a senha
|
||||
* estiver correta, então permite 20 conexões simultâneas deste IP.
|
||||
*/
|
||||
//allow {
|
||||
// mask 192.0.2.1;
|
||||
// class clients;
|
||||
// password "alguma_senha_secreta";
|
||||
// maxperip 20;
|
||||
//}
|
||||
|
||||
/* Blocos oper definem os Operadores de IRC.
|
||||
* Operadores de IRC são pessoas com "privilégios extras" comparado a outros,
|
||||
* eles podem por exemplo dar /KILL (derrubar) outras pessoas, iniciar uma conexão com server,
|
||||
* dar /JOIN (entrar) em canais ainda que eles estejam banidos, etc.
|
||||
*
|
||||
* Para mais informações sobre como se tornar um IRCOp e como executar
|
||||
* tarefas administrativas, veja: https://www.unrealircd.org/docs/IRCOp_guide
|
||||
*
|
||||
* Para obter mais detalhes sobre o bloco oper { } , veja
|
||||
* https://www.unrealircd.org/docs/Oper_block
|
||||
*/
|
||||
|
||||
/* Aqui está um exemplo de um bloco oper para o 'bobsmith'
|
||||
* VOCÊ DEVE ALTERAR ISTO!! (o nome do operador e a senha)
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
|
||||
/* Tecnicamente você pode deixar as senhas de oper em texto puro no arquivo de configuração, mas
|
||||
* isto é ALTAMENTE DESENCORAJADO. No lugar disso, você deve gerar uma senha hasheada:
|
||||
* No *NIX, execute: ./unrealircd mkpasswd
|
||||
* No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
|
||||
* ... e então cole a senha no campo abaixo:
|
||||
*/
|
||||
password "$argon2id..etc..";
|
||||
/* Veja https://www.unrealircd.org/docs/Authentication_types para
|
||||
* mais informações, incluindo formas melhores de autenticação
|
||||
* como por exemplo o 'certfp', e como gerar hashes no Windows.
|
||||
*/
|
||||
|
||||
/* Permissões de oper são definidos no bloco 'operclass'.
|
||||
* Veja https://www.unrealircd.org/docs/Operclass_block
|
||||
* O UnrealIRCd vem com um número padrão de blocos, leia
|
||||
* o artigo acima para ver a lista completa. Nós escolhemos o 'netadmin' aqui.
|
||||
*/
|
||||
operclass netadmin;
|
||||
swhois "é o Administrador da Rede";
|
||||
vhost netadmin.exemplo.org;
|
||||
}
|
||||
|
||||
/* Blocos listen definem as portas onde o servidor irá escutar.
|
||||
* Em outras palavras: as portas que os clientes e servidores podem usar
|
||||
* para se conectar a este servidor.
|
||||
*
|
||||
* Sintaxe:
|
||||
* listen {
|
||||
* ip <ip>;
|
||||
* port <port>;
|
||||
* options {
|
||||
* <options....>;
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Porta padrão 6667 do IRC
|
||||
* Insecure plaintext (NOT for production servers)
|
||||
* This listen block is here only for quick testing.
|
||||
* Delete or comment out this listen block on production servers
|
||||
* and use TLS on port 6697 instead.
|
||||
*/
|
||||
listen {
|
||||
ip *;
|
||||
port 6667;
|
||||
}
|
||||
|
||||
/* Porta padrão 6697 do IRC sob tunel SSL/TLS */
|
||||
listen {
|
||||
ip *;
|
||||
port 6697;
|
||||
options { tls; }
|
||||
}
|
||||
|
||||
/* Porta especial padrão para uso de servidores sob tunel SSL/TLS para vincular a outros servidores */
|
||||
listen {
|
||||
ip *;
|
||||
port 6900;
|
||||
options { tls; serversonly; }
|
||||
}
|
||||
|
||||
/* OBSERVAÇÃO: Se você está em uma shell IRCd com múltiplos IPs e você usa
|
||||
* os blocos listen { } acima, então você provavelmente receberá o erro
|
||||
* 'Address already in use' e o IRCd não iniciará.
|
||||
* Isto significa que você DEVE colocar em escuta um IP específico no lugar do '*', como por exemplo:
|
||||
* listen { ip 1.2.3.4; port 6667; }
|
||||
* Claro, substituindo o IP pelo IP que foi fornecido a você.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Blocos link permitem que você vincule múltiplos servidores uns aos outros para formar uma rede.
|
||||
* Veja https://www.unrealircd.org/docs/Tutorial:_Linking_servers
|
||||
*/
|
||||
//link hub.exemplo.org
|
||||
//{
|
||||
// incoming {
|
||||
// mask *@alguma_coisa;
|
||||
// }
|
||||
//
|
||||
// outgoing {
|
||||
// bind-ip *; /* ou especificar um IP */
|
||||
// hostname hub.exemplo.org;
|
||||
// port 6900;
|
||||
// options { tls; }
|
||||
// }
|
||||
//
|
||||
// /* Nós usamos a impressão digital SPKI do outro servidor para autenticação.
|
||||
// * Abra uma shell no OUTRO SERVIDOR e execute o comando abaixo para obter a impressão digital:
|
||||
// * No *NIX, execute: ./unrealircd spkifp
|
||||
// * No Windows, execute: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
|
||||
// */
|
||||
// password "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUV=" { spkifp; }
|
||||
//
|
||||
// class servers;
|
||||
//}
|
||||
|
||||
/* O Bloco link para o services é muito mais simples.
|
||||
* Para mais informações sobre o que são o Services,
|
||||
* leia https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
//link services.exemplo.org
|
||||
//{
|
||||
// incoming {
|
||||
// mask 127.0.0.1;
|
||||
// }
|
||||
//
|
||||
// password "me_altere_por_favor";
|
||||
//
|
||||
// class servers;
|
||||
//}
|
||||
|
||||
/* U-lines dão a outros servidores (ainda) mais poderes/comandos.
|
||||
* Se você usa o services, você DEVE adicioná-los aqui. Você deve adicionar o
|
||||
* nome do servidor do services no bloco ulines { } no arquivo de configuração
|
||||
* em todo servidor UnrealIRCd da sua rede.
|
||||
* IMPORTANTE: Jamais insira o nome do servidor do UnrealIRCd aqui,
|
||||
* é apenas para o Services!
|
||||
*/
|
||||
//ulines {
|
||||
// services.exemplo.org;
|
||||
//}
|
||||
|
||||
/* Aqui você pode adicionar uma senha (apenas para IRCOps) para os comandos /DIE e /RESTART.
|
||||
* Isto para que se tenha uma pouco mais de proteção contra reinicio acidental
|
||||
* do servidor e ele seja derrubado inadvertidante.
|
||||
*/
|
||||
drpass {
|
||||
restart "reiniciar";
|
||||
die "matar";
|
||||
}
|
||||
|
||||
/* O bloco log define o que deve ser registrado (logado) e em qual arquivo.
|
||||
* Leia também https://www.unrealircd.org/docs/Log_block
|
||||
*/
|
||||
|
||||
/* Este é um bom padrão, ele registra tudo, exceto
|
||||
* coisas de depuração e comandos join/part/kick.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.log" { maxsize 100M; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Além do log regular, também adicionamos um arquivo de log em JSON.
|
||||
* Isso inclui muitas informações sobre cada evento, sendo ótimo
|
||||
* para fins de auditoria e legível por máquinas. No entanto,
|
||||
* é menos legível para humanos.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.json.log" { maxsize 250M; type json; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Com o "aliases" você pode criar um atalho como /ALGUMACOISA para enviar uma mensagem para
|
||||
* algum usuário ou bot. Eles são usados normalmente por services.
|
||||
*
|
||||
* Nós temos um arquivo com um número pré-definido de atalhos, confira o diretório alias/ .
|
||||
* Como exemplo, aqui nós incluímos todos os atalhos utilizados pelo services anope.
|
||||
*/
|
||||
include "aliases/anope.conf";
|
||||
|
||||
/* Bane nicks para que eles não sejam utilizados por usuários comuns */
|
||||
//ban nick {
|
||||
// mask "*C*h*a*n*S*e*r*v*";
|
||||
// reason "Reservado para Services";
|
||||
//}
|
||||
|
||||
/* Bane um IP
|
||||
* Observe que você normalmente usa /KLINE, /GLINE e /ZLINE para isto.
|
||||
*/
|
||||
//ban ip {
|
||||
// mask 195.86.232.81;
|
||||
// reason "Te odeio";
|
||||
//}
|
||||
|
||||
/* Bane um servidor - se observarmos este servidor vinculado a alguém, então o expulsaremos */
|
||||
//ban server {
|
||||
// mask pedro.usp.br;
|
||||
// reason "Caia fora daqui.";
|
||||
//}
|
||||
|
||||
/* Bane um usuário - mas você normalmente usa /KLINE ou /GLINE para isso */
|
||||
//ban user {
|
||||
// mask *usuariotroll@*.saturn.bbn.com;
|
||||
// reason "Idiota";
|
||||
//}
|
||||
|
||||
/* Este tipo de banimento permite que clientes sejam banidos com base no seu nome real (realname)
|
||||
* ou campo 'gecos'.
|
||||
*/
|
||||
//ban realname {
|
||||
// mask "Time Swat";
|
||||
// reason "FORCAOSTENSIVA";
|
||||
//}
|
||||
|
||||
//ban realname {
|
||||
// mask "sub7server";
|
||||
// reason "sub7";
|
||||
//}
|
||||
|
||||
/* Exceções de banimento e TKL. Permite que você crie exceções a usuários/IPs a um
|
||||
* KLINE, GLINE, etc.
|
||||
* Se você é um IRCOp com IP estático (e não há ninguém não confiável utilizando este IP),
|
||||
* então nós sugerimos que você seja adicionado aqui. Desta forma, você sempre poderá entrar
|
||||
* mesmo se acidentalmente você colocar um *LINE em si mesmo.
|
||||
*/
|
||||
|
||||
/* Exceções de banimento de tipo 'all' protegem você de GLINE, GZLINE, QLINE, SHUN */
|
||||
//except ban {
|
||||
// mask *@192.0.2.1;
|
||||
// type all;
|
||||
//}
|
||||
|
||||
/* Isto permite que clientes do IRCCloud não tenham restrição de IP por conexão
|
||||
* e também cria exceção a eles de flood por conexão.
|
||||
*/
|
||||
except ban {
|
||||
mask *.irccloud.com;
|
||||
type { maxperip; connect-flood; }
|
||||
}
|
||||
|
||||
/* deny dcc permite você possa banir nomes de arquivos transferidos por DCC */
|
||||
//deny dcc {
|
||||
// filename "*sub7*";
|
||||
// reason "Possível Virus Sub7";
|
||||
//}
|
||||
|
||||
/* deny channel permite a você banir um canal (por máscara) */
|
||||
//deny channel {
|
||||
// channel "*warez*";
|
||||
// reason "Warez é ilegal";
|
||||
// class "clients";
|
||||
//}
|
||||
|
||||
/* VHosts (Hosts Virtuais) permite aos usuários adquirirem um vhost diferente.
|
||||
* Veja https://www.unrealircd.org/docs/Vhost_block
|
||||
*/
|
||||
|
||||
/* Exemplo de vhost que você pode usar. No IRC digite: /VHOST teste teste
|
||||
* OBSERVAÇÃO: apenas pessoas com o host 'unrealircd.com' podem usá-lo, então
|
||||
* tenha certeza de modificar o vhost::mask antes de seu teste.
|
||||
*/
|
||||
//vhost {
|
||||
// vhost eu.odeio.microsefrs.com;
|
||||
// mask *@unrealircd.com;
|
||||
// login "teste";
|
||||
// password "teste";
|
||||
//}
|
||||
|
||||
/* Blocos blacklist irão consultar um serviço externo de blacklist
|
||||
* sempre que um usuário se conectar, para saber se seu endereço de IP é conhecido
|
||||
* por ataques de drone, como uma máquina hackeada, etc.
|
||||
* Documentação: https://www.unrealircd.org/docs/Blacklist_block
|
||||
* Ou apenas dê uma olhada nos blocos abaixo.
|
||||
*/
|
||||
|
||||
/* DroneBL é provavelmente o serviço de blacklist mais popular usada por servidores de IRC.
|
||||
* Veja https://dronebl.org/ para ler a documentação e
|
||||
* o significado dos tipos de resposta. No momento em que este arquivo foi escrito, nós usamos os tipos:
|
||||
* 3: IRC Drone, 5: Flooder, 6: Drone ou bot de spam desconhecido,
|
||||
* 7: Drone de DDoS, 8: Proxy SOCKS, 9: Proxy HTTP, 10: ProxyChain,
|
||||
* 11: Proxy de página web, 12: Resolvedor de DNS aberto, 13: Atacantes de força bruta,
|
||||
* 14: Proxy Wingate público, 15: Roteador/Gateway comprometido,
|
||||
* 16: Virus que tentam conseguir root.
|
||||
*/
|
||||
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 detectado. Confira https://dronebl.org/lookup?ip=$ip para detalhes.";
|
||||
}
|
||||
|
||||
/* EFnetRBL, veja https://rbl.efnetrbl.org/ para ler a documentação
|
||||
* e o significado dos tipos de resposta.
|
||||
* No momento em que este arquivo foi escrito: 1 é proxy público, 4 é TOR, 5 é drones/flooders.
|
||||
*
|
||||
* OBSERVAÇÃO: Se você deseja permitir proxies TOR no seu servidor, então
|
||||
* você precisa remover o '4;' abaixo da seção reply.
|
||||
*/
|
||||
blacklist efnetrbl {
|
||||
dns {
|
||||
name rbl.efnetrbl.org;
|
||||
type record;
|
||||
reply { 1; 4; 5; }
|
||||
}
|
||||
action gline;
|
||||
ban-time 24h;
|
||||
reason "Proxy/Drone/TOR detectado. Confira https://rbl.efnetrbl.org/?i=$ip para detalhes.";
|
||||
}
|
||||
|
||||
/* Você pode incluir outros arquivos de configuração */
|
||||
/* include "klines.conf"; */
|
||||
|
||||
/* Configuração da Rede */
|
||||
set {
|
||||
// ALTERAR ISTO, todos os 4 itens abaixo
|
||||
network-name "ExemploNET";
|
||||
default-server "irc.exemplo.org";
|
||||
services-server "services.exemplo.org";
|
||||
stats-server "stats.exemplo.org";
|
||||
|
||||
/* Valores Padrão */
|
||||
help-channel "#ajuda";
|
||||
cloak-prefix "Clk";
|
||||
prefix-quit "Saindo";
|
||||
|
||||
/* Chaves cloak devem ser a mesma em todos os servidores da rede.
|
||||
* Eles são usados para geração de hosts mascarados e devem ser mantidos em segredo.
|
||||
* VOCÊ PRECISA ALTERAR ISTO!
|
||||
* As chaves devem ser 3 strings (ou mais) de 80 caracteres randômicos
|
||||
* e devem se constituir de letras minúsculas (a-z), maiúsculas (A-Z) e números (0-9).
|
||||
* No *NIX, você pode executar './unrealircd gencloak' na sua shell para que o
|
||||
* UnrealIRCd gere 3 strings randômicas para você.
|
||||
* No Windows, você pode executar "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
|
||||
*/
|
||||
cloak-keys {
|
||||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||||
"adicione a outra";
|
||||
"adicione a outra";
|
||||
}
|
||||
}
|
||||
|
||||
/* Configurações específicas do servidor */
|
||||
set {
|
||||
// POR ÚLTIMO, VOCÊ PRECISA ALTERAR ISTO:
|
||||
kline-address 'definir.seu.endereco.de.email'; /* e-mail ou URL exibido quando um usuário é banido */
|
||||
|
||||
modes-on-connect "+ixw"; /* quando os usuários conectam, esses modos de usuário é atribuído a eles */
|
||||
modes-on-oper "+xws"; /* quado alguém se torna IRCOp, esses modos de usuário é atribuído a ele */
|
||||
modes-on-join "+nt"; /* modos de canal padrão, quando um novo canal é criado */
|
||||
oper-auto-join "#opers"; /* IRCOps entram automaticamente neste canal */
|
||||
options {
|
||||
hide-ulines; /* esconde U-lines do /MAP e /LINKS */
|
||||
show-connect-info; /* exibe a mensagem "looking up your hostname" ao se conectar */
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* número máximo de canais que um usuário pode entrar com /JOIN */
|
||||
|
||||
/* O tempo mínimo que um usuário precisa estar conectado antes de ser permitido
|
||||
* utilizar a mensagem de QUIT. Isto irá ajudar no combate a SPAM.
|
||||
*/
|
||||
anti-spam-quit-message-time 10s;
|
||||
|
||||
/* Ou simplesmente defina um quit estático, de forma que qualquer motivo de /QUIT seja ignorado */
|
||||
/* static-quit "Cliente saindo"; */
|
||||
|
||||
/* static-part faz com que o mesmo acima aconteça ao comando /PART */
|
||||
/* static-part yes; */
|
||||
|
||||
/* Proteção contra Flood:
|
||||
* Há uma série de configurações para isso, e a maioria delas tem bons padrões.
|
||||
* Veja https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* Configurações para filtragem de SPAM */
|
||||
spamfilter {
|
||||
ban-time 1d; /* duração padrão de um ban *LINE definido pelo filtro de spam */
|
||||
ban-reason "Spam/Propaganda"; /* motivo padrão */
|
||||
virus-help-channel "#help"; /* canal utilizado para usar em uma ação de 'virus de canal' */
|
||||
/* except "#help"; exceção de canal ao filtro de spam */
|
||||
}
|
||||
|
||||
/* Restringindo certos comandos
|
||||
* Veja https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
except {
|
||||
connect-time 60; /* após 60 segundos, o usuário pode usar o comando /LIST */
|
||||
identified yes; /* ou imediatamente, se estiver identificado ao services */
|
||||
reputation-score 24; /* ou se tiver um score de reputação maior ou igual a 24 */
|
||||
}
|
||||
}
|
||||
invite {
|
||||
except {
|
||||
connect-time 120;
|
||||
identified yes;
|
||||
reputation-score 24;
|
||||
}
|
||||
}
|
||||
/* Somando a possibilidade de restringir qualquer comando,
|
||||
* também existem 4 tipos especiais
|
||||
* que você pode restringir. Eles são "private-message",
|
||||
* "private-notice", "channel-message" e "channel-notice".
|
||||
* Eles estão todos comentados neste exemplo:
|
||||
*/
|
||||
//private-message {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
//private-notice {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* A seguir será configurado o limite de conexão para "unknown users".
|
||||
*
|
||||
* Quando o UnrealIRCd detecta um número elevado de usuários conectando de um endereço IP
|
||||
* que nunca viu antes, então conexões do novo IP são rejeitadas quando estiverem
|
||||
* acima da taxa abaixo especificada. Por exemplo, na taxa 10:60 apenas 10 usuários por minuto podem conectar
|
||||
* por este IP que nunca foi visto antes. Endereços de IP conhecidos sempre podem entrar,
|
||||
* independente da taxa definida. O mesmo para usuários que se conectam via SASL.
|
||||
*
|
||||
* Leia também https://www.unrealircd.org/docs/Connthrottle para detalhes.
|
||||
* Ou apenas continue lendo a configuração abaixo:
|
||||
*/
|
||||
|
||||
set {
|
||||
connthrottle {
|
||||
/* Primeiro nós configuramos quais usuários serão excluídos
|
||||
* das restrições. Estes usuários sempre conseguirão acessar.
|
||||
* Por padrão, entra como exceção usuários identificados com o services
|
||||
* com um score igual ou maior a 24. Um score 24 significa que
|
||||
* este IP foi conectado a esta rede por pelo menos 2 horas em algum momento
|
||||
* no mês passado (ou no mínimo por 1 hora se registrado).
|
||||
* Nós também permitimos usuários que se identificaram através do services via
|
||||
* SASL para passar por cima destas restrições.
|
||||
*/
|
||||
except {
|
||||
reputation-score 24;
|
||||
identified yes;
|
||||
/* Para mais informações, leia
|
||||
* https://www.unrealircd.org/docs/Mask_item
|
||||
*/
|
||||
}
|
||||
|
||||
/* Novos usuários são todos os usuários que não pertencem
|
||||
* ao grupo known-users. Eles são considerados "novos" e no
|
||||
* caso de um número elevado de novos usuários se conectando,
|
||||
* eles serão sujeiros ao limite de taxa de conexão.
|
||||
* Por padrão a taxa é 20 novos usuários locais por minuto
|
||||
* e 30 novos usuários globais por minuto.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* Esta seção configura quando este módulo não será ativado.
|
||||
* As configurações padrão desabilitarão o módulo quando:
|
||||
* - O módulo reputation esteja em execução a menos de
|
||||
* uma semana. Se estiver rodando há menos de 1 semana, então ainda temos
|
||||
* dados insuficientes para considerar quem é um "known user" (usuário conhecido).
|
||||
* - O servidor acabou de ser inicializado (primeiros 3 minutos).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* HISTÓRICO DE CANAL:
|
||||
* UnrealIRCd possui modo de canal +H que pode ser usado pelos usuários para recuperar
|
||||
* o histórico do canal antes deles terem entrado. Para informações gerais
|
||||
* sobre esta funcionalidade, leia https://www.unrealircd.org/docs/Channel_history
|
||||
*
|
||||
* Os limites do histórico podem ser configurados pelo set::history. Os padrões são
|
||||
* provavelmente bons para você, mas se você estiver em um sistema com pouca memória
|
||||
* ou tem centenas de canais, então você pode querer verificar esses padrões novamente. Leia
|
||||
* https://www.unrealircd.org/docs/Set_block#set::history
|
||||
* para ver as opções disponíveis.
|
||||
*
|
||||
* Além disso, você pode definir um "histórico de canal persistente", o que
|
||||
* significa que o histórico do canal é armazenado de modo criptografado no disco e é preservado
|
||||
* entre os reinícios do servidor. Leia
|
||||
* https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
|
||||
* A funcionalidade de histórico persistente NÃO é habilitado por padrão porque você
|
||||
* precisa configurar o Bloco secret { } para ele antes. A seguir um exemplo simples
|
||||
* de senhas armazenadas diretamente no arquivo de configuração:
|
||||
* Para obter uma melhor segurança, leia https://www.unrealircd.org/docs/Secret_block
|
||||
* como formas alternativas para não armazenar senhas diretamente no arquivo de configuração.
|
||||
*/
|
||||
//secret historydb { password "algumasenha"; }
|
||||
//set { history { channel { persist yes; db-secret "historydb"; } } }
|
||||
|
||||
/* Finalmente, você pode querer ter um MOTD (Mensagem do Dia), isto pode ser
|
||||
* feito criando um arquivo de texto 'ircd.motd' no seu diretório conf/ .
|
||||
* O texto dentro deste arquivo será exibido aos usuários ao se conectarem.
|
||||
* Para mais informações, veja https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
/*
|
||||
* Problemas ou precisa de ajuda?
|
||||
* 1) https://www.unrealircd.org/docs/
|
||||
* 2) https://www.unrealircd.org/docs/FAQ <- responde a 80% das suas perguntas!
|
||||
* 3) Se ainda assim você está enfrentando problemas, você pode obter ajuda em:
|
||||
* - Fóruns: https://forums.unrealircd.org/
|
||||
* - IRC: irc.unrealircd.org (SSL na porta 6697) / #unreal-support
|
||||
* Observe que pedimos que você leia a documentação e as perguntas frequentes (FAQ) primeiro!
|
||||
*/
|
||||
@@ -1,692 +0,0 @@
|
||||
/* UnrealIRCd 6 için yapılandırma dosyası
|
||||
*
|
||||
* Türkçe Çeviri: Diablo - (Serkan Sepetçi)
|
||||
* İletişim: irc.turkirc.net:6667 - diablo@unrealircd.org
|
||||
*
|
||||
* Bu dosyayı conf/ dizininize kopyalayın ve 'unrealircd.conf' olarak adlandırın.
|
||||
*
|
||||
* Aceleniz varsa CTRL+F tuşlarına basıp şunu yapabilirsiniz: BUNU DEĞİŞTİRİN
|
||||
* Değiştirilmesi gereken maddeler bu iki kelimeyle belirtilir.
|
||||
* Ancak aslında dosyayı satır satır incelemenizi ve gereken yerde
|
||||
* düzenlemenizi öneririz. Böylece tüm temel öğeleri ve bunların nasıl
|
||||
* ayarlandığını görebilirsiniz.
|
||||
*
|
||||
* DEVAM ETMEDEN ÖNCE:
|
||||
* Önemli: { ve } dışındaki tüm satırlar ; ile biter
|
||||
* Bu çok önemlidir. Eğer bir şeyi yanlış yaparsanız,
|
||||
* yapılandırma dosyası ayrıştırıcısı hata verecek ve
|
||||
* dosya doğru şekilde çalışmayacaktır!
|
||||
*
|
||||
* Eğer bu UnrealIRCd yapılandırma dosyasıyla ilk deneyiminizse
|
||||
* sözdizimi hakkında biraz okumanızı öneririz.
|
||||
* bu yalnızca birkaç dakika sürer ve size çok yardımcı olacaktır:
|
||||
* https://www.unrealircd.org/docs/Configuration#Configuration_file_syntax
|
||||
*
|
||||
* UnrealIRCd 6 belgeleri (çok kapsamlı!):
|
||||
* https://www.unrealircd.org/docs/UnrealIRCd_6_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ı
|
||||
* (yorumlandı)
|
||||
* - 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";
|
||||
include "snomasks.default.conf";
|
||||
|
||||
/* Varsayılan gizleme modülünü yükleyin (2021'den itibaren): */
|
||||
loadmodule "cloak_sha256";
|
||||
/* Veya eski modülü UnrealIRCd 3.2/4/5'ten yükleyin: */
|
||||
//loadmodule "cloak_md5";
|
||||
|
||||
// BUNU DEĞİŞTİRİN ('ad' ve 'bilgi'):
|
||||
/* 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). İlk sunucu için 001 kullanılması uygundur.
|
||||
*/
|
||||
me {
|
||||
name "irc.example.org";
|
||||
info "ExampleNET Server";
|
||||
sid "001";
|
||||
}
|
||||
|
||||
// BUNU DEĞİŞTİRİN:
|
||||
/* 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 20M;
|
||||
}
|
||||
|
||||
/* 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 3 bağlantı izini verir */
|
||||
allow {
|
||||
mask *;
|
||||
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 {
|
||||
// mask 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
|
||||
*/
|
||||
|
||||
/* İşte 'bobsmith' için örnek bir oper bloğu
|
||||
* BUNU DEĞİŞTİRMELİSİN!! (oper adı ve şifre)
|
||||
*/
|
||||
oper bobsmith {
|
||||
class opers;
|
||||
mask *@*;
|
||||
|
||||
/* Teknik olarak oper şifrelerini conf'a düz metin olarak koyabilirsiniz, ancak bu
|
||||
* KESİNLİKLE ÖNERİLEN bir durum değildir. Bunun yerine bir şifre karması oluşturmalısınız:
|
||||
* *NIX'te şunu çalıştırın: ./unrealircd mkpasswd
|
||||
* Windows'ta şunu çalıştırın: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" mkpasswd
|
||||
* .. ve ardından sonucu aşağıya yapıştırın:
|
||||
*/
|
||||
|
||||
password "$argon2id..etc..";
|
||||
|
||||
/* 'Certfp' gibi daha iyi kimlik doğrulama türleri ve Windows'ta
|
||||
* karmaların nasıl oluşturulacağı da dahil olmak üzere daha fazla bilgi için
|
||||
* https://www.unrealircd.org/docs/Authentication_types adresine bakın.
|
||||
*/
|
||||
|
||||
/* 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
|
||||
* Insecure plaintext (NOT for production servers)
|
||||
* This listen block is here only for quick testing.
|
||||
* Delete or comment out this listen block on production servers
|
||||
* and use TLS on port 6697 instead.
|
||||
*/
|
||||
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.
|
||||
* *NIX'te şunu çalıştırın: ./unrealircd spkifp
|
||||
* Windows'ta şunu çalıştırın: "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" spkifp
|
||||
*/
|
||||
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.
|
||||
* ÖNEMLİ: 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
|
||||
*/
|
||||
|
||||
/* Bu iyi bir varsayılandır, hata ayıklama ve
|
||||
* join/part/kick dışındaki her şeyi günlüğe kaydeder.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.log" { maxsize 100M; }
|
||||
}
|
||||
}
|
||||
|
||||
/* Düzenli günlük kaydına ek olarak bir JSON günlük dosyası ekleyin.
|
||||
* Bu her olayla ilgili birçok bilgi içerir dolayısıyla denetim amaçları
|
||||
* için mükemmeldir ve makine tarafından okunabilir. Ancak insanlar için daha az okunabilir.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
file "ircd.json.log" { maxsize 250M; type json; }
|
||||
}
|
||||
}
|
||||
|
||||
/* 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 buradan.";
|
||||
// }
|
||||
|
||||
/* Ban user - normalde /KLINE veya /GLINE kullanıldığını unutmayınız */
|
||||
// ban user {
|
||||
// mask *tirc@*.saturn.bbn.com;
|
||||
// reason "Aptal";
|
||||
// }
|
||||
|
||||
/* 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 'tüm' GLINE, GZLINE, QLINE, SHUN gibi banlardan koruyacaktır */
|
||||
// except ban {
|
||||
// mask *@192.0.2.1;
|
||||
// type all;
|
||||
// }
|
||||
|
||||
/* This allows IRCCloud connections in without maxperip restrictions
|
||||
* and also exempt them from connect-flood throttling.
|
||||
*/
|
||||
except ban {
|
||||
mask *.irccloud.com;
|
||||
type { maxperip; connect-flood; }
|
||||
}
|
||||
|
||||
/* Deny dcc bloğu, sunucu üzerinden DCC yoluyla dosya gönderilmesine izin vermeyecektir */
|
||||
// deny dcc {
|
||||
// filename "*sub7*";
|
||||
// reason "Possible Sub7 Virus";
|
||||
// }
|
||||
|
||||
/* 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 tespit edildi. 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 {
|
||||
// BU 4 ÖĞENİN TÜMÜNÜ DEĞİŞTİRİN:
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
/* Normal varsayılanlar */
|
||||
help-channel "#Help";
|
||||
cloak-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 80 karakterlik 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: './unrealircd gencloak' Unrealircd sizin için rastgele 3 adet dizin oluşturur.
|
||||
* Bunu NIX üzerinde çalıştırabilirsiniz.
|
||||
* On Windows, use "C:\Program Files\UnrealIRCd 6\bin\unrealircdctl" gencloak
|
||||
*/
|
||||
cloak-keys {
|
||||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||||
"ve diğeri";
|
||||
"ve diğeri";
|
||||
}
|
||||
}
|
||||
|
||||
/* Sunucunun kendine özgü yapılandırması */
|
||||
|
||||
set {
|
||||
// SON OLARAK, BU SONRAKİ ÖĞEYİ DEĞİŞTİRMENİZ GEREKİR:
|
||||
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 */
|
||||
modes-on-join "+nt"; /* yeni bir kanal oluşturulduğunda varsayılan kanal modlarını 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; */
|
||||
|
||||
/* Flood Koruması:
|
||||
* Bunun için birçok ayarları vardır ve çoğu iyi varsayılanlara sahiptir.
|
||||
* Görmeniz için: https://www.unrealircd.org/docs/Set_block#set::anti-flood
|
||||
*/
|
||||
anti-flood {
|
||||
}
|
||||
|
||||
/* 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 */
|
||||
}
|
||||
|
||||
/* Belirli komutları kısıtlayın.
|
||||
* See https://www.unrealircd.org/docs/Set_block#set::restrict-commands
|
||||
*/
|
||||
restrict-commands {
|
||||
list {
|
||||
except {
|
||||
connect-time 60;
|
||||
identified yes;
|
||||
reputation-score 24;
|
||||
}
|
||||
}
|
||||
invite {
|
||||
except {
|
||||
connect-time 120;
|
||||
identified yes;
|
||||
reputation-score 24;
|
||||
}
|
||||
}
|
||||
/* Yukarıda gösterildiği gibi herhangi bir komutu kısıtlama
|
||||
* yeteneğine sahiptir. Ayrıca kısıtlayabileceğiniz 4
|
||||
* özel tip vardır. Bunlar "private-message",
|
||||
* "private-notice", "channel-message" ve "channel-notice".
|
||||
* Bu örnekte olduğu gibi (kapalı) yorumlanmıştır:
|
||||
*/
|
||||
//private-message {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
//private-notice {
|
||||
// except { connect-time 10; }
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Aşağıdaki ayar "bilinmeyen kullanıcılar" için bağlantı kısıtlamasını yapılandıracaktır.
|
||||
*
|
||||
* UnrealIRCd, IP adreslerinden bağlanan çok sayıda kullanıcı tespit ettiğinde
|
||||
* daha önce görülmemişse, yeni IP'lerden gelen bağlantılar ayarlanan
|
||||
* hızın üzerinde reddedilir. örneğin 10:60'ta dakikada sadece 10 kullanıcı daha önce
|
||||
* görülmemiş şekilde bağlanabilir. Bilinen IP adresleri, ayarlanan orandan bağımsız olarak
|
||||
* her zaman girebilir. SASL kullanarak giriş yapan kullanıcılar için de aynıdır.
|
||||
*
|
||||
* Ayrıntılar için https://www.unrealircd.org/docs/Connthrottle adresine bakınız.
|
||||
* Veya aşağıdaki varsayılan yapılandırma ayarlarını okumaya devam edin:
|
||||
*/
|
||||
|
||||
set {
|
||||
connthrottle {
|
||||
/* ilk önce "bilinen kullanıcılar" dediğimiz şeyi yapılandırmalıyız.
|
||||
* Varsayılan olarak bunlar, IP adresleri üzerinde 24 veya
|
||||
* daha yüksek puana sahip kullanıcılardır. 24 puan IP'nin geçen ay
|
||||
* en az 2 saat (veya kayıtlıysa en az 1 saat) boyunca bu sunucuya
|
||||
* bağlı olduğu anlamına gelir.
|
||||
* Sasl-bypass seçeneği başka bir ayardır. Bu ayar
|
||||
* SASL aracılığıyla hizmetlere kimlik doğrulaması yapan
|
||||
* kullanıcıların da bilinen kullanıcılar olarak kabul edildiği anlamına gelir.
|
||||
* "known-users" grubundaki kullanıcılar (herhangi bir reputation
|
||||
* veya SASL) modülleri tarafından her zaman izin verilir.
|
||||
*/
|
||||
except {
|
||||
reputation-score 24;
|
||||
identified yes;
|
||||
/* daha fazla seçenek için bkz.
|
||||
* https://www.unrealircd.org/docs/Mask_item
|
||||
*/
|
||||
}
|
||||
|
||||
/* Yeni kullanıcılar, aşağıdakilere ait olmayan tüm
|
||||
* bilinen-kullanıcılar grubundandır. Bunlar "yeni" ve
|
||||
* bu tür yeni kullanıcıların çok sayıda bağlanması durumunda
|
||||
* bağlantı hızı sınırlamasına tabidirler.
|
||||
* Varsayılan bu oran dakikada 20 yeni yerel kullanıcı
|
||||
* ve dakikada 30 yeni global kullanıcı olarak belirlenmiştir.
|
||||
*/
|
||||
new-users {
|
||||
local-throttle 20:60;
|
||||
global-throttle 30:60;
|
||||
}
|
||||
|
||||
/* Bu modülün ne zaman aktif OLMAYACAĞINI yapılandırır.
|
||||
* Varsayılan ayarlar, şu durumlarda modülü devre dışı bırakacaktır:
|
||||
* - Reputation modülü 1 haftadan kısa bir süredir çalışıyor ise.
|
||||
* 1 haftadan az çalışıyorsa, kimin "bilinen kullanıcı"
|
||||
* olduğunu düşünmek için yeterli veri yoktur.
|
||||
* - Sunucu yeni açıldı (ilk 3 dakika).
|
||||
*/
|
||||
disabled-when {
|
||||
reputation-gathering 1w;
|
||||
start-delay 3m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* KANAL GEÇMİŞİ:
|
||||
* UnrealIRCd, kullanıcılar tarafından bir kanala katılmadan önce
|
||||
* kanal geçmişini okumak için, kullanılabilen +H kanal moduna sahip olmalıdır.
|
||||
* Bu özellik hakkında bilgi için bkz. https://www.unrealircd.org/docs/Channel_history
|
||||
*
|
||||
* Geçmiş limitleri set::history aracılığıyla yapılandırılabilir. Varsayılan ayarlar
|
||||
* muhtemelen sizin için zaten iyidir, ancak düşük bellekli bir sistemdeyseniz veya
|
||||
* binlerce kanalınız varsa, iki kez kontrol etmek isteyebilirsiniz. Seçenekler için
|
||||
* https://www.unrealircd.org/docs/Set_block#set::history adresine bakın.
|
||||
*
|
||||
* Buna ek olarak "kalıcı kanal geçmişine" sahip olabilirsiniz. Bu kanal
|
||||
* geçmişinin diskte şifreli olarak depolandığı ve böylece IRC sunucusu yeniden
|
||||
* başlatılması halinde korunması anlamına gelir.
|
||||
* bkz. https://www.unrealircd.org/docs/Set_block#Persistent_channel_history
|
||||
* Kalıcı geçmiş özelliği varsayılan olarak ETKİNLEŞTİRİLMEMİŞTİR bunun için
|
||||
* bir secret { } bloğu yapılandırmanız gerekir. Aşağıdaki yapılandırma dosyasında
|
||||
* saklanan parolalar doğrudan bunlara basit bir örnektir.
|
||||
* Daha iyi güvenlik elde etmek için https://www.unrealircd.org/docs/Secret_block
|
||||
* adresini okuyun böylece şifreleri doğrudan yapılandırmada saklamazsınız.
|
||||
*/
|
||||
//secret historydb { password "somepassword"; }
|
||||
//set { history { channel { persist yes; db-secret "historydb"; } } }
|
||||
|
||||
/* Son olarak, bir MOTD'ye (Günün Mesajı) sahip olmak isteyebilirsiniz, bunu
|
||||
* conf/ dizininizde bir 'ircd.motd' metin dosyası oluşturarak yapabilirsiniz.
|
||||
* Bu dosya bağlantıda kullanıcılarınıza gösterilecektir.
|
||||
* Daha fazla bilgi için bkz. https://www.unrealircd.org/docs/MOTD_and_Rules
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Sorun mu yaşıyorsunuz veya daha fazla yardıma mı ihtiyacınız var?
|
||||
* 1) https://www.unrealircd.org/docs/
|
||||
* 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,339 +0,0 @@
|
||||
/* [6.2.6-git]
|
||||
* 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
|
||||
* This is the highly recommended approach of doing customizations!
|
||||
* 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 problem with this option #2 is that you need to track ALL
|
||||
* changes in UnrealIRCd, that means: every loadmodule line that
|
||||
* we add or remove in each and every release. If you don't do this
|
||||
* or forget one little loadmodule line then you will end up with:
|
||||
* * Missing functionality (that could have been useful)
|
||||
* * Breaking of existing functionality, like the (in)famous example
|
||||
* of when the existing svslogin command got split off in a separate
|
||||
* new svslogin module and people who didn't load that new module
|
||||
* would have services who would not set users as 'logged in'.
|
||||
* Or the existing anti connect-flood feature being split off into
|
||||
* the 'connect-flood' module, so your server suddenly being
|
||||
* vulnerable to connect flooding because you failed to load it.
|
||||
* So please do know what you are doing if you choose option #2.
|
||||
* Again, best is to go for option #1 and opt-out.
|
||||
*/
|
||||
|
||||
/*** 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 "operinfo"; /* not really a command but for whois */
|
||||
loadmodule "opermotd";
|
||||
loadmodule "sajoin";
|
||||
loadmodule "samode";
|
||||
loadmodule "sapart";
|
||||
loadmodule "sdesc";
|
||||
loadmodule "sethost";
|
||||
loadmodule "setident";
|
||||
loadmodule "stats";
|
||||
loadmodule "tkl"; /* also server-to-server */
|
||||
loadmodule "tline";
|
||||
loadmodule "trace";
|
||||
loadmodule "tsctl";
|
||||
loadmodule "unsqline";
|
||||
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";
|
||||
loadmodule "slog";
|
||||
loadmodule "creationtime";
|
||||
loadmodule "sreply";
|
||||
loadmodule "unreal_server_compat";
|
||||
|
||||
// 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";
|
||||
loadmodule "svso";
|
||||
loadmodule "svslogin";
|
||||
|
||||
|
||||
/*** Channel modes ***/
|
||||
loadmodule "chanmodes/chanowner"; /* +q */
|
||||
loadmodule "chanmodes/chanadmin"; /* +a */
|
||||
loadmodule "chanmodes/chanop"; /* +o */
|
||||
loadmodule "chanmodes/halfop"; /* +h */
|
||||
loadmodule "chanmodes/voice"; /* +v */
|
||||
loadmodule "chanmodes/key"; /* +k */
|
||||
loadmodule "chanmodes/limit"; /* +l */
|
||||
loadmodule "chanmodes/inviteonly"; /* +i */
|
||||
loadmodule "chanmodes/secret"; /* +s */
|
||||
loadmodule "chanmodes/private"; /* +p */
|
||||
loadmodule "chanmodes/moderated"; /* +m */
|
||||
loadmodule "chanmodes/noexternalmsgs"; /* +n */
|
||||
loadmodule "chanmodes/topiclimit"; /* +t */
|
||||
loadmodule "chanmodes/floodprot"; /* +f */
|
||||
loadmodule "chanmodes/nocolor"; /* +c */
|
||||
loadmodule "chanmodes/noctcp"; /* +C */
|
||||
loadmodule "chanmodes/stripcolor"; /* +S */
|
||||
loadmodule "chanmodes/isregistered"; /* +r */
|
||||
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/wallops"; /* +w (listen to /WALLOPS messages) */
|
||||
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 TLS users may private message you) */
|
||||
loadmodule "usermodes/privdeaf"; /* +D (don't let other user PM you) */
|
||||
|
||||
|
||||
/*** Extended Bans ***/
|
||||
loadmodule "extbans/join"; /* +b ~join (old ~j mode, prevent only joins) */
|
||||
loadmodule "extbans/quiet"; /* +b ~quiet (old ~q mode, prevent only messaging) */
|
||||
loadmodule "extbans/nickchange"; /* +b ~nickchange (old ~n mode, prevent only nick changes) */
|
||||
loadmodule "extbans/realname"; /* +b ~realname (old ~r mode, ban by real name) */
|
||||
loadmodule "extbans/account"; /* +b ~account (old ~a mode, ban/exempt if logged in with services account) */
|
||||
loadmodule "extbans/inchannel"; /* +b ~channel (old, ~c mode, ban/exempt if in channel) */
|
||||
loadmodule "extbans/operclass"; /* +b ~operclass (old ~O mode, ban/exempt by operclass) */
|
||||
loadmodule "extbans/certfp"; /* +b ~certfp (old ~S mode, ban/exempt by certfp) */
|
||||
loadmodule "extbans/textban"; /* +b ~text (old ~T mode, censor or block text) */
|
||||
loadmodule "extbans/timedban"; /* +b ~time (old ~t mode, timed bans / temporary bans) */
|
||||
loadmodule "extbans/partmsg"; /* +b ~partmsg (old ~p mode, hide part/quit message) */
|
||||
loadmodule "extbans/securitygroup"; /* +b ~security-group (old ~G mode, security group) */
|
||||
loadmodule "extbans/country"; /* +b ~country (country via geoip) */
|
||||
loadmodule "extbans/msgbypass"; /* +e ~msgbypass (old ~m mode, bypass message restrictions) */
|
||||
loadmodule "extbans/flood"; /* +e ~flood (flood exemption for chanmode +f/+F) */
|
||||
loadmodule "extbans/asn"; /* +b ~asn (ASN via geoip) */
|
||||
loadmodule "extbans/inherit"; /* +b ~inherit (inherit bans from another channel) */
|
||||
|
||||
|
||||
/*** 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 "channel-context";
|
||||
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 */
|
||||
loadmodule "chathistory"; /* CHATHISTORY client command, 005 and a CAP (draft) */
|
||||
loadmodule "monitor"; /* MONITOR command with functionality similar to WATCH */
|
||||
loadmodule "extended-monitor"; /* add away status, gecos and userhost changes to MONITOR (draft) */
|
||||
loadmodule "standard-replies"; /* Standard Replies */
|
||||
loadmodule "no-implicit-names"; /* Opt out of receiving implicit NAMES when joining a channel */
|
||||
loadmodule "extended-isupport"; /* draft/extended-isupport */
|
||||
loadmodule "multiline"; /* draft/multiline */
|
||||
|
||||
/*** RPC modules ***/
|
||||
// There's a JSON-RPC interface that can be used to communicate with UnrealIRCd
|
||||
// outside of IRC. See https://www.unrealircd.org/docs/JSON-RPC for more info.
|
||||
// Or, more technical, for a list of all JSON-RPC Methods, have a look at
|
||||
// https://www.unrealircd.org/docs/JSON-RPC:Technical_documentation
|
||||
// (Don't just look at the list of rpc/* modules below, occasionaly some rpc
|
||||
// functionality is together in a regular module which has no rpc/* prefix)
|
||||
//
|
||||
// By loading the following modules, we enable RRPC for intra-server JSON-RPC,
|
||||
// so calls like modules.list work properly accross the network. It DOES NOT
|
||||
// enable the webserver, nor does it listen on any RPC socket. For that, you
|
||||
// need to include "conf/rpc.modules.default.conf";
|
||||
loadmodule "rpc/rpc";
|
||||
loadmodule "rpc/stats";
|
||||
loadmodule "rpc/user";
|
||||
loadmodule "rpc/server";
|
||||
loadmodule "rpc/channel";
|
||||
loadmodule "rpc/server_ban";
|
||||
loadmodule "rpc/server_ban_exception";
|
||||
loadmodule "rpc/name_ban";
|
||||
loadmodule "rpc/spamfilter";
|
||||
loadmodule "rpc/log";
|
||||
loadmodule "rpc/whowas";
|
||||
loadmodule "rpc/message";
|
||||
loadmodule "rpc/security_group";
|
||||
|
||||
/*** 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"; /* TLS certificate fingerprint in /WHOIS (& more) */
|
||||
loadmodule "tls_cipher"; /* Store and retrieve TLS cipher of local and remote clients */
|
||||
loadmodule "tls_antidos"; /* prevent TLS DoS (renegotiate floods) */
|
||||
loadmodule "connect-flood"; /* throttling against connection flooding */
|
||||
loadmodule "max-unknown-connections-per-ip"; /* limit number of connections in 'unknown state' */
|
||||
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 (IP address) */
|
||||
loadmodule "userhost-tag"; /* unrealircd.org/userhost tag for ircops (real host) */
|
||||
loadmodule "geoip-tag"; /* unrealircd.org/geoip tag for ircops (country) */
|
||||
loadmodule "json-log-tag"; /* unrealircd.org/json-log tag and CAP for ircops */
|
||||
loadmodule "issued-by-tag"; /* unrealircd.org/issued-by tag for servers and ircops */
|
||||
loadmodule "real-quit-reason"; /* unrealircd.org/real-quit-reason for servers only */
|
||||
loadmodule "targetfloodprot"; /* set::anti-flood::target-flood protection */
|
||||
loadmodule "watch-backend"; /* used by watch and other modules */
|
||||
loadmodule "geoip_base"; /* needed for ALL geoip functions */
|
||||
loadmodule "websocket_common"; /* helper functions for websocket (internal) */
|
||||
loadmodule "spamreport"; /* Spam reporting to a blacklist */
|
||||
loadmodule "crule"; /* Rules in spamfilter::rule and deny link::rule */
|
||||
loadmodule "maxperip"; /* allow::maxperip restrictions */
|
||||
loadmodule "utf8functions"; /* Various UTF8 helper functions */
|
||||
loadmodule "utf8only"; /* UTF8ONLY via set::utf8-only */
|
||||
loadmodule "portinfo"; /* storing local_port and server_port of users */
|
||||
loadmodule "isupport"; /* ISUPPORT / numeric 005 handling */
|
||||
|
||||
@if !defined(NO_DEFAULT_GEOIP)
|
||||
@if $GEOIP_ENGINE != "none"
|
||||
loadmodule "$GEOIP_ENGINE";
|
||||
@endif
|
||||
@if module-loaded("geoip_classic")
|
||||
set {
|
||||
geoip-classic {
|
||||
ipv4-database "https://geoip.unrealircd.org/classic/GeoIP.dat" { url-refresh 14d; url-fail warn; }
|
||||
ipv6-database "https://geoip.unrealircd.org/classic/GeoIPv6.dat" { url-refresh 14d; url-fail warn; }
|
||||
asn-ipv4-database "https://geoip.unrealircd.org/classic/GeoIPASNum.dat" { url-refresh 14d; url-fail warn; }
|
||||
asn-ipv6-database "https://geoip.unrealircd.org/classic/GeoIPASNumv6.dat" { url-refresh 14d; url-fail warn; }
|
||||
}
|
||||
}
|
||||
@endif
|
||||
@if module-loaded("geoip_mmdb")
|
||||
set {
|
||||
geoip-mmdb {
|
||||
database "https://geoip.unrealircd.org/mmdb/GeoIP.mmdb" { url-refresh 14d; url-fail warn; }
|
||||
asn-database "https://geoip.unrealircd.org/mmdb/GeoIP-ASN.mmdb" { url-refresh 14d; url-fail warn; }
|
||||
}
|
||||
}
|
||||
@endif
|
||||
@endif
|
||||
@@ -1,249 +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";
|
||||
@if module-loaded("staff")
|
||||
set { staff-file "network.staff"; }
|
||||
@endif
|
||||
|
||||
|
||||
/*** 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";
|
||||
@if module-loaded("antirandom")
|
||||
set {
|
||||
antirandom {
|
||||
/* THRESHOLD:
|
||||
* This is the most important setting of all.
|
||||
* For every randomly looking item the user gets a certain amount of
|
||||
* 'points'. If the points reach the 'threshold' then the appropriate
|
||||
* action is taken (killed, *lined, see later on).
|
||||
* lower = more randomly looking users will be caught
|
||||
* (but also more innocent users).
|
||||
* higher = less chance of innocent users getting killed
|
||||
* (but also less chance on bots getting caught).
|
||||
* <2: DON'T!!
|
||||
* 4: Works good, probably a few more innocent kills, but if you have a
|
||||
* big problem with drone attacks then this might be a good 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 6;
|
||||
|
||||
/* BAN-ACTION:
|
||||
* Action to take whenever the user is caught 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.
|
||||
* Tip: you might want to put in an entry to a FAQ or an email address where
|
||||
* users can mail if they have been caught and don't know what to do.
|
||||
* NOTE: One of the various reasons that "innocent users" are blocked is when
|
||||
* they 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?
|
||||
* Useful to catch GnStA5FYhiTH51TUkf style random nicks as random.
|
||||
* Enabled by default.
|
||||
*/
|
||||
convert-to-lowercase yes;
|
||||
|
||||
/* SHOW-FAILEDCONNECTS:
|
||||
* This will send out a notice whenever a randomly looking user has been caught
|
||||
* during connecting. This can be pretty noisy.
|
||||
* Especially recommended to enable during the first few days you use this module.
|
||||
*/
|
||||
show-failedconnects yes;
|
||||
|
||||
/* EXCEPT:
|
||||
* Don't do antirandom checks for these users.
|
||||
*/
|
||||
except {
|
||||
/* Exempt WEBIRC gateways because these frequently
|
||||
* cause false positives. So the default is yes.
|
||||
*/
|
||||
webirc yes;
|
||||
|
||||
/* Exempt LAN users */
|
||||
ip { 192.168.*; 127.*; }
|
||||
|
||||
// Or by hostname:
|
||||
//mask { *.example.net; }
|
||||
|
||||
/* You can also exempt security groups: */
|
||||
// security-group known-users;
|
||||
|
||||
/* For all options, see https://www.unrealircd.org/docs/Mask_item */
|
||||
}
|
||||
}
|
||||
}
|
||||
@endif
|
||||
|
||||
// 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://...';
|
||||
// }
|
||||
//}
|
||||
|
||||
// Load the webserver module, needed for websocket (see next)
|
||||
loadmodule "webserver";
|
||||
|
||||
// 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 characters of
|
||||
// mixed "scripts", where (for example) some characters are in
|
||||
// Latin script and other characters are in Cyrillic script.
|
||||
loadmodule "antimixedutf8";
|
||||
@if module-loaded("antimixedutf8")
|
||||
set {
|
||||
antimixedutf8 {
|
||||
/* Take action at this 'score' (lower = more sensitive)
|
||||
*
|
||||
* A score of 2 or 3 will catch a lot but also
|
||||
* catch innocent users who are not using a pure
|
||||
* Latin script, such as Russian people who
|
||||
* commonly use a mix of Latin and Cyrillic.
|
||||
*
|
||||
* A score of 8 is a safe default.
|
||||
*/
|
||||
score 8;
|
||||
|
||||
/* Action to take, see:
|
||||
* https://www.unrealircd.org/docs/Actions
|
||||
*/
|
||||
ban-action block;
|
||||
|
||||
/* Block/kill/ban reason (sent to user) */
|
||||
ban-reason "Mixed character spam";
|
||||
|
||||
/* Duration of ban (does not apply to block/kill) */
|
||||
ban-time 4h; // For other types
|
||||
|
||||
/* Except these users - see
|
||||
* https://www.unrealircd.org/docs/Mask_item for options.
|
||||
*/
|
||||
//commented out by default:
|
||||
//except {
|
||||
// security-group known-users;
|
||||
// webirc yes;
|
||||
//}
|
||||
}
|
||||
}
|
||||
@endif
|
||||
|
||||
// This module will add support for /EXTJWT command,
|
||||
// used for generating authorization tokens for external services.
|
||||
// The feature is based on a specification described here:
|
||||
// https://github.com/ircv3/ircv3-specifications/pull/341
|
||||
// Please create your configuration block based on the example below.
|
||||
// Do not uncomment the example.
|
||||
//
|
||||
// Supported JWT methods: NONE (not recommended), HS256, HS384, HS512,
|
||||
// ES256, ES384, ES512, RS256, RS384, RS512
|
||||
// Method NONE does not use any cryptography to sign the token. This
|
||||
// is only useful for checking whether the service works when initially
|
||||
// setting it up. HS* methods use a password that must be shared with
|
||||
// the verification service. ES* and RS* methods use public-private key
|
||||
// pairs, so the verification service, knowing your public key, can't
|
||||
// generate own valid tokens.
|
||||
//
|
||||
// For methods requiring a key, place it in your "conf" directory.
|
||||
//
|
||||
// Use following shell commands to create keys if needed:
|
||||
// To generate RS256, RS384 or RS512 private key (for UnrealIRCd):
|
||||
// openssl genrsa -out privkey.pem 4096
|
||||
// To generate matching public key (for the external service to verify
|
||||
// the token):
|
||||
// openssl rsa -in privkey.pem -pubout > pubkey.pem
|
||||
//
|
||||
// To generate ES256, ES384 or ES512 private key (for UnrealIRCd):
|
||||
// openssl ecparam -genkey -name secp521r1 -noout -out privkey.pem
|
||||
// To generate matching public key (for the external service to verify
|
||||
// the token):
|
||||
// openssl ec -in privkey.pem -pubout -out pubkey.pem
|
||||
//
|
||||
// In all cases, substitute your preferred file names for "pubkey.pem"
|
||||
// and "privkey.pem".
|
||||
|
||||
//loadmodule "extjwt";
|
||||
//extjwt {
|
||||
// /* The configuration below is used when no service name is
|
||||
// * provided by the user command.
|
||||
// */
|
||||
// method "HS256"; /* described above */
|
||||
// expire-after 30; /* seconds */
|
||||
// secret "somepassword"; /* required for HS* methods */
|
||||
// /* Optional service blocks for generating different tokens.
|
||||
// * Add as many of these as you need.
|
||||
// */
|
||||
// service "service1" {
|
||||
// method "ES512";
|
||||
// //secret "anotherpassword"; /* required for HS* method */
|
||||
// key "es512.pem"; /* required for ES* and RS* methods */
|
||||
// //verify-url 'https://example.com/verify/?t=%s'; /* URL for your validation service - optional; use single quotes here! */
|
||||
// expire-after 60; /* seconds, will be inherited from main if not given */
|
||||
// };
|
||||
// /* Another service block. */
|
||||
// service "service2" {
|
||||
// method "RS256";
|
||||
// key "RS256.pem";
|
||||
// };
|
||||
//};
|
||||
@@ -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 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
|
||||
* 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 { local; } }
|
||||
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,39 +0,0 @@
|
||||
/* This file defines a number of default rpc-class blocks which you can
|
||||
* use in your rpc-user blocks (via rpc-user::rpc-class).
|
||||
*
|
||||
* This file is normally included via rpc.modules.default.conf, or you
|
||||
* can do so from your unrealircd.conf through:
|
||||
* include "rpc-class.default.conf";
|
||||
*
|
||||
* The rpc-class block is documented at:
|
||||
* https://www.unrealircd.org/docs/Rpc-class_block
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* If you want to tweak rpc-class { } blocks, simply define your own
|
||||
* and optionally use 'parent read-only' or the like if you want to inherit.
|
||||
* Do not edit the build-in rpc-classes from below ('full' and 'read-only').
|
||||
*/
|
||||
|
||||
rpc-class full {
|
||||
permissions {
|
||||
all;
|
||||
}
|
||||
}
|
||||
|
||||
rpc-class read-only {
|
||||
permissions {
|
||||
rpc;
|
||||
stats;
|
||||
log;
|
||||
user { list; get; }
|
||||
whowas { get; }
|
||||
server { list; get; }
|
||||
channel { list; get; }
|
||||
server_ban { list; get; }
|
||||
server_ban_exception { list; get; }
|
||||
spamfilter { list; get; }
|
||||
name_ban { list; get; }
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
/* This file will load all UnrealIRCd modules needed for JSON-RPC,
|
||||
* this allows remote (web) endpoints to query and control UnrealIRCd.
|
||||
* To actually use it, you would also need one or more rpc-user blocks
|
||||
* and one or more special listen blocks, see the documentation at
|
||||
* https://www.unrealircd.org/docs/JSON-RPC.
|
||||
*
|
||||
* You can include this file from your unrealircd.conf, using:
|
||||
* include "rpc.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 rpc.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 rpc.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 rpc.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.
|
||||
*/
|
||||
|
||||
/* The RPC modules are loaded in modules.default.conf nowadays,
|
||||
* so we only need to load the web server and add the default
|
||||
* local RPC UNIX socket socket.
|
||||
*/
|
||||
|
||||
/* These are required for RPC to work */
|
||||
loadmodule "webserver";
|
||||
loadmodule "websocket_common";
|
||||
|
||||
/* And a RPC listen socket */
|
||||
@if !defined($NO_DEFAULT_RPC_SOCKET)
|
||||
listen {
|
||||
file "rpc.socket";
|
||||
options { rpc; }
|
||||
}
|
||||
@endif
|
||||
|
||||
/* And a memory log block */
|
||||
@if !defined($NO_DEFAULT_LOG_MEMORY_BLOCK)
|
||||
log {
|
||||
source {
|
||||
all;
|
||||
!debug;
|
||||
!join.LOCAL_CLIENT_JOIN;
|
||||
!join.REMOTE_CLIENT_JOIN;
|
||||
!part.LOCAL_CLIENT_PART;
|
||||
!part.REMOTE_CLIENT_PART;
|
||||
!kick.LOCAL_CLIENT_KICK;
|
||||
!kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
memory {
|
||||
max-lines 1000;
|
||||
max-time 7d;
|
||||
}
|
||||
}
|
||||
}
|
||||
@endif
|
||||
|
||||
/* Also load the default rpc-class { } blocks */
|
||||
include "rpc-class.default.conf";
|
||||
@@ -1,270 +0,0 @@
|
||||
/* Default snomask configuration.
|
||||
*
|
||||
* DO NOT EDIT THIS FILE! IT WILL BE OVERWRITTEN DURING NEXT UPGRADE!!
|
||||
* If you want to customize it, make a copy of this file
|
||||
* (eg: name it snomasks.custom.conf) and edit it.
|
||||
* Then include that file from your unrealircd.conf instead of this one.
|
||||
*/
|
||||
|
||||
/* Server bans snomask - 'b' */
|
||||
log {
|
||||
source {
|
||||
tkl.BAN_REALNAME;
|
||||
tkl.TKL_ADD;
|
||||
tkl.TKL_DEL;
|
||||
tkl.TKL_ADD_TEMPSHUN;
|
||||
tkl.TKL_DEL_TEMPSHUN;
|
||||
tkl.TKL_EXPIRE;
|
||||
tkl.RMTKL_COMMAND;
|
||||
}
|
||||
destination {
|
||||
snomask b;
|
||||
}
|
||||
}
|
||||
|
||||
/* Blacklist snomask: 'B' */
|
||||
log {
|
||||
source {
|
||||
blacklist;
|
||||
}
|
||||
destination {
|
||||
snomask B;
|
||||
}
|
||||
}
|
||||
|
||||
/* Local client connects snomask - 'c' */
|
||||
log {
|
||||
source {
|
||||
connect.LOCAL_CLIENT_CONNECT;
|
||||
connect.LOCAL_CLIENT_DISCONNECT;
|
||||
}
|
||||
destination {
|
||||
snomask c;
|
||||
}
|
||||
}
|
||||
|
||||
/* Remote client connects snomask - 'C' */
|
||||
log {
|
||||
source {
|
||||
connect.REMOTE_CLIENT_CONNECT;
|
||||
connect.REMOTE_CLIENT_DISCONNECT;
|
||||
}
|
||||
destination {
|
||||
snomask C;
|
||||
}
|
||||
}
|
||||
|
||||
/* DCC rejections snomask - 'd' */
|
||||
log {
|
||||
source {
|
||||
dcc;
|
||||
}
|
||||
destination {
|
||||
snomask d;
|
||||
}
|
||||
}
|
||||
|
||||
/* Debug snomask (not recommended) - 'D' */
|
||||
log {
|
||||
source {
|
||||
debug;
|
||||
}
|
||||
destination {
|
||||
snomask D;
|
||||
}
|
||||
}
|
||||
|
||||
/* Floods snomask - 'f' */
|
||||
log {
|
||||
source {
|
||||
flood;
|
||||
}
|
||||
destination {
|
||||
snomask f;
|
||||
}
|
||||
}
|
||||
|
||||
/* Join, parts, kicks - 'j' */
|
||||
log {
|
||||
source {
|
||||
join.LOCAL_CLIENT_JOIN;
|
||||
join.REMOTE_CLIENT_JOIN;
|
||||
part.LOCAL_CLIENT_PART;
|
||||
part.REMOTE_CLIENT_PART;
|
||||
kick.LOCAL_CLIENT_KICK;
|
||||
kick.REMOTE_CLIENT_KICK;
|
||||
}
|
||||
destination {
|
||||
snomask j;
|
||||
}
|
||||
}
|
||||
|
||||
/* Kill snomask */
|
||||
log {
|
||||
source {
|
||||
kill;
|
||||
}
|
||||
destination {
|
||||
snomask k;
|
||||
}
|
||||
}
|
||||
|
||||
/* Local nick changes snomask - 'n' */
|
||||
log {
|
||||
source {
|
||||
nick.LOCAL_NICK_CHANGE;
|
||||
}
|
||||
destination {
|
||||
snomask n;
|
||||
}
|
||||
}
|
||||
|
||||
/* Remote nick changes snomask - 'N' */
|
||||
log {
|
||||
source {
|
||||
nick.REMOTE_NICK_CHANGE;
|
||||
}
|
||||
destination {
|
||||
snomask N;
|
||||
}
|
||||
}
|
||||
|
||||
/* Deny nick (QLINE) rejections snomask - 'q' */
|
||||
log {
|
||||
source {
|
||||
nick.QLINE_NICK_LOCAL_ATTEMPT;
|
||||
nick.QLINE_NICK_REMOTE;
|
||||
}
|
||||
destination {
|
||||
snomask q;
|
||||
}
|
||||
}
|
||||
|
||||
/* Spamfilter hits snomask - 'S' */
|
||||
log {
|
||||
source {
|
||||
tkl.SPAMFILTER_MATCH;
|
||||
}
|
||||
destination {
|
||||
snomask S;
|
||||
}
|
||||
}
|
||||
|
||||
/* IRCOp overriding in channels (OperOverride) - 'o' */
|
||||
log {
|
||||
source {
|
||||
operoverride;
|
||||
}
|
||||
destination {
|
||||
snomask o;
|
||||
}
|
||||
}
|
||||
|
||||
/* IRCOp changing user properties or forcing users to do things - 'O' */
|
||||
log {
|
||||
source {
|
||||
chgcmds;
|
||||
sacmds;
|
||||
}
|
||||
destination {
|
||||
snomask O;
|
||||
}
|
||||
}
|
||||
|
||||
/* VHOST usage - 'v' */
|
||||
log {
|
||||
source {
|
||||
vhost;
|
||||
}
|
||||
destination {
|
||||
snomask v;
|
||||
}
|
||||
}
|
||||
|
||||
/* JSON-RPC usage - 'R' */
|
||||
log {
|
||||
source {
|
||||
rpc;
|
||||
}
|
||||
destination {
|
||||
snomask R;
|
||||
}
|
||||
}
|
||||
|
||||
/* Spam reports - 'r' */
|
||||
log {
|
||||
source {
|
||||
spamreport;
|
||||
}
|
||||
destination {
|
||||
snomask r;
|
||||
}
|
||||
}
|
||||
|
||||
/* Connection-limit rejections (maxperip / connthrottle) - 'x' */
|
||||
log {
|
||||
source {
|
||||
connthrottle.CONNTHROTTLE_IPV6_LIMIT;
|
||||
maxperip.MAXPERIP_LIMIT;
|
||||
}
|
||||
destination {
|
||||
snomask x;
|
||||
}
|
||||
}
|
||||
|
||||
/* Snomask s (server notices) - the "catch all" snomask for all other things */
|
||||
log {
|
||||
source {
|
||||
link;
|
||||
oper;
|
||||
!debug;
|
||||
nomatch;
|
||||
}
|
||||
destination {
|
||||
snomask s;
|
||||
}
|
||||
}
|
||||
|
||||
/* These log sources are sent to all servers (globally).
|
||||
* These are generally two categories:
|
||||
* 1) Things that affect the network as a whole, eg linking
|
||||
* 2) Things that otherwise cannot be logged by a remote server
|
||||
* that may interest ircops. Eg: a spamfilter match,
|
||||
* since that would otherwise not be propagated.
|
||||
*/
|
||||
log {
|
||||
source {
|
||||
/* All link messages affect the network so
|
||||
* these should be global. Except for the
|
||||
* link connecting... and timeout while
|
||||
* connecting.. messages, which can be noisy.
|
||||
*/
|
||||
link;
|
||||
!link.LINK_CONNECTING;
|
||||
!link.LINK_CONNECT_TIMEOUT;
|
||||
!link.SERVER_LINKED_REMOTE;
|
||||
!link.SERVER_LINKED;
|
||||
/* All oper up/downs */
|
||||
oper;
|
||||
/* Flood messages, important to keep an eye on, network-wide */
|
||||
flood;
|
||||
/* TEMPSHUN: these are otherwise missing for snomask 'b' */
|
||||
tkl.TKL_ADD_TEMPSHUN;
|
||||
tkl.TKL_DEL_TEMPSHUN;
|
||||
/* Spamfilter matches: needed for snomask 'S' */
|
||||
tkl.SPAMFILTER_MATCH;
|
||||
/* Critical issue: */
|
||||
tls.TLS_CERT_EXPIRING;
|
||||
/* SAMODE: needed for snomask 'o' */
|
||||
samode.SAMODE_COMMAND;
|
||||
/* Blacklist hits */
|
||||
blacklist;
|
||||
/* Central blocklist hits and errors */
|
||||
central-blocklist;
|
||||
/* Never any debug messages */
|
||||
!debug;
|
||||
}
|
||||
destination {
|
||||
remote;
|
||||
}
|
||||
}
|
||||
@@ -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 notes:
|
||||
* 1) We use match 'xyz' instead of match "xyz". When using single quotes
|
||||
* you don't risk it being interpreted as an URL for remote includes.
|
||||
* 2) 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";
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user