Git Product home page Git Product logo

authconn's Introduction

authConn

auth conn

##Example

Listener

authFunc := func(authPacket *AuthPacket) (rc byte, credential auth.Credential) {
    cre := &auth.BasicCredential{}
    err := authPacket.ToCredential(cre)
    if err != nil {
    return 1, nil
    }
    if cre.Username != "john" || cre.Password != "123" {
    return 1, nil
    }
    return 0, cre
}
ln, err := Listen("tcp", ":8082", authFunc)
if err != nil {
    panic(err)
}
defer ln.Close()

for {
    conn, err := ln.Accept()
    if err != nil {
        fmt.Println(err)
        break
    }
    creConn := conn.(*ConnWithCredential)
    fmt.Println("accept", creConn.Credential.Detail())
    _ = conn.Close()
}

Dialer

conn, err := Dial("tcp", "127.0.0.1:8082", &auth.BasicCredential{
    Username: "john",
    Password: "123",
})
if err != nil {
    t.Error(err)
    return
}
_ = conn.Close()

Customer Auth Way

// AuthToken implement auth.Credential
type AuthToken struct {
	tk string
}

func (a AuthToken) Detail() map[string]string {
	return map[string]string{
		"tk": a.tk,
	}
}

func (a *AuthToken) Reset(m map[string]string) error {
	tk, ok := m["tk"]
	if !ok {
		return errors.New("not found tk")
	}
	a.tk = tk
	return nil
}

func main() {
    conn, err := Dial("tcp", "127.0.0.1:8082", &AuthToken{
        tk: "token",
    })
    if err != nil {
        fmt.Println(err)
        return
    }
    conn.Close()
}

authconn's People

Contributors

eleztian avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

zfdx123

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.