В статье рассказывается о настройке автоматического развертывания 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

Добавить комментарий