| package hub | |
| import ( | |
| "encoding/json" | |
| "net/url" | |
| "strings" | |
| "github.com/henrygd/beszel" | |
| "github.com/henrygd/beszel/internal/hub/utils" | |
| ) | |
| // PublicAppInfo defines the structure of the public app information that will be injected into the HTML | |
| type PublicAppInfo struct { | |
| BASE_PATH string | |
| HUB_VERSION string | |
| HUB_URL string | |
| OAUTH_DISABLE_POPUP bool `json:"OAUTH_DISABLE_POPUP,omitempty"` | |
| } | |
| // modifyIndexHTML injects the public app information into the index.html content | |
| func modifyIndexHTML(hub *Hub, html []byte) string { | |
| info := getPublicAppInfo(hub) | |
| content, err := json.Marshal(info) | |
| if err != nil { | |
| return string(html) | |
| } | |
| htmlContent := strings.ReplaceAll(string(html), "./", info.BASE_PATH) | |
| return strings.Replace(htmlContent, "\"{info}\"", string(content), 1) | |
| } | |
| func getPublicAppInfo(hub *Hub) PublicAppInfo { | |
| parsedURL, _ := url.Parse(hub.appURL) | |
| info := PublicAppInfo{ | |
| BASE_PATH: strings.TrimSuffix(parsedURL.Path, "/") + "/", | |
| HUB_VERSION: beszel.Version, | |
| HUB_URL: hub.appURL, | |
| } | |
| if val, _ := utils.GetEnv("OAUTH_DISABLE_POPUP"); val == "true" { | |
| info.OAUTH_DISABLE_POPUP = true | |
| } | |
| return info | |
| } | |