/
main.go
65 lines (52 loc) · 1016 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main
import (
"log"
"os"
"os/signal"
"runtime"
"time"
)
var (
logger *log.Logger
)
func main() {
logger = initLogger(settings.Log.File)
server := &Server{
host: settings.Server.Host,
port: settings.Server.Port,
rTimeout: 5 * time.Second,
wTimeout: 5 * time.Second,
}
server.Run()
logger.Printf("dnsproxy %s start", settings.Version)
sig := make(chan os.Signal)
signal.Notify(sig, os.Interrupt)
forever:
for {
select {
case <-sig:
logger.Printf("signal received, stopping")
break forever
}
}
}
func Debug(format string, v ...interface{}) {
if settings.Debug {
logger.Printf(format, v...)
}
}
func initLogger(log_file string) (logger *log.Logger) {
if log_file != "" {
f, err := os.Create(log_file)
if err != nil {
os.Exit(1)
}
logger = log.New(f, "dnsproxy [=] ", log.Ldate|log.Ltime)
} else {
logger = log.New(os.Stdout, "dnsproxy [=]", log.Ldate|log.Ltime)
}
return logger
}
func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
}