Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

<div class="aui-message error aui-message-error">
<p class="title">
<span class="aui-icon icon-error"></span>
<strong>Comala Metadata License Details</strong>
</p>
<p>Invalid commercial evaluation license with a expired error. Please click <a href="https://marketplace.atlassian.com/plugins/org.andya.confluence.plugins.metadata" target="_blank">here</a> to purchase a commercial license.</p>
</div>

Описание

В состав SoftWLC включен WEB-портал, с помощью которого реализуется модель авторизации hotspot-клиентов. Неизвестный системе пользователь может свободно (без получения заранее логина и пароля) подключиться к точке доступа, но при попытке выйти в интернет через браузер пользователь перенаправляется на страницу WEB-портала, на которой может по выбору пройти процедуру авторизации или получения авторизационных данных (например, с помощью SMS). В процессе выполнения процедур авторизации абонент может наблюдать рекламные сообщения в виде баннеров, кастомизированных в соответствии с требованиями оператора.

Данный сервис используется для отображения страниц виртуальных порталов и проведения регистрации и авторизации Wi-Fi пользователей, подключающихся на точках доступа Eltex или при помощи ESR/BRAS.

Установка выполняется при помощи пакета eltex-portal.

Во время инициализации сервиса eltex-portal и до момента пока сервис полностью не загрузится,  вместо портала будет отображаться страница "Warming up".  Что свидетельствует о том, что портал еще в процессе инициализации, а модули сервиса находятся в процессе конфигурации. После того как сервис eltex-portal полностью загрузился, будет произведен автоматический редирект пользователя на главную страницу портала.
Пример страницы инициализации портала:

Управление сервисом

ДействиеКомандаОтвет
Проверка состояния
service eltex-portal status

Сервис работает

eltex-portal start/running, process <pid>

Сервис не работает

eltex-portal stop/waiting
Запуск сервиса
service eltex-portal start

Сервис запустился

eltex-portal start/running, process <pid>

Сервис уже работает

start: Job is already running: eltex-portal
Остановка сервиса
service eltex-portal stop

Сервис успешно остановлен

eltex-portal stop/waiting

Сервис не остановлен, т.к. не был запущен

stop: Unknown instance: 
Перезапуск сервиса
service eltex-portal restart

Сервис успешно перезапущен

eltex-portal stop/waiting
eltex-portal start/running, process <pid>
stop: Unknown instance: 
eltex-portal start/running, process <pid>


Конфигурация

/etc/eltex-portal/application.conf

основной конфигурационный файл. Пример дефолтной конфигурации:

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)



/etc/default/eltex-portal

Файл содержит параметры, необходимые для инициализации сервиса. Пример дефолтной конфигурации:

# 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

/etc/eltex-portal/log4j2.xml

настройки логирования работы сервиса. Пример дефолтной конфигурации

<?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

            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>

Указывает на ротацию логов раз в сутки. При использовании данной политики ограничение maxFileSize для актуального лога не отработает.

Для ограничения размера актуального лога, в соответствии с maxFileSize замените политику на

            <Policies>
                <SizeBasedTriggeringPolicy size="${maxFileSize}"/>
            </Policies>

Описание ошибок в логах.

Логфайл: /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Проблема доступности портала к сервису NGW2020-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'}
  • Нет меток