a7d0f9a7e6e444f74a30ba8db617148524968ba2
[kismet-logviewer.git] / logviewer / dbview / views.py
1 from django.shortcuts import render
2 from django.http import HttpResponse, HttpRequest
3 import os
4 import sqlite3
5 import time
6 import json
7 import pprint
8
9 from django.views.decorators.csrf import csrf_exempt
10
11 def load_db(query):
12     connection = sqlite3.connect("/home/rhandorf/kismet-logviewer/logviewer/logs/Kismet-20221208-22-56-36-1.kismet")
13     #connection.row_factory = lambda cursor, row: row[0]
14     cursor = connection.cursor()
15     rows = cursor.execute(query).fetchall()
16     return(rows)
17
18 @csrf_exempt
19 def index(request):
20     #if request.method == 'POST':
21     #    print("GOT A POST")
22     if request.path == "/devices/views/all_views.json":
23         all_views = open('/home/rhandorf/kismet-logviewer/logviewer/dbview/all_views.json')
24         return HttpResponse(all_views, content_type='text/json')
25     elif request.path == "/system/user_status.json":
26         user_status = open('/home/rhandorf/kismet-logviewer/logviewer/dbview/user_status.json')
27         return HttpResponse(user_status, content_type='text/json')
28     elif request.path == "/session/check_setup_ok":
29         return HttpResponse('Login configured in user config')
30     elif request.path == "/session/check_login":
31         return HttpResponse('Login valid')
32     elif request.path == "/dynamic.js":
33         devices = load_db("select distinct(typestring) from datasources")
34         load_file = open('/home/rhandorf/kismet-logviewer/logviewer/static/dynamic.js')
35         return HttpResponse(load_file, content_type='application/javascript')
36     elif request.path == "/gps/location.json":
37         user_status = open('/home/rhandorf/kismet-logviewer/logviewer/dbview/gps_status.json')
38         return HttpResponse(user_status, content_type='text/json')
39     elif request.path == "/alerts/wrapped/last-time/0/alerts.json":
40         alerts = list(load_db("select cast(json as text) from alerts"))
41         alert_string="{\"kismet.alert.list\": ["
42         for alert in alerts:
43             (single_alert,) = alert
44             alert_string = alert_string + single_alert + ","
45         alert_string = alert_string[:-1]
46         alert_string = alert_string + "] ,\"kismet.alert.timestamp\": "+str(time.time())+"}"
47         return HttpResponse(alert_string, content_type='text/json')
48     elif request.path == "/phy/phy80211/ssids/views/ssids.json":
49         user_status = open('/home/rhandorf/kismet-logviewer/logviewer/dbview/ssids.json')
50         return HttpResponse(user_status, content_type='text/json')
51     elif request.path == "/system/status.json":
52         user_status = open('/home/rhandorf/kismet-logviewer/logviewer/dbview/status.json')
53         return HttpResponse(user_status, content_type='text/json')
54     elif request.path == "/alerts/alerts_view.json":
55         #MAY NOT BE COMPLETE
56         alerts = list(load_db("select cast(json as text) from alerts"))
57         alert_string="["
58         for alert in alerts:
59             (single_alert,) = alert
60             alert_string = alert_string + single_alert + ","
61         alert_string = alert_string[:-1]
62         alert_string = alert_string + "]"
63         return HttpResponse(alert_string, content_type='text/json')
64     elif request.path == "/messagebus/last-time/0/messages.json":
65         messages = list(load_db("select * from messages DESC limit 30"))
66         message_string="{\"kismet.messagebus.list\": ["
67         for message in messages:
68             message_string = message_string + "{"
69             message_string = message_string + "\"kismet.messagebus.message_string\": \"" + message[4] + "\","
70             flag = "0"
71             if message[3] == "INFO":
72                 flag = "0"
73             if message[3] == "LOW":
74                 flag = "5"
75             if message[3] == "MEDIUM":
76                 flag = "10"
77             if message[3] == "HIGH":
78                 flag = "15"
79             if message[3] == "CRITICAL":
80                 flag = 20
81             if message[3] == "ERROR":
82                 flag = 20
83             message_string = message_string + "\"kismet.messagebus.message_flags\": \"" + flag + "\","
84             message_string = message_string + "\"kismet.messagebus.message_time\": \"" + str(message[0]) + "\""
85             message_string = message_string + "},"
86         message_string = message_string[:-1]
87         message_string = message_string + "], \"kismet.messagebus.timestamp\": "+str(time.time())+" }"
88         return HttpResponse(message_string, content_type='text/json')
89     elif request.path == "/channels/channels.json":
90         user_status = open('/home/rhandorf/kismet-logviewer/logviewer/dbview/channels.json')
91         return HttpResponse(user_status, content_type='text/json')
92     elif request.path == "/devices/views/all/devices.json":
93         #gotta figure out paging
94         total_dev=list(load_db("select count(device) from devices"))
95         (dev_count,) = total_dev[0]
96         dev_string = "{ \"recordsTotal\": "+str(dev_count)+", \"data\": ["
97         dev_list = list(load_db("select cast(device as text) from devices limit 50"))
98         for device in dev_list:
99             (dev,) = device
100             dev_string = dev_string + dev + ","
101         dev_string = dev_string[:-1]
102         dev_string = dev_string + "],\"draw\": 5,\"recordsFiltered\": "+str(dev_count)+"}"
103         return HttpResponse(dev_string, content_type='text/json')
104     elif request.path == "/eventbus/events.ws":
105         return HttpResponse("[]", content_type='text/json')
106
107