diff --git a/webcontroller/file_viewer.go b/webcontroller/file_viewer.go index 9967fc4..2c50265 100644 --- a/webcontroller/file_viewer.go +++ b/webcontroller/file_viewer.go @@ -2,17 +2,13 @@ package webcontroller import ( "fmt" - "io/ioutil" "math/rand" - "mime" "net/http" - "strconv" "strings" "time" "fornaxian.tech/pixeldrain_api_client/pixelapi" "github.com/Fornaxian/log" - pdmimetype "github.com/Fornaxian/pd_mime_type" "github.com/julienschmidt/httprouter" ) @@ -273,99 +269,3 @@ func (wc *WebController) serveListViewer(w http.ResponseWriter, r *http.Request, log.Error("Error executing template file_viewer: %s", err) } } - -// ServeFileViewer controller for GET /s/:id -func (wc *WebController) serveSkynetViewer(w http.ResponseWriter, r *http.Request, p httprouter.Params) { - var err error - templateData := wc.newTemplateData(w, r) - - // Get the first few bytes from the file to probe the content type and - // length - rq, err := http.NewRequest("GET", "https://siasky.net/file/"+p.ByName("id"), nil) - if err != nil { - log.Warn("Failed to make request to sia portal: %s", err) - w.WriteHeader(http.StatusInternalServerError) - wc.templates.Get().ExecuteTemplate(w, "500", templateData) - return - } - - // Range header limits the number of bytes which will be read - rq.Header.Set("Range", "bytes=0-1023") - - resp, err := wc.httpClient.Do(rq) - if err != nil { - panic(err) - } - defer resp.Body.Close() - - if resp.StatusCode >= 500 { - head, _ := ioutil.ReadAll(resp.Body) - log.Warn("Sia portal returned error: %s", head) - w.WriteHeader(http.StatusInternalServerError) - wc.templates.Get().ExecuteTemplate(w, "500", templateData) - return - } else if resp.StatusCode >= 400 { - w.WriteHeader(http.StatusNotFound) - wc.templates.Get().ExecuteTemplate(w, "file_not_found", templateData) - return - } - - head, err := ioutil.ReadAll(resp.Body) - if err != nil { - log.Warn("Failed to read file header from Sia portal: %s", err) - w.WriteHeader(http.StatusInternalServerError) - wc.templates.Get().ExecuteTemplate(w, "500", templateData) - return - } - - var fileType = resp.Header.Get("Content-Type") - if fileType == "application/octet-stream" || fileType == "" { - fileType = pdmimetype.Detect(head) - } - - // Now get the size of the file from the content-range header - contentRange := resp.Header.Get("Content-Range") - if contentRange == "" { - log.Warn("Sia portal didn't send Content-Range") - w.WriteHeader(http.StatusInternalServerError) - wc.templates.Get().ExecuteTemplate(w, "500", templateData) - return - } - contentRange = strings.TrimPrefix(contentRange, "bytes ") - size, err := strconv.ParseInt(strings.Split(contentRange, "/")[1], 10, 64) - if err != nil { - panic(err) - } - - var name string - _, params, err := mime.ParseMediaType(resp.Header.Get("Content-Disposition")) - if err != nil { - name = "skynet_file" - } else { - name = params["filename"] - } - - templateData.Title = fmt.Sprintf("name ~ Skynet") - templateData.Other = viewerData{ - Type: "skylink", - APIResponse: pixelapi.FileInfo{ - Success: true, - ID: p.ByName("id"), - Name: name, - Size: size, - DateUpload: time.Now(), - DateLastView: time.Now(), - MimeType: fileType, - }, - } - - var templateName = "file_viewer" - if browserCompat(r.UserAgent()) { - templateName = "file_viewer_compat" - } - - 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/web_controller.go b/webcontroller/web_controller.go index 9da4bcc..7b187aa 100644 --- a/webcontroller/web_controller.go +++ b/webcontroller/web_controller.go @@ -136,7 +136,6 @@ func New( {GET, "u/:id/preview" /* */, wc.serveFilePreview}, {GET, "l/:id" /* */, wc.serveListViewer}, {GET, "d/*path" /* */, wc.serveDirectory}, - {GET, "s/:id" /* */, wc.serveSkynetViewer}, {GET, "t" /* */, wc.serveTemplate("text_editor", handlerOpts{})}, {GET, "donation" /* */, wc.serveMarkdown("donation.md", handlerOpts{})}, {GET, "subscribe" /* */, wc.serveMarkdown("subscribe.md", handlerOpts{})},