This repository has been archived on 2019-09-10. You can view files and clone it, but cannot push or open issues or pull requests.
asaur/cmd_getinfo.go

46 lines
1.1 KiB
Go

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
}