В статье рассказывается о настройке автоматического развертывания IP-телефонов Grandstream GXP1610/GXP1615, предполагающего получение IP-телефонами с веб-сервера базовой конфигурации, списка контактов, параметров SIP-аккаунтов, настроек дисплея, а также обновлений программного обеспечения
- создаем в MS Excel файл "set.csv" с типом "CSV (разделители - запятые)", содержащий следующие столбцы
-
MAC Parameter Value Description
- добавляем в файл "set.csv" базовые параметры (столбец "MAC" оставляем пустым)
-
P1362 ru display language P122 1 24-Hour time format P57 8 vocoder 1 (PCMA) P58 0 vocoder 2 (PCMU) P191 0 disable call features P72 0 do not use # as dial key P1357 2 constraint configuration mode via keypad P1525 ** in-call dial number on pressing transfer key P1376 1 auto-attended transfer P1650 0 web access mode (HTTPS only) P196 userpass web-interface user password P2 admpass web-interface admin password P47 voip.domain.com:5060 SIP server P2380 1 display user ID instead of username
- добавляем в файл "set.csv" параметры адресной книги LDAP
-
P1526 1 phonebook button starts LDAP search P8370 0 LDAP only (not LDAPS) P8020 dc.domain.com LDAP server address P8021 389 LDAP server port P8022 cn=users,dc=domain,dc=com LDAP search base P8023 cn=grandstream,cn=users, dc=domain,dc=com username P8024 somepass password P8025 (telephoneNumber=%) LDAP number filter P8026 (|(sn=%)(sAMAccountName=%)) LDAP name filter P8027 3 LDAP version P8028 sn sAMAccountName LDAP name attributes P8029 telephoneNumber LDAP number attributes P8030 sn telephoneNumber LDAP display name P8033 1 Sort results P8034 1 LDAP outgoing calls lookup P8035 1 LDAP incoming calls lookup P8036 sn telephoneNumber LDAP loolup display name
- добавляем в файл "set.csv" параметры настройки дисплея
-
P340 1 idle screen XML download via HTTP P1349 1 download screen XML at boot-up P1343 1 use custom file name P341 www.domain.com/grandstream/ gxp1610_idle_screen.xml idle screen XML server path
- добавляем в файл "set.csv" параметры обновления
-
P194 1 check for updates based on minutes setting P193 1440 check for updates every 1440 minutes P6767 1 download updates via HTTP P192 www.domain.com/grandstream server path P8375 0 update without confirmation
- добавляем в файл "set.csv" параметры для IP-телефона с MAC-адресом "00aa11bb22cc" (имя хоста и параметры SIP-аккаунта)
-
00aa11bb22cc P146 galkov_phone hostname 00aa11bb22cc P35 123 SIP user ID 00aa11bb22cc P36 123 authenticate ID 00aa11bb22cc P34 1234567890 authenticate password
- создаем в MS Excel файл "mac.csv" с типом "CSV (разделители - запятые)", содержащий список MAC-адресов IP-телефонов
-
MAC 00aa11bb22cc
- запускаем сценарий New-GrandstreamConfigFile.ps1, в результате выполнения которого в указанной папке будут созданы зашифрованные файлы конфигурации для нужных IP-телефонов
- Замечание 1: шифрование файлов выполняется посредством утилиты OpenSSL, путь к которой должен быть указан в переменной среды "Path". Дистрибутив можно скачать отсюда или из любого другого источника, указанного здесь
- Замечание 2: имена файлов конфигурации будут иметь вид "cfg
.xml", т.е. в нашем случае будет создан файл "cfg00aa11bb22cc.xml" - создаем файл настроек дисплея "gxp1610_idle_screen.xml" следующего содержания
-
<?xml version="1.0" encoding="UTF-8"?> <Screen> <!-- Main screen --> <IdleScreen> <ShowStatusLine>false</ShowStatusLine> <DisplayElement> <!-- Display month-week-date (top left) --> <DisplayString width="70" height="12"> <DisplayStr>$f</DisplayStr> <X>0</X> <Y>0</Y> </DisplayString> <!-- Display time (top right) --> <DisplayString halign="right" width="50" height="12"> <DisplayStr>$T</DisplayStr> <X>82</X> <Y>0</Y> </DisplayString> </DisplayElement> <!-- forwarded call msg display --> <DisplayElement> <DisplayString halign="center" width="128" bgcolor="White"> <DisplayStr>$j</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition> <conditionType>hasFowardedCallLog</conditionType> </displayCondition> </DisplayString> </DisplayElement> <!-- Missed call display--> <DisplayElement> <DisplayBitmap isfile="true"> <Bitmap>/app/resource/icon/misscall_13.bmp</Bitmap> <X>6</X> <Y>14</Y> <displayCondition> <conditionType>missCall</conditionType> </displayCondition> </DisplayBitmap> <DisplayString width="102" bgcolor="White"> <DisplayStr>$c</DisplayStr> <X>25</X> <Y>14</Y> <displayCondition> <conditionType>missCall</conditionType> </displayCondition> </DisplayString> </DisplayElement> <!-- Network up display --> <DisplayElement> <DisplayString halign="center" width="128" bgcolor="White"> <DisplayStr>$+1226</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition negate="true"> <conditionType>networkUp</conditionType> </displayCondition> </DisplayString> </DisplayElement> <!-- Network starting display --> <DisplayElement> <DisplayString font="unifont" halign="center" width="128" bgcolor="White"> <DisplayStr>$+640</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition negate="true"> <conditionType>networkStart</conditionType> </displayCondition> </DisplayString> </DisplayElement> <!-- 5V Error display --> <DisplayElement> <DisplayString halign="center" width="128" bgcolor="White"> <DisplayStr>$v</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition> <conditionType>wrongPower</conditionType> </displayCondition> </DisplayString> </DisplayElement> <!-- core dump display --> <DisplayString halign="center" width="128" bgcolor="White"> <DisplayStr>$+1512</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition> <conditionType>crash</conditionType> </displayCondition> </DisplayString> <!-- NEW IM Messsages display --> <DisplayString halign="center" width="128" bgcolor="White"> <DisplayStr>$+1539</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition> <conditionType>hasIM</conditionType> </displayCondition> </DisplayString> <!-- KeypadLock display --> <DisplayElement> <DisplayString halign="center" width="128" bgcolor="White"> <DisplayStr>$k</DisplayStr> <X>0</X> <Y>14</Y> <displayCondition> <conditionType>keypadLock</conditionType> </displayCondition> </DisplayString> </DisplayElement> <!-- Define available softkeys here --> <SoftKeys> <SoftKey> <Action> <SwitchSCR/> </Action> <displayCondition> <conditionType>SubScreen</conditionType> </displayCondition> </SoftKey> <SoftKey> <Action> <BackSpace/> </Action> <displayCondition> <conditionType>backSpace</conditionType> </displayCondition> </SoftKey> <SoftKey> <Action> <CANCEL/> </Action> <displayCondition> <conditionType>backSpace</conditionType> </displayCondition> </SoftKey> <SoftKey> <Action> <MissedCalls/> </Action> <displayCondition> <conditionType>missCall</conditionType> </displayCondition> </SoftKey> <SoftKey> <Action> <Redial/> </Action> <displayCondition> <conditionType>hasDialedCalllog</conditionType> </displayCondition> </SoftKey> </SoftKeys> <!-- End of softkey definition --> </IdleScreen> <!-- Sub-screen that show IP and Account info --> <IdleScreen> <ShowStatusLine>false</ShowStatusLine> <DisplayString> <DisplayStr>$+161: $I</DisplayStr> <X>2</X> <Y>-2</Y> </DisplayString> <DisplayString> <DisplayStr>$+339: $-O</DisplayStr> <X>2</X> <Y>15</Y> </DisplayString> <SoftKeys> <SoftKey> <Action> <SwitchSCR/> </Action> <displayCondition> <conditionType>SubScreen</conditionType> </displayCondition> </SoftKey> </SoftKeys> </IdleScreen> </Screen>
- Замечание: в результате в левом верхнем углу экрана будет отображаться время, в правом верхнем - дата, а в нижней части экрана будут доступны кнопки "Следующий экран", "Повтор" и "Пропущенные"; на втором экране будет отображаться информация об IP-адресе и SIP-аккаунте
- скачиваем с сайта производителя последнюю версию программного обеспечения
- Замечание: в нашем случае соответствующий файл будет называться gxp1600fw.bin
- размещаем файлы cfg00aa11bb22cc.xml, gxp1610_idle_screen.xml и gxp1600fw.bin на веб-сервере по пути www.domain.com/grandstream
- входим в веб-интерфейс IP-телефона (логин/пароль по умолчанию - admin/admin), переходим в раздел "Maintenance – Upgrade and Provisioning" и изменяем следующие параметры
- "Config Via" - "HTTP"
- "Config Server Path" - "www.domain.com/grandstream"
- "XML Config File Password" - "some_password"
- перезагружаем IP-телефон
Замечание 1: руководства по развертыванию, настройке дисплея, адресной книги и т.д. можно скачать отсюда; файл со списком всех параметров, используемых для автоматического развертывания, расположен здесь
Замечание 2: MAC-адреса нужно записывать строчными буквами, чтобы в именах конфигурационных файлов также присутствовали только буквы нижнего регистра. Это необходимо потому, что телефоны используют в URL для загрузки файлов конфигурации именно строчные буквы, и если веб-сервер будет чувствителен к регистру URL, а в именах конфигурационных файлов будут встречаться прописные буквы, то телефоны не смогут загрузить конфигурацию
Замечание 3: в значениях параметров не следует использовать специальные символы (в особенности кавычки и различные разделители), дабы избежать проблем, связанных с представлением информации в CSV-файлах
Замечание 4: для зашифровки и расшифровки конфигурационных файлов можно использовать, соответственно, команды
openssl enc -e -aes-256-cbc -in clear_text.xml -out encrypted.xml -k passphrase
openssl enc -d -aes-256-cbc -in encrypted.xml -out clear_text.xml -k passphrase