in webui/js/blocky4.js [155:316]
async function prime_search(target, state) {
if (!state) {
window.history.pushState({}, '', `?search:${target}`);
}
let main = document.getElementById('main');
main.innerHTML = '';
if (target && target.length > 0) {
let title = _h1("Search results for " + target + ":");
main.appendChild(title);
let p = _p("Searching, please wait...");
main.appendChild(p);
let results = await POST('search', {source: target});
if (results.success === false) {
p.innerText = results.message;
return
}
main.removeChild(p);
// Allow list results
let h2 = _h2(`Allow list results (${results.allow.length})`);
main.appendChild(h2);
let allow_table = _table();
allow_table.style.tableLayout = 'fixed';
main.appendChild(allow_table);
let theader = _tr();
theader.appendChild(_th('Source IP', 300));
theader.appendChild(_th('Added', 120));
theader.appendChild(_th('Expires', 120));
theader.appendChild(_th('Reason', 500));
theader.appendChild(_th('Actions', 100));
allow_table.appendChild(theader);
let results_shown = 0;
results.allow.sort((a,b) => b.timestamp - a.timestamp); // sort desc by timestamp
for (const entry of results.allow) {
let tr = _tr();
let td_ip = _td(entry.ip);
let td_added = _td(moment(entry.timestamp * 1000.0).fromNow());
let td_expires = _td(entry.expires > 0 ? moment(entry.expires * 1000.0).fromNow() : 'Never');
let td_reason = _td(entry.reason);
let td_action = _td();
td_action.appendChild(unblock_link(entry, true));
td_ip.style.fontFamily = "monospace";
if (entry.ip.length > 16) td_ip.style.fontSize = "0.8rem";
tr.appendChild(td_ip);
tr.appendChild(td_added);
tr.appendChild(td_expires);
tr.appendChild(td_reason);
tr.appendChild(td_action);
allow_table.appendChild(tr);
results_shown++;
if (results_shown > 25 && results.block.length > 25) {
break
}
}
if (results_shown === 0) {
let tr = _tr();
tr.innerText = "No results found...";
allow_table.appendChild(tr);
}
// Block list results
let bh2 = _h2(`Block list results (${results.block.length})`);
main.appendChild(bh2);
let block_table = _table();
block_table.style.tableLayout = 'fixed';
main.appendChild(block_table);
let btheader = _tr();
btheader.appendChild(_th('Source IP', 300));
btheader.appendChild(_th('Added', 120));
btheader.appendChild(_th('Expires', 120));
btheader.appendChild(_th('Reason', 500));
btheader.appendChild(_th('Actions', 100));
block_table.appendChild(btheader);
results_shown = 0;
results.block.sort((a,b) => b.timestamp - a.timestamp); // sort desc by timestamp
for (const entry of results.block) {
let tr = _tr();
let td_ip = _td(entry.ip);
let td_added = _td(moment(entry.timestamp * 1000.0).fromNow());
let td_expires = _td(entry.expires > 0 ? moment(entry.expires * 1000.0).fromNow() : 'Never');
let td_reason = _td(entry.reason);
let td_actions = _td('');
td_actions.appendChild(unblock_link(entry));
td_ip.style.fontFamily = "monospace";
if (entry.ip.length > 16) td_ip.style.fontSize = "0.8rem";
tr.appendChild(td_ip);
tr.appendChild(td_added);
tr.appendChild(td_expires);
tr.appendChild(td_reason);
tr.appendChild(td_actions);
block_table.appendChild(tr);
results_shown++;
if (results_shown > 25 && results.block.length > 25) {
break
}
}
if (results_shown === 0) {
let tr = _tr();
tr.innerText = "No results found...";
block_table.appendChild(tr);
}
// iptables results
let ih2 = _h2(`Local iptables results (${results.iptables.length})`);
main.appendChild(ih2);
let iptables_table = _table();
iptables_table.style.tableLayout = 'fixed';
main.appendChild(iptables_table);
let itheader = _tr();
itheader.appendChild(_th('Source IP', 300));
itheader.appendChild(_th('Host', 200));
itheader.appendChild(_th('Chain', 100));
itheader.appendChild(_th('Reason', 450));
itheader.appendChild(_th('Actions', 100));
iptables_table.appendChild(itheader);
results_shown = 0;
for (const entry of results.iptables) {
let tr = _tr();
let td_ip = _td(entry.source);
let td_host = _td(entry.hostname);
let td_chain = _td(entry.chain);
let td_reason = _td(entry.extensions.replace(/\/\*\s*(.+)\s*\*\//, (b,a) => a));
let td_actions = _td();
td_actions.appendChild(unblock_iptables_link(entry));
td_ip.style.fontFamily = "monospace";
if (entry.source.length > 16) td_ip.style.fontSize = "0.8rem";
tr.appendChild(td_ip);
tr.appendChild(td_host);
tr.appendChild(td_chain);
tr.appendChild(td_reason);
tr.appendChild(td_actions);
iptables_table.appendChild(tr);
results_shown++;
if (results_shown > 25 && results.block.length > 25) {
break
}
}
if (results_shown === 0) {
let tr = _tr();
tr.innerText = "No results found...";
iptables_table.appendChild(tr);
}
} else {
//let x = await sleep(10);
let p = _p("Use the search bar in the top left corner for now...");
main.appendChild(p);
}
}