The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
freeradius + SQL, !*! GateKeeper, 20-Фев-05, 17:06  [смотреть все]
Народ, кто-нибудь сабжевую связку учил делать следующее:
NAS отдает Acct-Update пакет, freeradius выполняет запрос в базе, база возвращает на это дело атрибут, freeradius передает этот атрибут NAS'у? Уже неделю бьюсь, такое ощущение, что все, что делает freeradius - только лишь проверяет, успешно ли выполнился запрос, а все, что было в ответе на этот запрос, просто игнорирует.
  • 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;




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру