Турбо кнопка - простыми запросами к базе

Технические вопросы по UTM 5.0
Ответить
MKC
Сообщения: 23
Зарегистрирован: Сб авг 21, 2010 12:36

Турбо кнопка - простыми запросами к базе

Сообщение MKC »

Доброго дня суток! Реализую сабж. Вариантов море - от соа записей и фрирадиуса до заведения временных учеток.
Подумал реализовать проще - просто добавлять на предоплаченное время записи в таблицу radius_data с атрибутом на 100 мегабит ( 2 записи - 1 на in вторая на out ).
ID account-а тестового юзера - 309
Возник вопрос: после добавления 2х записей появились такие строки:

Код: Выделить всё

mysql> select * from radius_data limit 50,2;
+-----+----------+------------+--------+------+-------------------------------+-----------+
| id  | owner_id | owner_type | vendor | attr | value                         | attr_type |
+-----+----------+------------+--------+------+-------------------------------+-----------+
| 224 |      843 |      10000 |  12341 |    7 | out#1=all shape 25480000 pass |         2 |
| 225 |      843 |      10000 |  12341 |    7 | in#1=all shape 25480000 pass  |         2 |
+-----+----------+------------+--------+------+-------------------------------+-----------+
2 rows in set (0.00 sec)
появился некий owner_id 843 и нет никакой ссылки на account id 309 ( с остальными полями понятно все ) - как он формуруется и откуда берется?
методом научного тырка нашлись вот такие записи таблице service_links:

Код: Выделить всё

mysql> select * from service_links where account_id=309 and is_deleted=0;
+-----+---------+------------+------------+----------------+------------+
| id  | user_id | account_id | service_id | tariff_link_id | is_deleted |
+-----+---------+------------+------------+----------------+------------+
| 843 |     307 |        309 |          3 |            437 |          0 |
| 844 |     307 |        309 |         59 |            437 |          0 |
+-----+---------+------------+------------+----------------+------------+
2 rows in set (0.00 sec)
Дополнительно нашлось откуда берецца цифра 437:

Код: Выделить всё

mysql> select * from account_tariff_link where account_id=309 and is_deleted=0;
+-----+------------+-----------+----------------+--------------------+------------+------------+
| id  | account_id | tariff_id | next_tariff_id | discount_period_id | is_deleted | link_date  |
+-----+------------+-----------+----------------+--------------------+------------+------------+
| 437 |        309 |         1 |              1 |                 17 |          0 | 1301126529 |
+-----+------------+-----------+----------------+--------------------+------------+------------+
1 row in set (0.00 sec)
Помогите разобраться, ибо решение для турбокнопок получается достаточно простое - при нажатии кнопки в личном кабинете дернуть разовую услугу - спишется ( например ) 100 рублей - добавить пару строк, выбросить абонента на впне чтобы он переподключился с новыми радиус-атрибутами, сделать запись о начале кнопки с таймом конца услуги и периодически дергать скрипт, который будет контроллировать конец услуги, удалять записи из radius_data и скидывать сессию, чтобы юзер переконнектился с радиус-атрибутами группы по тарифу.

В общем "Бен, ай нид хелп" ))))

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Как-то не совсем хорошо напрямую писать в БД.
Возможно для того чтобы ваши новые атрибуты сработали придется после добавления записей хупать ядро. А это уже совсем не хорошо.

mrMutniy
Сообщения: 1
Зарегистрирован: Пн окт 10, 2011 06:17

Сообщение mrMutniy »

У нас турбокнопка реализована следующим образом.
Сразу хочу сказать, что полосы нарезаются согласно пользовательским группам(передается скрипту фаервола параметром). Теперь собственно по реализации ТК, каждой турбокнопке соответствует своя группа, турбокнопки от 2 до 10 мегабит. Соответственно когда абонент у себя в личном кабинете включает турбокнопку, ему вместо его группы выставляется группа нужной турбокнопки и передергивается статус интернет. для отключения я сделал дополнительную табличку в которой хранятся данные о включенных тк. табличка следующего вида

Код: Выделить всё


 turbo_users | CREATE TABLE `turbo_users` (
  `id` int(10) unsigned NOT NULL,
  `p_group` varchar(45) NOT NULL,
  `c_group` varchar(45) NOT NULL,
  `e_time` varchar(45) NOT NULL,
  `int_status` varchar(1) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 
где p_group - группа пользователя
c_group - текущая группа турбокнопки
e_time - время до которого работает тк
int_status - статус интерет(включен/выключен) до включения тк.
Собственно эта табличка просматривается по крону, у кого время вышло тем проводится операция такая же как и на включение. Может что из этого пригодится.

Ответить