ngrokc 路由客户端加入http验证 服务器端加入token验证

客户端:
之前用ngrokc但是没有http验证 不敢把路由器直接暴露到外网,请教了下作者自己摸索了下修改成功。
编译教程参考: http://www.jianshu.com/p/8428949d946c
在sendmsg.cpp中修改

sprintf(str,"{\"Type\":\"ReqTunnel\",\"Payload\":{\"Protocol\":\"%s\",\"ReqId\":\"%s\",\"Hostname\": \"%s\",\"Subdomain\":\"%s\",\"HttpAuth\":\"1234:abcd\",\"RemotePort\":%d,\"authtoken\":\"%s\"}}",protocol,guid,HostName,Subdomain,RemotePort,authtoken);

注意中间的1234:abcd是我自己加的,改成自己的。

服务器端:
ngrokc的atoken相当于服务器端的User值,所以要在User上做判断。编辑ngrok/src/ngrok/server/control.go

func NewControl(ctlConn conn.Conn, authMsg *msg.Auth) {
var err error
// create the object
c := &Control{
auth: authMsg,
conn: ctlConn,
out: make(chan msg.Message),
in: make(chan msg.Message),
proxies: make(chan conn.Conn, 10),
lastPing: time.Now(),
writerShutdown: util.NewShutdown(),
readerShutdown: util.NewShutdown(),
managerShutdown: util.NewShutdown(),
shutdown: util.NewShutdown(),
}
failAuth := func(e error) {
_ = msg.WriteMsg(ctlConn, &msg.AuthResp{Error: e.Error()})
ctlConn.Close()
}

在failAuth下加入:

 if authMsg.User != "123abc" {
failAuth(fmt.Errorf("Invalid authtoken %s", authMsg.User))
return
}

123abc自行修改后,用ngrokc连接的时候把token改成一样就行。 然后编译即可。

本文章由作者:佐须之男 整理编辑,原文地址: ngrokc 路由客户端加入http验证 服务器端加入token验证
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐