Files
herolib/lib/osal/ufw/play.v
2024-12-25 08:40:56 +01:00

47 lines
1.0 KiB
V

module ufw
import freeflowuniverse.herolib.core.playbook
import freeflowuniverse.herolib.data.paramsparser
pub fn play_ufw(mut plbook playbook.PlayBook) !RuleSet {
mut ufw_status := UFWStatus{
active: false
rules: []
}
mut ruleset := RuleSet{}
// Find all UFW-related actions
ufw_actions := plbook.find(filter: 'ufw.')!
if ufw_actions.len == 0 {
return
}
for action in ufw_actions {
mut p := action.params
match action.name {
'ufw.configure' {
ufw_status.active = p.get_default_true('active')!
ruleset.ssh = p.get_default_true('ssh')!
ruleset.reset = p.get_default_true('reset')!
}
'ufw.add_rule' {
mut rule := Rule{
allow: p.get_default_true('allow')!
port: p.get_int('port')!
from: p.get_default('from', 'any')!
tcp: p.get_default_true('tcp')!
udp: p.get_default('udp', false)!
ipv6: p.get_default('ipv6', false)!
}
ruleset.rules << rule
}
else {
println('Unknown action: ${action.name}')
}
}
}
return ruleset
}