- freeradius + SQL, Tester, 10:26 , 21-Фев-05 (1)
>Народ, кто-нибудь сабжевую связку учил делать следующее: >NAS отдает Acct-Update пакет, freeradius выполняет запрос в базе, база возвращает на >это дело атрибут, freeradius передает этот атрибут NAS'у? Уже неделю бьюсь, >такое ощущение, что все, что делает freeradius - только лишь проверяет, >успешно ли выполнился запрос, а все, что было в ответе на >этот запрос, просто игнорирует. А что это за NAS, который понимает атрибут в ответ на свой аккаунтинг-пакет?
- freeradius + SQL, Beginner, 13:00 , 21-Фев-05 (2)
>Народ, кто-нибудь сабжевую связку учил делать следующее: >NAS отдает Acct-Update пакет, freeradius выполняет запрос в базе, база возвращает на >это дело атрибут, freeradius передает этот атрибут NAS'у? Уже неделю бьюсь, >такое ощущение, что все, что делает freeradius - только лишь проверяет, >успешно ли выполнился запрос, а все, что было в ответе на >этот запрос, просто игнорирует. запусти freeradius в режиме debug (кажется ключ -X) и посмотри что он принимает от NAS и что ему возвращает. Сразу будет видно где что передается.
- freeradius + SQL, John Smith, 19:27 , 21-Фев-05 (3)
IMHO смотреть то нужно как раз таки на стороне NAS freeradius отправлять то может и отправляет, а вот получает ли это дело NAS?
- freeradius + SQL, GateKeeper, 15:55 , 23-Фев-05 (4)
>IMHO смотреть то нужно как раз таки на стороне NAS >freeradius отправлять то может и отправляет, а вот получает ли это дело >NAS? Хинт: NAS - mpd с патчем для атрибута Drop-User. И он реально отрабатывает этот атрибут. radclient же показал, что freeradius этот атрибут, получив его из DB, в mpd не пересылает. Таким образом, атрибут дохнет в недрах freeradius.
- freeradius + SQL, Beginner, 08:18 , 24-Фев-05 (5)
>>IMHO смотреть то нужно как раз таки на стороне NAS >>freeradius отправлять то может и отправляет, а вот получает ли это дело >>NAS? > >Хинт: NAS - mpd с патчем для атрибута Drop-User. И он реально >отрабатывает этот атрибут. radclient же показал, что freeradius этот атрибут, получив >его из DB, в mpd не пересылает. Таким образом, атрибут дохнет >в недрах freeradius. Какой конкретно атрибут дохнет?
- freeradius + SQL, GateKeeper, 16:32 , 24-Фев-05 (6)
>Какой конкретно атрибут дохнет? Вышеуказанный Drop-User. Насколько я понял этот процесс, в freenibs за формирование этого атрибута от имени freeradius отвечал модуль rlm_nibs, здесь же этого модуля нет (и не нужен), и атрибут формируется еще в базе. Дальше радиуса этот атрибут не проходит.
- freeradius + SQL, GateKeeper, 18:25 , 26-Фев-05 (7)
Все. Проблема решена. Пришлось править исходники freeradius. Всем спасибо.
- freeradius + SQL, Beginner, 08:43 , 28-Фев-05 (8)
>Все. Проблема решена. Пришлось править исходники freeradius. Всем спасибо. Не пришлешь заплатку? Может пригодится, а то я тоже эту хрень сейчас ковыряю.
- freeradius + SQL, ak, 09:38 , 28-Фев-05 (9)
>>Все. Проблема решена. Пришлось править исходники freeradius. Всем спасибо. > >Не пришлешь заплатку? Может пригодится, а то я тоже эту хрень сейчас >ковыряю. а еще лучше - так выложить гденить..
думаю тема многим интересна
- freeradius + SQL, GateKeeper, 17:13 , 28-Фев-05 (10)
>а еще лучше - так выложить гденить.. > >думаю тема многим интересна За правильность использованных методов не отвечаю, но в моих условиях работает: diff -rc /usr/ports/net/freeradius/work/freeradius-1.0.2/src/modules/rlm_sql/rlm_sql.c /usr/local/src/freeradius/freeradius-1.0.2/src/modules/rlm_sql/rlm_sql.c *** /usr/ports/net/freeradius/work/freeradius-1.0.2/src/modules/rlm_sql/rlm_sql.c Thu Sep 30 18:54:22 2004 --- /usr/local/src/freeradius/freeradius-1.0.2/src/modules/rlm_sql/rlm_sql.c Mon Feb 28 17:05:45 2005 *************** *** 883,889 **** --- 883,892 ---- SQLSOCK *sqlsocket = NULL; VALUE_PAIR *pair; + VALUE_PAIR *check_tmp = NULL; + VALUE_PAIR *reply_tmp = NULL; SQL_INST *inst = instance; + int found = 0; int ret = RLM_MODULE_OK; int numaffected = 0; int acctstatustype = 0; *************** *** 958,963 **** --- 961,973 ---- ret = RLM_MODULE_FAIL; } else { + found = sql_getvpdata(inst, sqlsocket, &check_tmp, querystr, PW_VP_USERDATA); + if (found > 0) { + radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_check_query, request, sql_escape_func); + sql_getvpdata(inst, sqlsocket, &check_tmp, querystr, PW_VP_GROUPDATA); + radius_xlat(querystr, sizeof(querystr), inst->config->authorize_reply_query, request, sql_escape_func); + sql_getvpdata(inst, sqlsocket, &reply_tmp, querystr, PW_VP_USERDATA); + } numaffected = (inst->module->sql_affected_rows)(sqlsocket, inst->config); if (numaffected < 1) { *************** *** 1106,1111 **** --- 1116,1125 ---- } + pairxlatmove(request, &request->reply->vps, &reply_tmp); + pairxlatmove(request, &request->config_items, &check_tmp); + pairfree(&reply_tmp); + pairfree(&check_tmp); sql_release_socket(inst, sqlsocket); return ret;
|