Coder Social home page Coder Social logo

eyedeekay / i2p.plugins.tor-manager Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 1.0 32.73 MB

Cross-platform Tor Browser and Tor Service Manager/Updater intended mostly for I2P.

License: Other

Makefile 0.32% Go 7.22% HTML 91.34% Shell 0.09% JavaScript 0.51% CSS 0.47% Batchfile 0.02% Dockerfile 0.04%
tor i2p tor-browser i2p-plugins i2pd

i2p.plugins.tor-manager's Introduction

i2p.plugins.tor-updater

A Tor package updater and runner as an I2P Plugin. This plugin is usable on Windows, Linux, and OSX, as is the freestanding binary. This also functions as a freestanding update for the Tor Browser Bundle and is capable of configuring Tor Browser from the terminal and updating it without running it, should the user choose to operate this way.

This project explicitly views I2P and Tor as complementary privacy tools and explores good ways of combining them in a user-facing tool. It is especially useful when combined with a SOCKS Outproxy plugin like the one written by zzz. You can obtain it within I2P: http://zzz.i2p/topics/3219

Usage:

See Usage for command-line usage. When used from the Terminal, it acts as a cross-platform Tor Browser installer and wrapper, which adds non-Tor specific options.

HTML version

Plugin:

Clearnet visitor? You'll need to use the Github Releases Mirror.

Status:

Screenshot 2

Linux: Usable, everything implemented works. Windows: Usable, everything implemented works. OSX: Usable, everything implemented works.

Other systems are not targeted and should use a Tor binary built from source, provided by TPO or, their prefered package management system and not this plugin. The plugin will not start a Tor instance if a SOCKS proxy is open on port 9050.

Screenshot

Primary Goals(Done):

  1. Ship known-good public keys, download a current Tor for the platform in the background, authenticate it, and launch it only if necessary.
  • Works on Windows, Linux, OSX
  1. Supervise Tor as a ShellService plugin to I2P
  • Works on Linux, Windows, OSX
  1. Keep Tor up-to-date
  • Works on Windows, Linux, OSX
  1. Work as an I2P Plugin OR as a freestanding app to be compatible with all I2P distributions
  • Works on Linux, Windows, OSX
  1. Download Tor Browser from an in-I2P mirror(or one of a network of in-I2P mirrors)
  • Works on Linux, Windows, OSX

Secondary Goals(Also done):

  1. Launch Tor Browser
  • Works on Linux, Windows, OSX
  1. Configure and launch Tor browser for use with I2P
  • Works on Linux, Windows, OSX

Optional Features I might add if there is interest(Not much stopping me...):

  1. Mirror the files which it downloads to an I2P Site
  • Works on Windows, Linux, OSX
  1. Mirror the files which it downloads to I2P torrents
  • Works on Windows and Linux, might work on OSX but unsure.
  1. Set up an onion site which announces an I2P mirror exists
  • Works on Windows, Linux, OSX
  1. Use Bittorrent-over-I2P to download the Tor Browser software
  • Worksish. Still a little janky. Usable on any platform if you're a little patient.
  1. Embed jpackaged I2P routers and manage them internally
  • Works on Windows and Linux. Can be done on OSX but needs to be different. AMD64 only.
  1. Encrypt the "Working directory" with all the plugin data using a password.
  • Works on Windows, Linux, and OSX.
  1. Use a transparently encrypted filesystem to interact with the host system.
  • Not done.
  1. Option to use BRB in a thread as an in-I2P replacement for mibbit IRC client.
  • Works on Windows, Linux, OSX

Usage as a Library

More information at the GoDoc

This is also useful as a library for downloading a Tor Browser Bundle. This API isn't really stable, more "stabilizing." Feel free to use it, but it may still change a little.

To create a new instance, use:

client, err = tbserve.NewClient(*verbose, *lang, *system, *arch, &content)

Customize the client using the exposed variables and methods:

client.Host = *host
client.Port = *port
client.TBS.Profile = &content
client.TBS.PassThroughArgs = flag.Args()

And serve the controller:

if err := client.Serve(); err != nil {
  log.Fatal(err)
}

Similar Projects:

Why this is Better than those projects(A.K.A Why didn't you just use...)

i2p.plugins.tor-manager is in many ways a clone of Tor Browser Launcher by Micah Lee, it reproduces all of TBL's functionality for downloading, verifying, and running Tor Browser. In particular Micah's project deserves credit for the AppArmor profiles, which were used in the apparmor profile generator functionality and will probably continue to be the upstream example which I use in my code. Micah's also already got a PPA, a FlatPak, a Snap, an .rpm and a bunch of other stuff that provides, through packaging, a better way to deal with updates to his software and a better way to deal with the supply chain for many users. There is no reason that i2p.plugins.tor-manager cannot do this, in fact it's easier for us than it is for Micah, but this project is about a month and a half old and his is several years old. I haven't done a bunch of packages yet.

Improvements on Tor Browser Launcher include:

  • Does not require GPG to be in the $PATH or on the system at all
  • Capable of managing a long-running Tor service without also running the Tor Browser
  • Works everywhere Tor Browser does, not just Linux. Including: Linux, Mac, Windows, AMD64, X86, and M1
  • Embeds all required resources into a single binary which unpacks itself to a directory of the user's choice. Never touches any other directory(in ~/.cache or ~/.local, etc), unless specifically instructed to.
  • Easy to package by placing a single static binary into a boilerplate package.
  • Automatically generate an AppArmor profile which works for custom installation directory
  • Accepts a custom profile argument without interfering with normal Tor Browser functionality.
  • Bundles a "Extra" profiles for I2P browsing, non-Anonymous browsing, and offline/localhost-only browsing.
  • Automatically organize multiple Tor Browser profiles for different networks(I2P, Clearnet) and discourage accidental mixing.
  • Optional TAILS mode, adds uBlock Origin to Tor Browser
  • Embeds an I2P router in case the host system doesn't have an I2P router
  • Encrypt the working directory automatically when it's not in use.
  • No python. Language wars are stupid, but so is python.

Things Tor Browser Launcher does that this does not(yet):

  • Micah went to far greater effort to assure that TPO's HTTPS certificate was authentic and avoid the Certificate Authority/PKI system. As a result, CA's are untrusted entities when downloading from the default Tor Project site. This is probably a pretty good idea.
  • This application does not offer a choice of downloading Tor Browser over the clearnet if there is literally any other option available to it. This is roughly equivalent to downloading Tor Browser over system Tor being always on in Tor Browser Launcher.
  • This application does not play dial-up noises.

tb-updater is generally only useful on Linux systems and especially Debian-based systems, and only recieves serious testing within the Whonix system itself. It's a highly specialized tool in some ways, depending on packages which must be installed and repositories which must be configured. For their purposes, this is probably a good thing, Whonix's raison d'etre is to carefully configure every aspect of their system to be as anonymous and secure as possible, and their approach deals with supply-chain issues which i2p.plugins.tor-manager can only deal with in packaging and not by adding features to the launcher itself. Therefore, while most of the improvements on Tor Browser Launcher also apply to TB-Updater, the i2p.plugins.tor-manager and tb-launcher are actually less directly comparable.

Garlic icons created by Icongeek26 - Flaticon Onion icons created by Freepik - Flaticon Search icons created by Freepik - Flaticon Offline icons created by Flat Icons - Flaticon

More Screenshots:

  • Screenshot
  • Screenshot

i2p.plugins.tor-manager's People

Contributors

eyedeekay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

vaginessa

i2p.plugins.tor-manager's Issues

Tried to build i2p.plugins.tor-manager 0.0.14

Tried to build i2p.plugins.tor-manager 0.0.14

What i got so far:

cloned go-I2P-jpackage, i2p.plugins.tor-manager
into ~/go/src/github.com/eyedeekay/

In go-I2P-jpackage
go generate
go build

Works no errors
Didn't do:
finally, add a "replace" directive which refers to the local checkout of go-I2P-jpackage to your go.mod file
because i didn't know what to do :)

In i2p.plugins.tor-manager
make build

and got the binary i2p.plugins.tor-manager-linux-amd64
no errors occured.

So far, so good.
executed...

./i2p.plugins.tor-manager-linux-amd64 -i2pbrowser
:47:57 /home/i2pbrowser/.i2p
:47:57 /home/i2pbrowser/i2p/i2prouter
:47:57 /home/i2pbrowser/Library/Application Support/i2p/clients.config
:47:57 Waiting for HTTP Proxy 10 remaining attempts
:48:01 Waiting for HTTP Proxy 9 remaining attempts
:48:05 Waiting for HTTP Proxy 8 remaining attempts
:48:09 Waiting for HTTP Proxy 7 remaining attempts
:48:13 Waiting for HTTP Proxy 6 remaining attempts
:48:17 Waiting for HTTP Proxy 5 remaining attempts
:48:21 Waiting for HTTP Proxy 4 remaining attempts
:48:25 Waiting for HTTP Proxy 3 remaining attempts
:48:29 Waiting for HTTP Proxy 2 remaining attempts
:48:33 Waiting for HTTP Proxy 1 remaining attempts
Using clearnet mirror :55:33 Password dialog canceled
:55:33 Checking if aus1.torproject.org is an I2P hostname
panic: interface conversion: interface {} is nil, not map[string]interface {}

goroutine 1 [running, locked to thread]:
i2pgit.org/idk/i2p.plugins.tor-manager/get.GetTorBrowserVersionFromUpdateURL()
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/get/torrent.go:236 +0x585
i2pgit.org/idk/i2p.plugins.tor-manager/get.TorrentDownloaded({0xc00044c113?, 0x12e44e9?}, {0xc00044c118, 0x7})
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/get/torrent.go:261 +0x65
main.init()
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/main.go:139 +0x83a

I think that is more than i got the last time. Irc the problem the last time was, that i got an empty tar, which should be in the executable.
But i thought it has now an integrated i2prouter implemented in go. The path /home/i2pbrowser/i2p/i2prouter does not exists.

I fired up the java i2prouter to see, if this could complement the execution process...
Gave it a minute to establish...
and tried again...

goroutine 1 [running, locked to thread]:
i2pgit.org/idk/i2p.plugins.tor-manager/get.GetTorBrowserVersionFromUpdateURL()
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/get/torrent.go:236 +0x585
i2pgit.org/idk/i2p.plugins.tor-manager/get.TorrentDownloaded({0xc000498508?, 0x5?}, {0xc000498550, 0x7})
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/get/torrent.go:261 +0x65
i2pgit.org/idk/i2p.plugins.tor-manager/get.Torrent({0xc000498508, 0x5}, {0xc000498550, 0x7})
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/get/torrent.go:321 +0x4c
main.Mirror()
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/main.go:212 +0x1b0
main.init()
/home/i2pbrowser/go/src/github.com/eyedeekay/i2p.plugins.tor-manager/main.go:131 +0x597

Mmm, not so much.
It tries to startup a torrent, i guess. Using option --p2p false does not work.
Maybe the torrent is not there. Don't know.

By the way... What is that in the startup options:
--chat Open a WebChat client
Does this work?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.