mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-03 00:47:14 +00:00
Make HSTS policy configurable if https is enabled (#4462)
* Make HSTS policy configurable if https is enabled * refactor(web): gate HSTS at call site so XUI_SKIP_HSTS doesn't drop the Secure cookie flag isDirectHTTPSConfigured was being reused for both the HSTS middleware and the session cookie's Secure flag (web.go:185). Embedding the env-var check inside it meant setting XUI_SKIP_HSTS=true also stripped Secure from session cookies on a real HTTPS server. Split the concerns: keep isDirectHTTPSConfigured honest (cert/key only) and combine it with the env var at the call site for the HSTS middleware only. --------- Co-authored-by: Konstantin Kayukin <t_kkayukin@admarketplace.com> Co-authored-by: Sanaei <ho3ein.sanaei@gmail.com>
This commit is contained in:
@@ -57,6 +57,11 @@ func IsDebug() bool {
|
|||||||
return os.Getenv("XUI_DEBUG") == "true"
|
return os.Getenv("XUI_DEBUG") == "true"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsSkipHSTS returns true if skipping HSTS mode is enabled via the XUI_SKIP_HSTS environment variable.
|
||||||
|
func IsSkipHSTS() bool {
|
||||||
|
return os.Getenv("XUI_SKIP_HSTS") == "true"
|
||||||
|
}
|
||||||
|
|
||||||
// GetBinFolderPath returns the path to the binary folder, defaulting to "bin" if not set via XUI_BIN_FOLDER.
|
// GetBinFolderPath returns the path to the binary folder, defaulting to "bin" if not set via XUI_BIN_FOLDER.
|
||||||
func GetBinFolderPath() string {
|
func GetBinFolderPath() string {
|
||||||
binFolderPath := os.Getenv("XUI_BIN_FOLDER")
|
binFolderPath := os.Getenv("XUI_BIN_FOLDER")
|
||||||
|
|||||||
+2
-1
@@ -154,7 +154,8 @@ func (s *Server) initRouter() (*gin.Engine, error) {
|
|||||||
|
|
||||||
engine := gin.Default()
|
engine := gin.Default()
|
||||||
directHTTPS := s.isDirectHTTPSConfigured()
|
directHTTPS := s.isDirectHTTPSConfigured()
|
||||||
engine.Use(middleware.SecurityHeadersMiddleware(directHTTPS))
|
sendHSTS := directHTTPS && !config.IsSkipHSTS()
|
||||||
|
engine.Use(middleware.SecurityHeadersMiddleware(sendHSTS))
|
||||||
|
|
||||||
webDomain, err := s.settingService.GetWebDomain()
|
webDomain, err := s.settingService.GetWebDomain()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user