Page MenuHomePhabricator

No OneTemporary

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

Mime Type
text/x-diff
Expires
Sat, Feb 1, 11:28 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3489289
Default Alt Text
(5 KB)

Event Timeline