added the proxy service for http/https client peer on the server side. work in progress

This commit is contained in:
2024-12-12 21:09:16 +09:00
parent 41e7222b98
commit f6ea852e61
13 changed files with 538 additions and 252 deletions

View File

@ -47,6 +47,10 @@ type CTLServiceConfig struct {
Addrs []string `yaml:"addresses"`
}
type PXYServiceConfig struct {
Addrs []string `yaml:"addresses"`
}
type RPCServiceConfig struct { // rpc server-side configuration
Addrs []string `yaml:"addresses"`
}
@ -80,6 +84,11 @@ type ServerConfig struct {
TLS ServerTLSConfig `yaml:"tls"`
} `yaml:"ctl"`
PXY struct {
Service PXYServiceConfig `yaml:"service"`
TLS ServerTLSConfig `yaml:"tls"`
} `yaml:"pxy"`
RPC struct {
Service RPCServiceConfig `yaml:"service"`
TLS ServerTLSConfig `yaml:"tls"`

View File

@ -143,10 +143,11 @@ func (sh *signal_handler) WriteLog(id string, level hodu.LogLevel, fmt string, a
// --------------------------------------------------------------------
func server_main(ctl_addrs []string, rpc_addrs []string, cfg *ServerConfig) error {
func server_main(ctl_addrs []string, rpc_addrs []string, pxy_addrs []string, cfg *ServerConfig) error {
var s *hodu.Server
var ctltlscfg *tls.Config
var rpctlscfg *tls.Config
var pxytlscfg *tls.Config
var ctl_prefix string
var logger *AppLogger
var log_mask hodu.LogMask
@ -158,13 +159,11 @@ func server_main(ctl_addrs []string, rpc_addrs []string, cfg *ServerConfig) erro
if cfg != nil {
ctltlscfg, err = make_tls_server_config(&cfg.CTL.TLS)
if err != nil {
return err
}
if err != nil { return err }
rpctlscfg, err = make_tls_server_config(&cfg.RPC.TLS)
if err != nil {
return err
}
if err != nil { return err }
pxytlscfg, err = make_tls_server_config(&cfg.PXY.TLS)
if err != nil { return err }
if len(ctl_addrs) <= 0 {
ctl_addrs = cfg.CTL.Service.Addrs
@ -174,6 +173,10 @@ func server_main(ctl_addrs []string, rpc_addrs []string, cfg *ServerConfig) erro
rpc_addrs = cfg.RPC.Service.Addrs
}
if len(pxy_addrs) <= 0 {
pxy_addrs = cfg.PXY.Service.Addrs
}
ctl_prefix = cfg.CTL.Service.Prefix
log_mask = log_strings_to_mask(cfg.APP.LogMask)
max_rpc_conns = cfg.APP.MaxRpcConns
@ -191,9 +194,11 @@ func server_main(ctl_addrs []string, rpc_addrs []string, cfg *ServerConfig) erro
logger,
ctl_addrs,
rpc_addrs,
pxy_addrs,
ctl_prefix,
ctltlscfg,
rpctlscfg,
pxytlscfg,
max_rpc_conns,
max_peers)
if err != nil {
@ -202,6 +207,7 @@ func server_main(ctl_addrs []string, rpc_addrs []string, cfg *ServerConfig) erro
s.StartService(nil)
s.StartCtlService()
s.StartPxyService()
s.StartExtService(&signal_handler{svc:s}, nil)
s.WaitForTermination()
@ -278,13 +284,15 @@ func main() {
if len(os.Args) < 2 { goto wrong_usage }
if strings.EqualFold(os.Args[1], "server") {
var rpc_addrs[] string
var ctl_addrs[] string
var rpc_addrs []string
var ctl_addrs []string
var pxy_addrs []string
var cfgfile string
var cfg *ServerConfig
ctl_addrs = make([]string, 0)
rpc_addrs = make([]string, 0)
pxy_addrs = make([]string, 0)
flgs = flag.NewFlagSet("", flag.ContinueOnError)
flgs.Func("ctl-on", "specify a listening address for control channel", func(v string) error {
@ -295,6 +303,10 @@ func main() {
rpc_addrs = append(rpc_addrs, v)
return nil
})
flgs.Func("pxy-on", "specify a proxy listening address", func(v string) error {
pxy_addrs = append(pxy_addrs, v)
return nil
})
flgs.Func("config-file", "specify a configuration file path", func(v string) error {
cfgfile = v
return nil
@ -317,7 +329,7 @@ func main() {
}
}
err = server_main(ctl_addrs, rpc_addrs, cfg)
err = server_main(ctl_addrs, rpc_addrs, pxy_addrs, cfg)
if err != nil {
fmt.Fprintf(os.Stderr, "ERROR: server error - %s\n", err.Error())
goto oops