add more hosts

This commit is contained in:
ddvk 2021-03-21 10:17:58 +01:00
parent 8b07f20657
commit 8e3defba48
3 changed files with 53 additions and 18 deletions

2
go.mod
View file

@ -1,3 +1,5 @@
module github.com/yi-jiayu/secure
go 1.15
require gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b

64
main.go
View file

@ -7,6 +7,8 @@ import (
"context"
"flag"
"fmt"
"gopkg.in/yaml.v3"
"io/ioutil"
"log"
"net/http"
"net/http/httputil"
@ -17,30 +19,33 @@ import (
"syscall"
)
type Config struct {
CertFile string `yaml:"certfile"`
KeyFile string `yaml:"keyfile"`
Upstream string `yaml:"upstream"`
Addr string `yaml:"addr"`
}
var (
certFile string
keyFile string
upstream string
addr string
version bool
version bool
configFile string
)
func init() {
flag.StringVar(&addr, "addr", ":443", "listen address")
flag.StringVar(&certFile, "cert", "", "path to cert file")
flag.StringVar(&keyFile, "key", "", "path to key file")
func getConfig() (config *Config, err error) {
cfg := Config{}
flag.StringVar(&configFile, "c", "", "config file")
flag.StringVar(&cfg.Addr, "addr", ":443", "listen address")
flag.StringVar(&cfg.CertFile, "cert", "", "path to cert file")
flag.StringVar(&cfg.KeyFile, "key", "", "path to key file")
flag.BoolVar(&version, "version", false, "print version string and exit")
flag.Usage = func() {
fmt.Fprintf(flag.CommandLine.Output(),
"usage: %s [-addr host:port] -cert certfile -key keyfile [-version] upstream\n",
"usage: %s -c [config.yml] [-addr host:port] -cert certfile -key keyfile [-version] upstream\n",
filepath.Base(os.Args[0]))
flag.PrintDefaults()
fmt.Fprintln(flag.CommandLine.Output(), " upstream string\n \tupstream url")
}
}
func _main() error {
flag.Parse()
if version {
@ -48,14 +53,37 @@ func _main() error {
os.Exit(0)
}
if configFile != "" {
var data []byte
data, err = ioutil.ReadFile(configFile)
if err != nil {
return
}
err = yaml.Unmarshal(data, &cfg)
if err != nil {
return nil, fmt.Errorf("cant parse config, %v", err)
}
return &cfg, nil
}
if flag.NArg() == 1 {
upstream = flag.Arg(0)
cfg.Upstream = flag.Arg(0)
} else {
flag.Usage()
os.Exit(2)
}
u, err := url.Parse(upstream)
return &cfg, nil
}
func _main() error {
cfg, err := getConfig()
if err != nil {
return err
}
u, err := url.Parse(cfg.Upstream)
if err != nil {
return fmt.Errorf("invalid upstream address: %v", err)
}
@ -63,7 +91,7 @@ func _main() error {
rp := httputil.NewSingleHostReverseProxy(u)
srv := http.Server{
Handler: rp,
Addr: addr,
Addr: cfg.Addr,
}
done := make(chan struct{})
@ -78,8 +106,8 @@ func _main() error {
close(done)
}()
log.Printf("cert-file=%s key-file=%s listen-addr=%s upstream-url=%s", certFile, keyFile, srv.Addr, u.String())
if err := srv.ListenAndServeTLS(certFile, keyFile); err != http.ErrServerClosed {
log.Printf("cert-file=%s key-file=%s listen-addr=%s upstream-url=%s", cfg.CertFile, cfg.KeyFile, srv.Addr, u.String())
if err := srv.ListenAndServeTLS(cfg.CertFile, cfg.KeyFile); err != http.ErrServerClosed {
return fmt.Errorf("ListenAndServeTLS: %v", err)
}

View file

@ -104,6 +104,9 @@ subjectAltName=@san
[ san ]
DNS.1 = *.appspot.com
DNS.2 = my.remarkable.com
DNS.3 = internal.cloud.remarkable.com
DNS.4 = ping.remarkable.com
DNS.5 = *.remarkable.com
# DNS.3 = any additional hosts
EOF
@ -171,6 +174,8 @@ function patch_hosts(){
127.0.0.1 service-manager-production-dot-remarkable-production.appspot.com
127.0.0.1 local.appspot.com
127.0.0.1 my.remarkable.com
127.0.0.1 internal.cloud.remarkable.com
127.0.0.1 ping.remarkable.com
# rmfake_end
EOF
fi