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
|
GetPeer(onion string) peer.CwtchPeer
|
||||||
ListPeers() map[string]string
|
ListPeers() map[string]string
|
||||||
|
|
||||||
|
GetTorStatus() (map[string]string, error)
|
||||||
|
|
||||||
Shutdown()
|
Shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +168,11 @@ func (app *application) GetPeer(onion string) peer.CwtchPeer {
|
||||||
return nil
|
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
|
// Shutdown shutsdown all peers of an app and then the tormanager
|
||||||
func (app *application) Shutdown() {
|
func (app *application) Shutdown() {
|
||||||
for _, peer := range app.peers {
|
for _, peer := range app.peers {
|
||||||
|
|
|
@ -28,16 +28,6 @@ func NewTorManager(socksPort int, controlPort int, torPath string, torrc string)
|
||||||
torManager.socksPort = socksPort
|
torManager.socksPort = socksPort
|
||||||
torManager.controlPort = controlPort
|
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()
|
err := torManager.TestConnection()
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -152,17 +142,27 @@ func (tm *Manager) TestConnection() error {
|
||||||
return errors.New(proxyStatusMessage(proxyStatus))
|
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)
|
controlAddress := fmt.Sprintf("127.0.0.1:%d", tm.controlPort)
|
||||||
c, err := bulb.Dial("tcp4", controlAddress)
|
c, err := bulb.Dial("tcp4", controlAddress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return []string{}, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
c.Request("AUTHENTICATE \"\"")
|
c.Request("AUTHENTICATE \"\"")
|
||||||
resp, err := c.Request("GETINFO status/bootstrap-phase")
|
resp, err := c.Request("GETINFO status/bootstrap-phase")
|
||||||
if err != nil {
|
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