forked from tcp.direct/tcp.ac
1
0
Fork 0

joneshole fuck

This commit is contained in:
kayos@tcp.direct 2021-04-23 22:31:18 -07:00
parent de43f676ad
commit 16ee6a6875
7 changed files with 59 additions and 65 deletions

View File

@ -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/"

View File

@ -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")
//
//
}

View File

@ -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

View File

@ -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})

View File

@ -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)

View File

@ -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)

View File

@ -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)
}