|
- Psycho, 12/2003, www.nnlug.h10.ru, оригинал -
Появилась задачка - поднять свой irc сервер для своих нужд :) Сказано - сделано.
Свой выбор я остановил на ircd-ru, основанном на Bahamut.
Bahamut - это, пожалуй, самый мощный и гибкий сервер заслуживший признание по всему свету.
Команда ircd-RU добавила туда некоторые новые возможности, и главное - правильную работу с многочисленными кодировками.
Забираем ircd-ru:
$ wget http://www.ircd.ru/pub/ircd-RU/ircd-RU-1.0.7-02-stable.tar.gz
Распаковываем.
$ tar -zxvf ircd-RU-1.0.7-02-stable.tar.gz
$ cd ircd-RU-1.0.7-02-stable
Читаем документацию :) Выяснятся, что для работы ircd-ru необходим zlib.
Если его нет то забираем.
# wget http://www.zlib.net/zlib-1.2.1.tar.gz
# tar -zxvf zlib-1.2.1.tar.gz
Дальше по порядку
zlib-1.2.1# ./configure
zlib-1.2.1# make
zlib-1.2.1# make install
Вроде все встало, никто не ругался.
Сервер конфигурируется в несколько шагов:
-
Запустите ./configure --prefix=<installpath>. По умолчанию параметр
<installpath> устанавливается в /usr/local/ircd.
Некоторые параметры ./configure:
--enable-encryption - Включить возможность RC4-шифрования межсерверных
соединений.
--enable-select - Использовать select(2) вместо poll(2).
Необходимо при использовании сервера на Linux
со старым ядром (старше 2.4).
--enable-authmodule - Включить поддержку динамического модуля auth.so,
выполняющего внешнюю аутентификацию клиентов.
--enable-dnsbl - Включить проверку адреса клиента в DNSBL.
Это на тот случай если ./configure не нашел zlib.
--with-zlib=PATH - Указать каталог с библиотекой zlib.
--with-zinc=PATH - Указать каталог с .h-файлами библиотеки zlib.
Полный список параметров можно получить, запустив ./configure --help.
-
Проверьте, содержит ли файл include/paths.h именно те пути, в которые
должен установиться сервер после сборки. Если вы что-либо изменяете в
этом файле, имейте ввиду, что DPATH должен быть абсолютным путем, а все
остальные должны быть относительными от него.
- Отредактируйте файл include/config.h. Имейте ввиду, что HARD_FDLIMIT_ и
INIT_MAXCLIENTS должны быть меньше, чем максимальное разрешенное
количество файловых дескрипторов на процесс; а также, в случае
использования select (--enable-select) меньше либо равно FD_SETSIZE
(обычно определено в системных заголовочных файлах, но может быть
переопределено в Makefile).
- При необходимости отредактируйте Makefile верхнего уровня, например в
случае если вам понадобится подкорректировать CFLAGS.
К конфигурированию расширений ircd-RU! в файле include/config.h имеют
отношения следующие макроподстановки:
- NETWORK_NAME - название IRC сети, которое используется в различных
сообщениях сервера клиенту.
- NO_8BIT_NICKNAMES - если определено, на сервере невозможно использовать
8-битные ники.
- NO_MIXEDALPHA_NICKNAMES - если определено, на сервере невозможно
использовать ники, содержащие одновременно символы латинского и
национального алфавитов.
- NO_MIXEDALPHAWORDS_NICKNAMES - если определено, на сервере невозможно
использовать ники, в которых есть слова, содержащие одновременно символы
латинского и национального алфавитов.
- HIDESTATSCODEPAGES - определяет, скрывать или нет статистику кодовых
страниц, выдаваемую по /stats b, от не операторов.
- WARN_NO_BASE_CODEPAGE - если определено, предупреждение о том, что не
задана базовая кодировка (т.е. та, в которой строковые данные хранятся
внутри сервера), посылается локальным операторам и в syslog.
- _8BITNAMES_CASEINSENSITIVE - определяет, будут ли 8-битные имена ников
и каналов хешироваться и сравниваться как case insensitive.
- _8BITCHANNELNAMES_CASEINSENSITIVE - определяет, будут ли 8-битные имена
каналов хешироваться и сравниваться как case insensitive. Для работы
кода, включаемого этой опцией, также необходимо определенное
_8BITNAMES_CASEINSENSITIVE.
- NICKNAMES_IDENTITY - определяет, будет ли проводиться проверка наличия
"идентичного" ника при обработке команды NICK.
- NOTHELPER_HIDEOPERATOR - определяет, скрывать ли от не операторов
статус оператора, снявшего с себя umode +h.
- HELPER_SPYWHOIS - позволяет операторам с umode +h видеть, кто
запрашивает на них WHOIS.
- CHDIRTOROOT - определяет, будет ли ircd менять свой рабочий каталог на
/ вместо DPATH при старте.
- PROTECTSQUITULINED - не позволяет делать SQUIT U-lined серверов не
администраторам сервисов.
- TIME_OFFSET - добавка в секундах к времени, возвращаемого time(3).
Такая добавка бывает нужна для тех серверов, на машинах которых имеется
постоянное, не меняющееся (меняющееся не более чем на TS_MAX_DELTA)
отклонение от правильного времени.
- STATSERVMAPWRAPPER - включает команду /MAP, являющуюся обверткой для
/StatServ MAP.
- NOILINE_MESSAGE - строка, отсылаемая сервером перед отсоединением
клиенту для которого нет I:lines, определяется в этой макроподстановке.
Текст должен быть обязательно однострочным.
- ALLOWMASKSINNLINE - позволяет использовать маски в первом поле N:line.
Рекомендуется использовать эту возможность только в том случае, если
совершенно нет никакого другого выхода.
- OPERONHOSTMASK - устанавливать клиенту статус IRC оператора при
успешном использовании oper hostmasking.
- HIDE_NETWORK_TOPOLOGY - скрывать топологию сети.
- HIDE_NETWORK_TOPOLOGY_MESSAGE - сообщение в ответ на запрос /LINKS от
пользователя с недостаточным уровнем доступа.
- DO_DNSBL - выполнять проверку адреса клиента в DNSBLs.
Так же, к расширениям ircd-RU! в include/config.h относятся
макроподстановки MAX_CODEPAGE_NAME_LENGTH, MAX_CODEPAGE_FILENAME_LENGTH,
UNKNOWN_CODEPAGE_NAME, CODEPAGES_PREALLOCATE, CHANGECP_NICK, CHANGECP_MAXSUF,
CODEPAGE_HALFSIZE, TRANSLATE_SENDBUFFER_SIZE, TRANSLATE_READBUFFER_SIZE,
DNSBLS_PREALLOCATE, но изменять их значения в обычных случаях
конфигурирования сервера не требуется и не рекомендуется.
После конфигурации приступаем к сборке.
zlib-1.2.1# cd /home/psycho/ircd-RU-1.0.7-02-stable
ircd-RU-1.0.7-02-stable# ./configure
ircd-RU-1.0.7-02-stable# make
Вроде все встало. Идем в /usr/local/ircd/etc и переименуем ircd.conf-dist в ircd.conf
Пример файла конфигурации с официального сайта ircd-RU.
# IRC - Internet Relay Chat, doc/ircd.conf-dist
# Copyright (C) 1994, Helen Rose
#
# 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: ircd.conf-dist,v 1.1.2.4 2003/08/17 07:47:17 rzhe Exp $
#
# This is an example configuration file for the ircd-RU! 1.0.7 and higher IRC
# servers.
#
# This document modified for use by the DALnet IRC network and its upgraded
# server versions by Russell on 10/22/95.
#
# This document updated to comform to current ircd changes and features by
# Cabal95 on 06/21/97.
#
# Other various updates, typo fixes and changes made by DuffJ on 01/08/97
#
# Updated for Bahamut by Epiphani 06/28/99
#
# Updated for Bahamut by driz 3/3/2001
#
# Revised for Bahamut by Ayukawa 10/3/2001
#
# Updated for ircd-RU! and WeNet IRC Network by rzhe 11/27/2001
#
# The options for whether a line is needed or not are:
# MANDATORY: you absolutely MUST have this line
# NETWORKED: you must have this line if you are connecting this irc
# server to any other server (servers can run standalone).
# SUGGESTED: it is highly suggested that you use this line
# OPTIONAL: it's completely up to you whether to define this or not
# DISCOURAGED: you really really should not use this line if at all
# possible.
# OBSOLETE: an old or out of date line that isn't needed.
#
# MANDATORY lines are absolute *musts*, that is, if you do not have this
# line then your server will not work properly. SUGGESTED lines are
# close-to-mandatory (that is, the server will run without it, but you are
# highly encouraged to use these lines).
#
# Note that "*" in a field indicates an "unused" field.
#
# Lines marked with {WeNet} are required if your server is connecting to
# WeNet
#
# ========================================================================
# NOTE! this entire configuration file is read UPSIDE-DOWN! So if you have
# to put something in a specific order (for example, client-connection
# lines), put them in reverse order!
# ========================================================================
#
#
# M: {MANDATORY} - This line sets the server name, description, default
# connect port, and IP address to bind to. If you leave the IP field blank
# or *, then the default IP address will be used.
#
# {WeNet} - Port number 6660 is recommended as the default. This port will
# be used for outgoing connection remote port while processing /CONNECT,
# if the port field in the corresponding C:Line is blank.
#
# There is no more listening on the default connect port. Please check out an
# ATTENTION in P:Lines description below.
#
# {M:Line Syntax}
# M:Hostname:IP:Server Description:Port
#
M:server.wenet.ru:84.28.211.1:Some WeNet Server:6660
#
#
# A: {MANDATORY} - This line provides your administrative information, such as
# contact addresses. This information is viewed with /admin . There
# is no set information to put in the A:Line, but you are encouraged to put at
# least a contact address for the person responsible for the server.
#
A:Generic Internet Access:Admin John Doe:jdoe@generic.com
#
#
# Y: {SUGGESTED} - These lines define connection classes, which allow you to
# fine-tune client and server connections. Clients and servers should be
# placed in seperate classes, and each set of servers should have their own
# class. You may also wish to seperate clients into seperate classes based
# on location.
#
# The class numbers are not arbitrary. In auto-connecting servers, the higher
# number, the higher the auto-connect priority.
#
# {Server Y:Line Syntax}
# Y:Class Number:Ping Frequency:Connect Frequency:Maximum Links:SendQ:Codepages1:Codepages2
#
# {Client Y:Line Syntax}
# Y:Class Number:Ping Frequency:0:Maximum Links:SendQ:Flags:Maximum Clones
#
# Ping Frequency - The amount of time (in seconds) that the server will wait
# before dropping the connection with Ping Timeout.
#
# Connect Frequency - The amount of time between attempts to connect to servers
# in that class.
#
# ATTENTION: You *MUST* set Connect Frequency field to 0 for client Y:Lines and
# you *MUST NOT* set it to 0 for server Y:Lines.
#
# Codepages1 - optional commas-separated connecting translation list.
#
# Codepages2 - optional commas-separated accepting translation list.
#
# Connecting translation list contains codepages (not including the base
# codepage) that the server is agree to translate to and from another server's
# base codepage when it initiates a connection to another server.
#
# Accepting translation list contains codepages (not including the base
# codepage) that the server is agree to translate to and from another server's
# base codepage when it accepts a connection from another server.
#
# Flags - optional client flags. The following clients flags are available
# for now:
#
# 7 - no 8-bit nicknames allowed for this class.
# x - no mixed-alphaber nicknames allowed for this class.
# w - no mixed-alphabet words in nicknames allowed for this class.
# s - dislpay short MOTD in ircd.smotd instead of ircd.motd on client register.
# m - do not display any MOTD to client on register.
# a - do external authentication.
#
# Maximum Clones - maximum allowed connections from the same IP address.
#
#
# {WeNet} - These are the recommended Y:Lines for connecting to WeNet.
# You should have atleast ONE client class, and one oper class as well.
#
# Class 50 - Hub to hub, autoconnect
Y:50:90:60:1:15000000
# Class 51 - Hub to hub, no autoconnect
Y:51:90:60:0:12000000
# Class 52 - Laggy hub to hub, autoconnect
#Y:52:180:60:1:15000000
# Class 53 - Hub to laggy hub, no autoconnect
#Y:53:180:60:0:12000000
#
# Class 40 - Leaf to hub, autoconnect
Y:40:90:90:1:5000000
# Class 41 - Laggy leaf to hub, autoconnect
Y:41:180:90:1:5000000
# Class 42 - Leaf to hub, autoconnect, leaf is agree to translate to and from
# CP1251 for accepting hub
#Y:42:90:90:1:5000000:CP1251
#
# Class 30 - Hub to leaf, no autoconnect
Y:30:90:90:0:5000000
# Class 31 - Hub to laggy leaf, no autoconnect
Y:31:180:90:0:5000000
# Class 32 - Hub to leaf, no autoconnect, hub is agree to translate to and
# from KOI8-F for connecting leaf
#Y:32:90:90:0:5000000::KOI8-F
#
# Class 10 - Known Operators
Y:10:90:0:10:500000
# Class 1 - Normal Users
Y:1:90:0:500:100000::2
# Class 2 - Known/authorized users
Y:2:90:0:1000:100000::2
# Class 3 - Known gate/bnc users
Y:3:90:0:1000:100000::50
#
#
# I: {MANDATORY} - These lines are client-authorization lines. Without them,
# clients will be unable to connect to your server. Wildcards are permitted.
# You may also require a password or port to connect, but are optional.
#
# Ident (RFC 1413) can also be used by placing a @ in the appropriate fields.
#
# {I:Line Syntax}
# I:IP Address Mask:Password:Domain-Mask:Port:Connection Class
#
# Common I:Line allowing anybody to connect to the server:
I:*@*::*@*::1
# Known/authorized users I:Lines
#I:NOMATCH::*@84.28.210.*::2
#I:NOMATCH::*@*.users.myisp.net::2
# Known gate/bnc users I:Lines
#I:NOMATCH::*@84.28.211.1::3
#I:NOMATCH::*@bnc.myisp.net::3
#
# Oper Hostmasking I:Line requiring the user to connect on a specific port (ie.
# 7139), and provide the correct password (ie. $packWitU:opernick:operpass):
#I:*@*:oper.$packWitU:*@*:7149:1
#
# Putting NOMATCH in the first field will stop the ircd from matching against
# the IP, and will force it to match against the hostname.
#I:NOMATCH::rmiller@glass.toledolink.com::1
#
#
# O: {OPTIONAL} - These lines define IRC Operator access. A well-configured
# server should not need an operator online. The ircd configuration can be
# reloaded by issuing a kill -HUP.
#
# If the user issuing the oper command is not coming from the hostname defined,
# the user will receive the error message "No O:Lines for your host". Ident is
# permitted in the hostname field. The class field denotes the Y:Line class
# that you want the user to end up in after they've successfully issued the
# /oper command.
#
# Access flags may be left blank, or wildcarded. Flags are in the form of a
# string. Any combination of the following can be used: (CASE SENSITIVE)
#
# r = access to /rehash server
# R = access to /restart server
# D = access to /die server
# g = oper can send/receive /globops and receive /locops
# w = oper can send/receive /wallops
# l = oper can send /locops
# s = oper can send/receive /chatops
# c = access to do local /squits and /connects
# C = access to do remote /squits and /connects
# k = access to do local /kills
# K = access to do global /kills
# b = oper can /kline users from server
# B = oper can /unkline users from server
# n = oper can send local server notices(/notice $servername message)
# N = oper can send global notices(/notice $*.dal.net message)
# A = oper can set umode +A
# a = oper can set umode +a
# u = oper can set umode +c
# f = oper can set umode +f
# F = oper can set umode +F
# o = local oper, flags included: rgwlsckbBnufF
# O = global oper, flags included: oCKN
#
# Note: the aARD flags must be manually included. They do not appear in any
# wildcard lines, therefore a full set of operflags is OaARD.
#
# {O:Line Syntax}
# O:Hostname:Password:Nickname:Access Flags:Class
#
#O:jdoe@*.generic.com:j0hnsPa$$:john:OaA:10
#
#
# U: {OPTIONAL} - This line defines servers that are allowed to make changes to
# the IRC environment (ie. mode changes), without obstructing them.
#
# {U:Line Syntax}
# U:Server Name:Unused:Unused
#
U:services.some.net:*:*
#
#
# X: {SUGGESTED} - This line defines the passwords required for an oper to
# /restart or /die the server, in addition to them having the R or D flags in
# their O:Line.
#
# {X:Line Syntax}
# X:diepass:restartpass
#
#
# C: {NETWORKED} - These lines define what servers your server tries to connect
# to.
#
# N: {NETWORKED} - These lines define what servers are permitted to initiate
# connections to your server.
#
# C/N Lines MUST be used in pairs. One cannot be used without the other.
#
# Both the C:Line's port field and the N:Line's flag field may be left blank.
# If a port is specified in the C:Line, your server will auto-connect.
#
# If a local IP is specified in the C:Line, your server will bind the remote
# server's socket to that IP. This filed overrides the IP address in M:Line.
#
#
# The flags field in the N:Line accepts a combination of the following:
#
# E - Use RC4 streaming compression.
# Z - Use ZLib compression. It's generally a good idea to compress hub<->hub
# and hub->leaf, but compressing leaf->hub on large client servers is
# discouraged due to higher CPU usage.
# V - Do not use protocol version checking. Disables protocol version sending
# and checking for the server. It is HIGHLY recommended to NOT use this
# flag, especially for networks where the server software is upgraded
# regularly. If the protocol is changed in the next server release and
# protocol checking is disabled, then linking two servers with different
# protocol version may cause unpredictable results.
# N - Do not use names caseinsensitivity checking. NOT recommended for use
# by the same reason as the above.
# C - Do not use channel names caseinsensitivity checking. NOT recommended
# for use by the same reason as the above.
#
# {C/N:Line Syntax}
# C:Remote Hostname:Password:Remote Servername:Port:Class:Local IP
# N:Remote Hostname:Password:Remote Servername:Flags:Class
#
C:24.95.128.27:$eaL1ne:hub1.wenet.ru:6660:40
N:24.95.128.27:$eaL1ne:hub1.wenet.ru:Z:40
#
#
# H: {OPTIONAL} - These lines define who you allow to act as a hub. The first
# field may use wildcards, and the third field MUST be an exact match for a
# server's name (NOT the server's hostname!).
#
# {H:Line Syntax}
# H:Servers which are permitted::Hub Servername
H:*::hub1.wenet.ru
#
#
# K: {OPTIONAL} - These lines define user@host patterns to be banned from
# this particular server (with an optional time field). Note that K: lines
# are *not* global, and if you ban a user they can still use any other IRC
# server (unless they have specifically been banned there as well).
#
# The time field (same as reason) is only used if you #define
# TIMED_KLINES in config.h, and even then they are discouraged.
#
# {K:Line Syntax}
# K:Hostmask:Reason:Username
#
# Wildcards are permitted in any one of the fields, in other words, you can
# K:*::* if you wanted (but your server wouldn't be used much ;-)
#
# Spaces are permitted in the reason field (you don't have to use _).
# The /stats command has been modified to replace all spaces with _'s when
# doing a /stats k.
#
# This K: line bans the username "hrose" (the wildcards are used to make
# sure that any ident-checking character will match) on any machine from
# the University of Boston.
#K:*.bu.edu:Hacking #dragonrealm:*hrose*
#
# This K: line bans any users from acs*.bu.edu between the hours of 8am
# and 12pm and 1pm and 5pm (the time is always the server's local time).
# Time-based K-lines such as this require TIMED_KLINES in config.h to be
# #defined.
#K:acs*.bu.edu:0800-1200,1300-1700:*
# Note that 24 hour time is used (no "AM" or "PM").
#
# NOTE about Z-lines. Z-lines are no longer exist. But K-lines set on IP
# addesses without username portions (or *) are treated as Z-lines used to be.
# These lines block ALL incoming connections from a certain IP address mask.
# They are more powerful than other types of K-lines because they stop users
# before they've had a chance to register. This works on servers too, so be
# VERY careful! These lines should be used as a LAST RESORT!
#
#
# Q: {OPTIONAL} - These lines prevent users on your server from using certain
# nicknames. These are 'reserved' nick names that should not be taken by
# normal users. Note the difference in the capitalization!
#
# {Q:Line Syntax}
# Q:*:Reason:Nickname
#
# {WeNet} - These Q:Lines are required to link to WeNet:
Q::Reserved for services:*ChanServ*
Q::Reserved for services:*NickServ*
Q::Reserved for services:*MemoServ*
Q::Reserved for services:*OperServ*
Q::Reserved for services:*HelpServ*
Q::Reserved for services:*StatServ*
Q::Reserved for services:*RootServ*
Q::Reserved for services:*BotServ*
Q::Reserved for services:*OpmServ*
Q::Reserved for services:*SeenServ*
Q::Reserved for services:*IrcIIHelp*
Q::Reserved for services:*Global*
Q::Reserved for services:*DevNull*
Q::Reserved for services:*WeNet*
#
Q::Reserved for operators:*IRCop*
#
#
# R: {OPTIONAL} - These lines define channel using restrictions rules for
# client connection classes. Rules are checked in the straight (not in
# reversed as other lines!) order, so the top rule is checked first and the
# bottom rules is checked last.
#
# {R:Line Syntax}
# R:Allow mask:::A:Class
# R:Deny mask::Deny reason:D:Class
# R:Redirect mask::Target:R:Class
#
#
# P: {MANDATORY} - This line allows the server to listen on various ports for
# connections.
#
# {P:Line Syntax}
# P:Remote IP:Local IP:Codepage name:Port
#
# Local IP can be specific address or empty (socket will bind to the M:Line
# address) or * (will bind to all addresses).
#
# Codepage name must correspond to one of the listed in B:Lines below.
#
P:*:::6660
P:*::CP1251:6667
P:*::TRANSLIT:6668
P:*::KOI8-F:6669
P:*::KOI8-R:6670
P:*::CP866:6671
P:*::ISO8859-5:6672
#
# ATTENTION: P:Lines became mandatory, because the last parameter in M:Line is
# used only for setting the default port number on which the server
# will connect to, if there is no port specified in a connection
# C:Line.
# There will be no listening on that port if there is no P:Line that
# corresponds to the port number in M:Line!
#
# Note that setting codepages for ports to listen on defines translations only
# for clients, not for servers. Servers that have different base codepages
# negotiate about their translation by themselves using translation lists from
# Y:Lines.
#
#
# E: {DISCOURAGED} - These lines bypass K:Lines for matching clients.
# Username is optional.
#
# Don't use these if you can avoid it! Services will fight with them!
#
# {E:Line Syntax}
# E:Hostmask:Unused:Username
#
#E:*.twcny.rr.com::ayukawa
#
#
# F: {DISCOURAGED} - These lines bypass K:Lines and also class limits for
# matching clients. Username is optional.
#
# Don't use these if you can avoid it! Services will fight with them!
#
# {F:Line Syntax}
# F:Hostmask:Unused:Username
#
#F:*.twcny.rr.com::*
#
#
# T: {DISCOURAGED} - These lines override the default connection throttling
# settings.
#
# ATTENTION: Use these lines ONLY IF STRONGLY NEEDED, and ONLY FOR YOUR OWN
# KNOWN HOSTS, e.g. for your web and other known gates, your
# multiple bot hosts, etc. The best way is to ask your network
# administration for permission to place certain T:Lines.
#
# {T:Line Syntax}
# T:IP mask::Trig Count:Trig Time
#
#T:127.0.0.1::10:15
#
#
# B: {SUGGESTED} - Define codepages that are supported by the server.
#
# {B:Line Syntax}
# B:Codepage name:Filename:Aliases:Flags
#
# Codepage name and aliases are case insensitive. Optional aliases is a
# commas-separated list. You should have a base codepage if you are using
# codepages.
#
# The following flags can be used:
#
# B - base codepage.
#
B:CP1251:cp1251.cp:win:B
B:TRANSLIT:translit.cp
B:KOI8-F:koi8-f.cp:koi,koi8,unix
B:KOI8-R:koi8-r.cp
B:CP866:cp866.cp:dos
B:ISO8859-5:iso8859-5.cp:iso
#
#
# L: {OPTIONAL} - Define DNSBL zones and their options, define address list
# that should avoid DNSBL check (filters).
#
# {DNSBL L:Line Syntax}
# L:Exception address::DNSBL zone:Flags
#
# The first field is an optional special IP address that defines a BL
# exception address. A client could escape blacklisting if any of its queries
# (initiated by the client connection) returns the exception address. May be
# different for each zone.
#
# The following flags can be used:
#
# I - query the list about d.c.b.a.zone, where a.b.c.d is a connecting client
# IP address.
# H - query the list about host.zone, where host is a connecting client
# hostname.
# L - the list is not network-wide but for local server use only.
#
# ATTENTION: Using many DNSBLs may lead to significant delays in accepting
# clients. Using RHSBLs (H flag) adds a delay after the client
# hostname is found.
#
#L:127.0.0.254::dnsbl.yourbl.net:I
#
# {Filter L:Line Syntax}
# L:Filter mask:::F
#
# Known addresses (e.g. servers or clients from known networks) can avoid
# DNSBL or RHSBL check being defined in filters. Filters can be IP or
# hostname masks.
#
#L:24.95.128.*:::F
#
#
# End of ircd.conf-dist
Данный конфиг заточнен для работы в irc сети WeNet. Но настройки тут не сложные , сами разберетесь.
Стартуем ircd ( надеюсь объяснять не надо почему не от рута? :)
$ /usr/local/ircd/bin/ircd
Ircd is now becoming a daemon.
Проверяем.
$ xchat-text
The default download directory is your
home dir, you should change this at some stage.
xchat 1.8.9
Running on Linux 2.4.18-bf2.4 [i486] glib 1.2.10
This binary compiled Jun 21 2002
Compiled in Features: Perl Python Plugin NLS Trans JCode IPv6
/server 192.168.5.13 6670
--- Looking up 192.168.5.13..
--- Connecting to server.ict.nnov.ru (192.168.5.13) port 6670..
--- Connected. Now logging in...
Ну вот вроде все работает.
ИСПОЛЬЗОВАНИЕ РАСШИРЕНИЙ IRCD-RU!
CODEPAGE
--------
Формат: CODEPAGE <name>
Этой командой клиент может поменять свою кодовую страницу на указанную в
параметре <name>. <name> может быть как и именем кодовой страницы, так и его
алиасом.
Возможные сообщения сервера в ответ на CODEPAGE:
- Уведомление о смене кодовой страницы.
- Сообщение о недостаточном количестве параметров - не указан параметр
<name>.
- Сообщение о том, что указанная кодовая страница не поддерживается
сервером.
- Сообщение о том, что не удается сменить 8-битный ник пользователя на
7-битный из-за того, что не осталось свободных суффиксов.
- Сообщение о том, что у пользователя установлена та же самая кодовая
страница, что и указанная в параметре.
CODEPAGES
---------
Формат: CODEPAGES [<server>]
Этой командой клиент запрашивает у указанного сервера список
поддерживаемых им кодовых страниц. Если параметр <server> не указан, запрос
обрабатывается сервером, к которому подсоединен клиент, пославший запрос.
Возможные сообщения сервера в ответ на CODEPAGES:
- Построчный список имен и алиасов кодовых страниц, поддерживаемых
сервером.
- Маркер конца списка.
- Сообщение об отсутсвии в сети запрошенного сервера.
FORCECP
-------
Формат: FORCECP <nick> <codepage>
Этой командой оператор может поменять кодовую страницу для указанного
параметром <nick> клиента на заданную <codepage>. Локальный оператор может
менять этой командой кодовые страницы только локальных клиентов.
Команда была реализована исходя из многочисленных наблюдений попыток
операторов помочь найти пользователям их кодовые страницы, в целях экономии
времени и нервов пользователей и операторов :)
Возможные сообщения сервера в ответ на FORCECP:
- Сообщение о том, что клиента с указанным ником нет в сети.
- Сообщение о недостаточном количестве параметров - команда требует два
параметра.
- Сообщение о недостаточности прав на выполнение FORCECP - посылается не
операторам или локальным операторам при попытке сменить кодовую
страницу для пользователя на другом сервере.
- Сообщение о том, что кодовой страницы с указанным именем нет на сервере
пользователя, заданного в параметре <nick>.
- Сообщение о том, что не удается сменить 8-битный ник пользователя на
7-битный из-за того, что не осталось свободных суффиксов.
- Сообщение о том, что у пользователя установлена та же самая кодовая
страница, что и указанная в параметре.
NICK
----
Возможные дополнительные сообщения в ответ на NICK:
- отказ сменить ник на 8-битный;
- отказ сменить ник на ник, состоящий одновременно из символов латинского
и национального алфавитов;
- отказ сменить ник на ник, содержащий слова, состоящие одновременно из
символов латинского и национального алфавитов;
если на сервере или в классе соединения клиента включен запрет на
использование таких ников, или пользователь находится на канале с +7, +x
или +w channel mode.
- отказ сменить ник из-за того, что существует пользователь с
тождественным ником.
WHOIS
-----
В дополнение к обычной WHOIS информации, сервер возвращает имя кодовой
страницы для своих клиентов.
JOIN
----
Сервер не позволяет заход клиентов с 8-битным ником на каналы, на которых
выставлен +7 channel mode (см. ниже), клиентов с ником из символов разных
алфавитов - на каналы, на которых выставлен +x channel mode (см. ниже), и
клиентов со словами из символов разных алфавитов в нике - на каналы, на
которых выставлен +w channel mode (см. ниже).
MODE
----
В данной версии сервера, в дополнение к стандартным, реализованы следующие
channel modes:
7 - не разрешать заход на канал клиентов с 8-битными никами.
x - не разрешать заход на канал клиентов с никами, состоящими одновременно
из символов латинского и национального алфавитов.
w - не разрешать заход на канал клиентов с никами, содержащими слова,
состоящие одновременно из символов латинского и национального
алфавитов.
e - список исключений из банов, имеет такой же формат, как и +b channel
mode, маски nick!user@host.
B - список расширенных банов, маски nick!user@host:server (здесь и далее
соответсвие пользователя такой маске определяется с учетов имени
сервера пользователя).
E - список расширенных исключений из банов, маски nick!user@host:server.
X - список эксклюзивного доступа, маски nick!user@host:server, при наличии
списка +X канал доступен только тем пользователям, которые
соответствуют маскам из этого списка.
h - не показывать списки доступа к каналу пользователям не зашедшим на
канал.
User modes:
H - не показывать кодовую страницу и время молчания в ответе на whois для
локального пользователя.
Кроме того, сервер не позволяет снимать статус оператора на канале с
U-lined клиентов (сервисов).
KICK
----
Сервер не позволяет кикать с каналов U-lined клиентов (сервисы).
STATS
-----
В данной версии сервера, в дополнение к стандартным, реализованы следующие
запросы:
b - показать статистику кодовых страниц сервера.
r - показать статистику ограничений использования каналов.
L - показать статистику DNSBLs.
Статистака кодовых страниц выводится в виде:
<name> <clients> <maxclients> <flags> <ports> <aliases> :<filename>
Где выводимые элементы означают следующее:
<name> - имя кодовой страницы.
<clients> - количество клиентов (включая порты для данной кодовой
страницы, на которые сервер принимает соединения),
использующих это кодовую страницу на данный момент. Для
базовой кодовой страницы к этому значению также добавляется
еще 2.
<maxclients> - максимальное количество клиентов, использовавших эту кодовую
страницу одновнеменно, с момента рестарта сервера.
<flags> - флаги кодовой страницы, на данных момент это A - кодовая
страница может назначаться клиентам и включается в список
ответа на CODEPAGES, и B - индикатор базовой кодовой страницы
сервера.
<ports> - список портов, для которых, при соединении на них клиентов,
клиентам устанавливается кодовая страница <name>.
<aliases> - список алиасов для имени данной кодовой страницы.
<filename> - имя файла кодовой страницы.
Полное руководство и свежую версию сервера можно взять на www.ircd.ru.
При написании данной статьи было использовано официальное руководство.
|