forked from loweel/zabov
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"log"
|
||
|
"os"
|
||
|
|
||
|
"github.com/miekg/dns"
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
|
||
|
//ZabovConf describes the Json we use for configuration
|
||
|
type ZabovConf struct {
|
||
|
Zabov struct {
|
||
|
Port string `json:"port"`
|
||
|
Proto string `json:"proto"`
|
||
|
Ipaddr string `json:"ipaddr"`
|
||
|
Upstream string `json:"upstream"`
|
||
|
Cachettl int `json:"cachettl"`
|
||
|
Killfilettl int `json:"killfilettl"`
|
||
|
Singlefilters string `json:"singlefilters"`
|
||
|
Doublefilters string `json:"doublefilters"`
|
||
|
Blackholeip string `json:"blackholeip"`
|
||
|
Hostsfile string `json:"hostsfile"`
|
||
|
} `json:"zabov"`
|
||
|
}
|
||
|
|
||
|
var MyConf ZabovConf
|
||
|
|
||
|
file, err := ioutil.ReadFile("config.json")
|
||
|
|
||
|
if err != nil {
|
||
|
log.Println("Cannot open config file", err.Error())
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
|
||
|
err = json.Unmarshal([]byte(file), &MyConf)
|
||
|
|
||
|
if err != nil {
|
||
|
log.Println("Cannot marshal json: ", err.Error())
|
||
|
os.Exit(1)
|
||
|
}
|
||
|
|
||
|
// now we read configuration file
|
||
|
fmt.Println("Reading configuration file...")
|
||
|
|
||
|
ZabovPort := MyConf.Zabov.Port
|
||
|
ZabovType := MyConf.Zabov.Proto
|
||
|
ZabovAddr := MyConf.Zabov.Ipaddr
|
||
|
ZabovUpDNS = MyConf.Zabov.Upstream
|
||
|
ZabovSingleBL = MyConf.Zabov.Singlefilters
|
||
|
ZabovDoubleBL = MyConf.Zabov.Doublefilters
|
||
|
ZabovAddBL = MyConf.Zabov.Blackholeip
|
||
|
ZabovCacheTTL = MyConf.Zabov.Cachettl
|
||
|
ZabovKillTTL = MyConf.Zabov.Killfilettl
|
||
|
ZabovHostsFile = MyConf.Zabov.Hostsfile
|
||
|
|
||
|
zabovString := ZabovAddr + ":" + ZabovPort
|
||
|
|
||
|
MyDNS = new(dns.Server)
|
||
|
MyDNS.Addr = zabovString
|
||
|
MyDNS.Net = ZabovType
|
||
|
|
||
|
ZabovDNSArray = fileByLines(ZabovUpDNS)
|
||
|
|
||
|
}
|