-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathread_page.py
113 lines (108 loc) · 3.73 KB
/
read_page.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import sys
import random
from datetime import datetime
from page_log import bcolors
def clean_message(message):
return ''.join(e for e in message
if (e.isalnum() or e.isspace() or e=='/'))
def read_alert_message(app, data):
data = data.strip('\n') # strip the end of line character
pieces = data.split(" ") # break the line in to pieces - some are useful later
if len(pieces) < 6:
# if we don't have six individual words it can't be an alert message
return
msgType = pieces[2]
capCode = pieces[1]
if msgType[:2] == "@@" and "ALERT" in data: # look for ALERT messages
app.status['alert_messages'] += 1
if app.verbose:
print "\n"
capCode = pieces[1]
cadEvent = pieces[3]
assignmentArea = pieces[4]
incType = pieces[5][0:-2]
responseCode = pieces[5][-1:]
lBracketIdx = data.rfind(" (")
rBracketIdx = data.rfind(") ")
dirIdx = data.rfind(" RSSI: ")
dirRef = dirIdx
dirType = "Unknown"
svIdx = data.rfind(" SV")
if svIdx != -1:
dirType = "SV"
dirIdx = svIdx+1
melwaysIdx = data.rfind(" M ")
if melwaysIdx != -1:
dirType = "Melways"
dirIdx = melwaysIdx+1
dirRef = data[dirIdx:lBracketIdx]
coords = data[lBracketIdx+2:rBracketIdx]
geoIdx = data.rfind(" LAT/LON:")
aircraftMsg = 0
if geoIdx != -1:
geoIdx = geoIdx+len(" LAT/LON:")
delimIdx = data.rfind(", ", geoIdx)
latitude = data[geoIdx:delimIdx]
geoIdx = delimIdx
geoIdx = geoIdx+len(", ")
delimIdx = data.rfind(" ", geoIdx)
longitude = data[geoIdx:delimIdx].split(' ', 1)[0]
aircraftMsg = 1
else:
if app.debug == 1:
if app.verbose:
print "NO Geo Coords - going random!"
latitude = -37.616+random.uniform(-1, 1)
longitude = 144.420+random.uniform(-1, 1)
if random.randint(0,9) > 5:
if app.verbose:
print "Random aircraft message generated!"
aircraftMsg = 1
else:
latitude = longitude = None
rssiIdx = data.rfind(" RSSI: ")
rssi = data[rssiIdx+7:]
rssi = rssi.strip()
lSqBracketIdx = data.rfind(" [")
rSqBracketIdx = data.rfind("]")
resource = "unknown"
if lSqBracketIdx != -1 and rSqBracketIdx != -1:
resource = data[lSqBracketIdx+2:rSqBracketIdx]
msgStart = data.find(pieces[6])
message = data[msgStart:dirIdx]
return {
'msgType' : msgType,
'capCode' : capCode,
'resource' : resource,
'aircraftMsg' : aircraftMsg,
'assignmentArea' : assignmentArea,
'cadEvent' : cadEvent,
'incType' : incType,
'responseCode' : responseCode,
'dirType' : dirType,
'dirRef' : dirRef,
'coords' : coords,
'lat' : latitude,
'lon' : longitude,
'rssi' : rssi,
'message' : clean_message(message),
}
def show_alert_message(message):
print "\a " + bcolors.WARNING
print datetime.now().isoformat()
print " ALERT: %s " % message['message'] + bcolors.ENDC
print " msgType: %s" % message['msgType']
print " capCode: %s" % message['capCode']
print " assignmentArea: %s" % message['assignmentArea']
print " aircraftMsg: %s" % message['aircraftMsg']
print " resource: %s" % message['resource']
print " cadEvent: %s" % message['cadEvent']
print " incType: %s" % message['incType']
print " responseCode: %s" % message['responseCode']
print " directory %s: %s" % (message['dirType'], message['dirRef'])
print " coords: %s" % message['coords']
print " latitude: %s" % message['lat']
print " longitude: %s" % message['lon']
print " rssi: %s" % message['rssi']
print " message: %s" % message['message']
print " "