expose tor control port bootstrap info
This commit is contained in:
parent
9a62468915
commit
4544535ad5
|
@ -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 {
|
||||
|
|
|
@ -28,16 +28,6 @@ func NewTorManager(socksPort int, controlPort int, torPath string, torrc string)
|
|||
torManager.socksPort = socksPort
|
||||
torManager.controlPort = controlPort
|
||||
|
||||
fmt.Println("NewTorManager")
|
||||
go func() {
|
||||
fmt.Printf("Monitor\n")
|
||||
for {
|
||||
time.Sleep(1 * time.Second)
|
||||
resp, err := torManager.GetStatus()
|
||||
fmt.Println(resp, err)
|
||||
}
|
||||
}()
|
||||
|
||||
err := torManager.TestConnection()
|
||||
|
||||
if err == nil {
|
||||
|
@ -152,17 +142,27 @@ func (tm *Manager) TestConnection() error {
|
|||
return errors.New(proxyStatusMessage(proxyStatus))
|
||||
}
|
||||
|
||||
func (tm *Manager) GetStatus() ([]string, error) {
|
||||
// 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 []string{}, err
|
||||
return nil, err
|
||||
}
|
||||
defer c.Close()
|
||||
c.Request("AUTHENTICATE \"\"")
|
||||
resp, err := c.Request("GETINFO status/bootstrap-phase")
|
||||
if err != nil {
|
||||
return []string{}, err
|
||||
return nil, err
|
||||
}
|
||||
return resp.RawLines, nil
|
||||
|
||||
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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue