|| Device | SoftWLC | || DocMainTitle | Руководство администратора | || DocTitle3 | Eltex Portal | || fwversion | 1.17 | || issueDate | 23.07.2020 | |
В состав SoftWLC включен WEB-портал, с помощью которого реализуется модель авторизации hotspot-клиентов. Неизвестный системе пользователь может свободно (без получения заранее логина и пароля) подключиться к точке доступа, но при попытке выйти в интернет через браузер пользователь перенаправляется на страницу WEB-портала, на которой может по выбору пройти процедуру авторизации или получения авторизационных данных (например, с помощью SMS). В процессе выполнения процедур авторизации абонент может наблюдать рекламные сообщения в виде баннеров, кастомизированных в соответствии с требованиями оператора.
Данный сервис используется для отображения страниц виртуальных порталов и проведения регистрации и авторизации Wi-Fi пользователей, подключающихся на точках доступа Eltex или при помощи ESR/BRAS.
Установка выполняется при помощи пакета eltex-portal.
Во время инициализации сервиса eltex-portal и до момента пока сервис полностью не загрузится, вместо портала будет отображаться страница "Warming up". Что свидетельствует о том, что портал еще в процессе инициализации, а модули сервиса находятся в процессе конфигурации. После того как сервис eltex-portal полностью загрузился, будет произведен автоматический редирект пользователя на главную страницу портала.
Пример страницы инициализации портала:
Действие | Команда | Ответ | |||||
---|---|---|---|---|---|---|---|
Проверка состояния |
|
| |||||
Запуск сервиса |
|
| |||||
Остановка сервиса |
|
| |||||
Перезапуск сервиса |
|
|
основной конфигурационный файл. Пример дефолтной конфигурации:
portal { defaultRedirectUrl = "http://eltex-co.ru" scheduler { tariffCheckerPeriod = 1d paymentsCleanerPeriod = "0 0 * * * ?" } } jetty { https { port = 9443 keystorePass = 12345 keystoreFile = /etc/eltex-portal/localhost.pfx keystoreType = PKCS12 keyAlias = 1 ciphers = [ TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_AES_256_CBC_SHA256 TLS_RSA_WITH_AES_256_CBC_SHA ] } } database { host = localhost port = 3306 name = ELTEX_PORTAL user = javauser password = javapassword pool { # Time to wait for a connection connectionTimeout = 10s # Time to wait for connection validation validationTimeout = 3s min = 1 max = 10 } cache { # Limit of cached simple entries count (for each query type) maxEntries = 1000 # Limit of total cached portal resources size maxResourceBytes = 32m # Maximum time to retain items in the cache expireTime = 2m } } // JWT validation. You need a key from Eltex Doors. // Or you could generate it yourself. validation { public_key = "etc/eltex-doors/keys/public.pem" |
Параметры | Описание |
---|---|
portal | |
defaultRedirectUrl | Адрес, на который будет выполнено перенаправление пользователя в случае когда необходим перезапустить его сессиию на портале. Должен быть настроен по протоколу http |
tariffCheckerPeriod | Интервал выполнения проверки наличия тарифных планов на порталах. В случае отсутствия тарифного плана формируется сообщение об ошибке |
paymentsCleanerPeriod | Период очистки неудачных платежей в БД в cron-формате |
jetty | |
https | Настройки работы контейнера по https. Необходимо указать расположение сертификата, ключ и прослушиваемый порт. port - прослушиваемый порт keystorePass - ключ от хранилища сертификатов keystoreFile - файл хранилища, содержащий сертификат keystoreType - тип хранилища certAlias - алиас сертификата в хранилище ciphers - поддерживаемые методы шифрования |
database | |
host | Адрес сервера БД |
port | Порт, на который сервер БД принимает входящее подключение |
name | Название БД |
user | Имя пользователя БД |
password | Пароль пользователя БД |
pool | Управление соединениями к БД connectionTimeout - Время жизни коннекта при бездействии validationTimeout - интервал проверки бездействующих коннектов min - минимальное количество коннектов max - максимальное количество коннектов |
cache | Настройки кэширования maxEntries - максимальное количество элементов в кэше maxResourceBytes - размер кэша expireTime - время хранения данных в кэше |
validation | |
public_key | Путь к файлу ключа сервиса eltex-doors для валидации токенов при обращении на портал других сервисов (eltex-johhny) |
Файл содержит параметры, необходимые для инициализации сервиса. Пример дефолтной конфигурации:
# Eltex-Portal daemon parameters # Port for use by Eltex Portal PORT=9000 # Initial size of Java heap JAVA_INIT_HEAP=16m # Maximum size of Java heap JAVA_MAX_HEAP=256m # Additional arguments to pass to java JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-portal" |
Параметры | Описание |
---|---|
PORT | порт, на который сервис будет принимать соединения |
JAVA_INIT_HEAP | Количество памяти, выделяемое на работу сервиса при старте. Рекомендуется выставлять равное JAVA_MAX_HEAP. |
JAVA_MAX_HEAP | Максимальное количество памяти, которое может зарезервировать сервис |
JAVA_OPTS | Дополнительные опции для запуска jvm |
настройки логирования работы сервиса. Пример дефолтной конфигурации
<?xml version="1.0" encoding="UTF-8"?> <Configuration monitorInterval="10"> <Properties> <Property name="rootLevel">ERROR</Property> <Property name="baseDir">/var/log/eltex-portal</Property> <Property name="maxFileSize">20 MB</Property> <Property name="accumulatedFileSize">100 GB</Property> <Property name="lastModified">4d</Property> <Property name="maxCount">20</Property> <Property name="logPattern">%d{ISO8601} [%t] %-5p %logger{12} %C{1}.%M(line:%L). %m%n</Property> <Property name="dateSuffix">%d{yyyyMMdd}</Property> <Property name="gelfLevel">INFO</Property> <Property name="gelfHost">udp:lab3-test.eltex.loc</Property> <Property name="gelfPort">12201</Property> </Properties> <Appenders> <Console name="STDERR" target="System.err"> <PatternLayout pattern="${logPattern}"/> </Console> <RollingFile name="RollingFile" fileName="${baseDir}/portal.log" filePattern="${baseDir}/log/portal-%i.log.gz"> <PatternLayout pattern="${logPattern}"/> <Policies> <SizeBasedTriggeringPolicy size="${maxFileSize}"/> <OnStartupTriggeringPolicy /> </Policies> <DefaultRolloverStrategy max="${maxCount}"> <Delete basePath="${baseDir}" maxDepth="3"> <IfFileName glob="*/portal-*.log.gz"> <IfAny> <IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/> <IfLastModified age="${lastModified}"/> </IfAny> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> <RollingFile name="AccessRollingFile" fileName="${baseDir}/access.log" filePattern="${baseDir}/access/access_${dateSuffix}.log"> <PatternLayout pattern="%m%n"/> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"> <Delete basePath="${baseDir}" maxDepth="3"> <IfFileName glob="*/access_*.log"> <IfAny> <IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/> <IfLastModified age="${lastModified}"/> </IfAny> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> <RollingFile name="AuthRollingFile" fileName="${baseDir}/auth.log" filePattern="${baseDir}/auth/auth_${dateSuffix}.log"> <PatternLayout pattern="%d{ISO8601} %m%n"/> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> </Policies> <DefaultRolloverStrategy max="${maxCount}"> <Delete basePath="${baseDir}" maxDepth="3"> <IfFileName glob="*/auth_*.log"> <IfAny> <IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/> <IfLastModified age="${lastModified}"/> </IfAny> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="eltex-portal" extractStackTrace="true" originHost="%host{fqdn}" maximumMessageSize="8192" > <Field name="thread" pattern="%t"/> <Field name="level" pattern="%level"/> <Field name="severity" pattern="%-5level"/> <Field name="logger" pattern="%logger{12}"/> <Field name="location" pattern="%C{1}.%M(line:%L)"/> </Gelf> </Appenders> <Loggers> <Root level="${rootLevel}"> <AppenderRef ref="RollingFile"/> <AppenderRef ref="STDERR" level="OFF"/> <AppenderRef ref="Gelf" level="${gelfLevel}"/> </Root> <Logger name="AccessLogger" additivity="false"> <AppenderRef ref="AccessRollingFile"/> <!--"custom" for custom format with BRAS parameters and AP headers--> <!--"default" for NCSA format--> <Property name="format">default</Property> <!--Customizable parts of the access log--> <Property name="cookies">true</Property> <Property name="headers">true</Property> <Property name="bras">true</Property> </Logger> <Logger name="AuthLogger" additivity="false" level="INFO"> <AppenderRef ref="AuthRollingFile"/> <AppenderRef ref="Gelf" level="${gelfLevel}"/> </Logger> <Logger name="org.springframework" level="ERROR"/> <Logger name="org.eclipse.jetty" level="ERROR"/> <Logger name="org.apache.tomcat" level="ERROR"/> <logger name="io.grpc.netty" level="ERROR"/> <Logger name="io.netty" level="ERROR"/> <!--SQL logging--> <Logger name="org.jooq.tools.LoggerListener" level="OFF"/> <Logger name="jndi" level="OFF"/> <Logger name="org.quartz" level="OFF"/> <Logger name="com.zaxxer" level="OFF"/> <Logger name="org.apache" level="OFF"/> </Loggers> </Configuration> |
Параметр | Описание |
---|---|
monitorInterval | Интервал автоматического перечитывания конфигурации логгера |
maxFileSize | Максимально допустимый размер файла. При его превышении создается новый файл. а старый архивируется |
accumulatedFileSize | Суммарный размер логов (текущий файл + архивные). При его превышении наиболее старые файлы будут удаляться |
lastModified | Срок хранения логов, файлы модифицированные раннее этого срока будут удаляться |
maxCount | Максимальное количество архивных файлов, при его превышении наиболее старые файлы будут перезаписываться |
baseDir | Базовая директория хранения логов |
<AppenderRef ref="RollingFile" level="ERROR"/> | минимальный порог записи для всех логеров |
Политика ротирования, прописанная по-умолчанию для accesslog и authlog
Указывает на ротацию логов раз в сутки. При использовании данной политики ограничение maxFileSize для актуального лога не отработает.
|
Логфайл: /var/log/eltex-portal/portal.log
Название | Значение | Пример |
---|---|---|
CHECK LOGIN AND PSW IN smsc_gate.conf | Проблема доступности NGW к сервису отправки SMS сообщений | 2018-08-22T09:38:56,420 [SimpleContainerScope.Executor@266376052-35] ERROR org.eltex.portal.sms.SendSmsWithPswResponseHandler SendSmsWithPswResponseHandler.onResult(line:53). Error while sending message on number: 79529056800. ErrorCode: 10, errMessage: 79529056800. Received error code = 1. CHECK LOGIN AND PSW IN smsc_gate.conf. Error in the parameters of function of dispatch sms via http protocol |
NGW_NOT_AVAILABLE | Проблема доступности портала к сервису NGW | 2020-07-09T09:45:07,827 [qtp76432244-17] ERROR org.eltex.portal.sms.NotificationClient NotificationClient.getConfigurationInfo(line:527). Can`t connect to Ngw server with code: 1601 code 1601:NGW_NOT_AVAILABLE and reason: NgwException{FAILED: 'Protocol is not supported by the server: eltex-ngw-api#1.16.5'} |