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 Classes Modifier and Type Class Description static 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
Fields Modifier and Type Field Description bitel.billing.server.util.RequestCounter
accountingIgnoreCount
bitel.billing.server.util.RequestCounter
accountingStartCounter
bitel.billing.server.util.RequestCounter
accountingStopCounter
bitel.billing.server.util.RequestCounter
accountingUpdateCounter
bitel.billing.server.util.RequestCounter
accountingUpdateIgnoreCount
bitel.billing.server.util.RequestCounter
antispamIgnoreCount
bitel.billing.server.util.RequestCounter
authenticationAcceptCounter
bitel.billing.server.util.RequestCounter
authenticationIgnoreCount
bitel.billing.server.util.RequestCounter
authenticationRejectCounter
protected boolean
forwardAccessAnswer
protected boolean
forwardAccessRequest
protected boolean
forwardAccountingResponse
protected boolean
forwardAfterPreprocess
protected boolean
forwardAfterProcess
protected java.lang.String
module
protected ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N>
nasList
protected Setup
setup
Fields inherited from class ru.bitel.bgbilling.kernel.network.processor.Processor
applicationId, moduleId
-
Constructor Summary
Constructors Constructor Description RadiusProcessor(Setup setup, java.lang.String module, int mid, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N> nasList)
Deprecated.RadiusProcessor(Setup setup, java.lang.String module, int moduleId, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N> nasList, boolean loadNasList, boolean linkReload)
-
Method Summary
Modifier and Type Method Description void
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, java.util.Date date, RadiusSession<N,P> radiusSession, int logRecordId, ConnectionSet connectionSet)
protected C
accounting(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, java.util.Date time)
Обработка Accounting-Request по умолчанию.C
accountingRequest(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, java.util.Date time)
Обработка пакета Accounting-Requestprotected void
addToLog(java.util.Date date, RadiusPacket packet, int recordId)
protected void
afterNasListReload()
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, java.lang.Object login, java.lang.String userName)
Авторизация клиента.
Вызывается после того как логин найден, пароль проверен.
На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.java.lang.Iterable<C>
connections()
abstract java.lang.String
executeCommand(java.lang.String command, java.lang.String params)
int
getAccessAcceptPerMinute()
int
getAccessRejectPerMinute()
int
getAccessRequestIgnorePerMinute()
int
getAccountingStartPerMinute()
int
getAccountingStopPerMinute()
int
getAccountingUpdateIgnorePerMinute()
int
getAccountingUpdatePerMinute()
int
getActiveConnectionsCount()
int
getAntispamIgnorePerMinute()
protected java.util.List<C>
getConnectionList()
protected N
getNas(java.net.SocketAddress clientAddress, RadiusPacket packet)
Получение наса по радиус пакету.
Сначала нас ищется по атрибуту Nas-Identifier, потом Nas-Ip-Address.ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N>
getNasList()
abstract java.lang.String
getStatus()
int
getStoppedConnectionCount()
int
getSuspendedConnectionCount()
protected int
insertToLog(java.util.Date date, RadiusPacket packet)
static RadiusProcessor<?,ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?,?,?>,?>
newInstance(java.lang.Class<? extends RadiusProcessor> clazz, Setup setup, int moduleId)
protected abstract RadiusSession<N,P>
newRadiusSession(java.sql.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
reloadConfig()
Перезагрузка конфигурации сервера + модуля.protected void
reloadNasList()
Корректная перезагрузка насов (конфига, инспекторов и т.п.).Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
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
protected final java.lang.String 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, java.lang.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, java.lang.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
public abstract java.lang.String executeCommand(java.lang.String command, java.lang.String params) -
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, java.util.Date date, RadiusSession<N,P> radiusSession, int logRecordId, ConnectionSet connectionSet) -
newRadiusSession
protected abstract RadiusSession<N,P> newRadiusSession(java.sql.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, java.util.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, java.lang.Object login, java.lang.String userName)Авторизация клиента.
Вызывается после того как логин найден, пароль проверен.
На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.- Parameters:
nas
-radiusSession
-request
-response
-connectionSet
- экземпляры соединений с БД: master, slave, trashlog_record_id
-contract
-login
-userName
-- Returns:
- See Also:
authentication(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, int)
-
accounting
protected C accounting(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, java.util.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(java.lang.Class<? extends RadiusProcessor> clazz, Setup setup, int moduleId) throws java.lang.SecurityException, java.lang.NoSuchMethodException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException- Throws:
java.lang.SecurityException
java.lang.NoSuchMethodException
java.lang.IllegalArgumentException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
-
getConnectionList
-
getStatus
public abstract java.lang.String 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()
-