Перейти до

stg-2.4


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

stg-2.4 beta01

stg-2.4-2006.02.10-01.09.16

 

Что нового:

Пофикшено

1. Пара багов в счетчике трафика. Оба бага приводили к падению сервера.

2. При удалении тарифа подвисал сервер

3. Пофикшена ошибка при проверке прав у админа.

4. Пофикшена ошибка записи времени в детальную статистику. В интервал времени писалось два одинаковых времени 18:40-18:40, вместо 18:40-18:50

5. Приведены в порядок логи

 

Это версия только для тестов.

 

Внутри аврхва небольшая дока по компиляции и установке.

 

Release notes stg-2.401.7.6

Данная версия является ступенькой перед версией stg-2.5 Она отличается от stg-2.5, тем, что не хватает некоторых деталей, которые не слишком существенны, но тем не менее не позволяют сервер назвать stg-2.5.

 

В чем разница между 2.4 и 2.5

 

* В 2.5 будет изменен конфигурационный файл сервера. Он будет примерно такой-же как у апача. Нынешний конфигурационный файл не позволяет иметь переменное кол-во опций. Это необходимо, напимер, для того, что бы иметь произвольное кол-во плагинов.

* В stg 2.4 отсутсвует поддержка отправки сообщений пользователям в авторизатор.

 

Теперь собственно про сервер.

 

 

Что нового

 

# Весь код стг, можно сказать, написан с нуля. Стг-2.4, это другой биллинг, который пытается быть похожим по функциональности на стг-2 :)

# Поддержка плагинов. В плагины ушли такие функции:

 

* Авторизация (inetaccess, always online)

* Конфигурация (SgConfig)

* Захват трафика (стандартные из стг-2: linux ether_cap, freebsd bpf_cap. divert и ipq пока нет)

* Работа с БД (стандартно, файлы)

* Пингование клиентов

 

# Изменился конфигурационный файл. Он распался на несколько файлов. Один для ядра Стг, и на каждый плагин по маленькому файлу.

# Немного изменились логи, они стали более "правильными"

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

# Перестало быть необходимым поле iface в параметрах пользователя. Сейчас оно игнорируется сервером.

# Изменился способ добавления пользователя. При добавлении из конфигуратора, все поля, кроме Login игнорируются. Как не странно, это позволит сделать в конфигураторе добавление и редактирование пользователя в одном и том же окне, с одинаковым набором атрибутов, доступных для редактирования.

# Немного изменеилась перезачитка правил "на ходу". Раньше при необходимости перечитаь rules, если в них была ошибка, сервер останавливался, сейчас же он пишет об этом в лог и возвращается к старым правилам

 

Ошибки

 

# При редактировании трафика из конфигуратора, поля, которые не были изменены, сбрасываются в 0

# Неправильно отрабатывается снятие АП и установка предоплаченного трафика для свежедобавленного пользователя. Если он был добавлен в средине месяца у него будет не 1/2 АП и 1/2 предоплаченног трафика, а полностью и то и другое.

# Не проверены все варианты снятия АП.

# Не работает скрипт OnChange

# Не работает время жизни кредита.

 

Особенности

 

* Не работает отсылка сообщений через авторизатор. Будет исправлено только в Стг-2.5

* Отсутствует для авторизатора опция AntiFlood. Будет исправлено в Стг-2.4

* Отсутствует для авторизатора и конфигуратора проверка адресов с которых происходит подключение (опции AdminAllowFrom, UserAllowFrom, ...) Будет исправлено в Стг-2.4

* Остановка сервера: kill pid_of_stargazer. Однако на некоторых системах это может не сработать (на тех системах где stargazer в процессах виден как несколько процессов). В таком случае спасает killall stargazer. При этом происходит корректная остановка сервера.

 

Вообще говоря на Debian 3.0, ядро 2.2.20; RedHat 7.3, ядро 2.4.28 наблюдалась такая картина. По kill сервер останавливался если указан любой из pid-ов отмеченных жирным

 

10323 ? S< 0:00 ./stargazer

10324 ? S 0:00 ./stargazer

10325 ? S 0:00 ./stargazer

10326 ? S 0:00 ./stargazer

10327 ? S 0:00 ./stargazer

10328 ? S 0:00 ./stargazer

10329 ? S 0:00 ./stargazer

10330 ? S 0:00 ./stargazer

10331 ? S 0:00 ./stargazer

 

Похоже это свойственно всем ядрам 2.2.x и 2.4.x На SuSE 9.3, ядро 2.6.11 в процессах всего один stargazer, который благополучно убивается оп kill. Во FreeBSD таких особенностей замечено не было.

 

OS

Компиляция сервера проверялась на следующих ОС:

 

* Debian 3.0

* RedHat 7.3

* RedHat 9.0

* SuSE 9.3

* FreeBSD 4.8

* FreeBSD 5.3

Все платформы i386. На 64 битных ОС не проверялось.

 

Работоспособность (базовая, без глубоких тестов) проверялась на следующих ОС:

 

* RedHat 7.3

* RedHat 9.0

* SuSE 9.3

* FreeBSD 4.8

* FreeBSD 5.3

 

Все платформы i386. На 64 битных ОС не проверялось.

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

Top Posters In This Topic

Исправляю неточность предыдущего поста.

 

Вообще говоря на Debian 3.0, ядро 2.2.20; RedHat 7.3, ядро 2.4.28 наблюдалась такая картина. По kill сервер останавливался если указан любой из pid-ов отмеченных жирным

 

10323 ? S< 0:00 ./stargazer

10324 ? S 0:00 ./stargazer

10325 ? S 0:00 ./stargazer

10326 ? S 0:00 ./stargazer

10327 ? S 0:00 ./stargazer

10328 ? S 0:00 ./stargazer

10329 ? S 0:00 ./stargazer

10330 ? S 0:00 ./stargazer

10331 ? S 0:00 ./stargazer

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

На Fedora Core 4 компилится с кучей warnings, но запускается ... На сколько хорошо работает - не тестил т.к. все пять серваков с биллингом рабочие :-( Буду ждать других :-)

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

Извините, если не в тему.

 

Выражаю личные пожелания (может кто меня поддержит).

 

1. не видно функции "один баланс для нескольких юзеров" (а мы ее так ждем)

2. не хватает галочки "не снимать абон. плату у заблокированного юзера" (это когда минусовой баланс, меньше кредита, когда инет блокируется, а абон. плата снимается)

3. предоплаченый трафик: это когда стоимость предоплаченого трафика ноль, и абон плата не зависит от того, сколько юзер израсходовал за месяц. + сюда такое понятие, как несгораемый трафик (это когда остатки неизрасходонного трафика перекидываются на следующий месяц).

4. конфигуратор: жутко не хватает отчетов о трафике за определенный период, о общей "кассе" и так далее.

 

все, с чистой совестью спать :muu:

Ссылка на сообщение
Поделиться на других сайтах
1. не видно функции "один баланс для нескольких юзеров" (а мы ее так ждем)

2. не хватает галочки "не снимать абон. плату у заблокированного юзера" (это когда минусовой баланс, меньше кредита, когда инет блокируется, а абон. плата снимается)

3. предоплаченый трафик: это когда стоимость предоплаченого трафика ноль, и абон плата не зависит от того, сколько юзер израсходовал за месяц. + сюда такое понятие, как несгораемый трафик (это когда остатки неизрасходонного трафика перекидываются на следующий месяц).

4. конфигуратор: жутко не хватает отчетов о трафике за определенный период, о общей "кассе" и так далее.

 

все, с чистой совестью спать :muu:

1. Это будет. Плагином.

2. Галочка пользователь заморожен. В стг-2 были глюки на эту тему.

Ссылка на сообщение
Поделиться на других сайтах
4. конфигуратор: жутко не хватает отчетов о трафике за определенный период, о общей "кассе" и так далее.

это сделано средствами административной статистики.

конфигуратор для этого не предназначен.

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

Я помню.

Однако сейчас я хочу:

1. сделать сервак аналогичный ао функционалу стг-2, но без багов.

2. большая часть и feature request решается плагинами.

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

В общем при сборке на FreeBSD 5.4 столкнулся с тем что не собирается модуль ao.so вот что говорит:

elaisa > gmake
g++ -c ao.cpp -g3 -Wall -fPIC -I ../../../../../include -DFREE_BSD5
In file included from ao.cpp:5:
ao.h: In member function `void CHG_BEFORE_NOTIFIER<varParamType>::Notify(const varParamType&, const varParamType&)':
ao.h:20: error: invalid use of undefined type `const struct AUTH_AO'
ao.h:12: error: forward declaration of `const struct AUTH_AO'
ao.h: In member function `void CHG_AFTER_NOTIFIER<varParamType>::Notify(const varParamType&, const varParamType&)':
ao.h:38: error: invalid use of undefined type `const struct AUTH_AO'
ao.h:12: error: forward declaration of `const struct AUTH_AO'
gmake: *** [ao.o] Error 1
elaisa >

Ссылка на сообщение
Поделиться на других сайтах
В общем при сборке на FreeBSD 5.4 столкнулся с тем что не собирается модуль ao.so вот что говорит:

elaisa > gmake
g++ -c ao.cpp -g3 -Wall -fPIC -I ../../../../../include -DFREE_BSD5
In file included from ao.cpp:5:
ao.h: In member function `void CHG_BEFORE_NOTIFIER<varParamType>::Notify(const varParamType&, const varParamType&)':
ao.h:20: error: invalid use of undefined type `const struct AUTH_AO'
ao.h:12: error: forward declaration of `const struct AUTH_AO'
ao.h: In member function `void CHG_AFTER_NOTIFIER<varParamType>::Notify(const varParamType&, const varParamType&)':
ao.h:38: error: invalid use of undefined type `const struct AUTH_AO'
ao.h:12: error: forward declaration of `const struct AUTH_AO'
gmake: *** [ao.o] Error 1
elaisa >

Понял.

Ща пофикшу

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

Кто-нибудь пробывал на FreeBSD 6.0? Интересует данный вопрос, так как в скором времени планируется переход сервера на данную версию.

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

поменяй файл ./projects/stargazer/plugins/authorization/ao/ao.h

 

на код ниже:

 

Если заработает, скажи. Сам проврить на фре не могу :)

 


#include <string>
#include <pthread.h>
#include "base_plugin.h"
#include "notifer.h"
#include "user_ips.h"
#include "../../../users.h"

using namespace std;

extern "C" BASE_PLUGIN * GetPlugin();

class AUTH_AO;
//-----------------------------------------------------------------------------
template <typename varParamType>
class CHG_BEFORE_NOTIFIER: public PROPERTY_NOTIFIER_BASE<varParamType>
{
public:
   void Notify(const varParamType & oldValue, const varParamType & newValue);
       //{
       //auth->Unauthorize(user);
       //}

   void        SetUser(user_iter u) { user = u; }
   user_iter   GetUser() {return user; }
   void        SetAuthorizator(const AUTH_AO * a) { auth = a; }

private:
   user_iter   user;
   const       AUTH_AO * auth;
};
//-----------------------------------------------------------------------------
template <typename varParamType>
class CHG_AFTER_NOTIFIER: public PROPERTY_NOTIFIER_BASE<varParamType>
{
public:
   void Notify(const varParamType & oldValue, const varParamType & newValue);
       //{
       //auth->UpdateUserAuthorization(user);
       //}

   void        SetUser(user_iter u) { user = u; }
   user_iter   GetUser() {return user; }
   void        SetAuthorizator(const AUTH_AO * a) { auth = a; }

private:
   user_iter   user;
   const AUTH_AO * auth;
};
//-----------------------------------------------------------------------------
class AUTH_AO_SETTINGS: public BASE_SETTINGS
{
public:
   const string& GetStrError() const { static string s; return s; }
   int ReadSettings(const CONFIGFILE &cf) { return 0; }
};
//-----------------------------------------------------------------------------
class AUTH_AO :public BASE_PLUGIN
{
public:
   AUTH_AO();
   virtual ~AUTH_AO(){};
   
   void                SetUsers(USERS * u);
   void                SetTariffs(TARIFFS * t){};
   void                SetAdmins(ADMINS * a){};
   void                SetTraffcounter(TRAFFCOUNTER * tc){};
   void                SetStore(BASE_STORE * ){};
   void                SetStgSettings(const SETTINGS *){};

   int                 Start();
   int                 Stop();
   BASE_SETTINGS     * GetSettings();
   const string      & GetStrError() const;
   const string        GetVersion() const;
   uint16_t            GetStartPosition() const;
   uint16_t            GetStopPosition() const;

   void                AddUser(user_iter u);
   void                DelUser(user_iter u);

   void                UpdateUserAuthorization(user_iter u) const;
   void                Unauthorize(user_iter u) const;

private:
   void                GetUsers();
   void                SetUserNotifiers(user_iter u);
   void                UnSetUserNotifiers(user_iter u);

   mutable string      errorStr;
   AUTH_AO_SETTINGS    aoSettings;
   USERS             * users;
   list<user_iter>     usersList;
   
   /*
   мы должны перепроверить возможность авторизации юзера при изменении
   следующих его параметров:
   - alwaysOnline
   - ips
   - iface
   */

   list<CHG_BEFORE_NOTIFIER<int> >         BeforeChgAONotifierList;
   list<CHG_AFTER_NOTIFIER<int> >          AfterChgAONotifierList;

   list<CHG_BEFORE_NOTIFIER<USER_IPS> >    BeforeChgIPNotifierList;
   list<CHG_AFTER_NOTIFIER<USER_IPS> >     AfterChgIPNotifierList;

   list<CHG_BEFORE_NOTIFIER<string> >      BeforeChgIfaceNotifierList;
   list<CHG_AFTER_NOTIFIER<string> >       AfterChgIfaceNotifierList;
   
   class ADD_USER_NONIFIER: public NOTIFIER_BASE<user_iter>
   {
   public:
       ADD_USER_NONIFIER(){};
       virtual ~ADD_USER_NONIFIER(){};
   
       void SetAuthorizator(AUTH_AO * a) { auth = a; }
       void Notify(const user_iter & user)
           {
           auth->AddUser(user);
           }
   
   private:
       AUTH_AO * auth;
   } onAddUserNotifier;

   class DEL_USER_NONIFIER: public NOTIFIER_BASE<user_iter>
   {
   public:
       DEL_USER_NONIFIER(){};
       virtual ~DEL_USER_NONIFIER(){};
   
       void SetAuthorizator(AUTH_AO * a) { auth = a; }
       void Notify(const user_iter & user)
           {
           auth->DelUser(user);
           }
   
   private:
       AUTH_AO * auth;
   } onDelUserNotifier;

};
//-----------------------------------------------------------------------------
template <typename varParamType>
void CHG_BEFORE_NOTIFIER<varParamType>::Notify(const varParamType & oldValue, const varParamType & newValue)
{
auth->Unauthorize(user);
}
//-----------------------------------------------------------------------------
template <typename varParamType>
void CHG_AFTER_NOTIFIER<varParamType>::Notify(const varParamType & oldValue, const varParamType & newValue)
{
auth->UpdateUserAuthorization(user);
}
//-----------------------------------------------------------------------------

Ссылка на сообщение
Поделиться на других сайтах
Кто-нибудь пробывал на FreeBSD 6.0? Интересует данный вопрос, так как в скором времени планируется переход сервера на данную версию.

Стг-2.4 не пробовал, но стг-2 скомпилился.

Там пришлось переименовать одну переменную и всё заработало. Если кому надо расскажу.

Кто-то про это спрашивал.

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

Да сейчас собрался, сча работоспособность проверю, если не сложно в сл раз номера строк с изменениями указывай, мне быстрее руками исходник поправить чем файл заменить :)

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

Да сейчас собрался, сча работоспособность проверю, если не сложно в сл раз номера строк с изменениями указывай, мне быстрее руками исходник поправить чем файл заменить :)

 

2005-12-22 00:48:44 -- Stg v. Stg 2.4 alpha.01

2005-12-22 00:48:44 -- Timer thread started successfully.

2005-12-22 00:48:44 -- Storage plugin: file_store v.1.00. Loading successfull.

2005-12-22 00:48:44 -- Users started successfully.

2005-12-22 00:48:44 -- Traffcounter started successfully.

2005-12-22 00:48:44 -- Plugin: bpf_cap v.1.0. Start successfull.

2005-12-22 00:48:44 -- Error: Plugin loading failed. ./plugins/authorization/ao/ao.so: Undefined symbol "_ZN18CHG_AFTER_NOTIF

IERISsE6NotifyERKSsS2_"

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

 

2005-12-22 00:48:44 -- Stg v. Stg 2.4 alpha.01

2005-12-22 00:48:44 -- Timer thread started successfully.

2005-12-22 00:48:44 -- Storage plugin: file_store v.1.00. Loading successfull.

2005-12-22 00:48:44 -- Users started successfully.

2005-12-22 00:48:44 -- Traffcounter started successfully.

2005-12-22 00:48:44 -- Plugin: bpf_cap v.1.0. Start successfull.

2005-12-22 00:48:44 -- Error: Plugin loading failed. ./plugins/authorization/ao/ao.so: Undefined symbol "_ZN18CHG_AFTER_NOTIF

IERISsE6NotifyERKSsS2_"

Перенеси этот код.

ao.h -> ao.cpp

 

//-----------------------------------------------------------------------------
template <typename varParamType>
void CHG_BEFORE_NOTIFIER<varParamType>::Notify(const varParamType & oldValue, const varParamType & newValue)
{
auth->Unauthorize(user);
}
//-----------------------------------------------------------------------------
template <typename varParamType>
void CHG_AFTER_NOTIFIER<varParamType>::Notify(const varParamType & oldValue, const varParamType & newValue)
{
auth->UpdateUserAuthorization(user);
}
//-----------------------------------------------------------------------------

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

это

а как теперь с iface в фриибсд? теперь ему пофиг на каком интерфейсе считать?

такой вопрос

у меня парвила выгоядят так

ALL 10.0.0.0/8 NULL

ALL UA-IX DIR0

ALL WORLD DIR1

таквот через 10.0.0.0/8 проходит терабайт трафика который считать ненадо

как сделать так что-бы старгейзер на него вобще внимание не обращал? а то реально старгейзер лишний раз считает\грузит проц..

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

а как теперь с iface в фриибсд? теперь ему пофиг на каком интерфейсе считать?

Нет, в настройках capturer.conf прописать надо интерфейс. Однако юзерам прописывать не надо.

 

такой вопрос

у меня парвила выгоядят так

ALL 10.0.0.0/8 NULL

ALL UA-IX DIR0

ALL WORLD DIR1

таквот через 10.0.0.0/8 проходит терабайт трафика который считать ненадо

как сделать так что-бы старгейзер на него вобще внимание не обращал? а то реально старгейзер лишний раз считает\грузит проц..

Он и с интерфейсом обращал на него внимание :)

А вообще ipq тут должен рулить. С помощью него можно завернуть в стг всё кроме локалки.

 

ПС. Новый стг должен меньше грузить проц на подсчете трафика.

Ссылка на сообщение
Поделиться на других сайтах
я про старый. или ты этот сбрался на юзеров ставить? :)

дак ты написал в первом посте что с ipq и divert еще не дружит..

потом пишешь что с ipq будет все хорошо..

вот и получается:)

ЗЫ у меня фриибсд, тут диверт как не крути - не фунциклирует..

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

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


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