From 501af0c3dc2150d6566c1e808ebbff305dd7d46c Mon Sep 17 00:00:00 2001 From: Anders Pitman Date: Mon, 28 Sep 2020 14:07:54 -0600 Subject: [PATCH] Start implementing main config --- boringproxy.go | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/boringproxy.go b/boringproxy.go index 7abe7cd..9a03228 100644 --- a/boringproxy.go +++ b/boringproxy.go @@ -10,11 +10,26 @@ import ( "sync" "strconv" "encoding/json" + "io/ioutil" "github.com/caddyserver/certmagic" ) +type BoringProxyConfig struct { + AdminDomain string `json:"admin_domain"` + Smtp *SmtpConfig `json:"smtp"` +} + +type SmtpConfig struct { + Server string + Port int + Username string + Password string +} + + type BoringProxy struct { + config *BoringProxyConfig tunMan *TunnelManager adminListener *AdminListener certConfig *certmagic.Config @@ -22,6 +37,19 @@ type BoringProxy struct { func NewBoringProxy() *BoringProxy { + config := &BoringProxyConfig{} + + configJson, err := ioutil.ReadFile("boringproxy_config.json") + if err != nil { + log.Println(err) + } + + err = json.Unmarshal(configJson, config) + if err != nil { + log.Println(err) + config = &BoringProxyConfig{} + } + //certmagic.DefaultACME.DisableHTTPChallenge = true certmagic.DefaultACME.DisableTLSALPNChallenge = true //certmagic.DefaultACME.CA = certmagic.LetsEncryptStagingCA @@ -30,14 +58,14 @@ func NewBoringProxy() *BoringProxy { tunMan := NewTunnelManager(certConfig) adminListener := NewAdminListener() - err := certConfig.ManageSync([]string{"anders.boringproxy.io"}) + err = certConfig.ManageSync([]string{config.AdminDomain}) if err != nil { log.Println("CertMagic error") log.Println(err) } - p := &BoringProxy{tunMan, adminListener, certConfig} + p := &BoringProxy{config, tunMan, adminListener, certConfig} http.HandleFunc("/", p.handleAdminRequest) go http.Serve(adminListener, nil) @@ -143,8 +171,7 @@ func (p *BoringProxy) handleConnection(clientConn net.Conn) { // is automatically called on first read/write decryptedConn.Handshake() - adminDomain := "anders.boringproxy.io" - if serverName == adminDomain { + if serverName == p.config.AdminDomain { p.handleAdminConnection(decryptedConn) } else { p.handleTunnelConnection(decryptedConn, serverName)