English | German | Spanish | Hungarian | French | Greek | Dutch | Russian | Turkish

UnrealIRCd
http://www.unrealircd.com
Версия: 3.2.7
Последнее обновление: 2007-07-10

Главные программисты: Stskeeps / codemastr / Syzop / Luke / aquanight / WolfSage
Вкладчики: McSkaf / Zogg / NiQuiL / assyrian / chasm / DrBin / llthangel / Griever / nighthawk
Документация: CKnight^ / Syzop
Перевод: Bock / Slyder / DeathBaba / Kirya

Для просмотра данной документации, вы должны иметь совместимый браузер из списка, приведённого ниже. Документация с последними обновлениями доступна по адресу http://www.vulnscan.org/UnrealIRCd/unreal32docs.ru.html и ЧАВО (ЧАсто задаваемые ВОпросы): http://www.vulnscan.org/UnrealIRCd/faq/.

Совместимые браузеры:

INDEX / Содержание
1. Введение
---1.1. Замечания по обновлению/совместному использованию версий 3.1.x -> 3.2
---1.2. Замечания по обновлению между версиями ветки 3.2
2. Установка
3. Функциональные возможности
-- 3.1. Cloaking[сокрытие хоста]
-- 3.2. Модули
-- 3.3. SNOMASKs
-- 3.4. Псевдонимы[aliases]
-- 3.5. Система помощи сервера (helpop)
-- 3.6. Уровни доступа операторов
-- 3.7. Команды операторов
-- 3.8. SSL
-- 3.9. IPv6
-- 3.10. Сжатые соединения
-- 3.11. Поддержка соединения с динамическим DNS/IP
-- 3.12. Возможности защиты от flood'а
-- 3.13. Разновидности банов
-- 3.14. Спамфильтр
-- 3.15. CIDR
-- 3.16. Использование национальных наборов символов в никах
-- 3.17. Поддержка CGI:IRC
-- 3.18. Синхронизация времени
-- 3.19. Другие возможности
4. Конфигурирование вашего unrealircd.conf
---4.1. Обзор структуры конфигурационного файла
---4.2. Блок Me -=- (M:Line)
---4.3. Блок Admin -=- (A:Line)
---4.4. Блок Class -=- (Y:Line)
---4.5. Блок Allow -=- (I:Line)
---4.6. Блок Listen -=- (P:Line)
---4.7. Блок Oper -=- (O:Line)
---4.8. Блок DRpass -=-(X:Line)
---4.9. Директива Include
---4.10. Директива Loadmodule
---4.11. Блок Log
---4.12. Блок TLD -=- (T:Line)
---4.13. Блок Ban Nick -=- (Q:Line)
---4.14. Блок Ban User -=- (K:Line)
---4.15. Блок Ban IP -=- (Z:Line)
---4.16. Блок Ban Server -=-(q:Line)
---4.17. Блок Ban Realname -=- (n:Line)
---4.18. Блок Ban Version
---4.19. Блок Ban Exception -=- (E:Line)
---4.20. Блок TKL Exception
---4.21. Блок Throttle Exception
---4.22. Блок Deny DCC -=- (dccdeny.conf)
---4.23. Блок Deny Version -=- (V:Line)
---4.24. Блок Deny Link -=- (D:Line / d:Line)
---4.25. Блок Deny Channel -=- (chrestrict.conf)
---4.26. Блок Allow Channel
---4.27. Блок Allow DCC
---4.28. Блок Vhost -=- (vhost.conf)
---4.29. Блок Badword -=- (badwords.conf)
---4.30. Блок Uline -=- (U:Line)
---4.31. Блок Link -=- (C/N/H:Lines)
---4.32. Блок Alias
---4.33. Блок Help
---4.34. Блок Official Channels
---4.35. Блок Spamfilter
---4.36. Блок Cgiirc
---4.37. Блок Set -=- (networks/unrealircd.conf)
5. Дополнительные файлы
6. Режимы пользователя и канала
7. Команды пользователя и оператора
8. Список советов по безопасности
---8.1. Пароли
---8.2. Уязвимости, не относящиеся к IRCD
---8.3. Права доступа на конфигурационный файл
---8.4. Человеческий фактор
---8.5. SSL/SSH и перехват трафика
---8.6. Атака на отказ в обслуживании (DoS) [или "как защитить мой хаб"]
---8.7. Раскрытие информации
---8.8. Защита против эксплоитов
---8.9. Итоги
9. Часто задаваемые вопросы (ЧАВО)
A. Регулярные выражения
---A.1. Литералы
---A.2. Оператор Точка
---A.3. Операторы повторения
---A.4. Выражения в скобках
---A.5. Управляющие символы
---A.6. Оператор выбора
---A.7. Подвыражения
---A.8. Обратные ссылки
---A.9. Чувствительность к регистру

1.0 – Введение

Этот документ является частью UnrealIRCd. Использование или распространение этого документа с другим пакетом программного обеспечения строго запрещено без письменного разрешения команды разработчиков UnrealIRCd. Этот документ может быть скопирован/распечатан/опубликован/воспроизведён сколько угодно раз в случае, если он будет использован с UnrealIRCd, и не будет содержать каких-либо изменений. – Copyright UnrealIRCd Development Team 2002-2006

Пожалуйста, прочитайте это руководство прежде, чем задавать вопросы, а так же загляните в ЧАВО, так как 80% ваших вопросов/проблем уже описано в нём. Если вы всё же нуждаетесь в помощи, попросите поддержки на irc.ircsystems.net (port 6667) на канале #unreal-support (имейте в виду, что мы ТРЕБУЕМ, чтобы документация была прочитана, и мы помогаем только по UnrealIRCd, а не по сервисам!). Если вы обнаружили реальный баг (например, аварийное завершение работы), сообщите об этом на http://bugs.unrealircd.org.

1.1 – Замечания по обновлению/совместному использованию версий 3.1.x-> 3.2

При переходе с Unreal3.1.x на Unreal3.2 вы заметите, что структура конфигурационного файла полностью изменилась. Сначала она покажется сложной, однако со временем вы привыкнете и поймёте, что так намного удобнее!

Так же не забудьте прочитать раздел 3 о функциональных возможностях. С некоторыми из них вы знакомы по версии 3.1.x, но мы добавили новые!

Лучше не использовать совместно 3.1.x и 3.2, но если вы на самом деле этого хотите, у вас должна быть как минимум версия 3.1.4 (мы настоятельно рекомендуем 3.1.5.1).

1.2 – Замечания по обновлению между версиями ветки 3.2

Рекомендации по обновлению для:
Linux:

Windows:

Пожалуйста, проверьте/прочитайте .RELEASE.NOTES чтобы увидеть, что изменилось. Если вы заметили разницу в работе (или ошибки) в новой версии, УБЕДИТЕСЬ, ЧТО ВЫ ПРОЧИТАЛИ .RELEASE.NOTES ПРЕЖДЕ, чем сообщать об этом!

2.0 - Установка


Тестируемые и поддерживаемые операционные системы:

3.0 - Функциональные возможности

В этой части описаны основные изменения и дополнительный функционал. Это краткий обзор, но иногда мы будем обращаться к конфигурационному файлу (чтобы пояснить то, о чём вы, возможно, ещё не имеете представления).

Вы можете пропустить эту часть, но мы рекомендуем ознакомиться с ней до, или сразу после установки.

3.1 - Cloaking[сокрытие хоста]

Cloaking – это механизм сокрытия реального имени компьютера пользователя. К примеру, если ваша система имеет имя d5142341.cable.wanadoo.nl, оно будет показано (при заходе на канал, выходе, whois и пр.) как rox-2DCA3201.cable.wanadoo.nl. Это полезно для предотвращения пользовательского флуда, так как реальное имя компьютера или его IP не показывается.

Эта функция контролируется режимом пользователя +x (использование: /mode ваш_ник +x), администраторы могут определить использование этого режима всеми по умолчанию или сделать так, что пользователи не смогут выполнить -x никогда.

Скрытая часть имени генерируется, если подгружен соответствующий модуль. На данный момент, включён только один модуль:
cloak: это официальный модуль начиная с версии 3.2.1, он гораздо надёжнее старого алгоритма: использует md5 и требует, чтобы вы имели три различных ключа set::cloak-keys::, состоящих из смеси прописных (a-z), заглавных (A-Z) букв и цифр (0-9) [т.е.: "AopAS6WQH2Os6hfosh4SFJHs"]. Смотрите example.conf для примера.

Эти ключи ДОЛЖНЫ быть одинаковыми на ВСЕХ СЕРВЕРАХ в сети. Также ключи должны храниться в секрете, потому что возможно получить реальный хост, зная эти ключи (что делает режим +x бесполезным).

3.2 - Модули

UnrealIRCd поддерживает модули, которые хороши тем, что:
- Вы можете загружать/перезагружать/выгружать их во время работы ircd(путём команды /rehash). Это позволяет исправлять некоторые ошибки или добавлять новые возможности без перезапуска сервера!
- Сторонние люди могут создавать модули с новыми командами, режимами пользователей и каналов.
UnrealIRCd идёт только с некоторыми модулями. Следите на www.unrealircd.com -> modules или используйте google.com для поиска сторонних модулей.

Вам необходимо загрузить как минимум два модуля, иначе вы не сможете запустить UnrealIRCd:
- модуль команд: commands.so (commands.dll в ОС Windows)
- модуль скрытности: обычно cloak.so (cloak.dll в ОС Windows).

3.3 - SNOMASKs

SNOMASK (Server Notice MASK - маска уведомлений сервера) - это специальный тип режима пользователя, который контролирует, какие уведомления от сервера вы будете получать (обычно используется операторами).

Необходимые маски устанавливаются командой: /mode ваш_ник +s SNOMASK. К примеру: /mode ваш_ник +s +cF
Чтобы убрать ранее установленную маску, используйте что-то вроде этого: /mode ваш_ник +s -c
Чтобы удалить все маски, просто напишите : /mode ваш_ник -s

Сейчас доступны маски:
c - локальные подключения
F - подключения к другим серверам (кроме U-lined серверов)
f - уведомление о флуде
k - уведомление о kill'e (здесь, и далее - выход из irc с причиной Killed) [*]
e - уведомление 'eyes'
j - уведомление 'junk'
v - уведомление о виртуальных хостах
G - уведомление о gline/shun
n - уведомление о смене ников на локальном сервере
N - уведомление о смене ников на других серверах
q - уведомление о попытке взять запрещённый ник (Q:line)
s - получение уведомлений от сервера [*]
S - получение уведомлений от спамфильтра
o - получение уведомлений о получении привилегий оператора
[*: данная маска доступна не только irc-операторам]

Вы можете контролировать, какие маски будут установлены автоматически при подключении (set::snomask-on-connect), и какие будут установлены при получении прав оператора (set::snomask-on-oper, oper::snomask).

По умолчанию, если пользователь просто установит режим +s, будут активированы некоторые маски. Для не операторов это +ks, для операторов - +kscfvGqo.

3.4 - Псевдонимы[aliases]

Используя псевдонимы, вы можете переопределить команды сервера. Вы можете задать псевдоним так, что, например "/ns identify blah" будет переадресовано nickserv (это будет преобразовано в: privmsg nickserv identify blah). Вы можете создать комплексные псевдонимы, например, /register может быть переадресован ChanServ, если первый параметр начинается с #, или адресован NickServ в ином случае.

Псевдонимы конфигурируются в блоке псевдонимов конфигурационного файла, так же их можно задать в отдельном файле с псевдонимами по умолчанию для наиболее используемых сервисов.

3.5 - Система помощи сервера (helpop)

UnrealIRCd имеет встроенную систему помощи, доступную по команде /helpop. /helpop - это команда, полностью задаваемая пользователем в блоке помощи конфигурационного файла. Файл help.conf включает в себя базовые сведения о всех командах.
Например, /helpop chmodes выдаст информацию обо всех режимах канала, которые есть в UnrealIRCd.
Помните, что если вы irc-оператор (ircop), или доступны для помощи (helpop), вам необходимо добавлять символ '?', т.е. вместо /helpop необходимо писать /helpop ? и вместо /helpop chmodes надо писать /helpop ?chmodes и т.д.

3.6 - Уровни доступа операторов

В UnrealIRCd существует множество уровней привилегий операторов. Вы можете давать им отдельные права (такие, как использование /gline), таким образом оставляя каждому только те привилегии, которые ему необходимы.

Эти привилегии контролируются флагами оператора в Oper-блоке, для получения подробной информации смотрите соответствующий блок конфигурационного файла и раздел 4.7.

3.7 - Команды операторов

В UnrealIRCd имеется много различных команд оператора, о которых рассказано в разделе Команды пользователя и оператора. Вы наверняка захотите прочитать его после установки :).

3.8 - SSL

SSL является аббревиатурой от Secure Socket Layer. Используя SSL, вы можете создавать защищённые соединения. Его можно использовать для шифрования трафика от сервера к серверу, но шифрование данных от клиента к серверу так же может быть организовано. Обычно SSL используют для защиты от перехвата трафика и для безопасной аутентификации.

Чтобы использовать SSL, вам необходимо скомпилировать сервер с поддержкой этого протокола. Чтобы указать используемые для SSL-соединений порты, необходимо в конфигурационном файле задать опцию listen::options::ssl.

Подключится на SSL-порт обычным способом невозможно (так что не стоит включать SSL на порту 6667), для этого необходим клиент или туннель, который понимает SSL протокол.

Клиенты, поддерживающие SSL: XChat, irssi, mIRC (версии 6.14 и выше, но нужно предпринять некоторые дополнительные шаги).

Для клиентов, которые не поддерживают SSL, вы можете использовать туннелирование, используя, к примеру, stunnel. Вот пример конфигурационного файла stunnel.conf (для stunnel версии 4.x):

   client = yes
				[irc]
				accept = 127.0.0.1:6667
				connect = irc.myserv.com:6697
				
Т.е. если вы соединяетесь на 127.0.0.1 порт 6667, ваш трафик будет зашифрован и перенаправлен на irc.myserv.com порт 6697 (это порт SSL).

При соединении с сервером вы должны проверить подлинность сертификата, а не просто принять его (как в примере с stunnel), иначе есть вероятность, что вы будете уязвимы для атак типа "активного сниффинга" (переадресация ssl), однако не будем вдаваться в подробности (самостоятельно ознакомьтесь с SSL более подробно, не спрашивайте у нас). [mIRC и xchat вызывают всплывающие окна с запросом о принятии/отказе сертификата, и это правильно].

3.9 - IPv6

Поддержка IPv6 в UnrealIRCd стабильна, начиная с версии beta15.
Ваша ОС должна иметь поддержку протокола IPv6, вам так же необходимо ответить утвердительно на вопрос о поддержке IPv6 в UnrealIRCd во время конфигурирования.

Экспериментальная реализация компанией Microsoft протокола IPv6 в Windows 2000/XP не поддерживается (пока) в UnrealIRCd.

3.10 - Сжатые соединения

Сжатые соединения должны использоваться на серверах для соединения между собой, что позволит уменьшить передаваемый трафик (используя zlib). Таким образом, можно экономить до 60-80% от ширины канала... Функция весьма полезна, если соединение идёт по узкому каналу или при соединении с большим числом пользователей, а так же при линковке, когда передаётся много данных о каждом пользователе/канале и т.д.

Чтобы скомпилировать сервер с поддержкой сжатых соединений, необходимо ответить Yes на вопрос о zlib в ./Config и установить соответствующую опцию в link::options::zip (с обоех сторон).

3.11 - Поддержка соединения с динамическим DNS/IP

UnrealIRCd содержит новые функции, помогающие пользователям с динамическими IP адресами использовать динамический DNS (что-то вроде blah.dyndns.org). Если вы соединяете два сервера с динамическими DNS именами, установите link::options::nodnscache и link::options::nohostcheck.

3.12 - Возможности защиты от flood'а

Тротлинг (Throttling)
Тротлинг - это метод, который позволяет вам ограничить скорость, с которой пользователь может соединяться и отсоединяться от вашего сервера. Вы можете сконфигурировать его в set::throttle блоке, чтобы ограничить X соединений в YY секунд с одного IP.
Режимы канала
Весьма эффективным средством против флуда являются некоторые режимы канала. Опишем несколько:
K = не позволять /knock, N = не позволять смену ников, C = не позволять CTCP, M = только зарегистрированные пользователи могут говорить, j = регулировка частоты входа на канал (на каждого пользователя).
Начиная с версии beta18, есть и более продвинутый режим канала: +f...
Режим канала f
Больше нет необходимости использовать скрипты и ботов для защиты от флуда на канале, этот функционал теперь встроен в ircd.
Пример использования режима +f: *** Blah sets mode: +f [10j]:15
Это значит, что 10 заходов на канал в течение 15 секунд разрешены, если же лимит превышен, то автоматически будет установлен режим +i (только по приглашениям).
Доступны следующие типы защиты от флуда:
type: имя: действие по умолчанию: другие доступные действия: комментарии
c CTCPs auto +C m, M
j заходы на канал auto +i R
k постукивание auto +K (считаются только для локального сервера)
m сообщения/уведомления auto +m M
n изменения ников auto +N
t текст kick b Сообщения/уведомления от одного пользователя, наподобие старого +f. Будет кикать или банить пользователя.

Пример:

*** ChanOp sets mode: +f [20j,50m,7n]:15
<ChanOp> ляля
*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test
-- повторяется XX линий --
*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test
-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i
*** server1.test.net sets mode: +i
<Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil15> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
-- повторяется XX линий --
-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m
*** server1.test.net sets mode: +m
*** Evil1 is now known as Hmmm1
*** Evil2 is now known as Hmmm2
*** Evil3 is now known as Hmmm3
*** Evil4 is now known as Hmmm4
*** Evil5 is now known as Hmmm5
*** Evil6 is now known as Hmmm6
*** Evil7 is now known as Hmmm7
*** Evil8 is now known as Hmmm8
-server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N
*** server1.test.net sets mode: +N
Можно немного усложнить:
Вместо действия по умолчанию, для некоторых типов флуда, можно задать ещё один тип, например: +f [20j#R,50m#M]:15
Это установит режим канала +R, если превышен лимит заходов на канал (>20 заходов в 15 секунд), и установит режим +M, если превышен лимит сообщений (>50 сообщений в 15 секунд).

Так же есть возможность "убрать режим спустя X минут": +f [20j#R5]:15 установит режим канала +R, если превышен лимит, и снимет его спустя 5 минут.
В конфигурации сервера можно задать время снятия режима по умолчанию(set::modef-default-unsettime), поэтому, если вы напечатаете +f [20j]:15, это трансформируется в +f [20j#i10]:15 (по умолчанию), вы можете установить [20j#i2]:15 или что-то похожее. Если вы хотите полностью отключить снятие режима канала, наберите +f [20j#i0]:15.

Старый режим +f (количество сообщений от конкретного пользователя) сейчас доступен как 't', +f 10:6 теперь задаётся как +f [10t]:6 и +f *20:10 теперь +f [20t#b]:10. IRCd автоматически конвертирует старые режимы +f в новые. Замечание: Время снятия режима по умолчанию не работает для 't' банов ([20t#b30]:15 не будет работать).

Выбор, какой лучше поставить режим +f, весьма зависит от самого канала. Сколько на нём сидит людей? Это игровой канал или нет (например: викторина или мафия)? Может, это главный канал в сети, или на этот канал автоматически заходит много людей? И т.д.
Не существует единого режима +f, который бы был хорош для всех каналов, но для ознакомления можно начать со следующих примеров и изменить их для своих нужд в дальнейшем:
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15
30 заходов на канал в течение 15 секунд, если превышен лимит, устанавливается режим +i на 10 минут
40 сообщений в канал в течение 15 секунд, если превышен лимит, устанавливается режим +m на 10 минут
7 ctcp запросов в течение 15 секунд, если превышен лимит, устанавливается режим +C на 15 минут
10 изменений ника в течение 15 секунд, если превышен лимит, устанавливается режим +N на 15 минут
30 "постукиваний" в течение 15 секунд, если превышен лимит, устанавливается режим +K на 10 минут
Если канал более-менее большой (>75 пользователей), вы можете увеличить чувствительность на заходы в канал (до 50) и количество сообщений (60 или 75).
Что по поводу снятия режимов канала, то вы должны хорошенько подумать... Вдруг возникнет ситуация, когда на канале не будет оператора? Должен ли я буду закрыть канал на 15 минут (что не хорошо для пользователей) или же на 5 (что хорошо для флудеров, которые могут подождать 5 минут и атаковать канал снова)? В зависимости установок защиты по типу флуда, пользователи не смогут зайти на канал (+i) или говорить (+m), что является не таким страшным, по сравнению с невозможностью сменить свой ник (+N) или посылать ctcp запросы в канал (+C), поэтому вы можете использовать различное время истекания режимов.
Режим канала j
Режим +f предотвращает вероятность флуда заходами на канал, по этому эта возможность "глобальна". К примеру, если будет установлена защита в виде 5:10 и 5 разных пользователей зайдут в течение 10 секунд, защита от флуда сработает. Режим канала +j работает по-другому. Он работает на основе конкретного пользователя. Работая быстрее, чем защита от заходов на канал, он разработан для защиты против флуда входов/выходов на канал ("дверной" флуд). Режим задаётся параметрами в виде X:Y, где X - количество входов, а Y - количество секунд. Если пользователь превышает лимит, он не сможет зайти на канал.

3.13 - Типы банов

Основные типы бана и скрытые хосты
UnrealIRCd поддерживает основные типы банов, такие как +b nick!user@host.
Если хост скрыт: 'rox-ACB17294.isp.com' и вы установили бан *!*@rox-ACB17294.isp.com, а пользователь установил на себя -x (и его хост стал, к примеру 'dial-123.isp.com), то пользователь будет всё равно забанен. Баны всегда проверяются на реальные и скрытые хосты.
IP так же доступны (eg: *!*@128.*) и так же всегда проверяются.

Баны на скрытые IP требуют некоторых пояснений:
Если у пользователя IP 1.2.3.4, его скрытый хост будет 341C6CEC.8FC6128B.303AEBC6.IP.
Если вы забаните *!*@341C6CEC.8FC6128B.303AEBC6.IP, то под бан будет попадать и *!*@1.2.3.4
Если вы забаните *!*@*.8FC6128B.303AEBC6.IP, то под бан будет попадать и *!*@1.2.3.*
Если вы забаните *!*@*.303AEBC6.IP, то под бан будет попадать и *!*@1.2.*
Надеемся, что данная информация окажется полезной, когда понадобится устанавливать бан.

Расширенные типы бана
Расширенные типы бана имеют вид: ~[!]<тип>:<stuff>. Доступные типы:
тип: имя разъяснение:
~q тихий Люди, попадающие под бан, могут заходить на канал, но не могут говорить, пока у них не будет +v или выше. Пример: ~q:*!*@blah.blah.com
~n запрет на смену ника Люди, попадающие под бан, не могут изменить ник, пока у них не будет +v или выше. Пример: ~n:*!*@*.aol.com
~c [префикс]канал Если люди сидят на указанном канале, они не смогут зайти. Префиксом можно указать (+/%/@/&/~), каких именно пользователей необходимо банить. Будут забанены те, у кого права на указанном канале равны или выше. Пример: +b ~c:#lamers, +e ~c:@#trusted
~r настоящее имя Если настоящее имя пользователя попадает под бан, он не сможет зайти.
Пример: ~r:*Stupid_bot_script*
ЗАМЕЧАНИЕ: Подчёркивание ('_') обозначает и пробел (' '), и подчёркивание ('_'), поэтому, данный бан будет влиять и на 'Stupid bot script v1.4'.
Данные типы бана поддерживаются и для листа с исключениями (+e).
Модули могут добавлять другие расширенные типы банов.

3.14 - Спамфильтр

Спамфильтр - это новая система борьбы со спамом, рекламой, червями и другими подобными вещами. Она работает как система ценза, но имеет некоторые преимущества.

Спамфильтры добавляются путём команды /spamfilter, которая имеет следующий синтакс:
/spamfilter [add|del|remove|+|-] [тип] [действие] [время_действия] [причина] [регулярное_выражение]
[тип] определяет тип цели фильтра:
Символ: Пункт конфигурационного файла: Описание:
c channel Сообщение в канале
p private Личное сообщение (от пользователя пользователю)
n private-notice Личное уведомление
N channel-notice Уведомление в канал
P part Причина покидания канала
q quit Причина выхода
d dcc Имя файла DCC
a away Сообщение отсутствия
t topic Установки топика
u user Бан на пользователя: направлен на nick!user@host:realname
Можно определить сразу несколько целей, например: cpNn
[действие] определяет, что будет предпринято (только одно действие можно определить)
kill "убивает" пользователя
tempshun делает shun на текущую сессию пользователя (если он переподключится, shun пропадёт)
shun устанавливает shun на хост
kline устанавливает kline на хост
gline устанавливает gline на хост
zline устанавливает zline на хост
gzline устанавливает gzline (глобальный zline) на хост
block только блокирует сообщение
dccblock пользователю запрещается посылать любое DCC
viruschan принудительно покидает все каналы, заходит на set::spamfilter::virus-help-channel, отключает все команды кроме PONG, ADMIN, и сообщает/уведомляет об этом на set::spamfilter::virus-help-channel
[время_действия] Длительность установленного фильтра на *line/shun, используйте '-' для установок по умолчанию или для пропуска задания времени (eg: если действие = 'block')
[причина] Причина Block/*line/shun. Вы НЕ МОЖЕТЕ использовать пробелы, вместо них используйте подчёркивания ('_'). Для установки в причину подчёркивания ('_'), используйте двойное подчёркивание ('__'). Используйте '-' для установок по умолчанию.
[регулярное_выражение] действующее регулярное выражение (regexp) или "нецензурное слово", которое заблокируется и вызовет реакцию спамфильтра

Пример: /spamfilter add pc gline - - Come watch me on my webcam
Если в сообщении в канал или в приват будет найден текст come watch me on my webcam, то сообщение заблокируется и немедленно добавится gline.
Ещё пример: /spamfilter add pc block - - come to irc\..+\..+
Это регулярное выражение, которое совпадает с Hi, come to irc.blah.net
Пример с указанием времени и причины:
/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam
Если come watch me on my webcam найдено в приватном сообщении, то на пользователя устанавливается gline на 3 часа с причиной Please go to www.viruscan.xx/nicepage/virus=blah.

Фильтры спама, добавленные с помощью /spamfilter, действуют на всю сеть. Они работают независимо от того, установлен ли на пользователе или канале флаг +G, спамфильтр не проверяется только на операторах и ulines (сервисы).

Вы так же можете добавлять спамфильтры в конфигурационные файлы, но это будут только локальные спамфильтры (т.е. не будут действовать во всей сети, используйте удалённые включения (remote includes) для этого). Синтакс spamfilter { } блоков описан тут.
Пример:

spamfilter {
    regex "//write \$decode\(.+\|.+load -rs";
    target { private; channel; };
    reason "Generic $decode exploit";
    action block;
};

set::spamfilter::ban-time позволяет установить время по умолчанию для *lines/shuns, которое добавляет спамфильтр (по умолчанию: 1 сутки)
set::spamfilter::ban-reason позволяет установить причину по умолчанию (по умолчанию: 'Spam/advertising')
set::spamfilter::virus-help-channel позволяет установить канал для действия 'viruschan' (по умолчанию: #help)
set::spamfilter::virus-help-channel-deny позволяет запретить нормальный вход на virus-help-channel (по умолчанию: no)

3.15 - CIDR

UnrealIRCd теперь поддерживает CIDR (Classless Interdomain Routing). CIDR позволяет банить диапазоны IP. Т.к. IP адреса провайдера размещены посредством CIDR, устанавливая баны с помощью CIDR, можно легко забанить провайдера. Unreal поддерживает CIDR для протоколов IPv4 и IPv6. CIDR маски можно использовать в allow::ip, oper::from::userhost, ban user::mask, ban ip::mask, except ban::mask, except throttle::mask, и except tkl::mask (для gzline, gline и shun). Дополнительно, CIDR может быть использован в /kline, /gline, /zline, /gzline и /shun. Unreal использует стандартный синтакс для IP/bits, т.е., 127.0.0.0/8 (влияет на 127.0.0.0 - 127.255.255.255), и fe80:0:0:123::/64 (влияет на fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).

3.16 - Использование национальных наборов символов в никах

UnrealIRCd теперь позволяет использование национальных наборов символов в никах. Это можно сделать в set::allowed-nickchars.
Таблица выбора:
Имя: Описание: Кодировка:
catalan Каталанская кодировка iso8859-1 (latin1)
danish Датская кодировка iso8859-1 (latin1)
dutch Нидерландская кодировка iso8859-1 (latin1)
french Французская кодировка iso8859-1 (latin1)
german Немецкая кодировка iso8859-1 (latin1)
swiss-german Швейцаро-немецкая кодировка(без es-zett) iso8859-1 (latin1)
icelandic Исландская кодировка iso8859-1 (latin1)
italian Итальянская кодировка iso8859-1 (latin1)
spanish Испанская кодировка iso8859-1 (latin1)
swedish Шведская кодировка iso8859-1 (latin1)
latin1 catalan, danish, dutch, french, german, swiss-german, spanish, icelandic, italian, swedish iso8859-1 (latin1)
hungarian Венгерская кодировка iso8859-2 (latin2), windows-1250
polish Польская кодировка iso8859-2 (latin2)
romanian Румынская кодировка iso8859-2 (latin2), windows-1250, iso8859-16
latin2 hungarian, polish, romanian iso8859-2 (latin2)
polish-w1250 Польская кодировка, windows вариант (к сожалению, более общий, чем iso) windows-1250
slovak-w1250 Словакская кодировка, windows вариант windows-1250
czech-w1250 Чешская кодировка, windows вариант windows-1250
windows-1250 polish-w1250, slovak-w1250, czech-w1250, hungarian, romanian windows-1250
greek Греческая кодировка iso8859-7
turkish Турецкая кодировка iso8859-9
russian-w1251 Русская кодировка windows-1251
belarussian-w1251 Белорусская кодировка windows-1251
ukrainian-w1251 Украинская кодировка windows-1251
windows-1251 russian-w1251, belarussian-w1251, ukrainian-w1251 windows-1251
hebrew Израильская кодировка iso8859-8-I/windows-1255
chinese-simp Упрощённый китайский Multibyte: GBK/GB2312
chinese-trad Традиционный китайский Multibyte: GBK
chinese-ja Японский Multibyte: GBK
chinese китайский-* Multibyte: GBK
gbk китайский-* Multibyte: GBK

Замечание 1: Пожалуйста, сообщите, если некоторые комбинации вызывают проблемы.

Например, при комбинации latin* и chinese-* могут возникнуть неполадки, и Unreal выдаст ошибку. Смешивание других кодировок может привести к проблемам корректного отображения, поэтому Unreal выдаст предупреждение, если вы будете пытаться использовать одновременно latin1/latin2/greek.

Замечание 2: Регистронезависимость (т.е. когда буква в нижнем регистре будет являться ею же и в верхнем) относится только к кодировке US-ASCII, т.е. "я" и "Я" распознаются как разные символы и ники "Ясь" и "ясь" могут существовать одновременно. Это является следствием ограничения текущей системы стандартов IRCd и эта проблема не может быть решена в настоящем времени. Люди должны быть предупреждены об этом ограничении. Заметим, что данное ограничение распространяется и на каналы, по этому будьте внимательны и помните, что для кодировки US-ASCII регистронезависимость всегда существует.

Замечание 3: Базовый набор символов (a-z A-Z 0-9 [ \ ] ^ _ - { | }) всегда разрешён.

Пример №1, для людей из Западной Европы:
set { allowed-nickchars { latin1; }; };
Пример №2, если у вас в основном китайские пользователи, и вы желаете использовать "нормальный" китайский язык:
set { allowed-nickchars { chinese-simp; chinese-trad; }; };

3.17 - Поддержка CGI:IRC

UnrealIRCd поддерживает подмену хоста для CGI:IRC, что означает, что вы можете пометить определённые CGI:IRC гейты как "доверенные". В этом случае IRCd будет показывать реальный хост/IP пользователей везде в IRC, вместо хоста/ip CGI:IRC-гейта.

Смотрите cgiirc block для того, чтобы сконфигурировать поддержку CGI:IRC.

3.18 - Синхронизация времени

Для IRC-серверов очень важно, чтобы системное время было точным. Без точного времени каналы могут быть десинхронизированы, пользователи могут быть отключенны с причиной killed, каналы могут не отображаться по команде /LIST. Вкратце, неточное время - большая проблема.

UnrealIRCd обладает встроенной поддержкой синхронизации. Хотя не настолько оптимальной (разбежка может составлять несколько секунд), но это решает большинство проблем. Если у вас есть возможность, мы рекомендуем использовать программное обеспечение для синхронизации времени (такое как ntpd под *NIX или сервис синхронизации под Windows. В этом случае вы можете выключить синхронизацию времени IRC-сервером).

Что же делает UnrealIRCd (по умолчанию) при загрузке? Он посылает (по умолчанию) запрос на сервера синхронизации времени и назначает встроенное время ircd (НЕ системное время) в соответствии с тем сервером, от которого ответ пришёл первым (т.е. он был более быстрым). Если, по каким-то причинам, Unreal не получает ответа от серверов синхронизации в течении 3-х секунд, IRCd продолжит свою загрузку.

Конфигурация синхронизации времени (так же и отключение) происходит посредством блока set::timesynch, подробности в документации.

3.19 - Другие возможности

UnrealIRCd имеет множество других возможностей, не все из которых тут раскрыты... Вы можете найти их в другом месте самостоятельно.

4.0 - Конфигурирование вашего unrealircd.conf

Прежде всего, создание вашего первого unrealircd.conf займёт примерно 15-60 минут. Создание хорошего unrealircd.conf займёт гораздо больше времени. Вы не должны стремится запустить как можно быстрее IRCd, гораздо быстрее будет пройтись по всем пунктам последовательно. Если у вас возникают проблемы, проверьте синтаксис, проверьте документацию и ЧаВО прежде, чем просить помощи или сообщать об ошибке.

4.1 Обзор структуры конфигурационного файла

Новая система базируется на использовании блоков. Каждая секция или блок имеет специфический формат. К примеру:

<block-name> <block-value> {
    <block-directive> <directive-value>;
};

<block-name> - это тип блока, такой как me или admin. <block-value> иногда определяет значение, к примеру /oper login, но иногда может быть и подтипом, как например в ban user.

<block-directive> - это индивидуальное значение в блоке и <directive-value> соответствующее ему значение. Если <directive-value> содержит пробелы, или символы, соответствующие комментариям, то они должны быть в двойных кавычках. Если в такой строке необходимо использовать кавычку, используйте \", и это будет воспринято как символ кавычки.

A <block-directive> может содержать директивы в себе, в этом случае необходимо заключать их в фигурные скобки. В некоторых блоках нет директив, и они определяются просто в <block-value>, например, как include. На заметку, здесь нет установленного формата, т.е. целый блок может быть записан и в одну линию, а может и в несколько. Для удобства чтения был принят формат, который употребляется здесь, он же рекомендован к использованию в файле.

Замечание: конфигурационный файл регистрозависим, поэтому BLOCK-NAME не одно и тоже, что и block-name. По поводу вхождений в блок в конфигурационном файле использовано следующая терминология. К примеру, если разговор идёт о <directive-name> в последующем примере, вы должны говорить <block-name>::<block-directive> и если директива - это подблок, на который вы хотите сослаться, вы должны добавить ещё :: и имя поддирективы.

Если беседа будет вестись о безымянной директиве, то <block-name>:: будет в данном случае означать <block-value>, или же это будет вхождение в подблок без имени.

Поддерживается три типа комментариев:

# Однострочный комментарий
// Однострочный комментарий
/* Многострочный
комментарий */

Теперь, зная как оно работает, вы можете скопировать doc/example.conf в директорию вашего UnrealIRCd (например: /home/user/Unreal3.2) и переименовать его в unrealircd.conf (ИЛИ создать ваш unrealircd.conf с нуля). Рекомендовано сделать именно так, просматривая все типы блоков и используя это руководство как справку.

4.2 - Me блок НЕОБХОДИМ (Ранее известен как M:Line)

Синтаксис:

me {
    name <имя-сервера>;
    info <описание-сервера>;
    numeric <нумерик-сервера>;
};

Значения абсолютно прозрачны. name определяет имя сервера, info - строчку информации о сервере, numeric определяет уникальное определяющее число для сервера. Это должно быть значение между 0 и 254 и оно должно быть УНИКАЛЬНО для каждого сервера в сети, т.е. НЕ должно быть разных серверов с одинаковыми нумериками.

Пример:

me {
    name "irc.foonet.com";
    info "FooNet Server";
    numeric 1;
};

4.3 - Admin блок НЕОБХОДИМ (Ранее известен как A:Line)

Синтаксис:

admin {
    <text-line>;
    <text-line>;
};

Admin блок определяет текст, который будет выводиться по команде /admin. Вы можете определить много информации для отображения, но по стандарту необходимо иметь хотя бы ник администратора и его email. Если желаете, можно добавить любую дополнительную информацию.

Пример:

admin {
    "Bob Smith";
    "bob";
    "widely@used.name";
};

4.4 - Class блок НЕОБХОДИМ (Ранее известен как Y:Line)

Синтакс:

class <name> {
    pingfreq <частота-пинга>;
    connfreq <частота-соединения>;
    maxclients <максимальное-количество-клиентов>;
    sendq <send-queue>;
    recvq <recv-queue>;
};

Блок Class определяет классы, в которые входят соединения (например, из блока allow или servers из блока link). Вы можете сделать составными блоки class (т.е.: для servers, clients, opers).

name - это описательное имя, вроде "clients" или "servers", данное имя используется для ссылок в блоках allow/link/oper и др.

pingfreq - это количество секунд между командой PING от сервера (рекомендовано использовать промежуток от 90 до 180).

connfreq используется только для серверов и обозначает количество секунд между попытками соединения, если автосоединение включено

maxclients определяет максимум (всего) число клиентов/серверов, которые могут быть в этом классе

sendq определяет количество данных, которое можно передавать подряд (очень большое для серверов с малым каналом и среднее для клиентов)

recvq определяет количество данных, которое можно получить одновременно и используется для контроля за флудом (применимо только к нормальным пользователям, попробуйте поэкспериментировать с промежутком 3000-8000, 8000 установлено по умолчанию).

Примеры:

class clients {
    pingfreq 90;
    maxclients 500;
    sendq 100000;
    recvq 8000;
};

class servers{
    pingfreq 90;
    maxclients 10; /* Максимальное количество серверов в блоке link */
    sendq 1000000;
    connfreq 100; /* Через сколько секунд повторять попытку соединения */
};

4.5 - Allow блок НЕОБХОДИМ (Ранее известен как I:Line)

Синтакс:

allow {
    ip <пользователь@маска-ip-соединения>;
    hostname <пользователь@маска-host-соединения>;
    class <класс-соединения>;
    password <пароль-на-соединение> { <тип-авторизации>; };
    maxperip <максимальное-количество-соединений-на-один-ip>;
    redirect-server <сервер-переадресации>;
    redirect-port <порт-переадресации>;
    options {
        <опция>;
        <опция>;
        ...
    };
};

Класс allow позволяет задать, кто может подключиться к данному серверу; можно сделать несколько блоков allow.

О совпадениях
Контроль доступа работает следующим образом: ip совпадает ИЛИ хост совпадает, поэтому "hostname *@*"; и "ip *@1.2.3.4"; будут совпадать. Чтение блоков allow идёт сверху вниз, поэтому, если вам необходимо задать специфические блоки host/ip allow, то задавайте их ПОСЛЕ главного блока *@* allow. Дополнительно, если вы хотите задать блок, который базируется только на IP, тогда установите в hostname что-нибудь неправильное, например "hostname NOBODY;", это позволит вам сделать блок только по IP.

ip
IP маска - это user@ip, user - это идент (ident) и часто устанавливается в *, ip - это ip-маска. Примеры: *@* (отовсюду), *@192.168.* (только для адресов, начинающихся с 192.168), и др.

host
Хостмаска - это user@host, и снова, user часто выставляется в *. Примеры: *@* (отовсюду), *@*.wanadoo.fr (только от wanadoo.fr).

password (не обязательно)
Требует пароль на соединение. Так же можно указать метод шифрования пароля.

class
Определяет имя класса, пользователям/серверам которого можно подключаться.

maxperip (необязательно, но рекомендуется)
Позволяет указать, сколько соединений с одного IP разрешено на этот сервер (пример: maxperip 4;).

redirect-server (необязательно)
Если класс полон, перенаправляет пользователей на указанный сервер (если такое поддерживают клиенты [mIRC 6 поддерживает]).

redirect-port (необязательно)
Если указан redirect-server, вы можете задать порт для него, иначе будет назначен 6667.

options блок (необязательно)
Правильные опции:
useip всегда показывать IP вместо хостнейма
noident не использовать ident, вместо него использовать имя пользователя из клиента
ssl Только пользователи из этого блока могут подключаться к серверу по SSL
nopasscont продолжить совпадение, если пароль не был задан (можно клиентов определить в специальные классы, если они подставили пароль).

Примеры:

allow {
    ip *;
    hostname *;
    class clients;
    maxperip 5;
};

allow {
    ip *@*;
    hostname *@*.passworded.ugly.people;
    class clients;
    password "f00Ness";
    maxperip 1;
};

4.6 - Listen блок НЕОБХОДИМ (Ранее известен как P:Line)

Синтаксис:

listen <ip:port> {
    options {
        <option>;
        <option>;
        ...
    };
};

Данный блок позволяет определить, какие порты должен прослушивать IRCD. Если опции вам не нужны, можно определить только блок в виде <ip:port>;.

ip и port
Вы можете установить ip в * чтобы ожидать подключения на всех доступных ip адресах, или определить только необходимый ip (обычно необходим в провайдерах shell-ов). port - это порт, на котором вы хотите включить прослушивание. Можно так же определить диапазон портов, вместо указания каждого из них индивидуально. Например, 6660-6669 будет прослушивать все порты от 6660 до 6669 (включительно).

Информация для пользователей IPv6
Если на сервере вы используете IPv6, вам необходимо заключать IP в квадратные скобки. Например, [::1]:6667 (будет прослушиваться порт 6667 на localhost). Если вы используете IPv6 и вам необходимо прослушивать на определённом IPv4 адресе, вам необходимо использовать ::ffff:ipv4ip. Пример: [::ffff:203.123.67.1]:6667 будет прослушивать на 203.123.67.1 порт 6667. Естественно, можно использовать и *.

options блок (необязательно)
Если вы желаете, можно определить специальные опции для указанного порта, такие как:
clientsonly
порт только для клиентов
serversonly
порт только для серверов
java
CR поддержка чата на java
ssl
порт для зашифрованного соединения (SSL)

Примеры:

listen *:6601 {
    options {
        ssl;
        clientsonly;
    };
};

Если без опций:

listen *:8067;
listen 213.12.31.126:6667;
listen *:6660-6669;

4.7 - Oper блок РЕКОМЕНДОВАН (Ранее известен как O:Line)

oper <имя> {
    from {
        userhost <хостмаска>;
        userhost <хостмаска>;
    };
    password <пароль> { <тип-аутентификации>; };
    class <имя-класса>;
    flags <флаги>;
    flags {
        <флаг>;
        <флаг>;
        ...
    };
    swhois <информация в whois>;
    snomask <сномаска (snomask)>;
    modes <режимы>;
    maxlogins <число>;
};

Блок oper позволяет назначить IRC-операторов на вашем сервере. oper:: определяет логин команды /oper. oper::from::userhost - это user@host маска, под которую должен попадать пользователь. Вы можете определить более, чем одну хостмаску в oper::from::userhost. oper::password - пароль, который должен определить пользователь. oper::password:: позволяет определить метод аутентификации для данного пароля(crypt, md5, sha1 и ripemd-160). Если вы хотите использовать просто текстовый пароль, оставьте этот подблок пустым.

Замечание: логин и пароль РЕГИСТРОЗАВИСИМЫ.

oper::class директива определяет имя уже существующего (в конфигурационном файле должен следовать перед oper-блоком) класса, который будет использовать блок oper.

oper::flags директива имеет 2 формата. Если вы желаете использовать старый стиль флагов для операторов, например, OAa, используйте метод задания флагов <flags>, если желаете использовать новый стиль, например, services-admin, тогда используйте метод флагов { <flag>; } . Ниже приведён список всех флагов (в обоих форматах) и что они обозначают.

Старый флаг
Новый флаг
Описание
o
local
Локальный оператор
O
global
Глобальный оператор
C
coadmin
Помощник администратора сервера
A
admin
Администратор сервера
a
services-admin
Администратор сервисов
N
netadmin
Администратор сети
r
can_rehash
Оператор может использовать /rehash
D
can_die
Оператор может использовать /die
R
can_restart
Оператор может использовать /restart
h
helpop
Оператор получает режим пользователя +h (оператор помощи (helpop))
w
can_wallops
Оператор может посылать /wallops
g
can_globops
Оператор может посылать /globops
c
can_localroute
Может соединять сервера локально
L
can_globalroute
Может соединять сервера глобально
k
can_localkill
Может использовать команду /kill на локальных пользователей
K
can_globalkill
Может использовать /kill на всех пользователей
b
can_kline
Может использовать /kline
B
can_unkline
Может использовать /kline -u@h
n
can_localnotice
Может посылать уведомления по локальному серверу
G
can_globalnotice
Может посылать уведомления по всем серверам
z
can_zline
Может использовать /zline
t
can_gkline
Может использовать /gline, /shun и /spamfilter
Z
can_gzline
Может использовать /gzline
W
get_umodew
Устанавливает режим +W, когда вы оператор
H
get_host
Устанавливает ваш хост в оперхост
v
can_override
Может использовать OperOverride
q
can_setq
Может устанавливать режим пользователя +q
X
can_addline
Может использовать /addline
d
can_dccdeny
Может использовать /dccdeny и /undccdeny

Флаги, устанавливаемые по умолчанию:

local global admin/coadmin services-admin netadmin
can_rehash can_rehash can_rehash can_rehash can_rehash
helpop helpop helpop helpop helpop
can_globops can_globops can_globops can_globops can_globops
can_wallops can_wallops can_wallops can_wallops can_wallops
can_localroute can_localroute can_localroute can_localroute can_localroute
can_localkill can_localkill can_localkill can_localkill can_localkill
can_kline can_kline can_kline can_kline can_kline
can_unkline can_unkline can_unkline can_unkline can_unkline
can_localnotice can_localnotice can_localnotice can_localnotice can_localnotice
can_globalroute can_globalroute can_globalroute can_globalroute
can_globalkill can_globalkill can_globalkill can_globalkill
can_globalnotice can_globalnotice can_globalnotice can_globalnotice
global global global
can_dccdeny can_dccdeny can_dccdeny
can_setq can_setq
admin
services-admin

Директива oper::swhois позволяет вам добавить информацию, выводимую по команде whois для оператора. [необязательно]

Директива oper::snomask позволяет установить маску получения уведомлений от сервера при взятии оператора. Для списка доступных SNOMASK смотрите секцию 3.3 [необязательно]

Директива oper::modes позволяет задать режимы оператора при взятии оператора. [необязательно]

oper::maxlogins позволяет ограничить количество логинов оператора с текущего хоста, для примера, если вы установите его в 1, то только один человек может стать оператором (из этого блока) в любое время. [необязательно]

Пример:

oper bobsmith {
    class clients;
    from {
        userhost bob@smithco.com;
        userhost boblaptop@somedialupisp.com;
    };
    password "f00";
    flags {
        netadmin;
        can_gkline;
        can_gzline;
        can_zline;
        can_restart;
        can_die;
        global;
    };
    swhois "Пример маски whois";
    snomask frebWqFv;
};

Немного информации об OperOverride:
OperOverride понимается как вход на канал с режимами +ikl и вход через баны(вам необходимо вначале сделать /invite самого себя), выдача оператора самому себе на канале и т.д.
Флаг can_override был добавлен как попытка остановить превышение полномочий оператора. По умолчанию ни один оператор не может делать override, вам необходимо установить флаг can_override для этого (примечание: из личного опыта, в большой и децентрализованной сети именно этот флаг вызывает больше всего проблем с "беспределом" операторов /DeathBaba/).

4.8 - DRpass блок РЕКОМЕНДОВАН (Ранее известен как X:Line)

Синтаксис:

drpass {
    restart <пароль-для-перезапуска> { <тип-аутентификации>; };
    die <пароль-для-остановки-сервера> { <тип-аутентификации>; };
};

Данный блок устанавливает пароли на команды /restart и /die с директивами drpass::restart и drpass::die. drpass::restart:: и drpass::die:: позволяют установить тип аутентификации для их использования. Типы аутентификации, поддерживаемые на текущий момент: crypt, md5, sha1 и ripemd-160.

Пример:

drpass {
    restart "Я-очень-люблю-перезапуски";
    die "die-you-stupid";
};

4.9 - Директива Include

Синтаксис:
include <file-name>;

Данная директива определяет имя файла, который будет загружен как отдельный конфигурационный файл. Этот файл может содержать любой тип блоков конфигурирования и может включать другие файлы. В именах файлов поддерживаются шаблоны (wildcards), что позволяет загружать несколько файлов за один раз.

Пример 1: сетевой файл

include mynetwork.network;

Это в случае использования отдельного сетевого файла. На данный момент все сетевые настройки могут быть включены прямо в unrealircd.conf. Или же можно включить их для загрузкив include - решать вам.

Пример 2: псевдонимы

include aliases/ircservices.conf

Другой пример использования include. UnrealIRCd поставляется вместе с некоторыми файлами, которые содержат псевдонимы (aliases)большинства сервисов:

4.10 - Директива LoadModule НЕОБХОДИМА

Синтаксис:
loadmodule <имя-файла>;

Смотри тут чтобы узнать, какие модули используются.

Модули из стандартной поставки Unreal3.2:

commands.so / commands.dll - все "/" команды (пока не все, но скоро будут) НЕОБХОДИМ
cloak.so / cloak.dll - модуль скрытности НЕОБХОДИМ (или другой модуль скрытности)

Если вы хотите быть уверенным в том, что они загружены:

loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

или в ОС Windows:

loadmodule "modules/commands.dll";
loadmodule "modules/cloak.dll";

4.11 - Log блок РЕКОМЕНДОВАН

Синтаксис:

log <имя-файла> {
    maxsize <максимальный-размер-файла>;
    flags {
        <флаг>;
        <флаг>;
        ...
    };
};

Блок log позволяет назначить различные имена файлов логов для различных целей. log:: содержит имя файла лога. log::maxsize - это необязательная директива, позволяющая определить размер файла лога, после превышения которого он будет очищен. Можно ввести строку, используя MB для мегабайт, KB для килобайт, GB для гигабайт. log::flags определяет тип информации, которая будет занесена в файл. Список доступных флагов приведён ниже.

Можно создать несколько блоков log, чтобы протоколировать разную информацию в разные файлы.

Доступные флаги:
errors ошибки
kills уведомления команды /kill
tkl информация о *lines, shuns и spamfilters (добавление/удаление/истекание срока)
connects соединения/отсоединения пользователей
server-connects соединения/отсоединения сервера
kline использование команды /kline
oper попытки команды /oper (как удачные, так и неудачные)
sadmin-commands использование команд /sa* (samode, sajoin, sapart и т.д.)
chg-commands использование команд /chg* (chghost, chgname, chgident и т.д.)
oper-override использование operoverride
spamfilter совпадения спамфильтра

Пример:

log ircd.log {
    maxsize 5MB;
    flags {
        errors;
        kills;
        oper;
        kline;
        tkl;
    };
};

4.12 - TLD блок НЕОБЯЗАТЕЛЬНО (Ранее известен как T:Line)

Синтаксис:

tld {
    mask <хостмаска>;
    motd <файл-motd>;
    rules <файл-rules>;
    shortmotd <файл-shortmotd>;
    opermotd <файл-opermotd>;
    botmotd <файл-botmotd>;
    channel <имя-канала>;
    options {
        ssl;
    };
};

Блок tld позволяет вам определить сообщение дня(motd), правила и канал для пользователей, базируясь на их хосте. Это весьма полезная вещь, если вы используете различные motd для различных языков. tld::mask - это user@host маска, где имя пользователя и имя хоста должны попадать под него. tld::motd, tld::shortmotd, tld::opermotd, tld::botmotd и tld::rules определяют сообщение дня (motd), короткое сообщение дня (shortmotd), сообщение дня для оператора(opermotd), сообщение дня для бота (botmotd), файл правил пользования, которые будут показаны данной хостмаске. tld::shortmotd, tld::opermotd и tld::botmotd необязательны. tld::channel необязателен, но позволяет вам определить канал, на который пользователь попадает по умолчанию при подключении к серверу. Если tld::channel определен, то он перезапишет канал для входа по умолчанию. tld::options блок позволяет определить дополнительные требования, пока что только tld::options::ssl (показывать файл для пользователей SSL) и tld::options::remote (показывать файл для удалённых пользователей).

Вхождения в блок TLD проверяются сверху вниз.

Пример:

tld {
    mask *@*.ru;
    motd "ircd.motd.ru";
    rules "ircd.rules.ru";
};

4.13 - Ban Nick блок НЕОБЯЗАТЕЛЕН (Ранее известен как Q:Line)

Синтаксис:

ban nick {
mask <ник>; reason <причина-бана>; };

Блок ban nick позволяет отключить использование ников на сервере. В ban::mask можно использовать шаблоны (wildcards) для определения множества ников, в ban::reason необходимо написать причину бана. Данные блоки в большинстве случаев устанавливаются для ников, которые используют сервисы сети.

Пример:

ban nick {
    mask "*C*h*a*n*S*e*r*v*";
    reason "Reserved for Services";
};

4.14 - Ban User блок НЕОБЯЗАТЕЛЕН (Ранее известен как K:Line)

Синтаксис:

ban user {
    mask <хостмаска>;
    reason <причина-бана>;
};

Блок позволяет забанить по маске user@host при коннекте к серверу. ban::mask - это шаблон вида user@host, ban::reason - это причина бана. Замечание: это только локальный бан, пользователь может обойти его, подключившись к другим серверам в сети.

Пример:

ban user {
    mask *tirc@*.saturn.bbn.com;
    reason "Дурила_Картонная";
};

4.15 - Ban IP блок НЕОБЯЗАТЕЛЕН (Ранее известен как Z:Line)

Синтаксис:

ban ip {
    mask <ip-маска>;
    reason <причина-бана>;
};

Блок ban ip банит указанный IP и лишает доступа к серверу, в т.ч. и попытки пользователей и серверов присоединится к серверу. Параметр ban::mask - это IP, который может содержать символы и/или шаблон. ban::reason - это причина, по которой отказано в использовании сервера. Т.к. бан распространяется и на сервера, будьте с ним очень внимательны!

Пример:

ban ip {
    mask 192.168.1.*;
    reason "Получи реальный ip, ламeр :]!";
};

4.16 - Ban Server блок НЕОБЯЗАТЕЛЕН (Ранее известен как q:Line)

Синтаксис:

ban server {
    mask <имя-сервера>;
    reason <причина-бана>;
};

Данный блок отключает возможность сервера присоединится к сети. Если забаненый сервер соединяется непосредственно к вашему серверу, то соединение запрещается. Если забаненый сервер соединяется к удалённому серверу, то ваш локальный сервер, где прописан бан, отключается от сети. Поле ban::mask определяет шаблон для совпадения с именем сервера, который пытается соединится. ban::reason определяет причину, по которой бан был установлен.

Пример:

ban server {
    mask broken.server.my.network.com;
    reason "Он сломан!";
};

4.17 - Ban RealName блок НЕОБЯЗАТЕЛЕН (Ранее известен как n:Line)

Синтаксис:

ban realname {
    mask <маска-реального-имени>;
    reason <причина-бана>;
};

Блок ban realname позволяет забанить клиента, базируясь на поле GECOS (реальное имя). Это весьма полезная вещь для прекращения флуда клонов, потому что достаточно часто боты-клоны используют одинаковое имя. ban::mask определяет реальное имя для бана, можно использовать шаблон. ban::reason определяет причину установки бана.

Пример:

ban realname {
    mask "Bob*";
    reason "Bob sucks!";
};

4.18 - Ban Version блок НЕОБЯЗАТЕЛЕН

Синтаксис:

ban version {
    mask <маска-версии>;
    reason <причина-бана>;
    action [kill|tempshun|shun|kline|zline|gline|gzline];
};

Блок ban version позволяет вам забанить IRC клиента, базируясь на ПО, которое он использует. Это работает только тогда, когда клиент посылает ответ на CTCP version. Если ответ не приходит, то бан не работает. Данная вещь позволяет вам блокировать вредоносные скрипты. ban::mask определяет версию, на которую ставится бан (можно использовать шаблон), ban::reason определяет причину установки бана. Вы так же можете установить ban::action, kill используется по умолчанию, tempshun сделает shun на коннект определённого пользователя, что эффективно против ботов/зомби с динамическими IP и не влияет на невиновных пользователей. shun/kline/zline/gline/gzline установят бан на (*@IPADDR), время действия бана может быть сконфигурировано опцией set::ban-version-tkl-time и по умолчанию равно 1 суткам.

Пример:

ban version {
    mask "*SomeLameScript*";
    reason "SomeLameScript содержит трояна";
};
ban version {
    mask "*w00tZombie*";
    reason "Я ненавижу толпы зомби";
    action zline;
};

4.19 - Ban Exceptions блок НЕОБЯЗАТЕЛЕН (Ранее известен как E:Line)

Синтаксис:

except ban {
    mask <хостмаска>;
};

Блок except ban позволяет определить user@host в качестве исключения для бана. Данный блок используется, если вы хотите забанить провайдера, но так же хотите, чтобы определённые пользователи могли присоединится. Директива except::mask определяет шаблон user@host для клиента, чтобы позволить ему присоединится.

Пример:

except ban {
    mask myident@my.isp.com;
};

4.20 - TKL Exceptions блок НЕОБЯЗАТЕЛЕН

Синтаксис:

except tkl {
    mask <хостмаска>;
    type <тип>;
    type { 
        <тип>;
        <тип>;
        ...
    };
};

Блок except tkl позволяет вам определить user@host для преодолевания бана tkl, если пользователь под него попадает. Данный блок используется, если вы хотите забанить провайдера, но так же хотите, чтобы определённые пользователи могли присоединится. Директива except::mask определяет маску user@host для клиента, чтобы позволить ему присоединится. except::type определяет, какой тип бана должен преодолеваться. Возможные типы: gline, gzline, qline, gqline и shun, что позволяет исключать из Glines, Global Zlines, Qlines, Global Qlines и shuns. Если используется формат type {}, то можно определить несколько типов.

Пример:

except tkl {
    mask myident@my.isp.com;
    type gline;
};

4.21 - Throttle Exceptions блок НЕОБЯЗАТЕЛЕН

Синтаксис:

except throttle {
    mask <маска-ip>;
};

Блок except throttle позволяет определить IP маску, с которой можно преодолевать систему троттлинга. Блок используется, если вы включили троттлинг. except::mask определяет маску IP, которая не будет забанена троттлингом.

Пример:

except throttle {
    mask 192.168.1.*;
};

4.22 - Deny DCC блок НЕОБЯЗАТЕЛЕН (Ранее известен как dccdeny.conf)

Синтаксис:

deny dcc {
    filename <файл-для-блокирования>;
    reason <причина-бана>;
    soft [yes|no];
};

Блок deny dcc позволяет вам установить имя файла, передача которого невозможна посредством DCC на этом сервере. Блок используется для остановки распространения троянов и вирусов.

Параметр deny::filename определяет маску для имени файла, передачу которого нужно блокировать; deny::reason определяет причину, почему файл заблокирован.

Опция deny::soft, если установлена в 'yes', DCC будет блокирован до тех пор, пока пользователь не позволит передачу самостоятельно посредством /DCCALLOW +nickname-trying-to-send. Смотрите dccallow.conf для выяснения подробностей конфигурирования dccallow.

Пример:

deny dcc {
    filename virus.exe;
    reason "Это вирус";
};

deny dcc {
    filename "*.exe";
    reason "Исполняемый файл";
    soft yes;
};

4.23 - Deny Version блок НЕОБЯЗАТЕЛЕН (Ранее известен как V:Line)

Синтаксис:

deny version {
    mask <имя-сервера>;
    version <номер-версии>;
    flags <флаги-компиляции>;
};

Данный блок позволяет вам запретить линковку сервера, базируясь на версии Unreal и на опциях, с которыми он был скомпилирован. Директива deny::mask определяет маску, на какие сервера будет распространятся запрет. deny::version определяет номер версиипротокола.

К примеру, 3.0 - это 2301, 3.1.1/3.1.2 это 2302, 3.2 это 2303. Первым символом этого параметра может быть один из следующих: >, <, =, !. Этот символ сообщает IRCd, как интерпретировать версию. Если первый символ >, то будут запрещены все версии, номер у которых БОЛЬШЕ, если это <, то все версии МЕНЬШЕ, если это = , то только эта версия запрещена; ! означает, что все версии, кроме данной, запрещены. Директива deny::flags позволяет указать флаги, с которыми был или не был скомпилирован сервер. Флаги следуют один за одним без разделения, если символ идёт с ! - это значит, что сервер может не содержать его, а если нет такого префикса - это значит, что сервер должен быть скомпилирован с указанным флагом.

4.24 - Deny Link блок НЕОБЯЗАТЕЛЕН (Ранее известен как D/d:Line)

Синтаксис:

deny link {
    mask <имя-сервера>;
    rule <выражение>;
    type <тип-запрета>;
};

Данный блок позволяет вам использовать специфические правила для запрета линковки сервера. deny::mask определяет маску имени сервера, на которую распространяется данное правило. Директива deny::rule очень сложна и позволяет детально настраивать запрет на линковку. Поддерживается 4 операции: connected(<маска-сервера>) вернёт истину (true), если сервер попадает под маску и соединён; directcon(<маска-сервера>) вернёт true если сервер попадает под маску и напрямую соединён с сервером; via(<маска-via>,<маска-сервера>), вернёт true, если сервер попадает под маску и соединён через сервер, попадающий под via-маску; directop(), которое вернёт true если оператор, который выполнил /connect, напрямую соединен с этим сервером. Данные операции могут комбинироваться посредством && (логическое И) и || (логическое ИЛИ), они могут заключаться в скобки для группировки. Если перед оператором идет !, он проверяется на false. Если полное вычисление выражения вернёт true, то соединение будет запрещено. deny::type позволяет два различных значения: auto (применимо только для автосоединений, /connect будет работать), и all (применяется на все попытки соединений).

4.25 - Deny Channel блок НЕОБЯЗАТЕЛЕН (Ранее известен как chrestrict.conf)

Синтаксис:

deny channel {
    channel "<маска-канала>";
    reason <причина-бана>;
    redirect "<имя-канала>";
    warn [on|off];
};

Блок deny channel позволяет вам запретить пользователям заходить на указанные каналы. Директива deny::channel определяет маску для каналов, на которые нельзя зайти пользователям, и deny::reason определяет причину, почему это невозможно сделать. Дополнительно, можно определить deny::redirect, тогда пользователь, пытающийся зайти на канал, совпадающий с deny::channel, будет перенаправлен на deny::redirect. Если deny::warn будет установлено в on, то будет послано уведомление оператору (для сномаски EYES), когда пользователь попытается зайти на канал.

Пример

deny channel {
    channel "#unrealsucks";
    reason "И не мечтайте";
};

deny channel {
    channel "#*teen*sex*";
    reason "Педофилия - страшная вещь";
    warn on;
};

deny channel {
    channel "#operhelp";
    reason "Канал помощи в сети #help, а не #operhelp";
    redirect "#help";
};

4.26 - Allow Channel блок НЕОБЯЗАТЕЛЕН

Синтаксис:

allow channel {
    channel "<маска-канала>";
};

Блок allow channel позволяет определить специфические каналы, куда могут заходитьпользователи. Директива allow::channel определяется маской каналов, куда можно заходить.

Пример:

allow channel {
    channel "#something";
};

4.27 - Allow DCC блок НЕОБЯЗАТЕЛЕН

Синтаксис:

allow dcc {
    filename "<маска-имени-файла>";
    soft [yes|no];
};

Блок allow dcc позволяет определить исключения из блоков deny dcc, разрешено использование шаблонов. Если allow dcc::soft установлен в 'yes', блок применяется к списку 'soft dcc bans', если установлен в 'no', то применяется к нормальным ('hard') банам dcc.

Пример:

allow dcc {
    filename "*.jpg"; /* Картинки обычно безопасны */
    soft yes;
};

4.28 - Vhost блок НЕОБЯЗАТЕЛЕН (Ранее известен как vhosts.conf)

Синтаксис:

vhost {
    vhost <виртуальный-хост>;
    from {
        userhost <хостмаска>;
        userhost <хостмаска>;
        ...
    };
    login <имя-логина>;
    password <пароль> { <тип-аутентификации>; };
    swhois "<информация-в-swhois>";
};

Блок vhost позволяет определить логин/пароль, который может быть использован посредством команды /vhost, чтобы получить ненастоящее (fake) имя хоста. Параметр vhost::vhost может быть задан в виде user@host или просто host, который получит пользователь после удачного использования команды /vhost. vhost::from::userhost содержит маску в виде user@host, под которую должен попадать пользователь, чтобы получить виртуальный хост. Можно задать несколько хостмасок. vhost::login - логин и vhost::password - пароль, которые должны быть введены пользователем. vhost::password:: позволяет определить тип аутентификации для его использования. Поддерживаются следующие типы: crypt, md5, sha1 и ripemd-160. И напоследок, vhost::swhois позволяет добавить строку в информацию о пользователе (whois), без необходимости добавлять его в блок Oper oper::swhois.

Пример:

vhost {
    vhost my.own.personal.vhost.com;
    from {
        userhost my@isp.com;
        userhost myother@isp.com;
    };
    login mynick;
    password mypassword;
    swhois "Im Special";
};

4.29 - Badword блок НЕОБЯЗАТЕЛЕН (Ранее известен как badwords.*.conf)

Синтаксис:

badword <тип> {
    word <текст-совпадение>;
    replace <заменить-с-помощью>;
    action <replace|block>;
};

Блок badword позволяет манипулировать вам списком, используемым для режима +G, установленного на пользователей и канал, чтобы вырезать матные слова. badword:: определяет тип, такой, как channel, message, quit и all. channel - это список +G на канале, message - это список +G пользователя, quit - для цензуры сообщения при выходе, all - добавляет всё в указанные выше 3 списка. badword::word может быть просто словом или же регулярным выражением. badword::replace - чем заменить совпадающее слово.Если badword::replace не указан, то слово будет заменено на <censored>. badword::action определяет, какое действие будет предпринято, если будет найден мат. Если вы определили replace, тогда мат будет заменен, если же вы определили block, то сообщение будет заблокировано целиком. Если вы не определили badword::action, то будет назначен replace.

Пример:

badword channel {
    word shit;
    replace shoot;
};

4.30 - ULines блок НЕОБЯЗАТЕЛЕН (Ранее известен как U:Line)

Синтаксис:

ulines {
    <имя-сервера>;
    <имя-сервера>;
    ...
};

Блок ulines позволяет вам установить проверенные сервера, как заслуживающие максимального доверия. Блок должен быть использован для сервисов или статистики. Лучше не прописывать в ulines обычный сервер. Каждый сервер, входящий в список, получит максимальные привилегии.

Пример

ulines {
    services.mynetwork.com;
    stats.mynetwork.com;
};

4.31 - Link блок НЕОБЯЗАТЕЛЕН (Ранее известен как C/N/H:Lines)

Синтаксис:

link <имя-сервера> {
    username <маска-пользователя>;
    hostname <маска-ip>;
    bind-ip <ip-для-прослушивания>;
    port <port-для-соединения>;
    password-connect <пароль-для-соединения>;
    password-receive <полученный-пароль> { <тип-аутентификации>; };
    hub <маска-хаба>;
    leaf <маска-листа>;
    leafdepth <глубина>;
    class <имя-класса>;
    ciphers <ssl-ciphers>;
    options {
        <опция>;
        <опция>;
        ...
    };
};

Этот блок необходим для соединения серверов друг с другом, желательно прочитать всё, что находится ниже, т.к. это одна из важных и сложных настроек, в которой новоиспеченные администраторы часто совершают ошибки;P

имя-сервера - это имя удалённого сервера, которое идёт в его блоке me { }, например hub.blah.com (не IP адрес; имя сервера может отличаться от хостнейма).

username
Можно указать его, если необходимо использовать идент для аутентификации, нормой считается установка значения в "*".

hostname
Хост или IP адрес удалённого сервера. Используется для обоих соединений И для аутентификации/проверки со входящей стороны. Несколько примеров:
1.2.3.4 обычный IP адрес
hub.blah.com хост: только для исходящего соединения, не может принимать входящие соединения. Может принимать, если присутствует link::options::nohostcheck
* Не может присоединится к серверу, но принимает входящие соединения (если указан правильный пароль) с любого IP адреса или хоста
::ffff:1.2.3.4 для линковки ipv6 к ipv4.

bind-ip (необязательно)
Служит для прослушивания указанного IP адреса (пример: 192.168.0.1). Используется, если IRC-сервер имеет несколько IP адресов, для явного указания одного из них.

port
Порт для соединения (необходимо, чтобы он прослушивался на удалённом сервере).

password-connect
Пароль, используемый для подключения к удалённому серверу, не может быть зашифрованным (обычный текст).

password-receive
Пароль для проверки входящих соединений, может быть зашифрован (методами crypt, md5, sha1, ripemd-160). Вы можете не трогать тип авторизации и использовать пароль в текстовом виде. Часто этот пароль совпадает с password-connect.

hub vs leaf
Хаб позволяет соединения с несколькими серверами, а лист - только с одним. Сервер является листом до тех пор, пока не имеет директивы hub.  Сервер является листом также, если у него указана директива leaf * или директива leafdepth установлена 1.

hub (необязателен)
Значение - это маска, указывающая, какие сервера могут присоединиться к данному хабу (пример: *.my.net).

leaf (необязателен)
Значение - это маска, указывающая с какими серверами данный сервер не будет хабом. Указывая значение в * будет равнозначным как неимение директивы hub.

leafdepth (необязателен)
Значение определяет глубину (количество переходов), которые может иметь данный сервер. Например, 1 - значит, что сервер не может иметь линков под собой (лист), 2 - значит, что сервер может иметь под собой ещё линки, но те сервера больше не могут (т.к. только хабы могут линковать листы). Значение 0 - определяет отсутствие ограничения и является значением по умолчанию.

class
Класс сервера, для этого часто используется класс server.

compression-level (необязателен)
Определяет уровень сжатия (1-9) для данного соединения. Используется, если установлен link::options::zip.

ciphers (необязателен)
Определяет шифры SSL для применения к данному линку. Чтобы получить список всех доступных шифров, используйте команду `openssl ciphers`. Шифры в списке должны быть разделены двоеточием : .

options блок
Обычно используется одна или несколько опций, иногда они вообще не нужны.
ssl для соединения на SSL порт.
autoconnect сервер будет автоматически пробовать соединятся, время определяется параметром в class::connfreq ( лучшим решением будет включение это опции только с одной стороны, например лист->хаб)
zip если вы желаете сжимать трафик для данного соединения, то необходимо скомпилировать сервер с поддержкой zlib и установить сжатие с двух сторон.
nodnscache не кэшировать IP для исходящего соединения с сервером, используется для часто изменяемых хостов (например dyndns.org)
nohostcheck не проверяет удалённый хост (link::hostname), используется для часто изменяемых хостов (например dyndns.org)
quarantine операторы с этого сервера будут ограничены правами локальных операторов

Пример:

link hub.mynet.com {
    username *;
    hostname 1.2.3.4;
    bind-ip *;
    port 7029;
    hub *;
    password-connect "LiNk";
    password-receive "LiNk";
    class servers;
    options {
        autoconnect;
        ssl;
        zip;
    };
};

4.32 - Alias блок НЕОБЯЗАТЕЛЕН

Синтаксис [обычный псевдоним]:

alias <имя> {
	target <ник-для-перенаправления>;
	type <тип-псевдонима>;
	spamfilter <yes|no>;
};

Замечание: о стандартных файлах с псевдонимами, поставляемыми вместе с UnrealIRCd, можно прочитать здесь .

Блок alias позволяет вам перенаправить команду пользователя, например /chanserv будет отправлять сообщение пользователю chanserv (/msg chanserv). alias:: определяет имя команды, которое будет псевдонимом (т.е.: chanserv), alias::target - это ник или канал, куда будет направлена команда, если alias:: и есть цель, куда необходимо перенаправить, то alias::target может быть пропущен. alias::type определяет тип псевдонима, правильные типы это services (пользователь на сервере сервисов), stats (пользователь на сервере статистики), normal (пользователь - это обычный пользователь на любом сервере) и channel (цель - имя канала). Если alias::spamfilter (не обязательный параметр) установлен в 'yes', тогда будет произведена проверка на попадание в спамфильтр (по умолчанию 'no').

Блок alias имеет так же и другую цель, которая объясняется ниже.

Синтаксис [псевдоним команды]:

alias <имя> {
	/* Для псевдонимов, посылающих сообщения пользователям/в каналы */
	format <регулярное-выражение> {
		target <ник-направления>;
		type <тип-псевдонима>;
		parameters <строка-параметров>;
	};
	/* Для 'действительно псевдонимов(real aliases)' */
	format <регулярное-выражение> {
		command <команда>;
		type real;
		parameters <строка-параметров>;
	};
	/* И так далее. Вы можете создать столько блоков формата, сколько пожелаете. */
	format <регулярное-выражение> {
		...
	};
	type command;
	spamfilter <yes|no>;
};

Блок alias в данном формате позволяет значительно расширить рамки своего использования. К примеру, можно создать псевдонимы вроде /identify. alias:: - это имя псевдонима команды. alias::format определяет регулярное выражение, которое сравнивается с текстом послылаемой команды, и если оно совпадает, то будет использован alias::format. Можно сделать несколько alias::format'ов, чтобы одна команда выполняла различные действия в зависимости от контекста. alias::format::target - цель направления этого псевдонима, например в случае ""действительно псевдонима" ("real alias") будет использована alias::format::command. alias::format::type определяет тип псевдонима, куда будет направлено сообщение, опираясь на типы, упомянутые выше в "Синтаксис [обычный псевдоним]". Мы также позволяем использовать тут тип "real", для "действительно псевдонимов". alias::format::parameters - это то, что будет послано в качестве параметра данному псевдониму. Чтобы определить, какой именно из параметров необходимо выдать псевдониму команды, используют знак % вместе с номером, к примеру, %1 - это первый параметр. Для определения всех параметров, идущих после указанного, используют %, идущий с номером и знаком, к примеру, %2- вернёт все параметры, от второго до последнего. Дополнительно, вы можете использовать %n как ник пользователя, который использует команду.

Примеры использования блока alias в командном формате находятся в doc/example.conf.

4.33 - Help блок НЕОБЯЗАТЕЛЕН

Синтаксис:

help <имя> {
    <строка-текста>;
    <строка-текста>;
    ...
};

Замечание: обычно достаточно просто подключить файл help.conf

Блок help позволяет добавить справочную информацию, которая будет выдаваться по команде /helpop. help:: - это значение параметра команды /helpop. Если help:: пропущен, данный блок справки будет выдан по команде /helpop без параметров. Содержимое блока help - это текст, который будет отображаться пользователю, который набрал команду /helpop.

4.34 - Official Channels блок НЕОБЯЗАТЕЛЕН

Синтаксис:

official-channels {
    "#channel" { topic "Топик по умолчанию"; };
};

Оффициальные каналы будут показаны при команде /list, даже если там не будет пользователей. topic необязателен, и показывается по команде /list только если на данном канале 0 пользователей.

Пример:

official-channels {
    "#Help" { topic "Оффициальный канал помощи, если никого нет, наберите /helpop helpme"; };
    "#Home";
    "#Main" { topic "Главный канал"; };
};

4.35 - Spamfilter блок НЕОБЯЗАТЕЛЕН

Блок spamfilter позволяет добавлять вам локальные спамфильтры (действующие не на всю сеть).
Смотрите Функциональные возможности - Спамфильтр для более подробной информации о спамфильтрах.

Синтаксис:

spamfilter {
    regex <слово>;
    target { <цель(цели)> };
    action <действие>;
    reason <причина>;
    ban-time <время>;
};

regex - регулярное выражение для совпадения.
target определяет цели, смотрите списки вероятных типов здесь (например: 'channel').
action определяет предпринимаемое действие, смотрите списки возможных действий здесь (например: 'gline').
reason необязателен, определяет причину бана или блокирования, если не указан, используется причина по умолчанию.
ban-time необязателен, определяет длительность бана *line или shun, иначе используется время по умолчанию (1 сутки).

Примеры:

spamfilter {
    regex "Come watch me on my webcam";
    target { private; channel; };
    action gline;
    reason "Вы заражены червём, пожалуйста, проследуйте по www.antivirus.xx/blah/virus=GrrTrojan";
    ban-time 6h;
};

spamfilter {
    regex "come to irc\..+\..+";
    target { private; channel; };
    action gline;
    reason "Скажем нет спаму!";
};

4.36 - Блок Cgiirc НЕОБЯЗАТЕЛЕН

Блок cgiirc позволяет вам настроить скрытие хоста для гейтов CGI:IRC, которым вы доверяете (больше информации).

Синтаксис:

cgiirc {
	type <webirc|old>;
	username <mask>; /* необязательно */
	hostname <mask>;
	password <password>; /* только для типа webirc */
};

type бывает 'webirc' или 'old'.
username это как ident (если указан). Если не указан, то будет учитываться как "*".
hostname это маска, с которой производится сравнение.
password это пароль webirc, только если используется тип 'webirc'.

Как сконфигурировать, используя метод 'webirc' (рекомендованный метод)
В вашем конфигурационном файле CGI:IRC (cgiirc.conf) вы устанавливаете пароль в webirc_password.
Далее, в вашем unrealircd.conf вы добавляете блок cgiirc, указывая данный хост и пароль. Установите cgiirc::type в "webirc".

Пример:
В вашем конфигурационном файле CGI:IRC (cgiirc.conf) вы добавляете:

webirc_password = LpT4xqPI5
Далее, в вашем unrealircd.conf вы добавляете блок cgiirc:
cgiirc {
	type webirc;
	hostname "1.2.3.4";
	password "LpT4xqPI5";
};

Как сконфигурировать, используя метод 'old'
Замечание: Это не рекомендованный метод, потому что у него есть два недостатка: этот метод посылает IP/хост для скрытия серверу как пароль для сервера, это значит, что вы не можете указать пароль на сервер как пользователь CGI:IRC. Дополнительно, управление доступом работает только для основанных на IP клиентах и не требует экстрасложного пароля, как в методе 'webirc'. Вкратце, вы не захотите использовать этот метод до тех пор, пока вы не найдёте хорошую причину для этого.

В конфигурационном файле вашего CGI:IRC (cgiirc.conf) установите realhost_as_password в 1.
Далее, в вашем unrealircd.conf добавьте блок cgiirc для разрешения работы с данного хоста.

Пример:
В вашем конфигурационном файлеCGI:IRC (cgiirc.conf) добавьте:

realhost_as_password = 1
Далее в unrealircd.conf вы добавьте блок cgiirc:
cgiirc {
	type old;
	hostname "1.2.3.4";
};

4.37 - Set блок НЕОБХОДИМ (Ранее известен как unrealircd.conf/networks)

Данный блок содержит настройки вашей irc-сети, он может размещаться как в unrealircd.conf, так и в отдельном файле (см. директорию networks). Если сеть состоит из одного сервера, проще будет вместо создания отдельного файла все настройки поместить в unrealircd.conf, однако если сеть многосерверная, рекомендовано использовать отдельный файл с настройками сети и загружать его с помощью директивы include.

В данном блоке мы будем ссылаться на настройки / директивы в формате <имя-блока>::<директива-блока>. Это НЕ ТОТ формат, который можно включать в конфигурационный файл, Это ДОЛЖНО быть преобразовано в формат, используемый ниже. С таким форматом будет проще понять настройки.

Синтаксис:

set {
    <вхождение> <переменная>;
    <вхождение> <переменная>;
    ...
};

Блок set устанавливает индивидуальные настройки для конкретного сервера. Каждая директива уникальна (указывается в блоке set один раз), все директивы указаны ниже. Некоторые из них могут содержать подблоки. Т.к. директив весьма много, то все они могут быть включены в одном блоке set. Если у директивы есть опции, они так же могут включаться внутри одного set.
Пример:

set {
    kline-address my@emailaddress.com;
    auto-join #welcome;
    options {
        hide-ulines;
    };
    hosts {
        local LocalOp.MyNet.com;
        global globalop.mynet.com;
    };
};

Если необходимо разделить блоки set, можно записать опции в одну строку.
Пример:
set { options { hide-ulines; no-stealth; }; };

set::kline-address <адрес-email>;
Адрес электронной почты, который будет выдаваться всем пользователям, попавшим в K:line. Данное значение должно быть указано.

set::gline-address <адрес-email>;
Адрес электронной почты, который будет выдаваться всем пользователям, попавшим в G:line.

set::modes-on-connect <+режимы>;
Режимы, устанавливаемые для пользователей при их подключении.

set::snomask-on-connect <+режимы>
SNOMASKs, устанавливаемые для пользователей при их подключении.

set::modes-on-oper <+режимы>;
Режимы, устанавливаемые для пользователей при удачном выполнении команды /oper.

set::snomask-on-oper <+режимы>;
SNOMASKs, устанавливаемые для пользователей при удачном выполнении команды /oper.

set::modes-on-join <+режимы>;
Режимы, устанавливаемые на канале при его создании. Не все режимы возможно установить, используя эту опцию (+qaohvbeOAzlLk НЕЛЬЗЯ установить).

set::restrict-usermodes <режимы>
Запрещает пользователям устанавливать/снимать ссебя указанные режимы (не используйте + или -).
К примеру, можно установить режим +G в modes-on-connect и G в restrict-usermodes, тогда для всех пользователей будет принудительно установлен +G, и они не смогут выполнить -G.

set::restrict-channelmodes <режимы>
Запрещает пользователям устанавливать/снимать указанные режимы канала (не используйте + или -).
К примеру, можно установить +G в modes-on-join и G в restrict-channelmodes, таким образом на всех (новых) каналах принудительно будет установлен +G и будет невозможно выполнить -G.
ЗАМЕЧАНИЕ: эти режимы все-таки можно установить через сервисы, используя MLOCK. К сожалению, сложно сказать, чем этозакончится, поэтому лучше уточнить у авторов сервисов.

set::restrict-extendedbans <типы|*>
Запрещает пользователям использовать расширенные баны ("*") или отключает использование указанных банов (например: "qc").

set::auto-join <каналы>;
Канал(-ы), куда принудительно будет заброшен пользователь при подключении к серверу. Чтобы определить несколько каналов, необходимо разделить их запятыми.
[Замечание: имя канала(-ов) должно быть в кавычках, т.е.: auto-join "#chan";]

set::oper-auto-join <каналы>;
Каналы(ы), куда будет заброшен пользователь при удачном выполнении команды /oper. Чтобы определить несколько каналов, необходимо разделить их запятыми.
[Замечание: имя канала(ов) должно быть в кавычках, т.е.: oper-auto-join "#chan";]

set::anti-spam-quit-message-time <длительность>;
Время, в течение которого пользователь должен быть подключен к серверу, чтобы отобразилось его сообщение о выходе (/quit). Используется для предотвращения спама. Длительность задаётся числовой строкой, где d значит дни, h - часы, m - минуты и s - секунды. К примеру 1d2h3m значит 1 день, 2 часа и 3 минуты.

set::prefix-quit <префикс-выхода>;
Устанавливает текст, который используется как префикс сообщения о выходе. Если опция установлена в 0, то используется стандартный "Quit:".

set::static-quit <сообщение-выхода>;
Устанавливает статическое сообщение о выходе, которое будет использоваться всегда, когда пользователь отключается от сети. Необходим anti-spam-quit-message-time и set::prefix-quit. Отключения из-за ошибок связи НЕ заменяются сообщением static-quit.