From 56cb69d2e0dd567bcbbed653863fc38dfd12f756 Mon Sep 17 00:00:00 2001 From: Russ Handorf Date: Fri, 13 Jan 2023 21:38:40 -0500 Subject: [PATCH] bix fixes and added adsb map --- logviewer/adsbmap/__init__.py | 0 .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 152 bytes .../adsbmap/__pycache__/urls.cpython-38.pyc | Bin 0 -> 283 bytes .../adsbmap/__pycache__/views.cpython-38.pyc | Bin 0 -> 673 bytes logviewer/adsbmap/admin.py | 3 + logviewer/adsbmap/apps.py | 6 ++ logviewer/adsbmap/migrations/__init__.py | 0 logviewer/adsbmap/models.py | 3 + logviewer/adsbmap/tests.py | 3 + logviewer/adsbmap/urls.py | 8 +++ logviewer/adsbmap/views.py | 16 ++++++ logviewer/dbview/.views.py.swp | Bin 45056 -> 40960 bytes .../dbview/__pycache__/views.cpython-38.pyc | Bin 13223 -> 14487 bytes logviewer/dbview/views.py | 54 +++++++++++++++++- .../__pycache__/views.cpython-38.pyc | Bin 915 -> 915 bytes .../__pycache__/settings.cpython-38.pyc | Bin 2656 -> 2691 bytes .../logviewer/__pycache__/urls.cpython-38.pyc | Bin 2779 -> 2866 bytes logviewer/logviewer/settings.py | 2 + logviewer/logviewer/urls.py | 6 +- logviewer/static/dynamic.js | 8 +-- 20 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 logviewer/adsbmap/__init__.py create mode 100644 logviewer/adsbmap/__pycache__/__init__.cpython-38.pyc create mode 100644 logviewer/adsbmap/__pycache__/urls.cpython-38.pyc create mode 100644 logviewer/adsbmap/__pycache__/views.cpython-38.pyc create mode 100644 logviewer/adsbmap/admin.py create mode 100644 logviewer/adsbmap/apps.py create mode 100644 logviewer/adsbmap/migrations/__init__.py create mode 100644 logviewer/adsbmap/models.py create mode 100644 logviewer/adsbmap/tests.py create mode 100644 logviewer/adsbmap/urls.py create mode 100644 logviewer/adsbmap/views.py diff --git a/logviewer/adsbmap/__init__.py b/logviewer/adsbmap/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/logviewer/adsbmap/__pycache__/__init__.cpython-38.pyc b/logviewer/adsbmap/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..605e22a63ce7080a63df656864f667576ce36c4b GIT binary patch literal 152 zcmWIL<>g`kg1>JLCWGk5AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yUTB{fzwFRQ;li z#JrUJqBQ;N%;MbC65X8q^s>y<^3)=I1S>J6I4L)=KtDb{GcU6wK3=b&@)n0pZhlH> NPO2Tq*v~-B001}PCHMdU literal 0 HcmV?d00001 diff --git a/logviewer/adsbmap/__pycache__/urls.cpython-38.pyc b/logviewer/adsbmap/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbce56cb81fc16d126188fd5c297b38a2724adb8 GIT binary patch literal 283 zcmYjLJ5Izf5Vhkttk};jC{hsDE3MF;fCkZ|Gt7`=@h7sg3mk%ja15^DmTC(wK(maY zfG5qHd796g+vW0{5iUO8?>*&@EdE21*iyuX2pDj~EN?kyP=GLn6|LY5Ig}`NB}k}V zMaNqSXE&^#9chQvJe8xK`Xm1p@-X02Of1R40Y2xp(-yDmD$QZ1UFVy9FfkM~9`%tyHZ literal 0 HcmV?d00001 diff --git a/logviewer/adsbmap/__pycache__/views.cpython-38.pyc b/logviewer/adsbmap/__pycache__/views.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2c9efa5b15f35466aa219b550a1579d197e84df GIT binary patch literal 673 zcmYjP&2G~`5Z*sKzm=*`#4|*Km@^`%QaNyH5rIntirnn9c4K?p-AQS!sowoqxXW8sId5bHPKYEwDzgFEYd z4Gs^N1mGVj(gGh4J0yYB{F)jg+pxP+i*Rn(8P{?p>^^DYll;tHvJa#8V#~LJV);f~ z3(n3Tqtc2ZqDM?eI=&TK87$qQ%$jO<+nVu4>Ync3iWv<^0}KuuIh{@$MPlmJ>!aD* zrsFWhe3^J*k7+bj8V$`}l4^InDARgTrxg^F49mi+3@kJ~giB0SnU8Kbte6KL6UYz6w zd|~zh1^#}PWTu3~W@)93JxNx%qxw$@b9#}(N3h9%Ex;z!N%-L=H5JWiQ~-BE2xKO>80F6QPUm VKBsG37w{sy0T+`P@?G8)e*n_Ot#1GT literal 0 HcmV?d00001 diff --git a/logviewer/adsbmap/admin.py b/logviewer/adsbmap/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/logviewer/adsbmap/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/logviewer/adsbmap/apps.py b/logviewer/adsbmap/apps.py new file mode 100644 index 0000000..276dc8b --- /dev/null +++ b/logviewer/adsbmap/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class AdsbmapConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'adsbmap' diff --git a/logviewer/adsbmap/migrations/__init__.py b/logviewer/adsbmap/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/logviewer/adsbmap/models.py b/logviewer/adsbmap/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/logviewer/adsbmap/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/logviewer/adsbmap/tests.py b/logviewer/adsbmap/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/logviewer/adsbmap/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/logviewer/adsbmap/urls.py b/logviewer/adsbmap/urls.py new file mode 100644 index 0000000..4c9189f --- /dev/null +++ b/logviewer/adsbmap/urls.py @@ -0,0 +1,8 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path('', views.index, name='index'), +] + diff --git a/logviewer/adsbmap/views.py b/logviewer/adsbmap/views.py new file mode 100644 index 0000000..a447c2c --- /dev/null +++ b/logviewer/adsbmap/views.py @@ -0,0 +1,16 @@ +from django.shortcuts import render +from django.http import HttpResponse, HttpRequest +import os + +def index(request): + print("===") + print(request) + print("====") + if request.method == 'POST': + for key, value in request.POST.items(): + print(key,value) + + load_file = open('static/'+request.path, mode='rb') + if request.path == "/adsb_map_panel.html": + print("here") + return HttpResponse(load_file, content_type='text/html') diff --git a/logviewer/dbview/.views.py.swp b/logviewer/dbview/.views.py.swp index 9ce4e593348c246828e4435af01777b55fb228c5..bbf41060fee8211dbeb25d14ce5f66378f6072ac 100644 GIT binary patch delta 3357 zcma)<1{93gWs6`cFG|6Bjyl$8hEdXwhScF?D=Mz_FRI0y8f@^ zd1q5N?j~SbsZ->n2K#QL`18^~ObIysxh!*v#bcsNpDOh6_+l45GN~il*J7e4?ImQh zzDx8t1lhm_3=ZC9aEQ(hyX4%guOa$kkL)f~I&4J*K9hRz+dJ&M9Oe=1C@Kz``zBi< z!k#V3%c^~}Ih!qFL%|Lk?8#0&$6GkAAA$@qA)$&Y{7tCxIEHx%rWO2(fFB1ouma2lV>tC? zFci#~1{QpuLs19;cS~NUrBLfACFM)XOGs4_N0d)sh-bMGW{T%hQXOR&OblDdQtgPI z)J#YqX~Jg>hIrzvT0(|$b5l)edAqhhw#`Y5=ty-TJ$ckYdxy4ApCyUjf3=0)61M1E zytzw|Jq8Oe^K`5;KPmh<-MWYliwkM`uz{W**3psSdfI2rr1is%)Nr_h66@3S7mseX zrdJ)29j*@bk)wH)8S_LdDGcu=ONnYwRKw9bp4nL;Q8hze4tV<_yrGcdjP$RGI5RtU zv~6A;fseg&qsNB+Oc8m(08@O3s4zO$EyRW0o8a$!SnWa22t)-uwUyn;^L)(J2?SGtIM_ z)O!jG1=dxvlM9?D;*Tb)n!vTee1%NG0A~3@`K!%^07lFbc!-z^S}8LZ*|L>Z*)MF%>)9f-3tY(8`_8!f*}q1Af)tTA-6@1 z*#lw~jLrXxCcR_IrhUUR6V-X?m{lKo7&thS4w%D6J8E-q5#-REq1E);;cj|;Uz@M- z(Y9p;#4b8SnUoui`l8T%7j~EEdnc)X7Gaxc7Cfw)Z6bOt2BA0FXfTF)74_*#)+QWVLz(IWX?#dx+dAU{@|;bHmCcn0c>9AXdpuJd#6Dz1;%u zk(|V}L+(V=BYEu>r_APedL1SKwr1Wgc!*oHb;|WLW=U?kt8+&gQ@advcLeU-tB(2p zITfbZ(+zPXxe7ITp;DMDY5La1zTZ$yN5L+z5~P4@sHCjAb^%sh6Tn?m)JvcZG=dRS z)o!pJTtPAY0K|Y#QA|&OJdg@Dppce;RPX`{sRx`#5#0~maoi&AE-L9&kO_W71^o=v zgHj-4tIGk~@&Z)UYLrtQ{b+9`z2DtT({|_5W6u;(S8u9+T<%XuENxxCh8>=Ech@VU zt@P`cH`5heMQG#vqdOa7{WBcnvB_&71W|-A(DY+DzKi&|;RnA%fXm<=Fc&0&br2vQ z#DiWOUIeFb@LhlhU*X{Az&|+fHEy}}^YJ}_j?!#@;-MpP{{b|KMP2{^ delta 2590 zcmcK5eM}Q~9LMo%d1!ek6jxC!x}$&y^#L|?OgASm5ClXSN;X3%4~=#r(iTKT*NV&q z;}-CTn)!#BGtOlZnAS|qlA+8j>b4lNC*#yPr(4`Z7B)1x>9Y6X;e`0~&n|i8ch}$b z?tY)|w^#2Gt@nb~T#>vmw?IytoFcIqC8_k-(aNOQYH8vu%Rci@;hG@fXN>pwE3<4* z-5#Vgb=0V1fI6nCj>m@0 z2dT%g>UeqByq|iUtd8e~%!_Zlxjth=Ti9m#dQdZqu7X4KdJEfZdLge16`gbSA}Vf_ zMivoqCM*@-<>`FEmcI-h3)lWfxjyL*UcMt-lFaxbOp;148l477s>djt4wa-DB;z=t zwIUVQ$)O#up&D7x;aAr8A=aP-SINVN^?J!8&1Of7E>hkK4+;^FKdHg$mA8sI6@vZFyRBTu)&Nzf9W}?hald> z0$8ENVHUm`c~Gi;Q7cLBA_sxkO4rz+*9c=dVmPc4&9t-7AG=_#J6+u zMDm zkXI*)r(GjB&JerVKhzKjZcG*Pih_NM8e=rkBtNj#x*Roi6RPYh9F_Jmm)%)! zch~uhYx}jHc|5v_&uFY^V6SyAwxKw%|3bcA6id&l_c$AWmZ)m$$h}VBS)G(QaN}?e%8B$e zF&5$z;`*Dot{@LRM7bOF=;1j}G2e=Er1=TW%2u<*Di7_bMXA$EWveAY&KEo9n#4JG zoal912I4yFe%W-d^EshD@m>?^g>nmWi)D+o+Of=0XSHzlI4G?HghwwGNekJD#94Z74W{EH57Z9j!OD2R0(8-b;}L|@^qB!lPnP0K`tTq&V*bFN z@%vWw&p1$dxr*-XCb4f@Jfog*th!&Nj;rnzLC*Hq*4WjL_lW)5;`oYzG5S%za`$WC z$hOD_z1DptO$mO~zz|2S#ZYPxAR@fx;OQLgB;nBppC;mBsIr!zJDn@~R?fJ8lh3c0 hBPHeBySIUkf9Uu4VMYle5X)M^l=q%*%Nt8I{{l*1QceH> diff --git a/logviewer/dbview/__pycache__/views.cpython-38.pyc b/logviewer/dbview/__pycache__/views.cpython-38.pyc index 672d86b281b56a00375fdebfb5aa5e2d5a7b8dd7..8d3e613005b18543b05fd8b68621c8ff44f6f887 100644 GIT binary patch delta 1343 zcmZ{i%TE(Q9LHyt(jt_n#7d0ND6}cjW&5Blh8R>X2BQaJj0J;hr`EM}Tif-u&e%kv zF(xKW_TW`d9>hebBwY32(HLWVAd2Gq#=$?p-^`ZAMCoR>pYQMYo8POwpT2Xhsdr#>>@g{Ys*4v2?L2zk7h=)Qv6g($*PH;tV z1vmoBZl?Zw7AVF zDMG$_kWojK8J_%`;IQEDfK9uX)f?y9cc2TV2+pK1VxG?)Oe>SfaZQJz-!}F z>LroNQ%wcUT4Vj2oVuD#nLVPNyqe6UjH1jJVD@-V?D}^^yCEG$G`IiH&5NkUhHgI2 zhVEuqBJYuB542ea<@Bbd`akxPjGrxqA(%n)+GZn> z4k5NE?t+ZU_{|5@yjgiTflS?~^2D;#Dv!wz4Xic?=~%EZY4T6bF-m9BG}wH{=qaO0 zkpR#r2q6e$-D1tmOG&K|0hzDG1SHvb7+EF8% diff --git a/logviewer/dbview/views.py b/logviewer/dbview/views.py index c3ee822..6a899ee 100644 --- a/logviewer/dbview/views.py +++ b/logviewer/dbview/views.py @@ -187,7 +187,7 @@ def index(request): dev_list = list(load_db("select cast(device as text) from devices LIMIT "+limit+" OFFSET "+start)) else: dev_list = list(load_db("select cast(device as text) from devices where cast(device as text) like '%"+search+"%' LIMIT "+limit+" OFFSET "+start)) - elif device_request == "phy_RTLADSB": + elif device_request == "phy-RTLADSB": if search == "": dev_list = list(load_db("select cast(device as text) from devices where phyname = 'ADSB' LIMIT "+limit+" OFFSET "+start)) else: @@ -242,7 +242,7 @@ def index(request): dev_list = list(load_db("select cast(device as text) from devices where phyname = 'UAV' LIMIT "+limit+" OFFSET "+start)) else: dev_list = list(load_db("select cast(device as text) from devices where cast(device as text) like '%"+search+"%' and phyname = 'UAV' LIMIT "+limit+" OFFSET "+start)) - elif device_request == "phy-Zwave": + elif device_request == "phy-Z-Wave": if search == "": dev_list = list(load_db("select cast(device as text) from devices where phyname = 'Z-Wave' LIMIT "+limit+" OFFSET "+start)) else: @@ -329,3 +329,53 @@ def index(request): multikey = multikey[:-1] multikey = multikey + "}" return HttpResponse(multikey, content_type='text/json') + elif request.path == "/phy/ADSB/map_data.json": + #I had to do a stupid lat/long offset to draw the map grid because for some stupid reason python wouldnt do number scales right? + #limiting to 100 until i figure out paging + min_long = 361.0 + max_long = 0.0 + min_lat = 181.0 + max_lat = 0.0 + adsblist = "{ \"kismet.adsb.map.devices\": [ " + dev_list = list(load_db("select cast(device as text) from devices where phyname = 'ADSB' limit 100")) + for device in dev_list: + (dev,) = device + dev_json = json.loads(dev) + newdev = {} + newdev['kismet.device.base.first_time'] = dev_json['kismet.device.base.first_time'] + if "kismet.device.base.location" in dev_json: + newdev['kismet.device.base.location'] = dev_json['kismet.device.base.location'] + (tmp_min_long,tmp_min_lat) = newdev['kismet.device.base.location']['kismet.common.location.min_loc']['kismet.common.location.geopoint'] + tmp_min_lat = round(tmp_min_lat + 91, 6) + tmp_min_long = round(tmp_min_long + 181, 6) + if (tmp_min_lat != 91 and tmp_min_long !=181): + if (tmp_min_lat < min_lat): + min_lat = tmp_min_lat + if (tmp_min_long < min_long): + min_long = tmp_min_long + (tmp_max_long,tmp_max_lat) = newdev['kismet.device.base.location']['kismet.common.location.max_loc']['kismet.common.location.geopoint'] + tmp_max_lat = round(tmp_max_lat + 91,6) + tmp_max_long = round(tmp_max_long +181,6) + if (tmp_max_lat != 91 and tmp_max_long !=181): + if (tmp_max_lat > max_lat): + max_lat = tmp_max_lat + if (tmp_max_long > max_long): + max_long = tmp_max_long + newdev['kismet.device.base.macaddr'] = dev_json['kismet.device.base.macaddr'] + newdev['adsb.device'] = dev_json['adsb.device'] + newdev['kismet.device.base.type'] = dev_json['kismet.device.base.type'] + newdev['kismet.device.base.commonname'] = dev_json['kismet.device.base.commonname'] + newdev['kismet.device.base.name'] = dev_json['kismet.device.base.name'] + newdev['kismet.device.base.packets.data'] = dev_json['kismet.device.base.packets.data'] + newdev['kismet.device.base.frequency'] = dev_json['kismet.device.base.frequency'] + newdev['kismet.device.base.phyname'] = dev_json['kismet.device.base.phyname'] + newdev['kismet.device.base.last_time'] = dev_json['kismet.device.base.last_time'] + newdev['kismet.device.base.key'] = dev_json['kismet.device.base.key'] + adsblist = adsblist + json.dumps(newdev) + "," + adsblist = adsblist[:-1] + min_lat = round(min_lat - 91, 6) + min_long = round(min_long - 181, 6) + max_lat = round(max_lat - 91, 6) + max_long = round(max_long - 181, 6) + adsblist = adsblist + " ], \"kismet.adsb.map.min_lon\": "+str(min_long) + ", \"kismet.adsb.map.max_lat\": "+str(max_lat)+", \"kismet.adsb.map.min_lat\": "+str(min_lat)+", \"kismet.adsb.map.max_lon\": "+str(max_long)+" }" + return HttpResponse(adsblist, content_type='text/json') diff --git a/logviewer/kiscontent/__pycache__/views.cpython-38.pyc b/logviewer/kiscontent/__pycache__/views.cpython-38.pyc index 979c6d6e53e4bda9ce99545e11566517d436813d..510d74db810d96081eab1ebd03b3443d6433aae8 100644 GIT binary patch delta 19 ZcmbQtKAD{>l$V!_0SMCGZsh7@1^_3R1X2J1 delta 19 ZcmbQtKAD{>l$V!_0SGdRH*$3{0{|sL1KI!p diff --git a/logviewer/logviewer/__pycache__/settings.cpython-38.pyc b/logviewer/logviewer/__pycache__/settings.cpython-38.pyc index 9f4c0d58edd5d562498b0c204f6423aaac05aafa..10c756210767ee7cb77b37c4b13b401e75fb60eb 100644 GIT binary patch delta 102 zcmaDL(k#jw%FD~e00a}>A57jckyn;cY@@aiBd0->TnckAgQnqTC&q(pd{JD%j=rw` zL7wiOewy-|Svg`ErEc*@#JdFnh2#ALLOlKbf>$yWX#hROe{2zs delta 66 zcmZn`eIUXc%FD~e00i0mYm;Y8Oh4>>XUmogBj;de!#g90Oo-Y`2YX_ diff --git a/logviewer/logviewer/__pycache__/urls.cpython-38.pyc b/logviewer/logviewer/__pycache__/urls.cpython-38.pyc index e31fe2f0bd20d4d0c653c261aef0575ca97aa3b3..31bf70d53943c511e65c39b94451c7a13b76a0e1 100644 GIT binary patch delta 254 zcmcaDx=Bnsl$V!_0SFR4986xo%fRp$#6bo+K#l_t7b|SkW@2QNnry|mKbfB?ZRTL1OCy*?Lel`bgpiNaBV_Y$G7s7^FU3Gm0z4B$z?dbh8DM5{r^>VoGsR zd~RYvd_iJfYK~q;Np4OR4@eLwrdL{&Q@lBnt%FHOtRSOO-_a%5Ngt#(C9x!N^KFi0 fj66|5m$UHmFbXj8Fi)Pyr9OE9mjn7&CbHZ2!vMwir6Js diff --git a/logviewer/logviewer/settings.py b/logviewer/logviewer/settings.py index 9f67ffd..2df18a0 100644 --- a/logviewer/logviewer/settings.py +++ b/logviewer/logviewer/settings.py @@ -148,3 +148,5 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' ALLOWED_HOSTS = ['sdr-cabinet', 'sdr-cabinet.dyn.spangdorfia.com'] ASGI_APPLICATION = 'logviewer.asgi.application' + +X_FRAME_OPTIONS = 'SAMEORIGIN' diff --git a/logviewer/logviewer/urls.py b/logviewer/logviewer/urls.py index 5758a5f..ae573ea 100644 --- a/logviewer/logviewer/urls.py +++ b/logviewer/logviewer/urls.py @@ -35,12 +35,12 @@ urlpatterns = [ path('alerts/alerts_view.json', include('dbview.urls')), path('phy/phy80211/ssids/views/ssids.json', include('dbview.urls')), path('css/images/', include('kiscontent.urls')), + path('adsb_map_panel.html', include('adsbmap.urls')), path('system/status.json', include('dbview.urls')), path('alerts/wrapped/last-time/0/alerts.json', include('dbview.urls')), path('messagebus/last-time/0/messages.json', include('dbview.urls')), path('channels/channels.json', include('dbview.urls')), path('devices/views/all/devices.json', include('dbview.urls')), - #path('devices/views//devices.json', include('dbview.urls')), path('devices/views/phydot11_accesspoints/devices.json', include('dbview.urls')), path('devices/views/phy-RADIATION/devices.json', include('dbview.urls')), path('devices/views/phy-802.15.4/devices.json', include('dbview.urls')), @@ -53,11 +53,9 @@ urlpatterns = [ path('devices/views/phy-Z-Wave/devices.json', include('dbview.urls')), path('devices/views/phy-RTL433/devices.json', include('dbview.urls')), path('devices/views/phy-IEEE802.11/devices.json', include('dbview.urls')), + path('phy/ADSB/map_data.json', include('dbview.urls')), path('devices/by-key//device.json', include('devices.urls')), path('devices/multikey/as-object/devices.json', include('dbview.urls')), - #path('devices/views/phydot11_accesspoints/devices.json', include('dbview.urls')), - #path('devices/views/phy-RADIATION/devices.json', include('dbviews.urls')), - #path('devices/views/phy-802.15.4/devices.json', include('dbviews.utls')), path('datasource/by-uuid//source.json', include('devices.urls')), path('phy/phy80211/ssids/by-hash//ssid.json', include('devices.urls')), path('eventbus/', include('eventbus.urls')), diff --git a/logviewer/static/dynamic.js b/logviewer/static/dynamic.js index d8e7b71..0bc785a 100644 --- a/logviewer/static/dynamic.js +++ b/logviewer/static/dynamic.js @@ -1,23 +1,23 @@ var local_uri_prefix = "./"; if (typeof(KISMET_URI_PREFIX) !== 'undefined') local_uri_prefix = KISMET_URI_PREFIX; +var kismet_ui_adsb; var kismet_ui_bluetooth; var kismet_ui_btle; var kismet_ui_datasources; var kismet_ui_dot11; +var kismet_ui_meter; var kismet_ui_rtl433; -//var kismet_ui_rtladsb; -//var kismet_ui_rtlamr; var kismet_ui_uav; var kismet_ui_zwave; async function load_dynamics() { +kismet_ui_adsb = await import(`${local_uri_prefix}js/kismet.ui.adsb.js`); kismet_ui_bluetooth = await import(`${local_uri_prefix}js/kismet.ui.bluetooth.js`); kismet_ui_btle = await import(`${local_uri_prefix}js/kismet.ui.btle.js`); kismet_ui_datasources = await import(`${local_uri_prefix}js/kismet.ui.datasources.js`); kismet_ui_dot11 = await import(`${local_uri_prefix}js/kismet.ui.dot11.js`); +kismet_ui_meter = await import(`${local_uri_prefix}js/kismet.ui.meter.js`); kismet_ui_rtl433 = await import(`${local_uri_prefix}js/kismet.ui.rtl433.js`); -//kismet_ui_rtladsb = await import(`${local_uri_prefix}js/kismet.ui.rtladsb.js`); -//kismet_ui_rtlamr = await import(`${local_uri_prefix}js/kismet.ui.rtlamr.js`); kismet_ui_uav = await import(`${local_uri_prefix}js/kismet.ui.uav.js`); kismet_ui_zwave = await import(`${local_uri_prefix}js/kismet.ui.zwave.js`); } -- 2.34.1