Перейти до

stg-2.408-rc1


Рекомендованные сообщения

Ссылка для скачивания: stg-2.408-rc1.tar.gz

ChangeLog:

 

General:

  • Стандартизован стиль именования параметров: SnakeCase.
  • В документации к XML-RPC API добавлено пропущенное поле 'password' для метода chg_admin.
  • Приведена в порядок работа с сигналами. Теперь сигналы перехватываются только из основного потока и перехватываются корректно, в отличие от старых версий. Для остановки плагинов больше не используется pthread_kill, т.к. плагины его все равно теперь игнорируют.
  • Устаревшая функция usleep заменена на более продвинутую функцию nanosleep в соответствии с POSIX.1-2008.
  • Удалены странные, непонятные и ненужные комментарии в коде.
  • Некоторые типы данных сделаны более "строгими".
  • Добавлено несколько дополнительных проверочных утверждений.
  • Упрощено API плагинов.
  • Удален странный код.
  • Большая часть кода приведена в соответствие с рекомендациями Скотта Мейерса.
  • Вычищена куча кода. Но это еще не конец.

Compilation:

  • При проверке условий сборки теперь используются переменные CC и CXX вместо явного вызова gcc/g++.
  • Если переменные CC и CXX не определены то используются gcc и g++ по умолчанию.
  • Добавлено разделение флагов на CFLAGS и CXXFLAGS. Теперь релиз рекомендуется собирать так: $ CFLAGS="-O2" CXXFLAGS="${CFLAGS}" ./build
  • Флаг компиляторы -g3 заменен на -ggdb3 (все равно его поддерживает и gcc, и clang, и ekopath).
  • Существенно переработана система сборки. Теперь она не сорит заголовочными файлами и библотеками там где не нужно.

Libraries:

  • Использование динамических внутренних библиотек признано нецелесообразным, возвращены старые-добрые a-файлы (последний раз они были в версии 2.401).
  • Добавлена специализация x2str для беззнаковых типов.
  • Библиотеки crypto.lib и scriptexecuter.lib теперь содержат 100% кода на языке C!

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 при останове!

stargazer:

  • Исправлена ошибка приводящая к неправильному сообщению о причине отключения.
  • Убрано бесполезное изменение значения nice для процесса.
  • Добавлены три возможных сценария снятия абонплаты:
    • обычный;
    • не снимать абонплату при отрицательном балансе;
    • не снимать абонплату ели баланс при этом станет отрицательным.

    [*]Добавлен параметр ReconnectOnTariffChange указывающий системе выполнять переподключение абонента при изменении тарифа.

    [*]Добавлена "подписка" на добавление и удаление тарифов.

    [*]Управление авторизацией абонентов перемещено из класса USER в класс USERS что позволило избавиться от дедлока в определенных условиях.

    [*]Устранена возможность выгрузки активного плагина. Минус одно потенциальное падение с SIGSEGV и General Protection Fault!

rscriptd:

  • В примере конфигурационного файла для rscriptd путь /etc/rscriptd заменен на /etc/stargazer.

Happy testing!

 

 

PS: проверял сборку с clang и ekopath - все собирается, все работает.

 

Патчи: fix-libs-install-patch.diff, fix-libs-order-patch.diff, fix-radius-authorization-patch.diff

stg-2.408-rc1.tar.gz

fix-libs-install-patch.diff.txt

fix-libs-order-patch.diff.txt

fix-radius-authorization-patch.diff.txt

Відредаговано madf
Опечатка
Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 57
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Ссылка для скачивания: stg-2.408-rc1.tar.gz ChangeLog:   General: Стандартизован стиль именования параметров: SnakeCase. В документации к XML-RPC API добавлено пропущенное поле 'password' для ме

Заморозили (абонент четко сказал, сколько не будет пользоваться услугами) — не сняли денег.   Не заморозили (не знает абонент на сколько он уедет, когда приедет, сколько будет отсутствовать) — не сн

Значит в роадмап 2.409

Добавлены три возможных сценария снятия абонплаты:

 

обычный;

не снимать абонплату при отрицательном балансе;

не снимать абонплату если баланс при этом станет отрицательным.

 

Ура, долой скриптовые заплатки! :D

Ссылка на сообщение
Поделиться на других сайтах

:) кстате "не снимать абонплату при отрицательном балансе." с нулем разобрался ?

http://local.com.ua/forum/topic/29846-stg-2408-alpha/page__view__findpost__p__245069

Ссылка на сообщение
Поделиться на других сайтах

mkdir -m 0755 -p /usr/include/stg

install -m 0644 -o root logger.h /usr/include/stg/

install: cannot stat `logger.h': No such file or directory

make[2]: *** [install] Error 1

make[2]: Leaving directory `/home/roman/stg-2.408-rc1/stglibs/logger.lib'

make[1]: *** [logger.lib] Error 2

make[1]: Leaving directory `/home/roman/stg-2.408-rc1/stglibs'

make: *** [install-bin] Error 2

Ссылка на сообщение
Поделиться на других сайтах

Грациес :) сейсчас заценим :) кстате "не снимать абонплату при отрицательном балансе." с нулем разобрался ?

Просто включил 0 и fee в интервалы. Т.е. оно все равно будет в "минус" уводить, но не сильно, не более чем на fee. Неправильно, конечно, но переписывать stg с нуля - это куча времени.

 

mkdir -m 0755 -p /usr/include/stg

install -m 0644 -o root logger.h /usr/include/stg/

install: cannot stat `logger.h': No such file or directory

make[2]: *** [install] Error 1

make[2]: Leaving directory `/home/roman/stg-2.408-rc1/stglibs/logger.lib'

make[1]: *** [logger.lib] Error 2

make[1]: Leaving directory `/home/roman/stg-2.408-rc1/stglibs'

make: *** [install-bin] Error 2

Опа! Все проверил, а инсталл не проверил! Спасибо, исправим. На то оно и rc.

 

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

А в чем это ощущается?

Ссылка на сообщение
Поделиться на других сайтах

 

Просто включил 0 и fee в интервалы. Т.е. оно все равно будет в "минус" уводить, но не сильно, не более чем на fee. Неправильно, конечно, но переписывать stg с нуля - это куча времени.

 

конечно , лучше маленький минус чем большой :)
Ссылка на сообщение
Поделиться на других сайтах

sgсonf не собирается куда копать ?

 

../../stglibs/srvconf.lib/libstgsrvconf.a(servconf.o): In function `AnsRecv(void*, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)':

servconf.cpp:(.text+0x4c): undefined reference to `XML_ParserReset'

servconf.cpp:(.text+0x71): undefined reference to `XML_SetElementHandler'

servconf.cpp:(.text+0x89): undefined reference to `XML_SetUserData'

servconf.cpp:(.text+0x14a): undefined reference to `XML_Parse'

servconf.cpp:(.text+0x164): undefined reference to `XML_GetErrorCode'

servconf.cpp:(.text+0x16c): undefined reference to `XML_ErrorString'

servconf.cpp:(.text+0x17f): undefined reference to `XML_GetCurrentLineNumber'

../../stglibs/srvconf.lib/libstgsrvconf.a(servconf.o): In function `SERVCONF::SERVCONF()':

servconf.cpp:(.text+0x3ca): undefined reference to `XML_ParserCreate'

collect2: ld returned 1 exit status

make: *** [sgconf] Error 1

Ссылка на сообщение
Поделиться на других сайтах

sgсonf не собирается куда копать ?

 

../../stglibs/srvconf.lib/libstgsrvconf.a(servconf.o): In function `AnsRecv(void*, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)':

servconf.cpp:(.text+0x4c): undefined reference to `XML_ParserReset'

servconf.cpp:(.text+0x71): undefined reference to `XML_SetElementHandler'

servconf.cpp:(.text+0x89): undefined reference to `XML_SetUserData'

servconf.cpp:(.text+0x14a): undefined reference to `XML_Parse'

servconf.cpp:(.text+0x164): undefined reference to `XML_GetErrorCode'

servconf.cpp:(.text+0x16c): undefined reference to `XML_ErrorString'

servconf.cpp:(.text+0x17f): undefined reference to `XML_GetCurrentLineNumber'

../../stglibs/srvconf.lib/libstgsrvconf.a(servconf.o): In function `SERVCONF::SERVCONF()':

servconf.cpp:(.text+0x3ca): undefined reference to `XML_ParserCreate'

collect2: ld returned 1 exit status

make: *** [sgconf] Error 1

Можно полный лог сборки и указать ОС на которой она проводилась?

Ссылка на сообщение
Поделиться на других сайтах

подключении клиента, админки, запускас/стопа старгайзера ..

 

rlm_stg не троганный :) опять сигфаулт

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

Ссылка на сообщение
Поделиться на других сайтах

подключении клиента, админки, запускас/стопа старгайзера ..

 

...

Авторизации и работа конфигуратора - может быть. А вот старт/стоп вряд ли. Там основной тормоз i/o.

Ссылка на сообщение
Поделиться на других сайтах

Можно полный лог сборки и указать ОС на которой она проводилась?

 

OS ALT Linux (p6)

Спасибо! Я уже сам вспомнил про Альт и --as-needed. Сейчас все поправим.

Ссылка на сообщение
Поделиться на других сайтах

у меня опять проблема с радиусом :) а именно с этой строчкой if (users->Authorize(ui->GetLogin(), ips[0].ip, 0xffFFffFF, this))

{

если стоит * авторизация проходит аккаунтинг вроде тоже, но клиент в биллинге не становится "online" и IP ему не прописывается. если сделать по старинке if (users->Authorize(ui->GetLogin(),packet->ip, 0xffFFffFF, this)), то статус меняется на онлайн, ип прописывается, но аккаунтинг возвращает ошибку

Ссылка на сообщение
Поделиться на других сайтах

у меня опять проблема с радиусом :) а именно с этой строчкой if (users->Authorize(ui->GetLogin(), ips[0].ip, 0xffFFffFF, this))

{

если стоит * авторизация проходит аккаунтинг вроде тоже, но клиент в биллинге не становится "online" и IP ему не прописывается. если сделать по старинке if (users->Authorize(ui->GetLogin(),packet->ip, 0xffFFffFF, this)), то статус меняется на онлайн, ип прописывается, но аккаунтинг возвращает ошибку

Если стоит * то IP у юзера нету и делать вот так: ips[0].ip - потенциально небезопасно. Чревато сегфолтом.

А какую ошибку аккаунтинг возвращает?

Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...