2023-01-03 14:03:09 +00:00
|
|
|
async function fetchConfig(element) {
|
|
|
|
let xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("GET", '/-/config', true);
|
|
|
|
xhr.onreadystatechange = function () {
|
|
|
|
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
|
|
|
|
element.innerHTML = JSON.stringify(JSON.parse(xhr.response),null,2);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
xhr.send();
|
|
|
|
}
|
|
|
|
|
2023-01-02 17:01:44 +00:00
|
|
|
async function fetchOriginsWithLeases(element) {
|
|
|
|
let xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("GET", '/-/origins?leases=true', true);
|
|
|
|
xhr.onreadystatechange = function () {
|
|
|
|
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
|
|
|
|
const x = JSON.parse(xhr.response)
|
|
|
|
console.debug(x)
|
|
|
|
|
|
|
|
element.innerHTML = ''
|
|
|
|
let table = document.createElement('table')
|
|
|
|
table.classList.add('table', 'mt-4');
|
|
|
|
let thead = document.createElement('thead');
|
|
|
|
thead.innerHTML = `
|
|
|
|
<tr>
|
|
|
|
<th scope="col">origin</th>
|
|
|
|
<th scope="col">hostname</th>
|
|
|
|
<th scope="col">OS</th>
|
|
|
|
<th scope="col">driver version</th>
|
|
|
|
<th scope="col">leases</th>
|
|
|
|
</tr>`
|
|
|
|
table.appendChild(thead)
|
|
|
|
let tbody = document.createElement('thead');
|
2023-01-03 20:29:24 +00:00
|
|
|
x.sort((a, b) => a.hostname.localeCompare(b.hostname)).forEach((o) => {
|
2023-01-02 17:01:44 +00:00
|
|
|
let row = document.createElement('tr');
|
|
|
|
row.innerHTML = `
|
|
|
|
<td><code>${o.origin_ref}</code></td>
|
|
|
|
<td>${o.hostname}</td>
|
2023-01-03 20:23:57 +00:00
|
|
|
<td>${o.os_platform} (${o.os_version})</td>
|
|
|
|
<td>${o.guest_driver_version}</td>
|
2023-01-02 17:01:44 +00:00
|
|
|
<td>${o.leases.map(x => `<code title="expires: ${x.lease_expires}">${x.lease_ref}</code>`).join(', ')}</td>`
|
|
|
|
tbody.appendChild(row);
|
|
|
|
})
|
|
|
|
table.appendChild(tbody)
|
|
|
|
element.appendChild(table)
|
|
|
|
}
|
|
|
|
};
|
|
|
|
xhr.send();
|
|
|
|
}
|
|
|
|
|
|
|
|
async function fetchLeases(element) {
|
2023-01-03 20:49:24 +00:00
|
|
|
// datetime config
|
|
|
|
const dtc = {
|
|
|
|
year: "numeric",
|
|
|
|
month: "2-digit",
|
|
|
|
day: "2-digit",
|
|
|
|
hour: "2-digit",
|
|
|
|
minute: "2-digit",
|
|
|
|
second: "2-digit",
|
|
|
|
timeZoneName: "short"
|
|
|
|
}
|
|
|
|
|
2023-01-02 17:01:44 +00:00
|
|
|
let xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("GET", '/-/leases?origin=true', true);
|
|
|
|
xhr.onreadystatechange = function () {
|
|
|
|
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
|
|
|
|
const x = JSON.parse(xhr.response)
|
|
|
|
console.debug(x)
|
|
|
|
|
|
|
|
element.innerHTML = ''
|
|
|
|
let table = document.createElement('table')
|
|
|
|
table.classList.add('table', 'mt-4');
|
|
|
|
let thead = document.createElement('thead');
|
|
|
|
thead.innerHTML = `
|
|
|
|
<tr>
|
|
|
|
<th scope="col">lease</th>
|
|
|
|
<th scope="col">created</th>
|
|
|
|
<th scope="col">updated</th>
|
2023-01-18 07:42:57 +00:00
|
|
|
<th scope="col">next renew</th>
|
2023-01-02 17:01:44 +00:00
|
|
|
<th scope="col">expires</th>
|
|
|
|
<th scope="col">origin</th>
|
|
|
|
</tr>`
|
|
|
|
table.appendChild(thead)
|
|
|
|
let tbody = document.createElement('thead');
|
2023-01-03 20:29:32 +00:00
|
|
|
x.sort((a, b) => new Date(a.lease_expires) - new Date(b.lease_expires)).forEach((o) => {
|
2023-01-02 17:01:44 +00:00
|
|
|
let row = document.createElement('tr');
|
|
|
|
row.innerHTML = `
|
|
|
|
<td><code>${o.lease_ref}</code></td>
|
2023-01-03 20:49:24 +00:00
|
|
|
<td>${new Date(o.lease_created).toLocaleDateString('system', dtc)}</td>
|
|
|
|
<td>${new Date(o.lease_updated).toLocaleDateString('system', dtc)}</td>
|
2023-01-18 07:42:57 +00:00
|
|
|
<td>${new Date(o.lease_renewal).toLocaleDateString('system', dtc)}</td>
|
2023-01-03 20:49:24 +00:00
|
|
|
<td>${new Date(o.lease_expires).toLocaleDateString('system', dtc)}</td>
|
2023-01-18 07:42:28 +00:00
|
|
|
<td><code title="hostname: ${o.origin?.hostname}">${o.origin_ref}</code></td>`
|
2023-01-02 17:01:44 +00:00
|
|
|
tbody.appendChild(row);
|
|
|
|
})
|
|
|
|
table.appendChild(tbody)
|
|
|
|
element.appendChild(table)
|
|
|
|
}
|
|
|
|
};
|
|
|
|
xhr.send();
|
|
|
|
}
|
|
|
|
|
|
|
|
async function deleteOrigins() {
|
|
|
|
let xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("DELETE", '/-/origins', true);
|
|
|
|
xhr.send();
|
|
|
|
}
|
|
|
|
|
2023-01-04 08:51:43 +00:00
|
|
|
async function deleteOrigin(origin_ref) {
|
|
|
|
if (origin_ref === undefined)
|
|
|
|
origin_ref = window.prompt("Please enter 'origin_ref' which should be deleted");
|
|
|
|
if (origin_ref === null || origin_ref === "")
|
|
|
|
return
|
|
|
|
let xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("DELETE", `/-/origins/${origin_ref}`, true);
|
|
|
|
xhr.send();
|
|
|
|
}
|
|
|
|
|
2023-01-02 17:01:44 +00:00
|
|
|
async function deleteLease(lease_ref) {
|
|
|
|
if (lease_ref === undefined)
|
|
|
|
lease_ref = window.prompt("Please enter 'lease_ref' which should be deleted");
|
|
|
|
if (lease_ref === null || lease_ref === "")
|
|
|
|
return
|
|
|
|
let xhr = new XMLHttpRequest();
|
2023-01-18 11:04:42 +00:00
|
|
|
xhr.open("DELETE", `/-/lease/${lease_ref}`, true);
|
2023-01-02 17:01:44 +00:00
|
|
|
xhr.send();
|
|
|
|
}
|
2023-06-12 09:41:01 +00:00
|
|
|
|
|
|
|
async function deleteExpiredLeases() {
|
|
|
|
let xhr = new XMLHttpRequest();
|
|
|
|
xhr.open("DELETE", `/-/leases/expired`, true);
|
|
|
|
xhr.send();
|
|
|
|
}
|