Обработчик протокола позволяет делать некоторую дополнительную логику при обработке Radius-запросов - например, изменить RADIUS-запрос перед его обработкой системой или установить дополнительные опции, которые поменяют логику обработки запроса/.
Обработчик создается в динамическом коде( ссылка) и имеет имеет следующий интерфейс:
Блок кода | ||
---|---|---|
| ||
/** * Обработчик процессора протокола. * @see RadiusProtocolHandler * */ public interface ProtocolHandler extends RadiusProtocolHandler { public void init( Setup setup, int moduleId, VoiceDevice voiceDevice, VoiceDeviceType voiceDeviceType, ParameterMap config ) throws Exception; } |
...
Так же обработчик расширяет следующий интерфейс:
Блок кода | ||
---|---|---|
| ||
/**
* Обработчик RADIUS-запросов
*/
public interface RadiusProtocolHandler
{
/**
* Предобработка RADIUS-запроса Access-Request
* @param request
* @param response
* @param connectionSet
* @throws Exception
*/
public void preprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws Exception;
/**
* Постобработка RADIUS-запроса Access-Request
* @param request
* @param response
* @param connectionSet
* @throws Exception
*/
public void postprocessAccessRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws Exception;
/**
* Предобработка RADIUS-запроса Accounting-Request
* @param request
* @param response
* @param connectionSet
* @throws Exception
*/
public void preprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws Exception;
/**
* Постобработка RADIUS-запроса Accounting-Request
* @param request
* @param response
* @param connectionSet
* @throws Exception
*/
public void postprocessAccountingRequest( RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet )
throws Exception;
}
|
Параметры, заданные скриптом, более приоритетные, чем взятые из конфигурации. Тут можно выставить такие параметры:
Тип звонка - request.setOption( VoiceNas.CALL_TYPE, VoiceSession.CALL_TYPE_OUTGOING );
Аккаунт оператора - request..setOption( VoiceNas.OPERATOR_ACCOUNT, accountId);