Мой опыт работы с функцией auto provisioning основывался на уже упомянутой китайской продукции. И я наивно полагал, что с Grandstream все будет выглядеть примерно также. В общем-то так и вышло. Но я не предполагал насколько примерно все окажется. Чтобы не быть голословным приведу два куска настроек с одного и другого аппарата. Настройки получены путем экспорта файла.
Fanvil:
Static IP :192.168.1.179 Static NetMask :255.255.255.0 Static GateWay :192.168.1.1 Default Protocol :2 Primary DNS :202.96.134.133 Alter DNS :202.96.128.68 DHCP Mode :1 DHCP Dns :1 Domain Name : Host Name :VOIP Pppoe Mode :0 HTL Start Port :10000 HTL Port Number :200 SNTP Server :209.81.9.7
А теперь держитесь. Кусок настроек из конфига grandstream:
P335=2 P90=0 P91=0 P212=1 P92=0 P93=0 P338=0 P1339=0 P94=0 P2340=0 P95=0 P2341=0 P2342=0 P96=97 P2343=0 P97=1 P99=0 P10=168 P11=0 P2346=0 P2347=0 P12=160 P13=255 P2348=0 P14=255
А! Как вам?! Впечатлены? По правде говоря я вас немножко обманул. Рабочий конфиг телефона выглядит иначе. Но зато вы можете представить мою растерянность, когда я увидел конфигурацию которую скачал с аппарата.
Сразу видны плюсы и минусы одного и другого собрата. Китайцы сделали настройки более приближенные к человеческому пониманию. Зато американцев выручает хорошее количество документации. В конечном итоге выручило оно и меня.
Файл конфигурации для grandstream можно создать двумя способами. При помощи утилит на сайте производителя (инструменты есть для Windows и для Linux) и в ручную, через XML файл. С первым способом у меня не сложилось. Поэтому опишу второй.
Как вы уже поняли, названия полей конфигурации зашифрованы и найти их описание не то чтобы сложно, но порыть инет пришлось. Что-то взял тут, что-то здесь и в целом получился вот такой файл.
<?xml version="1.0" encoding="UTF-8" ?> <gs_provision version="1"> <mac>000a91547c9c</mac> <config version="1"> <!-- Admin Password --> <P2>PasswordQWER</P2> <P3>Grandstream</P3> <!-- SIP Registration. 0-no,1-yes --> <P31>1</P31> <!-- Register Expiration (in minutes. default 1 hour, max 45 days) --> <P32>60</P32> <!-- Authenticate password --> <P34>SIPassword</P34> <!-- SIP User ID --> <P35>111</P35> <!-- Authenticate ID --> <P36>111</P36> <P40>5561</P40> <!-- SIP Server --> <P47>sip.address.ru:5561</P47> <!-- DNS Mode. 0-A Record, 1-SRV, 2-NAPTR/SRV, 3-Use Configured IP --> <P103>0</P103> <!-- Time Format 0-12, 1-24 --> <P122>1</P122> <P148>Grandstream Provisioning</P148> <P237>config.address.ru</P237> <!-- Account Name. Cannot be empty. --> <P270>TestConfig</P270> <!-- Account 1 --> <!-- Account Active (In Use). 0-no, 1-yes --> <P271>1</P271> <!-- Enable Phonebook. 0(Disabled)/1(HTTP)/2(TFTP)/3(HTTPS) --> <P330>1</P330> <!-- Phone Book XML Server Path --> <P331>config.address.ru</P331> <!-- Phone Book Download Interval (in minutes) --> <P332>5</P332> <!-- Remove Manually-edited entries on Download. Possible values: 0(No)/1(Yes) --> <P333>1</P333> <!-- XML FILE ENCRYPTION --> <P1349>password123</P1349> <P1362>ru</P1362> <!-- Degree Unit. auto - Automatic, f - Fahrenheit, c - Celsius. Default is auto --> <P1379>c</P1379> </config> </gs_provision>
Данный конфиг позволяет зарегистрировать аппарат на SIP сервере работающем по не стандартному порту 5561. Также включены незначительные особенности вроде отображения погоды в Цельсиях и настройки пути к адресной книге. Параметры которые не указаны, будут установлены по умолчанию.
Готовый файл необходимо зашифровать.
openssl enc -e -aes-256-cbc -k password123 -in basefile.xml -out cfg000d91447b9b.xml
Имя файла должно иметь вид cfg[macaddress].xml. Раздавать файл будем через HTTP, поэтому просто выкладываем его в /var/www/ (Установку apache в виде apt-get install apache2, извините, описывать не буду :))
Далее по аналогии с Fanvil-ами автоматизируем этот процесс.
Создадим файл users со следующим содержимым:
000a91547c9c 111 SIPassword User Grand
Обратите внимание, mac адрес должен быть написан маленькими буквами.
… и bash файл который будет брать настройки из users
#!/bin/bash uspath=/opt/neoflex/gxp1165 usfile=(`cat $uspath/users`) macdir=/var/www/ a=0 #macaddrr b=1 #number c=2 #pass d=3 #2name e=4 #1name while [ ${usfile[$a]} ] do dfile=$macdir'cfg'${usfile[$a]} cat <<EOF >>$dfile <?xml version="1.0" encoding="UTF-8" ?> <gs_provision version="1"> <mac>${usfile[$a]}</mac> <config version="1"> <!-- Admin Password --> <P2>PasswordQWER</P2> <P3>DisplayTest</P3> <!-- SIP Registration. 0 - no, 1 - yes --> <P31>1</P31> <!-- Register Expiration (in minutes. default 1 hour, max 45 days) --> <P32>60</P32> <!-- Authenticate password --> <P34>${usfile[$c]}</P34> <!-- SIP User ID --> <P35>${usfile[$b]}</P35> <!-- Authenticate ID --> <P36>${usfile[$b]}</P36> <P40>5561</P40> <!-- SIP Server --> <P47>sip.server.ru:5561</P47> <!-- DNS Mode. 0 - A Record, 1 - SRV, 2 - NAPTR/SRV, 3 - Use Configured IP. Default is 0 --> <P103>0</P103> <!-- Time Format --> <P122>1</P122> <P148>Grandstream Provisioning</P148> <!-- HTTP Firmware Update Server --> <P192>config.server.ru</P192> <P237>config.server.ru</P237> <!-- Account Name. Cannot be empty. --> <P270>${usfile[$d]} ${usfile[$e]}</P270> <!-- Account 1 --> <!-- Account Active (In Use). 0 - no, 1 - yes --> <P271>1</P271> <!-- Enable Phonebook0(Disabled)/1(HTTP)/2(TFTP)/3(HTTPS) --> <P330>1</P330> <!-- Phone Book XML Server Path --> <P331>sip.server.ru</P331> <!-- Phone Book Download Interval (in minutes) --> <P332>60</P332> <!-- Remove Manually-edited entries on Download. Possible values: 0 (No) / 1 (Yes) --> <P333>1</P333> <!-- XML FILE ENCRYPTION --> <P1349>password</P1349> <P1362>ru</P1362> <!-- Update Interval.Default is 15 --> <P1378>60</P1378> <!-- Degree Unit. auto - Automatic, f - Fahrenheit, c - Celsius. Default is auto --> <P1379>c</P1379> </config> </gs_provision> EOF openssl enc -e -aes-256-cbc -k password -in $dfile -out $dfile.xml rm $dfile a=`expr $a + 5` b=`expr $b + 5` c=`expr $c + 5` d=`expr $d + 5` e=`expr $e + 5` done
Все. На выходе /var/www/ получаем зашифрованный XML-ник cfg000a91547c9c.xml
В настройках самого аппарата достаточно прописать путь к серверу конфигурации и пароль для расшифровки конфиг файла.
Внизу нажимаем кнопку «Сохранить и применить» и отправляем в ребут кнопкой «Перезагрузка» в верхнем правом углу экрана.
Но на этом я не успокоился. В процессе рытья в документации мне попалось описание настройки адресной книги для телефона. И я, не долго думая, забабахал скрипт который генерит phonebook.xml собирая его из sip конфигов.
Важно! У меня параметр callerid имеет вид SecondName FirsName<111>. То есть все экстеншены должны иметь поле callerid и именно с тремя значениямиt.
#!/bin/bash a=0 b=1 c=2 book=phonebook.xml echo | sed -n '/callerid\=/p' /etc/asterisk/sip*.conf| sed s'/callerid\=//'g | sed s'/</ /'g | sed s'/>//'g | sed s'/;//'g >> tmp.file spisok=(`cat tmp.file`) echo '<?xml version="1.0" encoding="UTF-8"?>' >> $book echo "<AddressBook>" >> $book while [ ${spisok[a]} ];do cat <<EOF >>$book <Contact> <LastName>${spisok[a]}</LastName> <FirstName>${spisok[b]}</FirstName> <Phone> <phonenumber>${spisok[c]}</phonenumber> <accountindex>1</accountindex> <downloaded>0</downloaded> </Phone> <Groups> <groupid>2</groupid> </Groups> </Contact> EOF a=`expr $a + 3` b=`expr $b + 3` c=`expr $c + 3` done echo "</AddressBook>" >>$book cp phonebook.xml /var/www/ rm tmp.file
Если путь к адресной книге прописан правильно, то после перезагрузки справочник будет подтянут на аппарат. Убедиться в этом можно будет нажав кнопку с телефонной книгой на корпусе телефона или в настройках через web интерфейс.
Но и этого мне было мало. Итак. Финальный аккорд.
Пожалуй единственным минусом аппарата можно назвать скудный выбор рингтонов. Всего три да и те какие-то страшненькие. Но! Рингтоны можно залить свои!
Описан способ для Linux. Уилита для Windows здесь.
Скачиваем и распаковываем утилиту
wget http://www.grandstream.com/tools/Ring_Tone_Generator/linux_music_ring_tone_gen.zip unzip linux_music_ring_tone_gen.zip
Переименовываем sox.linux в просто sox и назначаем права
mv sox.linux sox chmod 755 sox
Читаем readme.
./sox sound.wav ring1.ring
Все просто. На входе wav файл на выходе ring1.ring. Файлов может быть не более трех ring1.ring, ring2.ring и ring3.ring соответственно. Размер не более 100 Кб, сами авторы рекомендуют не более 70Кб для каждого файла. Получившимся ring-ам необходимо поменять расширение на .bin и залить например туда же где и конфиг файлы.
Для заливки рингтонов в конфиг файле служит поле <P192>
. Оно описывает путь к файлам обновления.
Все. Пускаем телефон в ребут и командой tail -f /var/log/apache/access.log смотрим чего происходит. Выглядеть будет примерно вот так.
192.168.0.16 -- [05/Nov/2013:17:15:52 +0400] "GET /language.txt HTTP/1.1" 404 480 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:10 +0400] "GET /cfg000a91547c9c HTTP/1.0" 200 1787 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:14 +0400] "GET /cfg000a91547c9c.xml HTTP/1.0" 200 1849 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:32 +0400] "GET /gxp1160fw.bin HTTP/1.0" 404 537 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:36 +0400] "GET /gxp1160fw.bin HTTP/1.0" 404 537 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:38 +0400] "GET /ring1.bin HTTP/1.0" 200 65847 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:39 +0400] "GET /ring2.bin HTTP/1.0" 200 39388 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c" 192.168.0.16 -- [05/Nov/2013:17:16:42 +0400] "GET /ring3.bin HTTP/1.0" 404 533 "-" "Grandstream Model HW GXP1165 SW 1.0.5.26 DevId 000a91547c9c"
ссылка на оригинал статьи http://habrahabr.ru/post/200982/
Добавить комментарий