Поднимаем свой IRC server.

Psycho, 12/2003, http://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
Вроде все встало, никто не ругался.
Сервер конфигурируется в несколько шагов:
  1. Запустите ./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.

  2. Проверьте, содержит ли файл include/paths.h именно те пути, в которые должен установиться сервер после сборки. Если вы что-либо изменяете в этом файле, имейте ввиду, что DPATH должен быть абсолютным путем, а все остальные должны быть относительными от него.

  3. Отредактируйте файл include/config.h. Имейте ввиду, что HARD_FDLIMIT_ и INIT_MAXCLIENTS должны быть меньше, чем максимальное разрешенное количество файловых дескрипторов на процесс; а также, в случае использования select (--enable-select) меньше либо равно FD_SETSIZE (обычно определено в системных заголовочных файлах, но может быть переопределено в Makefile).
  4. При необходимости отредактируйте Makefile верхнего уровня, например в случае если вам понадобится подкорректировать CFLAGS.

К конфигурированию расширений ircd-RU! в файле include/config.h имеют отношения следующие макроподстановки:

  1. NETWORK_NAME - название IRC сети, которое используется в различных сообщениях сервера клиенту.
  2. NO_8BIT_NICKNAMES - если определено, на сервере невозможно использовать 8-битные ники.
  3. NO_MIXEDALPHA_NICKNAMES - если определено, на сервере невозможно использовать ники, содержащие одновременно символы латинского и национального алфавитов.
  4. NO_MIXEDALPHAWORDS_NICKNAMES - если определено, на сервере невозможно использовать ники, в которых есть слова, содержащие одновременно символы латинского и национального алфавитов.
  5. HIDESTATSCODEPAGES - определяет, скрывать или нет статистику кодовых страниц, выдаваемую по /stats b, от не операторов.
  6. WARN_NO_BASE_CODEPAGE - если определено, предупреждение о том, что не задана базовая кодировка (т.е. та, в которой строковые данные хранятся внутри сервера), посылается локальным операторам и в syslog.
  7. _8BITNAMES_CASEINSENSITIVE - определяет, будут ли 8-битные имена ников и каналов хешироваться и сравниваться как case insensitive.
  8. _8BITCHANNELNAMES_CASEINSENSITIVE - определяет, будут ли 8-битные имена каналов хешироваться и сравниваться как case insensitive. Для работы кода, включаемого этой опцией, также необходимо определенное _8BITNAMES_CASEINSENSITIVE.
  9. NICKNAMES_IDENTITY - определяет, будет ли проводиться проверка наличия "идентичного" ника при обработке команды NICK.
  10. NOTHELPER_HIDEOPERATOR - определяет, скрывать ли от не операторов статус оператора, снявшего с себя umode +h.
  11. HELPER_SPYWHOIS - позволяет операторам с umode +h видеть, кто запрашивает на них WHOIS.
  12. CHDIRTOROOT - определяет, будет ли ircd менять свой рабочий каталог на / вместо DPATH при старте.
  13. PROTECTSQUITULINED - не позволяет делать SQUIT U-lined серверов не администраторам сервисов.
  14. TIME_OFFSET - добавка в секундах к времени, возвращаемого time(3). Такая добавка бывает нужна для тех серверов, на машинах которых имеется постоянное, не меняющееся (меняющееся не более чем на TS_MAX_DELTA) отклонение от правильного времени.
  15. STATSERVMAPWRAPPER - включает команду /MAP, являющуюся обверткой для /StatServ MAP.
  16. NOILINE_MESSAGE - строка, отсылаемая сервером перед отсоединением клиенту для которого нет I:lines, определяется в этой макроподстановке. Текст должен быть обязательно однострочным.
  17. ALLOWMASKSINNLINE - позволяет использовать маски в первом поле N:line. Рекомендуется использовать эту возможность только в том случае, если совершенно нет никакого другого выхода.
  18. OPERONHOSTMASK - устанавливать клиенту статус IRC оператора при успешном использовании oper hostmasking.
  19. HIDE_NETWORK_TOPOLOGY - скрывать топологию сети.
  20. HIDE_NETWORK_TOPOLOGY_MESSAGE - сообщение в ответ на запрос /LINKS от пользователя с недостаточным уровнем доступа.
  21. 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:

  1. Уведомление о смене кодовой страницы.
  2. Сообщение о недостаточном количестве параметров - не указан параметр <name>.
  3. Сообщение о том, что указанная кодовая страница не поддерживается сервером.
  4. Сообщение о том, что не удается сменить 8-битный ник пользователя на 7-битный из-за того, что не осталось свободных суффиксов.
  5. Сообщение о том, что у пользователя установлена та же самая кодовая страница, что и указанная в параметре.

CODEPAGES
---------

Формат: CODEPAGES [<server>]

Этой командой клиент запрашивает у указанного сервера список поддерживаемых им кодовых страниц. Если параметр <server> не указан, запрос обрабатывается сервером, к которому подсоединен клиент, пославший запрос.

Возможные сообщения сервера в ответ на CODEPAGES:

  1. Построчный список имен и алиасов кодовых страниц, поддерживаемых сервером.
  2. Маркер конца списка.
  3. Сообщение об отсутсвии в сети запрошенного сервера.

FORCECP
-------

Формат: FORCECP <nick> <codepage>

Этой командой оператор может поменять кодовую страницу для указанного параметром <nick> клиента на заданную <codepage>. Локальный оператор может менять этой командой кодовые страницы только локальных клиентов.

Команда была реализована исходя из многочисленных наблюдений попыток операторов помочь найти пользователям их кодовые страницы, в целях экономии времени и нервов пользователей и операторов :)

Возможные сообщения сервера в ответ на FORCECP:

  • Сообщение о том, что клиента с указанным ником нет в сети.
  • Сообщение о недостаточном количестве параметров - команда требует два параметра.
  • Сообщение о недостаточности прав на выполнение FORCECP - посылается не операторам или локальным операторам при попытке сменить кодовую страницу для пользователя на другом сервере.
  • Сообщение о том, что кодовой страницы с указанным именем нет на сервере пользователя, заданного в параметре <nick>.
  • Сообщение о том, что не удается сменить 8-битный ник пользователя на 7-битный из-за того, что не осталось свободных суффиксов.
  • Сообщение о том, что у пользователя установлена та же самая кодовая страница, что и указанная в параметре.

NICK
----

Возможные дополнительные сообщения в ответ на NICK:

  1. отказ сменить ник на 8-битный;
  2. отказ сменить ник на ник, состоящий одновременно из символов латинского и национального алфавитов;
  3. отказ сменить ник на ник, содержащий слова, состоящие одновременно из символов латинского и национального алфавитов; если на сервере или в классе соединения клиента включен запрет на использование таких ников, или пользователь находится на канале с +7, +x или +w channel mode.
  4. отказ сменить ник из-за того, что существует пользователь с тождественным ником.

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. При написании данной статьи было использовано официальное руководство.

Источник - LinuxBegin.ru http://linuxbegin.ru/




Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости