summaryrefslogtreecommitdiff
path: root/pkg/app/tor.go
diff options
context:
space:
mode:
authordavy wybiral <davy.wybiral@gmail.com>2019-07-03 16:46:59 -0500
committerGitHub <noreply@github.com>2019-07-03 16:46:59 -0500
commitd38a88be8e94873187c3b82e9b3827faa3875541 (patch)
treea50e298a413d813805617814e3a9b68e2b8ae77c /pkg/app/tor.go
parent6b8d872d680d019827cc45881186cce3f83f764a (diff)
Tor (#12)
* added tor support * change text
Diffstat (limited to 'pkg/app/tor.go')
-rw-r--r--pkg/app/tor.go44
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
+}