mirror of
https://github.com/boringproxy/boringproxy.git
synced 2025-02-25 18:55:29 -06:00
Start implementing main config
This commit is contained in:
parent
92affa7718
commit
501af0c3dc
@ -10,11 +10,26 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"strconv"
|
"strconv"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"io/ioutil"
|
||||||
"github.com/caddyserver/certmagic"
|
"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 {
|
type BoringProxy struct {
|
||||||
|
config *BoringProxyConfig
|
||||||
tunMan *TunnelManager
|
tunMan *TunnelManager
|
||||||
adminListener *AdminListener
|
adminListener *AdminListener
|
||||||
certConfig *certmagic.Config
|
certConfig *certmagic.Config
|
||||||
@ -22,6 +37,19 @@ type BoringProxy struct {
|
|||||||
|
|
||||||
func NewBoringProxy() *BoringProxy {
|
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.DisableHTTPChallenge = true
|
||||||
certmagic.DefaultACME.DisableTLSALPNChallenge = true
|
certmagic.DefaultACME.DisableTLSALPNChallenge = true
|
||||||
//certmagic.DefaultACME.CA = certmagic.LetsEncryptStagingCA
|
//certmagic.DefaultACME.CA = certmagic.LetsEncryptStagingCA
|
||||||
@ -30,14 +58,14 @@ func NewBoringProxy() *BoringProxy {
|
|||||||
tunMan := NewTunnelManager(certConfig)
|
tunMan := NewTunnelManager(certConfig)
|
||||||
adminListener := NewAdminListener()
|
adminListener := NewAdminListener()
|
||||||
|
|
||||||
err := certConfig.ManageSync([]string{"anders.boringproxy.io"})
|
err = certConfig.ManageSync([]string{config.AdminDomain})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("CertMagic error")
|
log.Println("CertMagic error")
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
p := &BoringProxy{tunMan, adminListener, certConfig}
|
p := &BoringProxy{config, tunMan, adminListener, certConfig}
|
||||||
|
|
||||||
http.HandleFunc("/", p.handleAdminRequest)
|
http.HandleFunc("/", p.handleAdminRequest)
|
||||||
go http.Serve(adminListener, nil)
|
go http.Serve(adminListener, nil)
|
||||||
@ -143,8 +171,7 @@ func (p *BoringProxy) handleConnection(clientConn net.Conn) {
|
|||||||
// is automatically called on first read/write
|
// is automatically called on first read/write
|
||||||
decryptedConn.Handshake()
|
decryptedConn.Handshake()
|
||||||
|
|
||||||
adminDomain := "anders.boringproxy.io"
|
if serverName == p.config.AdminDomain {
|
||||||
if serverName == adminDomain {
|
|
||||||
p.handleAdminConnection(decryptedConn)
|
p.handleAdminConnection(decryptedConn)
|
||||||
} else {
|
} else {
|
||||||
p.handleTunnelConnection(decryptedConn, serverName)
|
p.handleTunnelConnection(decryptedConn, serverName)
|
||||||
|
Loading…
Reference in New Issue
Block a user