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