add config mode
This commit is contained in:
6
Makefile
6
Makefile
@ -141,6 +141,12 @@ index:
|
|||||||
@echo "</body>" >> index.html
|
@echo "</body>" >> index.html
|
||||||
@echo "</html>" >> index.html
|
@echo "</html>" >> index.html
|
||||||
|
|
||||||
|
tor-browser/unpack/i2p.firefox:
|
||||||
|
@echo "TODO"
|
||||||
|
|
||||||
|
tor-browser/unpack/i2p.firefox.config:
|
||||||
|
@echo "TODO"
|
||||||
|
|
||||||
refresh-tor-keys: clean-tor-keys tor-browser/TPO-signing-key.pub
|
refresh-tor-keys: clean-tor-keys tor-browser/TPO-signing-key.pub
|
||||||
|
|
||||||
tor-keys: tor-browser/TPO-signing-key.pub
|
tor-keys: tor-browser/TPO-signing-key.pub
|
||||||
|
6
main.go
6
main.go
@ -15,6 +15,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
//go:embed tor-browser/unpack/i2p.firefox/*
|
//go:embed tor-browser/unpack/i2p.firefox/*
|
||||||
|
//go:embed tor-browser/unpack/i2p.firefox.config/*
|
||||||
//go:embed tor-browser/TPO-signing-key.pub
|
//go:embed tor-browser/TPO-signing-key.pub
|
||||||
//go:embed garliconion.png
|
//go:embed garliconion.png
|
||||||
//go:embed onion.png
|
//go:embed onion.png
|
||||||
@ -51,6 +52,7 @@ var (
|
|||||||
system = flag.String("os", OS(), "OS/arch to download")
|
system = flag.String("os", OS(), "OS/arch to download")
|
||||||
arch = flag.String("arch", ARCH(), "OS/arch to download")
|
arch = flag.String("arch", ARCH(), "OS/arch to download")
|
||||||
i2pbrowser = flag.Bool("i2pbrowser", false, "Open I2P in Tor Browser")
|
i2pbrowser = flag.Bool("i2pbrowser", false, "Open I2P in Tor Browser")
|
||||||
|
i2pconfig = flag.Bool("i2pconfig", false, "Open I2P routerconsole in Tor Browser with javscript enabled and non-routerconsole sites disabled")
|
||||||
torbrowser = flag.Bool("torbrowser", false, "Open Tor Browser")
|
torbrowser = flag.Bool("torbrowser", false, "Open Tor Browser")
|
||||||
verbose = flag.Bool("verbose", false, "Verbose output")
|
verbose = flag.Bool("verbose", false, "Verbose output")
|
||||||
directory = flag.String("directory", "", "Directory operate in")
|
directory = flag.String("directory", "", "Directory operate in")
|
||||||
@ -140,8 +142,12 @@ func main() {
|
|||||||
client.Host = *host
|
client.Host = *host
|
||||||
client.Port = *port
|
client.Port = *port
|
||||||
client.TBS.Profile = &content
|
client.TBS.Profile = &content
|
||||||
|
client.TBS.PassThroughArgs = flag.Args()
|
||||||
|
// log.Fatalf("%s", client.TBS.PassThroughArgs)
|
||||||
if *i2pbrowser {
|
if *i2pbrowser {
|
||||||
client.TBS.RunI2PBWithLang()
|
client.TBS.RunI2PBWithLang()
|
||||||
|
} else if *i2pconfig {
|
||||||
|
client.TBS.RunI2PBAppWithLang()
|
||||||
} else if *torbrowser {
|
} else if *torbrowser {
|
||||||
client.TBS.RunTBWithLang()
|
client.TBS.RunTBWithLang()
|
||||||
} else {
|
} else {
|
||||||
|
@ -30,12 +30,31 @@ func ARCH() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Supervisor struct {
|
type Supervisor struct {
|
||||||
UnpackPath string
|
UnpackPath string
|
||||||
Lang string
|
Lang string
|
||||||
torcmd *exec.Cmd
|
torcmd *exec.Cmd
|
||||||
tbcmd *exec.Cmd
|
tbcmd *exec.Cmd
|
||||||
ibcmd *exec.Cmd
|
ibcmd *exec.Cmd
|
||||||
Profile *embed.FS
|
Profile *embed.FS
|
||||||
|
PassThroughArgs []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Supervisor) PTAS() []string {
|
||||||
|
// loop over the arguments and make sure that we remove any --profile, -P args
|
||||||
|
// and blank them out.
|
||||||
|
var args []string
|
||||||
|
for index, arg := range s.PassThroughArgs {
|
||||||
|
if arg == "--profile" || arg == "-P" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if index > 0 {
|
||||||
|
if s.PassThroughArgs[index-1] == "--profile" || s.PassThroughArgs[index-1] == "-P" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
args = append(args, arg)
|
||||||
|
}
|
||||||
|
return args
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Supervisor) TBPath() string {
|
func (s *Supervisor) TBPath() string {
|
||||||
@ -118,6 +137,46 @@ func (s *Supervisor) UnpackI2PData() error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Supervisor) I2PAppDataPath() string {
|
||||||
|
fp := s.I2PProfilePath()
|
||||||
|
up := filepath.Join(filepath.Dir(s.UnpackPath), "i2p.firefox.config")
|
||||||
|
if tbget.FileExists(up) {
|
||||||
|
return up
|
||||||
|
} else {
|
||||||
|
log.Printf("i2p workdir not found at %s, copying", up)
|
||||||
|
if s.Profile != nil {
|
||||||
|
if err := cp.Copy(fp, up); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return up
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Supervisor) UnpackI2PAppData() error {
|
||||||
|
return fs.WalkDir(s.Profile, ".", func(embedpath string, d fs.DirEntry, err error) error {
|
||||||
|
fp := filepath.Join(filepath.Dir(s.UnpackPath), ".i2p.firefox.config")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
fmt.Println(embedpath, filepath.Join(fp, strings.Replace(embedpath, "tor-browser/unpack/i2p.firefox.config", "", -1)))
|
||||||
|
if d.IsDir() {
|
||||||
|
os.MkdirAll(filepath.Join(fp, strings.Replace(embedpath, "tor-browser/unpack/i2p.firefox.config", "", -1)), 0755)
|
||||||
|
} else {
|
||||||
|
fullpath := path.Join(embedpath)
|
||||||
|
bytes, err := s.Profile.ReadFile(fullpath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
unpack := filepath.Join(fp, strings.Replace(embedpath, "tor-browser/unpack/i2p.firefox.config", "", -1))
|
||||||
|
if err := ioutil.WriteFile(unpack, bytes, 0644); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Supervisor) tbbail() error {
|
func (s *Supervisor) tbbail() error {
|
||||||
if s.tbcmd != nil && s.tbcmd.Process != nil && s.tbcmd.ProcessState != nil {
|
if s.tbcmd != nil && s.tbcmd.Process != nil && s.tbcmd.ProcessState != nil {
|
||||||
if s.tbcmd.ProcessState.Exited() {
|
if s.tbcmd.ProcessState.Exited() {
|
||||||
@ -146,7 +205,9 @@ func (s *Supervisor) RunTBWithLang() error {
|
|||||||
case "linux":
|
case "linux":
|
||||||
if tbget.FileExists(s.UnpackPath) {
|
if tbget.FileExists(s.UnpackPath) {
|
||||||
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
|
log.Println("running tor browser with lang", s.Lang, s.UnpackPath)
|
||||||
s.tbcmd = exec.Command(s.TBPath())
|
args := []string{}
|
||||||
|
args = append(args, s.PTAS()...)
|
||||||
|
s.tbcmd = exec.Command(s.TBPath(), args...)
|
||||||
s.tbcmd.Stdout = os.Stdout
|
s.tbcmd.Stdout = os.Stdout
|
||||||
s.tbcmd.Stderr = os.Stderr
|
s.tbcmd.Stderr = os.Stderr
|
||||||
return s.tbcmd.Run()
|
return s.tbcmd.Run()
|
||||||
@ -160,7 +221,9 @@ func (s *Supervisor) RunTBWithLang() error {
|
|||||||
return s.tbcmd.Run()
|
return s.tbcmd.Run()
|
||||||
case "win":
|
case "win":
|
||||||
log.Println("Running Windows EXE", s.TBDirectory(), "firefox.exe")
|
log.Println("Running Windows EXE", s.TBDirectory(), "firefox.exe")
|
||||||
s.tbcmd = exec.Command(filepath.Join(s.TBDirectory(), "firefox.exe"))
|
args := []string{}
|
||||||
|
args = append(args, s.PTAS()...)
|
||||||
|
s.tbcmd = exec.Command(filepath.Join(s.TBDirectory(), "firefox.exe"), args...)
|
||||||
s.tbcmd.Dir = s.TBDirectory()
|
s.tbcmd.Dir = s.TBDirectory()
|
||||||
return s.tbcmd.Run()
|
return s.tbcmd.Run()
|
||||||
default:
|
default:
|
||||||
@ -197,7 +260,9 @@ func (s *Supervisor) RunI2PBWithLang() error {
|
|||||||
case "linux":
|
case "linux":
|
||||||
if tbget.FileExists(s.UnpackPath) {
|
if tbget.FileExists(s.UnpackPath) {
|
||||||
log.Println("running Tor browser with lang and I2P Profile", s.Lang, s.UnpackPath, s.FirefoxPath(), "--profile", s.I2PDataPath())
|
log.Println("running Tor browser with lang and I2P Profile", s.Lang, s.UnpackPath, s.FirefoxPath(), "--profile", s.I2PDataPath())
|
||||||
s.ibcmd = exec.Command(s.FirefoxPath(), "--profile", s.I2PDataPath())
|
args := []string{"--profile", s.I2PDataPath()}
|
||||||
|
args = append(args, s.PTAS()...)
|
||||||
|
s.ibcmd = exec.Command(s.FirefoxPath(), args...)
|
||||||
s.ibcmd.Stdout = os.Stdout
|
s.ibcmd.Stdout = os.Stdout
|
||||||
s.ibcmd.Stderr = os.Stderr
|
s.ibcmd.Stderr = os.Stderr
|
||||||
return s.ibcmd.Run()
|
return s.ibcmd.Run()
|
||||||
@ -211,7 +276,9 @@ func (s *Supervisor) RunI2PBWithLang() error {
|
|||||||
return s.ibcmd.Run()
|
return s.ibcmd.Run()
|
||||||
case "win":
|
case "win":
|
||||||
log.Println("Running Windows EXE", filepath.Join(s.TBDirectory(), "firefox.exe"), "--profile", s.I2PDataPath())
|
log.Println("Running Windows EXE", filepath.Join(s.TBDirectory(), "firefox.exe"), "--profile", s.I2PDataPath())
|
||||||
s.ibcmd = exec.Command(filepath.Join(s.TBDirectory(), "firefox.exe"), "--profile", ".")
|
args := []string{"--profile", "."}
|
||||||
|
args = append(args, s.PTAS()...)
|
||||||
|
s.ibcmd = exec.Command(filepath.Join(s.TBDirectory(), "firefox.exe"), args...)
|
||||||
s.ibcmd.Dir = s.I2PDataPath()
|
s.ibcmd.Dir = s.I2PDataPath()
|
||||||
s.ibcmd.Stdout = os.Stdout
|
s.ibcmd.Stdout = os.Stdout
|
||||||
s.ibcmd.Stderr = os.Stderr
|
s.ibcmd.Stderr = os.Stderr
|
||||||
@ -222,6 +289,53 @@ func (s *Supervisor) RunI2PBWithLang() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Supervisor) RunI2PBAppWithLang() error {
|
||||||
|
tbget.ARCH = ARCH()
|
||||||
|
if s.Lang == "" {
|
||||||
|
s.Lang = DEFAULT_TB_LANG
|
||||||
|
}
|
||||||
|
if s.UnpackPath == "" {
|
||||||
|
s.UnpackPath = UNPACK_URL()
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.ibbail() != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("running i2p in tor browser with lang", s.Lang, s.UnpackPath, OS())
|
||||||
|
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.I2PAppDataPath())
|
||||||
|
args := []string{"--profile", s.I2PAppDataPath()}
|
||||||
|
args = append(args, s.PTAS()...)
|
||||||
|
s.ibcmd = exec.Command(s.FirefoxPath(), args...)
|
||||||
|
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.ibcmd = exec.Command("/usr/bin/env", "open", "-a", "\"Tor Browser.app\"")
|
||||||
|
s.ibcmd.Dir = s.TBDirectory()
|
||||||
|
return s.ibcmd.Run()
|
||||||
|
case "win":
|
||||||
|
log.Println("Running Windows EXE", filepath.Join(s.TBDirectory(), "firefox.exe"), "--profile", s.I2PAppDataPath())
|
||||||
|
args := []string{"--profile", "."}
|
||||||
|
args = append(args, s.PTAS()...)
|
||||||
|
s.ibcmd = exec.Command(filepath.Join(s.TBDirectory(), "firefox.exe"), args...)
|
||||||
|
s.ibcmd.Dir = s.I2PAppDataPath()
|
||||||
|
s.ibcmd.Stdout = os.Stdout
|
||||||
|
s.ibcmd.Stderr = os.Stderr
|
||||||
|
return s.ibcmd.Run()
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Supervisor) torbail() error {
|
func (s *Supervisor) torbail() error {
|
||||||
_, err := net.Listen("tcp", "127.0.0.1:9050")
|
_, err := net.Listen("tcp", "127.0.0.1:9050")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Reference in New Issue
Block a user