Esihlokweni esedlule
Umqondo "wokwenza abangani" walezi zinhlelo ezimbili wazalwa kudala, ngaphandle kokufaka isofthiwe eyengeziwe noma imibhalo. I-googling esheshayo iveze izixazululo eziningi ezingenzeka, konke kubilisiwe eqinisweni lokuthi layisha imibhalo (nge-Pyha, Bash, Python, njll.) kuseva, futhi uzojabula. Bengifuna ukusebenzisa ukuqapha "ngaphandle kwebhokisi" - ngaphandle kwemibhalo yangaphandle kanye nokufaka isofthiwe eyengeziwe kuseva ngokuqapha kanye ne-PBX.
Ngichithe isamba sezinsuku zokusebenza ezi-4 ngalokhu, kodwa umphumela wawungifanele. Ukusebenza ngesixhumi esibonakalayo se-AMI, ukutholwa kwezinga eliphansi, izicupho, futhi okubaluleke kakhulu, ukuxhuma i-PBX nazo zonke ezinye izilungiselelo manje kuthatha cishe imizuzu eyi-15.
I-Zabbix 4.4 iyatholakala, cishe izingcezu eziyi-100 ze-Asterisk version 13. Amanye ama-PBX eza ne-FreePBX web interface, amanye anekhonsoli engenalutho, inqwaba yamaqhinga nokuhlanganiswa nge-diaplan.
Ukuthola idatha evela ku-PBX
Iphuzu lokuqala neliyinhloko elidinga ukuxazululwa ukuthola idatha mayelana nontanga nokubhaliswa kwe-SIP. Ngale njongo, i-PBX ine-AGI, AMI, ARI kanye ne-SSH console interface. Ngezizathu ezisobala, angizange ngicabangele amamojula engeziwe.
Okokuqala sidinga ukuthola ukuthi lawa ma-agi, ami, ari...
- I-AGI - usebenzisa imibhalo ku-diaplan. Isetshenziselwa kakhulu ukuphathwa kwekholi.
- I-AMI - inganikeza lonke ulwazi oludingekayo, isebenza nge-port 5038, efana ne-Telnet. Kuyasifanela!
- I-ARI - yesimanje, imfashini, i-JSON. Kunamathuba amaningi, ifomethi yedatha iyaqondakala ku-Zabbix, kodwa kimi ayikho into eyinhloko: awukwazi ukulawula ukubhaliswa kwe-sip. Okunye okubi ukuthi kontanga kunezifunda ezimbili kuphela ku-inthanethi/okungaxhunyiwe ku-inthanethi, nakuba kunezifundazwe eziningi futhi kuyasiza ukuzicabangela lapho uxilonga.
- I-SSH ingenza yonke into, kodwa ngezinye izikhathi ayivunyelwe ngenxa "yezizathu zokuphepha". Ukucatshangelwa kungase kwehluke, ngeke ngingene kukho.
Nokho, ngawo wonke amaphutha ayo, i-ARI ihlanganisa amaphesenti angama-90 azo zonke izidingo zokuqapha.
I-Zabbix ne-Telnet - ukudumazeka kwami
Ngiyazi kahle i-AMI; ngesinye isikhathi ngasebenzisa ukulandela ngomkhondo kokulahlekelwa ezingxoxweni nesigaba ngamahhovisi akude, ukuphathwa kwezingcingo, njll. Nge-Telnet, yonke into icacile kakhulu: vula uxhumano, thumela imiyalo futhi ufunde impendulo. Yilokho engakwenza, kodwa umphumela wangidumaza.
I-Telnet ku-Zabbix ayifani nekhonsoli ye-Linux, ilula kancane futhi yakhelwe ukugunyazwa okujwayelekile okufana nokungena/iphasiwedi. Uma i-logic yokugunyaza ihlukile, futhi singekho isicelo sokubhanqwa kokungena/iphasiwedi, kwenzeka iphutha. Ngemva kwemizamo eyize yokweqa imfuneko yokugunyazwa, kube usizo ukubheka ikhodi yomthombo yemojula ye-Telnet.
Ngabona ukuthi kuze kube yilapho kunesicelo sokungena ngemvume nephasiwedi yendabuko, ngeke ngiqhubekele phambili. Ukuze nje ngizijabulise, ngisuse yonke into ehlobene nokugunyazwa kukhodi futhi ngahlanganisa yonke into. Iyasebenza! Kodwa ayihlangabezani nezidingo. Qhubekaβ¦
Masibuyele ekusesheni
Ngifunde kabusha imibhalo ye-ARI futhi, ngenza izivivinyo ezengeziwe - akukho ukubhaliswa kwe-sip lapha. Kukhona amadili, kukhona izingxoxo, kukhona amabhulukwe, kodwa akukho ukubhaliswa. Ngesinye isikhathi ngaze ngacabanga, ingabe siyakudinga ngempela ukubhaliswa kwamanqe?
Ngokuqondana okuhlekisayo, kulo mzuzu kufika esinye isicelo esivela kumsebenzisi, esinenkinga ngamakholi aphumayo. Inkinga yayiwukuthi ukubhaliswa kwe-sip kwakuqanda futhi kwaxazululwa ngokumane kuqalwe kabusha imojuli.
asterisk -rx "sip reload"
Kungaba kuhle ukufinyelela i-AMI ngewebhu: lokho kungaxazulula zonke izinkinga, ngacabanga. Ngiqala ukumba ngale ndlela, futhi empeleni umugqa wokuqala wokusesha uholela emibhalweni esemthethweni ye-asterisk, ethi kukhona inketho yemisebenzi yami. kunikwe amandla kufayela /etc/asterisk/manager.conf, okudingeka ukuthi isethwe ukuze ithi YEBO, esigabeni [okujwayelekile]
Ngemuva kwalokhu, ngesicelo sewebhu esijwayelekile sefomu
Uma usebenzisa i-interface ye-FreePBX, awukwazi ukunika amandla le nketho ngewebhu; udinga ukuyinika amandla ngokusebenzisa ikhonsoli ngokwenza izinguquko kufayela le-manager.conf. I-FreePBX ayiyisuli uma izinguquko zokumisa zenziwa ngewebhu.
Ngisebenze nezinhlobo ezahlukahlukene zokuhlanganiswa kwenkanyezi isikhathi eside, kodwa angikaze ngibone lesi sici sishiwo noma kuphi. Ngamangala ukuthi akekho ochaza le ndlela yokuxhumana ne-PBX. Kwaba usizo nakakhulu ukufuna ulwazi ngalesi sihloko: akukho lutho noma lwalusetshenziselwa imisebenzi ehluke ngokuphelele.
WEB AMI - hlobo luni lwesilo?
Yengeza inketho kunikwe amandla ukufayela umphathi.conf inikeze ukufinyelela okugcwele kubaphathi be-ATS ngewebhu. Yonke imiyalo etholakala nge-AMI evamile manje isikuwebhu, ungakwazi ukulalela imicimbi evela ku-PBX usebenzisa isokhethi. Umgomo wokusebenza awuhlukile ku-console AMI. Ngemva kokuvula le nketho, ungaxhumana ne-PBX kulawa makheli alandelayo:
Ngabe sengicabanga: βLeli ikhambi! Manje konke kuzobe sekulungile! Ulamula kalamula olula kalula,β kodwa kwakusesekuseni kakhulu ukuthi singajabula. Ukuze sithole ulwazi esiludingayo, kwanele ukusebenzisa isicelo se-GET ngesenzo esidingekayo isenzo, okuyimpendulo ebuyisela i-xml nohlu lwakho konke ukubhaliswa nesimo sakhona. Konke lokhu kuhle, kodwa udinga ukugunyazwa ukuze ukhumbule iseshini kusuka kukhukhi. Uma uhlola kusiphequluli, awucabangi ngale nqubo.
Inqubo yokugunyaza
Okokuqala sikhuluma ngekheli
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
Impendulo:
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>
Ukuze usebenze lapho udinga i-id_yendlu="6f5de42c", okungukuthi ikhukhi lokugunyazwa ngokwalo.
Okuqukethwe udinga nje ukuhlola impendulo "Ukuqinisekisa kwamukelwe" Okulandelayo, kuzo zonke izingcingo eziya kuseva ye-PBX, sizodinga ukwengeza ikhukhi eligunyazayo esicelweni.
https://ats:8089/mxml?action=SIPpeers
Host: ats:8089
Connection: close
Cookie: mansession_id="6f5de42c"
Funda ukuthi ulithola kanjani ikhukhi eligunyazwayo futhi ulisebenzise kwezinye izicelo lapha: β
Ukuze ngidale izici zokulandelela ku-Zabbix ngizosebenzisa ukutholwa okuzenzakalelayo.
Ukutholwa okuzenzakalelayo
Ukuze uthole ngokuzenzakalelayo ukubhaliswa futhi ulandelele izifunda zontanga, udinga ukuxhumana nekheli elilandelayo:
Ukuphendula, i-PBX isibuyisela impendulo ye-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>
Kunodoti omningi empendulweni, ngakho-ke ekuyicubunguleni ngaphambili siyayihlunga ngesifanekiso I-XPath: //response/generic[@host]
Bese kuqala ubumnandi. Ukuze usebenze ngokuthola nokudala ama-elementi ashukumisayo, impendulo kufanele ibe ngefomethi ye-JSON. I-XML ayisekelwe ekutholweni okuzenzakalelayo.
Ukuguqula i-XML ibe yi-JSON, bekufanele ngidlale kancane ngokushintshanisa okuzenzakalelayo, engenze khona umbhalo nge-JS.
Iphuzu elithakazelisayo: ekuphenduleni kwe-ATS, yonke imingcele izungezwe izingcaphuno ezilodwa, futhi ngemva kokusebenzisa ithempulethi. //response/generic[@host] bathathelwa indawo ngababili.
Ukwakha izakhi, sisebenzisa okuguquguqukayo okuvela empendulweni ye-XML (manje eyi-JSON).
I-SIP Registry
Ukubhaliswa kwe-sip sisebenzisa okuguquguqukayo okuthathu: igama lomsebenzisi, Bamba, Imbobo. Ngajabula ngegama lesici [i-imeyili ivikelwe]: 5060, angitholanga noma yiziphi izimo lapho udinga ukusebenzisa zonke eziguquguqukayo ezinhlanu.
Isici esiyinhloko esithola ulwazi mayelana nakho konke ukubhaliswa, Inkanyezi - AMI SIPshowregistry. Kanye ngomzuzu yenza isicelo se-GET ku
Lapho ngihlola izakhi ezincike ku-100, angizange ngiqaphele umthwalo, kodwa ngezakhi ze-1700, lokhu kunikeze umthwalo obonakalayo we-15 wesibili ku-processor. Gcina lokhu engqondweni uma unenani elikhulu lezinto ezincikile.
Njengenketho "yokusabalalisa" umthwalo noma ukusetha amafrikhwensi okuvota ahlukene ento ethile, ungahambisa ingqondo yokucubungula uye ku-elementi ngayinye ngokuhlukile.
Angilugcini ulwazi olutholiwe kusici esiyinhloko. Okokuqala, angisiboni isidingo salokhu, futhi okwesibili, uma impendulo ingaphezu kuka-64K, i-Zabbix iyayinqamula.
Njengoba sisebenzisa impendulo ephelele ye-XML yento encikile, sidinga ukuthola inani lale elementi ekucubunguleni ngaphambili. Ngokusebenzisa I-XPath kwenziwa kanje:
string(//response/generic[@event="RegistryEntry"][@username="{#SIP_REGISTRY_USERNAME}"][@host="{#SIP_REGISTRY_HOST}"][@port="{#SIP_REGISTRY_PORT}"]/@ izwe)
Ezimo zokubhalisa, angizange ngisebenzise izimo zombhalo, kodwa ngiziguqule zaba ifomu lezinombolo ngisebenzisa i-JavaScript:
switch(value) {
case 'Registered':
return 1;
case 'Unregistered':
return 0;
default:
return -1;
}
SIP Ntanga
Ngokufanisa nokubhaliswa kwe-SIP, kunesici esiyinhloko se-Asterisk - AMI SIPshowregistry, lapho okuncikile kwengezwa khona.
Lokhu kudala izakhi ezimbili ezincikile:
- Isimo sontanga ngefomu lombhalo
- Isikhathi sokuphendula idivayisi - uma isimo SILUNGILE, kusho ukuthi isikhathi sokuphendula idivayisi siyabhalwa, ngaphandle kwalokho β-1β
Indlela eya esakhiweni ngokwayo ilula kancane I-XPath:
iyunithi yezinhlamvu(//response/generic[@objectname="{#SIP_PEER_OBEJECTNAME}"]/@status)
Engxenyeni yesibili ngisebenzise i-JavaScript ukuze ngihlukanise isikhathi sokuphendula kusukela kusimo sontanga, njengoba zigcinwa ndawonye:
if(value.substring(0,2) == 'OK'){
return value.match(/(d+)/gm);
}
else {
return -1;
}
isiphetho
Isixazululo esingaphandle kwebhokisi singaba yinkimbinkimbi futhi singacaci ngokushesha. Khulisa ukuguquguquka nokuphatheka phakathi kwamasistimu ahlukene
Ukuhlanganiswa okujabulisayo nokulula wonke umuntu! Isifanekiso nemiyalelo yokusetha
Source: www.habr.com