diff options
author | Quentin <quentin@deuxfleurs.fr> | 2020-02-09 20:09:20 +0100 |
---|---|---|
committer | Quentin <quentin@deuxfleurs.fr> | 2020-02-09 20:09:20 +0100 |
commit | 96c6da392fc3236754c273a299728ad0360b3d51 (patch) | |
tree | db6732c726c731396b482debe329cd5894613d02 /docker/netiquette/src | |
parent | ba5590ce97953f66702b149fd7840bcb58d4b463 (diff) | |
download | infrastructure-96c6da392fc3236754c273a299728ad0360b3d51.tar.gz infrastructure-96c6da392fc3236754c273a299728ad0360b3d51.zip |
[diplomate] Skeleton for our UPNP configurator
Diffstat (limited to 'docker/netiquette/src')
-rw-r--r-- | docker/netiquette/src/catalog/consul.mjs | 30 | ||||
-rw-r--r-- | docker/netiquette/src/catalog/control_loop.mjs | 10 | ||||
-rw-r--r-- | docker/netiquette/src/injector/iptables.mjs | 53 | ||||
-rw-r--r-- | docker/netiquette/src/injector/upnp.mjs | 0 | ||||
-rw-r--r-- | docker/netiquette/src/io/files.mjs | 8 | ||||
-rw-r--r-- | docker/netiquette/src/io/run.mjs | 9 |
6 files changed, 0 insertions, 110 deletions
diff --git a/docker/netiquette/src/catalog/consul.mjs b/docker/netiquette/src/catalog/consul.mjs deleted file mode 100644 index 655c61f..0000000 --- a/docker/netiquette/src/catalog/consul.mjs +++ /dev/null @@ -1,30 +0,0 @@ -'use strict' - -let l -export default l = async (node, consul, log, notify) => { - const watch = consul.watch({ method: consul.catalog.node.services, options: {node: node}}) - - const extract_tags = data => - data ? - Object - .keys(data.Services) - .map(k => data.Services[k].Tags) - .reduce((acc, v) => [...acc, ...v], []) : - [] - - watch.on('error', err => { - console.error('error', err) - }) - - watch.on('change', async (data, res) => { - try { - const tags = extract_tags(data) - log(`[consul] new update, detected ${tags.length} tags`) - await notify(tags) - } catch(e) { - console.error('failed to notify target', e) - } - }) - - log('[consul] initialized') -} diff --git a/docker/netiquette/src/catalog/control_loop.mjs b/docker/netiquette/src/catalog/control_loop.mjs deleted file mode 100644 index 56ad6f5..0000000 --- a/docker/netiquette/src/catalog/control_loop.mjs +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' - -let l -export default l = async (timer, interval, notify) => { - timer(() => { - notify([]) - console.log(`[control_loop] actuation (triggered every ${interval} ms)`) - }, interval) - console.log("[control_loop] initialized") -} diff --git a/docker/netiquette/src/injector/iptables.mjs b/docker/netiquette/src/injector/iptables.mjs deleted file mode 100644 index 584b560..0000000 --- a/docker/netiquette/src/injector/iptables.mjs +++ /dev/null @@ -1,53 +0,0 @@ -'use strict' - -let l; -export default l = async (path, readFile, exec, log) => { - - const load_static_rules = async path => - (await readFile(path, 'utf-8')) - .split('\n') - .filter(e => e) - - const get_current_rules = async () => - (await exec('iptables -S INPUT')) - .stdout - .split('\n') - .filter(e => e.match(/^-A INPUT/g)) - - const compute_rules_to_add = (current, target) => - target.filter(r => !current.includes(r)) - - const compute_rules_to_del = (current, target) => - current - .filter(r => !target.includes(r)) - .map(r => r.replace(/^-A INPUT/g, '-D INPUT')) - - const update_rules = async (current, target) => - await Promise.all([ - ...compute_rules_to_del(current, target), - ...compute_rules_to_add(current, target) - ].map(r => exec(`iptables ${r}`))) - - const build_target_rules = (tag_list) => - tag_list - .map(t => /^public_port=(\d+)(-(\d+))?\/(udp|tcp)/g.exec(t)) - .filter(t => t) - .map(t => new Object({ start: t[1], stop: t[3], protocol: t[4] })) - .map(t => t.stop - ? `-A INPUT -p ${t.protocol} --match multiport --dports ${t.start}:${t.stop} -j ACCEPT` - : `-A INPUT -p ${t.protocol} --dport ${t.start} -j ACCEPT`) - - const do_log = (tag_list, r) => { - //log('[iptables]', tag_list) - log(`[iptables] ran ${r.length} commands`) - } - - const static_rules = path ? await load_static_rules(path) : [] - log(`[iptables] initialized with ${static_rules.length} static rules`) - return async tag_list => - do_log( - tag_list, - await update_rules( - await get_current_rules(), - [...static_rules, ...build_target_rules(tag_list)])) -} diff --git a/docker/netiquette/src/injector/upnp.mjs b/docker/netiquette/src/injector/upnp.mjs deleted file mode 100644 index e69de29..0000000 --- a/docker/netiquette/src/injector/upnp.mjs +++ /dev/null diff --git a/docker/netiquette/src/io/files.mjs b/docker/netiquette/src/io/files.mjs deleted file mode 100644 index c3eca1b..0000000 --- a/docker/netiquette/src/io/files.mjs +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -import fs from 'fs' - -export const readFile = (file, opts) => - new Promise((resolve, reject) => - fs.readFile(file, opts, (err, data) => - err ? reject(err) : resolve(data))) diff --git a/docker/netiquette/src/io/run.mjs b/docker/netiquette/src/io/run.mjs deleted file mode 100644 index 8774043..0000000 --- a/docker/netiquette/src/io/run.mjs +++ /dev/null @@ -1,9 +0,0 @@ -'use strict' - -import child_process from 'child_process' - -export const exec = (cmd, opts) => - new Promise((resolve, reject) => - child_process.exec(cmd, opts, (error, stdout, stderr) => - error ? reject({err: error, stdout: stdout, stderr: stderr}) : resolve({stdout: stdout, stderr: stderr}))) - |