Stripped from the internal repo: per-box deploy trees, Go services (nodelist/astmeta/proxy/svxdr), deploy/sync scripts and all secrets. Config templates for nginx, PHP-FPM, Redis and tmpfiles live in install/ with CHANGEME placeholders. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
34 lines
841 B
JavaScript
34 lines
841 B
JavaScript
'use strict';
|
|
|
|
function renderList(nodes){
|
|
const tbody = document.getElementById('rows');
|
|
if(!tbody) return;
|
|
tbody.innerHTML = "";
|
|
|
|
const calls = Object.keys(nodes || {}).sort();
|
|
|
|
for(const cs of calls){
|
|
const n = nodes[cs] || {};
|
|
const tr = document.createElement('tr');
|
|
|
|
const tdCS = document.createElement('td');
|
|
tdCS.textContent = cs;
|
|
|
|
const tdTG = document.createElement('td');
|
|
tdTG.textContent = (n.restrictedTG ? "*" : "") + (n.tg ?? "");
|
|
|
|
const tdLoc = document.createElement('td');
|
|
let loc = "";
|
|
if(Array.isArray(n.qth) && n.qth.length && n.qth[0].name) loc = n.qth[0].name;
|
|
tdLoc.textContent = loc;
|
|
|
|
tr.appendChild(tdCS);
|
|
tr.appendChild(tdTG);
|
|
tr.appendChild(tdLoc);
|
|
tbody.appendChild(tr);
|
|
}
|
|
|
|
document.getElementById('nodeCount').textContent = calls.length;
|
|
}
|
|
|