From b481db7b45415ba4a8d206c6b55fd1273900b31a Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Thu, 4 Mar 2021 15:42:46 +0100 Subject: [PATCH] Return proper HTTP status for files with an abuse status --- res/template/fragments/meta_tags.html | 2 +- svelte/src/filesystem/Filesystem.svelte | 3 +++ webcontroller/file_viewer.go | 32 ++++++++++++++++++------- webcontroller/opengraph.go | 8 +++---- 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/res/template/fragments/meta_tags.html b/res/template/fragments/meta_tags.html index 1cd02c4..8839f4f 100644 --- a/res/template/fragments/meta_tags.html +++ b/res/template/fragments/meta_tags.html @@ -2,7 +2,7 @@ {{.}} ~ pixeldrain - + diff --git a/svelte/src/filesystem/Filesystem.svelte b/svelte/src/filesystem/Filesystem.svelte index 63be476..4fd2879 100644 --- a/svelte/src/filesystem/Filesystem.svelte +++ b/svelte/src/filesystem/Filesystem.svelte @@ -227,6 +227,9 @@ const keydown = e => { if (e.ctrlKey || e.altKey || e.metaKey) { return // prevent custom shortcuts from interfering with system shortcuts } + if (document.activeElement.type && document.activeElement.type === "text") { + return // Prevent shortcuts from interfering with input fields + } switch (e.key) { case "Escape": diff --git a/webcontroller/file_viewer.go b/webcontroller/file_viewer.go index 6ce5ffe..bf08685 100644 --- a/webcontroller/file_viewer.go +++ b/webcontroller/file_viewer.go @@ -87,7 +87,7 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request, templateData := wc.newTemplateData(w, r) - var finfo []apitype.ListFile + var files []apitype.ListFile for _, id := range ids { inf, err := templateData.PixelAPI.GetFileInfo(id) if err != nil { @@ -97,37 +97,37 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request, } continue } - finfo = append(finfo, apitype.ListFile{FileInfo: inf}) + files = append(files, apitype.ListFile{FileInfo: inf}) } - if len(finfo) == 0 { + if len(files) == 0 { w.WriteHeader(http.StatusNotFound) wc.templates.Get().ExecuteTemplate(w, "file_not_found", templateData) return } - templateData.OGData = wc.metadataFromFile(finfo[0].FileInfo) + templateData.OGData = wc.metadataFromFile(files[0].FileInfo) var vd = viewerData{ CaptchaKey: wc.captchaKey(), ViewToken: wc.viewTokenOrBust(), AdType: adType(), - FileAdsEnabled: finfo[0].ShowAds, + FileAdsEnabled: files[0].ShowAds, UserAdsEnabled: !(templateData.Authenticated && templateData.User.Subscription.DisableAdDisplay), } if len(ids) > 1 { - templateData.Title = fmt.Sprintf("%d files on pixeldrain", len(finfo)) + templateData.Title = fmt.Sprintf("%d files on pixeldrain", len(files)) vd.Type = "list" vd.APIResponse = apitype.ListInfo{ Success: true, Title: "Multiple files", DateCreated: time.Now(), - Files: finfo, + Files: files, } } else { - templateData.Title = fmt.Sprintf("%s ~ pixeldrain", finfo[0].Name) + templateData.Title = fmt.Sprintf("%s ~ pixeldrain", files[0].Name) vd.Type = "file" - vd.APIResponse = finfo[0].FileInfo + vd.APIResponse = files[0].FileInfo } templateData.Other = vd @@ -136,6 +136,13 @@ func (wc *WebController) serveFileViewer(w http.ResponseWriter, r *http.Request, templateName = "file_viewer_compat" } + for _, file := range files { + if file.AbuseType != "" { + w.WriteHeader(http.StatusUnavailableForLegalReasons) + break + } + } + err = wc.templates.Get().ExecuteTemplate(w, templateName, templateData) if err != nil && !strings.Contains(err.Error(), "broken pipe") { log.Error("Error executing template file_viewer: %s", err) @@ -212,6 +219,13 @@ func (wc *WebController) serveListViewer(w http.ResponseWriter, r *http.Request, templateName = "file_viewer_compat" } + for _, file := range list.Files { + if file.AbuseType != "" { + w.WriteHeader(http.StatusUnavailableForLegalReasons) + break + } + } + err = wc.templates.Get().ExecuteTemplate(w, templateName, templateData) if err != nil && !strings.Contains(err.Error(), "broken pipe") { log.Error("Error executing template file_viewer: %s", err) diff --git a/webcontroller/opengraph.go b/webcontroller/opengraph.go index d60e6ab..42f0e7f 100644 --- a/webcontroller/opengraph.go +++ b/webcontroller/opengraph.go @@ -24,8 +24,8 @@ func (og *ogData) addLink(k, v string) { og.LinkRules = append(og.LinkRules, func (wc *WebController) metadataFromFile(f apitype.FileInfo) (og ogData) { og.addOG("og:title", f.Name) og.addOG("og:site_name", "pixeldrain") - og.addOG("og:description", "View '"+f.Name+"' on pixeldrain") - og.addOG("description", "View '"+f.Name+"' on pixeldrain") + og.addOG("og:description", "This file has been shared with you on pixeldrain") + og.addOG("description", "This file has been shared with you on pixeldrain") og.addOG("og:url", wc.websiteAddress+"/u/"+f.ID) og.addTwitter("twitter:title", f.Name) og.addTwitter("twitter:site", "@Fornax96") @@ -71,8 +71,8 @@ func (wc *WebController) metadataFromList(l apitype.ListInfo) (og ogData) { og.addOG("og:type", "website") og.addOG("og:title", l.Title) og.addOG("og:site_name", "pixeldrain") - og.addOG("og:description", "View '"+l.Title+"' on pixeldrain") - og.addOG("description", "View '"+l.Title+"' on pixeldrain") + og.addOG("og:description", "A collection of files on pixeldrain") + og.addOG("description", "A collection of files on pixeldrain") og.addOG("og:url", wc.websiteAddress+"/l/"+l.ID) og.addTwitter("twitter:title", l.Title) og.addTwitter("twitter:site", "@Fornax96")