summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ISSUE_TEMPLATE.md12
-rw-r--r--main/build.gradle10
-rw-r--r--main/jni/Android.mk14
-rwxr-xr-xmain/misc/fetchtranslations.sh2
-rw-r--r--main/src/main/java/de/blinkt/openvpn/LaunchVPN.java20
-rw-r--r--main/src/main/java/de/blinkt/openvpn/VpnProfile.java4
-rw-r--r--main/src/main/java/de/blinkt/openvpn/activities/ConfigConverter.java161
-rw-r--r--main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java23
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java4
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/LogFileHandler.java4
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/LogItem.java5
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java2
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java14
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java9
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/Utils.java7
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java14
-rw-r--r--main/src/main/res/layout/about.xml11
-rw-r--r--main/src/main/res/layout/config_converter.xml4
-rwxr-xr-xmain/src/main/res/values-ca/strings.xml1
-rwxr-xr-xmain/src/main/res/values-cs/strings.xml3
-rwxr-xr-xmain/src/main/res/values-de/strings.xml13
-rwxr-xr-xmain/src/main/res/values-es/strings.xml3
-rwxr-xr-xmain/src/main/res/values-et/strings.xml3
-rwxr-xr-xmain/src/main/res/values-fr/strings.xml3
-rwxr-xr-xmain/src/main/res/values-hu/strings.xml3
-rwxr-xr-xmain/src/main/res/values-in/strings.xml3
-rwxr-xr-xmain/src/main/res/values-it/strings.xml3
-rwxr-xr-xmain/src/main/res/values-ja/strings.xml3
-rwxr-xr-xmain/src/main/res/values-ko/strings.xml3
-rwxr-xr-xmain/src/main/res/values-no/strings.xml2
-rwxr-xr-xmain/src/main/res/values-pl/strings.xml3
-rwxr-xr-xmain/src/main/res/values-pt/strings.xml1
-rwxr-xr-xmain/src/main/res/values-ro/strings.xml3
-rwxr-xr-xmain/src/main/res/values-ru/strings.xml3
-rwxr-xr-xmain/src/main/res/values-sl/strings.xml3
-rwxr-xr-xmain/src/main/res/values-sv/strings.xml3
-rwxr-xr-xmain/src/main/res/values-tr/strings.xml3
-rwxr-xr-xmain/src/main/res/values-uk/strings.xml3
-rwxr-xr-xmain/src/main/res/values-vi/strings.xml3
-rwxr-xr-xmain/src/main/res/values-zh-rCN/strings.xml3
-rwxr-xr-xmain/src/main/res/values-zh-rTW/strings.xml3
-rwxr-xr-xmain/src/main/res/values/strings.xml2
42 files changed, 220 insertions, 176 deletions
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000..eaac70a5
--- /dev/null
+++ b/ISSUE_TEMPLATE.md
@@ -0,0 +1,12 @@
+To make issues more managable, I would appriciate if you fill out the details if applicable
+
+# General information
+1. Android Version
+2. Android Vendor/Custom ROM
+3. Device
+4. Version of the app (version number/play store version/self built)
+
+# Description of the issue
+
+
+
diff --git a/main/build.gradle b/main/build.gradle
index 41cf114f..0dd71338 100644
--- a/main/build.gradle
+++ b/main/build.gradle
@@ -26,10 +26,10 @@ android {
buildToolsVersion '24.0.0-rc1'
defaultConfig {
- minSdkVersion 14
+ minSdkVersion 'N'
targetSdkVersion 'N'
- versionCode = 132
- versionName = "0.6.52"
+ versionCode = 136
+ versionName = "0.6.55"
}
sourceSets {
@@ -80,7 +80,9 @@ android {
normal
-
+ modern {
+ minSdkVersion 21
+ }
/*
x86 {
versionCode Integer.parseInt("6" + defaultConfig.versionCode)
diff --git a/main/jni/Android.mk b/main/jni/Android.mk
index c61db83e..fed2bdea 100644
--- a/main/jni/Android.mk
+++ b/main/jni/Android.mk
@@ -2,9 +2,9 @@
JNI_DIR := $(call my-dir)
#optional arguments
-#WITH_POLAR=1
+#WITH_MBEDTLS=1
#WITH_OPENVPN3=1
-# Build openvpn with polar (OpenVPN3 core is always build with polar)
+# Build openvpn with mbedTLS (OpenVPN3 core is always build with mbedTLS)
#WITH_BREAKPAD=0
@@ -25,15 +25,15 @@ else
WITH_BREAKPAD=0
endif
-ifeq ($(WITH_POLAR),1)
- USE_POLAR=1
+ifeq ($(WITH_MBEDTLS),1)
+ USE_MBEDTLS=1
endif
ifeq ($(WITH_OPENVPN3),1)
- USE_POLAR=1
+ USE_MBEDTLS=1
endif
-ifeq ($(USE_POLAR),1)
- include polarssl/Android.mk
+ifeq ($(USE_MBEDTLS),1)
+ include mbedtls/Android.mk
endif
include openvpn/Android.mk
diff --git a/main/misc/fetchtranslations.sh b/main/misc/fetchtranslations.sh
index 4d03730a..b6589ce9 100755
--- a/main/misc/fetchtranslations.sh
+++ b/main/misc/fetchtranslations.sh
@@ -9,7 +9,7 @@ then
fi
echo "Fetch translation archive"
-wget -q http://crowdin.net/download/project/ics-openvpn.zip
+wget -q https://crowdin.com/download/project/ics-openvpn.zip
# Chinese language require zh-CN and zh-TW
diff --git a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
index df19565c..1df4b0e4 100644
--- a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
@@ -5,6 +5,7 @@
package de.blinkt.openvpn;
+import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
@@ -13,6 +14,7 @@ import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.VpnService;
+import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.InputType;
@@ -233,9 +235,27 @@ public class LaunchVPN extends Activity {
}
});
+ d.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ finish();
+ }
+ });
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
+ setOnDismissListener(d);
d.show();
}
+ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+ private void setOnDismissListener(AlertDialog.Builder d) {
+ d.setOnDismissListener(new DialogInterface.OnDismissListener() {
+ @Override
+ public void onDismiss(DialogInterface dialog) {
+ finish();
+ }
+ });
+ }
+
void launchVPN() {
int vpnok = mSelectedProfile.checkProfile(this);
if (vpnok != R.string.no_error_found) {
diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
index 11656ee3..31a52ec0 100644
--- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -272,7 +272,7 @@ public class VpnProfile implements Serializable, Cloneable {
if (!configForOvpn3) {
cfg += String.format("setenv IV_GUI_VER %s \n", openVpnEscape(getVersionEnvString(context)));
- String versionString = String.format("%d %s %s %s %s %s", Build.VERSION.SDK_INT, Build.VERSION.RELEASE,
+ String versionString = String.format(Locale.US, "%d %s %s %s %s %s", Build.VERSION.SDK_INT, Build.VERSION.RELEASE,
NativeUtils.getNativeAPI(), Build.BRAND, Build.BOARD, Build.MODEL);
cfg += String.format("setenv IV_PLAT_VER %s\n", openVpnEscape(versionString));
}
@@ -450,7 +450,7 @@ public class VpnProfile implements Serializable, Cloneable {
if (mMssFix != 0) {
if (mMssFix != 1450) {
- cfg += String.format("mssfix %d\n", mMssFix, Locale.US);
+ cfg += String.format(Locale.US, "mssfix %d\n", mMssFix);
} else
cfg += "mssfix\n";
}
diff --git a/main/src/main/java/de/blinkt/openvpn/activities/ConfigConverter.java b/main/src/main/java/de/blinkt/openvpn/activities/ConfigConverter.java
index cb3a43cf..462e7ee0 100644
--- a/main/src/main/java/de/blinkt/openvpn/activities/ConfigConverter.java
+++ b/main/src/main/java/de/blinkt/openvpn/activities/ConfigConverter.java
@@ -16,10 +16,10 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
-import android.os.NetworkOnMainThreadException;
import android.provider.OpenableColumns;
import android.security.KeyChain;
import android.security.KeyChainAliasCallback;
@@ -36,6 +36,7 @@ import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
+import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -84,6 +85,9 @@ public class ConfigConverter extends BaseActivity implements FileSelectCallback,
private Vector<String> mLogEntries = new Vector<>();
private Uri mSourceUri;
private EditText mProfilename;
+ private AsyncTask<Void, Void, Integer> mImportTask;
+ private LinearLayout mLogLayout;
+ private TextView mProfilenameLabel;
@Override
public void onClick(View v) {
@@ -147,7 +151,7 @@ public class ConfigConverter extends BaseActivity implements FileSelectCallback,
mResult.mName = mProfilename.getText().toString();
ProfileManager vpl = ProfileManager.getInstance(this);
- if (vpl.getProfileByName(mResult.mName)!=null) {
+ if (vpl.getProfileByName(mResult.mName) != null) {
mProfilename.setError(getString(R.string.duplicate_profile_name));
return true;
}
@@ -603,7 +607,11 @@ public class ConfigConverter extends BaseActivity implements FileSelectCallback,
findViewById(R.id.fab_footerspace).setVisibility(View.VISIBLE);
}
+ mLogLayout = (LinearLayout) findViewById(R.id.config_convert_root);
+
+
mProfilename = (EditText) findViewById(R.id.profilename);
+ mProfilenameLabel = (TextView) findViewById(R.id.profilename_label);
if (savedInstanceState != null && savedInstanceState.containsKey(VPNPROFILE)) {
mResult = (VpnProfile) savedInstanceState.getSerializable(VPNPROFILE);
@@ -650,60 +658,99 @@ public class ConfigConverter extends BaseActivity implements FileSelectCallback,
private void doImportUri(Uri data) {
//log(R.string.import_experimental);
log(R.string.importing_config, data.toString());
- try {
- String possibleName = null;
- if ((data.getScheme() != null && data.getScheme().equals("file")) ||
- (data.getLastPathSegment() != null &&
- (data.getLastPathSegment().endsWith(".ovpn") ||
- data.getLastPathSegment().endsWith(".conf")))
- ) {
- possibleName = data.getLastPathSegment();
- if (possibleName.lastIndexOf('/') != -1)
- possibleName = possibleName.substring(possibleName.lastIndexOf('/') + 1);
+ String possibleName = null;
+ if ((data.getScheme() != null && data.getScheme().equals("file")) ||
+ (data.getLastPathSegment() != null &&
+ (data.getLastPathSegment().endsWith(".ovpn") ||
+ data.getLastPathSegment().endsWith(".conf")))
+ ) {
+ possibleName = data.getLastPathSegment();
+ if (possibleName.lastIndexOf('/') != -1)
+ possibleName = possibleName.substring(possibleName.lastIndexOf('/') + 1);
- }
+ }
- mPathsegments = data.getPathSegments();
+ mPathsegments = data.getPathSegments();
- Cursor cursor = getContentResolver().query(data, null, null, null, null);
+ Cursor cursor = getContentResolver().query(data, null, null, null, null);
- try {
+ try {
- if (cursor != null && cursor.moveToFirst()) {
- int columnIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
+ if (cursor != null && cursor.moveToFirst()) {
+ int columnIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
- if (columnIndex != -1) {
- String displayName = cursor.getString(columnIndex);
- if (displayName != null)
- possibleName = displayName;
- }
- columnIndex = cursor.getColumnIndex("mime_type");
- if (columnIndex != -1) {
- log("Opening Mime TYPE: " + cursor.getString(columnIndex));
- }
+ if (columnIndex != -1) {
+ String displayName = cursor.getString(columnIndex);
+ if (displayName != null)
+ possibleName = displayName;
+ }
+ columnIndex = cursor.getColumnIndex("mime_type");
+ if (columnIndex != -1) {
+ log("Mime type: " + cursor.getString(columnIndex));
}
- } finally {
- if (cursor != null)
- cursor.close();
}
- if (possibleName != null) {
- possibleName = possibleName.replace(".ovpn", "");
- possibleName = possibleName.replace(".conf", "");
+ } finally {
+ if (cursor != null)
+ cursor.close();
+ }
+ if (possibleName != null) {
+ possibleName = possibleName.replace(".ovpn", "");
+ possibleName = possibleName.replace(".conf", "");
+ }
+
+ startImportTask(data, possibleName);
+
+
+ }
+
+ private void startImportTask(final Uri data, final String possibleName) {
+ mImportTask = new AsyncTask<Void, Void, Integer>() {
+ private ProgressBar mProgress;
+
+ @Override
+ protected void onPreExecute() {
+ mProgress = new ProgressBar(ConfigConverter.this);
+ addViewToLog(mProgress);
}
- try {
- InputStream is = getContentResolver().openInputStream(data);
- doImport(is, possibleName);
- } catch (NetworkOnMainThreadException nom) {
- throw new RuntimeException("Network on Main: + " + data);
+
+ @Override
+ protected Integer doInBackground(Void... params) {
+ try {
+ InputStream is = getContentResolver().openInputStream(data);
+
+ doImport(is);
+ if (mResult==null)
+ return -3;
+ } catch (FileNotFoundException |
+ SecurityException se)
+
+ {
+ log(R.string.import_content_resolve_error + ":" + se.getLocalizedMessage());
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
+ checkMarschmallowFileImportError(data);
+ return -2;
+ }
+
+ return 0;
}
- } catch (FileNotFoundException | SecurityException se) {
- log(R.string.import_content_resolve_error + ":" + se.getLocalizedMessage());
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
- checkMarschmallowFileImportError(data);
- }
+ @Override
+ protected void onPostExecute(Integer errorCode) {
+ mLogLayout.removeView(mProgress);
+ if (errorCode == 0) {
+ displayWarnings();
+ mResult.mName = getUniqueProfileName(possibleName);
+ mProfilename.setVisibility(View.VISIBLE);
+ mProfilenameLabel.setVisibility(View.VISIBLE);
+ mProfilename.setText(mResult.getName());
+
+ log(R.string.import_done);
+ }
+ }
+ }.execute();
}
+
@TargetApi(Build.VERSION_CODES.M)
private void checkMarschmallowFileImportError(Uri data) {
// Permission already granted, not the source of the error
@@ -723,15 +770,24 @@ public class ConfigConverter extends BaseActivity implements FileSelectCallback,
super.onStart();
}
- private void log(String logmessage) {
- mLogEntries.add(logmessage);
- TextView tv = new TextView(this);
- tv.setText(logmessage);
- LinearLayout logLayout = (LinearLayout) findViewById(R.id.config_convert_root);
- logLayout.addView(tv, logLayout.getChildCount() - 1);
+ private void log(final String logmessage) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ TextView tv = new TextView(ConfigConverter.this);
+ mLogEntries.add(logmessage);
+ tv.setText(logmessage);
+
+ addViewToLog(tv);
+ }
+ });
+ }
+
+ private void addViewToLog(View view) {
+ mLogLayout.addView(view, mLogLayout.getChildCount() - 1);
}
- private void doImport(InputStream is, String newName) {
+ private void doImport(InputStream is) {
ConfigParser cp = new ConfigParser();
try {
InputStreamReader isr = new InputStreamReader(is);
@@ -739,11 +795,6 @@ public class ConfigConverter extends BaseActivity implements FileSelectCallback,
cp.parseConfig(isr);
mResult = cp.convertProfile();
embedFiles(cp);
- displayWarnings();
- mResult.mName = getUniqueProfileName(newName);
- mProfilename.setText(mResult.getName());
-
- log(R.string.import_done);
return;
} catch (IOException | ConfigParseError e) {
diff --git a/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java b/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
index cc7e2266..b955532a 100644
--- a/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
@@ -10,7 +10,9 @@ import android.app.AlertDialog;
import android.content.*;
import android.os.IBinder;
+import de.blinkt.openvpn.LaunchVPN;
import de.blinkt.openvpn.R;
+import de.blinkt.openvpn.VpnProfile;
import de.blinkt.openvpn.core.OpenVPNService;
import de.blinkt.openvpn.core.ProfileManager;
@@ -53,24 +55,13 @@ public class DisconnectVPN extends Activity implements DialogInterface.OnClickLi
unbindService(mConnection);
}
- // if (getIntent() !=null && OpenVpnService.DISCONNECT_VPN.equals(getIntent().getAction()))
-
- // setIntent(null);
-
- /*
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- setIntent(intent);
- }
- */
-
private void showDisconnectDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.title_cancel);
builder.setMessage(R.string.cancel_connection_query);
builder.setNegativeButton(android.R.string.no, this);
- builder.setPositiveButton(android.R.string.yes,this);
+ builder.setNeutralButton(R.string.reconnect, this);
+ builder.setPositiveButton(android.R.string.yes, this);
builder.setOnCancelListener(this);
builder.show();
@@ -78,10 +69,16 @@ public class DisconnectVPN extends Activity implements DialogInterface.OnClickLi
@Override
public void onClick(DialogInterface dialog, int which) {
+ VpnProfile lastVPN = ProfileManager.getLastConnectedVpn();
if (which == DialogInterface.BUTTON_POSITIVE) {
ProfileManager.setConntectedVpnProfileDisconnected(this);
if (mService != null && mService.getManagement() != null)
mService.getManagement().stopVPN(false);
+ } else if (which == DialogInterface.BUTTON_NEUTRAL && lastVPN !=null) {
+ Intent intent = new Intent(this, LaunchVPN.class);
+ intent.putExtra(LaunchVPN.EXTRA_KEY, lastVPN.getUUID().toString());
+ intent.setAction(Intent.ACTION_MAIN);
+ startActivity(intent);
}
finish();
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
index d14e643e..57635cf4 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
@@ -554,10 +554,12 @@ public class ConfigParser {
if (verifyx509name.size() > 2) {
if (verifyx509name.get(2).equals("name"))
np.mX509AuthType = VpnProfile.X509_VERIFY_TLSREMOTE_RDN;
+ else if (verifyx509name.get(2).equals("subject"))
+ np.mX509AuthType = VpnProfile.X509_VERIFY_TLSREMOTE_DN;
else if (verifyx509name.get(2).equals("name-prefix"))
np.mX509AuthType = VpnProfile.X509_VERIFY_TLSREMOTE_RDN_PREFIX;
else
- throw new ConfigParseError("Unknown parameter to x509-verify-name: " + verifyx509name.get(2));
+ throw new ConfigParseError("Unknown parameter to verify-x509-name: " + verifyx509name.get(2));
} else {
np.mX509AuthType = VpnProfile.X509_VERIFY_TLSREMOTE_DN;
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/LogFileHandler.java b/main/src/main/java/de/blinkt/openvpn/core/LogFileHandler.java
index 7bb9d134..dbcb13fc 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/LogFileHandler.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/LogFileHandler.java
@@ -18,6 +18,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.util.Locale;
@@ -63,7 +64,7 @@ class LogFileHandler extends Handler {
flushToDisk();
}
- } catch (IOException e) {
+ } catch (IOException | BufferOverflowException e) {
e.printStackTrace();
VpnStatus.logError("Error during log cache: " + msg.what);
VpnStatus.logException(e);
@@ -88,6 +89,7 @@ class LogFileHandler extends Handler {
// We do not really care if the log cache breaks between Android upgrades,
// write binary format to disc
+
byte[] liBytes = li.getMarschaledBytes();
writeEscapedBytes(liBytes);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java
index 57bc3e1e..ebe884a8 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java
@@ -18,6 +18,7 @@ import android.util.Log;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
+import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@@ -89,7 +90,7 @@ public class LogItem implements Parcelable {
}
- public byte[] getMarschaledBytes() throws UnsupportedEncodingException {
+ public byte[] getMarschaledBytes() throws UnsupportedEncodingException, BufferOverflowException {
ByteBuffer bb = ByteBuffer.allocate(16384);
@@ -151,6 +152,8 @@ public class LogItem implements Parcelable {
if (len == 0) {
mMessage = null;
} else {
+ if (len > bb.remaining())
+ throw new IndexOutOfBoundsException("String length " + len + " is bigger than remaining bytes " + bb.remaining());
byte[] utf8bytes = new byte[len];
bb.get(utf8bytes);
mMessage = new String(utf8bytes, "UTF-8");
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
index 025ba786..752fbb2a 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
@@ -817,7 +817,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
NetworkSpace.ipAddress gatewayIP = new NetworkSpace.ipAddress(new CIDRIP(gateway, 32), false);
if (mLocalIP == null) {
- VpnStatus.logError("Local IP address unset but adding route?! This is broken! Please contact author with log");
+ VpnStatus.logError("Local IP address unset and received. Neither pushed server config nor local config specifies an IP addresses. Opening tun device is most likely going to fail.");
return;
}
NetworkSpace.ipAddress localNet = new NetworkSpace.ipAddress(mLocalIP, true);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java b/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java
index 165bd647..2856a069 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java
@@ -66,21 +66,25 @@ public class ProfileManager {
}
- public static void setConnectedVpnProfile(Context c, VpnProfile connectedrofile) {
+ /**
+ * Sets the profile that is connected (to connect if the service restarts)
+ */
+ public static void setConnectedVpnProfile(Context c, VpnProfile connectedProfile) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c);
Editor prefsedit = prefs.edit();
- prefsedit.putString(LAST_CONNECTED_PROFILE, connectedrofile.getUUIDString());
+ prefsedit.putString(LAST_CONNECTED_PROFILE, connectedProfile.getUUIDString());
prefsedit.apply();
- mLastConnectedVpn = connectedrofile;
+ mLastConnectedVpn = connectedProfile;
}
+ /**
+ * Returns the profile that was last connected (to connect if the service restarts)
+ */
public static VpnProfile getLastConnectedProfile(Context c) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c);
-
-
String lastConnectedProfile = prefs.getString(LAST_CONNECTED_PROFILE, null);
if (lastConnectedProfile != null)
return get(c, lastConnectedProfile);
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java
index d270fb2e..98fc7c9a 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java
@@ -16,7 +16,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
@@ -54,7 +53,7 @@ public class AboutFragment extends Fragment implements View.OnClickListener {
private static final String[] donationSkus = { "donation1eur", "donation2eur", "donation5eur", "donation10eur",
"donation1337eur","donation23eur","donation25eur",};
IInAppBillingService mService;
- Hashtable<View, String> viewToProduct = new Hashtable<View, String>();
+ Hashtable<View, String> viewToProduct = new Hashtable<>();
ServiceConnection mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
@@ -272,12 +271,8 @@ public class AboutFragment extends Fragment implements View.OnClickListener {
ver.setText(getString(R.string.version_info, name, version));
- TextView paypal = (TextView) v.findViewById(R.id.donatestring);
- String donatetext = getActivity().getString(R.string.donatewithpaypal);
- Spanned htmltext = Html.fromHtml(donatetext);
- paypal.setText(htmltext);
- paypal.setMovementMethod(LinkMovementMethod.getInstance());
+
gmsTextView = (TextView) v.findViewById(R.id.donategms);
/* recreating view without onCreate/onDestroy cycle */
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/Utils.java b/main/src/main/java/de/blinkt/openvpn/fragments/Utils.java
index 243eae98..1344b1e6 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/Utils.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/Utils.java
@@ -49,10 +49,12 @@ public class Utils {
supportedMimeTypes.add("application/x-x509-ca-cert");
supportedMimeTypes.add("application/x-x509-user-cert");
supportedMimeTypes.add("application/x-pem-file");
+ supportedMimeTypes.add("application/pkix-cert");
supportedMimeTypes.add("text/plain");
extensions.add("pem");
extensions.add("crt");
+ extensions.add("cer");
break;
case KEYFILE:
i.setType("application/x-pem-file");
@@ -86,6 +88,11 @@ public class Utils {
extensions.add("conf");
break;
+ case CRL_FILE:
+ supportedMimeTypes.add("application/x-pkcs7-crl");
+ supportedMimeTypes.add("application/pkix-crl");
+ break;
+
case USERPW_FILE:
i.setType("text/plain");
supportedMimeTypes.add("text/plain");
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java b/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java
index 3f5e806e..0323ba76 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java
@@ -28,6 +28,7 @@ import android.widget.Toast;
import de.blinkt.openvpn.*;
import de.blinkt.openvpn.activities.ConfigConverter;
+import de.blinkt.openvpn.activities.DisconnectVPN;
import de.blinkt.openvpn.activities.FileSelect;
import de.blinkt.openvpn.activities.VPNPreferences;
import de.blinkt.openvpn.core.ProfileManager;
@@ -82,7 +83,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
titleview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- startVPN(profile);
+ startOrStopVPN(profile);
}
});
@@ -110,6 +111,15 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
}
}
+ private void startOrStopVPN(VpnProfile profile) {
+ if (VpnStatus.isVPNActive()) {
+ Intent disconnectVPN = new Intent(getActivity(), DisconnectVPN.class);
+ startActivity(disconnectVPN);
+ } else {
+ startVPN(profile);
+ }
+ }
+
private ArrayAdapter<VpnProfile> mArrayadapter;
@@ -212,7 +222,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
}
private void setListAdapter() {
- if (mArrayadapter==null) {
+ if (mArrayadapter == null) {
mArrayadapter = new VPNArrayAdapter(getActivity(), R.layout.vpn_list_item, R.id.vpn_item_title);
}
diff --git a/main/src/main/res/layout/about.xml b/main/src/main/res/layout/about.xml
index 1f7a4acb..09a872f7 100644
--- a/main/src/main/res/layout/about.xml
+++ b/main/src/main/res/layout/about.xml
@@ -54,17 +54,6 @@
android:autoLink="all"
android:text="@string/copyright_guicode" />
- <Space
- android:layout_width="match_parent"
- android:layout_height="12sp" />
-
- <TextView
- android:id="@+id/donatestring"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/donatewithpaypal"
- tools:ignore="SelectableText" />
-
<TextView
android:paddingTop="12sp"
diff --git a/main/src/main/res/layout/config_converter.xml b/main/src/main/res/layout/config_converter.xml
index ec248cd4..4070ff7c 100644
--- a/main/src/main/res/layout/config_converter.xml
+++ b/main/src/main/res/layout/config_converter.xml
@@ -21,12 +21,16 @@
android:layout_height="wrap_content">
<TextView
+ android:visibility="gone"
+ android:id="@+id/profilename_label"
style="@style/item"
+ android:labelFor="@id/profilename"
android:text="@string/profilename"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<EditText
+ android:visibility="gone"
android:id="@+id/profilename"
style="@style/item"
android:inputType="text" />
diff --git a/main/src/main/res/values-ca/strings.xml b/main/src/main/res/values-ca/strings.xml
index 1fcfb708..5d55deaa 100755
--- a/main/src/main/res/values-ca/strings.xml
+++ b/main/src/main/res/values-ca/strings.xml
@@ -109,7 +109,6 @@
<string name="faq_howto_title">Inici rapid</string>
<string name="using_proxy">Utilitzant el proxy %1$s %2$d</string>
<string name="use_system_proxy">Utiliza el proxy del sistema</string>
- <string name="onbootrestart">Torna a conectar al reiniciar</string>
<string name="ignore">Ignorar</string>
<string name="restart">Reinicia</string>
<string name="restart_vpn_after_change">Els canvis de configuració s\'apliquen desprès de reinicar la VPN. (Re)inicar la VPN ara?</string>
diff --git a/main/src/main/res/values-cs/strings.xml b/main/src/main/res/values-cs/strings.xml
index 3ff4057a..1d01d07a 100755
--- a/main/src/main/res/values-cs/strings.xml
+++ b/main/src/main/res/values-cs/strings.xml
@@ -202,9 +202,6 @@
<string name="using_proxy">Používám proxy %1$s %2$d</string>
<string name="use_system_proxy">Použít systémovou proxy</string>
<string name="use_system_proxy_summary">K připojení použít systémové nastavení pro HTTP/HTTPS.</string>
- <string name="donatewithpaypal">K přispění můžeš využít &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN se opětovně připojí k VPN, pokud byla aktivní před vypnutím/restartem systému. Přečti si oddíl o varování před připojením než použiješ tuto možnost.</string>
- <string name="onbootrestart">Znovu připoj po restartu</string>
<string name="ignore">Ignorovat</string>
<string name="restart">Restartovat</string>
<string name="restart_vpn_after_change">Změna nastavení začne platit až po restartu VPN. Restartovat teď?</string>
diff --git a/main/src/main/res/values-de/strings.xml b/main/src/main/res/values-de/strings.xml
index 75fad11f..4653dd19 100755
--- a/main/src/main/res/values-de/strings.xml
+++ b/main/src/main/res/values-de/strings.xml
@@ -203,9 +203,8 @@
<string name="using_proxy">Verwende Proxy %1$s %2$d</string>
<string name="use_system_proxy">System-Proxys verwenden</string>
<string name="use_system_proxy_summary">Systemweite Einstellungen für HTTP- und HTTPS-Proxys beim Verbinden verwenden.</string>
- <string name="donatewithpaypal">&lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;Spenden mit PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN wird bei einem Neustart des Telefons das beim Herunterfahren aktive VPN wieder verbinden. Bitte lesen Sie die FAQ \"Warnung beim Verbinden\", bevor Sie diese Option verwenden.</string>
- <string name="onbootrestart">Nach Neustart verbinden</string>
+ <string name="onbootrestartsummary">Beim Systemstart das angebene VPN verbinden. Bitte die FAQ zum Bestätigungsdialog lesen für Android Version &lt; 5.0.</string>
+ <string name="onbootrestart">Beim Gerätestart verbinden</string>
<string name="ignore">Ignorieren</string>
<string name="restart">Neu verbinden</string>
<string name="restart_vpn_after_change">Konfigurationsänderungen werden erst nach einem Neustart des VPNs aktiv. Jetzt neu verbinden?</string>
@@ -401,4 +400,12 @@
<string name="pw_request_dialog_title">%1$s benötigt</string>
<string name="pw_request_dialog_prompt">Geben Sie bitte das Passwort für das Profil %1$s ein</string>
<string name="menu_use_inline_data">Inline-Daten verwenden</string>
+ <string name="export_config_chooser_title">Konfigurationsdatei exportieren</string>
+ <string name="missing_tlsauth">TLS-Auth-Datei fehlt</string>
+ <string name="missing_certificates">Fehlendes Benutzerzertifikat oder privater Schlüssel</string>
+ <string name="missing_ca_certificate">Fehlendes CA-Zertifikat</string>
+ <string name="crl_title">Zertifikatswiderrufsliste (optional)</string>
+ <string name="reread_log">%d Einträge vom Logcache gelesen</string>
+ <string name="samsung_broken_title">Samsung Geräte</string>
+ <string name="novpn_selected">kein VPN ausgewählt</string>
</resources>
diff --git a/main/src/main/res/values-es/strings.xml b/main/src/main/res/values-es/strings.xml
index 1fff99ef..d985e55f 100755
--- a/main/src/main/res/values-es/strings.xml
+++ b/main/src/main/res/values-es/strings.xml
@@ -203,9 +203,6 @@ hacia/de Móvil)</string>
<string name="using_proxy">Usando proxy %1$s %2$d</string>
<string name="use_system_proxy">Usar el proxy del sistema</string>
<string name="use_system_proxy_summary">Utilice la configuración del sistema para los proxies HTTP/HTTPS al conectar.</string>
- <string name="donatewithpaypal">Usted puede &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;donar con PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN volvera a conectar a una VPN si estaba activa en el apagado/reinicio del sistema. Por favor lea la P+F de advertencia de conexión antes de usar esta opción.</string>
- <string name="onbootrestart">Vuelva a conectar al reiniciar</string>
<string name="ignore">Ignorar</string>
<string name="restart">Reiniciar</string>
<string name="restart_vpn_after_change">Los cambios de configuración se aplican después de reiniciar la VPN. ¿(Re)iniciar la VPN ahora?</string>
diff --git a/main/src/main/res/values-et/strings.xml b/main/src/main/res/values-et/strings.xml
index 7e40eb3a..207676e0 100755
--- a/main/src/main/res/values-et/strings.xml
+++ b/main/src/main/res/values-et/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Kasutusel proxy %1$s %2$d</string>
<string name="use_system_proxy">Kasuta süsteemset proxy\'t</string>
<string name="use_system_proxy_summary">Kasuta ühendumisel süsteemse HTTP/HTTPS proxy konfiguratsiooni.</string>
- <string name="donatewithpaypal">Sul on võimalus &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;annetada PayPal vahendusel&lt;/a&gt; </string>
- <string name="onbootrestartsummary">Kui VPN oli süsteemi uuestilaadimisel/sulgemisel aktiivne siis taastatakse seadme käivitamisel OpenVPN ühendus. Palun lugege enne selle valiku kasutamist läbi ühendumise hoiatuse KKK.</string>
- <string name="onbootrestart">Uuestilaadimisel ühendu uuesti</string>
<string name="ignore">Ignoreeri</string>
<string name="restart">Uuestilaadimine</string>
<string name="restart_vpn_after_change">Konfiguratsioonimuudatused rakendatakse peale VPN uuestilaadimist. Kas soovite VPN kohe (uuesti)laadida?</string>
diff --git a/main/src/main/res/values-fr/strings.xml b/main/src/main/res/values-fr/strings.xml
index 5ef282f1..9e7a52a9 100755
--- a/main/src/main/res/values-fr/strings.xml
+++ b/main/src/main/res/values-fr/strings.xml
@@ -204,9 +204,6 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="using_proxy">"Utilisation du proxy %1$s %2$d"</string>
<string name="use_system_proxy">"Utiliser le proxy système"</string>
<string name="use_system_proxy_summary">"Utiliser la configuration générale du système pour que les proxy HTTP / HTTPS se connectent."</string>
- <string name="donatewithpaypal">"Vous pouvez faire un &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;cmd=_s-xclick\"&gt;don avec PayPal&lt;/ a&gt; "</string>
- <string name="onbootrestartsummary">"Reconnecter OpenVPN automatiquement si une connexion était active lors de l\'extinction/redémarrage de l\'appareil. Veuillez lire l\'avertissement de connexion dans la FAQ avant d\'utiliser cette option."</string>
- <string name="onbootrestart">"Connexion automatique au redémarrage"</string>
<string name="ignore">"Ignorer"</string>
<string name="restart">"Redémarrer"</string>
<string name="restart_vpn_after_change">Les changements de configuration sont appliqués après redémarrage du VPN. (Re)démarrer le VPN maintenant ?</string>
diff --git a/main/src/main/res/values-hu/strings.xml b/main/src/main/res/values-hu/strings.xml
index ec81949d..38b7cb66 100755
--- a/main/src/main/res/values-hu/strings.xml
+++ b/main/src/main/res/values-hu/strings.xml
@@ -198,9 +198,6 @@
<string name="using_proxy">Proxy használatban: %1$s %2$d</string>
<string name="use_system_proxy">Rendszerproxy használata</string>
<string name="use_system_proxy_summary">Rendszerszintű konfiguráció használata a HTTP/HTTPS proxy csatlakozáshoz.</string>
- <string name="donatewithpaypal">&lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;Adakozhat PayPal-al&lt;/a&gt; </string>
- <string name="onbootrestartsummary">Az OpenVPN újracsatlakozik a VPN-hez ha az aktív volt az újraindításkoz/leállításkor.</string>
- <string name="onbootrestart">Újracsatlakozás újraindításkor</string>
<string name="ignore">Hagyja figyelmen kívül</string>
<string name="restart">Újraindítás</string>
<string name="restart_vpn_after_change">A konfiguráció változások a VPN újraindítása után lépnek életbe. (Újra)indítja most a VPN-t?</string>
diff --git a/main/src/main/res/values-in/strings.xml b/main/src/main/res/values-in/strings.xml
index 63602200..7111e4a0 100755
--- a/main/src/main/res/values-in/strings.xml
+++ b/main/src/main/res/values-in/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Menggunakan proxy %1$s %2$d</string>
<string name="use_system_proxy">Gunakan sistem proxy</string>
<string name="use_system_proxy_summary">Gunakan konfigurasi lebih luas untuk menyambung system melalui proxy HTTP/HTTPS</string>
- <string name="donatewithpaypal">Anda dapat melakukan donasi &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;dengan PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN akan menyambung kembali VPN jika VPN aktif pada saat sistem reboot/shutdown. Silakan baca FAQ tentang peringatan sambungan sebelum menggunakan pilihan ini.</string>
- <string name="onbootrestart">Koneksi ulang saat perangkat dihidupkan kembali</string>
<string name="ignore">Abaikan</string>
<string name="restart">Restart</string>
<string name="restart_vpn_after_change">Perubahan konfigurasi baru diterapkan setelah restart VPN. Restart VPN sekarang?</string>
diff --git a/main/src/main/res/values-it/strings.xml b/main/src/main/res/values-it/strings.xml
index 42b34c63..d072c142 100755
--- a/main/src/main/res/values-it/strings.xml
+++ b/main/src/main/res/values-it/strings.xml
@@ -204,9 +204,6 @@ Effettuata la lettura del file di configurazione</string>
<string name="using_proxy">Si sta utilizzando il proxy %1$s %2$d</string>
<string name="use_system_proxy">Utilizza il proxy di sistema</string>
<string name="use_system_proxy_summary">Utilizza la configurazione generale del sistema relativa ai proxy HTTP/HTTPS per connettersi.</string>
- <string name="donatewithpaypal">Puoi &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;donare tramite PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN is riconnetterà alla VPN se era in funzione durante un riavvio od un spegnimento dell\'apparecchio. Leggi con attenzione le FAQ con gli avvertimenti sulla connessione prima di scegliere questa opzione.</string>
- <string name="onbootrestart">Riconnetti al riavvio</string>
<string name="ignore">Ignora</string>
<string name="restart">Riavvia</string>
<string name="restart_vpn_after_change">Le modifiche sarannoi applicate dopo aver riavviato la connessione VPN. Riavviare ora la connessione?</string>
diff --git a/main/src/main/res/values-ja/strings.xml b/main/src/main/res/values-ja/strings.xml
index f5444b02..1b3afcde 100755
--- a/main/src/main/res/values-ja/strings.xml
+++ b/main/src/main/res/values-ja/strings.xml
@@ -217,9 +217,6 @@ Androidはあなた自身の安全性のために、これらを迂回できな
<string name="using_proxy">プロキシを使用します %1$s %2$d</string>
<string name="use_system_proxy">システムのプロキシ設定を使用</string>
<string name="use_system_proxy_summary">システム全体の構成の HTTP/HTTPS プロキシ接続を使用します。</string>
- <string name="donatewithpaypal">以下のURLより寄付いただけます。 &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;PayPalで寄付&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPNはシステムの再起動やシャットダウン時に再接続するようになります。このオプションを使用する前にFAQをご一読ください。</string>
- <string name="onbootrestart">システム起動後に再接続</string>
<string name="ignore">無視</string>
<string name="restart">再起動</string>
<string name="restart_vpn_after_change">設定の変更はVPNの再起動後に反映されます。VPNを(再)起動しますか?</string>
diff --git a/main/src/main/res/values-ko/strings.xml b/main/src/main/res/values-ko/strings.xml
index 4e9ca77f..a189c62a 100755
--- a/main/src/main/res/values-ko/strings.xml
+++ b/main/src/main/res/values-ko/strings.xml
@@ -201,9 +201,6 @@
<string name="using_proxy">프록시 %1$s %2$d 을 사용</string>
<string name="use_system_proxy">시스템 프록시를 사용</string>
<string name="use_system_proxy_summary">연결시 전 시스템 설정에 있는 HTTP/HTTPS 프록시를 사용합니다.</string>
- <string name="donatewithpaypal">당신은 &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;PayPal을 통해 기부할 수 있습니다.&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN은 시스템 재부팅/종료에 활성화 되었으면 VPN을 다시 연결합니다. 이 옵션을 사용 하기 전에 연결 경고 FAQ를 읽어 보시기 바랍니다.</string>
- <string name="onbootrestart">재시작 후 다시 연결</string>
<string name="ignore">무시</string>
<string name="restart">다시 시작</string>
<string name="restart_vpn_after_change">VPN을 다시 시작한 후 설정 변경 내용이 적용 됩니다. VPN을 지금 (재)시작?</string>
diff --git a/main/src/main/res/values-no/strings.xml b/main/src/main/res/values-no/strings.xml
index 41e26e3c..85576bb3 100755
--- a/main/src/main/res/values-no/strings.xml
+++ b/main/src/main/res/values-no/strings.xml
@@ -138,8 +138,6 @@
<string name="using_proxy">Bruker proxy %1$s %2$d</string>
<string name="use_system_proxy">Bruk systemet proxy</string>
<string name="use_system_proxy_summary">Bruk global systemkonfigurasjon for HTTP/HTTPS proxy for å koble til.</string>
- <string name="donatewithpaypal">Du kan &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;donere med PayPal&lt;/a&gt; </string>
- <string name="onbootrestart">Koble til på nytt ved restart</string>
<string name="ignore">Ignorer</string>
<string name="restart">Start på nytt</string>
<string name="configuration_changed">Konfigurasjon endret</string>
diff --git a/main/src/main/res/values-pl/strings.xml b/main/src/main/res/values-pl/strings.xml
index d596b19e..5eb45e09 100755
--- a/main/src/main/res/values-pl/strings.xml
+++ b/main/src/main/res/values-pl/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Używam proxy %1$s%2$d</string>
<string name="use_system_proxy">Użyj proxy systemowego</string>
<string name="use_system_proxy_summary">Połącz używając systemowej konfiguracji proxy HTTP/HTTPS.</string>
- <string name="donatewithpaypal">Możesz &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;wspomóc przez PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN połączy ponownie z VPN jeśli połączenie było aktywne przy restarcie/zamknięciu systemu. Przeczytaj proszę FAQ z ostrzeżeniami przed użyciem tej opcji.</string>
- <string name="onbootrestart">Połącz po restarcie</string>
<string name="ignore">Ignoruj</string>
<string name="restart">Uruchom ponownie</string>
<string name="restart_vpn_after_change">Zmiany konfiguracji będą zatwierdzone po restarcie VPN. Uruchomić ponowie teraz?</string>
diff --git a/main/src/main/res/values-pt/strings.xml b/main/src/main/res/values-pt/strings.xml
index 5b9b4db5..48861e7f 100755
--- a/main/src/main/res/values-pt/strings.xml
+++ b/main/src/main/res/values-pt/strings.xml
@@ -173,7 +173,6 @@
<string name="faq_howto_title">Início Rápido</string>
<string name="using_proxy">A utilizar proxy %1$s %2$d</string>
<string name="use_system_proxy">Usar a proxy do sistema</string>
- <string name="onbootrestart">Volte a ligar na reinicialização</string>
<string name="ignore">Ignorar</string>
<string name="restart">Reiniciar</string>
<string name="restart_vpn_after_change">As alterações de configuração são aplicadas depois de reiniciar a VPN. Reiniciar a VPN agora?</string>
diff --git a/main/src/main/res/values-ro/strings.xml b/main/src/main/res/values-ro/strings.xml
index ef70ab27..a7bff8bb 100755
--- a/main/src/main/res/values-ro/strings.xml
+++ b/main/src/main/res/values-ro/strings.xml
@@ -195,9 +195,6 @@
<string name="using_proxy">Folosesc proxy %1$s %2$d</string>
<string name="use_system_proxy">Foloseşte proxy sistem</string>
<string name="use_system_proxy_summary">Foloseşte configurarea sistem pentru proxy HTTP/HTTPS folosit la conectare.</string>
- <string name="donatewithpaypal">Puteţi &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;dona prin PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN va reconecta un VPN dacă a fost activ la reboot/shutdown. Citiţi avertizarea la Conexiune din FAQ înainte de a folosi această funcţie.</string>
- <string name="onbootrestart">Reconectarea la reboot</string>
<string name="ignore">Ignora</string>
<string name="restart">Restart</string>
<string name="restart_vpn_after_change">Schimbările de configurare vor fi aplicate după restartarea VPN-ului. (Re)startaţi VPN-ul acum?</string>
diff --git a/main/src/main/res/values-ru/strings.xml b/main/src/main/res/values-ru/strings.xml
index 3de1d244..7fdabc9d 100755
--- a/main/src/main/res/values-ru/strings.xml
+++ b/main/src/main/res/values-ru/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Используется прокси-сервер %1$s %2$d</string>
<string name="use_system_proxy">Использовать прокси-сервер системы</string>
<string name="use_system_proxy_summary">Использовать системную конфигурацию прокси HTTP/HTTPS для соединения.</string>
- <string name="donatewithpaypal">Вы можете &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;пожертвовать с PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN будет переподключаться, если он был активен в момент выключения/перезагрузки. Пожалуйста, прочтите FAQ перед тем, как использовать эту настройку.</string>
- <string name="onbootrestart">Переподключение после перезагрузки</string>
<string name="ignore">Игнорировать</string>
<string name="restart">Перезапуск</string>
<string name="restart_vpn_after_change">Изменения конфигурации применяются после перезапуска VPN. (Пере)запустить VPN сейчас?</string>
diff --git a/main/src/main/res/values-sl/strings.xml b/main/src/main/res/values-sl/strings.xml
index 8657ebe5..27149362 100755
--- a/main/src/main/res/values-sl/strings.xml
+++ b/main/src/main/res/values-sl/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Uporaba posredniškega strežnika %1$s %2$d</string>
<string name="use_system_proxy">Uporabi sis. pos. str.</string>
<string name="use_system_proxy_summary">Za povezavo uporabi nastavitve celega sistema za posredniške strežnike HTTP/HTTPS.</string>
- <string name="donatewithpaypal">Darujete lahko s &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;PayPalom&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN bo ponovno povezal VPN, če je bil dejaven ob zaustavitvi/ponovnem zagonu sistema. Preberite pogosta vprašanja opozoril o povezavi pred uporabo te možnosti.</string>
- <string name="onbootrestart">Pon. povez. ob pon. zag.</string>
<string name="ignore">Prezri</string>
<string name="restart">Ponovno zaženi</string>
<string name="restart_vpn_after_change">Spremembe nastavitev se bodo uporabile po ponovnem zagonu VPN-a. (Ponovno) zaženi VPN zdaj?</string>
diff --git a/main/src/main/res/values-sv/strings.xml b/main/src/main/res/values-sv/strings.xml
index 8aeec79b..41ecf355 100755
--- a/main/src/main/res/values-sv/strings.xml
+++ b/main/src/main/res/values-sv/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Använder proxy %1$s %2$d</string>
<string name="use_system_proxy">Använd system proxy</string>
<string name="use_system_proxy_summary">Använda systemkonfigurationen för HTTP/HTTPS proxy för att ansluta.</string>
- <string name="donatewithpaypal">Du kan &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;donera via PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN återansluter VPN om den var aktiv vid avstängning/omstart. Läs FAQ om anslutningsvarning innan du använder detta alternativ.</string>
- <string name="onbootrestart">Återanslut vid omstart</string>
<string name="ignore">Ignorera</string>
<string name="restart">Starta om</string>
<string name="restart_vpn_after_change">Konfigurationsändringar tillämpas efter omstart av VPN. Starta(om) VPN nu?</string>
diff --git a/main/src/main/res/values-tr/strings.xml b/main/src/main/res/values-tr/strings.xml
index 54b3c4ac..00f111c4 100755
--- a/main/src/main/res/values-tr/strings.xml
+++ b/main/src/main/res/values-tr/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">%1$s %2$d vekil sunucusu kullanarak</string>
<string name="use_system_proxy">Sistem vekil sunucusunu kullan</string>
<string name="use_system_proxy_summary">Bağlanmak için sistem çapındaki HTTP/HTTPS vekil sunucularını kullan.</string>
- <string name="donatewithpaypal">&lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;PayPal ile bağış&lt;/a&gt; yapabilirsiniz; </string>
- <string name="onbootrestartsummary">OpenVPN, sistem yeniden başlatma/kapatma sırasında etkinse, tekrar bir VPN\'ye bağlanacak. Lütfen bu seçeneği kullanmadan önce Bağlantı uyarı SSS\'sini okuyun.</string>
- <string name="onbootrestart">Yeniden başlatmada tekrar bağlan</string>
<string name="ignore">Yoksay</string>
<string name="restart">Yeniden Başlat</string>
<string name="restart_vpn_after_change">Yapılandırma değişiklikleri, VPN yeniden başlattıktan sonra geçerli olur. VPN (yeniden) başlatılsın mı?</string>
diff --git a/main/src/main/res/values-uk/strings.xml b/main/src/main/res/values-uk/strings.xml
index 43a55bba..7c73b783 100755
--- a/main/src/main/res/values-uk/strings.xml
+++ b/main/src/main/res/values-uk/strings.xml
@@ -202,9 +202,6 @@
<string name="using_proxy">Використовується проксі %1$s %2$d</string>
<string name="use_system_proxy">Використовувати системний проксі</string>
<string name="use_system_proxy_summary">Використовувати системну конфігурацію HTTP/HTTPS проксі для з\'єднання.</string>
- <string name="donatewithpaypal">Ви можете &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;пожертвувати через PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN буде перепідключатися, якщо він був активний в момент вимикання/перезавантаження. Будь ласка, прочитайте ЧаП перед тим, як використовувати цей параметр.</string>
- <string name="onbootrestart">Перепідключати при перезавантаженні</string>
<string name="ignore">Ігнорувати</string>
<string name="restart">Перезапустити</string>
<string name="restart_vpn_after_change">Після перезапуску VPN застосувати зміни конфігурації. (Пере)запустити VPN тепер?</string>
diff --git a/main/src/main/res/values-vi/strings.xml b/main/src/main/res/values-vi/strings.xml
index bedce249..ff673f9d 100755
--- a/main/src/main/res/values-vi/strings.xml
+++ b/main/src/main/res/values-vi/strings.xml
@@ -203,9 +203,6 @@
<string name="using_proxy">Đang sử dụng proxy %1$s %2$d</string>
<string name="use_system_proxy">Sử dụng proxy hệ thống</string>
<string name="use_system_proxy_summary">Sử dụng các cấu hình hệ thống rộng cho HTTP/HTTPS proxy để kết nối.</string>
- <string name="donatewithpaypal">Bạn có thể &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;ủng hộ cho ứng dụng với PayPal&lt;/a&gt; </string>
- <string name="onbootrestartsummary">OpenVPN sẽ kết nối lại VPN nếu nó đã hoạt động khi hệ thống khởi động lại/tắt máy. Xin vui lòng đọc phần cảnh báo kết nối trong các câu hỏi thường gặp trước khi sử dụng tùy chọn này.</string>
- <string name="onbootrestart">Kết nối lại khi khởi động lại máy</string>
<string name="ignore">Bỏ qua</string>
<string name="restart">Khởi động lại</string>
<string name="restart_vpn_after_change">Cấu hình sẽ được áp dụng sau khi khởi động lại VPN. (Khởi động) bắt đầu VPN lại ngay bây giờ?</string>
diff --git a/main/src/main/res/values-zh-rCN/strings.xml b/main/src/main/res/values-zh-rCN/strings.xml
index 7acd3605..648703fe 100755
--- a/main/src/main/res/values-zh-rCN/strings.xml
+++ b/main/src/main/res/values-zh-rCN/strings.xml
@@ -205,9 +205,6 @@
<string name="using_proxy">使用代理 %1$s %2$d</string>
<string name="use_system_proxy">使用系统代理</string>
<string name="use_system_proxy_summary">使用系统设置连接 HTTP/HTTPS 代理服务器。</string>
- <string name="donatewithpaypal">您可以 &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt; 通过 PayPal 捐助&lt;/a&gt;</string>
- <string name="onbootrestartsummary">OpenVPN 将会在重启后自动重新连接 VPN。请在启用该选项前先阅读连接警告的常见问题解答。</string>
- <string name="onbootrestart">重启时重新连接</string>
<string name="ignore">忽略</string>
<string name="restart">重启</string>
<string name="restart_vpn_after_change">配置的变更将在重启 VPN 后生效,是否立即重启?</string>
diff --git a/main/src/main/res/values-zh-rTW/strings.xml b/main/src/main/res/values-zh-rTW/strings.xml
index a8cd5669..926d981e 100755
--- a/main/src/main/res/values-zh-rTW/strings.xml
+++ b/main/src/main/res/values-zh-rTW/strings.xml
@@ -202,9 +202,6 @@
<string name="using_proxy">使用代理伺服器 %1$s %2$d</string>
<string name="use_system_proxy">使用系統代理</string>
<string name="use_system_proxy_summary">使用系統配置的 HTTP/HTTPS 代理伺服器進行連線。</string>
- <string name="donatewithpaypal">你可以透過 &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;PayPal&lt;/a&gt; 提供捐助</string>
- <string name="onbootrestartsummary">如果在重新開機或關機前正連線VPN,開機時自動重新連線。在使用這個選項之前請先閱讀連線警告FAQ。</string>
- <string name="onbootrestart">開機時重新連線</string>
<string name="ignore">忽略</string>
<string name="restart">重置</string>
<string name="restart_vpn_after_change">配置變更只會在重新啟動VPN時才生效,現在要(重新)啟動VPN嗎?</string>
diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml
index ae28cabc..262ecf00 100755
--- a/main/src/main/res/values/strings.xml
+++ b/main/src/main/res/values/strings.xml
@@ -201,7 +201,6 @@
<string name="using_proxy">Using proxy %1$s %2$d</string>
<string name="use_system_proxy">Use system proxy</string>
<string name="use_system_proxy_summary">Use the system wide configuration for HTTP/HTTPS proxies to connect.</string>
- <string name="donatewithpaypal">You can &lt;a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;amp;cmd=_s-xclick\"&gt;donate with PayPal&lt;/a&gt; </string>
<string name="onbootrestartsummary">OpenVPN will connect the specified VPN if it was active on system boot. Please read the connection warning FAQ before using this option on Android &lt; 5.0.</string>
<string name="onbootrestart">Connect on boot</string>
<string name="ignore">Ignore</string>
@@ -409,6 +408,7 @@
<string name="samsung_broken_title">Samsung phones</string>
<string name="novpn_selected">No VPN selected.</string>
<string name="alwaysonvpn">VPN used on boot and for Always-On</string>
+ <string name="reconnect">Reconnect</string>
<string name="qs_title">Toggle VPN</string>
<string name="qs_connect">Connect to %s</string>
<string name="qs_disconnect">Disconnect %s</string>