Added support fot https in user server
This commit is contained in:
+11
-10
@@ -36,14 +36,15 @@ var ServerCmd = &cobra.Command{
|
|||||||
and admin interface`,
|
and admin interface`,
|
||||||
PreRunE: validateServerCommandArguments,
|
PreRunE: validateServerCommandArguments,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
// cert, _ := cmd.Flags().GetString("certfile")
|
var sConf server.ServerConfig = server.ServerConfig{}
|
||||||
// key, _ := cmd.Flags().GetString("keyfile")
|
sConf.UserBindAddr, _ = cmd.Flags().GetString("bind")
|
||||||
|
sConf.ControlBindAddr, _ = cmd.Flags().GetString("control-bind")
|
||||||
|
sConf.DataBindAddr, _ = cmd.Flags().GetString("data-bind")
|
||||||
|
|
||||||
userBind, _ := cmd.Flags().GetString("bind")
|
sConf.CertFile, _ = cmd.Flags().GetString("certfile")
|
||||||
controlBind, _ := cmd.Flags().GetString("control-bind")
|
sConf.KeyFile, _ = cmd.Flags().GetString("keyfile")
|
||||||
dataBind, _ := cmd.Flags().GetString("data-bind")
|
|
||||||
|
|
||||||
go server.StartServer(controlBind, dataBind, userBind)
|
go server.StartServer(sConf)
|
||||||
|
|
||||||
// start sub shell + ENV(KAPOW_CONTROL_URL)
|
// start sub shell + ENV(KAPOW_CONTROL_URL)
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
@@ -56,7 +57,7 @@ var ServerCmd = &cobra.Command{
|
|||||||
kapowCMD := exec.Command("bash", powfile)
|
kapowCMD := exec.Command("bash", powfile)
|
||||||
kapowCMD.Stdout = os.Stdout
|
kapowCMD.Stdout = os.Stdout
|
||||||
kapowCMD.Stderr = os.Stderr
|
kapowCMD.Stderr = os.Stderr
|
||||||
kapowCMD.Env = append(os.Environ(), "KAPOW_CONTROL_URL=http://"+controlBind)
|
kapowCMD.Env = append(os.Environ(), "KAPOW_CONTROL_URL=http://"+sConf.ControlBindAddr)
|
||||||
|
|
||||||
err = kapowCMD.Run()
|
err = kapowCMD.Run()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -71,12 +72,12 @@ var ServerCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
ServerCmd.Flags().String("certfile", "", "Cert file to serve thru https")
|
|
||||||
ServerCmd.Flags().String("keyfile", "", "Key file to serve thru https")
|
|
||||||
|
|
||||||
ServerCmd.Flags().String("bind", "0.0.0.0:8080", "IP address and port to bind the user interface to")
|
ServerCmd.Flags().String("bind", "0.0.0.0:8080", "IP address and port to bind the user interface to")
|
||||||
ServerCmd.Flags().String("control-bind", "localhost:8081", "IP address and port to bind the control interface to")
|
ServerCmd.Flags().String("control-bind", "localhost:8081", "IP address and port to bind the control interface to")
|
||||||
ServerCmd.Flags().String("data-bind", "localhost:8082", "IP address and port to bind the data interface to")
|
ServerCmd.Flags().String("data-bind", "localhost:8082", "IP address and port to bind the data interface to")
|
||||||
|
|
||||||
|
ServerCmd.Flags().String("certfile", "", "Cert file to serve thru https")
|
||||||
|
ServerCmd.Flags().String("keyfile", "", "Key file to serve thru https")
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateServerCommandArguments(cmd *cobra.Command, args []string) error {
|
func validateServerCommandArguments(cmd *cobra.Command, args []string) error {
|
||||||
|
|||||||
@@ -22,11 +22,19 @@ import (
|
|||||||
"github.com/BBVA/kapow/internal/server/user"
|
"github.com/BBVA/kapow/internal/server/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ServerConfig struct {
|
||||||
|
ControlBindAddr,
|
||||||
|
DataBindAddr,
|
||||||
|
UserBindAddr,
|
||||||
|
KeyFile,
|
||||||
|
CertFile string
|
||||||
|
}
|
||||||
|
|
||||||
// StartServer Starts one instance of each server in a goroutine and remains listening on a channel for trace events generated by them
|
// StartServer Starts one instance of each server in a goroutine and remains listening on a channel for trace events generated by them
|
||||||
func StartServer(controlBindAddr, dataBindAddr, userBindAddr string) {
|
func StartServer(config ServerConfig) {
|
||||||
go control.Run(controlBindAddr)
|
go control.Run(config.ControlBindAddr)
|
||||||
go data.Run(dataBindAddr)
|
go data.Run(config.DataBindAddr)
|
||||||
go user.Run(userBindAddr)
|
go user.Run(config.UserBindAddr, config.CertFile, config.KeyFile)
|
||||||
|
|
||||||
// Wait for ever
|
// Wait for ever
|
||||||
select {}
|
select {}
|
||||||
|
|||||||
@@ -29,12 +29,19 @@ var Server = http.Server{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Run finishes configuring Server and runs ListenAndServe on it
|
// Run finishes configuring Server and runs ListenAndServe on it
|
||||||
func Run(bindAddr string) {
|
func Run(bindAddr, certFile, keyFile string) {
|
||||||
Server = http.Server{
|
Server = http.Server{
|
||||||
Addr: bindAddr,
|
Addr: bindAddr,
|
||||||
Handler: mux.New(),
|
Handler: mux.New(),
|
||||||
}
|
}
|
||||||
if err := Server.ListenAndServe(); err != http.ErrServerClosed {
|
|
||||||
log.Fatalf("UserServer failed: %s", err)
|
if (certFile != "") && (keyFile != "") {
|
||||||
|
if err := Server.ListenAndServeTLS(certFile, keyFile); err != http.ErrServerClosed {
|
||||||
|
log.Fatalf("UserServer failed: %s", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if err := Server.ListenAndServe(); err != http.ErrServerClosed {
|
||||||
|
log.Fatalf("UserServer failed: %s", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user