https://github.com/digilolnet/go-firewalld
Programmatically interact with firewalld using Go.
https://github.com/digilolnet/go-firewalld
dbus firewall firewalld iptables
Last synced: 2 months ago
JSON representation
Programmatically interact with firewalld using Go.
- Host: GitHub
- URL: https://github.com/digilolnet/go-firewalld
- Owner: digilolnet
- License: apache-2.0
- Created: 2024-05-20T20:52:03.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-21T20:36:03.000Z (about 2 years ago)
- Last Synced: 2025-01-16T07:57:23.130Z (over 1 year ago)
- Topics: dbus, firewall, firewalld, iptables
- Language: Go
- Homepage:
- Size: 12.7 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# go-firewalld
[](https://goreportcard.com/report/github.com/digilolnet/go-firewalld)
[](https://godoc.org/github.com/digilolnet/go-firewalld)
[](https://github.com/digilolnet/go-firewalld/blob/master/LICENSE.md)
Go wrapper for firewalld D-Bus interface.
[](https://www.digilol.net)
## Usage
```go
package main
import (
"log"
"github.com/digilolnet/go-firewalld"
)
func main() {
fw, err := firewalld.NewFirewalldClient()
if err != nil {
log.Println(err)
}
// Add new chain using permanent direct rule
if err := fw.DirectAddChainPermanent("ipv4", "filter", "MYCHAIN"); err != nil {
log.Println(err)
}
// Handle packets related to processes with owner UID 1000 at MYCHAIN
if err := fw.DirectAddRulePermanent("ipv4", "filter", "OUTPUT", 0, "-m owner --uid-owner 1000 -j MYCHAIN"); err != nil {
log.Println(err)
}
if err := fw.DirectAddRulePermanent("ipv4", "filter", "MYCHAIN", 0, "-m state --state ESTABLISHED,RELATED -j ACCEPT"); err != nil {
log.Println(err)
}
if err := fw.DirectAddRulePermanent("ipv4", "filter", "MYCHAIN", 0, "-p udp --dport 53 -j ACCEPT"); err != nil {
log.Println(err)
}
if err := fw.DirectAddRulePermanent("ipv4", "filter", "MYCHAIN", 0, "-j REJECT"); err != nil {
log.Println(err)
}
// Reload for changes to take effect immediately
if err := fw.Reload(); err != nil {
log.Println(err)
}
}
```