Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 18:49
    codecov[bot] commented #3272
  • 18:49
    Coverage (#3272) +0.00%
  • 18:48
    codecov[bot] commented #3272
  • 18:48
    Coverage (#3272) +0.00%
  • 18:48
    codecov[bot] commented #3272
  • 18:48
    Coverage (#3272) -0.10%
  • 18:46
    mstmdev opened #3272
  • 17:47
    Coverage (master) -0.11%
  • 15:13
    codecov[bot] commented #3270
  • 15:13
    Coverage (#3270) -0.27%
  • 15:13
    codecov[bot] commented #3270
  • 15:13
    Coverage (#3270) -0.27%
  • 15:12
    codecov[bot] commented #3270
  • 15:12
    Coverage (#3270) -0.27%
  • 15:09
    codecov[bot] commented #3270
  • 15:09
    Coverage (#3270) -0.27%
  • 13:33
    nickdooley2016 opened #3271
  • 13:13
    StephanoGeorge synchronize #3270
  • Aug 06 16:52
    vkstack commented #3269
  • Aug 06 16:50
    StephanoGeorge edited #3270
coolder
@COOLMSF
The main function,
sess := r.Group("/", pkg.EnableCookieSession())
    {
        sess.POST("/login", post.Login)

        /*
         * Got problem here, session not working...
         */
        authorized := sess.Group("/auth", pkg.AuthSessionMiddle)
        // authorized := sess.Group("/auth")
        {
            authorized.POST("/upload", post.Upload)
            authorized.POST("/webshell", post.WebShell)
            authorized.StaticFS("/download", http.Dir("download"))
        }
    }
    err := r.Run(":3333")
    // err := r.RunTLS(":3333", "server.crt", "server.key")
    if err != nil {
        log.Fatal("r.Run")
    }
My Login function,
func Login(c *gin.Context) {
    tableName := "user_passwd"
    username := c.PostForm("username")
    password := c.PostForm("password")
    passwordMd5Form := fmt.Sprintf("%x", md5.Sum([]byte(password)))

    db, err := sql.Open("mysql", "root:hushanglai@tcp(localhost:3306)/web")
    if err != nil {
        log.Printf("sql.Open: %v", err)
    }
    defer func(db *sql.DB) {
        err := db.Close()
        if err != nil {
            log.Printf("Fail to close db:%v", err)
        }
    }(db)

    // Query password for a specified username
    sqlString := fmt.Sprintf("select password from %s where username=\"%s\"",
        tableName, username)

    res, err := db.Query(sqlString)
    defer func(res *sql.Rows) {
        err := res.Close()
        if err != nil {
            log.Printf("res.Close: %v", err)
        }
    }(res)
    if err != nil {
        log.Printf("db.Query: %v", err)
    }

    var passwordMd5Mysql string
    for res.Next() {
        err = res.Scan(&passwordMd5Mysql)
        if err != nil {
            c.String(http.StatusUnauthorized, "username or password wrong!")
        }
    }
    if passwordMd5Mysql != passwordMd5Form {
        c.String(http.StatusUnauthorized, "username or password wrong!")
        return
    }
    c.String(http.StatusOK, "Login successful")

    pkg.SaveAuthSession(c, username)
    c.JSON(http.StatusOK, gin.H{"message": "Successfully authenticated user"})
}
My pkg.SaveAuthSession,
func SaveAuthSession(c *gin.Context, username string) {
    session := sessions.Default(c)
    session.Set("user", username)
    err := session.Save()
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to save session"})
    }
    c.JSON(http.StatusOK, gin.H{"message": "save session ok"})
}
coolder
@COOLMSF

My pkg.AuthSessionMiddle function,

func AuthSessionMiddle(c *gin.Context) {
    session := sessions.Default(c)
    sessionValue := session.Get("user")
    if sessionValue == nil {
        c.JSON(http.StatusUnauthorized, gin.H{
            "error": "Unauthorized",
        })
        c.Abort()
        return
    }
    // c.Set("userId", sessionValue.(uint))
    c.Next()
    return
}

My problem is here, sessionValue := session.Get("user") won't get the session, I don't know why.

I am new to Go, can anyone help?
Thank you.
coolder
@COOLMSF
Sorry, my problem is here, session := sessions.Default(c) won't get the session that Login function saves.
coolder
@COOLMSF
I think sessions.Default(c) should return the session that Login() saves.
Phillip Couto
@phillipCouto
Where is the sessions suppose to be saved? In the cookie?
Steve McDaniel
@nibbleshift_gitlab
howdy
I am testing using the autotls with gin and I keep getting http: TLS handshake error from ... acme/autocert: missing server name
I am running with err = autotls.Run(r, "api.myvaliddomain.com")
I am not exactly sure what the issue is, but I am running my gin app inside of docker with ports 80 and 443 forwarded
Raphaël Yancey
@raphaelyancey_twitter
Hi :)
One of my Gin route handler starts a goroutine to handle the request in order to returns 200 asap (it's an event handler and the caller doesn't except any response).
I'm having a hard time testing that the goroutine is called, and testing what happens in it. Do you guys have any advice on the approach I should take?
Nikolay Kiselev
@kiselev-nikolay
Hi, are there any updates on new logo proposal gin-gonic/logo#6? This logo variant has more than 400 upvotes on reddit
Fabrizio Sestito
@fabriziosestito
Hi everyone, I'm struggling with gin not overriding a status code with a 500 if the error is caused from a method called in a template
Narsimham Chelluri
@narsimham_twitter
Hello, I have a question about data binding. Is it possible to normalize the data that comes out of the Bind functions? E.g. uppercase it, massage it, etc.
Rubi
@codenoid

Go Gin reCAPTCHA Example (v2 & v3)

https://github.com/codenoid/go-gin-recaptcha-example

Rubi
@codenoid
the forum is dead?
Pooja Yadav
@PoojaYa01281608_twitter
Hi everyone, Pooja here. I work as a Senior Marketing Coordinator at Packt. Looking at all the talk around Gin has encouraged me to share that Packt recently released a book on the framework. Building Distributed Applications in Gin: https://packt.link/niS8s by Mohamed Labouardy, do check the book and you can approach me if you'll like to have a free digital copy.
Bhagirath
@bhagirathgudi
@PoojaYa01281608_twitter I did like to have a free digital copy.
Pooja Yadav
@PoojaYa01281608_twitter
Sure, let's discuss in private.
Juan Pablo Tosso
@jptosso
Hey guys, I just integrated coraza-waf (A web application firewall) with Gin, I'm not a gin user so it's hard for me to write tests. I hope someone can check my project :) https://github.com/jptosso/coraza-gin
Yordis Prieto
@yordis

Hey folks, I am fairly new into Go, and Gin. I am trying to figure out how to do the following

// I need to do this
if validate, ok := binding.Validator.Engine().(*validator.Validate); ok {
            validate.RegisterTagNameFunc(jsonTagName)
        }

But I would like to do it at the router level

router := gin.New()
// can I do the binding validator thingy using `router` somehow?
Basically, how to remove that binding.Validator singleton setup
Devil
@nikitamirzani323
hey
Jeroen Bulters
@bulters
Hi all! Looking for a way to use ShouldBind with embedded structs. Basically trying to bind a form posted field "Config.Name" to the Name field in the embedded Config struct.
Any "prior art"? ;-)
romantic艾克
@1sunzichen
hello
PatchTheCode
@patchthecode
anyone there?
i cant clone
go get -u github.com/gin-gonic/gin
# cd .; git clone -- https://gopkg.in/yaml.v2 /Users/jt/golib/src/gopkg.in/yaml.v2
Cloning into '/Users/jt/golib/src/gopkg.in/yaml.v2'...
fatal: unable to access 'https://gopkg.in/yaml.v2/': SSL certificate problem: certificate has expired
package gopkg.in/yaml.v2: exit status 128
PRANEETH RAVI
@hinu007
Hello devs! I would like to you to help me out with your opinions. Me & my team have a interesting social networking project on the table. We would like to build it using Go lang. How much do you recommend Gin Gonic for such a project? I'm just doing research on the best possible Go lang frameworks.
2 replies
Ghost
@ghost~5fb8109cd73408ce4ff490bf
How can I make a middleware that modifies after next call the headers like?
func ResponseTimeMiddleware(c *gin.Context) {
    startTime := GetUnixTime()
    c.Next()
    c.Request.Header.Add("x-response-time", strconv.FormatInt(GetUnixTime()-startTime, 10))
}
daz
@bigg-daz
I might be an idiot.
But running go get github.com/gin-contrib/sessions is returning ../../go/pkg/mod/github.com/gin-contrib/sessions@v0.0.4/session_options_go1.10.go:1:1: expected 'package', found 'EOF'
Any ideas?
Danny Lai
@XDanny322

Hi

I am writing a simple API with gin. routes / request / response all good. Now, i am trying to add some debugs into the route. I know i can log.Print() the messages, but with that, i will not have the context (request id, request body / method etc). I tried looking up a logger middleware that can accept any debug message (log.Print("Working on request" + param.Request.Body)).. but i can't seem to find any. All that said, question: How i can print debug message within a route, such that it has the context, and any debug messages i left in the route? Any example would be great!

Thanks

Youwei Li
@cstopdown
Hi , I'm new to learn and use Gin, could someone tell me how Gin handles high concurrency, by creating a new gouroutine when processing a new requests?
Stanislav Ochotnický
@sochotnicky
I think I found a bug/weird behaviour wrt caching and StaticFS when using embed - as far as I can tell due to way embed doesn't really provide modified time of files. I wonder if anyone can confirm or I am just confused :-)
Stanislav Ochotnický
@sochotnicky
re staticFS & embed caching mentioned yesterday - I did end up finding a golang bug that basically addresses that - golang/go#44854
Giovanni Almeida
@gioalmeida-ml
Hello! How can I contact any repository owner?
Danny Hermes
@dhermes
Is there any way to get code review on gin-gonic/gin#3054 ?
Dikdik Tasdik Laksana
@dikdiktasdik
hi
Abdul Saqib
@asaqib27
Could anyone please help me to get this point?
What is the use of this package: ginS
SolindekDev
@SolindekDev
How can I get body of post request in JSON?
Richard
@qloog
@SolindekDev use c.BindJSON func to bind to request struct
Kamis bin Bintang
@kamisdev93:matrix.org
[m]
Hello! Excellent Developers! I've just experienced with Gin-Gonic framework. I'm now looking for projects for hands-on practice. Please contact me and give me projects if you have any.
WERCK Ayrton
@Athosone
Hi !
I am looking to use gin to build our next restful API, however our company enforce media type versioning and I did not find a way to route request based on header content without changing the URL
Do you if that's something possible?
matt
@imattdu
this is good