From 9dc219739dbd0298bc6e71fc0b84fca2aba511ce Mon Sep 17 00:00:00 2001 From: YouROK <8YouROK8@mail.ru> Date: Wed, 16 Mar 2022 18:36:59 +0300 Subject: [PATCH] add image checker, web vulnerability --- server/torr/dbwrapper.go | 5 ++++- server/torr/utils/webImageChecker.go | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 server/torr/utils/webImageChecker.go diff --git a/server/torr/dbwrapper.go b/server/torr/dbwrapper.go index 1b6533b..1eb532d 100644 --- a/server/torr/dbwrapper.go +++ b/server/torr/dbwrapper.go @@ -2,6 +2,7 @@ package torr import ( "encoding/json" + "server/torr/utils" "time" "server/settings" @@ -29,7 +30,9 @@ func AddTorrentDB(torr *Torrent) { } else { t.Data = torr.Data } - t.Poster = torr.Poster + if utils.CheckImgUrl(torr.Poster) { + t.Poster = torr.Poster + } t.Size = torr.Size if t.Size == 0 && torr.Torrent != nil { t.Size = torr.Torrent.Length() diff --git a/server/torr/utils/webImageChecker.go b/server/torr/utils/webImageChecker.go new file mode 100644 index 0000000..11d83d4 --- /dev/null +++ b/server/torr/utils/webImageChecker.go @@ -0,0 +1,27 @@ +package utils + +import ( + "image" + _ "image/jpeg" + _ "image/png" + "net/http" + "server/log" +) + +func CheckImgUrl(link string) bool { + if link == "" { + return false + } + resp, err := http.Get(link) + if err != nil { + log.TLogln("Error check image:", err) + return false + } + defer resp.Body.Close() + _, _, err = image.Decode(resp.Body) + if err != nil { + log.TLogln("Error decode image:", err) + return false + } + return err == nil +}