/* * example.conf by Daniel Hawton AKA Osiris (osiris@unrealircd.org). * example.ru.conf by Samets Anton aka Bock (bock@bynets.org). * $Id$ * * (Encoding): Windows-1251 * * Работает для Unreal3.2 и выше * * Итак, это русскоязычный пример example.conf. По синтаксису похож на C++. * По началу будет тяжело понять, что тут написано, однако во время практики и чтения * вы научитесь это делать. * * Просто скопируйте этот файл в главную директорию unrealircd и переименуйте в 'unrealircd.conf'. * * Замечание: Все линии, кроме тех, которые начинаются с {, заканчиваются ; включая и закрывающую }. * IRCd проигнорирует закомментированные линии. * * ПРОЧТИТЕ doc/unreal32docs.ru.html! Версия в интернете доступна по адресу: * www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html * Она содержит большинство информации о конфигурировании, даёт представление о каждом блоке, * переменной и так далее... * Если вы пытаетесь редактировать этот файл без прочтения документации, вы гарантированно * потерпите неудачу! */ /* Типы комментариев */ # Первый тип (Shell type) // Второй тип (C++ style) /* Третий тип (C Style) */ # данные линии игнорируются ircd. /* * UnrealIRCd поддерживает модули, загрузка некоторых необходима для запуска. * Вам необходимо загрузить как минимум модули команд и скрытия хоста. */ /* Для *NIX систем раскомментируйте следующие 2 линии: */ //loadmodule "src/modules/commands.so"; //loadmodule "src/modules/cloak.so"; /* Для Windows систем раскомментируйте следующие 2 линии: */ //loadmodule "modules/commands.dll"; //loadmodule "modules/cloak.dll"; /* * Вам необходимо подключить и другие конфигурационные файлы. * help.ru.conf содержит весь текст команды /helpop. Файлы badwords.*.conf * содержат все включения матных слов для режима +G... * spamfilter.conf содержит правила для защиты от троянских коней. * Вы вероятно захотите подключить эти файлы: */ include "help.ru.conf"; include "badwords.channel.conf"; include "badwords.message.conf"; include "badwords.quit.conf"; include "spamfilter.conf"; /* * НОВОЕ: me {} * СТАРОЕ: M:Line * me {} определяет имя, описание и нумерик сервера unreal для данного сервера. * Синтаксис: * me { * name "Имя.сервера"; * info "Описание сервера"; * numeric (нумерик сервера*); * }; * При соединении с другими серверами, нумерик должен быть уникальным в сети. Имя сервера - англоязычное. */ me { name "irc.foonet.com"; info "Сервер FooNet"; numeric 1; }; /* * НОВОЕ: admin {} * СТАРОЕ: A:Line * Данный блок предоставляет информацию об администраторе сервера. * Вы можете поместить сколько угодно линий после admin {. * Синтаксис: * admin { * "первая линия"; * "вторая линия"; * [так далее] * }; */ admin { "Вася Пупкин!"; "vasya_pupkin"; "haker@lamer.ru"; "ICQ: 987654321"; }; /* * НОВОЕ: class {} * СТАРОЕ: Y:line (был слишком запутан) * Определяет настройки для классов. Класс определяет групповые настройки для подключений. * Например, подключение сервера, вместо включения его в класс пользователей, вы направляете в * класс серверов. Используется следующий синтаксис: * class (имя класса) * { * pingfreq (как часто пиновать пользователя/сервер в секундах); * maxclients (сколько максимально соединений разрешено данному классу); * sendq (максимальная очередь для отправки от подключения); * recvq (максимальная очередь для получения от подключения [контроль за флудом]); * }; */ class clients { pingfreq 90; maxclients 500; sendq 100000; recvq 8000; }; class servers { pingfreq 90; maxclients 10; /* Какое максимальное количество серверов может быть прилинковано к этому серверу */ sendq 1000000; connfreq 100; /* Через сколько секунд проводить следующую попытку подключения */ }; /* * НОВОЕ: allow {} * СТАРОЕ: I:Line * Определяет, кому разрешено подключаться к серверу... * В основном используется для клиентов, это разрешает им подключаться к серверу, а вы можете их контролировать * и/или устанавивать пароль. * Синтаксис: * allow { * ip (разрешённая маска ip); * hostname (маска хоста); * class (класс, в который определить[смотри class {}]); * password "(пароль)"; (необязательно) * maxperip (сколько подключений с одного ip); (необязательно) * }; */ allow { ip *@*; hostname *@*; class clients; maxperip 5; }; /* Разрешение подключения с паролем */ allow { ip *@255.255.255.255; hostname *@*.passworded.ugly.people; class clients; password "аццкип0р0ль"; maxperip 1; }; /* * НОВОЕ: allow channel {} * СТАРОЕ: chrestrict * Позволяет пользователю зайти на канал... * служит как исключение из запрещённых каналов. * Синтаксис: * allow channel { * channel "имя канала"; * }; */ allow channel { channel "#WarezSucks"; }; /* * НОВОЕ: oper {} * СТАРОЕ: O:Line * Определяет IRC оператора * IRC операторы следят за сервером, занимаются его поддержкой и подключением к сети. * Синтаксис: * oper (логин) { * class (класс, в который определять их, если отличен от блока I, в какой класс переместить); * from { * userhost (идент@хост); * userhost (идент@хост); * }; * flags * { * (тут флаги*); * }; * ИЛИ * flags "флаги старого типа, вида OAaRD"; * }; */ /* Для списка флагов оператора прочитайте doc/unreal32docs.ru.html#operblock * [ОЧЕНЬ НАСТОЯТЕЛЬНО рекомендуется к прочтения] */ oper vasyapupkin { class clients; from { userhost vasya@somewhere.by; }; password "p0r0l'"; flags { netadmin; can_zline; can_gzline; can_gkline; global; }; }; /* * НОВОЕ: listen {} * СТАРОЕ: P:Line * Определяет, на каких портах будет работать ircd, * позволяя пользователям/серверам подключаться к серверу. * Синтаксис: * listen (ip):(номер порта) * { * options { * (тут опции); * }; * }; * или просто * listen: listen (ip):(порт); * * ЗАМЕЧАНИЕ: для протокола ip v6 (3ffe:b80:2:51d::2), используйте [ip]:порт; * * Это так же будет работать. */ /* Опции для listen: СТАРЫЕ | НОВЫЕ S serversonly C clientsonly J java s ssl * standard */ /* ЗАМЕЧАНИЕ ДЛЯ ПОРТОВ SSL: SSL порты стандартизированы, * за исключением многочисленных "высоких" портов SSL, некоторые люди могут сказать вам, * чтобы вы запустили на порту 994, потому что он официальный порт SSL... Но это же * требует привилегий пользователя root! К слову, порт 194 - официальный порт irc, * но вы видели когда-нибудь ircd, запущенный на нём? * Итак, наше предложение - использовать порт 6697 для SSL, он используется уже рядом сетей * и используется в примере StunTour. * Вы можете открыть сколько угодно портов SSL, но используя так же и 6697, вы поможете * стандартизировать его;). */ listen *:6697 { options { ssl; clientsonly; }; }; listen *:8067; listen *:6667; /* ЗАМЕЧАНИЕ: Если вы используете шелл IRCd, где несколько IP адресов, вы можете получить сообщение типа * 'Address already in use', ошибки в вашем лог-файле и ircd не запустится. * Это значит, что вам необходимо указать определённый адрес IP вместо '*', к примеру: * listen 1.2.3.4:6667; * Конечно же, измените IP адрес на тот, который назначен вам. */ /* * НОВОЕ: link {} * СТАРОЕ: C/N:Lines * Определяет блок для подключения серверов. * ЗАМЕЧАНИЕ: ЧТОБЫ ПОДКЛЮЧИТЬСЯ БЕЗ ВОПРОСОВ, НА ОБОИХ СЕРВЕРАХ НЕОБХОДИМЫ ПРАВИЛЬНЫЕ НАСТРОЙКИ LINK {}! * Синтаксис: * link (имя сервера) * { * username (имя пользователя, * работает тоже); * hostname (адрес ip/маска хоста); * bind-ip (На каком адресе IP слушать или *); * port (порт для соединения); * hub (если это хаб, * так же работает, или макси сервера, которые могут быть под ним); * [или leaf *;] * password-connect "(пароль для отправки)"; * password-receive "(пароль, что мы должны получить)"; * class (класс, в который определить сервер); * options { * (тут указываются опции*); * }; * // Если мы используем SSL, мы можем указать, какой шифр использовать в режиме SSL * // Получить список можно "openssl ciphers", шифры разделяются двоеточиями (:) * * ciphers "DES-CBC3-MD5"; * * }; */ /* опции: СТАРЫЕ | НОВЫЕ S ssl Z zip N/A autoconnect N/A quarantine N/A nodnscache */ link hub.ru.by { username *; hostname 1.2.3.4; bind-ip *; port 7029; hub *; password-connect "LiNk"; password-receive "LiNk"; class servers; options { /* Замечание: Вы не должны использовать автоподключение (autoconnect) при подключении сервисов */ autoconnect; ssl; zip; }; }; /* * * НОВОЕ: ulines {} * СТАРОЕ: U:Line * U-lines обладают большей силой/властью, чем другие сервера. Это нужно устанавливать только на * сервисы/сервера сбора статистики и НИКОГДА на обычные сервера UnrealIRCd! * Синтаксис: * ulines { * (сервер в uline); * (сервер в uline); * [и т.д.] * }; */ ulines { services.roxnet.org; stats.roxnet.org; }; /* * НОВОЕ: drpass {} * СТАРОЕ: X:Line * Определяет пароли для использования команд /die и /restart. * Синтаксис: * drpass { * restart "(пароль для перезапуска)"; * die "(пароль для отключения)"; * }; */ drpass { restart "Я-люблю-перезапускать-сервер"; die "умри-тупое!:)"; }; /* * НОВОЕ: log {} * СТАРОЕ: N/A * Указыает ircd куда и что протоколировать (вести лог). Вы можете указать столько, сколько пожелаете. * * ФЛАГИ: errors, kills, tkl, connects, server-connects, oper * * Синтаксис: * log "путь_к_лог_файлу" * { * flags * { * flag; * flag; * etc.. * }; * }; */ log "ircd.log" { /* Удалять логфайл и старовать новый, если размер превышает 2MB, оставьте это как есть, чтобы использовать тот же самый файл */ maxsize 2097152; flags { oper; connects; server-connects; kills; errors; sadmin-commands; chg-commands; oper-override; spamfilter; }; }; /* * НОВОЕ: alias {} * СТАРОЕ: N/A * Позволяет установить вам псевдонимы на команды, такие как /nickserv, /chanserv и т.д. * ФЛАГИ: services, stats, normal * * Синтаксис: * alias "имя" { * target "куда направить"; * type aliastype; * }; * * [ЗАМЕЧАНИЕ: Вы так же можете подключить уже определённый файл с псевдонимами,подробнее doc/unreal32docs.ru.html в секции 2.9] */ // Данный псевдноним /nickserv направляет команды пользователю NickServ, который подключён к серверу set::services-server /*alias NickServ { target "NickServ"; type services; };*/ // Если вы хотите, чтобы команды направлялись на тот же ник, что и команда, вы можете не указывать target //alias ChanServ { type services; }; // Указывает, что команда /statserv будет отправлена пользователю StatServ, подключённого к серверу set::stats-server //alias StatServ { type stats; }; // Указывает, что команда /superbot будет отправлена пользователю SuperBot //alias SuperBot { type normal; }; /* Стандартные псевдонимы */ alias NickServ { type services; }; alias ChanServ { type services; }; alias OperServ { type services; }; alias HelpServ { type services; }; alias StatServ { type stats; }; /* * НОВОЕ: alias {} * СТАРОЕ: N/A * Позволяет установить такие псевдонимы на команды как /identify, /services и т.д. * * Синтаксис: * alias "имя" { * format "строка формата" { * target "кому"; * type aliastype; * parameters "список параметров"; * }; * type command; * }; */ /* Вынесено отдельно, так как имеются отличия по сравнению с предыдущим типом псевдонимов и имеются очень большие отличия в * синтаксисе, так же используется для других целей, чем стандартные псевдонимы. */ /* alias "identify" { format "^#" { target "chanserv"; type services; parameters "IDENTIFY %1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "IDENTIFY %1-"; }; type command; }; */ /* Директива alias::format является регулярным выражением. Под первый формат подпадает команда /identify, * если первым символом является #. Она посылает команду chanserv с параметрами IDENTIFY %1-. * Второй формат срабатывает, если в команде, посланной посредством /identify первый символ не #. Тогда ircd * передаёт эту команду nickserv с параметрами IDENTIFY %1-. */ /* alias::format::parameters сходно со скриптовыми языками. %N (где N число) представляет собой параметр, посланный командой * (в случае /identify). Если вы указали %N-, так вы определили все параметры, начиная от N до последнего в этой строке. * Вы можете так же указать %n, что будет означать ник пользователя. */ /* Стандартные псевдонимы */ alias "services" { format "^#" { target "chanserv"; type services; parameters "%1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "%1-"; }; type command; }; alias "identify" { format "^#" { target "chanserv"; type services; parameters "IDENTIFY %1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "IDENTIFY %1-"; }; type command; }; /* Тут идёт пример использования "действительно псевдонима" (real command alias) */ /* Данный пример - использование /GLINEBOT как /GLINE <параметры> 2d и т.д... */ alias "glinebot" { format ".+" { command "gline"; type real; parameters "%1 2d Боты запрещены на этом сервере, прочитайте ЧаВО на http://www.example.com/faq/123"; }; type command; }; /* * НОВОЕ: tld {} * СТАРОЕ: T:Line * Устанавливает различные different motd и rules файлы * в зависимости от маски хостов клиентов. * Синтаксис: * tld { * mask (идент@хост); * motd "(файл motd)"; * rules "(файл rules)"; * }; */ tld { mask *@*.ru; motd "ircd.motd.ru"; rules "ircd.rules.ru"; }; /* замечание: вы можете просто удалить блок выше, указанный для примера в случае, если есть в наличии * файлы motd/rules, используемые по умолчанию (ircd.motd, ircd.rules), которые будут использоваться всеми */ /* * НОВОЕ: ban nick {} * СТАРОЕ: Q:Line * Банит ник, он не может быть использован. * Синтаксис: * ban nick { * mask "(ник для бана)"; * reason "(причина)"; * }; */ ban nick { mask "*C*h*a*n*S*e*r*v*"; reason "Зарезервирован для сервисов"; }; /* * НОВОЕ: ban ip {} * СТАРОЕ: Z:Line * Банит адрес ip при подключении в сеть. * Синтаксис: * ban ip { mask (адрес ip/маска хоста); reason "(причина)"; }; */ ban ip { mask 195.86.232.81; reason "Отключённый сервер"; }; /* * НОВОЕ: ban server {} * СТАРОЕ: Серверный Q:Line * Отключает сервер от попыток подключиться в сеть. * Если сервер подключается к удалённому серверу в сети, локальный сервер * будет отключён он сети. * Синтаксис: * ban server { * mask "(имя сервера)"; * reason "(причина)"; * }; */ ban server { mask eris.berkeley.edu; reason "Ламерский сервер :)."; }; /* * НОВОЕ: ban user {} * СТАРОЕ: K:Line * Пользователь с указанной маской не может подключиться к вашему серверу. * Синтаксис: * ban user { mask (маска хоста/адрес ip); reason "(причина)"; }; */ ban user { mask *newiceman@*.irc.by; reason "Идиот!"; }; /* * НОВОЕ: ban realname {} * СТАРОЕ: n:Line * Банит по указанному пользователем реальному имени. * Синтаксис: * ban realname { * mask "(Реальное имя)"; * reason "(причина)"; * }; */ ban realname { mask "Swat Team"; reason "mIRKFORCE"; }; ban realname { mask "sub7server"; reason "sub7"; }; /* * ЗАМЕЧАНИЕ ДЛЯ ВСЕХ БАНОВ: они могут повторятся в случае необходимости уточнений! * * НОВОЕ: except ban {} * СТАРОЕ: E:Line * Предотвращает бан. * Синтаксис: * except ban { mask (идент@хост); }; * Повторите except ban {} столько раз, сколько хотите использовать различные хосты. */ except ban { /* не банить wax */ mask *wax@195.222.*; }; /* * НОВОЕ: deny dcc {} * СТАРОЕ: dccdeny.conf * Используется чтобы запретить отправку dcc... служит для защиты от вирусов * Синтаксис: * deny dcc * { * filename "имя файла для блокироваки (т.е. *exe)"; * reason "причина"; * }; */ deny dcc { filename "*sub7*"; reason "Вероятность вируса Sub7"; }; /* * НОВОЕ: deny channel {} * СТАРОЕ: N/A (НОВОЕ) * Запрещает вход на указанные каналы. * Синтаксис: * deny channel { * channel "(канал)"; * reason "причина"; * }; */ deny channel { channel "*warez*"; reason "Warez нелегален"; }; /* * НОВОЕ: vhost {} * СТАРОЕ: файл Vhost.conf * Устанавливает фейковый ip для не-операторов или операторы слишком * ленивые, чтобы сделать /sethost :P * Синтаксис: * vhost { * vhost (vhost.com); * from { * userhost (идент@хост, кому разрешено использовать); * }; * login (логин); * password (пароль); * }; * чтобы использовать vhost, наберите /vhost (логин) (пароль) в IRC */ vhost { vhost i.hate.microsefrs.com; from { userhost *@*.image.dk; }; login stskeeps; password moocowsrulemyworld; }; /* Вы так же можете подключить и другие конфигурационные файлы */ /* include "klines.conf"; */ /* Конфигурация Сети */ set { network-name "ROXnet"; default-server "irc.roxnet.org"; services-server "services.roxnet.org"; stats-server "stats.roxnet.org"; help-channel "#ROXnet"; hiddenhost-prefix "rox"; /* prefix-quit "no"; */ /* Ключи скрытия хостов должны быть одинаковы на всех серверах в сети. * Они использутся для генерации замаскированных хостов и должны держаться в секрете. * Ключи должен быть 3-мя случайными срочками с 5-100 символами в каждой * (10-20 символов должно быть достаточно) и должны содержать прописные (a-z), * заглавные (A-Z) буквы и цифрты (0-9) [смотрите пример первого ключа]. * Подсказка: В *NIX системах вы можете запустить './unreal gencloak' в вашем шелле, чтобы получить * 3 строки, сгенерированные случайным образом. */ cloak-keys { "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW"; "и ещё одна; "и ещё одна"; }; /* хост on-oper */ hosts { local "locop.roxnet.org"; global "ircop.roxnet.org"; coadmin "coadmin.roxnet.org"; admin "admin.roxnet.org"; servicesadmin "csops.roxnet.org"; netadmin "netadmin.roxnet.org"; host-on-oper-up "no"; }; }; /* Специфическая конфигурация сервера */ set { kline-address "set.this.email"; modes-on-connect "+ixw"; modes-on-oper "+xwgs"; oper-auto-join "#opers"; options { hide-ulines; /* Если желаете, вы можете включить проверку ident */ /* identd-check; */ show-connect-info; }; maxchannelsperuser 10; /* Указывает минимальное время, сколько был подключен пользователь, * прежде чем разрешать ему использовать сообщение QUIT. * Должно помочь в борьбе со спамом */ anti-spam-quit-message-time 10s; /* Устанавливает постоянное сообщение о выходе - значит, что локальный сервер не разрешит различные сообщения о выходе */ /* static-quit "Клиент вышел"; */ /* Вы так же можете блокировать все сообщения о выходе из канала просто раскомментировав это и указать'yes' * или указать какой-нибудь другой текст (например: "Пока пока!"), который всегда будет использован как причина. */ /* static-part yes; */ /* Позволяет сделать важные сообщения stats были использованы только операторами, используйте * для всех сообщений stats, * или закомментируйте, что позволит пользователям видеть все сообщения stats. Чтобы получить весь список, введите '/stats'. * Некоторые администраторы могут убрать 'kGs' для того, чтобы разрешить обычным пользователям видеть список * klines, glines и shuns. */ oper-only-stats "okfGsMRUEelLCXzdD"; /* Тротлинг: данный пример устанавливает предел в 3 попытки подключения в 60 секунд (для одного хоста). */ throttle { connections 3; period 60s; }; /* Защита от флуда */ anti-flood { nick-flood 3:60; /* 3 изменения ника в 60 секунд (по умолчанию) */ }; /* Фильтр спама */ spamfilter { ban-time 1d; /* длительность по умолчанию бана *line, установленного spamfilter */ ban-reason "Спам/Реклама"; /* причина по умолчанию */ virus-help-channel "#help"; /* канал при использовании действия 'viruschan' */ /* except "#help"; канал для исключения действия фильтра */ }; }; /* * Проблемы или нуждаетесь в более подробной информации? * 1) www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html * 2) www.vulnscan.org/UnrealIRCd/faq/ <- содержит 80% ваших вопросов! * 3) Если у вас до сих пор остались проблемы, зайдите на irc.unrealircd.org #unreal-support, * но мы требуем, чтобы вы ПРЕЖДЕ ПРОЧИТАЛИ ДОКУМЕНТАЦИЮ и ЧаВО! */