В данном разделе приведено описание настроек, которые нужно сделать на сервере для работы приложения Elph Desktop и Elph Android.
Для корректной работы Elph должен проходить icmp на участке клиент-сервер. Это нужно для получения клиентами ip set (IP:порт для подключения). |
Предварительно на ECSS должен быть настроен доступ к базе адресной книги. Команды описаны в разделе /system/address-book/ - системные команды управления адресной книгой абонентов.
По умолчанию настройки доступа такие:
admin@mycelium1@ecss1:/$ system/address-book/properties/info ┌───────────────────┬───────────────────────┐ │ Property │ Value │ ├───────────────────┼───────────────────────┤ │auto_create_account│true │ │auto_delete_account│true │ │database │ecss_address_book │ │host │address-book.mysql.ecss│ │password │address_book │ │port │3306 │ │username │address_book │ └───────────────────┴───────────────────────┘ |
Проверьте, что включен CSTA API. Описание команд приведено в разделе /api/ — команды настройки API CSTA.
Пример настроек:
admin@mycelium1@ecss1:/$ api/csta/info ┌────────┬───────┐ │Property│ Value │ ├────────┼───────┤ │auth │ │ │enabled │true │ <== включить │ssl_ip │0.0.0.0│ │ssl_port│4722 │ │tcp_ip │0.0.0.0│ │tcp_port│4721 │ │use_ssl │true │ │use_tcp │true │ └────────┴───────┘ |
В свойствах домена параметр vats_type должен быть выставлен в private.
admin@mycelium1@ecss1:/$ domain/test.domain/properties/info ┌───────────────────────────────────────┬───────────┬───────────────────────────────────────┐ │ Property │ Domain │ Value │ ├───────────────────────────────────────┼───────────┼───────────────────────────────────────┤ ... │vats_type │test.domain│private |
Для работы в SSW-кластере при включённом параметре nat_traversal в SIP-профиле абонента, использующего elph-desktop, необходимо в свойствах SIP-домена активировать параметр node_control, также включить node_control в SIP-профиле на всех абонентах, использующих elph-desktop и параметр nat_traversal одновременно. В остальных случаях node_control следует держать отключенным, так как это влияет на производительность SSW. |
Пример настройки для домена:
admin@mycelium1@ecss1:/$ domain/test.domain/sip/user/profile/set with-node-control node_control true |
Пример настройки для абонента:
admin@mycelium1@ecss1:/$ domain/test.domain/sip/user/set 40000 40001@test.domain client-profile with-node-control |
Для использования WebRTC и видеовызовов на SSW установите следующие теги в конфигурационном файле ecss-media-server, который находится по пути: /etc/ecss/ecss-media-server/config.xml
Параметры, которые необходимо установить для работы с WebRTC:
В секции general:
use-srtp="optional" enable-ice-transport="yes" ice-update="yes" aggressive-ice="yes" |
Для прохождения медиа за NAT, только если будет использоваться режим nat_traversal, в секции media включить параметр:
udp-src-check="yes" |
Для работы видеовызовов в секции codec:
h264="1" |
Пример:
<?xml version="1.0" encoding="utf-8"?> <config date="17:31:13 24.04.2023"> <general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" calls-delta="100" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="optional" enable-ice-transport="yes" ice-update="yes" aggressive-ice="yes" stun-server="" suspicious-mode="yes"/> <transport bind-addr="127.0.0.1" port="5040" transport="udp+tcp"/> <media mixer-clock-rate="8000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="yes" cn-multiplier="3" port-start="12000" port-range="2048" tias-in-sdp="no" thread-cnt="2" vid-enc-threads="2" vid-dec-threads="2" video-conf-layout="evenly" keyframe-interval="1000" vid-decode-delay="100" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720" finalsilence="1000" rtcp-stat-dump="yes"/> <codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/> <accounts> <!-- <dynamic msr_name="msr.name" realm="sip:127.0.0.1:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password" /> --> </accounts> <pbyte> <mcc bind-addr="127.0.0.1" port="5700"/> </pbyte> <conf_dir path="/etc/ecss/ecss-media-server/conf.d"/> <rtp> <auto addr-v4=""/> </rtp> </config> |
Для включения видео в конференциях необходимо переключить режим на медиасервере из audio в audio/video.
Для услуги conference:
system/media/msr/set --media/conference audio/video |
Для услуги teleconference:
system/media/msr/set --media/teleconference audio/video |
Если SSW развёрнут в закрытом контуре без доступа в интернет, то для нормальной работы elph-desktop потребуется также установить stun/turn-сервер (например coturn) и прописать его адрес в конфигурации ecss-media-server, изменив параметр stun-server="". Подробнее об установке своего coturn-сервера приведено на следующей странице. |
Для взаимодействия с базой данных ecss-elph-api и Chat Server должны иметь в ней соответствующие учётные записи.
Алгоритм создания представлен ниже:
1. Подключитесь к базе данных с помощью ввода пароля от указанной учётной записи.
sudo mysql -u root -p |
2. Добавьте в база данную учётную запись elph_api:
Для этого установите разрешения (CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER) на базу данных ecss_address_book.* и все её таблицы. Пользователю elph_api, при этом, доступ к базе разрешён с указанного после знака @ IP (либо диапазона ip. Например, 192.168.1.%, соответствует сети 192.168.1.0/24), пароль для пользователя установите: "elph_api".
Для учётной записи elph_api после значка @ должен быть указан IP-адрес\сеть или доменное имя сервера, на котором работает сервис ecss-elph-api (в большинстве случаев это localhost).
Пример:
GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'elph_api'@'localhost' IDENTIFIED BY 'elph_api'; GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'elph_api'@'127.0.0.1' IDENTIFIED BY 'elph_api'; GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'elph_api'@'::1' IDENTIFIED BY 'elph_api'; GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'elph_api'@'<МАСКА ПОДСЕТИ>' IDENTIFIED BY 'elph_api'; |
3. Добавьте аналогично шагу 2 в БД учётную запись ecss_chat:
Для учётной записи ecss_chat после значка @ должен быть указан IP-адрес\сеть или доменное имя Сhat Server.
GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'ecss_chat'@'localhost' IDENTIFIED BY 'ecss_chat'; GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'ecss_chat'@'127.0.0.1' IDENTIFIED BY 'ecss_chat'; GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'ecss_chat'@'::1' IDENTIFIED BY 'ecss_chat'; GRANT CREATE, DELETE, DROP, INSERT, SELECT, UPDATE, EXECUTE, EVENT, ALTER ON ecss_address_book.* TO 'ecss_chat'@'<МАСКА ПОДСЕТИ>' IDENTIFIED BY 'ecss_chat'; |
4. Проверьте, что созданные пользователи появились в базе данных.
SELECT user, host from mysql.user WHERE user='ecss_chat' OR user='elph_api'; |
Результат выполнения запроса:
+-----------+-----------+ | user | host | +-----------+-----------+ | ecss_chat | %.%.%.% | | elph_api | 127.0.0.1 | | elph_api | localhost | | elph_api | ::1 | +-----------+-----------+ 6 rows in set (0.00 sec) |
Маска %.%.%.%, указанная в поле хост, означает, что доступ под данной учётной записью разрешён с любой IPv4-сети.
Для того чтобы чат в конференциях работал корректно, убедитесь, что для учётной записи ecss_meeting_db разрешён доступ с IP-адреса Char Server.
SELECT user, host from mysql.user WHERE user='ecss_meeting_db'; |
Результат выполнения запроса:
+-----------------+-----------+ | user | host | +-----------------+-----------+ | ecss_meeting_db | %.%.%.% | +-----------------+-----------+ |
Для изменения существующего доступа, выполните указанную ниже команду, где в первом поле host указывается значение, на которое необходимо поменять значение, а во втором — значение, которое необходимо изменить.
UPDATE mysql.user SET host='192.168.107.142' WHERE user='ecss_meeting_db' AND host='%.%.%.%'; |
Результат выполнения запроса:
+-----------------+-------------------+ | user | host | +-----------------+-------------------+ | ecss_meeting_db | 192.168.107.142 | +-----------------+-------------------+ |
Для того чтобы изменения вступили в силу, существует два способа.
Способ 1:
В командной строке БД введите указанную ниже команду.
FLUSH PRIVILEGES; |
Способ 2:
Перезапустите процесс, под которым запущена БД.
sudo systemctl restart mysql.service |
Проверьте, что сервис работает (статус: active(running), а время его работы соответствует времени, прошедшему с момента перезапуска (в текущем примере — 2s):
systemctl status mysql.service |
Результат выполнения: