diff --git a/config.toml b/config.toml index e1eeff3..1109956 100644 --- a/config.toml +++ b/config.toml @@ -1,17 +1,17 @@ title = "tcp.ac config" [global] -debug = false +debug = true [http] -baseurl = "http://127.0.0.1/" -bindip = "127.0.0.1" -port = 8080 +baseurl = "http://192.168.69.1/" +bindip = "192.168.69.1" +port = 80 [img] -uidsize = 6 -delkeysize = 24 +uidsize = 4 +delkeysize = 12 [files] -data = "../data/" -logs = "../logs/" +data = "/etc/tcpac/data/" +logs = "/etc/tcpac/logs/" diff --git a/src/config.go b/src/config.go index 915c82e..50e3b58 100644 --- a/src/config.go +++ b/src/config.go @@ -41,7 +41,7 @@ func configRead() { // bind port s = "http.port" i := viper.GetInt(s) - webPort = strconv.Itoa(i) // int looks cleaner in config + webPort = strconv.Itoa(i) // int looks cleaner in config // bind IP s = "http.bindip" @@ -67,6 +67,5 @@ func configRead() { log.Debug().Str("logDir", logDir).Str("dbDir", dbDir).Msg("Filesystem") log.Debug().Int("keySize", keySize).Int("uidSize", uidSize).Msg("UUIDs") - -// + // } diff --git a/src/img.go b/src/img.go index fa5ee02..afd63ee 100644 --- a/src/img.go +++ b/src/img.go @@ -33,7 +33,9 @@ func (p Post) Serve(c *gin.Context) { keyurl = baseUrl + "d/" + p.Type + "/" + p.Key } - if p.Priv == true { priv = "yes" } + if p.Priv == true { + priv = "yes" + } log.Info().Str("type", p.Type).Str("uid", p.Uid).Str("key", p.Key).Str("private", priv).Msg("success") c.JSON(201, gin.H{"Imgurl": url, "ToDelete": keyurl}) @@ -112,7 +114,7 @@ func imgView(c *gin.Context) { } // if it doesn't match the key size or it isn't alphanumeric - throw it out - if (!valid.IsAlphanumeric(rUid) || len(rUid) != uidSize) { + if !valid.IsAlphanumeric(rUid) || len(rUid) != uidSize { log.Error().Str("func", fn).Msg("request discarded as invalid") // these limits should be variables eventually errThrow(c, 400, "400", "400") return @@ -224,7 +226,7 @@ func imgPost(c *gin.Context) { post := &Post{ Type: "i", - Uid: ogUid, + Uid: ogUid, Key: "", Priv: false, } @@ -241,17 +243,17 @@ func imgPost(c *gin.Context) { log.Info().Str("func", fn).Msg("no duplicate images found, generating uid and delete key") // generate new uid and delete key - uid := gouid.String(uidSize) - key = gouid.String(keySize) + uid := gouid.String(uidSize, gouid.MixedCaseAlphaNum) + key = gouid.String(keySize, gouid.MixedCaseAlphaNum) // lets make sure that we don't clash even though its highly unlikely for uidRef, _ := imgDB.Get([]byte(uid)); uidRef != nil; { log.Info().Str("func", fn).Msg(" uid already exists! generating new...") - uid = gouid.String(uidSize) + uid = gouid.String(uidSize, gouid.MixedCaseAlphaNum) } for keyRef, _ := keyDB.Get([]byte(key)); keyRef != nil; { log.Info().Str("func", fn).Msg(" delete key already exists! generating new...") - key = gouid.String(keySize) + key = gouid.String(keySize, gouid.MixedCaseAlphaNum) } // save checksum to db to prevent dupes in the future diff --git a/src/main.go b/src/main.go index d5e0dd0..16a12f8 100644 --- a/src/main.go +++ b/src/main.go @@ -1,15 +1,15 @@ package main import ( - "github.com/rs/zerolog/log" - "github.com/muesli/termenv" - "github.com/gin-gonic/gin" - "github.com/rs/zerolog" "fmt" + "github.com/gin-gonic/gin" + "github.com/muesli/termenv" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" "os" ) -var Banner string = "ICAsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApNTTg4TU1NICxhZFBQWWJhLCA4YixkUFBZYmEsICAgICAgLGFkUFBZWWJhLCAgLGFkUFBZYmEsICAKICA4OCAgIGE4IiAgICAgIiIgODhQJyAgICAiOGEgICAgICIiICAgICBgWTggYTgiICAgICAiIiAgCiAgODggICA4YiAgICAgICAgIDg4ICAgICAgIGQ4ICAgICAsYWRQUFBQUDg4IDhiICAgICAgICAgIAogIDg4LCAgIjhhLCAgICxhYSA4OGIsICAgLGE4IiA4ODggODgsICAgICw4OCAiOGEsICAgLGFhICAKICAiWTg4OCBgIlliYmQ4IicgODhgWWJiZFAiJyAgODg4IGAiOGJiZFAiWTggIGAiWWJiZDgiJyAgCiAgICAgICAgICAgICAgICAgIDg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA4OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK" +var Banner string = "CiAgLGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIDg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTU04OE1NTSAsYWRQUFliYSwgOGIsZFBQWWJhLCAgICAgICxhZFBQWVliYSwgICxhZFBQWWJhLCAgCiAgODggICBhOCIgICAgICIiIDg4UCcgICAgIjhhICAgICAiIiAgICAgYFk4IGE4IiAgICAgIiIgIAogIDg4ICAgOGIgICAgICAgICA4OCAgICAgICBkOCAgICAgLGFkUFBQUFA4OCA4YiAgICAgICAgICAKICA4OCwgICI4YSwgICAsYWEgODhiLCAgICxhOCIgODg4IDg4LCAgICAsODggIjhhLCAgICxhYSAgCiAgIlk4ODggYCJZYmJkOCInIDg4YFliYmRQIicgIDg4OCBgIjhiYmRQIlk4ICBgIlliYmQ4IicgIAogICAgICAgICAgICAgICAgICA4OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg==" func init() { @@ -20,7 +20,7 @@ func init() { fmt.Println(out) // initialize the logger before the config: that way we can output debug lines - // pertaining to the parsing of the configuration init + // pertaining to the parsing of the configuration init //////////// init logging //////////// @@ -38,21 +38,21 @@ func init() { // now that we know where to put the log file, we can start output (replace logger) - err = os.MkdirAll(logDir, 0755) + err = os.MkdirAll(logDir, 0755) if err != nil { - log.Fatal().Str("directory",logDir).Str("intent","logDir").Err(err).Msg("failed to open directory") + log.Fatal().Str("directory", logDir).Str("intent", "logDir").Err(err).Msg("failed to open directory") return } - err = os.MkdirAll(dbDir, 0755) + err = os.MkdirAll(dbDir, 0755) if err != nil { - log.Fatal().Str("directory",dbDir).Str("intent","dbDir").Err(err).Msg("failed to open directory") + log.Fatal().Str("directory", dbDir).Str("intent", "dbDir").Err(err).Msg("failed to open directory") return } - lf, err := os.OpenFile(logDir+"tcpac.log", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) + lf, err := os.OpenFile(logDir+"tcpac.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { - log.Fatal().Str("logDir",logDir).Err(err).Msg("Error opening log file!") + log.Fatal().Str("logDir", logDir).Err(err).Msg("Error opening log file!") } log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) diff --git a/src/router.go b/src/router.go index 5e46674..6747ebb 100644 --- a/src/router.go +++ b/src/router.go @@ -1,11 +1,11 @@ package main import ( - "github.com/gin-contrib/logger" - "github.com/gin-contrib/gzip" - "github.com/rs/zerolog/log" - "github.com/gin-gonic/gin" "encoding/base64" + "github.com/gin-contrib/gzip" + "github.com/gin-contrib/logger" + "github.com/gin-gonic/gin" + "github.com/rs/zerolog/log" ) var favicon string = "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" @@ -48,19 +48,16 @@ func httpRouter() { // use gzip compression unless someone requests something with an explicit extension router.Use(gzip.Gzip(gzip.DefaultCompression, gzip.WithExcludedPathsRegexs([]string{".*"}))) - // static html and such // workaround the issue where the router tries to handle /* // router.Static("/h", "../public") - router.GET("/favicon.ico", favIcon) router.GET("/", placeHolder) - imgR := router.Group("/i") { - imgR.GET("/", func(c *gin.Context) { c.String(200,"") }) + imgR.GET("/", func(c *gin.Context) { c.String(200, "") }) // put looks nicer even though its actually POST imgR.POST("/put", imgPost) imgR.GET("/:uid", imgView) @@ -71,15 +68,15 @@ func httpRouter() { delR.GET("/i/:key", imgDel) } - txtR := router.Group("/t") - { - txtR.POST("/put", txtPost) - } +// txtR := router.Group("/t") +// { +// txtR.POST("/put", txtPost) +// } - urlR := router.Group("/u") - { - urlR.POST("/put", urlPost) - } +// urlR := router.Group("/u") +// { +// urlR.POST("/put", urlPost) +// } log.Info().Str("webIP", webIP).Str("webPort", webPort).Msg("done; tcp.ac is live.") router.Run(webIP + ":" + webPort) diff --git a/src/txt.go b/src/txt.go index ce94098..75fdb37 100644 --- a/src/txt.go +++ b/src/txt.go @@ -83,11 +83,10 @@ func txtDel(c *gin.Context) { } c.JSON(200, "DELETE_SUCCESS") - // it would be insane to try and delete the hash here // if someone is uploading this text again after del - // and the file corresponding to the hash no longer exists - // we will delete the hash entry then and re-add then + // and the file corresponding to the hash no longer exists + // we will delete the hash entry then and re-add then } func txtView(c *gin.Context) { @@ -135,28 +134,26 @@ func txtPost(c *gin.Context) { t := c.PostForm("txt") priv := c.PostForm("priv") - tbyte := []byte(t) if err != nil { - log.Error().Err(err).Str("fn",fn).Msg("Oh?") + log.Error().Err(err).Str("fn", fn).Msg("Oh?") errThrow(c, 500, "500", "500") return } if len(t) == 0 { - log.Warn().Str("fn",fn).Msg("received an empty request") + log.Warn().Str("fn", fn).Msg("received an empty request") errThrow(c, 400, "400", "400") return } if c.ContentType() != "text/plain" { - log.Warn().Str("fn",fn).Str("ContentType", c.ContentType()).Msg("received a non-text content-type") + log.Warn().Str("fn", fn).Str("ContentType", c.ContentType()).Msg("received a non-text content-type") errThrow(c, 400, "400", "400") return } - // an optional switch for a privnote style burn after read // priv := c.GetBool("private") @@ -192,17 +189,17 @@ func txtPost(c *gin.Context) { log.Info().Str("func", fn).Msg("no duplicate txts found, generating uid and delete key") // generate identifier and delete key based on configured sizes - uid := gouid.String(uidSize) - key := gouid.String(keySize) + uid := gouid.String(uidSize, gouid.MixedCaseAlphaNum) + key := gouid.String(keySize, gouid.MixedCaseAlphaNum) // lets make sure that we don't clash even though its highly unlikely for uidRef, _ := txtDB.Get([]byte(uid)); uidRef != nil; { log.Info().Str("func", fn).Msg("uid already exists! generating another...") - uid = gouid.String(uidSize) + uid = gouid.String(uidSize, gouid.MixedCaseAlphaNum) } for keyRef, _ := keyDB.Get([]byte(key)); keyRef != nil; { log.Info().Str("func", fn).Msg(" delete key already exists! generating another...") - key = gouid.String(keySize) + key = gouid.String(keySize, gouid.MixedCaseAlphaNum) } // save checksum to db to prevent dupes in the future @@ -224,7 +221,6 @@ func txtPost(c *gin.Context) { } } - log.Debug().Str("func", fn).Str("uid", uid).Msg("saved to database successfully, sending to txtFin") txtFin(c, uid, key) diff --git a/src/util.go b/src/util.go index 4d3c922..6816e67 100644 --- a/src/util.go +++ b/src/util.go @@ -1,8 +1,8 @@ package main import ( - "github.com/gin-gonic/gin" "encoding/base64" + "github.com/gin-gonic/gin" ) func errThrow(c *gin.Context, respcode int, Error string, msg string) { @@ -13,9 +13,9 @@ func errThrow(c *gin.Context, respcode int, Error string, msg string) { } func b64d(str string) string { - data, err := base64.StdEncoding.DecodeString(str) - if err != nil { - return err.Error() - } - return string(data) + data, err := base64.StdEncoding.DecodeString(str) + if err != nil { + return err.Error() + } + return string(data) }