Add launcher 'API'

This commit is contained in:
idk
2022-01-22 01:09:18 -05:00
parent d78cdacfbd
commit 7ca1ace12d
2 changed files with 93 additions and 40 deletions

View File

@ -40,23 +40,33 @@ func NewClient(hostname string, lang string, os string, arch string) (*Client, e
func (m *Client) ServeHTTP(rw http.ResponseWriter, rq *http.Request) {
path := rq.URL.Path
log.Printf("ServeHTTP: '%s'", path)
switch path {
case "/start-tor-browser":
m.TBS.RunTBWithLang()
case "/start-i2p-browser":
m.TBS.RunI2PBWithLang()
case "/launch-tor-browser":
log.Println("Starting Tor Browser")
go m.TBS.RunTBWithLang()
http.Redirect(rw, rq, "/", http.StatusFound)
case "/launch-i2p-browser":
log.Println("Starting I2P Browser")
go m.TBS.RunI2PBWithLang()
http.Redirect(rw, rq, "/", http.StatusFound)
case "/start-tor":
m.TBS.RunTorWithLang()
log.Println("Starting Tor")
go m.TBS.RunTorWithLang()
http.Redirect(rw, rq, "/", http.StatusFound)
case "/stop-tor":
m.TBS.StopTor()
log.Println("Stopping Tor")
go m.TBS.StopTor()
http.Redirect(rw, rq, "/", http.StatusFound)
default:
b, e := m.Page()
if e != nil {
fmt.Fprintf(rw, "Error: %s", e)
log.Printf("Serve Error: %s", e)
}
//rw.WriteHeader("Content-Type", "text/html")
rw.Header().Set("Content-Type", "text/html")
rw.Write([]byte(b))
}
rw.Write([]byte("Hello, world!"))
}
func (m *Client) Serve() error {

View File

@ -21,7 +21,9 @@ var (
type Supervisor struct {
UnpackPath string
Lang string
cmd *exec.Cmd
torcmd *exec.Cmd
tbcmd *exec.Cmd
ibcmd *exec.Cmd
}
func (s *Supervisor) TBPath() string {
@ -50,6 +52,16 @@ func (s *Supervisor) I2PDataPath() string {
//}
}
func (s *Supervisor) tbbail() error {
if s.tbcmd != nil && s.tbcmd.Process != nil && s.tbcmd.ProcessState != nil {
if s.tbcmd.ProcessState.Exited() {
return nil
}
return fmt.Errorf("Already running")
}
return nil
}
func (s *Supervisor) RunTBWithLang() error {
tbget.ARCH = ARCH
if s.Lang == "" {
@ -59,33 +71,47 @@ func (s *Supervisor) RunTBWithLang() error {
s.UnpackPath = UNPACK_URL
}
if s.tbbail() != nil {
return nil
}
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
switch OS {
case "linux":
if tbget.FileExists(s.UnpackPath) {
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
s.cmd = exec.Command(s.TBPath())
s.cmd.Stdout = os.Stdout
s.cmd.Stderr = os.Stderr
return s.cmd.Run()
s.tbcmd = exec.Command(s.TBPath())
s.tbcmd.Stdout = os.Stdout
s.tbcmd.Stderr = os.Stderr
return s.tbcmd.Run()
} else {
log.Println("tor browser not found at", s.TBPath())
return fmt.Errorf("tor browser not found at %s", s.TBPath())
}
case "darwin":
s.cmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
s.cmd.Dir = s.TBDirectory()
return s.cmd.Run()
s.tbcmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
s.tbcmd.Dir = s.TBDirectory()
return s.tbcmd.Run()
case "windows":
s.cmd = exec.Command("cmd", "/c", "start", "\""+s.TBDirectory()+"\"", "\"Tor Browser.exe\"")
s.cmd.Dir = s.TBDirectory()
return s.cmd.Run()
s.tbcmd = exec.Command("cmd", "/c", "start", "\""+s.TBDirectory()+"\"", "\"Tor Browser.exe\"")
s.tbcmd.Dir = s.TBDirectory()
return s.tbcmd.Run()
default:
}
return nil
}
func (s *Supervisor) ibbail() error {
if s.ibcmd != nil && s.ibcmd.Process != nil && s.ibcmd.ProcessState != nil {
if s.ibcmd.ProcessState.Exited() {
return nil
}
return fmt.Errorf("Already running")
}
return nil
}
func (s *Supervisor) RunI2PBWithLang() error {
tbget.ARCH = ARCH
if s.Lang == "" {
@ -95,33 +121,47 @@ func (s *Supervisor) RunI2PBWithLang() error {
s.UnpackPath = UNPACK_URL
}
if s.ibbail() != nil {
return nil
}
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
switch OS {
case "linux":
if tbget.FileExists(s.UnpackPath) {
log.Println("running Tor browser with lang and I2P Profile", s.Lang, s.UnpackPath, s.FirefoxPath(), "--profile", s.I2PDataPath())
s.cmd = exec.Command(s.FirefoxPath(), "--profile", s.I2PDataPath())
s.cmd.Stdout = os.Stdout
s.cmd.Stderr = os.Stderr
return s.cmd.Run()
s.ibcmd = exec.Command(s.FirefoxPath(), "--profile", s.I2PDataPath())
s.ibcmd.Stdout = os.Stdout
s.ibcmd.Stderr = os.Stderr
return s.ibcmd.Run()
} else {
log.Println("tor browser not found at", s.FirefoxPath())
return fmt.Errorf("tor browser not found at %s", s.FirefoxPath())
}
case "darwin":
s.cmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
s.cmd.Dir = s.TBDirectory()
return s.cmd.Run()
s.ibcmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
s.ibcmd.Dir = s.TBDirectory()
return s.ibcmd.Run()
case "windows":
s.cmd = exec.Command("cmd", "/c", "start", "\""+s.TBDirectory()+"\"", "\"Tor Browser.exe\"")
s.cmd.Dir = s.TBDirectory()
return s.cmd.Run()
s.ibcmd = exec.Command("cmd", "/c", "start", "\""+s.TBDirectory()+"\"", "\"Tor Browser.exe\"")
s.ibcmd.Dir = s.TBDirectory()
return s.ibcmd.Run()
default:
}
return nil
}
func (s *Supervisor) torbail() error {
if s.torcmd != nil && s.torcmd.Process != nil && s.torcmd.ProcessState != nil {
if s.torcmd.ProcessState.Exited() {
return nil
}
return fmt.Errorf("Already running")
}
return nil
}
func (s *Supervisor) RunTorWithLang() error {
tbget.ARCH = ARCH
if s.Lang == "" {
@ -130,28 +170,31 @@ func (s *Supervisor) RunTorWithLang() error {
if s.UnpackPath == "" {
s.UnpackPath = UNPACK_URL
}
if err := s.torbail(); err != nil {
return nil
}
log.Println("running tor with lang", s.Lang, s.UnpackPath)
switch OS {
case "linux":
if tbget.FileExists(s.UnpackPath) {
log.Println("running tor with lang", s.Lang, s.UnpackPath)
s.cmd = exec.Command(s.TorPath())
s.cmd.Stdout = os.Stdout
s.cmd.Stderr = os.Stderr
return s.cmd.Run()
s.torcmd = exec.Command(s.TorPath())
s.torcmd.Stdout = os.Stdout
s.torcmd.Stderr = os.Stderr
return s.torcmd.Run()
} else {
log.Println("tor not found at", s.TorPath())
return fmt.Errorf("tor not found at %s", s.TorPath())
}
case "darwin":
s.cmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
s.cmd.Dir = s.TBDirectory()
return s.cmd.Run()
s.torcmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
s.torcmd.Dir = s.TBDirectory()
return s.torcmd.Run()
case "windows":
s.cmd = exec.Command("cmd", "/c", "start", "\""+s.TBDirectory()+"\"", "\"Tor Browser.exe\"")
s.cmd.Dir = s.TBDirectory()
return s.cmd.Run()
s.torcmd = exec.Command("cmd", "/c", "start", "\""+s.TBDirectory()+"\"", "\"Tor Browser.exe\"")
s.torcmd.Dir = s.TBDirectory()
return s.torcmd.Run()
default:
}
@ -159,7 +202,7 @@ func (s *Supervisor) RunTorWithLang() error {
}
func (s *Supervisor) StopTor() error {
return s.cmd.Process.Kill()
return s.torcmd.Process.Kill()
}
func NewSupervisor(tbPath, lang string) *Supervisor {