2015-10-28 10:46:36 +00:00
|
|
|
$(document).ready(function() {
|
2015-11-11 19:12:04 +00:00
|
|
|
console.info("Loading CA, to debug: curl " + window.location.href + " --negotiate -u : -H 'Accept: application/json'");
|
|
|
|
$.ajax({
|
|
|
|
method: "GET",
|
2015-12-12 22:34:08 +00:00
|
|
|
url: "/api/",
|
2015-11-11 19:12:04 +00:00
|
|
|
dataType: "json",
|
2015-11-15 14:55:26 +00:00
|
|
|
error: function(response) {
|
|
|
|
if (response.responseJSON) {
|
|
|
|
var msg = response.responseJSON
|
|
|
|
} else {
|
|
|
|
var msg = { title: "Error " + response.status, description: response.statusText }
|
|
|
|
}
|
|
|
|
$("#container").html(nunjucks.render('error.html', { message: msg }));
|
|
|
|
},
|
2015-11-11 19:12:04 +00:00
|
|
|
success: function(session, status, xhr) {
|
2015-12-12 22:34:08 +00:00
|
|
|
console.info("Got:", session);
|
|
|
|
|
|
|
|
console.info("Opening EventSource from:", session.event_channel);
|
|
|
|
|
|
|
|
var source = new EventSource(session.event_channel);
|
2015-10-28 10:46:36 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.onmessage = function(event) {
|
|
|
|
console.log("Received server-sent event:", event);
|
2015-11-11 19:12:04 +00:00
|
|
|
}
|
2015-10-28 10:46:36 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.addEventListener("up-client", function(e) {
|
|
|
|
console.log("Adding security association:" + e.data);
|
|
|
|
var lease = JSON.parse(e.data);
|
|
|
|
var $status = $("#signed_certificates [data-dn='" + lease.identity + "'] .status");
|
|
|
|
$status.html(nunjucks.render('status.html', {
|
|
|
|
lease: {
|
|
|
|
address: lease.address,
|
|
|
|
identity: lease.identity,
|
|
|
|
acquired: new Date(),
|
|
|
|
released: null
|
|
|
|
}}));
|
|
|
|
});
|
2015-10-28 10:46:36 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.addEventListener("down-client", function(e) {
|
|
|
|
console.log("Removing security association:" + e.data);
|
|
|
|
var lease = JSON.parse(e.data);
|
|
|
|
var $status = $("#signed_certificates [data-dn='" + lease.identity + "'] .status");
|
|
|
|
$status.html(nunjucks.render('status.html', {
|
|
|
|
lease: {
|
|
|
|
address: lease.address,
|
|
|
|
identity: lease.identity,
|
|
|
|
acquired: null,
|
|
|
|
released: new Date()
|
|
|
|
}}));
|
|
|
|
});
|
2015-10-28 10:46:36 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.addEventListener("request_deleted", function(e) {
|
|
|
|
console.log("Removing deleted request #" + e.data);
|
|
|
|
$("#request_" + e.data).remove();
|
|
|
|
});
|
2015-10-28 10:46:36 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.addEventListener("request_submitted", function(e) {
|
|
|
|
console.log("Request submitted:", e.data);
|
|
|
|
$.ajax({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/request/" + e.data + "/",
|
|
|
|
dataType: "json",
|
|
|
|
success: function(request, status, xhr) {
|
|
|
|
console.info(request);
|
|
|
|
$("#pending_requests").prepend(
|
|
|
|
nunjucks.render('request.html', { request: request }));
|
2015-11-11 19:12:04 +00:00
|
|
|
}
|
2015-12-12 22:34:08 +00:00
|
|
|
});
|
2015-11-11 19:12:04 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
});
|
2015-11-13 22:16:38 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.addEventListener("request_signed", function(e) {
|
|
|
|
console.log("Request signed:", e.data);
|
|
|
|
$("#request_" + e.data).slideUp("normal", function() { $(this).remove(); });
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/signed/" + e.data + "/",
|
|
|
|
dataType: "json",
|
|
|
|
success: function(certificate, status, xhr) {
|
|
|
|
console.info(certificate);
|
|
|
|
$("#signed_certificates").prepend(
|
|
|
|
nunjucks.render('signed.html', { certificate: certificate }));
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2015-10-28 10:46:36 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
source.addEventListener("certificate_revoked", function(e) {
|
|
|
|
console.log("Removing revoked certificate #" + e.data);
|
|
|
|
$("#certificate_" + e.data).slideUp("normal", function() { $(this).remove(); });
|
|
|
|
});
|
2015-11-15 14:55:26 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
$("#container").html(nunjucks.render('authority.html', { session: session, window: window }));
|
2015-11-11 19:12:04 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
$.ajax({
|
|
|
|
method: "GET",
|
|
|
|
url: "/api/lease/",
|
|
|
|
dataType: "json",
|
|
|
|
success: function(leases, status, xhr) {
|
|
|
|
console.info("Got leases:", leases);
|
|
|
|
for (var j = 0; j < leases.length; j++) {
|
|
|
|
var $status = $("#signed_certificates [data-dn='" + leases[j].identity + "'] .status");
|
|
|
|
if (!$status.length) {
|
|
|
|
console.info("Detected rogue client:", leases[j]);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$status.html(nunjucks.render('status.html', {
|
|
|
|
lease: {
|
|
|
|
address: leases[j].address,
|
|
|
|
identity: leases[j].identity,
|
|
|
|
acquired: new Date(leases[j].acquired).toLocaleString(),
|
|
|
|
released: leases[j].released ? new Date(leases[j].released).toLocaleString() : null
|
|
|
|
}}));
|
|
|
|
}
|
2015-11-15 14:55:26 +00:00
|
|
|
|
2015-12-12 22:34:08 +00:00
|
|
|
/* Set up search box */
|
|
|
|
$("#search").on("keyup", function() {
|
|
|
|
var q = $("#search").val().toLowerCase();
|
|
|
|
$(".filterable").each(function(i, e) {
|
|
|
|
if ($(e).attr("data-dn").toLowerCase().indexOf(q) >= 0) {
|
|
|
|
$(e).show();
|
|
|
|
} else {
|
|
|
|
$(e).hide();
|
2015-11-15 14:55:26 +00:00
|
|
|
}
|
|
|
|
});
|
2015-11-11 19:12:04 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
2015-10-28 10:46:36 +00:00
|
|
|
});
|