Биллинговая система Nodeny
16 Сентября 2021, 20:43:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: rev.527  (Прочитано 6096 раз)
Efendy
Администратор
Спец
*****

Карма: 137
Offline Offline

Сообщений: 4714



Просмотр профиля
« : 14 Августа 2018, 11:03:01 »

В этой ревизии появились такие фичи:

1) возможность задать группы, для которых должна быть разная нумерация. Например, у нас есть группы: клиенты, работники и оборудование. Мы хотим чтобы id свичей шли не в перемешку с id других групп, а, например, начинались с миллиона. Скорее всего вам эта фича не понадобится, но меня попросили - я сделал

2) есть такая фича как "рабочий список" - он хранит заранее подготовленный список абонентов. Может понадобиться когда мы хотим посмотреть, скажем, отчет по нескольким никак не связанным клиентам. Теперь можно добавлять в рабочий список не по одному клиенту, а группу по фильтру. Например, мы выбрали всех абонентов по фильтру "Хрещатик 15", добавили в "рабочий список", затем выбрали по фильтру "Оболонский проспект 16", снова добавили. Теперь мы можем смотреть статистику по клиентам по обоим фильтрам

3) есть поле типа выпадающий список. Есть фича фильтрации по нескольким значениям выпадающего списка - например, фильтр "все абоненты по улице Лалала или Блаблабла или Хахаха". Теперь можно не только фильтровать, но и хранить несколько значений в учетной записи. Эту фичу сделал в основном для модуля dhcp. Теперь этот модуль может предлагать подвязать свич к абоненту в зависимости от адреса проживания последнего и расположения свича. Доку я еще не написал, поэтому на словах:

В модуле dhcp есть таблица (mac_uid), которая хранит параметры подключения абонентов. В зависимости от организации сети, там хранятся разные данные. Например, в неуправляемой сети, там хранятся связки мак-абонента = id абонента. Для таких сетей нововведение не интересно.

А вот в управляемой сети в этой таблице уже хранятся еще и параметры устройства: мак-свича и порт свича. Т.е. связки уже такие: мак свича + порт свича + мак абона = id абона. Кстати, если на порту только один абон, то его мак может игнорироваться.

Обычно эта таблица заполняется автоматически - для неизвестных связок перехватываются http-запросы и выводится заглушка "авторизуйтесь", после чего создается связка.

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

Поэтому еще до этой ревизии я сделал такую фичу: в самом биллинге можно сделать группу "оборудование" (или "свичи") с любыми параметрами, например: состояние (ремонт, в раьботе, глючит), стоимость, тип, прошивка и т.д. Это уже само по себе удобно. Но. Основной профит от создания группы "свичи" в том, что можно сделать поле "мак адрес" и при создании связки "мак-свича + порт + мак абона" можно не вводить его вручную, а выбрать свич из списка. В видео пример этого:

https://www.youtube.com/watch?v=giFW9HDfLk4

Кроме итого, на видео вы могли заметить новую фичу. У свича можно задать адрес облуживания. Т.е. можно указать, что свич обслуживает абонентов по улице Лютого в домах 15, 17 и 19, а также по улице Вересня в домах 22, 24 и 28.

Обратите внимание, на видео улицы - выпадающий список. Дома - тоже выпадающий список. Если кто не знал, я напомню - в NoDeny можно сделать связанные списки - это когда значения поля зависят от другого поля. например, можно сделать поле "город". Выбираем город "Киев" и получаем список улиц актуальных только для данного города. Ну или список районов. Выбираем нужный район и получаем улицы только данного района. Выбираем улицу и получаем список домов на этой улицы. Это значительно упрощает ввод т.к убираются ненужные варианты.

Так и в примере на видео дома зависят от улицы. Более того, можно выбрать несколько домов - часто к свичу могут быть подключены абоненты из соседних домов, особенно если это частный сектор.

Когда адрес подключения абонента совпадает с адресом обслуживания свича - биллинг сам предложит создать подключение к нему.

Поля по которым идет сравнение, естественно, задаются в настройках. Можно вообще не по адресу связывать.
Записан
tom
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 216


Просмотр профиля
« Ответ #1 : 14 Августа 2018, 12:46:37 »

Відносно п.3 - я вірно зрозумів, у кого данні мак+пристрій+порт - заповнюється автоматично, то він не актуальний?

Доречі, маю таку невеличку складність при гібридній мережі - де є порт на користувача так і багато користувачів на порту. Чи варто і чи можна зробити так, щоб (наприклад) параметр свіча був - oneconnect, це значить що на ньому лише абони один на порт, і будьякий неавторизований абон буде з цим параметром. Ато виходить коли абон не авторизований і авторизувався, в нього oneconnect=0, і зміна мака - веде до створення ще одного запису в таблиці mac_uid.

Є думки в цьому напрямку? Чи це одиничний випадок і періодичну моніторити таблицю?
Записан
Efendy
Администратор
Спец
*****

Карма: 137
Offline Offline

Сообщений: 4714



Просмотр профиля
« Ответ #2 : 14 Августа 2018, 13:39:52 »

Відносно п.3 - я вірно зрозумів, у кого данні мак+пристрій+порт - заповнюється автоматично, то він не актуальний?
неактуальный

Доречі, маю таку невеличку складність при гібридній мережі - де є порт на користувача так і багато користувачів на порту. Чи варто і чи можна зробити так, щоб (наприклад) параметр свіча був - oneconnect, це значить що на ньому лише абони один на порт, і будьякий неавторизований абон буде з цим параметром. Ато виходить коли абон не авторизований і авторизувався, в нього oneconnect=0, і зміна мака - веде до створення ще одного запису в таблиці mac_uid.

Є думки в цьому напрямку? Чи це одиничний випадок і періодичну моніторити таблицю?
подумаю
Записан
cojiict
Старожил
****

Карма: 0
Offline Offline

Сообщений: 332


Просмотр профиля Email
« Ответ #3 : 15 Августа 2018, 11:07:47 »

Код:
INSERT INTO users SET modify_time=UNIX_TIMESTAMP(), cstate='1', state='on', contract='6669', lstate='0', contract_date='0', block_if_limit='1', limit_balance='0', cstate_time='0', fio='', comment='', grp='14', passwd=AES_ENCRYPT('*****','******'), id='7554';
ERROR 1364 (HY000): Field 'name' doesn't have a default value
Цитировать
SELECT @@global.sql_mode;
+------------------------+
| @@global.sql_mode      |
+------------------------+
| NO_ENGINE_SUBSTITUTION |
+------------------------+
1 row in set (0.00 sec)

mysql> SELECT @@session.sql_mode;
+------------------------+
| @@session.sql_mode     |
+------------------------+
| NO_ENGINE_SUBSTITUTION |
+------------------------+
1 row in set (0.00 sec)

Зробив
Код:
SET @@GLOBAL.sql_mode= ''
SET @@SESSION.sql_mode= ''
Нові граблі
Код:
Duplicate entry '' for key 'name'

Код:
+----------------+---------------------+------+-----+---------+----------------+
| Field          | Type                | Null | Key | Default | Extra          |
+----------------+---------------------+------+-----+---------+----------------+
| id             | int(11)             | NO   | PRI | NULL    | auto_increment |
| name           | varchar(64)         | NO   | UNI | NULL    |                |
| passwd         | varbinary(64)       | NO   |     | NULL    |                |
| grp            | tinyint(4) unsigned | NO   |     | 0       |                |
| contract       | tinytext            | NO   |     | NULL    |                |
| contract_date  | int(10) unsigned    | NO   |     | NULL    |                |
| state          | enum('off','on')    | NO   | MUL | on      |                |
| balance        | float(10,2)         | NO   |     | 0.00    |                |
| limit_balance  | float(6,2)          | NO   |     | 0.00    |                |
| block_if_limit | tinyint(4)          | NO   |     | 0       |                |
| modify_time    | int(11)             | NO   |     | 0       |                |
| fio            | tinytext            | NO   |     | NULL    |                |
| discount       | tinyint(4)          | NO   |     | 0       |                |
| cstate         | int(11)             | NO   |     | 0       |                |
| cstate_time    | int(10) unsigned    | NO   |     | NULL    |                |
| comment        | text                | NO   |     | NULL    |                |
| lstate         | tinyint(4)          | NO   |     | 0       |                |
Записан
cojiict
Старожил
****

Карма: 0
Offline Offline

Сообщений: 332


Просмотр профиля Email
« Ответ #4 : 15 Августа 2018, 11:15:06 »

изменение режима SQL mode после создания и вставки данных в партиционные таблицы (partitioning tables) может привести к существенным изменениям в поведении таких таблиц, что, в свою очередь, может привести к потере или повреждению данных.
Записан
Efendy
Администратор
Спец
*****

Карма: 137
Offline Offline

Сообщений: 4714



Просмотр профиля
« Ответ #5 : 15 Августа 2018, 11:49:35 »

ALTER TABLE users CHANGE name name VARCHAR(64) NULL DEFAULT NULL;
Записан
tom
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 216


Просмотр профиля
« Ответ #6 : 23 Августа 2018, 21:19:58 »

Після 528 у кого заглушка на nginx -  вона норм привязує клієнта після авторизації?! В мене логін пароль вводять, а з ipset таблиці нікого не виводить.. СоА працює, клієнтів розблоковує.
Записан
Efendy
Администратор
Спец
*****

Карма: 137
Offline Offline

Сообщений: 4714



Просмотр профиля
« Ответ #7 : 23 Августа 2018, 23:05:48 »

Після 528 у кого заглушка на nginx -  вона норм привязує клієнта після авторизації?! В мене логін пароль вводять, а з ipset таблиці нікого не виводить.. СоА працює, клієнтів розблоковує.
модуль dhcp обнови, там были изменения для этой ревизии
Записан
tom
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 216


Просмотр профиля
« Ответ #8 : 24 Августа 2018, 02:39:29 »

Все наче ок, тут вийшов глюк криворукий інженер.. )))
Записан
tom
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 216


Просмотр профиля
« Ответ #9 : 24 Августа 2018, 12:18:18 »

Все таки модуль тре оновити.
Після оновлення вилізли бока в радіус запитах
(5) sql: EXPAND call radreply('%{User-Name}','%{NAS-Identifier}','%{Calling-Station-Id}')
(5) sql:    --> call radreply('717:112','NAS7','b0:4e:26:b7:02:b1')
(5) sql: Executing select query: call radreply('717:112','NAS7','b0:4e:26:b7:02:b1')
(5) sql: ERROR: rlm_sql_mysql: ERROR 1136 (Column count doesn't match value count at row 1): 21S01
(5) sql: ERROR: SQL query error getting reply attributes
зявились дедлоки.

       authorize_reply_query = "call radreply('%{User-Name}','%{NAS-Identifier}','%{Calling-Station-Id}')"

CREATE DEFINER=`root`@`localhost` PROCEDURE `radreply`(IN login VARCHAR(64), IN `tag` VARCHAR(64), IN rad_usr_mac VARCHAR(17))
« Последнее редактирование: 24 Августа 2018, 13:21:20 от tom » Записан
tom
Постоялец
***

Карма: 2
Offline Offline

Сообщений: 216


Просмотр профиля
« Ответ #10 : 24 Августа 2018, 15:57:14 »

Знайшов
тре правити процедуру radreply
Записан
cojiict
Старожил
****

Карма: 0
Offline Offline

Сообщений: 332


Просмотр профиля Email
« Ответ #11 : 19 Сентября 2018, 10:27:15 »

Доку я еще не написал...
Коли можна буде вже ознайомитись?
Об’єми роботи будуть не малі. Чи буде якийсь скрипт по оптимізації sql в доці? Щось схоже на перехід з 50.32?
Чекаємо з нетерпінням
Записан
Efendy
Администратор
Спец
*****

Карма: 137
Offline Offline

Сообщений: 4714



Просмотр профиля
« Ответ #12 : 19 Сентября 2018, 22:13:37 »

Чи буде якийсь скрипт по оптимізації sql в доці? Щось схоже на перехід з 50.32?
Не совсем понял о каком скрипте оптимизации идет речь. Если о процедурах и функциях - они же пишутся исходя из конкретных случаев. Ну, а вообще, mysql огорчает - мы с этими дедлоками боремся уже который год, а они все равно возникают просто на элементарных операциях. Не знаю, писал я где-то или нет, но в 8м мускуле появилась фича, которая по идее позволит избавиться от дедлоков. Ждем когда станет стабильной
Записан
cojiict
Старожил
****

Карма: 0
Offline Offline

Сообщений: 332


Просмотр профиля Email
« Ответ #13 : 20 Сентября 2018, 09:14:39 »

мова про оптимізацію доп_полів.
Зараз працює по старій схемі.
Код:
Місто/Село _ip_tag выпадающий список
Вулиця _adr_street выпадающий список Титульное
Будинок _adr_house одна строка

Тепер щоб отримувати перелік комутаторі привязка мала б бути приблизно така
Код:
_adr_city:street:building
обдумував рішення як перейти під новий формат. В моєму розумінні це дуже клопітка робота, або ручний ввід.
Можливо хтось вже робив щось подібне. Поділіться, будь ласка, скриптом або напрямком
Записан
cojiict
Старожил
****

Карма: 0
Offline Offline

Сообщений: 332


Просмотр профиля Email
« Ответ #14 : 20 Сентября 2018, 11:16:19 »

не побачив опис модуля в білінгу. Буду пробувати по ману. Дякую
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!