@@ -648,6 +648,7 @@ def __init__(self, configFile):
648
648
'AlarmClear' : self .handlerEventAlarmClear ,
649
649
'DNDState' : self .handlerEventDNDState ,
650
650
'PeerEntry' : self .handlerEventPeerEntry ,
651
+ 'EndpointList' : self .handlerEventEndpointList ,
651
652
'PeerStatus' : self .handlerEventPeerStatus ,
652
653
'Newchannel' : self .handlerEventNewchannel ,
653
654
'DAHDIChannel' : self .handlerEventDAHDIChannel ,
@@ -1459,6 +1460,7 @@ def __parseMonastConfig(self):
1459
1460
self .servers [servername ].status .bridges = {}
1460
1461
self .servers [servername ].status .peers = {
1461
1462
'SIP' : {},
1463
+ 'PJSIP' : {},
1462
1464
'IAX2' : {},
1463
1465
'DAHDI' : {},
1464
1466
'Khomp' : {},
@@ -1687,7 +1689,13 @@ def onIax2ShowPeers(result):
1687
1689
server .pushTask (server .ami .sendDeferred , {'action' : 'iaxpeers' }) \
1688
1690
.addCallback (server .ami .errorUnlessResponse ) \
1689
1691
.addErrback (self ._onAmiCommandFailure , servername , "Error Requesting IAX Peers" )
1690
-
1692
+
1693
+ ## PJSIP
1694
+ log .debug ("Server %s :: Requesting PJSIP Endpoints..." % servername )
1695
+ server .pushTask (server .ami .sendDeferred , {'action' : 'pjsipshowendpoints' }) \
1696
+ .addCallback (server .ami .errorUnlessResponse ) \
1697
+ .addErrback (self ._onAmiCommandFailure , servername , "Error Requesting PJSIP Endpoints" )
1698
+
1691
1699
# DAHDI
1692
1700
def onDahdiShowChannels (events ):
1693
1701
log .debug ("Server %s :: Processing DAHDI Channels..." % servername )
@@ -2366,6 +2374,67 @@ def onShowPeer(response):
2366
2374
.addCallbacks (onShowPeer , self ._onAmiCommandFailure , \
2367
2375
errbackArgs = (ami .servername , "Error Executting Command '%s'" % command ))
2368
2376
2377
+ def handlerEventEndpointList (self , ami , event ):
2378
+ log .debug ("Server %s :: Processing Event EndpointList..." % ami .servername )
2379
+ server = self .servers .get (ami .servername )
2380
+ status = event .get ('devicestate' )
2381
+ contacts = event .get ('contacts' )
2382
+ channeltype = 'PJSIP'
2383
+ objectname = event .get ('objectname' ).split ('/' )[0 ]
2384
+ time = - 1
2385
+
2386
+ if status != 'Unavailable' and contacts != '' :
2387
+ status = 'Reachable'
2388
+
2389
+ user = '%s/%s' % (channeltype , objectname )
2390
+
2391
+ if (self .displayUsersDefault and not server .displayUsers .has_key (user )) or (not self .displayUsersDefault and server .displayUsers .has_key (user )):
2392
+ self ._createPeer (
2393
+ ami .servername ,
2394
+ channeltype = channeltype ,
2395
+ peername = objectname ,
2396
+ status = status ,
2397
+ time = time
2398
+ )
2399
+ else :
2400
+ user = None
2401
+
2402
+ if user :
2403
+ type = ['endpoint' ]
2404
+ command = '%s show %s %s' % (channeltype .lower (), type , objectname )
2405
+
2406
+ def onShowPeer (response ):
2407
+ log .debug ("Server %s :: Processing %s..." % (ami .servername , command ))
2408
+ result = '\n ' .join (response )
2409
+ callerid = None
2410
+ context = None
2411
+ variables = []
2412
+
2413
+ try :
2414
+ callerid = re .compile ("['\" ]" ).sub ("" , re .search ('callerid[\s]+:[\s](.*)\n ' , result ).group (1 ))
2415
+ if callerid == '<unknown>' :
2416
+ callerid = '--'
2417
+ except :
2418
+ callerid = '--'
2419
+
2420
+ try :
2421
+ context = re .search ('context[\s]+:[\s](.*)\n ' , result ).group (1 )
2422
+ except :
2423
+ context = server .default_context
2424
+
2425
+ self ._updatePeer (
2426
+ ami .servername ,
2427
+ channeltype = channeltype ,
2428
+ peername = objectname ,
2429
+ callerid = [callerid , objectname ][callerid == "--" ],
2430
+ context = context ,
2431
+ variables = variables
2432
+ )
2433
+
2434
+ server .pushTask (server .ami .command , command ) \
2435
+ .addCallbacks (onShowPeer , self ._onAmiCommandFailure , \
2436
+ errbackArgs = (ami .servername , "Error Executting Command '%s'" % command ))
2437
+
2369
2438
def handlerEventPeerStatus (self , ami , event ):
2370
2439
log .debug ("Server %s :: Processing Event PeerStatus..." % ami .servername )
2371
2440
channel = event .get ('peer' )
0 commit comments