powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / unlang in freeradius
9 сообщений из 9, страница 1 из 1
unlang in freeradius
    #36796688
alexGrT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Возник такой вопрос:

Есть параметр %{NAS-IP-Address} по нему можно получить код услуги (101, 102, 103 и т.д.) используя запрос
select servicetype from nas where ipaddr = %{NAS-IP-Address}
И в зависимости от этого значения (используя оператор IF) подсовывать разные запросы авторизации authorize_check_query, authorize_reply_query и т.д.

Версия радиуса 2.0.2

Пример файла авторизации радиуса:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
        #######################################################################
        #  Authorization Queries
        #######################################################################
        #  These queries compare the check items for the user
        #  in ${authcheck_table} and setup the reply items in
        #  ${authreply_table}.  You can use any query/tables
        #  you want, but the return data for each row MUST
        #  be in the  following order:
        #
        #   0 . Row ID (currently unused)
        #   1 . UserName/GroupName
        #   2 . Item Attr Name
        #   3 . Item Attr Value
        #   4 . Item Attr Operation
        #######################################################################

        # Use these for case insensitive usernames. WARNING: Slower queries!
# authorize_check_query = "SELECT id, UserName, Attribute, Value, Op \
#   FROM ${authcheck_table} \
#   WHERE LOWER(UserName) = LOWER('%{SQL-User-Name}') \
#   ORDER BY id"
# authorize_reply_query = "SELECT id, UserName, Attribute, Value, Op \
#   FROM ${authreply_table} \
#   WHERE LOWER(UserName) = LOWER('%{SQL-User-Name}') \
#   ORDER BY id"

#test_check = "select radacctid as id, username as UserName, 'Pass' as Attribute, '==' as Op from radacct limit 1"

authorize_check_query = " \
SELECT \
        1 AS id, \
        '%{SQL-User-Name}' AS username, \
        retcheckattribute('%{SQL-User-Name}', \
        '%{NAS-IP-Address}') AS attribute, \
        retcheckpassword('%{SQL-User-Name}', \
        '%{NAS-IP-Address}') AS password, \
        '==' AS op \
WHERE \
        retenableservice( '%{User-Name}', retservicetype('%{NAS-IP-Address}')) = 1 \
AND \
        setlimit('%{User-Name}',retservicetype('%{NAS-IP-Address}'),'%{Called-Station-Id}') = 1  ORDER BY id"

И Т.Д.

Кто может подсказать как это сделать?
...
Рейтинг: 0 / 0
unlang in freeradius
    #36796760
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexGrT, тащемта у freeradius в этом месте родовая травма. предполагается что все запросы sql работают как куски файла users. при сколько-нибудь сложной логике в биллинге приходится вешаться.

что у вас за субд? вершина моих биллинговых городушек использовала pipelined functions в оракле и все РЕЗКО упростилось.
а на старых версиях оракла доходило до написания патчей.
...
Рейтинг: 0 / 0
unlang in freeradius
    #36796891
alexGrT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind,

Postgresql
...
Рейтинг: 0 / 0
unlang in freeradius
    #36796975
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexGrT, ну вот у них тоже есть какой-то setof http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions

я не утверждаю, что так будет лучше именно вам, но мне было проще редактировать привычный pl/sql и всю логику биллинга там и держать. да и unlang появился только в freeradius 2.0.
...
Рейтинг: 0 / 0
unlang in freeradius
    #36797004
alexGrT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind,

Как вариант можно будет рассмотреть, но все же не хочу останавливаться, буду смотреть в сторону unlang/xlat что бы организовать в sql-файле авторизации хоть какую то логику с применением IF statement
...
Рейтинг: 0 / 0
unlang in freeradius
    #36797036
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexGrT, многие биллинги растут дальше. пожалей разработчика, если он планируется.
...
Рейтинг: 0 / 0
unlang in freeradius
    #36797091
alexGrT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind,

Дело в том что я и есть разработчик нашего билинга. В нем до сего момента нету NGN(SIP) услуги, а только ADSL и т.д.

Теперь же приходится внедрять NGN а скрипт авторизации заточен под ..... не оно самое короче *(

Вот вопрос, покурил маны, сделал так в файле SQL-авторизации в качестве теста:
Код: plaintext
1.
2.
3.
if ("%{sql:SELECT COUNT(username) FROM 'usergroup' WHERE username ="'%{SQL-User-Name}'}" > 0) { 
        authorize_check_query = "select  1  as id, '1500001' as username, 'Password' as attribute, '123456' as password"
} 

Запускаю freeradius -X
вот что пишет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
FreeRADIUS Version  2 . 0 . 4 , for host i486-pc-linux-gnu, built on Sep   7   2008  at  23 : 35 : 34 
Copyright (C)  1999 - 2008  The FreeRADIUS server project and contributors. 
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 
You may redistribute copies of FreeRADIUS under the terms of the 
GNU General Public License. 
Starting - reading configuration files ...
including configuration file /etc/freeradius/radiusd.conf
including configuration file /etc/freeradius/proxy.conf
including configuration file /etc/freeradius/clients.conf
including configuration file /etc/freeradius/snmp.conf
including configuration file /etc/freeradius/eap.conf
including configuration file /etc/freeradius/sql.conf
including configuration file /etc/freeradius/sql/our_radius.conf
/etc/freeradius/sql/our_radius.conf[ 48 ]: Parse error in condition at: "%{sql:SELECT COUNT(username) FROM 'usergroup' WHERE username ="'%{SQL-User-Name}'}" >  0 ) {
Errors reading /etc/freeradius/radiusd.conf

Понимаю, проблема в синтаксисе. Или каК? Подскажите!!!
...
Рейтинг: 0 / 0
unlang in freeradius
    #36797226
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexGrT, ну так пора нанять настоящего разработчика.
А он, уверяю вас, не станет возиться с этими языками, а сделает все через SQL.
...
Рейтинг: 0 / 0
unlang in freeradius
    #36798238
alexGrT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind,

Ничего абсолютно)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / unlang in freeradius
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]