Настройка InetAccess сервера
В конфигурации модуля присутствует параметр accounting.deviceTypeIds, определяющий коды типов устройств, которые являются Accounting-серверами. Поиск устройств начинается с корневого устройства Access-сервера, включительно. Т.к. одно и то же устройство может быть и Access и Accounting сервером. Таким образом, "под" одним устройством Access-сервера может располагаться несколько устройств Accounting-серверов.
Пример типовой настройки inet-access.xml, которая идет в дистрибутиве:
Код
<application context="access">
<!-- Уникальное имя приложения -->
<param name="app.name" value="InetAccess"/>
<!-- Уникальный числовой id приложения -->
<param name="app.id" value=""/>
<!-- Параметры подключения к БД -->
<param name="db.driver" value="com.mysql.jdbc.Driver"/>
<param name="db.url" value="jdbc:mysql://127.0.0.1/abilling?useUnicode=true&characterEncoding=UTF-8&allowUrlInLocalInfile=true&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&queryTimeoutKillsConnection=true&connectTimeout=1000"/>
<param name="db.user" value="bill"/>
<param name="db.pswd" value="abilling"/>
<param name="db.validationTimeout" value="10"/>
<!-- Параметры подключения к MQ -->
<param name="mq.url" value="failover:(tcp://localhost:61616)"/>
<param name="mq.user" value="bill"/>
<param name="mq.pswd" value="abilling"/>
<!-- id модуля -->
<param name="moduleId" value=""/>
<!-- id корневого устройства -->
<param name="rootDeviceId" value=""/>
<!-- Внутренняя переменная приложения, не изменять -->
<param name="commonIdentifierName" value="rootDeviceId"/>
<!-- Параметры сохранения логов данных -->
<!-- Директория, в которую сохранять radius логи -->
<param name="datalog.radius.dir" value="data/radius" />
<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
<param name="datalog.radius.chunk.size" value="262144" />
<!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib -->
<param name="datalog.radius.compression.type" value="1" />
<!-- Директория, в которую сохранять flow логи -->
<param name="datalog.dhcp.dir" value="data/dhcp" />
<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
<param name="datalog.dhcp.chunk.size" value="131072" />
<!-- Сжимать flow логи: 0 - не сжимать, 1 - zlib -->
<param name="datalog.dhcp.compression.type" value="1" />
<!-- Создание Access -->
<bean name="access" class="ru.avantis.abilling.modules.inet.access.Access" />
<context name="radius">
<!-- Cоздание процессора RADIUS-пакетов -->
<bean name="radiusProcessor" class="ru.avantis.abilling.modules.inet.radius.InetRadiusProcessor"/>
<!-- Служебный ScheduledExecutorService, необходимый для dataLogger -->
<scheduledExecutorService name="hrlydtlggr" corePoolSize="1" />
<!-- Cоздание dataLogger, сохраняющего radius-пакеты на диск (только один экземпляр) -->
<bean name="radiusDataLogger" class="ru.avantis.abilling.modules.inet.radius.RadiusHourlyDataLogger">
<param name="scheduledExecutor">hrlydtlggr</param>
</bean>
<!-- Cоздание слушателя RADIUS-пакетов на порту с передачей ему процессора и dataLogger -->
<bean name="radiusListener" class="ru.avantis.abilling.modules.inet.radius.InetRadiusListener">
<constructor>
<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
<param name="host" value=""/>
<!-- Порт, на котором будет открыт сокет -->
<param name="port" value="1812"/>
<!-- Буфер приема на поток -->
<param name="recvBufferSize">512 * 1024</param>
<!-- Рекомендуемый SO_RCVBUF сокета -->
<param name="soRCVBUF"></param>
<!-- Количество потоков-обработчиков -->
<param name="threadCount">10</param>
<!-- Максимальное количество пакетов в очереди на обработку -->
<param name="maxQueueSize">200</param>
<!-- Передача процессора -->
<param name="processor">radiusProcessor</param>
<!-- Режим работы, RadiusListener.Mode.authentication -->
<param name="mode">RadiusListener.Mode.authentication</param>
<!-- Передача dataLogger -->
<param name="dataLogger">radiusDataLogger</param>
</constructor>
</bean>
</context>
<context name="dhcp">
<!-- Cоздание процессора dhcp-пакетов -->
<bean name="dhcpProcessor" class="ru.avantis.abilling.modules.inet.dhcp.InetDhcpProcessor"/>
<scheduledExecutorService name="hrlydtlggr" corePoolSize="1" />
<!-- Cоздание dataLogger, сохраняющего DHCP-пакеты на диск -->
<bean name="dhcpDataLogger" class="ru.avantis.abilling.modules.inet.dhcp.DhcpHourlyDataLogger">
<param name="scheduledExecutor">hrlydtlggr</param>
</bean>
<!-- Cоздание слушателя dhcp-пакетов на порту с передачей ему процессора и dataLogger -->
<bean name="dhcpListener" class="ru.avantis.abilling.kernel.network.dhcp.DhcpListener">
<constructor>
<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
<param name="host" value=""/>
<!-- Порт, на котором будет открыт сокет -->
<param name="port" value="10067"/>
<!-- Буфер приема на поток -->
<param name="recvBufferSize">512 * 1024</param>
<!-- Количество потоков-обработчиков -->
<param name="threadCount">10</param>
<!-- Максимальное количество пакетов в очереди на обработку -->
<param name="maxQueueSize">200</param>
<!-- Передача процессора -->
<param name="processor">dhcpProcessor</param>
<!-- Передача dataLogger -->
<param name="dataLogger">dhcpDataLogger</param>
</constructor>
</bean>
</context>
</application>