aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2019-11-28 18:05:08 +0000
committerChristine Dodrill <me@christine.website>2019-11-28 18:24:54 +0000
commit2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd (patch)
tree2b3e8962433ba347d1b3e527ea9ab405ba73c0d4 /internal
parente49a08c2ae2e179f8d28ae7cf84d27d2e3d9f045 (diff)
downloadx-2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd.tar.xz
x-2dfde39f006f8e6fa69d68dd72dd10d67e9b1cfd.zip
cmd/la-baujmi: fix tests
Diffstat (limited to 'internal')
-rw-r--r--internal/tor/tor.go88
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)
-}