Mael G.
efffac8b0a
Theses change breaks old configuration files but make the code readability better thanks to VSCode plugins.
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"flag"
|
|
"strconv"
|
|
|
|
"github.com/miekg/dns"
|
|
"github.com/outout14/sacrebleu-dns/core"
|
|
"github.com/outout14/sacrebleu-dns/utils"
|
|
"github.com/sirupsen/logrus"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
//Global vars
|
|
//conf Configuration
|
|
var conf *utils.Conf
|
|
|
|
//DB the SQL database
|
|
var DB *sql.DB
|
|
|
|
//Main loop
|
|
func main() {
|
|
//Get the config patch from --config flag
|
|
configPatch := flag.String("config", "extra/config.ini.example", "the patch to the config file")
|
|
flag.Parse()
|
|
|
|
//Load the INI configuration file
|
|
conf = new(utils.Conf)
|
|
err := ini.MapTo(conf, *configPatch)
|
|
utils.CheckErr(err)
|
|
|
|
//Set up the Logrus logger
|
|
utils.InitLogger(conf)
|
|
|
|
//Attach DNS request handler func for all domains
|
|
dns.HandleFunc(".", core.HandleDNSRequest)
|
|
|
|
//Initialize the redis database
|
|
utils.RedisDatabase(conf)
|
|
|
|
//Initialize the sql database
|
|
utils.SQLDatabase(conf)
|
|
|
|
//Start the DNS server
|
|
server := &dns.Server{Addr: conf.App.IP + strconv.Itoa(conf.App.Port), Net: "udp"} //define the server
|
|
logrus.WithFields(logrus.Fields{"ip": conf.App.IP, "port": conf.App.Port}).Infof("SERVER : Started") //log
|
|
err = server.ListenAndServe() //start it
|
|
utils.CheckErr(err)
|
|
|
|
defer server.Shutdown() //shut down on application closing
|
|
}
|