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 (
// _ "net/http/pprof"
"bufio"
"encoding/json"
"os"
"os/signal"
"regexp"
"strings"
"sync"
"syscall"
"time"
"unsafe"
"github.com/subgraph/fw-daemon/Godeps/_workspace/src/github.com/op/go-logging"
"github.com/subgraph/fw-daemon/nfqueue"
"github.com/subgraph/fw-daemon/proc"
"sync"
"syscall"
"unsafe"
)
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() {
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()
log.SetBackend(logBackend)
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{}
InitSocksListener(&socksConfig, &wg)
fw.runFilter()

Loading…
Cancel
Save