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
Modifier and TypeClassDescriptionstatic interface
RadiusProcessor.ConnectionIterator<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,
N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C, ?, ?>> -
Field Summary
Modifier and TypeFieldDescriptionfinal bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
final bitel.billing.server.util.RequestCounter
protected boolean
protected boolean
protected boolean
protected boolean
protected boolean
protected final String
protected final Setup
Fields inherited from class ru.bitel.bgbilling.kernel.network.processor.Processor
applicationId, moduleId
-
Constructor Summary
ConstructorDescriptionRadiusProcessor
(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 TypeMethodDescriptionvoid
accessRequest
(RadiusListenerWorker<N> req, N nas, int logRecordId, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Обработка Acсess-Request.protected void
accessRequestImpl
(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, Date date, RadiusSession<N, P> radiusSession, int logRecordId, ConnectionSet connectionSet) protected C
accounting
(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 void
addToLog
(Date date, RadiusPacket packet, int recordId) protected void
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)
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) Авторизация клиента.
Вызывается после того как логин найден, пароль проверен.
На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.abstract String
executeCommand
(String command, String params) int
int
int
int
int
int
int
int
int
protected N
getNas
(SocketAddress clientAddress, RadiusPacket packet) Получение наса по радиус пакету.
Сначала нас ищется по атрибуту Nas-Identifier, потом Nas-Ip-Address.abstract String
int
int
protected int
insertToLog
(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 void
postprocessAccessRequest
(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Постобработка Access-Request По умолчанию - обработка скриптом предобработки наса.protected void
postprocessAccountingRequest
(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Постобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса.protected void
preprocessAccessRequest
(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Предобработка Access-Request По умолчанию - обработка скриптом предобработки наса.protected void
preprocessAccountingRequest
(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) Предобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса.void
processConnections
(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()
-