diff options
| author | Christine Dodrill <me@christine.website> | 2019-11-28 18:05:08 +0000 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-11-28 18:24:54 +0000 |
| commit | 2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd (patch) | |
| tree | 2b3e8962433ba347d1b3e527ea9ab405ba73c0d4 /internal | |
| parent | e49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045 (diff) | |
| download | x-2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd.tar.xz x-2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd.zip | |
cmd/la-baujmi: fix tests
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/tor/tor.go | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/internal/tor/tor.go b/internal/tor/tor.go deleted file mode 100644 index a7ad373..0000000 --- a/internal/tor/tor.go +++ /dev/null @@ -1,88 +0,0 @@ -// Package tor manages and automates starting a child tor process for exposing TCP services into onionland. -package tor - -import ( - "crypto/rsa" - "fmt" - "log" - "strconv" - "time" - - "github.com/Yawning/bulb" - "github.com/phayes/freeport" - "github.com/sycamoreone/orc/tor" -) - -// Config is a wrapper struct for tor configuration. -type Config struct { - DataDir string - HashedControlPassword string - ClearPassword string - Timeout time.Duration -} - -// StartTor starts a new instance of tor or doesn't with the reason why. -func StartTor(cfg Config) (*Tor, error) { - tc := tor.NewConfig() - tc.Set("DataDirectory", cfg.DataDir) - tc.Set("HashedControlPassword", cfg.HashedControlPassword) - tc.Set("SocksPort", "0") - - port, err := freeport.GetFreePort() - if err != nil { - return nil, err - } - - tc.Set("ControlPort", fmt.Sprint(port)) - - tc.Timeout = cfg.Timeout - - tcmd, err := tor.NewCmd(tc) - if err != nil { - return nil, err - } - - err = tcmd.Start() - if err != nil { - return nil, err - } - - log.Println("tor started, sleeping for a few seconds for it to settle...") - time.Sleep(5 * time.Second) - - bc, err := bulb.Dial("tcp", "127.0.0.1:"+strconv.Itoa(port)) - if err != nil { - return nil, err - } - - err = bc.Authenticate(cfg.ClearPassword) - if err != nil { - return nil, err - } - - t := &Tor{ - tc: tc, - tcmd: tcmd, - bc: bc, - } - - return t, nil -} - -// Tor is a higher level wrapper to a child tor process -type Tor struct { - tc *tor.Config - tcmd *tor.Cmd - bc *bulb.Conn -} - -// AddOnion adds an onion service to this machine with the given private key -// (can be nil for an auto-generated key), virtual onion port and TCP destunation. -func (t *Tor) AddOnion(pKey *rsa.PrivateKey, virtPort uint16, destination string) (*bulb.OnionInfo, error) { - return t.bc.AddOnion([]bulb.OnionPortSpec{ - { - VirtPort: virtPort, - Target: destination, - }, - }, pKey, true) -} |
