added tor circuit stats to main page

This commit is contained in:
Kevin Froman 2020-01-25 02:23:18 -06:00
parent 57f233d856
commit 5c636246fb
9 changed files with 1066 additions and 9 deletions

View File

@ -26,7 +26,7 @@ import unpaddedbase32
from httpapi import apiutils from httpapi import apiutils
import onionrcrypto, config import onionrcrypto, config
from netcontroller import NetController from netcontroller import NetController
from serializeddata import SerializedData from statistics.serializeddata import SerializedData
from onionrutils import mnemonickeys from onionrutils import mnemonickeys
from onionrutils import bytesconverter from onionrutils import bytesconverter
from etc import onionrvalues from etc import onionrvalues

View File

@ -4,6 +4,7 @@ SSE API for node client access
""" """
from flask import g, Blueprint from flask import g, Blueprint
from gevent import sleep from gevent import sleep
#from time import sleep
from statistics.transports.tor import TorStats from statistics.transports.tor import TorStats
from .. import wrapper from .. import wrapper
@ -38,9 +39,8 @@ def stream_hello():
@private_sse_blueprint.route('/torcircuits') @private_sse_blueprint.route('/torcircuits')
def stream_tor_circuits(): def stream_tor_circuits():
tor_stats = g.too_many.get(TorStats) tor_stats = g.too_many.get(TorStats)
def stream(): def circuit_stat_stream():
while True: while True:
yield tor_stats.get_json() yield "data: " + tor_stats.get_json() + "\n\n"
sleep(10)
sleep(3) return SSEWrapper.handle_sse_request(circuit_stat_stream)
return SSEWrapper.handle_sse_request(stream)

View File

@ -25,7 +25,7 @@ from etc import onionrvalues, cleanup
from onionrcrypto import getourkeypair from onionrcrypto import getourkeypair
from utils import hastor, logoheader from utils import hastor, logoheader
from . import version from . import version
import serializeddata from statistics import serializeddata
import runtests import runtests
from httpapi import daemoneventsapi from httpapi import daemoneventsapi
""" """

View File

@ -14,9 +14,11 @@
<link rel="stylesheet" href="/gettheme"> <link rel="stylesheet" href="/gettheme">
<script defer src="/shared/node_modules/pnotify/dist/iife/PNotify.js"></script> <script defer src="/shared/node_modules/pnotify/dist/iife/PNotify.js"></script>
<script defer src="/shared/node_modules/pnotify/dist/iife/PNotifyButtons.js"></script> <script defer src="/shared/node_modules/pnotify/dist/iife/PNotifyButtons.js"></script>
<script defer src="/shared/eventsource.js"></script>
<script defer src="/shared/loadabout.js"></script> <script defer src="/shared/loadabout.js"></script>
<script defer src="/shared/misc.js"></script> <script defer src="/shared/misc.js"></script>
<script defer src="/shared/main/stats.js"></script> <script defer src="/shared/main/stats.js"></script>
<script defer src="/shared/main/torstats.js"></script>
<script defer src="/shared/panel.js"></script> <script defer src="/shared/panel.js"></script>
<script defer src="/shared/configeditor.js"></script> <script defer src="/shared/configeditor.js"></script>
<script defer src="/shared/sites.js"></script> <script defer src="/shared/sites.js"></script>
@ -177,7 +179,7 @@
</p> </p>
</header> </header>
<div class="card-content"> <div class="card-content">
<div class="content transportInfo"> <div class="content torInfo">
</div> </div>
</div> </div>
</div> </div>

View File

@ -28,4 +28,8 @@
.modal img{ .modal img{
border-radius: 5px; border-radius: 5px;
}
.torStats{
color: red;
} }

File diff suppressed because it is too large Load Diff

View File

@ -175,7 +175,7 @@ body{
} }
.primaryBtn{ .primaryBtn{
background-color:#396BAC; background-color:#396BAC;
} }
.btn:hover{ .btn:hover{

View File

@ -0,0 +1,23 @@
var torSource = new EventSourcePolyfill("/torcircuits")
var displays = document.getElementsByClassName('torInfo')
for (x = 0; x < displays.length; x++){
displays[x].style.whiteSpace = 'pre'
}
torSource.onmessage = function(e){
let data = JSON.parse(e.data)
let i = 0
let displaying = true
for (x = 0; x < displays.length; x++){
let circuitCount = Object.keys(data).length
let node = Object.keys(data)[0]
if (circuitCount > 0){
displays[x].innerText = "Using " + circuitCount + " Tor circuits with " + data[node]['nodes'][0]['finger'] + " as guard.\nGuard nick: " + data[node]['nodes'][0]['nick']
}
else{
displays[x].innerText = "Using 0 Tor circuits."
}
}
}