无标题文章

package main

import (
"log"
"os"

"github.com/troian/surgemq"
"github.com/troian/surgemq/auth"
"github.com/troian/surgemq/persistence/types"
"github.com/troian/surgemq/transport"

)

type anonymousAuth struct {
}

func (a anonymousAuth) Password(user, password string) auth.Status {

return auth.StatusAllow

}

func (a anonymousAuth) ACL(clientID, user, topic string, access auth.AccessType) auth.Status {
return auth.StatusAllow
}

func main() {

var err error
var srv surgemq.Server
ia := anonymousAuth{}

serverConfig := surgemq.NewServerConfig()
serverConfig.Authenticators = "internal"
if err = auth.Register("internal", ia); err != nil {
    log.Printf("Couldn't register *internal* auth provider %s", err)
    os.Exit(1)
}

serverConfig.Persistence = &persistenceTypes.MemConfig{}
srv, err = surgemq.NewServer(serverConfig)
if err != nil {
    log.Printf("Couldn't create server %s", err)
    os.Exit(1)
}

var authMng *auth.Manager

if authMng, err = auth.NewManager("internal"); err != nil {
    log.Printf("Couldn't register *amqp* auth provider %s", err)
    return
}

config := transport.NewConfigTCP(
    &transport.Config{
        Port:        1883,
        AuthManager: authMng,
    })
if err = srv.ListenAndServe(config); err != nil {
    log.Printf("Couldn't start listener %s", err)
}
select {

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 680评论 0 0
  • jHipster - 微服务搭建 CC_简书[https://www.jianshu.com/u/be0d56c4...
    quanjj阅读 848评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,107评论 19 139
  • 四月的北京,刘家的四合院,我在把小男人的行李打包,有时候我感觉自己笨手笨脚的! 17岁的那年,我和他相识在一家印刷...
    尚物智阅读 252评论 1 3
  • 这个过程,其实与执行过程是同进同退,同时进行的。 我们有了目标,定了计划,展开了执行,但是实施的效果如何,是不是都...
    旭积博发阅读 4,009评论 0 3