diff --git a/bskyweb/cmd/bskyweb/main.go b/bskyweb/cmd/bskyweb/main.go
index 985879f4a9..5c46af418d 100644
--- a/bskyweb/cmd/bskyweb/main.go
+++ b/bskyweb/cmd/bskyweb/main.go
@@ -87,6 +87,13 @@ func run(args []string) {
Value: cli.NewStringSlice("https://bsky.app", "https://main.bsky.dev", "https://app.staging.bsky.dev"),
EnvVars: []string{"CORS_ALLOWED_ORIGINS"},
},
+ &cli.StringFlag{
+ Name: "static-cdn-host",
+ Usage: "scheme, hostname, and port of static content CDN, don't end with a slash",
+ Required: false,
+ Value: "",
+ EnvVars: []string{"STATIC_CDN_HOST"},
+ },
},
},
}
diff --git a/bskyweb/cmd/bskyweb/server.go b/bskyweb/cmd/bskyweb/server.go
index ea102802e7..1089e3c1af 100644
--- a/bskyweb/cmd/bskyweb/server.go
+++ b/bskyweb/cmd/bskyweb/server.go
@@ -41,12 +41,13 @@ type Server struct {
}
type Config struct {
- debug bool
- httpAddress string
- appviewHost string
- ogcardHost string
- linkHost string
- ipccHost string
+ debug bool
+ httpAddress string
+ appviewHost string
+ ogcardHost string
+ linkHost string
+ ipccHost string
+ staticCDNHost string
}
func serve(cctx *cli.Context) error {
@@ -58,6 +59,8 @@ func serve(cctx *cli.Context) error {
ipccHost := cctx.String("ipcc-host")
basicAuthPassword := cctx.String("basic-auth-password")
corsOrigins := cctx.StringSlice("cors-allowed-origins")
+ staticCDNHost := cctx.String("static-cdn-host")
+ staticCDNHost = strings.TrimSuffix(staticCDNHost, "/")
// Echo
e := echo.New()
@@ -94,12 +97,13 @@ func serve(cctx *cli.Context) error {
echo: e,
xrpcc: xrpcc,
cfg: &Config{
- debug: debug,
- httpAddress: httpAddress,
- appviewHost: appviewHost,
- ogcardHost: ogcardHost,
- linkHost: linkHost,
- ipccHost: ipccHost,
+ debug: debug,
+ httpAddress: httpAddress,
+ appviewHost: appviewHost,
+ ogcardHost: ogcardHost,
+ linkHost: linkHost,
+ ipccHost: ipccHost,
+ staticCDNHost: staticCDNHost,
},
}
@@ -333,15 +337,21 @@ func (srv *Server) Shutdown() error {
return srv.httpd.Shutdown(ctx)
}
+// NewTemplateContext returns a new pongo2 context with some default values.
+func (srv *Server) NewTemplateContext() pongo2.Context {
+ return pongo2.Context{
+ "staticCDNHost": srv.cfg.staticCDNHost,
+ }
+}
+
func (srv *Server) errorHandler(err error, c echo.Context) {
code := http.StatusInternalServerError
if he, ok := err.(*echo.HTTPError); ok {
code = he.Code
}
c.Logger().Error(err)
- data := pongo2.Context{
- "statusCode": code,
- }
+ data := srv.NewTemplateContext()
+ data["statusCode"] = code
c.Render(code, "error.html", data)
}
@@ -385,18 +395,18 @@ func (srv *Server) LinkProxyMiddleware(url *url.URL) echo.MiddlewareFunc {
// handler for endpoint that have no specific server-side handling
func (srv *Server) WebGeneric(c echo.Context) error {
- data := pongo2.Context{}
+ data := srv.NewTemplateContext()
return c.Render(http.StatusOK, "base.html", data)
}
func (srv *Server) WebHome(c echo.Context) error {
- data := pongo2.Context{}
+ data := srv.NewTemplateContext()
return c.Render(http.StatusOK, "home.html", data)
}
func (srv *Server) WebPost(c echo.Context) error {
ctx := c.Request().Context()
- data := pongo2.Context{}
+ data := srv.NewTemplateContext()
// sanity check arguments. don't 4xx, just let app handle if not expected format
rkeyParam := c.Param("rkey")
@@ -471,7 +481,7 @@ func (srv *Server) WebPost(c echo.Context) error {
func (srv *Server) WebStarterPack(c echo.Context) error {
req := c.Request()
ctx := req.Context()
- data := pongo2.Context{}
+ data := srv.NewTemplateContext()
data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
// sanity check arguments. don't 4xx, just let app handle if not expected format
rkeyParam := c.Param("rkey")
@@ -509,7 +519,7 @@ func (srv *Server) WebStarterPack(c echo.Context) error {
func (srv *Server) WebProfile(c echo.Context) error {
ctx := c.Request().Context()
- data := pongo2.Context{}
+ data := srv.NewTemplateContext()
// sanity check arguments. don't 4xx, just let app handle if not expected format
handleOrDIDParam := c.Param("handleOrDID")
diff --git a/bskyweb/templates/base.html b/bskyweb/templates/base.html
index dd2474c824..9a50fae69e 100644
--- a/bskyweb/templates/base.html
+++ b/bskyweb/templates/base.html
@@ -13,8 +13,8 @@
-
-
+
+
{% include "scripts.html" %}
-
-
-
-
+
+
+
+
diff --git a/scripts/post-web-build.js b/scripts/post-web-build.js
index 7bbee38554..3b1b62dfd8 100644
--- a/scripts/post-web-build.js
+++ b/scripts/post-web-build.js
@@ -23,10 +23,10 @@ const outputFile = entrypoints
const ext = path.extname(file)
if (ext === '.js') {
- return ``
+ return ``
}
if (ext === '.css') {
- return ``
+ return ``
}
return ''