Ébauche de scrpit Python pour contrôler nftables
This commit is contained in:
parent
b266bbcab3
commit
74f9066cde
1 changed files with 59 additions and 0 deletions
59
bin/fiwi
Executable file
59
bin/fiwi
Executable file
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env python3
|
||||
from sys import argv
|
||||
from sys import stderr
|
||||
from sys import exit
|
||||
from os import path
|
||||
import nftables
|
||||
|
||||
NFT = nftables.Nftables()
|
||||
FILTER_TABLE = "inet filter"
|
||||
try:
|
||||
NAME = path.basename(argv.pop(0))
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
def error(message, exit_code):
|
||||
print("%s: %s" % (NAME, message), file = stderr)
|
||||
exit(exit_code)
|
||||
|
||||
def alter_set(operation, protocol, port):
|
||||
NFT.cmd("%s element %s allowed_%s { %s }" % (operation, FILTER_TABLE, protocol, port))
|
||||
|
||||
def public_allow(argv):
|
||||
try:
|
||||
protocol = argv.pop(0)
|
||||
except IndexError:
|
||||
error("no protocol supplied", 1)
|
||||
|
||||
try:
|
||||
port = argv.pop(0)
|
||||
except IndexError:
|
||||
error("no port supplied", 1)
|
||||
|
||||
alter_set('add', protocol, port)
|
||||
|
||||
def public_deny(argv):
|
||||
try:
|
||||
protocol = argv.pop(0)
|
||||
except IndexError:
|
||||
error("no protocol supplied", 1)
|
||||
|
||||
try:
|
||||
port = argv.pop(0)
|
||||
except IndexError:
|
||||
error("no port supplied", 1)
|
||||
|
||||
alter_set('delete', protocol, port)
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
arg = argv.pop(0)
|
||||
except IndexError:
|
||||
error("No command supplied", 1)
|
||||
|
||||
try:
|
||||
command = globals()["public_%s" % (arg)]
|
||||
except KeyError:
|
||||
error('invalid command "%s"' % (arg), 2)
|
||||
|
||||
command(argv)
|
Loading…
Reference in a new issue