From 9c4ce9c759b8236f1f720eeac6912b2cbfa14390 Mon Sep 17 00:00:00 2001 From: Viet Huynh Date: Tue, 12 Sep 2023 17:04:28 +0700 Subject: [PATCH] cleaned up rules code --- cf_gateway_rule_create.js | 26 +++++++++----------------- cf_gateway_rule_delete.js | 20 ++++++++++++-------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/cf_gateway_rule_create.js b/cf_gateway_rule_create.js index d29ba2f..bf9e73d 100644 --- a/cf_gateway_rule_create.js +++ b/cf_gateway_rule_create.js @@ -1,21 +1,13 @@ -import { createZeroTrustRule, getZeroTrustLists } from './lib/api.js'; +import { createZeroTrustRule, getZeroTrustLists } from "./lib/api.js"; -;(async() => { - const { result: lists } = await getZeroTrustLists(); - const filtered_lists = lists.filter(list => list.name.startsWith('CGPS List')); +const { result: lists } = await getZeroTrustLists(); +const wirefilterExpression = lists.reduce((previous, current, index) => { + if (!current.name.startsWith("CGPS List")) return previous; - let wirefilter_expression = ''; + // Remove the trailing ' or ' + if (index === lists.length - 1) return previous.slice(0, -4); - // Build the wirefilter expression - for (const list of filtered_lists) { - wirefilter_expression += `any(dns.domains[*] in \$${list.id}) or `; - } - // Remove the trailing ' or ' - if (wirefilter_expression.endsWith(' or ')) { - wirefilter_expression = wirefilter_expression.slice(0, -4); - } - wirefilter_expression = wirefilter_expression.trim().replace('\n', ''); - if (!process.env.CI) console.log(`Firewall expression contains ${wirefilter_expression.length} characters, and checks against ${filtered_lists.length} filter lists.`) + return `${previous} any(dns.domains[*] in \$${current.id}) or `; +}, ""); - await createZeroTrustRule(wirefilter_expression); -})(); +await createZeroTrustRule(wirefilterExpression); diff --git a/cf_gateway_rule_delete.js b/cf_gateway_rule_delete.js index 5c04aea..e8aedf5 100644 --- a/cf_gateway_rule_delete.js +++ b/cf_gateway_rule_delete.js @@ -1,12 +1,16 @@ -import { deleteZeroTrustRule, getZeroTrustRules } from './lib/api.js'; +import { deleteZeroTrustRule, getZeroTrustRules } from "./lib/api.js"; -;(async() => { - const { result: rules } = await getZeroTrustRules(); - const [filtered_rule] = rules.filter(rule => rule.name === "CGPS Filter Lists"); +const { result: rules } = await getZeroTrustRules(); +const cgpsRule = rules.find(({ name }) => name === "CGPS Filter Lists"); - if (!filtered_rule) return console.warn("No rule with matching name found - this is not an issue if you haven't run the create script yet. Exiting."); +(async () => { + if (!cgpsRule) { + console.warn( + "No rule with matching name found - this is not an issue if you haven't run the create script yet. Exiting." + ); + return; + } - console.log(`Deleting rule`, process.env.CI ? "(redacted, running in CI)" : `"${filtered_rule.name}" with ID ${filtered_rule.id}`); - - await deleteZeroTrustRule(filtered_rule.id); + console.log(`Deleting rule ${cgpsRule.name}`); + await deleteZeroTrustRule(cgpsRule.id); })();