diff --git a/.drone.yml b/.drone.yml index e7b7823..d94103f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -35,6 +35,7 @@ pipeline: - ./tmp/tor -f ./testing/torrc - sleep 15 - sh testing/tests.sh + - pkill -9 tor integration-tests: when: repo: openprivacy/connectivity diff --git a/testing/launch_tor_integration_test.go b/testing/launch_tor_integration_test.go index 1f52cbe..8043796 100644 --- a/testing/launch_tor_integration_test.go +++ b/testing/launch_tor_integration_test.go @@ -10,7 +10,9 @@ import ( func TestLaunchTor(t *testing.T) { log.SetLevel(log.LevelDebug) - err := tor.GenerateTorrc("examplehashedpassword", "../tmp/torrc") + // Create the tor data directory if it doesn't already exist.. + os.MkdirAll("../tmp/data/tor", 0700) + err := tor.GenerateTorrc("examplehashedpassword", "../tmp/data/tor/torrc") if err != nil { t.Fatalf("failed to create torrc file: %v", err) diff --git a/tor/torProvider.go b/tor/torProvider.go index 2f04cd5..7b90396 100644 --- a/tor/torProvider.go +++ b/tor/torProvider.go @@ -3,6 +3,7 @@ package tor import ( "context" "errors" + "fmt" "git.openprivacy.ca/openprivacy/connectivity" "git.openprivacy.ca/openprivacy/log" "github.com/cretz/bine/control" @@ -282,9 +283,16 @@ func startTor(appDirectory string, bundledTorPath string, controlPort int, authe } } log.Debugf("launching system tor\n") + + // check if the torrc file is present where expected + if _, err := os.Stat(path.Join(dataDir, "torrc")); os.IsNotExist(err) { + log.Debugf("torrc file does not exist at %v", path.Join(dataDir, "torrc")) + return nil, fmt.Errorf("torrc file does not exist at %v", path.Join(dataDir, "torrc")) + } + // if not, try running system tor if checkCmdlineTorVersion("tor") { - t, err := tor.Start(nil, &tor.StartConf{EnableNetwork: true, DataDir: dataDir, TorrcFile: "torrc", DebugWriter: nil, ProcessCreator: newHideCmd("tor")}) + t, err := tor.Start(nil, &tor.StartConf{EnableNetwork: true, DataDir: dataDir, TorrcFile: path.Join(dataDir, "torrc"), DebugWriter: nil, ProcessCreator: newHideCmd("tor")}) if err == nil { tp.t = t return tp, nil @@ -296,7 +304,7 @@ func startTor(appDirectory string, bundledTorPath string, controlPort int, authe // try running bundledTor if bundledTorPath != "" && checkCmdlineTorVersion(bundledTorPath) { log.Debugln("using bundled tor '" + bundledTorPath + "'") - t, err := tor.Start(nil, &tor.StartConf{EnableNetwork: true, DataDir: dataDir, TorrcFile: "torrc", ExePath: bundledTorPath, DebugWriter: nil, ProcessCreator: newHideCmd(bundledTorPath)}) + t, err := tor.Start(nil, &tor.StartConf{EnableNetwork: true, DataDir: dataDir, TorrcFile: path.Join(dataDir, "torrc"), ExePath: bundledTorPath, DebugWriter: nil, ProcessCreator: newHideCmd(bundledTorPath)}) if err != nil { log.Debugf("Error running bundled tor: %v\n", err) }