aboutsummaryrefslogtreecommitdiff
path: root/docker/netiquette/src
diff options
context:
space:
mode:
authorQuentin <quentin@deuxfleurs.fr>2020-02-09 20:09:20 +0100
committerQuentin <quentin@deuxfleurs.fr>2020-02-09 20:09:20 +0100
commit96c6da392fc3236754c273a299728ad0360b3d51 (patch)
treedb6732c726c731396b482debe329cd5894613d02 /docker/netiquette/src
parentba5590ce97953f66702b149fd7840bcb58d4b463 (diff)
downloadinfrastructure-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.mjs30
-rw-r--r--docker/netiquette/src/catalog/control_loop.mjs10
-rw-r--r--docker/netiquette/src/injector/iptables.mjs53
-rw-r--r--docker/netiquette/src/injector/upnp.mjs0
-rw-r--r--docker/netiquette/src/io/files.mjs8
-rw-r--r--docker/netiquette/src/io/run.mjs9
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})))
-