commit
6dabcf5cf8
@ -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