ืืืืืจ ืืงืืื
ืืจืขืืื "ืืืชืืืื" ืฉื ืฉืชื ืืืขืจืืืช ืืืื ื ืืื ืืคื ื ืืื ืจื, ืืื ืืชืงื ืช ืชืืื ืืช ืื ืกืงืจืืคืืื ื ืืกืคืื. ืืืคืืฉ ืืืืื ืืืืจ ืื ืื ืืจืื ืคืชืจืื ืืช ืืคืฉืจืืื, ืืื ืืกืชืื ืืขืืืื ืืืขืืืช ืืช ืืกืงืจืืคืืื (ื-Pyha, Bash, Python ืืื') ืืฉืจืช, ืืชืฉืืื. ืจืฆืืชื ืืืืฉื ื ืืืืจ "ืืืืฅ ืืงืืคืกื" - ืืื ืกืงืจืืคืืื ืืืฆืื ืืื ืืืชืงื ืช ืชืืื ื ื ืืกืคืช ืขื ืืฉืจืช ืขื ื ืืืืจ ืืืจืืืื.
ืืืืืชื ืขื ืื ืืกื ืืื 4 ืืื ืขืืืื, ืืื ืืชืืฆืื ืืืืชื ืฉืืื ืืช ืื. ืขืืืื ืืจื ืืืฉืง AMI, ืืืืื ืืจืื ื ืืืื, ืืจืืืจืื, ืืืื ืืฉืื, ืืืืืจ ืืืจืืืื ืืื ืฉืืจ ืืืืืจืืช ืืืงื ืืขืช ื-15 ืืงืืช.
Zabbix 4.4 ืืืื, ืืขืจื 100 ืืชืืืืช ืฉื ืืืืืืช ืืจืกื 13. ืืืง ืืืืจืืืืืช ืืืืขืืช ืขื ืืืฉืง ืืืื ืืจื ื ืฉื FreePBX, ืืืงื ืขื ืงืื ืกืืื ืืฉืืคื, ืฉืื ืืจืืงืื ืืืื ืืืจืฆืื ืืืืฆืขืืช ืชืืื ืืช ืืืื.
ืงืืืช ื ืชืื ืื ืืืืจืืืืื
ืื ืงืืื ืืจืืฉืื ื ืืืขืืงืจืืช ืฉืฆืจืื ืืคืชืืจ ืืื ืืฉืืช ื ืชืื ืื ืขื ืขืืืชืื ืืจืืฉืืื SIP. ืืฆืืจื ืื, ืืืจืืืืื ืืฉ ืืืฉืงื ืงืื ืกืืืืช AGI, AMI, ARI ื-SSH. ืืกืืืืช ืืจืืจืืช, ืื ืฉืงืืชื ืืืืืืื ื ืืกืคืื.
ืจืืฉืืช ืขืืื ื ืืืืื ืื ืื ื-agi, ami, ari...
- AGI - ืฉืืืืฉ ืืกืงืจืืคืืื ื-dialplan. ืืฉืืฉ ืืขืืงืจ ืื ืืืื ืฉืืืืช.
- AMI - ืืืื ืืกืคืง ืืช ืื ืืืืืข ืืืจืืฉ, ืขืืื ืืจื ืืฆืืื 5038, ืืืืื ื-Telnet. ืืชืืื ืื ื!
- ARI - ืืืืจื ื, ืืืคื ืชื, JSON. ืืฉ ืืจืื ืืคืฉืจืืืืช, ืคืืจืื ืื ืชืื ืื ืืืื ืขืืืจ Zabbix, ืืื ืืืืื ืชื ืืื ืขืืงืจ: ืื ืืคืฉืจ ืืฉืืื ืืจืืฉืื ืืืืืื. ืืืกืจืื ื ืืกืฃ ืืื ืฉืืขืืืชืื ืืฉ ืจืง ืฉืชื ืืฆืืื ืืงืืื ืื/ืื ืืงืืื ืื, ืื ืื ืืฉ ืืืชืจ ืืฆืืื ืืฉืืืืฉื ืืงืืช ืืืชื ืืืฉืืื ืืขืช โโืืืืืื.
- SSH ืืืื ืืขืฉืืช ืืื, ืืื ืืคืขืืื ืื ืื ืืืชืจ ืืืื "ืกืืืืช ืืืืื ืืืช". ืืฉืืงืืืื ืขืฉืืืื ืืืืืช ืฉืื ืื, ืื ื ืื ืืื ืก ืืืืื.
ืขื ืืืช, ืขื ืื ืืืกืจืื ืืช ืฉืื, ARI ืืืกื 90% ืืื ืฆืจืื ืื ืืืืจ.
ืืืืืงืก ืืืื ื - ืืืืืื ืฉืื
ืื ื ืืืืจ ืืช AMI ืืืื; ืคืขื ืืืฉืืชื ืืขืงื ืืืจ ืืคืกืืื ืืฉืืืืช ืขื ืืืืื ืขื ืืื ืืฉืจืืื ืืจืืืงืื, ื ืืืื ืฉืืืืช ืืื'. ืขื Telnet, ืืื ืื ืืืื ืืจืืจ: ืคืชื ืืช ืืืืืืจ, ืฉืื ืืช ืืคืงืืืืช ืืงืจื ืืช ืืชืืืื. ืื ืื ืฉืขืฉืืชื, ืืื ืืชืืฆืื ืืืืืื ืืืชื.
Telnet ื- Zabbix ืื ืืื ืืงืื ืกืืืช ืืื ืืงืก, ืืื ืงืฆืช ืืืชืจ ืคืฉืืื ืืืืชืืืช ืืืจืฉืื ืกืื ืืจืืืช ืืื ืื ืืกื/ืกืืกืื. ืื ืืืืืื ืืืจืฉืื ืฉืื ื, ืืืื ืืงืฉื ืืืื ืื ืืกื/ืกืืกืื, ืืชืจืืฉืช ืฉืืืื. ืืืืจ ื ืืกืืื ืืช ืขืงืจืื ืืขืงืืฃ ืืช ืืจืืฉืช ืืืจืฉืื, ืืื ืฉืืืืฉื ืืืกืชืื ืขื ืงืื ืืืงืืจ ืฉื ืืืืื Telnet.
ืืื ืชื ืฉืขื ืฉืื ืชืืื ืืงืฉืช ืื ืืกื ืืกืืกืื ืืกืืจืชืืช, ืื ื ืื ืืชืงืื. ืกืชื ืืฉืืื ืืืืฃ, ืืกืจืชื ืืช ืื ืื ืฉืงืฉืืจ ืืืจืฉืื ืืืงืื ืืืจืืืชื ืืื ืืืืฉ. ืขืืื! ืืื ืื ืื ืขืืื ืืืจืืฉืืช. ืื ืขื ืืโฆ
ื ืืืืจ ืืืืคืืฉ
ืงืจืืชื ืฉืื ืืช ืืชืืขืื ืฉื ARI, ืืคืขืืชื ืืืืงืืช ื ืืกืคืืช - ืืื ืืื ืจืืฉืืื ืืืืื. ืืฉ ืกืขืืืืช, ืืฉ ืฉืืืืช, ืืฉ ืืื ืกืืื, ืืื ืืื ื ืจืฉืืื. ืืฉืื ืืกืืื ืืคืืื ืืฉืืชื, ืืื ืื ืื ื ืืืืช ืฆืจืืืื ืจืืฉืื ื ืฉืจืื?
ืืฆืืจืืฃ ืืงืจืื ืืฆืืืง, ืืจืืข ืื ืืืืขื ืืงืฉื ื ืืกืคืช ืืืืฉืชืืฉ, ืขื ืืขืื ืืฉืืืืช ืืืฆืืืช. ืืืขืื ืืืืชื ืฉืืจืืฉืื ืืืืืื ืงืคื ืื ืคืชืจื ืขื ืืื ืืคืขืื ืืืืฉ ืฉื ืืืืืื.
asterisk -rx "sip reload"
ืื ืืืื ื ืืืจ ืืืฉืช ื-AMI ืืจื ืืืื ืืจื ื: ืื ืืคืชืืจ ืืช ืื ืืืขืืืช, ืืฉืืชื. ืื ื ืืชืืื ืืืคืืจ ืืืืืื ืืื, ืืืืฉ ืฉืืจืช ืืืืคืืฉ ืืจืืฉืื ื ืืืืืื ืืชืืขืื ืืจืฉืื ืฉื ืืืืืืืช, ืฉืืืืจ ืฉืืฉ ืืคืฉืจืืช ืืืฉืืืืช ืฉืื ืืืคืขืืช ืืืื ืืจื ื ืืงืืืฅ /etc/asterisk/manager.conf, ืฉืฆืจืื ืืืืืืจ ื-YES, ืืงืืข [ืืืื]
ืืืืจ ืืื, ืืืืฆืขืืช ืืงืฉื ืืื ืืจื ืืืช ืจืืืื ืฉื ืืืืคืก
ืืขืช ืฉืืืืฉ ืืืืฉืง FreePBX, ืืื ื ืืืื ืืืคืขืื ืืคืฉืจืืช ืื ืืจื ืืืื ืืจื ื; ืขืืื ืืืคืขืื ืืืชื ืืจื ืืืกืืฃ ืขื ืืื ืืืฆืืข ืฉืื ืืืื ืืงืืืฅ manager.conf. FreePBX ืืื ื ืืืืงืช ืืืชื ืืืฉืจ ืืชืืฆืขืื ืฉืื ืืืื ืืชืฆืืจื ืืจื ืืืื ืืจื ื.
ืขืืืชื ืขื ืกืืืื ืฉืื ืื ืฉื ืืื ืืืจืฆืืืช ืฉื ืืืืืืช ืืืฉื ืืื ืจื, ืื ืืขืืื ืื ืจืืืชื ืชืืื ื ืื ืืืืืจืช ืืฉืื ืืงืื. ืืืคืชืขืชื ืฉืืฃ ืืื ืื ืืชืืจ ืืช ืืฉืืื ืืื ืฉื ืืื ืืจืืงืฆืื ืขื ืืืจืืืืื. ืื ืืคืืื ืืื ืฉืืืืฉื ืืืืืื ืืืคืฉ ืืืืข ืขื ื ืืฉื ืื: ืืื ืืืขื ืืืื ืื ืฉืืื ืฉืืืฉ ืืืฉืืืืช ืฉืื ืืช ืืืืืืื.
WEB AMI - ืืืื ืืื?
ืืืกืคืช ืืคืฉืจืืช ืืืคืขืืช ืืืื ืืจื ื ืืชืืืง manager.conf ืกืืคืงื ืืืฉื ืืืื ืื ืืืื ATS ืืจื ืืืื ืืจื ื. ืื ืืคืงืืืืช ืืืืื ืืช ืืจื AMI ืจืืื ื ืืฆืืืช ืืขืช ืืืื ืืจื ื, ื ืืชื ืืืืืื ืืืืจืืขืื ืืืืจืืืืื ืืจื ืฉืงืข. ืขืงืจืื ืืคืขืืื ืืื ื ืฉืื ื ืืืงืื ืกืืื AMI. ืืืืจ ืืคืขืืช ืืคืฉืจืืช ืื, ืชืืื ืืืฆืืจ ืงืฉืจ ืขื ืืืจืืืื ืืืชืืืืช ืืืืืช:
ืืื ืืฉืืชื: "ืื ืืคืชืจืื! ืขืืฉืื ืืื ืืืื ืืืื! ืกืืืืช ืืืืื ืงืื", ืืื ืื ืืื ืืืงืื ืืื ืืฉืืื. ืืื ืืงืื ืืช ืืืืืข ืืืจืืฉ ืื ื, ืืกืคืืง ืืืฉืชืืฉ ืืืงืฉืช GET ืขื ืืคืขืืื ืื ืืจืฉืช ืคืขืืื, ืฉืืชืืืื ืืืืืจื xml ืขื ืจืฉืืื ืฉื ืื ืืจืืฉืืืื ืืืกืืืืก ืฉืืื. ืื ืื ื ืืืจ, ืืื ืืชื ืฆืจืื ืืจืฉืื ืืื ืืืืืจ ืืช ืืคืืืฉื ืืืขืืืืื. ืืฉืืชื ืืืืง ืืืคืืคื, ืืชื ืื ืืืฉื ืขื ืืชืืืื ืืื.
ืชืืืื ืืจืฉืื
ืจืืฉืืช ืื ื ืืชืืืืกืื ืืืชืืืช
https://ats:8089/mxml?action=login&username=zabbix&secret=zabbix
Host: ats:8089
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
ืชืฉืืื:
GET: HTTP/1.1 200 OK
Server: Asterisk/13.29.2
Date: Thu, 18 Jun 2020 17:41:19 GMT
Cache-Control: no-cache, no-store
Content-type: text/xml
Set-Cookie: mansession_id="6f5de42c"; Version=1; Max-Age=600
Pragma: SuppressEvents
Content-Length: 146
<ajax-response>
<response type="object" id="unknown">
<generic response="Success" message="Authentication accepted"/>
</response>
</ajax-response>
ืืื ืืขืืื ืฉื ืืชื ืฆืจืื mansession_id="6f5de42c", ืืืืืจ ืงืืืฅ ื-Cookie ืฉื ืืืจืฉืื ืขืฆืื.
ืชืืื ืฉืืชื ืจืง ืฆืจืื ืืืืืง ืืช ืืชืฉืืื "ืืืืืืช ืืชืงืื" ืืืืจ ืืื, ืขืืืจ ืื ืืฉืืืืช ืืฉืจืช ืืืจืืืื, ื ืฆืืจื ืืืืกืืฃ ืงืืืฅ Cookie ืฉื ืืจืฉืื ืืืงืฉื.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"
ืงืจื ืืืฆื ืืงืื ืงืืืฅ Cookie ืฉื ืืจืฉืื ืืืืฉืชืืฉ ืื ืืืงืฉืืช ืืืจืืช ืืื: "
ืืื ืืืฆืืจ ืจืืืื ืืขืงื ื- Zabbix ืืฉืชืืฉ ืืืืืื ืืืืืืื.
ืืืืื ืืืืืืื
ืืื ืืืืืช ืืืืคื ืืืืืืื ืจืืฉืืืื ืืืขืงืื ืืืจ ืืฆืื ืขืืืชืื, ืขืืื ืืืฆืืจ ืงืฉืจ ืขื ืืืชืืืช ืืืื:
ืืชืืืื, ืืืจืืืื ืืืืืจื ืื ื ืชืืืืช XML:
<ajax-response>
<response type="object" id="unknown">
<generic response="Success" eventlist="start" message="Registrations will follow"/>
</response>
...
<response type="object" id="unknown">
<generic event="RegistryEntry" host="login.mtt.ru" port="5060" username="111111" domain="login.mtt.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="222222" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
<response type="object" id="unknown">
<generic event="RegistryEntry" host="voip.uiscom.ru" port="5060" username="333333" domain="voip.uiscom.ru" domainport="5060" refresh="105" state="Registered" registrationtime="1592502142"/>
</response>
...
</ajax-response>
ืืฉ ืืจืื ืืื ืืชืืืื, ืื ืืขืืืื ืืงืืื ืื ืื ื ืืกื ื ืื ืืืชื ืืคื ืชืื ืืช Xpath: //response/generic[@host]
ืืื ืืชืืื ืืืืฃ. ืืื ืืขืืื ืขื ืืืืื ืืืืฆืืจ ืืืืคื ืืื ืื ืืืื ืืื, ืืชืืืื ืืืืืช ืืืืืช ืืคืืจืื JSON. XML ืืื ื ื ืชืื ืขืืืจ ืืืืื ืืืืืืื.
ืืื ืืืืืจ XML ื-JSON, ืืืืชื ืฆืจืื ืืฉืืง ืงืฆืช ืขื ืืืืคื ืืืืืืืืช, ืืฉืืื ืื ืขืฉืืชื ืกืงืจืืคื ื-JS
ื ืงืืื ืืขื ืืื ืช: ืืชืืืืช ATS, ืื ืืคืจืืืจืื ืืืงืคืื ืืืจืืืืช ืืืืืืช, ืืืืืจ ืืืืช ืืชืื ืืช //response/generic[@host] ืื ืืืืืคืื ืืืคืืืื.
ืืื ืืืฆืืจ ืืืื ืืื, ืื ื ืืฉืชืืฉืื ืืืฉืชื ืื ืืชืืืืช ื-XML (ืืืื JSON)โ.
ืจืืฉืื SIP
ืขืืืจ ืจืืฉืื ืืืืื ืื ื ืืฉืชืืฉืื ืืฉืืืฉื ืืฉืชื ืื: ืฉื ืืฉืชืืฉ, ืืืืจื, ื ืื. ืืืืชื ืืจืืฆื ืืืฉื ืฉื ืืืืื ื [ืืืื ืืืื"ื]: 5060, ืื ืืฆืืชื ืืฆืืื ืฉืืื ืืชื ืฆืจืื ืืืฉืชืืฉ ืืื ืืืฉืช ืืืฉืชื ืื.
ืืืืื ื ืืขืืงืจื ืฉืืงืื ืืืืข ืขื ืื ืืืจืฉืืืช, ืืืืืืช - AMI SIPshowregistry. ืคืขื ืืืงื ืืื ืฉืืื ืืงืฉืช GET ื
ืืฉืืืงืชื ืขื 100 ืืืื ืืื ืชืืืืื, ืื ืฉืืชื ืื ืืขืืืก, ืืื ืขื 1700 ืืืื ืืื, ืื ื ืชื ืขืืืก ื ืืืจ ืฉื 15 ืฉื ืืืช ืขื ืืืขืื. ืืืืจ ืืืช ืื ืืฉ ืื ืืกืคืจ ืจื ืฉื ืืืื ืืื ืชืืืืื.
ืืืคืฉืจืืช "ืืคืืจ" ืืช ืืขืืืก ืื ืืืืืืจ ืชืืจื ืกืงืจ ืฉืื ืื ืขืืืจ ืืืื ื, ื ืืชื ืืืขืืืจ ืืช ืืืืืื ืืขืืืื ืืื ืืืื ื ืื ืคืจื.
ืื ื ืื ืืืืกื ืืช ืืืืืข ืฉืืชืงืื ืืืืื ื ืืจืืฉื. ืจืืฉืืช, ืื ื ืื ืจืืื ืฆืืจื ืืื, ืืฉื ืืช, ืื ืืชืืืื ืืื ืืืชืจ ื-64K, ืื Zabbix ืื ืชืงืช ืืช ืื.
ืืืืืื ืฉืื ื ืืฉืชืืฉืื ืืชืืืืช XML ืืืื ืขืืืจ ืืืืื ื ืืชืืื, ืขืืื ื ืืงืื ืืช ืืขืจื ืฉื ืืืื ื ืื ืืขืืืื ืืงืืื. ืืจื Xpath ืื ื ืขืฉื ืื:
string(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ ืืืื ื)
ืขืืืจ ืกืืืืกื ืจืืฉืื, ืื ืืฉืชืืฉืชื ืืกืืืืกื ืืงืกื, ืืื ืืืจืชื ืืืชื ืืฆืืจื ืืกืคืจืืช ืืืืฆืขืืช JavaScript:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
SIP Peers
ืืื ืืืืื ืืจืืฉืืื SIP, ืืฉื ื ืืจืืื ืขืืงืจื ืฉื Asterisk - AMI SIPshowregistry, ืฉืืืื ืืชืืืกืคืื ืชืืืืื.
ืื ืืืฆืจ ืฉื ื ืืืื ืืื ืชืืืืื:
- ืกืืืืก ืขืืืช ืืฆืืจืช ืืงืกื
- ืืื ืชืืืื ืฉื ืืืืฉืืจ - ืื ืืืฆื ืืกืืจ, ืืื ืืชืืืื ืฉื ืืืืฉืืจ ื ืืชื, ืืืจืช "-1"
ืืืจื ืื ืืืืื ื ืขืฆืื ืืขื ืืืชืจ ืคืฉืืื Xpath:
string(//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)
ืขืืืจ ืืืืื ื ืืฉื ื ืืฉืชืืฉืชื ื-JavaScript ืืื ืืืคืจืื ืืื ืชืืืื ืืกืืืืก ืขืืืช, ืืืืืื ืฉืื ืืืืืกื ืื ืืื:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}
ืืกืงื ื
ืคืชืจืื ืืืืฅ ืืงืืคืกื ืืืื ืืืืืช ืืืจืื ืืื ืืจืืจ ืืื. ืืืืืจ ืืช ืืืืืฉืืช ืืื ืืืืืช ืืื ืืขืจืืืช ืฉืื ืืช
ืืฉืชืืืืช ื ืขืืื ืืงืื ืืืืื! ืชืื ืืช ืืืืจืืืช ืืืืืจื
ืืงืืจ: www.habr.com