Данный сервис позволяет поддерживать удаленную книгу Yealink, GrandStream, которую возможно получать либо из базы абонентов SSW (по http), либо по протоколу ldap, либо с адресной книги ECSS-10 (используя mysql).
На текущий момент:
При установке restfs у пользователя спрашиваются следующие вопросы:
Для того, чтобы настроить необходимый сервис нужно сконфигурировать /etc/ecss/ecss-restfs/card-settings.json. Настройка каждого сервиса находится в соответствующей секции.
"ssw": {
"protocol": "%%SSW_PROTO%%", // протокол http или https
"server": "%%SSW_SERVER%%", // адрес сервера
"user": "%%SSW_LOGIN%%", // логин
"password": "%%SSW_PASS%%", // пароль
"domain": "%%SSW_DOMAIN%%", // домен, из которого необходимо получить данные
"limit": "%%SSW_LIMIT%%" // максимальное количество контактов, которое нужно получить
} |
| Необходимо указывать параметры в кавычках!!! |
Также возможно изменять данные настройки в запросе, например: http://restfs:9995/ssw?user=admin&password=superpass&domain=example.eltex.local
"ldap": {
"base_name": "%%LDAP_BN%%", // имя в формате ldap для логина
"password": "%%LDAP_PASS%%", // пароль
"domain": "%%LDAP_DOMAIN%%", // домен в формате ldap
"server": "%%LDAP_SERVER%%", // адрес сервера с ldap
"attrs": ["%%LDAP_ATTR%%"], // запрашиваемые атрибуты (имя, почта, номер)
"scope": "subtree" // способ обхода при запросе
} |
| Для уточнения параметров, например, scope, смотрите документацию по ldap, также формат bn, domain в документации по ldap. |
Также можно переопределять параметры при запросе
http://restfs:9995/ldap?attrs=mail,displayName&base_name=cn=user,dc=eltex,dc=local
"mysql": {
"server": "%%MYSQL_SERVER%%", // сервер mysql, где лежит база данных с контактами
"port": "%%MYSQL_PORT%%", // порт
"user": "%%MYSQL_LOGIN%%", // пользователь, под которым необходимо войти
"password": "%%MYSQL_PASS%%", // пароль
"db": "%%MYSQL_DB%%", // база данных, удовлетворяющая следующей структуре
"procedure": "getContactBook",
"limit": "%%MYSQL_LIMIT%%",
"offset": "0" // смещение от начала в отсортированной базе данных по contact.id
} |
Аналогично можно переопределять в аргументах url необходимые поля.
Шаблоны находятся в /etc/ecss/ecss-restfs/template.
Каждый шаблон должен соответствовать следующему виду: address-book-<ID>.xml
Где <ID> - по умолчанию служит для определение вендора, например, "address-book-yealink.xml". При создании собственных шаблонов, можно указывать некий идентификатор, который позже будет передан в аргументах запроса.
Допустим, есть следующий файл: /etc/ecss/ecss-restfs/template/address-book-123321.xml
Чтобы телефон мог воспользоваться заданным шаблоном, необходимо, чтобы запрос выглядел следующим образом: http://address:9995/service?user_agent=123321.
user_agent - аргумент, который позволяет переопределить используемый шаблон, по умолчанию используется первое слово заголовка http-запроса: user-agent.
Если шаблон не обнаружен, то возвращается имя шаблона.
Выгрузка из ssw|mysql|ldap в форматах template или carddav.
Для настройки удаленной книги cisco нужно в конфигурацию (SEPxxxxxxxxxx.cnf.xml или XMLDefault.xnf.xml) автопровижена добавить следующее:
88хх
<phoneServices>
...
<phoneService type="1" category="0">
<name>Офис</name>
<url>http://restfs/service?user_agent=cisco</url>
<vendor></vendor>
<version></version>
</phoneService>
</phoneServices> |
79хх
SIPDefault.cnf:
directory_url: "http://10.10.0.56:9995/ssw?user_agent=cisco"; URL for external Directory location |
Где:
restfs_address - адрес сервера, где расположен restfs;
service - используемая база (mysql|ssw|ldap).
Формат шаблона телефонной книги в restfs:
<CiscoIPPhoneDirectory>
<Title>Restfs address book</Title>
<Prompt>Prompt text.</Prompt>
{% for id, person in ipairs(context) do %}
<DirectoryEntry>
<Name>{{person.name}}</Name>
{% for tag, val in pairs(person.phone) do %}
<Telephone>{{val}}</Telephone>
{% end %}
</DirectoryEntry>
{% end %}
</CiscoIPPhoneDirectory> |
После чего в контактах телефона появится записная книга со всеми контактами содержащимися в базе указанного сервиса.
Шаблоны находятся в /etc/ecss/ecss-restfs/template/address-book
В директориях /usr/lib/ecss/ecss-restfs/template/(ssw|carddav) находятся служебные шаблоны, изменять/удалять их опасно - это может повлечь за собой прекращение работы сервиса |
В сервисе реализовано удаление/добавление/обновление пользователей, посредством http-запросов.
Для управления кешем реализовано API.
Общий вид запроса имеет вид: http://restfs:9995/update/service
Добавлено api для управления кешем через http://restfs:9995/update/service - требуется аутентификация для выполнения данного действия
Например:
Для сбросить кеш ssw можно с помощью curl:
http://localhost:9995/update/ssw --basic -ussw