Replace hardcoded socks proxy chain with json config file

pull/19/head
David Stainton 9 years ago
parent 61039af4e3
commit d0ee559a91

@ -2,16 +2,20 @@ package main
import ( import (
// _ "net/http/pprof" // _ "net/http/pprof"
"bufio"
"encoding/json"
"os" "os"
"os/signal" "os/signal"
"regexp"
"strings"
"sync"
"syscall"
"time" "time"
"unsafe"
"github.com/subgraph/fw-daemon/Godeps/_workspace/src/github.com/op/go-logging" "github.com/subgraph/fw-daemon/Godeps/_workspace/src/github.com/op/go-logging"
"github.com/subgraph/fw-daemon/nfqueue" "github.com/subgraph/fw-daemon/nfqueue"
"github.com/subgraph/fw-daemon/proc" "github.com/subgraph/fw-daemon/proc"
"sync"
"syscall"
"unsafe"
) )
var log = logging.MustGetLogger("sgfw") var log = logging.MustGetLogger("sgfw")
@ -138,7 +142,52 @@ func (fw *Firewall) runFilter() {
} }
} }
type SocksJsonConfig struct {
SocksListener string
TorSocks string
}
var commentRegexp = regexp.MustCompile("^[ \t]*#")
func loadConfiguration(configFilePath string) (*SocksJsonConfig, error) {
config := SocksJsonConfig{}
file, err := os.Open(configFilePath)
if err != nil {
return nil, err
}
scanner := bufio.NewScanner(file)
bs := ""
for scanner.Scan() {
line := scanner.Text()
if !commentRegexp.MatchString(line) {
bs += line + "\n"
}
}
if err := json.Unmarshal([]byte(bs), &config); err != nil {
return nil, err
}
return &config, nil
}
func main() { func main() {
config, err := loadConfiguration("/etc/fw-daemon-socks.json")
if err != nil {
panic(err)
}
// XXX
fields := strings.Split(config.TorSocks, ":")
torSocksNet := fields[0]
torSocksAddr := fields[1]
fields = strings.Split(config.SocksListener, ":")
socksListenNet := fields[0]
socksListenAddr := fields[1]
socksConfig := SocksChainConfig{
TargetSocksNet: torSocksNet,
TargetSocksAddr: torSocksAddr,
ListenSocksNet: socksListenNet,
ListenSocksAddr: socksListenAddr,
}
logBackend := setupLoggerBackend() logBackend := setupLoggerBackend()
log.SetBackend(logBackend) log.SetBackend(logBackend)
proc.SetLogger(log) proc.SetLogger(log)
@ -175,12 +224,6 @@ func main() {
}() }()
*/ */
socksConfig := SocksChainConfig{
TargetSocksNet: "tcp",
TargetSocksAddr: "127.0.0.1:9050",
ListenSocksNet: "tcp",
ListenSocksAddr: "127.0.0.1:8850",
}
wg := sync.WaitGroup{} wg := sync.WaitGroup{}
InitSocksListener(&socksConfig, &wg) InitSocksListener(&socksConfig, &wg)
fw.runFilter() fw.runFilter()

Loading…
Cancel
Save