diff options
| author | davy wybiral <davy.wybiral@gmail.com> | 2019-07-03 16:46:59 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-07-03 16:46:59 -0500 |
| commit | d38a88be8e94873187c3b82e9b3827faa3875541 (patch) | |
| tree | a50e298a413d813805617814e3a9b68e2b8ae77c /pkg/app/tor.go | |
| parent | 6b8d872d680d019827cc45881186cce3f83f764a (diff) | |
Tor (#12)
* added tor support
* change text
Diffstat (limited to 'pkg/app/tor.go')
| -rw-r--r-- | pkg/app/tor.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/pkg/app/tor.go b/pkg/app/tor.go new file mode 100644 index 0000000..88f2db2 --- /dev/null +++ b/pkg/app/tor.go @@ -0,0 +1,44 @@ +package app + +import ( + "fmt" + "os" + + "github.com/wybiral/torgo" + "github.com/wybiral/tube/pkg/onionkey" +) + +type tor struct { + OnionKey onionkey.Key + Controller *torgo.Controller +} + +func newTor(ct *TorConfig) (*tor, error) { + addr := fmt.Sprintf("%s:%d", ct.Controller.Host, ct.Controller.Port) + ctrl, err := torgo.NewController(addr) + if err != nil { + return nil, err + } + if len(ct.Controller.Password) > 0 { + err = ctrl.AuthenticatePassword(ct.Controller.Password) + } else { + err = ctrl.AuthenticateCookie() + if err != nil { + err = ctrl.AuthenticateNone() + } + } + if err != nil { + return nil, err + } + key, err := onionkey.ReadFile("onion.key") + if os.IsNotExist(err) { + key = nil + } else if err != nil { + return nil, err + } + t := &tor{ + Controller: ctrl, + OnionKey: key, + } + return t, nil +} |
