Start implementing main config

This commit is contained in:
Anders Pitman 2020-09-28 14:07:54 -06:00
parent 92affa7718
commit 501af0c3dc

View File

@ -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)