客户端:
之前用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内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。