getinfo support for status/bootstrap-phase
This commit is contained in:
parent
cafd7dad87
commit
51709637a2
|
@ -0,0 +1,45 @@
|
||||||
|
package asaur
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetStatus returns tor control port info (ex: "status/bootstrap-phase")
|
||||||
|
func (c *Conn) GetInfo(arg string) ([]string, error) {
|
||||||
|
cmd := fmt.Sprintf("GETINFO %v", arg)
|
||||||
|
resp, err := c.Request(cmd)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return resp.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetInfo(torControlAddress string, torControlSocketType string, authentication string, arg string) ([]string, error) {
|
||||||
|
c, err := Dial(torControlSocketType, torControlAddress)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer c.Close()
|
||||||
|
|
||||||
|
if err := c.Authenticate(authentication); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return c.GetInfo(arg)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseBootstrapPhase(data []string) map[string]string {
|
||||||
|
// TODO: Fix "5" which is status/bootstrap-phase specific hack to avoid "" parsing
|
||||||
|
lines := strings.SplitN(data[0], " ", 5)
|
||||||
|
var resps = make(map[string]string)
|
||||||
|
for _, l := range lines {
|
||||||
|
kv := strings.Split(l, "=")
|
||||||
|
if len(kv) == 2 {
|
||||||
|
kv[1] = strings.TrimPrefix(kv[1], "\"")
|
||||||
|
kv[1] = strings.TrimSuffix(kv[1], "\"")
|
||||||
|
resps[kv[0]] = kv[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resps
|
||||||
|
}
|
Reference in New Issue