Код:
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 ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute;
import ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.ParameterMap;
import ru.bitel.common.sql.ConnectionSet;
import ru.bitel.bgbilling.modules.inet.radius.RadiusAccessRequestHandler;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext;
import java.sql.*;
import java.util.Map;
import java.util.Set;
import ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker;
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;
public class MacadnCoAProtocolHandler
extends AbstractRadiusProtocolHandler
//implements RadiusProtocolHandler
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.addAttributes( request );
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( tunneledRequest );
super.setStateFromAttributes( tunneledRequest );
}
@Override
public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws Exception
{
RadiusAttribute CallingStationId = request.getAttribute( -1, RadiusDictionary.Calling_Station_Id );
if( CallingStationId!=null )
{
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 );
}
}
@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 false;
}
}