Биллинговая система Nodeny
21 Ноября 2024, 23:45:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 14 15 [16]
  Печать  
Автор Тема: Микротик  (Прочитано 99837 раз)
SlavikUA
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 21


Просмотр профиля
« Ответ #225 : 27 Июня 2021, 08:46:07 »


Может проблема не в этой процедуре а в radupdate? Тем более если ошибок больше одной на одно соединение.
да выяснить все просто, нужно запустить радиус в режиме дебага и выловить где именно ошибка. В дебаг радиус на фре запускается командой radiusd -X


Проаналізував ще раз детальніше radupdate і от що я там найшов

UPDATE users_trf SET in1=in1 + t_in WHERE uid=usr_id;

Цей uid є ключем в таблиці users_trf а от хто його туди вставляє покищо загадка
CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':',''))); немає вставки в таблицю users_trf тільки в auth_now.

Можливо тому сипить помилки але хтось їх туди пише?

Чи може це бути зв'язано з тим що абонів я набив вручну декілька і вони ніхто ще авторизувалися ніразу тільки один з яким я проводжу експерименти?

Коли запустив радіус режимі дебаг він дав помилку що uid не може бути ноль але ще ніхто не підключався після авторизаціїї все працює без помилок (процедуру радреплей я тимчасово замінив на стокову без запису макадресів).

Зловив - цю помилку дає всежтаки radupdate але чому, сесія авторизована все ок, чи може не встигає відповісти радіуссервер або база мускула але нагрузки 0?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #226 : 27 Июня 2021, 10:25:42 »

все работает, только аккаунтинг видимо не производится.
Гадать можно сколько угодно, тут нужно чтобы ты привел свой файл sql.conf и процедуру radupdate
Записан
SlavikUA
Пользователь
**

Карма: 0
Offline Offline

Сообщений: 21


Просмотр профиля
« Ответ #227 : 27 Июня 2021, 12:44:08 »

все работает, только аккаунтинг видимо не производится.
Гадать можно сколько угодно, тут нужно чтобы ты привел свой файл sql.conf и процедуру radupdate

sql {
        driver = "rlm_sql_mysql"
        mysql {
                warnings = auto
        }
        server = "localhost"
        port = 3306
        login = "nodeny"      # користувач бази данних Нодені
        password = "Nod+SQL#1"   # пароль до бази данних Нодені
        radius_db = "nodeny"   # база Нодені
        authorize_check_query = "call radcheck('%{User-Name}')"
        authorize_reply_query = "call radreply('%{User-Name}')"

        accounting {
            query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\
       'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}','%{Acct-Session-Id}',\
      (%{%{Acct-Input-Gigawords}:-0} * POWER(2, 32)) + %{%{Acct-Input-Octets}:-0},\
      (%{%{Acct-Output-Gigawords}:-0} * POWER(2, 32)) + %{%{Acct-Output-Octets}:-0})"
            type {
                start {
                    query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\
      'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}','%{Acct-Session-Id}',\
      (%{%{Acct-Input-Gigawords}:-0} * POWER(2, 32)) + %{%{Acct-Input-Octets}:-0},\
      (%{%{Acct-Output-Gigawords}:-0} * POWER(2, 32)) + %{%{Acct-Output-Octets}:-0})"
                }
            }
        }
}

CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16),
    IN properties VARCHAR(255), IN ses VARCHAR(32), IN trafin BIGINT(20), IN trafout BIGINT(20))
BEGIN
    DECLARE usr_id INT;
    DECLARE usr_ip VARCHAR(15) DEFAULT NULL;
    DECLARE t_in BIGINT;
    DECLARE t_out BIGINT;
    SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1;
    SELECT get_ip(usr_id) INTO usr_ip;
    CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':','')));
    SELECT trafin - IFNULL((SELECT traf_in FROM ses_traf WHERE ses_id=ses LIMIT 1),0) INTO t_in;
    UPDATE users_trf SET in1=in1 + t_in WHERE uid=usr_id;
    SELECT trafout - IFNULL((SELECT traf_out FROM ses_traf WHERE ses_id=ses LIMIT 1),0) INTO t_out;
    UPDATE users_trf SET out1=out1 + t_out WHERE uid=usr_id;
    INSERT INTO ses_traf SET ses_id=ses, traf_in=trafin, traf_out=trafout, time=UNIX_TIMESTAMP()
           ON DUPLICATE KEY UPDATE traf_in=trafin, traf_out=trafout, time=UNIX_TIMESTAMP();
    SET @s = CONCAT('INSERT INTO X', YEAR(NOW()), '_', MONTH(NOW()), '_', DAY(NOW()), ' VALUES(?,?,?,?,?,?)');
    PREPARE stmt1 FROM @s;
    SET @iface = 0;
    SET @cls = 1;
    SET @ts = CEIL(UNIX_TIMESTAMP() / 60) * 60;
    SET @usr_id = usr_id;
    SET @t_in = t_in;
    SET @t_out = t_out;
    EXECUTE stmt1 USING @usr_id, @iface, @ts, @cls, @t_in, @t_out;
    DEALLOCATE PREPARE stmt1;
END$$
Записан
Stronglan
Постоялец
***

Карма: -3
Offline Offline

Сообщений: 184


Просмотр профиля Email
« Ответ #228 : 27 Июня 2021, 12:51:14 »

Ну вот она ошибка, я нашел ее
Код:
call radreply('%{User-Name}','%{Calling-Station-Id}')

Здесь '%{Calling-Station-Id}' а чтобы имя дхцп сервера вставило нужно '%{Called-Station-Id}'
выглядит похоже, опечатка-с....
sql.conf исправляйте, заменяйте и наверное будет все хорошо, но это не точно )


У меня вообще не было этого файла в каталоге /usr/local/etc/raddb/
Нашел его в /usr/local/nodeny/etc/raddb/ и скопировал в /usr/local/etc/raddb/
Теперь его сожержимое такое...

Код:
# -*- text -*-
##
## sql.conf -- SQL modules
##
##      $Id$

sql {
        database = "mysql"
        driver = "rlm_sql_mysql"
        server = "localhost"
        port = 3306
        login = "nodeny"
        password = "hardpass"
        radius_db = "nodeny"

        deletestalesessions = yes
                                                                                     
        sqltrace = no                                                                 
        sqltracefile = ${logdir}/sqltrace.sql                                         
                                                                                     
        num_sql_socks = 5                                                             
                                                                                     
        connect_failure_retry_delay = 60                                             
                                                                                     
        lifetime = 0                                                                 
                                                                                     
        max_queries = 0                                                               
        authorize_check_query = "call radcheck('%{User-Name}')"
        authorize_reply_query = "call radreply('%{User-Name}', '%{Called-Station-Id}')"
        postauth_query = "call radupdate('%{User-Name}','%{reply:Framed-IP-Address}','nas=%{NAS-IP-Address}', '%{Called-Station-Id}')"
        accounting_update_query = "call radupdate('%{User-Name}','%{Framed-IP-Address}','nas=%{NAS-IP-Address}', '%{Called-Station-Id}')"                                                                                     
}

В файле radiusd.conf добавил $INCLUDE sql.conf и бутнул радиус, ошибка никуда не ушла, также не передается тег. В режиме отладки старая картина.... Куда еще копать?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #229 : 27 Июня 2021, 13:05:16 »

У меня вообще не было этого файла в каталоге /usr/local/etc/raddb/
Нашел его в /usr/local/nodeny/etc/raddb/ и скопировал в /usr/local/etc/raddb/
Теперь его сожержимое такое...
Что же ты творишь..... добрый человек?
У тебя же
Цитировать
Прошу помощи в настройке связки freeradius3 + микротик.
Короче, рукалицо.
Записан
garik24
NoDeny
Пользователь
*

Карма: 1
Offline Offline

Сообщений: 73



Просмотр профиля
« Ответ #230 : 28 Сентября 2021, 02:05:47 »

никто не протестировал? Делать мне переключатель старая/новая авторизация?

Добрый день!

Планируется ли еще переключатель старая/новая авторизация в модуле  под  Nodeny-next or Nodeny-plus?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #231 : 28 Сентября 2021, 15:19:39 »

Да все уже забили и сделали все на новой... сколько лет еще ждать-то?
Записан
Страниц: 1 ... 14 15 [16]
  Печать  
 
Перейти в:  

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