Skip to content

Commit 8662dc4

Browse files
authored
Merge pull request #137 from yokowu/fix-vsix-port
fix: 修复插件下载端口不对
2 parents 2c9b701 + 3be2788 commit 8662dc4

File tree

5 files changed

+24
-21
lines changed

5 files changed

+24
-21
lines changed

backend/config/config.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package config
22

33
import (
44
_ "embed"
5+
"fmt"
6+
"net/http"
57
"strings"
68

79
"github.com/spf13/viper"
@@ -19,6 +21,7 @@ type Config struct {
1921

2022
Server struct {
2123
Addr string `mapstructure:"addr"`
24+
Port string `mapstructure:"port"`
2225
} `mapstructure:"server"`
2326

2427
Admin struct {
@@ -72,6 +75,17 @@ type Config struct {
7275
} `mapstructure:"data_report"`
7376
}
7477

78+
func (c *Config) GetBaseURL(req *http.Request) string {
79+
scheme := "http"
80+
if req.TLS != nil {
81+
scheme = "https"
82+
}
83+
if proto := req.Header.Get("X-Forwarded-Proto"); proto != "" {
84+
scheme = proto
85+
}
86+
return fmt.Sprintf("%s://%s:%s", scheme, req.Host, c.Server.Port)
87+
}
88+
7589
func Init() (*Config, error) {
7690
v := viper.New()
7791
v.AutomaticEnv()
@@ -81,6 +95,7 @@ func Init() (*Config, error) {
8195
v.SetDefault("debug", false)
8296
v.SetDefault("logger.level", "info")
8397
v.SetDefault("server.addr", ":8888")
98+
v.SetDefault("server.port", "")
8499
v.SetDefault("admin.user", "admin")
85100
v.SetDefault("admin.password", "")
86101
v.SetDefault("admin.limit", 100)

backend/internal/openai/handler/v1/v1.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/chaitin/MonkeyCode/backend/domain"
1414
"github.com/chaitin/MonkeyCode/backend/internal/middleware"
1515
"github.com/chaitin/MonkeyCode/backend/internal/proxy"
16-
"github.com/chaitin/MonkeyCode/backend/pkg/request"
1716
)
1817

1918
type V1Handler struct {
@@ -76,7 +75,7 @@ func (h *V1Handler) Version(c *web.Context) error {
7675

7776
return c.JSON(http.StatusOK, domain.VersionInfo{
7877
Version: v.Version,
79-
URL: fmt.Sprintf("%s/api/v1/static/vsix/%s", request.GetBaseURL(c.Request()), v.Version),
78+
URL: fmt.Sprintf("%s/api/v1/static/vsix/%s", h.config.GetBaseURL(c.Request()), v.Version),
8079
})
8180
}
8281

@@ -183,7 +182,7 @@ func (h *V1Handler) Embeddings(c *web.Context) error {
183182
func (h *V1Handler) GetConfig(c *web.Context, req domain.ConfigReq) error {
184183
key := middleware.GetApiKey(c)
185184
req.Key = key.Key
186-
req.BaseURL = request.GetBaseURL(c.Request())
185+
req.BaseURL = h.config.GetBaseURL(c.Request())
187186
resp, err := h.usecase.GetConfig(c.Request().Context(), &req)
188187
if err != nil {
189188
return err

backend/internal/user/handler/v1/user.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"github.com/chaitin/MonkeyCode/backend/domain"
1919
"github.com/chaitin/MonkeyCode/backend/errcode"
2020
"github.com/chaitin/MonkeyCode/backend/internal/middleware"
21-
"github.com/chaitin/MonkeyCode/backend/pkg/request"
2221
"github.com/chaitin/MonkeyCode/backend/pkg/session"
2322
"github.com/chaitin/MonkeyCode/backend/pkg/vsix"
2423
)
@@ -126,7 +125,7 @@ func NewUserHandler(
126125
}
127126

128127
func (h *UserHandler) VSCodeAuthInit(c *web.Context, req domain.VSCodeAuthInitReq) error {
129-
req.BaseURL = request.GetBaseURL(c.Request())
128+
req.BaseURL = h.cfg.GetBaseURL(c.Request())
130129
resp, err := h.usecase.VSCodeAuthInit(c.Request().Context(), &req)
131130
if err != nil {
132131
return err
@@ -173,7 +172,9 @@ func (h *UserHandler) VSIXDownload(c *web.Context) error {
173172
return err
174173
}
175174

176-
cacheKey := h.generateCacheKey(v.Version, request.GetBaseURL(c.Request()))
175+
host := c.Request().Host
176+
h.logger.With("url", c.Request().URL).With("header", c.Request().Header).With("host", host).DebugContext(c.Request().Context(), "vsix download")
177+
cacheKey := h.generateCacheKey(v.Version, h.cfg.GetBaseURL(c.Request()))
177178

178179
h.cacheMu.RLock()
179180
if entry, exists := h.vsixCache[cacheKey]; exists {
@@ -192,7 +193,7 @@ func (h *UserHandler) VSIXDownload(c *web.Context) error {
192193
h.cacheMu.RUnlock()
193194

194195
var buf bytes.Buffer
195-
if err := vsix.ChangeVsixEndpoint(v.Path, "extension/package.json", request.GetBaseURL(c.Request()), &buf); err != nil {
196+
if err := vsix.ChangeVsixEndpoint(v.Path, "extension/package.json", h.cfg.GetBaseURL(c.Request()), &buf); err != nil {
196197
return err
197198
}
198199

@@ -559,7 +560,7 @@ func (h *UserHandler) UpdateSetting(c *web.Context, req domain.UpdateSettingReq)
559560
// @Router /api/v1/user/oauth/signup-or-in [get]
560561
func (h *UserHandler) OAuthSignUpOrIn(ctx *web.Context, req domain.OAuthSignUpOrInReq) error {
561562
h.logger.With("req", req).DebugContext(ctx.Request().Context(), "OAuthSignUpOrIn")
562-
req.BaseURL = request.GetBaseURL(ctx.Request())
563+
req.BaseURL = h.cfg.GetBaseURL(ctx.Request())
563564
resp, err := h.usecase.OAuthSignUpOrIn(ctx.Request().Context(), &req)
564565
if err != nil {
565566
return err

backend/internal/user/usecase/user.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/chaitin/MonkeyCode/backend/errcode"
2525
"github.com/chaitin/MonkeyCode/backend/pkg/cvt"
2626
"github.com/chaitin/MonkeyCode/backend/pkg/oauth"
27-
"github.com/chaitin/MonkeyCode/backend/pkg/request"
2827
"github.com/chaitin/MonkeyCode/backend/pkg/session"
2928
)
3029

@@ -498,7 +497,7 @@ func (u *UserUsecase) OAuthSignUpOrIn(ctx context.Context, req *domain.OAuthSign
498497
func (u *UserUsecase) OAuthCallback(c *web.Context, req *domain.OAuthCallbackReq) error {
499498
ctx := c.Request().Context()
500499
req.IP = c.RealIP()
501-
req.BaseURL = request.GetBaseURL(c.Request())
500+
req.BaseURL = u.cfg.GetBaseURL(c.Request())
502501
b, err := u.redis.Get(ctx, fmt.Sprintf("oauth:state:%s", req.State)).Result()
503502
if err != nil {
504503
return err

backend/pkg/request/request.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,3 @@ func GetHeaderMap(header string) map[string]string {
195195
}
196196
return headerMap
197197
}
198-
199-
func GetBaseURL(req *http.Request) string {
200-
scheme := "http"
201-
if req.TLS != nil {
202-
scheme = "https"
203-
}
204-
if proto := req.Header.Get("X-Forwarded-Proto"); proto != "" {
205-
scheme = proto
206-
}
207-
return fmt.Sprintf("%s://%s", scheme, req.Host)
208-
}

0 commit comments

Comments
 (0)