Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix/metrics fixes #434

Merged
merged 4 commits into from
Nov 11, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions explorer/public/assets/js/main.js
Original file line number Diff line number Diff line change
@@ -144,14 +144,16 @@ function compareNodes(node1, node2) {
function createMixnodeRows(mixNodes) {
mixNodes.sort(compareNodes)

const currentUnixTime = new Date().getTime() * 1000000;

mixNodes.forEach(node => {
// because javascript works in mysterious ways, if you sanitize "0", it will return ""
let purifiedRep = DOMPurify.sanitize(node.reputation)
if (purifiedRep.length === 0) {
purifiedRep = 0
}
var $tr = $('<tr>').append(
$('<input type="hidden" id="prev-timestamp-' + node.pubKey + '" value="' + node.timestamp + '"> '),
$('<input type="hidden" id="prev-timestamp-' + node.identityKey + '" value="' + currentUnixTime + '"> '),
$('<td>').html(makeStatusDot(node.identityKey)),
$('<td>').text(purifiedRep),
$('<td>').text(DOMPurify.sanitize(node.version)),
@@ -218,7 +220,6 @@ function processMessage(evt) {
prevTimestamp = updateTimeStampStorage(msg);

timeDiff = (msg.timestamp - prevTimeStamp) / 1000000000;

displayReceivedPackets(msg, timeDiff);
displaySentPackets(msg, timeDiff);
}
527 changes: 249 additions & 278 deletions explorer/public/index.html
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@
Nym Network Status
</title>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no'
name='viewport' />
name='viewport' />
<!-- Fonts and icons -->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" rel="stylesheet">
@@ -36,316 +36,287 @@
</head>

<body class="">
<div class="wrapper ">
<div class="sidebar" data-color="white" data-active-color="danger">
<!--
Tip 1: You can change the color of the sidebar using: data-color="blue | green | orange | red | yellow"
-->
<div class="logo">
<!-- <a href="http://www.creative-tim.com" class="simple-text logo-mini">
<div class="logo-image-small">
<img alt="logo" src="paper-dashboard/assets/img/logo-small.png">
</div>
</a> -->
<a href="https://nymtech.net" class="simple-text logo-normal">
NYM
<!-- <div class="logo-image-big">
<img src="paper-dashboard/assets/img/logo-big.png">
</div> -->
</a>
</div>
<div class="sidebar-wrapper">
<ul class="nav">
<li>
<a href="/">
<i class="nc-icon nc-bank"></i>
<p>Dashboard</p>
</a>
</li>
</ul>
</div>
<div class="wrapper ">
<div class="sidebar" data-color="white" data-active-color="danger">
<!--
Tip 1: You can change the color of the sidebar using: data-color="blue | green | orange | red | yellow"
-->
<div class="logo">
<!-- <a href="http://www.creative-tim.com" class="simple-text logo-mini">
<div class="logo-image-small">
<img alt="logo" src="paper-dashboard/assets/img/logo-small.png">
</div>
</a> -->
<a href="https://nymtech.net" class="simple-text logo-normal">
NYM
<!-- <div class="logo-image-big">
<img src="paper-dashboard/assets/img/logo-big.png">
</div> -->
</a>
</div>
<div class="main-panel">
<!-- Navbar -->
<div id="msg"></div>
<div id="log"></div>
<nav class="navbar navbar-expand-lg navbar-absolute fixed-top navbar-transparent">
<div class="container-fluid">
<div class="navbar-wrapper">
<div class="navbar-toggle">
<button type="button" class="navbar-toggler">
<span class="navbar-toggler-bar bar1"></span>
<span class="navbar-toggler-bar bar2"></span>
<span class="navbar-toggler-bar bar3"></span>
</button>
</div>
<a class="navbar-brand" href="">Nym Network Status</a>
<div class="sidebar-wrapper">
<ul class="nav">
<li>
<a href="/">
<i class="nc-icon nc-bank"></i>
<p>Dashboard</p>
</a>
</li>
</ul>
</div>
</div>
<div class="main-panel">
<!-- Navbar -->
<div id="msg"></div>
<div id="log"></div>
<nav class="navbar navbar-expand-lg navbar-absolute fixed-top navbar-transparent">
<div class="container-fluid">
<div class="navbar-wrapper">
<div class="navbar-toggle">
<button type="button" class="navbar-toggler">
<span class="navbar-toggler-bar bar1"></span>
<span class="navbar-toggler-bar bar2"></span>
<span class="navbar-toggler-bar bar3"></span>
</button>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navigation"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navigation">
<!-- <form>
<div class="input-group no-border">
<input type="text" value="" class="form-control" placeholder="Search...">
<div class="input-group-append">
<div class="input-group-text">
<i class="nc-icon nc-zoom-split"></i>
</div>
<a class="navbar-brand" href="">Nym Network Status</a>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navigation"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
<span class="navbar-toggler-bar navbar-kebab"></span>
</button>
<div class="collapse navbar-collapse justify-content-end" id="navigation">
<!-- <form>
<div class="input-group no-border">
<input type="text" value="" class="form-control" placeholder="Search...">
<div class="input-group-append">
<div class="input-group-text">
<i class="nc-icon nc-zoom-split"></i>
</div>
</div>
</form> -->
<ul class="navbar-nav">
<!-- <li class="nav-item">
<a class="nav-link btn-magnify" href="">
<i class="nc-icon nc-layout-11"></i>
<p>
<span class="d-lg-none d-md-block">Stats</span>
</p>
</a>
</li>
<li class="nav-item btn-rotate dropdown">
<a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="nc-icon nc-bell-55"></i>
<p>
<span class="d-lg-none d-md-block">Some Actions</span>
</p>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li> -->
<!-- <li class="nav-item">
<a class="nav-link btn-rotate" href="">
<i class="nc-icon nc-settings-gear-65"></i>
<p>
<span class="d-lg-none d-md-block">Account</span>
</p>
</a>
</li> -->
</ul>
</div>
</div>
</form> -->
<ul class="navbar-nav">
<!-- <li class="nav-item">
<a class="nav-link btn-magnify" href="">
<i class="nc-icon nc-layout-11"></i>
<p>
<span class="d-lg-none d-md-block">Stats</span>
</p>
</a>
</li>
<li class="nav-item btn-rotate dropdown">
<a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="nc-icon nc-bell-55"></i>
<p>
<span class="d-lg-none d-md-block">Some Actions</span>
</p>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li> -->
<!-- <li class="nav-item">
<a class="nav-link btn-rotate" href="">
<i class="nc-icon nc-settings-gear-65"></i>
<p>
<span class="d-lg-none d-md-block">Account</span>
</p>
</a>
</li> -->
</ul>
</div>
</nav>
<!-- End Navbar -->
<!-- <div class="panel-header panel-header-sm">
</div>
</nav>
<!-- End Navbar -->
<!-- <div class="panel-header panel-header-sm">
</div> -->
<div class="content">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">Mix Node Count</h4>
</div>
<div class="card-body" id="mixnodes-count">
<h2></h2>
</div>
</div> -->
<div class="content">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">Mix Node Count</h4>
</div>
</div>

<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Mix Nodes</h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="mixnodes-list">
<thead class=" text-primary">
<tr>
<th width=50px>
Status
</th>
<th>
Version
</th>
<th>
Location
</th>
<th>
Host
</th>
<th>
Layer
</th>
<th>
Public Key
</th>
<th>
Received
</th>
<th>
Sent
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<div class="card-body" id="mixnodes-count">
<h2></h2>
</div>
</div>
</div>

<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Standby Nodes </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="standby-list">
<thead class=" text-primary">
<tr>
<th>
Version
</th>
<th>
Location
</th>
<th>
Host
</th>
<th>
Layer
</th>
<th>
Public Key
</th>
<th>
Received
</th>
<th>
Sent
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Mix Nodes</h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="mixnodes-list">
<thead class=" text-primary">
<tr>
<th width=50px>
Status
</th>
<th width=100px>
Reputation
</th>
<th>
Version
</th>
<th>
Identity key
</th>
<th>
Sphinx key
</th>
<th>
Location
</th>
<th>
Host
</th>
<th>
Layer
</th>
<th>
Received
</th>
<th>
Sent
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Validators</h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="coconodes-list">
<thead class=" text-primary">
<tr>
<th>
Version
</th>
<th>
Location
</th>
<th>
Host
</th>
<th>
Public Verification Key
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Gateways</h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="gatewaynodes-list">
<thead class=" text-primary">
<tr>
<th width=50px>
Status
</th>
<th width=100px>
Reputation
</th>
<th>
Version
</th>
<th>
Identity key
</th>
<th>
Sphinx key
</th>
<th>
Location
</th>
<th>
Mix Host
</th>
<th>
Clients Host
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Gateways</h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="gatewaynodes-list">
<thead class=" text-primary">
<tr>
<th width=50px>
Status
</th>
<th>
Version
</th>
<th>
Location
</th>
<th>
Client Host
</th>
<th>
Mix Host
</th>
<th>
Identity
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4 class="card-title"> Validators</h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table" id="coconodes-list">
<thead class=" text-primary">
<tr>
<th>
Version
</th>
<th>
Location
</th>
<th>
Host
</th>
<th>
Public Verification Key
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<footer class="footer footer-black footer-white ">
<div class="container-fluid">
<div class="row">
<nav class="footer-nav">
<ul>
<li>
<a href="https://nymtech.net" target="_blank">Nym</a>
</li>
<li>
<a href="https://github.com/nymtech/nym-web-dashboard/license" target="_blank">Licenses</a>
</li>
</ul>
</nav>
<div class="credits ml-auto">
</div>
<footer class="footer footer-black footer-white ">
<div class="container-fluid">
<div class="row">
<nav class="footer-nav">
<ul>
<li>
<a href="https://nymtech.net" target="_blank">Nym</a>
</li>
<li>
<a href="https://github.com/nymtech/nym-web-dashboard/license" target="_blank">Licenses</a>
</li>
</ul>
</nav>
<div class="credits ml-auto">
<span class="copyright">
©
<script>
document.write(new Date().getFullYear())
</script>, made with <i class="fa fa-heart heart"></i> by Nym
</span>
</div>
</div>
</div>
</footer>
</div>
</div>
</footer>
</div>
<!-- Core JS Files -->
<script src="paper-dashboard/assets/js/core/jquery.min.js"></script>
<script src="paper-dashboard/assets/js/core/popper.min.js"></script>
<script src="paper-dashboard/assets/js/core/bootstrap.min.js"></script>
<script src="paper-dashboard/assets/js/plugins/perfect-scrollbar.jquery.min.js"></script>
<!-- Chart JS -->
<script src="paper-dashboard/assets/js/plugins/chartjs.min.js"></script>
<!-- Notifications Plugin -->
<script src="paper-dashboard/assets/js/plugins/bootstrap-notify.js"></script>
<!-- Control Center for Now Ui Dashboard: parallax effects, scripts for the example pages etc -->
<script src="paper-dashboard/assets/js/paper-dashboard.min.js?v=2.0.0" type="text/javascript"></script>
<script src="assets/js/purify.js"></script>
<script src="assets/js/main.js"></script>
<script src="assets/js/tablesorter.js"></script>
</div>
<!-- Core JS Files -->
<script src="paper-dashboard/assets/js/core/jquery.min.js"></script>
<script src="paper-dashboard/assets/js/core/popper.min.js"></script>
<script src="paper-dashboard/assets/js/core/bootstrap.min.js"></script>
<script src="paper-dashboard/assets/js/plugins/perfect-scrollbar.jquery.min.js"></script>
<!-- Chart JS -->
<script src="paper-dashboard/assets/js/plugins/chartjs.min.js"></script>
<!-- Notifications Plugin -->
<script src="paper-dashboard/assets/js/plugins/bootstrap-notify.js"></script>
<!-- Control Center for Now Ui Dashboard: parallax effects, scripts for the example pages etc -->
<script src="paper-dashboard/assets/js/paper-dashboard.min.js?v=2.0.0" type="text/javascript"></script>
<script src="assets/js/purify.js"></script>
<script src="assets/js/main.js"></script>
<script src="assets/js/tablesorter.js"></script>
</body>

</html>
2 changes: 1 addition & 1 deletion explorer/src/main.rs
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ async fn main() {
});

tokio::spawn(async move {
websockets::listen(1234, sender_clone).await;
websockets::listen(8080, sender_clone).await;
});

jobs::start().await;
2 changes: 1 addition & 1 deletion mixnode/src/node/mod.rs
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@ impl MixNode {
info!("Starting metrics reporter...");
metrics::MetricsController::new(
self.config.get_metrics_server(),
self.sphinx_keypair.public_key().to_base58_string(),
self.identity_keypair.public_key().to_base58_string(),
self.config.get_metrics_running_stats_logging_delay(),
)
.start()