Поднимаем свой 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Вроде все встало, никто не ругался.
Сервер конфигурируется в несколько шагов:
-
Запустите ./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. При написании данной статьи было использовано официальное руководство.
Источник - LinuxBegin.ru http://linuxbegin.ru/