From b59a3442860dc727286a9594fb42da08d888570e Mon Sep 17 00:00:00 2001 From: Hugo Thunnissen Date: Fri, 22 Nov 2019 15:10:31 +0100 Subject: [PATCH] Make things actually work by initializing values + add some logging --- auth_request_client.go | 7 ++++++- authentication_queue.go | 14 ++++++++++++-- go.mod | 6 +++++- go.sum | 17 +++++++++++++++++ main.go | 26 +++++++++++++++++++------- 5 files changed, 59 insertions(+), 11 deletions(-) diff --git a/auth_request_client.go b/auth_request_client.go index 0df085c..07b3292 100644 --- a/auth_request_client.go +++ b/auth_request_client.go @@ -15,6 +15,7 @@ const ( type AuthRequestClient struct { conn *websocket.Conn + app *App } type AuthRequestProtocolMessage struct { @@ -50,17 +51,21 @@ func (c *AuthRequestClient) ReceiveRequest() (*AuthRequest, error) { Instance: instance, } + (*c.app.Logger).Info("Returning AuthRequest") + return r, nil } func (c *AuthRequestClient) receiveProtocolMessage() (*AuthRequestProtocolMessage, error) { _, message, err := c.conn.ReadMessage() + (*c.app.Logger).Info("Read message") + if err != nil { return nil, err } - var protocolMessage *AuthRequestProtocolMessage + protocolMessage := &AuthRequestProtocolMessage{} err = json.Unmarshal(message, protocolMessage) diff --git a/authentication_queue.go b/authentication_queue.go index 2d7d8c7..98c414b 100644 --- a/authentication_queue.go +++ b/authentication_queue.go @@ -3,7 +3,6 @@ package main // Queue for pending authentication requests import ( - "log" "math/rand" "time" @@ -14,6 +13,7 @@ type AuthenticationQueue struct { requestMap map[string]*AuthRequest requestChan chan *AuthRequest tokenChan chan *AuthToken + app *App } func (q *AuthenticationQueue) QueueRequest(r *AuthRequest) { @@ -37,16 +37,26 @@ func (q *AuthenticationQueue) queueRequest(r *AuthRequest) error { q.requestMap[ID] = r - log.Println("Queued request by id: ", ID) + (*q.app.Logger).Info("Queued request by id: ", ID) return nil } +func (q *AuthenticationQueue) Init() { + q.requestMap = make(map[string]*AuthRequest) + q.requestChan = make(chan *AuthRequest) + q.tokenChan = make(chan *AuthToken) + q.startRequestChanListener() +} + func (q *AuthenticationQueue) startRequestChanListener() { go func() { + (*q.app.Logger).Info("Starting chan listener") for { var req *AuthRequest = <-q.requestChan + (*q.app.Logger).Info("Received request to be queued: ") + q.queueRequest(req) } }() diff --git a/go.mod b/go.mod index 2cf5e83..8f9e03b 100644 --- a/go.mod +++ b/go.mod @@ -4,10 +4,14 @@ go 1.13 require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect + github.com/dougm/goflymake v0.0.0-20140731161037-3b9634ef394a // indirect github.com/gorilla/websocket v1.4.1 github.com/labstack/echo v3.3.10+incompatible - github.com/labstack/gommon v0.3.0 // indirect + github.com/labstack/gommon v0.3.0 + github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836 // indirect github.com/oklog/ulid v1.3.1 + github.com/rogpeppe/godef v1.1.1 // indirect github.com/valyala/fasttemplate v1.1.0 // indirect golang.org/x/crypto v0.0.0-20191119213627-4f8c1d86b1ba // indirect + golang.org/x/tools v0.0.0-20191122080028-f774e2e2e5be // indirect ) diff --git a/go.sum b/go.sum index 1310c0c..c698be4 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,11 @@ +9fans.net/go v0.0.0-20181112161441-237454027057 h1:OcHlKWkAMJEF1ndWLGxp5dnJQkYM/YImUOvsBoz6h5E= +9fans.net/go v0.0.0-20181112161441-237454027057/go.mod h1:diCsxrliIURU9xsYtjCp5AbpQKqdhKmf0ujWDUSkfoY= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dougm/goflymake v0.0.0-20140731161037-3b9634ef394a h1:S4+OSVOtl5a40p2ZgV7rA6YLl0wcjehR2jQVyWK1/UE= +github.com/dougm/goflymake v0.0.0-20140731161037-3b9634ef394a/go.mod h1:5K1XZIXX56t7gg4jDBoVXBH9ABugPa830vLJiD/XPHI= github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg= @@ -13,10 +17,14 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836 h1:oc3CL18CoGhyOQJ7HDa9gJAde33bwI8Vi28zLdIzJVc= +github.com/nsf/gocode v0.0.0-20190302080247-5bee97b48836/go.mod h1:6Q8/OMaaKAgTX7/jt2bOXVDrm1eJhoNd+iwzghR7jvs= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/godef v1.1.1 h1:NujOtt9q9vIClRTB3sCZpavac+NMRaIayzrcz1h4fSE= +github.com/rogpeppe/godef v1.1.1/go.mod h1:oEo1eMy1VUEHUzUIX4F7IqvMJRiz9UId44mvnR8oPlQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -30,6 +38,10 @@ golang.org/x/crypto v0.0.0-20191119213627-4f8c1d86b1ba h1:9bFeDpN3gTqNanMVqNcoR/ golang.org/x/crypto v0.0.0-20191119213627-4f8c1d86b1ba/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -37,6 +49,11 @@ golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20181130195746-895048a75ecf/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191122080028-f774e2e2e5be h1:6d2MOtryvuMarrCTOqjhCZCVONST5uq4zNzBWKxzOls= +golang.org/x/tools v0.0.0-20191122080028-f774e2e2e5be/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= diff --git a/main.go b/main.go index 2da003e..d588b86 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "github.com/gorilla/websocket" "github.com/labstack/echo" "github.com/labstack/echo/middleware" + "github.com/labstack/gommon/log" ) // github.com/oklog/ulid @@ -17,6 +18,7 @@ var ( type App struct { AuthQueue *AuthenticationQueue + Logger *echo.Logger } func (a *App) authRequestWebSocket(c echo.Context) error { @@ -28,6 +30,7 @@ func (a *App) authRequestWebSocket(c echo.Context) error { client := &AuthRequestClient{ conn: ws, + app: a, } req, err := client.ReceiveRequest() @@ -36,23 +39,32 @@ func (a *App) authRequestWebSocket(c echo.Context) error { return err } + (*a.Logger).Info("Queueing AuthRequest") + a.AuthQueue.QueueRequest(req) return nil } func main() { - q := &AuthenticationQueue{} + e := echo.New() + e.Use(middleware.Logger()) + e.Use(middleware.Recover()) + e.Static("/", "../public") - q.startRequestChanListener() + e.Logger.SetLevel(log.INFO) a := &App{ - AuthQueue: q, + Logger: &e.Logger, } - e := echo.New() - e.Use(middleware.Logger()) - e.Use(middleware.Recover()) - e.Static("/", "../public") + q := &AuthenticationQueue{ + app: a, + } + + q.Init() + + a.AuthQueue = q + e.GET("/ws", a.authRequestWebSocket) e.Logger.Fatal(e.Start(":1323")) }