FreeRADIUS - это приложение командной строки с открытым исходным кодом, которое предоставляет пользователям уникальный и полнофункциональный сервер удаленного аутентификации на службе пользователя (RADIUS) для платформ Linux, BSD, Microsoft Windows и Mac OS X.
Что в коробке?
Проект состоит из фактического RADIUS-сервера, клиентской библиотеки, модуля для веб-сервера Apache, а также библиотеки PAM (Pluggable Authentication Module). Он доступен для загрузки в качестве исходного архива, что позволяет пользователям настраивать, компилировать и устанавливать программу в любом дистрибутиве Linux.
Быстрый, гибкий и полностью настраиваемый RADIUS-сервер
Это быстрый, гибкий и полностью настраиваемый сервер RADIUS, который поддерживает больше протоколов аутентификации, чем любой другой коммерческий или бесплатный продукт. Он поддерживает поддержку баз LDAP, MySQL, PostgreSQL и Oracle.
Поддерживает широкий диапазон методов аутентификации
Поддерживаемые методы аутентификации включают PAP, MS-CHAP, MS-CHAPv2, CHAP и SIP Digest. Кроме того, он поддерживает EAP с EAP-SIM, EAP-MD5, EAP-TTLS, EAP-TLS, EAP-PEAP, а также подтипы Cisco LEAP.
Имеет модульную конструкцию
Он имеет модульный дизайн, который позволит опытным пользователям развернуть его на встроенных системах. Все запросы могут быть проксимированы, поддерживаются стандартные RADIUS-сферы через простые конфигурации и виртуальные серверы. Кроме того, он был протестирован и может использоваться с множеством просителей, серверов и клиентов 802.1x.
Вы можете назначить VLAN
Еще одна интересная особенность - возможность назначать виртуальные локальные сети (виртуальные локальные сети) через протокол VMPS (VLAN Management Policy Server). Он также имеет встроенную реализацию DHCP для назначения IP-адресов.
It & rsquo; s совместимо с многочисленными спецификациями
По умолчанию приложение поддерживает все определения RFC и атрибутов RADIUS, и оно соответствует многочисленным спецификациям, включая RFC1157, RFC2868, RFC1448, RFC3748, RFC5080, RFC2865, RFC2289, RFC4372, RFC2882, RFC2866, RFC4675, RFC4679, и RFC2621.
Нижняя линия
В целом, FreeRADIUS является одним из самых быстрых и масштабируемых серверов RADIUS для операционной системы на базе Linux. Это также очень стабильный и надежный продукт, который работает на платформах Cygwin, Mac OS X, DragonFlyBSD, FreeBSD, NetBSD, OpenBSD, Solaris и Windows.
Что нового в этой версии:
- Улучшения функции:
- Завершить срок действия сертификата клиента TLS при возобновлении сеанса и сеансовом тайм-ауте. См. CVE-2017-9148.
- Обновлен словарь.cisco.vpn3000, dictionary.patton
- Добавлен словарь.dellemc
- Уменьшен вывод журнала для неудачных сеансов PEAP.
- ALlow utc в rlm_date. Патч от Питера Ламбрехтена.
- Внутренний кеш сеанса OpenSSL отключен. Пожалуйста, ознакомьтесь с mods-available / eap
- Обновить документацию для чтения. Патч от Мэтью Ньютона. Исправления № 1973.
- Сделать исходящие соединения RadSec неблокируемыми.
- Добавить SQL-поддержку для создания Moonshot - * - TargetedId. Патч от Stefan Paetow.
- Исправления ошибок:
- radtest использует Cleartext-Password для EAP, а не User-Password.
- Обновить документацию для модов / ссылок.
- Усовершенствованные проверки соли лунной соли. Исправления # 1933.
- Разрешить возобновление сеанса для соединений RadSec. Исправления # 1936.
- Обновить файл «huntgroups», чтобы отметить, что диапазоны портов не поддерживаются.
- Исправить проблемы с правами доступа OpenSSL к файлам ключей по умолчанию. Исправления # 1941.
- Сертификаты не требуются при использовании PSK.
- Разрешить SubjectAltName как первое расширение в сертификате. Исправления # 1946.
- Исправлена проблема с тальком при возобновлении сеанса TLS. Исправления # 1980.
- "& amp; Attr-26: = 0x01" теперь создает полезные сообщения об ошибках.
- Обработать ошибку подключения в файле rlm_ldap_cacheable_groupobj. Исправления # 1951.
- Исправить проблемы с Endian в DHCP.
- Несколько мелких исправлений для жалоб Coverity.
- Обработать неожиданное регулярное выражение. Исправления # 1959.
- Исправить незначительные проблемы в словарях.
- Исправить опечатки и грамматику. Патчи от Алана Букси.
- Исправить ошибочное создание VP в rlm_preproces.
- Исправьте MIB. Патч от Джеффа Гельбаха.
- Доверять обновления маршрутизатора от Алехандро Переса.
- Разрешить сборку с LibreSSL. Исправления # 1989
- Используйте правильный пакет для привязки каналов. Исправления # 1990.
- Многие исправления найдены в PVS-Studio. Благодаря PVS-Studio за предоставление нам тестовой лицензии. Для получения дополнительной информации см. Историю изменений git.
- Исправьте неверную проверку длины в EAP-PWD. Это может быть полезно.
Что нового в версии 3.0.9:
- Улучшения функции:
- Конфигурации «пул» более согласованы и обновляют для них документацию.
- Переместите логику пула соединений на «наиболее недавно запущенный», а не на MRU. Это должно помочь в стабильности пула.
- Больше VSA для 3GPP2
- Добавлены примеры многозначных атрибутов для rlm_perl.
- Атрибуты LDAP-Group и SQL-Group теперь динамически распределяются.
- Только модуль «sql» регистрирует SQL-группу. Другие экземпляры регистрируют «instance-name-SQL-Group», аналогично «ldap».
- Неизвестные атрибуты теперь чаще всего жалуются при использовании в операторах unlang. например if (Foo-Bar == 3) используется для сравнения строк. Теперь это ошибка синтаксического анализа.
- Переименуйте RLM_COMPONENT_ * в MOD_ * в код. Это облегчает многое.
- Перейдите к инициализаторам C99 для модулей.
- Загрузка модулей в режиме raddb / mods. Это позволяет использовать атрибуты типа «LDAP-Group» в модуле «файлы» без явного упорядочения или перечисления в «экземпляре».
- Добавлен раздел «bootstrap» в модули. Необходимо обновить модули сторонних производителей.
- При добавлении клиентов из БД добавьте их на виртуальный сервер, если этот виртуальный сервер имеет раздел «прослушать». В противном случае добавьте клиентов в глобальный список.
- При чтении динамических клиентов из файла не истекает их, если базовый файл не изменяется.
- Разрешить серверу инициировать запросы CoA с этапа post-auth.
- Сервер создает $ {run_dir} и $ {logdir} в режиме демона, если они еще не существуют.
- Добавить словарь для Wi-Fi Alliance Hotspot 2.0. Теперь сервер поддерживает все обязательные и необязательные атрибуты для этой спецификации.
- Теперь HUP повторно загружает конфигурацию только в том случае, если файлы были изменены. Если все файлы не изменены, HUP снова открывает файл журнала и ничего не делает.
- Гораздо лучше отладочные сообщения для EAP-TLS, в том числе, какие кешируются атрибуты и когда они извлекаются.
- Увеличьте значение max_requests по умолчанию до 16384. Теперь память дешевая.
- Добавлены команды «статистика памяти» для radmin. Только отладка.
- Обновления словаря контроллера Aptilo.
- Модули SQL теперь используют Acct-Unique-Session-Id везде.
- Модули redis теперь стабильны.
- Модуль LDAP теперь поддерживает метод «интерактивного связывания» SASL. Это позволяет администраторам и администраторам на основе Kerberos.
- Код DHCP теперь находится в libfreeradius-dhcp.
- Дополнительные тесты модуля кодирования / декодирования DHCP.
- rlm_replicate теперь можно указать в разделе «учет».
- Улучшенный вывод отладки sqlite.
- Удалить «обязательный» вариант из многих директив sql_ippool.
- Установите базовые ограничения CA по умолчанию для «критических». Исправления # 1073
- Обновления страниц справки / руководства от Хорхе Перейры.
- Добавлено больше тестов.
- Исправления ошибок:
- Будьте внимательны при использовании неиспользуемых предупреждений элемента конфигурации при использовании -Xx.
- Переместить больше определений для автоматического создания.
- Разрешить виртуальные серверы в резервной копии прокси.
- Разрешить% {module:} работать.
- Не сбой в RadSec. Закрывает # 980.
- Возвратите лучшие ошибки, когда unix group / user не найден.
- Повторно включить параметр блокировки детализации модуля.
- Не сбой при регистрации ответов из пакетов Status-Server.
- Модуль couchbase теперь использует «обновление» вместо «map», что согласуется с остальной частью сервера. См. Raddb / mods-available / couchbase
- Не требуется NT-Password для изменения пароля MS-CHAP.
- Будьте более осторожны в расшифровке атрибутов MS-CHAP-MPPE-Key. Закрывает # 1013. Нет идеального исправления, tho.
- Исправить проблемы безопасности с помощью EAP-PWD. См. Http://freeradius.org/security.html#eap-pwd-2015
- Исправить динамические клиенты, прочитанные с SQL в режиме без отладки
- MS-CHAP теперь позволяет повторять попытку (например, смену пароля) при истечении срока действия паролей.
- Разрешить «user = radiusd», когда сервер уже пользователь «radiusd»
- suid up / down работает на системах, отличных от Linux. Это означает, что контрольный разъем должен иметь правильное владение.
- Исправить проблему, которая вызвала у сервера иногда проблемы, когда домашний сервер был отмечен зомби.
- Исправить format.pl, потому что Perl теперь более придирчивый.
- Исправить прокси для Packet-Dst-IP-Address, чтобы он использовал правильный порт назначения.
- Исправить угловой регистр с функциями курсора и удалением.
- Исправления и документация OpenDirectory.
- Исправить утечки в rlm_redis.
- RFC 6929 «evs» атрибуты теперь закодированы / декодированы должным образом.
- Исправить утечки пула таколов при получении неверных или повторно переданных запросов Accounting / CoA.
- Отпечатанные атрибуты снова используют двойные кавычки вместо одиночных кавычек.
- Установите X509_V_FLAG_CRL_CHECK_ALL и добавьте «check_all_crl» в файл eap.conf. Исправления oCert CVE-2015-4680.
- rlm_expr теперь корректно исправляет ошибочные ссылки на атрибуты атрибутов вместо запуска assert.
- Сделайте работу «break» в циклах «foreach»
- Разрешить динамическим расширениям снова работать в файле «подсказки».
- Исправить незначительные опечатки в комментариях и примерах от Alan Buxy.
- Повторить URL-адрес части пути ldapi: // urls перед передачей в ldap_initialise.
Что нового в версии 3.0.7:
- Улучшения функции:
- Разрешить coa home_servers выводиться из разделов клиента, если предоставляется раздел coa_server.
- Автоматически определять правильный порт, если для домашнего сервера не предусмотрен порт.
- Разрешить foreach управлять списками.
- Добавьте функции времени компиляции в $ {feature. *} и версии основных библиотек в $ {version. *}. Названия функций и версий соответствуют выходному сигналу radiud -xv. % v теперь устарел.
- Добавьте поддержку метода PATCH в rlm_rest.
- Проверяйте дополнительные модули xlats при запуске и предупреждайте, если расширение xlat найдено в двухстрочном элементе конфигурации, который не будет расширяться.
- Добавить поддержку подсекундных тайм-аутов в rlm_rest.
- Добавить поддержку тайм-аутов подключения в rlm_rest.
- Добавить% {jsonquote:} xlat для удаления строк для вставки в json-документы.
- Добавить% {ldapquote:} xlat, чтобы избежать строк для вставки в ldap DN.
- Добавьте% {explode: & amp; ref}, разделите значение & amp; ref и создайте новые атрибуты типа & amp; ref с фрагментами.
- Разрешить rlm_ldap использовать ссылки на атрибуты для base_dn и элементов конфигурации фильтра. Ссылки на атрибуты не экранируются, позволяя динамически создавать DN и фильтры.
- Добавить% {nexttime: [] h | d | w | y}, чтобы вычислить количество секунд до следующего часа, дней, недель (ов) или года (ов).
- Разрешить левой части разделов обновления быть расширением xlat. Результат расширения затем используется для ссылки на изменяемый атрибут.
- Добавлено% {lpad: & amp; Атрибут-Имя 7 x} и rpad. Они производят строки с фиксированной шириной, с отступом влево (lpad) или справа (rpad).
- Для некоторых драйверов SQL (MySQL, sqlite) различают нарушения ограничений (при вставке), недопустимые запросы и ошибки сервера, а также возвращают noop, invalid и error соответственно.
- Вызовите SHOW WARNINGS в драйвере MySQL и запишите их в журнал запросов, если libmysqlclient указывает, что предупреждения доступны на сервере.
- Запретить создание Спецификатора для нестандартных VSA. Вместо этого используйте Attr-26 = 0x ...
- Сделайте работу dhcpclient с сырыми сокетами и различными другими улучшениями - Contributed nchaigne
- Добавить поддержку для SSHA2 - PDD.
- Добавить словарь perle - внесено Hachmer
- Модернизировать сценарии инициализации для RHEL, SUSE и Debian.
- radmin теперь отслеживает код возврата команд и выходит со статусом «1», если какая-либо команда не была выполнена.
- Теперь radmin отправляет сообщения об ошибках с сервера на stderr, а не на stdout.
- radmin теперь ищет сокеты, соответствующие его UID и GID, а не просто всегда используя первый, который он находит.
- Radmin может удалять клиенты, привязанные к слушателю.
- Перемещенные определения атрибутов RADIUS в src / include / rfc * .h
- Переместиться в хранилища высоких уровней для запросов. Для тестов в памяти (по умолчанию config, «файл пользователя») производительность увеличивается на 30%.
- В rlm_ldap разрешено указывать sasl_mech для связей с администратором и пользователем. В настоящее время поддерживаются только неинтерактивные механизмы (например, EXTERNAL).
- Удалите поддержку эфемерных ключей RSA. Они были «только экспортными» и не должны использоваться кем-либо.
- Синтаксические ошибки в файле «users» теперь приводят к лучшим сообщениям об ошибках.
- Исправления ошибок:
- Исправить проблемы, анализируя имена хостов LDAP с нестандартными портами.
- Исправить проблемы с доменами, содержащими регулярные выражения.
- Разрешить унарное отрицание перед скобками в rlm_expr.
- Исправить бесконечный цикл в коде цикла событий kevent. Проблема появилась только на FreeBSD.
- Будьте осторожны, чтобы определить Auth-типы перед загрузкой модулей.
- Связать libfreeradius-radius с OpenSSL тоже, чтобы избежать символов нескольких версий в библиотеках SSL.
- Когда rlm_ldap перезагружает соединение, он должен использовать учетные данные связывания из модуля, который создал пул соединений, а не учетные данные из модуля, ссылающегося на него.
- В rlm_ldap экземплярах, которые ссылаются на пул соединений другого модуля, должны быть разрешены пустые пары конфигурации сервера.
- Пометьте rlm_always как huppable, поэтому его rcode можно изменить с помощью radmin (позволяет переключаться в политике).
- Извлечь предупреждения при игнорировании значений пула, настроенных пользователем.
- Исправить проблему, которая заставит Radclient с периодичностью жаловаться на различное количество фильтров и запросов.
- Исправить косметические проблемы при регистрации пула соединений, что заставило его выглядеть так, как если бы одно и то же соединение открывалось несколько раз.
- Исправить проблемы безопасности потоков в драйверах SQL, где для хранения сообщений об ошибках использовался статический буфер.
- Записать RERROR, RWARN, RINFO в глобальный журнал, если ведение журнала запросов не включено.
- Ссылка на libldap вместо libldap_r. libldap_r не поддерживается для использования проектами вне OpenLDAP.
- Правильно установите тайм-аут соединения в rlm_sql_mysql.
- Создайте более старые версии libcurl и используйте CFLAGS из curl-config.
- Почетный пакет-Src-порт и пакет-Src-IP-адрес в radclient.
- Инициализирует поле ldapai_info_version, поэтому libldap сообщит о своем поставщике и версии.
- Исправить скрипты вращения журнала, используя опцию copyrotate.
- Исправить проблему, вызвавшую открытые сокеты управления, всегда терпеть неудачу на системах, отличных от Linux, если был установлен пользователь или группа.
- Сохранить состояние сеанса после проксирования.
- Дополнительные исправления для чтения запросов CoA / DM из файлов деталей.
- Создавайте динамические клиенты, если виртуальный сервер динамических клиентов возвращает ok * или * обновлено. Извлеките полезные сообщения для других кодов.
- Скомпилировать голые «авторизационные» заявления и выдавать ошибки, говорящие об использовании их, не очень хорошая идея.
Что нового в версии 3.0.4:
- Улучшения функции:
- Домашний сервер «response_window» теперь может принимать доли секунды. См. Proxy.conf.
- Radmin теперь поддерживает статус show status, как аналог «установить статус модуля»
- Добавлен словарь ericsson.packet.ccore.networks, bluecoat, citrix, совместимый, русла реки, руткит и RFC 7268.
- Добавить расширение% {tag:}, чтобы получить значение тега атрибута.
- Сообщить 'имя_приложения' в соединениях с серверами PostgreSQL. Теперь соединения FreeRADIUS будут отображаться как «FreeRADIUS» в pg_stat_activity.
- Все поля элемента конфигурации теперь проверяются во время компиляции, чтобы предотвратить повторение проблем, подобных # 634.
- Изменить значение парпараметра для более эффективного использования встроенных NULL и использовать двоичные версии значений атрибутов в rlm_ldap.
- «ipaddr» теперь будет использовать v6, если нет адреса v4. Вы должны использовать «ipv4addr» или «ipv6addr», чтобы форсировать адреса v4 / v6.
- Вышеупомянутое относится к разделам «слушать», «home_server» и «клиент».
- «клиентские» разделы позволят «ipaddr = 192.192.0 / 24». Старая «сетевая маска» по-прежнему принимается, но предпочтительнее новый формат.
- Разрешить настраивать HTTP-заголовки для запросов rlm_rest с помощью элемента управления: REST-HTTP-Header (атрибуты, используемые после использования).
- Расширить формат расширения% {rest:}, чтобы указать HTTP-метод и данные POST, например. % {rest: POST http://example.org/api foo = bar & amp; baz = boink}.
- Добавить% {hmacsha1: & amp; data & amp; key} и% {hmacmd5: & amp; data & amp; key} расширения для подписи данных в запросах.
- rlm_cache теперь использует свои атрибуты управления, чтобы упростить конфигурацию во время выполнения.
- Добавить элемент управления: Cache-Read-Only, который при установке «да» заставит модуль кеша объединить существующие данные кэша, но не создавать новые записи.
- Добавить% {unescape:} и% {urlunquote:} расширения для обратного экранирования и urlquoting.
- Добавьте поддержку псевдонимов в rlm_ldap.
- Добавить поддержку объединения пула соединений во все модули, в которых используется пул соединений (пул =).
- В разделе «tls» теперь есть элемент конфигурации «psk_query», для динамических запросов - поиск ключа из идентификатора PSK.
- Предварительная поддержка привязок каналов EAP.
- Основные работы для динамических домашних серверов. Они еще не работают, но теперь это только вопрос обновления модуля «realm» в будущей версии.
- Синтаксис Support & amp; attr [*] для копирования всех экземпляров атрибута при использовании с оператором + = в разделе обновления. Может быть квалифицирован с помощью тега.
- Модули logintime и expiration теперь могут быть перечислены в разделе post-auth. Это упрощает некоторые конфигурации.
- Разрешить сравнение целочисленных атрибутов разных размеров, не требуя приведения.
- rlm_sqlippool теперь поддерживает IPV6. Установите «ipv6 = yes», чтобы вернуть Framed-IPv6-Prefix. Запросы SQL НЕ обновлены. Пожалуйста, отправьте патчи.
- Теперь debian-сборка проверяет пакет OpenSSL с исправлением, и если он найден, устанавливает: allow_vulnerable_openssl = 'CVE-2014-0160'
- разрешить загрузку из нескольких файлов в драйвере sqlite.
- Исправления ошибок:
- сделать регулярные выражения, не зависящие от регистра, работать снова и добавить тесты для них.
- Еще несколько проблем, связанных с родительскими навыками таллока.
- Исправить задержанную обработку ответа прокси. Закрывает # 637
- Исправить порядок инициализации OpenSSL при использовании RADIUS / TLS. Исправления # 646
- Не вставляйте строки с двойными кавычками в отладочные сообщения
- Исправить foreach / break. Исправления # 639
- Платный пользовательский идентификатор, ADSL-Agent-Circuit-Id и ADSL-Agent-Remote-Id должны быть «октетами» в словаре по умолчанию.
- Исправить опечатку в mainconfig. Исправления # 634
- Больше исправлений rlm_perl. Исправления # 635
- Свободная память OpenSSL на чистом выходе.
- Исправить [0]! * ЛЮБОЙ - Удалил все экземпляры
- Исправить случай, когда несколько атрибутов были возвращены из RHS сопоставления, как в случае с rlm_ldap. Исправления # 652
- Исправить угловой регистр в курсоре, где использование fr_cursor_next_by_da после вызова fr_cursor_remove может привести к чтению неинициализированной памяти.
- Не используйте SEGV, если все соединения с сервером базы данных исчезнут. Исправления # 651.
- Исправить проблему, когда - = не удалял теги с тегами, равные (только непомеченные).
- Исправить проблему, когда значения тега не были установлены для атрибутов, созданных с помощью блоков блокировки unlang / ldap.
- Создавать атрибуты rlm_sqlcounter как integer64, а не целые, поэтому можно указать большие значения счетчика.
- Исправить проблему, когда указание IP-адресов динамического клиента с использованием FreeRADIUS-Client-IPv6-Prefix или FreeRADIUS-Client-IP-Prefix может вызвать ошибку проверки.
- Не печатайте два "& amp;" для сообщений об атрибутах или ссылках списка в отладочном выходе.
- Исправить urlquote и escape, чтобы правильно кодировать символы Unicode.
- Исправьте блоки с избыточным весом, чтобы попробовать другие модули в группе, если это не удается.
- Исправить проблему с нормализацией пароля rlm_pap, где «известные хорошие» строки пароля, хранящиеся в атрибутах типа октетов, иногда ошибочно определялись как base64.
- Не прекращайте обработку параметров DHCP, если мы находим опцию заполнения 0x00.
- Исправить проблему, когда изменение значения атрибута, созданного из шаблона с литеральным значением, возможно, привело к освобождению литерала шаблона.
- Исправить проблемы с родительскими правами в tls-коде, что могло привести к повреждению памяти и сбоям.
- Исправить проблему в radsniff, где записываются файлы PCAP и используются фильтры ответа -R, где запросы все равно будут записываться в PCAP для несовпадающих ответов.
- Определите __APPLE_USE_RFC_2292, чтобы сервер работал с поддержкой IPv6 в OSX.
- Исправить поиск групп LDAP для названных экземпляров rlm_ldap. Обратите внимание, что ссылки атрибутов должны использоваться при проверке атрибутов LDAP-Group. например if (& amp; LDAP-Group == 'foo').
- Отложенные ссылки на атрибуты теперь можно использовать в проверках существования неполадок. то есть, если (& amp; Attribute-Name) {...}
- Исправить проблемы в EAP-PWD. CVE-2014-4731, CVE-2014-4732 и CVE-2014-4733. Отсутствует внешний обход аутентификации.
- Исправьте несколько применений ссылки parent / child talloc.
- Отключить соединение, используемое для чтения массовых клиентов в rlm_ldap.
- rlm_rest теперь безотказно, если он используется без какой-либо конфигурации
- Вытащить исправления сборки для FreeBSD из портов.
- Исправить ошибку в sqlite postauth-запросе
- Вычислить аргумент для операторов «switch» один раз, а не для каждого оператора «case».
- Определить sig_t в системах без него. Закрывает # 765.
- Исправить граничную проблему с помощью rlm_rest. Закрывает # 768
- Оптимизировать «% {Attribute-Name}» в сравнении только в том случае, если соответствуют словарные слова.
- Не выполняйте chmod () в rad_mkdir (), если каталог уже существует. Возможно, у нас нет разрешения на его изменение.
- Используйте методы getpwnam_r () и getgrnam_r () для систем, которые его поддерживают. Закрывает # 775.
- Клиенты, загруженные из SQL, теперь привязаны к разделу «listen» виртуального сервера, а не глобальны.
- Проверить -lpcre. Система может иметь pcre.h без -lpcre.
- При проксировании на виртуальный сервер используйте proxy_reply вместо того, чтобы игнорировать его.
- Исправлены опечатки в DHCP SQL IPPool.
- Исправить ошибку при передаче нескольких аргументов в Perl xlat.
Комментарии не найдены