summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2018-02-06 16:28:34 +0100
committercyBerta <cyberta@riseup.net>2018-02-06 16:28:34 +0100
commit3d827e7295d37ecb25332b39057338496f6f970d (patch)
treef8c5272e125ed9abae72fb3598d25b1c09f06f89 /app
parent646e2ec7b868920f71c29243d2bbeb13deb811e3 (diff)
parentedd34192484f4eb618fdcc2a68b18168c155d63c (diff)
Merge branch 'origin_0.9.8' into 8823_cw_tablet_layout
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle128
l---------app/jni1
l---------app/lzo1
l---------app/misc1
l---------app/openssl1
l---------app/openvpn1
l---------app/ovpn31
-rw-r--r--app/src/androidTest/assets/riseup.net.json37
-rw-r--r--app/src/androidTest/assets/riseup.net.pem32
-rw-r--r--app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java127
-rw-r--r--app/src/androidTest/java/se/leap/bitmaskclient/test/TestEIP.java81
-rw-r--r--app/src/androidTest/legacy/BaseTestDashboardFragment.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/BaseTestDashboardFragment.java)4
-rw-r--r--app/src/androidTest/legacy/ConnectionManager.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/ConnectionManager.java)0
-rw-r--r--app/src/androidTest/legacy/FromAssets.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/FromAssets.java)0
-rw-r--r--app/src/androidTest/legacy/Screenshot.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/Screenshot.java)0
-rw-r--r--app/src/androidTest/legacy/TestCalendarProvider.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestCalendarProvider.java)0
-rw-r--r--app/src/androidTest/legacy/TestConstants.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestConstants.java)0
-rw-r--r--app/src/androidTest/legacy/TestDashboardIntegration.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestDashboardIntegration.java)0
-rw-r--r--app/src/androidTest/legacy/TestEipFragment.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestVpnFragment.java)2
-rw-r--r--app/src/androidTest/legacy/TestGatewaysManager.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestGatewaysManager.java)0
-rw-r--r--app/src/androidTest/legacy/TestLeapSRPSession.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestLeapSRPSession.java)0
-rw-r--r--app/src/androidTest/legacy/TestProviderListActivity.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestConfigurationWizard.java)8
-rw-r--r--app/src/androidTest/legacy/TestUserStatusFragment.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestUserStatusFragment.java)0
-rw-r--r--app/src/androidTest/legacy/TestVpnCertificateValidator.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/TestVpnCertificateValidator.java)0
-rw-r--r--app/src/androidTest/legacy/UserStatusTestController.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/UserStatusTestController.java)0
-rw-r--r--app/src/androidTest/legacy/VpnTestController.java (renamed from app/src/androidTest/java/se/leap/bitmaskclient/test/VpnTestController.java)1
-rw-r--r--app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java (renamed from app/src/insecure/java/se/leap/bitmaskclient/ConfigurationWizard.java)4
-rw-r--r--app/src/insecure/java/se/leap/bitmaskclient/ProviderListContent.java2
-rw-r--r--app/src/main/AndroidManifest.xml2
l---------app/src/main/cpp1
-rw-r--r--app/src/main/java/de/blinkt/openvpn/LaunchVPN.java22
-rw-r--r--app/src/main/java/de/blinkt/openvpn/VpnProfile.java126
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java5
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java2
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/NativeUtils.java7
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java49
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java5
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java10
-rw-r--r--app/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java1
-rw-r--r--app/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java1
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java83
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java36
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/Dashboard.java26
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipFragment.java (renamed from app/src/main/java/se/leap/bitmaskclient/VpnFragment.java)107
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/LoginActivity.java5
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/MainActivity.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/Provider.java13
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java (renamed from app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java)29
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/StartActivity.java11
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EIP.java48
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java127
-rw-r--r--app/src/main/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.pngbin0 -> 624 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_add_circle_outline_white_24dp.pngbin0 -> 606 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_archive_grey600_24dp.pngbin0 -> 353 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_archive_white_24dp.pngbin0 -> 347 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.pngbin0 -> 287 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_menu_archive.pngbin0 -> 1094 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.pngbin0 -> 199 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_menu_log.pngbin0 -> 2891 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_receipt_white_24dp.pngbin0 -> 261 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_sort_white_24dp.pngbin0 -> 115 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_warning_black_36dp.pngbin0 -> 549 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/vpn_item_settings.pngbin0 -> 773 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.pngbin0 -> 427 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_add_circle_outline_white_24dp.pngbin0 -> 409 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_archive_grey600_24dp.pngbin0 -> 266 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_archive_white_24dp.pngbin0 -> 264 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_content_copy_white_24dp.pngbin0 -> 216 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_menu_archive.pngbin0 -> 831 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.pngbin0 -> 161 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_menu_log.pngbin0 -> 2860 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_receipt_white_24dp.pngbin0 -> 194 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_sort_white_24dp.pngbin0 -> 90 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/ic_warning_black_36dp.pngbin0 -> 432 bytes
-rw-r--r--app/src/main/res/drawable-mdpi/vpn_item_settings.pngbin0 -> 653 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.pngbin0 -> 781 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.pngbin0 -> 775 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_archive_grey600_24dp.pngbin0 -> 372 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_archive_white_24dp.pngbin0 -> 362 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.pngbin0 -> 330 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_menu_archive.pngbin0 -> 1398 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.pngbin0 -> 252 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_menu_log.pngbin0 -> 2927 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_receipt_white_24dp.pngbin0 -> 240 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.pngbin0 -> 101 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_warning_black_36dp.pngbin0 -> 655 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/vpn_item_settings.pngbin0 -> 956 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.pngbin0 -> 1106 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.pngbin0 -> 1097 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_archive_grey600_24dp.pngbin0 -> 529 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_archive_white_24dp.pngbin0 -> 520 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.pngbin0 -> 436 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.pngbin0 -> 1279 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_menu_log.pngbin0 -> 3069 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_receipt_white_24dp.pngbin0 -> 292 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.pngbin0 -> 103 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_warning_black_36dp.pngbin0 -> 873 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.pngbin0 -> 1508 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.pngbin0 -> 1634 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_archive_grey600_24dp.pngbin0 -> 773 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.pngbin0 -> 763 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.pngbin0 -> 522 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_receipt_white_24dp.pngbin0 -> 334 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_sort_white_24dp.pngbin0 -> 107 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_warning_black_36dp.pngbin0 -> 1033 bytes
-rw-r--r--app/src/main/res/drawable/black_circle.xml9
-rw-r--r--app/src/main/res/drawable/vpn_connected.xml20
-rw-r--r--app/src/main/res/drawable/vpn_connecting.xml25
-rw-r--r--app/src/main/res/drawable/vpn_disconnected.xml28
-rw-r--r--app/src/main/res/layout-sw600dp-port/f_log.xml29
-rw-r--r--app/src/main/res/layout-sw600dp/f_log.xml6
-rw-r--r--app/src/main/res/layout-sw600dp/log_fragment.xml5
-rw-r--r--app/src/main/res/layout-xlarge/about.xml2
-rw-r--r--app/src/main/res/layout-xlarge/configuration_wizard_activity.xml4
-rw-r--r--app/src/main/res/layout-xlarge/eip_service_fragment.xml4
-rw-r--r--app/src/main/res/layout/about.xml2
-rw-r--r--app/src/main/res/layout/configuration_wizard_activity.xml2
-rw-r--r--app/src/main/res/layout/drawer_main.xml5
-rw-r--r--app/src/main/res/layout/eip_service_fragment.xml179
-rw-r--r--app/src/main/res/layout/f_log.xml4
-rw-r--r--app/src/main/res/values-ca/strings.xml2
-rwxr-xr-xapp/src/main/res/values-cs/plurals-icsopenvpn.xml23
-rwxr-xr-xapp/src/main/res/values-cs/strings-icsopenvpn.xml69
-rwxr-xr-xapp/src/main/res/values-da/plurals-icsopenvpn.xml20
-rwxr-xr-xapp/src/main/res/values-da/strings-icsopenvpn.xml399
-rwxr-xr-xapp/src/main/res/values-de/plurals-icsopenvpn.xml2
-rwxr-xr-xapp/src/main/res/values-de/strings-icsopenvpn.xml34
-rwxr-xr-xapp/src/main/res/values-es/plurals-icsopenvpn.xml10
-rwxr-xr-xapp/src/main/res/values-es/strings-icsopenvpn.xml48
-rw-r--r--app/src/main/res/values-es/strings.xml2
-rwxr-xr-xapp/src/main/res/values-fr/strings-icsopenvpn.xml44
-rwxr-xr-xapp/src/main/res/values-hu/strings-icsopenvpn.xml58
-rwxr-xr-xapp/src/main/res/values-in/strings-icsopenvpn.xml89
-rwxr-xr-xapp/src/main/res/values-it/plurals-icsopenvpn.xml19
-rwxr-xr-xapp/src/main/res/values-it/strings-icsopenvpn.xml107
-rwxr-xr-xapp/src/main/res/values-ja/strings-icsopenvpn.xml4
-rwxr-xr-xapp/src/main/res/values-ko/plurals-icsopenvpn.xml15
-rwxr-xr-xapp/src/main/res/values-ko/strings-icsopenvpn.xml459
-rwxr-xr-xapp/src/main/res/values-nl/strings-icsopenvpn.xml350
-rwxr-xr-xapp/src/main/res/values-no/strings-icsopenvpn.xml40
-rwxr-xr-xapp/src/main/res/values-pl/plurals-icsopenvpn.xml8
-rwxr-xr-xapp/src/main/res/values-pl/strings-icsopenvpn.xml25
-rwxr-xr-xapp/src/main/res/values-pt/plurals-icsopenvpn.xml19
-rwxr-xr-xapp/src/main/res/values-pt/strings-icsopenvpn.xml16
-rwxr-xr-xapp/src/main/res/values-ro/strings-icsopenvpn.xml2
-rw-r--r--app/src/main/res/values-ro/strings.xml1
-rwxr-xr-xapp/src/main/res/values-ru/plurals-icsopenvpn.xml8
-rwxr-xr-xapp/src/main/res/values-ru/strings-icsopenvpn.xml31
-rwxr-xr-xapp/src/main/res/values-sv/strings-icsopenvpn.xml11
-rwxr-xr-xapp/src/main/res/values-tr/strings-icsopenvpn.xml22
-rwxr-xr-xapp/src/main/res/values-uk/plurals-icsopenvpn.xml23
-rwxr-xr-xapp/src/main/res/values-uk/strings-icsopenvpn.xml51
-rw-r--r--app/src/main/res/values-v21/refs.xml10
-rw-r--r--app/src/main/res/values-v21/styles.xml6
-rwxr-xr-xapp/src/main/res/values-vi/strings-icsopenvpn.xml23
-rwxr-xr-xapp/src/main/res/values-zh-rCN/plurals-icsopenvpn.xml15
-rwxr-xr-xapp/src/main/res/values-zh-rCN/strings-icsopenvpn.xml206
-rwxr-xr-xapp/src/main/res/values-zh-rTW/strings-icsopenvpn.xml11
-rw-r--r--app/src/main/res/values-zh-rTW/strings.xml1
-rw-r--r--app/src/main/res/values/colors.xml4
-rw-r--r--app/src/main/res/values/refs.xml10
-rwxr-xr-xapp/src/main/res/values/strings-icsopenvpn.xml26
-rw-r--r--app/src/main/res/values/strings.xml1
-rw-r--r--app/src/main/res/values/styles.xml7
-rw-r--r--app/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java31
-rw-r--r--app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java (renamed from app/src/production/java/se/leap/bitmaskclient/ConfigurationWizard.java)3
-rw-r--r--app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java2
-rw-r--r--app/src/sharedTest/java/se.leap.bitmaskclient/testutils/TestSetupHelper.java43
-rw-r--r--app/src/test/java/se/leap/bitmaskclient/ConfigHelperTest.java4
-rw-r--r--app/src/test/java/se/leap/bitmaskclient/eip/ProviderApiManagerTest.java16
-rw-r--r--app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java (renamed from app/src/test/java/se/leap/bitmaskclient/testutils/TestSetupHelper.java)42
174 files changed, 3053 insertions, 921 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 4a99ad98..c909b70f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,13 +4,19 @@ import java.util.regex.Pattern
apply plugin: 'com.android.application'
android {
- compileSdkVersion 26
- buildToolsVersion '26.0.0'
+ compileSdkVersion 27
+ buildToolsVersion '27.0.3'
defaultConfig {
applicationId "se.leap.bitmaskclient"
resValue "string", "app_name", "Bitmask"
vectorDrawables.useSupportLibrary = true
+ buildConfigField 'boolean', 'openvpn3', 'false'
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ dexOptions {
+ jumboMode true
+ multiDexEnabled true
+ }
}
signingConfigs {
@@ -22,12 +28,13 @@ android {
}
}
+ flavorDimensions "implementation"
productFlavors {
production {
-
+ dimension "implementation"
}
insecure {
-
+ dimension "implementation"
}
}
@@ -42,6 +49,9 @@ android {
applicationIdSuffix ".beta"
resValue "string", "app_name", "Bitmask Beta"
}
+ debug {
+ testCoverageEnabled = true
+ }
}
lintOptions {
@@ -50,50 +60,64 @@ android {
sourceSets {
main {
- assets.srcDirs = ['assets', 'ovpnlibs/assets']
- jniLibs.srcDirs = ['ovpnlibs/jniLibs']
+ assets.srcDirs = ['assets', 'ovpnlibs/assets', '../ics-openvpn/main/build/ovpnassets']
+ jniLibs.srcDirs = ['../ics-openvpn/main/build/intermediates/cmake/noovpn3/release/obj']
jni.srcDirs = [] //disable automatic ndk-build
}
debug {
assets.srcDirs = ['src/debug/assets']
}
+
test {
resources.srcDirs += ['src/test/resources']
+ java.srcDirs += ['src/sharedTest/java']
+ }
+
+ androidTest {
+ java.srcDirs += ['src/sharedTest/java']
}
}
}
dependencies {
- testCompile 'junit:junit:4.12'
- testCompile 'org.mockito:mockito-core:2.8.0'
- testCompile 'org.powermock:powermock-api-mockito2:1.7.3'
- testCompile 'org.powermock:powermock-module-junit4:1.7.3'
- testCompile 'org.powermock:powermock-core:1.7.3'
- testCompile 'org.powermock:powermock-module-junit4-rule:1.7.3'
- //testCompile 'com.madgag.spongycastle:bctls-jdk15on:1.58.0.0'
- //testCompile 'com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0'
- //testCompile 'com.madgag.spongycastle:bcpg-jdk15on:1.58.0.0'
-
- androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.3'
- testCompile 'junit:junit:4.12'
- testCompile 'org.json:json:20170516'
- debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4'
- releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
- betaCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
- compile 'com.jakewharton:butterknife:6.1.0'
- provided 'com.squareup.dagger:dagger-compiler:1.2.2'
- compile 'com.github.pedrovgs:renderers:1.5'
- compile 'com.intellij:annotations:12.0'
- compile 'com.google.code.gson:gson:2.8.2'
- compile 'com.squareup.okhttp3:okhttp:3.9.0'
- compile 'mbanje.kurt:fabbutton:1.1.4'
- compile "com.android.support:support-core-utils:26.1.0"
- compile 'com.android.support:support-annotations:27.0.2'
- compile 'com.android.support:support-v4:26.1.0'
- compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.android.support:design:26.1.0'
- compile 'com.android.support:support-fragment:26.1.0'
- compile 'com.android.support.constraint:constraint-layout:1.0.2'
+ testImplementation 'junit:junit:4.12'
+ testImplementation 'org.mockito:mockito-core:2.8.9'
+ testImplementation('org.powermock:powermock-api-mockito2:1.7.3')
+ { exclude group: 'junit' exclude group: 'org.mockito' }
+ testImplementation 'org.powermock:powermock-module-junit4:1.7.3'
+ testImplementation 'org.powermock:powermock-core:1.7.3'
+ testImplementation 'org.powermock:powermock-module-junit4-rule:1.7.3'
+
+ androidTestImplementation 'org.mockito:mockito-core:2.8.9'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-intents:3.0.1'
+ //TODO: remove that library
+ androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3'
+ testImplementation 'junit:junit:4.12'
+ testImplementation 'org.json:json:20170516'
+ debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.4'
+ releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
+ betaImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4'
+ annotationProcessor 'com.jakewharton:butterknife:6.1.0'
+ annotationProcessor 'com.squareup.dagger:dagger-compiler:1.2.2'
+ implementation 'com.jakewharton:butterknife:6.1.0'
+ //TODO: replace that library
+ compileOnly 'com.squareup.dagger:dagger-compiler:1.2.2'
+ //TODO: remove that library?
+ implementation 'com.github.pedrovgs:renderers:1.5'
+ implementation 'com.intellij:annotations:12.0'
+ implementation 'com.google.code.gson:gson:2.8.2'
+ implementation 'com.squareup.okhttp3:okhttp:3.9.0'
+ //TODO: remove that library
+ implementation 'mbanje.kurt:fabbutton:1.1.4'
+ implementation "com.android.support:support-core-utils:27.0.2"
+ implementation 'com.android.support:support-annotations:27.0.2'
+ implementation 'com.android.support:support-v4:27.0.2'
+ implementation 'com.android.support:appcompat-v7:27.0.2'
+ implementation 'com.android.support:design:27.0.2'
+ implementation 'com.android.support:support-fragment:27.0.2'
+ implementation 'com.android.support.constraint:constraint-layout:1.0.2'
}
// Ensure the no-op dependency is always used in JVM tests.
@@ -105,6 +129,12 @@ configurations.all { config ->
}
}
}
+ resolutionStrategy.force "com.android.support:support-annotations:27.0.2"
+ resolutionStrategy.force "com.android.support:support-v4:27.0.2"
+ resolutionStrategy.force "com.android.support:support-core-utils:27.0.2"
+ resolutionStrategy.force "com.android.support:appcompat-v7:27.0.2"
+ resolutionStrategy.force "com.android.support:design:27.0.2"
+ resolutionStrategy.force "com.android.support:support-fragment:27.0.2"
}
def processFileInplace(file, Closure processText) {
@@ -179,6 +209,20 @@ task copyIcsOpenVPNImages( type: Copy ) {
include '**/ic_check*.png'
include '**/ic_pause*.png'
include '**/ic_play*.png'
+ include '**/ic_content_copy_white_*.png'
+ include '**/ic_add_circle_outline_white_*.png'
+ include '**/ic_warning_black_*.png'
+ include '**/ic_add_circle_outline_grey600_*.png'
+ include '**/ic_archive_grey600_*.png'
+ include '**/ic_receipt_white_*.png'
+ include '**/ic_sort_white_*.png'
+ include '**/ic_content_copy_white_*.png'
+ include '**/ic_archive_white_*.png'
+ include '**/ic_menu_archive*.png'
+ include '**/vpn_item_settings*.png'
+ include '**/ic_menu_log*.png'
+ include '**/ic_menu_copy_holo_light*.png'
+
includeEmptyDirs = false
} into '.'
}
@@ -250,14 +294,11 @@ task copyIcsOpenVPNFiles( type: Copy ) {
}
task updateIcsOpenVpn( type: Exec ) {
+ commandLine 'git', 'submodule', 'sync'
commandLine 'git', 'submodule', 'update', '--init', '--recursive'
copyIcsOpenVPNFiles.execute()
}
-task buildNative ( type: Exec ) {
- println "buildNative"
- commandLine 'sh', 'misc/build-native.sh', 'USE_BREAKPAD=0', '-j 8'
-}
task cleanNative( type: Delete ) {
def shouldClean = getCurrentFlavorForBetaOrRelease() == "production"
@@ -271,6 +312,11 @@ task cleanNative( type: Delete ) {
}
}
+task updateSdkLicences ( type: Exec ) {
+ println "say yes to licenses"
+ commandLine 'sh', 'yes', '|', 'sdkmanager', '--licenses'
+}
+
def getCurrentFlavorForBetaOrRelease() {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
@@ -291,5 +337,3 @@ def getCurrentFlavorForBetaOrRelease() {
return "";
}
}
-
-preBuild.dependsOn buildNative
diff --git a/app/jni b/app/jni
deleted file mode 120000
index e3180412..00000000
--- a/app/jni
+++ /dev/null
@@ -1 +0,0 @@
-../ics-openvpn/main/jni \ No newline at end of file
diff --git a/app/lzo b/app/lzo
deleted file mode 120000
index dde6d66c..00000000
--- a/app/lzo
+++ /dev/null
@@ -1 +0,0 @@
-../ics-openvpn/main/lzo \ No newline at end of file
diff --git a/app/misc b/app/misc
deleted file mode 120000
index 1b116211..00000000
--- a/app/misc
+++ /dev/null
@@ -1 +0,0 @@
-../ics-openvpn/main/misc \ No newline at end of file
diff --git a/app/openssl b/app/openssl
deleted file mode 120000
index dcfefddf..00000000
--- a/app/openssl
+++ /dev/null
@@ -1 +0,0 @@
-../ics-openvpn/main/openssl \ No newline at end of file
diff --git a/app/openvpn b/app/openvpn
deleted file mode 120000
index c1af1203..00000000
--- a/app/openvpn
+++ /dev/null
@@ -1 +0,0 @@
-../ics-openvpn/main/openvpn \ No newline at end of file
diff --git a/app/ovpn3 b/app/ovpn3
deleted file mode 120000
index 444d4f8b..00000000
--- a/app/ovpn3
+++ /dev/null
@@ -1 +0,0 @@
-../ics-openvpn/main/ovpn3 \ No newline at end of file
diff --git a/app/src/androidTest/assets/riseup.net.json b/app/src/androidTest/assets/riseup.net.json
new file mode 100644
index 00000000..9a5ec79e
--- /dev/null
+++ b/app/src/androidTest/assets/riseup.net.json
@@ -0,0 +1,37 @@
+{
+ "api_uri": "https://api.black.riseup.net:443",
+ "api_version": "1",
+ "ca_cert_fingerprint": "SHA256: a5244308a1374709a9afce95e3ae47c1b44bc2398c0a70ccbf8b3a8a97f29494",
+ "ca_cert_uri": "https://black.riseup.net/ca.crt",
+ "default_language": "en",
+ "description": {
+ "en": "Riseup is a non-profit collective in Seattle that provides online communication tools for people and groups working toward liberatory social change."
+ },
+ "domain": "riseup.net",
+ "enrollment_policy": "open",
+ "languages": [
+ "en"
+ ],
+ "name": {
+ "en": "Riseup Networks"
+ },
+ "service": {
+ "allow_anonymous": false,
+ "allow_free": true,
+ "allow_limited_bandwidth": false,
+ "allow_paid": false,
+ "allow_registration": true,
+ "allow_unlimited_bandwidth": true,
+ "bandwidth_limit": 102400,
+ "default_service_level": 1,
+ "levels": {
+ "1": {
+ "description": "Please donate.",
+ "name": "free"
+ }
+ }
+ },
+ "services": [
+ "openvpn"
+ ]
+} \ No newline at end of file
diff --git a/app/src/androidTest/assets/riseup.net.pem b/app/src/androidTest/assets/riseup.net.pem
new file mode 100644
index 00000000..c890aff4
--- /dev/null
+++ b/app/src/androidTest/assets/riseup.net.pem
@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBZMRgwFgYDVQQKDA9SaXNl
+dXAgTmV0d29ya3MxGzAZBgNVBAsMEmh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UE
+AwwXUmlzZXVwIE5ldHdvcmtzIFJvb3QgQ0EwHhcNMTQwNDI4MDAwMDAwWhcNMjQw
+NDI4MDAwMDAwWjBZMRgwFgYDVQQKDA9SaXNldXAgTmV0d29ya3MxGzAZBgNVBAsM
+Emh0dHBzOi8vcmlzZXVwLm5ldDEgMB4GA1UEAwwXUmlzZXVwIE5ldHdvcmtzIFJv
+b3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC76J4ciMJ8Sg0m
+TP7DF2DT9zNe0Csk4myoMFC57rfJeqsAlJCv1XMzBmXrw8wq/9z7XHv6n/0sWU7a
+7cF2hLR33ktjwODlx7vorU39/lXLndo492ZBhXQtG1INMShyv+nlmzO6GT7ESfNE
+LliFitEzwIegpMqxCIHXFuobGSCWF4N0qLHkq/SYUMoOJ96O3hmPSl1kFDRMtWXY
+iw1SEKjUvpyDJpVs3NGxeLCaA7bAWhDY5s5Yb2fA1o8ICAqhowurowJpW7n5ZuLK
+5VNTlNy6nZpkjt1QycYvNycffyPOFm/Q/RKDlvnorJIrihPkyniV3YY5cGgP+Qkx
+HUOT0uLA6LHtzfiyaOqkXwc4b0ZcQD5Vbf6Prd20Ppt6ei0zazkUPwxld3hgyw58
+m/4UIjG3PInWTNf293GngK2Bnz8Qx9e/6TueMSAn/3JBLem56E0WtmbLVjvko+LF
+PM5xA+m0BmuSJtrD1MUCXMhqYTtiOvgLBlUm5zkNxALzG+cXB28k6XikXt6MRG7q
+hzIPG38zwkooM55yy5i1YfcIi5NjMH6A+t4IJxxwb67MSb6UFOwg5kFokdONZcwj
+shczHdG9gLKSBIvrKa03Nd3W2dF9hMbRu//STcQxOailDBQCnXXfAATj9pYzdY4k
+ha8VCAREGAKTDAex9oXf1yRuktES4QIDAQABo2AwXjAdBgNVHQ4EFgQUC4tdmLVu
+f9hwfK4AGliaet5KkcgwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMBAf8wHwYD
+VR0jBBgwFoAUC4tdmLVuf9hwfK4AGliaet5KkcgwDQYJKoZIhvcNAQENBQADggIB
+AGzL+GRnYu99zFoy0bXJKOGCF5XUXP/3gIXPRDqQf5g7Cu/jYMID9dB3No4Zmf7v
+qHjiSXiS8jx1j/6/Luk6PpFbT7QYm4QLs1f4BlfZOti2KE8r7KRDPIecUsUXW6P/
+3GJAVYH/+7OjA39za9AieM7+H5BELGccGrM5wfl7JeEz8in+V2ZWDzHQO4hMkiTQ
+4ZckuaL201F68YpiItBNnJ9N5nHr1MRiGyApHmLXY/wvlrOpclh95qn+lG6/2jk7
+3AmihLOKYMlPwPakJg4PYczm3icFLgTpjV5sq2md9bRyAg3oPGfAuWHmKj2Ikqch
+Td5CHKGxEEWbGUWEMP0s1A/JHWiCbDigc4Cfxhy56CWG4q0tYtnc2GMw8OAUO6Wf
+Xu5pYKNkzKSEtT/MrNJt44tTZWbKV/Pi/N2Fx36my7TgTUj7g3xcE9eF4JV2H/sg
+tsK3pwE0FEqGnT4qMFbixQmc8bGyuakr23wjMvfO7eZUxBuWYR2SkcP26sozF9PF
+tGhbZHQVGZUTVPyvwahMUEhbPGVerOW0IYpxkm0x/eaWdTc4vPpf/rIlgbAjarnJ
+UN9SaWRlWKSdP4haujnzCoJbM7dU9bjvlGZNyXEekgeT0W2qFeGGp+yyUWw8tNsp
+0BuC1b7uW/bBn/xKm319wXVDvBgZgcktMolak39V7DVO
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java b/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java
new file mode 100644
index 00000000..c7c6a86f
--- /dev/null
+++ b/app/src/androidTest/java/se/leap/bitmaskclient/test/StartActivityDrawerTest.java
@@ -0,0 +1,127 @@
+package se.leap.bitmaskclient.test;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.espresso.contrib.DrawerActions;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+
+import se.leap.bitmaskclient.MainActivity;
+import se.leap.bitmaskclient.Provider;
+import se.leap.bitmaskclient.testutils.TestSetupHelper;
+
+import static android.support.test.InstrumentationRegistry.getInstrumentation;
+import static android.support.test.espresso.Espresso.onData;
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.contrib.DrawerMatchers.isClosed;
+import static android.support.test.espresso.contrib.DrawerMatchers.isOpen;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static org.hamcrest.Matchers.anything;
+import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
+import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
+import static se.leap.bitmaskclient.R.id.aboutLayout;
+import static se.leap.bitmaskclient.R.id.accountList;
+import static se.leap.bitmaskclient.R.id.configuration_wizard_layout;
+import static se.leap.bitmaskclient.R.id.drawer_layout;
+import static se.leap.bitmaskclient.R.id.eipServiceFragment;
+import static se.leap.bitmaskclient.R.id.log_layout;
+import static se.leap.bitmaskclient.R.id.settingsList;
+
+/**
+ * Created by cyberta on 19.01.18.
+ */
+
+@RunWith(AndroidJUnit4.class)
+public class StartActivityDrawerTest {
+
+ Intent intent;
+ SharedPreferences preferences;
+ SharedPreferences.Editor preferencesEditor;
+
+ @Rule
+ public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
+ MainActivity.class,
+ true,
+ false); // Activity is not launched immediately
+
+ @Before
+ public void setUp() throws IOException {
+ intent = new Intent(ACTION_SHOW_VPN_FRAGMENT);
+ Context context = getInstrumentation().getTargetContext();
+
+ preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
+ preferencesEditor = preferences.edit();
+ preferencesEditor.putString(Provider.KEY, TestSetupHelper.getInputAsString(InstrumentationRegistry.getContext().getAssets().open("riseup.net.json")))
+ .putString(Provider.CA_CERT, TestSetupHelper.getInputAsString(InstrumentationRegistry.getContext().getAssets().open("riseup.net.pem")))
+ .commit();
+
+ }
+
+
+ @Test
+ public void testDisplayDrawer_isOpenUntilUserManuallyOpendDrawerOnce() {
+ preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
+ mActivityRule.launchActivity(intent);
+ onView(withId(drawer_layout)).check(matches(isOpen()));
+ onView(withId(drawer_layout)).perform(DrawerActions.close());
+ mActivityRule.finishActivity();
+
+ mActivityRule.launchActivity(intent);
+ onView(withId(drawer_layout)).check(matches(isOpen()));
+ onView(withId(drawer_layout)).perform(DrawerActions.close());
+ onView(withId(drawer_layout)).perform(DrawerActions.open());
+ mActivityRule.finishActivity();
+
+ mActivityRule.launchActivity(intent);
+ onView(withId(drawer_layout)).check(matches(isClosed()));
+ }
+
+ @Test
+ public void testClickProviderName_closeDrawerAndShowEipFragment() {
+ preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
+ mActivityRule.launchActivity(intent);
+
+ onData(anything()).inAdapterView(withId(accountList)).atPosition(0).perform(click());
+ onView(withId(drawer_layout)).check(matches(isClosed()));
+ onView(withId(eipServiceFragment)).check(matches(isDisplayed()));
+ }
+
+ @Test
+ public void testClickSwitchProvider_closeDrawerAndShowProviderListView() {
+ preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
+ mActivityRule.launchActivity(intent);
+
+ onData(anything()).inAdapterView(withId(settingsList)).atPosition(0).perform(click());
+ onView(withId(configuration_wizard_layout)).check(matches(isDisplayed()));
+ }
+
+ @Test
+ public void testClickLog_closeDrawerAndShowLogFragment() {
+ preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
+ mActivityRule.launchActivity(intent);
+
+ onData(anything()).inAdapterView(withId(settingsList)).atPosition(1).perform(click());
+ onView(withId(log_layout)).check(matches(isDisplayed()));
+ }
+
+ @Test
+ public void testClickAbout_closeDrawerAndShowAboutFragment() {
+ preferencesEditor.putBoolean("navigation_drawer_learned", false).commit();
+ mActivityRule.launchActivity(intent);
+
+ onData(anything()).inAdapterView(withId(settingsList)).atPosition(2).perform(click());
+ onView(withId(aboutLayout)).check(matches(isDisplayed()));
+ }
+}
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestEIP.java b/app/src/androidTest/java/se/leap/bitmaskclient/test/TestEIP.java
deleted file mode 100644
index 4c215360..00000000
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestEIP.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (c) 2013, 2014, 2015 LEAP Encryption Access Project and contributers
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package se.leap.bitmaskclient.test;
-
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.test.ServiceTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import se.leap.bitmaskclient.eip.EIP;
-
-import static se.leap.bitmaskclient.Constants.EIP_ACTION_CHECK_CERT_VALIDITY;
-import static se.leap.bitmaskclient.Constants.PROVIDER_VPN_CERTIFICATE;
-import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
-
-/**
- * @author parmegv
- */
-public class TestEIP extends ServiceTestCase<EIP> {
-
- private Context context;
- private Intent intent;
- private SharedPreferences preferences;
-
- public TestEIP(Class<EIP> activityClass) {
- super(activityClass);
- context = getSystemContext();
- intent = new Intent(context, EIP.class);
- preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- @MediumTest
- private void testCheckCertValidity() {
- testEmptyCertificate();
- testExpiredCertificate();
- // Wait for the service to start
- // Check result is OK.
- }
-
- private void testEmptyCertificate() {
- preferences.edit().putString(PROVIDER_VPN_CERTIFICATE, "").apply();
- startService(EIP_ACTION_CHECK_CERT_VALIDITY);
- }
-
- private void testExpiredCertificate() {
- String expired_certificate = "expired certificate";
- preferences.edit().putString(PROVIDER_VPN_CERTIFICATE, expired_certificate).apply();
- startService(EIP_ACTION_CHECK_CERT_VALIDITY);
- }
-
- private void startService(String action) {
- intent.setAction(action);
- startService(intent);
- }
-}
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/BaseTestDashboardFragment.java b/app/src/androidTest/legacy/BaseTestDashboardFragment.java
index 956049dc..e187d424 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/BaseTestDashboardFragment.java
+++ b/app/src/androidTest/legacy/BaseTestDashboardFragment.java
@@ -7,7 +7,7 @@ import android.view.View;
import com.robotium.solo.Solo;
-import se.leap.bitmaskclient.ConfigurationWizard;
+import se.leap.bitmaskclient.ProviderListActivity;
import se.leap.bitmaskclient.Dashboard;
import se.leap.bitmaskclient.R;
@@ -43,7 +43,7 @@ public abstract class BaseTestDashboardFragment extends ActivityInstrumentationT
void tapSwitchProvider() {
solo.clickOnMenuItem(solo.getString(R.string.switch_provider_menu_option));
- solo.waitForActivity(ConfigurationWizard.class);
+ solo.waitForActivity(ProviderListActivity.class);
}
private void useRegistered() {
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/ConnectionManager.java b/app/src/androidTest/legacy/ConnectionManager.java
index 6fb7d8a9..6fb7d8a9 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/ConnectionManager.java
+++ b/app/src/androidTest/legacy/ConnectionManager.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/FromAssets.java b/app/src/androidTest/legacy/FromAssets.java
index 6a4c1ee2..6a4c1ee2 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/FromAssets.java
+++ b/app/src/androidTest/legacy/FromAssets.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/Screenshot.java b/app/src/androidTest/legacy/Screenshot.java
index ade28b73..ade28b73 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/Screenshot.java
+++ b/app/src/androidTest/legacy/Screenshot.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestCalendarProvider.java b/app/src/androidTest/legacy/TestCalendarProvider.java
index 82ea8b59..82ea8b59 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestCalendarProvider.java
+++ b/app/src/androidTest/legacy/TestCalendarProvider.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestConstants.java b/app/src/androidTest/legacy/TestConstants.java
index 6b4cdfb1..6b4cdfb1 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestConstants.java
+++ b/app/src/androidTest/legacy/TestConstants.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestDashboardIntegration.java b/app/src/androidTest/legacy/TestDashboardIntegration.java
index ad2b4a00..ad2b4a00 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestDashboardIntegration.java
+++ b/app/src/androidTest/legacy/TestDashboardIntegration.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestVpnFragment.java b/app/src/androidTest/legacy/TestEipFragment.java
index 564e251c..4227f19a 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestVpnFragment.java
+++ b/app/src/androidTest/legacy/TestEipFragment.java
@@ -1,6 +1,6 @@
package se.leap.bitmaskclient.test;
-public class TestVpnFragment extends BaseTestDashboardFragment {
+public class TestEipFragment extends BaseTestDashboardFragment {
/**
* This test will fail if Android does not trust VPN connection.
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestGatewaysManager.java b/app/src/androidTest/legacy/TestGatewaysManager.java
index 02c521be..02c521be 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestGatewaysManager.java
+++ b/app/src/androidTest/legacy/TestGatewaysManager.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestLeapSRPSession.java b/app/src/androidTest/legacy/TestLeapSRPSession.java
index 8d0df59b..8d0df59b 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestLeapSRPSession.java
+++ b/app/src/androidTest/legacy/TestLeapSRPSession.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestConfigurationWizard.java b/app/src/androidTest/legacy/TestProviderListActivity.java
index c0d3aab1..4ab705e7 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestConfigurationWizard.java
+++ b/app/src/androidTest/legacy/TestProviderListActivity.java
@@ -7,15 +7,15 @@ import com.robotium.solo.Solo;
import java.io.IOException;
-import se.leap.bitmaskclient.ConfigurationWizard;
+import se.leap.bitmaskclient.ProviderListActivity;
import se.leap.bitmaskclient.R;
-public class TestConfigurationWizard extends ActivityInstrumentationTestCase2<ConfigurationWizard> {
+public class TestProviderListActivity extends ActivityInstrumentationTestCase2<ProviderListActivity> {
private Solo solo;
- public TestConfigurationWizard() {
- super(ConfigurationWizard.class);
+ public TestProviderListActivity() {
+ super(ProviderListActivity.class);
}
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestUserStatusFragment.java b/app/src/androidTest/legacy/TestUserStatusFragment.java
index d77b9796..d77b9796 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestUserStatusFragment.java
+++ b/app/src/androidTest/legacy/TestUserStatusFragment.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestVpnCertificateValidator.java b/app/src/androidTest/legacy/TestVpnCertificateValidator.java
index 70596c10..70596c10 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/TestVpnCertificateValidator.java
+++ b/app/src/androidTest/legacy/TestVpnCertificateValidator.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/UserStatusTestController.java b/app/src/androidTest/legacy/UserStatusTestController.java
index 3b0daf9a..3b0daf9a 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/UserStatusTestController.java
+++ b/app/src/androidTest/legacy/UserStatusTestController.java
diff --git a/app/src/androidTest/java/se/leap/bitmaskclient/test/VpnTestController.java b/app/src/androidTest/legacy/VpnTestController.java
index f6760161..4c6a6370 100644
--- a/app/src/androidTest/java/se/leap/bitmaskclient/test/VpnTestController.java
+++ b/app/src/androidTest/legacy/VpnTestController.java
@@ -6,6 +6,7 @@ import android.widget.Button;
import com.robotium.solo.Condition;
import com.robotium.solo.Solo;
+import de.blinkt.openvpn.activities.DisconnectVPN;
import mbanje.kurt.fabbutton.ProgressRingView;
import se.leap.bitmaskclient.Dashboard;
import se.leap.bitmaskclient.R;
diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java
index 3e176fc1..034c9752 100644
--- a/app/src/insecure/java/se/leap/bitmaskclient/ConfigurationWizard.java
+++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListActivity.java
@@ -34,7 +34,7 @@ import se.leap.bitmaskclient.ProviderListContent.ProviderItem;
* @author parmegv
* @author cyberta
*/
-public class ConfigurationWizard extends BaseConfigurationWizard {
+public class ProviderListActivity extends ProviderListBaseActivity {
@Override
protected void onItemSelectedLogic() {
@@ -75,7 +75,7 @@ public class ConfigurationWizard extends BaseConfigurationWizard {
private void autoSelectProvider(Provider provider, boolean danger_on) {
preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply();
- provider = provider;
+ this.provider = provider;
onItemSelectedLogic();
showProgressBar();
}
diff --git a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListContent.java b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListContent.java
index c8dfc092..88e31c9a 100644
--- a/app/src/insecure/java/se/leap/bitmaskclient/ProviderListContent.java
+++ b/app/src/insecure/java/se/leap/bitmaskclient/ProviderListContent.java
@@ -20,7 +20,7 @@ import java.util.*;
import java.net.*;
/**
- * Models the provider list shown in the ConfigurationWizard.
+ * Models the provider list shown in the ProviderListActivity.
*
* @author parmegv
*/
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c0ab2c75..2ffb54f4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -93,7 +93,7 @@
android:label="@string/title_activity_main" />
<activity
- android:name=".ConfigurationWizard"
+ android:name=".ProviderListActivity"
android:label="@string/configuration_wizard_title" />
<activity
diff --git a/app/src/main/cpp b/app/src/main/cpp
new file mode 120000
index 00000000..e445d43e
--- /dev/null
+++ b/app/src/main/cpp
@@ -0,0 +1 @@
+../../../ics-openvpn/main/src/main/cpp/ \ No newline at end of file
diff --git a/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java b/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java
index 0c3f20fb..b2bf6b46 100644
--- a/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java
+++ b/app/src/main/java/de/blinkt/openvpn/LaunchVPN.java
@@ -7,45 +7,27 @@ package de.blinkt.openvpn;
import se.leap.bitmaskclient.R;
-import se.leap.bitmaskclient.R;
-
-import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
-import android.content.ComponentName;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
-import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.net.VpnService;
import android.os.Build;
import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.preference.PreferenceManager;
-import android.text.InputType;
-import android.text.TextUtils;
-import android.text.method.PasswordTransformationMethod;
-import android.view.View;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.EditText;
import java.io.IOException;
import de.blinkt.openvpn.activities.LogWindow;
import de.blinkt.openvpn.core.ConnectionStatus;
-import de.blinkt.openvpn.core.IServiceStatus;
-import de.blinkt.openvpn.core.OpenVPNStatusService;
-import de.blinkt.openvpn.core.PasswordCache;
import de.blinkt.openvpn.core.Preferences;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VPNLaunchHelper;
import de.blinkt.openvpn.core.VpnStatus;
+import se.leap.bitmaskclient.R;
/**
* This Activity actually handles two stages of a launcher shortcut's life cycle.
@@ -134,7 +116,7 @@ public class LaunchVPN extends Activity {
}
@Override
- protected void onActivityResult (int requestCode, int resultCode, Intent data) {
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==START_VPN_PROFILE) {
diff --git a/app/src/main/java/de/blinkt/openvpn/VpnProfile.java b/app/src/main/java/de/blinkt/openvpn/VpnProfile.java
index aa25da48..4becdc32 100644
--- a/app/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/app/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -7,6 +7,8 @@ package de.blinkt.openvpn;
import se.leap.bitmaskclient.R;
+import se.leap.bitmaskclient.BuildConfig;
+
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
@@ -21,6 +23,7 @@ import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Base64;
+import de.blinkt.openvpn.core.*;
import org.spongycastle.util.io.pem.PemObject;
import org.spongycastle.util.io.pem.PemWriter;
@@ -33,9 +36,7 @@ import java.io.Serializable;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
+import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
@@ -50,14 +51,6 @@ import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
-import de.blinkt.openvpn.core.Connection;
-import de.blinkt.openvpn.core.NativeUtils;
-import de.blinkt.openvpn.core.OpenVPNService;
-import de.blinkt.openvpn.core.PasswordCache;
-import de.blinkt.openvpn.core.VPNLaunchHelper;
-import de.blinkt.openvpn.core.VpnStatus;
-import de.blinkt.openvpn.core.X509Utils;
-
public class VpnProfile implements Serializable, Cloneable {
// Note that this class cannot be moved to core where it belongs since
// the profile loading depends on it being here
@@ -182,7 +175,6 @@ public class VpnProfile implements Serializable, Cloneable {
public boolean mUseUdp = true;
-
public VpnProfile(String name) {
mUuid = UUID.randomUUID();
mName = name;
@@ -282,30 +274,42 @@ public class VpnProfile implements Serializable, Cloneable {
}
+
+ public static boolean doUseOpenVPN3(Context c) {
+ SharedPreferences prefs = Preferences.getDefaultSharedPreferences(c);
+ boolean useOpenVPN3 = prefs.getBoolean("ovpn3", false);
+ if (!BuildConfig.openvpn3)
+ useOpenVPN3 = false;
+ return useOpenVPN3;
+ }
+
public String getConfigFile(Context context, boolean configForOvpn3) {
File cacheDir = context.getCacheDir();
String cfg = "";
- // Enable management interface
- cfg += "# Enables connection to GUI\n";
- cfg += "management ";
-
- cfg += cacheDir.getAbsolutePath() + "/" + "mgmtsocket";
- cfg += " unix\n";
- cfg += "management-client\n";
- // Not needed, see updated man page in 2.3
- //cfg += "management-signal\n";
- cfg += "management-query-passwords\n";
- cfg += "management-hold\n\n";
-
if (!configForOvpn3) {
+ // Enable management interface
+ cfg += "# Config for OpenVPN 2.x\n";
+ cfg += "# Enables connection to GUI\n";
+ cfg += "management ";
+
+ cfg += cacheDir.getAbsolutePath() + "/" + "mgmtsocket";
+ cfg += " unix\n";
+ cfg += "management-client\n";
+ // Not needed, see updated man page in 2.3
+ //cfg += "management-signal\n";
+ cfg += "management-query-passwords\n";
+ cfg += "management-hold\n\n";
+
cfg += String.format("setenv IV_GUI_VER %s \n", openVpnEscape(getVersionEnvString(context)));
- 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);
+ String versionString = getPlatformVersionEnvString();
cfg += String.format("setenv IV_PLAT_VER %s\n", openVpnEscape(versionString));
+ } else {
+ cfg += "# Config for OpeNVPN 3 C++\n";
}
+
cfg += "machine-readable-output\n";
cfg += "allow-recursive-routing\n";
@@ -418,8 +422,7 @@ public class VpnProfile implements Serializable, Cloneable {
cfg += insertFileData("ca", mCaFilename);
}
- if (isUserPWAuth())
- {
+ if (isUserPWAuth()) {
if (mAuthenticationType == AUTH_RETRY_NOINTERACT)
cfg += "auth-retry nointeract";
}
@@ -456,7 +459,7 @@ public class VpnProfile implements Serializable, Cloneable {
if (!TextUtils.isEmpty(mIPv6Address)) {
// Use our own ip as gateway since we ignore it anyway
String fakegw = mIPv6Address.split("/", 2)[0];
- cfg += "ifconfig-ipv6 " + mIPv6Address + " " + fakegw +"\n";
+ cfg += "ifconfig-ipv6 " + mIPv6Address + " " + fakegw + "\n";
}
}
@@ -490,16 +493,12 @@ public class VpnProfile implements Serializable, Cloneable {
if (mOverrideDNS || !mUsePull) {
if (!TextUtils.isEmpty(mDNS1)) {
- if (mDNS1.contains(":"))
- cfg += "dhcp-option DNS6 " + mDNS1 + "\n";
- else
- cfg += "dhcp-option DNS " + mDNS1 + "\n";
- } if (!TextUtils.isEmpty(mDNS2)) {
- if (mDNS2.contains(":"))
- cfg += "dhcp-option DNS6 " + mDNS2 + "\n";
- else
- cfg += "dhcp-option DNS " + mDNS2 + "\n";
- } if (!TextUtils.isEmpty(mSearchDomain))
+ cfg += "dhcp-option DNS " + mDNS1 + "\n";
+ }
+ if (!TextUtils.isEmpty(mDNS2)) {
+ cfg += "dhcp-option DNS " + mDNS2 + "\n";
+ }
+ if (!TextUtils.isEmpty(mSearchDomain))
cfg += "dhcp-option DOMAIN " + mSearchDomain + "\n";
}
@@ -511,9 +510,8 @@ public class VpnProfile implements Serializable, Cloneable {
cfg += "mssfix\n";
}
- if (mTunMtu >= 48 && mTunMtu != 1500)
- {
- cfg+= String.format(Locale.US, "tun-mtu %d\n", mTunMtu);
+ if (mTunMtu >= 48 && mTunMtu != 1500) {
+ cfg += String.format(Locale.US, "tun-mtu %d\n", mTunMtu);
}
if (mNobind)
@@ -580,7 +578,7 @@ public class VpnProfile implements Serializable, Cloneable {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean usesystemproxy = prefs.getBoolean("usesystemproxy", true);
- if (usesystemproxy && !mIsOpenVPN22) {
+ if (usesystemproxy && !mIsOpenVPN22 && !configForOvpn3) {
cfg += "# Use system proxy setting\n";
cfg += "management-query-proxy\n";
}
@@ -609,6 +607,11 @@ public class VpnProfile implements Serializable, Cloneable {
return cfg;
}
+ public String getPlatformVersionEnvString() {
+ return 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);
+ }
+
public String getVersionEnvString(Context c) {
String version = "unknown";
try {
@@ -907,12 +910,12 @@ public class VpnProfile implements Serializable, Cloneable {
if (mAuthenticationType == TYPE_KEYSTORE || mAuthenticationType == TYPE_USERPASS_KEYSTORE) {
if (mAlias == null)
return R.string.no_keystore_cert_selected;
- } else if (mAuthenticationType == TYPE_CERTIFICATES || mAuthenticationType == TYPE_USERPASS_CERTIFICATES){
+ } else if (mAuthenticationType == TYPE_CERTIFICATES || mAuthenticationType == TYPE_USERPASS_CERTIFICATES) {
if (TextUtils.isEmpty(mCaFilename))
return R.string.no_ca_cert_selected;
}
- if (mCheckRemoteCN && mX509AuthType==X509_VERIFY_TLSREMOTE)
+ if (mCheckRemoteCN && mX509AuthType == X509_VERIFY_TLSREMOTE)
return R.string.deprecated_tls_remote;
if (!mUsePull || mAuthenticationType == TYPE_STATICKEYS) {
@@ -948,6 +951,15 @@ public class VpnProfile implements Serializable, Cloneable {
if (noRemoteEnabled)
return R.string.remote_no_server_selected;
+ if (doUseOpenVPN3(context)) {
+ if (mAuthenticationType == TYPE_STATICKEYS) {
+ return R.string.openvpn3_nostatickeys;
+ }
+ if (mAuthenticationType == TYPE_PKCS12 || mAuthenticationType == TYPE_USERPASS_PKCS12) {
+ return R.string.openvpn3_pkcs12;
+ }
+ }
+
// Everything okay
return R.string.no_error_found;
@@ -1081,19 +1093,33 @@ public class VpnProfile implements Serializable, Cloneable {
try {
+ @SuppressLint("GetInstance")
+ String keyalgorithm = privkey.getAlgorithm();
+
+ byte[] signed_bytes;
+ if (keyalgorithm.equals("EC")) {
+ Signature signer = Signature.getInstance("NONEwithECDSA");
+
+ signer.initSign(privkey);
+ signer.update(data);
+ signed_bytes = signer.sign();
+
+ } else {
/* ECB is perfectly fine in this special case, since we are using it for
the public/private part in the TLS exchange
*/
- @SuppressLint("GetInstance")
- Cipher rsaSigner = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
+ Cipher signer;
+ signer = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
+
- rsaSigner.init(Cipher.ENCRYPT_MODE, privkey);
+ signer.init(Cipher.ENCRYPT_MODE, privkey);
- byte[] signed_bytes = rsaSigner.doFinal(data);
+ signed_bytes = signer.doFinal(data);
+ }
return Base64.encodeToString(signed_bytes, Base64.NO_WRAP);
} catch (NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException
- | BadPaddingException | NoSuchPaddingException e) {
+ | BadPaddingException | NoSuchPaddingException | SignatureException e) {
VpnStatus.logError(R.string.error_rsa_sign, e.getClass().toString(), e.getLocalizedMessage());
return null;
}
diff --git a/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java b/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
index 74afd61e..9889754d 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
@@ -261,6 +261,7 @@ public class ConfigParser {
"group",
"allow-recursive-routing",
"ip-win32",
+ "ifconfig-nowarn",
"management-hold",
"management",
"management-client",
@@ -275,6 +276,7 @@ public class ConfigParser {
"management-client-user",
"management-client-group",
"pause-exit",
+ "preresolve",
"plugin",
"machine-readable-output",
"persist-key",
@@ -300,7 +302,8 @@ public class ConfigParser {
{"setenv", "IV_GUI_VER"},
{"setenv", "IV_OPENVPN_GUI_VERSION"},
{"engine", "dynamic"},
- {"setenv", "CLIENT_CERT"}
+ {"setenv", "CLIENT_CERT"},
+ {"resolve-retry","60"}
};
final String[] connectionOptions = {
diff --git a/app/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java b/app/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
index e7019f42..38f51807 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
@@ -57,7 +57,7 @@ public class ICSOpenVPNApplication extends Application {
name = getString(R.string.channel_name_status);
mChannel = new NotificationChannel(OpenVPNService.NOTIFICATION_CHANNEL_NEWSTATUS_ID,
- name, NotificationManager.IMPORTANCE_DEFAULT);
+ name, NotificationManager.IMPORTANCE_LOW);
mChannel.setDescription(getString(R.string.channel_description_status));
mChannel.enableLights(true);
diff --git a/app/src/main/java/de/blinkt/openvpn/core/NativeUtils.java b/app/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
index ea003d41..70c7455a 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
@@ -18,6 +18,13 @@ public class NativeUtils {
public static native String getNativeAPI();
+
+ public final static int[] openSSLlengths = {
+ 16, 64, 256, 1024, 8 * 1024, 16 * 1024
+ };
+
+ public static native double[] getOpenSSLSpeed(String algorithm, int testnum);
+
static {
System.loadLibrary("opvpnutil");
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN)
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
index c15f659a..6c312c87 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
@@ -11,7 +11,6 @@ import android.app.Notification;
import android.app.UiModeManager;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutManager;
import android.content.res.Configuration;
@@ -43,7 +42,6 @@ import java.util.Vector;
import de.blinkt.openvpn.VpnProfile;
import de.blinkt.openvpn.core.VpnStatus.ByteCountListener;
import de.blinkt.openvpn.core.VpnStatus.StateListener;
-import se.leap.bitmaskclient.BuildConfig;
import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.VpnNotificationManager;
@@ -61,6 +59,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private static final String RESUME_VPN = "se.leap.bitmaskclient.RESUME_VPN";
public static final String NOTIFICATION_CHANNEL_BG_ID = "openvpn_bg";
public static final String NOTIFICATION_CHANNEL_NEWSTATUS_ID = "openvpn_newstat";
+ public static final String VPNSERVICE_TUN = "vpnservice-tun";
private static boolean mNotificationAlwaysVisible = false;
private final Vector<String> mDnslist = new Vector<>();
@@ -76,7 +75,6 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private boolean mDisplayBytecount = false;
private boolean mStarting = false;
private long mConnecttime;
- private boolean mOvpn3 = false;
private OpenVPNManagement mManagement;
private String mLastTunCfg;
private String mRemoteGW;
@@ -169,7 +167,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
// Similar to revoke but do not try to stop process
- public void processDied() {
+ public void openvpnStopped() {
endVpnService();
}
@@ -291,6 +289,18 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
return START_REDELIVER_INTENT;
}
+ /* TODO: check that for Bitmask */
+ // Always show notification here to avoid problem with startForeground timeout
+ VpnStatus.logInfo(R.string.building_configration);
+ VpnStatus.updateStateString("VPN_GENERATE_CONFIG", "", R.string.building_configration, ConnectionStatus.LEVEL_START);
+ notificationManager.buildOpenVpnNotification(
+ mProfile != null ? mProfile.mName : "",
+ VpnStatus.getLastCleanLogMessage(this),
+ VpnStatus.getLastCleanLogMessage(this),
+ ConnectionStatus.LEVEL_START,
+ 0,
+ NOTIFICATION_CHANNEL_NEWSTATUS_ID);
+
if (intent != null && intent.hasExtra(getPackageName() + ".profileUUID")) {
String profileUUID = intent.getStringExtra(getPackageName() + ".profileUUID");
int profileVersion = intent.getIntExtra(getPackageName() + ".profileVersion", 0);
@@ -319,6 +329,12 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
mProfile.checkForRestart(this);
}
+ if (mProfile == null) {
+ stopSelf(startId);
+ return START_NOT_STICKY;
+ }
+
+
/* start the OpenVPN process itself in a background thread */
new Thread(new Runnable() {
@Override
@@ -343,6 +359,9 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
private void startOpenVPN() {
+ /**
+ * see change above (l. 292 ff)
+ */
VpnStatus.logInfo(R.string.building_configration);
VpnStatus.updateStateString("VPN_GENERATE_CONFIG", "", R.string.building_configration, ConnectionStatus.LEVEL_START);
@@ -369,14 +388,10 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
mStarting = false;
// Start a new session by creating a new thread.
- SharedPreferences prefs = Preferences.getDefaultSharedPreferences(this);
-
- mOvpn3 = prefs.getBoolean("ovpn3", false);
- if (!"ovpn3".equals(BuildConfig.FLAVOR))
- mOvpn3 = false;
+ boolean useOpenVPN3 = VpnProfile.doUseOpenVPN3(this);
// Open the Management Interface
- if (!mOvpn3) {
+ if (!useOpenVPN3) {
// start a Thread that handles incoming messages of the managment socket
OpenVpnManagementThread ovpnManagementThread = new OpenVpnManagementThread(mProfile, this);
if (ovpnManagementThread.openManagementInterface(this)) {
@@ -392,15 +407,11 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
Runnable processThread;
- if (mOvpn3)
-
+ if (useOpenVPN3)
{
-
OpenVPNManagement mOpenVPN3 = instantiateOpenVPN3Core();
processThread = (Runnable) mOpenVPN3;
mManagement = mOpenVPN3;
-
-
} else {
processThread = new OpenVPNThread(this, argv, nativeLibraryDirectory);
mOpenVPNThread = processThread;
@@ -757,8 +768,8 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
/**
* Route that is always included, used by the v3 core
*/
- public void addRoute(CIDRIP route) {
- mRoutes.addIP(route, true);
+ public void addRoute(CIDRIP route, boolean include) {
+ mRoutes.addIP(route, include);
}
public void addRoute(String dest, String mask, String gateway, String device) {
@@ -810,7 +821,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private boolean isAndroidTunDevice(String device) {
return device != null &&
- (device.startsWith("tun") || "(null)".equals(device) || "vpnservice-tun".equals(device));
+ (device.startsWith("tun") || "(null)".equals(device) || VPNSERVICE_TUN.equals(device));
}
public void setMtu(int mtu) {
@@ -859,7 +870,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
if (mLocalIP.len <= 31 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CIDRIP interfaceRoute = new CIDRIP(mLocalIP.mIp, mLocalIP.len);
interfaceRoute.normalise();
- addRoute(interfaceRoute);
+ addRoute(interfaceRoute ,true);
}
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
index c96f88c4..b902f5d7 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
@@ -111,7 +111,8 @@ public class OpenVPNThread implements Runnable {
}
}
- mService.processDied();
+ if (!mNoProcessExitStatus)
+ mService.openvpnStopped();
Log.i(TAG, "Exiting");
}
}
@@ -177,7 +178,7 @@ public class OpenVPNThread implements Runnable {
VpnStatus.logMessageOpenVPN(logStatus, logLevel, msg);
if (logerror==1)
- VpnStatus.logError("OpenSSL reproted a certificate with a weak hash, please the in app FAQ about weak hashes");
+ VpnStatus.logError("OpenSSL reported a certificate with a weak hash, please the in app FAQ about weak hashes");
} else {
VpnStatus.logInfo("P:" + logline);
diff --git a/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
index 492e8913..2b6df9af 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
@@ -148,6 +148,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
// Closing one of the two sockets also closes the other
//mServerSocketLocal.close();
+ managmentCommand("version 2\n");
while (true) {
@@ -259,7 +260,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
case "LOG":
processLogMessage(argument);
break;
- case "RSA_SIGN":
+ case "PK_SIGN":
processSignCommand(argument);
break;
default:
@@ -606,7 +607,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
if (mWaitingForRelease)
releaseHold();
else if (samenetwork)
- managmentCommand("network-change\n");
+ managmentCommand("network-change samenetwork\n");
else
managmentCommand("network-change\n");
}
@@ -634,13 +635,14 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
private void processSignCommand(String b64data) {
String signed_string = mProfile.getSignedData(b64data);
+
if (signed_string == null) {
- managmentCommand("rsa-sig\n");
+ managmentCommand("pk-sig\n");
managmentCommand("\nEND\n");
stopOpenVPN();
return;
}
- managmentCommand("rsa-sig\n");
+ managmentCommand("pk-sig\n");
managmentCommand(signed_string);
managmentCommand("\nEND\n");
}
diff --git a/app/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java b/app/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
index f3b40381..97a73964 100644
--- a/app/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
+++ b/app/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
@@ -6,7 +6,6 @@
package de.blinkt.openvpn.core;
import android.annotation.TargetApi;
-import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
diff --git a/app/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java b/app/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
index a1fc7cdc..1a207a25 100644
--- a/app/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
+++ b/app/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
@@ -23,7 +23,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
-import android.preference.Preference;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.text.SpannableString;
diff --git a/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java b/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
index bd8ae228..fbb27b58 100644
--- a/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
@@ -22,8 +22,6 @@ import butterknife.InjectView;
import static se.leap.bitmaskclient.Constants.PROVIDER_ALLOW_ANONYMOUS;
import static se.leap.bitmaskclient.Constants.PROVIDER_KEY;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_CONFIGURE_LEAP;
-import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
-import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
public abstract class AbstractProviderDetailActivity extends ConfigWizardBaseActivity {
@@ -42,8 +40,8 @@ public abstract class AbstractProviderDetailActivity extends ConfigWizardBaseAct
try {
JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
- setProviderHeaderText(getProviderName());
- description.setText(providerJson.getJSONObject(Provider.DESCRIPTION).getString("en"));
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
+ description.setText(ConfigHelper.getDescription(preferences));
// Show only the options allowed by the provider
ArrayList<String> optionsList = new ArrayList<>();
@@ -74,7 +72,9 @@ public abstract class AbstractProviderDetailActivity extends ConfigWizardBaseAct
intent = new Intent(getApplicationContext(), SignupActivity.class);
} else {
Log.d(TAG, "use anonymously selected");
- setResult(RESULT_OK);
+ intent = new Intent();
+ intent.putExtra(Provider.KEY, provider);
+ setResult(RESULT_OK, intent);
finish();
return;
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java
index ccdf5064..741a6f56 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java
@@ -18,8 +18,10 @@ package se.leap.bitmaskclient;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.util.Log;
+import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
import org.spongycastle.util.encoders.Base64;
@@ -45,6 +47,7 @@ import java.security.cert.X509Certificate;
import java.security.interfaces.RSAPrivateKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Locale;
import static android.R.attr.name;
import static se.leap.bitmaskclient.Constants.PROVIDER_CONFIGURED;
@@ -261,16 +264,6 @@ public class ConfigHelper {
}
- public static String getCurrentProviderName(@NonNull SharedPreferences preferences) {
- try {
- JSONObject providerDefintion = new JSONObject(preferences.getString(Provider.KEY, ""));
- return providerDefintion.getString(Provider.DOMAIN);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return null;
- }
-
public static boolean providerInSharedPreferences(@NonNull SharedPreferences preferences) {
return preferences.getBoolean(PROVIDER_CONFIGURED, false);
}
@@ -288,4 +281,74 @@ public class ConfigHelper {
return provider;
}
+ public static String getProviderName(String provider) {
+ return getProviderName(null, provider);
+ }
+
+ public static String getProviderName(@Nullable SharedPreferences preferences) {
+ return getProviderName(preferences,null);
+ }
+
+ public static String getProviderName(@Nullable SharedPreferences preferences, @Nullable String provider) {
+ if (provider == null && preferences != null) {
+ provider = preferences.getString(Provider.KEY, "");
+ }
+ try {
+ JSONObject providerJson = new JSONObject(provider);
+ String lang = Locale.getDefault().getLanguage();
+ return providerJson.getJSONObject(Provider.NAME).getString(lang);
+ } catch (JSONException e) {
+ try {
+ JSONObject providerJson = new JSONObject(provider);
+ return providerJson.getJSONObject(Provider.NAME).getString("en");
+ } catch (JSONException e2) {
+ return null;
+ }
+ } catch (NullPointerException npe) {
+ return null;
+ }
+ }
+
+ public static String getProviderDomain(SharedPreferences preferences) {
+ return getProviderDomain(preferences, null);
+ }
+
+ public static String getProviderDomain(String provider) {
+ return getProviderDomain(null, provider);
+ }
+
+ public static String getProviderDomain(@Nullable SharedPreferences preferences, @Nullable String provider) {
+ if (provider == null && preferences != null) {
+ provider = preferences.getString(Provider.KEY, "");
+ }
+ try {
+ JSONObject providerJson = new JSONObject(provider);
+ return providerJson.getString(Provider.DOMAIN);
+ } catch (JSONException | NullPointerException e) {
+ return null;
+ }
+ }
+
+ public static String getDescription(SharedPreferences preferences) {
+ try {
+ JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
+ String lang = Locale.getDefault().getLanguage();
+ return providerJson.getJSONObject(Provider.DESCRIPTION).getString(lang);
+ } catch (JSONException e) {
+ try {
+ JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
+ return providerJson.getJSONObject(Provider.DESCRIPTION).getString("en");
+ } catch (JSONException e1) {
+ return null;
+ }
+ }
+ }
+
+ public static void storeProviderInPreferences(SharedPreferences preferences, Provider provider) {
+ preferences.edit().putBoolean(PROVIDER_CONFIGURED, true).
+ putString(Provider.MAIN_URL, provider.getMainUrlString()).
+ putString(Provider.KEY, provider.getDefinitionString()).
+ putString(Provider.CA_CERT, provider.getCaCert()).
+ apply();
+ }
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
index 98715c1a..79a78fe1 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
@@ -5,20 +5,13 @@ import android.os.Bundle;
import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
-import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.AppCompatTextView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.Locale;
-
import butterknife.InjectView;
-import se.leap.bitmaskclient.userstatus.SessionDialog;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
@@ -63,19 +56,19 @@ public abstract class ConfigWizardBaseActivity extends ButterKnifeActivity {
@Override
public void setContentView(View view) {
super.setContentView(view);
- setProviderHeaderText(getProviderName());
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
- setProviderHeaderText(getProviderName());
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
super.setContentView(view, params);
- setProviderHeaderText(getProviderName());
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
}
protected void setProviderHeaderLogo(@DrawableRes int providerHeaderLogo) {
@@ -90,29 +83,6 @@ public abstract class ConfigWizardBaseActivity extends ButterKnifeActivity {
this.providerHeaderText.setText(providerHeaderText);
}
- protected String getProviderName() {
- try {
- JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
- String lang = Locale.getDefault().getLanguage();
- return providerJson.getJSONObject(Provider.NAME).getString(lang);
- } catch (JSONException e) {
- try {
- JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
- return providerJson.getJSONObject(Provider.NAME).getString("en");
- } catch (JSONException e2) {
- return null;
- }
- }
- }
-
- protected String getProviderDomain() {
- try {
- JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
- return providerJson.getString(Provider.DOMAIN);
- } catch (JSONException e) {
- return null;
- }
- }
protected void hideProgressBar() {
loadingScreen.setVisibility(GONE);
content.setVisibility(VISIBLE);
diff --git a/app/src/main/java/se/leap/bitmaskclient/Dashboard.java b/app/src/main/java/se/leap/bitmaskclient/Dashboard.java
index 5ccb48b5..a4db5f84 100644
--- a/app/src/main/java/se/leap/bitmaskclient/Dashboard.java
+++ b/app/src/main/java/se/leap/bitmaskclient/Dashboard.java
@@ -87,7 +87,7 @@ public class Dashboard extends ButterKnifeActivity {
@InjectView(R.id.providerName)
TextView provider_name;
- private VpnFragment eip_fragment;
+ private EipFragment eip_fragment;
private UserStatusFragment user_status_fragment;
private static Provider provider = new Provider();
@@ -232,7 +232,7 @@ public class Dashboard extends ButterKnifeActivity {
private void handleConfigureAlwaysOn(Intent intent) {
intent.removeExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE);
Log.d(TAG, "start Configuration wizard!");
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
private void prepareEIP(Bundle savedInstanceState) {
@@ -255,7 +255,7 @@ public class Dashboard extends ButterKnifeActivity {
if (getIntent().hasExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE)) {
getIntent().removeExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE);
}
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
@SuppressLint("CommitPrefEdits")
private void providerToPreferences(Provider provider) {
@@ -273,7 +273,7 @@ public class Dashboard extends ButterKnifeActivity {
.setPositiveButton(getResources().getString(R.string.setup_error_configure_button), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- startActivityForResult(new Intent(Dashboard.this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(Dashboard.this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
})
.setNegativeButton(getResources().getString(R.string.setup_error_close_button), new DialogInterface.OnClickListener() {
@@ -290,8 +290,8 @@ public class Dashboard extends ButterKnifeActivity {
* Inflates permanent UI elements of the View and contains logic for what
* service dependent UI elements to include.
*/
- //TODO: REFACTOR ME! Consider implementing a manager that handles most of VpnFragment's logic about handling EIP commands.
- //This way, we could avoid to create UI elements (like fragmentManager.replace(R.id.servicesCollection, eip_fragment, VpnFragment.TAG); )
+ //TODO: REFACTOR ME! Consider implementing a manager that handles most of EipFragment's logic about handling EIP commands.
+ //This way, we could avoid to create UI elements (like fragmentManager.replace(R.id.servicesCollection, eip_fragment, EipFragment.TAG); )
// just to start services and destroy them afterwards
private void buildDashboard(boolean hideAndTurnOnEipOnBoot) {
setContentView(R.layout.dashboard);
@@ -305,9 +305,9 @@ public class Dashboard extends ButterKnifeActivity {
fragment_manager.replace(R.id.user_status_fragment, user_status_fragment, UserStatusFragment.TAG);
if (provider.hasEIP()) {
- fragment_manager.removePreviousFragment(VpnFragment.TAG);
+ fragment_manager.removePreviousFragment(EipFragment.TAG);
eip_fragment = prepareEipFragment(hideAndTurnOnEipOnBoot);
- fragment_manager.replace(R.id.servicesCollection, eip_fragment, VpnFragment.TAG);
+ fragment_manager.replace(R.id.servicesCollection, eip_fragment, EipFragment.TAG);
if (hideAndTurnOnEipOnBoot) {
onBackPressed();
}
@@ -320,13 +320,13 @@ public class Dashboard extends ButterKnifeActivity {
* has caused to start Dashboard
* @return the created VPNFragment
*/
- public VpnFragment prepareEipFragment(boolean hideAndTurnOnEipOnBoot) {
- VpnFragment eip_fragment = new VpnFragment();
+ public EipFragment prepareEipFragment(boolean hideAndTurnOnEipOnBoot) {
+ EipFragment eip_fragment = new EipFragment();
if (hideAndTurnOnEipOnBoot && !isAlwaysOn()) {
preferences.edit().remove(EIP_RESTART_ON_BOOT).apply();
Bundle arguments = new Bundle();
- arguments.putBoolean(VpnFragment.START_EIP_ON_BOOT, true);
+ arguments.putBoolean(EipFragment.START_EIP_ON_BOOT, true);
Log.d(TAG, "set START_EIP_ON_BOOT argument for eip_fragment");
eip_fragment.setArguments(arguments);
@@ -416,7 +416,7 @@ public class Dashboard extends ButterKnifeActivity {
clearDataOfLastProvider();
switching_provider = false;
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
}
private void clearDataOfLastProvider() {
@@ -441,7 +441,7 @@ public class Dashboard extends ButterKnifeActivity {
preferenceEditor.apply();
switching_provider = false;
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
}
private static class DashboardReceiver implements ProviderAPIResultReceiver.Receiver{
diff --git a/app/src/main/java/se/leap/bitmaskclient/VpnFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
index f1463029..414b1f2a 100644
--- a/app/src/main/java/se/leap/bitmaskclient/VpnFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
@@ -24,17 +24,21 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.support.v4.app.Fragment;
+import android.support.v7.widget.AppCompatImageView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.TextView;
import java.util.Observable;
import java.util.Observer;
@@ -46,11 +50,12 @@ import de.blinkt.openvpn.core.IOpenVPNServiceInternal;
import de.blinkt.openvpn.core.OpenVPNService;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VpnStatus;
-import mbanje.kurt.fabbutton.FabButton;
import se.leap.bitmaskclient.eip.EIP;
import se.leap.bitmaskclient.eip.EipStatus;
import se.leap.bitmaskclient.eip.VoidVpnService;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_NONETWORK;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_CHECK_CERT_VALIDITY;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_START;
@@ -66,23 +71,35 @@ import static se.leap.bitmaskclient.Constants.PROVIDER_ALLOW_ANONYMOUS;
import static se.leap.bitmaskclient.Constants.PROVIDER_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
-public class VpnFragment extends Fragment implements Observer {
+public class EipFragment extends Fragment implements Observer {
- public static String TAG = VpnFragment.class.getSimpleName();
+ public static String TAG = EipFragment.class.getSimpleName();
- public static final String IS_PENDING = TAG + ".is_pending";
protected static final String IS_CONNECTED = TAG + ".is_connected";
public static final String START_EIP_ON_BOOT = "start on boot";
private SharedPreferences preferences;
- @InjectView(R.id.vpn_status_image)
- FabButton vpnStatusImage;
+ @InjectView(R.id.background)
+ AppCompatImageView background;
+
+ @InjectView(R.id.key)
+ AppCompatImageView key;
+
+ @InjectView(R.id.cirle)
+ AppCompatImageView circle;
+
@InjectView(R.id.vpn_main_button)
Button mainButton;
- private static EIPReceiver eipReceiver;
- private static EipStatus eipStatus;
+ @InjectView(R.id.routed_text)
+ TextView routedText;
+
+ @InjectView(R.id.vpn_route)
+ TextView vpnRoute;
+
+ private EIPReceiver eipReceiver;
+ private EipStatus eipStatus;
private boolean wantsToConnect;
private IOpenVPNServiceInternal mService;
@@ -156,6 +173,20 @@ public class VpnFragment extends Fragment implements Observer {
}
@OnClick(R.id.vpn_main_button)
+ void onButtonClick() {
+ handleIcon();
+ }
+
+ @OnClick(R.id.key)
+ void onKeyClick() {
+ handleIcon();
+ }
+
+ @OnClick(R.id.cirle)
+ void onCircleClick() {
+ handleIcon();
+ }
+
void handleIcon() {
if (eipStatus.isConnected() || eipStatus.isConnecting())
handleSwitchOff();
@@ -194,8 +225,6 @@ public class VpnFragment extends Fragment implements Observer {
askPendingStartCancellation();
} else if (eipStatus.isConnected()) {
askToStopEIP();
- } else {
- updateIcon();
}
}
@@ -313,44 +342,32 @@ public class VpnFragment extends Fragment implements Observer {
}
});
} else {
- Log.e("VpnFragment", "activity is null");
+ Log.e("EipFragment", "activity is null");
}
}
}
private void handleNewState() {
- updateIcon();
- updateButton();
- }
-
- private void updateIcon() {
- if (eipStatus.isBlocking()) {
- vpnStatusImage.showProgress(false);
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn_blocking, R.drawable.ic_stat_vpn_blocking);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn_blocking);
- } else if (eipStatus.isConnecting()) {
- vpnStatusImage.showProgress(true);
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn_empty_halo, R.drawable.ic_stat_vpn_empty_halo);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn_empty_halo);
- } else if (eipStatus.isConnected()){
- vpnStatusImage.showProgress(false);
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn, R.drawable.ic_stat_vpn);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn);
- } else {
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn_offline, R.drawable.ic_stat_vpn_offline);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn_offline);
- vpnStatusImage.showProgress(false);
- }
- }
-
- private void updateButton() {
Activity activity = getActivity();
if (eipStatus.isConnecting()) {
mainButton.setText(activity.getString(android.R.string.cancel));
+ key.setImageResource(R.drawable.vpn_connecting);
+ routedText.setVisibility(GONE);
+ vpnRoute.setVisibility(GONE);
+ colorBackgroundALittle();
} else if (eipStatus.isConnected() || isOpenVpnRunningWithoutNetwork()) {
mainButton.setText(activity.getString(R.string.vpn_button_turn_off));
+ key.setImageResource(R.drawable.vpn_connected);
+ routedText.setVisibility(VISIBLE);
+ vpnRoute.setVisibility(VISIBLE);
+ vpnRoute.setText(ConfigHelper.getProviderName(preferences));
+ colorBackground();
} else {
mainButton.setText(activity.getString(R.string.vpn_button_turn_on));
+ key.setImageResource(R.drawable.vpn_disconnected);
+ routedText.setVisibility(GONE);
+ vpnRoute.setVisibility(GONE);
+ greyscaleBackground();
}
}
@@ -439,8 +456,22 @@ public class VpnFragment extends Fragment implements Observer {
}
}
+ private void greyscaleBackground() {
+ ColorMatrix matrix = new ColorMatrix();
+ matrix.setSaturation(0);
+ ColorMatrixColorFilter cf = new ColorMatrixColorFilter(matrix);
+ background.setColorFilter(cf);
+ background.setImageAlpha(255);
+ }
- public static EIPReceiver getReceiver() {
- return eipReceiver;
+ private void colorBackgroundALittle() {
+ background.setColorFilter(null);
+ background.setImageAlpha(144);
}
+
+ private void colorBackground() {
+ background.setColorFilter(null);
+ background.setImageAlpha(255);
+ }
+
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java b/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
index 6ae288c2..a407b0a9 100644
--- a/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
@@ -22,11 +22,6 @@ public class LoginActivity extends ProviderCredentialsBaseActivity {
}
@Override
- protected void onResume() {
- super.onResume();
- }
-
- @Override
@OnClick(R.id.button)
void handleButton() {
super.handleButton();
diff --git a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
index 3fc1637e..7629f0b7 100644
--- a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
@@ -74,7 +74,7 @@ public class MainActivity extends AppCompatActivity {
switch (intent.getAction()) {
case ACTION_SHOW_VPN_FRAGMENT:
- fragment = new VpnFragment();
+ fragment = new EipFragment();
break;
default:
break;
@@ -89,10 +89,14 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (data == null) {
+ return;
+ }
+
if (requestCode == REQUEST_CODE_CONFIGURE_LEAP) {
if (resultCode == RESULT_OK && data.hasExtra(Provider.KEY)) {
Provider provider = data.getParcelableExtra(Provider.KEY);
- provider.storeInPreferences(preferences);
+ ConfigHelper.storeProviderInPreferences(preferences, provider);
}
}
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/Provider.java b/app/src/main/java/se/leap/bitmaskclient/Provider.java
index 30504080..ae329cd1 100644
--- a/app/src/main/java/se/leap/bitmaskclient/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/Provider.java
@@ -121,10 +121,18 @@ public final class Provider implements Parcelable {
return definition;
}
+ String getDefinitionString() {
+ return getDefinition().toString();
+ }
+
protected String getDomain() {
return mainUrl.getDomain();
}
+ String getMainUrlString() {
+ return getMainUrl().toString();
+ }
+
protected DefaultedURL getMainUrl() {
return mainUrl;
}
@@ -301,9 +309,4 @@ public final class Provider implements Parcelable {
this.caCert = cert;
}
- public void storeInPreferences(SharedPreferences preferences) {
- preferences.edit().putBoolean(PROVIDER_CONFIGURED, true).
- putString(Provider.MAIN_URL, getMainUrl().toString()).
- putString(Provider.KEY, getDefinition().toString()).apply();
- }
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
index f51618ad..25dca4e0 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
@@ -24,8 +24,6 @@ import se.leap.bitmaskclient.userstatus.SessionDialog;
import se.leap.bitmaskclient.userstatus.SessionDialog.ERRORS;
import se.leap.bitmaskclient.userstatus.User;
-import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
-
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
diff --git a/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
index 0726a785..2b0c72db 100644
--- a/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
@@ -62,7 +62,7 @@ import static se.leap.bitmaskclient.ProviderAPI.RESULT_KEY;
/**
* abstract base Activity that builds and shows the list of known available providers.
- * The implementation of BaseConfigurationWizard differ in that they may or may not allow to bypass
+ * The implementation of ProviderListBaseActivity differ in that they may or may not allow to bypass
* secure download mechanisms including certificate validation.
* <p/>
* It also allows the user to enter custom providers with a button.
@@ -71,7 +71,7 @@ import static se.leap.bitmaskclient.ProviderAPI.RESULT_KEY;
* @author cyberta
*/
-public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
+public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity
implements NewProviderDialog.NewProviderDialogInterface, DownloadFailedDialog.DownloadFailedDialogInterface, ProviderAPIResultReceiver.Receiver {
@InjectView(R.id.provider_list)
@@ -82,7 +82,7 @@ public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
private ProviderManager providerManager;
protected Intent mConfigState = new Intent(PROVIDER_NOT_SET);
- final public static String TAG = ConfigurationWizard.class.getSimpleName();
+ final public static String TAG = ProviderListActivity.class.getSimpleName();
final private static String ACTIVITY_STATE = "ACTIVITY STATE";
@@ -116,8 +116,6 @@ public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
@Override
protected void onSaveInstanceState(@NotNull Bundle outState) {
- //if (progressbarDescription != null)
- // outState.putString(PROGRESSBAR_TEXT, progressbarDescription.getText().toString());
outState.putString(ACTIVITY_STATE, mConfigState.getAction());
outState.putParcelable(Provider.KEY, provider);
@@ -447,16 +445,31 @@ public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
int resultCode = intent.getIntExtra(RESULT_CODE, -1);
Log.d(TAG, "Broadcast resultCode: " + Integer.toString(resultCode));
+ Bundle resultData = intent.getParcelableExtra(RESULT_KEY);
+ String handledProvider = resultData.getString(Provider.KEY);
- if (getProviderName().equalsIgnoreCase(provider.getName()) &&
- getProviderDomain().equalsIgnoreCase(provider.getDomain())) {
+ String providerName = ConfigHelper.getProviderName(handledProvider);
+ String providerDomain = ConfigHelper.getProviderDomain(handledProvider);
+
+ //FIXME: remove that lines as soon as Provider gets sent via broadcast
+ if (resultCode == PROVIDER_OK && handledProvider == null) {
+ providerName = ConfigHelper.getProviderName(preferences);
+ providerDomain = ConfigHelper.getProviderDomain(preferences);
+ }
+
+ if (providerName != null && providerName.equalsIgnoreCase(provider.getName()) &&
+ providerDomain != null &&
+ providerDomain.equalsIgnoreCase(provider.getDomain())) {
switch (resultCode) {
case PROVIDER_OK:
handleProviderSetUp();
break;
case PROVIDER_NOK:
- handleProviderSetupFailed((Bundle) intent.getParcelableExtra(RESULT_KEY));
+ handleProviderSetupFailed(resultData);
break;
+ }
+ } else {
+ switch (resultCode) {
case CORRECTLY_DOWNLOADED_CERTIFICATE:
handleCorrectlyDownloadedCertificate();
break;
diff --git a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
index 69079735..f5991538 100644
--- a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
@@ -17,7 +17,6 @@ import se.leap.bitmaskclient.userstatus.User;
import static se.leap.bitmaskclient.Constants.APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE;
import static se.leap.bitmaskclient.Constants.PREFERENCES_APP_VERSION;
-import static se.leap.bitmaskclient.Constants.PROVIDER_CONFIGURED;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_CONFIGURE_LEAP;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
@@ -56,7 +55,7 @@ public class StartActivity extends Activity {
case FIRST:
storeAppVersion();
// TODO start ProfileCreation & replace below code
- // (new Intent(getActivity(), ConfigurationWizard.class), Constants.REQUEST_CODE_SWITCH_PROVIDER);
+ // (new Intent(getActivity(), ProviderListActivity.class), Constants.REQUEST_CODE_SWITCH_PROVIDER);
break;
case UPGRADE:
@@ -165,15 +164,19 @@ public class StartActivity extends Activity {
if (getIntent().hasExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE)) {
getIntent().removeExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE);
}
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (data == null) {
+ return;
+ }
+
if (requestCode == REQUEST_CODE_CONFIGURE_LEAP) {
if (resultCode == RESULT_OK && data.hasExtra(Provider.KEY)) {
Provider provider = data.getParcelableExtra(Provider.KEY);
- provider.storeInPreferences(preferences);
+ ConfigHelper.storeProviderInPreferences(preferences, provider);
showMainActivity();
} else if (resultCode == RESULT_CANCELED) {
diff --git a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
index dbe99dce..090e8d26 100644
--- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
@@ -27,9 +27,9 @@ import android.widget.ListView;
import android.widget.Toast;
import se.leap.bitmaskclient.ConfigHelper;
-import se.leap.bitmaskclient.ConfigurationWizard;
+import se.leap.bitmaskclient.ProviderListActivity;
+import se.leap.bitmaskclient.EipFragment;
import se.leap.bitmaskclient.R;
-import se.leap.bitmaskclient.VpnFragment;
import se.leap.bitmaskclient.fragments.AboutFragment;
import se.leap.bitmaskclient.fragments.LogFragment;
@@ -143,7 +143,7 @@ public class NavigationDrawerFragment extends Fragment {
android.R.layout.simple_list_item_activated_1,
android.R.id.text1);
- String providerName = ConfigHelper.getCurrentProviderName(preferences);
+ String providerName = ConfigHelper.getProviderName(preferences);
if (providerName == null) {
//TODO: ADD A header to the ListView containing a useful message.
//TODO 2: disable switchProvider
@@ -296,7 +296,7 @@ public class NavigationDrawerFragment extends Fragment {
if (parent == mDrawerAccountsListView) {
mTitle = getString(R.string.vpn_fragment_title);
- fragment = new VpnFragment();
+ fragment = new EipFragment();
} else {
Log.d("Drawer", String.format("Selected position %d", position));
switch (position) {
@@ -304,7 +304,7 @@ public class NavigationDrawerFragment extends Fragment {
// TODO STOP VPN
// if (provider.hasEIP()) eip_fragment.stopEipIfPossible();
preferences.edit().clear().apply();
- startActivityForResult(new Intent(getActivity(), ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER);
+ startActivityForResult(new Intent(getActivity(), ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
break;
case 1:
mTitle = getString(R.string.log_fragment_title);
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
index a2ac9d66..eca5b881 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
@@ -18,7 +18,6 @@ package se.leap.bitmaskclient.eip;
import android.app.Activity;
import android.app.IntentService;
-import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
@@ -30,7 +29,6 @@ import org.json.JSONObject;
import de.blinkt.openvpn.LaunchVPN;
import se.leap.bitmaskclient.OnBootReceiver;
-import se.leap.bitmaskclient.VpnFragment;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_CHECK_CERT_VALIDITY;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_IS_RUNNING;
@@ -59,12 +57,11 @@ public final class EIP extends IntentService {
public final static String TAG = EIP.class.getSimpleName();
public final static String SERVICE_API_PATH = "config/eip-service.json";
- private static Context context;
private static ResultReceiver mReceiver;
private static SharedPreferences preferences;
private static JSONObject eipDefinition;
- private static GatewaysManager gatewaysManager = new GatewaysManager();
+ private GatewaysManager gatewaysManager = new GatewaysManager();
private static Gateway gateway;
public EIP() {
@@ -74,7 +71,6 @@ public final class EIP extends IntentService {
@Override
public void onCreate() {
super.onCreate();
- context = getApplicationContext();
preferences = getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
eipDefinition = eipDefinitionFromPreferences();
if (gatewaysManager.isEmpty())
@@ -86,18 +82,30 @@ public final class EIP extends IntentService {
String action = intent.getAction();
mReceiver = intent.getParcelableExtra(EIP_RECEIVER);
- if (action.equals(EIP_ACTION_START))
- startEIP();
- else if (action.equals(EIP_ACTION_START_ALWAYS_ON_EIP))
- startAlwaysOnEIP();
- else if (action.equals(EIP_ACTION_STOP))
- stopEIP();
- else if (action.equals(EIP_ACTION_IS_RUNNING))
- isRunning();
- else if (action.equals(EIP_ACTION_UPDATE))
- updateEIPService();
- else if (action.equals(EIP_ACTION_CHECK_CERT_VALIDITY))
- checkCertValidity();
+ if (action == null) {
+ return;
+ }
+
+ switch (action) {
+ case EIP_ACTION_START:
+ startEIP();
+ break;
+ case EIP_ACTION_START_ALWAYS_ON_EIP:
+ startAlwaysOnEIP();
+ break;
+ case EIP_ACTION_STOP:
+ stopEIP();
+ break;
+ case EIP_ACTION_IS_RUNNING:
+ isRunning();
+ break;
+ case EIP_ACTION_UPDATE:
+ updateEIPService();
+ break;
+ case EIP_ACTION_CHECK_CERT_VALIDITY:
+ checkCertValidity();
+ break;
+ }
}
/**
@@ -114,7 +122,6 @@ public final class EIP extends IntentService {
gateway = gatewaysManager.select();
if (gateway != null && gateway.getProfile() != null) {
- mReceiver = VpnFragment.getReceiver();
launchActiveGateway();
tellToReceiver(EIP_ACTION_START, Activity.RESULT_OK);
} else
@@ -134,7 +141,6 @@ public final class EIP extends IntentService {
gateway = gatewaysManager.select();
if (gateway != null && gateway.getProfile() != null) {
- //mReceiver = VpnFragment.getReceiver();
Log.d(TAG, "startAlwaysOnEIP eip launch avtive gateway vpn");
launchActiveGateway();
} else {
@@ -147,7 +153,7 @@ public final class EIP extends IntentService {
* VpnService is started properly.
*/
private void earlyRoutes() {
- Intent voidVpnLauncher = new Intent(context, VoidVpnLauncher.class);
+ Intent voidVpnLauncher = new Intent(getApplicationContext(), VoidVpnLauncher.class);
voidVpnLauncher.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(voidVpnLauncher);
}
@@ -216,7 +222,7 @@ public final class EIP extends IntentService {
private void gatewaysFromPreferences() {
String gatewaysString = preferences.getString(Gateway.TAG, "");
- gatewaysManager = new GatewaysManager(context, preferences);
+ gatewaysManager = new GatewaysManager(this, preferences);
gatewaysManager.addFromString(gatewaysString);
preferences.edit().remove(Gateway.TAG).apply();
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
index ddf152d2..0da74872 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
@@ -16,13 +16,15 @@
*/
package se.leap.bitmaskclient.eip;
-import android.content.*;
+import android.content.Context;
import android.os.AsyncTask;
import android.support.annotation.VisibleForTesting;
-import java.util.*;
+import java.util.Observable;
-import de.blinkt.openvpn.core.*;
+import de.blinkt.openvpn.core.ConnectionStatus;
+import de.blinkt.openvpn.core.LogItem;
+import de.blinkt.openvpn.core.VpnStatus;
/**
* EipStatus is a Singleton that represents a reduced set of a vpn's ConnectionStatus.
@@ -31,7 +33,7 @@ import de.blinkt.openvpn.core.*;
*/
public class EipStatus extends Observable implements VpnStatus.StateListener {
public static String TAG = EipStatus.class.getSimpleName();
- private static EipStatus current_status;
+ private static EipStatus currentStatus;
public enum EipLevel {
CONNECTING,
DISCONNECTING,
@@ -42,23 +44,23 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
/**
- * vpn_level holds the connection status of the openvpn vpn and the traffic blocking
+ * vpnLevel holds the connection status of the openvpn vpn and the traffic blocking
* void vpn. LEVEL_BLOCKING is set when the latter vpn is up. All other states are set by
* openvpn.
*/
- private ConnectionStatus vpn_level = ConnectionStatus.LEVEL_NOTCONNECTED;
- private static EipLevel current_eip_level = EipLevel.DISCONNECTED;
+ private ConnectionStatus vpnLevel = ConnectionStatus.LEVEL_NOTCONNECTED;
+ private static EipLevel currentEipLevel = EipLevel.DISCONNECTED;
- int last_error_line = 0;
- private String state, log_message;
- private int localized_res_id;
+ private int lastErrorLine = 0;
+ private String state, logMessage;
+ private int localizedResId;
public static EipStatus getInstance() {
- if (current_status == null) {
- current_status = new EipStatus();
- VpnStatus.addStateListener(current_status);
+ if (currentStatus == null) {
+ currentStatus = new EipStatus();
+ VpnStatus.addStateListener(currentStatus);
}
- return current_status;
+ return currentStatus;
}
private EipStatus() {
@@ -66,16 +68,16 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
@Override
public void updateState(final String state, final String logmessage, final int localizedResId, final ConnectionStatus level) {
- ConnectionStatus tmp = current_status.getLevel();
- current_status = getInstance();
- current_status.setState(state);
- current_status.setLogMessage(logmessage);
- current_status.setLocalizedResId(localizedResId);
- current_status.setLevel(level);
- current_status.setEipLevel(level);
- if (tmp != current_status.getLevel()) {
- current_status.setChanged();
- current_status.notifyObservers();
+ ConnectionStatus tmp = currentStatus.getLevel();
+ currentStatus = getInstance();
+ currentStatus.setState(state);
+ currentStatus.setLogMessage(logmessage);
+ currentStatus.setLocalizedResId(localizedResId);
+ currentStatus.setLevel(level);
+ currentStatus.setEipLevel(level);
+ if (tmp != currentStatus.getLevel()) {
+ currentStatus.setChanged();
+ currentStatus.notifyObservers();
}
}
@@ -87,7 +89,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
private void setEipLevel(ConnectionStatus level) {
switch (level) {
case LEVEL_CONNECTED:
- current_eip_level = EipLevel.CONNECTED;
+ currentEipLevel = EipLevel.CONNECTED;
break;
case LEVEL_VPNPAUSED:
throw new IllegalStateException("Ics-Openvpn's VPNPAUSED state is not supported by Bitmask");
@@ -95,25 +97,25 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
case LEVEL_CONNECTING_NO_SERVER_REPLY_YET:
case LEVEL_WAITING_FOR_USER_INPUT:
case LEVEL_START:
- current_eip_level = EipLevel.CONNECTING;
+ currentEipLevel = EipLevel.CONNECTING;
break;
case LEVEL_AUTH_FAILED:
case LEVEL_NOTCONNECTED:
- current_eip_level = EipLevel.DISCONNECTED;
+ currentEipLevel = EipLevel.DISCONNECTED;
break;
case LEVEL_NONETWORK:
case LEVEL_BLOCKING:
setEipLevelWithDelay(level);
break;
case UNKNOWN_LEVEL:
- current_eip_level = EipLevel.UNKNOWN; //??
+ currentEipLevel = EipLevel.UNKNOWN; //??
break;
}
}
@VisibleForTesting
EipLevel getEipLevel() {
- return current_eip_level;
+ return currentEipLevel;
}
/**
@@ -123,7 +125,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
* @param futureLevel
*/
private void setEipLevelWithDelay(ConnectionStatus futureLevel) {
- new DelayTask(current_status.getLevel(), futureLevel).execute();
+ new DelayTask(currentStatus.getLevel(), futureLevel).execute();
}
private static class DelayTask extends AsyncTask<Void, Void, Void> {
@@ -131,7 +133,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
private final ConnectionStatus currentLevel;
private final ConnectionStatus futureLevel;
- public DelayTask(ConnectionStatus currentLevel, ConnectionStatus futureLevel) {
+ DelayTask(ConnectionStatus currentLevel, ConnectionStatus futureLevel) {
this.currentLevel = currentLevel;
this.futureLevel = futureLevel;
}
@@ -144,38 +146,38 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
return null;
}
- protected void onPostExecute(Void result) {;
- if (currentLevel == current_status.getLevel()) {
+ protected void onPostExecute(Void result) {
+ if (currentLevel == currentStatus.getLevel()) {
switch (futureLevel) {
case LEVEL_NONETWORK:
- current_eip_level = EipLevel.DISCONNECTED;
+ currentEipLevel = EipLevel.DISCONNECTED;
break;
case LEVEL_BLOCKING:
- current_eip_level = EipLevel.BLOCKING;
+ currentEipLevel = EipLevel.BLOCKING;
break;
default:
break;
}
- current_status.setChanged();
- current_status.notifyObservers();
+ currentStatus.setChanged();
+ currentStatus.notifyObservers();
}
}
}
public boolean isConnecting() {
- return current_eip_level == EipLevel.CONNECTING;
+ return currentEipLevel == EipLevel.CONNECTING;
}
public boolean isConnected() {
- return current_eip_level == EipLevel.CONNECTED;
+ return currentEipLevel == EipLevel.CONNECTED;
}
/**
- * @return true if current_eip_level is for at least a second {@link EipLevel#BLOCKING}.
+ * @return true if currentEipLevel is for at least a second {@link EipLevel#BLOCKING}.
* See {@link #setEipLevelWithDelay(ConnectionStatus)}.
*/
public boolean isBlocking() {
- return current_eip_level == EipLevel.BLOCKING;
+ return currentEipLevel == EipLevel.BLOCKING;
}
/**
@@ -183,20 +185,20 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
* @return true immediately after traffic blocking VoidVpn was established.
*/
public boolean isBlockingVpnEstablished() {
- return vpn_level == ConnectionStatus.LEVEL_BLOCKING;
+ return vpnLevel == ConnectionStatus.LEVEL_BLOCKING;
}
public boolean isDisconnected() {
- return current_eip_level == EipLevel.DISCONNECTED;
+ return currentEipLevel == EipLevel.DISCONNECTED;
}
/**
* ics-openvpn's paused state is not implemented yet
- * @return
+ * @return true if vpn is paused false if not
*/
@Deprecated
public boolean isPaused() {
- return vpn_level == ConnectionStatus.LEVEL_VPNPAUSED;
+ return vpnLevel == ConnectionStatus.LEVEL_VPNPAUSED;
}
public String getState() {
@@ -204,15 +206,15 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
public String getLogMessage() {
- return log_message;
+ return logMessage;
}
- public int getLocalizedResId() {
- return localized_res_id;
+ int getLocalizedResId() {
+ return localizedResId;
}
public ConnectionStatus getLevel() {
- return vpn_level;
+ return vpnLevel;
}
private void setState(String state) {
@@ -220,39 +222,40 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
private void setLogMessage(String log_message) {
- this.log_message = log_message;
+ this.logMessage = log_message;
}
private void setLocalizedResId(int localized_res_id) {
- this.localized_res_id = localized_res_id;
+ this.localizedResId = localized_res_id;
}
private void setLevel(ConnectionStatus level) {
- this.vpn_level = level;
+ this.vpnLevel = level;
}
public boolean errorInLast(int lines, Context context) {
return !lastError(lines, context).isEmpty();
}
- public String lastError(int lines, Context context) {
+ private String lastError(int lines, Context context) {
String error = "";
String[] error_keywords = {"error", "ERROR", "fatal", "FATAL"};
LogItem[] log = VpnStatus.getlogbuffer();
- if(log.length < last_error_line)
- last_error_line = 0;
- String message = "";
+ if(log.length < lastErrorLine)
+ lastErrorLine = 0;
+ String message;
for (int i = 1; i <= lines && log.length > i; i++) {
int line = log.length - i;
- LogItem log_item = log[line];
- message = log_item.getString(context);
- for (int j = 0; j < error_keywords.length; j++)
- if (message.contains(error_keywords[j]) && line > last_error_line) {
+ LogItem logItem = log[line];
+ message = logItem.getString(context);
+ for (String errorKeyword: error_keywords) {
+ if (message.contains(errorKeyword) && line > lastErrorLine) {
error = message;
- last_error_line = line;
+ lastErrorLine = line;
}
+ }
}
return error;
@@ -260,7 +263,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
@Override
public String toString() {
- return "State: " + state + " Level: " + vpn_level.toString();
+ return "State: " + state + " Level: " + vpnLevel.toString();
}
}
diff --git a/app/src/main/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png b/app/src/main/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png
new file mode 100644
index 00000000..7e0a71cd
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png
new file mode 100644
index 00000000..d86d598e
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_archive_grey600_24dp.png b/app/src/main/res/drawable-hdpi/ic_archive_grey600_24dp.png
new file mode 100644
index 00000000..2948d5fc
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_archive_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_archive_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_archive_white_24dp.png
new file mode 100644
index 00000000..a9b0b240
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_archive_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png
new file mode 100644
index 00000000..03b1aac4
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_menu_archive.png b/app/src/main/res/drawable-hdpi/ic_menu_archive.png
new file mode 100644
index 00000000..e2d9bc1a
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_menu_archive.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png b/app/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png
new file mode 100644
index 00000000..0dd8865f
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_menu_log.png b/app/src/main/res/drawable-hdpi/ic_menu_log.png
new file mode 100644
index 00000000..474ec16e
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_menu_log.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_receipt_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_receipt_white_24dp.png
new file mode 100644
index 00000000..bf781280
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_receipt_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png
new file mode 100644
index 00000000..55a429b6
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_sort_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_warning_black_36dp.png b/app/src/main/res/drawable-hdpi/ic_warning_black_36dp.png
new file mode 100644
index 00000000..d1cef177
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/ic_warning_black_36dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/vpn_item_settings.png b/app/src/main/res/drawable-hdpi/vpn_item_settings.png
new file mode 100644
index 00000000..47b4ba23
--- /dev/null
+++ b/app/src/main/res/drawable-hdpi/vpn_item_settings.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png b/app/src/main/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png
new file mode 100644
index 00000000..b5017d2a
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png
new file mode 100644
index 00000000..6a1c32aa
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_archive_grey600_24dp.png b/app/src/main/res/drawable-mdpi/ic_archive_grey600_24dp.png
new file mode 100644
index 00000000..a42d774c
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_archive_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_archive_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_archive_white_24dp.png
new file mode 100644
index 00000000..8e4a0426
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_archive_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png
new file mode 100644
index 00000000..6aa238c5
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_menu_archive.png b/app/src/main/res/drawable-mdpi/ic_menu_archive.png
new file mode 100644
index 00000000..49ac569d
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_menu_archive.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png b/app/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png
new file mode 100644
index 00000000..74cb920f
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_menu_log.png b/app/src/main/res/drawable-mdpi/ic_menu_log.png
new file mode 100644
index 00000000..c8d60977
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_menu_log.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_receipt_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_receipt_white_24dp.png
new file mode 100644
index 00000000..565c67ff
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_receipt_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_sort_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_sort_white_24dp.png
new file mode 100644
index 00000000..3d84a444
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_sort_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/ic_warning_black_36dp.png b/app/src/main/res/drawable-mdpi/ic_warning_black_36dp.png
new file mode 100644
index 00000000..52273c3e
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/ic_warning_black_36dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-mdpi/vpn_item_settings.png b/app/src/main/res/drawable-mdpi/vpn_item_settings.png
new file mode 100644
index 00000000..79281042
--- /dev/null
+++ b/app/src/main/res/drawable-mdpi/vpn_item_settings.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png b/app/src/main/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png
new file mode 100644
index 00000000..b9a106fd
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png
new file mode 100644
index 00000000..0399d60a
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_archive_grey600_24dp.png b/app/src/main/res/drawable-xhdpi/ic_archive_grey600_24dp.png
new file mode 100644
index 00000000..6725175d
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_archive_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_archive_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_archive_white_24dp.png
new file mode 100644
index 00000000..08228d1f
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_archive_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png
new file mode 100644
index 00000000..04a0cc94
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_archive.png b/app/src/main/res/drawable-xhdpi/ic_menu_archive.png
new file mode 100644
index 00000000..b1be9d5b
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_menu_archive.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png b/app/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png
new file mode 100644
index 00000000..364b1692
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_log.png b/app/src/main/res/drawable-xhdpi/ic_menu_log.png
new file mode 100644
index 00000000..29c1faed
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_menu_log.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_receipt_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_receipt_white_24dp.png
new file mode 100644
index 00000000..66dafa4f
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_receipt_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png
new file mode 100644
index 00000000..6d4af1bc
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_sort_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_warning_black_36dp.png b/app/src/main/res/drawable-xhdpi/ic_warning_black_36dp.png
new file mode 100644
index 00000000..e1d6f7ac
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/ic_warning_black_36dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/vpn_item_settings.png b/app/src/main/res/drawable-xhdpi/vpn_item_settings.png
new file mode 100644
index 00000000..a057db8b
--- /dev/null
+++ b/app/src/main/res/drawable-xhdpi/vpn_item_settings.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png
new file mode 100644
index 00000000..d13b5195
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png
new file mode 100644
index 00000000..7ae1b4a1
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_archive_grey600_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_archive_grey600_24dp.png
new file mode 100644
index 00000000..25cfc91a
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_archive_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png
new file mode 100644
index 00000000..aa186ce5
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png
new file mode 100644
index 00000000..5fc17a4d
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png b/app/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png
new file mode 100644
index 00000000..91043c9d
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_log.png b/app/src/main/res/drawable-xxhdpi/ic_menu_log.png
new file mode 100644
index 00000000..d91c632b
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_menu_log.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_receipt_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_receipt_white_24dp.png
new file mode 100644
index 00000000..2161c9a5
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_receipt_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png
new file mode 100644
index 00000000..b8ef1050
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_sort_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_warning_black_36dp.png b/app/src/main/res/drawable-xxhdpi/ic_warning_black_36dp.png
new file mode 100644
index 00000000..2aab2278
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/ic_warning_black_36dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png
new file mode 100644
index 00000000..ae11fb25
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png
new file mode 100644
index 00000000..1d436703
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png
new file mode 100644
index 00000000..58d38997
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png
new file mode 100644
index 00000000..9d538ff4
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
new file mode 100644
index 00000000..557c64f7
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_receipt_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_receipt_white_24dp.png
new file mode 100644
index 00000000..8cac119c
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_receipt_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_sort_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_sort_white_24dp.png
new file mode 100644
index 00000000..4796c33b
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_sort_white_24dp.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_warning_black_36dp.png b/app/src/main/res/drawable-xxxhdpi/ic_warning_black_36dp.png
new file mode 100644
index 00000000..58999574
--- /dev/null
+++ b/app/src/main/res/drawable-xxxhdpi/ic_warning_black_36dp.png
Binary files differ
diff --git a/app/src/main/res/drawable/black_circle.xml b/app/src/main/res/drawable/black_circle.xml
new file mode 100644
index 00000000..533652d6
--- /dev/null
+++ b/app/src/main/res/drawable/black_circle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+<item>
+ <shape android:shape="oval">
+ <solid android:color="@color/black800"/>
+ <size android:width="250dp" android:height="250dp"/>
+ </shape>
+</item>
+</selector> \ No newline at end of file
diff --git a/app/src/main/res/drawable/vpn_connected.xml b/app/src/main/res/drawable/vpn_connected.xml
new file mode 100644
index 00000000..ea4d61a2
--- /dev/null
+++ b/app/src/main/res/drawable/vpn_connected.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+android:width="48dp"
+android:height="48dp"
+android:viewportWidth="48"
+android:viewportHeight="48">
+
+<path
+ android:fillColor="#ffffff"
+ android:strokeWidth="1"
+ android:pathData="M 12.187013,12.3125 C 5.4647724,12.3125 0,17.760254 0,24.5 c 0,6.739746
+5.4647724,12.21875 12.187013,12.21875 5.305097,0 9.803352,-3.408824
+11.47013,-8.15625 l 8.509091,-0.09375 1.745454,-2.09375 1.153247,-0.03125
+1.828239,2.182795 1.234013,-0.03125 2.049436,-2.307795 1.122078,0
+1.714286,2.21875 2.836364,0 L 48,24.4375 l -2.774026,-4.09375 -21.6,0 C
+21.928439,15.65398 17.450952,12.3125 12.187013,12.3125 z m -4.8311688,8.90625 c
+1.8370556,0 3.3350648,1.50191 3.3350648,3.34375 0,1.84184 -1.4980092,3.3125
+-3.3350648,3.3125 -1.8370556,0 -3.335065,-1.47066 -3.335065,-3.3125 0,-1.84184
+1.4980094,-3.34375 3.335065,-3.34375 z" />
+</vector> \ No newline at end of file
diff --git a/app/src/main/res/drawable/vpn_connecting.xml b/app/src/main/res/drawable/vpn_connecting.xml
new file mode 100644
index 00000000..16c079c4
--- /dev/null
+++ b/app/src/main/res/drawable/vpn_connecting.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#ffffff"
+ android:strokeWidth="1"
+ android:pathData="M12.1875,12.3125 C5.46526,12.3125,0,17.7603,0,24.5
+C0,31.2397,5.46526,36.7188,12.1875,36.7188
+C17.4926,36.7188,21.9895,33.3099,23.6563,28.5625 L32.1563,28.4688
+L33.9063,26.375 L35.0625,26.3438 L36.9063,28.5313 L38.125,28.5 L40.1875,26.1875
+L41.3125,26.1875 L43,28.4063 L45.8438,28.4063 L48,24.4375 L45.2188,20.3438
+L23.625,20.3438 C21.9275,15.654,17.4514,12.3125,12.1875,12.3125 Z
+M12.2188,15.6875 C17.0994,15.6875,21.0313,19.6506,21.0313,24.5313
+C21.0313,29.4119,17.0994,33.375,12.2188,33.375
+C7.33805,33.375,3.375,29.4119,3.375,24.5313
+C3.375,19.6506,7.33805,15.6875,12.2188,15.6875 Z" />
+ <path
+ android:strokeColor="#ffffff"
+ android:strokeWidth="2.50000000000000000"
+ android:pathData="M12.178,17.8729 L12.1779,24.6356 L8.61859,28.1949" />
+</vector> \ No newline at end of file
diff --git a/app/src/main/res/drawable/vpn_disconnected.xml b/app/src/main/res/drawable/vpn_disconnected.xml
new file mode 100644
index 00000000..d6cf067b
--- /dev/null
+++ b/app/src/main/res/drawable/vpn_disconnected.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48">
+
+ <path
+ android:fillColor="#ffffff"
+ android:strokeWidth="1"
+ android:pathData="M13.9636,12.4377 L28.7376,28.5002 L32.1662,28.4689 L33.9117,26.3752
+L35.0649,26.3439 L36.9039,28.5314 L38.1195,28.5002 L40.1766,26.1877
+L41.2987,26.1877 L43.013,28.4064 L45.8494,28.4064 L48,24.4377 L45.226,20.344
+L23.626,20.344 C22.1234,16.1928,18.44,13.0938,13.9637,12.4378 Z M8.47792,12.9065
+C3.56807,14.4767,0,19.059,0,24.5002 C0,31.24,5.46477,36.719,12.187,36.719
+C17.2792,36.719,21.6241,33.5759,23.439,29.1253 L8.47792,12.9065 Z
+M7.35584,21.219 C9.1929,21.219,10.6909,22.7209,10.6909,24.5628
+C10.6909,26.4046,9.19289,27.8753,7.35584,27.8753
+C5.51878,27.8753,4.02077,26.4046,4.02077,24.5628
+C4.02077,22.721,5.51878,21.219,7.35583,21.219 Z" />
+ <group android:name="rotationGroup"
+ android:rotation="47.263656">
+ <path
+ android:fillColor="#ffffff"
+ android:strokeWidth="1"
+ android:pathData="M9.50852,-4.62741 L57.4577,-4.62741 L57.4577,-0.305379 L9.50852,-0.305379 L9.50852,-4.62741 Z" />
+ </group>
+</vector> \ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp-port/f_log.xml b/app/src/main/res/layout-sw600dp-port/f_log.xml
index da46450c..4ee64811 100644
--- a/app/src/main/res/layout-sw600dp-port/f_log.xml
+++ b/app/src/main/res/layout-sw600dp-port/f_log.xml
@@ -5,9 +5,30 @@
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:padding="@dimen/activity_margin">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:orientation="vertical"
+ android:padding="@dimen/activity_margin"
+ android:id="@+id/log_layout">
+
+ <LinearLayout
+ android:background="@drawable/white_rect"
+ android:elevation="1dp"
+ android:minWidth="300dp"
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent">
+
+ <include layout="@layout/log_silders"/>
+
+ <include layout="@layout/vpnstatus"/>
+ </LinearLayout>
+
+ <ListView
+ android:id="@android:id/list"
+ android:transcriptMode="normal"
+ android:layout_width="fill_parent"
+ android:layout_height="match_parent"/>
</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp/f_log.xml b/app/src/main/res/layout-sw600dp/f_log.xml
index 9ad30208..ec66af07 100644
--- a/app/src/main/res/layout-sw600dp/f_log.xml
+++ b/app/src/main/res/layout-sw600dp/f_log.xml
@@ -5,12 +5,12 @@
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
- android:padding="20dp" >
-
+ android:padding="20dp"
+ android:id="@+id/log_layout"
+ >
<LinearLayout
android:background="@drawable/white_rect"
diff --git a/app/src/main/res/layout-sw600dp/log_fragment.xml b/app/src/main/res/layout-sw600dp/log_fragment.xml
index 26f63df4..089bfb9d 100644
--- a/app/src/main/res/layout-sw600dp/log_fragment.xml
+++ b/app/src/main/res/layout-sw600dp/log_fragment.xml
@@ -17,8 +17,9 @@
android:background="@drawable/white_rect"
android:elevation="1dp"
android:minWidth="300dp"
+
android:orientation="vertical"
- android:layout_width="wrap_content"
+ android:layout_width="400dp"
android:layout_height="match_parent">
<include layout="@layout/log_silders"/>
@@ -27,6 +28,8 @@
</LinearLayout>
<ListView
+ android:minWidth="400dp"
+ android:layout_weight="4"
android:id="@android:id/list"
android:transcriptMode="normal"
android:layout_width="fill_parent"
diff --git a/app/src/main/res/layout-xlarge/about.xml b/app/src/main/res/layout-xlarge/about.xml
index 227da8b0..fdf823a9 100644
--- a/app/src/main/res/layout-xlarge/about.xml
+++ b/app/src/main/res/layout-xlarge/about.xml
@@ -1,6 +1,6 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/dashboardLayout"
+ android:id="@+id/aboutLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
diff --git a/app/src/main/res/layout-xlarge/configuration_wizard_activity.xml b/app/src/main/res/layout-xlarge/configuration_wizard_activity.xml
index ba2b7ce4..df82d5de 100644
--- a/app/src/main/res/layout-xlarge/configuration_wizard_activity.xml
+++ b/app/src/main/res/layout-xlarge/configuration_wizard_activity.xml
@@ -2,10 +2,10 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/configuration_wizard_layout"
- style="@style/BitmaskActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ConfigurationWizard">
+ tools:context=".ProviderListActivity"
+ style="@style/BitmaskActivity" >
<android.support.v7.widget.AppCompatImageView
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout-xlarge/eip_service_fragment.xml b/app/src/main/res/layout-xlarge/eip_service_fragment.xml
index 28ac3b9a..c99d83bc 100644
--- a/app/src/main/res/layout-xlarge/eip_service_fragment.xml
+++ b/app/src/main/res/layout-xlarge/eip_service_fragment.xml
@@ -4,7 +4,9 @@
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
- android:layout_marginStart="20dp">
+ android:layout_marginStart="20dp"
+ android:id="@+id/eipServiceFragment"
+ >
<TextView
android:id="@+id/eipLabel"
diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml
index 62e858cb..e26629ab 100644
--- a/app/src/main/res/layout/about.xml
+++ b/app/src/main/res/layout/about.xml
@@ -1,6 +1,6 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/dashboardLayout"
+ android:id="@+id/aboutLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
diff --git a/app/src/main/res/layout/configuration_wizard_activity.xml b/app/src/main/res/layout/configuration_wizard_activity.xml
index 277a248d..005913a4 100644
--- a/app/src/main/res/layout/configuration_wizard_activity.xml
+++ b/app/src/main/res/layout/configuration_wizard_activity.xml
@@ -3,7 +3,7 @@
android:id="@+id/configuration_wizard_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ConfigurationWizard"
+ tools:context=".ProviderListActivity"
android:padding="@dimen/stdpadding"
style="@style/BitmaskActivity" >
diff --git a/app/src/main/res/layout/drawer_main.xml b/app/src/main/res/layout/drawer_main.xml
index 20d826b3..41498617 100644
--- a/app/src/main/res/layout/drawer_main.xml
+++ b/app/src/main/res/layout/drawer_main.xml
@@ -24,12 +24,7 @@
android:id="@+id/mask"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_centerInParent="true"
- android:layout_centerVertical="true"
app:srcCompat="@drawable/mask" />
-
-
</FrameLayout>
<RelativeLayout
diff --git a/app/src/main/res/layout/eip_service_fragment.xml b/app/src/main/res/layout/eip_service_fragment.xml
index cef01c18..497d2c0b 100644
--- a/app/src/main/res/layout/eip_service_fragment.xml
+++ b/app/src/main/res/layout/eip_service_fragment.xml
@@ -1,49 +1,152 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp">
+ android:layout_height="match_parent"
+ android:id="@+id/eipServiceFragment"
+ >
+
+ <android.support.constraint.Guideline
+ android:id="@+id/guideline_horizontal_top"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:orientation="horizontal"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintGuide_percent="0.3"
+ />
+
+ <android.support.constraint.Guideline
+ android:id="@+id/guideline_vertical_left"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintGuide_percent="0.3"
+ />
+
+
+ <android.support.constraint.Guideline
+ android:id="@+id/guideline_horizontal_bottom"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:orientation="horizontal"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintGuide_percent="0.7"
+ />
+
+ <android.support.constraint.Guideline
+ android:id="@+id/guideline_vertical_right"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintGuide_percent="0.7"
+ />
+
+ <android.support.v7.widget.AppCompatImageView
+ android:id="@+id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:scaleType="fitXY"
+ app:srcCompat="@drawable/ic_colorsquare" />
+
<TextView
android:id="@+id/eipLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_marginLeft="10dp"
- android:layout_marginStart="10dp"
- android:layout_marginTop="12dp"
- android:layout_marginBottom="12dp"
+ android:layout_marginEnd="@dimen/stdpadding"
+ android:layout_marginStart="@dimen/stdpadding"
+ android:layout_marginTop="@dimen/stdpadding"
+ android:layout_marginLeft="@dimen/stdpadding"
+ android:layout_marginRight="@dimen/stdpadding"
android:text="@string/eip_service_label"
- android:textAppearance="?android:attr/textAppearanceMedium" />
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+
+ <android.support.v7.widget.AppCompatImageView
+ android:id="@+id/cirle"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginBottom="@dimen/stdpadding"
+ android:layout_marginEnd="@dimen/stdpadding"
+ android:layout_marginStart="@dimen/stdpadding"
+ android:layout_marginTop="@dimen/stdpadding"
+ android:layout_marginLeft="@dimen/stdpadding"
+ android:layout_marginRight="@dimen/stdpadding"
+ app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_bottom"
+ app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
+ app:layout_constraintTop_toTopOf="@+id/guideline_horizontal_top"
+ app:layout_constraintVertical_bias="0.0"
+ app:srcCompat="@drawable/black_circle" />
+
+ <android.support.v7.widget.AppCompatImageView
+ android:id="@+id/key"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginBottom="@dimen/stdpadding"
+ android:layout_marginEnd="@dimen/stdpadding"
+ android:layout_marginStart="@dimen/stdpadding"
+ android:layout_marginTop="@dimen/stdpadding"
+ android:layout_marginLeft="@dimen/stdpadding"
+ android:layout_marginRight="@dimen/stdpadding"
+ app:layout_constraintBottom_toBottomOf="@+id/cirle"
+ app:layout_constraintEnd_toEndOf="@+id/cirle"
+ app:layout_constraintStart_toStartOf="@+id/cirle"
+ app:layout_constraintTop_toTopOf="@+id/cirle"
+ app:srcCompat="@drawable/vpn_connected" />
- <LinearLayout
+
+ <android.support.v7.widget.AppCompatButton
+ android:id="@+id/vpn_main_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_below="@+id/eipLabel"
- android:layout_centerInParent="true">
-
- <Button
- android:id="@+id/vpn_main_button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="12sp"
- />
-
- <se.leap.bitmaskclient.userstatus.FabButton
- android:id="@+id/vpn_status_image"
- android:layout_width="32dp"
- android:layout_height="32dp"
- android:layout_marginLeft="3dp"
- android:layout_marginStart="3dp"
- android:color="@android:color/holo_blue_dark"
- android:layout_gravity="center"
- android:visibility="visible"
- android:indeterminate="true"
- android:max="100"
- fbb_autoStart="true"
- fbb_progressColor="#ff170aff"
- fbb_progressWidthRatio="0.1"
- />
- </LinearLayout>
-</RelativeLayout>
+ android:layout_marginBottom="@dimen/stdpadding"
+ android:layout_marginEnd="@dimen/stdpadding"
+ android:layout_marginStart="@dimen/stdpadding"
+ android:layout_marginTop="@dimen/stdpadding"
+ android:layout_marginLeft="@dimen/stdpadding"
+ android:layout_marginRight="@dimen/stdpadding"
+ app:layout_constraintBottom_toBottomOf="@+id/background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ android:text="@string/vpn.button.turn.on"
+ style="@style/BitmaskButtonBlack"
+ />
+
+ <TextView
+ android:id="@+id/routed_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/stdpadding"
+ android:layout_marginStart="@dimen/stdpadding"
+ android:layout_marginTop="@dimen/stdpadding"
+ android:layout_marginLeft="@dimen/stdpadding"
+ android:layout_marginRight="@dimen/stdpadding"
+ android:text="@string/vpn_securely_routed"
+ android:visibility="visible"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/eipLabel" />
+
+ <TextView
+ android:id="@+id/vpn_route"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/stdpadding"
+ android:layout_marginStart="@dimen/stdpadding"
+ android:layout_marginLeft="@dimen/stdpadding"
+ android:layout_marginRight="@dimen/stdpadding"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/routed_text" />
+
+</android.support.constraint.ConstraintLayout>
diff --git a/app/src/main/res/layout/f_log.xml b/app/src/main/res/layout/f_log.xml
index 41c72d99..47a80e50 100644
--- a/app/src/main/res/layout/f_log.xml
+++ b/app/src/main/res/layout/f_log.xml
@@ -9,7 +9,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:padding="16dp">
+ android:padding="16dp"
+ android:id="@+id/log_layout"
+ >
<LinearLayout
android:elevation="1dp"
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index fa6a4bfa..56772b16 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -3,10 +3,8 @@
<string name="info">info</string>
<string name="show_connection_details">Mostra els detalls de conexió</string>
<string name="dns_server_info">Servidor DNS: %s</string>
- <string name="dns_domain_info">Domini DNS: %s</string>
<string name="routes_info">Rutes: %s</string>
<string name="routes_info6">Rutes IPv6: %s</string>
- <string name="bitmask_openvpn_log_file">Fitxer de registre de LEAP Android</string>
<string name="bitmask_log">Registre Bitmask</string>
</resources>
diff --git a/app/src/main/res/values-cs/plurals-icsopenvpn.xml b/app/src/main/res/values-cs/plurals-icsopenvpn.xml
index 70489fbc..be0f3cb1 100755
--- a/app/src/main/res/values-cs/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-cs/plurals-icsopenvpn.xml
@@ -1,3 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Zbývá jeden měsíc</item>
+ <item quantity="few">Zbývají %d měsíce</item>
+ <item quantity="other">Zbývá %d měsíců</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Zbývá jeden den</item>
+ <item quantity="few">Zbývají %d dny</item>
+ <item quantity="other">Zbývá %d dnů</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Zbývá jedna hodina</item>
+ <item quantity="few">Zbývají %d hodiny</item>
+ <item quantity="other">Zbývá %d hodin</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Zbývá jedna minuta</item>
+ <item quantity="few">Zbývají %d minuty</item>
+ <item quantity="other">Zbývá %d minut</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-cs/strings-icsopenvpn.xml b/app/src/main/res/values-cs/strings-icsopenvpn.xml
index eb039901..40feea2c 100755
--- a/app/src/main/res/values-cs/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-cs/strings-icsopenvpn.xml
@@ -44,12 +44,14 @@
<string name="duplicate_profile_name">Zadej prosím unikátní jméno profilu</string>
<string name="profilename">Jméno profilu</string>
<string name="no_keystore_cert_selected">Je třeba vybrat uživatelský certifikát</string>
+ <string name="no_ca_cert_selected">Je třeba vybrat certifikát</string>
<string name="no_error_found">Bez chyb</string>
<string name="config_error_found">Chyba v konfiguraci</string>
<string name="ipv4_format_error">Chyba při zpracování IPv4 adresy</string>
<string name="custom_route_format_error">Chyba při zpracování vlastního směrování</string>
<string name="pw_query_hint">(nechej prázdné pro dotazování, až bude potřeba)</string>
<string name="vpn_shortcut">OpenVPN zkratka</string>
+ <string name="vpn_launch_title">Připojování k VPN&#8230;</string>
<string name="shortcut_profile_notfound">Profil zvolený ve zkratce nenalezen</string>
<string name="random_host_prefix">Náhodný prefix klienta</string>
<string name="random_host_summary">Přidej 6 náhodných znaků před jméno klienta (hostname)</string>
@@ -163,6 +165,7 @@
<string name="private_key_password">Heslo k soukromému klíči</string>
<string name="password">Heslo</string>
<string name="file_icon">ikona souboru</string>
+ <string name="tls_authentication">TLS autentizace/šifrování</string>
<string name="generated_config">Vygenerované nastavení</string>
<string name="generalsettings">Nastavení</string>
<string name="owner_fix_summary">Pokusit se nastavit vlastníka /dev/tun zařízení. Na některých systémech s CM9 je toto potřeba pro zprovoznění VPNService API. Vyžaduje root zařízení.</string>
@@ -178,6 +181,7 @@
<string name="keychain_nocacert">Žádný CA certifikát nebyl získán z úložiště, autentikace pravděpodobně selže.</string>
<string name="show_log_summary">Zobrazit okno s logem při připojování. okno lze vždy otevřít z notifikace.</string>
<string name="show_log_window">Zobrazit okno s logem</string>
+ <string name="mobile_info">%10$s %9$s spuštěno na %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Chyba při podepisování klíčem %1$s: %2$s</string>
<string name="faq_system_dialogs">VPN varování při připojování oznamující o možnosti přesměrování veškerého provozu je vynuceno systémem, aby se zabránilo zneužití VPNService API.\nNotifikace (symbol s klíčem) je také vynucena systémem, aby signalizovala odchozí VPN spojení. Na některých systémech přehrává notifikace i zvuk.\nAndroid zavedl tyto dialogy pro tvoji osobní bezpečnost a ujistil se, že nejdou obejít. (Někdu to bohužel zahrnuje i zvuk notifikace.)</string>
<string name="faq_system_dialogs_title">Varování při připojení a zvuková notifikace</string>
@@ -200,6 +204,8 @@
<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="onbootrestartsummary">OpenVPN se automaticky připojí k vybrané VPN po startu systému. Prosím věnujte pozornost upozornění ve FAQ pro verzi Android &lt; 5.0.</string>
+ <string name="onbootrestart">Připojit po spuštění systému</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>
@@ -246,6 +252,7 @@
<string name="state_tcp_connect">Připojuji (TCP)</string>
<string name="state_auth_failed">Přihlášení nebylo úspěšné</string>
<string name="state_nonetwork">Čekání na použitelnou síť</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Nepřipojeno</string>
<string name="start_vpn_title">Připojování k VPN %s</string>
<string name="start_vpn_ticker">Připojování k VPN %s</string>
@@ -316,6 +323,7 @@
<string name="import_log">Import logu:</string>
<string name="ip_looks_like_subnet">Vpn topologie \"%3$s\" soecifikována, ale ifconfig %1$s %2$s vypadá spíše jako IP adresa se síťovou maskou. Předpokládám \"podsíťovou\" topologii.</string>
<string name="mssfix_invalid_value">mssfix hodnota musí být celé číslo mezi 0 a 9000</string>
+ <string name="mtu_invalid_value">MTU hodnota musí být celé číslo mezi 64 a 9000</string>
<string name="mssfix_value_dialog">Oznámit TCP sezením běžícím skrze tunel, že mají limitovat velikost odesílaných paketů tak, aby poté, co je OpenVPN zabalí, byla výsledná velikost UDP paketu, které OpenVPN posílá menší než tento počet bytů. (výchozí je 1450)</string>
<string name="mssfix_checkbox">Přepsat hodnotu MSS pro TCP obsah</string>
<string name="mssfix_dialogtitle">Nastavit MSS pro TCP obsah</string>
@@ -347,6 +355,7 @@
<string name="ab_only_cidr">Android podporuje ve VPN síti podporuje pouze CIDR trasy. Protože ne-CIDR trasy nejsou téměř nikdy používány, OpenVPN pro Android použije /32 pro trasy, které nejsou CIDR a zobrazí varování.</string>
<string name="ab_tethering_44">Sdílení připojení funguje během aktivního VPN spojení. Sdílené připojení NEpoužije VPN.</string>
<string name="ab_kitkat_mss">Dřívější KitKat verze nastavovaly špatnou hodnotu MSS na TCP spojení (#61948). OpenVPN automaticky zapne mssfix možnost pro obejití chyby.</string>
+ <string name="ab_lollipop_reinstall">Aplikace VPN mohou přestat fungovat po odinstalování a reinstalaci. Podrobnosti najdete v #80074</string>
<string name="ab_secondary_users">VPN vůbec nefunguje pro vedlejší uživatele.</string>
<string name="ab_only_cidr_title">Ne-CIDR trasy</string>
<string name="ab_proxy_title">Proxy chování pro VPN</string>
@@ -356,6 +365,66 @@
<string name="ab_not_route_to_vpn_title">Trasa k nastavené IP adrese</string>
<string name="ab_kitkat_mss_title">Špatná hodnota MSS pro VPN spojení</string>
<string name="ab_secondary_users_title">Vedlejší uživaté tabletu</string>
+ <string name="custom_connection_options_warng">Zadejte vlastní specifické možnosti k připojení. Používejte opatrně</string>
<string name="custom_connection_options">Vlastní možnosti</string>
<string name="remove_connection_entry">Odstranit položku připojení</string>
+ <string name="ab_kitkat_reconnect_title">Náhodné odpojování od mobilní sítě</string>
+ <string name="ab_vpn_reachability_44_title">Vzdálená síť není dostupná</string>
+ <string name="ab_persist_tun_title">Setrvat v režimu tun</string>
+ <string name="version_and_later">%s a později</string>
+ <string name="tls_cipher_alert_title">Připojení selhalo SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure</string>
+ <string name="message_no_user_edit">Tento profil byl přidán z externí aplikace (%s) a byl označen jako uživatelsky nezměnitelný.</string>
+ <string name="crl_file">Seznam odvolaných certifikátů</string>
+ <string name="service_restarted">Restartování služby OpenVPN (aplikace pravděpodobně havarovala, nebo byla ukončena kvůli nedostatku paměti)</string>
+ <string name="import_config_error">Importování konfigurace způsobilo chybu, nelze jej uložit</string>
+ <string name="Search">Hledat</string>
+ <string name="lastdumpdate">(Poslední výpis je %1$d: %2$dh starý (%3$s))</string>
+ <string name="clear_log_on_connect">Vymazat log při novém připojení</string>
+ <string name="connect_timeout">Časový limit připojení</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Povoleno</string>
+ <string name="pushpeerinfo">Push Peer info</string>
+ <string name="pushpeerinfosummary">Odeslat na server další informace, např. verzi SSL a verzi systému Android</string>
+ <string name="pw_request_dialog_title">Potřebujete %1$s</string>
+ <string name="pw_request_dialog_prompt">Prosím zadejte heslo pro profil %1$s</string>
+ <string name="menu_use_inline_data">Použít vložené údaje</string>
+ <string name="export_config_chooser_title">Exportovat konfigurační soubor</string>
+ <string name="missing_tlsauth">soubor tls-auth chybí</string>
+ <string name="missing_certificates">Chybí uživatelský certifikát nebo soubor uživatelského klíče certifikátu</string>
+ <string name="missing_ca_certificate">Chybí certifikát CA</string>
+ <string name="crl_title">Seznam revokovaných certifikátů (volitelné)</string>
+ <string name="reread_log">Znovu načíst (%d) logy z mezipaměti</string>
+ <string name="samsung_broken_title">Samsung telefony</string>
+ <string name="novpn_selected">Nebyla vybrána žádná VPN.</string>
+ <string name="defaultvpn">Výchozí VPN</string>
+ <string name="vpnselected">Aktuálně vybraná VPN: „%s“</string>
+ <string name="reconnect">Znovu připojit</string>
+ <string name="qs_title">Přepnout VPN</string>
+ <string name="qs_connect">Připojit k %s</string>
+ <string name="qs_disconnect">Odpojit od %s</string>
+ <string name="connectretrymaxtitle">Maximální doba mezi pokusy o připojení</string>
+ <string name="state_waitconnectretry">Čekat %ss sekund mezi pokusem o připojení</string>
+ <string name="management_socket_closed">Připojení k OpenVPN zavřeno (%s)</string>
+ <string name="change_sorting">Změnit řazení</string>
+ <string name="sort">Třídit</string>
+ <string name="sorted_lru">Profily seřazené podle naposledy použitých</string>
+ <string name="sorted_az">Profily řazené podle názvu</string>
+ <string name="deprecated_tls_remote">Konfigurace využívá možnost tls-remote, která je nyní ve 2.3 zastaralá a ve 2.4 bude odstraněna</string>
+ <string name="auth_failed_behaviour">Chování při AUTH_FAILED</string>
+ <string name="graph">Graf</string>
+ <string name="use_logarithmic_scale">Použít logaritmickou stupnici</string>
+ <string name="notenoughdata">Nedostatek dat</string>
+ <string name="avghour">Průměr za hodinu</string>
+ <string name="avgmin">Průměr za minutu</string>
+ <string name="last5minutes">Posledních 5 minut</string>
+ <string name="data_in">Vstup</string>
+ <string name="data_out">Výstup</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-da/plurals-icsopenvpn.xml b/app/src/main/res/values-da/plurals-icsopenvpn.xml
new file mode 100755
index 00000000..3fb9d049
--- /dev/null
+++ b/app/src/main/res/values-da/plurals-icsopenvpn.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">En måned tilbage</item>
+ <item quantity="other">%d måneder tilbage</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">En dag tilbage</item>
+ <item quantity="other">%d dage tilbage</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">En time tilbage</item>
+ <item quantity="other">%d timer tilbage</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Et minut tilbage</item>
+ <item quantity="other">%d minutter tilbage</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-da/strings-icsopenvpn.xml b/app/src/main/res/values-da/strings-icsopenvpn.xml
new file mode 100755
index 00000000..2635c79e
--- /dev/null
+++ b/app/src/main/res/values-da/strings-icsopenvpn.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ ~ Copyright (c) 2012-2016 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+<resources>
+
+ <string name="address">Server Adresse:</string>
+ <string name="port">Server Port:</string>
+ <string name="location">Placering</string>
+ <string name="cant_read_folder">Kan ikke læse mappen</string>
+ <string name="select">Vælg</string>
+ <string name="cancel">Annuller</string>
+ <string name="no_data">Ingen data</string>
+ <string name="useLZO">LZO komprimering</string>
+ <string name="client_no_certificate">Intet certifikat</string>
+ <string name="client_certificate_title">Klientcertifikat</string>
+ <string name="client_key_title">Klientcertifikat nøgle</string>
+ <string name="client_pkcs12_title">PKCS12 fil</string>
+ <string name="ca_title">CA Certifikat</string>
+ <string name="no_certificate">Du skal vælge et certifikat</string>
+ <string name="copyright_guicode">Kildekode og fejl tracker findes på http://code.google.com/p/ics-openvpn/</string>
+ <string name="copyright_others">Dette program bruger følgende komponenter: se kildekoden for alle detaljer om licenserne</string>
+ <string name="about">Om</string>
+ <string name="vpn_list_title">Profiler</string>
+ <string name="vpn_type">Type</string>
+ <string name="pkcs12pwquery">PKCS12 kodeord</string>
+ <string name="file_select">Vælg&#8230;</string>
+ <string name="file_nothing_selected">Du skal vælge en fil</string>
+ <string name="useTLSAuth">Brug TLS-godkendelse</string>
+ <string name="tls_direction">TLS retning</string>
+ <string name="ipv6_dialog_tile">Indtast IPv6-adresse /netmaske i CIDR format (fx 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Indtast IPv4-adresse/netmaske i CIDR format (f.eks 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4-adresse</string>
+ <string name="ipv6_address">IPv6 adresse</string>
+ <string name="custom_option_warning">Angiv brugerdefinerede OpenVPN indstillinger. Benyt med forsigtighed. Bemærk også, at mange af tun relateret OpenVPN indstillinger ikke kan understøttes af VPNSettings. Hvis du syntes en vigtig indstilling mangler, så kontakt os</string>
+ <string name="auth_username">Brugernavn</string>
+ <string name="auth_pwquery">Kodeord</string>
+ <string name="static_keys_info">For statisk konfiguration vil TLS autentifikations nøglerne blive brugt som statiske nøgler</string>
+ <string name="configure_the_vpn">Konfigurer VPN</string>
+ <string name="menu_add_profile">Tilføj profil</string>
+ <string name="add_profile_name_prompt">Indtast et navn, der identificerer den nye profil</string>
+ <string name="duplicate_profile_name">Indtast venligst et unikt profilnavn</string>
+ <string name="profilename">Profilnavn</string>
+ <string name="no_keystore_cert_selected">Du skal vælge et bruger certifikat</string>
+ <string name="no_ca_cert_selected">Du skal vælge et CA-certifikat</string>
+ <string name="no_error_found">Ingen fejl fundet</string>
+ <string name="config_error_found">Fejl ved konfiguration</string>
+ <string name="ipv4_format_error">Fejl ved tolkning af IPv4-adresse</string>
+ <string name="custom_route_format_error">Fejl med den brugerdefinerede rute</string>
+ <string name="pw_query_hint">(efterlad tomt for forespørgsel efter efterspørgsel)</string>
+ <string name="vpn_shortcut">OpenVPN genvej</string>
+ <string name="vpn_launch_title">Opretter forbindelse til VPN&#8230;</string>
+ <string name="shortcut_profile_notfound">Profil angivet i genvejen ikke fundet</string>
+ <string name="random_host_prefix">Tilfældig værts præfiks</string>
+ <string name="random_host_summary">Tilføjer 6 tilfældige tegn foran værtsnavn</string>
+ <string name="custom_config_title">Aktiver brugerdefinerede indstillinger</string>
+ <string name="custom_config_summary">Angiv brugerdefinerede indstillinger. Brug med omtanke!</string>
+ <string name="route_rejected">Rute afvist af Android</string>
+ <string name="cancel_connection">Afbryd</string>
+ <string name="cancel_connection_long">Afbryd VPN</string>
+ <string name="clear_log">ryd log</string>
+ <string name="title_cancel">Annuller bekræftelse</string>
+ <string name="cancel_connection_query">Afbryd den tilsluttede VPN/annuller forbindelses forsøg?</string>
+ <string name="remove_vpn">Fjern VPN</string>
+ <string name="check_remote_tlscert">Kontrollerer om serveren bruger et certifikat med TLS Server udvidelser (--remote-CERT-tls server)</string>
+ <string name="check_remote_tlscert_title">Forvent TLS servercertifikat</string>
+ <string name="remote_tlscn_check_summary">Kontrollerer Remote Server Certificate Subject DN</string>
+ <string name="remote_tlscn_check_title">Kontrol af Certifikat Værtsnavn</string>
+ <string name="enter_tlscn_dialog">Angiv hvilket check der anvendes til at verificere det eksterne certifikat DN (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nAngiv den komplette DN eller RDN (f.eks. openvpn.blinkt.de) eller et RDN-præfiks til verificering.\n\nNår der anvendes RDN-præfiks vil \"Server\" matche \"Server-1\" og \"Server-2\"\n\nEfterlades feltet tomt vil RDN tjekkes mod serverens værtsnavn.\n\nFor flere detaljer, se OpenVPN 2.3.1+ manpage\'en under —verify-x509-name</string>
+ <string name="enter_tlscn_title">Fjerncertifikat emne</string>
+ <string name="tls_key_auth">Aktiverer TLS Key-godkendelse</string>
+ <string name="tls_auth_file">TLS godkendelses fil</string>
+ <string name="pull_on_summary">Anmoder IP-adresser, ruter og tidsindstillingerne fra serveren.</string>
+ <string name="pull_off_summary">Ingen oplysninger anmodes fra serveren. Indstillinger skal angives nedenfor.</string>
+ <string name="use_pull">Pull-indstillinger</string>
+ <string name="dns">DNS</string>
+ <string name="override_dns">Tilsidesæt DNS-indstillinger fra Server</string>
+ <string name="dns_override_summary">Brug dine egne DNS-servere</string>
+ <string name="searchdomain">søgeDomæne</string>
+ <string name="dns1_summary">DNS-server, som skal anvendes.</string>
+ <string name="dns_server">DNS-server</string>
+ <string name="secondary_dns_message">Sekundær DNS-Server som bruges, hvis den normale DNS-serveren ikke kan nås.</string>
+ <string name="backup_dns">Backup DNS-server</string>
+ <string name="ignored_pushed_routes">Ignorer skubbet ruter</string>
+ <string name="ignore_routes_summary">Ignorer ruter modtaget fra serveren.</string>
+ <string name="default_route_summary">Omdiriger al trafik over VPN\'en</string>
+ <string name="use_default_title">Brug standard Rute</string>
+ <string name="custom_route_message">Indtast brugerdefinerede ruter. Skriv kun destinationen i CIDR format. \"10.0.0.0/8 2002::/16\" vil dirigere netværkene 10.0.0.0/8 og 2002::/16 gennem VPN\'en.</string>
+ <string name="custom_route_message_excluded">Ruter der IKKE skal dirigeres gennem VPN\'en. Brug samme syntax som til de inkluderede ruter.</string>
+ <string name="custom_routes_title">Brugerdefinerede ruter</string>
+ <string name="custom_routes_title_excluded">Ekskluderede netværk</string>
+ <string name="log_verbosity_level">Log informationsniveau</string>
+ <string name="float_summary">Tillad bekræftede pakker fra alle IP\'er</string>
+ <string name="float_title">Tillad flydende server</string>
+ <string name="custom_options_title">Brugerdefinerede indstillinger</string>
+ <string name="edit_vpn">Rediger VPN-indstillinger</string>
+ <string name="remove_vpn_query">Fjern VPN-profilen \'%s\'?</string>
+ <string name="tun_error_helpful">På nogle brugerdefinerede ICS images kan rettighederne til /dev/tun være forkerte, eller tun modulet kan mangle fuldstændigt. Til CM9 images kan du prøve \"fix ejerskab\" valgmuligheden under generelle indstillinger</string>
+ <string name="tun_open_error">Kunne ikke åbne tun grænsefladen</string>
+ <string name="error">"Fejl: "</string>
+ <string name="clear">Tøm</string>
+ <string name="last_openvpn_tun_config">Åbner tun grænseflade:</string>
+ <string name="local_ip_info">Lokal IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
+ <string name="dns_server_info">DNS-Server: %1$s, Domæne: %2$s</string>
+ <string name="routes_info_incl">Ruter: %1$s %2$s</string>
+ <string name="routes_info_excl">Ekskluderede ruter: %1$s %2$s</string>
+ <string name="routes_debug">VpnService rute installeret: %1$s %2$s</string>
+ <string name="ip_not_cidr">Fik grænsfladeoplysninger %1$s og %2$s, antager at anden adresse er peer-adressen på fjernserveren. Bruger /32 netmask til lokal IP. Tilstanden givet af OpenVPN er \"%3$s\".</string>
+ <string name="route_not_cidr">Kan ikke forstå %1$s og %2$s som IP rute med CIDR netmask, bruger /32 som netmask.</string>
+ <string name="route_not_netip">Rettede rute %1$s/%2$s til %3$s/%2$s</string>
+ <string name="keychain_access">Kan ikke få adgang til Android Keychain Certifikater. Dette kan skyldes en firmware opdatering eller ved at gendanne en backup af app\'en/app indstillingerne. Rediger venligst VPN\'en og genvælg certifikatet under grund indstillinger for at gendanne rettighederne til at tilgå certifikatet.</string>
+ <string name="version_info">%1$s %2$s</string>
+ <string name="send_logfile">Send log fil</string>
+ <string name="send">Send</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN log fil</string>
+ <string name="copied_entry">Kopierede logpost til udklipsholder</string>
+ <string name="tap_mode">Tap-tilstand</string>
+ <string name="faq_tap_mode">Tap-tilstand er ikke muligt med ikke-root VPN API. Programmet kan derfor ikke tilbyde tap-understøttelse</string>
+ <string name="tap_faq2">Igen? Laver du sjov? Nej, tap-tilstand er virkelig ikke understøttet og det hjælper ikke at sende mig mails og spørge om det bliver understøttet.</string>
+ <string name="tap_faq3">En tredje gang? Man kunne faktisk skrive en tap-emulator baseret på tun der kunne tilføje layer2 information når den sender og fjerne layer2 information når det modtages. Men en sådan tap-emulator skulle også implementere ARP og muligvis en DHCP-klient. JEg kender ikke nogen der arbejder i denne retning. Kontakt mig hvis du vil begynde at programmere det.</string>
+ <string name="faq">OFTE STILLEDE SPØRGSMÅL</string>
+ <string name="copying_log_entries">Kopiere logposter</string>
+ <string name="faq_copying">For at kopiere en enkelt logpost skal du trykke og holde på logposten. For at kopiere/sende hele log\'en skal du bruge Send Log valgmuligheden. Brug hardware menu knappen hvis den ikke er vist i GUI\'en.</string>
+ <string name="faq_shortcut">Genvej til start</string>
+ <string name="faq_howto_shortcut">Du kan placere en genvej til at starte OpenVPN på dit skrivebord. Afhængigt af dit homescreen-program skal du enten tilføje en genvej eller et widget.</string>
+ <string name="no_vpn_support_image">Dit billede understøtter ikke VPNService API\'en, beklager :(</string>
+ <string name="encryption">Kryptering</string>
+ <string name="cipher_dialog_title">Angiv krypterings metode</string>
+ <string name="chipher_dialog_message">Angiv krypteringsalgoritmen der skal bruges af OpenVPN. Efterlad tom for at anvende standard algoritmen.</string>
+ <string name="auth_dialog_message">Angiv autentificeringsdigest til brug af OpenVPN. Efterlad tom for at anvende standard digest.</string>
+ <string name="settings_auth">Autentificering/kryptering</string>
+ <string name="file_explorer_tab">Stifinder</string>
+ <string name="inline_file_tab">Indlejret fil</string>
+ <string name="error_importing_file">Fejl under importering af fil</string>
+ <string name="import_error_message">Kunne ikke importere fil fra filsytemet</string>
+ <string name="inline_file_data">[[Data inline fil]]</string>
+ <string name="opentun_no_ipaddr">Nægter at åbne tun-enhed uden IP-information</string>
+ <string name="menu_import">Importér profil fra ovpn fil</string>
+ <string name="menu_import_short">Importér</string>
+ <string name="import_content_resolve_error">Kunne ikke læse profil fra import</string>
+ <string name="error_reading_config_file">Fejl under læsning af konfigurationsfil</string>
+ <string name="add_profile">tilføj profil</string>
+ <string name="import_could_not_open">Kunne ikke finde fil %1$s nævnt under importen af konfigurationsfil</string>
+ <string name="importing_config">Importering af konfigurationsfil fra kilde %1$s</string>
+ <string name="import_warning_custom_options">Din konfiguration havde nogle indstillingsmuligheder der ikke er knyttet til brugerinterface indstillinger. Disse indstillinger blev tilføjet som brugerdefinerede indstillingsmuligheder. De brugerdefinerede indstillinger er vist forneden:</string>
+ <string name="import_done">Færdig med at læse konfigurationsfil.</string>
+ <string name="nobind_summary">Bind ikke til lokal adresse eller port</string>
+ <string name="no_bind">Ingen lokal binding</string>
+ <string name="import_configuration_file">Importér konfigurationsfil</string>
+ <string name="faq_security_title">Sikkerhedsovervejelser</string>
+ <string name="faq_security">"Da OpenVPN er sikkerhedsfølsom er det på sin plads med nogle bemærkninger om sikkerhed. Al data på SD-kortet er usikkert af konstruktion. Alle apps kan læse fra det (f. eks. har denne app ikke behov for SD-kort rettigheder). Dette programs data kan kun læses af programmet selv. Ved at anvende Importér valgmuligheden til cacert/cert/key i fil dialogen bliver data\'en opbevaret i VPN-profilen. VPN-profilerne er kun tilgængelige for denne app. (Glem ikke at slette kopierne fra SD-kortet bagefter). Selvom de kun er tilgængelige for dette program er dataen stadig stadig ukrypteret. Ved at root\'e telefonen eller ved hjælp af andre exploits kan det være muligt at indhente dataen. Gemte passwords bliver også opbevaret ukrypteret. For pkcs12 filer er det særligt anbefalet at du importere dem til Android Keystore."</string>
+ <string name="import_vpn">Importér</string>
+ <string name="broken_image_cert_title">Fejl ved visning af certifikat-valg</string>
+ <string name="broken_image_cert">Fik en undtagelse ved visning af Android 4.0+ certifikat valgsdialog. Dette burde ikke ske da det er en standardfunktion i Android 4.0+. Måske er din Android ROM\'s certifikatopbevaring i stykker</string>
+ <string name="ipv4">IPv4</string>
+ <string name="ipv6">IPv6</string>
+ <string name="speed_waiting">Venter på statusmeddelelse&#8230;</string>
+ <string name="converted_profile">importeret profil</string>
+ <string name="converted_profile_i">importeret profil %d</string>
+ <string name="broken_images">Ødelagt Image</string>
+ <string name="broken_images_faq">&lt;p&gt;Official HTC-afbildning er kendte for at have et mærkelig routing-problem, som betyder, at trafikafvikling ikke sker gennem tunnelen (se også &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Problem 18&lt;/a&gt; i fejlsporingen.)&lt;/p&gt;&lt;p&gt;Ældre officielle SONY-afbildninger fra Xperia Arc S og Xperia Ray er blevet rapporteret for helt at mangle VPNService i afbildningen (se også &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Problem 29&lt;/a&gt; i fejlsporingen.)&lt;/p&gt;&lt;p&gt;På tilpassede afbildningsversioner kan tun-modulet mangle eller rettigheder for /dev/tun kan være forkerte. Visse CM9-afbildninger behøver aktivering af valgmuligheden \"Korrigér ejerskab\" under \"Enhedsspecifikke hacks\" .&lt;/p&gt;&lt;p&gt;Og vigtigst: Hvis din enhed har en ødelagt Android-afbildning, så rapportér venligst dette til din salgskanal. Jo flere personer, der rapporterer et problem til salgskanalen, jo større er chancen for, at problemet bliver rettet.&lt;/p&gt;</string>
+ <string name="pkcs12_file_encryption_key">PKCS12 fil-krypterings-nøgle</string>
+ <string name="private_key_password">Private Key adgangskode</string>
+ <string name="password">Adgangskode</string>
+ <string name="file_icon">fil ikon</string>
+ <string name="tls_authentication">TLS-autentificering/kryptering</string>
+ <string name="generated_config">Genereret konfiguration</string>
+ <string name="generalsettings">Indstillinger</string>
+ <string name="owner_fix_summary">Forsøger at indstille ejeren af /dev/tun til system. Nogle CM9 images skal bruge dette for at få VPNService API\'en til at virke. Kræver root.</string>
+ <string name="owner_fix">Ret ejerskab af /dev/tun</string>
+ <string name="generated_config_summary">Vis den generede OpenVPN konfigurationsfil</string>
+ <string name="edit_profile_title">Redigerer \"%s\"</string>
+ <string name="building_configration">Bygger konfiguration&#8230;</string>
+ <string name="netchange_summary">Hvis dette tilvalg slåes til vil det gennemtvinge en genopretning af forbindelsen hvis netværkstilstanden ændres (f.eks. WIFI til/fra mobildata)</string>
+ <string name="netchange">Genopret forbindelse ved ændring i netværkstilstand</string>
+ <string name="netstatus">Netværks status: %s</string>
+ <string name="extracahint">CA certifikatet fåes som regel fra Android Keystore. Angiv et seperat certifikat hvis du certifikats-verificerings-fejl.</string>
+ <string name="select_file">Vælg</string>
+ <string name="keychain_nocacert">Intet CA Certifikat fundet under søgning i Android keystore. Autentificering vil nok mislykkes.</string>
+ <string name="show_log_summary">Vis logvinduet ved tilslutning. Du kan altid komme til logvinduet fra notifikationen.</string>
+ <string name="show_log_window">Vis logvindue</string>
+ <string name="mobile_info">%10$s %9$s kører på %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
+ <string name="error_rsa_sign">Fejl under signering med Android keystore nøgle %1$s: %2$s</string>
+ <string name="faq_system_dialogs">VPN forbindelses advarslen der fortæller dig at denne app kan aflytte al din internettrafik er pålagt af systemet for at undgå misbrug af VPNService API\'en.\nVPN-forbindelses-notifikationen (nøglesymbolet) er også pålagt af Android systemet for at signalere en aktiv VPN forbindelse. På nogle Images afspiller denne notifikation en lyd.\nAndroid introducerede system dialoger for din sikkerhed og sørgede for at de ikke kunne omgås.</string>
+ <string name="faq_system_dialogs_title">Forbindelsesadvarsel og notifikationslyd</string>
+ <string name="translationby">Dansk oversættelse af</string>
+ <string name="ipdns">IP og DNS</string>
+ <string name="basic">Grundlæggende</string>
+ <string name="routing">Routing</string>
+ <string name="obscure">Tildæk OpenVPN indstillinger. Normalt ikke nødvendigt.</string>
+ <string name="advanced">Avanceret</string>
+ <string name="export_config_title">ICS OpenVPN konfiguration</string>
+ <string name="warn_no_dns">Der anvendes ingen DNS server. Name resolution vil muligvis ikke fungere. Overvej at indstille brugerdefinerede DNS servere. Bemærk også at Android vil fortsætte med at anvende de proxy-indstillinger specificeret i din mobil/WI-FI forbindelse når der ikke er indstillet nogen DNS servere.</string>
+ <string name="dns_add_error">Kunne ikke tilføje DNS server \"%1$s\", afvist af systemet: %2$s</string>
+ <string name="ip_add_error">Kunne ikke indstille IP adresse \"%1$s\", afvist af systemet: %2$s</string>
+ <string name="faq_howto">&lt;&gt;Skaf en funktionel konfiguration (testet den på din computer eller downloadet fra din udbyder/organisation)&lt;/p&gt;&lt;p&gt;Hvis det er en enkelt fil uden ekstra pem/pkcs12 filer kan du e-maile den til dig selv og åbne vedhæftningen. Hvis du har flere filer kan du putte dem på dit sd-kort.&lt;/p&gt;&lt;p&gt;Klik på e-mailvedhæftningen/Brug mappe ikonet i VPN-listen for at importere konfigurationsfilen&lt;/p&gt;&lt;p&gt;Hvis der kommer fejlmeddelelser om manglende filer kan du placere de manglende filer på dit sd-kort.&lt;/p&gt;&lt;p&gt;Klik på gem symbolet for at tilføje den importerede VPN til din VPN-liste&lt;/p&gt;&lt;p&gt;Forbind til VPN\'en ved at klikke på dens navn&lt;/p&gt;&lt;p&gt;Hvis der er fejl eller advarsler i loggen så prøv at forstå adverslerne/fejlene og prøv at fikse dem&lt;/p&gt; </string>
+ <string name="faq_howto_title">Hurtig start</string>
+ <string name="setting_loadtun_summary">Prøv at indlæse tun.ko kernel-modulet før du forsøger at forbinde. Kræver enheden er rootet.</string>
+ <string name="setting_loadtun">Indlæs tun-modul</string>
+ <string name="importpkcs12fromconfig">Importer pkcs12 fra konfigurationen til Android Keystore</string>
+ <string name="getproxy_error">Fejl under indlæsning af proxy-indstillinger: %s</string>
+ <string name="using_proxy">Anvender proxy %1$s %2$d</string>
+ <string name="use_system_proxy">Anvend system-proxy</string>
+ <string name="use_system_proxy_summary">Anvend systemets globale konfiguration til forbindelse af HTTP/HTTPS proxy\'er.</string>
+ <string name="onbootrestartsummary">OpenVPN vil forbinde til den angivne VPN hvis den var aktiv under system opstart. Læs venligst forbindelses advarsel FAQ før du bruger demme valgmulighed på Android &lt; 5.0.</string>
+ <string name="onbootrestart">Forbind ved opstart</string>
+ <string name="ignore">Ignorer</string>
+ <string name="restart">Genstart</string>
+ <string name="restart_vpn_after_change">Konfigurationsændringer træder i kræft efter VPN\'en genstartes. (Gen)start VPN\'en nu?</string>
+ <string name="configuration_changed">Konfiguration ændret</string>
+ <string name="log_no_last_vpn">Kunne ikke bestemme den sidst forbundne profil til redigering</string>
+ <string name="faq_duplicate_notification_title">Duplikerede notifikationer</string>
+ <string name="faq_duplicate_notification">Hvis Androids system hukommelse (RAM) er under pres, vil apps og tjenester der ikke bruges i øjeblikket blive fjernet fra den aktive hukommelse. Dette afbryder den igangværende VPN-forbindelse. For at sikre at forbindelsen/OpenVPN overlever, kører tjenesten med en højere prioritet. For at køre med en højere prioritet viser programmet en notifikation. Nøgle-ikons-notifikationen bliver vist af systemet som beskrevet i det sidste FAQ indlæg. Den tæller ikke som en notifikation med det formål at køre programmet med højere prioritet.</string>
+ <string name="no_vpn_profiles_defined">Ingen VPN-profil defineret.</string>
+ <string name="add_new_vpn_hint">Brug &lt;img src=\"ic_menu_add\"/&gt; ikonet for at tilføje en ny VPN</string>
+ <string name="vpn_import_hint">Brug &lt;img src=\"ic_menu_archive\"/&gt; ikonet for at importere en eksisterende (.ovpn eller .conf) profil fra dit SD-kort.</string>
+ <string name="faq_hint">Sørg for også at læse FAQ\'en. Der er en hurtig-start-guide.</string>
+ <string name="faq_routing_title">Routing/interface konfiguration</string>
+ <string name="faq_routing">Routing og interface konfigurationen bliver ikke gjort ved hjælp af traditionel ifconfig/route kommandoer, men ved hjælp af VPNService API\'en. Dette resulterer i en anderledes routing konfiguration end i andre styresystemer.\nKonfigurationen af VPN-forbindelsen består af IP-adressen og netværkerne der skal routes gennem interfacet. Specielt er peer partner adresser eller gateway adresser nødvendige. Særlige ruter til at nå VPN-serveren (for eksempel tilføjet når der anvendes redirect-gateway) er heller ikke nødvendige. Programmet vil konsekvent ignorere disse indstillinger når det importere en konfiguration. App\'en sikre ved hjælp af VPNService API\'en at forbindelsen til serveren ikke bliver routet gennem VPN-forbindelsen.\nVPNService API\'en tillader ikke at specificere netværk der ikke skal routes gennem VPN\'en. For at arbejde sig udenom denne begrænsning prøver denne app at finde netværk der ikke skal routes gennem forbindelsen (f.eks. route x.x.x.x y.y.y.y net_gateway) and udregner et sæt ruter der ekskludere disse ruter for at efterligne adfæren på andre platforme. Logvinduet viser konfigurationen af VPNService ved etablering af en forbindelse.\nBag kulissen: Android 4.4+ bruger policy routing. Anvendes route/ifconfig vil det ikke vise de installerede ruter. Brug i stedet IP-reglen, iptables -t mangle -L</string>
+ <string name="persisttun_summary">Fald ikke tilbage på VPN-løs forbindelse når OpenVPN genforbinder.</string>
+ <string name="persistent_tun_title">Vedvarende tun</string>
+ <string name="openvpn_log">OpenVPN log</string>
+ <string name="import_config">Importér OpenVPN konfiguration</string>
+ <string name="battery_consumption_title">Batteriforbrug</string>
+ <string name="baterry_consumption">I mine personlige tests er hovedårsagen til OpenVPNs høje batteriforbrug keepalive-pakker. De fleste OpenVPN-servere har en konfigurationsregel såsom \'keepalive 10 60\', som får klienten og serveren til at udveksle keepalive-pakker hvert tiende sekund. &lt;p&gt; Selvom disse pakker er små og ikke udgør megen trafik, holder de mobilradioenetværk beskæftiget og øger dermed strømforbruget (se evt. &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt; Radio State Machine | Android Developers&lt;/a&gt;) &lt;p&gt;. Denne keepalive-indstilling kan ikke ændres på klienten, men kun systemadministratoren for OpenVPN kan ændre denne. &lt;p&gt; Ved at benytte et keepalive-niveau længere end 60 sekunder med UDP kan visse NAT-gateways droppe forbindelsen grundet en inaktivitets-timeout. Brug af TCP med en høj keepalive-tid fungerer, men tunnelering af TCP over TCP udviser en ekstrem ringe ydelse på forbindelser med højt pakketab (se &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;Why TCP over TCP is a bad idea&lt;/a&gt;).</string>
+ <string name="faq_tethering">Funktionen Android Tethering (via Wi.Fi, USB eller Bluetooth) og VPN-tjeneste-API\'et (som benyttes af denne app) fungerer ikke sammen. For yderligere oplysninger, se venligst &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;problem #34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">VPN og Tethering</string>
+ <string name="connection_retries">Forbindelses-forsøg</string>
+ <string name="reconnection_settings">Gentilslutningindstillinger</string>
+ <string name="connectretrymessage">Antal sekunder at vente mellem forbindelsesforsøg.</string>
+ <string name="connectretrywait">Sekunder mellem forbindelser</string>
+ <string name="minidump_generated">OpenVPN gik uventet ned. Overvej venligst at benytte muligheden Send Minidump i hovedmenuen</string>
+ <string name="send_minidump">Send Minidump til udvikler</string>
+ <string name="send_minidump_summary">Sender fejlsøgningsinfo om seneste nedbrud til udvikler</string>
+ <string name="notifcation_title">OpenVPN - %s</string>
+ <string name="session_ipv4string">%1$s - %2$s</string>
+ <string name="session_ipv6string">%1$s - %3$s, %2$s</string>
+ <string name="state_connecting">Tilslutning</string>
+ <string name="state_wait">Afventer serversvar</string>
+ <string name="state_auth">Godkender</string>
+ <string name="state_get_config">Henter klientkonfiguration</string>
+ <string name="state_assign_ip">Tildele IP-adresser</string>
+ <string name="state_add_routes">Tilføjer ruter</string>
+ <string name="state_connected">Tilsluttet</string>
+ <string name="state_disconnected">Afbryd</string>
+ <string name="state_reconnecting">Gentilslutter</string>
+ <string name="state_exiting">Afslutter</string>
+ <string name="state_noprocess">Kører ikke</string>
+ <string name="state_resolve">Opløser værtsnavne</string>
+ <string name="state_tcp_connect">Tilslutter (TCP)</string>
+ <string name="state_auth_failed">Godkendelse mislykkedes</string>
+ <string name="state_nonetwork">Afventer anvendeligt netværk</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
+ <string name="notifcation_title_notconnect">Ikke tilsluttet</string>
+ <string name="start_vpn_title">Forbinder til VPN %s</string>
+ <string name="start_vpn_ticker">Forbinder til VPN %s</string>
+ <string name="jelly_keystore_alphanumeric_bug">Nogle versioner af Android 4.1 har problemer, hvis navnet på keystore-certifikatet indeholder ikke-alfanumeriske tegn (som mellemrum, understregninger eller bindestreger). Prøv at genimportere certifikatet uden specialtegn</string>
+ <string name="encryption_cipher">Krypteringsstreng</string>
+ <string name="packet_auth">Pakkegodkendelse</string>
+ <string name="auth_dialog_title">Angiv pakkegodkendelsesmetode</string>
+ <string name="built_by">bygget af %s</string>
+ <string name="debug_build">fejlfindingskompilering</string>
+ <string name="official_build">officiel kompilering</string>
+ <string name="make_selection_inline">Kopiér til profil</string>
+ <string name="crashdump">Nedbruds-dump</string>
+ <string name="add">Tilføj</string>
+ <string name="send_config">Send opsætningsfil</string>
+ <string name="complete_dn">Komplet DN</string>
+ <string name="remotetlsnote">Din importerede konfiguration benytter den gamle DEPRECATED TLS-remote funktion, der benytter et andet DN-format.</string>
+ <string name="rdn">RDN (almindeligt navn)</string>
+ <string name="rdn_prefix">RDN-præfiks</string>
+ <string name="tls_remote_deprecated">TLS-REMOTE (forældet)</string>
+ <string name="help_translate">Du kan hjælpe med at oversætte ved at gå ind på http://crowdin.net/project/ics-openvpn/invite</string>
+ <string name="prompt">%1$s forsøger at styre %2$s</string>
+ <string name="remote_warning">Ved at fortsætte giver du programmet rettighed til at tage komplet kontrol over OpenVPN til Android og til at opsnappe al netværkstrafik.<b>Accepter IKKE medmindre du har tillid til programmet.</b> Ellers løber du risikoen for at få din data kompromiteret af ondsindet software.</string>
+ <string name="remote_trust">Jeg har tillid til dette program.</string>
+ <string name="no_external_app_allowed">Ingen app har lov til at anvende ekstern API</string>
+ <string name="allowed_apps">Tilladte apps: %s</string>
+ <string name="clearappsdialog">Ryd liste over tilladte eksterne apps?\nNuværende liste over tilladte apps:\n\n%s</string>
+ <string name="screenoff_summary">Paus VPN når skærmen er slukket og mindre end 64 kB data er blevet overført de sidste 60 sekunder. Når \"Vedvarende Tun\" indstillingen er slået til, vil din enhed ikke have forbindelse til netværket når VPN\'en er pauset. Uden \"Vedvarende Tun\" indstillingen til enheden ikke have nogen VPN forbindelse/beskyttelse.</string>
+ <string name="screenoff_title">Paus VPN-forbindelse efter skærmen slukkes</string>
+ <string name="screenoff_pause">Pauser forbindelse i slukket-skræm tilstand: Mindre end %1$s på %2$ss</string>
+ <string name="screen_nopersistenttun">Advarsel: Vedvarende Tun er ikke slået til på denne VPN. Internettrafik vil anvende den normale internetforbindelse når skærmen er slukket.</string>
+ <string name="save_password">Gem adgangskode</string>
+ <string name="pauseVPN">Paus VPN</string>
+ <string name="resumevpn">Genoptag VPN</string>
+ <string name="state_userpause">VPN pausning anmodet af bruger</string>
+ <string name="state_screenoff">VPN pauset - Skærmen er slukket</string>
+ <string name="device_specific">Enheds-specifikke hacks</string>
+ <string name="cannotparsecert">Kan ikke vise certifikatsinformation</string>
+ <string name="appbehaviour">Program opførsel</string>
+ <string name="vpnbehaviour">VPN opførsel</string>
+ <string name="allow_vpn_changes">Tillad ændringer til VPN-profiler</string>
+ <string name="hwkeychain">Hardware keystore:</string>
+ <string name="permission_icon_app">En app prøver at bruge OpenVPN til Androids ikon</string>
+ <string name="faq_vpndialog43">"Fra og med Android 4.3 er VPN-bekræftelsen beskyttet mod \"overlejrede apps\". Dette resulterer i, at dialogen ikke reagerer på berøringsinput. Har du en app, der benytter overlejring, kan det forårsage denne adfærd. Finder du en app, der overtrædende overlejringsbeskyttelsen, skal du kontakte app-udvikleren. Problemet påvirker alle VPN-apps på Android 4.3 og senere. Se også &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; for yderligere oplysninger"</string>
+ <string name="faq_vpndialog43_title">VPN bekræftelses dialog</string>
+ <string name="donatePlayStore">Alternativt kan du sende mig en donation med Play Butik:</string>
+ <string name="thanks_for_donation">Tak for donationen %s!</string>
+ <string name="logCleared">Log ryddet.</string>
+ <string name="show_password">Vis adgangskode</string>
+ <string name="keyChainAccessError">KeyChain adgangsfejl: %s</string>
+ <string name="timestamp_short">Kort</string>
+ <string name="timestamp_iso">ISO</string>
+ <string name="timestamps">Tidsstempler</string>
+ <string name="timestamps_none">Ingen</string>
+ <string name="uploaded_data">Upload</string>
+ <string name="downloaded_data">Download</string>
+ <string name="vpn_status">VPN status</string>
+ <string name="logview_options">Indstillinger for visning</string>
+ <string name="unhandled_exception">Ubehandlet undtagelse: %1$s\n\n%2$s</string>
+ <string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
+ <string name="faq_system_dialog_xposed">Hvis du har rootet din androidenhed kan du installere &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt; og &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialog confirm module&lt;/a&gt; på din egen risiko</string>
+ <string name="full_licenses">Fulde licenser</string>
+ <string name="blocklocal_summary">Netværk forbundet direkte til det lokale interface vil ikke blive dirigeret gennem VPN\'en. Fravælges denne indstilling vil alt trafik til lokale netværk dirigeres gennem VPN\'en.</string>
+ <string name="blocklocal_title">Forbipasser VPN for lokale netværk</string>
+ <string name="userpw_file">Brugernavn/password fil</string>
+ <string name="imported_from_file">[Importeret fra: %s]</string>
+ <string name="files_missing_hint">Nogle filer kunne ikke findes. Vælg venligst filerne for at importere profilen:</string>
+ <string name="openvpn_is_no_free_vpn">For at anvende denne app skal du bruge en VPN udbydder/VPN gateway der understøtter OpenVPN (som regel givet af din arbejdsgiver). Tjek http://community.openvpn.net/ for yderligere information om OpenVPN og instruktioner til at opsætte din egen OpenVPN server.</string>
+ <string name="import_log">Importér log:</string>
+ <string name="ip_looks_like_subnet">VPN topologi \"%3$s\" specificeret, men ifconfig %1$s %2$s ligner mere en IP-adresse med en netværksmaske. Antager \"subnet\" topologi.</string>
+ <string name="mssfix_invalid_value">MSS override-værdien skal være et heltal mellem 0 og 9000</string>
+ <string name="mtu_invalid_value">MTU-tilsidesættelsesværdien skal være et helt tal mellem 64 og 9000</string>
+ <string name="mssfix_value_dialog">Meddel TCP sessioner der kører gennem tunnelen at de skal begrænse deres sendte pakker så, efter at OpenVPN har indkapslet dem, de resulterende UDP-pakker OpenVPN sender til dets modtagere ikker bliver større end de valgte antal bytes. (standarden er 1450)</string>
+ <string name="mssfix_checkbox">Tilsidesæt MSS-værdi af ​​TCP-nyttelast</string>
+ <string name="mssfix_dialogtitle">Opsæt MSSfor TCP-dataindhold</string>
+ <string name="client_behaviour">Klientadfærd</string>
+ <string name="clear_external_apps">Ryd tilladte eksterne apps</string>
+ <string name="loading">Indlæser&#8230;</string>
+ <string name="allowed_vpn_apps_info">Tilladte VPN-apps: %1$s</string>
+ <string name="disallowed_vpn_apps_info">Ikke-tilladte VPN apps: %1$s</string>
+ <string name="app_no_longer_exists">Pakken %s er ikke længere installeret, fjerner den fra app-listen Tilladte/Ikke-tilladte</string>
+ <string name="vpn_disallow_radio">VPN benyttes til alle apps, bortset fra de valgte</string>
+ <string name="vpn_allow_radio">VPN benyttes kun til valgte apps</string>
+ <string name="query_delete_remote">Fjern fjernserverangivelse?</string>
+ <string name="keep">Behold</string>
+ <string name="delete">Slet</string>
+ <string name="add_remote">Tilføj ny fjernserver</string>
+ <string name="remote_random">Benyt forbindelsesangivelser i tilfældig rækkefølge ved tilslutning</string>
+ <string name="remote_no_server_selected">Mindst én fjernserver skal definere og aktiveres.</string>
+ <string name="server_list">Serverliste</string>
+ <string name="vpn_allowed_apps">Tilladte apps</string>
+ <string name="advanced_settings">Avancerede Indstillinger</string>
+ <string name="payload_options">Dataindholdsmuligheder</string>
+ <string name="tls_settings">TLS-indstillinger</string>
+ <string name="no_remote_defined">Ingen fjernserver defineret</string>
+ <string name="duplicate_vpn">Duplicér VPN-profil</string>
+ <string name="duplicate_profile_title">Dupliceringsprofilnavn: %s</string>
+ <string name="show_log">Vis log</string>
+ <string name="faq_android_clients">Der findes flere OpenVPN-klienter til Android. De mest almindelige er OpenVPN for Android (denne klient), OpenVPN Connect og OpenVPN Settings.&lt;p&gt;Klienterne kan placeres i to grupper: OpenVPN for Android og OpenVPN Connect bruger den officielle VPN-tjeneste API (Android 4.0+) og kræver ingen root, og OpenVPN Settings, der benytter root.&lt;p&gt;OpenVPN for Android, er en open source-klient udviklet af Arne Schwabe. Den er målrettet mere avancerede brugere og tilbyder mange indstillinger og muligheden for at importere profiler fra filer samt til at konfigurere/ændre profiler i selve i app\'en. Klienten er baseret på fællesskabsversionen af ​​OpenVPN. Den er baseret på OpenVPN 2.x-kildekoden. Denne klient kan ses som fællesskabets semi-officielle klient. &lt;p&gt;OpenVPN Connect er en ikke-open source-klient, der er udviklet af OpenVPN Technologies, Inc. Klienten er tildigtet generelt brug og mere målrettet den gennemsnitlige bruger og tillader import af OpenVPN-profiler. Denne klient er baseret på OpenVPN C ++ genimplementering af OpenVPN-protokollen (dette var påkrævet for at tillade OpenVPN Technologies, Inc at offentliggøre en iOS OpenVPN-app). Denne klient er den officielle klient for OpenVPN-teknologierne &lt;p&gt; OpenVPN Settings er den ældste af klienterne og også en brugerflade til open source OpenVPN. I modsætning til OpenVPN for Android kræver den root og benytter ikke VPN-tjeneste API. Dem afhænger ikke af Android 4.0+</string>
+ <string name="faq_androids_clients_title">Forskelle mellem OpenVPN Android-klienter</string>
+ <string name="ignore_multicast_route">Ignorerer multicast-rute: %s</string>
+ <string name="ab_only_cidr">Android understøtter kun CIDR-ruter til VPN. Da ikke-CIDR-ruter næsten aldrig benyttes, vil OpenVPN for Android benytte en /32 til ruter, som ikke er CIDR, og udstede en advarsel.</string>
+ <string name="ab_tethering_44">Tøjring fungerer, mens VPN\'en er aktiv. Den kablede forbindelse benytter IKKE VPN\'en.</string>
+ <string name="ab_kitkat_mss">Tidlige KitKat-versioner indstiller den forkerte MSS-værdi på TCP-forbindelser (#61948). Prøv at aktivere mssfix-indstillingen for at løse denne fejl.</string>
+ <string name="ab_proxy">Android vil fortsat bruge de proxyindstillinger, som er angivet til mobil/Wi-Fi-forbindelsen, når ingen DNS-servere er opsat. OpenVPN for Android vil advare dig om dette i loggen.<p>Når en VPN indstiller en DNS-server vil Android ikke benytte en proxy. Der er intet API indstilling af en proxy for en VPN-forbindelse.</p></string>
+ <string name="ab_lollipop_reinstall">VPN-apps stoppe muligvis med at fungere, hvis de afinstalleres og geninstalleres. Se #80074 for yderligere oplysninger</string>
+ <string name="ab_not_route_to_vpn">Den opsatte klient-IP og IP\'erne i netværksmasken bliver ikke sendt til VPN\'en. OpenVPN kompenserer for denne fejl ved udtrykkeligt at tilføje en rute, der korresponderer med klientens IP og dens netmaske</string>
+ <string name="ab_persist_tun">Åbning af en tun-enhed, mens en anden tun-enhed, der benyttes til vedvarende tun-understøttelse, er aktiv, medfører fejl i VPN-tjenesten på enheden. En genstart er nødvendig for at gøre VPN funktionel igen. OpenVPN for Android forsøger at undgå at genåbne tun-enheden, og hvis det virkelig er nødvendigt, lukkes først den nuværende TUN, inden den nye TUN-enhed åbnes for at undgå nedbrud. Dette kan medføre et kort interval, hvori pakker sendes over en ikke-VPN-forbindelse. Selv med denne løsning går VPN-tjenesten somme tider ned og kræver genstart af enheden.</string>
+ <string name="ab_secondary_users">VPN fungerer slet ikke for sekundære brugere.</string>
+ <string name="ab_kitkat_reconnect">"Flere brugere rapporterer, at mobilforbindelse/-dataforbindelse ofte droppes under brug af VPN-app\'en. Denne adfærd synes kun at påvirke visse kombinationer af mobiludbydere/enheder, og indtil nu har ingen årsag/løsning på fejlen kunnet identificeres."</string>
+ <string name="ab_vpn_reachability_44">Kun destinationer, der også kan nås uden VPN, kan nås via VPN. IPv6 VPN\'er virker slet ikke.</string>
+ <string name="ab_only_cidr_title">Ikke-CIDR-ruter</string>
+ <string name="ab_proxy_title">Proxy-adfærd for VPN\'er</string>
+ <string name="ab_lollipop_reinstall_title">Geninstallerer VPN-apps</string>
+ <string name="version_upto">%s og tidligere</string>
+ <string name="copy_of_profile">Kopi af %s</string>
+ <string name="ab_not_route_to_vpn_title">Rute til den konfigurerede IP-adresse</string>
+ <string name="ab_kitkat_mss_title">Forkert MSS-værdi for VPN-forbindelse</string>
+ <string name="ab_secondary_users_title">Sekundære tabletbrugere</string>
+ <string name="custom_connection_options_warng">Angiv tilpassede tilslutningsspecifikke indstillinger. Brug med omtanke</string>
+ <string name="custom_connection_options">Tilpassede indstillinger</string>
+ <string name="remove_connection_entry">Fjern forbindelsesindgang</string>
+ <string name="ab_kitkat_reconnect_title">Tilfældige afbrydelser fra mobiltnetværk</string>
+ <string name="ab_vpn_reachability_44_title">Eksterne netværk kan ikke nås</string>
+ <string name="ab_persist_tun_title">Fortsæt Tun tilstand</string>
+ <string name="version_and_later">%s og senere</string>
+ <string name="tls_cipher_alert_title">Forbindelser fejler SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure</string>
+ <string name="tls_cipher_alert">Nyere OpenVPN for Android-versioner (0.6.29/marts 2015) benytter en mere sikker standard for de tilladte chiffer-pakker (tls-chiffer \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). Uheldigvis afstedkommer udeladelse af de mindre sikre chiffer-pakker og eksportchiffer-pakker, især udeladelsen af ​​chiffer-pakker, som ikke understøtter Perfect Forward Secrecy (Diffie-Hellman), visse problemer. Dette skyldes normalt et velment, men dårligt udført, forsøg på at styrke TLS-sikkerhed ved at opsætte tls-chiffer på serveren eller nogle indlejrede operativsystemer med fjernet SSL (f.eks. MikroTik).\nFor at løse dette problem bør tls-cipher-indstillinger på serverensættes til en rimelig standard såsom tls-chiffer \"DEFAULT:! EXP:! PSK:! SRP:! kRSA\". For at løse problemet på klienten kan den tilpassede indstilling tls-chiffer DEFAULT tilføjes på Android-klienten.</string>
+ <string name="message_no_user_edit">Denne profil er tilføjet fra en ekstern app (%s) og er blevet markeret som ikke-bruger-redigerbar.</string>
+ <string name="crl_file">Liste over tilbagekaldte certifikater</string>
+ <string name="service_restarted">Genstarter OpenVPN Service (App\'en crashede, den crashede sandsynligvis eller blev stoppet på grund a RAM overbelastning)</string>
+ <string name="import_config_error">Import af konfigurationsfilen gav en fejl, kan ikke gemme</string>
+ <string name="Search">Søg</string>
+ <string name="clear_log_on_connect">Ryd log ved ny forbindelse</string>
+ <string name="connect_timeout">Forbindelses-timeout</string>
+ <string name="no_allowed_app">Ingen tilladt app tilføjet. Tilføjer selve appen (%s) for at have mindst én tilladt app, ellers vil alle apps være tilladte</string>
+ <string name="query_permissions_sdcard">OpenVPN til Android kan forsøge at finde de(n) manglende fil(er) automatisk på SD-kortet. Klik på denne besked for at starte rettighedsanmodningen.</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Aktiveret</string>
+ <string name="permission_revoked">VPN tilladelse tilbagekaldt af styresystemet (f.eks. kan et andet VPN program være startet), stopper VPN</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+</resources>
diff --git a/app/src/main/res/values-de/plurals-icsopenvpn.xml b/app/src/main/res/values-de/plurals-icsopenvpn.xml
index 1737fa7a..d6445be6 100755
--- a/app/src/main/res/values-de/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-de/plurals-icsopenvpn.xml
@@ -14,7 +14,7 @@
<item quantity="other">%d Stunden verbleibend</item>
</plurals>
<plurals name="minutes_left">
- <item quantity="one">Ein Minute verbleibend</item>
+ <item quantity="one">Eine Minute verbleibend</item>
<item quantity="other">%d Minuten verbleibend</item>
</plurals>
</resources>
diff --git a/app/src/main/res/values-de/strings-icsopenvpn.xml b/app/src/main/res/values-de/strings-icsopenvpn.xml
index c80dc0d1..04c50cd2 100755
--- a/app/src/main/res/values-de/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-de/strings-icsopenvpn.xml
@@ -44,14 +44,14 @@
<string name="duplicate_profile_name">Profilname bereits vorhanden. Bitte vergeben Sie einen eindeutigen Profilnamen.</string>
<string name="profilename">Profilname</string>
<string name="no_keystore_cert_selected">Kein Benutzerzertifikat ausgewählt</string>
- <string name="no_ca_cert_selected">Kein Benutzerzertifikat ausgewählt.</string>
+ <string name="no_ca_cert_selected">Sie müssen ein CA-Zertifikat auswählen</string>
<string name="no_error_found">Kein Fehler.</string>
<string name="config_error_found">Fehler in der Konfiguration</string>
<string name="ipv4_format_error">Kann die konfigurierte IPv4 Adresse nicht parsen</string>
<string name="custom_route_format_error">Kann die manuell angegeben Routen nicht verarbeiten</string>
<string name="pw_query_hint">(Leer lassen, um nicht zu speichern)</string>
<string name="vpn_shortcut">OpenVPN-Verknüpfung</string>
- <string name="vpn_launch_title">Verbinde VPN&#8230;</string>
+ <string name="vpn_launch_title">Verbinde zu VPN&#8230;</string>
<string name="shortcut_profile_notfound">Von der Verknüpfung referenziertes Profil konnte nicht gefunden werden</string>
<string name="random_host_prefix">Zufälliger Host-Präfix</string>
<string name="random_host_summary">Fügt 6 zufällige Zeichen am Anfang des Hostnamens hinzu</string>
@@ -244,7 +244,7 @@
<string name="state_assign_ip">Weise IP-Adressen zu</string>
<string name="state_add_routes">Lege Routen an</string>
<string name="state_connected">Verbunden</string>
- <string name="state_disconnected">Trennen</string>
+ <string name="state_disconnected">Getrennt</string>
<string name="state_reconnecting">Wiederverbinden</string>
<string name="state_exiting">Beende</string>
<string name="state_noprocess">OpenVPN läuft nicht</string>
@@ -323,7 +323,7 @@
<string name="import_log">Import-Protokoll:</string>
<string name="ip_looks_like_subnet">VPN-Topologie \"%3$s\" wurde angegeben, die Interface-Konfiguration \'ifconfig %1$s %2$s sieht allerdings wie eine IP-Adresse mit einer Netzwerkmaske aus. Topologie \"subnet\" wird angenommen.</string>
<string name="mssfix_invalid_value">Wert muss eine Zahl zwischen 0 und 9000 sein</string>
- <string name="mtu_invalid_value">Der MTU-Wert muss eine Zahle zwischen 64 und 9000 sein</string>
+ <string name="mtu_invalid_value">Die MTU Override Angabe muss eine ganze Zahl zwischen 64 und 9000 sein</string>
<string name="mssfix_value_dialog">TCP-Verbindungen, die über den Tunnel laufen, anweisen, ihre maximale Paketgröße so einzustellen, dass die resultierende UDP-Paketgröße nach der Enkapsulierung durch OpenVPN auf den hier eingestellten Wert beschränkt bleibt. (Standardwert ist 1450)</string>
<string name="mssfix_checkbox">MSS-Wert der TCP-Nutzlast überschreiben</string>
<string name="mssfix_dialogtitle">MSS der TCP-Nutzlast</string>
@@ -409,7 +409,7 @@
<string name="samsung_broken_title">Samsung-Geräte</string>
<string name="novpn_selected">Kein VPN ausgewählt</string>
<string name="defaultvpn">Standard-VPN</string>
- <string name="defaultvpnsummary">Standard VPN. Wird momentan für VPN beim Booten, Always-On-Modus und die Schnellzugriffskachel benutzt.</string>
+ <string name="defaultvpnsummary">VPN für Fälle, wo ein Standard-VPN benötigt wird. Wird momentan beim Booten, Always-On-Modus und beim Schnellzugriffskachel benutzt.</string>
<string name="vpnselected">Derzeit ausgewähltes VPN: \'%s\'</string>
<string name="reconnect">Neu verbinden</string>
<string name="qs_title">VPN an-/ausschalten</string>
@@ -418,8 +418,8 @@
<string name="connectretrymaxmessage">Maximale Zeit zwischen Verbindungsversuchen. OpenVPN erhöht die Wartezeit zwischen zwei Verbindungsversuchen schrittweise bis zu dieser Zeit. Der Standardwert ist 300s.</string>
<string name="connectretrymaxtitle">Maximale Zeit zwischen Verbindungsversuchen</string>
<string name="state_waitconnectretry">Warte %ss Sekunden zwischen zwei Verbindungsversuchen</string>
- <string name="nought_alwayson_warning"><![CDATA[Wenn der VPN-Bestätigungs-Dialog nicht geöffnet wurde, ist \"Immer auf VPN\" für eine andere Anwendung aktiviert. In diesem Fall darf nur diese APP über VPN verbunden werden. Überprüfen Sie unter Einstellungen-> Netzwerke mehr... -> VPNS]]></string>
- <string name="management_socket_closed">Verbindung mit OpenVPN getrennt (%s)</string>
+ <string name="nought_alwayson_warning"><![CDATA[Wenn der VPN-Bestätigungs-Dialog nicht geöffnet wurde, ist \"Always on VPN\" für eine andere Anwendung aktiviert. In diesem Fall darf sich nur diese APP zu einem VPN verbinden. Überprüfen Sie unter Einstellungen -> Netzwerke oder Verbindungen -> mehr... oder weitere ...-> VPN]]></string>
+ <string name="management_socket_closed">Verbindung zu OpenVPN getrennt (%s)</string>
<string name="change_sorting">Sortierung ändern</string>
<string name="sort">Sortieren</string>
<string name="sorted_lru">Profile nach letzter Verwendung sortiert</string>
@@ -427,11 +427,11 @@
<string name="deprecated_tls_remote">Konfiguration verwendet die Option tls-remote, die in 2.3 als veraltet markiert und schließlich in 2.4 entfernt wurde</string>
<string name="auth_failed_behaviour">Verhalten bei AUTH_FAILED</string>
<string name="graph">Kurven</string>
- <string name="use_logarithmic_scale">logarithmische Skala verwnden</string>
- <string name="notenoughdata">noch keine Daten</string>
+ <string name="use_logarithmic_scale">Logarithmische Skala verwenden</string>
+ <string name="notenoughdata">Nicht genügend Daten</string>
<string name="avghour">Durchschnitt pro Stunde</string>
<string name="avgmin">Durchschnitt pro Minute</string>
- <string name="last5minutes">letzten 5 Minuten</string>
+ <string name="last5minutes">Die letzten 5 Minuten</string>
<string name="data_in">Eingehend</string>
<string name="data_out">Ausgehend</string>
<string name="bits_per_second">%.0f bit/s</string>
@@ -442,4 +442,18 @@
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Verbindungsstatistiken</string>
+ <string name="channel_description_background">Laufende Statistiken der OpenVPN-Verbindung</string>
+ <string name="channel_name_status">Verbindungsstatus Änderungen</string>
+ <string name="channel_description_status">Statusänderungen der OpenVPN-Verbindung (Verbindung, Authentifizierung,...)</string>
+ <string name="weakmd_title">Schwache (MD5) Hashes in Zertifikatssignatur (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL Geschwindigkeitstest</string>
+ <string name="openssl_cipher_name">OpenSSL Chiffrenamen</string>
+ <string name="osslspeedtest">OpenSSL Crypto Geschwindigkeitstest</string>
+ <string name="openssl_error">OpenSSL hat einen Fehler gemeldet</string>
+ <string name="running_test">Test läuft&#8230;</string>
+ <string name="test_algoirhtms">Ausgewählte Algorithmen testen</string>
+ <string name="all_app_prompt">Eine andere App versucht, %s zu steuern. Die anforderne App kann nicht bestimmt werden. Wenn Sie diesen Zugriff zulassen, erhalten ALLE Apps Zugriff.</string>
+ <string name="openvpn3_nostatickeys">Die OpenVPN 3 C ++ - Implementierung unterstützt keine statischen Schlüssel. Bitte wechseln Sie zu OpenVPN 2.x unter den allgemeinen Einstellungen.</string>
+ <string name="openvpn3_pkcs12">Die Benutzung von PKCS12 Dateien mit der OpenVPN 3 C++ Implementierung wird nicht unterstützt. Bitte importieren Sie entweder die PKCS12 Datei in den Android Keystore oder nutzen Sie die Option OpenVPN 2.x in den allgemeinen Einstellungen auszuwählen.</string>
</resources>
diff --git a/app/src/main/res/values-es/plurals-icsopenvpn.xml b/app/src/main/res/values-es/plurals-icsopenvpn.xml
index 2aa7eab7..0c0d5139 100755
--- a/app/src/main/res/values-es/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-es/plurals-icsopenvpn.xml
@@ -2,19 +2,19 @@
<!--Generated by crowdin.com-->
<resources>
<plurals name="months_left">
- <item quantity="one">%d mes restante</item>
- <item quantity="other">%d meses restantes</item>
+ <item quantity="one">Queda un mes</item>
+ <item quantity="other">Queda un mes</item>
</plurals>
<plurals name="days_left">
<item quantity="one">%d día restante</item>
- <item quantity="other">%d días restantes</item>
+ <item quantity="other">%d día restante</item>
</plurals>
<plurals name="hours_left">
<item quantity="one">%d hora restante</item>
- <item quantity="other">%d horas restantes</item>
+ <item quantity="other">%d hora restante</item>
</plurals>
<plurals name="minutes_left">
<item quantity="one">%d minuto restanate</item>
- <item quantity="other">%d minutos restanates</item>
+ <item quantity="other">%d minuto restanate</item>
</plurals>
</resources>
diff --git a/app/src/main/res/values-es/strings-icsopenvpn.xml b/app/src/main/res/values-es/strings-icsopenvpn.xml
index a123d5e6..42a15975 100755
--- a/app/src/main/res/values-es/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-es/strings-icsopenvpn.xml
@@ -51,6 +51,7 @@
<string name="custom_route_format_error">Error al analizar las rutas personalizadas</string>
<string name="pw_query_hint">(Deje en blanco para consultar sobre demanda)</string>
<string name="vpn_shortcut">Acceso directo de OpenVPN</string>
+ <string name="vpn_launch_title">Conectando a VPN&#8230;</string>
<string name="shortcut_profile_notfound">Perfil especificado en el acceso directo no encontrado</string>
<string name="random_host_prefix">Prefijo aleatorio de Host</string>
<string name="random_host_summary">Agrega 6 caracteres al azar delante del nombre de host</string>
@@ -252,6 +253,7 @@ hacia/de Móvil)</string>
<string name="state_tcp_connect">Conectando (TCP)</string>
<string name="state_auth_failed">Fallo de autenticación</string>
<string name="state_nonetwork">Esperando por una red que se pueda usar</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">No conectado</string>
<string name="start_vpn_title">Conectando a VPN %s</string>
<string name="start_vpn_ticker">Conectando a VPN %s</string>
@@ -322,6 +324,7 @@ hacia/de Móvil)</string>
<string name="import_log">Importar registros:</string>
<string name="ip_looks_like_subnet">Topología de VPN \"%3$s\" especificado pero ifconfig %1$s %2$s se parece más a una dirección IP con una máscara de red. Asumiendo una topología de \"subred\".</string>
<string name="mssfix_invalid_value">El valor de mssfix debe ser un número entero entre 0 y 9000</string>
+ <string name="mtu_invalid_value">El valor de anulación de MTU debe ser un número entero entre 64 y 9000</string>
<string name="mssfix_value_dialog">Anunciar a las sesiones TCP ejecutandose sobre el túnel que deben limitar su tamaño de paquetes enviados de tal manera que después de que OpenVPN los hay encapsulado, el tamaño del paquete UDP resultante enviado a su par no exceda este numero de bytes. (Por defecto es 1450)</string>
<string name="mssfix_checkbox">Reemplazar el valor MSS de la carga TCP</string>
<string name="mssfix_dialogtitle">Establecer MSS de la carga TCP</string>
@@ -391,9 +394,54 @@ hacia/de Móvil)</string>
<string name="query_permissions_sdcard">OpenVPN para Android puede tratar de encontrar el/los archivo/s faltante/s en la tarjeta de memoria automáticamente. Toque este mensaje de iniciar la solicitud de permiso.</string>
<string name="protocol">Protocolo</string>
<string name="enabled_connection_entry">Activo</string>
+ <string name="abi_mismatch">La precedencia de ABI nativa preferida de este dispositivo (%1$s) y la ABI informada por bibliotecas nativas (%2$s) no coinciden</string>
+ <string name="permission_revoked">Permiso de VPN revocado por el sistema operativo (por ejemplo, otro programa de VPN iniciado), deteniendo VPN</string>
+ <string name="pushpeerinfo">Presión información por igual</string>
+ <string name="pushpeerinfosummary">Enviar información adicional al servidor, por ejemplo, la versión SSL y la versión de Android</string>
+ <string name="pw_request_dialog_title">Necesito %1$s</string>
+ <string name="pw_request_dialog_prompt">Por favor, introduzca la contraseña para el perfil %1$s</string>
+ <string name="menu_use_inline_data">Utilizar datos en línea</string>
+ <string name="export_config_chooser_title">Exportar archivo de configuración</string>
+ <string name="missing_tlsauth">falta el archivo tls-auth</string>
+ <string name="missing_certificates">Falta el certificado de usuario o el archivo de clave de certifcación del usuario</string>
<string name="missing_ca_certificate">Falta certificado CA</string>
+ <string name="crl_title">Lista de revocación de certificados (opcional)</string>
<string name="reread_log">Vuelva a leer (%d) artículos de archivo de caché de registro log</string>
<string name="samsung_broken">A pesar de que los teléfonos Samsung son algunos de los teléfonos Android más vendidos, el firmware de Samsung se encuentran entre los firmware con más errores. Los errores no se limitan a la operación del VPN en estos dispositivos, pero muchos de ellos se pueden solucionar. A continuación de describen algunos errores. \n\n El DNS no funciona a menos que el servidor DNS en el rango del VPN. \n \n En muchos dispositivos Samsung 5.x la funcionalidad de aplicaciones permitidas y no permitidas no funciona. \n En Samsung 6.x Se reporta que VPN no funcionará a menos que la aplicación de VPN se encuentre por fuera de la funcionalidad de ahorro de energía.</string>
<string name="samsung_broken_title">Celulares Samsung</string>
<string name="novpn_selected">VPN no seleccionado.</string>
+ <string name="defaultvpn">VPN predeterminado</string>
+ <string name="defaultvpnsummary">VPN utilizado en lugares donde se necesita una VPN predeterminada. Estos están actualmente en arranque, para siempre y la ficha de configuración rápida.</string>
+ <string name="vpnselected">VPN actualmente seleccionada: \'%s\'</string>
+ <string name="reconnect">Reconectar</string>
+ <string name="qs_title">Alternar VPN</string>
+ <string name="qs_connect">Conéctese a %s</string>
+ <string name="qs_disconnect">Desconectar %s</string>
+ <string name="connectretrymaxmessage">Ingrese el tiempo máximo entre intentos de conexión. OpenVPN aumentará lentamente su tiempo de espera después de una tentativa de conexión fallida hasta este valor. El valor predeterminado es 300s.</string>
+ <string name="connectretrymaxtitle">Tiempo máximo entre intentos de conexión</string>
+ <string name="state_waitconnectretry">Esperando %s segundos entre intento de conexión</string>
+ <string name="nought_alwayson_warning"><![CDATA[Si no obtuvo un cuadro de diálogo de confirmación VPN, tiene \ "Siempre en VPN \" habilitado para otra aplicación. En ese caso, solo esa aplicación puede conectarse a una VPN. Verifique en Configuraciones-> Redes más .. -> VPNS]]></string>
+ <string name="management_socket_closed">Conexión a OpenVPN cerrada (%s)</string>
+ <string name="change_sorting">Cambio de clasificación</string>
+ <string name="sort">Ordenar</string>
+ <string name="sorted_lru">Perfiles ordenados por última vez usados ​​recientemente</string>
+ <string name="sorted_az">Perfiles ordenados por nombre</string>
+ <string name="deprecated_tls_remote">Config usa la opción tls-remote que quedó obsoleta en 2.3 y finalmente eliminada en 2.4</string>
+ <string name="auth_failed_behaviour">Comportamiento en AUTH_FAILED</string>
+ <string name="graph">Grafico</string>
+ <string name="use_logarithmic_scale">Usar escala logarítmica</string>
+ <string name="notenoughdata">No hay suficientes datos</string>
+ <string name="avghour">Promedio por hora</string>
+ <string name="avgmin">Promedio por minuto</string>
+ <string name="last5minutes">Últimos 5 minutos</string>
+ <string name="data_in">En</string>
+ <string name="data_out">Fuera</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 6355ce62..b5955a95 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -13,7 +13,6 @@
<string name="cert_from_keystore">Certificado de \'%s\' obtenido de almacén de claves</string>
<string name="repository_url_text">Código fuente disponible en https://0xacab.org/leap/bitmask_android</string>
<string name="leap_tracker">Tracker disponible en https://0xacab.org/leap/bitmask_android/issues</string>
- <string name="title_activity_dashboard">Bitmask</string>
<string name="provider_label">Proveedor:</string>
<string name="provider_label_none">Ningún proveedor configurado</string>
<string name="status_unknown">Estado no definido.</string>
@@ -56,7 +55,6 @@
<string name="incorrectly_downloaded_certificate_message">Tu certificado VPN no pudo ser descargado. Intenta iniciar sesión si es posible.</string>
<string name="downloading_certificate_message">Descargando certificado VPN</string>
<string name="updating_certificate_message">Actualizando certificado VPN</string>
- <string name="log_out_failed_message">No pudo cerrarse la sesión. Inténtalo más tarde, quizás sea un problema de la red o del proveedor. Si el problema persiste, borra los datos locales de Bitmask desde la configuración de Android.</string>
<string name="login.riseup.warning">"Usuarios de Riseup: es necesario crear una cuenta aparte para utilizar el servicio de VPN."</string>
<string name="succesful_authentication_message">Sesión iniciada.</string>
<string name="authentication_failed_message">Inicio de sesión fallido.</string>
diff --git a/app/src/main/res/values-fr/strings-icsopenvpn.xml b/app/src/main/res/values-fr/strings-icsopenvpn.xml
index ae289702..a647bf40 100755
--- a/app/src/main/res/values-fr/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-fr/strings-icsopenvpn.xml
@@ -6,7 +6,7 @@
-->
<resources>
- <string name="address">"Adresse du serveur:"</string>
+ <string name="address">Adresse du serveur :</string>
<string name="port">Port du serveur :</string>
<string name="location">"Emplacement"</string>
<string name="cant_read_folder">Impossible de lire le dossier</string>
@@ -128,9 +128,9 @@
<string name="no_vpn_support_image">"Votre ROM ne prend pas en charge l\'API VPNService, désolé :("</string>
<string name="encryption">Chiffrement</string>
<string name="cipher_dialog_title">Entrez la méthode de chiffrement</string>
- <string name="chipher_dialog_message">Entrez l\'algorithme de chiffrement utilisé par OpenVPN. Laisser vide pour utiliser le cipher par défaut.</string>
+ <string name="chipher_dialog_message">Entrez l\'algorithme de chiffrement utilisé par OpenVPN. Laissez vide pour utiliser l\'algorithme par défaut.</string>
<string name="auth_dialog_message">Entrez l\'authentification digest utilisé pour OpenVPN. Laisser vide pour utiliser le digest par défaut.</string>
- <string name="settings_auth">Authentification / Chiffrement</string>
+ <string name="settings_auth">Authentification/Chiffrement</string>
<string name="file_explorer_tab">Explorateur de fichiers</string>
<string name="inline_file_tab">"Fichier personnalisé"</string>
<string name="error_importing_file">"Impossible d\'importer le fichier"</string>
@@ -161,11 +161,11 @@
<string name="converted_profile_i">profil importé %d</string>
<string name="broken_images">Images corrompues</string>
<string name="broken_images_faq">&lt;&gt;Les ROMs officielles HTC sont connues pour avoir des problèmes de routage entraînant que le trafic ne passe pas par le tunnel VPN. (C.f.: &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;Issue 18&lt;/a&gt; dans le \"bug tacker\")&lt;/p&gt;&lt;p&gt;Les ROMs officielles de SONY pour le Xperia Arc S et le Xperia Ray ont été signalé comme ne possédant pas le service VPN. Toute autre ROM SONY peut avoir le même problème. (C.f.: &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;Issue 29&lt;/a&gt; dans le \"bug tacker\")&lt;/p&gt;&lt;p&gt;Sur les ROM personnalisées le module TUN peut être manquant ou les droits de /dev/tun peuvent être incorrects. Certaines ROM CM9 peuvent nécessiter d\'utiliser l\'option de correction des droits de /dev/tun accessible depuis les \"Options générales\"/&lt;/p&gt;&lt;p&gt;Important: Si votre ROM a un problème, contactez le vendeur, il se peut que qu\'il vous fournisse un patch.&lt;/p&gt;</string>
- <string name="pkcs12_file_encryption_key">Fichier contenant la clé de chiffrement PKCS12</string>
+ <string name="pkcs12_file_encryption_key">Fichier avec la clé de chiffrement PKCS12</string>
<string name="private_key_password">Mot de passe de la clé privée</string>
<string name="password">Mot de passe</string>
<string name="file_icon">icône du fichier</string>
- <string name="tls_authentication">TLS Authentification/Cryptage</string>
+ <string name="tls_authentication">Authentification TLS/Chiffrement</string>
<string name="generated_config">Configuration générée</string>
<string name="generalsettings">Paramètres</string>
<string name="owner_fix_summary">Essaie de définir le propriétaire de l\'interface /dev/tun. Certaines images CM9 en ont besoin pour faire fonctionner l\'API VPNService. Nécessite les droits root.</string>
@@ -174,7 +174,7 @@
<string name="edit_profile_title">Modification \"%s\"</string>
<string name="building_configration">Création de la configuration&#8230;</string>
<string name="netchange_summary">Activer cette option forcera une reconnexion si l\'état du réseau est modifié (par exemple WiFi/Mobile)</string>
- <string name="netchange">Se reconnecter lors d\'un changement de réseau</string>
+ <string name="netchange">Se reconnecter au changement de réseau</string>
<string name="netstatus">État du réseau : %s</string>
<string name="extracahint">"Le certificat CA est généralement renvoyé par le gestionnaire de clés Android. Spécifiez un certificat distinct si vous obtenez des erreurs de vérification de certificat."</string>
<string name="select_file">"Sélectionner"</string>
@@ -205,7 +205,7 @@ 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="onbootrestartsummary">OpenVPN connecter le VPN spécifié si elle était active au démarrage du système. S\'il vous plaît lire l\'avertissement de connexion FAQ avant d\'utiliser cette option sur Android &lt; 5.0.</string>
+ <string name="onbootrestartsummary">OpenVPN connectera le VPN spécifié si elle était active au démarrage du système. Veuillez lire l\'avertissement de connexion FAQ avant d\'utiliser cette option sur Android &lt; 5.0.</string>
<string name="onbootrestart">Se connecter au redémarrage</string>
<string name="ignore">Ignorer</string>
<string name="restart">Redémarrer</string>
@@ -215,8 +215,8 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="faq_duplicate_notification_title">Notifications en double</string>
<string name="faq_duplicate_notification">"Si Android tourne sur la mémoire du système (RAM), les application et les services qui ne sont pas nécessaires à un moment sont automatiquement supprimés de la mémoire. Cela stoppe donc la connexion VPN en cours. Pour s\'assurer que celle-ci reste toujours lancée, le service est lancé avec une priorité plus élevée. Pour cela, l\'application doit afficher une notification permanente. L\'icône de \"clé\" dans la notification est imposée par le système comme expliqué dans l\'entrée de la FAQ précédente."</string>
<string name="no_vpn_profiles_defined">Aucun profil VPN défini.</string>
- <string name="add_new_vpn_hint">"Utilisez l\'icône &lt;img src=\"ic_menu_add\"/ pour ajouter un nouveau VPN"</string>
- <string name="vpn_import_hint">"Utilisez l\'icône &lt;img src=\"ic_menu_archive\"/&gt; pour importer un fichier profil (.opvpn ou .conf) de votre carte SD."</string>
+ <string name="add_new_vpn_hint">Utilisez l\'icône &lt;img src=\"ic_menu_add\"/&gt; pour ajouter un nouveau VPN.</string>
+ <string name="vpn_import_hint">Utilisez l\'icône &lt;img src=\"ic_menu_archive\"/&gt; pour importer un profil existant (.opvpn ou .conf) depuis votre carte SD.</string>
<string name="faq_hint">"Veillez également à consulter la FAQ. Il s\'y trouve un guide de démarrage rapide."</string>
<string name="faq_routing_title">"Redirections / Configuration de l\'interface"</string>
<string name="faq_routing">La configuration du routage et des interfaces n\'est pas faite par l\'intermédiaire des commandes traditionnelles ifconfig/route, mais en utilisant l\'API VPNService. Il en résulte une configuration de routage différente que sur les autres systèmes d\'exploitation. \nLa configuration du tunnel VPN se compose de l\'adresse IP et des réseaux qui doivent être routés via cette interface. En particulier aucune adresse de pair ou de passerelle n\'est nécessaire ou requise. Des routes spéciales pour atteindre le serveur VPN (par exemple ajoutées lorsque vous utilisez \"redirect-gateway\") ne sont pas nécessaires. L\'application ignore par conséquent ces paramètres lors de l\'importation d\'une configuration. L\'application assure avec l\'API VPNService que la connexion au serveur ne passe pas par le tunnel VPN.\nL\'API VPNService ne permet pas de spécifier les réseaux qui ne doivent pas être routés via le VPN. Pour contourner ce problème, l\'application essaye de détecter les réseaux qui ne doivent pas être routés par le tunnel (ex. route x.x.x.x y.y.y.y net_gateway) et calcule un ensemble de routes qui exclut cette route pour mimer le comportement des autres plates-formes. La fenêtre des logs montre la configuration de VPNService lors d\'une connexion.\nEn coulisse: Android 4.4+ n\'utilise pas la politique du routage. Utiliser route/ifconfig n\'affichera pas les routes installés. Utilisez plutôt ip rule, iptables -t mangle -L</string>
@@ -273,7 +273,7 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="rdn_prefix">Préfixe RDN</string>
<string name="tls_remote_deprecated">tls-remote (OBSOLÈTE)</string>
<string name="help_translate">Vous pouvez aider à traduire en visitant http://crowdin.net/project/ics-openvpn/invite</string>
- <string name="prompt">%1$s essais de controler %2$s</string>
+ <string name="prompt">%1$s essaye de contrôler %2$s</string>
<string name="remote_warning">En poursuivant vous donnez la permission a l\'application de contrôler complètement OpenVPN pour Android et d\'intercepter tout le trafic réseau.<b>N\'acceptez que si vous faite confiance à l\'application.</b> Sinon vous vous exposez au risque de voir vos données compromises par un logiciel malveillant.\"</string>
<string name="remote_trust">Faire confiance à cette application.</string>
<string name="no_external_app_allowed">Aucune application n\'est autorisée à utiliser l\'API externe</string>
@@ -294,7 +294,7 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="vpnbehaviour">Comportement du VPN</string>
<string name="allow_vpn_changes">Autoriser les modifications des profils VPN</string>
<string name="hwkeychain">Clés du matériel :</string>
- <string name="permission_icon_app">Icône de l\'application qui essaie d\'utiliser OpenVPN for Android</string>
+ <string name="permission_icon_app">Icône de l\'appli essayant d\'utiliser OpenVPN for Android</string>
<string name="faq_vpndialog43">"À partir d\'Android 4.3 la confirmation VPN est gardée contre les \"applications recouvrante\". Cela se traduit par la boîte de dialogue qui ne réagi pas à la saisie tactile. Si vous avez une application qui utilise des superpositions, elle peut causer ce comportement. Si vous trouvez une application délinquante contacter l\'auteur de l\'application. Ce problème affecte toutes les applications VPN sur Android 4.3 et plus. Voir aussi &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;Issue 185&lt;a&gt; pour plus de détails"</string>
<string name="faq_vpndialog43_title">Fenêtre de confirmation du VPN</string>
<string name="donatePlayStore">Sinon vous pouvez m\'envoyer un don via le Play Store :</string>
@@ -319,10 +319,11 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="userpw_file">Fichier Nom d\'utilisateur/Mot de passe</string>
<string name="imported_from_file">[Importé de : %s]</string>
<string name="files_missing_hint">Certains fichiers sont introuvables. Sélectionner les fichiers pour importer le profil :</string>
- <string name="openvpn_is_no_free_vpn">Pour utiliser cette application, vous avez besoin d\'un fournisseur/passerelle VPN qui soutient OpenVPN (souvent fourni par votre employeur). Vérifier ici http://community.openvpn.net/ pour plus d\'informations sur OpenVPN et comment configurer votre propre serveur OpenVPN.</string>
+ <string name="openvpn_is_no_free_vpn">Pour utiliser cette application, vous avez besoin d\'un fournisseur/passerelle VPN qui soutient OpenVPN (souvent fourni par votre employeur). Vérifier ici http://community.openvpn.net pour plus d\'informations sur OpenVPN et comment configurer votre propre serveur OpenVPN.</string>
<string name="import_log">Journal d\'importation :</string>
<string name="ip_looks_like_subnet">Topologie VPN «%3$s » spécifiée mais ifconfig %1$s %2$s ressemble plus à une adresse IP avec un masque de réseau. On suppose que la topologie « sous-réseau » est utilisée.</string>
<string name="mssfix_invalid_value">La valeur de mssfix doit être un entier compris entre 0 et 9000</string>
+ <string name="mtu_invalid_value">La valeur de dépassement MTU doit être un entier compris entre 64 et 9000</string>
<string name="mssfix_value_dialog">Annoncer aux sessions TCP en cours d\'exécution sur le tunnel qu\'ils devraient limiter leurs tailles de paquets d\'émission de telle sorte qu\'après OpenVPN les a encapsulé, la taille des paquets UDP résultant que OpenVPN envoie à son homologue ne dépassera pas ce nombre d\'octets. (Valeur par défaut est 1450)</string>
<string name="mssfix_checkbox">Remplacer la valeur MSS de TCP payload</string>
<string name="mssfix_dialogtitle">Définir MSS de TCP payload</string>
@@ -402,6 +403,9 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="reread_log">Relire (%d) éléments du fichier de log</string>
<string name="samsung_broken_title">Téléphones Samsung</string>
<string name="novpn_selected">Aucun VPN sélectionné.</string>
+ <string name="defaultvpn">VPN par défaut</string>
+ <string name="defaultvpnsummary">VPN utilisé dans les endroits où un VPN par défaut est nécessaire. Ceux-ci sont actuellement en cours de démarrage, pour Always-On et la tuile de paramétrage rapide.</string>
+ <string name="vpnselected">VPN actuellement sélectionné : \"%s\"</string>
<string name="reconnect">Reconnecter</string>
<string name="qs_title">Activer VPN</string>
<string name="qs_connect">Connecter à %s</string>
@@ -414,4 +418,20 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="sort">Trier</string>
<string name="sorted_lru">Profils triés par dernier récemment utilisé</string>
<string name="sorted_az">Profils triés par nom</string>
+ <string name="graph">Graphique</string>
+ <string name="use_logarithmic_scale">Utiliser l\'échelle logarithmique</string>
+ <string name="notenoughdata">Données insuffisantes</string>
+ <string name="avghour">Moyenne par heure</string>
+ <string name="avgmin">Moyenne par minute</string>
+ <string name="last5minutes">5 dernières minutes</string>
+ <string name="data_in">Entré</string>
+ <string name="data_out">Sorti</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-hu/strings-icsopenvpn.xml b/app/src/main/res/values-hu/strings-icsopenvpn.xml
index a1db366c..4eafc9c1 100755
--- a/app/src/main/res/values-hu/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-hu/strings-icsopenvpn.xml
@@ -179,13 +179,13 @@
<string name="extracahint">A CA tanúsítvány általában visszajön az Android Keystore-ból. Adjon meg egy külön tanúsítványt ha tanúsítvány-ellenőrzési hibát kap.</string>
<string name="select_file">Választ</string>
<string name="keychain_nocacert">Nem jött vissza CA tanúsítvány az Android keystore olvasása során. A hitelesítés valószínűleg sikertelen lesz.</string>
- <string name="show_log_summary">Napló ablak mutatása a csatlakozás alatt. A napló ablak mindig elérető a rolóról is.</string>
+ <string name="show_log_summary">Napló ablak mutatása a csatlakozás alatt. A napló ablak mindig elérhető a rolóról is.</string>
<string name="show_log_window">Naplózási ablak mutatása</string>
<string name="mobile_info">%10$s %9$s futtatva %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Hiba az Android keystore %1$s: %2$s kulccsal való belépéskor</string>
<string name="faq_system_dialogs">A VPN csatlakozás figyelmeztetés azt jelzi, hogy ez az alkalmazás a rendszer általi teljes forgalmat lehallgathatja a VPNService API visszaélések elkerülése érdekében.\nA VPN csatlakozás értesítés (A kulcs szimbólum) is az Android rendszer jelzése egy kimenő VPN kapcsolatról. Néhány lemezképen ez az értesítés hangot is lejátszik.\nAz android az ön biztonsága érdekében vezette be ezeket a rendszer értesítéseket, és gondoskodott arról, hogy ne lehessen megkerülni. (Néhány lemezképen ez sajnos értesítési hangot is tartalmaz.)</string>
<string name="faq_system_dialogs_title">Kapcsolat figyelmeztetés és értesítés hang</string>
- <string name="translationby">A magyar fordítást készítették: kisjuhos, hd_adam, tomygee, Floo19, PettyBlue, ha1dfo</string>
+ <string name="translationby">A magyar fordítást készítették: kisjuhos, hd_adam, tomygee, Floo19, PettyBlue, ha1dfo, mmisi74, benewfy</string>
<string name="ipdns">IP és DNS</string>
<string name="basic">Alapvető</string>
<string name="routing">Útválasztás</string>
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Csatlakozás (TCP)</string>
<string name="state_auth_failed">Hitelesítési hiba</string>
<string name="state_nonetwork">Várakozás használható hálózatra</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Nincs kapcsolat</string>
<string name="start_vpn_title">Csatlakozás a %s VPN-hez</string>
<string name="start_vpn_ticker">Csatlakozás a %s VPN-hez</string>
@@ -322,6 +323,7 @@
<string name="import_log">Importálási napló:</string>
<string name="ip_looks_like_subnet">VPN topológia \"%3$s\" specifikálva, de ifconfig %1$s %2$s inkább IP címnek tűnik hálózati maszkkal. \"Alhálózat\" topológiát feltételezve.</string>
<string name="mssfix_invalid_value">Az MSS felülbírálati értéknek egész számnak kell lennie 0 és 9000 között</string>
+ <string name="mtu_invalid_value">Az MTU felülbírálati értéknek egész számnak kell lennie 64 és 9000 között</string>
<string name="mssfix_value_dialog">Jelentse be a TCP munkameneteknek, hogy korlátozniuk kell a küldendő csomagjaik méretét hogy miután az OpenVPN bekapszulázza őket a peer-nek küldendő eredmény UDP csomag mérete ne haladhassa meg ezt a byte számot. (az alapérték 1450)</string>
<string name="mssfix_checkbox">TCP payload MSS felülbírálati érték</string>
<string name="mssfix_dialogtitle">MSS beállítás a TCP payload-hoz</string>
@@ -406,6 +408,9 @@
<string name="samsung_broken">Annak ellenére, hogy a Samsung telefonok a legtöbbet eladott Android telefonok közé tartoznak, a Samsung firmware-ek a leg bug-osabb Android firmware-ek. Ezeken az eszközökön a hibák nem csak a VPN működésre korlátozódnak, de nagy részük kiküszöbölhető. A következő néhány ilyen hiba leírása.\n\nA DNS nem működik hacsak nem a DNS kiszolgáló a VPN tartományban van.\n\nSok Samsung 5.x eszközön nem működik az engedélyezett/tiltott alkalmazások funkció.\nSamsung 6.0-n a VPN nem működik hacsak nem adjuk hozzá kivételként az alkalmazást a Powersave funkcióknál.</string>
<string name="samsung_broken_title">Samsung telefonok</string>
<string name="novpn_selected">Nincs VPN kiválasztva.</string>
+ <string name="defaultvpn">Alapértelmezett VPN</string>
+ <string name="defaultvpnsummary">VPN használata azokon a helyeken ahol alapértelmezett VPN szükséges. Ezek jelenleg a boot-oláskor, a Mindig-BE és a Gyors Beállítások csempe.</string>
+ <string name="vpnselected">Jelenleg kiválasztott VPN: \'%s\'</string>
<string name="reconnect">Újracsatlakozás</string>
<string name="qs_title">VPN be/kikapcsolás</string>
<string name="qs_connect">Csatlakozás %s-hez</string>
@@ -420,4 +425,53 @@
<string name="sorted_lru">A profilok a legutóbbi használat szerint rendezve</string>
<string name="sorted_az">A profilok név szerint rendezve</string>
<string name="deprecated_tls_remote">A konfiguráció tls-remote opciót használ, ami a 2.3-ban elavulttá vált és a 2.4-ben végleg eltávolították</string>
+ <string name="auth_failed_behaviour">Viselkedés AUTH_FAILED-kor</string>
+ <string name="graph">Grafikon</string>
+ <string name="use_logarithmic_scale">Logaritmikus skála használata</string>
+ <string name="notenoughdata">Nincs elég adat</string>
+ <string name="avghour">Átlag óránként</string>
+ <string name="avgmin">Átlag percenként</string>
+ <string name="last5minutes">Utolsó 5 perc</string>
+ <string name="data_in">Be</string>
+ <string name="data_out">Ki</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="weakmd">&lt;p&gt;Az OpenSSL az 1.1-es verziótól kezdve elutasítja a gyenge aláírásokat, mint például
+ az MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Az MD5 aláírások egyáltalán nem biztonságosak, a továbbiakban nem kellene használni.&lt;/b&gt; MD5
+ ütközést lehet létrehozni&lt;
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt;néhány óra alatt minimális erőfeszítéssel.&lt;/a&gt;.
+ Frissítenie kellene a VPN tanúsítványokat amint lehetséges.&lt;/p&gt;&lt;p&gt;Sajnos, a régebbi easy-rsa disztribúciók a \"default_md md5\" beállítás opciót tartalmazták. Ha régi easy-rsa verziót használ, frissítsen
+ a &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;legutóbbi verzióra&lt;/a&gt;) vagy módosítsa az md5-ot sha256-ra és
+ generálja újra a tanúsítványokat.&lt;/p&gt;&lt;p&gt;Ha mégis a régi megtört tanúsítványokat szeretné használni, akkor használja
+ tls-cipher \"DEFAULT:@SECLEVEL=0\" konfiguráció opciót a haladó beállításoknál, vagy adja hozzá mint új sort
+ az importált konfigurációhoz.&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Kapcsolatstatisztika</string>
+ <string name="channel_description_background">A létrehozott OpenVPN kapcsolat pillanatnyi statisztikái</string>
+ <string name="channel_name_status">Kapcsolat állapot változás</string>
+ <string name="channel_description_status">Állapotváltozások az OpenVPN kapcsolatban (Csatlakozás, hitelesítés,&#8230;)
+ </string>
+ <string name="weakmd_title">Gyenge (MD5) hash-ek a tanúsítvány aláírásban (SSL_CTX_use_certificate md túl gyenge)
+ </string>
+ <string name="title_activity_open_sslspeed">OpenSSL Sebesség Teszt</string>
+ <string name="openssl_cipher_name">OpenSSL titkosítások</string>
+ <string name="osslspeedtest">OpenSSL Titkosítás Sebesség teszt</string>
+ <string name="openssl_error">Az OpenSSL hibával tért vissza</string>
+ <string name="running_test">A teszt fut&#8230;</string>
+ <string name="test_algoirhtms">Kijelölt algoritmusok tesztelése</string>
+ <string name="all_app_prompt">Egy külső alkalmazás megpróbálja vezérelni a(z) %s-t. Az alkalmazást nem lehet felismerni, a hozzáférés megadása
+ MINDEN alkalmazás számára elérhetőséget biztosít.
+ </string>
+ <string name="openvpn3_nostatickeys">Az OpenVPN 3 C++ implementáció nem támogatja a statikus kulcsokat, Kérem, váltson
+ OpenVPN 2.x-re az általános beállításokban.
+ </string>
+ <string name="openvpn3_pkcs12">PKCS12-fájlok közvetlen használata nem támogatott az OpenVPN 3 C++ implementációval.
+ Kérem, importálja az Android kulcstárba a pkcs12 fájlokat, vagy váltson OpenVPN 2.x-re az általános beállításokban.
+ </string>
</resources>
diff --git a/app/src/main/res/values-in/strings-icsopenvpn.xml b/app/src/main/res/values-in/strings-icsopenvpn.xml
index e310d2f9..784ee9bf 100755
--- a/app/src/main/res/values-in/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-in/strings-icsopenvpn.xml
@@ -12,19 +12,19 @@
<string name="cant_read_folder">Gagal membaca direktori:</string>
<string name="select">Pilih</string>
<string name="cancel">Batal</string>
- <string name="no_data">Tak ada data</string>
+ <string name="no_data">Tidak ada data</string>
<string name="useLZO">Kompresi LZO</string>
- <string name="client_no_certificate">Tanpa Sertifikat</string>
+ <string name="client_no_certificate">Tidak ada Sertifikat</string>
<string name="client_certificate_title">Sertifikat Klien</string>
<string name="client_key_title">Kunci Sertifikat Klien</string>
<string name="client_pkcs12_title">Berkas PKCS12</string>
<string name="ca_title">Sertifikat CA</string>
<string name="no_certificate">Anda harus memilih sertifikat</string>
- <string name="copyright_guicode">Kode sumber dan pelacak masalah tersedia di http://code.google.com/p/ics-openvpn/</string>
- <string name="copyright_others">Program ini menggunakan komponen-komponen berikut ini; lihat kode sumber penjelasan lengkap mengenai lisensi</string>
+ <string name="copyright_guicode">Kode sumber dan masalah pelacak tersedia di http://code.google.com/p/ics-openvpn/</string>
+ <string name="copyright_others">Program ini menggunakan komponen berikut ini; lihat kode sumber penjelasan lengkap mengenai lisensi</string>
<string name="about">Tentang</string>
<string name="vpn_list_title">Profil</string>
- <string name="vpn_type">Jenis</string>
+ <string name="vpn_type">Tipe</string>
<string name="pkcs12pwquery">Password PKCS12</string>
<string name="file_select">Pilih&#8230;</string>
<string name="file_nothing_selected">Anda harus memilih setidaknya satu berkas</string>
@@ -54,21 +54,21 @@
<string name="vpn_launch_title">Dyan</string>
<string name="shortcut_profile_notfound">Profil di shrotcut tidak ada</string>
<string name="random_host_prefix">Acak awalan Host </string>
- <string name="random_host_summary">Tambah 6 karakter acak di depan nama host</string>
- <string name="custom_config_title">Aktifkan pilihan buatan</string>
- <string name="custom_config_summary">Tentukan seting buatan. Gunakan hati-hati!</string>
- <string name="route_rejected">Rute ditolak Android</string>
- <string name="cancel_connection">Putus</string>
+ <string name="random_host_summary">Tambahkan 6 karakter acak di depan nama host</string>
+ <string name="custom_config_title">Aktifkan pilihan buatan (Custom)</string>
+ <string name="custom_config_summary">Tentukan seting buatan (Custom). Gunakan hati-hati!</string>
+ <string name="route_rejected">Rute ditolak oleh Android</string>
+ <string name="cancel_connection">Koneksi Putus</string>
<string name="cancel_connection_long">Memutuskan sambungan VPN</string>
<string name="clear_log">Bersihkan catatan</string>
- <string name="title_cancel">Batal Konfirmasi</string>
- <string name="cancel_connection_query">Putuskan sambungan VPN/Batalkan usaha menyambungkan VPN?</string>
- <string name="remove_vpn">Singkirkan VPN</string>
+ <string name="title_cancel">Membatalkan Konfirmasi</string>
+ <string name="cancel_connection_query">Putuskan sambungan VPN/Batalkan upaya penyambungan VPN?</string>
+ <string name="remove_vpn">Hapus VPN</string>
<string name="check_remote_tlscert">Memeriksa apakah server menggunakan sertifikat dengan ekstensi TLS Server (--server remote-cert-tls)</string>
<string name="check_remote_tlscert_title">Mengharapkan sertifikat server TLS</string>
- <string name="remote_tlscn_check_summary">Memeriksa sertifikat Remote Server Subjek DN</string>
+ <string name="remote_tlscn_check_summary">Memeriksa sertifikat Remote Server dengan Subjek DN</string>
<string name="remote_tlscn_check_title">Cek nama sertifikat Host</string>
- <string name="enter_tlscn_dialog">Tentukan nilai ynag digunakan untuk memverifikasi sertifikat remote DN (misal C=nama perusahaan, L=Kota lokasi, OU=nama departemen perusahaan, CN=openvpn.blinkt.de. Tentukan DN atau RDN yang lengkap (dalam contoh : openvpn.blinkt.de) atau sebuah awalan RDN untuk verifikasi. Saat memakai RDN awalan \"server\" cocok dengan \"server-1\" dan \"server-2\". Mengosongkan field akan membuat RDN diperiksa dengan nama host server. Lebih jelasnya lihat OpenVPN 2.3.1 manpage di bagian -verify-x509-name</string>
+ <string name="enter_tlscn_dialog">Tentukan nilai yang digunakan untuk memverifikasi sertifikat remote DN (misal C=nama perusahaan, L=Kota lokasi, OU=nama departemen perusahaan, CN=openvpn.blinkt.de. Tentukan DN atau RDN yang lengkap (dalam contoh: openvpn.blinkt.de) atau sebuah awalan RDN untuk verifikasi. Saat memakai RDN awalan \"server\" cocok dengan \"server-1\" dan \"server-2\". Mengosongkan field akan membuat RDN diperiksa dengan nama host server. Lebih jelasnya lihat OpenVPN 2.3.1 manpage di bagian -verify-x509-name</string>
<string name="enter_tlscn_title">Subyek sertifikat remote</string>
<string name="tls_key_auth">Aktifkan otentifikasi kunci TLS</string>
<string name="tls_auth_file">Berkas otintikasi TLS</string>
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Menghubungkan (TCP)</string>
<string name="state_auth_failed">Otentifikasi gagal</string>
<string name="state_nonetwork">Menunggu jaringan yang dapat dipakai</string>
+ <string name="statusline_bytecount">↓%2$s/s %1$s - ↑%4$s/s %3$s</string>
<string name="notifcation_title_notconnect">Tidak terhubung</string>
<string name="start_vpn_title">Menghubungkan ke VPN %s</string>
<string name="start_vpn_ticker">Menghubungkan ke VPN %s</string>
@@ -322,6 +323,7 @@
<string name="import_log">Log impor:</string>
<string name="ip_looks_like_subnet">Vpn topologi \"%3$s\" ditentukan tapi ifconfig %1$s %2$s terlihat lebih seperti alamat IP dengan mask jaringan. Dengan asumsi \"subnet\" topologi.</string>
<string name="mssfix_invalid_value">Nilai menimpa MSS telah menjadi bulat antara 0 dan 9000</string>
+ <string name="mtu_invalid_value">Nilai penggantian MTU harus bilangan bulat antara 64 dan 9000</string>
<string name="mssfix_value_dialog">Mengumumkan kepada sesi TCP berjalan di atas terowongan bahwa mereka harus membatasi kirim ukuran paket mereka seperti bahwa setelah OpenVPN telah dikemas mereka, sehingga UDP ukuran paket yang OpenVPN mengirim ke rekan-nya tidak akan melebihi jumlah ini byte. (default adalah 1450)</string>
<string name="mssfix_checkbox">Mengganti nilai MSS TCP muatan</string>
<string name="mssfix_dialogtitle">Mengatur muatan MSS TCP</string>
@@ -383,4 +385,61 @@
<string name="service_restarted">Restart layanan OpenVPN (App jatuh mungkin jatuh atau dibunuh untuk memori tekanan)</string>
<string name="import_config_error">Mengimpor konfigurasi menghasilkan kesalahan, tidak bisa menyimpannya</string>
<string name="Search">Pencarian</string>
+ <string name="lastdumpdate">(Sampah terakhir adalah %1$d: %2$dh lama (%3$s))</string>
+ <string name="clear_log_on_connect">Hapus log pada koneksi baru</string>
+ <string name="connect_timeout">Hubungkan Timeout</string>
+ <string name="no_allowed_app">Tidak ada aplikasi yang diizinkan ditambahkan Menambahkan diri kita (%s) untuk memiliki setidaknya satu aplikasi dalam daftar aplikasi yang diizinkan agar tidak mengizinkan semua aplikasi</string>
+ <string name="query_permissions_sdcard">OpenVPN untuk Android dapat mencoba untuk menemukan file yang hilang pada sdcard secara otomatis. Ketuk pesan ini untuk memulai.</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Diaktifkan</string>
+ <string name="abi_mismatch">Preferred native ABI yang diutamakan dari perangkat ini (%1$s) dan ABI dilaporkan oleh perpustakaan asli (%2$s) ketidakcocokan</string>
+ <string name="permission_revoked">[01.55] Routes excluded: 10.0.0.0/8, *********/32, 172.16.0.0/12, 192.168.0.0/16 </string>
+ <string name="pushpeerinfo">Info Push Peer</string>
+ <string name="pushpeerinfosummary">Send extra information to the server, e.g. SSL version and Android version</string>
+ <string name="pw_request_dialog_title">Butuh %1$s</string>
+ <string name="pw_request_dialog_prompt">Silakan masukkan sandi untuk profil %1$s</string>
+ <string name="menu_use_inline_data">Gunakan data inline</string>
+ <string name="export_config_chooser_title">Ambil berkas konfigurasi</string>
+ <string name="missing_tlsauth">File tls-auth hilang</string>
+ <string name="missing_certificates">Sertifikat pengguna atau file kunci pengguna certifcate hilang</string>
+ <string name="missing_ca_certificate">Sertifikat CA tidak ditemukan</string>
+ <string name="crl_title">Daftar Pencabutan Certifcate (opsional)</string>
+ <string name="reread_log">Baca ulang (%d) item log dari file cache log</string>
+ <string name="samsung_broken">Jjj</string>
+ <string name="samsung_broken_title">Ponsel Samsung</string>
+ <string name="novpn_selected">Tidak ada VPN yang dipilih.</string>
+ <string name="defaultvpn">VPN default</string>
+ <string name="defaultvpnsummary">VPN digunakan di tempat VPN default dibutuhkan. Ini saat ini sedang boot, Always-On dan Quick Settings Tile.</string>
+ <string name="vpnselected">VPN yang dipilih saat ini: \'%s\'</string>
+ <string name="reconnect">Menghubungkan kembali</string>
+ <string name="qs_title">Toggle VPN</string>
+ <string name="qs_connect">Menghubungkan ke %s</string>
+ <string name="qs_disconnect">Memutuskan %s</string>
+ <string name="connectretrymaxmessage">Masukkan waktu maksimum antara upaya koneksi. OpenVPN secara perlahan akan menaikkan waktu tunggunya setelah usaha koneksi gagal mencapai nilai ini. Default ke 300s.</string>
+ <string name="connectretrymaxtitle">Waktu maksimum antar upaya koneksi</string>
+ <string name="state_waitconnectretry">Menunggu %s detik di antara upaya koneksi</string>
+ <string name="nought_alwayson_warning"><![CDATA[Jika Anda tidak mendapatkan dialog konfirmasi VPN, Anda memiliki \"Always on VPN\" yang diaktifkan untuk aplikasi lain. Dalam hal ini hanya aplikasi yang diizinkan yang terhubung ke VPN. Berikan centang di bawah Settings-> Networks more .. -> VPNS]]></string>
+ <string name="management_socket_closed">Sambungan ke OpenVPN ditutup (%s)</string>
+ <string name="change_sorting">Ubah penyortiran</string>
+ <string name="sort">Urutkan</string>
+ <string name="sorted_lru">Profil diurutkan berdasarkan terakhir yang terakhir digunakan</string>
+ <string name="sorted_az">Profil diurutkan berdasarkan nama</string>
+ <string name="deprecated_tls_remote">Config menggunakan opsi tls-remote yang sudah ditinggalkan di 2.3 dan akhirnya dihapus di 2.4</string>
+ <string name="auth_failed_behaviour">Perilaku pada AUTH_FAILED</string>
+ <string name="graph">Grafik</string>
+ <string name="use_logarithmic_scale">Gunakan skala logaritmik</string>
+ <string name="notenoughdata">Tidak cukup data</string>
+ <string name="avghour">Rata-rata per jam</string>
+ <string name="avgmin">Rata-rata per jam</string>
+ <string name="last5minutes">5 menit terakhir</string>
+ <string name="data_in">Masuk</string>
+ <string name="data_out">Keluar</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-it/plurals-icsopenvpn.xml b/app/src/main/res/values-it/plurals-icsopenvpn.xml
index 70489fbc..ae8b7c61 100755
--- a/app/src/main/res/values-it/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-it/plurals-icsopenvpn.xml
@@ -1,3 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Un mese rimanente</item>
+ <item quantity="other">%d mesi rimanenti</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Un giorno rimanente</item>
+ <item quantity="other">%d giorni rimanenti</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Un\'ora rimanente</item>
+ <item quantity="other">%d ore rimanenti</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Un minuto rimanente</item>
+ <item quantity="other">%d minuti rimanenti</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-it/strings-icsopenvpn.xml b/app/src/main/res/values-it/strings-icsopenvpn.xml
index b3774986..77866ab8 100755
--- a/app/src/main/res/values-it/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-it/strings-icsopenvpn.xml
@@ -44,23 +44,25 @@
<string name="duplicate_profile_name">Si prega di inserire un nome univoco del profilo</string>
<string name="profilename">Nome del profilo</string>
<string name="no_keystore_cert_selected">Devi selezionare un certificato utente</string>
+ <string name="no_ca_cert_selected">Devi selezionare un certificato</string>
<string name="no_error_found">Nessun errore trovato</string>
<string name="config_error_found">Errore nella configurazione</string>
<string name="ipv4_format_error">Impossibile analizzare l\'indirizzo IPv4</string>
<string name="custom_route_format_error">Errore durante la lettura delle regole di reindirizzamento (routing)</string>
<string name="pw_query_hint">(non compilare perché venga sempre richiesto)</string>
<string name="vpn_shortcut">Collegamento a OpenVPN</string>
+ <string name="vpn_launch_title">Connessione alla VPN&#8230;</string>
<string name="shortcut_profile_notfound">Profilo indicato nel collegamento non trovato</string>
<string name="random_host_prefix">Prefisso Host casuale</string>
<string name="random_host_summary">Aggiunge 6 caratteri casuali prima dell\'hostname</string>
<string name="custom_config_title">Abilita opzioni personalizzate</string>
<string name="custom_config_summary">Specifica opzioni personalizzate. Utilizzare con cautela!</string>
<string name="route_rejected">Reindirizzamento (route) rifiutato da Android</string>
- <string name="cancel_connection">Scollega</string>
+ <string name="cancel_connection">Disconnetti</string>
<string name="cancel_connection_long">Disconnettere VPN</string>
<string name="clear_log">Cancella registro</string>
<string name="title_cancel">Conferma l\'annullamento</string>
- <string name="cancel_connection_query">Disconnetti la VPN in uso/annulli il tentativo di connessione?</string>
+ <string name="cancel_connection_query">Disconnettere la VPN in uso/annullare il tentativo di connessione?</string>
<string name="remove_vpn">Rimuovi VPN</string>
<string name="check_remote_tlscert">Controlla se il server utilizza un certificato con estensioni TLS (--remote-cert-tls server)</string>
<string name="check_remote_tlscert_title">Attesa di un certificato server TLS</string>
@@ -165,6 +167,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="private_key_password">Password della chiave privata</string>
<string name="password">Password</string>
<string name="file_icon">icona del file</string>
+ <string name="tls_authentication">Autenticazione/crittografia TLS</string>
<string name="generated_config">Configurazione generata</string>
<string name="generalsettings">Impostazioni</string>
<string name="owner_fix_summary">Tenta di impostare system come proprietario di /dev/tun. Alcuni firmware CM9 necessitano di questa impostazione affinché le API del servizio VPN funzionino. E\' necessario essere root.</string>
@@ -180,6 +183,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="keychain_nocacert">Nessun certificato della CA è stato prelevato dal Keystore di Android. E\' probabile che l\'autenticazione fallisca.</string>
<string name="show_log_summary">Mostra la finestra dei log della connessione. Si può sempre accedere alla finestra dei log tramite la barra delle notifiche.</string>
<string name="show_log_window">Visualizza la finestra dei log</string>
+ <string name="mobile_info">%10$s %9$s in esecuzione su %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Errore di firma con la chiave %1$s: %2$s del Keystore di Android.</string>
<string name="faq_system_dialogs">L\'avvertimento durante la connessione VPN, in cui si informa che questo programma può intercettare tutto il traffico del sistema, serve a prevenire un uso fraudolento delle API del servizio VPN.\nL\'icona di notifica a forma di chiave è altresì imposta dal sistema Android per avvertire che si è connessi ad una VPN. Su alcuni apparecchi questa notifica è accompagnata da un suono.\nAndroid utilizza questi sistemi per la tua sicurezza e per assicurarsi che questi non vengano aggirati (in alcuni firmware questo sfortunamente è accompagnato da un suono di avvertimento).</string>
<string name="faq_system_dialogs_title">Avviso di connessione e notifica sonora</string>
@@ -202,6 +206,8 @@ 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="onbootrestartsummary">OpenVPN connetterà la VPN specificata se è attiva durante l\'avvio del sistema. Leggi le domande di avviso di connessione prima di utilizzare questa opzione in Android &lt; 5.0.</string>
+ <string name="onbootrestart">Connessione all\'avvio</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>
@@ -248,6 +254,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="state_tcp_connect">Connessione in corso (TCP)</string>
<string name="state_auth_failed">Autenticazione fallita</string>
<string name="state_nonetwork">In attesa di una rete utilizzabile</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Non connesso</string>
<string name="start_vpn_title">Connessione alla VPN %s in corso</string>
<string name="start_vpn_ticker">Connessione alla VPN %s in corso</string>
@@ -316,7 +323,10 @@ Effettuata la lettura del file di configurazione</string>
<string name="files_missing_hint">Alcuni file non possono essere trovati. Si prega di selezionare i file da importare nel profilo:</string>
<string name="openvpn_is_no_free_vpn">Per utilizzare questa applicazione è necessario un provider VPN/gateway VPN che supportino OpenVPN (spesso forniti dal datore di lavoro). Vai a http://community.openvpn.net/ per ulteriori informazioni su OpenVPN e come configurare il proprio server OpenVPN.</string>
<string name="import_log">Registro importazione:</string>
+ <string name="ip_looks_like_subnet">Topologia Vpn \"%3$s\" specificata, ma ifconfig %1$s %2$s sembra più un indirizzo IP con una maschera di rete. Assumendo la topologia di \"sottorete\".</string>
<string name="mssfix_invalid_value">Il valore di fix MSS deve essere un intero tra 0 e 9000</string>
+ <string name="mtu_invalid_value">Il valore di override MTU deve essere un intero compreso tra 64 e 9000</string>
+ <string name="mssfix_value_dialog">Notificare alle sessioni TCP in esecuzione sul tunnel che dovrebbero limitare i loro formati di pacchetti di invio dopo che OpenVPN li ha incapsulati, la dimensione del pacchetto UDP risultante da OpenVPN inviata al proprio peer non supererà questo numero di byte. (Impostazione predefinita è 1450)</string>
<string name="mssfix_checkbox">Sovrascrivi il valore del MSS nel payload TCP</string>
<string name="mssfix_dialogtitle">Setta il valore del MSS nel payload TCP</string>
<string name="client_behaviour">Comportamento Client</string>
@@ -331,14 +341,107 @@ Effettuata la lettura del file di configurazione</string>
<string name="keep">Mantieni</string>
<string name="delete">Elimina</string>
<string name="add_remote">Aggiungi nuovo server</string>
+ <string name="remote_random">Utilizza le voci di connessione in ordine casuale di connessione</string>
+ <string name="remote_no_server_selected">È necessario definire e abilitare almeno un server remoto.</string>
<string name="server_list">Lista Server</string>
<string name="vpn_allowed_apps">Applicazioni consentite</string>
<string name="advanced_settings">Impostazioni Avanzate</string>
<string name="payload_options">Opzioni Payload</string>
<string name="tls_settings">Impostazioni TLS</string>
+ <string name="no_remote_defined">Nessuna destinazione definita</string>
<string name="duplicate_vpn">Profilo VPN duplicato</string>
<string name="duplicate_profile_title">Duplicazione del profilo: %s</string>
<string name="show_log">Mostra il log</string>
+ <string name="faq_android_clients">Esistono diversi client OpenVPN per Android. I più comuni sono OpenVPN per Android (questo client), OpenVPN Connect e OpenVPN Settings.&lt;p&gt;I clienti possono essere raggruppati in due gruppi: OpenVPN per Android e OpenVPN Connect utilizzano l\'API VPNService ufficiale (Android 4.0+) e non necessitano di root e OpenVPN Settings che utilizza root.&lt;p&gt;OpenVPN per Android è un client open source sviluppato da Arne Schwabe. È destinato a utenti più avanzati e offre molte impostazioni e la possibilità di importare profili da file e di configurare/modificare i profili all\'interno dell\'applicazione. Il client si basa sulla versione comunitaria di OpenVPN. Si basa sul codice sorgente OpenVPN 2.x. Questo client può essere visto come il client semi ufficiale della comunità. &lt;p&gt;OpenVPN Connect è un client non open source sviluppato da OpenVPN Technologies, Inc. Il client è destinato ad un uso generale e più mirato all\'utente medio e consente l\'importazione di profili OpenVPN. Questo client si basa sulla reimplementazione OpenVPN C ++ del protocollo OpenVPN (questo era necessario per consentire a OpenVPN Technologies, Inc di pubblicare un\'applicazione iOS OpenVPN). Questo client è il client ufficiale delle tecnologie OpenVPN &lt;p&gt; OpenVPN Settings è il più vecchio dei client ed è anche un\'interfaccia utente per OpenVPN Open Source. A differenza di OpenVPN per Android richiede root e non utilizza l\'API VPNService. Non dipende da Android 4.0+</string>
+ <string name="faq_androids_clients_title">Differenze tra i client OpenVPN di Android</string>
+ <string name="ignore_multicast_route">Ignora route multicast: %s</string>
+ <string name="ab_only_cidr">Android supporta solo le route CIDR alla VPN. Poiché i percorsi non CIDR sono quasi mai usati, OpenVPN per Android utilizzerà un /32 per percorsi che non sono CIDR ed invieranno un avviso.</string>
+ <string name="ab_tethering_44">Le operazioni di tethering funzionano mentre la VPN è attiva. La connessione di tether NON utilizzerà la VPN.</string>
+ <string name="ab_kitkat_mss">La prima versione KitKat ha impostato il valore MSS errato sulle connessioni TCP (#61948). Prova ad abilitare l\'opzione mssfix per risolvere questo problema.</string>
+ <string name="ab_proxy">Android continuerà a utilizzare le impostazioni proxy specificate per la connessione mobile/Wi-Fi quando non vengono impostati server DNS. OpenVPN per Android ti avviserà in questo registro.<p>Quando una VPN imposta un server DNS, Android non utilizzerà un proxy. Non esistono API per impostare un proxy per una connessione VPN</p></string>
+ <string name="ab_lollipop_reinstall">Le applicazioni VPN potrebbero smettere di funzionare durante la disinstallazione e la reinstallazione. Per dettagli vedi # 80074</string>
+ <string name="ab_not_route_to_vpn">L\'IP client configurato e gli IP nella maschera di rete non vengono indirizzati alla VPN. OpenVPN funziona senza questo errore aggiungendo esplicitamente un percorso che corrisponda con il client IP e con la sua maschera di rete</string>
+ <string name="ab_persist_tun">L\'apertura di un dispositivo tun mentre è attivo un altro dispositivo tun, che viene utilizzato per il supporto persist-tun, blocca i VPNServices sul dispositivo. Un riavvio è necessario per rendere nuovamente funzionante la VPN. OpenVPN per Android tenta di evitare la riapertura del dispositivo tun e se necessario chiude l\'attuale TUN prima di aprire il nuovo dispositivo TUN per evitare il blocco. Ciò può portare ad una breve finestra in cui i pacchetti vengono inviati tramite la connessione non VPN. Anche con questa soluzione il VPNServices a volte si blocca e richiede un riavvio del dispositivo.</string>
+ <string name="ab_secondary_users">VPN non funziona affatto per gli utenti secondari.</string>
+ <string name="ab_kitkat_reconnect">"Gli utenti multipli riferiscono che la connessione dati mobile/connessione mobile spesso viene eliminata durante l\'utilizzo dell\'applicazione VPN. Il comportamento sembra influenzare solo alcune combinazioni di provider di servizi e dispositivi mobili e finora non è possibile individuare alcuna causa/soluzione."</string>
+ <string name="ab_vpn_reachability_44">Solo la destinazione può essere raggiunta tramite VPN che sono raggiungibili senza VPN. La VPN IPv6 non funziona affatto.</string>
+ <string name="ab_only_cidr_title">Nessuna route CIDR</string>
+ <string name="ab_proxy_title">Modalità proxy per VPN</string>
+ <string name="ab_lollipop_reinstall_title">Reinstallazione applicazioni VPN</string>
<string name="version_upto">%s e precedenti</string>
<string name="copy_of_profile">Copia di %s</string>
+ <string name="ab_not_route_to_vpn_title">Percorso per l\'indirizzo IP configurato</string>
+ <string name="ab_kitkat_mss_title">Valore MSS errato per la connessione VPN</string>
+ <string name="ab_secondary_users_title">Utenti tablet secondari</string>
+ <string name="custom_connection_options_warng">Imposta le opzioni specifiche di connessione personalizzate. Usare con attenzione</string>
+ <string name="custom_connection_options">Opzioni personalizzate</string>
+ <string name="remove_connection_entry">Rimuovi voce connessione</string>
+ <string name="ab_kitkat_reconnect_title">Disconnessioni casuali dalla rete mobile</string>
+ <string name="ab_vpn_reachability_44_title">Reti remote non raggiungibili</string>
+ <string name="ab_persist_tun_title">Modalità tun persistente</string>
+ <string name="version_and_later">%s e successive</string>
+ <string name="tls_cipher_alert_title">Le connessioni falliscono con l\'avviso di autenticazione SSL23_GET_SERVER_HELLO: sslv3</string>
+ <string name="tls_cipher_alert">Nuove OpenVPN per le versioni Android (0.6.29/Marzo 2015) utilizzano un valore predefinito più sicuro per le suite di cifrature consentite (tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). Purtroppo, omettendo le suite di cifrature meno sicure e le suite di cifrature di esportazione, in particolare l\'omissione di suite di cifratura che non supportano la perfetta segretezza avanzata (Diffie-Hellman), provoca alcuni problemi. Questo è solitamente causato da un tentativo ben intenzionato, ma malinteso, per rafforzare la sicurezza di TLS impostando tls-cipher sul server o alcuni OSes incorporati con SSL (ad esempio MikroTik). \nPer risolvere questo problema, impostare l\'opzione tls-cipher sul server a un default ragionevole come tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\". Per aggirare il problema sul client, aggiungere l\'opzione personalizzata tls-cipher DEFAULT sul client Android.</string>
+ <string name="message_no_user_edit">Questo profilo è stato aggiunto da un\'applicazione esterna (%s) ed è stato contrassegnato come non modificabile dall\'utente.</string>
+ <string name="crl_file">Elenco di revoca dei certificati</string>
+ <string name="service_restarted">Riavvio del servizio OpenVPN (l\'applicazione si è probabilmente bloccata o è stata chiusa per motivi di memoria)</string>
+ <string name="import_config_error">L\'importazione della configurazione ha generato un errore, non è possibile salvarlo</string>
+ <string name="Search">Cerca</string>
+ <string name="lastdumpdate">(Ultimo dump è %1$d: %2$dh vecchio (%3$s))</string>
+ <string name="clear_log_on_connect">Pulisci registro su nuova connessione</string>
+ <string name="connect_timeout">Connessione scaduta</string>
+ <string name="no_allowed_app">Non è stata aggiunta alcuna applicazione consentita. Aggiungendo (%s) per avere almeno una app nell\'elenco delle applicazioni consentite per non autorizzare tutte le applicazioni</string>
+ <string name="query_permissions_sdcard">OpenVPN per Android può provare a scoprire automaticamente i file mancanti nella scheda SD. Tocca questo messaggio per avviare la richiesta di autorizzazione.</string>
+ <string name="protocol">Protocollo</string>
+ <string name="enabled_connection_entry">Abilitato</string>
+ <string name="abi_mismatch">Preferenza ABI nativa di questo dispositivo (%1$s) e ABI segnalate da librerie native (%2$s) non corrispondente</string>
+ <string name="permission_revoked">L\'autorizzazione VPN è stata revocata dall\'OS (ad esempio un altro programma VPN avviato), arrestando la VPN</string>
+ <string name="pushpeerinfo">Info Push Peer</string>
+ <string name="pushpeerinfosummary">Invia informazioni aggiuntive al server, ad esempio la versione SSL e la versione Android</string>
+ <string name="pw_request_dialog_title">E\' necessario %1$s</string>
+ <string name="pw_request_dialog_prompt">Inserisci la password per il profilo %1$s</string>
+ <string name="menu_use_inline_data">Utilizza dati in linea</string>
+ <string name="export_config_chooser_title">Esporta file di configurazione</string>
+ <string name="missing_tlsauth">File tls-auth mancante</string>
+ <string name="missing_certificates">Certificato utente o file chiave certificato utente mancante</string>
+ <string name="missing_ca_certificate">Certificato CA mancante</string>
+ <string name="crl_title">Elenco certificato di revoca (facoltativo)</string>
+ <string name="reread_log">Rileggi (%d) gli elementi del registro dal file di cache di log</string>
+ <string name="samsung_broken">Anche se i telefoni Samsung sono tra i più venduti telefoni Android, i firmware di Samsung sono anche tra i firmware Android con più problemi. I problemi non sono limitati all\'operazione VPN su questi dispositivi, ma molti di essi possono essere sistemati. In seguito sono descritti alcuni di questi problemi. \n\nIl DNS non funziona a meno che il server DNS sia nell\'intervallo VPN. \n\nIn molti dispositivi Samsung 5.x la funzionalità delle applicazioni consentite/disattivate non funziona. \nNel Samsung 6.x viene segnalato il non funzionamento della VPN a meno che l\'applicazione VPN non sia esclusa dalle funzioni di Risparmio energia.</string>
+ <string name="samsung_broken_title">Telefoni Samsung</string>
+ <string name="novpn_selected">Nessuna VPN selezionata.</string>
+ <string name="defaultvpn">VPN predefinita</string>
+ <string name="defaultvpnsummary">VPN utilizzata nei luoghi in cui è necessaria una VPN predefinita. Questi sono attualmente in fase di avvio, per Always-On e la finestra Impostazioni rapide.</string>
+ <string name="vpnselected">VPN attualmente selezionata: \'%s\'</string>
+ <string name="reconnect">Riconnetti</string>
+ <string name="qs_title">Attiva/disattiva VPN</string>
+ <string name="qs_connect">Connetti a %s</string>
+ <string name="qs_disconnect">Disconnetti %s</string>
+ <string name="connectretrymaxmessage">Inserire il tempo massimo tra i tentativi di connessione. OpenVPN aumenterà lentamente il tempo di attesa dopo un tentativo di connessione non riuscito fino a questo valore. Il valore predefinito è 300s.</string>
+ <string name="connectretrymaxtitle">Tempo massimo tra i tentativi di connessione</string>
+ <string name="state_waitconnectretry">Attendere %ss secondi tra i tentativi di connessione</string>
+ <string name="nought_alwayson_warning"><![CDATA[Se non hai ottenuto una finestra di conferma VPN, hai abilitato \"Sempre in VPN \" per un'altra applicazione. In questo caso solo l'applicazione può connettersi a una VPN. Controlla in Impostazioni-> Altre reti .. -> VPNS]]></string>
+ <string name="management_socket_closed">Connessione a OpenVPN chiusa (%s)</string>
+ <string name="change_sorting">Cambia ordinamento</string>
+ <string name="sort">Ordina</string>
+ <string name="sorted_lru">Profili ordinati per ultimo usato di recente</string>
+ <string name="sorted_az">Profili ordinati per nome</string>
+ <string name="deprecated_tls_remote">Config utilizza l\'opzione tls-remote che è stata deprecata nella versione 2.3 e infine rimossa nella 2.4</string>
+ <string name="auth_failed_behaviour">Comportamento su AUTH_FAILED</string>
+ <string name="graph">Grafico</string>
+ <string name="use_logarithmic_scale">Usa scala logaritmica</string>
+ <string name="notenoughdata">Dati insufficienti</string>
+ <string name="avghour">Media oraria</string>
+ <string name="avgmin">Media al minuto</string>
+ <string name="last5minutes">Ultimi 5 minuti</string>
+ <string name="data_in">Ingresso</string>
+ <string name="data_out">Uscita</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-ja/strings-icsopenvpn.xml b/app/src/main/res/values-ja/strings-icsopenvpn.xml
index 0f55b892..c491ce93 100755
--- a/app/src/main/res/values-ja/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-ja/strings-icsopenvpn.xml
@@ -481,4 +481,8 @@ Android 4.4以上はポリシールーティングを使用します。route/ifc
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="title_activity_open_sslspeed">OpenSSLスピードテスト</string>
+ <string name="openssl_error">OpenSSLがエラーを返しました</string>
+ <string name="running_test">テストを実行中...</string>
+ <string name="all_app_prompt">外部アプリが%sを制御しようとしています。アクセスをリクエストしているアプリは特定できません。このアプリを許可すると、すべてのアプリがアクセス許可されます。</string>
</resources>
diff --git a/app/src/main/res/values-ko/plurals-icsopenvpn.xml b/app/src/main/res/values-ko/plurals-icsopenvpn.xml
index 70489fbc..9f02b893 100755
--- a/app/src/main/res/values-ko/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-ko/plurals-icsopenvpn.xml
@@ -1,3 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="other">%d 개월 남음</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="other">%d 일 남음</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="other">%d 시간 남음</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="other">%d 분 남음</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-ko/strings-icsopenvpn.xml b/app/src/main/res/values-ko/strings-icsopenvpn.xml
index 2ebdf272..e610bf79 100755
--- a/app/src/main/res/values-ko/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-ko/strings-icsopenvpn.xml
@@ -9,7 +9,7 @@
<string name="address">서버 주소:</string>
<string name="port">서버 포트:</string>
<string name="location">위치</string>
- <string name="cant_read_folder">폴더를 읽을 수 없습니다</string>
+ <string name="cant_read_folder">디렉토리를 읽을 수 없습니다</string>
<string name="select">선택</string>
<string name="cancel">취소</string>
<string name="no_data">데이터 없음</string>
@@ -19,115 +19,117 @@
<string name="client_key_title">클라이언트 인증서 키</string>
<string name="client_pkcs12_title">PKCS12 파일</string>
<string name="ca_title">CA 인증서</string>
- <string name="no_certificate">인증서를 선택 해야 합니다</string>
- <string name="copyright_guicode">소스 코드와 문제 추적기는 http://code.google.com/p/ics-openvpn/에서 사용할 수 있습니다</string>
- <string name="copyright_others">프로그램은 다음 구성 요소를 사용합니다. 라이선스에 대 한 자세한 내용은 소스를 참조 하십시오</string>
+ <string name="no_certificate">인증서를 선택해야 합니다</string>
+ <string name="copyright_guicode">소스 코드와 문제 추적기는 http://code.google.com/p/ics-openvpn/ 에서 사용할 수 있습니다</string>
+ <string name="copyright_others">이 프로그램은 다음 구성 요소를 사용합니다. 라이선스에 대한 자세한 내용은 소스 코드를 참조하십시오.</string>
<string name="about">소개</string>
<string name="vpn_list_title">프로파일</string>
<string name="vpn_type">유형</string>
<string name="pkcs12pwquery">PKCS12 암호</string>
<string name="file_select">선택&#8230;</string>
- <string name="file_nothing_selected">파일을 선택 해야 합니다</string>
+ <string name="file_nothing_selected">파일을 선택해야 합니다</string>
<string name="useTLSAuth">TLS 인증 사용</string>
<string name="tls_direction">TLS 방향</string>
<string name="ipv6_dialog_tile">CIDR 형식의 IPv6 주소/넷마스크를 입력 (예: 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">CIDR 형식의 IPv4 주소/넷마스크를 입력 (예: 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 주소</string>
<string name="ipv6_address">IPv6 주소</string>
- <string name="custom_option_warning">사용자 정의 OpenVPN 옵션을 입력하십시오. 사용 시 유의하십시오. 또한 TUN과 연관된 많은 OpenVPN 설정은 안드로이드에서 지원하는 VPN 설정의 한계로 지원되지 않습니다. 중요한 옵션이 누락됐다고 생각되면 개발자에게 연락주십시오.</string>
- <string name="auth_username">계정</string>
+ <string name="custom_option_warning">사용자 정의 OpenVPN 옵션을 입력하십시오. 사용시 유의하십시오. 또한 TUN과 연관된 많은 OpenVPN 설정은 안드로이드에서 지원하는 VPN 설정의 한계로 지원되지 않습니다. 중요한 옵션이 누락됐다고 생각되면 개발자에게 연락주십시오.</string>
+ <string name="auth_username">사용자 이름</string>
<string name="auth_pwquery">암호</string>
- <string name="static_keys_info">고정설정에는 TLS인증 키가 고정키로 사용됩니다</string>
- <string name="configure_the_vpn">VPN 설정</string>
+ <string name="static_keys_info">고정 설정에는 TLS 인증 키가 고정 키로 사용됩니다</string>
+ <string name="configure_the_vpn">VPN 구성</string>
<string name="menu_add_profile">프로파일 추가</string>
- <string name="add_profile_name_prompt">새 프로파일에 사용할 이름을 입력하세요.</string>
- <string name="duplicate_profile_name">고유 프로필 이름을 입력 하십시오</string>
+ <string name="add_profile_name_prompt">새 프로파일을 식별하는 이름을 입력하세요.</string>
+ <string name="duplicate_profile_name">고유한 프로파일 이름을 입력하십시오</string>
<string name="profilename">프로파일 이름</string>
- <string name="no_keystore_cert_selected">사용자 인증서를 선택 해야 합니다</string>
+ <string name="no_keystore_cert_selected">사용자 인증서를 선택해야 합니다</string>
+ <string name="no_ca_cert_selected">CA 인증서를 선택해야 합니다</string>
<string name="no_error_found">오류 없음</string>
- <string name="config_error_found">설정 오류</string>
+ <string name="config_error_found">구성 오류</string>
<string name="ipv4_format_error">IPv4 주소 구문 분석 오류</string>
<string name="custom_route_format_error">사용자 지정 경로 구문 분석 오류</string>
<string name="pw_query_hint">(비워두면 요청시 쿼리됨)</string>
<string name="vpn_shortcut">OpenVPN 바로 가기</string>
- <string name="shortcut_profile_notfound">바로가기에 지정 된 프로파일을 찾을 수 없습니다.</string>
+ <string name="vpn_launch_title">VPN에 연결 중...</string>
+ <string name="shortcut_profile_notfound">바로가기에 지정된 프로파일을 찾을 수 없습니다.</string>
<string name="random_host_prefix">임의의 호스트 접두사</string>
<string name="random_host_summary">6개 임의의 문자를 호스트 이름 앞에 추가</string>
- <string name="custom_config_title">사용자 지정 옵션을 사용 하도록 설정</string>
- <string name="custom_config_summary">사용자 지정 옵션을 입력하세요. 주의해서 사용!</string>
- <string name="route_rejected">안드로이드에 의해 거부된 라우트</string>
+ <string name="custom_config_title">사용자 지정 옵션 사용</string>
+ <string name="custom_config_summary">사용자 지정 옵션을 지정하세요. 주의해서 사용!</string>
+ <string name="route_rejected">안드로이드에 의해 거부된 경로</string>
<string name="cancel_connection">연결 끊기</string>
<string name="cancel_connection_long">VPN 연결 끊기</string>
<string name="clear_log">로그 지우기</string>
<string name="title_cancel">취소 확인</string>
- <string name="cancel_connection_query">연결된 VPN 끊기/연결시도 취소?</string>
+ <string name="cancel_connection_query">연결된 VPN 끊기/연결 시도 취소?</string>
<string name="remove_vpn">VPN 제거</string>
<string name="check_remote_tlscert">서버가 TLS 서버 확장을 포함한 인증서를 사용하는지 여부 확인 (--remote-cert-tls server)</string>
<string name="check_remote_tlscert_title">TLS 서버 인증서 바람</string>
- <string name="remote_tlscn_check_summary">원격 서버 인증서 대상(Subject) DN을 확인</string>
- <string name="remote_tlscn_check_title">인증서 호스트명 확인</string>
- <string name="enter_tlscn_dialog">원격 인증서 DN을 확인 하는데 사용하는 검사를 지정 (예: C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\n확인을 위해 완전한 DN이나 RDN (예 openvpn.blinkt.de) 또는 RDN 접두사를 지정.\n\nRDN 접두사 \"서버\"를 사용하면 \"서버-1\" 및 \"서버 2\"와 일치합니다\n\n텍스트 필드를 빈 상태로 두면 RDN은 서버의 호스트명과 비교됩니다\n\n더 자세한 내용은 OpenVPN 2.3.1+ 맨페이지에서 —verify-x509-name 아래를 참조</string>
- <string name="enter_tlscn_title">원격 인증서 제목</string>
- <string name="tls_key_auth">TLS Key 인증 활성화</string>
+ <string name="remote_tlscn_check_summary">원격 서버 인증서 주체 DN을 확인</string>
+ <string name="remote_tlscn_check_title">인증서 호스트 이름 확인</string>
+ <string name="enter_tlscn_dialog">원격 인증서 DN을 확인하는 데 사용하는 검사를 지정 (예: C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\n확인을 위해 완전한 DN이나 RDN (예 openvpn.blinkt.de) 또는 RDN 접두사를 지정.\n\nRDN 접두사 \"Server\"를 사용하면 \"Server-1\" 및 \"Server-2\"와 일치합니다.\n\n텍스트 필드를 비워 두면 RDN을 서버의 호스트 이름과 비교합니다\n\n더 자세한 내용은 OpenVPN 2.3.1+ 맨페이지에서 --verify-x509-name 아래를 참조</string>
+ <string name="enter_tlscn_title">원격 인증서 주체</string>
+ <string name="tls_key_auth">TLS 키 인증 사용</string>
<string name="tls_auth_file">TLS 인증 파일</string>
- <string name="pull_on_summary">서버로부터 IP 주소, 라우트와 타이밍 옵션을 요구합니다.</string>
- <string name="pull_off_summary">서버는 어떤 정보도 요구하지 않습니다. 아래에 세부 설정을 지정하십시오.</string>
- <string name="use_pull">설정 받기</string>
+ <string name="pull_on_summary">서버에 IP 주소와 경로, 타이밍 옵션을 요구합니다.</string>
+ <string name="pull_off_summary">서버에 어떤 정보도 요구하지 않습니다. 아래에 설정을 지정해야 합니다.</string>
+ <string name="use_pull">설정 끌어오기</string>
<string name="dns">DNS</string>
<string name="override_dns">서버에서 DNS 설정을 재정의합니다</string>
- <string name="dns_override_summary">지정한 DNS서버 사용하기</string>
- <string name="searchdomain">searchDomain</string>
+ <string name="dns_override_summary">본인의 DNS 서버 사용하기</string>
+ <string name="searchdomain">검색 도메인</string>
<string name="dns1_summary">사용할 DNS 서버.</string>
<string name="dns_server">DNS 서버</string>
- <string name="secondary_dns_message">보조 DNS 서버는 평소 DNS 서버에 접근불가시 사용됩니다.</string>
+ <string name="secondary_dns_message">보조 DNS 서버는 주 DNS 서버에 닿을 수 없는 경우 사용됩니다.</string>
<string name="backup_dns">보조 DNS 서버</string>
- <string name="ignored_pushed_routes">받은 라우트 무시하기</string>
- <string name="ignore_routes_summary">서버로부터 받은 라우트를 무시합니다.</string>
+ <string name="ignored_pushed_routes">푸시된 경로 무시하기</string>
+ <string name="ignore_routes_summary">서버로부터 푸시된 경로를 무시합니다.</string>
<string name="default_route_summary">VPN을 통해 모든 트래픽을 보냅니다.</string>
- <string name="use_default_title">기본 라우트 사용하기</string>
- <string name="custom_route_message">사용자 지정 라우트를 입력하십시오. 목적지는 CIDR 형식으로만 입력하십시오. \"10.0.0.0/8 2002::/16\"은 10.0.0.0/8 과 2002::/16 네트워크를 VPN으로 보냅니다.</string>
- <string name="custom_route_message_excluded">VPN을 통해 라우팅되면 안되는 경로(라우트). 포함된 경로와 동일한 구문을 사용합니다.</string>
- <string name="custom_routes_title">사용자 지정 라우트</string>
+ <string name="use_default_title">기본 경로 사용하기</string>
+ <string name="custom_route_message">사용자 지정 경로를 입력하십시오. 목적지는 CIDR 형식으로만 입력하십시오. \"10.0.0.0/8 2002::/16\"은 10.0.0.0/8 과 2002::/16 네트워크를 VPN으로 보냅니다.</string>
+ <string name="custom_route_message_excluded">VPN을 통해 라우팅되면 안되는 경로. 포함되는 경로와 동일한 구문을 사용합니다.</string>
+ <string name="custom_routes_title">사용자 지정 경로</string>
<string name="custom_routes_title_excluded">제외된 네트워크</string>
<string name="log_verbosity_level">로그의 자세한 정도</string>
- <string name="float_summary">인증된 패킷은 IP와 상관없이 허용</string>
- <string name="float_title">플로팅 서버 허용</string>
+ <string name="float_summary">모든 IP에서 인증된 패킷 허용</string>
+ <string name="float_title">유동 서버 허용</string>
<string name="custom_options_title">사용자 지정 옵션</string>
<string name="edit_vpn">VPN 설정 편집</string>
<string name="remove_vpn_query">VPN 프로파일 \'%s\'을 삭제할까요?</string>
- <string name="tun_error_helpful">일부 사용자 지정 ICS 이미지에서는 /dev/tun에 대한 권한이 잘못 되어 있거나 tun 모듈 자체가 누락 될 수 있습니다. CM9 이미지는 일반 설정에 있는 소유권 고치기 옵션을 사용해 보십시오.</string>
- <string name="tun_open_error">Tun 인터페이스를 열지 못했습니다</string>
- <string name="error">"오류:"</string>
+ <string name="tun_error_helpful">일부 커스텀 ICS 이미지에서는 /dev/tun에 대한 권한이 잘못되어 있거나 tun 모듈 자체가 누락될 수 있습니다. CM9 이미지는 일반 설정에 있는 소유권 고치기 옵션을 사용해 보십시오.</string>
+ <string name="tun_open_error">TUN 인터페이스를 열지 못했습니다</string>
+ <string name="error">"오류: "</string>
<string name="clear">지우기</string>
<string name="last_openvpn_tun_config">TUN 인터페이스 열기:</string>
<string name="local_ip_info">로컬 IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
<string name="dns_server_info">DNS 서버: %1$s, 도메인: %2$s</string>
<string name="routes_info_incl">경로: %1$s %2$s</string>
<string name="routes_info_excl">제외된 경로: %1$s %2$s</string>
- <string name="routes_debug">VpnService 노선 설치: %1$s %2$s</string>
- <string name="ip_not_cidr">인터페이스 정보 %1$s와 %2$s에 있어, 두 번째 주소를 원격 피어 주소로 가정 하겠습니다. 로컬 IP의 넷마스크로는 /32를 사용하겠습니다. OpenVPN에 의해 주어진 모드는 \"%3$s\" 입니다.</string>
- <string name="route_not_cidr">CIDR 넷마스크가 있는 IP 라우트 %1$s 와 %2$s 에 있어서 처리가 불가능합니다. /32를 넷마스크로 사용하겠습니다.</string>
- <string name="route_not_netip">%1$s/%2$s 에서 %3$s/%2$s로 라우트 수정</string>
- <string name="keychain_access">안드로이드 키체인 인증서에 접근할 수 없습니다. 펌웨어 업그래이드 또는 백업된 앱/앱 설정을 복구하면서 발생할 수 있습니다. 인증서에 액세스할 수 있는 권한을 다시 생성하기 위해 VPN을 편집 하고 기본 설정 아래에서 인증서를 다시 선택 하십시오.</string>
+ <string name="routes_debug">설치된 VpnService 경로: %1$s %2$s</string>
+ <string name="ip_not_cidr">인터페이스 정보 %1$s와 %2$s를 받았고 두 번째 주소를 원격 피어 주소로 가정합니다. 로컬 IP에 대해 /32 넷마스크를 사용합니다. OpenVPN에 의해 주어진 모드는 \"%3$s\"입니다.</string>
+ <string name="route_not_cidr">CIDR 넷마스크가 있는 IP 경로로서 %1$s와 %2$s를 이해할 수 없습니다. 넷마스크로 /32를 사용합니다.</string>
+ <string name="route_not_netip">%1$s/%2$s에서 %3$s/%2$s로 경로 정정</string>
+ <string name="keychain_access">안드로이드 키체인 인증서에 접근할 수 없습니다. 이는 펌웨어 업그레이드 또는 앱 백업 복구, 앱 설정 복구에 의해 발생할 수 있습니다. 인증서에 접근할 수 있는 권한을 다시 생성하기 위해 VPN을 편집하고 기본 설정 아래에서 인증서를 다시 선택하십시오.</string>
<string name="version_info">%1$s %2$s</string>
<string name="send_logfile">로그 파일 보내기</string>
<string name="send">보내기</string>
<string name="ics_openvpn_log_file">ICS OpenVPN 로그 파일</string>
<string name="copied_entry">클립보드로 로그 복사</string>
- <string name="tap_mode">Tap 모드</string>
- <string name="faq_tap_mode">Tap 모드는 루트가 아닌 VPN API에서는 불가능합니다. 따라서 본앱은 tap지원을 제공할 수 없습니다</string>
- <string name="tap_faq2">또? 농담인가요? 아니요 정말로 tap 모드는 지원이 불가능합니다. 계속해서 메일을 보내면서 요구하신다고 도움될 일이 아닙니다.</string>
- <string name="tap_faq3">3번째로? 누군가가 송신때 레이어2 정보를 추가하고 수신때 레이어2정보를 때내는 tun을 이용한 tap 에뮬레이터를 제작할 수 있습니다. 하지만 이것만이 아닌 ARP 그리고 어쩌면 DHCP 클라이언트 까지도 구현해야합니다. 본인은 이 같은 작업을 하는 분을 알고있지 않습니다. 코딩을 시작하려고 하시는 분이 계시면 제게 연락주십시오.</string>
+ <string name="tap_mode">TAP 모드</string>
+ <string name="faq_tap_mode">TAP 모드는 루트가 아닌 VPN API에서는 불가능합니다. 따라서 본 앱은 TAP 지원을 제공할 수 없습니다</string>
+ <string name="tap_faq2">또? 농담인가요? 아니요. 정말로 TAP 모드는 지원이 불가능합니다. 계속해서 메일을 보내면서 요구하신다고 도움될 일이 아닙니다.</string>
+ <string name="tap_faq3">세 번째로? 실제로는 송신 때 레이어2 정보를 추가하고 수신 때 레이어2 정보를 떼내는 TUN을 이용한 TAP 에뮬레이터를 제작하는 것이 가능합니다. 하지만 이것만이 아닌 ARP 그리고 어쩌면 DHCP 클라이언트까지도 구현해야 합니다. 본인은 이 같은 작업을 하는 분을 알고 있지 않습니다. 코딩을 시작하려고 하시는 분이 계시면 제게 연락해 주십시오.</string>
<string name="faq">자주 묻는 질문</string>
<string name="copying_log_entries">로그 항목을 복사</string>
- <string name="faq_copying">단일 로그 항목을 복사 하려면 로그 항목을 누르고 계세요. 전체 로그를 복사/전송 하려면 로그 보내기 옵션을 사용하십시오. GUI에 표시 되지 않는 경우 하드웨어 메뉴 버튼를 사용하세요.</string>
- <string name="faq_shortcut">시작으로 바로 가기</string>
- <string name="faq_howto_shortcut">바탕 화면에 OpenVPN 시작 바로 가기를 배치할 수 있습니다. 당신의 homescreen 프로그램에 따라 바로 가기 또는 위젯 추가를 해야 합니다.</string>
- <string name="no_vpn_support_image">당신의 이미지는 VPNService API를 지원 하지 않습니다, 죄송 합니다:(</string>
+ <string name="faq_copying">단일 로그 항목을 복사하려면 로그 항목을 누르고 계세요. 전체 로그를 복사/전송하려면 로그 보내기 옵션을 사용하십시오. GUI에 버튼이 표시되지 않는 경우 하드웨어 메뉴 버튼을 사용하세요.</string>
+ <string name="faq_shortcut">시작하는 바로 가기</string>
+ <string name="faq_howto_shortcut">바탕 화면에 OpenVPN을 시작하는 바로 가기를 배치할 수 있습니다. 당신의 홈화면 프로그램에 따라 바로 가기 또는 위젯 추가해야 합니다.</string>
+ <string name="no_vpn_support_image">당신의 이미지는 VPNService API를 지원하지 않습니다, 죄송합니다 :(</string>
<string name="encryption">암호화</string>
- <string name="cipher_dialog_title">입력 암호화 방법</string>
- <string name="chipher_dialog_message">OpenVPN이 사용할 암호화 암호 알고리즘을 입력 합니다. 기본 암호를 사용하려면 빈 공간으로 두십시오.</string>
- <string name="auth_dialog_message">OpenVPN이 사용할 인증 다이제스트를 입력 합니다. 기본 다이제스트를 사용하려면 빈 공간으로 두십시오.</string>
+ <string name="cipher_dialog_title">암호화 방법 입력</string>
+ <string name="chipher_dialog_message">OpenVPN이 사용할 암호화 암호 알고리즘을 입력하세요. 기본 암호를 사용하려면 비워 두십시오.</string>
+ <string name="auth_dialog_message">OpenVPN이 사용할 인증 다이제스트를 입력하세요. 기본 다이제스트를 사용하려면 비워 두십시오.</string>
<string name="settings_auth">인증/암호화</string>
<string name="file_explorer_tab">파일 탐색기</string>
<string name="inline_file_tab">인라인 파일</string>
@@ -138,184 +140,333 @@
<string name="menu_import">ovpn 파일에서 프로파일 가져오기</string>
<string name="menu_import_short">가져오기</string>
<string name="import_content_resolve_error">가져올 프로파일을 읽을 수 없습니다.</string>
- <string name="error_reading_config_file">설정 파일 읽기 오류</string>
+ <string name="error_reading_config_file">구성 파일 읽기 오류</string>
<string name="add_profile">프로파일 추가</string>
- <string name="import_could_not_open">가져온된 설정 파일에 언급 된 파일 %1$s를 찾을 수 없습니다.</string>
- <string name="importing_config">원본 %1$s에서 설정 파일 가져오기</string>
- <string name="import_warning_custom_options">구성은 UI 구성으로 매핑되지 않는 몇 가지 구성 옵션을 가지고 있습니다. 이 옵션은 사용자 정의 구성 옵션으로 추가되었습니다. 사용자 정의 구성은 아래에 표시됩니다 :</string>
- <string name="import_done">설정 파일 읽기 완료.</string>
- <string name="nobind_summary">로컬 주소와 포트로 바인드 안하기</string>
- <string name="no_bind">로컬 바인딩 안함</string>
+ <string name="import_could_not_open">가져온 구성 파일에 언급된 파일 %1$s를 찾을 수 없습니다.</string>
+ <string name="importing_config">원본 %1$s에서 구성 파일 가져오기</string>
+ <string name="import_warning_custom_options">당신의 구성이 UI 구성으로 매핑되지 않은 몇 가지 구성 옵션을 가지고 있었습니다. 이 옵션은 사용자 정의 구성 옵션으로 추가되었습니다. 사용자 정의 구성은 아래에 표시됩니다:</string>
+ <string name="import_done">구성 파일 읽기 완료.</string>
+ <string name="nobind_summary">로컬 주소와 포트로 바인드 안 하기</string>
+ <string name="no_bind">로컬 바인딩 안 함</string>
<string name="import_configuration_file">구성 파일 가져오기</string>
<string name="faq_security_title">보안 고려 사항</string>
- <string name="faq_security">"OpenVPN은 보안에 민감하기 때문에 보안에 관련된 부분을 알고가는것이 현명합니다. SD 카드에 있는 데이터는 모든 앱이 읽을 수 있기 때문에 보안이 취약합니다. (이 OpenVPN 앱은 SD 카드 읽기 권한이 필요없습니다) 이 OpenVPN 앱의 데이터는 이 OpenVPN 앱만이 읽을 수 있습니다. cacert/cert/key를 파일 탐색기의 가져오기 옵션을 사용하면 데이터는 VPN 프로파일 내에 저장됩니다. 이 VPN 프로파일은 이 OpenVPN 앱만이 접근할 수 있습니다. (잊지 말고 SD 카드에 남아있는 파일들을 삭제하세요.) 접근은 이 OpenVPN 앱만 가능하더라도 데이터는 암호화가 되어 있지 않습니다. 루팅을 비롯한 다른 악의적인 방법으로 데이터를 빼낼 수 있습니다. 암호 또한 일반 텍스트로 저장되어 있습니다. pkcs12 파일은 안드로이드 keystore에 보관할 것을 강력하게 추천합니다."</string>
+ <string name="faq_security">"OpenVPN은 보안에 민감하기 때문에 보안에 관한 몇 가지 주의사항은 합리적입니다. SD 카드에 있는 데이터는 필연적으로 안전하지 않습니다. 모든 앱이 그것을 읽을 수 있습니다(예를 들어 이 프로그램은 특별한 SD 카드 권한을 가질 필요가 없습니다). 이 앱의 데이터는 이 앱만 읽을 수 있습니다. 파일 대화창에서 CA 인증서/인증서/키를 가져옴으로써 데이터는 VPN 프로파일 내에 저장됩니다. 이 VPN 프로파일은 이 앱만 접근할 수 있습니다. (잊지 말고 SD 카드에 남아있는 파일들을 삭제하세요.) 접근은 이 OpenVPN 앱만 가능하더라도 데이터는 암호화가 되어 있지 않습니다. 루팅이나 다른 취약점을 이용해서 데이터를 빼낼 수 있습니다. 저장된 암호 또한 일반 텍스트로 저장되어 있습니다. pkcs12 파일은 안드로이드 키 저장소에 보관할 것을 강력하게 추천합니다."</string>
<string name="import_vpn">가져오기</string>
<string name="broken_image_cert_title">인증서 선택 표시 오류</string>
- <string name="broken_image_cert">안드로이드 4.0+의 인증서 선택창을 보여주려는 과정에서 예외가 발생됐습니다. 안드로이드 4.0+의 표준 기능임으로 이 같은 일은 일어나면 안됩니다. 어쩌면 인증서 저장소에 대한 귀하의 안드로이드 ROM 지원이 깨졌습니다.</string>
+ <string name="broken_image_cert">안드로이드 4.0+의 인증서 선택 대화창을 보여주려는 과정에서 예외가 발생했습니다. 안드로이드 4.0+의 표준 기능이므로 이 같은 일은 일어나면 안 됩니다. 어쩌면 귀하의 안드로이드 롬의 인증서 저장소에 대한 지원이 깨졌을 수 있습니다.</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
<string name="speed_waiting">상태 메시지를 기다리는 중&#8230;</string>
<string name="converted_profile">가져온 프로파일</string>
<string name="converted_profile_i">가져온 프로파일 %d</string>
<string name="broken_images">깨진 이미지</string>
- <string name="broken_images_faq">&lt;p&gt;공식 HTC 이미지에서는 이상한 라우팅 문제로 트래픽이 터널로 통과 하지 않는 경우가 있는것으로 알려져 있습니다 (참고 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;Issue 18&lt;/a&gt; 버그 추적기.)&lt;/p&gt;&lt;p&gt;Xperia arc S 와 Xperia Ray의 공식 SONY 이미지에서는 VPNService 자체가 완전히 없어진 것으로 보고 되었습니다. (참조 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;Issue 29&lt;/a&gt; 버그추적기.)&lt;/p&gt;&lt;p&gt;일부 사용자를 위해 만들어진 이미지에서는 tun 모듈자체가 없거나 /dev/tun의 권한이 틀려있기도 합니다. 일부 CM9 이미지는 \"Device specific hacks\" 아래에 있는 \"Fix ownership\" 옵션을 사용해야 합니다.&lt;/p&gt;&lt;p&gt;가장 중요한 부분: 만약 깨진 이미지를 사용하는 경우라면 해당 공급업체에 보고해야 합니다. 업체에 문제를 보고하는 사람들이 많아야 수정될 가능성도 높아집니다..&lt;/p&gt;</string>
+ <string name="broken_images_faq">&lt;p&gt;공식 HTC 이미지에서는 이상한 라우팅 문제로 트래픽이 터널로 통과하지 않는 경우가 있는 것으로 알려져 있습니다. (버그 추적기의 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;문제 18&lt;/a&gt; 참조.)&lt;/p&gt;&lt;p&gt;Xperia Arc S 와 Xperia Ray의 오래된 공식 SONY 이미지에서는 VPNService 자체가 전혀 없는 것으로 보고되었습니다. (버그 추적기의 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;문제 29&lt;/a&gt; 참조.)&lt;/p&gt;&lt;p&gt;커스텀 빌드 이미지에서는 tun 모듈 자체가 없거나 /dev/tun의 권한이 틀려 있기도 합니다. 일부 CM9 이미지는 \"기기별 해킹\" 아래에 있는 \"소유권 고치기\" 옵션을 사용해야 합니다.&lt;/p&gt;&lt;p&gt;가장 중요한 부분: 만약 깨진 이미지를 사용하는 경우라면 해당 공급 업체에 보고해야 합니다. 업체에 문제를 보고하는 사람들이 많아야 수정될 가능성도 높아집니다.&lt;/p&gt;</string>
<string name="pkcs12_file_encryption_key">PKCS12 파일 암호화 키</string>
<string name="private_key_password">개인 키 암호</string>
<string name="password">암호</string>
<string name="file_icon">파일 아이콘</string>
- <string name="generated_config">생성 된 설정</string>
+ <string name="tls_authentication">TLS 인증/암호화</string>
+ <string name="generated_config">생성된 설정</string>
<string name="generalsettings">설정</string>
- <string name="owner_fix_summary">/dev/tun의 소유권을 시스템으로 설정 하려고 합니다. 일부 CM9 이미지에서 VPNService API를 사용하기 위해서는 앞의 작업이 요구됩니다. root권한을 가져야합니다.</string>
- <string name="owner_fix">/dev/tun 소유권 문제 해결</string>
- <string name="generated_config_summary">생성된 OpenVPN의 설정 파일 보기</string>
- <string name="edit_profile_title">수정 \"%s\"</string>
- <string name="building_configration">설정 만드는중&#8230;</string>
- <string name="netchange_summary">이 기능을 사용하면 네트워크 상태 변환시 강제로 재접속을 합니다 (예. WIFI 로/에서 모바일)</string>
- <string name="netchange">네트워크 변화시 재접속</string>
+ <string name="owner_fix_summary">/dev/tun의 소유권을 system으로 설정하려고 합니다. 일부 CM9 이미지에서 VPNService API를 사용하기 위해서는 앞의 작업이 요구됩니다. 루트 권한을 가져야 합니다.</string>
+ <string name="owner_fix">/dev/tun 소유권 고치기</string>
+ <string name="generated_config_summary">생성된 OpenVPN의 구성 파일 보기</string>
+ <string name="edit_profile_title">\"%s\" 편집</string>
+ <string name="building_configration">구성 만드는 중&#8230;</string>
+ <string name="netchange_summary">이 옵션을 켜면 네트워크 상태 변경시 강제로 재접속합니다 (예: WiFi와 모바일 상호 변경)</string>
+ <string name="netchange">네트워크 변경시 재접속</string>
<string name="netstatus">네트워크 상태: %s</string>
- <string name="extracahint">CA 인증서는 일반적으로 안드로이드 Keystore에 있는것을 사용합니다. 인증서 오류 발생시 벌도의 인증서를 지정하세요.</string>
+ <string name="extracahint">CA 인증서는 일반적으로 안드로이드 키 저장소에 있는 것을 사용합니다. 인증서 오류 발생시 별도의 인증서를 지정하세요.</string>
<string name="select_file">선택</string>
- <string name="keychain_nocacert">안드로이드 keystore에서 CA 인증서를 찾지 못했습니다. Auhtentication은 실패할 것 입니다.</string>
- <string name="show_log_summary">연결시 로그 윈도우를 보여드립니다. 로그 윈도우는 항상 notification status에서 접근이 가능합니다.</string>
- <string name="show_log_window">로그 윈도우 보기</string>
- <string name="error_rsa_sign">안드로이드 keystore 키 %1$s: %2$s과 싸이닝 오류</string>
- <string name="faq_system_dialogs">시스템에서는 VPN연결 경고를 통해 당신에게 본앱이 모든 트래픽을 가로챌수있다는 점을 알리게 되어 있는데 이는 VPNService API가 남용하는것을 막기 위함입니다.\nVPN 연결 알림 (키 아이콘) 또한 안드로이드 시스템에서 부과하는 부분이며 이는 VPN연결을 알리는 신호입니다. 어떤 버전에서는 소리를 알림으로 사용하는 경우도 있습니다.\n안드로이드는 이같은 방법을 당신의 안전을 위해 도입하였으며 사용은 필수적입니다. (어떤 버전에서는 유감스럽게도 소리 알림 또한 포함됩니다.)</string>
+ <string name="keychain_nocacert">안드로이드 키 저장소에서 CA 인증서를 찾지 못했습니다. 인증은 아마 실패할 것입니다.</string>
+ <string name="show_log_summary">연결시 로그 창을 보여드립니다. 로그 창은 항상 알림 상태바에서 접근이 가능합니다.</string>
+ <string name="show_log_window">로그 창 보기</string>
+ <string name="mobile_info">%3$s %1$s (%2$s)에서 %10$s %9$s 작동, 안드로이드 %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
+ <string name="error_rsa_sign">안드로이드 키 저장소 키로 서명 오류 %1$s: %2$s</string>
+ <string name="faq_system_dialogs">시스템에서는 VPN 연결 경고를 통해 당신에게 본 앱이 모든 트래픽을 가로챌 수 있다는 점을 알리게 되어 있는데 이는 VPNService API가 남용되는 것을 막기 위함입니다.\nVPN 연결 알림 (열쇠 기호) 또한 안드로이드 시스템에서 부과하는 부분이며 이는 VPN 연결을 알리는 신호입니다. 어떤 이미지에서는 이 알림이 소리를 내기도 합니다.\n안드로이드는 당신의 안전을 위해서 이 대화창을 도입했으며 회피할 수 없게 하였습니다. (어떤 이미지에서는 유감스럽게도 알림 소리 또한 포함됩니다.)</string>
<string name="faq_system_dialogs_title">연결 경고 및 알림 소리</string>
- <string name="translationby">우리말 번역에 참여해주세요.</string>
- <string name="ipdns">IP 와 DNS</string>
+ <string name="translationby">한국어 번역: 안규태&lt;ktdann@gmail.com&gt;, 강현진&lt;peaceb&gt;</string>
+ <string name="ipdns">IP와 DNS</string>
<string name="basic">기본</string>
<string name="routing">라우팅</string>
<string name="obscure">모호한 OpenVPN 설정. 일반적으로 필요하지 않습니다.</string>
<string name="advanced">고급</string>
- <string name="export_config_title">ICS Openvpn 설정</string>
- <string name="warn_no_dns">DNS 서버가 미사용중입니다. 이름 변환이 작동 않을 수 있습니다. 사용자 지정 DNS 서버를 설정 하십시오. 또한 안드로이드는 DNS서버가 없는 경우 모바일/Wi-Fi 연결에 저정된 프록시 설정을 계속해서 사용한다는 점을 유의하시기 바랍니다.</string>
- <string name="dns_add_error">DNS서버 \"%1$s\" 는, 시스템에 의해 거부되 추가할 수 없습니다: %2$s</string>
- <string name="ip_add_error">%2$s: 시스템에 의해 거부되어 IP 주소 \"%1$s\"를 설정하지 못하였습니다</string>
- <string name="faq_howto">&lt;p&gt;문제없는 설정을 확보하세요 (당신의 컴퓨터에서 테스트 된것 또는 공급자/조직에서 다운받은)&lt;/p&gt;&lt;p&gt;이것이 단일 파일이며 추가 pem/pks12 파일이 없는 경우면 본인에게 이메일로 보내어 첨부파일을 열면 됩니다. 여러 파일인 경우 당신의 sd card에 넣으세요.&lt;/p&gt;&lt;p&gt;이메일 첨부파일을 클릭하세요/vpn목록에 있는 폴더 아이콘을 사용하여 설정 파일을 가져옵니다.&lt;/p&gt;&lt;p&gt;파일 누락 오류 발생시 누락된 파일을 sd card에 복사하세요.&lt;/p&gt;&lt;p&gt;저장 기호를 클릭하여 VPN 목록에 가져온 VPN을 추가 하세요.&lt;/p&gt;&lt;p&gt;VPN 이름을 클릭하여 VPN을 연결하세요.&lt;/p&gt;&lt;p&gt;오류 또는 경고가 로그에 있는 경우 오류/경고를 이해하여 이들을 해결하십시오.&lt;/p&gt; </string>
+ <string name="export_config_title">ICS Openvpn 구성</string>
+ <string name="warn_no_dns">사용 중인 DNS 서버가 없습니다. 이름 변환이 작동하지 않을 수 있습니다. 사용자 지정 DNS 서버를 설정하는 것이 좋습니다. 또한 안드로이드는 DNS 서버가 설정되지 않은 경우 모바일/Wi-Fi 연결에 당신의 프록시 설정을 계속해서 사용한다는 점을 유의하세요.</string>
+ <string name="dns_add_error">DNS 서버 \"%1$s\"는 시스템에 의해 거부돼 추가할 수 없습니다: %2$s</string>
+ <string name="ip_add_error">시스템에 의해 거부되어 IP 주소 \"%1$s\"를 설정하지 못하였습니다: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;작동하는 구성을 얻기 (당신의 컴퓨터에서 검증된 것 또는 공급자/조직에서 내려받은 것)&lt;/p&gt;&lt;p&gt;이것이 추가 pem/pks12 파일이 없는 단일 파일인 경우 본인에게 이메일로 보내어 첨부 파일을 열면 됩니다. 여러 파일인 경우 SD 카드에 넣으세요.&lt;/p&gt;&lt;p&gt;이메일 첨부 파일을 클릭하거나 또는 VPN 목록에 있는, 구성 파일을 가져오는 폴더 모양 아이콘을 사용하세요.&lt;/p&gt;&lt;p&gt;파일 누락 오류 발생시 누락된 파일을 SD 카드에 복사하세요.&lt;/p&gt;&lt;p&gt;저장 기호를 클릭하여 가져온 VPN을 VPN 목록에 추가하세요.&lt;/p&gt;&lt;p&gt;VPN 이름을 클릭하여 VPN에 연결하세요.&lt;/p&gt;&lt;p&gt;오류 또는 경고가 로그에 있는 경우 오류/경고를 이해하여 이들을 해결하십시오.&lt;/p&gt;</string>
<string name="faq_howto_title">빠른 시작</string>
- <string name="setting_loadtun_summary">연결을 시도 하기 전에 tun.ko 커널 모듈을 로드하세요. 루팅된 장치야만 합니다.</string>
- <string name="setting_loadtun">tun 모듈 로드하기</string>
- <string name="importpkcs12fromconfig">설정에 있는 PKCS12를 안드로이드 keystore로 가져오기</string>
+ <string name="setting_loadtun_summary">연결을 시도하기 전에 tun.ko 커널 모듈을 로드합니다. 루팅된 장치이어야만 합니다.</string>
+ <string name="setting_loadtun">TUN 모듈 로드하기</string>
+ <string name="importpkcs12fromconfig">구성에 있는 PKCS12를 안드로이드 키 저장소로 가져오기</string>
<string name="getproxy_error">프록시 설정 가져오기 오류: %s</string>
- <string name="using_proxy">프록시 %1$s %2$d 을 사용</string>
+ <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="onbootrestartsummary">이 시스템 부팅에 활성화 된 경우 OpenVPN을 지정된 VPN을 연결합니다. 안드로이드 &lt; 5.0에이 옵션을 사용하기 전에 연결 경고 FAQ를 읽어 보시기 바랍니다.</string>
- <string name="onbootrestart">부팅에 연결</string>
+ <string name="use_system_proxy_summary">연결할 HTTP/HTTPS 프록시로 시스템 범위의 설정을 사용합니다.</string>
+ <string name="onbootrestartsummary">OpenVPN이 시스템 부팅시에 활성화되면 지정된 VPN에 연결합니다. 안드로이드 5.0 이전 버전에 이 옵션을 사용하기 전에 연결 경고 FAQ를 읽어 보시기 바랍니다.</string>
+ <string name="onbootrestart">부팅시 연결</string>
<string name="ignore">무시</string>
<string name="restart">다시 시작</string>
- <string name="restart_vpn_after_change">VPN을 다시 시작한 후 설정 변경 내용이 적용 됩니다. VPN을 지금 (재)시작?</string>
- <string name="configuration_changed">설정 변경</string>
- <string name="log_no_last_vpn">편집을 위해 마지막으로 연결 된 프로파일을 확인할 수 없습니다.</string>
+ <string name="restart_vpn_after_change">VPN을 다시 시작한 후 구성 변경 내용이 적용됩니다. VPN을 지금 (재)시작?</string>
+ <string name="configuration_changed">구성 변경됨</string>
+ <string name="log_no_last_vpn">편집하려는 마지막으로 연결된 프로파일을 확인할 수 없습니다.</string>
<string name="faq_duplicate_notification_title">중복 알림</string>
- <string name="faq_duplicate_notification">안드로이드는 시스템의 메모리 (RAM) 가 부족한 경우, 현재 필요하지 않는 앱들과 서비스들을 활성화 메모리에서 삭제합니다. 이 과정에서 진행중인 VPN 연결이 끊어 집니다. 이렇게 되지 않기 위해서 OpenVPN 서비스는 우선순위가 높게 되어 실행됩니다. 높은 우선 순위로 실행되기 위해서는 응용프로그램에서 이를 알림으로 표시해야 합니다. 키 알림 아이콘은 이전 FAQ에서 설명된 대로 시스템에서 강요하기 때문입니다. 이것은 우선 순위가 높이 실행된다는 알림에 대한 알림이 아닙니다.</string>
- <string name="no_vpn_profiles_defined">VPN 프로파일이 없습니다.</string>
- <string name="add_new_vpn_hint">이 &lt;img src=\"ic_menu_add\"/&gt; 아이콘을 사용하여 VPN을 추가 하세요</string>
- <string name="vpn_import_hint">이 &lt;img src=\"ic_menu_archive\"/&gt; 아이콘을 사용하여 귀하의 sdcard에서 기존 (.ovpn 또는 .conf) 프로파일을 가져오세요.</string>
- <string name="faq_hint">꼭 FAQ를 확인 하세요. 빠른 시작 가이드가 있습니다.</string>
- <string name="faq_routing_title">라우팅/인터페이스 설정</string>
- <string name="persisttun_summary">OpenVPN을 다시 연결 하는 경우 VPN 연결 없음으로 표기하지 마십시오.</string>
+ <string name="faq_duplicate_notification">안드로이드는 시스템의 메모리(램)가 부족한 경우, 현재 필요하지 않는 앱들과 서비스들을 활성 메모리에서 삭제합니다. 이 과정에서 진행중인 VPN 연결이 끊어집니다. 이렇게 되지 않기 위해서 OpenVPN 서비스는 더 높은 우선 순위로 실행됩니다. 더 높은 우선 순위로 실행되기 위해서는 앱이 알림을 표시해야 합니다. 열쇠 알림 아이콘은 이전 FAQ에서 설명된 대로 시스템에서 강요하는 것입니다. 이것은 더 높은 우선 순위로 실행되기 위한 앱 알림이 아닙니다.</string>
+ <string name="no_vpn_profiles_defined">정의된 VPN 프로파일이 없습니다.</string>
+ <string name="add_new_vpn_hint">이 &lt;img src=\"ic_menu_add\"/&gt; 아이콘을 사용하여 VPN을 추가하세요</string>
+ <string name="vpn_import_hint">이 &lt;img src=\"ic_menu_archive\"/&gt; 아이콘을 사용하여 귀하의 SD 카드에서 기존 (.ovpn 또는 .conf) 프로파일을 가져오세요.</string>
+ <string name="faq_hint">꼭 FAQ를 확인하세요. 빠른 시작 가이드가 있습니다.</string>
+ <string name="faq_routing_title">라우팅/인터페이스 구성</string>
+ <string name="faq_routing">라우팅 및 인터페이스 구성은 기존 ifconfig/route 명령을 통하지 않고 VPNService API를 사용하여 수행됩니다. 그 결과 다른 OS와 다른 라우팅 구성이 생깁니다.\nVPN 터널의 구성은 IP 주소와 이 인터페이스를 통해 라우팅되어야 하는 네트워크들로 이루어져 있습니다. 특히 피어 파트너 주소 또는 게이트웨이 주소가 필요하거나 요구되지 않습니다. VPN 서버에 이르는 특수 경로들(예컨대 redirect-gateway 사용시 추가되는 것)도 필요하지 않습니다. 따라서 앱은 구성을 가져올 때 이러한 설정을 무시합니다. 이 앱은 VPNService API를 사용하여 서버에 대한 연결이 VPN 터널을 통해 라우팅되지 않도록 합니다.\nVPNService API는 VPN을 통해 라우트하지 않아야 할 네트워크들을 지정하는 걸 허용하지 않습니다. 우회 방법으로서 앱이 터널을 통해 라우팅해서는 안 되는 네트워크들(예: route x.x.x.x y.y.y.y net_gateway)을 감지하고 다른 플랫폼의 동작을 모방하기 위해 이 경로들을 제외한 일련의 경로들을 계산합니다. 로그 창은 연결을 수립할 때 VPNService의 설정을 보여줍니다.\n무대 뒤에서: Android 4.4 이상은 정책 라우팅을 사용합니다. route/ifconfig를 사용해선 설치된 경로를 볼 수 없을 것입니다. 대신 ip rule, iptables -t mangle -L을 사용하십시오.</string>
+ <string name="persisttun_summary">OpenVPN을 다시 연결할 때 VPN 연결이 없는 상태로 빠지지 않습니다.</string>
<string name="persistent_tun_title">지속적인 TUN</string>
<string name="openvpn_log">OpenVPN 로그</string>
- <string name="import_config">OpenVPN 설정 가져오기</string>
+ <string name="import_config">OpenVPN 구성 가져오기</string>
<string name="battery_consumption_title">배터리 소모</string>
- <string name="baterry_consumption">제 개인적인 테스트에서 Openvpn의 높은 배터리 소비에 대한 주요 이유는 keepalive 패킷 때문이었습니다. 대부분의 OpenVPN 서버 설정에는 \'keepalive 10 60\' 와 같은 문구가 있는데 이는 클라이언트에서 서버로 서버에서 클라이언트로 keepalive 패킷을 10 초 마다 보냅니다. &lt;p&gt; 이러한 패킷은 작고 많은 트래픽을 사용 하지 않습니다만 이들은 모바일 라디오 네트워크를 계속 유지하게 만들게되고 따라서 에너지 소비를 증가 합니다. (참조 &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;The Radio State Machine | Android Developers&lt;/a&gt;) &lt;p&gt; 이 keepalive 설정을 클라이언트에서 변경할 수 없습니다. OpenVPN의 시스템 관리자만 설정을 변경할 수 있습니다. &lt;p&gt; 불행히도 udp를 사용할때 keepalive값을 60초 이상으로 하면 일부의 NAT 게이트웨이에서는 비활성 타임아웃 때문에 연결을 끊어버리게 됩니다. TCP와 긴 keepalive 만료기간을 함께 사용할 수는 있지만 패킷 손실이 높은 연결구간에서는 TCP over TCP의 성능이 매우 저조합니다. (참조 &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;왜 TCP를 통한 TCP는 안좋은 방법인지&lt;/a&gt;)</string>
- <string name="faq_tethering">안드로이드 테더링 기능 (WiFi, USB 또는 블루투스를 통한)과 VPNService API (이 프로그램에서 사용됨)는 함께 작동 하지 않습니다. 자세한 내용은 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=34\"&gt;issue #34&lt;/a&gt; 를 참조 하십시오</string>
+ <string name="baterry_consumption">제 개인적인 테스트에서 Openvpn의 높은 배터리 소비에 대한 주요 이유는 keepalive 패킷 때문이었습니다. 대부분의 OpenVPN 서버 설정에는 \'keepalive 10 60\' 와 같은 문구가 있는데 이는 클라이언트에서 서버로 서버에서 클라이언트로 keepalive 패킷을 10 초마다 보냅니다. &lt;p&gt;이러한 패킷은 작고 많은 트래픽을 사용하지 않습니다만 이들은 모바일 라디오 네트워크를 계속 유지하게 만들게 되고 따라서 에너지 소비가 증가합니다. (참조 &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;The Radio State Machine | Android Developers&lt;/a&gt;) &lt;p&gt;이 keepalive 설정을 클라이언트에서 변경할 수 없습니다. OpenVPN의 시스템 관리자만 설정을 변경할 수 있습니다. &lt;p&gt;불행히도 udp를 사용할 때 keepalive값을 60 초 이상으로 하면 일부의 NAT 게이트웨이에서는 비활성 타임아웃 때문에 연결을 끊어버리게 됩니다. TCP와 긴 keepalive 만료기간을 함께 사용할 수는 있지만 패킷 손실이 높은 연결 구간에서는 TCP over TCP의 성능이 매우 저조합니다. (참조 &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;왜 TCP를 통한 TCP는 안 좋은 방법인가&lt;/a&gt;)</string>
+ <string name="faq_tethering">안드로이드의 (WiFi, USB 또는 블루투스를 통한) 테더링 기능과 (이 프로그램에서 사용되는) VPNService API 는 함께 작동하지 않습니다. 자세한 내용은 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=34\"&gt;문제 #34&lt;/a&gt;를 참조하십시오</string>
<string name="vpn_tethering_title">VPN과 테더링</string>
- <string name="connection_retries">다시 연결</string>
+ <string name="connection_retries">연결 재시도</string>
<string name="reconnection_settings">다시 연결 설정</string>
- <string name="connectretrymessage">연결 시도 사이의 기다리는 초단위 주기 입니다.</string>
- <string name="connectretrywait">연결과 연결 사이의 초단위 기간</string>
- <string name="minidump_generated">OpenVPN이 예기치 않게 종료됐습니다. 메인 메뉴에 있는 미니 덤프 보내기 옵션의 사용을 고려 하시기 바랍니다</string>
+ <string name="connectretrymessage">연결 시도 사이에 대기하는 초 단위 시간입니다.</string>
+ <string name="connectretrywait">연결 사이의 초 단위 시간</string>
+ <string name="minidump_generated">OpenVPN이 예기치 않게 종료됐습니다. 메인 메뉴에 있는 미니 덤프 보내기 옵션의 사용을 고려하시기 바랍니다.</string>
<string name="send_minidump">미니 덤프를 개발자에게 보내기</string>
- <string name="send_minidump_summary">개발자에게 마지막 비정상종료에 대한 디버깅 정보를 보냅니다</string>
+ <string name="send_minidump_summary">개발자에게 마지막 비정상 종료에 대한 디버깅 정보를 보냅니다</string>
<string name="notifcation_title">OpenVPN - %s</string>
<string name="session_ipv4string">%1$s - %2$s</string>
<string name="session_ipv6string">%1$s - %3$s, %2$s</string>
<string name="state_connecting">연결중</string>
<string name="state_wait">서버 응답 대기중</string>
<string name="state_auth">인증중</string>
- <string name="state_get_config">클라이언트 구성 가져오는중</string>
+ <string name="state_get_config">클라이언트 구성 가져오는 중</string>
<string name="state_assign_ip">IP 주소 할당중</string>
- <string name="state_add_routes">노선 추가중</string>
+ <string name="state_add_routes">경로 추가중</string>
<string name="state_connected">연결됨</string>
<string name="state_disconnected">연결 끊기</string>
<string name="state_reconnecting">재연결중</string>
<string name="state_exiting">종료중</string>
- <string name="state_noprocess">실행안됨</string>
- <string name="state_resolve">호스트명 찾는중</string>
+ <string name="state_noprocess">실행 안 됨</string>
+ <string name="state_resolve">호스트 이름 변환중</string>
<string name="state_tcp_connect">연결중 (TCP)</string>
<string name="state_auth_failed">인증 실패</string>
<string name="state_nonetwork">사용 가능한 네트워크 대기중</string>
- <string name="notifcation_title_notconnect">연결 되지 않음</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
+ <string name="notifcation_title_notconnect">연결되지 않음</string>
<string name="start_vpn_title">VPN %s 연결중</string>
<string name="start_vpn_ticker">VPN %s 연결중</string>
- <string name="jelly_keystore_alphanumeric_bug">일부 버전의 안드로이드 4.1에서는 키 인증서의 이름에 비 영숫자 문자(공백, 밑줄 또는 대시)가 포함 된 경우 문제가 있습니다. 특수 문자 없는 인증서를 다시 가져와 시도해보세요</string>
- <string name="encryption_cipher">암호화 암호</string>
+ <string name="jelly_keystore_alphanumeric_bug">일부 버전의 안드로이드 4.1에서는 키 저장소 인증서의 이름에 비영숫자 문자(공백, 밑줄 또는 대시)가 포함된 경우 문제가 있습니다. 특수 문자 없는 인증서를 다시 가져와 보세요.</string>
+ <string name="encryption_cipher">암호화 알고리즘</string>
<string name="packet_auth">패킷 인증</string>
- <string name="auth_dialog_title">패킷 인증 방법을 입력한다</string>
- <string name="built_by">개발자 %s</string>
+ <string name="auth_dialog_title">패킷 인증 방법 입력</string>
+ <string name="built_by">%s가 빌드</string>
<string name="debug_build">디버그 빌드</string>
<string name="official_build">공식 빌드</string>
<string name="make_selection_inline">프로파일에 복사</string>
<string name="crashdump">크래시 덤프</string>
<string name="add">추가</string>
- <string name="send_config">설정 파일 보내기</string>
+ <string name="send_config">구성 파일 보내기</string>
<string name="complete_dn">완전한 DN</string>
- <string name="remotetlsnote">가져온 구성에는 다른 DN 형식을 사용하는 오래된 tls-remote옵션이 있는데 이는 더이상 지원되지 않습니다.</string>
- <string name="rdn">RDN (common 이름)</string>
+ <string name="remotetlsnote">가져온 구성에는 다른 DN 형식을 사용하는 오래된 tls-remote 옵션이 있는데 이는 더이상 지원되지 않습니다.</string>
+ <string name="rdn">RDN (공통 이름)</string>
<string name="rdn_prefix">RDN 접두사</string>
- <string name="tls_remote_deprecated">tls-remote (지원 되지 않음)</string>
- <string name="help_translate">http://crowdin.net/project/ics-openvpn/invite를 방문 하여 번역을 도울 수 있습니다</string>
- <string name="prompt">%1$s 이(가) %2$s 을(를) 제어하려고 시도</string>
- <string name="remote_warning">다음 진행으로, 당신은 OpenVPN for Android 응용프로그램에게 완벽한 제어권과 모든 네트워크 트래픽을 가로챌 수 있는 권한을 허락합니다. <b>앱을 신뢰하지 않는다면 허락하지 마십시오.</b> 그렇지 않으면, 당신은 당신의 데이터를 악성 소프트웨어에게 빼앗길 수 있습니다.\"</string>
- <string name="remote_trust">나는 이 프로그램을 신뢰합니다.</string>
- <string name="no_external_app_allowed">어떤 응용 프로그램도 외부 API를 사용할 수 없습니다</string>
+ <string name="tls_remote_deprecated">tls-remote (지원되지 않음)</string>
+ <string name="help_translate">http://crowdin.net/project/ics-openvpn/invite 를 방문하여 번역을 도울 수 있습니다</string>
+ <string name="prompt">%1$s가 %2$s를 제어하려고 합니다</string>
+ <string name="remote_warning">계속 진행하면, 당신은 해당 앱에 OpenVPN for Android의 완벽한 제어권과 모든 네트워크 트래픽을 가로챌 수 있는 권한을 허락합니다.<b>그 앱을 신뢰하지 않는다면 허락하지 마십시오.</b> 그렇지 않으면 악성 소프트웨어가 당신의 데이터를 유출할 수 있습니다.</string>
+ <string name="remote_trust">나는 이 앱을 신뢰합니다.</string>
+ <string name="no_external_app_allowed">어떤 앱도 외부 API를 사용할 수 없습니다</string>
<string name="allowed_apps">허용된 앱: %s</string>
- <string name="clearappsdialog">허용된 외부 앱의 목록을 삭제하겠습니까?\n현재 허용된 외부 앱:\n\n%s</string>
- <string name="screenoff_summary">\"화면이 꺼져있을때 60초동안 64kB 미만의 데이터가 전송되면 VPN 일시정지. \"Persistent Tun\" 옵션이 활성화되어 있으면 VPN 일시 정지시 당신의 장비는 네트워크가 끊어 집니다. \"Persistent Tun\" 옵션이 없는 경우 장비는 VPN 연결/보호를 잃습니다. </string>
+ <string name="clearappsdialog">허용된 외부 앱 목록을 비우겠습니까?\n현재 허용된 외부 앱:\n\n%s</string>
+ <string name="screenoff_summary">\"화면이 꺼져 있고 60 초 동안 64kB 미만의 데이터가 전송되면 VPN 일시 정지. \"지속적인 TUN\" 옵션이 활성화되어 있으면 VPN 일시 정지시 당신의 장비는 네트워크 연결이 없는 상태가 됩니다. \"지속적인 TUN\" 옵션이 없는 경우 기기는 VPN 연결/보호를 잃습니다.</string>
<string name="screenoff_title">화면 꺼짐 후 VPN 연결 일시 정지</string>
- <string name="screenoff_pause">화면이 꺼진 상태에서 일시 중지: %2$ss에서 %1$s 미만</string>
- <string name="screen_nopersistenttun">경고: 이 VPN은 persistent tun이 비활성화 되어있습니다. 화면이 꺼졌을 때 트래픽은 터널을 사용하지 않고 인터넷을 바로 사용합니다.</string>
+ <string name="screenoff_pause">화면이 꺼진 상태에서 연결 일시 정지: %2$s 초 안에 %1$s 미만</string>
+ <string name="screen_nopersistenttun">경고: 이 VPN은 지속적인 TUN이 비활성화 되어있습니다. 화면이 꺼졌을 때 트래픽은 터널을 사용하지 않고 보통 인터넷을 사용합니다.</string>
<string name="save_password">암호 저장</string>
- <string name="pauseVPN">VPN 일시중지</string>
+ <string name="pauseVPN">VPN 일시 정지</string>
<string name="resumevpn">VPN 재개하기</string>
- <string name="state_userpause">VPN 일시 정지 사용자의 요청</string>
- <string name="state_screenoff">VPN 일시정지됨 - 화면 끄기</string>
- <string name="device_specific">장치 관련 Hacks</string>
- <string name="cannotparsecert">인증서 정보를 표시 할 수 없습니다</string>
- <string name="appbehaviour">응용 프로그램 동작</string>
+ <string name="state_userpause">사용자가 요청한 VPN 일시 정지</string>
+ <string name="state_screenoff">VPN 일시 정지됨 - 화면 끄기</string>
+ <string name="device_specific">기기별 해킹</string>
+ <string name="cannotparsecert">인증서 정보를 표시할 수 없습니다</string>
+ <string name="appbehaviour">앱 동작</string>
<string name="vpnbehaviour">VPN 동작</string>
- <string name="allow_vpn_changes">VPN 프로필에 대한 변경을 허용</string>
- <string name="hwkeychain">하드웨어 키 스토어:</string>
- <string name="permission_icon_app">응용 프로그램의 아이콘이 OpenVPN for Android를 사용 하려고함</string>
- <string name="faq_vpndialog43">"안드로이드 4.3부터는 VPN 확인이 \"overlaying apps\"로 부터 보호 받게 됩니다. 따라서 입력창이 터치 입력에 반응하지 않을 수 있습니다. 사용하는 앱중에서 overlay를 사용하는 경우 이러한 문제가 발생될수있습니다. 문제의 앱을 제작한 프로그램어를 연락하십시오. 이 문제는 안드로이드 4.3과 이상의 버전에서 모든 VPN 응용 프로그램에 영향을 줍니다. &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;Issue 185&lt;a&gt; 참조"</string>
- <string name="faq_vpndialog43_title">안드로이드 4.3과 이후 버전에서의 VPN 확인 창</string>
- <string name="donatePlayStore">또는 당신은 플레이 스토어와 나에게 기부금을 보낼 수 있습니다:</string>
- <string name="thanks_for_donation">%s 님! 기부 감사합니다</string>
+ <string name="allow_vpn_changes">VPN 프로파일 변경을 허용</string>
+ <string name="hwkeychain">하드웨어 키 저장소:</string>
+ <string name="permission_icon_app">OpenVPN for Android를 사용하려고 하는 앱의 아이콘</string>
+ <string name="faq_vpndialog43">"안드로이드 4.3부터는 VPN 확인이 \"오버레이하는 앱\"으로부터 보호받습니다. 이 경우 대화창이 터치 입력에 반응하지 않게 됩니다. 사용하는 앱 중에서 오버레이를 사용하는 경우 이러한 문제가 발생될 수 있습니다. 문제의 앱을 발견하면 그 앱의 제작자에게 연락하십시오. 이 문제는 안드로이드 4.3과 이상의 버전에서 모든 VPN 앱에 영향을 줍니다. 상세한 사항은 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;문제 185&lt;a&gt; 참조"</string>
+ <string name="faq_vpndialog43_title">VPN 확인 대화창</string>
+ <string name="donatePlayStore">또는 당신은 플레이 스토어에서 나에게 기부금을 보낼 수 있습니다:</string>
+ <string name="thanks_for_donation">%s를 기부해 주셔서 감사합니다!</string>
<string name="logCleared">로그가 삭제되었습니다.</string>
- <string name="show_password">비밀 번호 표시</string>
+ <string name="show_password">암호 표시</string>
<string name="keyChainAccessError">키체인 접근 오류: %s</string>
- <string name="timestamp_short">짧은</string>
+ <string name="timestamp_short">간결하게</string>
<string name="timestamp_iso">ISO</string>
<string name="timestamps">타임 스탬프</string>
<string name="timestamps_none">없음</string>
<string name="uploaded_data">업로드</string>
<string name="downloaded_data">다운로드</string>
- <string name="vpn_status">Vpn 상태</string>
+ <string name="vpn_status">VPN 상태</string>
<string name="logview_options">옵션 보기</string>
- <string name="unhandled_exception">처리 되지 않은 예외: %1$s\n\n%2$s</string>
+ <string name="unhandled_exception">처리되지 않은 예외: %1$s\n\n%2$s</string>
<string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
- <string name="full_licenses">전체 라이센스</string>
+ <string name="faq_system_dialog_xposed">만약 당신의 안드로이드 기기가 루팅되어 있다면 &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt;와 &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialog confirm module&lt;/a&gt;을 자신의 책임 하에 설치할 수 있습니다.</string>
+ <string name="full_licenses">전체 라이선스</string>
+ <string name="blocklocal_summary">로컬 네트워크에 직접 연결된 인터페이스는 VPN을 통해 접속하지 않습니다. 이 옵션의 선택을 취소하면 로컬 네트워크의 모든 트래픽이 VPN으로 리디렉션됩니다.</string>
+ <string name="blocklocal_title">로컬 네트워크에선 VPN 우회</string>
<string name="userpw_file">사용자 이름/암호 파일</string>
- <string name="imported_from_file">%s 에서 가져옴</string>
- <string name="mssfix_invalid_value">MSS override의 값은 0과 9000 사이의 정수이어야합니다</string>
+ <string name="imported_from_file">[%s에서 가져옴]</string>
+ <string name="files_missing_hint">일부 파일을 찾을 수 없습니다. 프로파일을 가져올 파일을 선택하십시오:</string>
+ <string name="openvpn_is_no_free_vpn">이 앱을 사용하려면 OpenVPN을 지원하는 VPN 공급자/VPN 게이트웨이가 필요합니다(종종 고용주가 제공함). OpenVPN에 대한 자세한 내용과 자신의 OpenVPN 서버를 설정하는 방법은 http://community.openvpn.net/ 를 참조하십시오.</string>
+ <string name="import_log">로그 가져 오기:</string>
+ <string name="ip_looks_like_subnet">VPN 토폴로지 \"%3$s\"가 지정되었지만 ifconfig %1$s %2$s는 네트워크 마스크가 있는 IP 주소와 더 유사합니다. \"subnet\" 토폴로지를 가정합니다.</string>
+ <string name="mssfix_invalid_value">MSS 재정의 값은 0과 9000 사이의 정수이어야 합니다</string>
+ <string name="mtu_invalid_value">MTU 재정의 값은 64과 9000 사이의 정수이어야 합니다</string>
+ <string name="mssfix_value_dialog">송신 패킷을 OpenVPN이 캡슐화하여 만들어지는, OpenVPN이 피어에게 보낼 UDP 패킷 크기가 이 바이트 수를 넘지 않도록 송신 패킷 크기를 제한하도록 터널 상의 TCP 세션들에 알립니다. (기본값 1450)</string>
+ <string name="mssfix_checkbox">TCP 페이로드의 MSS 값 재정의</string>
+ <string name="mssfix_dialogtitle">TCP 페이로드의 MSS 설정</string>
+ <string name="client_behaviour">클라이언트 동작</string>
+ <string name="clear_external_apps">허용된 외부 앱 비우기</string>
<string name="loading">로드 중...</string>
<string name="allowed_vpn_apps_info">VPN을 사용할 앱들: %1$s</string>
<string name="disallowed_vpn_apps_info">VPN을 사용하지 않을 앱들: %1$s</string>
+ <string name="app_no_longer_exists">%s 패키지가 더이상 설치되어 있지 않으며 앱 허용/거부 목록에서 제거함</string>
+ <string name="vpn_disallow_radio">VPN은 모든 앱에 사용되지만 선택된 앱은 제외합니다.</string>
+ <string name="vpn_allow_radio">VPN은 선택된 앱에만 사용됩니다.</string>
+ <string name="query_delete_remote">원격 서버 항목을 제거하시겠습니까?</string>
<string name="keep">유지</string>
<string name="delete">삭제</string>
+ <string name="add_remote">새 원격 서버 추가</string>
+ <string name="remote_random">연결시 임의의 순서로 연결 항목을 사용</string>
+ <string name="remote_no_server_selected">하나 이상의 원격 서버를 정의하고 활성화해야 합니다.</string>
+ <string name="server_list">서버 목록</string>
+ <string name="vpn_allowed_apps">허용된 앱</string>
+ <string name="advanced_settings">고급 설정</string>
<string name="payload_options">페이로드 옵션</string>
<string name="tls_settings">TLS 설정</string>
+ <string name="no_remote_defined">정의된 원격 서버 없음</string>
+ <string name="duplicate_vpn">VPN 프로파일 복제</string>
+ <string name="duplicate_profile_title">프로파일 복제: %s</string>
+ <string name="show_log">로그 보기</string>
+ <string name="faq_android_clients">Android용 OpenVPN 클라이언트가 여러 개 있습니다. 가장 일반적으로 사용되는 것은 OpenVPN for Android (이 클라이언트), OpenVPN Connect 및 OpenVPN Settings입니다. &lt;p&gt;클라이언트들을 두 그룹으로 나눌 수 있습니다. OpenVPN for Android와 OpenVPN Connect는 공식 VPNService API(Android 4.0 이상)를 사용하고 루트가 필요하지 않으며 OpenVPN Settings는 루트를 사용합니다.&lt;p&gt;OpenVPN for Android는 오픈 소스 클라이언트이며 Arne Schwabe에 의해 개발되었습니다. 고급 사용자를 대상으로 하며 많은 설정을 제공하고 파일에서 프로필을 가져오고 앱 내에서 프로필을 구성/변경하는 기능을 제공합니다. 이 클라이언트는 OpenVPN의 커뮤니티 버전을 기반으로 하는데 OpenVPN 2.x 소스 코드를 기반으로 합니다. 이 클라이언트는 커뮤니티의 반 공식 클라이언트로 볼 수 있습니다. &lt;p&gt;OpenVPN Connect는 OpenVPN Technologies, Inc.에서 개발한 비공개 소스 클라이언트입니다. 이 클라이언트는 일반 사용을 목적으로 하고 평균적인 사용자를 대상으로 하며 OpenVPN 프로파일을 가져올 수 있습니다. 이 클라이언트는 OpenVPN 프로토콜의 OpenVPN C++ 재구현을 기반으로 합니다(이는 OpenVPN Technologies, Inc.에서 iOS용 OpenVPN 앱을 내놓는 데 필요했습니다). 이 클라이언트는 OpenVPN 기술의 공식 클라이언트입니다. &lt;p&gt;OpenVPN Settings는 이 클라이언트들 중 가장 오래된 클라이언트이며 오픈 소스 OpenVPN의 UI입니다. OpenVPN for Android와 달리 루트가 필요하며 VPNService API를 사용하지 않습니다. Android 4.0 이상에 의존하지 않습니다.</string>
<string name="faq_androids_clients_title">안드로이드 OpenVPN 클라이언트 간의 차이</string>
+ <string name="ignore_multicast_route">멀티캐스트 경로 무시​​: %s</string>
+ <string name="ab_only_cidr">Android는 VPN에 대한 CIDR 경로만 지원합니다. 비 CIDR 경로는 거의 사용되지 않기 때문에 OpenVPN for Android는 CIDR이 아닌 경로에 /32를 사용하고 경고를 보냅니다.</string>
+ <string name="ab_tethering_44">테더링은 VPN이 활성화되어있는 동안 작동합니다. 테더링된 연결은 VPN을 사용하지 않을 것입니다.</string>
+ <string name="ab_kitkat_mss">초기 킷캣 버전은 TCP 연결에서 잘못된 MSS 값을 설정합니다(# 61948). 이 버그를 우회하려면 MSS 재정의 옵션을 활성화하십시오.</string>
+ <string name="ab_proxy">Android는 DNS 서버가 설정되지 않은 경우 모바일/Wi-Fi 연결에 지정된 프록시 설정을 계속 사용합니다. OpenVPN for Android는 로그에 이에 대해 경고할 것입니다. <p>VPN이 DNS 서버를 설정할 때 안드로이드는 프록시를 사용하지 않을 것입니다. VPN 연결을 위한 프록시를 설정하는 API는 없습니다.</p></string>
+ <string name="ab_lollipop_reinstall">VPN 앱이 제거되고 다시 설치되면 작동을 멈출 수 있습니다. 자세한 내용은 #80074를 참조하십시오.</string>
+ <string name="ab_not_route_to_vpn">구성된 클라이언트 IP와 해당 네트워크 마스크에 있는 IP들은 VPN으로 라우팅되지 않습니다. OpenVPN은 클라이언트 IP와 넷마스크에 해당하는 경로를 명시적으로 추가함으로써 이 버그를 우회합니다.</string>
+ <string name="ab_persist_tun">지속적인 TUN 지원에 사용되는 다른 TUN 장치가 활성화된 상태에서 한 TUN 장치를 열면 기기의 VPNServices가 죽습니다. VPN을 다시 작동 시키려면 재부팅해야 합니다. OpenVPN for Android는 TUN 장치를 다시 열지 않으려고 시도합니다. 정말 필요하면 충돌이 발생하지 않도록 새로운 TUN 장치를 열기 전에 먼저 현재 TUN을 닫습니다. 이 경우 짧은 순간 VPN이 아닌 연결을 통해 패킷이 전송될 수 있습니다. 이 우회 방법으로도 VPNServices가 죽고 기기를 재부팅해야 하는 경우가 있습니다.</string>
+ <string name="ab_secondary_users">VPN은 부차적인 사용자에게는 전혀 작동하지 않습니다.</string>
+ <string name="ab_kitkat_reconnect">"여러 사용자가 VPN 앱을 사용하는 동안 모바일 연결/모바일 데이터 연결이 자주 끊어지는 것으로 보고합니다. 이 반응은 일부 모바일 공급자/기기 조합에만 영향을 미치는 것으로 보이며 지금까지 버그에 대한 원인/해결 방법을 알 수 없습니다."</string>
+ <string name="ab_vpn_reachability_44">VPN 없이 도달할 수 있는 목적지만 VPN을 통해서 도달할 수 있습니다. IPv6 VPN은 전혀 작동하지 않습니다.</string>
+ <string name="ab_only_cidr_title">비 CIDR 경로</string>
+ <string name="ab_proxy_title">VPN을 위한 프록시 동작</string>
+ <string name="ab_lollipop_reinstall_title">VPN 앱들을 재설치</string>
+ <string name="version_upto">%s 및 이전 버전</string>
+ <string name="copy_of_profile">%s의 사본</string>
+ <string name="ab_not_route_to_vpn_title">구성된 IP 주소로의 경로</string>
+ <string name="ab_kitkat_mss_title">VPN 연결에 대한 잘못된 MSS 값</string>
+ <string name="ab_secondary_users_title">부차적인 태블릿 사용자들</string>
+ <string name="custom_connection_options_warng">사용자 지정 연결별 옵션을 지정하십시오. 조심해서 사용하십시오.</string>
+ <string name="custom_connection_options">사용자 지정 옵션</string>
+ <string name="remove_connection_entry">연결 항목 제거</string>
+ <string name="ab_kitkat_reconnect_title">모바일 네트워크에서 임의 연결 해제</string>
+ <string name="ab_vpn_reachability_44_title">원격 네트워크에 도달할 수 없음</string>
+ <string name="ab_persist_tun_title">지속적인 TUN 모드</string>
+ <string name="version_and_later">%s 및 이후 버전</string>
+ <string name="tls_cipher_alert_title">SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure로 연결 실패</string>
+ <string name="tls_cipher_alert">새로운 OpenVPN for Android 버전들(0.6.29/2015년 3월)은 허용된 암호화 스위트(tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\")에 더 안전한 기본값을 사용합니다. 안타깝게도 보안 수준이 낮은 암호화 스위트와 수출용 암호화 스위트를 생략하면, 특히 완벽 전달 보안(Diffie-Hellman)을 지원하지 않는 암호화 스위트를 생략하면 몇 가지 문제가 발생합니다. 이것은 보통 불필요한 요소를 제거한 SSL(예: MikroTik)을 쓰는 서버나 몇 임베디드 OS에서 tls-cipher을설정하여 TLS 보안을 강화하려는 좋은 의도를 가지고 했으나 불완전하게 실행됨으로써 발생합니다.\n이 문제를 해결하려면 서버에서 tls-cipher 설정을 tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\"와 같은 적절한 기본값으로 설정하십시오. 클라이언트에서 문제를 우회하려면 안드로이드 클라이언트의 tls-cipher DEFAULT 사용자 정의 옵션을 추가하십시오.</string>
+ <string name="message_no_user_edit">이 프로파일은 외부 앱(%s)에서 추가되었으며 사용자가 편집할 수 없음으로 표시되었습니다.</string>
+ <string name="crl_file">인증서 폐기 목록</string>
+ <string name="service_restarted">OpenVPN 서비스 재시작 (앱이 메모리 부족으로 죽었거나 강제 종료된 것으로 추정)</string>
+ <string name="import_config_error">구성 가져오기에서 오류가 발생했습니다. 저장할 수 없습니다.</string>
+ <string name="Search">검색</string>
+ <string name="lastdumpdate">(마지막 덤프는 %1$d시간 %2$d분 이전 (%3$s))</string>
+ <string name="clear_log_on_connect">새 연결에 로그 지우기</string>
+ <string name="connect_timeout">연결 시간 초과</string>
+ <string name="no_allowed_app">허용된 앱이 추가되지 않았습니다. 모든 앱을 허용하지 않으려면 허용된 앱 목록에 앱이 하나 이상 있어야 하므로 이 앱 자신(%s)을 추가합니다.</string>
+ <string name="query_permissions_sdcard">OpenVPN for Android는 자동으로 SD 카드에서 누락된 파일을 검색할 수 있습니다. 이 메시지를 탭하여 권한 요청을 시작하십시오.</string>
+ <string name="protocol">프로토콜</string>
+ <string name="enabled_connection_entry">사용</string>
+ <string name="abi_mismatch">이 장치의 고유 ABI 우선 순위(%1$s)와 고유 라이브러리가 보고한 ABI(%2$s)가 불일치</string>
+ <string name="permission_revoked">운영체제에 의해 취소된 VPN 권한(예: 다른 VPN 프로그램 시작됨), VPN 중지</string>
+ <string name="pushpeerinfo">피어 정보 푸시</string>
+ <string name="pushpeerinfosummary">서버에 추가 정보 전송 (예: SSL 버전 및 안드로이드 버전)</string>
+ <string name="pw_request_dialog_title">%1$s이 필요함</string>
+ <string name="pw_request_dialog_prompt">프로파일 %1$s의 암호를 입력하십시오</string>
+ <string name="menu_use_inline_data">인라인 데이터 사용</string>
+ <string name="export_config_chooser_title">구성 파일 내보내기</string>
+ <string name="missing_tlsauth">tls-auth 파일이 누락되었습니다</string>
+ <string name="missing_certificates">사용자 인증서 또는 사용자 인증서 키 파일 누락됨</string>
+ <string name="missing_ca_certificate">CA 인증서 누락됨</string>
+ <string name="crl_title">인증서 폐기 목록 (선택 사항)</string>
+ <string name="reread_log">로그 캐시 파일에서 항목(%d 개)을 다시 읽습니다</string>
+ <string name="samsung_broken">삼성 휴대폰이 가장 많이 판매되는 안드로이드폰 중 하나이지만, 삼성의 펌웨어는 가장 버그가 많은 안드로이드 펌웨어 중 하나입니다. 버그는 이러한 기기에서의 VPN 작업에만 국한되지 않지만 그 중 많은 수를 우회할 수 있습니다. 다음은 일부 버그에 대한 설명입니다.\n\nDNS는 VPN 범위의 DNS 서버가 아니면 작동하지 않습니다.\n\n많은 삼성 5.x 기기에서 허용/허용되지 않는 앱 기능이 작동하지 않습니다.\n삼성 6.x 기기에서는 VPN 앱이 절전 기능에서 제외되지 않으면 VPN이 작동하지 않는 것으로 보고됩니다.</string>
+ <string name="samsung_broken_title">삼성 휴대폰</string>
+ <string name="novpn_selected">VPN이 선택되지 않았습니다.</string>
+ <string name="defaultvpn">기본 VPN</string>
+ <string name="defaultvpnsummary">기본 VPN이 필요한 장소(현재로는 부팅 중에 켜기와 연결 유지, 빠른 설정 타일)에서 사용될 VPN</string>
+ <string name="vpnselected">현재 선택된 VPN: \'%s\'</string>
+ <string name="reconnect">다시 연결</string>
+ <string name="qs_title">VPN 토글</string>
+ <string name="qs_connect">%s에 연결</string>
+ <string name="qs_disconnect">%s 연결 끊기</string>
+ <string name="connectretrymaxmessage">연결 시도 사이의 최대 시간을 입력하십시오. OpenVPN은 매 연결 시도 실패 후 대기 시간을 이 값까지 천천히 올립니다. 기본값은 300 초입니다.</string>
+ <string name="connectretrymaxtitle">연결 시도 사이의 최대 시간</string>
+ <string name="state_waitconnectretry">연결 시도 사이에 %s 초 기다림</string>
+ <string name="nought_alwayson_warning"><![CDATA[VPN 확인 대화 상자가 표시되지 않으면 다른 앱에서 \"연결 유지 VPN\"을 켜 놓았을 수 있습니다. 이 경우 해당 앱만 VPN에 연결할 수 있습니다. 설정 -> 네트워크 더보기 .. -> VPN을 확인하세요.]]></string>
+ <string name="management_socket_closed">OpenVPN에 대한 연결이 끊어졌습니다 (%s)</string>
+ <string name="change_sorting">정렬 변경</string>
+ <string name="sort">정렬</string>
+ <string name="sorted_lru">최근 사용 순으로 프로파일 정렬</string>
+ <string name="sorted_az">이름 순으로 프로파일 정렬</string>
+ <string name="deprecated_tls_remote">구성이 2.3에서 제거될 것으로 표시되었고 2.4에서 완전히 제거된 tls-remote 옵션을 사용합니다</string>
+ <string name="auth_failed_behaviour">AUTH_FAILED에 대한 동작</string>
+ <string name="graph">그래프</string>
+ <string name="use_logarithmic_scale">로그 스케일 사용</string>
+ <string name="notenoughdata">데이터가 충분하지 않습니다</string>
+ <string name="avghour">시간당 평균</string>
+ <string name="avgmin">분당 평균</string>
+ <string name="last5minutes">지난 5 분</string>
+ <string name="data_in">들어옴</string>
+ <string name="data_out">나감</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="weakmd">&lt;p&gt;OpenSSL 1.1 버전부터, OpenSSL은 MD5와 같은, 인증서의 약한 서명을
+ 거부합니다.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5 서명은 완전히 불안전하고 더이상 사용하지 않아야 합니다.&lt;/b&gt; MD5
+ 충돌은 &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt;매우 적은 비용으로
+ 수 시간 안에&lt;/a&gt; 만들 수 있습니다.
+ 가능한 한 빨리 VPN 인증서를 업데이트해야 합니다.&lt;/p&gt;&lt;p&gt;불행하게도 오래된 easy-rsa 배포판은
+ 구성 옵션 \"default_md md5\"가 포함되어 있습니다. 만약 오래된 easy-rsa 버전을
+ 사용하신다면 &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;최신 버전&lt;/a&gt;으로 업데이트하시거나
+ md5를 sha256으로 바꾸고 당신의 인증서를
+ 재생성하세요.&lt;/p&gt;&lt;p&gt;정말 오래되고 깨진 인증서를 사용하고 싶으시다면
+ 사용자 지정 구성 옵션 tls-cipher \"DEFAULT:@SECLEVEL=0\"를 고급 구성에서 설정하거나
+ 불러오는 구성 파일에 추가해 넣으세요.&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">연결 통계</string>
+ <string name="channel_description_background">수립된 OpenVPN 연결의 진행 통계</string>
+ <string name="channel_name_status">연결 상태 변화</string>
+ <string name="channel_description_status">OpenVPN 연결의 상태 변화 (연결중, 인증중,&#8230;)</string>
+ <string name="weakmd_title">인증서 서명에 약한 (MD5) 해시 사용 (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL 속도 테스트</string>
+ <string name="openssl_cipher_name">OpenSSL 암호화 알고리즘 이름</string>
+ <string name="osslspeedtest">OpenSSL 암호화 속도 테스트</string>
+ <string name="openssl_error">OpenSSL이 오류를 반환함</string>
+ <string name="running_test">테스트 수행 중&#8230;</string>
+ <string name="test_algoirhtms">선택한 알고리즘 테스트</string>
+ <string name="all_app_prompt">어떤 외부 앱이 %s를 제어하려고 합니다. 접근을 요청하는 앱을 정해 놓을 수 없습니다. 이 앱을 허용하면 모든 앱의 접근을 승인하게 됩니다.</string>
+ <string name="openvpn3_nostatickeys">OpenVPN 3 C++ 구현은 고정 키를 지원하지 않습니다. 일반 설정에서 OpenVPN 2.x로 변경해 주세요.</string>
+ <string name="openvpn3_pkcs12">OpenVPN 3 C++ 구현과 함께 PKCS12 파일을 직접 사용하는 것은 지원되지 않습니다. PKCS12 파일을 안드로이드 키 저장소로 가져 오거나 일반 설정에서 OpenVPN 2.x으로 변경하세요.</string>
</resources>
diff --git a/app/src/main/res/values-nl/strings-icsopenvpn.xml b/app/src/main/res/values-nl/strings-icsopenvpn.xml
index 838ae5b9..737cc2d3 100755
--- a/app/src/main/res/values-nl/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-nl/strings-icsopenvpn.xml
@@ -12,14 +12,14 @@
<string name="cant_read_folder">Map is onleesbaar</string>
<string name="select">Selecteer</string>
<string name="cancel">Annuleer</string>
- <string name="no_data">Geen Gegevens</string>
+ <string name="no_data">Geen Data</string>
<string name="useLZO">LZO Compressie</string>
<string name="client_no_certificate">Geen Certificaat</string>
<string name="client_certificate_title">Client Certificaat</string>
<string name="client_key_title">Client Certificaat Sleutel</string>
<string name="client_pkcs12_title">PKCS12 Bestand</string>
<string name="ca_title">CA Certificaat</string>
- <string name="no_certificate">Je moet een certificaat selecteren</string>
+ <string name="no_certificate">U moet een certificaat selecteren</string>
<string name="copyright_guicode">De broncode en bugs zijn te vinden op https://github.com/schwabe/ics-openvpn/</string>
<string name="copyright_others">Het programma gebruikt de volgende componenten. Zie de broncode voor volledige details over de licenties.</string>
<string name="about">Over</string>
@@ -27,24 +27,24 @@
<string name="vpn_type">Type</string>
<string name="pkcs12pwquery">PKCS12 Wachtwoord</string>
<string name="file_select">Selecteer&#8230;</string>
- <string name="file_nothing_selected">Je moet een bestand selecteren</string>
+ <string name="file_nothing_selected">U moet een bestand selecteren</string>
<string name="useTLSAuth">Gebruik TLS autentificatie</string>
<string name="tls_direction">TLS Richting</string>
- <string name="ipv6_dialog_tile">Voer een IPv6 Adres/Netmask in met het CIDR Formaat (b.v. 2000:dd::23/64)</string>
- <string name="ipv4_dialog_title">Voer een IPv4 Adres/Netmask in met het CIDR Formaat (b.v. 1.2.3.4/24)</string>
- <string name="ipv4_address">IPv6 Adres</string>
- <string name="ipv6_address">IPv4 Adres</string>
- <string name="custom_option_warning">Geavanceerde OpenVPN opties. Veel van de tun gerelateerde OpenVPN instellingen worden niet ondersteund. Als u denkt dat een belangrijke optie ontbreekt, neem dan contact op met de auteur.</string>
+ <string name="ipv6_dialog_tile">Voer IPv6-adres/Netmask in CIDR-indeling in (bijv. 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Voer IPv4-adres/Netmask in CIDR-indeling in (bijv. 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4 Adres</string>
+ <string name="ipv6_address">IPv6 Adres</string>
+ <string name="custom_option_warning">Geavanceerde OpenVPN opties. Wees voorzichtig. Veel van de tun gerelateerde OpenVPN instellingen worden niet ondersteund. Als u denkt dat een belangrijke optie ontbreekt, neem dan contact op met de auteur</string>
<string name="auth_username">Gebruikersnaam</string>
- <string name="auth_pwquery">wachtwoord</string>
+ <string name="auth_pwquery">Wachtwoord</string>
<string name="static_keys_info">Voor de statische configuratie worden de TLS Auth keys als statische sleutels gebruikt</string>
- <string name="configure_the_vpn">VPN configureren</string>
+ <string name="configure_the_vpn">Configureer de VPN</string>
<string name="menu_add_profile">Profiel toevoegen</string>
<string name="add_profile_name_prompt">Voer een naam in voor het nieuwe Profiel</string>
- <string name="duplicate_profile_name">Profielnaam is al in gebruik</string>
- <string name="profilename">Profiel name</string>
- <string name="no_keystore_cert_selected">Geen gebruikerscertificaat geselecteerd</string>
- <string name="no_ca_cert_selected">Je moet een CA certificaat selecteren</string>
+ <string name="duplicate_profile_name">Voer een unieke profielnaam in</string>
+ <string name="profilename">Profielnaam</string>
+ <string name="no_keystore_cert_selected">U moet een gebruikerscertificaat selecteren</string>
+ <string name="no_ca_cert_selected">U moet een CA-certificaat selecteren</string>
<string name="no_error_found">Geen fout.</string>
<string name="config_error_found">Fout in de configuratie</string>
<string name="ipv4_format_error">Fout bij inlezen van IPv4-adres</string>
@@ -55,140 +55,211 @@
<string name="shortcut_profile_notfound">Het profiel zoals aangegeven in de snelkoppeling kon niet gevonden worden.</string>
<string name="random_host_prefix">Willekeurig Host Voorvoegsel</string>
<string name="random_host_summary">Voegt 6 willekeurige tekens toe voor de hostname</string>
- <string name="custom_config_title">Eigen configuratie opties</string>
- <string name="custom_config_summary">Geef je eigen configuratieopties aan. Wees voorzichtig!</string>
+ <string name="custom_config_title">Aangepaste opties inschakelen</string>
+ <string name="custom_config_summary">Geef aangepaste opties op. Wees voorzichtig!</string>
<string name="route_rejected">Route geweigerd door Android</string>
<string name="cancel_connection">Verbinding verbreken</string>
<string name="cancel_connection_long">VPN verbinding verbreken</string>
<string name="clear_log">logboek wissen</string>
<string name="title_cancel">Annuleer bevestiging</string>
<string name="cancel_connection_query">Sluit de verbonden VPN af/annuleer de verbindingspoging?</string>
- <string name="remove_vpn">VPN wissen</string>
+ <string name="remove_vpn">VPN verwijderen</string>
<string name="check_remote_tlscert">Controleert of de server een certificaat met TLS Server extensions gebruikt (--remote-cert-tls server)</string>
<string name="check_remote_tlscert_title">Verwacht TLS server-certificaat</string>
- <string name="remote_tlscn_check_summary">Controleert de externe server certificaathouder</string>
+ <string name="remote_tlscn_check_summary">Controleert de DN van het externe servercertificaat</string>
<string name="remote_tlscn_check_title">Controleer Certificaat Hostname</string>
+ <string name="enter_tlscn_dialog">Specificeer de controle die gebruikt wordt om het externe certificaat DN te verifiëren (bijv. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nSpecificeer de volledige DN of de RDN (openvpn.blinkt.de in het voorbeeld) of een RDN-voorvoegsel voor verificatie.\n\nWanneer het gebruikte RDN-voorvoegsel \"Server\" overeenkomt met \"Server-1\" en \"Server-2\"\n\nEen leeg tekstveld zorgt dat de RDN wordt gecontroleerd tegen de hostnaam van de server.\n\nVoor meer details zie de OpenVPN 2.3.1+ manpage onder --verify-x509-name</string>
<string name="enter_tlscn_title">Externe certificaathouder</string>
- <string name="tls_key_auth">Activeert TLS Key verificatie</string>
+ <string name="tls_key_auth">Activeert TLS Key Authenticatie</string>
<string name="tls_auth_file">TLS Auth Bestand</string>
- <string name="pull_on_summary">Vraag IP adres, routes en timing opties van de server.</string>
- <string name="pull_off_summary">De server vraagt geen informatie op. Instellingen moeten onderaan worden gespecificeerd.</string>
- <string name="use_pull">Pull Instellingen</string>
+ <string name="pull_on_summary">Verzoek IP adres, routes en timing opties van de server.</string>
+ <string name="pull_off_summary">Er wordt geen informatie gevraagd van de server. Instellingen moeten hieronder worden gespecificeerd.</string>
+ <string name="use_pull">Verkrijg Instellingen</string>
<string name="dns">DNS</string>
<string name="override_dns">DNS Instellingen van Server Overschrijven</string>
<string name="dns_override_summary">Gebruik eigen DNS Servers</string>
- <string name="searchdomain">Zoekd domein</string>
- <string name="dns1_summary">Primaire DNS server</string>
+ <string name="searchdomain">Zoek domein</string>
+ <string name="dns1_summary">DNS server die moet worden gebruikt.</string>
<string name="dns_server">DNS Server</string>
- <string name="secondary_dns_message">Secundaire DNS server. Deze wordt gebruikt voor het geval dat de primaire DNS server niet bereikbaar is</string>
+ <string name="secondary_dns_message">Secundaire DNS server die gebruikt wordt wanneer de primaire DNS server niet bereikbaar is.</string>
<string name="backup_dns">Backup DNS server</string>
<string name="ignored_pushed_routes">Negeer ontvangen routes</string>
<string name="ignore_routes_summary">Negeer routes ontvangen van de server.</string>
<string name="default_route_summary">Leid al het Verkeer over de VPN</string>
<string name="use_default_title">Gebruik standaard Route</string>
- <string name="custom_route_message">Aangepaste routes invoeren. Voer alleen de bestemming in CIDR-formaat. \"10.0.0.0/8 2002::/16\" zou de netwerken 10.0.0.0/8 en 2002::/16 via de VPN routeren.</string>
+ <string name="custom_route_message">Aangepaste routes invoeren. Voer alleen de bestemming in CIDR-formaat in. \"10.0.0.0/8 2002::/16\" zou de netwerken 10.0.0.0/8 en 2002::/16 via de VPN routeren.</string>
<string name="custom_route_message_excluded">Routes die niet via de VPN moeten worden gerouteerd. Gebruik dezelfde syntaxis als voor opgenomen routes.</string>
- <string name="custom_routes_title">Eigen routes</string>
+ <string name="custom_routes_title">Aangepaste routes</string>
<string name="custom_routes_title_excluded">Uitgesloten netwerken</string>
- <string name="log_verbosity_level">Logging nivo</string>
- <string name="float_summary">Geverifieerde pakketen zijn vanuit elk IP toegestaan</string>
+ <string name="log_verbosity_level">Logboek registratie niveau</string>
+ <string name="float_summary">Laat geauthenticeerde pakketten toe vanaf elk IP-adres</string>
<string name="float_title">Zwevende server toestaan</string>
<string name="custom_options_title">Aangepaste Opties</string>
<string name="edit_vpn">VPN Instellingen Bewerken</string>
- <string name="remove_vpn_query">De VPN-profiel \'%s\' verwijderen?</string>
- <string name="tun_open_error">Fout bij het openen van de tun interface</string>
- <string name="error">"Fout:"</string>
+ <string name="remove_vpn_query">Verwijder het VPN-profiel \'%s\'?</string>
+ <string name="tun_error_helpful">Op sommige aangepaste ICS-ROM\'s kunnen de rechten op /dev/tun verkeerd zijn, of de tun module kan volledig ontbreken. Voor CM9-ROM\'s, probeer de optie herstel eigenaar onder algemene instellingen</string>
+ <string name="tun_open_error">Kon de tun interface niet openen</string>
+ <string name="error">"Fout: "</string>
<string name="clear">Leeg maken</string>
<string name="last_openvpn_tun_config">Openen tun interface:</string>
<string name="local_ip_info">Lokaal IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
+ <string name="dns_server_info">DNS Server: %1$s, Domein: %2$s</string>
<string name="routes_info_incl">Routes: %1$s %2$s</string>
<string name="routes_info_excl">Uitgesloten routes: %1$s %2$s</string>
<string name="routes_debug">VpnService routes geïnstalleerd: %1$s %2$s</string>
+ <string name="ip_not_cidr">Verkreeg interface informatie %1$s en %2$s, ervan uitgaande dat tweede adres het peer-adres van remote is. Gebruik /32 netmask voor lokale IP. De modus die door OpenVPN wordt gegeven is \"%3$s\".</string>
+ <string name="route_not_cidr">Kan %1$s en %2$s niet als IP-route met CIDR-netmask begrijpen met /32 als netmask.</string>
+ <string name="route_not_netip">Gecorrigeerde route van %1$s/%2$s naar %3$s/%2$s</string>
+ <string name="keychain_access">Geen toegang tot de Android Keychain certificaten. Dit kan veroorzaakt worden door een upgrade van de firmware or door het herstellen van een backup van de app/appinstellingen. Pas de VPN-configuratie aan en selecteer opnieuw het certificaat onder basisintellingen om de opslagtoestemming opnieuw te verlenen om het certificaat te laden.</string>
<string name="version_info">%1$s %2$s</string>
- <string name="send_logfile">Logboek verzenden</string>
- <string name="send">Verzenden</string>
- <string name="ics_openvpn_log_file">ICS OpenVPN logbestand</string>
- <string name="copied_entry">Kopiëer de log ingave naar het clip bord</string>
+ <string name="send_logfile">Verzend logboek</string>
+ <string name="send">Verzend</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN logboek</string>
+ <string name="copied_entry">Logboekmelding gekopieerd naar klembord</string>
<string name="tap_mode">Tap mode</string>
- <string name="faq_tap_mode">De VPN API van Android werkt zonder rooten van de telefoon en ondersteunt alleen de tun modus. Daarom is de tap modus niet mogelijk met deze app.</string>
- <string name="tap_faq2">Alweer? Maak je een grapje? Nee, tap mode wordt echt niet ondersteund en meer mails sturen met het verzoek of het ondersteund kan worden zal echt niet helpen, dus Neen.</string>
- <string name="faq">Veelgestelde vragen </string>
+ <string name="faq_tap_mode">Tap mode is niet mogelijk met de niet-root VPN API. Daarom kan deze applicatie geen tap ondersteuning bieden</string>
+ <string name="tap_faq2">Alweer? Maak je een grap? Nee, tap mode wordt echt niet ondersteund en meer mails sturen met het verzoek of het ondersteund kan worden zal echt niet helpen.</string>
+ <string name="tap_faq3">Een derde keer? Eigenlijk zou men een tap-emulator kunnen schrijven gebaseerd op tun die layer2-informatie zou toevoegen bij versturen en strip layer2-informatie bij ontvangst. Maar deze tap-emulator zou ook ARP en mogelijk een DHCP-client moeten implementeren. Ik ben me niet bewust van iemand die enig werk in deze richting doet. Neem contact met me op als je dit wilt gaan programmeren.</string>
+ <string name="faq">FAQ</string>
<string name="copying_log_entries">Loggegevens aan het kopiëren</string>
+ <string name="faq_copying">Om een enkel logboekitem te kopiëren, houd de vermelding lang ingedrukt. Om het hele logboek te kopiëren, gebruik de \'Verzend Logboek\' optie. Gebruik de hardwaretoets als de knop niet zichtbaar is in de interface.</string>
<string name="faq_shortcut">Snelkoppeling naar start</string>
- <string name="encryption">Codering</string>
- <string name="cipher_dialog_title">Codering methode</string>
- <string name="menu_import">Importeer profiel van ovpn bestand</string>
- <string name="menu_import_short">Import</string>
+ <string name="faq_howto_shortcut">U kunt een snelkoppeling plaatsen om OpenVPN vanaf uw startscherm te starten. Afhankelijk van uw startscherm moet u een snelkoppeling of een widget toevoegen.</string>
+ <string name="no_vpn_support_image">Uw afbeelding ondersteunt geen VPNService API, sorry :(</string>
+ <string name="encryption">Encryptie</string>
+ <string name="cipher_dialog_title">Voer encryptiemethode in</string>
+ <string name="chipher_dialog_message">Voer het encryptie-cijfer algoritme in dat door OpenVPN wordt gebruikt. Laat leeg om het standaard cijfer te gebruiken.</string>
+ <string name="auth_dialog_message">Voer de authenticatieverdeling in die gebruikt wordt voor OpenVPN. Laat leeg om de standaard verdeling te gebruiken.</string>
+ <string name="settings_auth">Authenticatie/Encryptie</string>
+ <string name="file_explorer_tab">Bestandsverkenner</string>
+ <string name="inline_file_tab">Inline bestand</string>
+ <string name="error_importing_file">Fout bij het importeren van het bestand</string>
+ <string name="import_error_message">Kan bestand niet importeren vanuit het bestandssysteem</string>
+ <string name="inline_file_data">[[Inline bestandsgegevens]]</string>
+ <string name="opentun_no_ipaddr">Weigering om tun apparaat zonder IP-informatie te openen</string>
+ <string name="menu_import">Profiel importeren uit ovpn-bestand</string>
+ <string name="menu_import_short">Importeer</string>
+ <string name="import_content_resolve_error">Kon het profiel niet lezen om te importeren</string>
<string name="error_reading_config_file">Fout bij het lezen van het configuratiebestand</string>
<string name="add_profile">Profiel toevoegen</string>
<string name="import_could_not_open">Kon het bestand %1$s, zoals aangegeven in de geïmporteerde configuratie niet vinden</string>
- <string name="importing_config">Geïmporteerde configuratie bestand uit %1$s</string>
- <string name="import_done">Lezen van configuratie bestand afgesloten.</string>
- <string name="no_bind">Geen locale binding</string>
- <string name="import_configuration_file">configuratie bestand importeren</string>
+ <string name="importing_config">Configuratiebestand importeren uit bron %1$s</string>
+ <string name="import_warning_custom_options">Uw configuratie heeft een paar configuratieopties die niet gekoppeld zijn aan gebruikersinterface configuraties. Deze opties werden toegevoegd als aanpasbare configuratieopties. De aanpasbare configuratie wordt hieronder weergegeven:</string>
+ <string name="import_done">Klaar met lezen van configuratiebestand.</string>
+ <string name="nobind_summary">Bind niet aan lokaal adres en poort</string>
+ <string name="no_bind">Geen lokale binding</string>
+ <string name="import_configuration_file">Importeer configuratiebestand</string>
<string name="faq_security_title">Beveiligingsoverwegingen</string>
+ <string name="faq_security">"Omdat OpenVPN beveiligingsgevoelig is, zijn enkele opmerkingen over beveiliging verstandig. Alle gegevens op de sdcard zijn onveilig. Elke app kan het lezen (dit programma vereist bijvoorbeeld geen speciale SD-kaartrechten). De gegevens van deze app kunnen alleen worden gelezen door deze app zelf. Door de importoptie voor cacert/cert/key in het bestandsdialoogvenster te gebruiken, worden de gegevens opgeslagen in het VPN-profiel. De VPN-profielen zijn alleen toegankelijk voor deze app. (Vergeet niet om de kopieën op de SD-kaart achteraf te verwijderen). Hoewel deze gegevens alleen toegankelijk zijn voor deze app, zijn ze nog steeds niet geëncrypteerd. Door het rooten van de telefoon of andere exploits is het mogelijk om de gegevens op te halen. Opgeslagen wachtwoorden worden ook als niet-gecodeerde tekst opgeslagen. Voor pkcs12 bestanden is het sterk aanbevolen dat je ze importeert in de Android keystore."</string>
<string name="import_vpn">Importeren</string>
<string name="broken_image_cert_title">Fout bij het weergeven van de certificaat selectie</string>
+ <string name="broken_image_cert">Er is een uitzondering opgetreden bij het weergeven van het dialoogvenster voor het selecteren van certificaten voor Android 4.0+. Dit zou nooit mogen gebeuren omdat dit een standaardfunctie is van Android 4.0+. Misschien werkt uw Android ROM-ondersteuning voor het opslaan van certificaten niet meer</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
<string name="speed_waiting">Wachten op status bericht&#8230;</string>
<string name="converted_profile">Geïmporteerd profiel</string>
<string name="converted_profile_i">Geïmporteerd profiel %d</string>
- <string name="broken_images">Niet Werkende Afbeeldingen</string>
+ <string name="broken_images">Niet Werkende ROM\'s</string>
+ <string name="broken_images_faq">&lt;p&gt; Officiële HTC-ROM\'s hebben een vreemd routeringsprobleem waardoor verkeer niet door de tunnel kan stromen (zie ook &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Issue 18&lt;/a&gt; in de bug-tracker.) &lt;/p&gt;&lt;p&gt; Van de officiële SONY-ROM\'s van Xperia Arc S en Xperia Ray is gemeld dat de VPNService volledig mist van de ROM. (Zie ook &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Issue 29&lt;/a&gt; in de bug-tracker.) &lt;/p&gt;&lt;p&gt;Aan aangepaste build-ROM\'s ontbreekt de tun-module of zijn de rechten van /dev/tun mogelijk onjuist. Sommige CM9-ROM\'s hebben de optie \'Eigenaar bevestigen\' onder \'Apparaatspecifieke hacks\' ingeschakeld nodig.&lt;/p&gt;&lt;p&gt;Het belangrijkste is: als uw apparaat een kapotte Android-ROM heeft, moet u dit melden aan uw leverancier. Hoe meer mensen een probleem melden aan de leverancier, des te groter de kans is dat ze het probleem oplossen.&lt;/p&gt;</string>
<string name="pkcs12_file_encryption_key">PKCS12 Bestand Encryptie Sleutel</string>
<string name="private_key_password">Privé Sleutel Wachtwoord</string>
<string name="password">Wachtwoord</string>
<string name="file_icon">bestands pictogram</string>
+ <string name="tls_authentication">TLS Authenticatie/Encryptie</string>
<string name="generated_config">Gegenereerde Configuratie</string>
<string name="generalsettings">Instellingen</string>
- <string name="owner_fix">Verbeter eigendom van /dev/tun</string>
+ <string name="owner_fix_summary">Probeert de eigenaar van /dev/tun naar het systeem in te stellen. Sommige CM9-ROM\'s hebben dit nodig om de VPNService API te laten werken. Vereist root toegang.</string>
+ <string name="owner_fix">Herstel eigenaar van /dev/tun</string>
<string name="generated_config_summary">Toont het gegenereerde OpenVPN configuratiebestand</string>
<string name="edit_profile_title">Bewerken van \"%s\"</string>
- <string name="building_configration">Opbouwen configuratie&#8230;</string>
+ <string name="building_configration">Configuratie bouwen&#8230;</string>
<string name="netchange_summary">Het inschakelen van deze optie zal opnieuw verbinden na het veranderen van de netwerk status (bijv. van WiFi naar mobiel) forceren</string>
<string name="netchange">Opnieuw verbinden na netwerkverandering</string>
<string name="netstatus">Netwerk status: %s</string>
+ <string name="extracahint">De CA-certificaat wordt meestal teruggestuurd vanuit de Android-keystore. Geef een apart certificaat op als u certificaatverificatiefouten krijgt.</string>
<string name="select_file">Selecteer</string>
+ <string name="keychain_nocacert">Geen CA-certificaat geretourneerd tijdens het lezen van de Android keystore. Verificatie zal waarschijnlijk mislukken.</string>
+ <string name="show_log_summary">Toont het logboekvenster bij verbinden. Het logboekvenster is altijd toegankelijk via de meldingsstatus.</string>
<string name="show_log_window">Toon logboekvenster</string>
+ <string name="mobile_info">%10$s %9$s draait op %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Fout bij het ondertekenen met Android keystore sleutel %1$s: %2$s</string>
+ <string name="faq_system_dialogs">De VPN-verbindingswaarschuwing die aangeeft dat deze app al het verkeer kan onderscheppen, wordt door het systeem opgelegd om misbruik van de VPNService-API te voorkomen.\nDe VPN-verbindingsmelding (het sleutelsymbool) wordt ook door het Android-systeem opgelegd om een ​​actieve VPN-verbinding te signaleren. Op sommige ROM\'s speelt deze melding een geluid af.\nAndroid heeft deze systeemdialogen voor uw eigen veiligheid geïntroduceerd en ervoor gezorgd dat deze niet kunnen worden omzeild. (Bij sommige ROM\'s bevat dit helaas een meldingsgeluid)</string>
<string name="faq_system_dialogs_title">Verbindingswaarschuwing en meldingsgeluid</string>
+ <string name="translationby">Nederlandse vertaling door de gebruikers op crowdin.com</string>
<string name="ipdns">IP en DNS</string>
- <string name="advanced">Geanvanceerd</string>
+ <string name="basic">Basis</string>
+ <string name="routing">Routing</string>
+ <string name="obscure">Vreemde OpenVPN-instellingen. Normaal niet nodig.</string>
+ <string name="advanced">Geavanceerd</string>
<string name="export_config_title">ICS Openvpn configuratie</string>
+ <string name="warn_no_dns">Er worden geen DNS-servers gebruikt. Naamomzetting werkt mogelijk niet. Overweeg om aangepaste DNS-servers in te stellen. Houd er ook rekening mee dat Android uw proxy-instellingen gebruikt die zijn opgegeven voor uw mobiele/Wi-Fi-verbinding wanneer er geen DNS-servers zijn ingesteld.</string>
+ <string name="dns_add_error">Kon DNS-server \"%1$s\" niet toevoegen, geweigerd door het systeem: %2$s</string>
+ <string name="ip_add_error">Kan IP-adres \'%1$s\' niet configureren, geweigerd door het systeem: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;Ontvang een werkende config (getest op je computer of gedownload van je provider/organisatie) &lt;/p&gt;&lt;p&gt;Als het een enkel bestand is zonder extra pem/pkcs12-bestanden, kun je jezelf het bestand e-mailen en de bijlage openen. Als je meerdere bestanden hebt zet ze dan op je sd-kaart.&lt;/p&gt;&lt;p&gt;Klik op de e-mailbijlage/Gebruik het mappictogram in de vpn-lijst om het configuratiebestand te importeren&lt;/p&gt;&lt;p&gt;Als er fouten zijn over ontbrekende bestanden plaats dan de ontbrekende bestanden op je sd-kaart.&lt;/p&gt;&lt;p&gt;Klik op het opslaan symbool om de geïmporteerde VPN aan uw VPN-lijst toe te voegen&lt;/p&gt;&lt;p&gt;Verbind de VPN door op de naam van de VPN&lt;/p&gt;&lt;p&gt; te klikken. Als er fouten of waarschuwingen in het logboek zijn, probeer dan de waarschuwingen/fouten te begrijpen en probeer ze op te lossen&lt;/p&gt; </string>
<string name="faq_howto_title">Snelle start</string>
+ <string name="setting_loadtun_summary">Probeer de tun.ko kernelmodule te laden voordat u probeert verbinding te maken. Apparaat moet rooted zijn.</string>
<string name="setting_loadtun">Laad tun module</string>
- <string name="getproxy_error">Fout bij het opvragen van proxy-instellingen: %s</string>
+ <string name="importpkcs12fromconfig">Importeer PKCS12 van configuratie naar Android Keystore</string>
+ <string name="getproxy_error">Fout bij het verkrijgen van proxy-instellingen: %s</string>
+ <string name="using_proxy">Proxy %1$s %2$d is in gebruik</string>
<string name="use_system_proxy">Gebruik systeemproxy</string>
- <string name="use_system_proxy_summary">Gebruik de systeemconfiguratie voor HTTP/HTTPS proxys om te verbinden.</string>
- <string name="onbootrestart">Verbinden bij het opstarten</string>
+ <string name="use_system_proxy_summary">Gebruik de systeemconfiguratie voor HTTP/HTTPS proxies om te verbinden.</string>
+ <string name="onbootrestartsummary">OpenVPN verbindt met de opgegeven VPN als deze actief was bij het opstarten van het systeem. Lees de FAQ over verbindingswaarschuwingen voordat u deze optie gebruikt op Android &lt; 5.0.</string>
+ <string name="onbootrestart">Verbinden bij opstarten</string>
<string name="ignore">Negeren</string>
<string name="restart">Opnieuw starten</string>
+ <string name="restart_vpn_after_change">Configuratiewijzigingen worden toegepast na het herstarten van de VPN. (Her)start het VPN nu?</string>
<string name="configuration_changed">Configuratie gewijzigd</string>
+ <string name="log_no_last_vpn">Kan het laatst verbonden profiel niet bepalen om te bewerken</string>
+ <string name="faq_duplicate_notification_title">Dubbele notificaties</string>
+ <string name="faq_duplicate_notification">Als Android met weinig systeemgeheugen (RAM) staat, worden apps en services die momenteel niet nodig zijn uit het actieve geheugen verwijderd. Hiermee wordt een doorlopende VPN-verbinding beëindigd. Om ervoor te zorgen dat de verbinding/OpenVPN overleeft, wordt de service met een hogere prioriteit uitgevoerd. Om met een hogere prioriteit uit te voeren, moet de toepassing een melding weergeven. Het sleutel notificatie icoon wordt door het systeem opgelegd zoals beschreven in het vorige FAQ item. Het telt niet als app-melding met als doel om als hogere prioriteit uitgevoerd te worden.</string>
<string name="no_vpn_profiles_defined">Geen VPN-profielen gedefinieerd.</string>
+ <string name="add_new_vpn_hint">Gebruik het pictogram &lt;img src=\"ic_menu_add\"/&gt; om een ​​nieuwe VPN toe te voegen</string>
+ <string name="vpn_import_hint">Gebruik het pictogram &lt;img src=\"ic_menu_archive\"/&gt; om een ​​bestaand (.ovpn of .conf) profiel te importeren van uw sdcard.</string>
+ <string name="faq_hint">Bekijk ook de FAQ. Er is een snelstartgids.</string>
+ <string name="faq_routing_title">Routing/Interface-configuratie</string>
+ <string name="faq_routing">De routerings- en interfaceconfiguratie wordt niet uitgevoerd via traditionele ifconfig/route-opdrachten, maar met behulp van de VPNService-API. Dit resulteert in een andere routeringsconfiguratie dan in andere besturingssystemen. \nDe configuratie van de VPN-tunnel bestaat uit het IP-adres en de netwerken die via deze interface moeten worden gerouteerd. Er is met name geen peer-partneradres of gateway-adres nodig of vereist. Speciale routes om de VPN-server te bereiken (bijvoorbeeld toegevoegd bij gebruik van redirect-gateway) zijn ook niet nodig. De toepassing zal bijgevolg deze instellingen negeren bij het importeren van een configuratie. De app zorgt er met de VPNService API voor dat de verbinding met de server niet wordt gerouteerd via de VPN-tunnel. \nDe VPNService API staat geen specificatie van netwerken toe die niet via de VPN moeten worden gerouteerd. Als een tijdelijke oplossing probeert de app netwerken te detecteren die niet via een tunnel moeten worden gerouteerd (bijvoorbeeld route xxxx yyyy net_gateway) en wordt een reeks routes berekend die deze routes uitsluiten om het gedrag van andere platforms te emuleren. Het logvenster toont de configuratie van de VPNService bij het tot stand brengen van een verbinding. \n Achter de schermen: Android 4.4+ gebruikt beleidsroutering. Met behulp van route/ifconfig worden de geïnstalleerde routes niet weergegeven. Gebruik ip-rule ipv, iptables -t mangle -L</string>
<string name="persisttun_summary">Niet terugvallen op geen VPN-verbinding wanneer OpenVPN opnieuw aan het verbinden is.</string>
<string name="persistent_tun_title">Persistent tun</string>
- <string name="openvpn_log">OpenVPN log</string>
+ <string name="openvpn_log">OpenVPN logboek</string>
<string name="import_config">Importeer OpenVPN configuratie</string>
<string name="battery_consumption_title">Batterijverbruik</string>
- <string name="faq_tethering">De Android Tethering feature (via WiFi, USB of Bluetooth) en de VPNService API (die gebruikt wordt door dit programma) werken niet samen. Voor meer details, zie &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt;</string>
+ <string name="baterry_consumption">In mijn persoonlijke tests zijn de keepalive-pakketten de belangrijkste reden voor een hoog batterijverbruik van OpenVPN. De meeste OpenVPN-servers hebben een configuratierichtlijn zoals \'keepalive 10 60\', waardoor de client en de server elke tien seconden keepalive-pakketten uitwisselen. &lt;p&gt; Hoewel deze pakketten klein zijn en weinig verkeer gebruiken, houden ze het mobiele radionetwerk bezig en verhogen ze het energieverbruik. (Zie ook &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;De Radio Status Machine | Android Ontwikkelaars&lt;/a&gt;) &lt;p&gt; Deze keepalive-instelling kan niet worden gewijzigd op de client. Alleen de systeembeheerder van OpenVPN kan de instelling wijzigen. &lt;p&gt; Helaas kan het gebruik van een keepalive van meer dan 60 seconden met UDP ertoe leiden dat sommige NAT-gateways de verbinding verbreken vanwege een time-out wegens inactiviteit. TCP gebruiken met een lange keep-alive time-out werkt, maar TCP over TCP tunneling presteert extreem slecht bij verbindingen met een hoog pakketverlies. (Zie &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;Waarom TCP via TCP een slechte gedachte is&lt;/a&gt;)</string>
+ <string name="faq_tethering">De Android Tethering functie (via WiFi, USB of Bluetooth) en de VPNService API (die gebruikt wordt door deze app) werken niet samen. Zie &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt; voor meer informatie</string>
<string name="vpn_tethering_title">VPN en Tethering</string>
- <string name="connection_retries">Verbinding pogingen</string>
+ <string name="connection_retries">Verbindingspogingen</string>
<string name="reconnection_settings">Instellingen voor opnieuw verbinden</string>
+ <string name="connectretrymessage">Aantal seconden te wachten tussen verbindingspogingen.</string>
<string name="connectretrywait">Seconden tussen verbindingen</string>
+ <string name="minidump_generated">OpenVPN is onverwacht gecrasht. Overweeg de optie Minidump verzenden in het hoofdmenu</string>
+ <string name="send_minidump">Verzend Minidump naar ontwikkelaar</string>
+ <string name="send_minidump_summary">Stuurt foutopsporingsinformatie over de laatste crash naar de ontwikkelaar</string>
<string name="notifcation_title">OpenVPN - %s</string>
- <string name="state_connecting">Aan het verbinden</string>
- <string name="state_wait">Wachten op antwoord van de server</string>
+ <string name="session_ipv4string">%1$s - %2$s</string>
+ <string name="session_ipv6string">%1$s - %3$s, %2$s</string>
+ <string name="state_connecting">Bezig met verbinden</string>
+ <string name="state_wait">Wachten op antwoord van server</string>
+ <string name="state_auth">Authenticeren</string>
<string name="state_get_config">Clientconfiguratie ophalen</string>
<string name="state_assign_ip">IP-addressen toewijzen</string>
+ <string name="state_add_routes">Routes toevoegen</string>
<string name="state_connected">Verbonden</string>
<string name="state_disconnected">Verbinding verbreken</string>
<string name="state_reconnecting">Opnieuw aan het verbinden</string>
<string name="state_exiting">Afsluiten</string>
<string name="state_noprocess">Niet actief</string>
- <string name="state_tcp_connect">Aan het verbinden (TCP)</string>
+ <string name="state_resolve">Hostnamen omzetten</string>
+ <string name="state_tcp_connect">Bezig met verbinden (TCP)</string>
+ <string name="state_auth_failed">Authenticeren mislukt</string>
+ <string name="state_nonetwork">Wachten op bruikbaar netwerk</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Niet verbonden</string>
- <string name="start_vpn_title">Verbinding maken met VPN %s</string>
- <string name="start_vpn_ticker">Verbinding maken met VPN %s</string>
+ <string name="start_vpn_title">Verbinden met VPN %s</string>
+ <string name="start_vpn_ticker">Verbinden met VPN %s</string>
+ <string name="jelly_keystore_alphanumeric_bug">Sommige versies van Android 4.1 hebben problemen als de naam van het keystore-certificaat niet-alfanumerieke tekens bevat (zoals spaties, onderstrepingstekens of streepjes). Probeer het certificaat opnieuw te importeren zonder speciale tekens</string>
+ <string name="encryption_cipher">Encryptiecijfer</string>
+ <string name="packet_auth">Packet-authenticatie</string>
+ <string name="auth_dialog_title">Voer de methode voor pakketauthenticatie in</string>
<string name="built_by">gebouwd door %s</string>
<string name="debug_build">debug build</string>
<string name="official_build">officiële build</string>
@@ -197,51 +268,200 @@
<string name="add">Toevoegen</string>
<string name="send_config">Verstuur configureerbestand</string>
<string name="complete_dn">Volledige DN</string>
+ <string name="remotetlsnote">Uw geïmporteerde configuratie gebruikte de oude AFGEKEURDE tls-remote optie die een ander DN-formaat gebruikt.</string>
+ <string name="rdn">RDN (algemene naam)</string>
<string name="rdn_prefix">RDN voorvoegsel</string>
+ <string name="tls_remote_deprecated">tls-remote (VEROUDERD)</string>
+ <string name="help_translate">U kunt helpen met vertalen door naar https://crowdin.net/project/ics-openvpn/invite te gaan</string>
+ <string name="prompt">%1$s probeert %2$s te beheren</string>
+ <string name="remote_warning">Door verder te gaan, geeft u de toepassing toestemming om OpenVPN voor Android volledig te beheren en om alle netwerkverkeer te onderscheppen.<b>NIET accepteren, tenzij u de toepassing vertrouwt.</b> Anders loopt u het risico dat uw gegevens worden aangetast door kwaadaardige software.\"</string>
+ <string name="remote_trust">Ik vertrouw deze applicatie.</string>
+ <string name="no_external_app_allowed">Geen app toegestaan ​​om externe API te gebruiken</string>
<string name="allowed_apps">Toegestane apps: %s</string>
+ <string name="clearappsdialog">Lijst met toegestane externe apps wissen?\nHuidige lijst met toegestane apps:\n\n%s</string>
+ <string name="screenoff_summary">Pauzeer VPN wanneer het scherm is uitgeschakeld en minder dan 64 kB gegevens overgedragen in 60s. Wanneer de \"Persistent Tun\" optie is ingeschakeld, pauzeert de VPN uw apparaat zonder netwerkverbinding. Zonder de \"Persistent Tun\" optie heeft het apparaat geen VPN-verbinding/bescherming.</string>
+ <string name="screenoff_title">Pauzeer de VPN-verbinding na het uitschakelen van het scherm</string>
+ <string name="screenoff_pause">Verbinding pauzeren als het scherm uit staat: minder dan %1$s in %2$ss</string>
+ <string name="screen_nopersistenttun">Waarschuwing: Persistent tun is niet ingeschakeld voor deze VPN. Verkeer gebruikt de normale internetverbinding wanneer het scherm is uitgeschakeld.</string>
<string name="save_password">Wachtwoord opslaan</string>
<string name="pauseVPN">Pauzeer VPN</string>
<string name="resumevpn">Hervat VPN</string>
+ <string name="state_userpause">VPN-onderbreking aangevraagd door gebruiker</string>
<string name="state_screenoff">VPN gepauzeerd - scherm uit</string>
+ <string name="device_specific">Apparaatspecifieke trucks</string>
+ <string name="cannotparsecert">Certificaatinformatie kan niet worden weergegeven</string>
+ <string name="appbehaviour">Applicatiegedrag</string>
<string name="vpnbehaviour">VPN gedrag</string>
+ <string name="allow_vpn_changes">Verandering aan VPN-profielen toestaan</string>
+ <string name="hwkeychain">Hardware Keystore:</string>
+ <string name="permission_icon_app">Miniatuur van app die OpenVPN voor Android wilt gebruiken</string>
+ <string name="faq_vpndialog43">"Vanaf Android 4.3 is de VPN-bevestiging beveiligd tegen apps die over andere apps tekenen. Dit betekent dat het dialoogvenster niet reageert op aanrakingen. Als u een app heeft die over andere apps tekent kan dit de oorzaak zijn. Als u een app vind die dit doet, neem dan contact op met de makers van de app. Dit probleem heeft betrekking op alle VPN applicaties op Android 4.3 en later. Zie ook &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; voor meer details."</string>
+ <string name="faq_vpndialog43_title">VPN-bevestigingsdialoogvenster</string>
+ <string name="donatePlayStore">U kunt ook een donatie sturen in de Play Store:</string>
<string name="thanks_for_donation">Bedankt voor het doneren van %s!</string>
- <string name="logCleared">Log gewist.</string>
+ <string name="logCleared">Logboek gewist.</string>
<string name="show_password">Toon wachtwoord</string>
+ <string name="keyChainAccessError">KeyChain toegangsfout: %s</string>
<string name="timestamp_short">Kort</string>
<string name="timestamp_iso">ISO</string>
+ <string name="timestamps">Tijdstempels</string>
<string name="timestamps_none">Geen</string>
<string name="uploaded_data">Upload</string>
<string name="downloaded_data">Download</string>
<string name="vpn_status">VPN Status</string>
<string name="logview_options">Toon opties</string>
+ <string name="unhandled_exception">Niet-afgehandelde uitzondering: %1$s\n\n%2$s</string>
+ <string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
+ <string name="faq_system_dialog_xposed">Als u uw Android-apparaat hebt geroot, kun je de &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt; en de &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialoog bevestigings module&lt;/a&gt; op eigen risico installeren\"</string>
<string name="full_licenses">Volledige licenties</string>
+ <string name="blocklocal_summary">Netwerken die rechtstreeks zijn verbonden met de lokale interfaces, worden niet via de VPN gerouteerd. Als u deze optie uitschakelt, worden alle verkeer gericht op lokale netwerken omgeleid naar de VPN.</string>
+ <string name="blocklocal_title">VPN passeren voor lokale netwerken</string>
<string name="userpw_file">Gebruikersnaam/Wachtwoord bestand</string>
<string name="imported_from_file">[Geïmporteerd uit: %s]</string>
- <string name="import_log">Importeer log:</string>
- <string name="loading">Aan het laden&#8230;</string>
+ <string name="files_missing_hint">Sommige bestanden konden niet worden gevonden. Selecteer de bestanden om het profiel te importeren:</string>
+ <string name="openvpn_is_no_free_vpn">Om deze app te gebruiken heeft u een VPN aanbieder/VPN gateway nodig die OpenVPN ondersteunt (vaak aangeboden door uw werkgever). Kijk op https://community.openvpn.net/ voor meer informatie over OpenVPN en hoe u uw eigen OpenVPN server kunt opzetten.</string>
+ <string name="import_log">Importeer logboek:</string>
+ <string name="ip_looks_like_subnet">Vpn-topologie \"%3$s\" opgegeven, maar ifconfig %1$s %2$s lijkt meer op een IP-adres met een netwerkmask. Uitgaande van \"subnet\" topologie.</string>
+ <string name="mssfix_invalid_value">De overschrijvingswaarde van MSS moet een geheel getal tussen 0 en 9000 zijn</string>
+ <string name="mtu_invalid_value">De MTU overschrijfwaarde moet een geheel getal tussen 64 en 9000 zijn</string>
+ <string name="mssfix_value_dialog">Kondig aan TCP-sessies die over de tunnel lopen aan dat ze hun verzendpakketgroottes zodanig moeten beperken dat nadat OpenVPN ze heeft ingekapseld, de resulterende UDP-pakketgrootte die OpenVPN naar zijn peer stuurt, dit aantal bytes niet overschrijdt. (standaard is 1450)</string>
+ <string name="mssfix_checkbox">Overschrijf de MSS-waarde van de TCP-payload</string>
+ <string name="mssfix_dialogtitle">MSS waarde van TCP-payload instellen</string>
+ <string name="client_behaviour">Cliëntgedrag</string>
+ <string name="clear_external_apps">Verwijder toegestane externe apps</string>
+ <string name="loading">Laden&#8230;</string>
<string name="allowed_vpn_apps_info">Toegestane VPN apps: %1$s</string>
<string name="disallowed_vpn_apps_info">Niet toegestane VPN apps: %1$s</string>
+ <string name="app_no_longer_exists">Pakket %s is niet meer geïnstalleerd en wordt verwijderd uit de lijst met toegestane/niet toegestane apps</string>
+ <string name="vpn_disallow_radio">VPN wordt gebruikt voor alle apps, maar exclusief geselecteerd</string>
+ <string name="vpn_allow_radio">VPN wordt alleen voor geselecteerde apps gebruikt</string>
+ <string name="query_delete_remote">Externe server verwijderen?</string>
<string name="keep">Houden</string>
<string name="delete">Verwijderen</string>
+ <string name="add_remote">Nieuwe externe verbinding toevoegen</string>
+ <string name="remote_random">Gebruik verbindingen in willekeurige volgorde bij verbinden</string>
+ <string name="remote_no_server_selected">U moet tenminste één externe server definiëren en inschakelen.</string>
<string name="server_list">Serverlijst</string>
<string name="vpn_allowed_apps">Toegestane apps</string>
<string name="advanced_settings">Geavanceerde instellingen</string>
+ <string name="payload_options">Payload opties</string>
<string name="tls_settings">TLS-instellingen</string>
+ <string name="no_remote_defined">Geen externe verbinding gedefinieerd</string>
+ <string name="duplicate_vpn">VPN profiel dupliceren</string>
+ <string name="duplicate_profile_title">Profiel dupliceren: %s</string>
<string name="show_log">Toon logboek</string>
+ <string name="faq_android_clients">Er bestaan ​​meerdere OpenVPN-clients voor Android. De meest voorkomende zijn OpenVPN voor Android (deze client), OpenVPN Connect en OpenVPN-instellingen.&lt;p&gt;De clients kunnen in twee groepen worden gegroepeerd: OpenVPN voor Android en OpenVPN Connect gebruiken de officiële VPNService API (Android 4.0+) en vereisen geen root en OpenVPN Instellingen die vereist root.&lt;p&gt;OpenVPN voor Android is een open source-client en ontwikkeld door Arne Schwabe. Het is gericht op meer geavanceerde gebruikers, biedt veel instellingen, de mogelijkheid om profielen uit bestanden te importeren en profielen in de app te configureren/wijzigen. De client is gebaseerd op de communityversie van OpenVPN. Het is gebaseerd op de OpenVPN 2.x-broncode. Deze client kan worden gezien als de semi-officiële client van de community. &lt;p&gt;OpenVPN Connect is een niet-open-sourceclient die is ontwikkeld door OpenVPN Technologies, Inc. Die client is meer gericht op de gemiddelde gebruiker en staat de import van OpenVPN-profielen toe. Deze client is gebaseerd op de OpenVPN C++ herimplementatie van het OpenVPN-protocol (Dit was vereist om OpenVPN Technologies, Inc een iOS OpenVPN-app te kunnen laten publiceren). Deze client is de officiële client van de OpenVPN-technologieën &lt;p&gt; OpenVPN-instellingen is de oudste van de clients en ook een gebruikersinterface voor Open Source OpenVPN. In tegenstelling tot OpenVPN voor Android is root vereist en wordt de VPNService-API niet gebruikt. Het is niet afhankelijk van Android 4.0+</string>
+ <string name="faq_androids_clients_title">Verschillen tussen de OpenVPN Android-clients</string>
+ <string name="ignore_multicast_route">Multicast-route negeren: %s</string>
+ <string name="ab_only_cidr">Android ondersteunt alleen CIDR-routes naar de VPN. Omdat niet-CIDR routes bijna nooit worden gebruikt, zal OpenVPN voor Android een /32 gebruiken voor routes die geen CIDR zijn en een waarschuwing geven.</string>
+ <string name="ab_tethering_44">Tethering werkt terwijl de VPN actief is. De tethered-verbinding maakt GEEN gebruik van de VPN.</string>
+ <string name="ab_kitkat_mss">Vroege KitKat-versie heeft de verkeerde MSS-waarde ingesteld voor TCP-verbindingen (#61948). Probeer de mssfix-optie in te schakelen om deze bug te omzeilen.</string>
+ <string name="ab_proxy">Android blijft uw proxy-instellingen gebruiken die zijn opgegeven voor de mobiel/wifi-verbinding wanneer er geen DNS-servers zijn ingesteld. OpenVPN voor Android waarschuwt u hierover in het logboek. <p>Wanneer een VPN een DNS-server instelt, gebruikt Android geen proxy. Er is geen API om een ​​proxy in te stellen voor een VPN-verbinding.</p></string>
+ <string name="ab_lollipop_reinstall">VPN-apps werken mogelijk niet meer wanneer ze worden verwijderd en opnieuw worden geïnstalleerd. Voor details zie #80074</string>
+ <string name="ab_not_route_to_vpn">Het geconfigureerde client-IP en de IP\'s in het netwerkmask worden niet naar de VPN gerouteerd. OpenVPN werkt om deze bug heen door expliciet een route toe te voegen die overeenkomt met het IP-adres van de client en zijn netmask</string>
+ <string name="ab_persist_tun">Als een tun-apparaat wordt geopend terwijl een ander tun-apparaat actief is, deze wordt gebruikt voor ondersteuning voor persist-tun, crasht het de VPNServices op het apparaat. Opnieuw opstarten is vereist om VPN opnieuw te laten werken. OpenVPN voor Android probeert te voorkomen dat het tun-apparaat opnieuw wordt geopend en als het echt nodig is, sluit het eerst de huidige TUN voordat het nieuwe TUN-apparaat wordt geopend om te voorkomen dat het crasht. Dit kan leiden tot een kort venster waarin pakketten via de niet-VPN-verbinding worden verzonden. Zelfs met deze tijdelijke oplossing crasht de VPNServices soms en is het opnieuw opstarten van het apparaat vereist.</string>
+ <string name="ab_secondary_users">VPN werkt niet helemaal voor secundaire gebruikers.</string>
+ <string name="ab_kitkat_reconnect">"Meerdere gebruikers melden dat de mobiele verbinding/mobiele gegevensverbinding vaak wordt verbroken tijdens het gebruik van de VPN-app. Het gedrag lijkt alleen maar op een combinatie van enkele mobiele providers/apparaten van invloed te zijn en tot nu toe kon geen oorzaak/oplossing voor de bug worden geïdentificeerd."</string>
+ <string name="ab_vpn_reachability_44">Alleen de bestemming kan worden bereikt via de VPN die bereikbaar is zonder VPN. IPv6 VPN\'s werken helemaal niet.</string>
+ <string name="ab_only_cidr_title">Niet CIDR-routes</string>
+ <string name="ab_proxy_title">Proxy-gedrag voor VPN\'s</string>
+ <string name="ab_lollipop_reinstall_title">Herinstalleren van VPN-apps</string>
<string name="version_upto">%s en eerder</string>
<string name="copy_of_profile">Kopie van %s</string>
+ <string name="ab_not_route_to_vpn_title">Route naar het geconfigureerde IP-adres</string>
+ <string name="ab_kitkat_mss_title">Verkeerde MSS-waarde voor VPN-verbinding</string>
<string name="ab_secondary_users_title">Secundaire tabletgebruikers</string>
+ <string name="custom_connection_options_warng">Specificeer aangepaste verbindingsopties. Gebruik voorzichtig</string>
+ <string name="custom_connection_options">Aangepaste Opties</string>
+ <string name="remove_connection_entry">Verwijder de verbinding</string>
+ <string name="ab_kitkat_reconnect_title">Willekeurige verbroken verbinding met mobiel netwerk</string>
+ <string name="ab_vpn_reachability_44_title">Externe netwerken niet bereikbaar</string>
+ <string name="ab_persist_tun_title">Persistente tun mode</string>
<string name="version_and_later">%s en hoger</string>
+ <string name="tls_cipher_alert_title">Verbindingen mislukken met SSL23_GET_SERVER_HELLO:sslv3 waarschuwing voor handshake</string>
+ <string name="tls_cipher_alert">Nieuwere OpenVPN voor Android-versies (0.6.29/maart 2015) gebruiken een veiligere standaard voor de toegestane coderingssuites (tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!KRSA\"). Helaas, het weglaten van de minder veilige cipher suites en export cipher suites, met name het weglaten van cipher suites die geen ondersteuning bieden voor Perfect Forward Secrecy (Diffie-Hellman) veroorzaakt een aantal problemen. Dit wordt meestal veroorzaakt door een goedbedoelde maar slecht uitgevoerde poging om de beveiliging van TLS te verbeteren door tls-cipher op de server in te stellen of door een aantal ingesloten besturingssystemen met uitgeklede SSL (bijv. MikroTik). \nOm dit probleem op te lossen stelt u het tls-cijfer in instellingen op de server naar redelijke standaard zoals tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\". Om het probleem op de client te omzeilen, voegt u de aangepaste optie tls-cipher DEFAULT toe aan de Android-client.</string>
+ <string name="message_no_user_edit">Dit profiel is toegevoegd vanuit een externe app (%s) en is gemarkeerd als niet bewerkbaar door de gebruiker.</string>
+ <string name="crl_file">Certificaatintrekkingslijst</string>
+ <string name="service_restarted">OpenVPN-service herstarten (App vastgelopen, deze is waarschijnlijk gecrasht of gestopt vanwege te weinig vrij geheugen)</string>
+ <string name="import_config_error">Het importeren van de configuratie leverde een fout op, kan deze niet opslaan</string>
<string name="Search">Zoeken</string>
+ <string name="lastdumpdate">(Laatste dump is %1$d:%2$du oud (%3$s))</string>
+ <string name="clear_log_on_connect">Logboek wissen bij nieuwe verbinding</string>
+ <string name="connect_timeout">Verbinding Timeout</string>
+ <string name="no_allowed_app">Geen toegestane app toegevoegd. Onszelf toevoegen (%s) om ten minste één app in de lijst met toegestane apps te hebben om niet alle apps te accepteren</string>
+ <string name="query_permissions_sdcard">OpenVPN voor Android kan proberen om ontbrekende bestand(en) op de sdcard automatisch te vinden. Tik op dit bericht om het toestemmingsverzoek te starten.</string>
<string name="protocol">Protocol</string>
<string name="enabled_connection_entry">Ingeschakeld</string>
+ <string name="abi_mismatch">Voorkeurs native ABI-prioriteit van dit apparaat (%1$s) en ABI gerapporteerd door native bibliotheken (%2$s) komen niet overeen</string>
+ <string name="permission_revoked">VPN-machtiging ingetrokken door OS (bijv. andere VPN-app gestart), VPN wordt gestopt</string>
+ <string name="pushpeerinfo">Push Peer-info</string>
+ <string name="pushpeerinfosummary">Verzend extra informatie naar de server, bijvoorbeeld SSL-versie en Android-versie</string>
+ <string name="pw_request_dialog_title">%1$s is nodig</string>
+ <string name="pw_request_dialog_prompt">Voer het wachtwoord in voor profiel %1$s</string>
+ <string name="menu_use_inline_data">Gebruik inline gegevens</string>
+ <string name="export_config_chooser_title">Exporteer configuratiebestand</string>
+ <string name="missing_tlsauth">tls-auth-bestand ontbreekt</string>
+ <string name="missing_certificates">Ontbrekend gebruikerscertificaat of gebruikerscertificaatsleutelbestand</string>
+ <string name="missing_ca_certificate">Ontbrekend CA-certificaat</string>
+ <string name="crl_title">Certifcate Intrekkingslijst (optioneel)</string>
+ <string name="reread_log">Herlas (%d) logboekitems uit logboekcachebestand</string>
+ <string name="samsung_broken">Hoewel Samsung-telefoons tot de meest verkochte Android-telefoons behoren, behoort de firmware van Samsung ook tot de meest buggy-Android-firmware. De bugs zijn niet beperkt tot de VPN-werking op deze apparaten, maar veel van deze kunnen worden omzeild. Hieronder worden enkele van deze bugs beschreven.\n\nDNS werkt alleen als de DNS-server zich in het VPN-bereik bevindt.\n\nOp veel Samsung 5.x-apparaten werkt de functie toegestane/niet-toegestane apps niet.\nOp Samsung 6.x VPN meldt dat het niet werkt tenzij de VPN-app is vrijgesteld van Powersave-functies.</string>
<string name="samsung_broken_title">Samsung telefoons</string>
<string name="novpn_selected">Geen VPN geselecteerd.</string>
+ <string name="defaultvpn">Standaard VPN</string>
+ <string name="defaultvpnsummary">VPN gebruikt op plaatsen waar een standaard VPN nodig is. Deze bevinden zich momenteel in het opstartproces, voor Always-On en de Quick Settings Tile.</string>
+ <string name="vpnselected">Momenteel geselecteerde VPN: \'%s\'</string>
<string name="reconnect">Opnieuw verbinden</string>
+ <string name="qs_title">Schakel VPN in/uit</string>
<string name="qs_connect">Verbinden met %s</string>
<string name="qs_disconnect">Verbinding met %s verbreken</string>
+ <string name="connectretrymaxmessage">Voer de maximale tijd in tussen verbindingspogingen. OpenVPN verhoogt langzaam de wachttijd na een niet-succesvolle verbindingspoging tot deze waarde. Standaard ingesteld op 300s.</string>
+ <string name="connectretrymaxtitle">Maximale tijd tussen verbindingspogingen</string>
+ <string name="state_waitconnectretry">%ss seconden aan het wachten tussen verbindingspoging</string>
+ <string name="nought_alwayson_warning"><![CDATA[Als u geen bevestigingsvenster voor VPN hebt ontvangen, hebt u \"Always on VPN\" ingeschakeld voor een andere app. In dat geval mag alleen die app verbinding maken met een VPN. Controleer onder Instellingen-> Netwerken meer ... -> VPNS]]></string>
+ <string name="management_socket_closed">Verbinding met OpenVPN gesloten (%s)</string>
<string name="change_sorting">Verander sortering</string>
<string name="sort">Sorteer</string>
<string name="sorted_lru">Profielen gesorteerd op laatst recent gebruikte</string>
<string name="sorted_az">Profielen gesorteerd op naam</string>
+ <string name="deprecated_tls_remote">Config gebruikt de optie tls-remote die in 2.3 is verouderd en uiteindelijk is verwijderd in 2.4</string>
+ <string name="auth_failed_behaviour">Gedrag op AUTH_FAILED</string>
+ <string name="graph">Grafiek</string>
+ <string name="use_logarithmic_scale">Gebruik logaritmische schaal</string>
+ <string name="notenoughdata">Niet genoeg data</string>
+ <string name="avghour">Gemiddeld per uur</string>
+ <string name="avgmin">Gemiddeld per minuut</string>
+ <string name="last5minutes">Laatste 5 minuten</string>
+ <string name="data_in">In</string>
+ <string name="data_out">Uit</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="weakmd">&lt;p&gt;Beginnend met OpenSSL version 1.1, OpenSSL verwerpt zwakke handtekeningen in certificaten zoals
+ MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5 handtekeningen zijn volledig onveilig en zouden niet meer mogen worden gebruikt.&lt;/b&gt; MD5
+ botsingen kunnen worden gemaakt in &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt;enkele uren tegen minimale kosten.&lt;/a&gt;.
+ Je moet de VPN-certificaten zo snel mogelijk bijwerken.&lt;/p&gt;&lt;p&gt;Helaas bevatten oudere easy-rsa-distributies de configuratieoptie \"default_md md5\". Als je een oude easy-rsa-versie gebruikt, update dan naar
+ &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;laatste versie&lt;/a&gt;) of verander md5 naar sha256 en
+ regenereer je certificaten.&lt;/p&gt;&lt;p&gt;Als je echt oude en gebroken certificaten wilt gebruiken, gebruik dan de aangepaste configuratie-optie tls-cipher \"DEFAULT:@SECLEVEL=0\" onder geavanceerde configuratie of als een extra regel in uw geïmporteerd configuratiebestand&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Verbindingsstatistieken</string>
+ <string name="channel_description_background">Lopende statistieken van de tot stand gebrachte OpenVPN-verbinding</string>
+ <string name="channel_name_status">Verbindingsstatus wijzigen</string>
+ <string name="channel_description_status">Statuswijzigingen van de OpenVPN-verbinding (Verbinden, authenticeren,&#8230;)</string>
+ <string name="weakmd_title">Zwakke (MD5) hashes in certificaathandtekening (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL Snelheidstest</string>
+ <string name="openssl_cipher_name">OpenSSL cipher namen</string>
+ <string name="osslspeedtest">OpenSSL Crypto snelheidstest</string>
+ <string name="openssl_error">OpenSSL heeft een fout geretourneerd</string>
+ <string name="running_test">Testen&#8230;</string>
+ <string name="test_algoirhtms">Test geselecteerde algoritmes</string>
+ <string name="all_app_prompt">Een externe app probeert %s te besturen. De app die om toegang vraagt, kan niet worden vastgesteld. Als u deze app toestaat, krijgen ALLE apps toegang.</string>
+ <string name="openvpn3_nostatickeys">De OpenVPN 3 C++ -implementatie ondersteunt geen statische sleutels. Verander naar OpenVPN 2.x onder algemene instellingen.</string>
+ <string name="openvpn3_pkcs12">PKCS12-bestanden rechtstreeks gebruiken met OpenVPN 3 C++ -implementatie wordt niet ondersteund. Importeer de pkcs12-bestanden in de Android keystore of verander naar OpenVPN 2.x onder algemene instellingen.</string>
</resources>
diff --git a/app/src/main/res/values-no/strings-icsopenvpn.xml b/app/src/main/res/values-no/strings-icsopenvpn.xml
index 4ebf757a..5c29339d 100755
--- a/app/src/main/res/values-no/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-no/strings-icsopenvpn.xml
@@ -99,6 +99,7 @@
<string name="routes_info_incl">Ruter: %1$s %2$s</string>
<string name="routes_info_excl">Ekskluderte ruter: %1$s %2$s</string>
<string name="routes_debug">VpnService-ruter som er installert: %1$s %2$s</string>
+ <string name="route_not_netip">Korrigert rute %1$s / %2$s til %3$s / %2$s</string>
<string name="version_info">%1$s %2$s</string>
<string name="send_logfile">Send loggfilen</string>
<string name="send">Send</string>
@@ -157,13 +158,16 @@
<string name="netstatus">Nettverksstatus: %s</string>
<string name="select_file">Velg</string>
<string name="show_log_window">Vis logg-vindu</string>
+ <string name="mobile_info">%10$s %9$s kjører på %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="faq_system_dialogs_title">Tilkoblingsvarsel og varslingslyd</string>
<string name="translationby">Norsk oversettelse av Jonny</string>
<string name="ipdns">IP og DNS</string>
<string name="basic">Grunnleggende</string>
<string name="routing">Ruting</string>
+ <string name="obscure">Obskure OpenVPN-innstillinger. Vanligvis ikke nødvendig.</string>
<string name="advanced">Avansert</string>
<string name="export_config_title">ICS Openvpn konfigurasjon</string>
+ <string name="warn_no_dns">Ingen DNS-servere som brukes. Navneoppløsning fungerer ikke. Vurdere å angi tilpassede DNS-servere. Vær også oppmerksom på at Android vil fortsette å bruke proxy-innstillingene angitt for mobile/Wi-Fi-tilkoblingen når ingen DNS-servere er angitt.</string>
<string name="faq_howto_title">Hurtigstart</string>
<string name="setting_loadtun_summary">Prøv å laste tun.ko kjernemodul før tilkobling. Krever at enheten er rootet.</string>
<string name="setting_loadtun">Last tun modul</string>
@@ -171,8 +175,10 @@
<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="onbootrestart">Koble til ved oppstart</string>
<string name="ignore">Ignorer</string>
<string name="restart">Start på nytt</string>
+ <string name="restart_vpn_after_change">Konfigurasjonsendringene vil brukes etter at VPN\'en er startet på nytt. Restarte VPN nå?</string>
<string name="configuration_changed">Konfigurasjon endret</string>
<string name="faq_duplicate_notification_title">Kopier varsler</string>
<string name="no_vpn_profiles_defined">Ingen VPN-profiler er definert.</string>
@@ -181,6 +187,7 @@
<string name="openvpn_log">OpenVPN Logg</string>
<string name="import_config">Importer OpenVPN konfigurasjon</string>
<string name="battery_consumption_title">Batteriforbruk</string>
+ <string name="connection_retries">Tilkoblingsforsøk</string>
<string name="minidump_generated">OpenVPN krasjet uventet. Vennligst vurder bruk av Minidump-alternativet i hovedmenyen</string>
<string name="send_minidump">Send Minidump til utvikler</string>
<string name="send_minidump_summary">Sender feilsøkingsinformasjon om siste krasj til utvikler</string>
@@ -222,4 +229,37 @@
<string name="clear_external_apps">Slett tillatte eksterne apper</string>
<string name="loading">Laster&#8230;</string>
<string name="allowed_vpn_apps_info">Tillatte VPN-apper: %1$s</string>
+ <string name="Search">Søk</string>
+ <string name="protocol">Protokoll</string>
+ <string name="enabled_connection_entry">Aktivert</string>
+ <string name="pw_request_dialog_title">Trenger %1$s</string>
+ <string name="export_config_chooser_title">Eksporter konfigurasjonsfilen</string>
+ <string name="samsung_broken_title">Samsung telefoner</string>
+ <string name="novpn_selected">Ingen VPN valgt.</string>
+ <string name="defaultvpn">Standard VPN</string>
+ <string name="vpnselected">Valgt VPN: \'%s\'</string>
+ <string name="reconnect">Koble til igjen</string>
+ <string name="qs_title">Veksle VPN</string>
+ <string name="qs_connect">Koble til %s</string>
+ <string name="qs_disconnect">Koble fra %s</string>
+ <string name="change_sorting">Endre sortering</string>
+ <string name="sort">Sorter</string>
+ <string name="sorted_lru">Profiler sortert etter siste brukte</string>
+ <string name="sorted_az">Profiler sortert etter navn</string>
+ <string name="graph">Graf</string>
+ <string name="use_logarithmic_scale">Bruk logaritmisk skala</string>
+ <string name="notenoughdata">Ikke nok data</string>
+ <string name="avghour">Gjennomsnitt per time</string>
+ <string name="avgmin">Gjennomsnitt per minutt</string>
+ <string name="last5minutes">Siste 5 minutter</string>
+ <string name="data_in">Inn</string>
+ <string name="data_out">Ut</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-pl/plurals-icsopenvpn.xml b/app/src/main/res/values-pl/plurals-icsopenvpn.xml
index 70489fbc..906e4395 100755
--- a/app/src/main/res/values-pl/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-pl/plurals-icsopenvpn.xml
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Pozostał jeden miesiąc</item>
+ <item quantity="few">Pozostało %d miesięcy</item>
+ <item quantity="other">pozostało %d miesięcy</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-pl/strings-icsopenvpn.xml b/app/src/main/res/values-pl/strings-icsopenvpn.xml
index 40c9c522..414a0f11 100755
--- a/app/src/main/res/values-pl/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-pl/strings-icsopenvpn.xml
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Łączenie (TCP)</string>
<string name="state_auth_failed">Błąd autentykacji</string>
<string name="state_nonetwork">Czekam na sieć</string>
+ <string name="statusline_bytecount">↓%2$s/s %1$s - ↑%4$s/s %3$s</string>
<string name="notifcation_title_notconnect">Niepołączony</string>
<string name="start_vpn_title">Łączę z VPN %s</string>
<string name="start_vpn_ticker">Łączę z VPN %s</string>
@@ -294,6 +295,7 @@
<string name="allow_vpn_changes">Zezwól na zmiany profili VPN</string>
<string name="hwkeychain">Sprzętowy magazyn kluczy:</string>
<string name="permission_icon_app">Ikona aplikacji próbującej użyć OpenVPN</string>
+ <string name="faq_vpndialog43">"Począwszy od Androida 4.3 potwiedzenie połączenia VPN jest strzeżone przed \"nakładaniem aplikacji\", co powoduje, że okno dialogowe nie reaguje na dotykowe dane wejściowe. Jeśli masz aplikację, która korzysta z nakładek, może to spowodować takie zachowanie. Problem ten dotyczy wszystkich aplikacji VPN na Androidzie 4.3 i nowszych wersjach. Zobacz także &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; aby uzyskać dodatkowe informacje "</string>
<string name="faq_vpndialog43_title">Potwierdzenie dla Android w wersji 4.3 i wyższych</string>
<string name="donatePlayStore">Alternatywnie, dotację możesz przesłać za pomocą Google Play:</string>
<string name="thanks_for_donation">Dziękujemy za wsparcie %s!</string>
@@ -321,6 +323,7 @@
<string name="import_log">Dziennik importu:</string>
<string name="ip_looks_like_subnet">Określono topologię \"%3$s\", jednak ifconfig %1$s %2$s wygląda bardziej na adres IP z maską. Zakładam, że chodzi o topologię \"subnet\".</string>
<string name="mssfix_invalid_value">Wartość nadpisywania MSS musi być liczbą całkowitą pomiędzy 0 i 9000</string>
+ <string name="mtu_invalid_value">Wartość nadpisywania MTU musi być liczbą całkowitą pomiędzy 64 a 9000</string>
<string name="mssfix_value_dialog">Ogłasza sesjom TCP przekazywanym przez tunel, że powinny ograniczyć wielkość pakietu tak, aby po enkapsulacji przez OpenVPN wynikowy rozmiar pakietu UDP wysyłanego przez VPN do peer\'a nie przekraczał tej liczby bajtów (domyślnie 1450)</string>
<string name="mssfix_checkbox">Zastępuje wartość MSS pakietu TCP</string>
<string name="mssfix_dialogtitle">Ustaw wartość MSS pakietu TCP</string>
@@ -357,8 +360,10 @@
OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS Android nie będzie używał więcej proxy. Nie ma żadnego API do ustawienia proxy dla połączenia VPN.</p></string>
<string name="ab_lollipop_reinstall">Aplikacje VPN mogą przestać działać po odinstalowaniu i ponownej instalacji. W celu uzyskania szczegółów zobacz #80074</string>
<string name="ab_not_route_to_vpn">Brakuje konfiguracji tras dla adresu IP klienta oraz masek podsieci. OpenVPN rozwiązuje ten problem przez dodanie trasy odpowiedniej dla adresu IP klienta i maski jego podsieci</string>
+ <string name="ab_persist_tun">Otwieranie urządzenia tun, gdy inne urządzenie używane do obsługi persist-tun, jest otwarte, powoduje awarię VPNServices na urządzeniu. Ponowne uruchomienie urządzenia jest konieczne dla przywrócenia VPN. OpenVPN dla systemu Android próbuje uniknąć ponownego otwarcia urządzenia tun. Aby uniknąć awarii zamknij bieżący TUN przed otwarciem nowego TUN. Może to prowadzić do krótkiego momentu, gdzie pakiety są wysyłane poza siecią VPN. Nawet mimo zastosowania tego obejścia VPNServices czasami ulega awarii i wymaga ponownego uruchomienia urządzenia.</string>
<string name="ab_secondary_users">VPN absolutnie nie działa dla dodatkowych użytkowników.</string>
<string name="ab_kitkat_reconnect">"Jest grono użytkowników, którzy donoszą, iż podczas używania aplikacji VPN połączenie danych/komórkowe jest często zrywane. Zachowanie to wydaje się dotykać niewielkiej liczby urządzeń/dostawców danych komórkowych - na tę chwilę nieznana jest przyczyna, ani rozwiązanie problemu."</string>
+ <string name="ab_vpn_reachability_44">Przy użyciu VPN można dotrzeć tylko do miejsc, które są osiągalne bez sieci VPN. VPN protokołu IPv6 nie działa w ogóle.</string>
<string name="ab_only_cidr_title">Trasy nie-CIDR</string>
<string name="ab_proxy_title">Zachowanie Proxy w sieci VPN</string>
<string name="ab_lollipop_reinstall_title">Ponowna instalacja aplikacji VPN</string>
@@ -403,6 +408,8 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
<string name="samsung_broken">Pomimo, że telefony marki Samsung są jednymi z najliczniej sprzedawanych urządzeń z Androidem, oprogramowanie układowe Samsunga jest jednocześnie jednym z posiadających najwięcej błędów. Błędy nie ograniczają się wyłącznie do operacji związanych z VPN a wiele z nich zostało rozwiązanych technikami tymczasowymi. Poniższa lista przedstawia kilka ze wspomnianych błędów.\n\nDNS nie działa poza zakresem VPN.\n\nNa wielu urządzeniach marki Samsung z Androidem 5.x aplikacje dozwolone/niedozwolone nie działają.\n\nNa urządzeniach marki Samsung z Androidem 6.x VPN może nie działać podczas aktywnego oszczędzania energii.</string>
<string name="samsung_broken_title">Telefony Samsung</string>
<string name="novpn_selected">Nie wybrano VPN.</string>
+ <string name="defaultvpn">Domyślny VPN</string>
+ <string name="vpnselected">Obecnie wybrana sieć VPN: \'%s\'</string>
<string name="reconnect">Podłącz ponownie</string>
<string name="qs_title">Przełącz VPN</string>
<string name="qs_connect">Połącz z %s</string>
@@ -415,4 +422,22 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
<string name="sort">Sortowanie</string>
<string name="sorted_lru">Profile posortowane według ostatnio używanych</string>
<string name="sorted_az">Profile sortowane według nazwy</string>
+ <string name="deprecated_tls_remote">Konfigurcja używa opcji tls-remote, która została zaniechana w wersji 2.3 i ostatecznie usunięta w 2.4</string>
+ <string name="auth_failed_behaviour">Zachowanie na AUTH_FAILED</string>
+ <string name="graph">Grafika</string>
+ <string name="use_logarithmic_scale">Użyj skali logarytmicznej</string>
+ <string name="notenoughdata">Za mało danych</string>
+ <string name="avghour">Średnia na godzinę</string>
+ <string name="avgmin">Średnia za minutę</string>
+ <string name="last5minutes">Ostatnie 5 minut</string>
+ <string name="data_in">W</string>
+ <string name="data_out">Zewnątrz</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit / s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-pt/plurals-icsopenvpn.xml b/app/src/main/res/values-pt/plurals-icsopenvpn.xml
index 70489fbc..8e397d68 100755
--- a/app/src/main/res/values-pt/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-pt/plurals-icsopenvpn.xml
@@ -1,3 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Falta 1 mês</item>
+ <item quantity="other">Faltam %d meses</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Falta um dia</item>
+ <item quantity="other">Faltam %d dias</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Falta 1 hora</item>
+ <item quantity="other">Faltam %d horas</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Falta 1 minuto</item>
+ <item quantity="other">Faltam %d minutos</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-pt/strings-icsopenvpn.xml b/app/src/main/res/values-pt/strings-icsopenvpn.xml
index 00523b59..52772eba 100755
--- a/app/src/main/res/values-pt/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-pt/strings-icsopenvpn.xml
@@ -44,12 +44,14 @@
<string name="duplicate_profile_name">Por favor, digite um nome de perfil que não esteja já em uso</string>
<string name="profilename">Nome do perfil</string>
<string name="no_keystore_cert_selected">Tem de selecionar um certificado de utilizador</string>
+ <string name="no_ca_cert_selected">Deve selecionar um certificado</string>
<string name="no_error_found">Nenhum erro encontrado</string>
<string name="config_error_found">Erro na configuração</string>
<string name="ipv4_format_error">Erro ao analisar o endereço IPv4</string>
<string name="custom_route_format_error">Erro ao analisar as rotas personalizadas</string>
<string name="pw_query_hint">(deixe em branco para consulta a pedido)</string>
<string name="vpn_shortcut">Atalho do OpenVPN</string>
+ <string name="vpn_launch_title">Conectando-se à VPN&#8230;</string>
<string name="shortcut_profile_notfound">Perfil especificado no atalho não encontrado</string>
<string name="random_host_prefix">Prefixo de Host aleatório</string>
<string name="random_host_summary">Adiciona 6 caracteres aleatórios ao nome do host</string>
@@ -66,10 +68,12 @@
<string name="check_remote_tlscert_title">Esperar certificado do servidor TLS</string>
<string name="remote_tlscn_check_summary">Verifica o assunto DN do certificado do servidor remoto</string>
<string name="remote_tlscn_check_title">Verificar nome de host do certificado</string>
+ <string name="enter_tlscn_dialog">Especifique a verificação usada para verificar o DN do certificado remoto (por exemplo, C = DE, L = Paderborn, OU = Avian IP Carriers, CN = openvpn.blinkt.de)\n\nEspecifique o DN completo ou o RDN (openvpn.blinkt.de no exemplo) ou um prefixo RDN para verificação. \n\nQuando utilizar o prefixo RDN \"Servidor\" corresponde ao \"Servidor-1\" e ao \"Servidor-2\"\n\nDeixando o campo de texto vazio verificará o RDN contra o nome do host do servidor.\n\nPara mais detalhes, veja a página de utilizador OpenVPN 2.3.1+ sob -verify-x509-name</string>
<string name="enter_tlscn_title">Assunto do certificado remoto</string>
<string name="tls_key_auth">Ativa a autenticação de chave TLS</string>
<string name="tls_auth_file">Ficheiro de autenticação TLS</string>
<string name="pull_on_summary">Solicita endereços IP, rotas e tempo do servidor.</string>
+ <string name="pull_off_summary">Nenhuma informação é solicitada do servidor. As configurações precisam ser especificadas abaixo.</string>
<string name="use_pull">Obter Configurações</string>
<string name="dns">DNS</string>
<string name="override_dns">Substituir configurações de DNS pelo servidor</string>
@@ -93,6 +97,7 @@
<string name="custom_options_title">Opções personalizadas</string>
<string name="edit_vpn">Editar definições VPN</string>
<string name="remove_vpn_query">Remova o perfil VPN \'%s\'?</string>
+ <string name="tun_error_helpful">Em algumas imagens ICS personalizadas, a permissão em /dev/tun pode estar errada, ou o módulo tun pode estar a faltar completamente. Para imagens CM9, tente a opção de reparação em configurações gerais</string>
<string name="tun_open_error">Falha ao abrir a interface tun</string>
<string name="error">"Erro: "</string>
<string name="clear">Limpar</string>
@@ -119,6 +124,7 @@
<string name="copying_log_entries">Copia entradas de registo</string>
<string name="faq_copying">Para copiar uma única entrada do registo selecione e mantenha seleciona a respetiva entrada. Para copiar/enviar o registo completo use a opção enviar registo. Use o botão de menu do equipamento caso não esteja visível no GUI.</string>
<string name="faq_shortcut">Atalho para iniciar</string>
+ <string name="faq_howto_shortcut">Pode colocar um atalho para iniciar o OpenVPN na sua área de trabalho. Dependendo do seu programa de ecrã inicial, terá que adicionar um atalho ou um widget.</string>
<string name="no_vpn_support_image">A imagem não suporta a API VPNService, lamentamos :(</string>
<string name="encryption">Encriptação</string>
<string name="cipher_dialog_title">Digite o método de encriptação</string>
@@ -155,22 +161,32 @@
<string name="private_key_password">Senha de chave privada</string>
<string name="password">Senha</string>
<string name="file_icon">ícone de ficheiro</string>
+ <string name="tls_authentication">Autenticação/encriptação TLS</string>
<string name="generated_config">Config gerado</string>
<string name="generalsettings">Configurações</string>
+ <string name="owner_fix_summary">Tenta mudar o dono de /dev/tun para sistema. Algumas imagens CM9 precisam disso para fazer a API VPNService funcionar. Requer root.</string>
<string name="owner_fix">Corrija a propriedade de /dev/tun</string>
+ <string name="generated_config_summary">Mostra o arquivo de configuração OpenVPN criado</string>
<string name="edit_profile_title">A editar \"%s\"</string>
<string name="building_configration">A preparar a configuração...</string>
+ <string name="netchange_summary">Ativando essa opção forçará a reconexão se o estado da rede mudar (ex: WiFi de/para celular)</string>
<string name="netchange">Volte a ligar na mudança de rede</string>
<string name="netstatus">Estado da rede: %s</string>
<string name="select_file">Selecione</string>
+ <string name="show_log_summary">Mostra a janela de log ao conectar. A janela de log sempre pode ser acessada pelo status da notificação.</string>
<string name="show_log_window">Mostrar a janela de log</string>
+ <string name="mobile_info">%10$s %9$s rodando no %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="faq_system_dialogs_title">Aviso de ligação e som de notificação</string>
+ <string name="translationby">Tradução em inglês por Arne Schwabe&lt; arne@rfc2549.org&gt;</string>
<string name="ipdns">IP e DNS</string>
<string name="basic">Básico</string>
<string name="routing">Encaminhamento</string>
<string name="obscure">Definições obscuras OpenVPN. Raramente necessário.</string>
<string name="advanced">Avançado</string>
<string name="export_config_title">Configuração Openvpn ICS</string>
+ <string name="warn_no_dns">Nenhum servidor de DNS sendo usado. A resolução do nome pode não funcionar. Considere configurar Servidores DNS personalizados. Observe também que o Android continuará usando suas configurações de proxy especificadas para sua conexão móvel / Wi-Fi quando nenhum servidor DNS estiver configurado.</string>
+ <string name="dns_add_error">Não foi possível adicionar o servidor de DNS \"%1$s\", rejeitado pelo sistema: %2$s</string>
+ <string name="ip_add_error">Não foi possível configurar o endereço de IP \"%1$s\", rejeitado pelo sistema: %2$s</string>
<string name="faq_howto_title">Início Rápido</string>
<string name="setting_loadtun_summary">Tente carregar o módulo tun.ko do kernel antes de ligar. Necessita de acesso root ao dispositivo.</string>
<string name="setting_loadtun">Carregar o módulo tun</string>
diff --git a/app/src/main/res/values-ro/strings-icsopenvpn.xml b/app/src/main/res/values-ro/strings-icsopenvpn.xml
index cafe3011..8ca5dce3 100755
--- a/app/src/main/res/values-ro/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-ro/strings-icsopenvpn.xml
@@ -38,7 +38,7 @@
<string name="auth_username">Utilizator</string>
<string name="auth_pwquery">Parola</string>
<string name="static_keys_info">Pentru configurarea statică Cheile TLS Auth vor fi utilizate ca şi chei statice</string>
- <string name="configure_the_vpn">Configurare VPN</string>
+ <string name="configure_the_vpn">Configurați VPN-ul</string>
<string name="menu_add_profile">Adaugă profil</string>
<string name="add_profile_name_prompt">Introduceţi un nume ce identifică profilul nou</string>
<string name="duplicate_profile_name">Vă rugăm să introduceţi un nume de profil unic</string>
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index f1eea49c..ef344852 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -5,7 +5,6 @@
<string name="show_connection_details">Arată detaliile conexiunii</string>
<string name="routes_info">Rute: %s</string>
<string name="routes_info6">Rute IPv6: %s</string>
- <string name="bitmask_openvpn_log_file">Fişier jurnal LEAP Android</string>
<string name="cert_from_keystore">Am primit certificatul \'%s\' din Keystore</string>
<string name="bitmask_log">Jurnal Bitmask</string>
diff --git a/app/src/main/res/values-ru/plurals-icsopenvpn.xml b/app/src/main/res/values-ru/plurals-icsopenvpn.xml
index fc40574a..7cc8112c 100755
--- a/app/src/main/res/values-ru/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-ru/plurals-icsopenvpn.xml
@@ -2,22 +2,22 @@
<!--Generated by crowdin.com-->
<resources>
<plurals name="months_left">
- <item quantity="one">Остался %d месяц</item>
+ <item quantity="one">Остался один месяц</item>
<item quantity="few">Осталось %d месяца</item>
<item quantity="other">Осталось %d месяцев</item>
</plurals>
<plurals name="days_left">
- <item quantity="one">Остался %d день</item>
+ <item quantity="one">Остался один день</item>
<item quantity="few">Осталось %d дня</item>
<item quantity="other">Осталось %d дней</item>
</plurals>
<plurals name="hours_left">
- <item quantity="one">Остался %d час</item>
+ <item quantity="one">Остался один час</item>
<item quantity="few">Осталось %d часа</item>
<item quantity="other">Осталось %d часов</item>
</plurals>
<plurals name="minutes_left">
- <item quantity="one">Осталась %d минута</item>
+ <item quantity="one">Осталась одна минута</item>
<item quantity="few">Осталось %d минуты</item>
<item quantity="other">Осталось %d минут</item>
</plurals>
diff --git a/app/src/main/res/values-ru/strings-icsopenvpn.xml b/app/src/main/res/values-ru/strings-icsopenvpn.xml
index faa4ef22..73acc96a 100755
--- a/app/src/main/res/values-ru/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-ru/strings-icsopenvpn.xml
@@ -77,7 +77,7 @@
<string name="use_pull">Запрашивать параметры</string>
<string name="dns">DNS</string>
<string name="override_dns">Переопределить параметры DNS от сервера</string>
- <string name="dns_override_summary">Использовать свой DNS сервер</string>
+ <string name="dns_override_summary">Использовать ваши DNS</string>
<string name="searchdomain">Домен поиска</string>
<string name="dns1_summary">DNS-сервер для использования.</string>
<string name="dns_server">DNS-сервер</string>
@@ -87,8 +87,8 @@
<string name="ignore_routes_summary">Игнорировать маршруты, посылаемые сервером.</string>
<string name="default_route_summary">Перенаправляет весь трафик через VPN</string>
<string name="use_default_title">Использовать маршрут по умолчанию</string>
- <string name="custom_route_message">Введите пользовательские маршруты. Только введите адрес назначения в формате CIDR. \"10.0.0.0/8 2002::/16\" будет использовано для 10.0.0.0/8 и 2002::/16 сетей через VPN.</string>
- <string name="custom_route_message_excluded">Маршруты, которые не следует направлять через VPN. Используйте тот же синтаксис, как и в случае с другими маршрутами.</string>
+ <string name="custom_route_message">Введите пользовательские маршруты. Используйте только адрес назначения в формате CIDR. \"10.0.0.0/8 2002::/16\" направит сети 10.0.0.0/8 и 2002::/16 через VPN.</string>
+ <string name="custom_route_message_excluded">Маршруты, которые НЕ должны направляться через VPN. Используйте тот же синтаксис, что и для включенных маршрутов.</string>
<string name="custom_routes_title">Пользовательские маршруты</string>
<string name="custom_routes_title_excluded">Исключенные сети</string>
<string name="log_verbosity_level">Уровень детализации журнала</string>
@@ -133,7 +133,7 @@
<string name="settings_auth">Аутентификация/шифрование</string>
<string name="file_explorer_tab">Обзор файлов</string>
<string name="inline_file_tab">Встроенный файл</string>
- <string name="error_importing_file">Ошибка при импорте файла</string>
+ <string name="error_importing_file">Ошибка импорта файла</string>
<string name="import_error_message">Не удалось импортировать файл из файловой системы</string>
<string name="inline_file_data">[[Встроенный файл данных]]</string>
<string name="opentun_no_ipaddr">Отказ в открытии устройства tun без информации об IP-адресе</string>
@@ -152,7 +152,7 @@
<string name="faq_security_title">Соображения безопасности</string>
<string name="faq_security">"Так как OpenVPN чувствителен к безопасности, то уместны будут несколько замечаний на её счёт. Все данные на SD-карте по сути не защищены. Каждое приложение может прочесть их (например, эта программа не требует специальных привилегий на SD-карту). Данные этого приложения могут быть прочитаны только им самим. При использовании опции импорта сертификатов и ключей в диалоговом окне данные сохраняются в профиле VPN. Профили VPN доступны только этому приложению. (Не забудьте потом удалить копии на SD-карте). Несмотря на то, что данные доступны только этому приложению, они всё ещё не зашифрованы. При наличии прав администратора (рута) на телефоне или через некую уязвимость эти данные можно извлечь. Также сохранённые пароли хранятся в обычном текстовом виде. Настоятельно рекомендуется файлы pkcs12 импортировать в android keystore."</string>
<string name="import_vpn">Импорт</string>
- <string name="broken_image_cert_title">Ошибка вывода выбранного сертификата</string>
+ <string name="broken_image_cert_title">Ошибка отображения выбора сертификата</string>
<string name="broken_image_cert">Произошла ошибка при попытке вызова системного диалога выбора сертификатов Android 4.0+. Этого не должно было случиться на стандартной прошивке. Может быть в вашей прошивке испорчено хранилище сертификатов</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
@@ -220,7 +220,7 @@
<string name="faq_routing_title">Конфигурация маршрутизации/интерфейса</string>
<string name="faq_routing">Конфигурация маршрутизации и интерфейса производится не через традиционные ifconfig/route команды, а с помощью VPNService API. Это приводит к созданию другой конфигурации маршрутизации, отличной от конфигураций, используемых на других ОС. Конфигурация VPN-туннеля состоит из IP-адресов и сетей, которые должны направляться через этот интерфейс. Никаких особых партнерских адресов или адресов шлюза не требуется. Также не требуются и специальные маршруты для соединения с VPN-сервером (например, добавленные при использовании redirect-gateway). Следовательно, приложение будет игнорировать эти параметры при импорте конфигурации. Приложение с помощью VPNService API гарантирует, что подключение к серверу не направляется через VPN-туннель. Поддерживается направление через туннель только определенных сетей. Приложение пытается определить сети, которые не должны быть направлены через туннель (например, маршрут x.x.x.x y.y.y.y net_gateway) и вычисляет список маршрутов, в который не включаются эти маршруты, чтобы эмулировать поведение других платформ. Окна журналов и логов показывают конфигурацию сервиса VPN после установления соединения.</string>
<string name="persisttun_summary">Не использовать обычное соединение без VPN при переподключении OpenVPN.</string>
- <string name="persistent_tun_title">Постоянный туннель</string>
+ <string name="persistent_tun_title">Постоянный tun</string>
<string name="openvpn_log">Журнал OpenVPN</string>
<string name="import_config">Импорт конфигурации OpenVPN</string>
<string name="battery_consumption_title">Потребление батареи</string>
@@ -281,7 +281,7 @@
<string name="clearappsdialog">Очистить список авторизованных внешних приложений?\nСписок разрешенных приложений:\n\n%s</string>
<string name="screenoff_summary">Приостанавливать VPN, если экран выключен и передано меньше 64kb данных за 60 сек. Когда включена опция \"Постоянный туннель\", приостановка VPN оставит ваше устройство без сетевого подключения. Без опции \"Постоянный туннель\" устройство не будет иметь VPN-соединения/защиты.</string>
<string name="screenoff_title">Приостановить VPN-соединение при выключенном экране</string>
- <string name="screenoff_pause">Приостановка соединения при выключенном экране: меньше, чем %1$s in %2$ss</string>
+ <string name="screenoff_pause">Приостановка соединения при выключенном экране: меньше, чем %1$s за %2$sс</string>
<string name="screen_nopersistenttun">Внимание: Постоянный туннель не включен для этого VPN. Трафик будет использовать обычное интернет соединение, когда экран выключен.</string>
<string name="save_password">Сохранить пароль</string>
<string name="pauseVPN">Приостановить VPN</string>
@@ -438,8 +438,25 @@
<string name="kbits_per_second">%.1f Кбит/с</string>
<string name="mbits_per_second">%.1f Мбит/с</string>
<string name="gbits_per_second">%.1f Гбит/с</string>
+ <string name="weakmd">&lt;p&gt; Начиная с OpenSSL версии 1.1, OpenSSL отклоняет слабые подписи в таких сертификатах, как MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5, подписи полностью небезопасны и больше не должны использоваться.&lt;/b&gt; Столкновения MD5 могут быть созданы в &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt; через несколько часов с минимальными затратами.&lt;/a&gt;. Вы должны как можно скорее обновить сертификаты VPN. &lt;/p&gt;&lt;p&gt;К сожалению, старые дистрибутивы easy-rsa включали опцию конфигурации «default_md md5». Если вы используете старую версию easy-rsa, обновите ее до &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;latest версии&lt;/a&gt;) или измените md5 на sha256 и восстановите свои сертификаты.&lt;/p&gt;&lt;p&gt;Если вы действительно хотите использовать старые и поврежденные сертификаты, используйте настраиваемый параметр конфигурации tls-cipher «DEFAULT: @SECLEVEL = 0 \"в расширенной конфигурации или в качестве дополнительной строки в вашей импортированной конфигурации&lt;/p&gt;
+ </string>
<string name="volume_byte">%.0f Б</string>
<string name="volume_kbyte">%.1f КБ</string>
<string name="volume_mbyte">%.1f МБ</string>
<string name="volume_gbyte">%.1f ГБ</string>
+ <string name="channel_name_background">Статистика подключения</string>
+ <string name="channel_description_background">Текущая статистика установленного соединения OpenVPN</string>
+ <string name="channel_name_status">Изменение статуса соединения</string>
+ <string name="channel_description_status">Изменения состояния соединения OpenVPN (подключение, аутентификация,...)</string>
+ <string name="weakmd_title">Слабые (MD5) хэши в сигнатуре сертификата (SSL_CTX_use_certificate md слишком слабый)</string>
+ <string name="title_activity_open_sslspeed">Тест скорости OpenSSL</string>
+ <string name="openssl_cipher_name">Имена шифров OpenSSL</string>
+ <string name="osslspeedtest">Тест скорости OpenSSL Crypto</string>
+ <string name="openssl_error">OpenSSL возвратил ошибку</string>
+ <string name="running_test">Запуск теста&#8230;</string>
+ <string name="test_algoirhtms">Тестирование выбранных алгоритмов</string>
+ <string name="all_app_prompt">Внешнее приложение пытается контролировать %s. Приложение, запрашивающее доступ, не может быть определено. Разрешение этого приложения предоставляет доступ всем приложениям.</string>
+ <string name="openvpn3_nostatickeys">Реализация OpenVPN 3 C ++ не поддерживает статические ключи. Перейдите в OpenVPN 2.x под общие настройки.</string>
+ <string name="openvpn3_pkcs12">Использование файлов PKCS12 напрямую с помощью OpenVPN 3 C ++ не поддерживается. Импортируйте файлы pkcs12 в хранилище ключей Android или замените OpenVPN 2.x на общие настройки.</string>
</resources>
diff --git a/app/src/main/res/values-sv/strings-icsopenvpn.xml b/app/src/main/res/values-sv/strings-icsopenvpn.xml
index 585844fa..c39906be 100755
--- a/app/src/main/res/values-sv/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-sv/strings-icsopenvpn.xml
@@ -442,4 +442,15 @@
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Anslutningsstatistik</string>
+ <string name="channel_description_background">Löpande statistik för den etablerade OpenVPN-anslutningen</string>
+ <string name="channel_description_status">Statusändringar för OpenVPN-anslutningen (Anslutning, autentisering,...)</string>
+ <string name="weakmd_title">Svag (MD5) hashes i certifikat signatur (SSL_CTX_use_certificate md för svag)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL-hastighetstest</string>
+ <string name="openssl_cipher_name">OpenSSL-ciffernamn</string>
+ <string name="openssl_error">OpenSSL returnerade ett fel</string>
+ <string name="running_test">Kör test&#8230;</string>
+ <string name="test_algoirhtms">Testa valda algoritmer</string>
+ <string name="all_app_prompt">En extern app försöker kontrollera %s. Appen som begär åtkomst kan inte bestämmas. Tillåtelse av den här appen ger åtkomst till ALLA program.</string>
+ <string name="openvpn3_nostatickeys">OpenVPN 3 C ++-implementeringen stöder inte statiska nycklar. Ändra till OpenVPN 2.x under allmänna inställningar.</string>
</resources>
diff --git a/app/src/main/res/values-tr/strings-icsopenvpn.xml b/app/src/main/res/values-tr/strings-icsopenvpn.xml
index a8429009..5f82c364 100755
--- a/app/src/main/res/values-tr/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-tr/strings-icsopenvpn.xml
@@ -409,7 +409,7 @@
<string name="samsung_broken_title">Samsung telefonlar</string>
<string name="novpn_selected">Seçili VPN yok.</string>
<string name="defaultvpn">Öntanımlı VPN</string>
- <string name="defaultvpnsummary">Varsayılan olarak bir VPN gereken yerlerde VPN kullanılır. Bunlar şu anda: önyükleme sırasında, Her Zaman Açık ve Hızlı Ayarlar Döşemesi içindir.</string>
+ <string name="defaultvpnsummary">VPN, varsayılan bir VPN\'in gerekli olduğu yerlerde kullanılır. Bunlar şu anda: önyükleme sırasında, Her Zaman Açık ve Hızlı Ayarlar Döşemesi içindir.</string>
<string name="vpnselected">Şu anda seçili VPN: \'%s\'</string>
<string name="reconnect">Yeniden bağlan</string>
<string name="qs_title">VPN\'i Aç/Kapat</string>
@@ -442,4 +442,24 @@
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Bağlantı istatistikleri</string>
+ <string name="channel_description_background">Süren OpenVPN bağlantısının devam eden istatistikleri</string>
+ <string name="channel_name_status">Bağlantı durumu değişimi</string>
+ <string name="channel_description_status">OpenVPN bağlantısının durum değişiklikleri (Bağlantı, kimlik doğrulama,&#8230;)
+ </string>
+ <string name="weakmd_title">Sertifika imzasında zayıf (MD5) karması (SSL_CTX_use_certificate md çok zayıf)
+ </string>
+ <string name="title_activity_open_sslspeed">OpenSSL Hız Testi</string>
+ <string name="openssl_cipher_name">OpenSSL şifre isimleri</string>
+ <string name="osslspeedtest">OpenSSL Kripto Hız testi</string>
+ <string name="openssl_error">OpenSSL bir hata döndürdü</string>
+ <string name="running_test">Test çalışıyor&#8230;</string>
+ <string name="test_algoirhtms">Seçilen algoritmaları test edin</string>
+ <string name="all_app_prompt">Harici bir uygulama, %s denetlemeyi deniyor. Erişim isteyen uygulama belirlenemedi. Uygulamaya TÜM uygulamalara erişim izni veriliyor.</string>
+ <string name="openvpn3_nostatickeys">OpenVPN 3 C++ uygulaması statik anahtarları desteklemez. Lütfen genel ayarlar altında
+ OpenVPN 2.x\'e geçin.
+ </string>
+ <string name="openvpn3_pkcs12">PKCS12 dosyalarını doğrudan OpenVPN 3 C++ uygulamasıyla kullanmak desteklenmiyor.
+ Lütfen, pkcs12 dosyalarını Android anahtar deposuna aktarın veya genel ayarlar altında OpenVPN 2.x\'e geçin.
+ </string>
</resources>
diff --git a/app/src/main/res/values-uk/plurals-icsopenvpn.xml b/app/src/main/res/values-uk/plurals-icsopenvpn.xml
index 70489fbc..0fa0f62e 100755
--- a/app/src/main/res/values-uk/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-uk/plurals-icsopenvpn.xml
@@ -1,3 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Залишився один місяць</item>
+ <item quantity="few">Залишось %d місяці</item>
+ <item quantity="other">Залишось %d місяці(-ів)</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Залишився один день</item>
+ <item quantity="few">Залишилось %d дні</item>
+ <item quantity="other">Залишилось %d днів</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Залишилась одна година</item>
+ <item quantity="few">Залишилось %d години</item>
+ <item quantity="other">Залишилось %d годин</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Залишилася одна хвилина</item>
+ <item quantity="few">Залишилось %d хвилини</item>
+ <item quantity="other">Залишилось %d хвилин</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-uk/strings-icsopenvpn.xml b/app/src/main/res/values-uk/strings-icsopenvpn.xml
index 206457d9..61c350af 100755
--- a/app/src/main/res/values-uk/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-uk/strings-icsopenvpn.xml
@@ -32,7 +32,7 @@
<string name="tls_direction">TLS напрямок</string>
<string name="ipv6_dialog_tile">Введіть адресу IPv6/маску в CIDR форматі (напр., 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Введіть адресу IPv4/маску в CIDR форматі (напр., 1.2.3.4/24)</string>
- <string name="ipv4_address">IPv4-адреса</string>
+ <string name="ipv4_address">IPv4-адреси</string>
<string name="ipv6_address">IPv6-адреса</string>
<string name="custom_option_warning">Введіть додаткові параметри OpenVPN. Використовуйте цю можливість з великою обережністю. Якщо ви вважаєте, що відсутній важливий параметр, то зв\'яжіться з автором</string>
<string name="auth_username">Ім\'я користувача</string>
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Підключення (TCP)</string>
<string name="state_auth_failed">Помилка автентифікації</string>
<string name="state_nonetwork">Очікування на використання мережі</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Не підключено</string>
<string name="start_vpn_title">Підключення до VPN %s</string>
<string name="start_vpn_ticker">Підключення до VPN %s</string>
@@ -278,7 +279,7 @@
<string name="no_external_app_allowed">Не дозволяється використовувати зовнішнє API</string>
<string name="allowed_apps">Дозволенi додатки: %s</string>
<string name="clearappsdialog">Очистити список дозволених зовнішніх програм \nПоточний список дозволених програм:\n\n%s</string>
- <string name="screenoff_summary">\"Пауза VPN, коли екран вимкнений і менш ніж 64 кб були передані за 60 секунд. Якщо увімкена опція \"Постійний tun\", то Пауза VPN залишить ваш пристрій БЕЗ мережевого підключення. Без опції \"Постійний tun\", пристрій використовує нормальне (незахище) підключення до інтернету, коли VPN в паузі.</string>
+ <string name="screenoff_summary">Призупинити VPN, коли екран вимкнений і менш ніж 64 кб були передані за 60 секунд. Якщо увімкнена опція \"Постійний tun\", то призупинення VPN залишить ваш пристрій БЕЗ підключення до мережі. Без опції \"Постійний tun\", пристрій не використовує підключення/захист VPN.</string>
<string name="screenoff_title">Пауза VPN з\'єднання після вимкнення екрану</string>
<string name="screenoff_pause">Призупинення зв\'язку в екрані вимкненого стану: менше %1$s у %2$sс.</string>
<string name="screen_nopersistenttun">Попередження: Постійний tun не увімкнений для цього VPN. Трафік буде використовувати звичайне інтернет-з\'єднання, коли екран вимкнений.</string>
@@ -321,7 +322,8 @@
<string name="openvpn_is_no_free_vpn">Щоб користуватися цією програмою, Вам знадобиться VPN провайдер/шлюз з підтримкою OpenVPN (часто наданий роботодавцем). Для отримання інформації з налаштування власного OpenVPN сервера: http://community.openvpn.net/</string>
<string name="import_log">Журнал імпорту :</string>
<string name="ip_looks_like_subnet">Vpn топологія \"%3$s\" визначена, але ifconfig %1$s %2$s більше схожий на IP-адресу з маскою мережі. Припускаемо, що це топологія \"мережі\".</string>
- <string name="mssfix_invalid_value">Значення MSS являє собою ціле число від 0 до 9000</string>
+ <string name="mssfix_invalid_value">Значення MSS має бути цілим числом в діапазоні від 0 до 9000</string>
+ <string name="mtu_invalid_value">Значення MTU має бути цілим числом в діапазоні від 64 до 9000</string>
<string name="mssfix_value_dialog">Зміни в TCP з\'єднанні, які проходять через тунель, так що отриманий в результаті розмір пакета UDP, після инкапсуляції по OpenVPN обмежується цим значенням. (За замовчуванням 1450)</string>
<string name="mssfix_checkbox">Зміна значення MSS навантаження TCP</string>
<string name="mssfix_dialogtitle">Встановка значення MSS навантаження TCP</string>
@@ -377,6 +379,7 @@
<string name="ab_persist_tun_title">Зберігати tun режим</string>
<string name="version_and_later">%s і подальше</string>
<string name="tls_cipher_alert_title">Підключення не вдається з \"SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure\"</string>
+ <string name="tls_cipher_alert">Новіші версії OpenVPN для Android (0.6.29 / березень 2015 р.) використовують більш безпечниі налаштування за промовчанням для дозволених шифрованих наборів (tls-шифр \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). На жаль, виключення менш безпечних та експортних наборів шифрів, особливо тих, які не підтримують Perfect Forward Secrecy (Diffie-Hellman), викликають певні проблеми. Це, як правило, зумовлене добромисною, але погано виконаною спробою посилити захист TLS встановленням tls-cipher на сервері або деяких вбудованих ОС із урізаним SSL (наприклад, MikroTik).\nЩоб вирішити цю проблему, встановіть tls-cipher налаштування на сервері на розумні за промовчанням, як tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! kRSA\". Щоб вирішити проблему у клієнта, додайте користувацький параметр tls-cipher DEFAULT на клієнті Android.</string>
<string name="message_no_user_edit">Цей профіль був доданий з зовнішнього додатку (%s) і був відзначений як таким, що не керується користувачем.</string>
<string name="crl_file">Список відкликаних сертифікатів</string>
<string name="service_restarted">Перезапуск OpenVPN Service (Додаток зупинився або закрився через нестачу пам\'яті)</string>
@@ -389,6 +392,7 @@
<string name="query_permissions_sdcard">OpenVPN для Android може спробувати знайти відсутні файли на Sd карті автоматично. Натисніть на це повідомлення, щоб отримати права на дозвіл.</string>
<string name="protocol">Протокол</string>
<string name="enabled_connection_entry">Ввімкнено</string>
+ <string name="abi_mismatch">Preferred native ABI precedence of this device (%1$s) and ABI reported by native libraries (%2$s) mismatch</string>
<string name="permission_revoked">Дозвіл VPN відкликано ОС (наприклад, інша програма VPN запущена), зупинка VPN</string>
<string name="pushpeerinfo">Отримати інформацію про піра</string>
<string name="pushpeerinfosummary">Надіслати додаткову інформацію на сервер, наприклад версію SSL та Android</string>
@@ -404,14 +408,55 @@
<string name="samsung_broken">Навіть не зважаючи на те, що телефони Samsung є одними з найбільш популярних телефонів на Android, прошивка від Samsung також є однією з найбільш дирявими прошивками на Android. Ці помилки не обмежуються лише VPN операціями на цих пристроях, але багато з них можна уникнути. Дальше деякі з цих помилок описані. \n\nDNS не працює, якщо сервер DNS в межах віртуальної приватної мережі. \n\nНа багатьох пристроях Samsung 5.x функція дозволених/заборонених програм не працює. \n\nНа Samsung 6.x VPN не працює, якщо додаток VPN не звільняється від PowerSave функцій.</string>
<string name="samsung_broken_title">телефони Samsung</string>
<string name="novpn_selected">VPN не вибрано.</string>
+ <string name="defaultvpn">VPN за промовчанням</string>
+ <string name="defaultvpnsummary">VPN, що буде використовуватися за промовчанням в тих місцях, де потрібно. А саме: при завантаженні, для «Постійного VPN» та для перемикача в «Швидких налаштуваннях».</string>
+ <string name="vpnselected">Наразі вибраний VPN: \'%s\'</string>
<string name="reconnect">Перепідключитись</string>
+ <string name="qs_title">Переключити VPN</string>
<string name="qs_connect">Підключення до %s</string>
<string name="qs_disconnect">Відключення %s</string>
+ <string name="connectretrymaxmessage">Введіть максимальний час між спробами з\'єднання. OpenVPN поступово підвищить час очікування після невдалої спроби з\'єднання до цього значення. Значення за промовчанням до 300 с.</string>
<string name="connectretrymaxtitle">Максимальний час між спробами підключення</string>
<string name="state_waitconnectretry">Очікування %ss секунд між спробами підключення</string>
+ <string name="nought_alwayson_warning"><![CDATA[Якщо у вас не виникло діалогове вікно підтвердження VPN, це значить, що у вас ввімкнено \"Постійний VPN\" для іншої програми. У такому випадку лише цьому додатку дозволено підключатися до VPN. Перевірте розділ Налаштування-> Мережі ще .. -> VPN]]></string>
<string name="management_socket_closed">Підключення до OpenVPN закрито (%s)</string>
<string name="change_sorting">Змінити сортування</string>
<string name="sort">Cортувати</string>
<string name="sorted_lru">Профілі відсортовано за часом використовувався</string>
<string name="sorted_az">Профілі відсортовані за назвою</string>
+ <string name="deprecated_tls_remote">Налаштування містять параметр tls-remote, який був заборонений в версії 2.3 і остаточно видалений в 2.4</string>
+ <string name="auth_failed_behaviour">Поведінка при AUTH_FAILED</string>
+ <string name="graph">Графік</string>
+ <string name="use_logarithmic_scale">Використовувати логарифмічну шкалу</string>
+ <string name="notenoughdata">Недостатньо даних</string>
+ <string name="avghour">В середньому за годину</string>
+ <string name="avgmin">В середньому за хвилину</string>
+ <string name="last5minutes">Останні 5 хвилин</string>
+ <string name="data_in">Вхідний</string>
+ <string name="data_out">Вихідний</string>
+ <string name="bits_per_second">%.0f біт/с</string>
+ <string name="kbits_per_second">%.1f Кбіт/с</string>
+ <string name="mbits_per_second">%.1f Мбіт/с</string>
+ <string name="gbits_per_second">%.1f Гбіт/с</string>
+ <string name="weakmd">&lt;p&gt; Починаючи з OpenSSL версії 1.1, OpenSSL відкидає слабкі підписи в таких сертифікатах, як MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5, підписи повністю небезпечні і більше не повинні використовуватись.&lt;/b&gt; Колізії MD5 можуть бути створені в &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt; через декілька годин з мінімальними затратами.&lt;/a&gt;. Ви повинні якнайшвидше оновити сертифікати VPN. &lt;/p&gt;&lt;p&gt;Нажаль, старі дистрибутиви easy-rsa включали опцію конфігурації «default_md md5». Якщо ви використовуєте стару версію easy-rsa, оновітб її до &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;latest версії&lt;/a&gt;) або змініть md5 на sha256 та відновіть свої сертификати.&lt;/p&gt;&lt;p&gt;Якщо ви дійсно хочете використовувати старі та пошкоджені сертификати, використовуйте налаштовуваний параметр конфігурації tls-cipher «DEFAULT: @SECLEVEL = 0 \"в розширеній конфігурації або в якості додаткового рядку в вашій імпортованій конфігурації&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f Б</string>
+ <string name="volume_kbyte">%.1f КБ</string>
+ <string name="volume_mbyte">%.1f МБ</string>
+ <string name="volume_gbyte">%.1f ГБ</string>
+ <string name="channel_name_background">Статистика з\'єднання</string>
+ <string name="channel_description_background">Поточна статистика встановленого з\'єднання OpenVPN</string>
+ <string name="channel_name_status">Зміна статусу з\'єднання</string>
+ <string name="channel_description_status">Зміни статусу з\'єднання OpenVPN (підключення, автентифікація,...)</string>
+ <string name="weakmd_title">Слабкі (MD5) хеші в підписі сертифікату (SSL_CTX_use_certificate md надто слабкий)</string>
+ <string name="title_activity_open_sslspeed">Тест швидкості OpenSSL</string>
+ <string name="openssl_cipher_name">Назви шифрів OpenSSL</string>
+ <string name="osslspeedtest">Тест швидкості OpenSSL Crypto</string>
+ <string name="openssl_error">OpenSSL повернув помилку</string>
+ <string name="running_test">Запуск тесту&#8230;</string>
+ <string name="test_algoirhtms">Тестування вибраних алгоритмів</string>
+ <string name="all_app_prompt">Зовнішній застосунок намагається контролювати %s. Застосунок, що запитує про доступ, не може бути визначений. Дозвіл цьому застосунку надає доступ всім додаткам.</string>
+ <string name="openvpn3_nostatickeys">Реалізація OpenVPN 3 C ++ не підтримує статичні ключи. Перейдіть в OpenVPN 2.x під загальними налаштуваннями.</string>
+ <string name="openvpn3_pkcs12">Використання файлів PKCS12 напряму за допомогою OpenVPN 3 C ++ не підтримується. Імпортуйте файли pkcs12 в сховище ключів Android або замініть OpenVPN 2.x на загальні налаштування.</string>
</resources>
diff --git a/app/src/main/res/values-v21/refs.xml b/app/src/main/res/values-v21/refs.xml
index 1af5ba02..ae9be13f 100644
--- a/app/src/main/res/values-v21/refs.xml
+++ b/app/src/main/res/values-v21/refs.xml
@@ -12,16 +12,16 @@
<drawable name="ic_menu_save">@drawable/ic_check_white_24dp</drawable>
<drawable name="ic_menu_view">@drawable/ic_filter_list_white_24dp</drawable>
<drawable name="ic_menu_delete">@drawable/ic_delete_white_24dp</drawable>
-<!-- <drawable name="ic_menu_copy">@drawable/ic_content_copy_white_24dp</drawable> -->
+ <drawable name="ic_menu_copy">@drawable/ic_content_copy_white_24dp</drawable>
<drawable name="ic_menu_delete_grey">@drawable/ic_delete_grey600_24dp</drawable>
<drawable name="ic_menu_edit">@drawable/ic_edit_white_24dp</drawable>
-<!-- <drawable name="ic_menu_import">@drawable/ic_archive_white_24dp</drawable> -->
+ <drawable name="ic_menu_import">@drawable/ic_archive_white_24dp</drawable>
<drawable name="vpn_item_edit">@drawable/ic_edit_grey600_24dp</drawable>
- <!--<drawable name="ic_menu_add">@drawable/ic_add_circle_outline_white_24dp</drawable>-->
- <!-- <drawable name="ic_dialog_alert">@drawable/ic_warning_black_36dp</drawable>
+ <drawable name="ic_menu_add">@drawable/ic_add_circle_outline_white_24dp</drawable>
+ <drawable name="ic_dialog_alert">@drawable/ic_warning_black_36dp</drawable>
<drawable name="ic_menu_add_grey">@drawable/ic_add_circle_outline_grey600_24dp</drawable>
<drawable name="ic_menu_import_grey">@drawable/ic_archive_grey600_24dp</drawable>
<drawable name="ic_receipt">@drawable/ic_receipt_white_24dp</drawable>
- <drawable name="ic_sort">@drawable/ic_sort_white_24dp</drawable> -->
+ <drawable name="ic_sort">@drawable/ic_sort_white_24dp</drawable>
</resources> \ No newline at end of file
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index b928a79b..9f36e474 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -31,4 +31,10 @@
<item name="android:backgroundTint">@color/colorPrimary</item>
</style>
+ <style name="BitmaskButtonBlack" parent="android:Widget.Button">
+ <item name="android:textAllCaps">true</item>
+ <item name="android:backgroundTint">@color/black800</item>
+ <item name="android:textColor">@color/white</item>
+ </style>
+
</resources>
diff --git a/app/src/main/res/values-vi/strings-icsopenvpn.xml b/app/src/main/res/values-vi/strings-icsopenvpn.xml
index 9ca9bc4c..f38aaf3e 100755
--- a/app/src/main/res/values-vi/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-vi/strings-icsopenvpn.xml
@@ -418,5 +418,28 @@
<string name="connectretrymaxmessage">Hãy nhập tối đa thời gian giữa các kết nối lại. OpenVPN sẽ dần dần tăng thời gian chờ đợi của mình sau khi cố kết nối không thành công đến giá trị này. Mặc định là hệ thống 300.</string>
<string name="connectretrymaxtitle">Thời gian tối đa giữa kết nối lại</string>
<string name="state_waitconnectretry">Vui lòng chờ %ss giây để kết nối</string>
+ <string name="nought_alwayson_warning"><![CDATA[Việt nam]]></string>
+ <string name="management_socket_closed">Kết nối với OpenVPN đã đóng (%s)</string>
+ <string name="change_sorting">Thay đổi sắp xếp</string>
<string name="sort">Sắp xếp</string>
+ <string name="sorted_lru">Hồ sơ đã sắp xếp theo lần sử dụng gần đây nhất</string>
+ <string name="sorted_az">Hồ sơ sắp xếp theo tên</string>
+ <string name="deprecated_tls_remote">Cấu hình dùng tùy chọn tls-remote đã bị hạn chế trong 2.3 và cuối cùng bị gỡ bỏ trong 2.4</string>
+ <string name="auth_failed_behaviour">Hành vi trong XÁC THỰC_LỖI</string>
+ <string name="graph">Biểu đồ</string>
+ <string name="use_logarithmic_scale">Dùng thang đo logarit</string>
+ <string name="notenoughdata">Không đủ dữ liệu</string>
+ <string name="avghour">Trung bình mỗi giờ</string>
+ <string name="avgmin">Trung bình mỗi phút</string>
+ <string name="last5minutes">5 phút gần nhất</string>
+ <string name="data_in">Vào</string>
+ <string name="data_out">Ra</string>
+ <string name="bits_per_second">%.0f bit/giây</string>
+ <string name="kbits_per_second">%.1f kbit/giây</string>
+ <string name="mbits_per_second">%.1f Mbit/giây</string>
+ <string name="gbits_per_second">%.1f Gbit/giây</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-zh-rCN/plurals-icsopenvpn.xml b/app/src/main/res/values-zh-rCN/plurals-icsopenvpn.xml
index 70489fbc..8aa121e6 100755
--- a/app/src/main/res/values-zh-rCN/plurals-icsopenvpn.xml
+++ b/app/src/main/res/values-zh-rCN/plurals-icsopenvpn.xml
@@ -1,3 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="other">剩下 %d 个月</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="other">剩下 %d 天</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="other">剩下 %d 小时</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="other">剩下 %d 分钟</item>
+ </plurals>
+</resources>
diff --git a/app/src/main/res/values-zh-rCN/strings-icsopenvpn.xml b/app/src/main/res/values-zh-rCN/strings-icsopenvpn.xml
index d37b9b57..061a9827 100755
--- a/app/src/main/res/values-zh-rCN/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-zh-rCN/strings-icsopenvpn.xml
@@ -6,14 +6,14 @@
-->
<resources>
- <string name="address">服务器地址</string>
- <string name="port">Server Port:</string>
+ <string name="address">服务器地址:</string>
+ <string name="port">服务器端口:</string>
<string name="location">位置</string>
<string name="cant_read_folder">无法读取目录</string>
<string name="select">选择</string>
<string name="cancel">取消</string>
- <string name="no_data">未收到数据</string>
- <string name="useLZO">启用 LZO 压缩算法</string>
+ <string name="no_data">没有数据</string>
+ <string name="useLZO">LZO 压缩算法</string>
<string name="client_no_certificate">没有证书</string>
<string name="client_certificate_title">客户端证书</string>
<string name="client_key_title">客户端证书密钥</string>
@@ -29,106 +29,200 @@
<string name="file_select">请选择&#8230;</string>
<string name="file_nothing_selected">你必须选择一个文件</string>
<string name="useTLSAuth">使用 TLS 认证</string>
+ <string name="tls_direction">TLS 位置</string>
<string name="ipv6_dialog_tile">输入 CIDR 格式的 IPv6 地址/网络掩码(例如 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">输入 CIDR 格式的 IPv4 地址/网络掩码(例如 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 地址</string>
<string name="ipv6_address">IPv6 地址</string>
- <string name="custom_option_warning">请谨慎输入 OpenVPN 的自定义选项。此外请注意许多与 tun 模块有关的 OpenVPN 设置由于系统 VPN 功能的设计而不能得到支持。如果您觉得缺少一个很重要的选项,请与作者联系。</string>
+ <string name="custom_option_warning">输入 OpenVPN 的自定义选项。请谨慎使用此功能。此外请注意许多与 tun 模块有关的 OpenVPN 设置由于系统 VPN 功能的设计而不能得到支持。如果您觉得缺少一个很重要的选项,请与作者联系。</string>
<string name="auth_username">用户名</string>
<string name="auth_pwquery">密码</string>
- <string name="static_keys_info">静态配置中 TLS 身份验证密钥将被用作静态密钥</string>
+ <string name="static_keys_info">在静态配置中 TLS 身份验证密钥将被用作静态密钥</string>
<string name="configure_the_vpn">配置 VPN</string>
<string name="menu_add_profile">添加配置文件</string>
<string name="add_profile_name_prompt">输入新配置文件的名字</string>
- <string name="duplicate_profile_name">请输入一个唯一的配置文件名称</string>
+ <string name="duplicate_profile_name">请输入一个独一无二的配置文件名称</string>
<string name="profilename">配置文件名称</string>
<string name="no_keystore_cert_selected">您必须选择一个用户证书</string>
+ <string name="no_ca_cert_selected">你必须选择一个CA证书</string>
+ <string name="no_error_found">没有找到错误</string>
+ <string name="config_error_found">配置错误</string>
<string name="ipv4_format_error">无法解析 IPv4 地址</string>
<string name="custom_route_format_error">无法解析自定义路由</string>
<string name="pw_query_hint">(根据需求留空)</string>
<string name="vpn_shortcut">OpenVPN 主屏幕快捷方式</string>
+ <string name="vpn_launch_title">正在连接到 VPN %s</string>
+ <string name="shortcut_profile_notfound">未找到快捷方式指定的配置文件</string>
+ <string name="random_host_prefix">随机主机前缀</string>
+ <string name="random_host_summary">在主机名前添加6个随机字符</string>
+ <string name="custom_config_title">启用自定义选项</string>
+ <string name="custom_config_summary">(此处)指定自定义选项。请谨慎使用!</string>
+ <string name="route_rejected">路由被安卓系统拒绝</string>
+ <string name="cancel_connection">断开</string>
<string name="cancel_connection_long">断开VPN</string>
- <string name="title_cancel">确认取消</string>
+ <string name="clear_log">清除日志</string>
+ <string name="title_cancel">确认取消?</string>
+ <string name="cancel_connection_query">断开连接的VPN/取消连接尝试?</string>
+ <string name="remove_vpn">删除VPN</string>
<string name="check_remote_tlscert">检查服务器是否使用 TLS 服务器端扩展 (--remote-cert-tlsserver server)</string>
<string name="check_remote_tlscert_title">需要 TLS 服务器证书</string>
<string name="remote_tlscn_check_summary">检查远程服务器证书的 DN 属性</string>
<string name="remote_tlscn_check_title">证书主机名检查</string>
<string name="enter_tlscn_dialog">勾选此项将验证远程证书的 DN 属性(例:C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\n输入完整的 DN 或者 RDN 以便进行验证。\n\nRDN前缀 \"Server\" 可以匹配 \"Server-1\" 以及 \"SERVER-2\"\n\n若留空则将仅验证 RDN 而不验证主机名。\n\n有关更多信息请查看 OpenVPN 2.3.1+ 参考手册的 --verify-x509-name 小节</string>
- <string name="enter_tlscn_title">远程证书主题</string>
+ <string name="enter_tlscn_title">远程证书账户</string>
+ <string name="tls_key_auth">启用TLS密钥验证</string>
+ <string name="tls_auth_file">TLS认证文件</string>
<string name="pull_on_summary">从服务器请求 IP 地址、 路由规则和计时选项。</string>
- <string name="pull_off_summary">没有从服务器请求信息。设置需要在下方被指定。</string>
+ <string name="pull_off_summary">将不会从服务器请求信息。需要手动在下方配置设置。</string>
<string name="use_pull">Pull 设置</string>
- <string name="secondary_dns_message">无法使用主 DNS 服务器时会使用辅助 DNS 服务器。</string>
+ <string name="dns">DNS</string>
+ <string name="override_dns">由服务器下发DNS设置</string>
+ <string name="dns_override_summary">使用您的DNS服务器</string>
+ <string name="searchdomain">搜索域名</string>
+ <string name="dns1_summary">要使用的DNS服务器。</string>
+ <string name="dns_server">主DNS服务器</string>
+ <string name="secondary_dns_message">如果无法到达正常的DNS服务器,则使用辅助DNS服务器。</string>
+ <string name="backup_dns">备用DNS服务器</string>
+ <string name="ignored_pushed_routes">忽略推送的路由</string>
<string name="ignore_routes_summary">不使用服务器推送的路由</string>
- <string name="default_route_summary">重定向所有流量到VPN</string>
+ <string name="default_route_summary">通过VPN重定向所有流量</string>
+ <string name="use_default_title">使用默认路由</string>
<string name="custom_route_message">输入自定义路由。目标地址只能用CIDR格式。\"10.0.0.0/8 2002::/16\" 将会通过VPN重定向到10.0.0.0/8 和 2002::/16 网络。</string>
- <string name="custom_route_message_excluded">不应该通过VPN路由的路线。使用自定义路由相同的语法。</string>
- <string name="custom_routes_title_excluded">排除的路线</string>
+ <string name="custom_route_message_excluded">设置要不通过VPN路由的路线。使用与自定义路由相同的语法。</string>
+ <string name="custom_routes_title">自定义路由</string>
+ <string name="custom_routes_title_excluded">排除的网络</string>
+ <string name="log_verbosity_level">日志记录级别</string>
+ <string name="float_summary">允许来自任何IP的认证数据包</string>
<string name="float_title">允许不固定服务器</string>
+ <string name="custom_options_title">自定义选项</string>
+ <string name="edit_vpn">编辑VPN设置</string>
<string name="remove_vpn_query">移除 VPN 配置文件 \'%s\' 吗?</string>
- <string name="tun_error_helpful">在某些自定义 ICS 系统版本上,/dev/tun 的权限可能会有错误,或者根本就没有该文件。CM9 系统用户请尝试通过本程序设置中的修复选项进行权限修复。</string>
+ <string name="tun_error_helpful">在某些自定义 ICS 系统版本上,/dev/tun 的权限可能会有错误,或者根本就没有tun模块。CM9 系统用户请尝试本程序设置中的修复权限选项。</string>
<string name="tun_open_error">打开 tun 接口失败</string>
<string name="error">错误:</string>
+ <string name="clear">清除</string>
<string name="last_openvpn_tun_config">正在打开 tun 设备:</string>
+ <string name="local_ip_info">本地IPv4:%1$s/%2$d IPv6:%3$s MTU:%4$d</string>
<string name="dns_server_info">DNS 服务器: %1$s, 域名: %2$s</string>
- <string name="routes_info_incl">路线: %1$s %2$s</string>
+ <string name="routes_info_incl">路由: %1$s %2$s</string>
<string name="routes_info_excl">排除的路由: %1$s %2$s</string>
<string name="routes_debug">VpnService安装路线 : %1$s %2$s</string>
<string name="ip_not_cidr">已获得接口信息 %1$s 以及 %2$s,将第二个地址作为远程地址。使用 /32 作为本地掩码。OpenVPN 给出的模式是 \"%3$s\"。</string>
<string name="route_not_cidr">无法将 %1$s 和 %2$s 作为 CIDR 形式的路由,将使用 /32 的子网掩码。</string>
<string name="route_not_netip">纠正路由 %1$s/%2$s 为 %3$s/%2$s</string>
<string name="keychain_access">不能访问 Android 密钥链证书。这可能是由于固件升级或通过还原备份的应用程序/软件设置造成的。请编辑 VPN 配置文件并在基本设置中重新选择证书以重新创建证书访问权限。</string>
+ <string name="version_info">%1$s %2$s</string>
+ <string name="send_logfile">发送日志文件</string>
+ <string name="send">发送</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN日志文件</string>
+ <string name="copied_entry">将日志复制到剪贴板</string>
+ <string name="tap_mode">Tap模式</string>
<string name="faq_tap_mode">Tap 模式在未 root 的机器上不可用。因此本程序无法提供 tap 模块支持</string>
<string name="tap_faq2">还来? 您在开玩笑嘛? tap 连接模式是不支持的,不要再发邮件问这些问题了。</string>
<string name="tap_faq3">这已经是第三次有人问这个问题了。好吧,虽然确实可以在 TAP 设备上写一个 TAP 模拟器,给发送出去的数据包添加第二层网络头,并去掉收到的数据包中的第二层网络头,但是这个 TAP 模拟器可能还需要实现 ARP 甚至 DHCP 客户端功能。我目前不知道有谁在做这方面的工作。如果你想开展这方面的编码工作的话,请联系我。</string>
+ <string name="faq">常见问题</string>
+ <string name="copying_log_entries">正在复制日志</string>
<string name="faq_copying">若要复制单条日志请在相应条目上轻按即可。若要复制/发送全部日志请使用发送日志功能。如果该功能在界面中没有显示,请使用设备原生的菜单按钮。</string>
- <string name="faq_howto_shortcut">你可以在桌面上放置一个启动 OpenVPN 的图标。如果你的桌面程序支持,你可以在桌面上放置 OpenVPN 的启动图标,或者是 OpenVPN 的桌面挂件</string>
- <string name="no_vpn_support_image">很遗憾,您目前的系统不支持 VPN 服务接口</string>
+ <string name="faq_shortcut">快捷方式启动</string>
+ <string name="faq_howto_shortcut">你可以在桌面上放置一个启动 OpenVPN 的图标。如果你的桌面程序支持,你可以在桌面上放置 OpenVPN 的启动图标,或者是 OpenVPN 的桌面挂小部件。</string>
+ <string name="no_vpn_support_image">很遗憾,您目前的系统不支持 VPN 服务接口 :(</string>
+ <string name="encryption">加密</string>
+ <string name="cipher_dialog_title">输入加密方式</string>
<string name="chipher_dialog_message">输入 OpenVPN 所使用的加密密码算法。留空以使用默认算法。</string>
<string name="auth_dialog_message">输入 OpenVPN 使用的认证摘要。留空则使用默认的摘要。</string>
- <string name="inline_file_tab">内联文件</string>
- <string name="inline_file_data">[[内联文件数据]]</string>
+ <string name="settings_auth">认证/加密</string>
+ <string name="file_explorer_tab">文件浏览器</string>
+ <string name="inline_file_tab">内置文件</string>
+ <string name="error_importing_file">导入文件时出错</string>
+ <string name="import_error_message">无法从文件系统导入文件</string>
+ <string name="inline_file_data">[[内置的文件数据]]</string>
<string name="opentun_no_ipaddr">无 IP 信息,拒绝打开 tun 设备</string>
+ <string name="menu_import">从ovpn文件导入配置文件</string>
+ <string name="menu_import_short">导入</string>
+ <string name="import_content_resolve_error">无法读取要导入的配置文件</string>
+ <string name="error_reading_config_file">读取配置文件时出错</string>
+ <string name="add_profile">添加配置文件</string>
+ <string name="import_could_not_open">在导入的配置文件中找不到文件%1$s</string>
+ <string name="importing_config">从源代码%1$s导入配置文件</string>
<string name="import_warning_custom_options">您的配置文件中有几个配置项无法在配置菜单中查看和修改,这些配置项将会当成自定义配置选项。下面是这些自定义的配置选项:</string>
+ <string name="import_done">配置文件读取完毕。</string>
+ <string name="nobind_summary">不要绑定到本地地址和端口</string>
<string name="no_bind">无本地绑定</string>
+ <string name="import_configuration_file">导入配置文件</string>
+ <string name="faq_security_title">安全注意事项</string>
<string name="faq_security">“OpenVPN 是非常注重安全的,所以在此提供一些安全方面的建议。所有保存在存储卡上的数据都是不安全的,任何应用都可以读取存储卡上的文件,即使这个应用没有‘写入存储卡’的权限也是如此。应用自身的数据只能被应用自己读取。在选择 CA 证书、证书文件或者密钥文件的时候请使用导入功能,这样这些数据就会保存在 OpenVPN 自身的数据文件中,保证不会被其他的应用恶意读取。当然导入证书之后记得要把证书从存储卡上删除掉。不过,虽然这些数据不能被其他应用读取,但是这些数据是明文保存的,如果你的系统是 rooted 的,那么这些数据将能够被任何拥有 root 权限的应用轻松地读取。保存在 OpenVPN 中的密码也是以明文保存的,如果设备被 rooted 了,这些密码也有可能被其他应用恶意读取。强烈建议使用 pkcs12 证书并将证书导入到 Android 自己的证书管理系统里。”</string>
+ <string name="import_vpn">导入</string>
+ <string name="broken_image_cert_title">显示证书选择错误</string>
<string name="broken_image_cert">尝试显示 Android 4.0 + 证书选择对话框时出现异常。Android 4.0 以上的系统不可能出现该问题,因为这是标准的系统功能。可能您当前 ROM 中的证书存储已经损坏。</string>
+ <string name="ipv4">IPv4</string>
+ <string name="ipv6">IPv6</string>
+ <string name="speed_waiting">正在等待状态消息...</string>
+ <string name="converted_profile">导入配置文件</string>
+ <string name="converted_profile_i">导入配置文件%d</string>
<string name="broken_images">图像已损坏</string>
<string name="broken_images_faq">&lt;p&gt;HTC官方固件可能存在异常的路由问题并会导致数据流不通过隧道传输(详见BUG追踪&lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;Issue 18&lt;/a&gt;)。&lt;/p&gt;&lt;p&gt;据报导,旧版的SONY Xperia Arc S和Xperia Ray的官方固件完全不包含VPNService(详见BUG追踪&lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;Issue 29&lt;/a&gt;)。&lt;/p&gt;&lt;p&gt;在自制固件中,tun
模块可能会有缺失,或是未被设置正确的权限。部分CM9固件需要启用“特定设备HACKS”项下的“修复/dev/tun的权限”的选项。&lt;/p&gt;&lt;p&gt;最重要的是:若您的设备的固件存在问题,请直接向您的设备供应商反馈。越多人向供应商反映问题,问题越有可能得到解决。&lt;/p&gt;</string>
+ <string name="pkcs12_file_encryption_key">PKCS12 文件加密密钥</string>
+ <string name="private_key_password">私钥密码</string>
+ <string name="password">密码</string>
+ <string name="file_icon">文件图标</string>
+ <string name="tls_authentication">TLS认证/加密</string>
+ <string name="generated_config">生成的配置</string>
<string name="generalsettings">设置</string>
<string name="owner_fix_summary">尝试设定 /dev/tun 的属主为 system。一些 CM9 ROM 需要它以使 VPNService API 工作。本操作需要 root 权限。</string>
<string name="owner_fix">修复 /dev/tun 的权限</string>
+ <string name="generated_config_summary">显示生成的OpenVPN配置文件</string>
+ <string name="edit_profile_title">正在编辑“ %s ”</string>
+ <string name="building_configration">生成配置中...</string>
<string name="netchange_summary">启用该选项以在网络变化(例如在蜂窝数据和 WiFi 之间切换)时强制重新连接</string>
+ <string name="netchange">当网络更改时重新连接</string>
+ <string name="netstatus">网络状态:%s</string>
<string name="extracahint">Android 密钥库通常会自带 CA 证书。如果您获取的证书发生验证错误,请单独指定一个证书。</string>
+ <string name="select_file">选择</string>
<string name="keychain_nocacert">在 Android 密钥库中未找到任何 CA 证书。可能验证失败。</string>
<string name="show_log_summary">连接时显示日志窗口。日志窗口可始终从通知栏访问。</string>
+ <string name="show_log_window">显示日志窗口</string>
<string name="mobile_info">%10$s %9$s running on %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">与 Android 密钥库 %1$s 签名时出错: %2$s</string>
<string name="faq_system_dialogs">VPN 连接警告会告诉你有程序正要拦截所有的网络流量,这是为了确保 VPN 服务的 API 不被恶意应用滥用。\nVPN 连接通知(通知栏上的钥匙图标)是 Android 系统内建的,如果当前有 VPN 连接,Android 系统就会自动显示这个通知图标。一些系统上还会在 VPN 连接建立的时候发出提示音。Android 这么做的原因是为了保护你不受恶意应用的欺骗。</string>
<string name="faq_system_dialogs_title">连接警告和通知声音</string>
<string name="translationby">中文翻译:Christopher Meng
&lt;trans@cicku.me&gt;</string>
+ <string name="ipdns">IP和DNS</string>
+ <string name="basic">基本设置</string>
+ <string name="routing">路由</string>
+ <string name="obscure">模糊OpenVPN设置。通常不需要。</string>
+ <string name="advanced">高级</string>
<string name="export_config_title">ICS Openvpn 配置</string>
<string name="warn_no_dns">没有使用 DNS 服务器,无法解析域名,请考虑设置一个 DNS 服务器。请注意,即使你没有设置 DNS 服务器,你为移动网络以及 Wi-Fi 设置的代理服务器配置也是有效的。</string>
<string name="dns_add_error">无法添加 DNS 服务器 \"%1$s\",%2$s 拒绝了您的操作。</string>
<string name="ip_add_error">无法配置 IP 地址 %1$s,被系统拒绝:%2$s</string>
<string name="faq_howto">&lt;p&gt;获取你的 VPN 配置文件,可以是在电脑上正在使用的 OpenVPN 客户端配置文件,也可以向你的 VPN 服务商索取配置文件。&lt;/p&gt;&lt;p&gt;如果配置文件只有一个,可以把配置文件发到你自己的邮箱然后从手机上下载。如果配置文件有很多个,可以将它们复制到存储卡内。&lt;/p&gt;&lt;p&gt;从邮件中下载附件,或者在 VPN 列表中点击文件夹图标来导入配置文件。&lt;/p&gt;&lt;p&gt;如果提示找不到文件,那就将缺失的文件复制到存储卡内。&lt;/p&gt;&lt;p&gt;点击保存,将配置文件保存到你的 VPN 列表中。&lt;/p&gt;&lt;p&gt;在 VPN 列表中点击 VPN 的连接的名字,就可以连接到 VPN 了。&lt;/p&gt;&lt;p&gt;如果发生错误,可以看日志窗口中的日志,然后设法解决问题。&lt;/p&gt; </string>
+ <string name="faq_howto_title">快速开始</string>
+ <string name="setting_loadtun_summary">尝试在连接之前加载 tun.ko 内核模块。需要已root的设备。</string>
+ <string name="setting_loadtun">加载tun模块</string>
+ <string name="importpkcs12fromconfig">将PKCS12从配置导入到Android Keystore</string>
+ <string name="getproxy_error">获取代理设置时出错:%s</string>
<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="onbootrestartsummary">如果在系统启动时OpenVPN处于活动状态,那么它会连接指定的VPN。在Android 5.0上使用这个选项前,请阅读连接警告的常见问题。</string>
- <string name="onbootrestart">启动时连接</string>
- <string name="restart_vpn_after_change">配置的变更将在重启 VPN 后生效,是否立即重启?</string>
+ <string name="onbootrestart">在系统启动时自动连接</string>
+ <string name="ignore">忽略</string>
+ <string name="restart">重新启动</string>
+ <string name="restart_vpn_after_change">配置文件的变更将在重新连接 VPN 后生效,是否立即(重新)连接?</string>
+ <string name="configuration_changed">配置已更改</string>
<string name="log_no_last_vpn">无法判断最后一次连接使用的是哪个配置文件,所以无法编辑配置文件</string>
<string name="faq_duplicate_notification_title">重复的通知</string>
<string name="faq_duplicate_notification">当 Android 系统的内存(RAM)即将耗尽的时候,不再需要的应用和服务将被关闭以腾出内存空间,这项机制也会影响到 VPN 进程。为了保证 OpenVPN 及其连接不被关闭,OpenVPN 服务会以较高的优先级运行,而为了以较高的优先级运行,OpenVPN 必须在状态栏显示一个图标。正如前面的问题中说过的,系统的“钥匙”图标是系统内建的,仅仅显示这个“钥匙”图标并不能让 OpenVPN 以更高的优先级运行。</string>
- <string name="no_vpn_profiles_defined">没有定义 VPN 配置文件</string>
+ <string name="no_vpn_profiles_defined">VPN 配置文件未定义</string>
<string name="add_new_vpn_hint">点击 &lt;img src=\"ic_menu_add\"/&gt; 图标添加新的 VPN 配置</string>
<string name="vpn_import_hint">使用 &lt;img src=\"ic_menu_archive\"/&gt; 图标导入存储卡中已有的配置文件(.ovpn 或 .conf)。</string>
- <string name="faq_hint">请确保阅读常见问题解答。这是一个快速向导。</string>
+ <string name="faq_hint">确保已经阅读FAQ部分。这里有一个快速向导。</string>
<string name="faq_routing_title">路由/接口配置</string>
<string name="faq_routing">的路由和接口配置不通过传统的ifconfig /路由的命令而将用VPNService API来完成。这导致了比在其它操作系统不同的路由配置。 \ n此VPN隧道的配置包括IP地址,并应被指定到该接口的网络。特别是,没有同行伙伴地址或网关地址是必要的或需要。特殊的路由到达VPN服务器不需要任何(例如,当使用重定向网关添加)。导入配置时,应用程序会因此忽略这些设置。该应用程序可确保与连接到服务器没有通过VPN隧道路由的VPNService API。\ n此VPNService API不允许指定的网络,不应该通过VPN路由。作为一种变通方法的应用程序会检测网络,不应该被路由到隧道(如路由XXXX YYYY net_gateway),并计算一组路由排除这种路线效仿其他平台的行为。日志窗口显示VPNService的在建立连接的配置\ nBehind的场景:安卓4.4+确实使用策略路由。使用route / ifconfig命令不会显示已安装的路径。而使用IP规则,iptables的-t轧-L</string>
+ <string name="persisttun_summary">当OpenVPN正在重新连接时,不要回退到没有VPN连接的状态。</string>
+ <string name="persistent_tun_title">保持tun连接</string>
<string name="openvpn_log">OpenVPN 日志</string>
<string name="import_config">导入 OpenVPN 配置文件</string>
<string name="battery_consumption_title">电池消耗</string>
@@ -160,13 +254,14 @@
<string name="state_tcp_connect">连接中(TCP)</string>
<string name="state_auth_failed">验证失败</string>
<string name="state_nonetwork">等待可用网络</string>
+ <string name="statusline_bytecount">↓%2$s %1$s-↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">未连接</string>
<string name="start_vpn_title">正在连接 VPN %s</string>
<string name="start_vpn_ticker">正在连接 VPN %s</string>
<string name="jelly_keystore_alphanumeric_bug">某些版本的 Android 4.1 存在问题,如果密钥库证书的名称包含非字母和数字字符(如空格、 下划线或短划线)。请尝试重新导入不包含特殊字符的证书</string>
<string name="encryption_cipher">加密算法(cipher)</string>
<string name="packet_auth">数据包验证</string>
- <string name="auth_dialog_title">数据包验证方式</string>
+ <string name="auth_dialog_title">输入数据包验证方式</string>
<string name="built_by">由 %s 构建</string>
<string name="debug_build">调试版本</string>
<string name="official_build">正式版本</string>
@@ -178,18 +273,18 @@
<string name="remotetlsnote">您导入的配置包含不再使用的 tls-remote 选项,该选项使用了不同的 DN 格式。</string>
<string name="rdn">RDN (通用名称)</string>
<string name="rdn_prefix">RDN 前缀</string>
- <string name="tls_remote_deprecated">tls-remote(不再使用)</string>
+ <string name="tls_remote_deprecated">tls-remote(不再被使用)</string>
<string name="help_translate">你可以通过访问 http://crowdin.net/project/ics-openvpn/invite 来帮助翻译</string>
<string name="prompt">%1$s 正在试图控制 %2$s</string>
<string name="remote_warning">如果继续,你将允许该应用完全控制 OpenVPN for Android,并拦截所有网络流量。<b>除非你信任该应用,否则请不要继续。</b>如果该应用是恶意应用,你需要自行承担所有的后果。</string>
<string name="remote_trust">我信任此应用。</string>
<string name="no_external_app_allowed">没有允许使用外部 API 的应用</string>
- <string name="allowed_apps">已授权的应用:%s</string>
+ <string name="allowed_apps">经 VPN 代理的应用程序: %s</string>
<string name="clearappsdialog">清除已授权的应用列表?\n当前已授权的应用:\n\n%s</string>
<string name="screenoff_summary">当屏幕关闭且 60 秒内传输数据量小于 64kB 时暂停 VPN。当启用“持久性 Tun”选项时,暂停 VPN 将使设备处于无网络连接的状态。未启用“持久性 Tun”时,设备将没有 VPN 连接保护。</string>
<string name="screenoff_title">屏幕关闭后暂停 VPN 连接</string>
<string name="screenoff_pause">屏幕关闭时暂停连接:若在%2$s秒内少于%1$s</string>
- <string name="screen_nopersistenttun">警告:该 VPN 没有启用“持久化 tun 设备”,当屏幕关闭时,网络流量将不走 VPN 隧道,而是走 Wi-Fi 或者移动网络。</string>
+ <string name="screen_nopersistenttun">警告:该 VPN 没有启用“保持tun连接”这一选项,当屏幕关闭时,网络流量将不通过 VPN 隧道,而是通过 Wi-Fi 或者移动网络。</string>
<string name="save_password">保存密码</string>
<string name="pauseVPN">暂停 VPN</string>
<string name="resumevpn">继续 VPN</string>
@@ -202,9 +297,9 @@
<string name="allow_vpn_changes">允许更改 VPN 配置</string>
<string name="hwkeychain">硬件密钥库:</string>
<string name="permission_icon_app">应用程序试图使用 OpenVPN 为 Android 的图标</string>
- <string name="faq_vpndialog43">"入手 Android 4.3 VPN 确认被防范\"覆盖应用程序\"。这将导致在不发生反应,触摸输入的对话框中。如果您有一个应用程序,使用覆盖它可能会导致这种行为。如果你发现违规应用程序联系的应用程序的作者。这个问题影响到所有 VPN 应用程序的 Android 4.3 及更高版本。请参阅 &lt; href =\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt; 问题 185 &lt; &gt; 有关其他详细信息"</string>
+ <string name="faq_vpndialog43">"自 Android 4.3 开始,VPN 确认被防范\"覆盖应用程序\"。这将导致在不发生反应,触摸输入的对话框中。如果您有一个应用程序,使用覆盖它可能会导致这种行为。如果你发现违规应用程序联系的应用程序的作者。这个问题将影响到运行在 Android 4.3 及更高版本上的所有 VPN 应用程序。有关其他详细信息请参阅 &lt; href =\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt; issue 185 &lt; &gt; "</string>
<string name="faq_vpndialog43_title">Vpn 确认对话框的 Android 4.3 及更高版本</string>
- <string name="donatePlayStore">或者你可以给我捐赠与播放存储:</string>
+ <string name="donatePlayStore">或者你可以通过GooglePlay来捐赠我:</string>
<string name="thanks_for_donation">感谢捐赠 %s!</string>
<string name="logCleared">日志已清除。</string>
<string name="show_password">显示密码</string>
@@ -222,27 +317,28 @@
<string name="faq_system_dialog_xposed">如果您的 Android 设备已经 root,您可以自担风险安装&lt;a href=\"http://xposed.info/\"&gt;Xposed 框架&lt;/a&gt; 和 &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN 对话框确认模块&lt;/a&gt;</string>
<string name="full_licenses">完整授权</string>
<string name="blocklocal_summary">不会将网络直接连接到本地接口路由通过 VPN。取消选中此选项会将缩进到 VPN 的本地网络的所有流量重都定向。</string>
- <string name="blocklocal_title">对本地地址绕过 VPN</string>
+ <string name="blocklocal_title">绕过本地地址</string>
<string name="userpw_file">用户名/密码文件</string>
- <string name="imported_from_file">[从进口: %s]</string>
- <string name="files_missing_hint">找不到一些文件。请选择要导入的配置文件的文件:</string>
+ <string name="imported_from_file">[导入: %s]</string>
+ <string name="files_missing_hint">有些文件未找到。请选择要导入的配置文件的文件:</string>
<string name="openvpn_is_no_free_vpn">若要使用此应用程序需要支持 OpenVPN (通常由您的雇主提供) 的 VPN 提供商/VPN 网关。查阅 http://community.openvpn.net/ OpenVPN 和如何设置您自己的 OpenVPN 服务器的详细信息。</string>
<string name="import_log">导入日志:</string>
<string name="ip_looks_like_subnet">VPN拓扑“%3$s”指定的,但使用ifconfig %1$s %2$s看起来更像是一个网络掩码的IP地址。假设“子网”的拓扑结构。</string>
<string name="mssfix_invalid_value">mssfix 值必须是一个介于 0 和 9000 之间的整数</string>
+ <string name="mtu_invalid_value">MTU覆盖的值必须是64到9000之间的整数</string>
<string name="mssfix_value_dialog">公布于运行在他们应该限制其发送分组大小,使得后的OpenVPN已包封它们,将得到的UDP包大小的OpenVPN发送到其对等体将不超过此字节数隧道TCP会话。 (默认为1450)</string>
<string name="mssfix_checkbox">重写TCP有效载荷的MSS值</string>
- <string name="mssfix_dialogtitle">设置的 TCP MSS 负载</string>
+ <string name="mssfix_dialogtitle">设置 TCP MSS 负载</string>
<string name="client_behaviour">客户端行为</string>
- <string name="clear_external_apps">明确允许外部应用程序</string>
+ <string name="clear_external_apps">清除允许的外部应用程序</string>
<string name="loading">加载中...</string>
- <string name="allowed_vpn_apps_info">允许 VPN 应用程序: %1$s</string>
- <string name="disallowed_vpn_apps_info">不允许VPN应用:%1$s</string>
- <string name="app_no_longer_exists">从应用程序允许禁止列表中移除它,不再安装包 %s</string>
- <string name="vpn_disallow_radio">VPN 用于所有的应用程序,但排除选定</string>
+ <string name="allowed_vpn_apps_info">经 VPN 代理的应用程序: %1$s</string>
+ <string name="disallowed_vpn_apps_info">不允许通过VPN的应用:%1$s</string>
+ <string name="app_no_longer_exists">程序 %s 已经从设备上卸载,正在将其从应用过滤规则中移除。</string>
+ <string name="vpn_disallow_radio">将VPN 用于所有的应用程序,但排除选定</string>
<string name="vpn_allow_radio">VPN 是只用于所选的应用程序</string>
<string name="query_delete_remote">删除远程服务器的条目吗?</string>
- <string name="keep">Thorny</string>
+ <string name="keep">保存</string>
<string name="delete">删除</string>
<string name="add_remote">添加新的远程服务器</string>
<string name="remote_random">连接时随机选择配置文件</string>
@@ -265,7 +361,7 @@
<string name="ab_kitkat_mss">早期的KitKat版本在TCP连接上设置了错误的MSS值 (#61948)。OpenVPN将自动启动mssfix选项来解决这个Bug。</string>
<string name="ab_proxy">在DNS服务没有设置的情况下,安卓会继续使用手机wifi的代理设置。 安卓OpenVPN会在日志文件中留下警告信息。在VPN设置DNS服务时,安卓不是代理;安卓系统里没有为vpn连接设置代理的程序接口。</string>
<string name="ab_lollipop_reinstall">在被卸载或重新安装时,VPN程序会停止工作;详细信息请参看 #80074</string>
- <string name="ab_not_route_to_vpn">The configured client IP and the IPs in its network mask are not routed to the VPN. OpenVPN works around this bug by explicitly adding a route that corrosponds to the client IP and its netmask</string>
+ <string name="ab_not_route_to_vpn">配置的客户端IP及其网络掩码中的IP不会代理到VPN。 OpenVPN通过显式地添加一个可应对客户端IP及其网络掩码的路由来解决这个错误</string>
<string name="ab_persist_tun">Opening a tun device while another tun device is active, which is used for persist-tun support, crashes the VPNServices on the device. A reboot is required to make VPN work again. OpenVPN for Android tries to avoid reopening the tun device and if really needed first closes the current TUN before opening the new TUN device to avoid to crash. This may lead to a short window where packets are sent over the non-VPN connection. Even with this workaround the VPNServices sometimes crashes and requires a reboot of the device.</string>
<string name="ab_secondary_users">对于次级用户而言,VPN是不会起作用的。</string>
<string name="ab_kitkat_reconnect">有多个用户报告说,在使用VPN应用时,移动连接/移动数据连接经常会掉线。该行为似乎只影响一些移动运营商/设备组合,目前为止尚未确定原因及bug解决方案。</string>
@@ -315,6 +411,9 @@
<string name="samsung_broken">三星手机几乎是最热销的安卓机,同时三星的固件也是bug最多的 Android 固件。Bug 并不局限于运行在这些设备上的VPN,但其中许多可以是可以想办法绕开的。下面列出几个已知Bug:\n\nDNS 不工作,除非其在VPN 地址池内.\n\n很多三星5.X设备上 允许/禁止 应用程序的特性并不能工作。 \n在三星 6.x 机器上只有VPN应用被加入省电模式白名单之后VPN才能工作。</string>
<string name="samsung_broken_title">三星手机</string>
<string name="novpn_selected">没有选定的 VPN。</string>
+ <string name="defaultvpn">默认VPN</string>
+ <string name="defaultvpnsummary">VPN 在 VPN 需要默认使用在的地方。这些对于目前上启动,总是在和快速设置平铺。</string>
+ <string name="vpnselected">目前选择的VPN:\'%s\'</string>
<string name="reconnect">重新连接</string>
<string name="qs_title">VPN切换</string>
<string name="qs_connect">连接到%s</string>
@@ -322,4 +421,29 @@
<string name="connectretrymaxmessage">输入连接重试时间间隔的最大值。OpenVPN在每次不成功的连接尝试后都会慢慢提高等待时间,直到提高到这个值后停止。默认值300秒。</string>
<string name="connectretrymaxtitle">连接重试最长间隔</string>
<string name="state_waitconnectretry">连接重试期间已等待 %s 秒</string>
+ <string name="nought_alwayson_warning"><![CDATA[如果您没有看到VPN确认对话框,则表示您已为其他应用启动VPN\"始终启用VPN\" 。在这种情况下,只有那个应用程序被允许连接到VPN。
+检查设置 - >网络更多.. - > VPNS]]></string>
+ <string name="management_socket_closed">连接到OpenVPN已关闭(%s)</string>
+ <string name="change_sorting">更改排序</string>
+ <string name="sort">排序</string>
+ <string name="sorted_lru">根据最近使用的配置排序</string>
+ <string name="sorted_az">按名字排列配置文件</string>
+ <string name="deprecated_tls_remote">配置使用选项 tls 远程在 2.3 中已过时,最后在 2.4 中删除</string>
+ <string name="auth_failed_behaviour">AUTH_FAILED</string>
+ <string name="graph">图像</string>
+ <string name="use_logarithmic_scale">使用对数刻度</string>
+ <string name="notenoughdata">没有足够的数据</string>
+ <string name="avghour">平均每小时</string>
+ <string name="avgmin">平均每分钟</string>
+ <string name="last5minutes">最后5分钟</string>
+ <string name="data_in">接收</string>
+ <string name="data_out">发送</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/app/src/main/res/values-zh-rTW/strings-icsopenvpn.xml b/app/src/main/res/values-zh-rTW/strings-icsopenvpn.xml
index 8ca37880..ba2e7d8d 100755
--- a/app/src/main/res/values-zh-rTW/strings-icsopenvpn.xml
+++ b/app/src/main/res/values-zh-rTW/strings-icsopenvpn.xml
@@ -119,6 +119,7 @@
<string name="tap_mode">Tap 模式</string>
<string name="faq_tap_mode">點擊模式是不可能的非根VPN API。因此,該應用程序不能提供自來水的支持</string>
<string name="tap_faq2">再一次?你在開玩笑吧?這真的不支援 tap 模式,就算再寄電子郵件詢問能不能支援也是沒用的。</string>
+ <string name="tap_faq3">第三次嗎?實際上,一個可以寫基於屯,並添加 2 層資訊發送帶 2 層資訊上水龍頭模擬器接收。但這個水龍頭模擬器還必須實施 ARP 和可能 DHCP 用戶端。我不知道的任何人做任何工作在這個方向。與我聯繫,如果你想要開始對此編碼。</string>
<string name="faq">FAQ</string>
<string name="copying_log_entries">複製記錄項目</string>
<string name="faq_copying">若要複製單筆記錄,在此記錄項目上點選。若要複製/送出整筆記錄,使用送出記錄選項。如果這個按鈕在畫面中無法顯示,請使用實體的選單按鈕。</string>
@@ -223,6 +224,7 @@
<string name="openvpn_log">OpenVPN 運作記錄</string>
<string name="import_config">匯入 OpenVPN 配置</string>
<string name="battery_consumption_title">電池消耗</string>
+ <string name="baterry_consumption">在我個人的測試中的 OpenVPN 高電池消耗的主要原因是保活資料包。大多數的 OpenVPN 伺服器有一個配置指令像 \' keepalive 10 60\',這會導致用戶端和伺服器交換保活資料包每十秒。&lt; P &gt; 雖然這些資料包是小和不使用太多的交通,它們保持移動無線電網路忙,增加了能源消耗。(請參見 &lt; href =\"HTTP://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt; 無線電狀態機 |Android 開發者 &lt; /a &gt;) &lt; p &gt; 此 keepalive 設置不能更改用戶端上。只有 OpenVPN 的系統管理員可以更改的設置。&lt; P &gt; 不幸的 udp 使用保活大於 60 秒可以導致一些 NAT 閘道來斷開連接由於不活動超時。用不了多久使用 TCP 保持活著超時工作,但隧道 TCP 通過 TCP 表現極為不佳與高資料包丟失連接上。(請參閱 &lt; href =\"HTTP://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt; 為什麼 TCP 在 TCP 是一個壞點子 &lt; /a &gt;)</string>
<string name="faq_tethering">網路共用的功能 (透過 Wi-Fi、USB 或藍牙) 和 VPNService API (此程式使用) 不一起作用。更多細節請看 &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt;</string>
<string name="vpn_tethering_title">VPN 與網路共用</string>
<string name="connection_retries">連線重試次數</string>
@@ -250,6 +252,7 @@
<string name="state_tcp_connect">連線中 (TCP)</string>
<string name="state_auth_failed">身份驗證失敗</string>
<string name="state_nonetwork">等待可使用的網路</string>
+ <string name="statusline_bytecount">↓%2$s/秒 %1$s - ↑%4$s/秒 %3$s</string>
<string name="notifcation_title_notconnect">未連線</string>
<string name="start_vpn_title">正在連接至 VPN %s</string>
<string name="start_vpn_ticker">正在連接至 VPN %s</string>
@@ -322,6 +325,7 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="import_log">匯入日誌:</string>
<string name="ip_looks_like_subnet">VPN拓撲“%3$s”規定,但使用ifconfig %1$s %2$s看起來更像是一個網絡掩碼的IP地址。假設“子網”的拓撲結構。</string>
<string name="mssfix_invalid_value">MSS的覆蓋值必須在0到9000的整數</string>
+ <string name="mtu_invalid_value">MSS的覆蓋值必須在0到9000的整數</string>
<string name="mssfix_value_dialog">宣布運行在他們應當限制其發送的包大小,使得後的OpenVPN已包封它們,將所得的UDP包大小的OpenVPN給對端發送將不超過此字節數的隧道的TCP會話。 (默認為1450)</string>
<string name="mssfix_checkbox">覆寫TCP 裝載資料 (payload) 的最大分段大小 (MSS) 值</string>
<string name="mssfix_dialogtitle">設定 TCP 裝載資料 (payload) 的最大分段大小 (MSS)</string>
@@ -348,6 +352,7 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="duplicate_vpn">重複的 VPN 設定檔</string>
<string name="duplicate_profile_title">複製設定檔︰ %s</string>
<string name="show_log">顯示記錄</string>
+ <string name="faq_android_clients">安卓系統的多個 OpenVPN 用戶端存在。最常見是 OpenVPN 為 Android (此用戶端),OpenVPN 連接和 OpenVPN 設置。 &lt; p &gt; 用戶端可以分為兩組: OpenVPN 為 Android 和 OpenVPN 連接使用官方的 VPNService API (安卓 4.0 +),需要無根、 無使用根 &lt; p &gt; 的 OpenVPN 設置 OpenVPN 的 Android 是開源用戶端和開發的 Arne 米爾克。 它針對更高級的使用者,並提供許多設置和能力,從檔導入設定檔,配置更改內部應用程式的設定檔。用戶端基於 OpenVPN 的社區版本。它基於 OpenVPN 2.x 原始程式碼。此用戶端可以被看作是半正式的社區用戶端。&lt; p &gt; OpenVPN 連接是由 OpenVPN 技術公司開發的非開源用戶端用戶端縮進是一般使用的用戶端和更多針對普通使用者,並允許的 OpenVPN 設定檔導入。此用戶端基於 OpenVPN c + + 重新實現的 OpenVPN 協定 (這要求允許 OpenVPN 技術,公司將發佈 iOS OpenVPN 應用程式)。此用戶端是最古老的用戶端和也的使用者介面對於開放源碼 OpenVPN OpenVPN 技術 &lt; p &gt; OpenVPN 設置的官方用戶端。與安卓系統的 OpenVPN 它需要根和不使用 VPNService API。它不依賴于安卓 4.0 +</string>
<string name="faq_androids_clients_title">OpenVPN Android 用戶端之間的差異</string>
<string name="ignore_multicast_route">忽略多點傳送路徑:%s</string>
<string name="ab_only_cidr">Android 只支援無類別域間 (CIDR) 路由到此 VPN。因為非無類別域間 (CIDR) 路由幾乎不會被使用,OpenVPN for Android 將使用 /32 非無類別域間 (CIDR) 路由處理這個警告。</string>
@@ -355,7 +360,9 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="ab_kitkat_mss">早期的 KitKat 版本在 TCP 連線中,設定錯誤的最大分段大小 (MSS) 值 (#61948)。試著開啟 mssfix 選項來繞開這個 bug。</string>
<string name="ab_proxy">Android 沒有 DNS 伺服器設定時,會繼續使用你指定的行動/Wi-Fi 連線代理設定。OpenVPN for Android 會在日誌中記錄警告訊息。<p>當 VPN 有設定 DNS 伺服器時,因為,Android API 中無法為 VPN 連線設定代理,所以,將不會使用代理設定。</p></string>
<string name="ab_lollipop_reinstall">當解除安裝或重新安裝,VPN 應用程式也會停止運作。詳細資訊起參閱 #80074</string>
+ <string name="ab_not_route_to_vpn">台灣繁體中文</string>
<string name="ab_secondary_users">VPN 不會對次級使用者作用。</string>
+ <string name="ab_vpn_reachability_44">Vpn是幹嗎?</string>
<string name="ab_only_cidr_title">非無類別域間 (CIDR) 路由</string>
<string name="ab_proxy_title">VPN 的代理行為</string>
<string name="ab_lollipop_reinstall_title">重新安裝 VPN 應用程式</string>
@@ -363,9 +370,11 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="copy_of_profile">%s 的副本</string>
<string name="ab_not_route_to_vpn_title">路由到設定的 IP 位址</string>
<string name="ab_kitkat_mss_title">VPN 連線錯誤的最大分段大小 (MSS) 值</string>
+ <string name="ab_secondary_users_title">二级平板电脑用户</string>
<string name="custom_connection_options_warng">指定自訂連線的特定選項,請小心使用</string>
<string name="custom_connection_options">自定義選項</string>
<string name="remove_connection_entry">刪除連線項目</string>
+ <string name="ab_kitkat_reconnect_title">了解!</string>
<string name="ab_vpn_reachability_44_title">遠端網路無法連線</string>
<string name="ab_persist_tun_title">保持 tun 模式</string>
<string name="version_and_later">%s 及更高版本</string>
@@ -393,6 +402,8 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="crl_title">憑證撤銷清單 (可選)</string>
<string name="samsung_broken_title">三星手機</string>
<string name="novpn_selected">沒有 VPN 被選擇</string>
+ <string name="defaultvpn">預設 VPN</string>
+ <string name="defaultvpnsummary">VPN 在 VPN 需要預設使用在的地方。這些對於目前上啟動,總是在和快速設置平鋪。</string>
<string name="reconnect">重新連線</string>
<string name="qs_title">切換 VPN</string>
<string name="qs_connect">連線到 %s</string>
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index b0a3f0ab..6a8f972f 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -2,7 +2,6 @@
<resources>
<string name="repository_url_text">取得原始碼與個案追蹤,可上 https://0xacab.org/leap/bitmask_android</string>
<string name="show_connection_details">顯示連線的詳細資訊</string>
- <string name="dns_domain_info">DNS網域: %s</string>
<string name="routes_info">路徑: %s</string>
<string name="routes_info6">IPv6路由: %s</string>
<string name="bitmask_log">Bitmask 運作記錄</string>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index a8a63e4b..53ead009 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,6 +6,8 @@
<color name="colorError">#ef9a9a</color>
<color name="colorSuccess">#a5d6a7</color>
+ <color name="black800">#424242</color>
+
<color name="red200">#ef9a9a</color>
<color name="pink200">#f48fb1</color>
<color name="purple200">#ce93d8</color>
@@ -23,4 +25,6 @@
<color name="orange200">#ffcc80</color>
<color name="deepOrange200">#ffab91</color>
+ <color name="white">#ffffff</color>
+
</resources>
diff --git a/app/src/main/res/values/refs.xml b/app/src/main/res/values/refs.xml
index 2b00d5b5..c968b05c 100644
--- a/app/src/main/res/values/refs.xml
+++ b/app/src/main/res/values/refs.xml
@@ -13,15 +13,15 @@
<drawable name="ic_menu_view">@android:drawable/ic_menu_view</drawable>
<drawable name="ic_menu_delete">@android:drawable/ic_menu_delete</drawable>
<drawable name="ic_menu_edit">@android:drawable/ic_menu_edit</drawable>
- <!--<drawable name="ic_menu_import">@drawable/ic_menu_archive</drawable>-->
- <!--<drawable name="vpn_item_edit">@drawable/vpn_item_settings </drawable>-->
+ <drawable name="ic_menu_import">@drawable/ic_menu_archive</drawable>
+ <drawable name="vpn_item_edit">@drawable/vpn_item_settings </drawable>
<drawable name="ic_menu_add">@android:drawable/ic_menu_add</drawable>
<drawable name="ic_dialog_alert">@android:drawable/ic_dialog_alert</drawable>
<drawable name="ic_menu_add_grey">@android:drawable/ic_menu_add</drawable>
- <!--<drawable name="ic_menu_import_grey">@drawable/ic_menu_archive</drawable>-->
+ <drawable name="ic_menu_import_grey">@drawable/ic_menu_archive</drawable>
<drawable name="ic_menu_delete_grey">@android:drawable/ic_menu_delete</drawable>
- <!--<drawable name="ic_menu_copy">@drawable/ic_menu_copy_holo_light</drawable>-->
- <!--<drawable name="ic_receipt">@drawable/ic_menu_log</drawable> -->
+ <drawable name="ic_menu_copy">@drawable/ic_menu_copy_holo_light</drawable>
+ <drawable name="ic_receipt">@drawable/ic_menu_log</drawable>
<drawable name="ic_sort">@android:drawable/ic_menu_sort_by_size</drawable>
</resources> \ No newline at end of file
diff --git a/app/src/main/res/values/strings-icsopenvpn.xml b/app/src/main/res/values/strings-icsopenvpn.xml
index 52abd9a5..5094b909 100755
--- a/app/src/main/res/values/strings-icsopenvpn.xml
+++ b/app/src/main/res/values/strings-icsopenvpn.xml
@@ -436,16 +436,34 @@
<string name="kbits_per_second">%.1f kbit/s</string>
<string name="mbits_per_second">%.1f Mbit/s</string>
<string name="gbits_per_second">%.1f Gbit/s</string>
- <string name="weakmd">&lt;p>Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like MD5.&lt;/p>&lt;p>&lt;b>MD5 signatures are insecure and should not be used anymore.&lt;/b> MD5 collisions can be created in &lt;a href="https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html">few hours at a minimal cost.&lt;/a>. You should update the VPN certificates as soon as possible.&lt;/p>&lt;p>Unfortunately, older easy-rsa distributions included the config option "default_md md5". If you are using an old easy-rsa version, update to the &lt;a href="https://github.com/OpenVPN/easy-rsa/releases">latest version&lt;/a>) or change md5 to sha256 and regenerate your certificates.&lt;/p>&lt;p>If you really want to use old and broken certificates use the custom configuration option tls-cipher "DEFAULT:@SECLEVEL=0" under advanced configuration or as additional line in your imported configuration&lt;/p></string>
-
-<string name="volume_byte">%.0f B</string>
+ <string name="weakmd">&lt;p>Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like
+ MD5.&lt;/p>&lt;p>&lt;b>MD5 signatures are completely insecure and should not be used anymore.&lt;/b> MD5
+ collisions can be created in &lt;a
+ href="https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html">few hours at a minimal cost.&lt;/a>.
+ You should update the VPN certificates as soon as possible.&lt;/p>&lt;p>Unfortunately, older easy-rsa
+ distributions included the config option "default_md md5". If you are using an old easy-rsa version, update to
+ the &lt;a href="https://github.com/OpenVPN/easy-rsa/releases">latest version&lt;/a>) or change md5 to sha256 and
+ regenerate your certificates.&lt;/p>&lt;p>If you really want to use old and broken certificates use the custom
+ configuration option tls-cipher "DEFAULT:@SECLEVEL=0" under advanced configuration or as additional line in your
+ imported configuration&lt;/p>
+ </string>
+ <string name="volume_byte">%.0f B</string>
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
<string name="channel_name_background">Connection statistics</string>
<string name="channel_description_background">Ongoing statistics of the established OpenVPN connection</string>
<string name="channel_name_status">Connection status change</string>
- <string name="channel_description_status">Status changes of the OpenVPN connection (Connecting, authenticating,…)</string>
+ <string name="channel_description_status">Status changes of the OpenVPN connection (Connecting, authenticating,…)</string>
<string name="weakmd_title">Weak (MD5) hashes in certificate signature (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL Speed Test</string>
+ <string name="openssl_cipher_name">OpenSSL cipher names</string>
+ <string name="osslspeedtest">OpenSSL Crypto Speed test</string>
+ <string name="openssl_error">OpenSSL returned an error</string>
+ <string name="running_test">Running test…</string>
+ <string name="test_algoirhtms">Test selected algorithms</string>
+ <string name="all_app_prompt">An external app tries to control %s. The app requesting access cannot be determined. Allowing this app grants ALL apps access.</string>
+ <string name="openvpn3_nostatickeys">The OpenVPN 3 C++ implementation does not support static keys. Please change to OpenVPN 2.x under general settings.</string>
+ <string name="openvpn3_pkcs12">Using PKCS12 files directly with OpenVPN 3 C++ implementation is not supported. Please import the pkcs12 files into the Android keystore or change to OpenVPN 2.x under general settings.</string>
</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 01715c32..c1443138 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -85,6 +85,7 @@
<string name="vpn.button.turn.on">Turn on</string>
<string name="vpn.button.turn.off">Turn off</string>
<string name="vpn_button_turn_off_blocking">Stop blocking</string>
+ <string name="vpn_securely_routed">Your traffic is securely routed through:</string>
<string name="bitmask_log">Bitmask Log</string>
<string name="title_activity_main">Bitmask</string>
<string name="log_fragment_title">Log</string>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 230f52ba..4e845384 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -66,4 +66,11 @@
<style name="BitmaskActivity">
</style>
+
+ <style name="BitmaskButtonBlack" parent="android:Widget.Button">
+ <item name="android:textAllCaps">true</item>
+ <item name="android:background">@color/black800</item>
+ <item name="android:textColor">@color/white</item>
+ </style>
+
</resources> \ No newline at end of file
diff --git a/app/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java b/app/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
index 850983a9..54029628 100644
--- a/app/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
+++ b/app/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
@@ -63,16 +63,18 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
if(!setConfig(configstr))
return;
setUserPW();
+ VpnStatus.logInfo(platform());
VpnStatus.logInfo(copyright());
- StatusPoller statuspoller = new StatusPoller(5000);
+
+ StatusPoller statuspoller = new StatusPoller(OpenVPNManagement.mBytecountInterval*1000);
new Thread(statuspoller,"Status Poller").start();
ClientAPI_Status status = connect();
if(status.getError()) {
VpnStatus.logError(String.format("connect() error: %s: %s",status.getStatus(),status.getMessage()));
} else {
- VpnStatus.logInfo("OpenVPN3 thread finished");
+ VpnStatus.logDebug("OpenVPN3 thread finished");
}
statuspoller.stop();
}
@@ -103,7 +105,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
if(ipv6)
mService.addRoutev6(address + "/" + prefix_length,"tun");
else
- mService.addRoute(new CIDRIP(address, prefix_length));
+ mService.addRoute(new CIDRIP(address, prefix_length), true);
return true;
}
@@ -112,8 +114,8 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
if(ipv6)
mService.addRoutev6(address + "/" + prefix_length, "wifi0");
else {
- //TODO
- mService.addRoute(address, String.valueOf(prefix_length), "1.2.3.4" , "wifi0");
+ CIDRIP route = new CIDRIP(address, prefix_length);
+ mService.addRoute(route, false);
}
return true;
}
@@ -133,7 +135,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public boolean tun_builder_set_session_name(String name) {
- VpnStatus.logInfo("We should call this session" + name);
+ VpnStatus.logDebug("We should call this session" + name);
return true;
}
@@ -164,7 +166,12 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public boolean tun_builder_reroute_gw(boolean ipv4, boolean ipv6, long flags) {
- //ignore
+ if (ipv4)
+ mService.addRoute("0.0.0.0", "0.0.0.0", "127.0.0.1", OpenVPNService.VPNSERVICE_TUN);
+
+ if (ipv6)
+ mService.addRoutev6("::/0", OpenVPNService.VPNSERVICE_TUN);
+
return true;
}
@@ -179,11 +186,12 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
config.setContent(vpnconfig);
config.setTunPersist(mVp.mPersistTun);
config.setGuiVersion(mVp.getVersionEnvString(mService));
+ //config.setPlatformVersion(mVp.getPlatformVersionEnvString());
config.setExternalPkiAlias("extpki");
ClientAPI_EvalConfig ec = eval_config(config);
if(ec.getExternalPki()) {
- VpnStatus.logError("OpenVPN seem to think as external PKI");
+ VpnStatus.logDebug("OpenVPN3 core assumes an external PKI config");
}
if (ec.getError()) {
VpnStatus.logError("OpenVPN config file parse error: " + ec.getMessage());
@@ -196,7 +204,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void external_pki_cert_request(ClientAPI_ExternalPKICertRequest certreq) {
- VpnStatus.logError("EXT PKI CERT");
+ VpnStatus.logDebug("Got external PKI certificate request from OpenVPN core");
String[] ks = mVp.getKeyStoreCertificates((Context) mService);
if(ks==null) {
certreq.setError(true);
@@ -215,6 +223,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void external_pki_sign_request(ClientAPI_ExternalPKISignRequest signreq) {
+ VpnStatus.logDebug("Got external PKI signing request from OpenVPN core");
signreq.setSig(mVp.getSignedData(signreq.getData()));
}
@@ -244,12 +253,13 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public boolean stopVPN(boolean replaceConnection) {
+ stop();
return false;
}
@Override
public void networkChange(boolean sameNetwork) {
-
+ reconnect(1);
}
@Override
@@ -288,6 +298,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void stop() {
super.stop();
+ mService.openvpnStopped();
}
@Override
diff --git a/app/src/production/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java
index f7102508..8c008024 100644
--- a/app/src/production/java/se/leap/bitmaskclient/ConfigurationWizard.java
+++ b/app/src/production/java/se/leap/bitmaskclient/ProviderListActivity.java
@@ -30,7 +30,7 @@ import java.net.URL;
* @author parmegv
* @author cyberta
*/
-public class ConfigurationWizard extends BaseConfigurationWizard {
+public class ProviderListActivity extends ProviderListBaseActivity {
@Override
@@ -52,6 +52,7 @@ public class ConfigurationWizard extends BaseConfigurationWizard {
private void autoSelectProvider(Provider provider) {
this.provider = provider;
onItemSelectedLogic();
+ showProgressBar();
}
/**
diff --git a/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java b/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java
index 6466e769..d9e1d1a9 100644
--- a/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java
+++ b/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java
@@ -20,7 +20,7 @@ import java.util.*;
import java.net.*;
/**
- * Models the provider list shown in the ConfigurationWizard.
+ * Models the provider list shown in the ProviderListActivity.
*
* @author parmegv
*/
diff --git a/app/src/sharedTest/java/se.leap.bitmaskclient/testutils/TestSetupHelper.java b/app/src/sharedTest/java/se.leap.bitmaskclient/testutils/TestSetupHelper.java
new file mode 100644
index 00000000..725924e6
--- /dev/null
+++ b/app/src/sharedTest/java/se.leap.bitmaskclient/testutils/TestSetupHelper.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2018 LEAP Encryption Access Project and contributers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package se.leap.bitmaskclient.testutils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Created by cyberta on 08.10.17.
+ */
+
+public class TestSetupHelper {
+
+ public static String getInputAsString(InputStream fileAsInputStream) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(fileAsInputStream));
+ StringBuilder sb = new StringBuilder();
+ String line = br.readLine();
+ while (line != null) {
+ sb.append(line);
+ line = br.readLine();
+ }
+
+ return sb.toString();
+ }
+
+}
diff --git a/app/src/test/java/se/leap/bitmaskclient/ConfigHelperTest.java b/app/src/test/java/se/leap/bitmaskclient/ConfigHelperTest.java
index a9a5733d..84f38086 100644
--- a/app/src/test/java/se/leap/bitmaskclient/ConfigHelperTest.java
+++ b/app/src/test/java/se/leap/bitmaskclient/ConfigHelperTest.java
@@ -6,9 +6,9 @@ import org.junit.Before;
import org.junit.Test;
import se.leap.bitmaskclient.testutils.MockSharedPreferences;
-import se.leap.bitmaskclient.testutils.TestSetupHelper;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static se.leap.bitmaskclient.Constants.PROVIDER_CONFIGURED;
import static se.leap.bitmaskclient.testutils.TestSetupHelper.getInputAsString;
diff --git a/app/src/test/java/se/leap/bitmaskclient/eip/ProviderApiManagerTest.java b/app/src/test/java/se/leap/bitmaskclient/eip/ProviderApiManagerTest.java
index f04ec0eb..c23e4f49 100644
--- a/app/src/test/java/se/leap/bitmaskclient/eip/ProviderApiManagerTest.java
+++ b/app/src/test/java/se/leap/bitmaskclient/eip/ProviderApiManagerTest.java
@@ -52,14 +52,14 @@ import static se.leap.bitmaskclient.ProviderAPI.RESULT_KEY;
import static se.leap.bitmaskclient.testutils.BackendMockResponses.BackendMockProvider.TestBackendErrorCase.ERROR_CASE_UPDATED_CERTIFICATE;
import static se.leap.bitmaskclient.testutils.BackendMockResponses.BackendMockProvider.TestBackendErrorCase.NO_ERROR;
import static se.leap.bitmaskclient.testutils.TestSetupHelper.getInputAsString;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockBundle;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockClientGenerator;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockFingerprintForCertificate;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockIntent;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockProviderApiConnector;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockResources;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockResultReceiver;
-import static se.leap.bitmaskclient.testutils.TestSetupHelper.mockTextUtils;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockBundle;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockClientGenerator;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockFingerprintForCertificate;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockIntent;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockProviderApiConnector;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockResources;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockResultReceiver;
+import static se.leap.bitmaskclient.testutils.MockHelper.mockTextUtils;
/**
diff --git a/app/src/test/java/se/leap/bitmaskclient/testutils/TestSetupHelper.java b/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java
index f8f70eaf..8372c9bc 100644
--- a/app/src/test/java/se/leap/bitmaskclient/testutils/TestSetupHelper.java
+++ b/app/src/test/java/se/leap/bitmaskclient/testutils/MockHelper.java
@@ -1,20 +1,3 @@
-/**
- * Copyright (c) 2018 LEAP Encryption Access Project and contributers
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
package se.leap.bitmaskclient.testutils;
import android.content.Intent;
@@ -30,10 +13,8 @@ import org.json.JSONObject;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
@@ -65,25 +46,10 @@ import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
/**
- * Created by cyberta on 08.10.17.
+ * Created by cyberta on 29.01.18.
*/
-public class TestSetupHelper {
-
-
-
- public static String getInputAsString(InputStream fileAsInputStream) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(fileAsInputStream));
- StringBuilder sb = new StringBuilder();
- String line = br.readLine();
- while (line != null) {
- sb.append(line);
- line = br.readLine();
- }
-
- return sb.toString();
- }
-
+public class MockHelper {
@NonNull
public static Bundle mockBundle() {
final Map<String, Boolean> fakeBooleanBundle = new HashMap<>();
@@ -335,7 +301,6 @@ public class TestSetupHelper {
});
}
-
public static ResultReceiver mockResultReceiver(final int expectedResultCode, final Bundle expectedBundle) {
ResultReceiver resultReceiver = mock(ResultReceiver.class);
@@ -395,7 +360,7 @@ public class TestSetupHelper {
public static Resources mockResources(InputStream inputStream) throws IOException, JSONException {
Resources mockedResources = mock(Resources.class, RETURNS_DEEP_STUBS);
- JSONObject errorMessages = new JSONObject(getInputAsString(inputStream));
+ JSONObject errorMessages = new JSONObject(TestSetupHelper.getInputAsString(inputStream));
when(mockedResources.getString(R.string.warning_corrupted_provider_details)).
@@ -430,5 +395,4 @@ public class TestSetupHelper {
thenReturn(errorMessages.getString("warning_expired_provider_cert"));
return mockedResources;
}
-
}