Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F7313284
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/scripts/sylk-pushclient-v2 b/scripts/sylk-pushclient-v2
index 7d60e77..0a18f64 100755
--- a/scripts/sylk-pushclient-v2
+++ b/scripts/sylk-pushclient-v2
@@ -1,135 +1,135 @@
#!/usr/bin/python
import json
import logging
import re
import sys
import requests
try:
import pymysql
except ImportError:
pass
from argparse import ArgumentParser
if __name__ == '__main__':
parser = ArgumentParser()
subparsers = parser.add_subparsers(dest='action')
- parser.add_argument('--url', dest='url', required=True, help='Base push URL')
+ parser.add_argument('--url', dest='url', required=False, default='http://localhost:8400', help='Base push URL')
parser.add_argument('--account', dest='account', required=True, help='Account')
subparserA = subparsers.add_parser('push', help='Send push request')
subparserA.add_argument('--mediatype', dest='media_type', default="audio", required=False, help='Audio, Video or Message')
subparserA.add_argument('--callid', dest='call_id', required=True, help='Call ID')
subparserA.add_argument('--event', dest='event', required=False, help='Event', default='incoming_session')
subparserA.add_argument('--from', dest='from_uri', required=True, help='From')
subparserA.add_argument('--from_name', dest='from_name', required=False, help='From name')
subparserA.add_argument('--to', dest='to_uri', required=True, help='To')
subparserB = subparsers.add_parser('add', help='Add a push token')
subparserB.add_argument('--platform', dest='platform', help='Platform')
subparserB.add_argument('--appid', dest='appid', required=True, help='App ID')
subparserB.add_argument('--token', dest='device_token', required=True, help='Device token')
subparserB.add_argument('--deviceid', dest='device_id', required=True, help='Device Id')
subparserB.add_argument('--silent', dest='silent', default="1", required=False, help='Silent')
subparserB.add_argument('--user_agent', dest='user_agent', default="None", required=False, help='User Agent')
subparserC = subparsers.add_parser('remove', help='Remove a push token')
subparserC.add_argument('--appid', dest='appid', required=True, help='App ID')
subparserC.add_argument('--deviceid', dest='device_id', required=True, help='Device Id')
options = parser.parse_args()
try:
from_uri = re.sub(r'^"|"$', '', options.from_uri)
except AttributeError:
pass
try:
from_name = options.from_name.strip('\"') if options.from_name else None
except AttributeError:
pass
try:
(token1, token2) = options.device_token.split("#")
except ValueError:
token1 = options.device_token
token2 = None
except AttributeError:
pass
try:
media_type = options.media_type
if ("video" in options.media_type):
media_type = 'video'
elif ("audio" in options.media_type):
media_type = 'audio'
except AttributeError:
pass
try:
token = token2 if (token2 and options.event == 'cancel') else token1
except NameError:
pass
print("Using API v2")
if options.url[-1] == '/':
options.url=options.url[:-1]
url = '{}/{}/{}'.format(options.url, 'v2/tokens', options.account)
if options.action == 'add':
log_params = {'platform': options.platform,
'app-id': options.appid,
'token': token,
'device-id': options.device_id,
'silent': options.silent,
'user-agent': options.user_agent}
elif options.action == 'remove':
log_params = {'app-id': options.appid,
'device-id': options.device_id}
else:
log_params = {'media-type': media_type,
'event': options.event,
'from': from_uri,
'from-display-name': from_name or from_uri,
'to': options.to_uri,
'call-id': options.call_id}
url = '{}/{}/{}/push'.format(options.url, 'v2/tokens', options.account)
def getMethod(*args, **kwargs):
if options.action == 'remove':
return requests.delete(*args, **kwargs)
else:
return requests.post(*args, **kwargs)
try:
r = getMethod(url, timeout=5, json=log_params)
if r.status_code == 200:
print("%s to %s response 200 OK: %s" % (options.action, url, r.text))
body = r.json()
try:
failure = body['data']['body']['_content']['failure']
if failure == 1:
# A push client may want to act based on various response codes
# https://firebase.google.com/docs/cloud-messaging/http-server-ref#error-codes
reason = body['data']['body']['_content']['results'][0]['error']
if reason == 'NotRegistered':
log.info("Token %s must be purged" % token)
#q = "delete from push_tokens where token = '%s'" % token
#con = pymysql.connect('localhost', 'opensips', 'XYZ', 'opensips')
#with con:
# cur = con.cursor()
# cur.execute(q)
except KeyError:
pass
sys.exit(0)
else:
print("%s to %s failed: %d: %s" % (options.action, url, r.status_code, r.text))
sys.exit(1)
except Exception as e:
print("%s to %s failed: connection error" % (options.action, url))
sys.exit(1)
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Feb 1, 11:28 AM (1 d, 2 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3489289
Default Alt Text
(5 KB)
Attached To
Mode
rSYLKPUSH Sylk Pushserver
Attached
Detach File
Event Timeline
Log In to Comment