Skip to content

Commit

Permalink
Merge pull request #21 from ywadi/dev
Browse files Browse the repository at this point in the history
Bearer Auth
  • Loading branch information
ywadi authored Feb 21, 2022
2 parents 61a2e30 + 2a7693a commit 9d54178
Show file tree
Hide file tree
Showing 7 changed files with 86 additions and 15 deletions.
2 changes: 0 additions & 2 deletions Logger/Logger.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package Logger

import (
"fmt"
"os"

log "github.com/sirupsen/logrus"
"github.com/spf13/viper"
)

func Init() {
fmt.Println(viper.GetString("crimson_settings.log_file"))
f, err := os.OpenFile(viper.GetString("crimson_settings.log_file"), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
Expand Down
4 changes: 2 additions & 2 deletions Servers/RedconQ.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func StartRedCon(addr string, cq *Structs.S_GOQ) {
ConnContext := ConnContext{Auth: false, SelectDB: ""}
conn.SetContext(ConnContext)
remoteIp := strings.Split(conn.RemoteAddr(), ":")[0]
fmt.Println("Client connected from ", remoteIp)
log.Info("Client connected from ", remoteIp)
if viper.GetString("RESP.ip_whitelist") == "*" {
return true
} else {
Expand All @@ -47,7 +47,7 @@ func StartRedCon(addr string, cq *Structs.S_GOQ) {
},
func(conn redcon.Conn, err error) {
// This is called when the connection has been closed
// log.Printf("closed: %s, err: %v", conn.RemoteAddr(), err)
log.Printf("closed: %s, err: %v", conn.RemoteAddr(), err)

},
)
Expand Down
69 changes: 59 additions & 10 deletions Servers/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,19 @@ package Servers
import (
"errors"
"fmt"
"log"
"strconv"
"strings"
"time"
"ywadi/crimsonq/Defs"
"ywadi/crimsonq/Structs"
"ywadi/crimsonq/Utils"

"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/basicauth"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/recover"
jwtware "github.com/gofiber/jwt/v3"
"github.com/golang-jwt/jwt/v4"
"github.com/spf13/viper"
)

Expand All @@ -29,17 +32,19 @@ type PostBody struct {
Concurrency int `json:"concurrency" xml:"concurrency" form:"concurrency"`
}

type PostAuthBody struct {
Username string `json"username" xml:"username" form:"username"`
Password string `json"password" xml:"password" form:"password"`
}

func HTTP_Start(cq *Structs.S_GOQ) {
fmt.Println("Starting Web Server.")
app = fiber.New()
app.Post("/login", login)

app.Use(recover.New())
app.Use(cors.New())

app.Use("/api/", basicauth.New(basicauth.Config{
Users: map[string]string{
viper.GetString("HTTP.username"): viper.GetString("HTTP.password"),
},
}))

app.Use(func(c *fiber.Ctx) error {
if viper.GetString("HTTP.ip_whitelist") != "*" {
grant := Utils.SliceContains(viper.GetStringSlice("HTTP.ip_whitelist"), c.IP())
Expand All @@ -53,17 +58,21 @@ func HTTP_Start(cq *Structs.S_GOQ) {

app.Static("/", "../WebUI/dist")

app.Use(jwtware.New(jwtware.Config{
SigningKey: []byte("crimsonQ"),
}))

app.Get("/checkToken", checkToken)

for k, v := range Commands {
if v.HTTP_Method == Defs.HTTP_GET {
route := "/api/" + strings.ReplaceAll(k, ".", "/")
for _, av := range v.ArgsCmd {
route = route + "/:" + av
}
fmt.Println("|GET|" + route + "|" + strings.Join(v.ArgsCmd, " - ") + "|JSON|")
app.Get(route, v.HTTP_Function)
} else if v.HTTP_Method == Defs.HTTP_POST {
route := "/api/" + strings.ReplaceAll(k, ".", "/")
fmt.Println("|POST|" + route + "|" + strings.Join(v.ArgsCmd, " - ") + "|JSON|")
app.Post(route, v.HTTP_Function)
}

Expand All @@ -72,6 +81,46 @@ func HTTP_Start(cq *Structs.S_GOQ) {
app.Listen(":" + viper.GetString("HTTP.port"))
}

func checkToken(c *fiber.Ctx) error {
user := c.Locals("user").(*jwt.Token)
claims := user.Claims.(jwt.MapClaims)
name := claims["name"].(string)
return c.SendString("Welcome " + name)
}

func login(c *fiber.Ctx) error {
bodyData := PostAuthBody{}
if err := c.BodyParser(&bodyData); err != nil {
log.Println(err)
return fiber.NewError(fiber.StatusBadRequest, Defs.ERRIncorrectArgs)
}
user := bodyData.Username
pass := bodyData.Password

// Throws Unauthorized error
if user != viper.GetString("HTTP.username") || pass != viper.GetString("HTTP.password") {
return c.SendStatus(fiber.StatusUnauthorized)
}

// Create the Claims
claims := jwt.MapClaims{
"name": bodyData.Username,
"admin": true,
"exp": time.Now().Add(time.Hour * 72).Unix(),
}

// Create token
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)

// Generate encoded token and send it as response.
t, err := token.SignedString([]byte("crimsonQ"))
if err != nil {
return c.SendStatus(fiber.StatusInternalServerError)
}

return c.JSON(fiber.Map{"token": t})
}

func HTTP_Ping(c *fiber.Ctx) error {
return c.JSON("Pong! " + c.Params("messageString"))
}
Expand Down Expand Up @@ -108,7 +157,7 @@ func HTTP_ConsumerInfo(c *fiber.Ctx) error {
func HTTP_Consumer_Create(c *fiber.Ctx) error {
bodyData := PostBody{}
if err := c.BodyParser(&bodyData); err != nil {
fmt.Println(err)
log.Println(err)
return fiber.NewError(fiber.StatusBadRequest, Defs.ERRIncorrectArgs)
}

Expand Down
1 change: 1 addition & 0 deletions bin/cli/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This folder contains all possible builds for CrimsonQ-CLI
Binary file modified cmd/cmd
Binary file not shown.
5 changes: 4 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ require (
github.com/cosiner/argv v0.1.0 // indirect
github.com/dgraph-io/badger/v3 v3.2103.2 // indirect
github.com/go-redis/redis/v8 v8.11.4 // indirect
github.com/gofiber/fiber/v2 v2.26.0 // indirect
github.com/gofiber/fiber/v2 v2.27.0 // indirect
github.com/gofiber/jwt/v3 v3.2.6 // indirect
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
github.com/golang-jwt/jwt/v4 v4.3.0 // indirect
github.com/oklog/ulid v1.3.1 // indirect
github.com/peterh/liner v1.2.2 // indirect
github.com/sirupsen/logrus v1.8.1 // indirect
Expand Down
20 changes: 20 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/andybalholm/brotli v1.0.2 h1:JKnhI/XQ75uFBTiuzXpzFrUriDPiZjlOSzh6wXogP0E=
github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
Expand Down Expand Up @@ -150,9 +152,17 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofiber/fiber/v2 v2.26.0 h1:Awnfqp3fqbZzV3wZWMRJ6Xo2U8X0Ls68M7tXjx52NcM=
github.com/gofiber/fiber/v2 v2.26.0/go.mod h1:7efVWcBOZi1PyMWznnbitjnARPA7nYZxmQXJVod0bo0=
github.com/gofiber/fiber/v2 v2.27.0 h1:u34t1nOea7zz4jcZDK7+ZMiG+MVFYrHqMhTdYQDiFA8=
github.com/gofiber/fiber/v2 v2.27.0/go.mod h1:0bPXdTu+jRqINrEq1T6mHeVBnE0lQd67PGu35jD3hLk=
github.com/gofiber/jwt/v3 v3.2.6 h1:GdaIWXZz+16cqRxUxHadSrH2ijvy3rQPv+d17blubFI=
github.com/gofiber/jwt/v3 v3.2.6/go.mod h1:1+DdDoQxoCDvjjNXhRS7N0atcHNKA1ANZVNqvbiVRrw=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog=
github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I=
Expand Down Expand Up @@ -279,6 +289,8 @@ github.com/klauspost/compress v1.12.3 h1:G5AfA94pHPysR56qqrkO2pxEexdDzrpFJ6yt/Vq
github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.4 h1:0zhec2I8zGnjWcKyLl6i3gPqKANCCn5e9xmviEEeX6s=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.14.1 h1:hLQYb23E8/fO+1u53d02A97a8UnsddcvYzq4ERRU4ds=
github.com/klauspost/compress v1.14.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
Expand Down Expand Up @@ -419,6 +431,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.32.0 h1:keswgWzyKyNIIjz2a7JmCYHOOIkRp6HMx9oTV6QrZWY=
github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
github.com/valyala/fasthttp v1.33.0 h1:mHBKd98J5NcXuBddgjvim1i3kWzlng1SzLhrnBOU9g8=
github.com/valyala/fasthttp v1.33.0/go.mod h1:KJRK/MXx0J+yd0c5hlR+s1tIHD72sniU8ZJjl97LIw4=
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
Expand Down Expand Up @@ -454,6 +468,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220112180741-5e0467b6c7ce/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -536,6 +551,9 @@ golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d h1:LO7XpTYMwTqxjLcGWPijK3vRXg1aWdlNOVOHRq45d7c=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220111093109-d55c255bac03 h1:0FB83qp0AzVJm+0wcIlauAjJ+tNdh7jLuacRYCIVv7s=
golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand Down Expand Up @@ -641,6 +659,8 @@ golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211210111614-af8b64212486 h1:5hpz5aRr+W1erYCL5JRhSUBJRph7l9XkNveoExlrKYk=
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320 h1:0jf+tOCoZ3LyutmCOWpVni1chK4VfFLhRsDK7MhqGRY=
golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down

0 comments on commit 9d54178

Please sign in to comment.