Merge branch 'getinfo' of openprivacy/asaur into master

This commit is contained in:
erinn 2018-10-12 22:42:52 +00:00 committed by Gogs
commit 6dabcf5cf8
1 changed files with 45 additions and 0 deletions

45
cmd_getinfo.go Normal file
View File

@ -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
}