external html path configuration for interstitial (#716)

This commit is contained in:
Michael Quigley 2024-08-06 12:00:09 -04:00
parent 379f6b8663
commit ba32e4c401
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
3 changed files with 29 additions and 12 deletions

View File

@ -23,6 +23,7 @@ type Config struct {
type InterstitialConfig struct {
Enabled bool
HtmlPath string
UserAgentPrefixes []string
}

View File

@ -180,7 +180,7 @@ func shareHandler(handler http.Handler, pcfg *Config, key []byte, ctx ziti.Conte
_, zrokOkErr := r.Cookie("zrok_interstitial")
if skip == "" && zrokOkErr != nil {
logrus.Debugf("forcing interstitial for '%v'", r.URL)
interstitialUi.WriteInterstitialAnnounce(w)
interstitialUi.WriteInterstitialAnnounce(w, pcfg.Interstitial.HtmlPath)
return
}
}

View File

@ -3,19 +3,35 @@ package interstitialUi
import (
"github.com/sirupsen/logrus"
"net/http"
"os"
)
func WriteInterstitialAnnounce(w http.ResponseWriter) {
if data, err := FS.ReadFile("index.html"); err == nil {
w.WriteHeader(http.StatusOK)
n, err := w.Write(data)
if n != len(data) {
logrus.Errorf("short write")
return
}
if err != nil {
logrus.Error(err)
return
var externalFile []byte
func WriteInterstitialAnnounce(w http.ResponseWriter, htmlPath string) {
if htmlPath != "" && externalFile == nil {
if data, err := os.ReadFile(htmlPath); err == nil {
externalFile = data
} else {
logrus.Errorf("error reading external interstitial file '%v': %v", htmlPath, err)
}
}
var htmlData = externalFile
if htmlData == nil {
if data, err := FS.ReadFile("index.html"); err == nil {
htmlData = data
} else {
logrus.Errorf("error reading embedded interstitial html 'index.html': %v", err)
}
}
w.WriteHeader(http.StatusOK)
n, err := w.Write(htmlData)
if n != len(htmlData) {
logrus.Errorf("short write")
return
}
if err != nil {
logrus.Error(err)
return
}
}