Skip to content

Commit

Permalink
Fix cosmos explorer incorrect redirect
Browse files Browse the repository at this point in the history
  • Loading branch information
pikami committed Nov 14, 2024
1 parent 2834f3f commit c7d01b4
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 15 deletions.
6 changes: 4 additions & 2 deletions api/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ import (
)

const (
DefaultAccountKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
EnvPrefix = "COSMIUM_"
DefaultAccountKey = "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
EnvPrefix = "COSMIUM_"
ExplorerBaseUrlLocation = "/_explorer"
)

var Config = ServerConfig{}
Expand Down Expand Up @@ -45,6 +46,7 @@ func ParseFlags() {
Config.DatabaseDomain = Config.Host
Config.DatabaseEndpoint = fmt.Sprintf("https://%s:%d/", Config.Host, Config.Port)
Config.AccountKey = *accountKey
Config.ExplorerBaseUrlLocation = ExplorerBaseUrlLocation
}

func setFlagsFromEnvironment() (err error) {
Expand Down
21 changes: 11 additions & 10 deletions api/config/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ type ServerConfig struct {
DatabaseEndpoint string
AccountKey string

ExplorerPath string
Port int
Host string
TLS_CertificatePath string
TLS_CertificateKey string
InitialDataFilePath string
PersistDataFilePath string
DisableAuth bool
DisableTls bool
Debug bool
ExplorerPath string
Port int
Host string
TLS_CertificatePath string
TLS_CertificateKey string
InitialDataFilePath string
PersistDataFilePath string
DisableAuth bool
DisableTls bool
Debug bool
ExplorerBaseUrlLocation string
}
2 changes: 1 addition & 1 deletion api/handlers/explorer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

func RegisterExplorerHandlers(router *gin.Engine) {
explorer := router.Group("/_explorer")
explorer := router.Group(config.Config.ExplorerBaseUrlLocation)
{
explorer.Use(func(ctx *gin.Context) {
if ctx.Param("filepath") == "/config.json" {
Expand Down
2 changes: 1 addition & 1 deletion api/handlers/middleware/authentication.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func Authentication() gin.HandlerFunc {
return func(c *gin.Context) {
requestUrl := c.Request.URL.String()
if config.Config.DisableAuth ||
strings.HasPrefix(requestUrl, "/_explorer") ||
strings.HasPrefix(requestUrl, config.Config.ExplorerBaseUrlLocation) ||
strings.HasPrefix(requestUrl, "/cosmium") {
return
}
Expand Down
5 changes: 4 additions & 1 deletion api/handlers/middleware/strip_trailing_slashes.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package middleware

import (
"strings"

"github.com/gin-gonic/gin"
"github.com/pikami/cosmium/api/config"
)

func StripTrailingSlashes(r *gin.Engine) gin.HandlerFunc {
return func(c *gin.Context) {
path := c.Request.URL.Path
if len(path) > 1 && path[len(path)-1] == '/' {
if len(path) > 1 && path[len(path)-1] == '/' && !strings.Contains(path, config.Config.ExplorerBaseUrlLocation) {
c.Request.URL.Path = path[:len(path)-1]
r.HandleContext(c)
c.Abort()
Expand Down
1 change: 1 addition & 0 deletions api/tests/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
func runTestServer() *httptest.Server {
config.Config.AccountKey = config.DefaultAccountKey
config.Config.ExplorerPath = "/tmp/nothing"
config.Config.ExplorerBaseUrlLocation = config.ExplorerBaseUrlLocation

return httptest.NewServer(api.CreateRouter())
}
Expand Down

0 comments on commit c7d01b4

Please sign in to comment.