From b78ddd28f01cb74e7f632b43043a3b7f7e701c6f Mon Sep 17 00:00:00 2001 From: kayos Date: Wed, 28 Jul 2021 01:41:51 -0700 Subject: [PATCH] fix script backwards compatibility issue --- common.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ db.go | 7 +++++++ main.go | 16 ++++++++++++++- txt.go | 2 +- 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 common.go diff --git a/common.go b/common.go new file mode 100644 index 0000000..7f464e6 --- /dev/null +++ b/common.go @@ -0,0 +1,59 @@ +package main + +import ( + valid "github.com/asaskevich/govalidator" + "github.com/gin-gonic/gin" + jsoniter "github.com/json-iterator/go" + "github.com/rs/zerolog/log" +) + +type Post struct { + Type string + Uid string + Key string + Priv bool +} + +var json = jsoniter.ConfigCompatibleWithStandardLibrary + +func validateKey(rKey string) bool { + // if it doesn't match the key size or it isn't alphanumeric - throw it out + if len(rKey) != keySize || !valid.IsAlphanumeric(rKey) { + log.Warn().Str("rKey", rKey). + Msg("delete request failed sanity check!") + return false + } + return true +} + +func (p *Post) URLString() string { + var keyurl string = "" + url := baseUrl + p.Type + "/" + string(p.Uid) + if p.Key != "" { + keyurl = baseUrl + "d/" + p.Type + "/" + p.Key + } + log.Info(). + Str("type", p.Type). + Str("uid", p.Uid).Str("key", p.Key). + Bool("private", p.Priv).Msg("success") + if keyurl != "" { + return url + "\nDelete: " + keyurl + } + return url +} + +func (p *Post) Serve(c *gin.Context) { + var keyurl string = "" + url := baseUrl + p.Type + "/" + string(p.Uid) + if p.Key != "" { + keyurl = baseUrl + "d/" + p.Type + "/" + p.Key + } + + log.Info(). + Str("type", p.Type). + Str("uid", p.Uid).Str("key", p.Key). + Bool("private", p.Priv).Msg("success") + + c.JSON(201, gin.H{"Imgurl": url, "ToDelete": keyurl}) + return +} diff --git a/db.go b/db.go index b782a20..569e4a4 100644 --- a/db.go +++ b/db.go @@ -25,3 +25,10 @@ func dbInit() { urlDB, _ = bitcask.Open(dbDir + "url") // url shortener entries log.Info().Msg("Initializing url database") } + +func dbSync() { + hashDB.Sync() + keyDB.Sync() + imgDB.Sync() + urlDB.Sync() +} diff --git a/main.go b/main.go index 054eae3..99bed31 100644 --- a/main.go +++ b/main.go @@ -7,12 +7,13 @@ import ( "github.com/rs/zerolog" "github.com/rs/zerolog/log" "os" + "os/signal" + "syscall" ) var Banner string = "CiAgLGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIDg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTU04OE1NTSAsYWRQUFliYSwgOGIsZFBQWWJhLCAgICAgICxhZFBQWVliYSwgICxhZFBQWWJhLCAgCiAgODggICBhOCIgICAgICIiIDg4UCcgICAgIjhhICAgICAiIiAgICAgYFk4IGE4IiAgICAgIiIgIAogIDg4ICAgOGIgICAgICAgICA4OCAgICAgICBkOCAgICAgLGFkUFBQUFA4OCA4YiAgICAgICAgICAKICA4OCwgICI4YSwgICAsYWEgODhiLCAgICxhOCIgODg4IDg4LCAgICAsODggIjhhLCAgICxhYSAgCiAgIlk4ODggYCJZYmJkOCInIDg4YFliYmRQIicgIDg4OCBgIjhiYmRQIlk4ICBgIlliYmQ4IicgIAogICAgICAgICAgICAgICAgICA4OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg==" func init() { - out := termenv.String(b64d(Banner)) p := termenv.ColorProfile() out = out.Foreground(p.Color("#948DB8")) @@ -62,6 +63,19 @@ func init() { } func main() { + defer dbSync() + go func() { + c := make(chan os.Signal) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + for { + select { + case <-c: + log.Warn().Msg("Interrupt detected, shutting down gracefully...") + dbSync() + os.Exit(0) + } + } + }() go serveTermbin() // see router.go httpRouter() diff --git a/txt.go b/txt.go index 890b3e2..60f7ecb 100644 --- a/txt.go +++ b/txt.go @@ -102,7 +102,7 @@ func termPost(b []byte) { key = gouid.String(keySize, gouid.MixedCaseAlphaNum) } - hashDB.Put([]byte(hash), []byte(uid)) + hashDB.Put(hash, []byte(uid)) uid = gouid.String(uidSize, gouid.MixedCaseAlphaNum) key = gouid.String(keySize, gouid.MixedCaseAlphaNum)