From ac535c927aa7b6e8887639dae944df685b67bf34 Mon Sep 17 00:00:00 2001 From: Viet Huynh Date: Thu, 2 Nov 2023 02:42:28 +0700 Subject: [PATCH] updated logging for API calls --- cf_gateway_rule_create.js | 1 + cf_gateway_rule_delete.js | 2 +- cf_list_create.js | 10 +++++--- cf_list_delete.js | 2 ++ lib/api.js | 53 ++++++++++++++++++++++++--------------- 5 files changed, 44 insertions(+), 24 deletions(-) diff --git a/cf_gateway_rule_create.js b/cf_gateway_rule_create.js index d069a00..9bf8f34 100644 --- a/cf_gateway_rule_create.js +++ b/cf_gateway_rule_create.js @@ -7,5 +7,6 @@ const wirefilterExpression = lists.reduce((previous, current) => { return `${previous} any(dns.domains[*] in \$${current.id}) or `; }, ""); +console.log("Creating rule..."); // Remove the trailing ' or ' await createZeroTrustRule(wirefilterExpression.slice(0, -4)); diff --git a/cf_gateway_rule_delete.js b/cf_gateway_rule_delete.js index e8aedf5..a0e08f4 100644 --- a/cf_gateway_rule_delete.js +++ b/cf_gateway_rule_delete.js @@ -11,6 +11,6 @@ const cgpsRule = rules.find(({ name }) => name === "CGPS Filter Lists"); return; } - console.log(`Deleting rule ${cgpsRule.name}`); + console.log(`Deleting rule ${cgpsRule.name}...`); await deleteZeroTrustRule(cgpsRule.id); })(); diff --git a/cf_list_create.js b/cf_list_create.js index 61e906c..52a8b0b 100644 --- a/cf_list_create.js +++ b/cf_list_create.js @@ -118,15 +118,15 @@ await readFile(resolve(`./${blocklistFilename}`), (line, rl) => { } }); +const numberOfLists = Math.ceil(domains.length / LIST_ITEM_SIZE); + console.log("\n\n"); console.log(`Number of processed domains: ${processedDomainCount}`); console.log(`Number of duplicate domains: ${duplicateDomainCount}`); console.log(`Number of unnecessary domains: ${unnecessaryDomainCount}`); console.log(`Number of blocked domains: ${domains.length}`); console.log(`Number of allowed domains: ${allowedDomainCount}`); -console.log( - `Number of lists to be created: ${Math.ceil(domains.length / LIST_ITEM_SIZE)}` -); +console.log(`Number of lists to be created: ${numberOfLists}`); console.log("\n\n"); (async () => { @@ -137,6 +137,10 @@ console.log("\n\n"); return; } + console.log( + `Creating ${numberOfLists} lists for ${domains.length} domains...` + ); + if (FAST_MODE) { await createZeroTrustListsAtOnce(domains); return; diff --git a/cf_list_delete.js b/cf_list_delete.js index e9d3cb6..f8be9e4 100644 --- a/cf_list_delete.js +++ b/cf_list_delete.js @@ -28,6 +28,8 @@ import { FAST_MODE } from "./lib/constants.js"; `Got ${lists.length} lists, ${cgpsLists.length} of which are CGPS lists that will be deleted.` ); + console.log(`Deleting ${cgpsLists.length} lists...`); + if (FAST_MODE) { await deleteZeroTrustListsAtOnce(cgpsLists); return; diff --git a/lib/api.js b/lib/api.js index 2764a4f..a647fa0 100644 --- a/lib/api.js +++ b/lib/api.js @@ -62,7 +62,6 @@ export const createZeroTrustListsOneByOne = async (items) => { * @param {string[]} items The domains. */ export const createZeroTrustListsAtOnce = async (items) => { - const totalListNumber = Math.ceil(items.length / LIST_ITEM_SIZE); const requests = []; for (let i = 0, listNumber = 1; i < items.length; i += LIST_ITEM_SIZE) { @@ -77,7 +76,7 @@ export const createZeroTrustListsAtOnce = async (items) => { try { await Promise.all(requests); - console.log(`Created ${totalListNumber} lists`); + console.log("Created lists successfully"); } catch (err) { console.error(`Error occurred while creating lists - ${err.toString()}`); } @@ -125,7 +124,7 @@ export const deleteZeroTrustListsAtOnce = async (lists) => { try { await Promise.all(requests); - console.log(`Deleted ${lists.length} lists`); + console.log("Deleted lists successfully"); } catch (err) { console.error(`Error occurred while deleting lists - ${err.toString()}`); } @@ -147,19 +146,26 @@ export const getZeroTrustRules = () => * @param {string} wirefilterExpression The expression to be used for the rule. * @returns {Promise} */ -export const createZeroTrustRule = (wirefilterExpression) => - requestGateway("/rules", { - method: "POST", - body: JSON.stringify({ - name: "CGPS Filter Lists", - description: - "Filter lists created by Cloudflare Gateway Pi-hole Scripts. Avoid editing this rule. Changing the name of this rule will break the script.", - enabled: true, - action: "block", - filters: ["dns"], - traffic: wirefilterExpression, - }), - }); +export const createZeroTrustRule = async (wirefilterExpression) => { + try { + await requestGateway("/rules", { + method: "POST", + body: JSON.stringify({ + name: "CGPS Filter Lists", + description: + "Filter lists created by Cloudflare Gateway Pi-hole Scripts. Avoid editing this rule. Changing the name of this rule will break the script.", + enabled: true, + action: "block", + filters: ["dns"], + traffic: wirefilterExpression, + }), + }); + + console.log("Created rule successfully"); + } catch (err) { + console.error(`Error occurred while creating rule - ${err.toString()}`); + } +}; /** * Deletes a Zero Trust rule. @@ -168,7 +174,14 @@ export const createZeroTrustRule = (wirefilterExpression) => * @param {number} id The ID of the rule to be deleted. * @returns {Promise} */ -export const deleteZeroTrustRule = (id) => - requestGateway(`/rules/${id}`, { - method: "DELETE", - }); +export const deleteZeroTrustRule = async (id) => { + try { + await requestGateway(`/rules/${id}`, { + method: "DELETE", + }); + + console.log("Deleted rule successfully"); + } catch (err) { + console.error(`Error occurred while deleting rule - ${err.toString()}`); + } +};