foist
[kismet-logviewer.git] / logviewer / static / js / kismet.ui.rtladsb.js
1 (
2   typeof define === "function" ? function (m) { define("kismet-ui-rtladsb-js", m); } :
3   typeof exports === "object" ? function (m) { module.exports = m(); } :
4   function(m){ this.kismet_ui_rtladsb = m(); }
5 )(function () {
6
7 "use strict";
8
9 var exports = {};
10
11 var local_uri_prefix = ""; 
12 if (typeof(KISMET_URI_PREFIX) !== 'undefined')
13     local_uri_prefix = KISMET_URI_PREFIX;
14
15 // Flag we're still loading
16 exports.load_complete = 0;
17
18 /* Highlight rtl devices */
19 kismet_ui.AddDeviceRowHighlight({
20     name: "RTLadsb Devices",
21     description: "RTLadsb Sensor",
22     priority: 50,
23     //defaultcolor: "#efe0c3",
24     defaultcolor: "#ffb3b3",
25     defaultenable: true,
26     fields: [
27         'kismet.device.base.phyname',
28         'rtladsb.device'
29     ],
30     selector: function(data) {
31         var aircraft_info = [
32             'department',
33             'police',
34             'agency',
35             'dep',
36             'gov',
37             'federal',
38             'royal',
39             'force',
40             'state',
41             'army',
42             'navy',
43             'patrol',
44             'sqdn',
45             'city of',
46         ];
47
48         var exclude_list = [
49             'express',
50             'air freight',
51         ]
52
53         var icao_list = [
54             'acf181',
55             'a980fa',
56             'a7fb8f',
57             'ae4bd7',
58             'a47604',
59             'a03bc8',
60             'a0b8d6',
61             'a0d9f2',
62             'a12d51',
63             'a15f1d',
64             'a169d7',
65             'a16c6d',
66             'a193c1',
67             'a32524',
68             'a328db',
69             'a32c92',
70             'a33049',
71             'a33dc3',
72             'a3c1be',
73             'a3c92c',
74             'a3e6e3',
75             'a3e6e4',
76             'a410bc',
77             'a4182a',
78             'a44360',
79             'a4724d',
80             'a483df',
81             'a4bc36',
82             'a4bfed',
83             'a51a10',
84             'a51dc7',
85             'a54b56',
86             'a54f0d',
87             'a552c4',
88             'a5ed09',
89             'a5f9f7',
90             'a64217',
91             'a645ce',
92             'a64985',
93             'a64d3c',
94             'a654aa',
95             'aac551',
96             'abaf9c',
97             'ac742b',
98             'ac7b99',
99             ];
100
101         if (data['kismet.device.base.phyname'] === 'RTLADSB') {
102             for (var re of aircraft_info) {
103                  var retval = false;
104                  if (data['rtladsb.device']['kismet.adsb.icao_record']['adsb.icao.owner'].toLowerCase().includes(re)) {
105                     retval = true;
106                     for (var excld of exclude_list) {
107                       if (data['rtladsb.device']['kismet.adsb.icao_record']['adsb.icao.owner'].toLowerCase().includes(excld)) {
108                         retval=false;
109                       }
110                     }
111                  }
112
113                  if (Boolean(retval)) {
114                      return true;
115                  }
116             }
117             for (var re of icao_list) {
118                  if (data['rtladsb.device']['rtladsb.device.icao'].toLowerCase().includes(re))
119                     return true;
120             }
121         }
122         return false;
123     }
124 });
125
126 kismet_ui.AddDeviceDetail("rtladsb", "RTLADSB (SDR)", 0, {
127     filter: function(data) {
128         return (data['kismet.device.base.phyname'] === "RTLADSB");
129     },
130     draw: function(data, target) {
131         target.devicedata(data, {
132             "id": "RtladsbData",
133             "fields": [
134             {
135                 field: "rtladsb.device/rtladsb.device.icao",
136                 liveupdate: true,
137                 title: "Plane ICAO",
138                 empty: "<i>Unknown</i>"
139             },
140             {
141                 field: "rtladsb.device/rtladsb.device.callsign",
142                 liveupdate: true,
143                 title: "Callsign",
144                 filterOnZero: true,
145                 filterOnEmpty: true,
146                 help: "Flight registration / Callsign",
147             },
148             {
149                 field: "rtladsb.device/rtladsb.device.callsign",
150                 id: "fa_callsign",
151                 liveupdate: true,
152                 title: "Flightaware",
153                 filterOnZero: true,
154                 filterOnEmpty: true,
155                 draw: function(opts) {
156                     return '<a href="https://flightaware.com/live/flight/' + opts['value'] + '" target="_new">Track ' + opts['value'] + ' on FlightAware</a>';
157                 },
158             },
159             {
160                 field: "rtladsb.device/kismet.adsb.icao_record/adsb.icao.regid",
161                 liveupdate: true,
162                 title: "Registration ID",
163                 filterOnZero: true,
164                 filterOnEmpty: true,
165                 help: "Aircraft registration ID or tail number",
166             },
167             {
168                 field: "rtladsb.device/kismet.adsb.icao_record/adsb.icao.atype",
169                 liveupdate: true,
170                 title: "Aircraft Classification",
171                 filterOnZero: true,
172                 filterOnEmpty: true,
173                 help: "Aircraft classification type",
174             },
175             {
176                 field: "rtladsb.device/kismet.adsb.icao_record/adsb.icao.model",
177                 liveupdate: true,
178                 title: "Model",
179                 filterOnZero: true,
180                 filterOnEmpty: true,
181                 help: "Aircraft model (general model type)",
182             },
183             {
184                 field: "rtladsb.device/kismet.adsb.icao_record/adsb.icao.type",
185                 liveupdate: true,
186                 title: "Type",
187                 filterOnZero: true,
188                 filterOnEmpty: true,
189                 help: "Aircraft type (specific model type)",
190             },
191             {
192                 field: "rtladsb.device/kismet.adsb.icao_record/adsb.icao.owner",
193                 liveupdate: true,
194                 title: "Aircraft Operator",
195                 filterOnZero: true,
196                 filterOnEmpty: true,
197                 help: "Aircraft operator or owner of record",
198             },
199             {
200                 field: "rtladsb.device/rtladsb.device.altitude",
201                 liveupdate: true,
202                 title: "Altitude",
203                 filterOnZero: true,
204             },
205             {
206                 field: "rtladsb.device/rtladsb.device.speed",
207                 liveupdate: true,
208                 title: "Speed",
209                 filterOnZero: true,
210             },
211             {
212                 field: "rtladsb.device/rtladsb.device.heading",
213                 liveupdate: true,
214                 title: "Heading",
215                 filterOnZero: true,
216                 draw: function(opts) {
217
218                     return Math.round(opts['value']) + '&deg; <i class="fa fa-plane" style="transform: rotate(' + (opts['value'] -45) + 'deg)" />';
219
220                 },
221             },
222             {
223                 field: "rtladsb.device/rtladsb.device.latitude",
224                 liveupdate: true,
225                 title: "Location",
226                 filterOnZero: true,
227                 filterOnEmpty: true,
228                 draw: function(opts) {
229                     try {
230                         return opts['data']['rtladsb.device']['rtladsb.device.latitude'] + ', ' + opts['data']['rtladsb.device']['rtladsb.device.longitude'] + ' <a target="_new" href="https://openstreetmap.org/?&mlat=' + opts['data']['rtladsb.device']['rtladsb.device.latitude'] + '&mlon=' + opts['data']['rtladsb.device']['rtladsb.device.longitude'] + '">View on Open Street Maps</a>';
231                     } catch (error) {
232                         return 'n/a'
233                     }
234
235                 },
236             },
237             {
238                 field: "rtladsb.device/rtladsb.device.asgs",
239                 liveupdate: true,
240                 title: "Airspeed(AS) / Groundspeed (GS)",
241                 filterOnZero: true,
242             },
243             ],
244         });
245     },
246 });
247
248 kismet_ui_tabpane.AddTab({
249     id: 'adsb_live',
250     tabTitle: 'ADSB Live',
251     expandable: false,
252     createCallback: function(div) {
253         var url = new URL(parent.document.URL);
254         url.searchParams.append('parent_url', url.origin)
255         url.searchParams.append('local_uri_prefix', local_uri_prefix);
256         url.pathname = `${local_uri_prefix}/adsb_map_panel.html`;
257
258         div.append(
259             $('<iframe>', {
260                 width: '100%',
261                 height: '100%',
262                 src: url.href,
263             })
264         );
265     },
266     priority: -100,
267
268 }, 'center');
269
270 // We're done loading
271 exports.load_complete = 1;
272
273 return exports;
274
275 });