helper thing

This commit is contained in:
idk
2022-11-16 17:21:21 -05:00
parent e1cdd9749f
commit c5be36ab4e
9 changed files with 7877 additions and 10 deletions

7330
LICENSE Normal file

File diff suppressed because it is too large Load Diff

42
get.go
View File

@ -35,6 +35,11 @@ import (
"golang.org/x/net/proxy"
)
//go:embed tor-browser/TPO-signing-key.pub
//go:embed tor-browser/NOT-TPO-signing-key.pub
//go:embed LICENSE
var content embed.FS
// WORKING_DIR is the working directory for the application.
var WORKING_DIR = ""
@ -108,16 +113,8 @@ type TBDownloader struct {
listener net.Listener
}
// OS is the operating system of the TBDownloader.
var OS = "linux"
// ARCH is the architecture of the TBDownloader.
var ARCH = "64"
// NewTBDownloader returns a new TBDownloader with the given language, using the TBDownloader's OS/ARCH pair
func NewTBDownloader(lang string, os, arch string, content *embed.FS) *TBDownloader {
OS = os
ARCH = arch
return &TBDownloader{
Lang: lang,
DownloadPath: DOWNLOAD_PATH(),
@ -969,3 +966,32 @@ func MirrorIsI2P(mirror string) bool {
return strings.Contains(url.Hostname(), ".i2p")
}
func OS() string {
switch runtime.GOOS {
case "darwin":
return "osx"
case "linux":
return "linux"
case "windows":
return "win"
default:
return "unknown"
}
}
func ARCH() string {
switch runtime.GOARCH {
case "386":
return "32"
case "amd64":
return "64"
case "arm64":
if OS() == "osx" {
return "64"
}
return ""
default:
return "unknown"
}
}

View File

@ -21,8 +21,6 @@ type FFDownloader TBDownloader
// NewFirefoxDownloader returns a new FFDownloader with the given language, using the FFDownloader's OS/ARCH pair
func NewFirefoxDownloader(lang string, os, arch string, content *embed.FS) *FFDownloader {
OS = os
ARCH = arch
return &FFDownloader{
Lang: lang,
DownloadPath: DOWNLOAD_FIREFOX_PATH(),

76
helper/helper.go Normal file
View File

@ -0,0 +1,76 @@
package tbget
import (
"fmt"
"log"
"os"
"os/exec"
tbget "i2pgit.org/idk/tb-downloader"
)
func getenv(v, d string) string {
m := os.Getenv("TOR_MIRROR")
if m == "" {
return d
}
return m
}
func getenvbool(v, d string) bool {
m := getenv(v, d)
switch m {
case "true":
return true
case "TRUE":
return true
case "True":
return true
case "t":
return true
case "T":
return true
case "YES":
return true
case "Yes":
return true
case "yes":
return true
case "y":
return true
default:
return false
}
}
var TOR_MIRROR = getenv("TOR_MIRROR", "https://dist.torproject.org/torbrowser/")
var TOR_DOWNLOADER_VERBOSE = getenvbool("TOR_DOWNLOADER_VERBOSE", "false")
var TOR_NO_UNPACK = getenvbool("TOR_NO_UNPACK", "false")
func DownloadVerifyUnpackTorBrowser(Directory string) (*exec.Cmd, error) {
lang := tbget.DefaultIETFLang
os := tbget.OS()
arch := tbget.ARCH()
tbdownloader := tbget.NewTBDownloader(lang, os, arch, nil)
tbdownloader.DownloadPath = Directory
tbdownloader.Mirror = TOR_MIRROR
tbdownloader.Verbose = TOR_DOWNLOADER_VERBOSE
tbdownloader.NoUnpack = TOR_NO_UNPACK
tbdownloader.MakeTBDirectory()
tgz, sig, _, err := tbdownloader.DownloadUpdaterForLang(lang)
if err != nil {
return nil, err
}
//var home string
if _, err := tbdownloader.CheckSignature(tgz, sig); err != nil {
log.Fatal(err)
} else {
out, err := tbdownloader.UnpackUpdater(tgz)
if err != nil {
return nil, fmt.Errorf("unpacking updater: %v", err)
}
log.Printf("Signature check passed: %s %s", tgz, sig)
log.Printf("output is: %s", out)
}
return nil, err
}

10
helper/helper_test.go Normal file
View File

@ -0,0 +1,10 @@
package tbget
import "testing"
func TestXxx(t *testing.T) {
_, err := DownloadVerifyUnpackTorBrowser(".")
if err != nil {
t.Fatal(err)
}
}

14
tbget/main.go Normal file
View File

@ -0,0 +1,14 @@
package main
import (
"log"
tbget "i2pgit.org/idk/tb-downloader/helper"
)
func main() {
_, err := tbget.DownloadVerifyUnpackTorBrowser(".")
if err != nil {
log.Fatalln(err)
}
}

BIN
tbget/tbget Executable file

Binary file not shown.

View File

@ -0,0 +1,21 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEYLy7zxYJKwYBBAHaRw8BAQdA5PXKfnbxV/lViTGAgW34jh2jVahatLnFgKpU
i1aZVqW0HkhlaWtraSBMaW5kaG9sbSA8aG9saW5AaWtpLmZpPoiaBBMWCgBCFiEE
JPFBo7mItsNQuTdYavFdHkX9zskFAmC8u88CGwEFCQWjmoAFCwkIBwIDIgIBBhUK
CQgLAgQWAgMBAh4HAheAAAoJEGrxXR5F/c7Jp7gBAL8vm5jf36L+SL2+MsiX6pYi
uVvEMs0Fqns5UmH+eO9CAP9sTv4e1XUSG3kcNPxDHNhb390EALIKJOafuzIUFOkt
AbgzBGC8vBMWCSsGAQQB2kcPAQEHQHkjBFnRo4dXVzwJ0PTECXGk2no5CMTXwqWc
XNmrDlfFiPUEGBYKACYWIQQk8UGjuYi2w1C5N1hq8V0eRf3OyQUCYLy8EwIbAgUJ
AeEzgACBCRBq8V0eRf3OyXYgBBkWCgAdFiEEnQ+3JDWrYv30FZVUWJDtuAD3xT0F
AmC8vBMACgkQWJDtuAD3xT1KHQEAp6gkZRQYzLLCEnFDronvnGgPRMgfnzs3eCFW
x843EJoA/RWbZQeuv2tgh7pUYJk5Kzoi6PCklnw2DWuhJST9QPYMxbUBAJeTn5+q
fMa1fGLF6rcr1yvf2cO0u5ow45Tft0+jxjMNAQDlp0YaC4vF0dJF8QyWMAwgNbms
OfPns7bfiACf4DnrB7g4BGC8vFISCisGAQQBl1UBBQEBB0BZCKDIGp38Qw2HtRXj
iZcIrNUjZRKo7QuMcdZy+/gzWgMBCAeIfgQYFgoAJhYhBCTxQaO5iLbDULk3WGrx
XR5F/c7JBQJgvLxSAhsMBQkFo5qAAAoJEGrxXR5F/c7Jw8EBAMlDEXhUjZFnuwPy
hMSepnihBjoHZnmoI4EdcD40iYoLAQD9FSwq0k5Zs9rQ8U3zyif72YUS89lXoU6N
Y7OFUzKJAw==
=kH4r
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,392 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290
Comment: Tor Browser Developers (signing key) <torbrowser@torpro
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
=Ougn
-----END PGP PUBLIC KEY BLOCK-----