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.base.server.logger.BGLogger
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
Внутри логики должен найтись логин, провериться пароль, и, если все нормально, вызватьсяinvalid reference
#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, 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Корректная перезагрузка насов (конфига, инспекторов и т.п.).Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
error, error, error, getLogger, logError, logError, warn
-
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
Внутри логики должен найтись логин, провериться пароль, и, если все нормально, вызватьсяinvalid reference
#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, 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()
-