Compare commits

..

83 Commits
1.0.1 ... 1.0.2

Author SHA1 Message Date
idk
467c673b60 update index.html 2022-10-23 01:35:24 -04:00
idk
63a12fe602 update VERSION.html 2022-10-23 01:24:35 -04:00
idk
368c7519cd update USAGE.html 2022-10-23 01:24:33 -04:00
idk
8b66d927ce update TODO.html 2022-10-23 01:24:31 -04:00
idk
c9d4498630 update RELEASES.html 2022-10-23 01:24:30 -04:00
idk
169c3c631e update PACKAGES.html 2022-10-23 01:24:29 -04:00
idk
91fe642990 update LICENSE.html 2022-10-23 01:24:27 -04:00
idk
6c27b797ba update I2PPureJavaBrowser.html 2022-10-23 01:24:26 -04:00
idk
19307d5410 update I2PGenericUnsafeBrowser.html 2022-10-23 01:24:24 -04:00
idk
093059fce9 update I2PFirefoxProfileUnpacker.html 2022-10-23 01:24:23 -04:00
idk
236bdadc1d update I2PFirefoxProfileChecker.html 2022-10-23 01:24:21 -04:00
idk
c22fbbd07d update I2PFirefoxProfileBuilder.html 2022-10-23 01:24:19 -04:00
idk
b6429c56bf update I2PFirefox.html 2022-10-23 01:24:18 -04:00
idk
7cedb145f9 update I2PCommonBrowser.html 2022-10-23 01:24:17 -04:00
idk
5156813cdc update I2PChromiumProfileUnpacker.html 2022-10-23 01:24:15 -04:00
idk
cf09511609 update I2PChromiumProfileChecker.html 2022-10-23 01:24:14 -04:00
idk
3f2cfb8c79 update I2PChromiumProfileBuilder.html 2022-10-23 01:24:12 -04:00
idk
77aa62d0e9 update I2PChromium.html 2022-10-23 01:24:11 -04:00
idk
90b6489c60 update I2PBrowser.html 2022-10-23 01:24:09 -04:00
idk
38a865011c update EXAMPLES.html 2022-10-23 01:24:07 -04:00
idk
dcd7211a4b update CHANGES.html 2022-10-23 01:24:06 -04:00
idk
a1a80bc84b update index.html 2022-10-23 01:24:04 -04:00
idk
614a4b674e bump version 2022-10-23 01:22:45 -04:00
idk
aa04b2ce21 expand systray launcher to launch both variants 2022-10-23 01:20:46 -04:00
idk
b96d79261a add systray launcher 2022-10-22 23:51:13 -04:00
idk
51275d0624 add systray launcher 2022-10-22 23:43:38 -04:00
idk
518984fd25 add systray launcher 2022-10-22 23:09:00 -04:00
idk
e7d6116dc6 update index.html 2022-10-22 22:27:04 -04:00
idk
29bd27837e update VERSION.html 2022-10-22 22:11:47 -04:00
idk
8f05f22ca7 update USAGE.html 2022-10-22 22:11:46 -04:00
idk
3a61683cae update TODO.html 2022-10-22 22:11:44 -04:00
idk
85133ee3cf update RELEASES.html 2022-10-22 22:11:43 -04:00
idk
b9007415be update PACKAGES.html 2022-10-22 22:11:41 -04:00
idk
87c6468549 update LICENSE.html 2022-10-22 22:11:40 -04:00
idk
e4fc16ad15 update I2PPureJavaBrowser.html 2022-10-22 22:11:38 -04:00
idk
500aafde54 update I2PGenericUnsafeBrowser.html 2022-10-22 22:11:37 -04:00
idk
72c9acb753 update I2PFirefoxProfileUnpacker.html 2022-10-22 22:11:35 -04:00
idk
9cea504cb0 update I2PFirefoxProfileChecker.html 2022-10-22 22:11:34 -04:00
idk
7bccada5cb update I2PFirefoxProfileBuilder.html 2022-10-22 22:11:32 -04:00
idk
1a2d4b343d update I2PFirefox.html 2022-10-22 22:11:31 -04:00
idk
598c0a602b update I2PCommonBrowser.html 2022-10-22 22:11:29 -04:00
idk
4079dfea15 update I2PChromiumProfileUnpacker.html 2022-10-22 22:11:28 -04:00
idk
558ac602c5 update I2PChromiumProfileChecker.html 2022-10-22 22:11:26 -04:00
idk
af7bcc0c9b update I2PChromiumProfileBuilder.html 2022-10-22 22:11:25 -04:00
idk
aa61098603 update I2PChromium.html 2022-10-22 22:11:23 -04:00
idk
389102aa50 update I2PBrowser.html 2022-10-22 22:11:22 -04:00
idk
735d192f5c update EXAMPLES.html 2022-10-22 22:11:20 -04:00
idk
145b43fbcd update CONFIG.html 2022-10-22 22:11:19 -04:00
idk
8a07d8e784 update CHANGES.html 2022-10-22 22:11:17 -04:00
idk
41ce20aee2 update index.html 2022-10-22 22:11:15 -04:00
idk
7b300ac9b2 add generic to browser.config 2022-10-22 21:59:44 -04:00
idk
7d90b9000d add generic to browser.config 2022-10-22 20:55:41 -04:00
idk
0a87a601dc don't generate a config by default 2022-10-22 20:14:57 -04:00
idk
ee3532b83d add default config file 2022-10-22 20:12:51 -04:00
idk
74dfb76d31 return default if property is empty string 2022-10-22 18:46:09 -04:00
idk
fd96d44ee2 add the ability to store and fetch important properties 2022-10-22 18:39:01 -04:00
idk
845b9ddfe9 update RELEASES.html 2022-10-22 17:01:15 -04:00
idk
d3c1d74684 update index.html 2022-10-22 17:00:48 -04:00
idk
5b4b2a49db Use revisions from i2p.i2p #70 2022-10-21 21:26:44 -04:00
idk
7a6a5381af update VERSION.html 2022-10-20 00:48:30 -04:00
idk
d81b705580 update I2PFirefoxProfileBuilder.html 2022-10-20 00:48:09 -04:00
idk
9ae5804018 update CHANGES.html 2022-10-20 00:47:52 -04:00
idk
e1d63c8442 update index.html 2022-10-20 00:47:50 -04:00
idk
0f90ad28b2 update version 2022-10-20 00:46:56 -04:00
idk
b192c8fea5 update version 2022-10-20 00:46:05 -04:00
idk
ff0f425cb3 update PWA mode stylesheet 2022-10-20 00:11:30 -04:00
idk
43dbce41a8 update PWA mode stylesheet 2022-10-20 00:09:20 -04:00
idk
f1da221b90 update extension versions 2022-10-17 21:26:30 -04:00
idk
ff7ed45cac update extension versions 2022-10-17 20:29:22 -04:00
idk
480fdaf43c update extension versions 2022-10-17 18:05:17 -04:00
idk
12437c97e4 update extension versions 2022-10-17 18:02:53 -04:00
idk
17e0523457 adds plugin buttons to userChrome.css in app mode 2022-10-06 20:09:45 -04:00
idk
f909f770e8 add source tarballs to releases too, don't allow release.sh to replace release files if they are unchanged 2022-10-05 14:51:54 -04:00
idk
da519eeb9d update I2PChromium.html 2022-10-04 20:48:32 -04:00
idk
8a95fc1da3 update index.html 2022-10-04 20:48:19 -04:00
idk
719e93537d add -O to dzip 2022-10-04 20:46:10 -04:00
idk
22f3785699 generate a tarball for this project and release it too 2022-10-04 19:17:14 -04:00
idk
b1be2285c0 add torbrowser.sh script to linux jpackage builds 2022-10-02 14:38:17 -04:00
idk
6d983e96b0 shellcheck torbrowser.sh script 2022-10-01 22:30:28 -04:00
idk
0864d1860a remove unused variable from chromium wrapper 2022-10-01 22:25:24 -04:00
idk
63044f3e1b auto-torify in torbrowser.sh script 2022-10-01 22:12:05 -04:00
idk
ec9e765ac1 update index.html 2022-10-01 21:14:04 -04:00
idk
ae667bfd1c don't distclean in javadoc.sh 2022-10-01 21:13:01 -04:00
72 changed files with 3449 additions and 705 deletions

3
.gitignore vendored
View File

@ -20,4 +20,5 @@ i2pbrowser/
/*.msi
/*.exe
/user.js
arkenfoxnum
arkenfoxnum
/*.tar.gz

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -138,6 +143,29 @@
<a id="returnhome" href="/">
/
</a>
<h2>
Sat, October 22
</h2>
<ul>
<li>
Add systray for launching browsers from our own GUI
</li>
<li>
Add
<code>
browser.config
</code>
file for customizing configuration
</li>
</ul>
<h2>
Thu, October 20
</h2>
<ul>
<li>
Complete the PWA/App mode
</li>
</ul>
<h2>
Sat, October 1
</h2>

View File

@ -1,3 +1,14 @@
Sat, October 22
---------------
- Add systray for launching browsers from our own GUI
- Add `browser.config` file for customizing configuration
Thu, October 20
---------------
- Complete the PWA/App mode
Sat, October 1
--------------

1145
CONFIG.html Normal file

File diff suppressed because it is too large Load Diff

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -181,9 +186,57 @@
<br />
<ul>
<br />
<li>
java.awt.Image
</li>
<li>
java.awt.Menu
</li>
<li>
java.awt.MenuItem
</li>
<li>
java.awt.PopupMenu
</li>
<li>
java.awt.SystemTray
</li>
<li>
java.awt.Toolkit
</li>
<li>
java.awt.TrayIcon
</li>
<li>
java.awt.event.ActionEvent
</li>
<li>
java.awt.event.ActionListener
</li>
<li>
java.io.File
</li>
<li>
java.io.FileOutputStream
</li>
<li>
java.io.FileWriter
</li>
<li>
java.io.IOException
</li>
<li>
java.io.InputStream
</li>
<li>
java.io.OutputStream
</li>
<li>
java.util.ArrayList
</li>
<li>
java.util.Arrays
</li>
</ul>
<br />
</details>
@ -304,12 +357,44 @@
<br />
</li>
</ul>
<h4>
boolean outputConfig
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L">
[src]
</a>
</h4>
<blockquote></blockquote>
<ul>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
</ul>
<h4>
boolean useSystray
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L">
[src]
</a>
</h4>
<blockquote></blockquote>
<ul>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
</ul>
<h2>
Methods
</h2>
<h3>
launchFirefox
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L34">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L52">
[src]
</a>
</h3>
@ -338,7 +423,7 @@
</p>
<h3>
launchChromium
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L39">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L59">
[src]
</a>
</h3>
@ -367,7 +452,7 @@
</p>
<h3>
launchGeneric
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L44">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L66">
[src]
</a>
</h3>
@ -396,7 +481,7 @@
</p>
<h3>
setBrowser
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L70">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L94">
[src]
</a>
</h3>
@ -423,7 +508,7 @@
</p>
<h3>
hasChromium
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L80">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L104">
[src]
</a>
</h3>
@ -446,7 +531,7 @@
</p>
<h3>
hasFirefox
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L97">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L121">
[src]
</a>
</h3>
@ -469,7 +554,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L117">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L141">
[src]
</a>
</h3>
@ -498,7 +583,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L160">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L186">
[src]
</a>
</h3>
@ -525,7 +610,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L174">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L200">
[src]
</a>
</h3>
@ -548,7 +633,7 @@
</p>
<h3>
ValidURL
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L176">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L202">
[src]
</a>
</h3>
@ -578,7 +663,7 @@
</p>
<h3>
main
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L186">
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L212">
[src]
</a>
</h3>
@ -606,6 +691,88 @@
<br />
| args | String[] | |
</p>
<h3>
systrayIsRunningExternally
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L270">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: boolean
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
shutdownSystray
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L287">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: void
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
systray
<a href="src/java/net/i2p/i2pfirefox/I2PBrowser.java#L293">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: boolean
<br />
</li>
</ul>
<p>
| Name | Type | Description |
<br />
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| args | String[] | |
</p>
<div id="sourcecode">
<span id="sourcehead">
<strong>

View File

@ -17,7 +17,23 @@ package: net.i2p.i2pfirefox
Show dependencies
</summary>
<ul>
<li>java.awt.Image</li>
<li>java.awt.Menu</li>
<li>java.awt.MenuItem</li>
<li>java.awt.PopupMenu</li>
<li>java.awt.SystemTray</li>
<li>java.awt.Toolkit</li>
<li>java.awt.TrayIcon</li>
<li>java.awt.event.ActionEvent</li>
<li>java.awt.event.ActionListener</li>
<li>java.io.File</li>
<li>java.io.FileOutputStream</li>
<li>java.io.FileWriter</li>
<li>java.io.IOException</li>
<li>java.io.InputStream</li>
<li>java.io.OutputStream</li>
<li>java.util.ArrayList</li>
<li>java.util.Arrays</li>
</ul>
</details>
@ -74,9 +90,23 @@ package: net.i2p.i2pfirefox
+ Access: public
#### boolean outputConfig [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L)
>
+ Access: private
+ Modifiers: static
#### boolean useSystray [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L)
>
+ Access: private
+ Modifiers: static
## Methods
### launchFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L34)
### launchFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L52)
+ Description:
+ Access: private
@ -88,7 +118,7 @@ package: net.i2p.i2pfirefox
| url | String[] | |
### launchChromium [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L39)
### launchChromium [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L59)
+ Description:
+ Access: private
@ -100,7 +130,7 @@ package: net.i2p.i2pfirefox
| url | String[] | |
### launchGeneric [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L44)
### launchGeneric [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L66)
+ Description:
+ Access: private
@ -112,7 +142,7 @@ package: net.i2p.i2pfirefox
| url | String[] | |
### setBrowser [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L70)
### setBrowser [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L94)
+ Description:
+ Access: public
@ -123,7 +153,7 @@ package: net.i2p.i2pfirefox
| browserPath | String | |
### hasChromium [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L80)
### hasChromium [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L104)
+ Description: Return true if there is a Chromium available
+ Access: public
@ -132,7 +162,7 @@ package: net.i2p.i2pfirefox
This method has no parameters.
### hasFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L97)
### hasFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L121)
+ Description: Return true if there is a Firefox variant available
+ Access: public
@ -141,7 +171,7 @@ This method has no parameters.
This method has no parameters.
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L117)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L141)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches either Firefox or Chromium with the profile directory.
+ Access: public
@ -153,7 +183,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L160)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L186)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches either Firefox or Chromium with the profile directory.
+ Access: public
@ -164,7 +194,7 @@ This method has no parameters.
| privateWindow | boolean | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L174)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L200)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches either Firefox or Chromium with the profile directory.
+ Access: public
@ -173,7 +203,7 @@ This method has no parameters.
This method has no parameters.
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L176)
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L202)
+ Description:
+ Access: private
@ -185,7 +215,7 @@ This method has no parameters.
| inUrl | String | |
### main [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L186)
### main [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L212)
+ Description:
+ Access: public
@ -197,3 +227,35 @@ This method has no parameters.
| args | String[] | |
### systrayIsRunningExternally [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L270)
+ Description:
+ Access: private
+ Modifiers: static
+ return: boolean
This method has no parameters.
### shutdownSystray [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L287)
+ Description:
+ Access: private
+ Modifiers: static
+ return: void
This method has no parameters.
### systray [[src]](src/java/net/i2p/i2pfirefox/I2PBrowser.java#L293)
+ Description:
+ Access: public
+ Modifiers: static
+ return: boolean
| Name | Type | Description |
| ----- | ----- | ----- |
| args | String[] | |

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -184,12 +189,18 @@
<li>
java.io.File
</li>
<li>
java.io.FileOutputStream
</li>
<li>
java.io.FileWriter
</li>
<li>
java.io.IOException
</li>
<li>
java.io.OutputStream
</li>
<li>
java.io.PrintWriter
</li>
@ -199,6 +210,12 @@
<li>
java.util.Arrays
</li>
<li>
java.util.List
</li>
<li>
java.util.stream.Collectors
</li>
<li>
java.util.stream.Stream
</li>
@ -241,9 +258,113 @@
<h2>
Methods
</h2>
<h3>
storeChromiumDefaults
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L60">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: void
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
chromiumPathsUnix
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L89">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
chromiumBinsUnix
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L98">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
FIND_CHROMIUM_SEARCH_PATHS_UNIX
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L56">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L114">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
chromiumPathsOSX
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L128">
[src]
</a>
</h3>
@ -269,7 +390,59 @@
</p>
<h3>
FIND_CHROMIUM_SEARCH_PATHS_OSX
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L72">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L137">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
chromiumPathsWindows
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L151">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
chromiumBinsWindows
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L176">
[src]
</a>
</h3>
@ -295,7 +468,7 @@
</p>
<h3>
FIND_CHROMIUM_SEARCH_PATHS_WINDOWS
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L84">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L185">
[src]
</a>
</h3>
@ -321,7 +494,7 @@
</p>
<h3>
FIND_ALL_CHROMIUM_SEARCH_PATHS
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L121">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L199">
[src]
</a>
</h3>
@ -347,7 +520,7 @@
</p>
<h3>
FIND_CHROMIUM_SEARCH_PATHS
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L141">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L219">
[src]
</a>
</h3>
@ -373,7 +546,7 @@
</p>
<h3>
NEARBY_CHROMIUM_SEARCH_PATHS
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L155">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L233">
[src]
</a>
</h3>
@ -399,7 +572,7 @@
</p>
<h3>
CHROMIUM_FINDER
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L209">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L287">
[src]
</a>
</h3>
@ -423,35 +596,9 @@
<p>
This method has no parameters.
</p>
<h3>
getOperatingSystem
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L221">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
onlyValidChromiums
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L243">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L308">
[src]
</a>
</h3>
@ -474,7 +621,7 @@
</p>
<h3>
topChromium
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L263">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L328">
[src]
</a>
</h3>
@ -497,7 +644,7 @@
</p>
<h3>
topChromium
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L292">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L357">
[src]
</a>
</h3>
@ -524,7 +671,7 @@
</p>
<h3>
defaultProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L310">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L375">
[src]
</a>
</h3>
@ -547,7 +694,7 @@
</p>
<h3>
defaultProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L323">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L388">
[src]
</a>
</h3>
@ -574,7 +721,7 @@
</p>
<h3>
privateProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L335">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L400">
[src]
</a>
</h3>
@ -597,7 +744,7 @@
</p>
<h3>
privateProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L348">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L413">
[src]
</a>
</h3>
@ -624,7 +771,7 @@
</p>
<h3>
appProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L370">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L435">
[src]
</a>
</h3>
@ -647,7 +794,7 @@
</p>
<h3>
appProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L383">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L448">
[src]
</a>
</h3>
@ -674,7 +821,7 @@
</p>
<h3>
processBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L430">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L495">
[src]
</a>
</h3>
@ -701,7 +848,7 @@
</p>
<h3>
launchAndDetatch
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L549">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L616">
[src]
</a>
</h3>
@ -730,7 +877,7 @@
</p>
<h3>
launchAndDetatch
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L556">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L623">
[src]
</a>
</h3>
@ -759,7 +906,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L613">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L681">
[src]
</a>
</h3>
@ -788,7 +935,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L619">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L687">
[src]
</a>
</h3>
@ -817,7 +964,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L644">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L712">
[src]
</a>
</h3>
@ -844,7 +991,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L653">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L721">
[src]
</a>
</h3>
@ -867,7 +1014,7 @@
</p>
<h3>
ValidURL
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L655">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L723">
[src]
</a>
</h3>
@ -897,7 +1044,7 @@
</p>
<h3>
main
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L665">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L733">
[src]
</a>
</h3>
@ -927,7 +1074,7 @@
</p>
<h3>
sleep
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L704">
<a href="src/java/net/i2p/i2pfirefox/I2PChromium.java#L772">
[src]
</a>
</h3>

View File

@ -18,11 +18,15 @@ package: net.i2p.i2pfirefox
</summary>
<ul>
<li>java.io.File</li>
<li>java.io.FileOutputStream</li>
<li>java.io.FileWriter</li>
<li>java.io.IOException</li>
<li>java.io.OutputStream</li>
<li>java.io.PrintWriter</li>
<li>java.util.ArrayList</li>
<li>java.util.Arrays</li>
<li>java.util.List</li>
<li>java.util.stream.Collectors</li>
<li>java.util.stream.Stream</li>
</ul>
</details>
@ -44,7 +48,17 @@ package: net.i2p.i2pfirefox
## Methods
### FIND_CHROMIUM_SEARCH_PATHS_UNIX [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L56)
### storeChromiumDefaults [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L60)
+ Description:
+ Access: public
+ Modifiers: static
+ return: void
This method has no parameters.
### chromiumPathsUnix [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L89)
+ Description:
+ Access: private
@ -54,7 +68,7 @@ package: net.i2p.i2pfirefox
This method has no parameters.
### FIND_CHROMIUM_SEARCH_PATHS_OSX [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L72)
### chromiumBinsUnix [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L98)
+ Description:
+ Access: private
@ -64,7 +78,7 @@ This method has no parameters.
This method has no parameters.
### FIND_CHROMIUM_SEARCH_PATHS_WINDOWS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L84)
### FIND_CHROMIUM_SEARCH_PATHS_UNIX [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L114)
+ Description:
+ Access: private
@ -74,7 +88,7 @@ This method has no parameters.
This method has no parameters.
### FIND_ALL_CHROMIUM_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L121)
### chromiumPathsOSX [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L128)
+ Description:
+ Access: private
@ -84,7 +98,7 @@ This method has no parameters.
This method has no parameters.
### FIND_CHROMIUM_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L141)
### FIND_CHROMIUM_SEARCH_PATHS_OSX [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L137)
+ Description:
+ Access: private
@ -94,7 +108,7 @@ This method has no parameters.
This method has no parameters.
### NEARBY_CHROMIUM_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L155)
### chromiumPathsWindows [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L151)
+ Description:
+ Access: private
@ -104,7 +118,7 @@ This method has no parameters.
This method has no parameters.
### CHROMIUM_FINDER [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L209)
### chromiumBinsWindows [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L176)
+ Description:
+ Access: private
@ -114,17 +128,57 @@ This method has no parameters.
This method has no parameters.
### getOperatingSystem [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L221)
### FIND_CHROMIUM_SEARCH_PATHS_WINDOWS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L185)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String
+ return: String[]
This method has no parameters.
### onlyValidChromiums [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L243)
### FIND_ALL_CHROMIUM_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L199)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_CHROMIUM_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L219)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### NEARBY_CHROMIUM_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L233)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### CHROMIUM_FINDER [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L287)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### onlyValidChromiums [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L308)
+ Description: Check our list of chrome paths for a valid chrome binary. Just an existence check for now but should check versions in the future.
+ Access: public
@ -133,7 +187,7 @@ This method has no parameters.
This method has no parameters.
### topChromium [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L263)
### topChromium [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L328)
+ Description: Return the best available Chromium from the list of Chromiums we have.
+ Access: public
@ -142,7 +196,7 @@ This method has no parameters.
This method has no parameters.
### topChromium [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L292)
### topChromium [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L357)
+ Description: Return the best available Chromium from the list of Chromiums we have. if override is passed it will be validated and if it validates it will be used.
+ Access: public
@ -153,7 +207,7 @@ This method has no parameters.
| overrideChromium | String | |
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L310)
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L375)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile.
+ Access: public
@ -162,7 +216,7 @@ This method has no parameters.
This method has no parameters.
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L323)
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L388)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile. @args the arguments to pass to the Chromium binary
+ Access: public
@ -173,7 +227,7 @@ This method has no parameters.
| args | String[] | |
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L335)
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L400)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile.
+ Access: public
@ -182,7 +236,7 @@ This method has no parameters.
This method has no parameters.
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L348)
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L413)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile.
+ Access: public
@ -193,7 +247,7 @@ This method has no parameters.
| args | String[] | the arguments to pass to the Chromium binary. |
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L370)
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L435)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile.
+ Access: public
@ -202,7 +256,7 @@ This method has no parameters.
This method has no parameters.
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L383)
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L448)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile.
+ Access: public
@ -213,7 +267,7 @@ This method has no parameters.
| args | String[] | the arguments to pass to the Chromium binary. |
### processBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L430)
### processBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L495)
+ Description: Build a ProcessBuilder for the top Chromium binary and the default profile with a specific set of extended arguments.
+ Access: public
@ -224,7 +278,7 @@ This method has no parameters.
| args | String[] | the extended arguments to pass to the Chromium binary. |
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L549)
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L616)
+ Description:
+ Access: public
@ -236,7 +290,7 @@ This method has no parameters.
| url | String[] | |
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L556)
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L623)
+ Description:
+ Access: public
@ -248,7 +302,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L613)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L681)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches Chromium with the profile directory.
+ Access: public
@ -260,7 +314,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L619)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L687)
+ Description:
+ Access: public
@ -272,7 +326,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L644)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L712)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches Chromium with the profile directory.
+ Access: public
@ -283,7 +337,7 @@ This method has no parameters.
| privateWindow | boolean | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L653)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L721)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches Chromium with the profile directory.
+ Access: public
@ -292,7 +346,7 @@ This method has no parameters.
This method has no parameters.
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L655)
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L723)
+ Description:
+ Access: private
@ -304,7 +358,7 @@ This method has no parameters.
| inUrl | String | |
### main [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L665)
### main [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L733)
+ Description:
+ Access: public
@ -316,7 +370,7 @@ This method has no parameters.
| args | String[] | |
### sleep [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L704)
### sleep [[src]](src/java/net/i2p/i2pfirefox/I2PChromium.java#L772)
+ Description:
+ Access: private

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -234,7 +239,11 @@
</li>
</ul>
<p>
This method has no parameters.
| Name | Type | Description |
<br />
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| base | String | |
</p>
<h3>
baseProfileDir
@ -366,7 +375,7 @@
<br />
</li>
<li>
Access: private
Access: public
<br />
</li>
<li>

View File

@ -39,7 +39,9 @@ package: net.i2p.i2pfirefox
+ Modifiers: static
+ return: String
This method has no parameters.
| Name | Type | Description |
| ----- | ----- | ----- |
| base | String | |
### baseProfileDir [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileBuilder.java#L35)
@ -92,7 +94,7 @@ This method has no parameters.
### usabilityMode [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileBuilder.java#L109)
+ Description:
+ Access: private
+ Access: public
+ Modifiers: static
+ return: String

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -226,7 +231,7 @@
</p>
<h3>
validateProfileDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L50">
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L51">
[src]
</a>
</h3>
@ -256,7 +261,7 @@
</p>
<h3>
validateFile
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L81">
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L82">
[src]
</a>
</h3>
@ -286,7 +291,7 @@
</p>
<h3>
validateExtensionDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L108">
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L109">
[src]
</a>
</h3>

View File

@ -37,7 +37,7 @@ package: net.i2p.i2pfirefox
| args | String[] | |
### validateProfileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L50)
### validateProfileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L51)
+ Description: Return true if the profile directory is valid.
+ Access: public
@ -49,7 +49,7 @@ package: net.i2p.i2pfirefox
| profileDirectory | String | the profile directory to check |
### validateFile [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L81)
### validateFile [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L82)
+ Description: Return true if the file is valid.
+ Access: public
@ -61,7 +61,7 @@ package: net.i2p.i2pfirefox
| file | String | the file to check |
### validateExtensionDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L108)
### validateExtensionDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileChecker.java#L109)
+ Description: Return true if the extension directory is valid.
+ Access: public

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -223,7 +228,7 @@
</p>
<h3>
unpackProfile
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileUnpacker.java#L37">
<a href="src/java/net/i2p/i2pfirefox/I2PChromiumProfileUnpacker.java#L38">
[src]
</a>
</h3>

View File

@ -36,7 +36,7 @@ package: net.i2p.i2pfirefox
| args | String[] | |
### unpackProfile [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileUnpacker.java#L37)
### unpackProfile [[src]](src/java/net/i2p/i2pfirefox/I2PChromiumProfileUnpacker.java#L38)
+ Description: unpack the profile directory
+ Access: public

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -202,6 +207,12 @@
<li>
java.nio.file.StandardCopyOption
</li>
<li>
java.util.Arrays
</li>
<li>
java.util.Properties
</li>
<li>
java.util.logging.FileHandler
</li>
@ -224,6 +235,22 @@
<h2>
Member Variables
</h2>
<h4>
Properties prop
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L">
[src]
</a>
</h4>
<blockquote></blockquote>
<ul>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
</ul>
<h4>
Logger logger
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L">
@ -241,7 +268,7 @@
</li>
</ul>
<h4>
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L36">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L39">
[src]
</a>
</h4>
@ -260,7 +287,7 @@
</li>
</ul>
<h4>
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L37">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L40">
[src]
</a>
</h4>
@ -283,7 +310,7 @@
</h2>
<h3>
runtimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L153">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L180">
[src]
</a>
</h3>
@ -315,7 +342,7 @@
</p>
<h3>
runtimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L170">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L197">
[src]
</a>
</h3>
@ -345,7 +372,7 @@
</p>
<h3>
profileDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L218">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L245">
[src]
</a>
</h3>
@ -375,11 +402,13 @@
<br />
| browser | String | |
<br />
| base | String | |
<br />
| app | boolean | |
</p>
<h3>
profileDir
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L230">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L258">
[src]
</a>
</h3>
@ -409,11 +438,13 @@
<br />
| browser | String | |
<br />
| base | String | |
<br />
| app | boolean | |
</p>
<h3>
unpackProfile
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L240">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L269">
[src]
</a>
</h3>
@ -444,7 +475,7 @@
</p>
<h3>
copyDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L286">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L315">
[src]
</a>
</h3>
@ -479,8 +510,8 @@
| base | String | |
</p>
<h3>
copyDirectoryCompatibityMode
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L302">
copyDirectoryCompatibilityMode
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L330">
[src]
</a>
</h3>
@ -514,9 +545,41 @@
<br />
| base | String | |
</p>
<h3>
copy
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L339">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: void
<br />
</li>
</ul>
<p>
| Name | Type | Description |
<br />
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| source | InputStream | |
<br />
| target | OutputStream | |
</p>
<h3>
copyFile
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L311">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L348">
[src]
</a>
</h3>
@ -548,7 +611,7 @@
</p>
<h3>
validateProfileFirstRun
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L322">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L359">
[src]
</a>
</h3>
@ -578,7 +641,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L348">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L385">
[src]
</a>
</h3>
@ -601,7 +664,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L358">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L395">
[src]
</a>
</h3>
@ -628,7 +691,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L370">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L407">
[src]
</a>
</h3>
@ -657,7 +720,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L385">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L422">
[src]
</a>
</h3>
@ -688,7 +751,7 @@
</p>
<h3>
checkifPortIsOccupied
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L403">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L440">
[src]
</a>
</h3>
@ -717,7 +780,7 @@
</p>
<h3>
setProxyTimeoutTime
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L418">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L455">
[src]
</a>
</h3>
@ -744,7 +807,7 @@
</p>
<h3>
join
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L423">
<a href="src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L460">
[src]
</a>
</h3>

View File

@ -25,6 +25,8 @@ package: net.i2p.i2pfirefox
<li>java.net.Socket</li>
<li>java.nio.file.Files</li>
<li>java.nio.file.StandardCopyOption</li>
<li>java.util.Arrays</li>
<li>java.util.Properties</li>
<li>java.util.logging.FileHandler</li>
<li>java.util.logging.Logger</li>
<li>java.util.logging.SimpleFormatter</li>
@ -35,6 +37,13 @@ package: net.i2p.i2pfirefox
## Member Variables
#### Properties prop [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L)
>
+ Access: public
+ Modifiers: static
#### Logger logger [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L)
>
@ -42,14 +51,14 @@ package: net.i2p.i2pfirefox
+ Access: public
+ Modifiers: static
#### [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L36)
#### [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L39)
> static FileHandler fh;
+ Access: private
+ Modifiers: final
#### [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L37)
#### [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L40)
> // private final int DEFAULT_TIMEOUT = 200;
@ -58,7 +67,7 @@ package: net.i2p.i2pfirefox
## Methods
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L153)
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L180)
+ Description: get the runtime directory creating it if create=true
+ Access: protected
@ -71,7 +80,7 @@ package: net.i2p.i2pfirefox
| override | String | |
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L170)
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L197)
+ Description: get the correct runtime directory
+ Access: protected
@ -83,7 +92,7 @@ package: net.i2p.i2pfirefox
| override | String | |
### profileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L218)
### profileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L245)
+ Description: get the profile directory creating it if necessary
+ Access: protected
@ -94,10 +103,11 @@ package: net.i2p.i2pfirefox
| ----- | ----- | ----- |
| envVar | String | |
| browser | String | |
| base | String | |
| app | boolean | |
### profileDir [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L230)
### profileDir [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L258)
+ Description:
+ Access: protected
@ -108,10 +118,11 @@ package: net.i2p.i2pfirefox
| ----- | ----- | ----- |
| file | String | |
| browser | String | |
| base | String | |
| app | boolean | |
### unpackProfile [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L240)
### unpackProfile [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L269)
+ Description:
+ Access: protected
@ -124,7 +135,7 @@ package: net.i2p.i2pfirefox
| base | String | |
### copyDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L286)
### copyDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L315)
+ Description:
+ Access: protected
@ -139,7 +150,7 @@ package: net.i2p.i2pfirefox
| base | String | |
### copyDirectoryCompatibityMode [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L302)
### copyDirectoryCompatibilityMode [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L330)
+ Description:
+ Access: private
@ -154,7 +165,20 @@ package: net.i2p.i2pfirefox
| base | String | |
### copyFile [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L311)
### copy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L339)
+ Description:
+ Access: public
+ Modifiers: static
+ return: void
| Name | Type | Description |
| ----- | ----- | ----- |
| source | InputStream | |
| target | OutputStream | |
### copyFile [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L348)
+ Description:
+ Access: private
@ -167,7 +191,7 @@ package: net.i2p.i2pfirefox
| destinationFile | File | |
### validateProfileFirstRun [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L322)
### validateProfileFirstRun [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L359)
+ Description:
+ Access: public
@ -179,7 +203,7 @@ package: net.i2p.i2pfirefox
| profileDirectory | String | |
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L348)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L385)
+ Description: Waits for an HTTP proxy on port 4444 to be ready. Returns false on timeout of 200 seconds.
+ Access: public
@ -188,7 +212,7 @@ package: net.i2p.i2pfirefox
This method has no parameters.
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L358)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L395)
+ Description: Waits for an HTTP proxy on port 4444 to be ready. Returns false on timeout of the specified number of seconds.
+ Access: public
@ -199,7 +223,7 @@ This method has no parameters.
| timeout | int | the number of seconds to wait for the proxy to be ready. |
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L370)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L407)
+ Description: Waits for an HTTP proxy on the specified port to be ready. Returns false on timeout of the specified number of seconds.
+ Access: public
@ -211,7 +235,7 @@ This method has no parameters.
| port | int | the port to wait for the proxy to be ready on. |
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L385)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L422)
+ Description: Waits for an HTTP proxy on the specified port to be ready. Returns false on timeout of the specified number of seconds. If the timeout is zero or less the check is disabled and always returns true.
+ Access: public
@ -224,7 +248,7 @@ This method has no parameters.
| host | String | the host to wait for the proxy to be ready on. |
### checkifPortIsOccupied [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L403)
### checkifPortIsOccupied [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L440)
+ Description:
+ Access: private
@ -236,7 +260,7 @@ This method has no parameters.
| host | String | |
### setProxyTimeoutTime [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L418)
### setProxyTimeoutTime [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L455)
+ Description: Alters the proxy timeout to customized value time in seconds. May be zero.
+ Access: public
@ -247,7 +271,7 @@ This method has no parameters.
| time | int | |
### join [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L423)
### join [[src]](src/java/net/i2p/i2pfirefox/I2PCommonBrowser.java#L460)
+ Description:
+ Access: protected

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -184,12 +189,18 @@
<li>
java.io.File
</li>
<li>
java.io.FileOutputStream
</li>
<li>
java.io.FileWriter
</li>
<li>
java.io.IOException
</li>
<li>
java.io.OutputStream
</li>
<li>
java.io.PrintWriter
</li>
@ -199,9 +210,15 @@
<li>
java.util.Arrays
</li>
<li>
java.util.List
</li>
<li>
java.util.concurrent.TimeUnit
</li>
<li>
java.util.stream.Collectors
</li>
<li>
java.util.stream.Stream
</li>
@ -260,9 +277,113 @@
<h2>
Methods
</h2>
<h3>
baseMode
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L35">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
storeFirefoxDefaults
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L58">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: void
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
firefoxPathsUnix
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L87">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
firefoxBinsUnix
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L96">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
FIND_FIREFOX_SEARCH_PATHS_UNIX
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L48">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L113">
[src]
</a>
</h3>
@ -286,9 +407,87 @@
<p>
This method has no parameters.
</p>
<h3>
firefoxPathsOSX
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L126">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
FIND_FIREFOX_SEARCH_PATHS_OSX
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L63">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L136">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
firefoxPathsWindows
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L149">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: public
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String[]
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
firefoxBinsWindows
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L175">
[src]
</a>
</h3>
@ -314,7 +513,7 @@
</p>
<h3>
FIND_FIREFOX_SEARCH_PATHS_WINDOWS
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L81">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L185">
[src]
</a>
</h3>
@ -340,7 +539,7 @@
</p>
<h3>
FIND_ALL_FIREFOX_SEARCH_PATHS
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L117">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L199">
[src]
</a>
</h3>
@ -366,7 +565,7 @@
</p>
<h3>
FIND_FIREFOX_SEARCH_PATHS
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L137">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L219">
[src]
</a>
</h3>
@ -392,7 +591,7 @@
</p>
<h3>
NEARBY_FIREFOX_SEARCH_PATHS
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L151">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L233">
[src]
</a>
</h3>
@ -418,7 +617,7 @@
</p>
<h3>
FIREFOX_FINDER
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L235">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L359">
[src]
</a>
</h3>
@ -442,35 +641,9 @@
<p>
This method has no parameters.
</p>
<h3>
getOperatingSystem
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L247">
[src]
</a>
</h3>
<ul>
<li>
Description:
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String
<br />
</li>
</ul>
<p>
This method has no parameters.
</p>
<h3>
onlyValidFirefoxes
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L269">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L380">
[src]
</a>
</h3>
@ -493,7 +666,7 @@
</p>
<h3>
topFirefox
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L289">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L401">
[src]
</a>
</h3>
@ -516,7 +689,7 @@
</p>
<h3>
topFirefox
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L318">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L431">
[src]
</a>
</h3>
@ -543,7 +716,7 @@
</p>
<h3>
defaultProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L336">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L449">
[src]
</a>
</h3>
@ -566,7 +739,7 @@
</p>
<h3>
defaultProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L348">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L461">
[src]
</a>
</h3>
@ -593,7 +766,7 @@
</p>
<h3>
privateProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L362">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L475">
[src]
</a>
</h3>
@ -616,7 +789,7 @@
</p>
<h3>
privateProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L375">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L488">
[src]
</a>
</h3>
@ -643,7 +816,7 @@
</p>
<h3>
appProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L398">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L511">
[src]
</a>
</h3>
@ -666,7 +839,7 @@
</p>
<h3>
appProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L411">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L524">
[src]
</a>
</h3>
@ -693,7 +866,7 @@
</p>
<h3>
headlessProcessBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L432">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L545">
[src]
</a>
</h3>
@ -720,7 +893,7 @@
</p>
<h3>
processBuilder
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L460">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L573">
[src]
</a>
</h3>
@ -749,7 +922,7 @@
</p>
<h3>
usabilityMode
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L518">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L630">
[src]
</a>
</h3>
@ -772,7 +945,7 @@
</p>
<h3>
launchAndDetatch
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L524">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L636">
[src]
</a>
</h3>
@ -801,7 +974,7 @@
</p>
<h3>
launchAndDetatch
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L530">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L642">
[src]
</a>
</h3>
@ -830,7 +1003,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L623">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L736">
[src]
</a>
</h3>
@ -859,7 +1032,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L629">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L742">
[src]
</a>
</h3>
@ -888,7 +1061,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L653">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L766">
[src]
</a>
</h3>
@ -915,7 +1088,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L663">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L776">
[src]
</a>
</h3>
@ -938,7 +1111,7 @@
</p>
<h3>
ValidURL
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L665">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L778">
[src]
</a>
</h3>
@ -968,7 +1141,7 @@
</p>
<h3>
main
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L676">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L789">
[src]
</a>
</h3>
@ -998,7 +1171,7 @@
</p>
<h3>
sleep
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L713">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefox.java#L826">
[src]
</a>
</h3>

View File

@ -18,12 +18,16 @@ package: net.i2p.i2pfirefox
</summary>
<ul>
<li>java.io.File</li>
<li>java.io.FileOutputStream</li>
<li>java.io.FileWriter</li>
<li>java.io.IOException</li>
<li>java.io.OutputStream</li>
<li>java.io.PrintWriter</li>
<li>java.util.ArrayList</li>
<li>java.util.Arrays</li>
<li>java.util.List</li>
<li>java.util.concurrent.TimeUnit</li>
<li>java.util.stream.Collectors</li>
<li>java.util.stream.Stream</li>
</ul>
</details>
@ -52,77 +56,7 @@ package: net.i2p.i2pfirefox
## Methods
### FIND_FIREFOX_SEARCH_PATHS_UNIX [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L48)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS_OSX [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L63)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS_WINDOWS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L81)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_ALL_FIREFOX_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L117)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L137)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### NEARBY_FIREFOX_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L151)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIREFOX_FINDER [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L235)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### getOperatingSystem [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L247)
### baseMode [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L35)
+ Description:
+ Access: private
@ -132,7 +66,137 @@ This method has no parameters.
This method has no parameters.
### onlyValidFirefoxes [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L269)
### storeFirefoxDefaults [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L58)
+ Description:
+ Access: public
+ Modifiers: static
+ return: void
This method has no parameters.
### firefoxPathsUnix [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L87)
+ Description:
+ Access: public
+ Modifiers: static
+ return: String[]
This method has no parameters.
### firefoxBinsUnix [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L96)
+ Description:
+ Access: public
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS_UNIX [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L113)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### firefoxPathsOSX [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L126)
+ Description:
+ Access: public
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS_OSX [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L136)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### firefoxPathsWindows [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L149)
+ Description:
+ Access: public
+ Modifiers: static
+ return: String[]
This method has no parameters.
### firefoxBinsWindows [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L175)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS_WINDOWS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L185)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_ALL_FIREFOX_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L199)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIND_FIREFOX_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L219)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### NEARBY_FIREFOX_SEARCH_PATHS [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L233)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### FIREFOX_FINDER [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L359)
+ Description:
+ Access: private
+ Modifiers: static
+ return: String[]
This method has no parameters.
### onlyValidFirefoxes [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L380)
+ Description: Check our list of firefox paths for a valid firefox binary. Just an existence check for now but should check versions in the future.
+ Access: public
@ -141,7 +205,7 @@ This method has no parameters.
This method has no parameters.
### topFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L289)
### topFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L401)
+ Description: Return the best available Firefox from the list of Firefoxes we have.
+ Access: public
@ -150,7 +214,7 @@ This method has no parameters.
This method has no parameters.
### topFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L318)
### topFirefox [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L431)
+ Description: Return the best available Firefox from the list of Firefoxes we have. if override is passed it will be validated and if it validates it will be used.
+ Access: public
@ -161,7 +225,7 @@ This method has no parameters.
| overrideFirefox | String | |
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L336)
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L449)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile.
+ Access: public
@ -170,7 +234,7 @@ This method has no parameters.
This method has no parameters.
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L348)
### defaultProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L461)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile.
+ Access: public
@ -181,7 +245,7 @@ This method has no parameters.
| args | String[] | the args to pass to the Firefox binary |
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L362)
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L475)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile. Pass the --private-window flag to open a window.
+ Access: public
@ -190,7 +254,7 @@ This method has no parameters.
This method has no parameters.
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L375)
### privateProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L488)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile. Pass the --private-window flag to open a window.
+ Access: public
@ -201,7 +265,7 @@ This method has no parameters.
| args | String[] | the arguments to pass to the Firefox binary |
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L398)
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L511)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile. Pass the --private-window flag to open a window.
+ Access: public
@ -210,7 +274,7 @@ This method has no parameters.
This method has no parameters.
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L411)
### appProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L524)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile. Pass the --private-window flag to open a window.
+ Access: public
@ -221,7 +285,7 @@ This method has no parameters.
| args | String[] | the arguments to pass to the Firefox binary |
### headlessProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L432)
### headlessProcessBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L545)
+ Description: Build a ProcessBuilder for the top Firefox binary and the default profile. Pass the --headless flag to open without a window.
+ Access: public
@ -232,7 +296,7 @@ This method has no parameters.
| args | String[] | the arguments to pass to the Firefox binary |
### processBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L460)
### processBuilder [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L573)
+ Description:
+ Access: public
@ -244,7 +308,7 @@ This method has no parameters.
| app | boolean | |
### usabilityMode [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L518)
### usabilityMode [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L630)
+ Description:
+ Access: private
@ -253,7 +317,7 @@ This method has no parameters.
This method has no parameters.
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L524)
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L636)
+ Description:
+ Access: public
@ -265,7 +329,7 @@ This method has no parameters.
| url | String[] | |
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L530)
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L642)
+ Description:
+ Access: public
@ -277,7 +341,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L623)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L736)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches Firefox with the profile directory.
+ Access: public
@ -289,7 +353,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L629)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L742)
+ Description:
+ Access: public
@ -301,7 +365,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L653)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L766)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches Firefox with the profile directory.
+ Access: public
@ -312,7 +376,7 @@ This method has no parameters.
| privateWindow | boolean | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L663)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L776)
+ Description: Populates a profile directory with a proxy configuration. Waits for an HTTP proxy on the port 4444 to be ready. Launches Firefox with the profile directory. Uses a semi-permanent profile.
+ Access: public
@ -321,7 +385,7 @@ This method has no parameters.
This method has no parameters.
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L665)
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L778)
+ Description:
+ Access: private
@ -333,7 +397,7 @@ This method has no parameters.
| inUrl | String | |
### main [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L676)
### main [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L789)
+ Description:
+ Access: public
@ -345,7 +409,7 @@ This method has no parameters.
| args | String[] | |
### sleep [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L713)
### sleep [[src]](src/java/net/i2p/i2pfirefox/I2PFirefox.java#L826)
+ Description:
+ Access: private

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -247,7 +252,7 @@
</p>
<h3>
profileDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L92">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L110">
[src]
</a>
</h3>
@ -274,10 +279,12 @@
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| app | boolean | |
<br />
| base | String | |
</p>
<h3>
baseProfileDir
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L96">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L114">
[src]
</a>
</h3>
@ -309,7 +316,7 @@
</p>
<h3>
baseProfileDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L116">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L134">
[src]
</a>
</h3>
@ -339,7 +346,7 @@
</p>
<h3>
runtimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L140">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L158">
[src]
</a>
</h3>
@ -369,7 +376,7 @@
</p>
<h3>
runtimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L151">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L169">
[src]
</a>
</h3>
@ -395,7 +402,7 @@
</p>
<h3>
copyBaseProfiletoProfile
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L171">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L189">
[src]
</a>
</h3>
@ -427,7 +434,7 @@
</p>
<h3>
writeAppChrome
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L204">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L222">
[src]
</a>
</h3>
@ -457,7 +464,7 @@
</p>
<h3>
deleteAppChrome
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L217">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L235">
[src]
</a>
</h3>
@ -487,7 +494,7 @@
</p>
<h3>
copyStrictOptions
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L232">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L250">
[src]
</a>
</h3>

View File

@ -45,7 +45,7 @@ package: net.i2p.i2pfirefox
This method has no parameters.
### profileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L92)
### profileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L110)
+ Description: get the profile directory creating it if necessary
+ Access: public
@ -55,9 +55,10 @@ This method has no parameters.
| Name | Type | Description |
| ----- | ----- | ----- |
| app | boolean | |
| base | String | |
### baseProfileDir [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L96)
### baseProfileDir [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L114)
+ Description:
+ Access: private
@ -70,7 +71,7 @@ This method has no parameters.
| base | String | |
### baseProfileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L116)
### baseProfileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L134)
+ Description: get the base profile directory creating it if necessary
+ Access: public
@ -82,7 +83,7 @@ This method has no parameters.
| base | String | |
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L140)
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L158)
+ Description: get the runtime directory creating it if create=true
+ Access: public
@ -94,7 +95,7 @@ This method has no parameters.
| create | boolean | if true create the runtime directory if it does not exist |
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L151)
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L169)
+ Description: get the correct runtime directory
+ Access: public
@ -104,7 +105,7 @@ This method has no parameters.
This method has no parameters.
### copyBaseProfiletoProfile [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L171)
### copyBaseProfiletoProfile [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L189)
+ Description: Copy the inert base profile directory to the runtime profile directory
+ Access: public
@ -117,7 +118,7 @@ This method has no parameters.
| app | boolean | |
### writeAppChrome [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L204)
### writeAppChrome [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L222)
+ Description:
+ Access: protected
@ -129,7 +130,7 @@ This method has no parameters.
| profile | String | |
### deleteAppChrome [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L217)
### deleteAppChrome [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L235)
+ Description:
+ Access: protected
@ -141,7 +142,7 @@ This method has no parameters.
| profile | String | |
### copyStrictOptions [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L232)
### copyStrictOptions [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileBuilder.java#L250)
+ Description: Copy the strict options from the base profile to the profile
+ Access: public

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -244,7 +249,7 @@
</p>
<h3>
validateProfileDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L53">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L54">
[src]
</a>
</h3>
@ -274,7 +279,7 @@
</p>
<h3>
deRestrictHTTPSAndSetupHomepage
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L86">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L87">
[src]
</a>
</h3>
@ -304,7 +309,7 @@
</p>
<h3>
undoHttpsOnlyMode
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L109">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L110">
[src]
</a>
</h3>
@ -334,7 +339,7 @@
</p>
<h3>
undoHomepage
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L115">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L116">
[src]
</a>
</h3>
@ -364,7 +369,7 @@
</p>
<h3>
undoValue
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L138">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L139">
[src]
</a>
</h3>
@ -398,7 +403,7 @@
</p>
<h3>
validateFile
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L172">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L173">
[src]
</a>
</h3>
@ -428,7 +433,7 @@
</p>
<h3>
validateExtensionDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L199">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L200">
[src]
</a>
</h3>

View File

@ -43,7 +43,7 @@ package: net.i2p.i2pfirefox
| args | String[] | |
### validateProfileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L53)
### validateProfileDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L54)
+ Description: Return true if the profile directory is valid.
+ Access: public
@ -55,7 +55,7 @@ package: net.i2p.i2pfirefox
| profileDirectory | String | the profile directory to check |
### deRestrictHTTPSAndSetupHomepage [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L86)
### deRestrictHTTPSAndSetupHomepage [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L87)
+ Description:
+ Access: private
@ -67,7 +67,7 @@ package: net.i2p.i2pfirefox
| profile | String | |
### undoHttpsOnlyMode [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L109)
### undoHttpsOnlyMode [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L110)
+ Description:
+ Access: private
@ -79,7 +79,7 @@ package: net.i2p.i2pfirefox
| fileToBeModified | File | |
### undoHomepage [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L115)
### undoHomepage [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L116)
+ Description:
+ Access: private
@ -91,7 +91,7 @@ package: net.i2p.i2pfirefox
| fileToBeModified | File | |
### undoValue [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L138)
### undoValue [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L139)
+ Description:
+ Access: public
@ -105,7 +105,7 @@ package: net.i2p.i2pfirefox
| fileToBeModified | File | |
### validateFile [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L172)
### validateFile [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L173)
+ Description: Return true if the file is valid.
+ Access: public
@ -117,7 +117,7 @@ package: net.i2p.i2pfirefox
| file | String | the file to check |
### validateExtensionDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L199)
### validateExtensionDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileChecker.java#L200)
+ Description: Return true if the extension directory is valid.
+ Access: public

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -227,7 +232,7 @@
</p>
<h3>
unpackProfile
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileUnpacker.java#L37">
<a href="src/java/net/i2p/i2pfirefox/I2PFirefoxProfileUnpacker.java#L38">
[src]
</a>
</h3>

View File

@ -36,7 +36,7 @@ package: net.i2p.i2pfirefox
| args | String[] | |
### unpackProfile [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileUnpacker.java#L37)
### unpackProfile [[src]](src/java/net/i2p/i2pfirefox/I2PFirefoxProfileUnpacker.java#L38)
+ Description: unpack the profile directory
+ Access: public

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -180,18 +185,33 @@
<li>
java.io.File
</li>
<li>
java.io.FileOutputStream
</li>
<li>
java.io.IOException
</li>
<li>
java.io.OutputStream
</li>
<li>
java.net.Socket
</li>
<li>
java.util.ArrayList
</li>
<li>
java.util.Arrays
</li>
<li>
java.util.List
</li>
<li>
java.util.Scanner
</li>
<li>
java.util.stream.Collectors
</li>
</ul>
<br />
</details>
@ -249,13 +269,13 @@
</h2>
<h3>
getDefaultWindowsBrowser
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L90">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L101">
[src]
</a>
</h3>
<ul>
<li>
Description: Obtains the default browser for the Windows platform which by now should be Edgium in the worst-case scenario but in case it isn&rsquo;t we can use this function to figure it out. It can find: 1. The current user&rsquo;s HTTPS default browser if they configured it to be non-default 2. The current user&rsquo;s HTTP default browser if they configured it to be non-default 3. Edgium if it&rsquo;s available 4. iexplore if it&rsquo;s not and it will return the first one we find in exactly that order. Adapted from: and from:
Description: Obtains the default browser for the Windows platform which by now should be Edgium in the worst-case scenario but in case it isn&rsquo;t we can use this function to figure it out. It can find: 1. The current user&rsquo;s HTTPS default browser if they configured it to be non-default 2. The current user&rsquo;s HTTP default browser if they configured it to be non-default 3. Edgium if it&rsquo;s available 4. iexplore if it&rsquo;s not and it will return the first one we find in exactly that order. Adapted from:
<br />
</li>
<li>
@ -266,7 +286,7 @@
Modifiers: static
</li>
<li>
return: String
return: path to command[0] and target URL[1] to the default browser ready for execution or null if not found
<br />
</li>
</ul>
@ -274,25 +294,117 @@
This method has no parameters.
</p>
<h3>
getDefaultOutOfRegistry
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L118">
registryQuery
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L142">
[src]
</a>
</h3>
<ul>
<li>
Description: obtains information out of the Windows registry.
Description: obtains a value matching a key contained in the windows registry at a path represented by hkeyquery
<br />
</li>
<li>
Access: public
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: String
return: either a registry &ldquo;Default&rdquo; value or null if one does not exist/is empty
<br />
</li>
</ul>
<p>
| Name | Type | Description |
<br />
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| hkeyquery | String | registry entry to ask for. |
<br />
| key | String | key to retrieve value from |
</p>
<h3>
followUserConfiguredBrowserToCommand
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L180">
[src]
</a>
</h3>
<ul>
<li>
Description: If following a query back to the Default value doesn&rsquo;t work then what we have is a &ldquo;ProgID&rdquo; which will be registered in \HKEY_CLASSES_ROOT\%ProgId% and will have an entry \shell\open\command where \shell\open\command yields the value that contains the command it needs. This function takes a registry query in the same format as getDefaultOutOfRegistry but instead of looking for the default entry
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: the command required to run the application referenced in hkeyquery or null
<br />
</li>
</ul>
<p>
| Name | Type | Description |
<br />
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| hkeyquery | String | |
</p>
<h3>
followProgIdToCommand
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L196">
[src]
</a>
</h3>
<ul>
<li>
Description: Cross-references a progId obtained by followUserConfiguredBrowserToCommand against HKEY_CLASSES_ROOT\%ProgId%\shell\open\command which holds the value of the command which we need to run to launch the default browser.
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: the command required to run the application referenced in hkeyquery or null
<br />
</li>
</ul>
<p>
| Name | Type | Description |
<br />
| &mdash;&ndash; | &mdash;&ndash; | &mdash;&ndash; |
<br />
| progid | String | |
</p>
<h3>
getDefaultOutOfRegistry
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L215">
[src]
</a>
</h3>
<ul>
<li>
Description: obtains a default browsing command out of the Windows registry.
<br />
</li>
<li>
Access: private
<br />
</li>
<li>
Modifiers: static
</li>
<li>
return: either a registry &ldquo;Default&rdquo; value or null if one does not exist/is empty
<br />
</li>
</ul>
@ -305,7 +417,7 @@
</p>
<h3>
scanAPath
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L144">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L230">
[src]
</a>
</h3>
@ -335,7 +447,7 @@
</p>
<h3>
getAnyUnixBrowser
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L159">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L245">
[src]
</a>
</h3>
@ -361,7 +473,7 @@
</p>
<h3>
findUnsafeBrowserAnywhere
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L178">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L264">
[src]
</a>
</h3>
@ -387,7 +499,7 @@
</p>
<h3>
deleteRuntimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L229">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L315">
[src]
</a>
</h3>
@ -413,7 +525,7 @@
</p>
<h3>
runtimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L245">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L331">
[src]
</a>
</h3>
@ -443,7 +555,7 @@
</p>
<h3>
runtimeDirectory
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L256">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L343">
[src]
</a>
</h3>
@ -469,7 +581,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L278">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L365">
[src]
</a>
</h3>
@ -492,7 +604,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L288">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L375">
[src]
</a>
</h3>
@ -519,7 +631,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L300">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L387">
[src]
</a>
</h3>
@ -548,7 +660,7 @@
</p>
<h3>
waitForProxy
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L314">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L401">
[src]
</a>
</h3>
@ -579,7 +691,7 @@
</p>
<h3>
launchAndDetatch
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L328">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L415">
[src]
</a>
</h3>
@ -608,7 +720,7 @@
</p>
<h3>
launch
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L350">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L437">
[src]
</a>
</h3>
@ -637,7 +749,7 @@
</p>
<h3>
sleep
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L368">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L455">
[src]
</a>
</h3>
@ -667,7 +779,7 @@
</p>
<h3>
ValidURL
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L376">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L463">
[src]
</a>
</h3>
@ -697,7 +809,7 @@
</p>
<h3>
checkifPortIsOccupied
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L386">
<a href="src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L473">
[src]
</a>
</h3>

View File

@ -18,10 +18,15 @@ package: net.i2p.i2pfirefox
</summary>
<ul>
<li>java.io.File</li>
<li>java.io.FileOutputStream</li>
<li>java.io.IOException</li>
<li>java.io.OutputStream</li>
<li>java.net.Socket</li>
<li>java.util.ArrayList</li>
<li>java.util.Arrays</li>
<li>java.util.List</li>
<li>java.util.Scanner</li>
<li>java.util.stream.Collectors</li>
</ul>
</details>
@ -49,29 +54,66 @@ package: net.i2p.i2pfirefox
## Methods
### getDefaultWindowsBrowser [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L90)
### getDefaultWindowsBrowser [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L101)
+ Description: Obtains the default browser for the Windows platform which by now should be Edgium in the worst-case scenario but in case it isn't we can use this function to figure it out. It can find: 1. The current user's HTTPS default browser if they configured it to be non-default 2. The current user's HTTP default browser if they configured it to be non-default 3. Edgium if it's available 4. iexplore if it's not and it will return the first one we find in exactly that order. Adapted from: and from:
+ Description: Obtains the default browser for the Windows platform which by now should be Edgium in the worst-case scenario but in case it isn't we can use this function to figure it out. It can find: 1. The current user's HTTPS default browser if they configured it to be non-default 2. The current user's HTTP default browser if they configured it to be non-default 3. Edgium if it's available 4. iexplore if it's not and it will return the first one we find in exactly that order. Adapted from:
+ Access: public
+ Modifiers: static
+ return: String
+ return: path to command[0] and target URL[1] to the default browser ready for execution or null if not found
This method has no parameters.
### getDefaultOutOfRegistry [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L118)
### registryQuery [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L142)
+ Description: obtains information out of the Windows registry.
+ Access: public
+ Description: obtains a value matching a key contained in the windows registry at a path represented by hkeyquery
+ Access: private
+ Modifiers: static
+ return: String
+ return: either a registry "Default" value or null if one does not exist/is empty
| Name | Type | Description |
| ----- | ----- | ----- |
| hkeyquery | String | registry entry to ask for. |
| key | String | key to retrieve value from |
### followUserConfiguredBrowserToCommand [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L180)
+ Description: If following a query back to the Default value doesn't work then what we have is a "ProgID" which will be registered in \HKEY_CLASSES_ROOT\%ProgId% and will have an entry \shell\open\command where \shell\open\command yields the value that contains the command it needs. This function takes a registry query in the same format as getDefaultOutOfRegistry but instead of looking for the default entry
+ Access: private
+ Modifiers: static
+ return: the command required to run the application referenced in hkeyquery or null
| Name | Type | Description |
| ----- | ----- | ----- |
| hkeyquery | String | |
### followProgIdToCommand [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L196)
+ Description: Cross-references a progId obtained by followUserConfiguredBrowserToCommand against HKEY_CLASSES_ROOT\%ProgId%\shell\open\command which holds the value of the command which we need to run to launch the default browser.
+ Access: private
+ Modifiers: static
+ return: the command required to run the application referenced in hkeyquery or null
| Name | Type | Description |
| ----- | ----- | ----- |
| progid | String | |
### getDefaultOutOfRegistry [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L215)
+ Description: obtains a default browsing command out of the Windows registry.
+ Access: private
+ Modifiers: static
+ return: either a registry "Default" value or null if one does not exist/is empty
| Name | Type | Description |
| ----- | ----- | ----- |
| hkeyquery | String | registry entry to ask for. |
### scanAPath [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L144)
### scanAPath [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L230)
+ Description:
+ Access: private
@ -83,7 +125,7 @@ This method has no parameters.
| dir | String | |
### getAnyUnixBrowser [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L159)
### getAnyUnixBrowser [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L245)
+ Description: Find any browser in our list within a UNIX path
+ Access: public
@ -93,7 +135,7 @@ This method has no parameters.
This method has no parameters.
### findUnsafeBrowserAnywhere [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L178)
### findUnsafeBrowserAnywhere [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L264)
+ Description: Find any usable browser and output the whole path
+ Access: public
@ -103,7 +145,7 @@ This method has no parameters.
This method has no parameters.
### deleteRuntimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L229)
### deleteRuntimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L315)
+ Description: delete the runtime directory
+ Access: public
@ -113,7 +155,7 @@ This method has no parameters.
This method has no parameters.
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L245)
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L331)
+ Description: get the runtime directory creating it if create=true
+ Access: public
@ -125,7 +167,7 @@ This method has no parameters.
| create | boolean | if true create the runtime directory if it does not exist |
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L256)
### runtimeDirectory [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L343)
+ Description: get the correct runtime directory
+ Access: public
@ -135,7 +177,7 @@ This method has no parameters.
This method has no parameters.
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L278)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L365)
+ Description: Waits for an HTTP proxy on port 4444 to be ready. Returns false on timeout of 200 seconds.
+ Access: public
@ -144,7 +186,7 @@ This method has no parameters.
This method has no parameters.
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L288)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L375)
+ Description: Waits for an HTTP proxy on port 4444 to be ready. Returns false on timeout of the specified number of seconds.
+ Access: public
@ -155,7 +197,7 @@ This method has no parameters.
| timeout | int | the number of seconds to wait for the proxy to be ready. |
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L300)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L387)
+ Description: Waits for an HTTP proxy on the specified port to be ready. Returns false on timeout of the specified number of seconds.
+ Access: public
@ -167,7 +209,7 @@ This method has no parameters.
| port | int | the port to wait for the proxy to be ready on. |
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L314)
### waitForProxy [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L401)
+ Description: Waits for an HTTP proxy on the specified port to be ready. Returns false on timeout of the specified number of seconds.
+ Access: public
@ -180,7 +222,7 @@ This method has no parameters.
| host | String | the host to wait for the proxy to be ready on. |
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L328)
### launchAndDetatch [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L415)
+ Description:
+ Access: public
@ -192,7 +234,7 @@ This method has no parameters.
| url | String[] | |
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L350)
### launch [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L437)
+ Description:
+ Access: public
@ -204,7 +246,7 @@ This method has no parameters.
| url | String[] | |
### sleep [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L368)
### sleep [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L455)
+ Description:
+ Access: private
@ -216,7 +258,7 @@ This method has no parameters.
| millis | int | |
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L376)
### ValidURL [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L463)
+ Description:
+ Access: private
@ -228,7 +270,7 @@ This method has no parameters.
| inUrl | String | |
### checkifPortIsOccupied [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L386)
### checkifPortIsOccupied [[src]](src/java/net/i2p/i2pfirefox/I2PGenericUnsafeBrowser.java#L473)
+ Description:
+ Access: private

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES

View File

@ -44,7 +44,7 @@ directory for Firefox, and the `src/i2p.chromium.*.profile/extensions/*.js/*` di
```sh
mkdir ~/tmp-i2pfirefox && cd ~/tmp-i2pfirefox
wget https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pfirefox.zip
wget https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.2/i2pfirefox.zip
unzip i2pfirefox.zip
./i2pfirefox.cmd
@ -220,7 +220,9 @@ pointless and terrible. Literally any other browser would be better.
- Linux is unaware of a Tor Browser path because Tor Browser is rarely, if ever,
installed on-path. What is on path is virtually always a wrapper for Tor Browser
which is installed either as the main user or it's own user. Linux will only use
Tor Browser if it's discovered in "Local" mode.
Tor Browser if it's discovered in "Local" mode. To set this up automatically, you
can `cd` to the `I2P` directory where you unpacked the `.tar.gz` file, and run the
`./lib/torbrowser.sh` script from there.
- I really only test Phase 3 with Dillo and Edgium. **YMMV.**
### Usability vs Strict

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -139,47 +144,47 @@
/
</a>
<h1>
Sums for release 0.0.34
Sums for release 1.0.1
</h1>
<ul>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pfirefox.jar">
d324173b6e9fb78dbb9eb8363d094cab3803ee3279d266dba42500be7f558305 i2pfirefox.jar
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pfirefox.jar">
aab5ca950b1cdd61a3898f1ec69b2d1c3f6540224c09f1d59b8662f30b3783cc i2pfirefox.jar
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pfirefox.zip">
8a2f18d79d0b2ee67bc7904dce48f42ddb8c0df6ed30779f8c315c80e0ac0ece i2pfirefox.zip
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pfirefox.zip">
b145d679c1b0dff7eb270e1be8b4176ca9517e5c1c0ee7f66542ce40e8479702 i2pfirefox.zip
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser.zip">
baa6b9443e5750d3ef6ea9685656cc28830b9d0dbcc745cde68cfadde8e98b31 i2pbrowser.zip
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser.zip">
f34f908aa84192f0fcb0397a486cf76f951a13a80ae812e1e0e90e1563c12c96 i2pbrowser.zip
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser_0.0.34_amd64.deb">
63a36b615998f318b4dba8026cb246c0e7df4c4bb379ad04144c7de3e2250e8d i2pbrowser_0.0.34_amd64.deb
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser_1.0.1_amd64.deb">
31a2ac376c629c2aefc75e643d0352a735197ae83683da3ad5a6bf6705e3a3ea i2pbrowser_1.0.1_amd64.deb
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser-0.0.34-1.x86_64.rpm">
c2743a5a1f95786d9c496162ff786d9b753d7eb24ff1bd90047317f7e8d242bf i2pbrowser-0.0.34-1.x86_64.rpm
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser-1.0.1-1.x86_64.rpm">
3e0f84327572c62527181d0995042f5b67efacc601563791e0b678db582297af i2pbrowser-1.0.1-1.x86_64.rpm
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser.msi">
62282fe664837e8f81b0b0f89ced0def6852838b825bf30a745c1bd403bd4151 i2pbrowser.msi
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser.msi">
f0bba16df930dca2371f4e7d8473e89da96c629a15f89379a6b8b7025e8a3486 i2pbrowser.msi
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser.exe">
930fca054cf1754c52a477de3476c9bb0d618e2c1e92ea4b8aca6a0363efde27 i2pbrowser.exe
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser.exe">
db497b1bdc3989c6e990143ae49905bdcd3bd7f0a27537d1ad8385fe66529b73 i2pbrowser.exe
</a>
</li>
<li>
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser-portable.zip">
a84bea6ed996fa8c5535df1950a42d7d31197e8526c6a328d9098b716512d3d3 i2pbrowser-portable.zip
<a href="https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser-portable.zip">
4b86dd111d82eab8d4a16d399beec6ce7e568d4d49d1fe7321d03b878afec831 i2pbrowser-portable.zip
</a>
</li>
</ul>

View File

@ -1,12 +1,12 @@
Sums for release 0.0.34
Sums for release 1.0.1
==============================
- [d324173b6e9fb78dbb9eb8363d094cab3803ee3279d266dba42500be7f558305 i2pfirefox.jar](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pfirefox.jar)
- [8a2f18d79d0b2ee67bc7904dce48f42ddb8c0df6ed30779f8c315c80e0ac0ece i2pfirefox.zip](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pfirefox.zip)
- [baa6b9443e5750d3ef6ea9685656cc28830b9d0dbcc745cde68cfadde8e98b31 i2pbrowser.zip](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser.zip)
- [63a36b615998f318b4dba8026cb246c0e7df4c4bb379ad04144c7de3e2250e8d i2pbrowser_0.0.34_amd64.deb](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser_0.0.34_amd64.deb)
- [c2743a5a1f95786d9c496162ff786d9b753d7eb24ff1bd90047317f7e8d242bf i2pbrowser-0.0.34-1.x86_64.rpm](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser-0.0.34-1.x86_64.rpm)
- [62282fe664837e8f81b0b0f89ced0def6852838b825bf30a745c1bd403bd4151 i2pbrowser.msi](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser.msi)
- [930fca054cf1754c52a477de3476c9bb0d618e2c1e92ea4b8aca6a0363efde27 i2pbrowser.exe](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser.exe)
- [a84bea6ed996fa8c5535df1950a42d7d31197e8526c6a328d9098b716512d3d3 i2pbrowser-portable.zip](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/0.0.34/i2pbrowser-portable.zip)
- [aab5ca950b1cdd61a3898f1ec69b2d1c3f6540224c09f1d59b8662f30b3783cc i2pfirefox.jar](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pfirefox.jar)
- [b145d679c1b0dff7eb270e1be8b4176ca9517e5c1c0ee7f66542ce40e8479702 i2pfirefox.zip](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pfirefox.zip)
- [f34f908aa84192f0fcb0397a486cf76f951a13a80ae812e1e0e90e1563c12c96 i2pbrowser.zip](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser.zip)
- [31a2ac376c629c2aefc75e643d0352a735197ae83683da3ad5a6bf6705e3a3ea i2pbrowser_1.0.1_amd64.deb](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser_1.0.1_amd64.deb)
- [3e0f84327572c62527181d0995042f5b67efacc601563791e0b678db582297af i2pbrowser-1.0.1-1.x86_64.rpm](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser-1.0.1-1.x86_64.rpm)
- [f0bba16df930dca2371f4e7d8473e89da96c629a15f89379a6b8b7025e8a3486 i2pbrowser.msi](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser.msi)
- [db497b1bdc3989c6e990143ae49905bdcd3bd7f0a27537d1ad8385fe66529b73 i2pbrowser.exe](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser.exe)
- [4b86dd111d82eab8d4a16d399beec6ce7e568d4d49d1fe7321d03b878afec831 i2pbrowser-portable.zip](https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pbrowser-portable.zip)

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -145,14 +150,14 @@
Firefox
</h2>
<pre><code class="language-md">i2p-in-private-browsing
0.134
https://addons.mozilla.org/firefox/downloads/file/3953182/i2p_in_private_browsing-0.134.xpi
1.40
https://addons.mozilla.org/firefox/downloads/file/4016633/i2p_in_private_browsing-1.40.xpi
noscript
11.4.11
https://addons.mozilla.org/firefox/downloads/file/4002416/noscript-11.4.11.xpi
localcdn-fork-of-decentraleyes
2.6.36
https://addons.mozilla.org/firefox/downloads/file/4009967/localcdn_fork_of_decentraleyes-2.6.36.xpi
2.6.38
https://addons.mozilla.org/firefox/downloads/file/4017192/localcdn_fork_of_decentraleyes-2.6.38.xpi
https-everywhere
2021.7.13
https://addons.mozilla.org/firefox/downloads/file/3809748/https_everywhere-2021.7.13.xpi

View File

@ -6,14 +6,14 @@ Extension Versions
```md
i2p-in-private-browsing
0.134
https://addons.mozilla.org/firefox/downloads/file/3953182/i2p_in_private_browsing-0.134.xpi
1.40
https://addons.mozilla.org/firefox/downloads/file/4016633/i2p_in_private_browsing-1.40.xpi
noscript
11.4.11
https://addons.mozilla.org/firefox/downloads/file/4002416/noscript-11.4.11.xpi
localcdn-fork-of-decentraleyes
2.6.36
https://addons.mozilla.org/firefox/downloads/file/4009967/localcdn_fork_of_decentraleyes-2.6.36.xpi
2.6.38
https://addons.mozilla.org/firefox/downloads/file/4017192/localcdn_fork_of_decentraleyes-2.6.38.xpi
https-everywhere
2021.7.13
https://addons.mozilla.org/firefox/downloads/file/3809748/https_everywhere-2021.7.13.xpi

View File

@ -1 +1 @@
arkenfox.number=104.0
arkenfox.number=105.0

15
browser.config Normal file
View File

@ -0,0 +1,15 @@
#Firefox Configuration Section
#Sat Oct 22 23:43:17 EDT 2022
chromium.bins.osx=ungoogled-chromium,chromium,brave,edge,ungoogled-chromium,chrome
chromium.bins.windows=ungoogled-chromium.exe,chromium.exe,brave.exe,edge.exe,ungoogled-chromium.exe,chrome.exe
firefox.bins.windows=firefox.exe,firefox-bin.exe,firefox-esr.exe,waterfox.exe,waterfox-bin.exe,librewolf.exe
firefox.bins.linux=firefox,firefox-bin,firefox-esr,waterfox,waterfox-bin,librewolf
chromium.paths.windows=/Google/Chrome/Application,/Google/Chrome/Application,/Google/Chrome/Application,/Chromium/Application,/Chromium/Application,/Chromium/Application,/BraveSoftware/Brave Browser/Application,/BraveSoftware/Brave Browser/Application,/BraveSoftware/Brave Browser/Application,/Microsoft/Edge/Application,/Microsoft/Edge/Application
firefox.paths.windows=/home/idk/OneDrive/Desktop/Tor Browser/Browser,/home/idk/Desktop/Tor Browser/Browser,Mozilla Firefox,Mozilla Firefox,Waterfox,Waterfox,Librewolf
firefox.paths.osx=/Applications/Tor Browser.app/Contents/MacOS,/Applications/Firefox.app/Contents/MacOS,/Applications/Waterfox.app/Contents/MacOS,/Applications/Librewolf.app/Contents/MacOS
chromium.bins.linux=ungoogled-chromium,chromium,brave,edge,ungoogled-chromium,chrome
firefox.bins.osx=firefox,firefox-bin,firefox-esr,waterfox,waterfox-bin,librewolf
chromium.paths.osx=/Applications/Chromium.app/Contents/MacOS,/Applications/Chrome.app/Contents/MacOS,/Applications/Brave.app/Contents/MacOS
chromium.paths.linux=/usr/bin,/usr/local/bin,/opt/chromium/bin,/snap/bin
firefox.paths.linux=/usr/bin,/usr/local/bin,/opt/firefox/bin,/snap/bin
generic.bins.unix=sensible-browser,xdg-open,x-www-browser,gnome-www-browser,defaultbrowser,dillo,seamonkey,konqueror,galeon,surf,www-browser,links,lynx

View File

@ -8,6 +8,15 @@
<ant dir="src" target="build" />
</target>
<target name="tarball">
<exec executable="git">
<arg value="archive"/>
<arg value="--format=tar.gz"/>
<arg value="--output=i2p.plugins.firefox.tar.gz"/>
<arg value="main"/>
</exec>
</target>
<target name="examples" >
<exec executable="echo">
<redirector output="USAGE.md"/>
@ -178,6 +187,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="i2p.firefox.base.profile.zip" />
</exec>
<exec executable="dzip" failonerror="true" dir="src">
<arg value="-O"/>
<arg value="i2p.firefox.base.profile.zip"/>
<arg value="i2p.firefox.base.profile"/>
</exec>
@ -189,6 +199,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="i2p.firefox.usability.profile.zip" />
</exec>
<exec executable="dzip" failonerror="true" dir="src">
<arg value="-O"/>
<arg value="i2p.firefox.usability.profile.zip"/>
<arg value="i2p.firefox.usability.profile"/>
</exec>
@ -200,6 +211,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="i2p.chromium.base.profile.zip" />
</exec>
<exec executable="dzip" failonerror="true" dir="src">
<arg value="-O"/>
<arg value="i2p.chromium.base.profile.zip"/>
<arg value="i2p.chromium.base.profile"/>
</exec>
@ -211,6 +223,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="i2p.chromium.usability.profile.zip" />
</exec>
<exec executable="dzip" failonerror="true" dir="src">
<arg value="-O"/>
<arg value="i2p.chromium.usability.profile.zip"/>
<arg value="i2p.chromium.usability.profile"/>
</exec>
@ -222,6 +235,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="i2pbrowser.zip" />
</exec>
<exec executable="dzip" failonerror="true">
<arg value="-O"/>
<arg value="i2pfirefox.zip"/>
<arg value="src/build/i2pfirefox.jar"/>
<arg value="i2pfirefox.cmd"/>
@ -325,7 +339,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<target name="buildNum">
<buildnumber file="scripts/build.number" />
<property name="release.number" value="1.0.1" />
<property name="release.number" value="1.0.2" />
<exec executable="echo" osfamily="unix">
<arg value="${release.number}-${build.number}" />
</exec>
@ -414,6 +428,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<delete>
<fileset dir="." includes="*/*.~ **/*.*~ */**/*.*~ *.*~" />
</delete>
<delete dir="user.js" />
<delete dir="i2p.firefox.base.profile" />
<delete dir="i2p.firefox.usability.profile" />
<delete dir="i2p.firefox.profile" />
@ -451,6 +466,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="--type"/> <arg value="app-image"/>
<arg value="--name"/> <arg value="i2pbrowser"/>
<arg value="--app-version"/> <arg value="${release_number}"/>
<arg value="--app-content"/> <arg value="etc/scripts/torbrowser.sh"/>
<arg value="--input"/> <arg value="src/build"/>
<arg value="--main-jar"/> <arg value="i2pfirefox.jar"/>
<arg value="--main-class"/> <arg value="net.i2p.i2pfirefox.I2PBrowser"/>
@ -460,6 +476,7 @@ Linux(because the top command will be run and the script will exit).\n\nBoth det
<arg value="i2pbrowser.zip" />
</exec>
<exec executable="dzip" failonerror="true">
<arg value="-O"/>
<arg value="i2pbrowser.zip"/>
<arg value="i2pbrowser"/>
</exec>

View File

@ -1,6 +1,6 @@
#! /usr/bin/env sh
export GITHUB_USER=eyedeekay
export GITHUB_REPO=i2p.plugins.firefox
export GITHUB_NAME="Make OSX support as good as everywhere else"
export GITHUB_NAME="Completes features for PWA-Like mode by flattening UI onto one toolbar"
export GITHUB_DESCRIPTION=$(cat CHANGES.md VERSION.md)
export GITHUB_TAG=1.0.1
export GITHUB_TAG=1.0.2

View File

@ -1,4 +1,10 @@
#!/bin/sh
#!/bin/bash
TORSOCKS=$(which torsocks)
if [ -f "${TORSOCKS}" ]; then
. "${TORSOCKS}" on
fi
version="$(curl -s https://aus1.torproject.org/torbrowser/update_3/release/downloads.json | jq -r ".version")"
locale="en-US" # mention your locale. default = en-US
if [ -d /etc/default/locale ]; then
@ -11,12 +17,11 @@ if [ ! -f ./tor.keyring ]; then
gpg --output ./tor.keyring --export torbrowser@torproject.org
fi
if [ ! -f "tor-browser-linux64-"$version"_"$locale".tar.xz" ]; then
wget -cv "https://www.torproject.org/dist/torbrowser/"$version"/tor-browser-linux64-"$version"_"$locale".tar.xz"
wget -cv "https://www.torproject.org/dist/torbrowser/"$version"/tor-browser-linux64-"$version"_"$locale".tar.xz.asc"
if [ ! -f "tor-browser-linux64-${version}_${locale}.tar.xz" ]; then
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${locale}.tar.xz"
wget -cv "https://www.torproject.org/dist/torbrowser/${version}/tor-browser-linux64-${version}_${locale}.tar.xz.asc"
fi
gpgv --keyring ./tor.keyring "tor-browser-linux64-"$version"_"$locale".tar.xz.asc" "tor-browser-linux64-"$version"_"$locale".tar.xz"
tar xvJf "tor-browser-linux64-"$version"_"$locale".tar.xz"
gpgv --keyring ./tor.keyring "tor-browser-linux64-${version}_${locale}.tar.xz.asc" "tor-browser-linux64-${version}_${locale}.tar.xz"
tar xvJf "tor-browser-linux64-${version}_${locale}.tar.xz"

View File

@ -32,6 +32,11 @@
CHANGES
</a>
</li>
<li>
<a href="CONFIG.html">
CONFIG.html
</a>
</li>
<li>
<a href="EXAMPLES.html">
EXAMPLES
@ -240,7 +245,7 @@
</h3>
<pre><code class="language-sh">
mkdir ~/tmp-i2pfirefox &amp;&amp; cd ~/tmp-i2pfirefox
wget https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.1/i2pfirefox.zip
wget https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/1.0.2/i2pfirefox.zip
unzip i2pfirefox.zip
./i2pfirefox.cmd
@ -496,7 +501,24 @@ if (i2pIsRunning()) {
Linux is unaware of a Tor Browser path because Tor Browser is rarely, if ever,
installed on-path. What is on path is virtually always a wrapper for Tor Browser
which is installed either as the main user or it&rsquo;s own user. Linux will only use
Tor Browser if it&rsquo;s discovered in &ldquo;Local&rdquo; mode.
Tor Browser if it&rsquo;s discovered in &ldquo;Local&rdquo; mode. To set this up automatically, you
can
<code>
cd
</code>
to the
<code>
I2P
</code>
directory where you unpacked the
<code>
.tar.gz
</code>
file, and run the
<code>
./lib/torbrowser.sh
</code>
script from there.
</li>
<li>
I really only test Phase 3 with Dillo and Edgium.

View File

@ -1,6 +1,5 @@
#! /usr/bin/env bash
ant distclean
rm -rf docs
~/.cargo/bin/lojidoc src/java/net/i2p/i2pfirefox/ -s -l > report.log

View File

@ -8,4 +8,4 @@ READMELINE=`grep 'i2p.plugins.firefox/releases/download' README.md`
sed -i "s|${READMELINE}|wget https://github.com/eyedeekay/i2p.plugins.firefox/releases/download/${GITHUB_TAG}/i2pfirefox.zip|g" README.md
sed -i "s|${NUMLINE}| <property name=\"release.number\" value=\"$GITHUB_TAG\" />|g" build.xml
edgar && git push --all
ant versionMd jar freeZip jpackage debian fedora
ant distclean tarball versionMd jar freeZip jpackage debian fedora

View File

@ -2,6 +2,7 @@
. ./config.sh
./preprelease.sh
./profiles-upload.sh
github-release release --user "${GITHUB_USER}" \
--repo "${GITHUB_REPO}" \
--name "${GITHUB_NAME}" \
@ -14,14 +15,20 @@ github-release edit --user "${GITHUB_USER}" \
--description "${GITHUB_DESCRIPTION}" \
--tag "${GITHUB_TAG}"; true
echo "Relase ${GITHUB_TAG} setup"
tarsum=$(sha256sum i2p.plugins.firefox.tar.gz)
github-release upload --user "${GITHUB_USER}" \
--repo "${GITHUB_REPO}" \
--tag "${GITHUB_TAG}" \
--label "I2P Browser launcher source tarball. ${tarsum}" \
--name "i2p.plugins.firefox-${GITHUB_TAG}.tar.gz" \
--file "i2p.plugins.firefox.tar.gz"
jarsum=$(sha256sum "src/build/i2pfirefox.jar")
github-release upload --user "${GITHUB_USER}" \
--repo "${GITHUB_REPO}" \
--tag "${GITHUB_TAG}" \
--label "I2P Browser launcher as a .jar. Useful as a library or for advanced users. ${jarsum}" \
--name "i2pfirefox.jar" \
--file "src/build/i2pfirefox.jar" \
--replace
--file "src/build/i2pfirefox.jar"
echo "Uploaded jar"
zipsum=$(sha256sum "i2pfirefox.zip")
github-release upload --user "${GITHUB_USER}" \
@ -29,8 +36,7 @@ github-release upload --user "${GITHUB_USER}" \
--tag "${GITHUB_TAG}" \
--label "I2P Browser launcher as a .jar and a set of semi-univeral launcher scripts. ${zipsum}" \
--name "i2pfirefox.zip" \
--file "i2pfirefox.zip" \
--replace
--file "i2pfirefox.zip"
echo "Uploaded freestanding zip"
jvmsum=$(sha256sum "i2pbrowser.zip")
github-release upload --user "${GITHUB_USER}" \
@ -38,8 +44,7 @@ github-release upload --user "${GITHUB_USER}" \
--tag "${GITHUB_TAG}" \
--label "I2P Browser launcher as a Jpackage, does not require a JVM. ${jvmsum}" \
--name "i2pbrowser.zip" \
--file "i2pbrowser.zip" \
--replace
--file "i2pbrowser.zip"
echo "Uploaded jpackage zip"
debsum=$(sha256sum "i2pbrowser_${GITHUB_TAG}_amd64.deb")
github-release upload --user "${GITHUB_USER}" \
@ -47,8 +52,7 @@ github-release upload --user "${GITHUB_USER}" \
--tag "${GITHUB_TAG}" \
--label "I2P Browser launcher as a Jpackage inside of a Debian package. ${debsum}" \
--name "i2pbrowser_${GITHUB_TAG}_amd64.deb" \
--file "i2pbrowser_${GITHUB_TAG}_amd64.deb" \
--replace
--file "i2pbrowser_${GITHUB_TAG}_amd64.deb"
echo "Uploaded debian package"
rpmsum=$(sha256sum i2pbrowser-${GITHUB_TAG}-1.x86_64.rpm)
github-release upload --user "${GITHUB_USER}" \
@ -56,8 +60,7 @@ github-release upload --user "${GITHUB_USER}" \
--tag "${GITHUB_TAG}" \
--label "I2P Browser launcher as a Jpackage inside of a Fedora package. ${rpmsum}" \
--name "i2pbrowser-${GITHUB_TAG}-1.x86_64.rpm" \
--file "i2pbrowser-${GITHUB_TAG}-1.x86_64.rpm" \
--replace
--file "i2pbrowser-${GITHUB_TAG}-1.x86_64.rpm"
echo "Uploaded fedora package"
git pull github --tags

View File

@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
#Sat Oct 01 21:07:15 EDT 2022
build.number=115
#Sun Oct 23 01:34:16 EDT 2022
build.number=130

View File

@ -46,6 +46,7 @@
<fileset file="i2p.firefox.usability.profile.zip" />
<fileset file="i2p.chromium.base.profile.zip" />
<fileset file="i2p.chromium.usability.profile.zip" />
<fileset file="icon.png" />
</jar>
</target>

Binary file not shown.

View File

@ -1,5 +1,5 @@
Profile Version
===============
1.0.1-114
1.0.2-129

View File

@ -1,5 +1,5 @@
Profile Version
===============
1.0.1-114
1.0.2-129

Binary file not shown.

View File

@ -1,5 +1,5 @@
Profile Version
===============
1.0.1-114
1.0.2-129

View File

@ -1,5 +1,5 @@
Profile Version
===============
1.0.1-114
1.0.2-129

BIN
src/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View File

@ -1,6 +1,22 @@
package net.i2p.i2pfirefox;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
/**
* I2PBrowser.java
@ -30,21 +46,29 @@ public class I2PBrowser extends I2PCommonBrowser {
public boolean generic = false;
public boolean chromiumFirst = false;
public boolean usability = false;
static private boolean outputConfig = false;
static private boolean useSystray = true;
private void launchFirefox(int privateWindow, String[] url) {
logger.info("I2PFirefox" + privateWindow);
I2PFirefox.usability = usability;
if (outputConfig)
i2pFirefox.storeFirefoxDefaults();
i2pFirefox.launch(privateWindow, url);
}
private void launchChromium(int privateWindow, String[] url) {
logger.info("I2PChromium" + privateWindow);
I2PChromiumProfileBuilder.usability = usability;
if (outputConfig)
i2pChromium.storeChromiumDefaults();
i2pChromium.launch(privateWindow, url);
}
private void launchGeneric(int privateWindowInt, String[] url) {
boolean privateWindow = false;
if (privateWindowInt == 1)
privateWindow = true;
if (outputConfig)
i2pGeneral.storeGenericDefaults();
logger.info("I2PGeneric" + privateWindowInt);
i2pGeneral.launch(privateWindow, url);
}
@ -116,8 +140,10 @@ public class I2PBrowser extends I2PCommonBrowser {
*/
public void launch(int privateWindow, String[] url) {
validateUserDir();
if (generic)
if (generic) {
this.launchGeneric(privateWindow, url);
return;
}
if ((chromium && firefox) || (!chromium && !firefox)) {
if (this.hasFirefox()) {
this.launchFirefox(privateWindow, url);
@ -204,10 +230,22 @@ public class I2PBrowser extends I2PCommonBrowser {
if (arg.equals("-usability")) {
i2pBrowser.usability = true;
}
if (arg.equals("-strict")) {
i2pBrowser.usability = false;
}
if (arg.equals("-generic")) {
i2pBrowser.generic = true;
}
if (arg.equals("-app")) {
i2pBrowser.usability = true;
privateBrowsing = 2;
}
if (arg.equals("-outputconfig")) {
outputConfig = true;
}
if (arg.equals("-nosystray")) {
useSystray = false;
}
if (arg.equals("-noproxycheck")) {
logger.info("zeroing out proxy check");
i2pBrowser.setProxyTimeoutTime(0);
@ -218,7 +256,149 @@ public class I2PBrowser extends I2PCommonBrowser {
}
}
}
try {
if (useSystray) {
logger.info("Starting systray");
systray(args);
}
} catch (Exception e) {
logger.warning(e.toString());
}
i2pBrowser.launch(privateBrowsing,
visitURL.toArray(new String[visitURL.size()]));
}
private static boolean systrayIsRunningExternally() {
File systrayIsRunningFile =
new File(runtimeDirectory(""), "systray.running");
if (systrayIsRunningFile.exists()) {
logger.info("Systray is already running in another process");
return true;
}
try {
FileWriter myWriter = new FileWriter(systrayIsRunningFile);
myWriter.write("systray is running");
myWriter.close();
} catch (IOException ioe) {
logger.warning(ioe.toString());
return true;
}
return false;
}
private static void shutdownSystray() {
File systrayIsRunningFile =
new File(runtimeDirectory(""), "systray.running");
if (systrayIsRunningFile.exists())
systrayIsRunningFile.delete();
}
public static boolean systray(String[] args) throws Exception {
if (systrayIsRunningExternally()) {
return false;
}
if (!SystemTray.isSupported()) {
logger.warning("SystemTray is not supported");
return false;
}
SystemTray tray = SystemTray.getSystemTray();
Toolkit toolkit = Toolkit.getDefaultToolkit();
File iconFile = new File(runtimeDirectory(""), "icon.png");
if (!iconFile.exists()) {
InputStream resources =
I2PBrowser.class.getClassLoader().getResourceAsStream("icon.png");
OutputStream fos = new FileOutputStream(iconFile);
copy(resources, fos);
}
Image image = toolkit.getImage("icon.png");
PopupMenu menu = new PopupMenu();
Menu submenuStrict = new Menu("Strict Mode");
MenuItem launchRegularBrowserStrict = new MenuItem("Launch I2P Browser");
launchRegularBrowserStrict.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> argsList = new ArrayList<String>();
argsList.addAll(Arrays.asList(args));
argsList.add("-strict");
main(argsList.toArray(args));
}
});
submenuStrict.add(launchRegularBrowserStrict);
MenuItem launchPrivateBrowserStrict =
new MenuItem("Launch I2P Browser - Throwaway Session");
launchPrivateBrowserStrict.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> argsList =
new ArrayList<String>(Arrays.asList(new String[] {"-private"}));
argsList.addAll(Arrays.asList(args));
argsList.add("-strict");
main(argsList.toArray(args));
}
});
submenuStrict.add(launchPrivateBrowserStrict);
MenuItem launchConfigBrowserStrict = new MenuItem("Launch I2P Console");
launchConfigBrowserStrict.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> argsList = new ArrayList<String>(
Arrays.asList(new String[] {"-app", "http://127.0.0.1:7657"}));
argsList.addAll(Arrays.asList(args));
argsList.add("-strict");
main(argsList.toArray(args));
}
});
submenuStrict.add(launchConfigBrowserStrict);
menu.add(submenuStrict);
Menu submenuUsability = new Menu("Usability Mode");
MenuItem launchRegularBrowserUsability = new MenuItem("Launch I2P Browser");
launchRegularBrowserUsability.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> argsList = new ArrayList<String>();
argsList.addAll(Arrays.asList(args));
argsList.add("-usability");
main(argsList.toArray(args));
}
});
submenuUsability.add(launchRegularBrowserUsability);
MenuItem launchPrivateBrowserUsability =
new MenuItem("Launch I2P Browser - Throwaway Session");
launchPrivateBrowserUsability.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> argsList =
new ArrayList<String>(Arrays.asList(new String[] {"-private"}));
argsList.addAll(Arrays.asList(args));
argsList.add("-usability");
main(argsList.toArray(args));
}
});
submenuUsability.add(launchPrivateBrowserUsability);
MenuItem launchConfigBrowserUsability = new MenuItem("Launch I2P Console");
launchConfigBrowserUsability.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArrayList<String> argsList = new ArrayList<String>(
Arrays.asList(new String[] {"-app", "http://127.0.0.1:7657"}));
argsList.addAll(Arrays.asList(args));
argsList.add("-usability");
main(argsList.toArray(args));
}
});
submenuUsability.add(launchConfigBrowserUsability);
menu.add(submenuUsability);
MenuItem closeItem = new MenuItem("Close");
closeItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
shutdownSystray();
System.exit(0);
}
});
menu.add(closeItem);
TrayIcon icon = new TrayIcon(image, "I2P Browser Profile Controller", menu);
icon.setImageAutoSize(true);
tray.add(icon);
return true;
}
}

View File

@ -1,11 +1,15 @@
package net.i2p.i2pfirefox;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@ -53,12 +57,64 @@ public class I2PChromium extends I2PCommonBrowser {
I2PChromiumProfileBuilder.usability = true;
}
public static void storeChromiumDefaults() {
List<String> list = new ArrayList<String>();
list = Arrays.asList(chromiumPathsWindows());
prop.setProperty("chromium.paths.windows",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(chromiumPathsUnix());
prop.setProperty("chromium.paths.linux",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(chromiumPathsOSX());
prop.setProperty("chromium.paths.osx",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(chromiumBinsWindows());
prop.setProperty("chromium.bins.windows",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(chromiumBinsUnix());
prop.setProperty("chromium.bins.linux",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(chromiumBinsUnix());
prop.setProperty("chromium.bins.osx",
list.stream().collect(Collectors.joining(",")));
try (OutputStream fos = new FileOutputStream(
new File(runtimeDirectory(""), "browser.config"))) {
prop.store(fos, "Chromium Configuration Section");
} catch (IOException ioe) {
logger.warning(ioe.toString());
}
}
private static String[] chromiumPathsUnix() {
String chromiumPathsProp = prop.getProperty("chromium.paths.unix");
if (chromiumPathsProp != null)
if (!chromiumPathsProp.equals(""))
return chromiumPathsProp.split(",");
return new String[] {"/usr/bin", "/usr/local/bin", "/opt/chromium/bin",
"/snap/bin"};
}
private static String[] chromiumBinsUnix() {
String chromiumPathsProp;
if (isOSX()) {
chromiumPathsProp = prop.getProperty("chromium.bins.osx");
if (chromiumPathsProp != null)
if (!chromiumPathsProp.equals(""))
return chromiumPathsProp.split(",");
}
chromiumPathsProp = prop.getProperty("chromium.bins.unix");
if (chromiumPathsProp != null)
if (!chromiumPathsProp.equals(""))
return chromiumPathsProp.split(",");
return new String[] {"ungoogled-chromium", "chromium", "brave", "edge",
"ungoogled-chromium", "chrome"};
}
private static String[] FIND_CHROMIUM_SEARCH_PATHS_UNIX() {
String[] path = new String[] {"/usr/bin", "/usr/local/bin",
"/opt/chrome/bin", "/snap/bin"};
String[] exes =
new String[] {"ungoogled-chromium", "chromium", "brave", "edge",
"ungoogled-chromium", "chrome"};
String[] path = chromiumPathsUnix();
String[] exes = chromiumBinsUnix();
String[] exePath = new String[path.length * exes.length];
int i = 0;
for (String s : path) {
@ -69,23 +125,38 @@ public class I2PChromium extends I2PCommonBrowser {
}
return exePath;
}
private static String[] chromiumPathsOSX() {
String chromiumPathsProp = prop.getProperty("chromium.paths.osx");
if (chromiumPathsProp != null)
if (!chromiumPathsProp.equals(""))
return chromiumPathsProp.split(",");
return new String[] {"/Applications/Chromium.app/Contents/MacOS",
"/Applications/Chrome.app/Contents/MacOS",
"/Applications/Brave.app/Contents/MacOS"};
}
private static String[] FIND_CHROMIUM_SEARCH_PATHS_OSX() {
String[] path =
new String[] {"/Applications/Chromium.app", "/Applications/Chrome.app",
"/Applications/Brave.app"};
String[] exePath = new String[path.length];
String[] path = chromiumPathsOSX();
String[] exes = chromiumBinsUnix();
String[] exePath = new String[path.length * exes.length];
int i = 0;
for (String s : path) {
exePath[i] = s;
i++;
for (String exe : exes) {
exePath[i] = s + "/" + exe;
i++;
}
}
return exePath;
}
private static String[] FIND_CHROMIUM_SEARCH_PATHS_WINDOWS() {
private static String[] chromiumPathsWindows() {
String chromiumPathsProp = prop.getProperty("chromium.paths.windows");
if (chromiumPathsProp != null)
if (!chromiumPathsProp.equals(""))
return chromiumPathsProp.split(",");
String programFiles = System.getenv("ProgramFiles");
String localAppData = System.getenv("LOCALAPPDATA");
String programFiles86 = System.getenv("ProgramFiles(x86)");
String[] path = new String[] {
return new String[] {
new File(localAppData, "/Google/Chrome/Application/").toString(),
new File(programFiles, "/Google/Chrome/Application/").toString(),
new File(programFiles86, "/Google/Chrome/Application/").toString(),
@ -101,12 +172,19 @@ public class I2PChromium extends I2PCommonBrowser {
new File(programFiles86, "/Microsoft/Edge/Application/").toString(),
new File(programFiles, "/Microsoft/Edge/Application/").toString(),
};
String[] exes = new String[] {"ungoogled-chromium.exe",
"chromium.exe",
"brave.exe",
"msedge.exe",
"edge.exe",
"chrome.exe"};
}
private static String[] chromiumBinsWindows() {
String chromiumPathsProp = prop.getProperty("chromium.bins.windows");
if (chromiumPathsProp != null)
if (!chromiumPathsProp.equals(""))
return chromiumPathsProp.split(",");
return new String[] {
"ungoogled-chromium.exe", "chromium.exe", "brave.exe", "edge.exe",
"ungoogled-chromium.exe", "chrome.exe"};
}
private static String[] FIND_CHROMIUM_SEARCH_PATHS_WINDOWS() {
String[] path = chromiumPathsWindows();
String[] exes = chromiumBinsWindows();
String[] exePath = new String[path.length * exes.length];
int i = 0;
for (String s : path) {
@ -218,19 +296,6 @@ public class I2PChromium extends I2PCommonBrowser {
return new String[] {};
}
}
private static String getOperatingSystem() {
String os = System.getProperty("os.name");
if (os.startsWith("Windows")) {
return "Windows";
} else if (os.contains("Linux")) {
return "Linux";
} else if (os.contains("BSD")) {
return "BSD";
} else if (os.contains("Mac")) {
return "Mac";
}
return "Unknown";
}
/**
* Check our list of chrome paths for a valid chrome binary.
@ -436,7 +501,8 @@ public class I2PChromium extends I2PCommonBrowser {
String[] newArgs = new String[arglength + 32];
newArgs[0] = chrome;
newArgs[1] =
"--user-data-dir=" + I2PChromiumProfileBuilder.profileDirectory();
"--user-data-dir=" + I2PChromiumProfileBuilder.profileDirectory(
I2PChromiumProfileBuilder.usabilityMode());
newArgs[2] = "--proxy-server=http://127.0.0.1:4444";
newArgs[3] =
"--proxy-bypass-list=http://localhost:7657,http://127.0.0.1:7657";
@ -468,40 +534,42 @@ public class I2PChromium extends I2PCommonBrowser {
newArgs[29] = "--force-punycode-hostnames";
newArgs[30] = "--disable-sharing-hub";
if (!I2PChromiumProfileBuilder.usability) {
newArgs[31] = "--load-extension=" +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/i2pchrome.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/https-everywhere.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/noscript.js")
.getAbsolutePath();
newArgs[31] =
"--load-extension=" +
new File(I2PChromiumProfileBuilder.profileDirectory("base"),
"extensions/i2pchrome.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory("base"),
"extensions/https-everywhere.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory("base"),
"extensions/noscript.js")
.getAbsolutePath();
} else {
newArgs[31] = "--load-extension=" +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/i2pchrome.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/https-everywhere.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/jshelter.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/localcdn.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory(),
"extensions/ublock.js")
.getAbsolutePath();
newArgs[31] =
"--load-extension=" +
new File(I2PChromiumProfileBuilder.profileDirectory("usability"),
"extensions/i2pchrome.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory("usability"),
"extensions/https-everywhere.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory("usability"),
"extensions/jshelter.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory("usability"),
"extensions/localcdn.js")
.getAbsolutePath() +
"," +
new File(I2PChromiumProfileBuilder.profileDirectory("usability"),
"extensions/ublock.js")
.getAbsolutePath();
}
if (args != null) {
if (arglength > 0) {
@ -511,7 +579,6 @@ public class I2PChromium extends I2PCommonBrowser {
}
}
if (isOSX()) {
String argString = join(Arrays.copyOfRange(newArgs, 1, newArgs.length));
String[] fg = {""};
String[] lastArgs =
Stream.concat(Arrays.stream(newArgs), Arrays.stream(fg))
@ -533,7 +600,7 @@ public class I2PChromium extends I2PCommonBrowser {
bashScript.setExecutable(true);
}
return new ProcessBuilder(bashScript.getAbsolutePath())
.directory(I2PFirefoxProfileBuilder.runtimeDirectory(true));
.directory(I2PChromiumProfileBuilder.runtimeDirectory(true));
} catch (IOException e) {
logger.warning(e.toString());
}
@ -556,7 +623,8 @@ public class I2PChromium extends I2PCommonBrowser {
public Process launchAndDetatch(int privateWindow, String[] url) {
validateUserDir();
if (waitForProxy()) {
String profileDirectory = I2PChromiumProfileBuilder.profileDirectory();
String profileDirectory = I2PChromiumProfileBuilder.profileDirectory(
I2PChromiumProfileBuilder.usabilityMode());
if (I2PChromiumProfileChecker.validateProfileDirectory(
profileDirectory)) {
logger.info("Valid profile directory: " + profileDirectory);

View File

@ -28,8 +28,8 @@ public class I2PChromiumProfileBuilder extends I2PCommonBrowser {
*
* @return the profile directory, or null if it could not be created
*/
public static String profileDirectory() {
return profileDirectory("I2P_CHROMIUM_PROFILE", "chromium", false);
public static String profileDirectory(String base) {
return profileDirectory("I2P_CHROMIUM_PROFILE", "chromium", base, false);
}
private static String baseProfileDir(String file, String mode) {
@ -106,7 +106,7 @@ public class I2PChromiumProfileBuilder extends I2PCommonBrowser {
return runtimeDirectory("");
}
private static String usabilityMode() {
public static String usabilityMode() {
if (usability)
return "usability";
return "base";
@ -119,7 +119,7 @@ public class I2PChromiumProfileBuilder extends I2PCommonBrowser {
*/
public static boolean copyBaseProfiletoProfile() {
String baseProfile = baseProfileDirectory(usabilityMode());
String profile = profileDirectory();
String profile = profileDirectory(usabilityMode());
logger.info("Copying base profile to profile directory: " + baseProfile +
" -> " + profile);
if (baseProfile.isEmpty() || profile.isEmpty()) {

View File

@ -27,7 +27,8 @@ public class I2PChromiumProfileChecker extends I2PCommonBrowser {
* @since 0.0.1
*/
public static void main(String[] args) {
String profileDirectory = I2PChromiumProfileBuilder.profileDirectory();
String profileDirectory =
I2PChromiumProfileBuilder.profileDirectory("base");
if (profileDirectory == null) {
logger.info("No profile directory found");
return;

View File

@ -21,7 +21,8 @@ package net.i2p.i2pfirefox;
public class I2PChromiumProfileUnpacker extends I2PCommonBrowser {
public static void main(String[] args) {
String profileDirectory = I2PChromiumProfileBuilder.profileDirectory();
String profileDirectory =
I2PChromiumProfileBuilder.profileDirectory("base");
if (profileDirectory == null) {
logger.info("No profile directory found");
return;

View File

@ -9,6 +9,8 @@ import java.io.OutputStream;
import java.net.Socket;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.Properties;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
@ -31,6 +33,7 @@ import java.util.zip.ZipInputStream;
*/
public class I2PCommonBrowser {
static public Properties prop = new Properties();
static public Logger logger = Logger.getLogger("browserlauncher");
static FileHandler fh;
// private final int DEFAULT_TIMEOUT = 200;
@ -50,6 +53,17 @@ public class I2PCommonBrowser {
} catch (IOException e) {
e.printStackTrace();
}
loadPropertiesFile(new File(runtimeDirectory(""), "browser.config"));
}
public static void loadPropertiesFile(File props) {
try (InputStream propsInput = new FileInputStream(props)) {
prop = new Properties();
prop.load(propsInput);
System.out.println(prop);
} catch (IOException io) {
logger.warning(io.toString());
}
}
public static void validateUserDir() {
@ -97,6 +111,19 @@ public class I2PCommonBrowser {
}
System.setProperty("user.dir", defaultPathFile.getAbsolutePath());
}
public static String getOperatingSystem() {
String os = System.getProperty("os.name");
if (os.startsWith("Windows")) {
return "Windows";
} else if (os.contains("Linux")) {
return "Linux";
} else if (os.contains("BSD")) {
return "BSD";
} else if (os.contains("Mac")) {
return "Mac";
}
return "Unknown";
}
protected static boolean isWindows() {
String osName = System.getProperty("os.name");
@ -215,7 +242,7 @@ public class I2PCommonBrowser {
* @since 0.0.19
*/
protected static String profileDirectory(String envVar, String browser,
boolean app) {
String base, boolean app) {
String pd = System.getenv(envVar);
if (pd != null && !pd.isEmpty()) {
File pdf = new File(pd);
@ -224,15 +251,17 @@ public class I2PCommonBrowser {
}
}
String rtd = runtimeDirectory("");
return profileDir(rtd, browser, app);
return profileDir(rtd, browser, base, app);
}
protected static String profileDir(String file, String browser, boolean app) {
protected static String profileDir(String file, String browser, String base,
boolean app) {
String appString = "";
if (app) {
appString = ".app";
}
File profileDir = new File(file, "i2p." + browser + ".profile" + appString);
File profileDir =
new File(file, "i2p." + browser + ".profile." + base + appString);
return profileDir.getAbsolutePath();
}
@ -259,11 +288,11 @@ public class I2PCommonBrowser {
// consume all the data from this entry
if (entry.isDirectory()) {
logger.info("Creating directory: " + entry.getName());
File dir = new File(profileDirectory + "/" + entry.getName());
File dir = new File(profileDirectory, entry.getName());
dir.mkdirs();
} else {
logger.info("Creating file: " + entry.getName());
File file = new File(profileDirectory + "/" + entry.getName());
File file = new File(profileDirectory, entry.getName());
file.createNewFile();
Files.copy(zis, file.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
@ -290,16 +319,15 @@ public class I2PCommonBrowser {
destinationDirectory.mkdir();
}
for (String f : sourceDirectory.list()) {
copyDirectoryCompatibityMode(new File(sourceDirectory, f),
new File(destinationDirectory, f), browser,
base);
copyDirectoryCompatibilityMode(new File(sourceDirectory, f),
new File(destinationDirectory, f), browser,
base);
}
}
private static void copyDirectoryCompatibityMode(File source,
File destination,
String browser, String base)
throws IOException {
private static void
copyDirectoryCompatibilityMode(File source, File destination, String browser,
String base) throws IOException {
if (source.isDirectory()) {
copyDirectory(source, destination, browser, base);
} else {
@ -307,6 +335,15 @@ public class I2PCommonBrowser {
}
}
public static void copy(InputStream source, OutputStream target)
throws IOException {
byte[] buf = new byte[8192];
int length;
while ((length = source.read(buf)) != -1) {
target.write(buf, 0, length);
}
}
private static void copyFile(File sourceFile, File destinationFile)
throws IOException {
try (InputStream in = new FileInputStream(sourceFile);

View File

@ -1,12 +1,16 @@
package net.i2p.i2pfirefox;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@ -28,6 +32,12 @@ public class I2PFirefox extends I2PCommonBrowser {
private Process p = null;
public static boolean usability = false;
private static String baseMode() {
if (usability)
return "usability";
return "base";
}
/**
* Construct an I2PFirefox class which manages an instance of Firefox and
* an accompanying Firefox profile. This version includes Firefox variants
@ -45,11 +55,64 @@ public class I2PFirefox extends I2PCommonBrowser {
}
}
public static void storeFirefoxDefaults() {
List<String> list = new ArrayList<String>();
list = Arrays.asList(firefoxPathsWindows());
prop.setProperty("firefox.paths.windows",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(firefoxPathsUnix());
prop.setProperty("firefox.paths.linux",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(firefoxPathsOSX());
prop.setProperty("firefox.paths.osx",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(firefoxBinsWindows());
prop.setProperty("firefox.bins.windows",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(firefoxBinsUnix());
prop.setProperty("firefox.bins.linux",
list.stream().collect(Collectors.joining(",")));
list = Arrays.asList(firefoxBinsUnix());
prop.setProperty("firefox.bins.osx",
list.stream().collect(Collectors.joining(",")));
try (OutputStream fos = new FileOutputStream(
new File(runtimeDirectory(""), "browser.config"))) {
prop.store(fos, "Firefox Configuration Section");
} catch (IOException ioe) {
logger.warning(ioe.toString());
}
}
public static String[] firefoxPathsUnix() {
String firefoxPathsProp = prop.getProperty("firefox.paths.unix");
if (firefoxPathsProp != null)
if (!firefoxPathsProp.equals(""))
return firefoxPathsProp.split(",");
return new String[] {"/usr/bin", "/usr/local/bin", "/opt/firefox/bin",
"/snap/bin"};
}
public static String[] firefoxBinsUnix() {
String firefoxPathsProp;
if (isOSX()) {
firefoxPathsProp = prop.getProperty("firefox.bins.osx");
if (firefoxPathsProp != null)
if (!firefoxPathsProp.equals(""))
return firefoxPathsProp.split(",");
}
firefoxPathsProp = prop.getProperty("firefox.bins.unix");
if (firefoxPathsProp != null)
if (!firefoxPathsProp.equals(""))
return firefoxPathsProp.split(",");
return new String[] {"firefox", "firefox-bin", "firefox-esr",
"waterfox", "waterfox-bin", "librewolf"};
}
private static String[] FIND_FIREFOX_SEARCH_PATHS_UNIX() {
String[] path = new String[] {"/usr/bin", "/usr/local/bin",
"/opt/firefox/bin", "/snap/bin"};
String[] exes = new String[] {"firefox", "firefox-bin", "firefox-esr",
"waterfox", "waterfox-bin", "librewolf"};
String[] path = firefoxPathsUnix();
String[] exes = firefoxBinsUnix();
String[] exePath = new String[path.length * exes.length];
int i = 0;
for (String s : path) {
@ -60,14 +123,19 @@ public class I2PFirefox extends I2PCommonBrowser {
}
return exePath;
}
public static String[] firefoxPathsOSX() {
String firefoxPathsProp = prop.getProperty("firefox.paths.osx");
if (firefoxPathsProp != null)
if (!firefoxPathsProp.equals(""))
return firefoxPathsProp.split(",");
return new String[] {"/Applications/Tor Browser.app/Contents/MacOS",
"/Applications/Firefox.app/Contents/MacOS",
"/Applications/Waterfox.app/Contents/MacOS",
"/Applications/Librewolf.app/Contents/MacOS"};
}
private static String[] FIND_FIREFOX_SEARCH_PATHS_OSX() {
String[] path =
new String[] {"/Applications/Tor Browser.app/Contents/MacOS",
"/Applications/Firefox.app/Contents/MacOS",
"/Applications/Waterfox.app/Contents/MacOS",
"/Applications/Librewolf.app/Contents/MacOS"};
String[] exes = new String[] {"firefox", "firefox-bin", "firefox-esr",
"waterfox", "waterfox-bin", "librewolf"};
String[] path = firefoxPathsOSX();
String[] exes = firefoxBinsUnix();
String[] exePath = new String[path.length * exes.length];
int i = 0;
for (String s : path) {
@ -78,7 +146,11 @@ public class I2PFirefox extends I2PCommonBrowser {
}
return exePath;
}
private static String[] FIND_FIREFOX_SEARCH_PATHS_WINDOWS() {
public static String[] firefoxPathsWindows() {
String firefoxPathsProp = prop.getProperty("firefox.paths.windows");
if (firefoxPathsProp != null)
if (!firefoxPathsProp.equals(""))
return firefoxPathsProp.split(",");
String userHome = System.getProperty("user.home");
String programFiles = System.getenv("ProgramFiles");
// String localAppData = System.getenv("LOCALAPPDATA");
@ -90,7 +162,7 @@ public class I2PFirefox extends I2PCommonBrowser {
new File(userHome, "/OneDrive/Desktop/Tor Browser/Browser/").toString(),
new File(userHome, "/Desktop/Tor Browser/Browser/").toString()};
String[] path = new String[] {
return new String[] {
tbPath[0],
tbPath[1],
new File(programFiles, "Mozilla Firefox/").toString(),
@ -99,10 +171,20 @@ public class I2PFirefox extends I2PCommonBrowser {
new File(programFiles86, "Waterfox/").toString(),
new File(programFiles, "Librewolf/").toString(),
};
String[] exes = new String[] {
}
private static String[] firefoxBinsWindows() {
String firefoxPathsProp = prop.getProperty("firefox.bins.windows");
if (firefoxPathsProp != null)
if (!firefoxPathsProp.equals(""))
return firefoxPathsProp.split(",");
return new String[] {
"firefox.exe", "firefox-bin.exe", "firefox-esr.exe",
"waterfox.exe", "waterfox-bin.exe", "librewolf.exe",
};
}
private static String[] FIND_FIREFOX_SEARCH_PATHS_WINDOWS() {
String[] path = firefoxPathsWindows();
String[] exes = firefoxBinsWindows();
String[] exePath = new String[path.length * exes.length];
int i = 0;
for (String s : path) {
@ -168,63 +250,105 @@ public class I2PFirefox extends I2PCommonBrowser {
for (File userFile2 : userFiles2) {
if (userFile2.isDirectory())
continue;
if (userFile2.getName().equals("firefox") ||
userFile2.getName().equals("firefox-bin") ||
userFile2.getName().equals("firefox-esr") ||
userFile2.getName().equals("waterfox") ||
userFile2.getName().equals("waterfox-bin") ||
userFile2.getName().equals("librewolf")) {
logger.info("FOUND NEARBY" + userFile2.getAbsolutePath());
return new String[] {userFile2.getAbsolutePath()};
if (!isWindows()) {
if (userFile2.getName().equals("firefox") ||
userFile2.getName().equals("firefox-bin") ||
userFile2.getName().equals("firefox-esr") ||
userFile2.getName().equals("waterfox") ||
userFile2.getName().equals("waterfox-bin") ||
userFile2.getName().equals("librewolf")) {
return new String[] {userFile2.getAbsolutePath()};
}
} else {
if (userFile2.getName().equals("firefox.exe") ||
userFile2.getName().equals("firefox-bin.exe") ||
userFile2.getName().equals("firefox-esr.exe") ||
userFile2.getName().equals("waterfox.exe") ||
userFile2.getName().equals("waterfox-bin.exe") ||
userFile2.getName().equals("librewolf.exe")) {
return new String[] {userFile2.getAbsolutePath()};
}
}
}
if (!isWindows()) {
if (userFile.getName().equals("firefox") ||
userFile.getName().equals("firefox-bin") ||
userFile.getName().equals("firefox-esr") ||
userFile.getName().equals("waterfox") ||
userFile.getName().equals("waterfox-bin") ||
userFile.getName().equals("librewolf")) {
return new String[] {userFile.getAbsolutePath()};
}
} else {
if (userFile.getName().equals("firefox.exe") ||
userFile.getName().equals("firefox-bin.exe") ||
userFile.getName().equals("firefox-esr.exe") ||
userFile.getName().equals("waterfox.exe") ||
userFile.getName().equals("waterfox-bin.exe") ||
userFile.getName().equals("librewolf.exe")) {
return new String[] {userFile.getAbsolutePath()};
}
}
}
if (userFile.getName().equals("firefox") ||
userFile.getName().equals("firefox-bin") ||
userFile.getName().equals("firefox-esr") ||
userFile.getName().equals("waterfox") ||
userFile.getName().equals("waterfox-bin") ||
userFile.getName().equals("librewolf")) {
return new String[] {userFile.getAbsolutePath()};
}
}
}
}
}
}
// now, do the same thing, but with user.dir instead of plugin
// list the directories in the user.dir directory
File userDir = new File(System.getProperty("user.dir"));
if (userDir.exists()) {
File[] userDirs = userDir.listFiles();
// list the files in the user.dir directory
for (File userDir1 : userDirs) {
File[] userFiles = userDir1.listFiles();
if (userFiles != null) {
for (File userFile : userFiles) {
if (userFile.isDirectory()) {
File[] userFiles2 = userFile.listFiles();
for (File userFile2 : userFiles2) {
if (userFile2.isDirectory())
continue;
if (userFile2.getName().equals("firefox") ||
userFile2.getName().equals("firefox-bin") ||
userFile2.getName().equals("firefox-esr") ||
userFile2.getName().equals("waterfox") ||
userFile2.getName().equals("waterfox-bin") ||
userFile2.getName().equals("librewolf")) {
logger.info("FOUND NEARBY" + userFile2.getAbsolutePath());
return new String[] {userFile2.getAbsolutePath()};
// now, do the same thing, but with user.dir instead of plugin
// list the directories in the user.dir directory
userDir = new File(System.getProperty("user.dir"));
if (userDir.exists()) {
File[] userDirs = userDir.listFiles();
// list the files in the user.dir directory
for (File userDir1 : userDirs) {
File[] userFiles = userDir1.listFiles();
if (userFiles != null) {
for (File userFile : userFiles) {
if (userFile.isDirectory()) {
File[] userFiles2 = userFile.listFiles();
for (File userFile2 : userFiles2) {
if (userFile2.isDirectory())
continue;
if (isWindows()) {
if (userFile2.getName().equals("firefox") ||
userFile2.getName().equals("firefox-bin") ||
userFile2.getName().equals("firefox-esr") ||
userFile2.getName().equals("waterfox") ||
userFile2.getName().equals("waterfox-bin") ||
userFile2.getName().equals("librewolf")) {
return new String[] {userFile2.getAbsolutePath()};
}
} else {
if (userFile.getName().equals("firefox.exe") ||
userFile.getName().equals("firefox-bin.exe") ||
userFile.getName().equals("firefox-esr.exe") ||
userFile.getName().equals("waterfox.exe") ||
userFile.getName().equals("waterfox-bin.exe") ||
userFile.getName().equals("librewolf.exe")) {
return new String[] {userFile.getAbsolutePath()};
}
}
}
}
if (!isWindows()) {
if (userFile.getName().equals("firefox") ||
userFile.getName().equals("firefox-bin") ||
userFile.getName().equals("firefox-esr") ||
userFile.getName().equals("waterfox") ||
userFile.getName().equals("waterfox-bin") ||
userFile.getName().equals("librewolf")) {
return new String[] {userFile.getAbsolutePath()};
}
} else {
if (userFile.getName().equals("firefox.exe") ||
userFile.getName().equals("firefox-bin.exe") ||
userFile.getName().equals("firefox-esr.exe") ||
userFile.getName().equals("waterfox.exe") ||
userFile.getName().equals("waterfox-bin.exe") ||
userFile.getName().equals("librewolf.exe")) {
return new String[] {userFile.getAbsolutePath()};
}
}
}
if (userFile.getName().equals("firefox") ||
userFile.getName().equals("firefox-bin") ||
userFile.getName().equals("firefox-esr") ||
userFile.getName().equals("waterfox") ||
userFile.getName().equals("waterfox-bin") ||
userFile.getName().equals("librewolf")) {
return new String[] {userFile.getAbsolutePath()};
}
}
}
@ -244,19 +368,6 @@ public class I2PFirefox extends I2PCommonBrowser {
return new String[] {};
}
}
private static String getOperatingSystem() {
String os = System.getProperty("os.name");
if (os.startsWith("Windows")) {
return "Windows";
} else if (os.contains("Linux")) {
return "Linux";
} else if (os.contains("BSD")) {
return "BSD";
} else if (os.contains("Mac")) {
return "Mac";
}
return "Unknown";
}
/**
* Check our list of firefox paths for a valid firefox binary.
@ -283,7 +394,8 @@ public class I2PFirefox extends I2PCommonBrowser {
/**
* Return the best available Firefox from the list of Firefoxes we have.
*
* @return the path to the best available Firefox, or null if none are found.
* @return the path to the best available Firefox, or null if none are
* found.
* @since 0.0.1
*/
public String topFirefox() {
@ -312,7 +424,8 @@ public class I2PFirefox extends I2PCommonBrowser {
* be used.
*
* @param override the path to a valid Firefox binary to use.
* @return the path to the best available Firefox, or null if none are found.
* @return the path to the best available Firefox, or null if none are
* found.
* @since 0.0.1
*/
public String topFirefox(String overrideFirefox) {
@ -467,7 +580,7 @@ public class I2PFirefox extends I2PCommonBrowser {
newArgs[0] = firefox;
newArgs[1] = "--new-instance";
newArgs[2] = "--profile";
newArgs[3] = I2PFirefoxProfileBuilder.profileDirectory(app);
newArgs[3] = I2PFirefoxProfileBuilder.profileDirectory(app, baseMode());
if (args != null) {
if (arglength > 0) {
for (int i = 0; i < arglength; i++) {
@ -476,7 +589,6 @@ public class I2PFirefox extends I2PCommonBrowser {
}
}
if (isOSX()) {
String[] fg = {""};
String[] lastArgs =
Stream.concat(Arrays.stream(newArgs), Arrays.stream(fg))
@ -533,7 +645,8 @@ public class I2PFirefox extends I2PCommonBrowser {
if (privateWindow == 2)
app = true;
if (waitForProxy()) {
String profileDirectory = I2PFirefoxProfileBuilder.profileDirectory(app);
String profileDirectory =
I2PFirefoxProfileBuilder.profileDirectory(app, baseMode());
if (I2PFirefoxProfileChecker.validateProfileDirectory(profileDirectory)) {
logger.info("Valid profile directory: " + profileDirectory);
} else {
@ -615,8 +728,8 @@ public class I2PFirefox extends I2PCommonBrowser {
* Waits for an HTTP proxy on the port 4444 to be ready.
* Launches Firefox with the profile directory.
*
* @param bool if true, the profile will be ephemeral(i.e. a --private-window
* profile).
* @param bool if true, the profile will be ephemeral(i.e. a
* --private-window profile).
* @param String[] a list of URL's to pass to the browser window
* @since 0.0.17
*/
@ -646,8 +759,8 @@ public class I2PFirefox extends I2PCommonBrowser {
* Waits for an HTTP proxy on the port 4444 to be ready.
* Launches Firefox with the profile directory.
*
* @param bool if true, the profile will be ephemeral(i.e. a --private-window
* profile).
* @param bool if true, the profile will be ephemeral(i.e. a
* --private-window profile).
* @since 0.0.1
*/
public void launch(boolean privateWindow) { launch(privateWindow, null); }

View File

@ -68,10 +68,28 @@ public class I2PFirefoxProfileBuilder extends I2PCommonBrowser {
ret += " border-radius: 2px !important;\n";
ret += "}\n";
ret += "\n";
ret += "#urlbar-container,\n";
ret += "#nav-bar {\n";
ret += " visibility: collapse !important\n";
ret += "#urlbar-container {\n";
ret += " visibility: collapse !important;\n";
ret += "}\n";
ret += "\n";
ret += "#TabsToolbar-customization-target {\n";
ret += " min-width: 50vw;\n";
ret += " max-width: 50vw;\n";
ret += " width: 50vw;\n";
ret += "}\n";
ret += "\n";
ret += "#TabsToolbar {";
ret += " display: inherit;";
ret += "}";
ret += "\n";
ret += "toolbar {";
ret += " max-width: 50%;";
ret += "}";
ret += "\n";
ret += "#navigator-toolbox {";
ret += " display: inline-flex;";
ret += "}";
ret += "\n";
return ret;
}
@ -89,8 +107,8 @@ public class I2PFirefoxProfileBuilder extends I2PCommonBrowser {
*
* @return the profile directory, or null if it could not be created
*/
public static String profileDirectory(boolean app) {
return profileDirectory("I2P_FIREFOX_PROFILE", "firefox", app);
public static String profileDirectory(boolean app, String base) {
return profileDirectory("I2P_FIREFOX_PROFILE", "firefox", base, app);
}
private static String baseProfileDir(String file, String base) {
@ -170,7 +188,7 @@ public class I2PFirefoxProfileBuilder extends I2PCommonBrowser {
*/
public static boolean copyBaseProfiletoProfile(String base, boolean app) {
String baseProfile = baseProfileDirectory(base);
String profile = profileDirectory(app);
String profile = profileDirectory(app, base);
logger.info("Copying base profile to profile directory: " + baseProfile +
" -> " + profile);
if (baseProfile.isEmpty() || profile.isEmpty()) {
@ -232,7 +250,7 @@ public class I2PFirefoxProfileBuilder extends I2PCommonBrowser {
public static boolean copyStrictOptions(String base, boolean app) {
logger.info("Checking strict options");
String baseProfile = baseProfileDirectory(base);
String profile = profileDirectory(app);
String profile = profileDirectory(app, base);
if (baseProfile.isEmpty() || profile.isEmpty()) {
logger.info("Empty paths");
return false;

View File

@ -30,7 +30,8 @@ public class I2PFirefoxProfileChecker extends I2PCommonBrowser {
* @param args unused
*/
public static void main(String[] args) {
String profileDirectory = I2PFirefoxProfileBuilder.profileDirectory(false);
String profileDirectory =
I2PFirefoxProfileBuilder.profileDirectory(false, "base");
if (profileDirectory == null) {
logger.info("No profile directory found");
return;

View File

@ -21,7 +21,8 @@ package net.i2p.i2pfirefox;
public class I2PFirefoxProfileUnpacker extends I2PCommonBrowser {
public static void main(String[] args) {
String profileDirectory = I2PFirefoxProfileBuilder.profileDirectory(false);
String profileDirectory =
I2PFirefoxProfileBuilder.profileDirectory(false, "base");
if (profileDirectory == null) {
logger.info("No profile directory found");
return;

View File

@ -1,10 +1,15 @@
package net.i2p.i2pfirefox;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
/**
* I2PChromiumProfileChecker.java
@ -34,35 +39,41 @@ public class I2PGenericUnsafeBrowser extends I2PCommonBrowser {
// ftp_proxy and no_proxy. in practice, this is going to be hard to guarantee.
// For now, we're just assuming. So don't use this until I understand the
// situation better, unless you think you know better.
private static final String[] browsers = {
// This debian script tries everything in $BROWSER, then gnome-www-browser
// and x-www-browser
// if X is running and www-browser otherwise. Those point to the user's
// preferred
// browser using the update-alternatives system.
"sensible-browser",
// another one that opens a preferred browser
"xdg-open",
// Try x-www-browser directly
"x-www-browser", "gnome-www-browser",
// general graphical browsers that aren't Firefox or Chromium based
"defaultbrowser", // puppy linux
"dillo", "seamonkey", "konqueror", "galeon", "surf",
// Text Mode Browsers only below here
"www-browser", "links", "lynx"};
private static String[] browsers() {
String genericPathsProp = prop.getProperty("generic.bins.unix");
if (genericPathsProp != null)
return genericPathsProp.split(",");
return new String[] {
// This debian script tries everything in $BROWSER, then
// gnome-www-browser
// and x-www-browser
// if X is running and www-browser otherwise. Those point to the user's
// preferred
// browser using the update-alternatives system.
"sensible-browser",
// another one that opens a preferred browser
"xdg-open",
// Try x-www-browser directly
"x-www-browser", "gnome-www-browser",
// general graphical browsers that aren't Firefox or Chromium based
"defaultbrowser", // puppy linux
"dillo", "seamonkey", "konqueror", "galeon", "surf",
// Text Mode Browsers only below here
"www-browser", "links", "lynx"};
}
private static String getOperatingSystem() {
String os = System.getProperty("os.name");
if (os.startsWith("Windows")) {
return "Windows";
} else if (os.contains("Linux")) {
return "Linux";
} else if (os.contains("BSD")) {
return "BSD";
} else if (os.contains("Mac")) {
return "Mac";
public static void storeGenericDefaults() {
List<String> list = new ArrayList<String>();
list = Arrays.asList(browsers());
prop.setProperty("generic.bins.unix",
list.stream().collect(Collectors.joining(",")));
try (OutputStream fos = new FileOutputStream(
new File(runtimeDirectory(""), "browser.config"))) {
prop.store(fos, "Chromium Configuration Section");
} catch (IOException ioe) {
logger.warning(ioe.toString());
}
return "Unknown";
}
/**
@ -80,69 +91,144 @@ public class I2PGenericUnsafeBrowser extends I2PCommonBrowser {
* and it will return the first one we find in exactly that order.
*
* Adapted from:
* https://stackoverflow.com/questions/15852885/method-returning-default-browser-as-a-string
* and from:
* https://github.com/i2p/i2p.i2p/blob/master/apps/systray/java/src/net/i2p/apps/systray/UrlLauncher.java
* https://stackoverflow.com/questions/15852885/me...
*
* @return path to the default browser ready for execution. Empty string on
* Linux and OSX.
* @param url containing full scheme, i.e. http://127.0.0.1:7657
* @return path to command[0] and target URL[1] to the default browser ready
* for execution, or null if not found
* @since 2.0.0
*/
public static String getDefaultWindowsBrowser() {
if (getOperatingSystem() == "Windows") {
String defaultBrowser = getDefaultOutOfRegistry(
"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\Shell\\Associations\\URLAssociations\\https\\UserChoice");
if (defaultBrowser != "")
return defaultBrowser;
defaultBrowser = getDefaultOutOfRegistry(
"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\Shell\\Associations\\URLAssociations\\http\\UserChoice");
if (defaultBrowser != "")
return defaultBrowser;
defaultBrowser = getDefaultOutOfRegistry(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\microsoft-edge\\shell\\open\\command");
if (defaultBrowser != "")
return defaultBrowser;
defaultBrowser = getDefaultOutOfRegistry(
"HKEY_CLASSES_ROOT\\http\\shell\\open\\command");
if (defaultBrowser != "")
return defaultBrowser;
static public String getDefaultWindowsBrowser() {
String defaultBrowser =
"C:\\Program Files\\Internet Explorer\\iexplore.exe";
String key = "";
// User-Configured HTTPS Browser
key =
"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\Shell\\Associations\\URLAssociations\\https\\UserChoice";
defaultBrowser = getDefaultOutOfRegistry(key);
if (defaultBrowser != null)
return defaultBrowser;
// User-Configure HTTP Browser
key =
"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\Shell\\Associations\\URLAssociations\\http\\UserChoice";
defaultBrowser = getDefaultOutOfRegistry(key);
if (defaultBrowser != null)
return defaultBrowser;
// MSEdge on pretty much everything after Windows 7
key = "HKEY_CLASSES_ROOT\\MSEdgeHTM\\shell\\open\\command";
defaultBrowser = getDefaultOutOfRegistry(key);
if (defaultBrowser != null) {
return defaultBrowser;
}
return "";
// iexplore usually, depends on the Windows, sometimes Edge
key = "HKEY_CLASSES_ROOT\\http\\shell\\open\\command";
defaultBrowser = getDefaultOutOfRegistry(key);
if (defaultBrowser != null) {
return defaultBrowser;
}
return defaultBrowser;
}
/**
* obtains information out of the Windows registry.
* obtains a value matching a key contained in the windows registry at a
* path represented by hkeyquery
*
* @param hkeyquery registry entry to ask for.
* @return
* @param key key to retrieve value from
* @return either a registry "Default" value or null if one does not
* exist/is empty
* @since 2.0.0
*/
public static String getDefaultOutOfRegistry(String hkeyquery) {
if (getOperatingSystem() == "Windows") {
try {
// Get registry where we find the default browser
Process process = Runtime.getRuntime().exec("REG QUERY " + hkeyquery);
Scanner kb = new Scanner(process.getInputStream());
while (kb.hasNextLine()) {
String line = kb.nextLine();
if (line.contains("(Default")) {
String[] splitLine = line.split(" ");
kb.close();
return splitLine[splitLine.length - 1]
.replace("%1", "")
.replaceAll("\\s+$", "")
.replaceAll("\"", "");
private static String registryQuery(String hkeyquery, String key) {
try {
// Get registry where we find the default browser
String[] cmd = {"REG", "QUERY", hkeyquery};
Process process = Runtime.getRuntime().exec(cmd);
Scanner kb = new Scanner(process.getInputStream());
while (kb.hasNextLine()) {
String line = kb.nextLine().trim();
if (line.startsWith(key)) {
String[] splitLine = line.split(" ");
kb.close();
String finalValue = splitLine[splitLine.length - 1].trim();
if (!finalValue.equals("")) {
return finalValue;
}
}
// Match wasn't found, still need to close Scanner
kb.close();
} catch (Exception e) {
e.printStackTrace();
}
// Match wasn't found, still need to close Scanner
kb.close();
} catch (Exception e) {
logger.warning(e.toString());
}
return null;
}
/**
* If following a query back to the Default value doesn't work then what
* we have is a "ProgID" which will be registered in
* \HKEY_CLASSES_ROOT\%ProgId%, and will have an entry \shell\open\command,
* where \shell\open\command yields the value that contains the command it
* needs. This function takes a registry query in the same format as
* getDefaultOutOfRegistry but instead of looking for the default entry
*
* @param hkeyquery
* @return the command required to run the application referenced in
* hkeyquery, or null
* @since 2.0.0
*/
private static String followUserConfiguredBrowserToCommand(String hkeyquery) {
String progIdValue = registryQuery(hkeyquery, "ProgId");
return followProgIdToCommand(progIdValue);
}
/**
* Cross-references a progId obtained by
* followUserConfiguredBrowserToCommand against
* HKEY_CLASSES_ROOT\%ProgId%\shell\open\command, which holds the value of
* the command which we need to run to launch the default browser.
*
* @param hkeyquery
* @return the command required to run the application referenced in
* hkeyquery, or null
* @since 2.0.0
*/
private static String followProgIdToCommand(String progid) {
String hkeyquery =
"HKEY_CLASSES_ROOT\\" + progid + "\\shell\\open\\command";
String finalValue = registryQuery(hkeyquery, "(Default)");
if (finalValue != null) {
if (!finalValue.equals(""))
return finalValue;
}
return null;
}
/**
* obtains a default browsing command out of the Windows registry.
*
* @param hkeyquery registry entry to ask for.
* @return either a registry "Default" value or null if one does not
* exist/is empty
* @since 2.0.0
*/
private static String getDefaultOutOfRegistry(String hkeyquery) {
String defaultValue = registryQuery(hkeyquery, "Default");
if (defaultValue != null) {
if (!defaultValue.equals(""))
return defaultValue.split(" ")[0];
} else {
defaultValue = followUserConfiguredBrowserToCommand(hkeyquery);
if (defaultValue != null) {
if (!defaultValue.equals(""))
return defaultValue.split(" ")[0];
}
}
return "";
return null;
}
private static String scanAPath(String dir) {
for (String browser : browsers) {
for (String browser : browsers()) {
File test = new File(dir, browser);
if (test.exists()) {
return test.getAbsolutePath();
@ -250,7 +336,8 @@ public class I2PGenericUnsafeBrowser extends I2PCommonBrowser {
/**
* get the correct runtime directory
*
* @return the runtime directory, or null if it could not be created or found
* @return the runtime directory, or null if it could not be created or
* found
* @since 0.0.18
*/
public static String runtimeDirectory() {

View File

@ -36,6 +36,7 @@ img {
left: 5%;
max-width: 60%;
display: inline;
padding-right: 2%;
}
.inline {

10
test.sh
View File

@ -82,15 +82,15 @@ sleep 2s
rm -rf i2p.chromium.base.profile i2p.chromium.profile i2p.firefox.base.profile i2p.firefox.profile
echo "Testing UNSAFE auto-selector with no private and no URL parameters."
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PGenericUnsafeBrowser 2> gen.0.err 1> gen.0.log
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PBrowser -generic 2> gen.0.err 1> gen.0.log
echo "Testing UNSAFE auto-selector with local URL parameter."
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PGenericUnsafeBrowser "http://127.0.0.1:7657" 2> gen.1.err 1> gen.1.log
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PBrowser -generic "http://127.0.0.1:7657" 2> gen.1.err 1> gen.1.log
echo "Testing UNSAFE auto-selector with remote URL parameter."
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PGenericUnsafeBrowser "http://idk.i2p" 2> gen.2.err 1> gen.2.log
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PBrowser -generic "http://idk.i2p" 2> gen.2.err 1> gen.2.log
echo "Testing UNSAFE auto-selector with remote AND local URL parameter."
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PGenericUnsafeBrowser "http://127.0.0.1:7657" "http://idk.i2p" 2> gen.3.err 1> gen.3.log
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PBrowser -generic "http://127.0.0.1:7657" "http://idk.i2p" 2> gen.3.err 1> gen.3.log
echo "Testing UNSAFE auto-selector with private browsing parameter"
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PGenericUnsafeBrowser -private "http://127.0.0.1:7657" 2> gen.4.err 1> gen.4.log
java -cp ./src/build/i2pfirefox.jar net.i2p.i2pfirefox.I2PBrowser -generic -private "http://127.0.0.1:7657" 2> gen.4.err 1> gen.4.log
echo "UNSAFE browser tests complete"