mirror of
https://github.com/xvzc/SpoofDPI.git
synced 2025-01-04 13:24:46 +00:00
60 lines
1023 B
Go
60 lines
1023 B
Go
package config
|
|
|
|
import (
|
|
"errors"
|
|
"log"
|
|
"strings"
|
|
"sync"
|
|
"runtime"
|
|
)
|
|
|
|
type Config struct {
|
|
SrcIp string
|
|
SrcPort string
|
|
DNS string
|
|
OS string
|
|
Debug bool
|
|
}
|
|
|
|
var config *Config
|
|
var once sync.Once
|
|
var err error
|
|
|
|
func tokenizeAddress(srcAddress string) (string, string, error) {
|
|
tokens := strings.Split(srcAddress, ":")
|
|
if len(tokens) < 2 {
|
|
return "", "", errors.New("Error while parsing source address: invalid format.")
|
|
}
|
|
|
|
ip := tokens[0]
|
|
port := tokens[1]
|
|
|
|
return ip, port, nil
|
|
}
|
|
|
|
func InitConfig(srcAddress string, dns string, debug bool) error {
|
|
err = nil
|
|
|
|
once.Do(func() {
|
|
ip, port, err := tokenizeAddress(srcAddress)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
return
|
|
}
|
|
|
|
config = &Config{
|
|
SrcIp : ip,
|
|
SrcPort : port,
|
|
DNS : dns,
|
|
OS : runtime.GOOS,
|
|
Debug : debug,
|
|
}
|
|
})
|
|
|
|
return err
|
|
}
|
|
|
|
func GetConfig() (*Config) {
|
|
return config
|
|
}
|