Pndpd/config.go

83 lines
1.6 KiB
Go
Raw Normal View History

2021-12-21 06:42:30 -05:00
package main
import (
"bufio"
"log"
"os"
2021-12-22 07:01:30 -05:00
"pndpd/pndp"
2021-12-21 06:42:30 -05:00
"strings"
)
type configResponder struct {
Iface string
Filter string
}
type configProxy struct {
Iface1 string
Iface2 string
}
func readConfig(dest string) {
file, err := os.Open(dest)
if err != nil {
log.Fatal(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if strings.HasPrefix(line, "//") {
continue
}
if strings.HasPrefix(line, "debug") {
if strings.Contains(line, "off") {
2021-12-22 07:01:30 -05:00
pndp.GlobalDebug = false
2021-12-21 06:42:30 -05:00
}
continue
}
if strings.HasPrefix(line, "responder") {
obj := configResponder{}
2021-12-22 06:04:00 -05:00
filter := ""
2021-12-21 06:42:30 -05:00
for {
scanner.Scan()
line = scanner.Text()
if strings.HasPrefix(line, "iface") {
obj.Iface = strings.TrimSpace(strings.TrimPrefix(line, "iface"))
}
if strings.HasPrefix(line, "filter") {
2021-12-22 06:04:00 -05:00
filter += strings.TrimSpace(strings.TrimPrefix(line, "filter")) + ";"
2021-12-21 06:42:30 -05:00
}
if strings.HasPrefix(line, "}") {
2021-12-22 06:04:00 -05:00
obj.Filter = filter
2021-12-21 06:42:30 -05:00
break
}
}
2021-12-22 07:01:30 -05:00
pndp.SimpleRespond(obj.Iface, pndp.ParseFilter(obj.Filter))
2021-12-21 06:42:30 -05:00
}
if strings.HasPrefix(line, "proxy") {
obj := configProxy{}
for {
scanner.Scan()
line = scanner.Text()
if strings.HasPrefix(line, "iface1") {
obj.Iface1 = strings.TrimSpace(strings.TrimPrefix(line, "iface1"))
}
if strings.HasPrefix(line, "iface2") {
obj.Iface2 = strings.TrimSpace(strings.TrimPrefix(line, "iface2"))
}
if strings.HasPrefix(line, "}") {
break
}
}
2021-12-22 07:01:30 -05:00
pndp.Proxy(obj.Iface1, obj.Iface2)
2021-12-21 06:42:30 -05:00
}
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}