2022-01-16 21:23:00 -05:00
|
|
|
package tbsupervise
|
|
|
|
|
|
|
|
import (
|
2022-01-16 22:04:35 -05:00
|
|
|
"fmt"
|
|
|
|
"log"
|
2022-01-16 21:23:00 -05:00
|
|
|
"os"
|
|
|
|
"os/exec"
|
|
|
|
"path/filepath"
|
|
|
|
|
|
|
|
tbget "i2pgit.org/idk/i2p.plugins.tor-manager/get"
|
|
|
|
)
|
|
|
|
|
|
|
|
var wd, _ = os.Getwd()
|
|
|
|
|
2022-01-21 21:05:23 -05:00
|
|
|
var UNPACK_URL = tbget.UNPACK_URL
|
|
|
|
|
|
|
|
//var DEFAULT_TB_LANG = tbget.DefaultIETFLang
|
|
|
|
//var DEFAULT_TB_DIRECTORY = filepath.Join(UNPACK_URL, "tor-browser"+"_"+DEFAULT_TB_LANG)
|
|
|
|
//var DEFAULT_TB_PATH = filepath.Join(DEFAULT_TB_DIRECTORY, "Browser", "start-tor-browser")
|
2022-01-16 21:23:00 -05:00
|
|
|
|
|
|
|
var (
|
|
|
|
OS = tbget.OS
|
|
|
|
ARCH = tbget.ARCH
|
|
|
|
)
|
|
|
|
|
2022-01-21 21:05:23 -05:00
|
|
|
type Supervisor struct {
|
|
|
|
UnpackPath string
|
|
|
|
Lang string
|
|
|
|
cmd *exec.Cmd
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Supervisor) TBPath() string {
|
|
|
|
return filepath.Join(s.UnpackPath, "Browser", "start-tor-browser")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Supervisor) TorPath() string {
|
|
|
|
return filepath.Join(s.UnpackPath, "Browser", "TorBrowser", "tor")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Supervisor) TorDataPath() string {
|
|
|
|
return filepath.Join(s.UnpackPath, "Browser", "TorBrowser", "Data")
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Supervisor) RunTBWithLang() error {
|
2022-01-16 21:23:00 -05:00
|
|
|
tbget.ARCH = ARCH
|
2022-01-21 21:05:23 -05:00
|
|
|
if s.Lang == "" {
|
|
|
|
s.Lang = DEFAULT_TB_LANG
|
2022-01-16 21:23:00 -05:00
|
|
|
}
|
2022-01-21 21:05:23 -05:00
|
|
|
if s.UnpackPath == "" {
|
|
|
|
s.UnpackPath = DEFAULT_TB_PATH
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
|
2022-01-16 21:23:00 -05:00
|
|
|
switch OS {
|
|
|
|
case "linux":
|
2022-01-21 21:05:23 -05:00
|
|
|
if tbget.FileExists(s.UnpackPath) {
|
|
|
|
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
|
|
|
|
s.cmd = exec.Command(s.UnpackPath)
|
|
|
|
s.cmd.Stdout = os.Stdout
|
|
|
|
s.cmd.Stderr = os.Stderr
|
|
|
|
return s.cmd.Run()
|
2022-01-16 22:04:35 -05:00
|
|
|
} else {
|
2022-01-21 21:05:23 -05:00
|
|
|
log.Println("tor browser not found at", s.UnpackPath)
|
|
|
|
return fmt.Errorf("tor browser not found at %s", s.UnpackPath)
|
2022-01-16 22:04:35 -05:00
|
|
|
}
|
2022-01-16 21:23:00 -05:00
|
|
|
case "darwin":
|
2022-01-16 22:04:35 -05:00
|
|
|
cmd := exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
|
|
|
|
cmd.Dir = DEFAULT_TB_DIRECTORY
|
2022-01-16 21:23:00 -05:00
|
|
|
return cmd.Run()
|
|
|
|
case "windows":
|
2022-01-21 21:05:23 -05:00
|
|
|
cmd := exec.Command("cmd", "/c", "start", "\""+s.UnpackPath+"\"", "\"Tor Browser.exe\"")
|
2022-01-16 22:04:35 -05:00
|
|
|
cmd.Dir = DEFAULT_TB_DIRECTORY
|
2022-01-16 21:23:00 -05:00
|
|
|
return cmd.Run()
|
|
|
|
default:
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
2022-01-21 21:05:23 -05:00
|
|
|
|
|
|
|
func NewSupervisor(tbPath, lang string) *Supervisor {
|
|
|
|
return &Supervisor{
|
|
|
|
UnpackPath: tbPath,
|
|
|
|
Lang: lang,
|
|
|
|
}
|
|
|
|
}
|