29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
import chai from 'chai'
|
||
|
import iptables from '../src/injector/iptables.mjs'
|
||
|
const expect = chai.expect
|
||
|
|
||
|
export default [
|
||
|
(async () => {
|
||
|
const effective_actions = []
|
||
|
const expected_actions = [
|
||
|
'iptables -A INPUT -p tcp --dport 56 -j ACCEPT',
|
||
|
'iptables -A INPUT -p tcp --dport 53 -j ACCEPT',
|
||
|
'iptables -A INPUT -p udp --match multiport --dports 25630:25999 -j ACCEPT',
|
||
|
'iptables -D INPUT -p tcp --dport 54 -j ACCEPT'
|
||
|
]
|
||
|
|
||
|
const mockLog = () => {}
|
||
|
const mockReadFile = (file, opt) => '-A INPUT -p tcp --dport 53 -j ACCEPT'
|
||
|
const mockExecCommand = (cmd, opts) => {
|
||
|
if (cmd.match(/^iptables -S/g)) return { stdout: '-A INPUT -p tcp --dport 54 -j ACCEPT' }
|
||
|
else effective_actions.push(cmd)
|
||
|
return { stdout: '' } }
|
||
|
|
||
|
const fw = await iptables('static', mockReadFile, mockExecCommand, mockLog)
|
||
|
await fw(['public_port=56/tcp', 'public_port=25630-25999/udp', 'public_port=13', 'traefik.entrypoints=Host:im.deuxfleurs.fr;PathPrefix:/_matrix'])
|
||
|
expect(effective_actions).to.have.members(expected_actions)
|
||
|
})
|
||
|
]
|