diff --git a/pkg/baremetal/handler/middleware.go b/pkg/baremetal/handler/middleware.go index f281423652..e1cad7adaf 100644 --- a/pkg/baremetal/handler/middleware.go +++ b/pkg/baremetal/handler/middleware.go @@ -156,11 +156,15 @@ func bmRegisterMiddleware(h bmRegisterFunc) appsrv.FilterHandler { newCtx.ResponseError(httperrors.NewMissingParameterError("hostname")) return } - remoteIp, _, err := net.SplitHostPort(r.RemoteAddr) - if err != nil { - newCtx.ResponseError(httperrors.NewInternalServerError("Parse ip error %s", err)) - return + remoteIp, _ := newCtx.Data().GetString("ssh_ip") + if len(remoteIp) == 0 { + remoteIp, _, err = net.SplitHostPort(r.RemoteAddr) + if err != nil { + newCtx.ResponseError(httperrors.NewInternalServerError("Parse ip error %s", err)) + return + } } + sshPort, err := newCtx.Data().Int("ssh_port") if err != nil { newCtx.ResponseError(httperrors.NewMissingParameterError("ssh_port")) diff --git a/pkg/compute/misc/handler.go b/pkg/compute/misc/handler.go index cd2a3f3dc2..393a1e4a39 100644 --- a/pkg/compute/misc/handler.go +++ b/pkg/compute/misc/handler.go @@ -44,10 +44,14 @@ func addHandler(method, prefix string, f appsrv.FilterHandler, app *appsrv.Appli } func getBmAgentUrl(ctx context.Context, w http.ResponseWriter, r *http.Request) { - ipAddr, _, err := net.SplitHostPort(r.RemoteAddr) - if err != nil { - httperrors.NewInternalServerError("Parse remote ip error %s", err) - return + var err error + ipAddr := r.URL.Query().Get("ssh_ip") + if len(ipAddr) == 0 { + ipAddr, _, err = net.SplitHostPort(r.RemoteAddr) + if err != nil { + httperrors.NewInternalServerError("Parse remote ip error %s", err) + return + } } n, _ := models.NetworkManager.GetOnPremiseNetworkOfIP(ipAddr, "", tristate.None) @@ -71,7 +75,7 @@ func getBmPrepareScript(ctx context.Context, w http.ResponseWriter, r *http.Requ httperrors.NotAcceptableError(w, "Baremetal package not prepared") return } - regionUrl, err := auth.GetServiceURL("compute_v2", options.Options.Region, "", "") + regionUrl, err := auth.GetPublicServiceURL("compute_v2", options.Options.Region, "") if err != nil { log.Errorln(err) httperrors.InternalServerError(w, err.Error())