BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 08 июл 2025, 23:24

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Не подставляется MAC адрес
СообщениеДобавлено: 16 авг 2012, 23:12 
Имеем скрипт предобработки запроса в котором мак адрес приходит в поле Calling_Station_Id и заменяется с octets в strings
Код:
@Override
   public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
   }

Пытаемся подставить мак адрес соответственно Прописали на устройстве
Код:
# Вендор атрибута, где хранится MAC-адрес
radius.macAddress.vendor=-1
radius.macAddress.type=31
#radius.macAddress.prefix=client-mac-address=

serv.macAddress.auto=1

Но ничего не происходит, что не так? в логах пусто.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 авг 2012, 15:10 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
MAC-адрес должен быть проставлен как опция в предобработке. Это производится в обработчиках, которые идут в сборке, сам функционал реализован в
ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler
Если делаете свой обработчик, то рекомендую наследоваться от него.
Получает данные он по конфигурации
Код:
radius.macAddress.vendor=<по умолчанию radius.vendor>
radius.macAddress.type=
radius.macAddress.prefix=<для cisco-avpair>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 авг 2012, 15:30 
Но так и есть все наследуется от extends AbstractRadiusProtocolHandler. Вот скрипт
Код:
package ru.bitel.bgbilling.modules.inet.dyn.device.radius;

import ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler;
import ru.bitel.bgbilling.kernel.network.radius.RadiusDictionary;
import ru.bitel.bgbilling.kernel.network.radius.RadiusPacket;
import ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandler;
import ru.bitel.bgbilling.modules.inet.access.sa.ProtocolHandlerAdapter;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetDevice;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetDeviceType;
import ru.bitel.common.Utils;
import ru.bitel.bgbilling.kernel.*;
import ru.bitel.common.sql.ConnectionSet;
import ru.bitel.bgbilling.kernel.network.tlv.Tlv;

import bitel.billing.common.TimeUtils;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.kernel.network.radius.MSUtils;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet;
import ru.bitel.bgbilling.kernel.network.radius.RadiusPacket;
import ru.bitel.bgbilling.kernel.network.radius.nas.Nas;
import ru.bitel.bgbilling.server.util.DefaultServerSetup;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.common.Utils;



public class MacadnCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler
{
@Override
   public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
   }
}

И в конфиге устройства прописано
Код:
radius.macAddress.vendor=-1
radius.macAddress.type=31

Но ничего не происходит


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 авг 2012, 16:27 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Код:
   public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );

      // обработка в классе-предке
      super.preprocessAccessRequest( request, response, connectionSet );
   }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 авг 2012, 16:45 
Прописали как вы сказали но все тихо.
Попробовали даже изменить AbstractRadiusProtocolHandler создали TestRadiusProtocolHandler скопировали весь код и в куске кода добавили свои записи

Код:
   @Override
   public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
       throws Exception
   {
                 RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
                 request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      // устанавливаем MAC-адрес
      setMacAddress( request );
      // устанавливаем состояние по наличию определенных атрибутов
      setStateFromAttributes( request );
   }

Но все также тихо, даже логи молчат


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 18 авг 2012, 22:34 
Нашли проблему, у нас запросы идут в EAP, отключили EAP и все заработало.
Можете исправить проблему чтобы и с EAP работало.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 21 авг 2012, 15:57 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Можно полный лог запросов EAP-сессии, от первого, до Access-Accept?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 21 авг 2012, 16:37 
Во вложении файл с логом


Вложения:
radius.log.rar [5.8 КБ]
Скачиваний: 203
Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 21 авг 2012, 17:28 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В EAP-TTLS настоящие данные, которым нужно доверять, передаются EAP-Message, зашифрованными.
С опциям (т.е. с MAC-адресом) вроде несложно поправить. С атрибутами (Calling-Station-Id) надо подумать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 22 авг 2012, 10:01 
А почему с атрибутами возникнет проблема. Например сейчас замечательно отрабатывает код preprocessAccessRequest в котором можно манипулировать с любыми полями радиуса


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 22 авг 2012, 13:12 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В EAP-TTLS тунеллируется пакет внутри пакета, и тот, что туннелируется, и используется для работы (и нужно использовать по протоколу EAP-TTLS).
А preprocessAccessRequest вызывается до туннелирования. Возможно нужно сделать еще один метод, который будет вызываться после туннелирования.
Т.е. при обычной работе он будет вызываться также, как prerpocessAccessRequest, а при EAP - один раз, перед Access-Accept (т.е. не будет вызываться для каждого запроса EAP сессии - Request-Challenge-Request-Challenge-Request-Accept, как вызывается preprocessAccessRequest).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 22 авг 2012, 14:24 
Теперь понятно.
если возможно то этот самый "еще один метод" был бы решением проблемы.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 09 ноя 2012, 19:57 
Скажите планируется ли создание еще одного метода вызываемого после туннелирования?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 28 ноя 2012, 15:53 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Сделали, обработчик активации сервисов должен имплементировать интерфейс ru.bitel.bgbilling.modules.inet.radius.RadiusAccessRequestHandler


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 29 ноя 2012, 09:54 
не пойму как это сделать.
Сейчас есть такой код, как его можно изменить?
Код:
   public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray()));
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
               super.preprocessAccessRequest( request, response, connectionSet ); - для авторизации по mac
   }
@Override
   public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray()));
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
      super.preprocessAccountingRequest( request, response, connectionSet ); - для авторизации по mac
   }

Нужно сделать так
Код:
   public void beforeAuthentication( ServerContext context, RadiusPacket request, RadiusPacket response )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray()));
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
               super.preprocessAccessRequest( request, response, connectionSet ); - для авторизации по mac
   }
@Override
   public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray()));
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
      super.preprocessAccountingRequest( request, response, connectionSet ); - для авторизации по mac
   }

И установить в обработчик процессора протокола?


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 29 ноя 2012, 13:41 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Да. Класс обработчика должен "implements RadiusAccessRequestHandler".
Т.е., если было
Код:
public class MyCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler
, нужно:
Код:
public class MyCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler, RadiusAccessRequestHandler

В методе beforeAuthentication вместо
Цитата:
super.preprocessAccessRequest( request, response, connectionSet ); - для авторизации по mac
super.preprocessAccessRequest( request, response, context.getConnectionSet() );

Или, чтобы не путатся с названиями методов, вместо super.preprocessAccessRequest можно вызывать напрямую то, что нужно:
Код:
// устанавливаем MAC-адрес
super.setMacAddress( request );
// устанавливаем состояние по наличию определенных атрибутов
super.setStateFromAttributes( request );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 29 ноя 2012, 13:57 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
И да, ошибся, не в обработчике активации сервисов, а в обработчике процессора протокола, конечно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 10 дек 2012, 15:12 
Не компилируется, выходит две ошибке в коде.
добавил
Код:
import ru.bitel.bgbilling.modules.inet.radius.RadiusAccessRequestHandler;

public class MacadnCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler, RadiusAccessRequestHandler

@Override
   public void beforeAuthentication( ServerContext context, RadiusPacket request, RadiusPacket response )
      throws Exception
   {
      RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray()));
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
      super.setMacAddress( request );
      super.setStateFromAttributes( request );
   }


1. в коде public void beforeAuthentication( ServerContext context, RadiusPacket request, RadiusPacket response ) - cannot find symbol ServerContext
2. в коде public class MacadnCoAProtocolHandler не вся ошибка видна но имеется запись на afterAuthentication


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 12 дек 2012, 16:41 
что-то никак не получается. По разному пробую но все равно получаю ошибку.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 12 дек 2012, 20:16 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Попробуйте так:
Код:
package ru.bitel.bgbilling.modules.inet.radius;

import java.util.Map;
import java.util.Set;

import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet;
import ru.bitel.bgbilling.kernel.network.radius.RadiusDictionary;
import ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker;
import ru.bitel.bgbilling.kernel.network.radius.RadiusPacket;
import ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler;
import ru.bitel.bgbilling.kernel.network.radius.RadiusSession;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServType;
import ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler;
import ru.bitel.common.Utils;

public class MacadnCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler, RadiusAccessRequestHandler
{
   @Override
   public void beforeAuthentication( ServerContext context, RadiusPacket request, RadiusPacket response )
       throws Exception
   {
      RadiusAttribute<?> CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
      super.setMacAddress( request );
      super.setStateFromAttributes( request );
   }

   @Override
   public void afterAuthorization( ServerContext conext, RadiusListenerWorker<InetNas> req, RadiusSession<InetNas, InetRadiusSessionParams> radiusSession, RadiusPacket request, RadiusPacket response )
       throws Exception
   {
   }

   @Override
   public boolean addResponseAttributes( ServerContext context, InetServType inetServType, InetServ inetServ, RadiusPacket response, String realm, Map<String, RadiusAttributeSet> realmAttributeMap, RadiusAttributeSet inetServAttributes, Set<Integer> optionSet )
       throws Exception
   {
      // return super.addResponseAttributes( context, inetServType, inetServ, response, realm, realmAttributeMap, inetServAttributes, optionSet );
      return false;
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 13 дек 2012, 10:50 
на этом куске кода выдает ошибки
Код:
@Override
   public void afterAuthorization( ServerContext conext, RadiusListenerWorker<InetNas> req, RadiusSession<InetNas, InetRadiusSessionParams> radiusSession, RadiusPacket request, RadiusPacket response )
       throws Exception
   {
   }

Что такие значения RadiusListenerWorker<InetNas> req, RadiusSession<InetNas, InetRadiusSessionParams> radiusSession не найдены


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 13 дек 2012, 16:48 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Случайно в системном пакете создал.
Код:
package ru.bitel.bgbilling.modules.dyn.inet.radius;

import java.util.Map;
import java.util.Set;

import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet;
import ru.bitel.bgbilling.kernel.network.radius.RadiusDictionary;
import ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker;
import ru.bitel.bgbilling.kernel.network.radius.RadiusPacket;
import ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler;
import ru.bitel.bgbilling.kernel.network.radius.RadiusSession;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServType;
import ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler;
import ru.bitel.bgbilling.modules.inet.radius.InetNas;
import ru.bitel.bgbilling.modules.inet.radius.InetRadiusSessionParams;
import ru.bitel.bgbilling.modules.inet.radius.RadiusAccessRequestHandler;
import ru.bitel.common.Utils;

public class MacadnCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler, RadiusAccessRequestHandler
{
   @Override
   public void beforeAuthentication( ServerContext context, RadiusPacket request, RadiusPacket response )
       throws Exception
   {
      RadiusAttribute<?> CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );
      request.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );
      super.setMacAddress( request );
      super.setStateFromAttributes( request );
   }

   @Override
   public void afterAuthorization( ServerContext conext, RadiusListenerWorker<InetNas> req, RadiusSession<InetNas, InetRadiusSessionParams> radiusSession, RadiusPacket request, RadiusPacket response )
       throws Exception
   {
   }

   @Override
   public boolean addResponseAttributes( ServerContext context, InetServType inetServType, InetServ inetServ, RadiusPacket response, String realm, Map<String, RadiusAttributeSet> realmAttributeMap, RadiusAttributeSet inetServAttributes, Set<Integer> optionSet )
       throws Exception
   {
      // return super.addResponseAttributes( context, inetServType, inetServ, response, realm, realmAttributeMap, inetServAttributes, optionSet );
      return false;
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 14 дек 2012, 01:06 
Частично заработал код. Теперь вылетает ошибка где (MacadnCoAProtocolHandler.java:58) это
Код:
request.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( CallingStationId.getDataAsByteArray() ) );


Вот такая ошибка
Код:
Common options: {macAddress=..?}
12-13/20:49:13 ERROR [rdsLstnr-p-8-t-5] InetRadiusProcessor -
java.lang.NullPointerException
        at ru.bitel.bgbilling.modules.inet.dyn.device.radius.MacadnCoAProtocolHandler.beforeAuthentication(MacadnCoAProtocolHandler.java:58)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authentication(InetRadiusProcessor.java:453)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authentication(InetRadiusProcessor.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusSession.authentication(RadiusSession.java:115)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPTTLSAuthenticator0.tunneledAuthentificating(EAPTTLSAuthenticator0.java:134)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPTLSAuthenticator.authenticate(EAPTLSAuthenticator.java:237)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPSession.handshake(EAPSession.java:187)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPSession.accessRequest0(EAPSession.java:91)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPSession.accessRequest(EAPSession.java:73)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequestImpl(RadiusProcessor.java:390)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.accessRequestImpl(InetRadiusProcessor.java:380)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.accessRequestImpl(InetRadiusProcessor.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequest(RadiusProcessor.java:377)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:58)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.processPacket(RadiusListenerWorker.java:213)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.runImpl(RadiusListenerWorker.java:135)
        at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
        at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
12-13/20:49:13  WARN [rdsLstnr-p-8-t-5] InetNas - MAC-address not found.
12-13/20:49:13  INFO [rdsLstnr-p-8-t-5] InetRadiusProcessor - [username=qqq] InetServ not found.
12-13/20:49:13  INFO [rdsLstnr-p-8-t-5] InetRadiusProcessor - [username=qqq] Authenticated as inetServId:4
12-13/20:49:14  INFO [rdsLstnr-p-8-t-5] InetRadiusProcessor - Return code=0
12-13/20:49:14  INFO [rdsLstnr-p-8-t-5] InetRadiusListenerWorker - RESPONSE:


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 14 дек 2012, 14:00 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В режиме DEBUG должен вывести перед ошибкой REQUEST_BEFORE_BEFOREAUTHENTICATION - это должен быть пакет внутри шифрованного туннеля. Покажите его вместе с обычным пакетом REQUEST_BEFORE_PREPROCESS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 14 дек 2012, 14:53 
как видно он только передает атрибут User-Name=qqq а вот почему-то другие атрибуты не показывает
Код:
12-14/14:48:54 DEBUG [rdsLstnr-p-8-t-1] InetRadiusProcessor - REQUEST_BEFORE_BEFOREAUTHENTICATION:
Packet type: null
Identifier: 0
Authenticator: {CE 6F CA 7E 9A B5 14 03 93 E8 C7 8A 5C A6 1E 2D}
Attributes:
  User-Name=qqq
  MS-CHAP2-Response={72 00 43 51 04 6F 22 F2 9A A6 2E 3E 0B 29 1E 2F 02 F4 00 00 00 00 00 00 00 00 1D E8 62 CD 26 57 D9 2A 12 14 00 3C EA BA 34 56 4F DC 42 9B B0 A3 E1 CF}
  MS-CHAP-Challenge={43 51 04 6F 22 F2 9A A6 2E 3E 0B 29 1E 2F 02 F4}
12-14/14:48:54 ERROR [rdsLstnr-p-8-t-1] InetRadiusProcessor -
java.lang.NullPointerException
        at ru.bitel.bgbilling.modules.inet.dyn.device.radius.MacadnCoAProtocolHandler.beforeAuthentication(MacadnCoAProtocolHandler.java:58)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authentication(InetRadiusProcessor.java:453)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.authentication(InetRadiusProcessor.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusSession.authentication(RadiusSession.java:115)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPTTLSAuthenticator0.tunneledAuthentificating(EAPTTLSAuthenticator0.java:134)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPTLSAuthenticator.authenticate(EAPTLSAuthenticator.java:237)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPSession.handshake(EAPSession.java:187)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPSession.accessRequest0(EAPSession.java:91)
        at ru.bitel.bgbilling.kernel.network.radius.eap.EAPSession.accessRequest(EAPSession.java:73)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequestImpl(RadiusProcessor.java:390)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.accessRequestImpl(InetRadiusProcessor.java:380)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.accessRequestImpl(InetRadiusProcessor.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequest(RadiusProcessor.java:377)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:58)
        at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:1)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.processPacket(RadiusListenerWorker.java:213)
        at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.runImpl(RadiusListenerWorker.java:135)


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 дек 2012, 14:12 
Получается другие атрибуты он не видит.


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 дек 2012, 14:26 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Придется изменить интерфейс, в метод beforeAuthentication добавить аргумент, но его вроде бы только в тестовых пока используют.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 дек 2012, 14:34 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Со следующем билдом можно будет сделать так:
Код:
package ru.bitel.bgbilling.modules.dyn.inet.radius;

import java.util.Map;
import java.util.Set;

import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet;
import ru.bitel.bgbilling.kernel.network.radius.RadiusDictionary;
import ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker;
import ru.bitel.bgbilling.kernel.network.radius.RadiusPacket;
import ru.bitel.bgbilling.kernel.network.radius.RadiusProtocolHandler;
import ru.bitel.bgbilling.kernel.network.radius.RadiusSession;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServType;
import ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusProtocolHandler;
import ru.bitel.bgbilling.modules.inet.radius.InetNas;
import ru.bitel.bgbilling.modules.inet.radius.InetRadiusSessionParams;
import ru.bitel.bgbilling.modules.inet.radius.RadiusAccessRequestHandler;
import ru.bitel.common.Utils;

public class MacadnCoAProtocolHandler
    extends AbstractRadiusProtocolHandler
    implements RadiusProtocolHandler, RadiusAccessRequestHandler
{
   @Override
   public void beforeAuthentication( ServerContext context, RadiusListenerWorker<InetNas> req, RadiusSession<InetNas, InetRadiusSessionParams> radiusSession,
                                     RadiusPacket tunneledRequest, RadiusPacket response )
       throws Exception
   {
      RadiusPacket request = req.getRequest();
      RadiusAttribute<?> callingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
      
      tunneledRequest.setStringAttribute( -1, RadiusDictionary.Calling_Station_Id, Utils.bytesToHexString( callingStationId.getDataAsByteArray() ) );
      tunneledRequest.setStringAttribute( -1, RadiusDictionary.User_Name, Utils.bytesToHexString( callingStationId.getDataAsByteArray() ) );
      tunneledRequest.setIntAttribute( -1, RadiusDictionary.NAS_Port, 0 );

      super.setMacAddress( request );
      super.setStateFromAttributes( request );
   }

   @Override
   public void afterAuthorization( ServerContext conext, RadiusListenerWorker<InetNas> req, RadiusSession<InetNas, InetRadiusSessionParams> radiusSession,
                                   RadiusPacket tunneledRequest, RadiusPacket response )
       throws Exception
   {
   }

   @Override
   public boolean addResponseAttributes( ServerContext context, InetServType inetServType, InetServ inetServ, RadiusPacket response, String realm,
                                         Map<String, RadiusAttributeSet> realmAttributeMap, RadiusAttributeSet inetServAttributes, Set<Integer> optionSet )
       throws Exception
   {
      // return super.addResponseAttributes( context, inetServType, inetServ, response, realm, realmAttributeMap, inetServAttributes, optionSet );
      return false;
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 дек 2012, 14:36 
Ок. как выйдет билд проверим


Вернуться к началу
  
 
 Заголовок сообщения: Re: Не подставляется MAC адрес
СообщениеДобавлено: 17 дек 2012, 15:49 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Выложили.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.057s | 45 Queries | GZIP : On ]