Compare commits

...

21 Commits

Author SHA1 Message Date
idk
3863c0e183 Increase version numbers for release 2021-02-18 10:05:20 -05:00
idk
69ea3d8bde remove trailing slash from gradle.properties 2021-02-10 17:25:32 -05:00
idk
7cafe6da48 add gitlab SSH and HTTP to i2ptunnel_config. Invalidate the view containing the I2P tunnel lists, in order to force them to redraw when a new tunnel is created. Closes #4 2021-02-04 12:41:03 -05:00
idk
9464b46ad0 Change the foreground service notification priorities from PRIORITY_MIN to PRIORITY_LOW. Don't check if we're restarting on Android versions greater than O since it uses the notificationChannel. Closes #5 2021-02-03 14:25:08 -05:00
idk
c230a5a101 Create the notification channel right before updating the statusbar notification. 2021-02-02 01:22:37 -05:00
idk
3d37f2ae07 use a toast for clipboard notification instead 2021-02-02 00:38:50 -05:00
idk
f88aafe292 fix the notification channel for the main status 2021-02-01 21:22:51 -05:00
idk
aa2dab1d3c Re-enable NTCP because it fixes the firewalled but inbound TCP not enabled issue 2021-01-29 16:45:07 -05:00
idk
8e85eaa2f0 SAM needs run() instead of start() to work correctly 2021-01-29 16:05:41 -05:00
zzz
6a1848caf6 Startup: Don't sleep in startup Jobs, requeue instead, to not clog the job queue 2021-01-27 09:09:52 -05:00
idk
aa36b4cb14 add facility to copy base32 URL of a tunnel by long-pressing the tunnel name 2021-01-18 11:58:48 -05:00
idk
78d4b12142 Remove nonsense comment at the end of the line which was covered up by the terminal 2021-01-11 10:46:15 -05:00
idk
c2f3a80dec Correctly fetch new SAM API preference when starting the SAM API job 2021-01-11 10:45:19 -05:00
idk
a679784aab Fix some build issues(Stemming from resources moving to wars) and add a SAM API option 2021-01-10 09:23:43 -05:00
idk
835667437b Fix some build issues(Stemming from resources moving to wars) and add a SAM API option 2021-01-10 09:20:45 -05:00
idk
f016edec7a add logo 2021-01-09 17:26:18 -05:00
1e3b517219 Bump target requirement to 29 for GPlay 2020-12-03 04:19:24 +00:00
f4e3b15fcf add new translation 'tk' 2020-12-02 22:51:06 +00:00
fc4154be67 Bump version for release 2020-12-02 22:48:07 +00:00
5bf0b18767 Add IceRaven configuration recommendation. 2020-11-11 05:28:17 +00:00
eb5ef3129b Add IceRaven configuration recommendation. 2020-11-11 05:26:05 +00:00
30 changed files with 334 additions and 130 deletions

View File

@ -1,3 +1,7 @@
0.9.48 2020-12-02
* This release updates the underlying I2P libraries to I2P version 0.9.48
* Updates to browser configuration documentation
0.9.47-1 2020-10-29
* This release fixes a number of bugs arising from a misconfigured bootclasspath
* Fix a battery-management issue arising on some phones

View File

@ -12,15 +12,16 @@ in their main repository.
## Prerequirements
1. Ensure you got the deprecated maven ant tasks. ( https://maven.apache.org/ant-tasks/download.cgi )
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 got hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
3. Ensure you have hamcrest-integration, hamcrest-library, hamcrest-core in the hamcrest.home directory.
4. Ensure junit 4.12 at least in junit.home, ensure the jar file is named `junit4.jar`.
5. Ensure to have updated the changelog with the changes done.
6. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
5. Ensure you have the Mockito framework and accompanying documentation in your $JAVA_HOME
6. Ensure to have updated the changelog with the changes done.
7. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
`update-java-alternatives --set java-8-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
systems.
7. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
8. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
## Get all the dependencies ready
@ -33,10 +34,6 @@ in their main repository.
2. **A)** I2P for Android requires a Java 1.7 bootclasspath, but the servlet jar requires Java 8. So, to do the builds:
- First set `javac.compilerargs=-bootclasspath /path/to/java/7/rt.jar:/path/to/java/7/jce.jar` in override.properties
- Build with `ant mavenCentral`
- upload everything *except* servlet.jar
- Unset bootclasspath in override.properties
- Build with `ant mavenCentral`
- upload servlet.jar
3. Login to http://oss.sonatype.org for uploading the mavencentral-*.jar bundles.
4. In nexus, choose "Staging Upload" and upload all of the files with upload mode set to "Artifacts with POM".
When uploading the files to nexus, you *must* upload the pom.xml files, and all of their artifacts. For each

View File

@ -7,7 +7,7 @@ repositories {
android {
compileSdkVersion 28
defaultConfig {
versionCode 4745258
versionCode 4745260
versionName "$I2P_VERSION"
minSdkVersion 14
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
@ -114,7 +114,7 @@ task copyI2PResources(type: Copy) {
outputs.upToDateWhen { false }
into 'src/main/res'
into('drawable') {
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/i2plogo.png')
}
into('raw') {
from(i2pbase + '/installer/resources/blocklist.txt') { rename { 'blocklist_txt' } }
@ -177,15 +177,15 @@ task copyI2PAssets(type: Copy) {
outputs.upToDateWhen { false }
into 'src/main/assets/themes/console'
into('images') {
from file(i2pbase + '/installer/resources/themes/console/images/i2plogo.png')
from file(i2pbase + '/installer/resources/themes/console/images/inbound.png')
from file(i2pbase + '/installer/resources/themes/console/images/outbound.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/i2plogo.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/inbound.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/images/outbound.png')
}
into('light') {
from file(i2pbase + '/installer/resources/themes/console/light/console.css')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/light/console.css')
}
into('light/images') {
from file(i2pbase + '/installer/resources/themes/console/light/images/header.png')
from file(i2pbase + '/apps/routerconsole/jsp/themes/console/light/images/header.png')
}
}

View File

@ -92,7 +92,7 @@ class InitActivities {
File docsDir = new File(myDir, "docs");
docsDir.mkdir();
copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
/*copyResourceToFile(R.raw.ahelper_conflict_header_ht, "docs/ahelper-conflict-header.ht");
copyResourceToFile(R.raw.ahelper_new_header_ht, "docs/ahelper-new-header.ht");
copyResourceToFile(R.raw.ahelper_notfound_header_ht, "docs/ahelper-notfound-header.ht");
copyResourceToFile(R.raw.auth_header_ht, "docs/auth-header.ht");
@ -110,7 +110,7 @@ class InitActivities {
copyResourceToFile(R.raw.noproxy_header_ht, "docs/noproxy-header.ht");
copyResourceToFile(R.raw.protocol_header_ht, "docs/protocol-header.ht");
copyResourceToFile(R.raw.reset_header_ht, "docs/reset-header.ht");
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");
copyResourceToFile(R.raw.resetp_header_ht, "docs/resetp-header.ht");*/
File cssDir = new File(docsDir, "themes/console/light");
cssDir.mkdirs();

View File

@ -5,11 +5,13 @@ import android.os.Build;
import android.support.v4.util.Pair;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import net.i2p.android.router.R;
import net.i2p.android.util.FragmentUtils;
@ -129,6 +131,17 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
}
}
private void setClipboard(Context context, String text) {
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(text);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
clipboard.setPrimaryClip(clip);
}
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
@ -183,6 +196,19 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
ViewCompat.getTransitionName(tvh.status));
Pair<View, String>[] pairs = new Pair[]{ statusPair};
mListener.onTunnelSelected(tunnel.getId(), pairs);
view.invalidate();
}
});
tvh.itemView.setOnLongClickListener(new View.OnLongClickListener() {
//@Override
public boolean onLongClick(View view) {
setClipboard(mCtx, tunnel.getDestHashBase32());
Toast clipboardMessage = Toast.makeText(mCtx, R.string.copied_base32_system_notification_title, Toast. LENGTH_LONG);
clipboardMessage.setGravity(Gravity.TOP, 0, 0); //optional
clipboardMessage.show();
view.invalidate();
return true;
}
});
break;
@ -190,6 +216,7 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
default:
break;
}
}
// Return the size of the dataset (invoked by the layout manager)

View File

@ -5,6 +5,7 @@ import android.content.Context;
//import net.i2p.BOB.BOB;
import net.i2p.I2PAppContext;
import net.i2p.addressbook.DaemonThread;
import android.preference.PreferenceManager;
import net.i2p.android.apps.NewsFetcher;
import net.i2p.android.router.util.Notifications;
import net.i2p.android.router.util.Util;
@ -14,8 +15,11 @@ import net.i2p.router.JobImpl;
import net.i2p.router.RouterContext;
import net.i2p.router.startup.RouterAppManager;
import net.i2p.util.I2PAppThread;
import net.i2p.sam.SAMBridge;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
/**
* Load the clients we want.
@ -41,6 +45,7 @@ class LoadClientsJob extends JobImpl {
private final Context mCtx;
private final Notifications _notif;
private DaemonThread _addressbook;
public SAMBridge SAM_BRIDGE;
//private BOB _bob;
/** this is the delay to load (and start) the clients. */
@ -57,8 +62,9 @@ class LoadClientsJob extends JobImpl {
public String getName() { return "Start Clients"; }
public void runJob() {
Job j = new RunI2PTunnel(getContext());
getContext().jobQueue().addJob(j);
Job jtunnel = new RunI2PTunnel(getContext());
getContext().jobQueue().addJob(jtunnel);
Thread t = new I2PAppThread(new StatSummarizer(), "StatSummarizer", true);
t.setPriority(Thread.NORM_PRIORITY - 1);
@ -69,7 +75,15 @@ class LoadClientsJob extends JobImpl {
//try {
// _bob.startup();
//} catch (IOException ioe) {}
boolean useSAM = PreferenceManager.getDefaultSharedPreferences(mCtx).getBoolean("i2pandroid.client.SAM", true);
Util.i("SAM API " + useSAM);
if (useSAM) {
Job jsam = new RunI2PSAM(getContext());
getContext().jobQueue().addJob(jsam);
Util.i("SAM API started successfully" + useSAM);
}else{
Util.i("SAM API disabled, not starting "+useSAM);
}
getContext().addShutdownTask(new ClientShutdownHook());
}
@ -82,12 +96,13 @@ class LoadClientsJob extends JobImpl {
public String getName() { return "Start I2P Tunnel"; }
public void runJob() {
while (!getContext().router().isRunning()) {
try { Thread.sleep(1000); } catch (InterruptedException ie) { return; }
if (!getContext().router().isAlive()) {
if (!getContext().router().isRunning()) {
if (getContext().router().isAlive()) {
requeue(1000);
} else {
Util.e("Router stopped before i2ptunnel could start");
return;
}
return;
}
Util.d("Starting i2ptunnel");
TunnelControllerGroup tcg = TunnelControllerGroup.getInstance(getContext());
@ -112,6 +127,46 @@ class LoadClientsJob extends JobImpl {
}
}
private class RunI2PSAM extends JobImpl {
public RunI2PSAM(RouterContext ctx) {
super(ctx);
}
public String getName() { return "Start SAM API"; }
public void runJob() {
if (!getContext().router().isRunning()) {
if (getContext().router().isAlive()) {
requeue(1000);
} else {
Util.e("Router stopped before SAM API could start");
}
return;
}
Util.d("Starting SAM");
try {
Util.i("Starting the SAM API");
SAM_BRIDGE = new SAMBridge("127.0.0.1",
7656,
false,
SAM_PROPERTIES(),
"sam.keys",
new File("sam_config"));
SAM_BRIDGE.run();
} catch (IOException e) {
Util.e( e.toString());
e.printStackTrace();
}
}
public Properties SAM_PROPERTIES() throws IOException {
Util.i("Getting the default properties");
Properties sam_properties = new Properties();
return sam_properties;
}
}
private class ClientShutdownHook implements Runnable {
public void run() {
Util.d("client shutdown hook");
@ -120,6 +175,8 @@ class LoadClientsJob extends JobImpl {
// NewsFetcher registers its own hook
//if (_bob != null)
// _bob.shutdown(null);
if (SAM_BRIDGE != null)
SAM_BRIDGE.shutdown(null);
if (_addressbook != null)
_addressbook.halt();
}

View File

@ -1,23 +1,17 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.LocalBroadcastManager;
import net.i2p.android.router.R;
@ -175,42 +169,22 @@ public class RouterService extends Service {
}
_handler.removeCallbacks(_updater);
_handler.postDelayed(_updater, 50);
// We need to *not* check if we're restarting on Android greater than Oreo due to
// changes in how notifications work and the use of NotificationChannels.
if(!restart) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startOwnForeground();
else
startForeground(1337, _statusBar.getNote());
} else {
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
startForeground(1337, _statusBar.getNote());
}
}
//return START_STICKY;
return START_NOT_STICKY;
}
/**
* Android 8.1, 9.0, 10 handle foreground applications differently and as such require us to
* start our foreground service differently.
* */
@RequiresApi(api = Build.VERSION_CODES.O)
private void startOwnForeground(){
String NOTIFICATION_CHANNEL_ID = "com.example.simpleapp";
String channelName = "My Background Service";
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
chan.setLightColor(Color.BLUE);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
Notification notification = notificationBuilder.setOngoing(true)
.setSmallIcon(R.drawable.i2plogo)
.setContentTitle(getString(R.string.running_background))
.setPriority(NotificationManager.IMPORTANCE_MIN)
.setCategory(Notification.CATEGORY_SERVICE)
.build();
startForeground(1337, notification);
}
/**
* maybe this goes away when the receiver can bind to us
*/

View File

@ -1,11 +1,15 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import android.view.Gravity;
import android.widget.Toast;
import net.i2p.android.I2PActivity;
import net.i2p.android.router.R;
@ -16,6 +20,9 @@ class StatusBar {
private final NotificationManager mNotificationManager;
private final NotificationCompat.Builder mNotifyBuilder;
private Notification mNotif;
private final String NOTIFICATION_CHANNEL_ID = "net.i2p.android.STARTUP_STATE_CHANNEL";
private final String channelName = "I2P Router Service";
NotificationChannel mNotificationChannel;
private static final int ID = 1337;
@ -28,25 +35,33 @@ class StatusBar {
StatusBar(Context ctx) {
mCtx = ctx;
mNotificationManager = (NotificationManager) ctx.getSystemService(
mNotificationManager = (NotificationManager) mCtx.getSystemService(
Context.NOTIFICATION_SERVICE);
assert mNotificationManager != null;
Thread.currentThread().setUncaughtExceptionHandler(
new CrashHandler(mNotificationManager));
int icon = ICON_STARTING;
// won't be shown if replace() is called
String text = ctx.getString(R.string.notification_status_starting);
String text = mCtx.getString(R.string.notification_status_starting);
mNotifyBuilder = new NotificationCompat.Builder(ctx)
.setContentText(text)
.setSmallIcon(icon)
.setColor(mCtx.getResources().getColor(R.color.primary_light))
.setOngoing(true)
.setOnlyAlertOnce(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mNotifyBuilder = new NotificationCompat.Builder(mCtx);
} else {
mNotifyBuilder = new NotificationCompat.Builder(mCtx, NOTIFICATION_CHANNEL_ID);
}
Intent intent = new Intent(ctx, I2PActivity.class);
mNotifyBuilder.setContentText(text);
mNotifyBuilder.setSmallIcon(icon);
mNotifyBuilder.setColor(mCtx.getResources().getColor(R.color.primary_light));
mNotifyBuilder.setOngoing(true);
mNotifyBuilder.setPriority(NotificationManager.IMPORTANCE_LOW);
mNotifyBuilder.setCategory(Notification.CATEGORY_SERVICE);
Intent intent = new Intent(mCtx, I2PActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pi = PendingIntent.getActivity(mCtx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.setContentIntent(pi);
}
@ -74,6 +89,12 @@ class StatusBar {
public void update(String title, String text) {
mNotifyBuilder.setContentTitle(title)
.setContentText(text);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mNotificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_LOW);
mNotificationManager.createNotificationChannel(mNotificationChannel);
mNotificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
mNotifyBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
}
mNotif = mNotifyBuilder.build();
mNotificationManager.notify(ID, mNotif);
}

View File

@ -2,16 +2,20 @@ package net.i2p.android.router.util;
import net.i2p.android.router.R;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
public class Notifications {
private final Context mCtx;
private final NotificationManager mNotificationManager;
public static final int ICON = R.drawable.ic_stat_router_active;
public Notifications(Context ctx) {
@ -25,13 +29,26 @@ public class Notifications {
}
public void notify(String title, String text, Class<?> c) {
NotificationCompat.Builder b =
new NotificationCompat.Builder(mCtx)
.setContentTitle(title)
.setContentText(text)
.setSmallIcon(ICON)
.setColor(mCtx.getResources().getColor(R.color.primary_light))
.setAutoCancel(true);
notify(title, text, "", c);
}
public void notify(String title, String text, String channel, Class<?> c) {
NotificationCompat.Builder b;
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
b = new NotificationCompat.Builder(mCtx);
} else {
if (channel.equals("")){
b = new NotificationCompat.Builder(mCtx);
} else {
b = new NotificationCompat.Builder(mCtx, channel);
}
}
b.setContentTitle(title);
b.setContentText(text);
b.setSmallIcon(ICON);
b.setColor(mCtx.getResources().getColor(R.color.primary_light));
b.setAutoCancel(true);
if (c != null) {
Intent intent = new Intent(mCtx, c);

View File

@ -0,0 +1,13 @@
<html>
<head></head>
<body>
<h2>How to configure IceRaven for Android:</h2>
<h3>Configuration via Webextension</h3>
<ol>
<li>Open IceRaven and click the main menu. Scroll to the top, and tap the "Add-Ons" submenu.</li>
<li>Tap on the "Add-Ons Manager" option.</li>
<li>Find the "I2P Proxy for Android and Other" extension in the Add-Ons collection and tap on the <code>+</code> symbol</li>
<li>You can now browse I2P Sites!</li>
</ol>
</body>
</html>

View File

@ -24,8 +24,7 @@
<li>Tap "Update"</li>
<li>You can now browse I2P eepsites!</li>
</ol>
<h3>Experimental Rootless Configuration via Webextension</h3>
<strong><p>Use at your own risk</p></strong>
<h3>Rootless Configuration via Webextension</h3>
<ol>
<li>Open this link in GNU IceCat and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
<li>Click through the "Blocked Extension" warning</li>

View File

@ -24,8 +24,7 @@
<li>Tap "Update"</li>
<li>You can now browse I2P eepsites!</li>
</ol>
<h3>Experimental Rootless Configuration via Webextension</h3>
<strong><p>Use at your own risk</p></strong>
<h3>Rootless Configuration via Webextension</h3>
<ol>
<li>Open this link in Fennec and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
<li>Click through the "Blocked Extension" warning</li>

View File

@ -24,8 +24,7 @@
<li>Tap "Update"</li>
<li>You can now browse I2P eepsites!</li>
</ol>
<h3>Experimental Rootless Configuration via Webextension</h3>
<strong><p>Use at your own risk</p></strong>
<h3>Rootless Configuration via Webextension</h3>
<ol>
<li>Open this link in Firefox and get the WebExtension from <a href="https://github.com/eyedeekay/i2psetproxy.js/releases">Github</a></li>
<li>Click through the "Blocked Extension" warning</li>

View File

@ -100,3 +100,56 @@ tunnel.3.option.outbound.length=2
tunnel.3.option.outbound.lengthVariance=0
tunnel.3.option.outbound.priority=15
tunnel.3.startOnLoad=true
# I2P Git Repositories SSH Access
tunnel.6.description=I2P Git Repositories SSH Access
tunnel.6.interface=127.0.0.1
tunnel.6.listenPort=7670
tunnel.6.name=gitssh.idk.i2p
tunnel.6.option.i2cp.closeIdleTime=1800000
tunnel.6.option.i2cp.closeOnIdle=false
tunnel.6.option.i2cp.delayOpen=true
tunnel.6.option.i2cp.destination.sigType=7
tunnel.6.option.i2cp.newDestOnResume=false
tunnel.6.option.i2cp.reduceIdleTime=1200000
tunnel.6.option.i2cp.reduceOnIdle=true
tunnel.6.option.i2cp.reduceQuantity=1
tunnel.6.option.inbound.backupQuantity=1
tunnel.6.option.inbound.length=3
tunnel.6.option.inbound.nickname=gitssh.idk.i2p
tunnel.6.option.inbound.quantity=3
tunnel.6.option.outbound.backupQuantity=1
tunnel.6.option.outbound.length=3
tunnel.6.option.outbound.nickname=gitssh.idk.i2p
tunnel.6.option.outbound.quantity=3
tunnel.6.sharedClient=false
tunnel.6.startOnLoad=false
tunnel.6.targetDestination=gitssh.idk.i2p
tunnel.6.type=client
# I2P Git Repositories HTTP Access(Android only)
# Disabled by default, useful for Android gitlab clients like labcoat
tunnel.7.description=I2P Git Repositories HTTP Access(Android Only)
tunnel.7.interface=127.0.0.1
tunnel.7.listenPort=7671
tunnel.7.name=git.idk.i2p
tunnel.7.option.i2cp.closeIdleTime=1800000
tunnel.7.option.i2cp.closeOnIdle=false
tunnel.7.option.i2cp.delayOpen=true
tunnel.7.option.i2cp.destination.sigType=7
tunnel.7.option.i2cp.newDestOnResume=false
tunnel.7.option.i2cp.reduceIdleTime=1200000
tunnel.7.option.i2cp.reduceOnIdle=true
tunnel.7.option.i2cp.reduceQuantity=1
tunnel.7.option.inbound.backupQuantity=1
tunnel.7.option.inbound.length=3
tunnel.7.option.inbound.nickname=git.idk.i2p
tunnel.7.option.inbound.quantity=3
tunnel.7.option.outbound.backupQuantity=1
tunnel.7.option.outbound.length=3
tunnel.7.option.outbound.nickname=git.idk.i2p
tunnel.7.option.outbound.quantity=3
tunnel.7.sharedClient=false
tunnel.7.startOnLoad=false
tunnel.7.targetDestination=ssh.idk.i2p
tunnel.7.type=client

View File

@ -50,7 +50,7 @@ i2np.bandwidth.outboundKBytesPerSecond=50
#
# NTCP
#
i2np.ntcp.enable=false
i2np.ntcp.enable=true
i2np.ntcp.maxConnections=32
#
# NTCP2

View File

@ -25,7 +25,7 @@
<string name="button_router_graceful">I2P se fermera dans %s</string>
<string name="button_shutdown_now">Appuyer longuement pour arrêter maintenant</string>
<string name="button_cancel_graceful">Appuyer longuement pour annuler la fermeture</string>
<string name="no_internet">Aucune connexion Internet nest disponible</string>
<string name="no_internet">Aucune connexion à Internet nest disponible</string>
<string name="hidden">caché</string>
<string name="testing">en test</string>
<string name="firewalled">derrière un pare-feu</string>
@ -54,7 +54,7 @@
<string name="download">Téléchargement</string>
<string name="upload">Téléversement</string>
<string name="configure_browser_title">Configurer le navigateur?</string>
<string name="configure_browser_for_i2p">Souhaitez-vous configurer un navigateur pour visualiser les sites I2P? (Vous pouvez aussi le faire plus tard grâce au menu daide.)</string>
<string name="configure_browser_for_i2p">Voulez-vous configurer un navigateur pour visualiser les sites I2P? (Vous pouvez aussi le faire plus tard grâce au menu daide.)</string>
<string name="configure_no_doze_title">Gérer les optimisations de la pile?</string>
<string name="configure_no_doze">I2P fonctionne mieux sil fonctionne en permanence. Pour empêcher quAndroid ferme I2P quand il essaie déconomiser lénergie, vous pouvez ajouter I2P à la liste dexception de la pile. La fiabilité de lappli sen trouvera grandement améliorée.\n\nGarder I2P en fonction en arrière-plan? (recommandé)</string>
<string name="first_start_title">Félicitations pour votre installation dI2P!</string>
@ -82,11 +82,11 @@
<string name="view_news">Toucher pour voir les dernières nouvelles dI2P</string>
<string name="router_not_running">Le routeur ne fonctionne pas.</string>
<string name="router_shutting_down">Le routeur séteint.</string>
<string name="stats_not_ready">Le gestionnaire de statistiques nest pas encore prêt. Ressayer ultérieurement.</string>
<string name="stats_not_ready">Le gestionnaire de statistiques nest pas encore prêt. Réessayer plus tard.</string>
<string name="select_an_address">Sélectionner une adresse.</string>
<string name="no_graphs_configured">Aucun graphique na été configuré. Vous pouvez choisir les statistiques à graphiquer dans le menu des paramètres. Tout changement prendra effet après 60 secondes.</string>
<string name="configure_graphs">Configurer les graphiques</string>
<string name="graphs_not_ready">Les graphiques ne sont pas encore prêts. Ressayer ultérieurement.</string>
<string name="graphs_not_ready">Les graphiques ne sont pas encore prêts. Réessayer plus tard.</string>
<string name="statistics">Statistiques</string>
<string name="routers">Routeurs</string>
<string name="leasesets">Jeux de baux</string>
@ -171,8 +171,8 @@
<string name="about_project">Page daccueil du projet :</string>
<string name="about_bugs">Bogues et assistance :</string>
<string name="about_helpwanted">Aide recherchée!</string>
<string name="about_volunteer">Souhaitez-vous aider à améliorer lappli? Portez-vous volontaire sur le forum Android :</string>
<string name="about_donate">Souhaitez-vous faire un don en argent ou en bitcoins pour acheter plus dappareils Android pour le développement et les tests? Rendez-vous sur :</string>
<string name="about_volunteer">Voulez-vous aider à améliorer lappli? Portez-vous volontaire sur le forum Android :</string>
<string name="about_donate">Voulez-vous faire un don en argent ou en bitcoins pour acheter plus dappareils Android pour le développement et les tests? Rendez-vous sur :</string>
<string name="menu_help">Aide</string>
<string name="general">Général</string>
<string name="label_router">Adresses publiques</string>
@ -201,7 +201,7 @@
<string name="i2ptunnel_type_streamrserver">Serveur Streamr</string>
<string name="i2ptunnel_type_httpbidirserver">Bidir HTTP</string>
<string name="install_recommended_app">Installer lappli recommandée?</string>
<string name="app_needed_for_this_tunnel_type">Vous devez installer une appli pour utiliser ce tunnel. Souhaitez-vous installer lappli recommandée?</string>
<string name="app_needed_for_this_tunnel_type">Vous devez installer une appli pour utiliser ce tunnel. Voulez-vous installer lappli recommandée?</string>
<string name="i2ptunnel_not_initialized">Les tunnels ne sont pas encore initialisés, veuillez recharger dans deux minutes.</string>
<string name="no_configured_client_tunnels">Aucun tunnel client nest configuré.</string>
<string name="no_configured_server_tunnels">Aucun tunnel serveur nest configuré.</string>

View File

@ -55,6 +55,8 @@
<string name="upload">Wysyłanie</string>
<string name="configure_browser_title">Konfigurować przeglądarkę?</string>
<string name="configure_browser_for_i2p">Czy chciałbyś skonfigurować przeglądarkę, aby przeglądać strony I2P? (Możesz to zrobić później w wybierająć pomoc z menu.)</string>
<string name="configure_no_doze_title">Czy wyłączyć optymalizację baterii?</string>
<string name="configure_no_doze">Aplikacja I2P działa najlepiej gdy działa bez przerwy. Aby system Android nie usypiał aplikacji I2P w celu oszczędzania energii, należy dodać ją do listy wyjątków. Znacząco większy to niezawodność aplikacji.\n\nCzy pozwolić aplikacji I2P działać w tle? (zalecane)</string>
<string name="first_start_title">Gratulacje, zainstalowałeś I2P!</string>
<string name="first_start_welcome"><b>Witamy w I2P!</b> Proszę <b>bądz cierpliwy</b> bo I2P właśnie się uruchamia i szuka peerów.</string>
<string name="first_start_read">W międzyczasie, prosimy o zapoznanie się z notatkami tego wydania oraz stroną powitalną.</string>
@ -145,6 +147,7 @@
<string name="settings_label_transports">Transporty</string>
<string name="settings_label_maxConns">Maksymalna liczba połączeń</string>
<string name="settings_label_i2cp">Interfejs I2CP</string>
<string name="settings_desc_i2cp">Zezwól aplikacjom stron trzecich na tworzenie tuneli (wymaga restartu węzła)</string>
<string name="settings_label_exploratory_pool">Pole rozpoznawcze</string>
<string name="settings_desc_exploratory_pool">Parametry tuneli</string>
<string name="settings_label_expl_inbound">Tunele przychodzące</string>

View File

@ -47,22 +47,22 @@
<string name="active_peers">Активные узлы</string>
<string name="known_peers">Известные узлы</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">K</string>
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">С</string>
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">Нет ни одного запущенного туннеля.</string>
<string name="download">Получено</string>
<string name="upload">Передано</string>
<string name="configure_browser_title">Настроить браузер?</string>
<string name="configure_browser_for_i2p">Настроить браузер для просмотра I2P сайтов? (Вы сможете сделать это позже из меню \"Справка\")</string>
<string name="configure_no_doze_title">Управлять оптимизацией энергосбережения?</string>
<string name="configure_no_doze">I2P работает лучше всего когда постоянно запущен. Для предотвращения закрытия I2P системой вы можете добавить его в список исключения оптимизации. Это существенно увеличит надёжность приложения. Оставить I2P работать в фоне? (рекомендуется)</string>
<string name="configure_no_doze">I2P работает лучше всего, когда постоянно запущен. Для предотвращения закрытия I2P системой вы можете добавить его в список исключений оптимизации. Это существенно увеличит надёжность приложения. Оставить I2P работать в фоне? (рекомендуется)</string>
<string name="first_start_title">Поздравляем с установкой I2P!</string>
<string name="first_start_welcome"><b>Добро пожаловать в I2P!</b> Пожалуйста, <b>дождитесь</b> пока I2P загрузится и найдет узлы.</string>
<string name="first_start_read">Пока вы ждете, пожалуйста, прочтите информацию о релизе и страницу приветствия.</string>
<string name="first_start_faq">Как только у вас появятся клиентские туннели, пожалуйста, <b>посмотрите</b> раздел FAQ:</string>
<string name="first_start_faq_nonanon">Или используйте эту не анонимную ссылку, если вы не хотите ждать создания туннелей:</string>
<string name="first_start_irc">Настройте свой клиент IRC на <b>localhost:6668</b> и скажите нам привет:</string>
<string name="first_start_faq_nonanon">Или используйте эту неанонимную ссылку, если вы не хотите ждать создания туннелей:</string>
<string name="first_start_irc">Настройте свой клиент IRC на <b>localhost:6668</b> и поздоровайтесь с нами:</string>
<string name="action_search">Поиск</string>
<string name="action_add">Добавить</string>
<string name="action_edit">Изменить</string>
@ -137,10 +137,10 @@
<string name="settings_dialog_sharePercent">Процент пропускной способности на раздачу</string>
<string name="settings_desc_upnp">Автооткрытие портов брандмауэра</string>
<string name="settings_label_logging">Журналирование</string>
<string name="settings_label_default_log_level">Уровень журналирования по-умолчанию</string>
<string name="settings_label_default_log_level">Уровень журналирования по умолчанию</string>
<string name="settings_label_appearance">Внешний вид</string>
<string name="settings_label_language">Язык</string>
<string name="settings_default">По-умолчанию</string>
<string name="settings_default">По умолчанию</string>
<string name="settings_label_advanced">Расширенные</string>
<string name="settings_label_showStats">Статистика маршрутизатора</string>
<string name="settings_summ_showStats">Показать расширенную статистику в главной консоли</string>
@ -171,8 +171,8 @@
<string name="about_project">Сайт проекта:</string>
<string name="about_bugs">Ошибки и поддержка:</string>
<string name="about_helpwanted">Требуется помощь!</string>
<string name="about_volunteer">Хотите помочь улучшить приложение? Добровольцы на Android форуме:</string>
<string name="about_donate">Хотите пожертвовать деньги или bitcoins на покупку дополнительных Android устройств для разработчиков и тестировщиков? Зайдите:</string>
<string name="about_volunteer">Хотите помочь улучшить приложение? Добровольцы на Android-форуме:</string>
<string name="about_donate">Хотите пожертвовать деньги или bitcoins на покупку дополнительных Android-устройств для разработчиков и тестировщиков? Зайдите:</string>
<string name="menu_help">Справка</string>
<string name="general">Общие</string>
<string name="label_router">Публичные адреса</string>
@ -187,7 +187,7 @@
<string name="nsu_iae_cannot_start_with">Имя узла не может начинаться с \"%s\"</string>
<string name="nsu_iae_cannot_end_with">Имя узла не может заканчиваться \"%s\"</string>
<string name="nsu_iae_cannot_contain">Имя узла не может содержать \"%s\"</string>
<string name="nsu_iae_requires_conversion">Имя узла \"%s\" необходимо преобразовать в ASCII, но соответствующая библиотека не доступна в этой версии Android</string>
<string name="nsu_iae_requires_conversion">Имя узла \"%s\" необходимо преобразовать в ASCII, но соответствующая библиотека недоступна в этой версии Android</string>
<string name="i2ptunnel_type_client">Стандартный клиент</string>
<string name="i2ptunnel_type_httpclient">HTTP клиент</string>
<string name="i2ptunnel_type_ircclient">IRC клиент</string>
@ -202,7 +202,7 @@
<string name="i2ptunnel_type_httpbidirserver">HTTP bidir</string>
<string name="install_recommended_app">Установить рекомендованное приложение?</string>
<string name="app_needed_for_this_tunnel_type">Требуется установить приложение для использования этого туннеля. Хотите установить рекомендованное приложение?</string>
<string name="i2ptunnel_not_initialized">Туннели еще не инициализированы, пожалуйста, обновите через пару минут</string>
<string name="i2ptunnel_not_initialized">Туннели еще не инициализированы, пожалуйста, обновите через пару минут.</string>
<string name="no_configured_client_tunnels">Нет настроенных клиентских туннелей.</string>
<string name="no_configured_server_tunnels">Нет настроенных серверных туннелей.</string>
<string name="i2ptunnel_new_tunnel">Создать туннель</string>
@ -244,7 +244,7 @@
<string name="i2ptunnel_wizard_submit_confirm_button">Создать туннель</string>
<string name="i2ptunnel_view_target">Цель</string>
<string name="i2ptunnel_view_access_point">Точка доступа</string>
<string name="i2ptunnel_view_autostart">Авто-запуск</string>
<string name="i2ptunnel_view_autostart">Автозапуск</string>
<string name="address_copied_to_clipboard">Адрес скопирован в буфер обмена</string>
<string name="edit_tunnel">Изменить туннель</string>
<string name="name">Имя</string>
@ -275,7 +275,7 @@
<string name="tunnel_summ_use_ssl">Использовать SSL для подключения к цели</string>
<string name="tunnel_parameters">Параметры туннеля</string>
<string name="profile">Профиль</string>
<string name="profile_bulk">Массовое соединение (для загрузок/вебсайтов/P2P)</string>
<string name="profile_bulk">Массовое соединение (для загрузок/веб-сайтов/P2P)</string>
<string name="profile_interactive">Интерактивное соединение</string>
<string name="delay_connect">Задержка подключения</string>
<string name="tunnel_summ_delay_connect">Включить для запроса/ответа соединений</string>

View File

@ -56,7 +56,9 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="upload">Ladda upp</string>
<string name="configure_browser_title">Konfigurera webbläsaren?</string>
<string name="configure_browser_for_i2p">Vill du konfigurera en browser för att se på I2P-sidor? (Du kan också göra detta senare från hjälpmenyn.)</string>
<string name="first_start_title">Gratulerar till din I2P installation!</string>
<string name="configure_no_doze_title">Hantera batterioptimeringar?</string>
<string name="configure_no_doze">I2P fungerar bäst om den fortsätter att fungera. För att förhindra att Android stänger I2P när du försöker spara ström kan du lägga till den i listan över undantag från batterier. Detta kommer att förbättra applikationens tillförlitlighet avsevärt.\n\nHålla I2P igång i bakgrunden? (rekommenderad)</string>
<string name="first_start_title">Gratulerar till din I2P-installation!</string>
<string name="first_start_welcome"><b>Välkommen till I2P!</b> Vänligen <b>ha tålamod</b> medan I2P startar och letar upp noder.</string>
<string name="first_start_read">Medan du väntar, vänligen läs utgåvans meddelanden och välkomstsidan.</string>
<string name="first_start_faq">När du har fått klienttunnlar, vänligen <b>kolla</b> våra vanliga frågor:</string>
@ -146,6 +148,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="settings_label_transports">Transporter</string>
<string name="settings_label_maxConns">Max anslutningar</string>
<string name="settings_label_i2cp">I2CP interfrace</string>
<string name="settings_desc_i2cp">Tillåt tredjepartsappar att skapa tunnlar (kräver omstart av routern)</string>
<string name="settings_label_exploratory_pool">Utforskande pool</string>
<string name="settings_desc_exploratory_pool">Tunnelparametrar</string>
<string name="settings_label_expl_inbound">Inåtgående tunnlar</string>
@ -173,7 +176,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="about_donate">Vill du donera pengar eller bitcoin för inköp av fler Androidenheter till utveckling och testning? Gå till:</string>
<string name="menu_help">Hjälp</string>
<string name="general">Generell</string>
<string name="label_router">Offentliga adresser</string>
<string name="label_router">Publika adresser</string>
<string name="label_private">Privata adresser</string>
<string name="addressbook_is_empty">Adressboken är tom</string>
<string name="addressbook_search_header">%s hittade</string>
@ -210,6 +213,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="i2ptunnel_msg_tunnel_stopping">Stannar tunnel</string>
<string name="i2ptunnel_delete_confirm_message">Radera tunnel?</string>
<string name="i2ptunnel_delete_confirm_button">Radera tunnel</string>
<string name="i2ptunnel_no_tunnel_details">Det gick inte att läsa in detaljer i tunneln</string>
<string name="i2ptunnel_wizard_k_client_server">Klient eller Server</string>
<string name="i2ptunnel_wizard_v_client">Klienttunnel</string>
<string name="i2ptunnel_wizard_v_server">Servertunnel</string>
@ -242,6 +246,7 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="i2ptunnel_view_target">Mål</string>
<string name="i2ptunnel_view_access_point">Accesspunkt</string>
<string name="i2ptunnel_view_autostart">Auto-start</string>
<string name="address_copied_to_clipboard">Adressen kopierades till urklipp</string>
<string name="edit_tunnel">Redigera tunnel</string>
<string name="name">Namn</string>
<string name="description">Beskrivning</string>
@ -352,5 +357,6 @@ Läs utgåvenoteringar och licens-information.</string>
<string name="error_logs_copied_to_clipboard">Error loggar kopierade till urklipp</string>
<string name="logs_copied_to_clipboard">Loggar kopierade till urklipp</string>
<string name="label_browser_configuration">Browser konfiguration</string>
<string name="no_market_app">Ingen marknadsapp hittades. Installera manuellt</string>
<string name="unset">Återställ</string>
</resources>

View File

@ -3,11 +3,11 @@
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P logosu</string>
<string name="choose_language">Dil seçin</string>
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir isimsiz kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
<string name="welcome_new_install">I2P dünyasına hoş geldiniz. Bu uygulama henüz ALPHA geliştirme düzeyindedir ve güçlü bir anonim kalma özelliği sağlamamaktadır. Lütfen yayım notlarını ve lisans bilgilerini okuyun.</string>
<string name="welcome_new_version">Yeni sürüm kuruldu. Lütfen yayım notlarını okuyun. Sürüm:</string>
<string name="label_tunnels">Tüneller</string>
<string name="label_status">Durum</string>
<string name="label_console">Konsol</string>
<string name="label_console">Pano</string>
<string name="label_addresses">Adresler</string>
<string name="label_addressbook">Adres Defteri</string>
<string name="label_i2ptunnel_client">İstemci tünelleri</string>
@ -61,7 +61,7 @@
<string name="first_start_welcome"><b>I2P Yazılımına Hoşgeldiniz</b> Lütfen I2P yüklenip eşleri bulana kadar <b>sabırlı olun</b>.</string>
<string name="first_start_read">Beklerken, lütfen sürüm notları ve hoş geldiniz sayfalarını okuyun.</string>
<string name="first_start_faq">İstemci tünelleri bulunduğunda, lütfen Sık Sorulan Sorular bölümüne <b>bakın</b>:</string>
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız isimsiz olmayan şu bağlantıyı kullanın:</string>
<string name="first_start_faq_nonanon">Ya da tünelleri beklemek istemiyorsanız anonim olmayan şu bağlantıyı kullanın:</string>
<string name="first_start_irc">IRC istemcinizi <b>localhost:6668</b> adresine yönlendirip şuradan bize merhaba deyin:</string>
<string name="action_search">Arama</string>
<string name="action_add">Ekle</string>
@ -143,7 +143,7 @@
<string name="settings_default">Varsayılan</string>
<string name="settings_label_advanced">Gelişmiş</string>
<string name="settings_label_showStats">Yöneltici istatistikleri</string>
<string name="settings_summ_showStats">Ana konsolda ayrıntılı istatistikler görüntülensin</string>
<string name="settings_summ_showStats">Ana panoda ayrıntılı istatistikler görüntülensin</string>
<string name="settings_label_transports">Aktarımlar</string>
<string name="settings_label_maxConns">En fazla bağlantı</string>
<string name="settings_label_i2cp">I2CP Arabirimi</string>
@ -153,11 +153,11 @@
<string name="settings_label_expl_inbound">Geliş tünelleri</string>
<string name="settings_label_expl_outbound">Gidiş tünelleri</string>
<string name="settings_label_expl_length">Uzunluk</string>
<string name="settings_summ_expl_length">%s sıçrama</string>
<string name="settings_desc_expl_length">Kullanılacak sıçrama sayısı</string>
<string name="settings_label_expl_lengthVariance">Sıçrama çeşitliliği</string>
<string name="settings_summ_expl_length">%s durak</string>
<string name="settings_desc_expl_length">Kullanılacak durak sayısı</string>
<string name="settings_label_expl_lengthVariance">Durak çeşitliliği</string>
<string name="settings_summ_expl_lengthVariance">%s</string>
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek sıçrama sayısı</string>
<string name="settings_desc_expl_lengthVariance">Rastgele eklenecek durak sayısı</string>
<string name="settings_label_expl_quantity">Sayı</string>
<string name="settings_summ_expl_quantity">%s tünel</string>
<string name="settings_desc_expl_quantity">Tünel sayısı</string>
@ -328,7 +328,7 @@
<string name="tunnel_summ_referer">\'Referer\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_accept">\'Accept-*\' üstbilgisi geçirilsin</string>
<string name="tunnel_summ_allow_ssl">I2P adreslerinde SSL kullanılabilsin</string>
<string name="jump_url_list">Adresi listesine sıçra</string>
<string name="jump_url_list">Sıçrama adresi listesi</string>
<string name="proxy_auth">Vekil sunucu kimlik doğrulaması</string>
<string name="tunnel_summ_proxy_auth">Bu vekil sunucuda oturum açmak için kimlik doğrulaması istensin</string>
<string name="username">Kullanıcı Adı</string>

View File

@ -55,6 +55,7 @@
<string name="upload">Вивантажено</string>
<string name="configure_browser_title">Налаштувати браузер?</string>
<string name="configure_browser_for_i2p">Бажаєте налаштувати браузер для перегляду I2P-сайтів? (Ви також можете зробити це пізніше через меню).</string>
<string name="configure_no_doze_title">Керувати оптимізації батареї?</string>
<string name="first_start_title">Вітаємо! I2P встановлено.</string>
<string name="first_start_welcome"><b>Ласкаво просимо до I2P!</b> Будь ласка, <b>зачекайте,</b> так як I2P запускається і шукає піри.</string>
<string name="first_start_read">Поки чекаєте, прочитайте, будь ласка, нотатки до релізу і вітальну сторінку.</string>

View File

@ -109,9 +109,11 @@
</string-array>
<string-array name="recommended_browsers">
<item>acr.browser.lightning</item>
<item>io.github.forkmaintainers.iceraven</item>
</string-array>
<string-array name="recommended_browser_labels">
<item>Lightning</item>
<item>IceRaven(With Extension)</item>
</string-array>
<string-array name="supported_browsers">
<item>org.mozilla.firefox</item>

View File

@ -150,6 +150,9 @@
<string name="notification_status_expl">Exploratory tunnels: %1$d/%2$d</string>
<string name="notification_status_client">Client tunnels: %1$d/%2$d</string>
<string name="copied_base32_system_notification_title">Base32 copied to clipboard</string>
<string name="copied_base32_system_notification_body">The address of your I2P tunnel has been copied to the clipboard.</string>
<string name="menu_settings">Settings</string>
<string name="settings_enable">Enable</string>
<string name="settings_desc_subscriptions">Subscription URLs</string>
@ -182,7 +185,9 @@
<string name="settings_label_transports">Transports</string>
<string name="settings_label_maxConns">Max connections</string>
<string name="settings_label_i2cp">I2CP interface</string>
<string name="settings_desc_i2cp">Allow third-party apps to create tunnels (requires router restart)</string>
<string name="settings_desc_i2cp">Allow third-party apps to create tunnels using I2CP (requires router restart)</string>
<string name="settings_label_sam">SAM interface</string>
<string name="settings_desc_sam">Allow third-party apps to create tunnels using SAM (requires router restart)</string>
<string name="settings_label_exploratory_pool">Exploratory pool</string>
<string name="settings_desc_exploratory_pool">Tunnel parameters</string>
<string name="settings_label_expl_inbound">Inbound tunnels</string>

View File

@ -23,6 +23,13 @@
android:summary="@string/settings_desc_i2cp"
/>
<CheckBoxPreference
android:key="i2pandroid.client.sam"
android:defaultValue="true"
android:title="@string/settings_label_sam"
android:summary="@string/settings_desc_sam"
/>
<Preference
android:key="preference_category_expl_tunnels"
android:summary="@string/settings_desc_exploratory_pool"

View File

@ -408,14 +408,14 @@
<target name="copy-i2p-resources" depends="-dirs" >
<copy file="LICENSE.txt" tofile="res/raw/license_app_txt" />
<copy file="licenses/LICENSE-Apache2.0.txt" tofile="res/raw/license_apache20_txt" />
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/i2plogo.png" todir="res/drawable/" />
<!-- Static web sources should be in the assets directory. -->
<copy file="${i2pbase}/installer/resources/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
<copy file="${i2pbase}/installer/resources/themes/console/light/console.css" todir="assets/themes/console/light/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/i2plogo.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/outbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/images/inbound.png" todir="assets/themes/console/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/light/images/header.png" todir="assets/themes/console/light/images/" />
<copy file="${i2pbase}/apps/routerconsole/jsp/themes/console/light/console.css" todir="assets/themes/console/light/" />
<copy file="${i2pbase}/installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
<copy file="${i2pbase}/installer/resources/hosts.txt" tofile="res/raw/hosts_txt" />

View File

@ -10,11 +10,11 @@ POM_SCM_DEV_CONNECTION=scm:git:git@github.com:i2p/i2p.android.base.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=meeh
POM_DEVELOPER_NAME=meeh
POM_DEVELOPER_EMAIL=meeh@i2pmail.org
POM_DEVELOPER_ID=idk
POM_DEVELOPER_NAME=idk
POM_DEVELOPER_EMAIL=hankhill19580@gmail.com
I2P_VERSION=0.9.47
ANDROID_BUILD_TARGET_SDK_VERSION=28
ANDROID_BUILD_TARGET_SDK_VERSION=29
ANDROID_BUILD_SDK_VERSION=28
I2P_VERSION=0.9.49

View File

@ -3,7 +3,7 @@
<string name="yes">Oui</string>
<string name="no">Non</string>
<string name="install_i2p_android">Installer I2P pour Android?</string>
<string name="you_must_have_i2p_android">I2P pour Android doit être installé et en fonction. Souhaitez-vous linstaller?</string>
<string name="you_must_have_i2p_android">I2P pour Android doit être installé et en fonction. Voulez-vous linstaller?</string>
<string name="start_i2p_android">Démarrer I2P pour Android?</string>
<string name="would_you_like_to_start_i2p_android">Il semblerait quI2P pour Android ne soit pas en fonction. Souhaitez-vous le démarrer?</string>
<string name="would_you_like_to_start_i2p_android">Il semblerait quI2P pour Android ne soit pas en fonction. Voulez-vous le démarrer?</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Evet</string>
<string name="no">Hayır</string>
<string name="install_i2p_android">I2P Android guruň?</string>
<string name="you_must_have_i2p_android">I2P Android gurnalan we işleýän bolmaly. Gurmak isleýärsiňizmi?</string>
<string name="start_i2p_android">I2P Android başlaň?</string>
<string name="would_you_like_to_start_i2p_android">I2P Android işlemeýän ýaly. Başlamak isleýärsiňizmi?</string>
</resources>

View File

@ -13,6 +13,7 @@ artifacts {
routerjars file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
routerjars file: file('libs/i2ptunnel-ui.jar'), builtBy: buildRouter
routerjars file: file('libs/addressbook.jar'), builtBy: buildRouter
routerjars file: file('libs/sam.jar'), builtBy: buildRouter
//routerjars file: file('libs/BOB.jar'), builtBy: buildRouter
}
clean.dependsOn cleanBuildRouter

View File

@ -20,6 +20,7 @@
<available property="have.bob" file="${i2plib}/BOB.jar" />
<available property="have.newsxml" file="${i2pbase}/apps/routerconsole/java/build/newsxml.jar" />
<available property="have.i2ptunnel" file="${i2plib}/i2ptunnel-ui.jar" />
<available property="have.sam" file="${i2plib}/sam.jar" />
<available property="have.addressbook" file="${i2plib}/addressbook.jar" />
<target name="buildNewsXMLJar" unless="have.newsxml">
@ -36,7 +37,11 @@
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" />
</target>
<target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook">
<target name="buildSAM" unless="have.sam">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildSAM" />
</target>
<target name="buildrouter" depends="buildNewsXMLJar, buildI2PTunnelJar, buildAddressbook, buildSAM">
<mkdir dir="${jar.libs.dir}" />
<!-- newsxml -->
@ -50,10 +55,15 @@
<copy file="${i2plib}/addressbook.jar" todir="${jar.libs.dir}" />
<!-- bob -->
<!--
<!--
<copy file="${i2plib}/BOB.jar" todir="${jar.libs.dir}" />
-->
<!-- sam -->
<copy file="${i2plib}/sam.jar" todir="${jar.libs.dir}" />
</target>
<target name="clean">