Обработчик протокола radius, подменяющий атрибуты
Материал из BiTel WiKi
Версия от 10:44, 20 декабря 2012; Stark (Обсуждение | вклад)
Код обработчика:
package ru.maglan.bgbilling.modules.inet.dyn.device.cisco; import ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute; 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.bgbilling.server.util.Setup; import ru.bitel.common.ParameterMap; import ru.bitel.common.sql.ConnectionSet; import bitel.billing.server.radius.RadiusStandartAttributes; public class CiscoProtocolHandler extends ProtocolHandlerAdapter implements ProtocolHandler { @Override public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet3 ) throws Exception { addCalledAndCalling( request ); } @Override public void init( Setup setup1, int int2, InetDevice inetDevice3, InetDeviceType inetDeviceType4, ParameterMap parameterMap5 ) throws Exception { } @Override public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet ) throws Exception { addCalledAndCalling( request ); } private void addCalledAndCalling( RadiusPacket request ) { String clientEndpoint = request.getStringAttribute( -1, 66, null ); String serverEndpoint = request.getStringAttribute( -1, 67, null ); if( clientEndpoint != null ) { request.setAttribute( new RadiusAttribute.RadiusAttributeString( -1, RadiusStandartAttributes.Calling_Station_Id, clientEndpoint ) ); } if( serverEndpoint != null ) { request.setAttribute( new RadiusAttribute.RadiusAttributeString( -1, RadiusStandartAttributes.Called_Station_Id, serverEndpoint ) ); } } }