General: * Стандартизован стиль именования параметров: SnakeCase. * В документации к XML-RPC API добавлено пропущенное поле 'password' для метода chg_admin. * Приведена в порядок работа с сигналами. Теперь сигналы перехватываются только из основного потока и перехватываются корректно, в отличие от старых версий. Для остановки плагинов больше не используется pthread_kill, т.к. плагины его все равно теперь игнорируют. * Устаревшая функция usleep заменена на более продвинутую функцию nanosleep в соответствии с POSIX.1-2008. * Удалены странные, непонятные и ненужные комментарии в коде. * Некоторые типы данных сделаны более "строгими". * Добавлено несколько дополнительных проверочных утверждений. * Упрощено API плагинов. * Удален странный код. * Большая часть кода приведена в соответствие с рекомендациями Скотта Мейерса. * Вычищена куча кода. Но это еще не конец. * Исправлена ошибка установки в случае наличия предыдущей установки. * Добавлена поддержка FreeBSD9. Compilation: * При проверке условий сборки теперь используются переменные CC и CXX вместо явного вызова gcc/g++. * Если переменные CC и CXX не определены то используются gcc и g++ по умолчанию. * Добавлено разделение флагов на CFLAGS и CXXFLAGS. Теперь релиз рекомендуется собирать так: $ CFLAGS="-O2" CXXFLAGS="${CFLAGS}" ./build * Флаг компиляторы -g3 заменен на -ggdb3 (все равно его поддерживает и gcc, и clang и ekopath). * Существенно переработана система сборки. Теперь она не сорит заголовочными файлами и библотеками там где не нужно. * Убрана зависимость от bash. Libraries: * Использование динамических внутренних библиотек признано нецелесообразным, возвращены старые-добрые a-файлы (последний раз они были в версии 2.401). * Добавлена специализация x2str для беззнаковых типов. * Библиотеки crypto.lib и scriptexecuter.lib теперь содержат 100% кода на языке C! * Исправлена работа библиотеки ia.lib на платформах с Big Endian. Plugins: * В плагин для PostgreSQL добавлен параметр retries указывающий количество повторных попыток установить соединение с БД. * Оптимизирована логика работы RemoveDir - теперь он удаляет ваши каталоги на 50% быстрее! * Унифицированы имена параметров плагинов для работы с БД: Server, Database, User, Password. Старые имена поддерживаются, но объявлены устаревшими. В будущем будут удалены. * Добавлен плагин для работы с snmpd по протоколу SMUX. Позволяет производить мониторинг некоторых параметров системы: - общее количество абонентов; - количество абонентов online; - количество авторизованных абонентов; - количество абонентов с флагом alwaysOnline; - количество абонентов с отрицательным балансом; - количество абонентов с отключенной детальной статистикой; - количество отключенных ("disabled") абонентов; - количество "замороженных" ("passive") абонентов; - количество абонентов с положительным кредитом; - количество абонентов с положительным предоплаченным трафиком; - количество абонентов меняющих тарифный план в следующем месяце; - общее количество тарифов; - количество абонентов потарифно; - общее количество админов; - общее количество сервисов; - общее количество корпораций; - общее количество правил классификации трафика. * Добавлен шаблонный класс PLUGIN_CREATOR для универсального удобного порождения плагинов. * При немедленном изменении тарифа через XML-RPC API добавлен "сброс" отложенного тарифа. * Возможно исправлена ошибка приводящая к "зависаниям" плагина конфигуратора. * Исправлена утечка ресурсов (файловых дескрипторов) в плагине файлового хранилища. * Улучшены сообщения об ошибках авторизации, теперь в них на 73.1% больше информации! * В плагине для XML-RPC API вынужденно используется внешний сокет для корректной остановки плагина. Привет мейнтейнерам Debian которые до сих пор не обновили xmlrpc-c! Зато минус одно падение с SIGSEGV и General Protection Fault при останове! * Плагин remote_script больше не сообщает об ошибке и позволяет системе запуститься если файл привязки подсетей пуст. * Пересмотрен порядок загрузки плагинов. stargazer: * Исправлена ошибка приводящая к неправильному сообщению о причине отключения. * Убрано бесполезное изменение значения nice для процесса. * Добавлены три возможных сценария снятия абонплаты: - обычный; - не снимать абонплату при отрицательном балансе; - не снимать абонплату ели баланс при этом станет отрицательным. * Добавлен параметр ReconnectOnTariffChange указывающий системе выполнять переподключение абонента при изменении тарифа. * Добавлена "подписка" на добавление и удаление тарифов. * Управление авторизацией абонентов перемещено из класса USER в класс USERS что позволило избавиться от дедлока в определенных условиях. * Устранена возможность выгрузки активного плагина. Минус одно потенциальное падение с SIGSEGV и General Protection Fault!