{"id":30399,"date":"2019-10-31T21:35:20","date_gmt":"2019-10-31T18:35:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/voip-zoopark-provisioning\/"},"modified":"2019-10-31T21:35:20","modified_gmt":"2019-10-31T18:35:20","slug":"voip-zoopark-provisioning","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/voip-zoopark-provisioning","title":{"rendered":"VoIP Zoo - Provisioning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h4>Introduction<\/h4>\n<p>\nOnce, the management approved an experiment to implement IP telephony in our office. Since my experience in this area was minimal, the task sparked significant interest in me, and I delved into the study of various aspects of the issue. After my deep dive, I decided to share the knowledge I gained, hoping it would be useful to someone. So...<\/p>\n<h4>Source Data<\/h4>\n<p>\nAsterisk was chosen and deployed as the IP PBX. The phone fleet consists of Cisco 7906g, Panasonic UT-KX123B, Grandstream GXP1400, Dlink DPH-150S(E)\/F3, Yealink T19, and T21 devices. Such a variety was chosen to experiment with different options and create my perspective on the price\/quality\/convenience ratio.<\/p>\n<h4>Task<\/h4>\n<p>\nMaximally simplify and unify the process of setting up new devices. All phones should be synchronized by time, have a phonebook loaded from <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/dts-los-angeles\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3475\">server<\/a> and provide access to settings for the administrator.<\/p>\n<p>The solution to this task is straightforward \u2014 implement automatic phone configuration, known as Provisioning. In fact, this article will focus on my implementation of this wonderful feature.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Configuring tftpd, dhcpd<\/h4>\n<p>\nTo distribute settings to the phones, I chose tftp as a universal option, supported by all platforms, easy to set up and manage.<\/p>\n<p>No specific setup for tftp was required. I installed the standard tftpd and placed all necessary files in its root directory.<br \/>\nI organized the configuration files by directories according to the phone manufacturer. However, the Cisco device didn\u2019t access its folder, so it had to be stored in the root.<\/p>\n<p>To indicate to the phones the location of the tftp server, I used option-66. Additionally, I divided them into separate classes by manufacturer. Each class received its segment of addresses and an individual folder for configuration files. By the way, devices from D-link had to be identified by MAC addresses since they do not provide manufacturer information in the dhcp request.<\/p>\n<p><b class=\"spoiler_title\">Fragment of dhcpd.conf<\/b><\/p>\n<pre># \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \noption option-66 code 66 = text;\n\nclass &quot;panasonic&quot; {\n\tmatch if substring (option vendor-class-identifier,0,9) = &quot;Panasonic&quot;;\n\toption option-66 &quot;10.1.1.50\/panasonic\/&quot;;\n}\nclass &quot;cisco&quot; {\n\tmatch if substring (option vendor-class-identifier,0,36) = &quot;Cisco Systems, Inc. IP Phone CP-7906&quot;;\n\toption option-66 &quot;10.1.1.50\/cisco\/&quot;;\n}\n\nclass &quot;grandstream&quot; {\n match if substring (option vendor-class-identifier,0,11) = &quot;Grandstream&quot;;\n option option-66 &quot;10.1.1.50\/grandstream\/&quot;;\n}\n\nclass &quot;dlink&quot; {\n\tmatch if (binary-to-ascii (16,8,&quot;:&quot;,substring(hardware,1,4)) = &quot;c8:d3:a3:8d&quot;) or\n\t(binary-to-ascii (16,8,&quot;:&quot;,substring(hardware,1,4)) = &quot;90:94:e4:72&quot;);\n\toption option-66 &quot;10.1.1.50\/dlink\/&quot;;\n}\n\nclass &quot;yealink&quot; {\n                match if substring (option vendor-class-identifier,0,7) = &quot;Yealink&quot;;\n                option option-66 &quot;10.1.1.50\/yealink\/&quot;;\n        }\n\n<\/pre>\n<p>Phones had to be forcibly excluded from the general pool. Otherwise, they refused to go to their 'frog pond'.<br \/>\n<b class=\"spoiler_title\">Subnet configuration example<\/b><\/p>\n<pre>\nsubnet 10.1.1.0 netmask 255.255.255.0 {\n        option routers 10.1.1.1;\n        pool {\n                deny members of \"cisco\";\n                deny members of \"panasonic\";\n                deny members of \"dlink\";\n                range 10.1.1.230 10.1.1.240;\n        }\n        pool {\n                allow members of \"cisco\";\n                range 10.1.1.65 10.1.1.69;\n        }\n        pool {\n                allow members of \"panasonic\";\n                range 10.1.1.60 10.1.1.64;\n        }\n        pool {\n                allow members of \"dlink\";\n                range 10.1.1.55 10.1.1.59;\n        }\n}\n<\/pre>\n<p>After restarting all involved services, the phones confidently directed their settings to the designated tftp server. All that was left was to place them there.<\/p>\n<h4>Cisco 7906<\/h4>\n<p>\nI received these devices in factory packaging. I had to reflash them to get them to work with Asterisk. But that's a different story. In this specific case, to configure the device, I created a file SEPAABBCCDDEEFF.cnf.xml in the root of the TFTP server, according to the instructions. Where AABBCCDDEEFF is the device's MAC address.<\/p>\n<p>There have been many writings about configuring Cisco phones, so I will simply leave the working configuration file.<br \/>\n<b class=\"spoiler_title\">Settings for Cisco<\/b><\/p>\n<pre>\ntrue\n SIP\n root\n ADMIN_PWD\n\n \n D-M-Y\n Central Pacific Standard Time\n     \n         \n             10.1.1.4\n              Unicast\n          \n     \n \n\n   \n 10.1.1.50\n \n 2000\n 5060\n 5061\n \n 10.1.1.50\n   \n \n\n Disable\n\n\n120\n \n\n \n true\n x-cisco-serviceuri-cfwdall\n x-cisco-serviceuri-pickup\n x-cisco-serviceuri-opickup\n x-cisco-serviceuri-gpickup\n x-cisco-serviceuri-meetme\n x-cisco-serviceuri-abbrdial\n false\n 2\n true\n true\n 2\n 2\n 0\n true\n false\n \n \n 6\n 10\n 180\n 3600\n 5\n 120\n 120\n 5\n 500\n 4000\n 70\n true\n None\n \n1\n false\n true\n false\n false\n none\n 101\n 3\navt\n 3\n false\n false\n Cisco Phone\n 2\n false\n 15000\n10\n true\n false\n 16384\n 32766\n\n \n 9\n 10.1.1.50\n 5060\n  2 \n 3\n false\n 3\n \n 4\n 5\n \n true\n true\n false\n true\n \n\n User #103\n 103\n 103\n SIP_PWD\n \n \n$num\n5060\n 184\n 0\n dialplan.xml\n \n\n *0#\n true\n 2\n \n\n\n false\n false\n 1\n 0\n 1\n 0\n 0\n 0\n 1\n 0\n 1,7\n 09:00\n 12:00\n 01:00\n 1\n 2\n 10.1.1.50\n 0\n 100\n 50\n \n 0\n 0\n 5\n 1\n 10.1.1.50\n 0\n 0\n 0\n 0\n 0\n 0\n 1\n 1\n \n1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37\n\n Russian_Russian_Federation\n ru_RU\n \n utf-8\n \n\n \n \n \n \n1\n 0\n \n http:\/\/10.1.1.50\/provisioning\/cisco-services.xml\n \n \n \n \n http:\/\/10.1.1.50\/provisioning\/cisco-services.xml\n 96\n 0\n 96\n 2\n 0\n 0\n \n 3804\n &lt;!-- 10.1.1.50 --&gt;\n  \n\n false\n 1\n<\/pre>\n<p><\/p>\n<h4>D-Link DPH-150S\/F3<\/h4>\n<p>\nIf you're about to purchase a phone from this series, be cautious, as auto-configuration is supported only in the 150S\/F3 model. In the 150S\/F2 device that came into my hands, I did not find such functionality.<\/p>\n<p>The configuration file can be in either xml format or plain text. For xml, there is one requirement: the tag must be at the beginning of the line; otherwise, the parser will ignore it and the corresponding parameter value will not change.<\/p>\n<p>To configure the phone, two files are used. f0D00580000.cfg \u2014 to store the settings for all phones, and 00112233aabb.cfg (MAC address in lowercase) for individual settings. Individual settings, of course, take precedence.<\/p>\n<p>The complete set of settings contains more than a thousand lines; to avoid cluttering the article, I will describe the minimum sufficient set of settings. <\/p>\n<p>The mandatory elements are the root node <b>VOIP_CONFIG_FILE<\/b> and the embedded node <b>version<\/b>. Settings will be applied only if the file version is higher than the current settings in the device. This value can be found through the web interface of the phone in the maintenance section (system management). For factory-default phones, in both cases, this is 2.0002. Additionally, the version of the individual file must be higher than the version of the general file.<\/p>\n<p>First, I will present the file with the general configuration for all phones. Essentially, it contains all settings; the individual file will only manage the phone number and the display text. <\/p>\n<p>In the two blocks below, the time zone and time synchronization parameters are set, the initial port for RTP is established, and a network bridge between the WAN and LAN ports of the device is enabled.<\/p>\n<p><b class=\"spoiler_title\">Fragment #1<\/b><\/p>\n<pre>\nDHCP\n2\n1\n1\n0\nVOIP\n10000\n200\n10.1.1.4\n1\n<time>71<\/time>\n<time>UCT_011<\/time>\n0\n60\n12\n1500\n\n\n1\n1\n<\/pre>\n<p>The names of the configuration parameters are quite self-explanatory, so there's no need for detailed descriptions.<br \/>\n<b class=\"spoiler_title\">SIP for a single line<\/b><\/p>\n<pre>\n5060\n\n\nSIP1\n10.1.1.50\n5060\n3600\n1\n10.1.1.50\n1\n0\nG711A,G711U,G722\n<\/pre>\n<p><b class=\"spoiler_title\">Remote management settings<\/b><\/p>\n<pre>\n23\n80\n0\n443\n1\n0\n\n\n\nItem1\n10.1.1.152\n10.1.1.160\n\n\n\n\nAccount1\nadmin\nADMIN_PWD\n10\n\n\nAccount2\nguest\nGUEST_PWD\n5\n<\/pre>\n<p><b class=\"spoiler_title\">Phone settings<\/b><\/p>\n<pre>\n<menu>123<\/menu>\n123\n\n0\n112\nCompany\n5\n1\n30\n0\n<time>0<\/time>\n1\n0,,1\n0\n0\n1\n\n\nXML-PBook1\nPhonebook\nhttp:\/\/10.1.1.50\/provisioning\/dlink-phonebook.xml\n:\n0\n0\n\n\nfriend,home,work,business,classmate,colleague\n<\/pre>\n<p>All other settings will remain 'default'. Now, any Dlink phone connected to the network will immediately accept the common set of parameters. To set individual parameters for a device, a separate file is needed. This file should only specify the necessary settings for the individual subscriber.<br \/>\n<b class=\"spoiler_title\">subscriber settings<\/b><\/p>\n<pre>\n2.0006\n\n\n\nSIP1\nUser #117\n117\n5060\n117\nSIP_PWD\n3600\n1\n5060\n117\nSIP_PWD\n<\/pre>\n<h4>Panasonic UT-KX123B<\/h4>\n<p>\nThese devices receive settings in a slightly different manner. The configuration is stored in text files. The maximum size of a configuration file is 120 KB. Regardless of the number of files, their total size must not exceed 120 KB.<br \/>\nThe configuration file consists of a set of lines, subject to the conditions specified below:<\/p>\n<ul>\n<li>The first line is always a comment line, which must include the following sequence of characters (44 bytes):<br \/>\n# Panasonic SIP Phone Standard Format File #<br \/>\nThe hexadecimal representation of this sequence is:<br \/>\n23 20 50 61 6E 61 73 6F 6E 69 63 20 53 49 50 20 50 68 6F 6E 65 20 53 74 61 6E 64 61 72 64 20 46 6F 72 6D 61 74 20 46 69 6C 65 20 23<br \/>\nTo prevent accidental alteration of the specified character sequence, it is recommended to start the configuration file with a line:<br \/>\n# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!\n<\/li>\n<li>Configuration files must end with an empty line.<\/li>\n<li>Each line must end with the sequence \"\".<\/li>\n<li>The maximum line length is 537 bytes, including the sequence \"\".<\/li>\n<li>The following lines are ignored:\n<ul>\n<li>lines exceeding the limit of 537 bytes;<\/li>\n<li>empty lines;<\/li>\n<li>comment lines that start with the character \"#\";<\/li>\n<\/ul>\n<\/li>\n<li>Each parameter line is recorded in the form XXX=\"yyy\" (XXX: parameter name, yyy: its value). The value must be enclosed in double quotes.<\/li>\n<li>Breaking the parameter line into multiple lines is not allowed. This will lead to a configuration file processing error and consequently a failure to initialize.<\/li>\n<li>Values of some parameters need to be specified separately for each line. The parameter with the suffix \"_1\" in the name is for line 1; \"_2\"\u2014 for line 2, and so on.<\/li>\n<li>The maximum length of a parameter name is 32 characters.<\/li>\n<li>The maximum length of a parameter value is 500 characters, excluding double quote characters.<\/li>\n<li>Spaces in the string are not allowed except when the value includes a space character. <\/li>\n<li>Some parameter values can be specified as 'empty' to set a parameter to an empty value.<\/li>\n<li>Parameters are specified without a specific order.<\/li>\n<li>If the same parameter is specified more than once in the configuration file, the first specified value will be used.<\/li>\n<\/ul>\n<p>Such a serious set of requirements for the configuration file honestly disappointed me. In my opinion, the interaction with <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/dts-prohoster\/\"   title=\"proxy server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2960\">proxy server<\/a> management for Panasonic phones is extremely inconvenient. By this parameter, the phone significantly lags behind others.<br \/>\nUpon first boot (or after a factory reset), the device tries to load the so-called product file (in this case it is KX-UT123RU.cfg), which should contain the paths to the other configuration files.<br \/>\n<b class=\"spoiler_title\">Product file<\/b># Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!<\/p>\n<p>CFG_STANDARD_FILE_PATH=\"tftp:\/\/10.1.1.50\/panasonic\/{mac}.cfg\"<br \/>\nCFG_PRODUCT_FILE_PATH=\"tftp:\/\/10.1.1.50\/panasonic\/KX-UT123RU.cfg\"<br \/>\nCFG_MASTER_FILE_PATH=\"tftp:\/\/10.1.1.50\/panasonic\/master.cfg\"<\/p>\n<p>After this, the phone will display a message about the successful completion of preparation and will wait for a reboot. Only after rebooting will it begin to process its configuration files.<\/p>\n<p>In the master.cfg file, it's recommended to specify common settings for all phones. As with Dlink, I will mention only a few parameters. The names of other parameters and their values can be found in the manufacturer's documentation.<br \/>\n<b class=\"spoiler_title\">master.cfg<\/b>############################################################<br \/>\n# System Settings #<br \/>\n############################################################<br \/>\n## Login Account Settings<br \/>\nADMIN_ID=\"admin\"<br \/>\nADMIN_PASS=\"ADMIN_PWD\"<br \/>\nUSER_ID=\"user\"<br \/>\nUSER_PASS=\"USER_PWD\"<\/p>\n<p>## System Time Settings<br \/>\nNTP_ADDR=\"10.1.1.4\"<br \/>\nTIME_ZONE=\"660\"<br \/>\nDST_ENABLE=\"N\"<br \/>\nDST_OFFSET=\"60\"<br \/>\nDST_START_MONTH=\"3\"<br \/>\nDST_START_ORDINAL_DAY=\"2\"<br \/>\nDST_START_DAY_OF_WEEK=\"0\"<br \/>\nDST_START_TIME=\"120\"<br \/>\nDST_STOP_MONTH=\"10\"<br \/>\nDST_STOP_ORDINAL_DAY=\"2\"<br \/>\nDST_STOP_DAY_OF_WEEK=\"0\"<br \/>\nDST_STOP_TIME=\"120\"<br \/>\nLOCAL_TIME_ZONE_POSIX=\"\"<\/p>\n<p>## Syslog Settings<br \/>\nSYSLOG_ADDR=\"10.1.1.50\"<br \/>\nSYSLOG_PORT=\"514\"<br \/>\nSYSLOG_EVENT_SIP=\"6\"<br \/>\nSYSLOG_EVENT_CFG=\"6\"<br \/>\nSYSLOG_EVENT_VOIP=\"6\"<br \/>\nSYSLOG_EVENT_TEL=\"6\"<\/p>\n<p>## Provisioning Settings<br \/>\nOPTION66_ENABLE=\"Y\"<br \/>\nOPTION66_REBOOT=\"N\"<br \/>\nPROVISION_ENABLE=\"Y\"<br \/>\nCFG_STANDARD_FILE_PATH=\"tftp:\/\/10.1.1.50\/panasonic\/{mac}.cfg\"<br \/>\nCFG_PRODUCT_FILE_PATH=\"tftp:\/\/10.1.1.50\/panasonic\/KX-UT123RU.cfg\"<br \/>\nCFG_MASTER_FILE_PATH=\"tftp:\/\/10.1.1.50\/panasonic\/master.cfg\"<\/p>\n<p>############################################################<br \/>\n# Network Settings #<br \/>\n############################################################<br \/>\n## IP Settings<br \/>\nCONNECTION_TYPE=\"1\"<br \/>\nHOST_NAME=\"UT123\"<br \/>\nDHCP_DNS_ENABLE=\"Y\"<br \/>\nSTATIC_IP_ADDRESS=\"\"<br \/>\nSTATIC_SUBNET=\"\"<br \/>\nSTATIC_GATEWAY=\"\"<br \/>\nUSER_DNS1_ADDR=\"\"<br \/>\nUSER_DNS2_ADDR=\"\"<\/p>\n<p>## DNS Settings<br \/>\nDNS_QRY_PRLL=\"Y\"<br \/>\nDNS_PRIORITY=\"N\"<br \/>\nDNS1_ADDR=\"10.1.1.1\"<br \/>\nDNS2_ADDR=\"\"<\/p>\n<p>## HTTP Settings<br \/>\nHTTPD_PORTOPEN_AUTO=\"Y\"<br \/>\nHTTP_VER=\"1\"<br \/>\nHTTP_USER_AGENT=\"Panasonic_{MODEL}\/{fwver} ({mac})\"<br \/>\nHTTP_SSL_VERIFY=\"0\"<br \/>\nCFG_ROOT_CERTIFICATE_PATH=\"\"<\/p>\n<p>## XML Application Settings<br \/>\nXML_HTTPD_PORT=\"6666\"<br \/>\nXMLAPP_ENABLE=\"Y\"<br \/>\nXMLAPP_USERID=\"\"<br \/>\nXMLAPP_USERPASS=\"\"<br \/>\nXMLAPP_START_URL=\"\"<br \/>\nXMLAPP_INITIAL_URL=\" \"<br \/>\nXMLAPP_INCOMING_URL=\"\"<br \/>\nXMLAPP_TALKING_URL=\"\"<br \/>\nXMLAPP_MAKECALL_URL=\"\"<br \/>\nXMLAPP_CALLLOG_URL=\"\"<br \/>\nXMLAPP_IDLING_URL=\"\"<br \/>\nXMLAPP_LDAP_URL=\"<noindex>10.1.1.50\/provisioning\/panasonic-phonebook.xml<\/noindex>\u00bb<br \/>\nXMLAPP_LDAP_USERID=\"\"<br \/>\nXMLAPP_LDAP_USERPASS=\"\"<\/p>\n<p>In the individual configuration file of the device, traditionally only subscriber settings remain.<br \/>\n<b class=\"spoiler_title\">aabbccddeeff.cfg<\/b>DISPLAY_NAME_1=\"User #168\"<\/p>\n<p>PHONE_NUMBER_1=\"168\"<br \/>\nSIP_URI_1=\"168\"<br \/>\nLINE_ENABLE_1=\"Enabled\"<br \/>\nPROFILE_ENABLE_1=\"Enabled\"<br \/>\nSIP_AUTHID_1=\"168\"<br \/>\nSIP_PASS_1=\"SIP_PWD\"<\/p>\n<p><\/p>\n<h4>Grandstream GXP-1400<\/h4>\n<p>\nThe parameters of these phones are stored in a single XML file named cfg{mac}.xml or in a plain text file named cfg{mac}. This phone requests only the individual configuration file, so optimizing settings by moving them to a common file is not possible. Another feature of Grandstream settings is the naming of parameters. All of them are numbered and designated as P###. For example:<\/p>\n<p>P1650 \u2013 controls the web interface for phone management (0 \u2013 HTTPS, 1 \u2013 HTTP)<br \/>\nP47 \u2013 the SIP server address for connection.<\/p>\n<p>If the configuration is stored in a text file, parameters do not require any grouping and can appear in any order. Lines starting with # are considered comments.<\/p>\n<p>If the settings are presented in XML format, they must be nested within the node , which in turn must be nested within . All parameters are recorded as corresponding tags with the parameter value inside.<br \/>\n<b class=\"spoiler_title\">Example configuration<\/b><\/p>\n<pre>\n1\n    <!-- Account Name. Cannot be empty. -->\n    109\n    <!-- SIP User ID -->\n    109\n    <!-- Authenticate ID -->\n    109\n    <!-- Authenticate password -->\n    SIP_PWD\n    <!-- Display Name (John Doe) -->\n    User# 109\n<!-- Common settings -->\n        10.1.1.50\n        2\n   10.1.1.50<!-- line 1 sip server -->\n   0<!-- Line 2 disable -->\n   ADMIN_PWD<!-- admin password -->\n   USER_PWD<!-- user web console pwd -->\n   ru<!-- display lang -->\n        0<!-- Upgrade from TFTP -->\n        10.1.1.50\/grandstream\n   1<!-- lock configuration via phone (basic only)-->\n   TZc-11<!-- timezone -->\n   10.1.1.4<!-- NTP-server -->\n        1<!-- Download PB from HTTP -->\n        http:\/\/10.1.1.50\/provisioning\/grandstream<!-- phonebook base url -->\n        30<!-- Auto update PB in 30 min -->\n<\/pre>\n<h4>Yealink T19 and T21<\/h4>\n<p>\nDevices of these models support individual configuration files for devices and common ones for the models. In my case, I had to place the common parameters in the files y000000000031.cfg and y000000000034.cfg respectively. Individual configuration files are named according to the MAC address: 00112233aabb.cfg.<\/p>\n<p>Settings for Yealink devices are stored in text format. The only mandatory requirement is the presence of the version in the first line, in the format #!version:1.0.0.1.<\/p>\n<p>All parameters are recorded in the form of parameter = value. Comments should start with the symbol \"#\". Parameter names and their values can be found in the manufacturer's documentation.<br \/>\n<b class=\"spoiler_title\">common settings<\/b>#!version:1.0.0.1<br \/>\n#Configure the WAN port type; 0-DHCP (default), 1-PPPoE, 2-Static IP Address;<br \/>\nnetwork.internet_port.type = 0<br \/>\n#Configure the PC port type; 0-Router, 1-Bridge (default);<br \/>\nnetwork.bridge_mode = 1<br \/>\n#Configure the access type of the web server; 0-Disabled, 1-HTTP &#038; HTTPS(default), 2-HTTP Only, 3-HTTPS Only;<br \/>\nnetwork.web_server_type = 3<br \/>\n#Configure the maximum local RTP port. It ranges from 0 to 65535, the default value is 11800.<br \/>\nnetwork.port.max_rtpport = 10100<br \/>\n#Configure the minimum local RTP port. It ranges from 0 to 65535, the default value is 11780.<br \/>\nnetwork.port.min_rtpport = 10000<br \/>\nsecurity.user_name.admin = root<br \/>\nsecurity.user_password = root:ADMIN_PWD<br \/>\nsecurity.user_name.user = user<br \/>\nsecurity.user_password = user:USER_PWD<br \/>\n#Specify the web language, the valid values are: English, Chinese_S, Turkish, Portuguese, Spanish, Italian, French, Russian, Deutsch and Czech.<br \/>\nlang.wui = Russian<br \/>\n#Specify the LCD language, the valid values are: English (default), Chinese_S, Chinese_T, German, French, Turkish, Italian, Polish, Spanish and Portuguese.<br \/>\nlang.gui = Russian<br \/>\n#Configure the time zone and time zone name. The time zone ranges from -11 to +12, the default value is +8.<br \/>\n#The default time zone name is China(Beijing).<br \/>\n#Refer to Yealink IP Phones User Guide for more available time zones and time zone names.<br \/>\nlocal_time.time_zone = +11<br \/>\nlocal_time.time_zone_name = Vladivostok<br \/>\n#Configure the domain name or the IP address of the NTP server. The default value is cn.pool.ntp.org.<br \/>\nlocal_time.ntp_server1 = 10.1.1.4<br \/>\n#Configure the logo mode of the LCD screen; 0-Disabled (default), 1-System logo, 2-Custom logo;<br \/>\nphone_setting.lcd_logo.mode = 1<br \/>\n#Configure the access URL and dispaly name of the remote phonebook. X ranges from 1 to 5.<br \/>\nremote_phonebook.data.1.url = <noindex>10.1.1.50\/provisioning\/yealink-phonebook.xml<\/noindex><br \/>\nremote_phonebook.data.1.name = Phonebook<br \/>\nfeatures.remote_phonebook.flash_time = 3600<\/p>\n<p>\n<b class=\"spoiler_title\">individual settings<\/b>#!version:1.0.0.1<br \/>\n#Enable or disable the account1, 0-Disabled (default), 1-Enabled;<br \/>\naccount.1.enable = 1<br \/>\n#Configure the label displayed on the LCD screen for account1.<br \/>\naccount.1.label = Test phone<br \/>\n#Configure the display name of account1.<br \/>\naccount.1.display_name = User 998<br \/>\n#Configure the username and password for register authentication.<br \/>\naccount.1.auth_name = 998<br \/>\naccount.1.password = 998<br \/>\n#Configure the register user name.<br \/>\naccount.1.user_name = 998<br \/>\n#Configure the SIP server address.<br \/>\naccount.1.sip_server_host = 10.1.1.50<br \/>\n#Specify the port for the SIP server. The default value is 5060.<br \/>\naccount.1.sip_server_port = 5060<\/p>\n<p>\nAs a result, thanks to the wonderful auto-provision feature provided in the aforementioned phones, there were no problems connecting new devices to the network. It all boiled down to finding the phone's MAC address and generating a configuration file based on a template. <\/p>\n<p>I hope you read to the end and found the content beneficial.<\/p>\n<p>Thank you for your attention.<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/237951\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043e\u0434\u043e\u0431\u0440\u0438\u043b\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0442\u043e\u0440\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u043e\u0439 \u043e\u043f\u044b\u0442 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0431\u044b\u043b \u043c\u0438\u0437\u0435\u0440\u043d\u044b\u043c, \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0431\u0443\u0434\u0438\u043b\u0430 \u0432\u043e \u043c\u043d\u0435 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0438 \u044f \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0430. \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438 \u2014 \u0432 \u043d\u0430\u0434\u0435\u0436\u0434\u0435, \u0447\u0442\u043e \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043d\u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f. \u0418\u0442\u0430\u043a\u2026 \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 IP-\u0410\u0422\u0421 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-30399","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043e\u0434\u043e\u0431\u0440\u0438\u043b\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0442\u043e\u0440\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/voip-zoopark-provisioning\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47VoIP \u0437\u043e\u043e\u043f\u0430\u0440\u043a \u2014 Provisioning | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043e\u0434\u043e\u0431\u0440\u0438\u043b\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0442\u043e\u0440\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/voip-zoopark-provisioning\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:35:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:35:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47VoIP zoo \u2014 Provisioning | ProHoster","description":"Introduction Once, the management approved an experiment to implement IP telephony in our office.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/voip-zoopark-provisioning","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47VoIP \u0437\u043e\u043e\u043f\u0430\u0440\u043a \u2014 Provisioning | ProHoster","og:description":"\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u041e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043e\u0434\u043e\u0431\u0440\u0438\u043b\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u043f\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043d\u0442\u043e\u0440\u0435.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/voip-zoopark-provisioning","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:35:20+00:00","article:modified_time":"2019-10-31T18:35:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30399","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-22 15:31:07","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:35:24","updated":"2026-02-22 15:31:07","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/30399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=30399"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/30399\/revisions"}],"predecessor-version":[{"id":162001,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/30399\/revisions\/162001"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=30399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=30399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=30399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}