Page tree
Skip to end of metadata
Go to start of metadata

Обработчик протокола позволяет делать некоторую дополнительную логику при обработке Radius-запросов -  например, изменить RADIUS-запрос перед его обработкой системой или установить дополнительные опции, которые поменяют логику обработки запроса.

Обработчик создается в динамическом коде( ссылка) и имеет имеет следующий интерфейс:

/**
 * Обработчик процессора протокола.
 * @see RadiusProtocolHandler
 *
 */
public interface ProtocolHandler
	extends RadiusProtocolHandler
{
	public void init( Setup setup, int moduleId, VoiceDevice voiceDevice, VoiceDeviceType voiceDeviceType, ParameterMap config )
		throws Exception;
}

init- это метод инициализации, который вызывается при создании обработчика.

Так же обработчик расширяет следующий интерфейс:

/**
 * Обработчик 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);

  • No labels