Class RadiusProcessor<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C,?,?>,P>    
java.lang.Object
ru.bitel.bgbilling.kernel.network.processor.Processor
ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor<C,N,P>  
- Type Parameters:
 N-P-
- Direct Known Subclasses:
 AbstractRadiusProcessor
public abstract class RadiusProcessor<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C,?,?>,P>    
extends ru.bitel.bgbilling.kernel.network.processor.Processor
Радиус процессор, минимальный набор, основная архитектура обработки.
- 
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceRadiusProcessor.ConnectionIterator<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C, ?, ?>>  - 
Field Summary
FieldsModifier and TypeFieldDescriptionfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterfinal bitel.billing.server.util.RequestCounterprotected booleanprotected booleanprotected booleanprotected booleanprotected booleanprotected final Stringprotected final SetupFields inherited from class ru.bitel.bgbilling.kernel.network.processor.Processor
applicationId, moduleId - 
Constructor Summary
ConstructorsConstructorDescriptionRadiusProcessor(Setup setup, String module, int mid, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C, N> nasList) Deprecated.RadiusProcessor(Setup setup, String module, int moduleId, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C, N> nasList, boolean loadNasList, boolean linkReload)  - 
Method Summary
Modifier and TypeMethodDescriptionvoidaccessRequest(RadiusListenerWorker<N> req, N nas, int logRecordId, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Обработка Acсess-Request.protected voidaccessRequestImpl(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, Date date, RadiusSession<N, P> radiusSession, int logRecordId, ConnectionSet connectionSet) protected Caccounting(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, Date time) Обработка Accounting-Request по умолчанию.accountingRequest(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, Date time) Обработка пакета Accounting-Requestprotected voidaddToLog(Date date, RadiusPacket packet, int recordId) protected voidprotected abstract intauthentication(RadiusListenerWorker<?> req, N nas, RadiusSession<N, P> session, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id) Обработка Access-Request разделяется на два этапа - аутентификацию и авторизацию.
В данном методе должна проходить аутентификация.
Этот метод вызывается один раз за радиус сессию, т.е. сразу на Access-Request, если сессии нет,
или в конце обработки eap запросов.
Метод вызывается изRadiusSession
Внутри логики должен найтись логин, провериться пароль, и, если все нормально, вызватьсяauthorization(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, int, ContractManager, Contract, Object, String)protected abstract intauthorization(RadiusListenerWorker<?> req, N nas, RadiusSession<N, P> radiusSession, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id, ContractManager contractM, Contract contract, Object login, String userName) Авторизация клиента.
Вызывается после того как логин найден, пароль проверен.
На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.abstract StringexecuteCommand(String command, String params) intintintintintintintintintprotected NgetNas(SocketAddress clientAddress, RadiusPacket packet) Получение наса по радиус пакету.
Сначала нас ищется по атрибуту Nas-Identifier, потом Nas-Ip-Address.abstract Stringintintprotected intinsertToLog(Date date, RadiusPacket packet) static RadiusProcessor<?,ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?, ?, ?>, ?> newInstance(Class<? extends RadiusProcessor> clazz, Setup setup, int moduleId) protected abstract RadiusSession<N,P> newRadiusSession(Connection con, N nas, RadiusPacket request, RadiusSession.State state) Создание новой радиус сессии.
Кроме всего прочего вызов данного метода означает что это первый запрос сессии.protected voidpostprocessAccessRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Постобработка Access-Request По умолчанию - обработка скриптом предобработки наса.protected voidpostprocessAccountingRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Постобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса.protected voidpreprocessAccessRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Предобработка Access-Request По умолчанию - обработка скриптом предобработки наса.protected voidpreprocessAccountingRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Предобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса.voidprocessConnections(RadiusProcessor.ConnectionIterator<C, N> iterator) protected voidПерезагрузка конфигурации сервера + модуля.protected voidКорректная перезагрузка насов (конфига, инспекторов и т.п.). 
- 
Field Details
- 
accountingStartCounter
public final bitel.billing.server.util.RequestCounter accountingStartCounter - 
accountingStopCounter
public final bitel.billing.server.util.RequestCounter accountingStopCounter - 
accountingUpdateCounter
public final bitel.billing.server.util.RequestCounter accountingUpdateCounter - 
authenticationAcceptCounter
public final bitel.billing.server.util.RequestCounter authenticationAcceptCounter - 
authenticationRejectCounter
public final bitel.billing.server.util.RequestCounter authenticationRejectCounter - 
authenticationIgnoreCount
public final bitel.billing.server.util.RequestCounter authenticationIgnoreCount - 
accountingIgnoreCount
public final bitel.billing.server.util.RequestCounter accountingIgnoreCount - 
accountingUpdateIgnoreCount
public final bitel.billing.server.util.RequestCounter accountingUpdateIgnoreCount - 
antispamIgnoreCount
public final bitel.billing.server.util.RequestCounter antispamIgnoreCount - 
setup
 - 
module
 - 
nasList
 - 
forwardAfterPreprocess
protected volatile boolean forwardAfterPreprocess - 
forwardAfterProcess
protected volatile boolean forwardAfterProcess - 
forwardAccessRequest
protected volatile boolean forwardAccessRequest - 
forwardAccessAnswer
protected volatile boolean forwardAccessAnswer - 
forwardAccountingResponse
protected volatile boolean forwardAccountingResponse 
 - 
 - 
Constructor Details
- 
RadiusProcessor
@Deprecated public RadiusProcessor(Setup setup, String module, int mid, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C, N> nasList) throws ru.bitel.bgbilling.common.BGExceptionDeprecated.- Throws:
 ru.bitel.bgbilling.common.BGException
 - 
RadiusProcessor
public RadiusProcessor(Setup setup, String module, int moduleId, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C, N> nasList, boolean loadNasList, boolean linkReload) throws ru.bitel.bgbilling.common.BGException- Throws:
 ru.bitel.bgbilling.common.BGException
 
 - 
 - 
Method Details
- 
reloadConfig
protected void reloadConfig()Перезагрузка конфигурации сервера + модуля. - 
reloadNasList
protected void reloadNasList()Корректная перезагрузка насов (конфига, инспекторов и т.п.). - 
afterNasListReload
protected void afterNasListReload() - 
getNas
Получение наса по радиус пакету.
Сначала нас ищется по атрибуту Nas-Identifier, потом Nas-Ip-Address.- Parameters:
 clientAddress-packet-- Returns:
 
 - 
getNasList
 - 
connections
 - 
executeCommand
 - 
processConnections
 - 
preprocessAccessRequest
protected void preprocessAccessRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Предобработка Access-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.- Parameters:
 nas-request-response-connectionSet- экземпляры соединений с БД: master, slave, trash
 - 
preprocessAccountingRequest
protected void preprocessAccountingRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Предобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.- Parameters:
 nas-request-response-connectionSet- экземпляры соединений с БД: master, slave, trash
 - 
postprocessAccessRequest
protected void postprocessAccessRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Постобработка Access-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.- Parameters:
 nas-request-response-connectionSet- экземпляры соединений с БД: master, slave, trash
 - 
postprocessAccountingRequest
protected void postprocessAccountingRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Постобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.- Parameters:
 nas-request-response-connectionSet- экземпляры соединений с БД: master, slave, trash
 - 
insertToLog
 - 
addToLog
 - 
accessRequest
public void accessRequest(RadiusListenerWorker<N> req, N nas, int logRecordId, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) throws ru.bitel.bgbilling.common.BGException Обработка Acсess-Request. Вызывается изRadiusListenerWorker- Parameters:
 req-nas-logRecordId-request-response-connectionSet- экземпляры соединений с БД: master, slave, trash- Throws:
 ru.bitel.bgbilling.common.BGException
 - 
accessRequestImpl
protected void accessRequestImpl(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, Date date, RadiusSession<N, P> radiusSession, int logRecordId, ConnectionSet connectionSet)  - 
newRadiusSession
protected abstract RadiusSession<N,P> newRadiusSession(Connection con, N nas, RadiusPacket request, RadiusSession.State state) Создание новой радиус сессии.
Кроме всего прочего вызов данного метода означает что это первый запрос сессии.- Parameters:
 con-nas- TODOrequest-state-- Returns:
 
 - 
accountingRequest
public C accountingRequest(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, Date time) Обработка пакета Accounting-Request- Parameters:
 req- TODOnas-request-response-connectionSet- экземпляры соединений с БД: master, slave, trashtime-
 - 
authentication
protected abstract int authentication(RadiusListenerWorker<?> req, N nas, RadiusSession<N, P> session, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id) Обработка Access-Request разделяется на два этапа - аутентификацию и авторизацию.
В данном методе должна проходить аутентификация.
Этот метод вызывается один раз за радиус сессию, т.е. сразу на Access-Request, если сессии нет,
или в конце обработки eap запросов.
Метод вызывается изRadiusSession
Внутри логики должен найтись логин, провериться пароль, и, если все нормально, вызватьсяauthorization(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, int, ContractManager, Contract, Object, String) - 
authorization
protected abstract int authorization(RadiusListenerWorker<?> req, N nas, RadiusSession<N, P> radiusSession, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id, ContractManager contractM, Contract contract, Object login, String userName) Авторизация клиента.
Вызывается после того как логин найден, пароль проверен.
На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.- Parameters:
 nas-radiusSession-request-response-connectionSet- экземпляры соединений с БД: master, slave, trashlog_record_id-contract-login-userName-- Returns:
 - See Also:
 
 - 
accounting
protected C accounting(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, Date time) Обработка Accounting-Request по умолчанию.- Parameters:
 req-nas-request-response-connectionSet- экземпляры соединений с БД: master, slave, trash
 - 
newInstance
public static RadiusProcessor<?,ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?, newInstance?, ?>, ?> (Class<? extends RadiusProcessor> clazz, Setup setup, int moduleId) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException  - 
getConnectionList
 - 
getStatus
 - 
getActiveConnectionsCount
public int getActiveConnectionsCount() - 
getSuspendedConnectionCount
public int getSuspendedConnectionCount() - 
getStoppedConnectionCount
public int getStoppedConnectionCount() - 
getAccountingStartPerMinute
public int getAccountingStartPerMinute() - 
getAccountingStopPerMinute
public int getAccountingStopPerMinute() - 
getAccountingUpdatePerMinute
public int getAccountingUpdatePerMinute() - 
getAccessAcceptPerMinute
public int getAccessAcceptPerMinute() - 
getAccessRejectPerMinute
public int getAccessRejectPerMinute() - 
getAccessRequestIgnorePerMinute
public int getAccessRequestIgnorePerMinute() - 
getAccountingUpdateIgnorePerMinute
public int getAccountingUpdateIgnorePerMinute() - 
getAntispamIgnorePerMinute
public int getAntispamIgnorePerMinute() 
 -