Make CacheID global

This commit is contained in:
2022-10-11 14:42:24 +02:00
parent 14df7e8a70
commit 547d50a6bc
15 changed files with 36 additions and 35 deletions

View File

@@ -204,7 +204,7 @@ section {
padding: 4px; padding: 4px;
margin: 0.2em 15px 0.2em 15px; margin: 0.2em 15px 0.2em 15px;
font-family: 'Open Sans Light', sans-serif; font-family: 'Open Sans Light', sans-serif;
font-weight: light; font-weight: lighter;
font-size: 1.5em; font-size: 1.5em;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;

View File

@@ -9,8 +9,8 @@
window.api_endpoint = '{{.APIEndpoint}}'; window.api_endpoint = '{{.APIEndpoint}}';
window.server_hostname = "{{.Hostname}}"; window.server_hostname = "{{.Hostname}}";
</script> </script>
<link rel='stylesheet' href='/res/svelte/admin_panel.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/admin_panel.css?v{{cacheID}}'>
<script defer src='/res/svelte/admin_panel.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/admin_panel.js?v{{cacheID}}'></script>
</head> </head>
<body> <body>
{{template "menu" .}} {{template "menu" .}}

View File

@@ -7,8 +7,8 @@
window.api_endpoint = '{{.APIEndpoint}}'; window.api_endpoint = '{{.APIEndpoint}}';
window.user = {{.User}}; window.user = {{.User}};
</script> </script>
<link rel='stylesheet' href='/res/svelte/directory_upload.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/directory_upload.css?v{{cacheID}}'>
<script defer src='/res/svelte/directory_upload.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/directory_upload.js?v{{cacheID}}'></script>
</head> </head>
<body> <body>

View File

@@ -28,8 +28,8 @@
window.user_authenticated = {{.Authenticated}}; window.user_authenticated = {{.Authenticated}};
</script> </script>
<link rel='stylesheet' href='/res/svelte/file_viewer.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/file_viewer.css?v{{cacheID}}'>
<script defer src='/res/svelte/file_viewer.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/file_viewer.js?v{{cacheID}}'></script>
{{template "analytics"}} {{template "analytics"}}
</head> </head>

View File

@@ -27,8 +27,8 @@
window.api_endpoint = '{{.APIEndpoint}}'; window.api_endpoint = '{{.APIEndpoint}}';
</script> </script>
<link rel='stylesheet' href='/res/svelte/filesystem.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/filesystem.css?v{{cacheID}}'>
<script defer src='/res/svelte/filesystem.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/filesystem.js?v{{cacheID}}'></script>
</head> </head>
<body></body> <body></body>
</html> </html>

View File

@@ -4,7 +4,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="theme-color" content="#220735" /> <meta name="theme-color" content="#220735" />
<link id="stylesheet_layout" rel="stylesheet" type="text/css" href="/res/style/layout.css"/> <link id="stylesheet_layout" rel="stylesheet" type="text/css" href="/res/style/layout.css?v{{cacheID}}"/>
<link id="stylesheet_theme" rel="stylesheet" type="text/css" href="/theme.css"/> <link id="stylesheet_theme" rel="stylesheet" type="text/css" href="/theme.css"/>
<link rel="icon" sizes="32x32" href="/res/img/pixeldrain_32.png" /> <link rel="icon" sizes="32x32" href="/res/img/pixeldrain_32.png" />

View File

@@ -14,9 +14,6 @@
box-shadow: inset 0 0 2px 0 var(--shadow_color); box-shadow: inset 0 0 2px 0 var(--shadow_color);
border: none; border: none;
} }
header>h1 {
color: #ffffff;
}
</style> </style>
<script> <script>
@@ -24,8 +21,8 @@
window.user = {{.User}}; window.user = {{.User}};
window.server_hostname = "{{.Hostname}}"; window.server_hostname = "{{.Hostname}}";
</script> </script>
<link rel='stylesheet' href='/res/svelte/home_page.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/home_page.css?v{{cacheID}}'>
<script defer src='/res/svelte/home_page.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/home_page.js?v{{cacheID}}'></script>
</head> </head>
<body> <body>
{{template "menu" .}} {{template "menu" .}}

View File

@@ -7,8 +7,8 @@
<script> <script>
window.api_endpoint = '{{.APIEndpoint}}'; window.api_endpoint = '{{.APIEndpoint}}';
</script> </script>
<link rel='stylesheet' href='/res/svelte/text_upload.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/text_upload.css?v{{cacheID}}'>
<script defer src='/res/svelte/text_upload.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/text_upload.js?v{{cacheID}}'></script>
</head> </head>
<body id="body"></body> <body id="body"></body>
{{template "analytics"}} {{template "analytics"}}

View File

@@ -4,8 +4,8 @@
{{template "meta_tags" "Buckets"}} {{template "meta_tags" "Buckets"}}
<script>window.api_endpoint = '{{.APIEndpoint}}';</script> <script>window.api_endpoint = '{{.APIEndpoint}}';</script>
<link rel='stylesheet' href='/res/svelte/user_buckets.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/user_buckets.css?v{{cacheID}}'>
<script defer src='/res/svelte/user_buckets.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/user_buckets.js?v{{cacheID}}'></script>
</head> </head>
<body> <body>
{{template "menu" .}} {{template "menu" .}}

View File

@@ -6,8 +6,8 @@
<script> <script>
window.api_endpoint = '{{.APIEndpoint}}'; window.api_endpoint = '{{.APIEndpoint}}';
</script> </script>
<link rel='stylesheet' href='/res/svelte/user_file_manager.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/user_file_manager.css?v{{cacheID}}'>
<script defer src='/res/svelte/user_file_manager.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/user_file_manager.js?v{{cacheID}}'></script>
</head> </head>
<body> <body>

View File

@@ -8,8 +8,8 @@
window.user = {{.User}}; window.user = {{.User}};
window.server_hostname = "{{.Hostname}}"; window.server_hostname = "{{.Hostname}}";
</script> </script>
<link rel='stylesheet' href='/res/svelte/user_home.css?v{{.CacheID}}'> <link rel='stylesheet' href='/res/svelte/user_home.css?v{{cacheID}}'>
<script defer src='/res/svelte/user_home.js?v{{.CacheID}}'></script> <script defer src='/res/svelte/user_home.js?v{{cacheID}}'></script>
</head> </head>
<body> <body>

View File

@@ -85,4 +85,8 @@ import UploadWidget from "./UploadWidget.svelte";
background-image: url("/res/img/header_orbitron.webp"); background-image: url("/res/img/header_orbitron.webp");
} }
} }
header>h1{
color: #ffffff;
margin: 40px 10px 40px 10px;
}
</style> </style>

View File

@@ -2,7 +2,6 @@ package webcontroller
import ( import (
"io" "io"
"io/ioutil"
"net/http" "net/http"
"strings" "strings"
@@ -44,7 +43,7 @@ func (wc *WebController) serveFilePreview(w http.ResponseWriter, r *http.Request
} }
defer body.Close() defer body.Close()
bodyBytes, err := ioutil.ReadAll(body) bodyBytes, err := io.ReadAll(body)
if err != nil { if err != nil {
log.Error("Can't read text file for preview: %s", err) log.Error("Can't read text file for preview: %s", err)
w.Write([]byte("An error occurred while reading this file.")) w.Write([]byte("An error occurred while reading this file."))

View File

@@ -4,7 +4,6 @@ import (
"encoding/base64" "encoding/base64"
"fmt" "fmt"
"html/template" "html/template"
"io/ioutil"
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
@@ -33,9 +32,6 @@ type TemplateData struct {
Title string Title string
OGData ogData OGData ogData
// The cache ID is used to invalidate caches when the webserver is restarted
CacheID int64
Other interface{} Other interface{}
URLQuery url.Values URLQuery url.Values
@@ -53,7 +49,6 @@ func (wc *WebController) newTemplateData(w http.ResponseWriter, r *http.Request)
// Use the user's IP address for making requests // Use the user's IP address for making requests
PixelAPI: wc.api.RealIP(util.RemoteAddress(r)).RealAgent(r.UserAgent()), PixelAPI: wc.api.RealIP(util.RemoteAddress(r)).RealAgent(r.UserAgent()),
CacheID: wc.cacheID,
Hostname: template.HTML(wc.hostname), Hostname: template.HTML(wc.hostname),
URLQuery: r.URL.Query(), URLQuery: r.URL.Query(),
} }
@@ -129,6 +124,7 @@ func (tm *TemplateManager) ParseTemplates(silent bool) {
// Import template functions // Import template functions
tpl.Funcs(template.FuncMap{ tpl.Funcs(template.FuncMap{
"cacheID": tm.cacheID,
"isBrave": tm.isBrave, "isBrave": tm.isBrave,
"debugMode": tm.debugMode, "debugMode": tm.debugMode,
"apiUrl": tm.apiURL, "apiUrl": tm.apiURL,
@@ -172,7 +168,7 @@ func (tm *TemplateManager) ParseTemplates(silent bool) {
return nil return nil
} }
if file, err = ioutil.ReadFile(path); err != nil { if file, err = os.ReadFile(path); err != nil {
return err return err
} }
@@ -214,6 +210,15 @@ func (tm *TemplateManager) Get() *template.Template {
// Template functions. These can be called from within the template to execute // Template functions. These can be called from within the template to execute
// more specialized actions // more specialized actions
// The cache ID is used to invalidate caches when the webserver is restarted.
// It's rounded to a full hour to prevent cached from being emptied too often if
// the server is regularly restarted
var cacheID = time.Now().Unix() / 3600
func (tm *TemplateManager) cacheID() int64 {
return cacheID
}
func (tm *TemplateManager) isBrave(useragent string) bool { func (tm *TemplateManager) isBrave(useragent string) bool {
return strings.Contains(useragent, "Brave") return strings.Contains(useragent, "Brave")
} }

View File

@@ -36,9 +36,6 @@ type WebController struct {
// page-specific variables // page-specific variables
captchaSiteKey string captchaSiteKey string
// The cache ID is used to invalidate caches when the webserver is restarted
cacheID int64
httpClient *http.Client httpClient *http.Client
// API client to use for all requests. If the user is authenticated you // API client to use for all requests. If the user is authenticated you
@@ -69,7 +66,6 @@ func New(
websiteAddress: websiteAddress, websiteAddress: websiteAddress,
sessionCookieDomain: sessionCookieDomain, sessionCookieDomain: sessionCookieDomain,
proxyAPIRequests: proxyAPIRequests, proxyAPIRequests: proxyAPIRequests,
cacheID: time.Now().Unix() / 3600,
httpClient: &http.Client{Timeout: time.Minute * 10}, httpClient: &http.Client{Timeout: time.Minute * 10},
api: pixelapi.New(apiURLInternal), api: pixelapi.New(apiURLInternal),
} }