Skip to content

Commit 7d26611

Browse files
committed
Adding support PJSIP
1 parent bbce290 commit 7d26611

File tree

2 files changed

+75
-1
lines changed

2 files changed

+75
-1
lines changed

js/monast.js

+5
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,11 @@ var Monast = {
379379
addQueue = true;
380380
break;
381381

382+
case 'PJSIP':
383+
m[0].push({text: Language.execute + " 'pjsip show endpoint " + u.peername + "'", onclick: {fn: Monast.requestInfo, obj: "pjsip show endpoint " + u.peername}});
384+
addQueue = true;
385+
break;
386+
382387
case 'IAX2':
383388
m[0].push({text: Language.execute + " 'iax2 show peer " + u.peername + "'", onclick: {fn: Monast.requestInfo, obj: "iax2 show peer " + u.peername}});
384389
addQueue = true;

pymon/monast.py

+70-1
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,7 @@ def __init__(self, configFile):
648648
'AlarmClear' : self.handlerEventAlarmClear,
649649
'DNDState' : self.handlerEventDNDState,
650650
'PeerEntry' : self.handlerEventPeerEntry,
651+
'EndpointList' : self.handlerEventEndpointList,
651652
'PeerStatus' : self.handlerEventPeerStatus,
652653
'Newchannel' : self.handlerEventNewchannel,
653654
'DAHDIChannel' : self.handlerEventDAHDIChannel,
@@ -1459,6 +1460,7 @@ def __parseMonastConfig(self):
14591460
self.servers[servername].status.bridges = {}
14601461
self.servers[servername].status.peers = {
14611462
'SIP': {},
1463+
'PJSIP': {},
14621464
'IAX2': {},
14631465
'DAHDI': {},
14641466
'Khomp': {},
@@ -1687,7 +1689,13 @@ def onIax2ShowPeers(result):
16871689
server.pushTask(server.ami.sendDeferred, {'action': 'iaxpeers'}) \
16881690
.addCallback(server.ami.errorUnlessResponse) \
16891691
.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+
16911699
# DAHDI
16921700
def onDahdiShowChannels(events):
16931701
log.debug("Server %s :: Processing DAHDI Channels..." % servername)
@@ -2366,6 +2374,67 @@ def onShowPeer(response):
23662374
.addCallbacks(onShowPeer, self._onAmiCommandFailure, \
23672375
errbackArgs = (ami.servername, "Error Executting Command '%s'" % command))
23682376

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+
23692438
def handlerEventPeerStatus(self, ami, event):
23702439
log.debug("Server %s :: Processing Event PeerStatus..." % ami.servername)
23712440
channel = event.get('peer')

0 commit comments

Comments
 (0)