Merge branch 'tor-status' of dan/cwtch into master

This commit is contained in:
Sarah Jamie Lewis 2018-10-05 23:32:18 +00:00 committed by Gogs
當前提交 007c72c43c
共有 2 個文件被更改,包括 32 次插入0 次删除

查看文件

@ -31,6 +31,8 @@ type Application interface {
GetPeer(onion string) peer.CwtchPeer
ListPeers() map[string]string
GetTorStatus() (map[string]string, error)
Shutdown()
}
@ -166,6 +168,11 @@ func (app *application) GetPeer(onion string) peer.CwtchPeer {
return nil
}
// GetTorStatus returns tor control port bootstrap-phase status info in a map
func (app *application) GetTorStatus() (map[string]string, error) {
return app.torManager.GetStatus()
}
// Shutdown shutsdown all peers of an app and then the tormanager
func (app *application) Shutdown() {
for _, peer := range app.peers {

查看文件

@ -141,3 +141,28 @@ func (tm *Manager) TestConnection() error {
}
return errors.New(proxyStatusMessage(proxyStatus))
}
// GetStatus returns tor control port bootstrap-phase status info in a map
func (tm *Manager) GetStatus() (map[string]string, error) {
controlAddress := fmt.Sprintf("127.0.0.1:%d", tm.controlPort)
c, err := bulb.Dial("tcp4", controlAddress)
if err != nil {
return nil, err
}
defer c.Close()
c.Request("AUTHENTICATE \"\"")
resp, err := c.Request("GETINFO status/bootstrap-phase")
if err != nil {
return nil, err
}
lines := strings.SplitN(resp.RawLines[0], " ", 5)
var resps = make(map[string]string)
for _, l := range lines {
kv := strings.Split(l, "=")
if len(kv) == 2 {
resps[kv[0]] = kv[1]
}
}
return resps, nil
}