Compare commits
21 Commits
android-1.
...
android-2.
Author | SHA1 | Date | |
---|---|---|---|
794b8433d8 | |||
a7891a3674 | |||
7076785ec1 | |||
f8eda45409 | |||
8d0f1689c1 | |||
25ef37cddf | |||
c5936858a2 | |||
17d2e2fc93 | |||
a0e41e5171 | |||
2d1244f339 | |||
9eec1d3348 | |||
5824fd4efa | |||
9c87bfcb51 | |||
0c380f2ef5 | |||
dafe3d0002 | |||
255ac60691 | |||
23f681dd7d | |||
d6a55a122a | |||
454937d345 | |||
ec8cf76fc4 | |||
6788f9a663 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,3 +3,6 @@ signing.properties
|
||||
.idea
|
||||
.idea/
|
||||
.gradle/
|
||||
local.properties
|
||||
override.properties
|
||||
build
|
48
CHANGELOG
48
CHANGELOG
@ -1,3 +1,51 @@
|
||||
2.0.0
|
||||
* Updates router to version 2.0.0
|
||||
* Updates gradle plugin
|
||||
* Remove Firefox from supported browsers list due to lack of about:config support
|
||||
* Add Privacy Browser to supported browsers list and write guide for it
|
||||
|
||||
1.9.1
|
||||
* Switches back to mavenCentral builds
|
||||
* Fixes build process for F-Droid main
|
||||
* Using tag i2p.i2p:i2p-android-1.9.0
|
||||
* Allow b32 and blinded b32 to validate in I2PTunnel UI
|
||||
|
||||
1.9.0
|
||||
* Updates router to version 1.9.0
|
||||
* Using tag i2p.i2p:i2p-android-1.9.0
|
||||
|
||||
1.8.2
|
||||
* This update fixes a bug where Family Keys are incorrectly handled by the Android router, leading
|
||||
to a crash.
|
||||
* This update fixes a bug wherein incorrect type-checking caused a crash when using the Network
|
||||
Config page for some users.
|
||||
|
||||
1.8.1
|
||||
* This update fixes a bug where certificates were unpacked to the wrong location on new installs,
|
||||
resulting in the router failing to start.
|
||||
* Decouples the Android version from the I2P library version to allow for android point
|
||||
releases with less pain.
|
||||
|
||||
1.8.0
|
||||
* This release updates the underlying I2P libraries to I2P version 1.8.0
|
||||
* The SAM API now operates in "Interactive Authentication" mode. Users will be prompted via
|
||||
the notificationArea to approve or ignore new SAM connections initiated by external apps.
|
||||
* The network config menu now features a drop-down configuration instead of a slider configuration
|
||||
(since reversed)
|
||||
|
||||
1.7.1
|
||||
* This release updates the underlying I2P libraries to I2P version 1.7.1
|
||||
|
||||
1.7.0
|
||||
* This release updates the underlying I2P libraries to I2P version 1.7.0
|
||||
* Refactor of the unzipResourceToDir function
|
||||
|
||||
1.6.0
|
||||
* This release updates the underlying I2P libraries to I2P version 1.6.0
|
||||
|
||||
1.5.0
|
||||
* This release updates the underlying I2P libraries to I2P version 1.5.0
|
||||
|
||||
0.9.50 2021-05-18
|
||||
* This release updates the underlying I2P libraries to I2P version 0.9.50
|
||||
|
||||
|
@ -18,6 +18,7 @@ the override.properties that is used in the Docker container.
|
||||
|
||||
## Prerequirements
|
||||
|
||||
0. Update the changelog!
|
||||
1. Ensure you have the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
|
||||
2. It should exist at `~/.ant/lib/maven-ant-tasks-2.1.3.jar`
|
||||
3. Ensure you have hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
|
||||
|
@ -7,9 +7,9 @@ repositories {
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
defaultConfig {
|
||||
versionCode 4745268
|
||||
versionCode 4745272
|
||||
versionName "$I2P_ANDROID_VERSION"
|
||||
minSdkVersion 14
|
||||
minSdkVersion 21
|
||||
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||
|
||||
// For Espresso
|
||||
@ -31,15 +31,18 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
disable 'MissingDefaultResource'
|
||||
}
|
||||
packagingOptions {
|
||||
exclude 'LICENSE.txt'
|
||||
resources {
|
||||
excludes += ['LICENSE.txt']
|
||||
}
|
||||
}
|
||||
flavorDimensions 'tier'
|
||||
productFlavors {
|
||||
@ -56,7 +59,6 @@ android {
|
||||
applicationId 'net.i2p.android.router'
|
||||
}
|
||||
}
|
||||
buildToolsVersion '28.0.3'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@ -88,6 +90,10 @@ dependencies {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
||||
project.ext.i2pbase = "../i2p.i2p"
|
||||
def Properties props = new Properties()
|
||||
def propFile = new File(project(':routerjars').projectDir, 'local.properties')
|
||||
|
@ -27,6 +27,8 @@
|
||||
<service
|
||||
android:name=".service.RouterService"
|
||||
android:icon="@drawable/ic_launcher_itoopie"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="net.i2p.android.router.service.IRouterState" />
|
||||
@ -35,7 +37,9 @@
|
||||
<provider
|
||||
android:name=".provider.CacheProvider"
|
||||
android:authorities="${applicationId}.provider" />
|
||||
<receiver android:name=".receiver.OnBootReceiver">
|
||||
<receiver
|
||||
android:name=".receiver.OnBootReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
@ -45,7 +49,8 @@
|
||||
android:name="net.i2p.android.I2PActivity"
|
||||
android:icon="@drawable/ic_launcher_itoopie"
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTop">
|
||||
android:launchMode="singleTop"
|
||||
android:exported="true">
|
||||
<!-- Console filters -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
@ -109,6 +114,7 @@
|
||||
<activity
|
||||
android:name=".web.WebActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:exported="true"
|
||||
android:label="I2P Web Browser">
|
||||
<!-- Disabled, this browser is not very secure
|
||||
Temporarily enabled until an alternative browser is ready -->
|
||||
|
@ -102,8 +102,28 @@ public class BrowserListFragment extends Fragment implements
|
||||
getContext().getResources().getStringArray(R.array.supported_browsers));
|
||||
supportedLabels = Arrays.asList(
|
||||
getContext().getResources().getStringArray(R.array.supported_browser_labels));
|
||||
unsupported = Arrays.asList(
|
||||
context.getResources().getStringArray(R.array.unsupported_browsers));
|
||||
unsupported = allBrowsers(context);//Arrays.asList(
|
||||
//context.getResources().getStringArray(R.array.unsupported_browsers));
|
||||
}
|
||||
|
||||
public List<String> allBrowsers(Context context){
|
||||
//try {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse("http://www.google.com"));
|
||||
List<ResolveInfo> browserList;
|
||||
PackageManager pm = context.getPackageManager();
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
|
||||
// gets all
|
||||
browserList = pm.queryIntentActivities(intent, PackageManager.MATCH_ALL);
|
||||
} else {
|
||||
browserList = pm.queryIntentActivities(intent, 0);
|
||||
}
|
||||
//}catch()
|
||||
List<String> finalResult = new ArrayList<String>();
|
||||
for (ResolveInfo ri : browserList){
|
||||
finalResult.add(ri.resolvePackageName);
|
||||
}
|
||||
return finalResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -29,10 +29,12 @@ public class I2PDestinationPage extends SingleTextFieldPage {
|
||||
public boolean isValid() {
|
||||
String data = mData.getString(SIMPLE_DATA_KEY);
|
||||
if (data.toLowerCase(Locale.US).endsWith(".b32.i2p")) { /* B32 */
|
||||
if (data.length() != BASE32_HASH_LENGTH + 8) {
|
||||
mFeedback = "Invalid B32";
|
||||
return false;
|
||||
if (data.length() == BASE32_HASH_LENGTH + 8 || data.length() >= BASE32_HASH_LENGTH + 12) {
|
||||
mFeedback = "";
|
||||
return true;
|
||||
}
|
||||
mFeedback = "Invalid B32";
|
||||
return false;
|
||||
} else if (data.endsWith(".i2p")) { /* Domain */
|
||||
// Valid
|
||||
} else if (data.length() >= 516) { /* B64 */
|
||||
|
@ -0,0 +1,17 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<h2>Privacy Brower has native I2P support!</h2>
|
||||
<p>Make sure your I2P router is started before launching Privacy Browser</p>
|
||||
<p>Privacy Browser supports both I2P and Orbot (Tor), but not at the same time.</p>
|
||||
<h2>How to configure Privacy Browser:</h2>
|
||||
<ol>
|
||||
<li>Open the main menu and tap “Settings”</li>
|
||||
<li>Select "Disable Javascript"(Recommended)</li>
|
||||
<li>Select "Enable Incognito Mode"(Optional)</li>
|
||||
<li>Tap the "Proxy" menu item and select "I2P" from the submenu</li>
|
||||
<li>Exit the settings menu.</li>
|
||||
</ol>
|
||||
<a href="https://eyedeekay.github.io/Configuring-Privacy-Browser-for-I2P-on-Android/">A detailed guide with screenshots to is available online</a>
|
||||
</body>
|
||||
</html>
|
@ -109,28 +109,25 @@
|
||||
</string-array>
|
||||
<string-array name="recommended_browsers">
|
||||
<item>acr.browser.lightning</item>
|
||||
<item>io.github.forkmaintainers.iceraven</item>
|
||||
<item>com.stoutner.privacybrowser.standard</item>
|
||||
</string-array>
|
||||
<string-array name="recommended_browser_labels">
|
||||
<item>Lightning</item>
|
||||
<item>IceRaven(With Extension)</item>
|
||||
<item>Privacy Browser</item>
|
||||
</string-array>
|
||||
<string-array name="supported_browsers">
|
||||
<item>org.mozilla.firefox</item>
|
||||
<item>org.mozilla.fennec_fdroid</item>
|
||||
<item>org.gnu.icecat</item>
|
||||
</string-array>
|
||||
<string-array name="supported_browser_labels">
|
||||
<item>Firefox</item>
|
||||
<item>Fennec F-Droid</item>
|
||||
<item>IceCatMobile</item>
|
||||
</string-array>
|
||||
<string-array name="unsupported_browsers">
|
||||
<item>org.mozilla.firefox</item>
|
||||
<item>com.android.chrome</item>
|
||||
<item>com.brave.browser</item>
|
||||
<item>com.android.browser</item>
|
||||
<item>com.sec.android.app.sbrowser</item>
|
||||
<item>com.stoutner.privacybrowser.standard</item>
|
||||
<item>org.gnu.icecat</item>
|
||||
<item>info.guardianproject.browser</item>
|
||||
<item>mobi.mgeek.TunnyBrowser</item>
|
||||
<item>com.lastpass.lpandroid</item>
|
||||
@ -184,7 +181,7 @@
|
||||
<item>900 KB/s</item>
|
||||
<item>1000 KB/s</item>
|
||||
</string-array>
|
||||
<string-array name="speed_values">
|
||||
<integer-array name="speed_values">
|
||||
<item>100</item>
|
||||
<item>200</item>
|
||||
<item>300</item>
|
||||
@ -195,5 +192,5 @@
|
||||
<item>800</item>
|
||||
<item>900</item>
|
||||
<item>1000</item>
|
||||
</string-array>
|
||||
</integer-array>
|
||||
</resources>
|
||||
|
@ -294,7 +294,7 @@
|
||||
|
||||
<string name="i2ptunnel_wizard_desc_name">The name of the tunnel, for identification in the tunnel list.</string>
|
||||
<string name="i2ptunnel_wizard_desc_desc">A description of the tunnel. This is optional and purely informative.</string>
|
||||
<string name="i2ptunnel_wizard_desc_dest">Type in the I2P destination of the service that this client tunnel should connect to. This could be the full base 64 destination key, or an I2P host name from your address book.</string>
|
||||
<string name="i2ptunnel_wizard_desc_dest">Specify the .i2p address or destination (hostname.i2p, b32 or b64) of the tunnel here.</string>
|
||||
<string name="i2ptunnel_wizard_desc_outproxies">If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in. Separate multiple proxies with commas.</string>
|
||||
<string name="i2ptunnel_wizard_desc_target_host">This is the IP that your service is running on, this is usually on the same machine so 127.0.0.1 is autofilled.</string>
|
||||
<string name="i2ptunnel_wizard_desc_target_port">This is the port that the service is accepting connections on.</string>
|
||||
|
@ -14,24 +14,26 @@
|
||||
<PreferenceCategory
|
||||
android:key="settings_bandwidth"
|
||||
android:title="@string/settings_label_bandwidth">
|
||||
<!--
|
||||
i2np.bandwidth.inboundKBytesPerSecond=100
|
||||
-->
|
||||
<DropDownPreference
|
||||
android:key="@string/PROP_INBOUND_BANDWIDTH"
|
||||
android:title="@string/settings_desc_bw_inbound"
|
||||
android:entries="@array/speed_increments"
|
||||
android:entryValues="@array/speed_values"
|
||||
/>
|
||||
<!--
|
||||
i2np.bandwidth.outboundKBytesPerSecond=30
|
||||
-->
|
||||
<DropDownPreference
|
||||
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
|
||||
android:title="@string/settings_desc_bw_inbound"
|
||||
android:entries="@array/speed_increments"
|
||||
android:entryValues="@array/speed_values"
|
||||
/>
|
||||
<!--
|
||||
i2np.bandwidth.inboundKBytesPerSecond=100
|
||||
-->
|
||||
<com.pavelsikun.seekbarpreference.SeekBarPreference
|
||||
android:key="@string/PROP_INBOUND_BANDWIDTH"
|
||||
android:title="@string/settings_desc_bw_inbound"
|
||||
app:msbp_defaultValue="100"
|
||||
app:msbp_maxValue="1000"
|
||||
app:msbp_measurementUnit="KB/s"
|
||||
/>
|
||||
<!--
|
||||
i2np.bandwidth.outboundKBytesPerSecond=30
|
||||
-->
|
||||
<com.pavelsikun.seekbarpreference.SeekBarPreference
|
||||
android:key="@string/PROP_OUTBOUND_BANDWIDTH"
|
||||
android:title="@string/settings_desc_bw_outbound"
|
||||
app:msbp_defaultValue="100"
|
||||
app:msbp_maxValue="1000"
|
||||
app:msbp_measurementUnit="KB/s"
|
||||
/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
@ -49,9 +51,9 @@
|
||||
android:summary="@string/settings_desc_hiddenMode"
|
||||
/>
|
||||
-->
|
||||
<!--
|
||||
router.maxParticipatingTunnels=0
|
||||
-->
|
||||
<!--
|
||||
router.maxParticipatingTunnels=0
|
||||
-->
|
||||
<!--
|
||||
<com.hlidskialf.android.preference.SeekBarPreference
|
||||
android:key="router.maxParticipatingTunnels"
|
||||
@ -64,9 +66,9 @@
|
||||
android:dependency="router.hiddenMode"
|
||||
/>
|
||||
-->
|
||||
<!--
|
||||
router.sharePercentage=10
|
||||
-->
|
||||
<!--
|
||||
router.sharePercentage=10
|
||||
-->
|
||||
<!--
|
||||
<com.hlidskialf.android.preference.SeekBarPreference
|
||||
android:key="router.sharePercentage"
|
||||
@ -81,15 +83,15 @@
|
||||
/>
|
||||
-->
|
||||
|
||||
<!--
|
||||
i2np.upnp.enable=false
|
||||
-->
|
||||
<CheckBoxPreference
|
||||
android:key="@string/PROP_ENABLE_UPNP"
|
||||
android:defaultValue="true"
|
||||
android:title="UPnP"
|
||||
android:summary="@string/settings_desc_upnp"
|
||||
/>
|
||||
<!--
|
||||
i2np.upnp.enable=false
|
||||
-->
|
||||
<CheckBoxPreference
|
||||
android:key="@string/PROP_ENABLE_UPNP"
|
||||
android:defaultValue="true"
|
||||
android:title="UPnP"
|
||||
android:summary="@string/settings_desc_upnp"
|
||||
/>
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||
|
@ -15,7 +15,7 @@ buildscript {
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.3.0'
|
||||
classpath 'com.android.tools.build:gradle:4.2.2'
|
||||
classpath 'com.android.tools.lint:lint-gradle:26.1.1'
|
||||
}
|
||||
}
|
||||
|
@ -14,8 +14,8 @@ POM_DEVELOPER_ID=idk
|
||||
POM_DEVELOPER_NAME=idk
|
||||
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
|
||||
|
||||
ANDROID_BUILD_TARGET_SDK_VERSION=30
|
||||
ANDROID_BUILD_SDK_VERSION=28
|
||||
ANDROID_BUILD_TARGET_SDK_VERSION=31
|
||||
ANDROID_BUILD_SDK_VERSION=31
|
||||
|
||||
I2P_VERSION=1.8.0-2
|
||||
I2P_ANDROID_VERSION=1.8.1
|
||||
I2P_VERSION=2.0.0
|
||||
I2P_ANDROID_VERSION=2.0.0
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
|
||||
|
@ -9,7 +9,7 @@ repositories {
|
||||
android {
|
||||
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
minSdkVersion 21
|
||||
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||
}
|
||||
buildTypes {
|
||||
@ -19,13 +19,17 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
buildToolsVersion '28.0.3'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@ -5,7 +5,7 @@ version = '0.9.5'
|
||||
android {
|
||||
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
|
||||
defaultConfig {
|
||||
minSdkVersion 14
|
||||
minSdkVersion 21
|
||||
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||
}
|
||||
buildTypes {
|
||||
@ -15,13 +15,13 @@ android {
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
buildToolsVersion '28.0.3'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@ -33,4 +33,8 @@ dependencies {
|
||||
testImplementation 'org.mockito:mockito-core:2.11.0'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
||||
apply from: "${project.rootDir}/gradle/maven-push.gradle"
|
||||
|
Reference in New Issue
Block a user