Обработчик протокола radius, подменяющий атрибуты

Материал из BiTel WiKi

Перейти к: навигация, поиск

Код обработчика:

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 )  );
		}
	}
}
Личные инструменты