Use xo 0.53.0 and fix errors

Signed-off-by: Christian König <ckoenig@posteo.de>
This commit is contained in:
Christian König
2022-11-20 11:29:30 +01:00
parent ad468b711b
commit 7a9cf91def
10 changed files with 303 additions and 114 deletions
+70 -24
View File
@@ -233,24 +233,35 @@ $(function () {
var replyid = parseInt(data[6], 10);
var dnssecStatus;
switch (data[8]) {
case 1:
case 1: {
dnssecStatus = '<br><span class="text-green">SECURE';
break;
case 2:
}
case 2: {
dnssecStatus = '<br><span class="text-orange">INSECURE';
break;
case 3:
}
case 3: {
dnssecStatus = '<br><span class="text-red">BOGUS';
break;
case 4:
}
case 4: {
dnssecStatus = '<br><span class="text-red">ABANDONED';
break;
case 5:
}
case 5: {
dnssecStatus = '<br><span class="text-orange">UNKNOWN';
break;
default:
}
default: {
// No DNSSEC
dnssecStatus = "";
}
}
if (dnssecStatus.length > 0) {
@@ -262,13 +273,15 @@ $(function () {
buttontext = "",
blocked = false;
switch (data[4]) {
case 1:
case 1: {
fieldtext = "<span class='text-red'>Blocked (gravity)</span>";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case 2:
}
case 2: {
fieldtext =
replyid === 0
? "<span class='text-green'>OK</span> (sent to <br class='hidden-lg'>"
@@ -277,91 +290,124 @@ $(function () {
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
case 3:
}
case 3: {
fieldtext =
"<span class='text-green'>OK</span> <br class='hidden-lg'>(cache)" + dnssecStatus;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
case 4:
}
case 4: {
fieldtext = "<span class='text-red'>Blocked <br class='hidden-lg'>(regex blacklist)";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case 5:
}
case 5: {
fieldtext = "<span class='text-red'>Blocked <br class='hidden-lg'>(exact blacklist)";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case 6:
}
case 6: {
fieldtext = "<span class='text-red'>Blocked <br class='hidden-lg'>(external, IP)";
blocked = true;
break;
case 7:
}
case 7: {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(external, NULL)</span>";
blocked = true;
break;
case 8:
}
case 8: {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(external, NXRA)</span>";
blocked = true;
break;
case 9:
}
case 9: {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(gravity, CNAME)</span>";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case 10:
}
case 10: {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(regex blacklist, CNAME)</span>";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case 11:
}
case 11: {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(exact blacklist, CNAME)</span>";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case 12:
}
case 12: {
fieldtext = "<span class='text-green'>Retried</span>";
break;
case 13:
}
case 13: {
fieldtext = "<span class='text-green'>Retried</span> <br class='hidden-lg'>(ignored)";
break;
case 14:
}
case 14: {
fieldtext =
"<span class='text-green'>OK</span> <br class='hidden-lg'>(already forwarded)" +
dnssecStatus;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
case 15:
}
case 15: {
fieldtext =
"<span class='text-orange'>Blocked <br class='hidden-lg'>(database is busy)</span>";
blocked = true;
break;
case 16:
}
case 16: {
fieldtext =
"<span class='text-orange'>Blocked <br class='hidden-lg'>(special domain)</span>";
blocked = true;
break;
case 17:
}
case 17: {
fieldtext =
"<span class='text-orange'>OK</span> <br class='hidden-lg'>(stale cache)" +
dnssecStatus;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
default:
}
default: {
fieldtext = "Unknown (" + parseInt(data[4], 10) + ")";
}
}
// Cannot block internal queries of this type
+14 -7
View File
@@ -23,18 +23,20 @@ function piholeChanged(action) {
var dis = $("#pihole-disable");
switch (action) {
case "enabled":
case "enabled": {
status.html("<i class='fa fa-circle text-green-light'></i> Active");
ena.hide();
dis.show();
dis.removeClass("active");
break;
}
case "disabled":
case "disabled": {
status.html("<i class='fa fa-circle text-red'></i> Blocking disabled");
ena.show();
dis.hide();
break;
}
default:
// nothing
@@ -71,7 +73,7 @@ function piholeChange(action, duration) {
var btnStatus;
switch (action) {
case "enable":
case "enable": {
btnStatus = $("#flip-status-enable");
btnStatus.html("<i class='fa fa-spinner'> </i>");
$.getJSON("api.php?enable&token=" + token, function (data) {
@@ -81,8 +83,9 @@ function piholeChange(action, duration) {
}
});
break;
}
case "disable":
case "disable": {
btnStatus = $("#flip-status-disable");
btnStatus.html("<i class='fa fa-spinner'> </i>");
$.getJSON("api.php?disable=" + duration + "&token=" + token, function (data) {
@@ -96,6 +99,7 @@ function piholeChange(action, duration) {
}
});
break;
}
default:
// nothing
@@ -168,19 +172,22 @@ function initCPUtemp() {
var displaytemp = $("#tempdisplay");
if (!isNaN(temperature)) {
switch (unit) {
case "K":
case "K": {
temperature += 273.15;
displaytemp.html(temperature.toFixed(1) + "&nbsp;K");
break;
}
case "F":
case "F": {
temperature = (temperature * 9) / 5 + 32;
displaytemp.html(temperature.toFixed(1) + "&nbsp;&deg;F");
break;
}
default:
default: {
displaytemp.html(temperature.toFixed(1) + "&nbsp;&deg;C");
break;
}
}
}
}
+41 -15
View File
@@ -44,34 +44,44 @@ function format(data) {
var numbers = true;
if (data.status !== null) {
switch (parseInt(data.status, 10)) {
case 0:
case 0: {
statusText =
data.enabled === 0
? "List is disabled and not checked"
: "List was not downloaded so far";
numbers = false;
break;
case 1:
}
case 1: {
statusText = 'List download was successful (<span class="list-status-1">OK</span>)';
break;
case 2:
}
case 2: {
statusText =
'List unchanged upstream, Pi-hole used a local copy (<span class="list-status-2">OK</span>)';
break;
case 3:
}
case 3: {
statusText =
'List unavailable, Pi-hole used a local copy (<span class="list-status-3">check list</span>)';
break;
case 4:
}
case 4: {
statusText =
'List unavailable, there is no local copy of this list available on your Pi-hole (<span class="list-status-4">replace list</span>)';
numbers = false;
break;
}
default:
default: {
statusText =
'Unknown (<span class="list-status-0">' + parseInt(data.status, 10) + "</span>)";
break;
}
}
}
@@ -168,21 +178,30 @@ function initTable() {
}
switch (statusCode) {
case 1:
case 1: {
statusIcon = "fa-check";
break;
case 2:
}
case 2: {
statusIcon = "fa-history";
break;
case 3:
}
case 3: {
statusIcon = "fa-exclamation-circle";
break;
case 4:
}
case 4: {
statusIcon = "fa-times";
break;
default:
}
default: {
statusIcon = "fa-question-circle";
break;
}
}
// Append red exclamation-triangle when there are invalid lines on the list
@@ -567,7 +586,7 @@ function editAdlist() {
var done = "edited";
var notDone = "editing";
switch (elem) {
case "status_" + id:
case "status_" + id: {
if (status === 0) {
done = "disabled";
notDone = "disabling";
@@ -577,17 +596,24 @@ function editAdlist() {
}
break;
case "comment_" + id:
}
case "comment_" + id: {
done = "edited comment of";
notDone = "editing comment of";
break;
case "multiselect_" + id:
}
case "multiselect_" + id: {
done = "edited groups of";
notDone = "editing groups of";
break;
default:
}
default: {
alert("bad element or invalid data-id!");
return;
}
}
utils.disableAll();
+8 -3
View File
@@ -467,17 +467,22 @@ function editClient() {
var done = "edited";
var notDone = "editing";
switch (elem) {
case "multiselect_" + id:
case "multiselect_" + id: {
done = "edited groups of";
notDone = "editing groups of";
break;
case "comment_" + id:
}
case "comment_" + id: {
done = "edited comment of";
notDone = "editing comment of";
break;
default:
}
default: {
alert("bad element or invalid data-id!");
return;
}
}
if (name.length > 0) {
+17 -6
View File
@@ -596,7 +596,7 @@ function editDomain() {
var done = "edited";
var notDone = "editing";
switch (elem) {
case "status_" + id:
case "status_" + id: {
if (status === 0) {
done = "disabled";
notDone = "disabling";
@@ -606,25 +606,36 @@ function editDomain() {
}
break;
case "name_" + id:
}
case "name_" + id: {
done = "edited name of";
notDone = "editing name of";
break;
case "comment_" + id:
}
case "comment_" + id: {
done = "edited comment of";
notDone = "editing comment of";
break;
case "type_" + id:
}
case "type_" + id: {
done = "edited type of";
notDone = "editing type of";
break;
case "multiselect_" + id:
}
case "multiselect_" + id: {
done = "edited groups of";
notDone = "editing groups of";
break;
default:
}
default: {
alert("bad element or invalid data-id!");
return;
}
}
utils.disableAll();
+11 -4
View File
@@ -312,7 +312,7 @@ function editGroup() {
var done = "edited";
var notDone = "editing";
switch (elem) {
case "status_" + id:
case "status_" + id: {
if (status === 0) {
done = "disabled";
notDone = "disabling";
@@ -322,17 +322,24 @@ function editGroup() {
}
break;
case "name_" + id:
}
case "name_" + id: {
done = "edited name of";
notDone = "editing name of";
break;
case "desc_" + id:
}
case "desc_" + id: {
done = "edited description of";
notDone = "editing description of";
break;
default:
}
default: {
alert("bad element or invalid data-id!");
return;
}
}
utils.disableAll();
+33 -12
View File
@@ -123,7 +123,7 @@ var customTooltips = function (context) {
tooltipX = offsetX + caretX;
if (tooltip.yAlign === "top" || tooltip.yAlign === "bottom") {
switch (tooltip.xAlign) {
case "center":
case "center": {
// set a minimal X position to 5px to prevent
// the tooltip to stick out left of the viewport
var minX = 5;
@@ -135,30 +135,44 @@ var customTooltips = function (context) {
}
break;
case "left":
}
case "left": {
tooltipX -= arrowMinIndent;
arrowX = arrowMinIndent;
break;
case "right":
}
case "right": {
tooltipX -= tooltipWidth - arrowMinIndent;
arrowX = tooltipWidth - arrowMinIndent;
break;
default:
}
default: {
break;
}
}
} else if (tooltip.yAlign === "center") {
switch (tooltip.xAlign) {
case "left":
case "left": {
tooltipX += caretPadding;
break;
case "right":
}
case "right": {
tooltipX -= tooltipWidth - caretPadding;
break;
case "center":
}
case "center": {
tooltipX -= tooltipWidth / 2;
break;
default:
}
default: {
break;
}
}
}
} else {
@@ -179,10 +193,12 @@ var customTooltips = function (context) {
// Compute Y position
switch (tooltip.yAlign) {
case "top":
case "top": {
tooltipY = offsetY + caretY + arrowSize + caretPadding;
break;
case "center":
}
case "center": {
tooltipY = offsetY + caretY - tooltipHeight / 2;
if (tooltip.xAlign === "left") {
tooltipX += arrowSize;
@@ -191,11 +207,16 @@ var customTooltips = function (context) {
}
break;
case "bottom":
}
case "bottom": {
tooltipY = offsetY + caretY - tooltipHeight - arrowSize - caretPadding;
break;
default:
}
default: {
break;
}
}
// Position tooltip and display
+22 -11
View File
@@ -26,7 +26,7 @@ function multiline(input) {
function renderMessage(data, type, row) {
// Display and search content
switch (row.type) {
case "REGEX":
case "REGEX": {
return (
'Encountered an error when processing <a href="groups-domains.php?domainid=' +
row.blob3 +
@@ -40,8 +40,9 @@ function renderMessage(data, type, row) {
row.message +
"</pre>"
);
}
case "SUBNET":
case "SUBNET": {
return (
"Client <code>" +
row.message +
@@ -56,8 +57,9 @@ function renderMessage(data, type, row) {
row.blob4 +
"</pre> to get the group configuration for this client."
);
}
case "HOSTNAME":
case "HOSTNAME": {
// eslint-disable-next-line unicorn/no-new-array
var hint = new Array(row.blob2 + row.message.length + 3).join(" ");
return (
@@ -73,11 +75,13 @@ function renderMessage(data, type, row) {
hint +
"&uarr;</pre>"
);
}
case "DNSMASQ_CONFIG":
case "DNSMASQ_CONFIG": {
return "FTL failed to start due to " + row.message;
}
case "RATE_LIMIT":
case "RATE_LIMIT": {
return (
"Client " +
row.message +
@@ -87,15 +91,17 @@ function renderMessage(data, type, row) {
parseInt(row.blob2, 10) +
" seconds)"
);
}
case "DNSMASQ_WARN":
case "DNSMASQ_WARN": {
return (
"Warning in <code>dnsmasq</code> core:<pre>" +
row.message +
'</pre> Check out <a href="https://docs.pi-hole.net/ftldns/dnsmasq_warn/" target="_blank">our documentation</a> for further information.'
);
}
case "LOAD":
case "LOAD": {
return (
"Long-term load (15min avg) larger than number of processors: <strong>" +
parseFloat(row.blob1).toFixed(1) +
@@ -103,8 +109,9 @@ function renderMessage(data, type, row) {
parseInt(row.blob2, 10) +
"</strong><br>This may slow down DNS resolution and can cause bottlenecks."
);
}
case "SHMEM":
case "SHMEM": {
return (
"RAM shortage (<code>" +
utils.escapeHtml(row.message) +
@@ -114,8 +121,9 @@ function renderMessage(data, type, row) {
utils.escapeHtml(row.blob2) +
"</pre>"
);
}
case "DISK":
case "DISK": {
return (
"Disk shortage (<code>" +
utils.escapeHtml(row.message) +
@@ -125,8 +133,9 @@ function renderMessage(data, type, row) {
utils.escapeHtml(row.blob2) +
"</pre>"
);
}
case "ADLIST":
case "ADLIST": {
return (
'<a href="groups-adlists.php?adlistid=' +
parseInt(row.blob1, 10) +
@@ -138,9 +147,11 @@ function renderMessage(data, type, row) {
utils.escapeHtml(row.message) +
"</pre>"
);
}
default:
default: {
return "Unknown message type<pre>" + JSON.stringify(row) + "</pre>";
}
}
}
+73 -26
View File
@@ -80,26 +80,37 @@ $(function () {
var replyid = parseInt(data[5], 10);
// DNSSEC status
var dnssecStatus;
var ede = data[11] ? data[11] : "";
var ede = data[11] ?? "";
switch (data[6]) {
case "1":
case "1": {
dnssecStatus = '<br><span class="text-green">SECURE';
break;
case "2":
}
case "2": {
dnssecStatus = '<br><span class="text-orange">INSECURE';
break;
case "3":
}
case "3": {
dnssecStatus = '<br><span class="text-red">BOGUS';
break;
case "4":
}
case "4": {
dnssecStatus = '<br><span class="text-red">ABANDONED';
break;
case "5":
}
case "5": {
dnssecStatus = '<br><span class="text-orange">UNKNOWN';
break;
default:
}
default: {
// No DNSSEC
dnssecStatus = "";
}
}
if (dnssecStatus.length > 0) {
@@ -121,13 +132,15 @@ $(function () {
}
switch (data[4]) {
case "1":
case "1": {
fieldtext = "<span class='text-red'>Blocked (gravity)</span>";
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
blocked = true;
break;
case "2":
}
case "2": {
fieldtext =
replyid === 0
? "<span class='text-green'>OK</span> (sent to <br class='hidden-lg'>"
@@ -137,42 +150,57 @@ $(function () {
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
case "3":
}
case "3": {
fieldtext =
"<span class='text-green'>OK</span> <br class='hidden-lg'>(cache)" + dnssecStatus;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
case "4":
fieldtext = "<span class='text-red'>Blocked <br class='hidden-lg'>(regex blacklist)";
}
case "4": {
fieldtext =
"<span class='text-red'>Blocked <https://eslint.org/docs/latest/rules/prefer-regex-literalsbr class='hidden-lg'>(regex blacklist)";
blocked = true;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
break;
case "5":
}
case "5": {
fieldtext = "<span class='text-red'>Blocked <br class='hidden-lg'>(exact blacklist)";
blocked = true;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
break;
case "6":
}
case "6": {
fieldtext = "<span class='text-red'>Blocked <br class='hidden-lg'>(external, IP)";
blocked = true;
buttontext = "";
break;
case "7":
}
case "7": {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(external, NULL)</span>";
blocked = true;
buttontext = "";
break;
case "8":
}
case "8": {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(external, NXRA)</span>";
blocked = true;
buttontext = "";
break;
case "9":
}
case "9": {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(gravity, CNAME)</span>";
blocked = true;
@@ -180,7 +208,9 @@ $(function () {
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
isCNAME = true;
break;
case "10":
}
case "10": {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(regex blacklist, CNAME)</span>";
blocked = true;
@@ -188,7 +218,9 @@ $(function () {
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
isCNAME = true;
break;
case "11":
}
case "11": {
fieldtext =
"<span class='text-red'>Blocked <br class='hidden-lg'>(exact blacklist, CNAME)</span>";
blocked = true;
@@ -196,38 +228,53 @@ $(function () {
'<button type="button" class="btn btn-default btn-sm text-green"><i class="fas fa-check"></i> Whitelist</button>';
isCNAME = true;
break;
case "12":
}
case "12": {
fieldtext = "<span class='text-green'>Retried</span>";
break;
case "13":
}
case "13": {
fieldtext = "<span class='text-green'>Retried</span> <br class='hidden-lg'>(ignored)";
break;
case "14":
}
case "14": {
fieldtext =
"<span class='text-green'>OK</span> <br class='hidden-lg'>(already forwarded)" +
dnssecStatus;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
case "15":
}
case "15": {
fieldtext =
"<span class='text-orange'>Blocked <br class='hidden-lg'>(database is busy)</span>";
blocked = true;
break;
case "16":
}
case "16": {
fieldtext =
"<span class='text-orange'>Blocked <br class='hidden-lg'>(special domain)</span>";
blocked = true;
break;
case "17":
}
case "17": {
fieldtext =
"<span class='text-orange'>OK</span> <br class='hidden-lg'>(stale cache)" +
dnssecStatus;
buttontext =
'<button type="button" class="btn btn-default btn-sm text-red"><i class="fa fa-ban"></i> Blacklist</button>';
break;
default:
}
default: {
fieldtext = "Unknown (" + parseInt(data[4], 10) + ")";
}
}
// Add EDE here if available and not included in dnssecStatus
+14 -6
View File
@@ -77,7 +77,7 @@ function showAlert(type, icon, title, message) {
var opts = {};
title = "&nbsp;<strong>" + title + "</strong><br>";
switch (type) {
case "info":
case "info": {
opts = {
type: "info",
icon: "far fa-clock",
@@ -86,7 +86,9 @@ function showAlert(type, icon, title, message) {
};
info = $.notify(opts);
break;
case "success":
}
case "success": {
opts = {
type: "success",
icon: icon,
@@ -100,7 +102,9 @@ function showAlert(type, icon, title, message) {
}
break;
case "warning":
}
case "warning": {
opts = {
type: "warning",
icon: "fas fa-exclamation-triangle",
@@ -114,7 +118,9 @@ function showAlert(type, icon, title, message) {
}
break;
case "error":
}
case "error": {
opts = {
type: "danger",
icon: "fas fa-times",
@@ -128,6 +134,8 @@ function showAlert(type, icon, title, message) {
}
break;
}
default:
}
}
@@ -200,12 +208,12 @@ function validateIPv6CIDR(ip) {
}
function validateMAC(mac) {
var macvalidator = new RegExp(/^([\da-fA-F]{2}:){5}([\da-fA-F]{2})$/);
var macvalidator = /^([\da-fA-F]{2}:){5}([\da-fA-F]{2})$/;
return macvalidator.test(mac);
}
function validateHostname(name) {
var namevalidator = new RegExp(/[^<>;"]/);
var namevalidator = /[^<>;"]/;
return namevalidator.test(name);
}