summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2023-10-29 15:58:52 +0100
committercyBerta <cyberta@riseup.net>2023-10-29 15:58:52 +0100
commit50defeaff2a8468ee44db7e09752e334e4d1ba2c (patch)
treecca77a33f5b3266b9b0462136057ae47f6b146d4
parent45f67a08b481f2f727556a36e28d17a3f68d435a (diff)
parent87aac67b611f616aebfb722679b40e3f49576f01 (diff)
Merge branch 'schwabe_master' into ssh_new_master
-rw-r--r--.github/workflows/build.yaml16
-rw-r--r--README.md43
-rw-r--r--build.gradle.kts28
-rw-r--r--gradle.properties5
-rw-r--r--gradle/libs.versions.toml58
-rw-r--r--gradle/wrapper/gradle-wrapper.properties2
-rw-r--r--main/build.gradle.kts178
-rwxr-xr-xmain/misc/fetchtranslations.sh9
-rw-r--r--main/src/main/AndroidManifest.xml25
-rw-r--r--main/src/main/assets/full_licenses.html323
-rw-r--r--main/src/main/cpp/CMakeLists.txt9
m---------main/src/main/cpp/asio0
m---------main/src/main/cpp/lz40
m---------main/src/main/cpp/openssl0
m---------main/src/main/cpp/openvpn0
-rw-r--r--main/src/main/cpp/openvpn-config/config.h16
m---------main/src/main/cpp/openvpn30
-rw-r--r--main/src/main/cpp/ovpnutil/jniglue.c3
-rw-r--r--main/src/main/cpp/ovpnutil/osslutil.cpp (renamed from main/src/main/cpp/ovpnutil/rsapss.cpp)7
-rw-r--r--main/src/main/java/de/blinkt/openvpn/LaunchVPN.java58
-rw-r--r--main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java16
-rw-r--r--main/src/main/java/de/blinkt/openvpn/VpnProfile.java16
-rw-r--r--main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java3
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/AppRestrictions.java157
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java48
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java10
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java1
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java1
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java1
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/LocaleHelper.java18
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/LogItem.java46
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java22
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java6
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java22
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java275
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java3
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java42
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java18
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/StatusListener.java55
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java4
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java49
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/X509Utils.java6
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/keepVPNAlive.java134
-rw-r--r--main/src/main/res/drawable-hdpi/ic_menu_archive.pngbin1094 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.pngbin199 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_menu_log.pngbin2891 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_quick.pngbin1236 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_stat_vpn.pngbin3799 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.pngbin4124 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_stat_vpn_offline.pngbin4182 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/ic_stat_vpn_outline.pngbin4250 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-hdpi/vpn_item_settings.pngbin773 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_menu_archive.pngbin831 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.pngbin161 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_menu_log.pngbin2860 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_quick.pngbin973 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_stat_vpn.pngbin3436 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.pngbin3579 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_stat_vpn_offline.pngbin3585 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/ic_stat_vpn_outline.pngbin3627 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-mdpi/vpn_item_settings.pngbin653 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_menu_archive.pngbin1398 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.pngbin252 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_menu_log.pngbin2927 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_quick.pngbin1671 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_stat_vpn.pngbin4136 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.pngbin4753 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.pngbin4810 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.pngbin4961 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xhdpi/vpn_item_settings.pngbin956 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.pngbin1279 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_menu_log.pngbin3069 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_quick.pngbin2375 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_stat_vpn.pngbin3987 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_stat_vpn_empty_halo.pngbin4463 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_stat_vpn_offline.pngbin4534 -> 0 bytes
-rw-r--r--main/src/main/res/drawable-xxhdpi/ic_stat_vpn_outline.pngbin4674 -> 0 bytes
-rw-r--r--main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_archive_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_check_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_close_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_delete_24.xml15
-rw-r--r--main/src/main/res/drawable/ic_baseline_delete_outline_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_edit_24.xml5
-rw-r--r--main/src/main/res/drawable/ic_baseline_file_copy_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_file_present_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_filter_list_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_folder_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_pause_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_play_arrow_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_receipt_long_24.xml14
-rw-r--r--main/src/main/res/drawable/ic_baseline_search_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_share_24.xml15
-rw-r--r--main/src/main/res/drawable/ic_baseline_sort_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_baseline_warning_24.xml10
-rw-r--r--main/src/main/res/drawable/ic_edit.xml10
-rw-r--r--main/src/main/res/drawable/ic_icon_system.xml19
-rw-r--r--main/src/main/res/drawable/ic_launcher3_foreground.xml21
-rw-r--r--main/src/main/res/drawable/ic_logo_bunt.xml21
-rw-r--r--main/src/main/res/drawable/ic_logo_sw.xml21
-rw-r--r--main/src/main/res/drawable/ic_stat_vpn_empty_halo.xml30
-rw-r--r--main/src/main/res/drawable/ic_stat_vpn_offline.xml39
-rw-r--r--main/src/main/res/drawable/ic_stat_vpn_outline.xml32
-rw-r--r--main/src/main/res/mipmap-anydpi-v26/ic_launcher.xml7
-rw-r--r--main/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml7
-rw-r--r--[-rwxr-xr-x]main/src/main/res/mipmap-hdpi/ic_launcher.pngbin5284 -> 1823 bytes
-rw-r--r--main/src/main/res/mipmap-hdpi/ic_launcher_round.pngbin0 -> 3876 bytes
-rw-r--r--[-rwxr-xr-x]main/src/main/res/mipmap-mdpi/ic_launcher.pngbin2994 -> 1295 bytes
-rw-r--r--main/src/main/res/mipmap-mdpi/ic_launcher_round.pngbin0 -> 2421 bytes
-rw-r--r--main/src/main/res/mipmap-xhdpi/banner_tv.pngbin21996 -> 30814 bytes
-rw-r--r--[-rwxr-xr-x]main/src/main/res/mipmap-xhdpi/ic_launcher.pngbin7520 -> 2579 bytes
-rw-r--r--main/src/main/res/mipmap-xhdpi/ic_launcher_round.pngbin0 -> 5533 bytes
-rw-r--r--[-rwxr-xr-x]main/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin13017 -> 4015 bytes
-rw-r--r--main/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngbin0 -> 8590 bytes
-rw-r--r--[-rwxr-xr-x]main/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin18967 -> 5656 bytes
-rw-r--r--main/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngbin0 -> 12571 bytes
-rw-r--r--main/src/main/res/values/arrays.xml6
-rw-r--r--main/src/main/res/values/attrs.xml3
-rw-r--r--main/src/main/res/values/colours.xml1
-rw-r--r--main/src/main/res/values/refs.xml29
-rwxr-xr-xmain/src/main/res/values/strings.xml17
-rw-r--r--main/src/main/res/values/untranslatable.xml5
-rw-r--r--main/src/main/res/xml/app_restrictions.xml51
-rw-r--r--main/src/skeleton/AndroidManifest.xml3
-rw-r--r--main/src/skeleton/java/de/blinkt/openvpn/core/ProfileEncryption.java2
-rw-r--r--main/src/skeleton/res/values/attrs.xml5
-rw-r--r--main/src/skeleton/res/values/refs.xml27
-rw-r--r--main/src/skeleton/res/values/styles.xml1
-rw-r--r--main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.kt2
-rw-r--r--main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java0
-rw-r--r--main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt146
-rw-r--r--main/src/ui/AndroidManifest.xml3
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/OpenVPNTileService.java10
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/activities/ConfigConverter.kt4
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/activities/CreateShortcuts.java6
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java141
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt100
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java2
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/core/ProfileEncryption.kt20
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/AboutFragment.java12
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java8
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/GeneralSettings.kt10
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/KeyChainSettingsFragment.kt1
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java1
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java1
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java8
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/Settings_IP.kt18
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/Utils.kt7
-rw-r--r--main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java38
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.pngbin624 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_add_circle_outline_white_24dp.pngbin606 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_archive_grey600_24dp.pngbin353 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_archive_white_24dp.pngbin347 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_check_white_24dp.pngbin309 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_close_white_24dp.pngbin221 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_content_copy_white_24dp.pngbin287 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_delete_grey600_24dp.pngbin248 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_delete_white_24dp.pngbin246 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_doc_generic_am.pngbin694 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_edit_grey600_24dp.pngbin341 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_edit_white_24dp.pngbin339 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_filter_list_white_24dp.pngbin206 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_menu_copy_holo_dark.pngbin186 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_pause_white_24dp.pngbin105 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_play_arrow_white_24dp.pngbin195 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_receipt_white_24dp.pngbin261 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_root_folder_am.pngbin508 -> 0 bytes
-rwxr-xr-xmain/src/ui/res/drawable-hdpi/ic_search_white_24dp.pngbin396 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_share_white_24dp.pngbin506 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_sort_white_24dp.pngbin115 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-hdpi/ic_warning_black_36dp.pngbin549 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.pngbin427 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_add_circle_outline_white_24dp.pngbin409 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_archive_grey600_24dp.pngbin266 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_archive_white_24dp.pngbin264 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_check_white_24dp.pngbin243 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_close_white_24dp.pngbin175 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_content_copy_white_24dp.pngbin216 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_delete_grey600_24dp.pngbin199 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_delete_white_24dp.pngbin197 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_doc_generic_am.pngbin561 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_edit_grey600_24dp.pngbin276 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_edit_white_24dp.pngbin272 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_filter_list_white_24dp.pngbin181 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_menu_copy_holo_dark.pngbin162 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_pause_white_24dp.pngbin83 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_play_arrow_white_24dp.pngbin157 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_receipt_white_24dp.pngbin194 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_root_folder_am.pngbin442 -> 0 bytes
-rwxr-xr-xmain/src/ui/res/drawable-mdpi/ic_search_white_24dp.pngbin247 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_share_white_24dp.pngbin361 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_sort_white_24dp.pngbin90 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-mdpi/ic_warning_black_36dp.pngbin432 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.pngbin781 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.pngbin775 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_archive_grey600_24dp.pngbin372 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_archive_white_24dp.pngbin362 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_check_white_24dp.pngbin363 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_close_white_24dp.pngbin257 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_content_copy_white_24dp.pngbin330 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_delete_grey600_24dp.pngbin271 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_delete_white_24dp.pngbin270 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_doc_generic_am.pngbin831 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_edit_grey600_24dp.pngbin379 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_edit_white_24dp.pngbin378 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_filter_list_white_24dp.pngbin200 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_menu_copy_holo_dark.pngbin261 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_pause_white_24dp.pngbin90 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_play_arrow_white_24dp.pngbin220 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_receipt_white_24dp.pngbin240 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_root_folder_am.pngbin582 -> 0 bytes
-rwxr-xr-xmain/src/ui/res/drawable-xhdpi/ic_search_white_24dp.pngbin465 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_share_white_24dp.pngbin625 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_sort_white_24dp.pngbin101 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xhdpi/ic_warning_black_36dp.pngbin655 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.pngbin1106 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.pngbin1097 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_archive_grey600_24dp.pngbin529 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_archive_white_24dp.pngbin520 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_check_white_24dp.pngbin460 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_close_white_24dp.pngbin347 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_content_copy_white_24dp.pngbin436 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_delete_grey600_24dp.pngbin341 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_delete_white_24dp.pngbin338 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_doc_generic_am.pngbin585 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_edit_grey600_24dp.pngbin493 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_edit_white_24dp.pngbin490 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_filter_list_white_24dp.pngbin223 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_menu_copy_holo_dark.pngbin1272 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_pause_white_24dp.pngbin92 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_play_arrow_white_24dp.pngbin283 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_receipt_white_24dp.pngbin292 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_root_folder_am.pngbin1263 -> 0 bytes
-rwxr-xr-xmain/src/ui/res/drawable-xxhdpi/ic_search_white_24dp.pngbin728 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_share_white_24dp.pngbin857 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_sort_white_24dp.pngbin103 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxhdpi/ic_warning_black_36dp.pngbin873 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.pngbin1508 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.pngbin1634 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_archive_grey600_24dp.pngbin773 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_archive_white_24dp.pngbin763 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_check_white_24dp.pngbin587 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_close_white_24dp.pngbin436 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_content_copy_white_24dp.pngbin522 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_delete_grey600_24dp.pngbin402 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_delete_white_24dp.pngbin397 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_edit_grey600_24dp.pngbin639 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_edit_white_24dp.pngbin632 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_filter_list_white_24dp.pngbin254 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_pause_white_24dp.pngbin94 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.pngbin343 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_receipt_white_24dp.pngbin334 -> 0 bytes
-rwxr-xr-xmain/src/ui/res/drawable-xxxhdpi/ic_search_white_24dp.pngbin915 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_share_white_24dp.pngbin1115 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_sort_white_24dp.pngbin107 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable-xxxhdpi/ic_warning_black_36dp.pngbin1033 -> 0 bytes
-rw-r--r--main/src/ui/res/drawable/ic_warning.xml28
-rw-r--r--main/src/ui/res/drawable/notifications.xml10
-rw-r--r--main/src/ui/res/layout-v21/profile_list_fabs.xml2
-rw-r--r--main/src/ui/res/layout/about.xml8
-rw-r--r--main/src/ui/res/layout/config_converter.xml3
-rw-r--r--main/src/ui/res/layout/connections.xml32
-rw-r--r--main/src/ui/res/layout/server_card.xml2
-rw-r--r--main/src/ui/res/layout/vpn_list_item.xml2
-rw-r--r--main/src/ui/res/layout/vpn_profile_list.xml97
-rw-r--r--main/src/ui/res/menu/allowed_apps.xml2
-rw-r--r--main/src/ui/res/values-ar/arrays.xml43
-rw-r--r--main/src/ui/res/values-ar/plurals.xml35
-rw-r--r--main/src/ui/res/values-ar/strings.xml505
-rw-r--r--main/src/ui/res/values-be/arrays.xml18
-rw-r--r--main/src/ui/res/values-be/strings.xml9
-rw-r--r--main/src/ui/res/values-ca/arrays.xml6
-rw-r--r--main/src/ui/res/values-ca/strings.xml5
-rw-r--r--main/src/ui/res/values-cs/arrays.xml6
-rw-r--r--main/src/ui/res/values-cs/strings.xml9
-rw-r--r--main/src/ui/res/values-da/arrays.xml18
-rw-r--r--main/src/ui/res/values-da/strings.xml138
-rw-r--r--main/src/ui/res/values-de/arrays.xml6
-rw-r--r--main/src/ui/res/values-de/strings.xml39
-rw-r--r--main/src/ui/res/values-el/arrays.xml37
-rw-r--r--main/src/ui/res/values-el/plurals.xml19
-rw-r--r--main/src/ui/res/values-el/strings.xml466
-rw-r--r--main/src/ui/res/values-es/arrays.xml20
-rw-r--r--main/src/ui/res/values-es/plurals.xml4
-rw-r--r--main/src/ui/res/values-es/strings.xml43
-rw-r--r--main/src/ui/res/values-et/arrays.xml18
-rw-r--r--main/src/ui/res/values-et/strings.xml9
-rw-r--r--main/src/ui/res/values-fa/arrays.xml43
-rw-r--r--main/src/ui/res/values-fa/plurals.xml19
-rw-r--r--main/src/ui/res/values-fa/strings.xml504
-rw-r--r--main/src/ui/res/values-fr/arrays.xml18
-rw-r--r--main/src/ui/res/values-fr/strings.xml112
-rw-r--r--main/src/ui/res/values-he/arrays.xml43
-rw-r--r--main/src/ui/res/values-he/plurals.xml27
-rw-r--r--main/src/ui/res/values-he/strings.xml502
-rw-r--r--main/src/ui/res/values-hu/arrays.xml8
-rw-r--r--main/src/ui/res/values-hu/strings.xml47
-rw-r--r--main/src/ui/res/values-in/arrays.xml21
-rw-r--r--main/src/ui/res/values-in/plurals.xml7
-rw-r--r--main/src/ui/res/values-in/strings.xml19
-rw-r--r--main/src/ui/res/values-it/arrays.xml18
-rw-r--r--main/src/ui/res/values-it/strings.xml19
-rw-r--r--main/src/ui/res/values-ja/arrays.xml18
-rw-r--r--main/src/ui/res/values-ja/strings.xml10
-rw-r--r--main/src/ui/res/values-ko/arrays.xml18
-rw-r--r--main/src/ui/res/values-ko/strings.xml12
-rw-r--r--main/src/ui/res/values-nl/arrays.xml12
-rw-r--r--main/src/ui/res/values-nl/strings.xml9
-rw-r--r--main/src/ui/res/values-no/arrays.xml6
-rw-r--r--main/src/ui/res/values-no/strings.xml6
-rw-r--r--main/src/ui/res/values-pl/arrays.xml22
-rw-r--r--main/src/ui/res/values-pl/strings.xml41
-rw-r--r--main/src/ui/res/values-pt-rBR/arrays.xml43
-rw-r--r--main/src/ui/res/values-pt-rBR/plurals.xml19
-rw-r--r--main/src/ui/res/values-pt-rBR/strings.xml488
-rw-r--r--main/src/ui/res/values-pt/arrays.xml6
-rw-r--r--main/src/ui/res/values-pt/strings.xml6
-rw-r--r--main/src/ui/res/values-ro/arrays.xml6
-rw-r--r--main/src/ui/res/values-ro/strings.xml14
-rw-r--r--main/src/ui/res/values-ru/arrays.xml20
-rw-r--r--main/src/ui/res/values-ru/strings.xml373
-rw-r--r--main/src/ui/res/values-si/arrays.xml43
-rw-r--r--main/src/ui/res/values-si/plurals.xml19
-rw-r--r--main/src/ui/res/values-si/strings.xml496
-rw-r--r--main/src/ui/res/values-sk/arrays.xml31
-rw-r--r--main/src/ui/res/values-sk/plurals.xml27
-rw-r--r--main/src/ui/res/values-sk/strings.xml467
-rw-r--r--main/src/ui/res/values-sl/arrays.xml6
-rw-r--r--main/src/ui/res/values-sl/strings.xml9
-rw-r--r--main/src/ui/res/values-sr-rSP/arrays.xml37
-rw-r--r--main/src/ui/res/values-sr-rSP/plurals.xml23
-rw-r--r--main/src/ui/res/values-sr-rSP/strings.xml467
-rw-r--r--main/src/ui/res/values-sv/arrays.xml22
-rw-r--r--main/src/ui/res/values-sv/strings.xml45
-rw-r--r--main/src/ui/res/values-tr/arrays.xml18
-rw-r--r--main/src/ui/res/values-tr/strings.xml46
-rw-r--r--main/src/ui/res/values-uk/arrays.xml24
-rw-r--r--main/src/ui/res/values-uk/plurals.xml14
-rw-r--r--main/src/ui/res/values-uk/strings.xml61
-rw-r--r--main/src/ui/res/values-vi/arrays.xml18
-rw-r--r--main/src/ui/res/values-vi/strings.xml44
-rw-r--r--main/src/ui/res/values-zh-rCN/arrays.xml18
-rw-r--r--main/src/ui/res/values-zh-rCN/strings.xml22
-rw-r--r--main/src/ui/res/values-zh-rTW/arrays.xml18
-rw-r--r--main/src/ui/res/values-zh-rTW/strings.xml16
-rw-r--r--main/src/ui/res/values/refs.xml27
-rw-r--r--main/src/ui/res/xml/general_settings.xml4
-rw-r--r--misc/Banner_besser_tv.pngbin62798 -> 90044 bytes
-rw-r--r--misc/Banner_besser_tv.psdbin851334 -> 998794 bytes
-rw-r--r--misc/code-transparency.pem32
-rw-r--r--misc/ic_launcher-playstore.pngbin0 -> 17429 bytes
-rw-r--r--misc/logo_arne3.svg113
-rw-r--r--misc/logo_bunt.svg19
-rw-r--r--misc/logo_sw.svg8
-rw-r--r--remoteExample/build.gradle13
-rw-r--r--remoteExample/src/main/AndroidManifest.xml4
-rwxr-xr-xruncoverity.sh5
-rw-r--r--settings.gradle.kts16
-rw-r--r--tlsexternalcertprovider/build.gradle29
-rw-r--r--tlsexternalcertprovider/src/androidTest/java/de/blinkt/externalcertprovider/ExampleInstrumentedTest.java31
-rw-r--r--tlsexternalcertprovider/src/main/AndroidManifest.xml6
361 files changed, 7804 insertions, 1486 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 449907eb..287a0175 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -7,7 +7,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- target: [Ui, Skeleton]
+ target: [UiOvpn23, SkeletonOvpn2, UiOvpn2]
name: "Release ${{ matrix.target }}"
runs-on: ubuntu-latest
steps:
@@ -17,7 +17,19 @@ jobs:
uses: actions/checkout@v2
with:
submodules: true
+ - name: set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: 17
+ cache: 'gradle'
- name: Build the app
run: ./gradlew assemble${{ matrix.target }}Release
- name: Run Unit tests
- run: ./gradlew test${{ matrix.target }}ReleaseUnitTest \ No newline at end of file
+ run: ./gradlew test${{ matrix.target }}ReleaseUnitTest
+
+ - name: Archive apk artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: build-${{matrix.target}}-release-apk
+ path: main/build/outputs/apk/**/*universal*.apk
diff --git a/README.md b/README.md
index 415fc0ca..756f611a 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,49 @@ With the new VPNService of Android API level 14+ (Ice Cream Sandwich) it is poss
<a href="https://play.google.com/store/apps/details?id=de.blinkt.openvpn" target="_blank">
<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt="Get it on Google Play" height="80"/></a>
+Code Transparency
+-----------------
+Fingerprint of the code transparency key used to be able to verify that
+apks generated by the Play are not modified (https://developer.android.com/guide/app-bundle/code-transparency):
+
+ 19 62 43 6C 96 B4 9D 12 75 83 B1 22 DA 14 F4 5D 2B 78 5D A4 13 1F 04 BE 73 A0 88 32 15 59 18 8D
+
+Full signing certificate (also under misc/code-transparency.pem):
+
+ -----BEGIN CERTIFICATE-----
+ MIIFjTCCA3WgAwIBAgIIJDXa55a+Ag0wDQYJKoZIhvcNAQEMBQAwdDELMAkGA1UE
+ BhMCREUxDDAKBgNVBAgTA05SVzESMBAGA1UEBxMJUGFkZXJib3JuMRowGAYDVQQK
+ ExFBdmlhbiBJUCBDYXJyaWVyczEQMA4GA1UECxMHUkZDMTE0OTEVMBMGA1UEAxMM
+ QXJuZSBTY2h3YWJlMCAXDTIzMDcyNzA5MzEyNloYDzIwNTMwNzE5MDkzMTI2WjB0
+ MQswCQYDVQQGEwJERTEMMAoGA1UECBMDTlJXMRIwEAYDVQQHEwlQYWRlcmJvcm4x
+ GjAYBgNVBAoTEUF2aWFuIElQIENhcnJpZXJzMRAwDgYDVQQLEwdSRkMxMTQ5MRUw
+ EwYDVQQDEwxBcm5lIFNjaHdhYmUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+ AoICAQC8FZVaV1aEy3SmIWQSn0xVjn9yrhOyQOZ2AasqB9EH1ylSZs4zii/ePiBE
+ 4g/auhDPnn/K1hWYevCJr/7zvJVaaocpl0hLqXHCQr7tSifREDM8lHeXYlW67Bbx
+ sFFREvHfDyAHM5CYDzIEDWrHNp2mBFRLLP1fgl5bZ8r50UCyNdvgIHozDwXITdnR
+ FeTSzIugZaLL+tGvtVU3Mc03bHhFp9mVbB3ZRjVnZsQ8Abs++zimT9srDqRFkbC0
+ F1N+Syicw3JRI2trLB6Fezc4lCwAmeKQRIY+QOdCZZSaD5+iyINcXg63QJRkGdoL
+ GHhp6wCiJD2xwpuiQLVVzF1sIOUJWq0tcjazjXo3axsHbMhRZNCwspq2wUTgLtuZ
+ xSWT1enJF+1o2Y4ecR+aaKorppFe00Bhylg1+tj0CWfn6rwee1jkyf+hFDIuqvZi
+ Mukbeke7K3ADK8JdJ6xl9FbZeafFxGHiwt+Ftc5oDariC3LR3gN0ochrNiNI20qS
+ 3ZAKeHaRLy6AUP8ccvD+KQf439JVXquDdlCgFkE7uSv136cY3HVk1QPzzDJFwFoQ
+ TNdLajd2YJD1GXZzinT+HOjrLt61P+qAY1cmsxaKdBdBRXFiRyUaZbBUD+4omcvy
+ Uoz8nWXUdwqyEjtYeq+XmL4HX3t3JhNy8zfyLpf6Xa4y0Zdq9QIDAQABoyEwHzAd
+ BgNVHQ4EFgQUoivC+NgNB1xqM76DTI3QR6DCgFIwDQYJKoZIhvcNAQEMBQADggIB
+ ALo1KRzLjgbpK1aZPfJJ63R2CQLX2KpolHO4GZxcXgZCv2h9V45aiLO6nKUDL6Dc
+ 6A0izgxtNQlwuloBTb0fMIS/A9Pl1p8/M1JvYNC1zDWVBKeUMkEeBwVCo8rn8giG
+ GtdDNLJmFv5bqgS6ZF2av2pZnkr2Q2sAiSFVpBzFjP2T5/WNkO3O7ybTb+c5VeQE
+ DuOpJawd+/5m4SjYmthARBX57gpDZiGR/Usid2FHrSSXmddbFkD8tbZUM0AvSW4z
+ 8TX2v3eO3PJPov5uksV4USNCUxPx7KfVQDsvbGJyup9I08fvVrAI1ZJGuk33QGLa
+ Uy2U7UuUGmarOpN9xBrTWkGw/6J+XdJbArRV3N+TjzAs0cCCcqp94+W7aXb7Bvna
+ ssXnvvd8Ph2DVocv4msk8NNnGh4Ss2wbfOM1j7hlka0szARjOzribm3oagu5dQmE
+ b+CV2mE9RokP3co1hMIf4GAFQM+Ul+4nzz2ogQ7JJfkbLJFnM0WUUzpeKLmB3UD6
+ 3kWlS6ZsDrqXUDNwUJ0Fn4Kcg0YYKGtQGqUngcwYlU8iuH+WU/cf2XuLM/r8K94l
+ P7u5iBz+Cot3lyKMv7GY4huboCe91i4njrjUJkYbyXdNS5WvZoznvg/YsAYBsYk8
+ X3vLORq2tRoP4oMEEGEussYdnpWeqYroHJ9FdDM7Sv7e
+ -----END CERTIFICATE-----
+
+
Developing
---------------
If you want to develop on ics-openvpn please read the [doc/README.txt](https://github.com/schwabe/ics-openvpn/blob/master/doc/README.txt) *before* opening issues or emailing me.
diff --git a/build.gradle.kts b/build.gradle.kts
index a855bbc9..435eb00f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -3,27 +3,7 @@
* Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
*/
-
-buildscript {
- var kotlin_version: String by extra
- var fragment_version: String by extra
-
- kotlin_version = "1.5.30"
- fragment_version = "1.3.3"
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath("com.android.tools.build:gradle:7.2.1")
- classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
- }
-}
-
-allprojects {
- repositories {
- google()
- mavenCentral()
- maven(url = "https://jitpack.io")
- }
-}
+plugins {
+ alias(libs.plugins.android.application) apply false
+ alias(libs.plugins.kotlin.android) apply false
+} \ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 6f1fed53..14448e8f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,7 +3,8 @@
# Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
#
-android.enableJetifier=true
android.useAndroidX=true
-android.enableUnitTestBinaryResources=false
+android.defaults.buildfeatures.buildconfig=true
+android.nonTransitiveRClass=false
+android.nonFinalResIds=false
org.gradle.jvmargs=-Xmx4096m
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
new file mode 100644
index 00000000..e98a714f
--- /dev/null
+++ b/gradle/libs.versions.toml
@@ -0,0 +1,58 @@
+[versions]
+android-gradle-plugin = "8.1.1"
+androidx-annotation = "1.6.0"
+androidx-appcompat = "1.6.1"
+android-view-material = "1.7.0"
+androidx-core-ktx = "1.10.1"
+androidx-fragment-ktx = "1.6.0"
+androidx-preference-ktx = "1.2.0"
+androidx-webkit = "1.7.0"
+androidx-lifecycle-viewmodel-ktx = "2.6.1"
+androidx-lifecycle-runtime-ktx = "2.6.1"
+androidx-security-crypto = "1.1.0-alpha06"
+androidx-constraintlayout = "2.1.4"
+androidx-cardview = "1.0.0"
+androidx-recyclerview = "1.3.0"
+bouncycastle = "1.49"
+mpandroidchart = "v3.1.0"
+kotlin = "1.9.0"
+square-okhttp = "4.10.0"
+
+# Test
+androidx-test-core = "1.4.0"
+junit = "4.13.2"
+mockito-core = "3.9.0"
+robolectric = "4.10.2"
+
+[libraries]
+android-view-material = { group = "com.google.android.material", name = "material", version.ref = "android-view-material" }
+androidx-annotation = { group = "androidx.annotation", name = "annotation", version.ref = "androidx-annotation" }
+androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" }
+androidx-cardview = { group = "androidx.cardview", name = "cardview", version.ref = "androidx-cardview" }
+androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraintlayout" }
+androidx-core-ktx = { group = "androidx.core", name = "core", version.ref = "androidx-core-ktx" }
+androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "androidx-fragment-ktx" }
+androidx-preference-ktx = { group = "androidx.preference", name = "preference-ktx", version.ref = "androidx-preference-ktx" }
+androidx-webkit = { group = "androidx.webkit", name = "webkit", version.ref = "androidx-webkit" }
+androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-viewmodel-ktx" }
+androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidx-lifecycle-runtime-ktx" }
+androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "androidx-recyclerview" }
+androidx-security-crypto = { group = "androidx.security", name = "security-crypto", version.ref = "androidx-security-crypto" }
+mpandroidchart = { group = "com.github.PhilJay", name = "MPAndroidChart", version.ref = "mpandroidchart" }
+org-bouncycastle-bcprov-jdk15on = { group = "org.bouncycastle", name = "bcprov-jdk15on", version.ref = "bouncycastle" }
+org-bouncycastle-bcprov-ext-jdk15on = { group = "org.bouncycastle", name = "bcprov-ext-jdk15on", version.ref = "bouncycastle" }
+org-bouncycastle-bcpkix-jdk15on = { group = "org.bouncycastle", name = "bcpkix-jdk15on", version.ref = "bouncycastle" }
+org-bouncycastle-bcmail-jdk15on = { group = "org.bouncycastle", name = "bcmail-jdk15on", version.ref = "bouncycastle" }
+org-bouncycastle-bcpg-jdk15on = { group = "org.bouncycastle", name = "bcpg-jdk15on", version.ref = "bouncycastle" }
+kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
+square-okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "square-okhttp" }
+
+# Test
+androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidx-test-core" }
+junit = { group = "junit", name = "junit", version.ref = "junit" }
+mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito-core" }
+robolectric = { group = "org.robolectric", name = "robolectric", version.ref = "robolectric" }
+
+[plugins]
+android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" }
+kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } \ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b6d47fa7..06fe19dc 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
diff --git a/main/build.gradle.kts b/main/build.gradle.kts
index ac2eeae0..7a7f2c6b 100644
--- a/main/build.gradle.kts
+++ b/main/build.gradle.kts
@@ -6,22 +6,29 @@ import com.android.build.gradle.api.ApplicationVariant
*/
plugins {
- id("com.android.application")
+ alias(libs.plugins.android.application)
+ alias(libs.plugins.kotlin.android)
id("checkstyle")
-
- id("kotlin-android")
}
android {
- compileSdk = 33
+ buildToolsVersion = "33.0.1"
+ buildFeatures {
+ aidl = true
+ }
+ namespace = "de.blinkt.openvpn"
+ compileSdk = 34
+ //compileSdkPreview = "UpsideDownCake"
- ndkVersion = "24.0.8215888"
+ // Also update runcoverity.sh
+ ndkVersion = "25.2.9519653"
defaultConfig {
minSdk = 21
- targetSdk = 33
- versionCode = 193
- versionName = "0.7.38"
+ targetSdk = 34
+ //targetSdkPreview = "UpsideDownCake"
+ versionCode = 204
+ versionName = "0.7.49"
externalNativeBuild {
cmake {
}
@@ -29,7 +36,7 @@ android {
}
- testOptions.unitTests.isIncludeAndroidResources = true
+ //testOptions.unitTests.isIncludeAndroidResources = true
externalNativeBuild {
cmake {
@@ -71,6 +78,20 @@ android {
enableV2Signing = true
}
+ create("releaseOvpn2") {
+ // ~/.gradle/gradle.properties
+ val keystoreO2File: String? by project
+ storeFile = keystoreO2File?.let { file(it) }
+ val keystoreO2Password: String? by project
+ storePassword = keystoreO2Password
+ val keystoreO2AliasPassword: String? by project
+ keyPassword = keystoreO2AliasPassword
+ val keystoreO2Alias: String? by project
+ keyAlias = keystoreO2Alias
+ enableV1Signing = true
+ enableV2Signing = true
+ }
+
}
lint {
@@ -79,32 +100,51 @@ android {
disable += setOf("MissingTranslation", "UnsafeNativeCodeLocation")
}
- buildTypes {
- getByName("release") {
- if (project.hasProperty("icsopenvpnDebugSign")) {
- logger.warn("property icsopenvpnDebugSign set, using debug signing for release")
- signingConfig = android.signingConfigs.getByName("debug")
- } else {
- signingConfig = signingConfigs.getByName("release")
- }
- }
- }
- flavorDimensions += listOf("implementation")
+
+ flavorDimensions += listOf("implementation", "ovpnimpl")
productFlavors {
create("ui") {
dimension = "implementation"
- buildConfigField("boolean", "openvpn3", "true")
}
+
create("skeleton") {
dimension = "implementation"
+ }
+
+ create("ovpn23")
+ {
+ dimension = "ovpnimpl"
+ buildConfigField("boolean", "openvpn3", "true")
+ }
+
+ create("ovpn2")
+ {
+ dimension = "ovpnimpl"
+ versionNameSuffix = "-o2"
buildConfigField("boolean", "openvpn3", "false")
}
}
+ buildTypes {
+ getByName("release") {
+ if (project.hasProperty("icsopenvpnDebugSign")) {
+ logger.warn("property icsopenvpnDebugSign set, using debug signing for release")
+ signingConfig = android.signingConfigs.getByName("debug")
+ } else {
+ productFlavors["ovpn23"].signingConfig = signingConfigs.getByName("release")
+ productFlavors["ovpn2"].signingConfig = signingConfigs.getByName("releaseOvpn2")
+ }
+ }
+ }
+
compileOptions {
- targetCompatibility = JavaVersion.VERSION_1_8
- sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_17
+ sourceCompatibility = JavaVersion.VERSION_17
+ }
+
+ kotlinOptions {
+ jvmTarget = "17"
}
splits {
@@ -116,7 +156,36 @@ android {
}
}
+ packaging {
+ jniLibs {
+ useLegacyPackaging = true
+ }
+ }
+
+ bundle {
+ codeTransparency {
+ signing {
+ val keystoreTPFile: String? by project
+ storeFile = keystoreTPFile?.let { file(it) }
+ val keystoreTPPassword: String? by project
+ storePassword = keystoreTPPassword
+ val keystoreTPAliasPassword: String? by project
+ keyPassword = keystoreTPAliasPassword
+ val keystoreTPAlias: String? by project
+ keyAlias = keystoreTPAlias
+
+ if (keystoreTPFile?.isEmpty() ?: true)
+ println("keystoreTPFile not set, disabling transparency signing")
+ if (keystoreTPPassword?.isEmpty() ?: true)
+ println("keystoreTPPassword not set, disabling transparency signing")
+ if (keystoreTPAliasPassword?.isEmpty() ?: true)
+ println("keystoreTPAliasPassword not set, disabling transparency signing")
+ if (keystoreTPAlias?.isEmpty() ?: true)
+ println("keyAlias not set, disabling transparency signing")
+ }
+ }
+ }
}
var swigcmd = "swig"
@@ -162,40 +231,31 @@ android.applicationVariants.all(object : Action<ApplicationVariant> {
dependencies {
// https://maven.google.com/web/index.html
- // https://developer.android.com/jetpack/androidx/releases/core
- val preferenceVersion = "1.2.0"
- val coreVersion = "1.7.0"
- val materialVersion = "1.5.0"
- val fragment_version = "1.4.1"
-
-
- implementation("androidx.annotation:annotation:1.3.0")
- implementation("androidx.core:core:$coreVersion")
-
-
- // Is there a nicer way to do this?
- dependencies.add("uiImplementation", "androidx.constraintlayout:constraintlayout:2.1.3")
- dependencies.add("uiImplementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21")
- dependencies.add("uiImplementation", "androidx.cardview:cardview:1.0.0")
- dependencies.add("uiImplementation", "androidx.recyclerview:recyclerview:1.2.1")
- dependencies.add("uiImplementation", "androidx.appcompat:appcompat:1.4.1")
- dependencies.add("uiImplementation", "com.github.PhilJay:MPAndroidChart:v3.1.0")
- dependencies.add("uiImplementation", "com.squareup.okhttp3:okhttp:4.9.3")
- dependencies.add("uiImplementation", "androidx.core:core:$coreVersion")
- dependencies.add("uiImplementation", "androidx.core:core-ktx:$coreVersion")
- dependencies.add("uiImplementation", "androidx.fragment:fragment-ktx:$fragment_version")
- dependencies.add("uiImplementation", "androidx.preference:preference:$preferenceVersion")
- dependencies.add("uiImplementation", "androidx.preference:preference-ktx:$preferenceVersion")
- dependencies.add("uiImplementation", "com.google.android.material:material:$materialVersion")
- dependencies.add("uiImplementation", "androidx.webkit:webkit:1.4.0")
- dependencies.add("uiImplementation", "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1")
- dependencies.add("uiImplementation", "androidx.lifecycle:lifecycle-runtime-ktx:2.4.1")
- dependencies.add("uiImplementation","androidx.security:security-crypto:1.0.0")
-
-
- testImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21")
- testImplementation("junit:junit:4.13.2")
- testImplementation("org.mockito:mockito-core:3.9.0")
- testImplementation("org.robolectric:robolectric:4.5.1")
- testImplementation("androidx.test:core:1.4.0")
+ implementation(libs.androidx.annotation)
+ implementation(libs.androidx.core.ktx)
+
+ uiImplementation(libs.android.view.material)
+ uiImplementation(libs.androidx.appcompat)
+ uiImplementation(libs.androidx.cardview)
+ uiImplementation(libs.androidx.constraintlayout)
+ uiImplementation(libs.androidx.core.ktx)
+ uiImplementation(libs.androidx.fragment.ktx)
+ uiImplementation(libs.androidx.lifecycle.runtime.ktx)
+ uiImplementation(libs.androidx.lifecycle.viewmodel.ktx)
+ uiImplementation(libs.androidx.preference.ktx)
+ uiImplementation(libs.androidx.recyclerview)
+ uiImplementation(libs.androidx.security.crypto)
+ uiImplementation(libs.androidx.webkit)
+ uiImplementation(libs.kotlin)
+ uiImplementation(libs.mpandroidchart)
+ uiImplementation(libs.square.okhttp)
+
+ testImplementation(libs.androidx.test.core)
+ testImplementation(libs.junit)
+ testImplementation(libs.kotlin)
+ testImplementation(libs.mockito.core)
+ testImplementation(libs.robolectric)
}
+
+fun DependencyHandler.uiImplementation(dependencyNotation: Any): Dependency? =
+ add("uiImplementation", dependencyNotation) \ No newline at end of file
diff --git a/main/misc/fetchtranslations.sh b/main/misc/fetchtranslations.sh
index 6e3d24e4..e76ac36c 100755
--- a/main/misc/fetchtranslations.sh
+++ b/main/misc/fetchtranslations.sh
@@ -15,7 +15,10 @@ wget -nv https://crowdin.com/backend/download/project/ics-openvpn.zip
# Chinese language require zh-CN and zh-TW
typeset -A langhash
-langhash=(zh-CN zh-rCN zh-TW zh-rTW id-ID in ca-ES ca cs-CZ cs et-EE et ja-JP ja ko-KR ko sv-SE sv uk-UA uk vi-VN vi sl-SI sl da-DK da be-BY be)
+langhash=(zh-CN zh-rCN zh-TW zh-rTW id-ID in ca-ES ca cs-CZ cs et-EE et
+ ja-JP ja ko-KR ko sv-SE sv uk-UA uk vi-VN vi sl-SI sl da-DK
+ da be-BY be he-IL he ar-SA ar fa-IR fa si-LK si pt-BR pt-rBR
+ sr-SP sr-rSP el-GR el sk-SK sk)
langtoinclude="de es fr hu it no nl pl pt ro ru tr"
@@ -34,4 +37,6 @@ do
tar -xv -C src/ui/res/values-$rlang/ --strip-components 2 -f ics-openvpn.zip res/values-$alang/
done
-rm ics-openvpn.zip
+if [ "$NODELETE" = "" ]; then
+ rm ics-openvpn.zip
+fi \ No newline at end of file
diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml
index 61d96c4b..ab8654b5 100644
--- a/main/src/main/AndroidManifest.xml
+++ b/main/src/main/AndroidManifest.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="de.blinkt.openvpn">
+ xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<!-- Used to show all apps in the allowed Apps selection,
this app needs the list the app in the allow/deny apps over the VPN -->
@@ -28,8 +29,8 @@
android:name=".core.ICSOpenVPNApplication"
android:allowBackup="true"
android:appCategory="productivity"
- android:extractNativeLibs="true"
android:icon="@mipmap/ic_launcher"
+ android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app"
android:supportsRtl="true"
android:theme="@style/blinkt"
@@ -51,11 +52,13 @@
android:name=".core.OpenVPNService"
android:exported="true"
android:permission="android.permission.BIND_VPN_SERVICE"
- android:foregroundServiceType="connectedDevice"
+ android:foregroundServiceType="specialUse"
android:process=":openvpn">
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
+ <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="vpn"/>
+
</service>
<service
android:name=".api.ExternalOpenVPNService"
@@ -92,6 +95,11 @@
</intent-filter>
</receiver>
+ <service android:name=".core.keepVPNAlive"
+ android:process=":openvpn"
+ android:exported="true"
+ android:permission="android.permission.BIND_JOB_SERVICE"/>
+
<activity
android:name=".LaunchVPN"
@@ -115,7 +123,14 @@
</intent-filter>
</receiver>
-->
- <activity android:name=".api.RemoteAction" />
+ <activity android:name=".api.RemoteAction"
+ android:launchMode="singleInstance"
+ android:autoRemoveFromRecents="true"
+ android:excludeFromRecents="true"
+ android:taskAffinity=".LaunchVPN"
+ android:theme="@style/blinkt.dialog"
+ android:noHistory="true"
+ />
<activity-alias
android:name=".api.ConnectVPN"
diff --git a/main/src/main/assets/full_licenses.html b/main/src/main/assets/full_licenses.html
index a32190df..fd87dd49 100644
--- a/main/src/main/assets/full_licenses.html
+++ b/main/src/main/assets/full_licenses.html
@@ -167,120 +167,209 @@ DEALINGS IN THE SOFTWARE.
<p>END OF TERMS AND CONDITIONS</p>
<h2 id="#openssl">OpenSSL</h2>
-<p> The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
- the OpenSSL License and the original SSLeay license apply to the toolkit.
- See below for the actual license texts. Actually both licenses are BSD-style
- Open Source licenses. In case of any license issues related to OpenSSL
- please contact openssl-core@openssl.org.</p>
-
-<p>/* ====================================================================
-<br> * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved.
-<br> *
-<br>* Redistribution and use in source and binary forms, with or without
-<br> * modification, are permitted provided that the following conditions
-<br> * are met:
-<br> *
-<br> * 1. Redistributions of source code must retain the above copyright
-<br> * notice, this list of conditions and the following disclaimer.
-<br> *
-<br> * 2. Redistributions in binary form must reproduce the above copyright
-<br> * notice, this list of conditions and the following disclaimer in
-<br> * the documentation and/or other materials provided with the
-<br> * distribution.
-<br> *
-<br> * 3. All advertising materials mentioning features or use of this
-<br> * software must display the following acknowledgment:
-<br> * "This product includes software developed by the OpenSSL Project
-<br> * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
-<br> *
-<br> * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
-<br> * endorse or promote products derived from this software without
-<br> * prior written permission. For written permission, please contact
-<br> * openssl-core@openssl.org.
-<br> *
-<br> * 5. Products derived from this software may not be called "OpenSSL"
-<br> * nor may "OpenSSL" appear in their names without prior written
-<br> * permission of the OpenSSL Project.
-<br> *
-<br> * 6. Redistributions of any form whatsoever must retain the following
-<br> * acknowledgment:
-<br> * "This product includes software developed by the OpenSSL Project
-<br> * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
-<br> *
-<br> * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
-<br> * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-<br> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-<br> * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
-<br> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-<br> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-<br> * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-<br> * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-<br> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-<br> * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-<br> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-<br> * OF THE POSSIBILITY OF SUCH DAMAGE.
-<br> * ====================================================================
-<br> *
-<br> * This product includes cryptographic software written by Eric Young
-<br> * (eay@cryptsoft.com). This product includes software written by Tim
-<br> * Hudson (tjh@cryptsoft.com).
-<br> *
-<br> */
-
-<h3> Original SSLeay License</h3>
-<br> /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
-<br> * All rights reserved.
-<br> *
-<br> * This package is an SSL implementation written
-<br> * by Eric Young (eay@cryptsoft.com).
-<br> * The implementation was written so as to conform with Netscapes SSL.
-<br> *
-<br> * This library is free for commercial and non-commercial use as long as
-<br> * the following conditions are aheared to. The following conditions
-<br> * apply to all code found in this distribution, be it the RC4, RSA,
-<br> * lhash, DES, etc., code; not just the SSL code. The SSL documentation
-<br> * included with this distribution is covered by the same copyright terms
-<br> * except that the holder is Tim Hudson (tjh@cryptsoft.com).
-<br> *
-<br> * Copyright remains Eric Young's, and as such any Copyright notices in
-<br> * the code are not to be removed.
-<br> * If this package is used in a product, Eric Young should be given attribution
-<br> * as the author of the parts of the library used.
-<br> * This can be in the form of a textual message at program startup or
-<br> * in documentation (online or textual) provided with the package.
-<br> *
-<br> * Redistribution and use in source and binary forms, with or without
-<br> * modification, are permitted provided that the following conditions
-<br> * are met:
-<br> * 1. Redistributions of source code must retain the copyright
-<br> * notice, this list of conditions and the following disclaimer.
-<br> * 2. Redistributions in binary form must reproduce the above copyright
-<br> * notice, this list of conditions and the following disclaimer in the
-<br> * documentation and/or other materials provided with the distribution.
-<br> * 3. All advertising materials mentioning features or use of this software
-<br> * must display the following acknowledgement:
-<br> * "This product includes cryptographic software written by
-<br> * Eric Young (eay@cryptsoft.com)"
-<br> * The word 'cryptographic' can be left out if the rouines from the library
-<br> * being used are not cryptographic related :-).
-<br> * 4. If you include any Windows specific code (or a derivative thereof) from
-<br> * the apps directory (application code) you must include an acknowledgement:
-<br> * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
-<br> *
-<br> * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
-<br> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-<br> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-<br> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-<br> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-<br> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-<br> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-<br> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-<br> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-<br> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-<br> * SUCH DAMAGE.
-<br> *
-<br> * The licence and distribution terms for any publically available version or
-<br> * derivative of this code cannot be changed. i.e. this code cannot simply be
-<br> * copied and put under another distribution licence
-<br> * [including the GNU Public Licence.]
-<br> */
+<p>
+
+ Apache License
+</p>
+<p></p> Version 2.0, January 2004</p>
+<p></p>https://www.apache.org/licenses/</p>
+
+<p><strong> TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION</strong></p>
+<p><strong>1.</strong> Definitions.
+</p>
+<p>
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+</p>
+<p>
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+</p>
+<p>
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+</p>
+<p>
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+</p>
+<p>
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+</p>
+<p>
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+</p>
+<p>
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+</p>
+<p>
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+</p>
+<p>
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+</p>
+<p>
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+</p>
+<p>
+ <strong>2.</strong> Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+</p>
+<p>
+ <strong>3.</strong> Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+</p>
+<p>
+
+ <strong>4.</strong> Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+</p>
+<p>
+ <strong>(a)</strong> You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+</p>
+<p>
+ <strong>(b)</strong> You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+</p>
+<p>
+ <strong>(c)</strong> You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+</p>
+<p>
+ <strong>(d)</strong> If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+</p>
+<p>
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+</p>
+<p>
+
+ <strong>5.</strong> Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+</p>
+<p>
+ <strong>6.</strong> Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+</p>
+<p>
+
+ <strong>7.</strong> Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+</p>
+<p>
+
+ <strong>8.</strong> Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+</p>
+<p>
+
+ <strong>9.</strong> Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+ </ol>
+ END OF TERMS AND CONDITIONS
diff --git a/main/src/main/cpp/CMakeLists.txt b/main/src/main/cpp/CMakeLists.txt
index 5347d049..fae64f33 100644
--- a/main/src/main/cpp/CMakeLists.txt
+++ b/main/src/main/cpp/CMakeLists.txt
@@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.4.1)
+project("ics-openvpn")
# Git version string
include(GetGitRevisionDescription.cmake)
@@ -92,7 +93,7 @@ include(openssl/openssl.cmake)
# -DHAVE_LZ4
# -DASIO_STANDALONE
# -DUSE_ASIO
- # -DGIT_VERSION_STRING=\"${OPENVPN3_GIT}\"
+ # -DOPENVPN_CORE_GIT_VERSION=\"${OPENVPN3_GIT}\"
# -DOPENVPN_SHOW_SESSION_TOKEN
# -DOPENSSL_API_COMPAT=0x10200000L
# -DOPENVPN_ALLOW_INSECURE_CERTPROFILE
@@ -109,8 +110,8 @@ target_compile_definitions(ovpnutil PRIVATE -DTARGET_ARCH_ABI=\"${ANDROID_ABI}\"
)
target_link_libraries(ovpnutil log)
-#add_library(rsapss SHARED ovpnutil/rsapss.cpp)
-#target_link_libraries(rsapss log crypto ssl)
+#add_library(osslutil SHARED ovpnutil/osslutil.cpp)
+#target_link_libraries(osslutil log crypto ssl)
#if (NOT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} MATCHES "build/intermediates/cmake/.*skeleton.*/")
# message("Building SSLSpeedTest for output dir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
@@ -167,6 +168,7 @@ set(openvpn_srcs
src/openvpn/occ.c
src/openvpn/openvpn.c
src/openvpn/options.c
+ src/openvpn/options_util.c
src/openvpn/otime.c
src/openvpn/packet_id.c
src/openvpn/perf.c
@@ -180,6 +182,7 @@ set(openvpn_srcs
src/openvpn/proxy.c
src/openvpn/ps.c
src/openvpn/push.c
+ src/openvpn/reflect_filter.c
src/openvpn/reliable.c
src/openvpn/route.c
src/openvpn/run_command.c
diff --git a/main/src/main/cpp/asio b/main/src/main/cpp/asio
-Subproject 4915cfd8a1653c157a1480162ae5601318553eb
+Subproject 1f8d154829b902dbc45a651587c6c6df948358e
diff --git a/main/src/main/cpp/lz4 b/main/src/main/cpp/lz4
-Subproject d44371841a2f1728a3f36839fd4b7e872d0927d
+Subproject 5ff839680134437dbf4678f3d0c7b371d84f496
diff --git a/main/src/main/cpp/openssl b/main/src/main/cpp/openssl
-Subproject 5a6a7d0c955b168ccaecbd16d5a8ae4d20304ff
+Subproject bf2a6facba08b980a00f2f2c4e46487471b17f6
diff --git a/main/src/main/cpp/openvpn b/main/src/main/cpp/openvpn
-Subproject 7e5f410745eeda7d08d83445429ecd70035b730
+Subproject a80f21b133ebf10bc3c36577fedef024c6ed303
diff --git a/main/src/main/cpp/openvpn-config/config.h b/main/src/main/cpp/openvpn-config/config.h
index ca33c91e..989e439a 100644
--- a/main/src/main/cpp/openvpn-config/config.h
+++ b/main/src/main/cpp/openvpn-config/config.h
@@ -21,27 +21,15 @@
/* Use dmalloc memory debugging library */
/* #undef DMALLOC */
-/* Dimension to use for empty array declaration */
-#define EMPTY_ARRAY_SIZE 0
-
-/* Enable client capability only */
-#define ENABLE_CLIENT_ONLY 1
-
/* Enable debugging support */
#define ENABLE_DEBUG 1
/* Enable internal fragmentation support */
#define ENABLE_FRAGMENT 1
-/* Enable HTTP proxy support */
-#define ENABLE_HTTP_PROXY 1
-
/* Enable management server capability */
#define ENABLE_MANAGEMENT 1
-/* Enable multi-homed UDP server capability */
-#define ENABLE_MULTIHOME 0
-
/* Allow --askpass and --auth-user-pass passwords to be read from a file */
#define ENABLE_PASSWORD_SAVE 1
@@ -450,13 +438,13 @@
#define PACKAGE_NAME "OpenVPN"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "OpenVPN 2.6-icsopenvpn"
+#define PACKAGE_STRING "OpenVPN 2.7-icsopenvpn"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "openvpn"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "2.6_master"
+#define PACKAGE_VERSION "2.7_master"
/* Define to the necessary symbol if this constant uses a non-standard name on
your system. */
diff --git a/main/src/main/cpp/openvpn3 b/main/src/main/cpp/openvpn3
-Subproject a6296185ec5d6f604ed2c66a3e1c81ff99e387f
+Subproject f159710100e1442c7354b4f24cbfe742abc8c89
diff --git a/main/src/main/cpp/ovpnutil/jniglue.c b/main/src/main/cpp/ovpnutil/jniglue.c
index 65a13406..b70deac0 100644
--- a/main/src/main/cpp/ovpnutil/jniglue.c
+++ b/main/src/main/cpp/ovpnutil/jniglue.c
@@ -3,7 +3,6 @@
#include <stdlib.h>
#include <unistd.h>
-
#include "jniglue.h"
jint JNI_OnLoad(JavaVM *vm, void *reserved) {
@@ -37,4 +36,4 @@ jstring Java_de_blinkt_openvpn_core_NativeUtils_getOpenVPN3GitVersion(JNIEnv *en
{
return (*env)->NewStringUTF(env, OPENVPN3_GIT_REVISION);
-}
+} \ No newline at end of file
diff --git a/main/src/main/cpp/ovpnutil/rsapss.cpp b/main/src/main/cpp/ovpnutil/osslutil.cpp
index 112c2fe4..6a33338e 100644
--- a/main/src/main/cpp/ovpnutil/rsapss.cpp
+++ b/main/src/main/cpp/ovpnutil/osslutil.cpp
@@ -13,9 +13,16 @@
#include <openssl/evp.h>
#include <openssl/rand.h>
#include <openssl/rsa.h>
+#include <openssl/opensslv.h>
#include <array>
+
+extern "C" jstring Java_de_blinkt_openvpn_core_NativeUtils_getOpenSSLVersionString(JNIEnv *env, jclass jo)
+{
+ return env->NewStringUTF(OPENSSL_VERSION_TEXT);
+}
+
static const unsigned char zeroes[] = {0, 0, 0, 0, 0, 0, 0, 0};
static char opensslerr[1024];
diff --git a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
index 86eef35a..90ea053a 100644
--- a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
@@ -73,6 +73,7 @@ public class LaunchVPN extends Activity {
public static final String EXTRA_KEY = "de.blinkt.openvpn.shortcutProfileUUID";
public static final String EXTRA_NAME = "de.blinkt.openvpn.shortcutProfileName";
public static final String EXTRA_HIDELOG = "de.blinkt.openvpn.showNoLogWindow";
+ public static final String EXTRA_START_REASON = "de.blinkt.openvpn.start_reason";
public static final String CLEARLOG = "clearlogconnect";
@@ -85,6 +86,7 @@ public class LaunchVPN extends Activity {
private boolean mCmfixed = false;
private String mTransientAuthPW;
private String mTransientCertOrPCKS12PW;
+ private String mSelectedProfileReason;
@Override
public void onCreate(Bundle icicle) {
@@ -99,7 +101,6 @@ public class LaunchVPN extends Activity {
IServiceStatus service = IServiceStatus.Stub.asInterface(binder);
try {
if (mTransientAuthPW != null)
-
service.setCachedPassword(mSelectedProfile.getUUIDString(), PasswordCache.AUTHPASSWORD, mTransientAuthPW);
if (mTransientCertOrPCKS12PW != null)
service.setCachedPassword(mSelectedProfile.getUUIDString(), PasswordCache.PCKS12ORCERTPASSWORD, mTransientCertOrPCKS12PW);
@@ -126,38 +127,41 @@ public class LaunchVPN extends Activity {
final String action = intent.getAction();
// If the intent is a request to create a shortcut, we'll do that and exit
+ if (!Intent.ACTION_MAIN.equals(action)) {
+ return;
+ }
+ // Check if we need to clear the log
+ if (Preferences.getDefaultSharedPreferences(this).getBoolean(CLEARLOG, true))
+ VpnStatus.clearLog();
- if (Intent.ACTION_MAIN.equals(action)) {
- // Check if we need to clear the log
- if (Preferences.getDefaultSharedPreferences(this).getBoolean(CLEARLOG, true))
- VpnStatus.clearLog();
-
- // we got called to be the starting point, most likely a shortcut
- String shortcutUUID = intent.getStringExtra(EXTRA_KEY);
- String shortcutName = intent.getStringExtra(EXTRA_NAME);
- mhideLog = intent.getBooleanExtra(EXTRA_HIDELOG, false);
+ // we got called to be the starting point, most likely a shortcut
+ String shortcutUUID = intent.getStringExtra(EXTRA_KEY);
+ String shortcutName = intent.getStringExtra(EXTRA_NAME);
+ String startReason = intent.getStringExtra(EXTRA_START_REASON);
+ mhideLog = intent.getBooleanExtra(EXTRA_HIDELOG, false);
- VpnProfile profileToConnect = ProfileManager.get(this, shortcutUUID);
- if (shortcutName != null && profileToConnect == null) {
- profileToConnect = ProfileManager.getInstance(this).getProfileByName(shortcutName);
- if (!(new ExternalAppDatabase(this).checkRemoteActionPermission(this, getCallingPackage()))) {
- finish();
- return;
- }
+ VpnProfile profileToConnect = ProfileManager.get(this, shortcutUUID);
+ if (shortcutName != null && profileToConnect == null) {
+ profileToConnect = ProfileManager.getInstance(this).getProfileByName(shortcutName);
+ if (!(new ExternalAppDatabase(this).checkRemoteActionPermission(this, getCallingPackage()))) {
+ finish();
+ return;
}
+ }
- if (profileToConnect == null) {
- VpnStatus.logError(R.string.shortcut_profile_notfound);
- // show Log window to display error
- showLogWindow();
- finish();
- } else {
- mSelectedProfile = profileToConnect;
- launchVPN();
- }
+ if (profileToConnect == null) {
+ VpnStatus.logError(R.string.shortcut_profile_notfound);
+ // show Log window to display error
+ showLogWindow();
+ finish();
+ } else {
+ mSelectedProfile = profileToConnect;
+ mSelectedProfileReason = startReason;
+ launchVPN();
}
+
}
private void askForPW(final int type) {
@@ -251,7 +255,7 @@ public class LaunchVPN extends Activity {
if (!mhideLog && showLogWindow)
showLogWindow();
ProfileManager.updateLRU(this, mSelectedProfile);
- VPNLaunchHelper.startOpenVpn(mSelectedProfile, getBaseContext());
+ VPNLaunchHelper.startOpenVpn(mSelectedProfile, getBaseContext(), mSelectedProfileReason);
finish();
}
} else if (resultCode == Activity.RESULT_CANCELED) {
diff --git a/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java b/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java
index ebfab5b2..58c954c9 100644
--- a/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java
+++ b/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java
@@ -12,12 +12,10 @@ import android.content.SharedPreferences;
import de.blinkt.openvpn.core.Preferences;
import de.blinkt.openvpn.core.ProfileManager;
+import de.blinkt.openvpn.core.VPNLaunchHelper;
public class OnBootReceiver extends BroadcastReceiver {
-
-
-
// Debug: am broadcast -a android.intent.action.BOOT_COMPLETED
@Override
public void onReceive(Context context, Intent intent) {
@@ -25,8 +23,8 @@ public class OnBootReceiver extends BroadcastReceiver {
final String action = intent.getAction();
SharedPreferences prefs = Preferences.getDefaultSharedPreferences(context);
- boolean useStartOnBoot = prefs.getBoolean("restartvpnonboot", false);
- if (!useStartOnBoot)
+ boolean alwaysActive = prefs.getBoolean("restartvpnonboot", false);
+ if (!alwaysActive)
return;
if(Intent.ACTION_BOOT_COMPLETED.equals(action) || Intent.ACTION_MY_PACKAGE_REPLACED.equals(action)) {
@@ -38,12 +36,6 @@ public class OnBootReceiver extends BroadcastReceiver {
}
void launchVPN(VpnProfile profile, Context context) {
- Intent startVpnIntent = new Intent(Intent.ACTION_MAIN);
- startVpnIntent.setClass(context, LaunchVPN.class);
- startVpnIntent.putExtra(LaunchVPN.EXTRA_KEY,profile.getUUIDString());
- startVpnIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startVpnIntent.putExtra(LaunchVPN.EXTRA_HIDELOG, true);
-
- context.startActivity(startVpnIntent);
+ VPNLaunchHelper.startOpenVpn(profile, context.getApplicationContext(), "on Boot receiver");
}
}
diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
index 3163bf27..0da09eb0 100644
--- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -809,18 +809,6 @@ public class VpnProfile implements Serializable, Cloneable {
return parts[0] + " " + netmask;
}
- public Intent prepareStartService(Context context) {
- Intent intent = getStartServiceIntent(context);
-
- // TODO: Handle this?!
-// if (mAuthenticationType == VpnProfile.TYPE_KEYSTORE || mAuthenticationType == VpnProfile.TYPE_USERPASS_KEYSTORE) {
-// if (getKeyStoreCertificates(context) == null)
-// return null;
-// }
-
- return intent;
- }
-
public void writeConfigFileOutput(Context context, OutputStream out) throws IOException {
OutputStreamWriter cfg = new OutputStreamWriter(out);
cfg.write(getConfigFile(context, false));
@@ -828,12 +816,14 @@ public class VpnProfile implements Serializable, Cloneable {
cfg.close();
}
- public Intent getStartServiceIntent(Context context) {
+ public Intent getStartServiceIntent(Context context, String startReason) {
String prefix = context.getPackageName();
Intent intent = new Intent(context, OpenVPNService.class);
intent.putExtra(prefix + ".profileUUID", mUuid.toString());
intent.putExtra(prefix + ".profileVersion", mVersion);
+ if (startReason != null)
+ intent.putExtra(prefix + ".startReason", startReason);
return intent;
}
diff --git a/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java b/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
index 01dacfcd..6cc170fa 100644
--- a/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
@@ -27,7 +27,7 @@ import de.blinkt.openvpn.core.VpnStatus;
*/
public class DisconnectVPN extends Activity implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
private IOpenVPNServiceInternal mService;
- private ServiceConnection mConnection = new ServiceConnection() {
+ private final ServiceConnection mConnection = new ServiceConnection() {
@@ -86,6 +86,7 @@ public class DisconnectVPN extends Activity implements DialogInterface.OnClickLi
} else if (which == DialogInterface.BUTTON_NEUTRAL) {
Intent intent = new Intent(this, LaunchVPN.class);
intent.putExtra(LaunchVPN.EXTRA_KEY, VpnStatus.getLastConnectedVPNProfile());
+ intent.putExtra(LaunchVPN.EXTRA_START_REASON, "Reconnect button pressed.");
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
diff --git a/main/src/main/java/de/blinkt/openvpn/api/AppRestrictions.java b/main/src/main/java/de/blinkt/openvpn/api/AppRestrictions.java
index 175ecb70..53919216 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/AppRestrictions.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/AppRestrictions.java
@@ -14,7 +14,7 @@ import android.text.TextUtils;
import de.blinkt.openvpn.VpnProfile;
import de.blinkt.openvpn.core.ConfigParser;
-import de.blinkt.openvpn.core.Connection;
+import de.blinkt.openvpn.core.OpenVPNService;
import de.blinkt.openvpn.core.Preferences;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VpnStatus;
@@ -22,6 +22,7 @@ import de.blinkt.openvpn.core.VpnStatus;
import java.io.IOException;
import java.io.StringReader;
import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
@@ -33,16 +34,15 @@ public class AppRestrictions {
final static int CONFIG_VERSION = 1;
static boolean alreadyChecked = false;
private static AppRestrictions mInstance;
- private RestrictionsManager mRestrictionsMgr;
private BroadcastReceiver mRestrictionsReceiver;
- private AppRestrictions(Context c) {
+ private AppRestrictions() {
}
public static AppRestrictions getInstance(Context c) {
if (mInstance == null)
- mInstance = new AppRestrictions(c);
+ mInstance = new AppRestrictions();
return mInstance;
}
@@ -62,11 +62,12 @@ public class AppRestrictions {
c.unregisterReceiver(mRestrictionsReceiver);
}
- private String hashConfig(String config) {
+ private String hashConfig(String rawconfig) {
+ String config = prepare(rawconfig);
MessageDigest digest;
try {
digest = MessageDigest.getInstance("SHA1");
- byte utf8_bytes[] = config.getBytes();
+ byte[] utf8_bytes = config.getBytes(StandardCharsets.UTF_8);
digest.update(utf8_bytes, 0, utf8_bytes.length);
return new BigInteger(1, digest.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
@@ -76,10 +77,14 @@ public class AppRestrictions {
}
private void applyRestrictions(Context c) {
- mRestrictionsMgr = (RestrictionsManager) c.getSystemService(Context.RESTRICTIONS_SERVICE);
- if (mRestrictionsMgr == null)
+ RestrictionsManager restrictionsMgr = (RestrictionsManager) c.getSystemService(Context.RESTRICTIONS_SERVICE);
+ if (restrictionsMgr == null)
return;
- Bundle restrictions = mRestrictionsMgr.getApplicationRestrictions();
+ Bundle restrictions = restrictionsMgr.getApplicationRestrictions();
+ parseRestrictionsBundle(c, restrictions);
+ }
+ public void parseRestrictionsBundle(Context c, Bundle restrictions)
+ {
if (restrictions == null)
return;
@@ -94,12 +99,57 @@ public class AppRestrictions {
VpnStatus.logError(String.format(Locale.US, "App restriction version %s does not match expected version %d", configVersion, CONFIG_VERSION));
return;
}
- Parcelable[] profileList = restrictions.getParcelableArray(("vpn_configuration_list"));
+ Parcelable[] profileList = restrictions.getParcelableArray("vpn_configuration_list");
if (profileList == null) {
- VpnStatus.logError("App restriction does not contain a profile list (vpn_configuration_list)");
+ VpnStatus.logInfo("App restriction does not contain a profile list. Removing previously added profiles. (vpn_configuration_list)");
+ profileList = new Parcelable[]{};
+ }
+
+ importVPNProfiles(c, restrictions, profileList);
+ setAllowedRemoteControl(c, restrictions);
+
+ setMiscSettings(c, restrictions);
+ }
+
+ private void setAllowedRemoteControl(Context c, Bundle restrictions) {
+ String allowedApps = restrictions.getString("allowed_remote_access", null);
+ ExternalAppDatabase extapps = new ExternalAppDatabase(c);
+
+ if (allowedApps == null)
+ {
+ extapps.setFlagManagedConfiguration(false);
return;
}
+ HashSet<String> restrictionApps = new HashSet<>();
+
+ for (String package_name:allowedApps.split("[, \n\r]")) {
+ if (!TextUtils.isEmpty(package_name)) {
+ restrictionApps.add(package_name);
+ }
+ }
+ extapps.setFlagManagedConfiguration(true);
+ extapps.clearAllApiApps();
+
+ if(!extapps.getExtAppList().equals(restrictionApps))
+ {
+ extapps.setAllowedApps(restrictionApps);
+ }
+ }
+
+ private static void setMiscSettings(Context c, Bundle restrictions) {
+ SharedPreferences defaultPrefs = Preferences.getDefaultSharedPreferences(c);
+
+ if(restrictions.containsKey("screenoffpausevpn"))
+ {
+ boolean pauseVPN = restrictions.getBoolean("screenoffpausevpn");
+ SharedPreferences.Editor editor = defaultPrefs.edit();
+ editor.putBoolean("screenoff", pauseVPN);
+ editor.apply();
+ }
+ }
+
+ private void importVPNProfiles(Context c, Bundle restrictions, Parcelable[] profileList) {
Set<String> provisionedUuids = new HashSet<>();
String defaultprofile = restrictions.getString("defaultprofile", null);
@@ -116,12 +166,19 @@ public class AppRestrictions {
String uuid = p.getString("uuid");
String ovpn = p.getString("ovpn");
String name = p.getString("name");
+ String certAlias = p.getString("certificate_alias");
- if (uuid == null || ovpn == null || name == null) {
+ if (TextUtils.isEmpty(uuid) || TextUtils.isEmpty(ovpn) || TextUtils.isEmpty(name)) {
VpnStatus.logError("App restriction profile misses uuid, ovpn or name key");
continue;
}
+ /* we always use lower case uuid since Android UUID class will use present
+ * them that way */
+ uuid = uuid.toLowerCase(Locale.US);
+ if (defaultprofile != null)
+ defaultprofile = defaultprofile.toLowerCase(Locale.US);
+
if (uuid.equals(defaultprofile))
defaultprofileProvisioned = true;
@@ -134,12 +191,15 @@ public class AppRestrictions {
if (vpnProfile != null) {
// Profile exists, check if need to update it
- if (ovpnHash.equals(vpnProfile.importedProfileHash))
+ if (ovpnHash.equals(vpnProfile.importedProfileHash)) {
+ addCertificateAlias(vpnProfile, certAlias, c);
+
// not modified skip to next profile
continue;
-
+ }
}
- addProfile(c, ovpn, uuid, name, vpnProfile);
+ vpnProfile = addProfile(c, ovpn, uuid, name, vpnProfile);
+ addCertificateAlias(vpnProfile, certAlias, c);
}
Vector<VpnProfile> profilesToRemove = new Vector<>();
@@ -155,22 +215,79 @@ public class AppRestrictions {
pm.removeProfile(c, vp);
}
+ SharedPreferences defaultPrefs = Preferences.getDefaultSharedPreferences(c);
+
if (!TextUtils.isEmpty(defaultprofile)) {
if (!defaultprofileProvisioned) {
VpnStatus.logError("App restrictions: Setting a default profile UUID without providing a profile with that UUID");
} else {
- SharedPreferences prefs = Preferences.getDefaultSharedPreferences(c);
- String uuid = prefs.getString("alwaysOnVpn", null);
+ String uuid = defaultPrefs.getString("alwaysOnVpn", null);
if (!defaultprofile.equals(uuid))
{
- SharedPreferences.Editor editor = prefs.edit();
+ SharedPreferences.Editor editor = defaultPrefs.edit();
editor.putString("alwaysOnVpn", defaultprofile);
editor.apply();
+
}
}
}
}
+ /**
+ * If certAlias is non-null will modify the profile type to use the keystore variant of
+ * the authentication method and will also set the keystore alias
+ */
+ private void addCertificateAlias(VpnProfile vpnProfile, String certAlias, Context c) {
+ if (vpnProfile == null)
+ return;
+
+ if (certAlias == null)
+ certAlias = "";
+
+ int oldType = vpnProfile.mAuthenticationType;
+ String oldAlias = vpnProfile.mAlias;
+
+ if (!TextUtils.isEmpty(certAlias)) {
+ switch (vpnProfile.mAuthenticationType)
+ {
+ case VpnProfile.TYPE_PKCS12:
+ case VpnProfile.TYPE_CERTIFICATES:
+ vpnProfile.mAuthenticationType = VpnProfile.TYPE_KEYSTORE;
+ break;
+ case VpnProfile.TYPE_USERPASS_CERTIFICATES:
+ case VpnProfile.TYPE_USERPASS_PKCS12:
+ vpnProfile.mAuthenticationType = VpnProfile.TYPE_USERPASS_KEYSTORE;
+ break;
+ }
+
+ } else
+ {
+ /* Alias is null, return to non keystore method */
+ boolean pkcs12present = !TextUtils.isEmpty(vpnProfile.mPKCS12Filename);
+ switch (vpnProfile.mAuthenticationType) {
+ case VpnProfile.TYPE_USERPASS_KEYSTORE:
+ if (pkcs12present)
+ vpnProfile.mAuthenticationType = VpnProfile.TYPE_USERPASS_PKCS12;
+ else
+ vpnProfile.mAuthenticationType = VpnProfile.TYPE_USERPASS_CERTIFICATES;
+ break;
+ case VpnProfile.TYPE_KEYSTORE:
+ if (pkcs12present)
+ vpnProfile.mAuthenticationType = VpnProfile.TYPE_PKCS12;
+ else
+ vpnProfile.mAuthenticationType = VpnProfile.TYPE_CERTIFICATES;
+ break;
+ }
+ }
+ vpnProfile.mAlias = certAlias;
+
+ if (!certAlias.equals(oldAlias) || oldType != vpnProfile.mAuthenticationType)
+ {
+ ProfileManager pm = ProfileManager.getInstance(c);
+ pm.saveProfile(c, vpnProfile);
+ }
+ }
+
private String prepare(String config) {
String newLine = System.getProperty("line.separator");
if (!config.contains(newLine) && !config.contains(" ")) {
@@ -187,7 +304,7 @@ public class AppRestrictions {
;
- private void addProfile(Context c, String config, String uuid, String name, VpnProfile vpnProfile) {
+ VpnProfile addProfile(Context c, String config, String uuid, String name, VpnProfile vpnProfile) {
config = prepare(config);
ConfigParser cp = new ConfigParser();
try {
@@ -213,9 +330,11 @@ public class AppRestrictions {
pm.addProfile(vp);
pm.saveProfile(c, vp);
pm.saveProfileList(c);
+ return vp;
} catch (ConfigParser.ConfigParseError | IOException | IllegalArgumentException e) {
VpnStatus.logException("Error during import of managed profile", e);
+ return null;
}
}
diff --git a/main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java b/main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java
index 57e82778..fe0afdb6 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java
@@ -13,11 +13,13 @@ import android.content.SharedPreferences.Editor;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Binder;
+import android.widget.Toast;
import java.util.HashSet;
import java.util.Set;
import de.blinkt.openvpn.core.Preferences;
+import de.blinkt.openvpn.core.VpnStatus;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
@@ -30,12 +32,34 @@ public class ExternalAppDatabase {
}
private final static String PREFERENCES_KEY = "allowed_apps";
+ private final static String PREFERENCES_KEY_MANAGED_CONFIG = "allowed_apps_managed";
+
+ public void setFlagManagedConfiguration(boolean managed)
+ {
+ SharedPreferences prefs = Preferences.getDefaultSharedPreferences(mContext);
+ Editor prefedit = prefs.edit();
+
+ prefedit.putBoolean(PREFERENCES_KEY_MANAGED_CONFIG, managed);
+ increaseWorkaroundCounter(prefs, prefedit);
+ prefedit.apply();
+ }
+
+ public boolean isManagedConfiguration()
+ {
+ SharedPreferences prefs = Preferences.getDefaultSharedPreferences(mContext);
+ return prefs.getBoolean(PREFERENCES_KEY_MANAGED_CONFIG, false);
+ }
+
+ private static void increaseWorkaroundCounter(SharedPreferences prefs, Editor prefedit) {
+ // Workaround for bug
+ int counter = prefs.getInt("counter", 0);
+ prefedit.putInt("counter", counter + 1);
+ }
boolean isAllowed(String packagename) {
Set<String> allowedapps = getExtAppList();
- return allowedapps.contains(packagename);
-
+ return allowedapps.contains(packagename);
}
public Set<String> getExtAppList() {
@@ -50,14 +74,22 @@ public class ExternalAppDatabase {
saveExtAppList(allowedapps);
}
+ public boolean checkAllowingModifyingRemoteControl(Context c) {
+ if (isManagedConfiguration()) {
+ Toast.makeText(c, "Remote control apps are manged by managed configuration, cannot change", Toast.LENGTH_LONG).show();
+ VpnStatus.logError("Remote control apps are manged by managed configuration, cannot change");
+ return false;
+ }
+ return true;
+ }
+
private void saveExtAppList( Set<String> allowedapps) {
SharedPreferences prefs = Preferences.getDefaultSharedPreferences(mContext);
Editor prefedit = prefs.edit();
// Workaround for bug
prefedit.putStringSet(PREFERENCES_KEY, allowedapps);
- int counter = prefs.getInt("counter", 0);
- prefedit.putInt("counter", counter + 1);
+ increaseWorkaroundCounter(prefs, prefedit);
prefedit.apply();
}
@@ -83,9 +115,9 @@ public class ExternalAppDatabase {
}
} catch (PackageManager.NameNotFoundException e) {
// App not found. Remove it from the list
- removeApp(appPackage);
+ if (!isManagedConfiguration())
+ removeApp(appPackage);
}
-
}
throw new SecurityException("Unauthorized OpenVPN API Caller");
}
@@ -105,4 +137,8 @@ public class ExternalAppDatabase {
return false;
}
}
+
+ public void setAllowedApps(Set<String> restrictionApps) {
+ saveExtAppList(restrictionApps);
+ }
}
diff --git a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
index 690c349e..ab71f00b 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
@@ -139,16 +139,18 @@ public class ExternalOpenVPNService extends Service implements StateListener {
* Check if we need to ask for username/password */
int neddPassword = vp.needUserPWInput(null, null);
+ String startReason = "external OpenVPN service by uid: " + Binder.getCallingUid();
if(vpnPermissionIntent != null || neddPassword != 0){
Intent shortVPNIntent = new Intent(Intent.ACTION_MAIN);
shortVPNIntent.setClass(getBaseContext(), de.blinkt.openvpn.LaunchVPN.class);
shortVPNIntent.putExtra(de.blinkt.openvpn.LaunchVPN.EXTRA_KEY, vp.getUUIDString());
shortVPNIntent.putExtra(de.blinkt.openvpn.LaunchVPN.EXTRA_HIDELOG, true);
+ shortVPNIntent.putExtra(de.blinkt.openvpn.LaunchVPN.EXTRA_START_REASON, startReason);
shortVPNIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(shortVPNIntent);
} else {
- VPNLaunchHelper.startOpenVpn(vp, getBaseContext());
+ VPNLaunchHelper.startOpenVpn(vp, getBaseContext(), startReason);
}
}
@@ -237,6 +239,8 @@ public class ExternalOpenVPNService extends Service implements StateListener {
mExtAppDb.checkOpenVPNPermission(getPackageManager());
ProfileManager pm = ProfileManager.getInstance(getBaseContext());
VpnProfile vp = ProfileManager.get(getBaseContext(), profileUUID);
+ if (vp == null)
+ throw new RemoteException("Profile not found");
pm.removeProfile(ExternalOpenVPNService.this, vp);
}
@@ -244,7 +248,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
public boolean protectSocket(ParcelFileDescriptor pfd) throws RemoteException {
mExtAppDb.checkOpenVPNPermission(getPackageManager());
try {
- boolean success= mService.protect(pfd.getFd());
+ boolean success = mService.protect(pfd.getFd());
pfd.close();
return success;
} catch (IOException e) {
@@ -339,7 +343,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
- class UpdateMessage {
+ static class UpdateMessage {
public String state;
public String logmessage;
public ConnectionStatus level;
diff --git a/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java b/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java
index 0554b88c..22110ad0 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java
@@ -93,6 +93,7 @@ public class RemoteAction extends Activity {
} else {
Intent startVPN = new Intent(this, LaunchVPN.class);
startVPN.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUID().toString());
+ startVPN.putExtra(LaunchVPN.EXTRA_START_REASON, ".api.ConnectVPN call");
startVPN.setAction(Intent.ACTION_MAIN);
startActivity(startVPN);
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java b/main/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java
index d102dce2..39151646 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ExtAuthHelper.java
@@ -42,7 +42,6 @@ public class ExtAuthHelper {
public static void setExternalAuthProviderSpinnerList(Spinner spinner, String selectedApp) {
Context c = spinner.getContext();
- final PackageManager pm = c.getPackageManager();
ArrayList<ExternalAuthProvider> extProviders = getExternalAuthProviderList(c);
int selectedPos = -1;
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
index 1df46525..271ec139 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
@@ -128,5 +128,4 @@ public class ICSOpenVPNApplication extends Application {
mChannel.setLightColor(Color.CYAN);
mNotificationManager.createNotificationChannel(mChannel);
}
-
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/LocaleHelper.java b/main/src/main/java/de/blinkt/openvpn/core/LocaleHelper.java
index 516e025d..ea9bf9e3 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/LocaleHelper.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/LocaleHelper.java
@@ -15,11 +15,23 @@ import java.util.Locale;
public class LocaleHelper {
static private Locale desiredLocale = null;
- public static void setDesiredLocale(Context c)
- {
+ public static void setDesiredLocale(Context c) {
Locale current = Locale.getDefault();
boolean defForce = true;
- if (current.getLanguage().equals(new Locale("de").getLanguage()))
+
+ /* Languages that have proofreaders */
+ String[] whitelisted = {new Locale("de").getLanguage(), new Locale("ja").getLanguage(),
+ new Locale("tr").getLanguage(), new Locale("zh-TW").getLanguage()};
+
+ String currentLanguage = current.getLanguage();
+ for (String lang : whitelisted) {
+ if (lang.equals(currentLanguage)) {
+ defForce = false;
+ break;
+ }
+ }
+
+ if (current.toLanguageTag().startsWith("zh-Hant"))
defForce = false;
boolean allow_translation = Preferences.getDefaultSharedPreferences(c).getBoolean("allow_translation", defForce);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java
index c61cbc44..65714c43 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java
@@ -13,11 +13,14 @@ import android.content.pm.Signature;
import android.content.res.Resources;
import android.os.Parcel;
import android.os.Parcelable;
+import android.text.TextUtils;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Array;
import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
@@ -26,7 +29,9 @@ import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.FormatFlagsConversionMismatchException;
import java.util.Locale;
+import java.util.MissingFormatArgumentException;
import java.util.UnknownFormatConversionException;
+import java.util.Vector;
import de.blinkt.openvpn.R;
@@ -47,6 +52,14 @@ public class LogItem implements Parcelable {
mArgs = args;
}
+ public LogItem(VpnStatus.LogLevel level, int verblevel, String message, long eventLogTime) {
+ mMessage = message;
+ mLevel = level;
+ mVerbosityLevel = verblevel;
+ logtime = eventLogTime;
+ }
+
+
public LogItem(VpnStatus.LogLevel level, int verblevel, String message) {
mMessage = message;
mLevel = level;
@@ -84,8 +97,6 @@ public class LogItem implements Parcelable {
other.mLevel.equals(mLevel)) &&
mVerbosityLevel == other.mVerbosityLevel &&
logtime == other.logtime;
-
-
}
public byte[] getMarschaledBytes() throws UnsupportedEncodingException, BufferOverflowException {
@@ -195,7 +206,7 @@ public class LogItem implements Parcelable {
}
private void marschalString(String str, ByteBuffer bb) throws UnsupportedEncodingException {
- byte[] utf8bytes = str.getBytes("UTF-8");
+ byte[] utf8bytes = str.getBytes(StandardCharsets.UTF_8);
bb.putInt(utf8bytes.length);
bb.put(utf8bytes);
}
@@ -204,7 +215,7 @@ public class LogItem implements Parcelable {
int len = bb.getInt();
byte[] utf8bytes = new byte[len];
bb.get(utf8bytes);
- return new String(utf8bytes, "UTF-8");
+ return new String(utf8bytes, StandardCharsets.UTF_8);
}
@@ -240,6 +251,11 @@ public class LogItem implements Parcelable {
mMessage = msg;
}
+ public LogItem(VpnStatus.LogLevel loglevel, String msg, long logEventTime) {
+ mLevel = loglevel;
+ mMessage = msg;
+ logtime = logEventTime;
+ }
public LogItem(VpnStatus.LogLevel loglevel, int ressourceId) {
mRessourceId = ressourceId;
@@ -258,7 +274,11 @@ public class LogItem implements Parcelable {
if (mArgs == null)
return c.getString(mRessourceId);
else
- return c.getString(mRessourceId, mArgs);
+ try {
+ return c.getString(mRessourceId, mArgs);
+ } catch (MissingFormatArgumentException ie) {
+ return "ERROR MISSING ARGUMENT(" + ie.getMessage() + "): " + getString(null);
+ }
} catch (Resources.NotFoundException re) {
return getString(null);
}
@@ -324,10 +344,15 @@ public class LogItem implements Parcelable {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(raw.toByteArray()));
MessageDigest md = MessageDigest.getInstance("SHA-1");
+ MessageDigest mdsha256 = MessageDigest.getInstance("SHA-256");
+
byte[] der = cert.getEncoded();
md.update(der);
byte[] digest = md.digest();
+ mdsha256.update(der);
+ byte[] digestSha256 = mdsha256.digest();
+
if (Arrays.equals(digest, VpnStatus.officalkey))
apksign = c.getString(R.string.official_build);
else if (Arrays.equals(digest, VpnStatus.officaldebugkey))
@@ -336,8 +361,15 @@ public class LogItem implements Parcelable {
apksign = "amazon version";
else if (Arrays.equals(digest, VpnStatus.fdroidkey))
apksign = "F-Droid built and signed version";
- else
- apksign = c.getString(R.string.built_by, cert.getSubjectX500Principal().getName());
+ else if (Arrays.equals(digestSha256, VpnStatus.officialO2Key))
+ apksign = c.getString(R.string.official_o2build);
+ else {
+ Vector<String> hexnums = new Vector<>();
+ for (byte b: digestSha256) {
+ hexnums.add(String.format(Locale.US, "%02x", b));
+ }
+ apksign = c.getString(R.string.built_by, cert.getSubjectX500Principal().getName(), TextUtils.join(":", hexnums));
+ }
PackageInfo packageinfo = c.getPackageManager().getPackageInfo(c.getPackageName(), 0);
version = packageinfo.versionName;
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java b/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
index 72b2b784..9bfa5e67 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
@@ -30,18 +30,28 @@ public class NativeUtils {
public static native String getOpenVPN3GitVersion();
- static boolean rsspssloaded = false;
+ private static native String getOpenSSLVersionString();
+
+ public static String getOpenSSLVersion() {
+ loadOsslUtil();
+ return getOpenSSLVersionString();
+ }
+
+ static boolean osslutilloaded = false;
public static byte[] addRssPssPadding(int hashtype, int MSBits, int rsa_size, byte[] from)
{
- if (!rsspssloaded) {
- rsspssloaded = true;
- System.loadLibrary("rsapss");
- }
-
+ loadOsslUtil();
return rsapss(hashtype, MSBits, rsa_size, from);
}
+ private static void loadOsslUtil() {
+ if (!osslutilloaded) {
+ osslutilloaded = true;
+ System.loadLibrary("osslutil");
+ }
+ }
+
private static native byte[] rsapss(int hashtype, int MSBits, int rsa_size, byte[] from);
public final static int[] openSSLlengths = {
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java b/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java
index 9c8cf363..da53831b 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java
@@ -5,11 +5,13 @@
package de.blinkt.openvpn.core;
+import android.annotation.TargetApi;
import android.net.IpPrefix;
+import android.os.Build;
import androidx.annotation.NonNull;
-import java.lang.reflect.Array;
+import java.lang.annotation.Target;
import java.math.BigInteger;
import java.net.Inet4Address;
import java.net.Inet6Address;
@@ -132,6 +134,7 @@ public class NetworkSpace {
}
+ @NonNull
@Override
public String toString() {
//String in = included ? "+" : "-";
@@ -210,6 +213,7 @@ public class NetworkSpace {
}
+ @TargetApi(Build.VERSION_CODES.TIRAMISU)
public IpPrefix getPrefix() throws UnknownHostException {
if (isV4){
/* add 0x01 00 00 00 00, so that all representations are 5 byte otherwise
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java b/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
index 00f45ed4..f104d3b0 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java
@@ -14,14 +14,18 @@ import android.text.TextUtils;
import java.net.Inet4Address;
import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Vector;
+import de.blinkt.openvpn.R;
+
public class NetworkUtils {
public static Vector<String> getLocalNetworks(Context c, boolean ipv6) {
- Vector<String> nets = new Vector<>();
ConnectivityManager conn = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
+ Vector<String> nets = new Vector<>();
Network[] networks = conn.getAllNetworks();
for (Network network : networks) {
NetworkInfo ni = conn.getNetworkInfo(network);
@@ -29,6 +33,10 @@ public class NetworkUtils {
NetworkCapabilities nc = conn.getNetworkCapabilities(network);
+ // Ignore network if it has no capabilities
+ if (nc == null)
+ continue;
+
// Skip VPN networks like ourselves
if (nc.hasTransport(NetworkCapabilities.TRANSPORT_VPN))
continue;
@@ -40,8 +48,16 @@ public class NetworkUtils {
for (LinkAddress la : li.getLinkAddresses()) {
if ((la.getAddress() instanceof Inet4Address && !ipv6) ||
- (la.getAddress() instanceof Inet6Address && ipv6))
- nets.add(la.toString());
+ (la.getAddress() instanceof Inet6Address && ipv6)) {
+ //nets.add(la.toString());
+ NetworkSpace.IpAddress ipaddress;
+ if (la.getAddress() instanceof Inet6Address)
+ ipaddress = new NetworkSpace.IpAddress((Inet6Address) la.getAddress(), la.getPrefixLength(), true);
+ else
+ ipaddress = new NetworkSpace.IpAddress(new CIDRIP(la.getAddress().getHostAddress(), la.getPrefixLength()), true);
+
+ nets.add(ipaddress.toString());
+ }
}
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
index d3de35f9..0e8793e4 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
@@ -14,16 +14,18 @@ import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.UiModeManager;
+import android.app.job.JobInfo;
+import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.content.Context;
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;
import android.content.res.Resources;
import android.net.ConnectivityManager;
-import android.net.IpPrefix;
import android.net.ProxyInfo;
import android.net.Uri;
import android.net.VpnService;
@@ -35,6 +37,7 @@ import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Message;
import android.os.ParcelFileDescriptor;
+import android.os.PersistableBundle;
import android.os.RemoteException;
import android.system.OsConstants;
import android.text.TextUtils;
@@ -84,17 +87,27 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private static final int PRIORITY_DEFAULT = 0;
private static final int PRIORITY_MAX = 2;
private static boolean mNotificationAlwaysVisible = false;
- private final Vector<String> mDnslist = new Vector<>();
- private final NetworkSpace mRoutes = new NetworkSpace();
- private final NetworkSpace mRoutesv6 = new NetworkSpace();
+
+ static class TunConfig {
+ private final Vector<String> mDnslist = new Vector<>();
+ private final NetworkSpace mRoutes = new NetworkSpace();
+ private final NetworkSpace mRoutesv6 = new NetworkSpace();
+ private String mDomain = null;
+ private CIDRIP mLocalIP = null;
+ private int mMtu;
+ private String mLocalIPv6 = null;
+
+ private ProxyInfo mProxyInfo;
+ };
+
+ private TunConfig tunConfig = new TunConfig();
+
private final Object mProcessLock = new Object();
private String lastChannel;
private Thread mProcessThread = null;
private VpnProfile mProfile;
- private String mDomain = null;
- private CIDRIP mLocalIP = null;
- private int mMtu;
- private String mLocalIPv6 = null;
+
+
private DeviceStateReceiver mDeviceStateReceiver;
private boolean mDisplayBytecount = false;
private boolean mStarting = false;
@@ -135,12 +148,11 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
};
- private String mLastTunCfg;
+ private TunConfig mLastTunCfg;
private String mRemoteGW;
private Handler guiHandler;
private Toast mlastToast;
private Runnable mOpenVPNThread;
- private ProxyInfo mProxyInfo;
private HandlerThread mCommandHandlerThread;
private Handler mCommandHandler;
@@ -180,10 +192,14 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
}
+
+
@Override
public void addAllowedExternalApp(String packagename) throws RemoteException {
ExternalAppDatabase extapps = new ExternalAppDatabase(OpenVPNService.this);
- extapps.addApp(packagename);
+ if(extapps.checkAllowingModifyingRemoteControl(this)) {
+ extapps.addApp(packagename);
+ }
}
@Override
@@ -213,7 +229,9 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
@Override
public void onRevoke() {
VpnStatus.logError(R.string.permission_revoked);
- mManagement.stopVPN(false);
+ final OpenVPNManagement managment = mManagement;
+ mCommandHandler.post(() -> managment.stopVPN(false));
+
endVpnService();
}
@@ -222,7 +240,25 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
endVpnService();
}
+ private boolean isAlwaysActiveEnabled()
+ {
+ SharedPreferences prefs = Preferences.getDefaultSharedPreferences(this);
+ return prefs.getBoolean("restartvpnonboot", false);
+ }
+
+ boolean isVpnAlwaysOnEnabled() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ return isAlwaysOn();
+ }
+ return false;
+ }
+
+
private void endVpnService() {
+ if (!isVpnAlwaysOnEnabled() && !isAlwaysActiveEnabled()) {
+ /* if we should be an always on VPN, keep the timer running */
+ keepVPNAlive.unscheduleKeepVPNAliveJobService(this);
+ }
synchronized (mProcessLock) {
mProcessThread = null;
}
@@ -519,9 +555,13 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private VpnProfile fetchVPNProfile(Intent intent)
{
+ String startReason;
if (intent != null && intent.hasExtra(getPackageName() + ".profileUUID")) {
String profileUUID = intent.getStringExtra(getPackageName() + ".profileUUID");
int profileVersion = intent.getIntExtra(getPackageName() + ".profileVersion", 0);
+ startReason = intent.getStringExtra(getPackageName() + ".startReason");
+ if (startReason == null)
+ startReason = "(unknown)";
// Try for 10s to get current version of the profile
mProfile = ProfileManager.get(this, profileUUID, profileVersion, 100);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
@@ -531,10 +571,13 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
} else {
/* The intent is null when we are set as always-on or the service has been restarted. */
mProfile = ProfileManager.getLastConnectedProfile(this);
+ startReason = "Using last connected profile (started with null intent, always-on or restart after crash)";
VpnStatus.logInfo(R.string.service_restarted);
/* Got no profile, just stop */
if (mProfile == null) {
+ startReason = "could not get last connected profile, using default (started with null intent, always-on or restart after crash)";
+
Log.d("OpenVPN", "Got no last connected profile on null intent. Assuming always on.");
mProfile = ProfileManager.getAlwaysOnVPN(this);
@@ -546,6 +589,10 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
/* Do the asynchronous keychain certificate stuff */
mProfile.checkForRestart(this);
}
+ String name = "(null)";
+ if (mProfile != null)
+ name = mProfile.getName();
+ VpnStatus.logDebug(String.format("Fetched VPN profile (%s) triggered by %s", name, startReason));
return mProfile;
}
@@ -558,6 +605,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
ProfileManager.setConnectedVpnProfile(this, mProfile);
VpnStatus.setConnectedVPNProfile(mProfile.getUUIDString());
+ keepVPNAlive.scheduleKeepVPNAliveJobService(this, vp);
String nativeLibraryDirectory = getApplicationInfo().nativeLibraryDir;
String tmpDir;
@@ -575,8 +623,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
// Set a flag that we are starting a new VPN
mStarting = true;
// Stop the previous session by interrupting the thread.
-
- stopOldOpenVPNProcess();
+ stopOldOpenVPNProcess(mManagement, mOpenVPNThread);
// An old running VPN should now be exited
mStarting = false;
@@ -635,11 +682,12 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
- private void stopOldOpenVPNProcess() {
- if (mManagement != null) {
- if (mOpenVPNThread != null)
- ((OpenVPNThread) mOpenVPNThread).setReplaceConnection();
- if (mManagement.stopVPN(true)) {
+ private void stopOldOpenVPNProcess(OpenVPNManagement management,
+ Runnable mamanagmentThread) {
+ if (management != null) {
+ if (mamanagmentThread != null)
+ ((OpenVPNThread) mamanagmentThread).setReplaceConnection();
+ if (management.stopVPN(true)) {
// an old was asked to exit, wait 1s
try {
Thread.sleep(1000);
@@ -708,27 +756,38 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
VpnStatus.flushLog();
}
- private String getTunConfigString() {
+ private static String getTunConfigString(TunConfig tc) {
// The format of the string is not important, only that
// two identical configurations produce the same result
+ if (tc == null)
+ return "NULL";
+
String cfg = "TUNCFG UNQIUE STRING ips:";
- if (mLocalIP != null)
- cfg += mLocalIP.toString();
- if (mLocalIPv6 != null)
- cfg += mLocalIPv6;
+ if (tc.mLocalIP != null)
+ cfg += tc.mLocalIP.toString();
+ if (tc.mLocalIPv6 != null)
+ cfg += tc.mLocalIPv6;
- cfg += "routes: " + TextUtils.join("|", mRoutes.getNetworks(true)) + TextUtils.join("|", mRoutesv6.getNetworks(true));
- cfg += "excl. routes:" + TextUtils.join("|", mRoutes.getNetworks(false)) + TextUtils.join("|", mRoutesv6.getNetworks(false));
- cfg += "dns: " + TextUtils.join("|", mDnslist);
- cfg += "domain: " + mDomain;
- cfg += "mtu: " + mMtu;
- cfg += "proxyInfo: " + mProxyInfo;
+ cfg += "routes: " + TextUtils.join("|", tc.mRoutes.getNetworks(true)) + TextUtils.join("|", tc.mRoutesv6.getNetworks(true));
+ cfg += "excl. routes:" + TextUtils.join("|", tc.mRoutes.getNetworks(false)) + TextUtils.join("|", tc.mRoutesv6.getNetworks(false));
+ cfg += "dns: " + TextUtils.join("|", tc.mDnslist);
+ cfg += "domain: " + tc.mDomain;
+ cfg += "mtu: " + tc.mMtu;
+ cfg += "proxyInfo: " + tc.mProxyInfo;
return cfg;
}
public ParcelFileDescriptor openTun() {
+ ParcelFileDescriptor pfd = openTun(tunConfig);
+
+ // Reset information
+ mLastTunCfg = tunConfig;
+ tunConfig = new TunConfig();
+ return pfd;
+ }
+ private ParcelFileDescriptor openTun(TunConfig tc) {
//Debug.startMethodTracing(getExternalFilesDir(null).toString() + "/opentun.trace", 40* 1024 * 1024);
@@ -747,36 +806,36 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
allowAllAFFamilies(builder);
}
- if (mLocalIP == null && mLocalIPv6 == null) {
+ if (tc.mLocalIP == null && tc.mLocalIPv6 == null) {
VpnStatus.logError(getString(R.string.opentun_no_ipaddr));
return null;
}
- if (mLocalIP != null) {
+ if (tc.mLocalIP != null) {
// OpenVPN3 manages excluded local networks by callback
if (!VpnProfile.doUseOpenVPN3(this))
- addLocalNetworksToRoutes();
+ addLocalNetworksToRoutes(tc);
try {
- builder.addAddress(mLocalIP.mIp, mLocalIP.len);
+ builder.addAddress(tc.mLocalIP.mIp, tc.mLocalIP.len);
} catch (IllegalArgumentException iae) {
- VpnStatus.logError(R.string.dns_add_error, mLocalIP, iae.getLocalizedMessage());
+ VpnStatus.logError(R.string.dns_add_error, tc.mLocalIP, iae.getLocalizedMessage());
return null;
}
}
- if (mLocalIPv6 != null) {
- String[] ipv6parts = mLocalIPv6.split("/");
+ if (tc.mLocalIPv6 != null) {
+ String[] ipv6parts = tc.mLocalIPv6.split("/");
try {
builder.addAddress(ipv6parts[0], Integer.parseInt(ipv6parts[1]));
} catch (IllegalArgumentException iae) {
- VpnStatus.logError(R.string.ip_add_error, mLocalIPv6, iae.getLocalizedMessage());
+ VpnStatus.logError(R.string.ip_add_error, tc.mLocalIPv6, iae.getLocalizedMessage());
return null;
}
}
- for (String dns : mDnslist) {
+ for (String dns : tc.mDnslist) {
try {
builder.addDnsServer(dns);
} catch (IllegalArgumentException iae) {
@@ -785,15 +844,15 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
String release = Build.VERSION.RELEASE;
- builder.setMtu(mMtu);
+ builder.setMtu(tc.mMtu);
- Collection<IpAddress> positiveIPv4Routes = mRoutes.getPositiveIPList();
- Collection<IpAddress> positiveIPv6Routes = mRoutesv6.getPositiveIPList();
+ Collection<IpAddress> positiveIPv4Routes = tc.mRoutes.getPositiveIPList();
+ Collection<IpAddress> positiveIPv6Routes = tc.mRoutesv6.getPositiveIPList();
- if ("samsung".equals(Build.BRAND) && mDnslist.size() >= 1) {
+ if ("samsung".equals(Build.BRAND) && tc.mDnslist.size() >= 1) {
// Check if the first DNS Server is in the VPN range
try {
- IpAddress dnsServer = new IpAddress(new CIDRIP(mDnslist.get(0), 32), true);
+ IpAddress dnsServer = new IpAddress(new CIDRIP(tc.mDnslist.get(0), 32), true);
boolean dnsIncluded = false;
for (IpAddress net : positiveIPv4Routes) {
if (net.containsNet(dnsServer)) {
@@ -801,28 +860,28 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
}
if (!dnsIncluded) {
- String samsungwarning = String.format("Warning Samsung Android 5.0+ devices ignore DNS servers outside the VPN range. To enable DNS resolution a route to your DNS Server (%s) has been added.", mDnslist.get(0));
+ String samsungwarning = String.format("Warning Samsung Android 5.0+ devices ignore DNS servers outside the VPN range. To enable DNS resolution a route to your DNS Server (%s) has been added.", tc.mDnslist.get(0));
VpnStatus.logWarning(samsungwarning);
positiveIPv4Routes.add(dnsServer);
}
} catch (Exception e) {
// If it looks like IPv6 ignore error
- if (!mDnslist.get(0).contains(":"))
- VpnStatus.logError("Error parsing DNS Server IP: " + mDnslist.get(0));
+ if (!tc.mDnslist.get(0).contains(":"))
+ VpnStatus.logError("Error parsing DNS Server IP: " + tc.mDnslist.get(0));
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- installRoutesExcluded(builder, mRoutes);
- installRoutesExcluded(builder, mRoutesv6);
+ installRoutesExcluded(builder, tc.mRoutes);
+ installRoutesExcluded(builder, tc.mRoutesv6);
} else {
installRoutesPostiveOnly(builder, positiveIPv4Routes, positiveIPv6Routes);
}
- if (mDomain != null)
- builder.addSearchDomain(mDomain);
+ if (tc.mDomain != null)
+ builder.addSearchDomain(tc.mDomain);
String ipv4info;
String ipv6info;
@@ -835,32 +894,34 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
int ipv4len;
- if (mLocalIP != null) {
- ipv4len = mLocalIP.len;
- ipv4info = mLocalIP.mIp;
+ if (tc.mLocalIP != null) {
+ ipv4len = tc.mLocalIP.len;
+ ipv4info = tc.mLocalIP.mIp;
} else {
ipv4len = -1;
}
- if (mLocalIPv6 != null) {
- ipv6info = mLocalIPv6;
+ if (tc.mLocalIPv6 != null) {
+ ipv6info = tc.mLocalIPv6;
}
- if ((!mRoutes.getNetworks(false).isEmpty() || !mRoutesv6.getNetworks(false).isEmpty()) && isLockdownEnabledCompat()) {
+ if ((!tc.mRoutes.getNetworks(false).isEmpty() || !tc.mRoutesv6.getNetworks(false).isEmpty()) && isLockdownEnabledCompat()) {
VpnStatus.logInfo("VPN lockdown enabled (do not allow apps to bypass VPN) enabled. Route exclusion will not allow apps to bypass VPN (e.g. bypass VPN for local networks)");
}
- VpnStatus.logInfo(R.string.local_ip_info, ipv4info, ipv4len, ipv6info, mMtu);
- VpnStatus.logInfo(R.string.dns_server_info, TextUtils.join(", ", mDnslist), mDomain);
- VpnStatus.logInfo(R.string.routes_info_incl, TextUtils.join(", ", mRoutes.getNetworks(true)), TextUtils.join(", ", mRoutesv6.getNetworks(true)));
- VpnStatus.logInfo(R.string.routes_info_excl, TextUtils.join(", ", mRoutes.getNetworks(false)), TextUtils.join(", ", mRoutesv6.getNetworks(false)));
- if (mProxyInfo != null) {
- VpnStatus.logInfo(R.string.proxy_info, mProxyInfo.getHost(), mProxyInfo.getPort());
+ VpnStatus.logInfo(R.string.local_ip_info, ipv4info, ipv4len, ipv6info, tc.mMtu);
+ VpnStatus.logInfo(R.string.dns_server_info, TextUtils.join(", ", tc.mDnslist), tc.mDomain);
+ VpnStatus.logInfo(R.string.routes_info_incl, TextUtils.join(", ", tc.mRoutes.getNetworks(true)), TextUtils.join(", ", tc.mRoutesv6.getNetworks(true)));
+ VpnStatus.logInfo(R.string.routes_info_excl, TextUtils.join(", ", tc.mRoutes.getNetworks(false)), TextUtils.join(", ", tc.mRoutesv6.getNetworks(false)));
+ if (tc.mProxyInfo != null) {
+ VpnStatus.logInfo(R.string.proxy_info, tc.mProxyInfo.getHost(), tc.mProxyInfo.getPort());
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
/* On Tiramisu we install the routes exactly like promised */
VpnStatus.logDebug(R.string.routes_debug, TextUtils.join(", ", positiveIPv4Routes), TextUtils.join(", ", positiveIPv6Routes));
}
+ //VpnStatus.logInfo(String.format("Always active %s", isAlwaysOn() ? "on" : "off"));
+
setAllowedVpnPackages(builder);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
// VPN always uses the default network
@@ -874,31 +935,20 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
String session = mProfile.mName;
- if (mLocalIP != null && mLocalIPv6 != null)
- session = getString(R.string.session_ipv6string, session, mLocalIP, mLocalIPv6);
- else if (mLocalIP != null)
- session = getString(R.string.session_ipv4string, session, mLocalIP);
+ if (tc.mLocalIP != null && tc.mLocalIPv6 != null)
+ session = getString(R.string.session_ipv6string, session, tc.mLocalIP, tc.mLocalIPv6);
+ else if (tc.mLocalIP != null)
+ session = getString(R.string.session_ipv4string, session, tc.mLocalIP);
else
- session = getString(R.string.session_ipv4string, session, mLocalIPv6);
+ session = getString(R.string.session_ipv4string, session, tc.mLocalIPv6);
builder.setSession(session);
// No DNS Server, log a warning
- if (mDnslist.size() == 0)
+ if (tc.mDnslist.size() == 0)
VpnStatus.logInfo(R.string.warn_no_dns);
- setHttpProxy(builder);
-
- mLastTunCfg = getTunConfigString();
-
- // Reset information
- mDnslist.clear();
- mRoutes.clear();
- mRoutesv6.clear();
- mLocalIP = null;
- mLocalIPv6 = null;
- mDomain = null;
- mProxyInfo = null;
+ setHttpProxy(builder, tc);
builder.setConfigureIntent(getGraphPendingIntent());
@@ -959,10 +1009,10 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
}
- private void setHttpProxy(Builder builder) {
- if (mProxyInfo != null && Build.VERSION.SDK_INT >= 29) {
- builder.setHttpProxy(mProxyInfo);
- } else if (mProxyInfo != null) {
+ private void setHttpProxy(Builder builder, TunConfig tc) {
+ if (tc.mProxyInfo != null && Build.VERSION.SDK_INT >= 29) {
+ builder.setHttpProxy(tc.mProxyInfo);
+ } else if (tc.mProxyInfo != null) {
VpnStatus.logWarning("HTTP Proxy needs Android 10 or later.");
}
}
@@ -982,27 +1032,24 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
builder.allowFamily(OsConstants.AF_INET6);
}
- private void addLocalNetworksToRoutes() {
+ private void addLocalNetworksToRoutes(TunConfig tc) {
for (String net : NetworkUtils.getLocalNetworks(this, false)) {
String[] netparts = net.split("/");
String ipAddr = netparts[0];
int netMask = Integer.parseInt(netparts[1]);
- if (ipAddr.equals(mLocalIP.mIp))
+ if (ipAddr.equals(tc.mLocalIP.mIp))
continue;
if(mProfile.mAllowLocalLAN)
- mRoutes.addIP(new CIDRIP(ipAddr, netMask), false);
+ tc.mRoutes.addIP(new CIDRIP(ipAddr, netMask), false);
}
- // IPv6 is Lollipop+ only so we can skip the lower than KITKAT case
if (mProfile.mAllowLocalLAN) {
for (String net : NetworkUtils.getLocalNetworks(this, true)) {
addRoutev6(net, false);
;
}
}
-
-
}
private void setAllowedVpnPackages(Builder builder) {
@@ -1065,12 +1112,12 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
public void addDNS(String dns) {
- mDnslist.add(dns);
+ tunConfig.mDnslist.add(dns);
}
public void setDomain(String domain) {
- if (mDomain == null) {
- mDomain = domain;
+ if (tunConfig.mDomain == null) {
+ tunConfig.mDomain = domain;
}
}
@@ -1078,12 +1125,12 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
* Route that is always included, used by the v3 core
*/
public void addRoute(CIDRIP route, boolean include) {
- mRoutes.addIP(route, include);
+ tunConfig.mRoutes.addIP(route, include);
}
public boolean addHttpProxy(String proxy, int port) {
try {
- mProxyInfo = ProxyInfo.buildDirectProxy(proxy, port);
+ tunConfig.mProxyInfo = ProxyInfo.buildDirectProxy(proxy, port);
} catch (Exception e) {
VpnStatus.logError("Could not set proxy" + e.getLocalizedMessage());
return false;
@@ -1097,11 +1144,11 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
IpAddress gatewayIP = new IpAddress(new CIDRIP(gateway, 32), false);
- if (mLocalIP == null) {
+ if (tunConfig.mLocalIP == null) {
VpnStatus.logError("Local IP address unset and received. Neither pushed server config nor local config specifies an IP addresses. Opening tun device is most likely going to fail.");
return;
}
- IpAddress localNet = new IpAddress(mLocalIP, true);
+ IpAddress localNet = new IpAddress(tunConfig.mLocalIP, true);
if (localNet.containsNet(gatewayIP))
include = true;
@@ -1117,7 +1164,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
if (route.normalise())
VpnStatus.logWarning(R.string.route_not_netip, dest, route.len, route.mIp);
- mRoutes.addIP(route, include);
+ tunConfig.mRoutes.addIP(route, include);
}
public void addRoutev6(String network, String device) {
@@ -1132,7 +1179,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
try {
Inet6Address ip = (Inet6Address) InetAddress.getAllByName(v6parts[0])[0];
int mask = Integer.parseInt(v6parts[1]);
- mRoutesv6.addIPv6(ip, mask, included);
+ tunConfig.mRoutesv6.addIPv6(ip, mask, included);
} catch (UnknownHostException e) {
VpnStatus.logException(e);
@@ -1147,21 +1194,21 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
public void setMtu(int mtu) {
- mMtu = mtu;
+ tunConfig.mMtu = mtu;
}
public void setLocalIP(CIDRIP cdrip) {
- mLocalIP = cdrip;
+ tunConfig.mLocalIP = cdrip;
}
public void setLocalIP(String local, String netmask, int mtu, String mode) {
- mLocalIP = new CIDRIP(local, netmask);
- mMtu = mtu;
+ tunConfig.mLocalIP = new CIDRIP(local, netmask);
+ tunConfig.mMtu = mtu;
mRemoteGW = null;
long netMaskAsInt = CIDRIP.getInt(netmask);
- if (mLocalIP.len == 32 && !netmask.equals("255.255.255.255")) {
+ if (tunConfig.mLocalIP.len == 32 && !netmask.equals("255.255.255.255")) {
// get the netmask as IP
int masklen;
@@ -1175,22 +1222,22 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
// Netmask is Ip address +/-1, assume net30/p2p with small net
- if ((netMaskAsInt & mask) == (mLocalIP.getInt() & mask)) {
- mLocalIP.len = masklen;
+ if ((netMaskAsInt & mask) == (tunConfig.mLocalIP.getInt() & mask)) {
+ tunConfig.mLocalIP.len = masklen;
} else {
- mLocalIP.len = 32;
+ tunConfig.mLocalIP.len = 32;
if (!"p2p".equals(mode))
VpnStatus.logWarning(R.string.ip_not_cidr, local, netmask, mode);
}
}
- if (("p2p".equals(mode) && mLocalIP.len < 32) || ("net30".equals(mode) && mLocalIP.len < 30)) {
+ if (("p2p".equals(mode) && tunConfig.mLocalIP.len < 32) || ("net30".equals(mode) && tunConfig.mLocalIP.len < 30)) {
VpnStatus.logWarning(R.string.ip_looks_like_subnet, local, netmask, mode);
}
/* Workaround for Lollipop and higher, it does not route traffic to the VPNs own network mask */
- if (mLocalIP.len <= 31) {
- CIDRIP interfaceRoute = new CIDRIP(mLocalIP.mIp, mLocalIP.len);
+ if (tunConfig.mLocalIP.len <= 31) {
+ CIDRIP interfaceRoute = new CIDRIP(tunConfig.mLocalIP.mIp, tunConfig.mLocalIP.len);
interfaceRoute.normalise();
addRoute(interfaceRoute, true);
}
@@ -1201,7 +1248,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
public void setLocalIPv6(String ipv6addr) {
- mLocalIPv6 = ipv6addr;
+ tunConfig.mLocalIPv6 = ipv6addr;
}
@Override
@@ -1279,8 +1326,8 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
public String getTunReopenStatus() {
- String currentConfiguration = getTunConfigString();
- if (currentConfiguration.equals(mLastTunCfg)) {
+ String currentConfiguration = getTunConfigString(tunConfig);
+ if (currentConfiguration.equals(getTunConfigString(mLastTunCfg))) {
return "NOACTION";
} else {
return "OPEN_BEFORE_CLOSE";
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
index 51fc58eb..37eb34dd 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
@@ -15,6 +15,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date;
@@ -135,7 +136,7 @@ public class OpenVPNThread implements Runnable {
InputStream in = mProcess.getInputStream();
OutputStream out = mProcess.getOutputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
+ BufferedReader br = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
mOutputStream = out;
mStreamFuture.run();
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
index 11b2608b..8edae328 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
@@ -47,12 +47,12 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
private pauseReason lastPauseReason = pauseReason.noNetwork;
private PausedStateCallback mPauseCallback;
private boolean mShuttingDown;
- private Runnable mResumeHoldRunnable = () -> {
+ private final Runnable mResumeHoldRunnable = () -> {
if (shouldBeRunning()) {
releaseHoldCmd();
}
};
- private Runnable orbotStatusTimeOutRunnable = new Runnable() {
+ private final Runnable orbotStatusTimeOutRunnable = new Runnable() {
@Override
public void run() {
sendProxyCMD(Connection.ProxyType.SOCKS5, "127.0.0.1", Integer.toString(OrbotHelper.SOCKS_PROXY_PORT_DEFAULT), false);
@@ -148,8 +148,6 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
VpnStatus.logException(e);
}
return false;
-
-
}
/**
@@ -402,7 +400,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
if (waittime > 1)
VpnStatus.updateStateString("CONNECTRETRY", String.valueOf(waittime),
R.string.state_waitconnectretry, ConnectionStatus.LEVEL_CONNECTING_NO_SERVER_REPLY_YET);
- mResumeHandler.postDelayed(mResumeHoldRunnable, waittime * 1000);
+ mResumeHandler.postDelayed(mResumeHoldRunnable, waittime * 1000L);
if (waittime > 5)
VpnStatus.logInfo(R.string.state_waitconnectretry, String.valueOf(waittime));
else
@@ -618,14 +616,8 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
managmentCommand(cmd);
}
- private boolean sendTunFD(String needed, String extra) {
- if (!extra.equals("tun")) {
- // We only support tun
- VpnStatus.logError(String.format("Device type %s requested, but only tun is possible with the Android API, sorry!", extra));
- return false;
- }
- ParcelFileDescriptor pfd = mOpenVPNService.openTun();
+ private boolean sendCommandWithFd(String cmd, ParcelFileDescriptor pfd) {
if (pfd == null)
return false;
@@ -638,26 +630,38 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
setInt.invoke(fdtosend, fdint);
FileDescriptor[] fds = {fdtosend};
- mSocket.setFileDescriptorsForSend(fds);
// Trigger a send so we can close the fd on our side of the channel
// The API documentation fails to mention that it will not reset the file descriptor to
// be send and will happily send the file descriptor on every write ...
- String cmd = String.format("needok '%s' %s\n", needed, "ok");
+ mSocket.setFileDescriptorsForSend(fds);
+
managmentCommand(cmd);
// Set the FileDescriptor to null to stop this mad behavior
mSocket.setFileDescriptorsForSend(null);
-
pfd.close();
- return true;
- } catch (NoSuchMethodException | IllegalArgumentException | InvocationTargetException |
- IOException | IllegalAccessException exp) {
+
+ } catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException |
+ IOException exp) {
VpnStatus.logException("Could not send fd over socket", exp);
+ return false;
}
+ return true;
+ }
- return false;
+ private boolean sendTunFD(String needed, String extra) {
+ if (!extra.equals("tun")) {
+ // We only support tun
+ VpnStatus.logError(String.format("Device type %s requested, but only tun is possible with the Android API, sorry!", extra));
+
+ return false;
+ }
+ ParcelFileDescriptor pfd = mOpenVPNService.openTun();
+
+ String cmd = String.format("needok '%s' %s\n", needed, "ok");
+ return sendCommandWithFd(cmd, pfd);
}
private void processPWCommand(String argument) {
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java b/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java
index b46a8f10..9d59e26b 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java
@@ -51,10 +51,10 @@ public class ProfileManager {
return instance.profiles.get(key);
}
- private static void checkInstance(Context context) {
+ private synchronized static void checkInstance(Context context) {
if (instance == null) {
instance = new ProfileManager();
- ProfileEncryption.initMasterCryptAlias();
+ ProfileEncryption.initMasterCryptAlias(context);
instance.loadVPNList(context);
}
}
@@ -146,7 +146,7 @@ public class ProfileManager {
if (encryptedFileOld.exists()) {
encryptedFileOld.delete();
}
- } catch (IOException ioe)
+ } catch (IOException | GeneralSecurityException ioe)
{
VpnStatus.logException(VpnStatus.LogLevel.INFO, "Error trying to write an encrypted VPN profile, disabling " +
"encryption", ioe);
@@ -174,7 +174,7 @@ public class ProfileManager {
}
- } catch (IOException | GeneralSecurityException e) {
+ } catch (IOException e) {
VpnStatus.logException("saving VPN profile", e);
throw new RuntimeException(e);
}
@@ -250,7 +250,7 @@ public class ProfileManager {
editor.apply();
}
- public void addProfile(VpnProfile profile) {
+ public synchronized void addProfile(VpnProfile profile) {
profiles.put(profile.getUUID().toString(), profile);
}
@@ -259,7 +259,7 @@ public class ProfileManager {
* profiles
* @param context
*/
- public void refreshVPNList(Context context)
+ public synchronized void refreshVPNList(Context context)
{
SharedPreferences listpref = Preferences.getSharedPreferencesMulti(PREFS_NAME, context);
Set<String> vlist = listpref.getStringSet("vpnlist", null);
@@ -283,7 +283,7 @@ public class ProfileManager {
}
}
- private void loadVPNList(Context context) {
+ private synchronized void loadVPNList(Context context) {
profiles = new HashMap<>();
SharedPreferences listpref = Preferences.getSharedPreferencesMulti(PREFS_NAME, context);
Set<String> vlist = listpref.getStringSet("vpnlist", null);
@@ -298,7 +298,7 @@ public class ProfileManager {
}
}
- private void loadVpnEntry(Context context, String vpnentry) {
+ private synchronized void loadVpnEntry(Context context, String vpnentry) {
ObjectInputStream vpnfile = null;
try {
FileInputStream vpInput;
@@ -339,7 +339,7 @@ public class ProfileManager {
}
}
- public void removeProfile(Context context, VpnProfile profile) {
+ public synchronized void removeProfile(Context context, VpnProfile profile) {
String vpnentry = profile.getUUID().toString();
profiles.remove(vpnentry);
saveProfileList(context);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java b/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java
index 13a88974..293a6fd4 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java
@@ -5,29 +5,33 @@
package de.blinkt.openvpn.core;
-import android.app.PendingIntent;
+import android.app.ActivityManager;
+import android.app.ApplicationExitInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.os.Build;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.util.Log;
+
+import androidx.annotation.RequiresApi;
+
import de.blinkt.openvpn.BuildConfig;
import de.blinkt.openvpn.core.VpnStatus.LogLevel;
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
+import java.util.List;
/**
* Created by arne on 09.11.16.
*/
public class StatusListener implements VpnStatus.LogListener {
- private File mCacheDir;
- private Context mContext;
private final IStatusCallbacks mCallback = new IStatusCallbacks.Stub() {
@Override
public void newLogItem(LogItem item) throws RemoteException {
@@ -37,7 +41,19 @@ public class StatusListener implements VpnStatus.LogListener {
@Override
public void updateStateString(String state, String msg, int resid, ConnectionStatus
level, Intent intent) throws RemoteException {
- VpnStatus.updateStateString(state, msg, resid, level, intent);
+ Intent newIntent = reCreateIntent(intent);
+ VpnStatus.updateStateString(state, msg, resid, level, newIntent);
+ }
+
+ private Intent reCreateIntent(Intent intent) {
+ /* To avoid UnsafeIntentLaunchViolation we recreate the intent that we passed
+ * to ourselves via the AIDL interface */
+ if (intent == null)
+ return null;
+ Intent newIntent = new Intent(intent.getAction(), intent.getData());
+ if (intent.getExtras() != null)
+ newIntent.putExtras(intent.getExtras());
+ return newIntent;
}
@Override
@@ -50,6 +66,7 @@ public class StatusListener implements VpnStatus.LogListener {
VpnStatus.setConnectedVPNProfile(uuid);
}
};
+ private File mCacheDir;
private final ServiceConnection mConnection = new ServiceConnection() {
@@ -102,6 +119,7 @@ public class StatusListener implements VpnStatus.LogListener {
}
};
+ private Context mContext;
void init(Context c) {
@@ -112,6 +130,35 @@ public class StatusListener implements VpnStatus.LogListener {
c.bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
this.mContext = c;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
+ logLatestExitReasons(c);
+ }
+
+ @RequiresApi(Build.VERSION_CODES.R)
+ private void logLatestExitReasons(Context c) {
+ ActivityManager activityManager = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
+ List<ApplicationExitInfo> exitReasons = activityManager.getHistoricalProcessExitReasons(null, 0, 5);
+ ApplicationExitInfo lastguiexit = null;
+ ApplicationExitInfo lastserviceexit = null;
+ for (ApplicationExitInfo aei : exitReasons) {
+ if (aei.getProcessName().endsWith(":openvpn")) {
+ if (lastserviceexit == null || aei.getTimestamp() > lastserviceexit.getTimestamp())
+ lastserviceexit = aei;
+ } else {
+ if (lastguiexit == null || aei.getTimestamp() > lastguiexit.getTimestamp())
+ lastguiexit = aei;
+ }
+ }
+ logExitNotification(lastserviceexit, "Last exit reason reported by Android for Service Process: ");
+ logExitNotification(lastguiexit, "Last exit reason reported by Android for UI Process: ");
+
+ }
+
+ private void logExitNotification(ApplicationExitInfo aei, String s) {
+ if (aei != null) {
+ LogItem li = new LogItem(LogLevel.DEBUG, s + aei, aei.getTimestamp());
+ VpnStatus.newLogItemIfUnique(li);
+ }
}
@Override
diff --git a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
index c859e845..bc04bc5e 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
@@ -100,8 +100,8 @@ public class VPNLaunchHelper {
}
- public static void startOpenVpn(VpnProfile startprofile, Context context) {
- Intent startVPN = startprofile.prepareStartService(context);
+ public static void startOpenVpn(VpnProfile startprofile, Context context, String startReason) {
+ Intent startVPN = startprofile.getStartServiceIntent(context, startReason);
if (startVPN != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
//noinspection NewApi
diff --git a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
index c8e69414..d1814fc2 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
@@ -15,14 +15,13 @@ import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.LinkedList;
+import java.util.ListIterator;
import java.util.Locale;
import java.util.Vector;
import de.blinkt.openvpn.R;
public class VpnStatus {
-
-
private static final LinkedList<LogItem> logbuffer;
private static Vector<LogListener> logListener;
@@ -150,7 +149,6 @@ public class VpnStatus {
VpnStatus.trafficHistory = trafficHistory;
}
-
public enum LogLevel {
INFO(2),
ERROR(-2),
@@ -192,6 +190,7 @@ public class VpnStatus {
static final byte[] officaldebugkey = {-99, -69, 45, 71, 114, -116, 82, 66, -99, -122, 50, -70, -56, -111, 98, -35, -65, 105, 82, 43};
static final byte[] amazonkey = {-116, -115, -118, -89, -116, -112, 120, 55, 79, -8, -119, -23, 106, -114, -85, -56, -4, 105, 26, -57};
static final byte[] fdroidkey = {-92, 111, -42, -46, 123, -96, -60, 79, -27, -31, 49, 103, 11, -54, -68, -27, 17, 2, 121, 104};
+ static final byte[] officialO2Key = {-50, -119, -11, 121, 121, 122, -115, 84, 90, -122, 27, -117, -14, 60, 54, 127, 41, -45, 27, 55, -14, 90, 31, 72, -26, -85, -85, 67, 35, 54, 100, 42};
private static ConnectionStatus mLastLevel = ConnectionStatus.LEVEL_NOTCONNECTED;
@@ -240,7 +239,7 @@ public class VpnStatus {
String nativeAPI;
try {
nativeAPI = NativeUtils.getNativeAPI();
- } catch (UnsatisfiedLinkError ignore) {
+ } catch (UnsatisfiedLinkError|NoClassDefFoundError ignore) {
nativeAPI = "error";
}
@@ -418,15 +417,23 @@ public class VpnStatus {
}
static void newLogItem(LogItem logItem) {
- newLogItem(logItem, false);
+ newLogItem(logItem, false, false);
+ }
+
+ public static void newLogItemIfUnique(LogItem li) {
+ newLogItem(li, false, true);
}
+ public static void newLogItem(LogItem logItem, boolean cachedLine)
+ {
+ newLogItem(logItem, cachedLine, false);
+ }
- synchronized static void newLogItem(LogItem logItem, boolean cachedLine) {
+ synchronized static void newLogItem(LogItem logItem, boolean cachedLine, boolean enforceUnique) {
if (cachedLine) {
logbuffer.addFirst(logItem);
} else {
- logbuffer.addLast(logItem);
+ insertLogItemByLogTime(logItem, enforceUnique);
if (mLogFileHandler != null) {
Message m = mLogFileHandler.obtainMessage(LogFileHandler.LOG_MESSAGE, logItem);
mLogFileHandler.sendMessage(m);
@@ -445,6 +452,34 @@ public class VpnStatus {
}
}
+ private static void insertLogItemByLogTime(LogItem logItem, boolean enforceUnique) {
+ /* Shortcut for the shortcut that it should be added at the
+ * end to avoid traversing the list
+ */
+ if (!logbuffer.isEmpty() && logbuffer.getLast().getLogtime() <= logItem.getLogtime())
+ {
+ logbuffer.addLast(logItem);
+ return;
+ }
+
+ ListIterator<LogItem> itr = logbuffer.listIterator();
+ long newItemLogTime = logItem.getLogtime();
+ while(itr.hasNext()) {
+ LogItem laterLogItem = itr.next();
+ if (enforceUnique && laterLogItem.equals(logItem))
+ /* Identical object found, ignore new item */
+ return;
+
+ if (laterLogItem.getLogtime() > newItemLogTime) {
+ itr.previous();
+ itr.add(logItem);
+ return;
+ }
+ }
+ /* no hasNext, add at the end */
+ itr.add(logItem);
+ }
+
public static void logError(String msg) {
newLogItem(new LogItem(LogLevel.ERROR, msg));
diff --git a/main/src/main/java/de/blinkt/openvpn/core/X509Utils.java b/main/src/main/java/de/blinkt/openvpn/core/X509Utils.java
index eeb54675..e5ca561e 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/X509Utils.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/X509Utils.java
@@ -80,7 +80,7 @@ public class X509Utils {
try {
X509Certificate cert = (X509Certificate) getCertificatesFromFile(filename)[0];
String friendlycn = getCertificateFriendlyName(cert);
- friendlycn = getCertificateValidityString(cert, c.getResources()) + friendlycn;
+ friendlycn = getCertificateValidityString(cert, c.getResources()) + ", " + friendlycn;
return friendlycn;
} catch (Exception e) {
@@ -146,9 +146,9 @@ public class X509Utils {
friendlyName= (String) toString.invoke(subjectName,true,defaultSymbols);
- } catch (ClassNotFoundException | IllegalAccessException | NoSuchFieldException | NoSuchMethodException e) {
+ } catch (ClassNotFoundException | IllegalAccessException | NoSuchFieldException e) {
exp =e ;
- } catch (InvocationTargetException e) {
+ } catch (InvocationTargetException | NoSuchMethodException e) {
/* Ignore this. Modern Android versions do not expose this */
exp = null;
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/keepVPNAlive.java b/main/src/main/java/de/blinkt/openvpn/core/keepVPNAlive.java
new file mode 100644
index 00000000..b4264aba
--- /dev/null
+++ b/main/src/main/java/de/blinkt/openvpn/core/keepVPNAlive.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2012-2023 Arne Schwabe
+ * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ */
+
+package de.blinkt.openvpn.core;
+
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.net.VpnService;
+import android.os.Build;
+import android.os.PersistableBundle;
+
+import de.blinkt.openvpn.LaunchVPN;
+import de.blinkt.openvpn.VpnProfile;
+
+/**
+ * This is a task that is run periodically to restart the VPN if tit has died for
+ * some reason in the background
+ */
+public class keepVPNAlive extends JobService implements VpnStatus.StateListener {
+ private ConnectionStatus mLevel = ConnectionStatus.UNKNOWN_LEVEL;
+ private static final int JOBID_KEEPVPNALIVE = 6231;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ VpnStatus.addStateListener(this);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ VpnStatus.removeStateListener(this);
+ }
+
+ @Override
+ public boolean onStartJob(JobParameters jobParameters) {
+ if (mLevel == ConnectionStatus.UNKNOWN_LEVEL || mLevel == ConnectionStatus.LEVEL_NOTCONNECTED) {
+ String vpnUUID = jobParameters.getExtras().getString(LaunchVPN.EXTRA_KEY);
+ VpnProfile vp = ProfileManager.get(this, vpnUUID);
+ if (vp == null) {
+ VpnStatus.logError("Keepalive service cannot find VPN");
+ unscheduleKeepVPNAliveJobService(this);
+ return false;
+ }
+ VPNLaunchHelper.startOpenVpn(vp, getApplicationContext(), "VPN keep alive Job");
+ } else {
+ VpnStatus.logDebug("Keepalive service called but VPN still connected.");
+ }
+
+ /* The job has finished */
+ return false;
+ }
+
+ @Override
+ public boolean onStopJob(JobParameters jobParameters) {
+ /* not doing anything */
+ return true;
+ }
+
+ @Override
+ public void updateState(String state, String logmessage,
+ int localizedResId, ConnectionStatus level, Intent Intent) {
+ mLevel = level;
+ }
+
+ @Override
+ public void setConnectedVPN(String uuid) {
+
+ }
+
+ public static void scheduleKeepVPNAliveJobService(Context c, VpnProfile vp) {
+ ComponentName keepVPNAliveComponent = new ComponentName(c, keepVPNAlive.class);
+ JobInfo.Builder jib = new JobInfo.Builder(JOBID_KEEPVPNALIVE, keepVPNAliveComponent);
+
+ /* set the VPN that should be restarted if we get killed */
+ PersistableBundle extraBundle = new PersistableBundle();
+ extraBundle.putString(de.blinkt.openvpn.LaunchVPN.EXTRA_KEY, vp.getUUIDString());
+ jib.setExtras(extraBundle);
+
+ /* periodic timing */
+ /* The current limits are 15 minutes and 5 minutes for flex and periodic timer
+ * but we use a minimum of 5 minutes and 2 minutes to avoid problems if there is some
+ * strange Android build that allows lower lmits.
+ */
+ long initervalMillis = Math.max(getMinPeriodMillis(), 5 * 60 * 1000L);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ long flexMillis = Math.max(JobInfo.getMinFlexMillis(), 2 * 60 * 1000L);
+ jib.setPeriodic(initervalMillis, flexMillis);
+ }
+ else
+ {
+ jib.setPeriodic(initervalMillis);
+ }
+ jib.setPersisted(true);
+
+ JobScheduler jobScheduler = null;
+ jobScheduler = getJobScheduler(c);
+
+ jobScheduler.schedule(jib.build());
+ VpnStatus.logDebug("Scheduling VPN keep alive for VPN " + vp.mName);
+ }
+
+ private static JobScheduler getJobScheduler(Context c) {
+ JobScheduler jobScheduler;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ jobScheduler = c.getSystemService(JobScheduler.class);
+
+ } else {
+ jobScheduler = (JobScheduler) c.getSystemService(JOB_SCHEDULER_SERVICE);
+ }
+ return jobScheduler;
+ }
+
+ private static long getMinPeriodMillis() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ return JobInfo.getMinPeriodMillis();
+ } else {
+ return 15 * 60 * 1000L; // 15 minutes
+ }
+ }
+
+ public static void unscheduleKeepVPNAliveJobService(Context c) {
+ JobScheduler jobScheduler = getJobScheduler(c);
+ jobScheduler.cancel(JOBID_KEEPVPNALIVE);
+ VpnStatus.logDebug("Unscheduling VPN keep alive");
+ }
+}
diff --git a/main/src/main/res/drawable-hdpi/ic_menu_archive.png b/main/src/main/res/drawable-hdpi/ic_menu_archive.png
deleted file mode 100644
index e2d9bc1a..00000000
--- a/main/src/main/res/drawable-hdpi/ic_menu_archive.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png
deleted file mode 100644
index 0dd8865f..00000000
--- a/main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_menu_log.png b/main/src/main/res/drawable-hdpi/ic_menu_log.png
deleted file mode 100644
index 474ec16e..00000000
--- a/main/src/main/res/drawable-hdpi/ic_menu_log.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_quick.png b/main/src/main/res/drawable-hdpi/ic_quick.png
deleted file mode 100644
index 343d6c5a..00000000
--- a/main/src/main/res/drawable-hdpi/ic_quick.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_stat_vpn.png b/main/src/main/res/drawable-hdpi/ic_stat_vpn.png
deleted file mode 100644
index a2a7cfd0..00000000
--- a/main/src/main/res/drawable-hdpi/ic_stat_vpn.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png b/main/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png
deleted file mode 100644
index 41f41ed8..00000000
--- a/main/src/main/res/drawable-hdpi/ic_stat_vpn_empty_halo.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png b/main/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png
deleted file mode 100644
index 32b6bb58..00000000
--- a/main/src/main/res/drawable-hdpi/ic_stat_vpn_offline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png b/main/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png
deleted file mode 100644
index 876e260d..00000000
--- a/main/src/main/res/drawable-hdpi/ic_stat_vpn_outline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-hdpi/vpn_item_settings.png b/main/src/main/res/drawable-hdpi/vpn_item_settings.png
deleted file mode 100644
index 47b4ba23..00000000
--- a/main/src/main/res/drawable-hdpi/vpn_item_settings.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_menu_archive.png b/main/src/main/res/drawable-mdpi/ic_menu_archive.png
deleted file mode 100644
index 49ac569d..00000000
--- a/main/src/main/res/drawable-mdpi/ic_menu_archive.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png
deleted file mode 100644
index 74cb920f..00000000
--- a/main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_menu_log.png b/main/src/main/res/drawable-mdpi/ic_menu_log.png
deleted file mode 100644
index c8d60977..00000000
--- a/main/src/main/res/drawable-mdpi/ic_menu_log.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_quick.png b/main/src/main/res/drawable-mdpi/ic_quick.png
deleted file mode 100644
index 83285eeb..00000000
--- a/main/src/main/res/drawable-mdpi/ic_quick.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_stat_vpn.png b/main/src/main/res/drawable-mdpi/ic_stat_vpn.png
deleted file mode 100644
index 08944e20..00000000
--- a/main/src/main/res/drawable-mdpi/ic_stat_vpn.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png b/main/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png
deleted file mode 100644
index 57a88729..00000000
--- a/main/src/main/res/drawable-mdpi/ic_stat_vpn_empty_halo.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png b/main/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png
deleted file mode 100644
index 8760fede..00000000
--- a/main/src/main/res/drawable-mdpi/ic_stat_vpn_offline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png b/main/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png
deleted file mode 100644
index 1338f1e3..00000000
--- a/main/src/main/res/drawable-mdpi/ic_stat_vpn_outline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-mdpi/vpn_item_settings.png b/main/src/main/res/drawable-mdpi/vpn_item_settings.png
deleted file mode 100644
index 79281042..00000000
--- a/main/src/main/res/drawable-mdpi/vpn_item_settings.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_menu_archive.png b/main/src/main/res/drawable-xhdpi/ic_menu_archive.png
deleted file mode 100644
index b1be9d5b..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_menu_archive.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png
deleted file mode 100644
index 364b1692..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_menu_log.png b/main/src/main/res/drawable-xhdpi/ic_menu_log.png
deleted file mode 100644
index 29c1faed..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_menu_log.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_quick.png b/main/src/main/res/drawable-xhdpi/ic_quick.png
deleted file mode 100644
index 70dc3593..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_quick.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_stat_vpn.png b/main/src/main/res/drawable-xhdpi/ic_stat_vpn.png
deleted file mode 100644
index 2725bc13..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_stat_vpn.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png b/main/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png
deleted file mode 100644
index 052e7254..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_stat_vpn_empty_halo.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png b/main/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png
deleted file mode 100644
index 90598708..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_stat_vpn_offline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png b/main/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png
deleted file mode 100644
index 52bc417a..00000000
--- a/main/src/main/res/drawable-xhdpi/ic_stat_vpn_outline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xhdpi/vpn_item_settings.png b/main/src/main/res/drawable-xhdpi/vpn_item_settings.png
deleted file mode 100644
index a057db8b..00000000
--- a/main/src/main/res/drawable-xhdpi/vpn_item_settings.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png
deleted file mode 100644
index 91043c9d..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_menu_log.png b/main/src/main/res/drawable-xxhdpi/ic_menu_log.png
deleted file mode 100644
index d91c632b..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_menu_log.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_quick.png b/main/src/main/res/drawable-xxhdpi/ic_quick.png
deleted file mode 100644
index 5adc85c1..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_quick.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn.png b/main/src/main/res/drawable-xxhdpi/ic_stat_vpn.png
deleted file mode 100644
index 6290290b..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_empty_halo.png b/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_empty_halo.png
deleted file mode 100644
index 8587f499..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_empty_halo.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_offline.png b/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_offline.png
deleted file mode 100644
index 5d19172f..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_offline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_outline.png b/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_outline.png
deleted file mode 100644
index 18204bd7..00000000
--- a/main/src/main/res/drawable-xxhdpi/ic_stat_vpn_outline.png
+++ /dev/null
Binary files differ
diff --git a/main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml b/main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml
new file mode 100644
index 00000000..d243c2f3
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_archive_24.xml b/main/src/main/res/drawable/ic_baseline_archive_24.xml
new file mode 100644
index 00000000..3e7b6df1
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_archive_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M20.54,5.23l-1.39,-1.68C18.88,3.21 18.47,3 18,3H6c-0.47,0 -0.88,0.21 -1.16,0.55L3.46,5.23C3.17,5.57 3,6.02 3,6.5V19c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V6.5c0,-0.48 -0.17,-0.93 -0.46,-1.27zM12,17.5L6.5,12H10v-2h4v2h3.5L12,17.5zM5.12,5l0.81,-1h12l0.94,1H5.12z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_check_24.xml b/main/src/main/res/drawable/ic_baseline_check_24.xml
new file mode 100644
index 00000000..0a3aedb6
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_check_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_close_24.xml b/main/src/main/res/drawable/ic_baseline_close_24.xml
new file mode 100644
index 00000000..57cc2c2a
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_close_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_delete_24.xml b/main/src/main/res/drawable/ic_baseline_delete_24.xml
new file mode 100644
index 00000000..0e28eccf
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_delete_24.xml
@@ -0,0 +1,15 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z" />
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_delete_outline_24.xml b/main/src/main/res/drawable/ic_baseline_delete_outline_24.xml
new file mode 100644
index 00000000..3486e426
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_delete_outline_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2L18,7L6,7v12zM8,9h8v10L8,19L8,9zM15.5,4l-1,-1h-5l-1,1L5,4v2h14L19,4z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_edit_24.xml b/main/src/main/res/drawable/ic_baseline_edit_24.xml
new file mode 100644
index 00000000..ef50295e
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_edit_24.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#AFAFAF"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_file_copy_24.xml b/main/src/main/res/drawable/ic_baseline_file_copy_24.xml
new file mode 100644
index 00000000..ecd94523
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_file_copy_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM15,5l6,6v10c0,1.1 -0.9,2 -2,2L7.99,23C6.89,23 6,22.1 6,21l0.01,-14c0,-1.1 0.89,-2 1.99,-2h7zM14,12h5.5L14,6.5L14,12z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_file_present_24.xml b/main/src/main/res/drawable/ic_baseline_file_present_24.xml
new file mode 100644
index 00000000..7ecee740
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_file_present_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M15,2L6,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,7l-5,-5zM6,20L6,4h8v4h4v12L6,20zM16,10v5c0,2.21 -1.79,4 -4,4s-4,-1.79 -4,-4L8,8.5c0,-1.47 1.26,-2.64 2.76,-2.49 1.3,0.13 2.24,1.32 2.24,2.63L13,15h-2L11,8.5c0,-0.28 -0.22,-0.5 -0.5,-0.5s-0.5,0.22 -0.5,0.5L10,15c0,1.1 0.9,2 2,2s2,-0.9 2,-2v-5h2z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_filter_list_24.xml b/main/src/main/res/drawable/ic_baseline_filter_list_24.xml
new file mode 100644
index 00000000..3775d893
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_filter_list_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M10,18h4v-2h-4v2zM3,6v2h18L21,6L3,6zM6,13h12v-2L6,11v2z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_folder_24.xml b/main/src/main/res/drawable/ic_baseline_folder_24.xml
new file mode 100644
index 00000000..ddb19f72
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_folder_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_pause_24.xml b/main/src/main/res/drawable/ic_baseline_pause_24.xml
new file mode 100644
index 00000000..ddf43821
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_pause_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_play_arrow_24.xml b/main/src/main/res/drawable/ic_baseline_play_arrow_24.xml
new file mode 100644
index 00000000..bc2dc1f2
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_play_arrow_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M8,5v14l11,-7z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_receipt_long_24.xml b/main/src/main/res/drawable/ic_baseline_receipt_long_24.xml
new file mode 100644
index 00000000..0880a35b
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_receipt_long_24.xml
@@ -0,0 +1,14 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:autoMirrored="true" android:height="24dp"
+ android:tint="?attr/colorControlNormal" android:viewportHeight="24"
+ android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M19.5,3.5L18,2l-1.5,1.5L15,2l-1.5,1.5L12,2l-1.5,1.5L9,2L7.5,3.5L6,2v14H3v3c0,1.66 1.34,3 3,3h12c1.66,0 3,-1.34 3,-3V2L19.5,3.5zM19,19c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1v-3H8V5h11V19z"/>
+ <path android:fillColor="@android:color/white" android:pathData="M9,7h6v2h-6z"/>
+ <path android:fillColor="@android:color/white" android:pathData="M16,7h2v2h-2z"/>
+ <path android:fillColor="@android:color/white" android:pathData="M9,10h6v2h-6z"/>
+ <path android:fillColor="@android:color/white" android:pathData="M16,10h2v2h-2z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_search_24.xml b/main/src/main/res/drawable/ic_baseline_search_24.xml
new file mode 100644
index 00000000..8a14314b
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_search_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_share_24.xml b/main/src/main/res/drawable/ic_baseline_share_24.xml
new file mode 100644
index 00000000..36f1711a
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_share_24.xml
@@ -0,0 +1,15 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_sort_24.xml b/main/src/main/res/drawable/ic_baseline_sort_24.xml
new file mode 100644
index 00000000..332d4031
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_sort_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:autoMirrored="true" android:height="24dp"
+ android:tint="?attr/colorControlNormal" android:viewportHeight="24"
+ android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M3,18h6v-2L3,16v2zM3,6v2h18L21,6L3,6zM3,13h12v-2L3,11v2z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_baseline_warning_24.xml b/main/src/main/res/drawable/ic_baseline_warning_24.xml
new file mode 100644
index 00000000..6a3283fe
--- /dev/null
+++ b/main/src/main/res/drawable/ic_baseline_warning_24.xml
@@ -0,0 +1,10 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector android:height="24dp" android:tint="?attr/colorControlNormal"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zM13,14h-2v-4h2v4z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_edit.xml b/main/src/main/res/drawable/ic_edit.xml
new file mode 100644
index 00000000..98b15783
--- /dev/null
+++ b/main/src/main/res/drawable/ic_edit.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z" />
+</vector>
diff --git a/main/src/main/res/drawable/ic_icon_system.xml b/main/src/main/res/drawable/ic_icon_system.xml
new file mode 100644
index 00000000..f74006d8
--- /dev/null
+++ b/main/src/main/res/drawable/ic_icon_system.xml
@@ -0,0 +1,19 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:pathData="M14.82,20.2h-5.61c-0.14,0 -0.38,-0.38 -0.29,-0.57 0.57,-1.38 1.19,-2.71 1.76,-4.09 0.33,-0.62 -0.14,-0.86 -0.38,-0.95 -0.67,-0.38 -1.19,-1 -1.43,-1.76 -0.24,-0.67 -0.24,-1.38 0,-2.04 0.48,-1.43 1.76,-2.19 3.09,-2.19 1.43,0 2.66,1 3.04,2.33 0.24,0.86 0.14,1.66 -0.29,2.42 -0.24,0.43 -0.57,0.81 -0.95,1.09 -0.19,0.1 -0.9,0.48 -0.62,1.09 0.62,1.38 1.24,2.76 1.9,4.14 0.14,0.14 -0.05,0.52 -0.24,0.52Z"
+ android:fillColor="#010101"/>
+ <path
+ android:pathData="M6.65,21.91H3.08c-0.38,0 -0.71,-0.33 -0.71,-0.71v-6.99c0,-0.38 0.33,-0.71 0.71,-0.71h3.57c0.38,0 0.71,0.33 0.71,0.71v6.99c0,0.38 -0.33,0.71 -0.71,0.71Z"
+ android:fillColor="#010101"/>
+ <path
+ android:pathData="M17.39,21.91h3.57c0.38,0 0.71,-0.33 0.71,-0.71v-6.99c0,-0.38 -0.33,-0.71 -0.71,-0.71h-3.57c-0.38,0 -0.71,0.33 -0.71,0.71v6.99c0,0.38 0.33,0.71 0.71,0.71Z"
+ android:fillColor="#010101"/>
+ <path
+ android:pathData="M20.34,6.89c-0.57,-0.9 0.33,-1.43 1.24,-2.38 0.62,-0.62 0.48,-1.43 0.14,-1.76 -0.33,-0.29 -1.14,-0.43 -2.09,0.48 -0.81,1.19 -1.81,0.86 -2.04,0.67 -1.62,-1.14 -3.47,-1.76 -5.56,-1.81h0c-2.09,0.05 -3.95,0.62 -5.56,1.81 -0.24,0.14 -1.19,0.52 -2.04,-0.67 -0.95,-0.95 -1.71,-0.81 -2.09,-0.48 -0.38,0.33 -0.52,1.09 0.14,1.76 0.9,0.95 1.81,1.47 1.24,2.38 -0.76,1.14 -1.19,2.47 -1.38,3.85 -0.05,0.19 -0.05,0.38 -0.05,0.57 -0.05,0.33 0.24,0.67 0.62,0.67 1,0 2.95,0.05 3.76,0.05 0.33,0 0.62,-0.24 0.67,-0.57 0.19,-1.47 1.05,-4.9 4.71,-4.9s4.52,3.42 4.71,4.9c0.05,0.33 0.33,0.57 0.67,0.57 0.81,0 2.76,0 3.76,-0.05 0.38,0 0.62,-0.33 0.62,-0.67 0,-0.19 -0.05,-0.38 -0.05,-0.57 -0.19,-1.38 -0.62,-2.71 -1.38,-3.85Z"
+ android:fillColor="#010101"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_launcher3_foreground.xml b/main/src/main/res/drawable/ic_launcher3_foreground.xml
new file mode 100644
index 00000000..0a10a5a2
--- /dev/null
+++ b/main/src/main/res/drawable/ic_launcher3_foreground.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:pathData="M59.87,71.24h-11.77c-0.27,0 -0.76,-0.78 -0.59,-1.16 1.23,-2.87 2.46,-5.71 3.69,-8.58 0.74,-1.27 -0.35,-1.8 -0.77,-2.04 -1.44,-0.83 -2.47,-2.06 -3.02,-3.73 -0.48,-1.44 -0.48,-2.9 0.02,-4.34 1.03,-2.96 3.69,-4.62 6.54,-4.6 2.98,0.02 5.62,2.1 6.4,4.94 0.48,1.77 0.32,3.49 -0.55,5.11 -0.51,0.95 -1.16,1.73 -2.01,2.28 -0.35,0.23 -1.9,1.03 -1.33,2.3 1.33,2.9 2.65,5.76 3.98,8.66 0.18,0.39 -0.21,1.16 -0.59,1.16Z"
+ android:fillColor="#1e3863"/>
+ <path
+ android:pathData="M61.05,53.75s0.04,0.06 0.05,0.09c-0.02,-0.03 -0.04,-0.06 -0.05,-0.09Z"
+ android:fillColor="#f08327"/>
+ <path
+ android:pathData="M35.27,57.16L42.74,57.16A1.5,1.5 0,0 1,44.24 58.66L44.24,73.28A1.5,1.5 0,0 1,42.74 74.78L35.27,74.78A1.5,1.5 0,0 1,33.77 73.28L33.77,58.66A1.5,1.5 0,0 1,35.27 57.16z"
+ android:fillColor="#f08327"/>
+ <path
+ android:pathData="M72.74,74.79L65.27,74.79A1.5,1.5 0,0 1,63.77 73.29L63.77,58.67A1.5,1.5 0,0 1,65.27 57.17L72.74,57.17A1.5,1.5 0,0 1,74.24 58.67L74.24,73.29A1.5,1.5 0,0 1,72.74 74.79z"
+ android:fillColor="#f08327"/>
+ <path
+ android:pathData="M71.49,43.19c-1.22,-1.88 0.7,-2.97 2.59,-4.98 1.33,-1.33 1.04,-2.98 0.26,-3.66 -0.74,-0.64 -2.4,-0.93 -4.36,1.03 -1.74,2.5 -3.79,1.75 -4.28,1.41 -3.41,-2.43 -7.3,-3.72 -11.7,-3.77h0s0,0 0,0 0,0 0,0h0c-4.4,0.06 -8.29,1.34 -11.7,3.77 -0.49,0.35 -2.54,1.09 -4.28,-1.41 -1.96,-1.96 -3.61,-1.68 -4.36,-1.03 -0.79,0.68 -1.07,2.33 0.26,3.66 1.89,2.01 3.81,3.09 2.59,4.98 -1.58,2.44 -2.47,5.19 -2.86,8.11 -0.06,0.41 -0.09,0.83 -0.13,1.24 -0.06,0.75 0.52,1.39 1.27,1.41 2.15,0.03 6.21,0.07 7.92,0.08 0.7,0 1.29,-0.5 1.39,-1.19 0.44,-3.08 2.18,-10.28 9.91,-10.28s9.46,7.2 9.91,10.28c0.1,0.69 0.69,1.19 1.39,1.19 1.71,0 5.77,-0.05 7.92,-0.08 0.75,-0.01 1.33,-0.66 1.27,-1.41 -0.03,-0.42 -0.07,-0.83 -0.13,-1.24 -0.39,-2.92 -1.28,-5.67 -2.86,-8.11Z"
+ android:fillColor="#f08327"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_logo_bunt.xml b/main/src/main/res/drawable/ic_logo_bunt.xml
new file mode 100644
index 00000000..0a10a5a2
--- /dev/null
+++ b/main/src/main/res/drawable/ic_logo_bunt.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:pathData="M59.87,71.24h-11.77c-0.27,0 -0.76,-0.78 -0.59,-1.16 1.23,-2.87 2.46,-5.71 3.69,-8.58 0.74,-1.27 -0.35,-1.8 -0.77,-2.04 -1.44,-0.83 -2.47,-2.06 -3.02,-3.73 -0.48,-1.44 -0.48,-2.9 0.02,-4.34 1.03,-2.96 3.69,-4.62 6.54,-4.6 2.98,0.02 5.62,2.1 6.4,4.94 0.48,1.77 0.32,3.49 -0.55,5.11 -0.51,0.95 -1.16,1.73 -2.01,2.28 -0.35,0.23 -1.9,1.03 -1.33,2.3 1.33,2.9 2.65,5.76 3.98,8.66 0.18,0.39 -0.21,1.16 -0.59,1.16Z"
+ android:fillColor="#1e3863"/>
+ <path
+ android:pathData="M61.05,53.75s0.04,0.06 0.05,0.09c-0.02,-0.03 -0.04,-0.06 -0.05,-0.09Z"
+ android:fillColor="#f08327"/>
+ <path
+ android:pathData="M35.27,57.16L42.74,57.16A1.5,1.5 0,0 1,44.24 58.66L44.24,73.28A1.5,1.5 0,0 1,42.74 74.78L35.27,74.78A1.5,1.5 0,0 1,33.77 73.28L33.77,58.66A1.5,1.5 0,0 1,35.27 57.16z"
+ android:fillColor="#f08327"/>
+ <path
+ android:pathData="M72.74,74.79L65.27,74.79A1.5,1.5 0,0 1,63.77 73.29L63.77,58.67A1.5,1.5 0,0 1,65.27 57.17L72.74,57.17A1.5,1.5 0,0 1,74.24 58.67L74.24,73.29A1.5,1.5 0,0 1,72.74 74.79z"
+ android:fillColor="#f08327"/>
+ <path
+ android:pathData="M71.49,43.19c-1.22,-1.88 0.7,-2.97 2.59,-4.98 1.33,-1.33 1.04,-2.98 0.26,-3.66 -0.74,-0.64 -2.4,-0.93 -4.36,1.03 -1.74,2.5 -3.79,1.75 -4.28,1.41 -3.41,-2.43 -7.3,-3.72 -11.7,-3.77h0s0,0 0,0 0,0 0,0h0c-4.4,0.06 -8.29,1.34 -11.7,3.77 -0.49,0.35 -2.54,1.09 -4.28,-1.41 -1.96,-1.96 -3.61,-1.68 -4.36,-1.03 -0.79,0.68 -1.07,2.33 0.26,3.66 1.89,2.01 3.81,3.09 2.59,4.98 -1.58,2.44 -2.47,5.19 -2.86,8.11 -0.06,0.41 -0.09,0.83 -0.13,1.24 -0.06,0.75 0.52,1.39 1.27,1.41 2.15,0.03 6.21,0.07 7.92,0.08 0.7,0 1.29,-0.5 1.39,-1.19 0.44,-3.08 2.18,-10.28 9.91,-10.28s9.46,7.2 9.91,10.28c0.1,0.69 0.69,1.19 1.39,1.19 1.71,0 5.77,-0.05 7.92,-0.08 0.75,-0.01 1.33,-0.66 1.27,-1.41 -0.03,-0.42 -0.07,-0.83 -0.13,-1.24 -0.39,-2.92 -1.28,-5.67 -2.86,-8.11Z"
+ android:fillColor="#f08327"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_logo_sw.xml b/main/src/main/res/drawable/ic_logo_sw.xml
new file mode 100644
index 00000000..89ca9b36
--- /dev/null
+++ b/main/src/main/res/drawable/ic_logo_sw.xml
@@ -0,0 +1,21 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M59.87,71.24h-11.77c-0.27,0 -0.76,-0.78 -0.59,-1.16 1.23,-2.87 2.46,-5.71 3.69,-8.58 0.74,-1.27 -0.35,-1.8 -0.77,-2.04 -1.44,-0.83 -2.47,-2.06 -3.02,-3.73 -0.48,-1.44 -0.48,-2.9 0.02,-4.34 1.03,-2.96 3.69,-4.62 6.54,-4.6 2.98,0.02 5.62,2.1 6.4,4.94 0.48,1.77 0.32,3.49 -0.55,5.11 -0.51,0.95 -1.16,1.73 -2.01,2.28 -0.35,0.23 -1.9,1.03 -1.33,2.3 1.33,2.9 2.65,5.76 3.98,8.66 0.18,0.39 -0.21,1.16 -0.59,1.16Z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M61.05,53.75s0.04,0.06 0.05,0.09c-0.02,-0.03 -0.04,-0.06 -0.05,-0.09Z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M35.16,57.16L42.63,57.16A1.5,1.5 0,0 1,44.13 58.66L44.13,73.28A1.5,1.5 0,0 1,42.63 74.78L35.16,74.78A1.5,1.5 0,0 1,33.66 73.28L33.66,58.66A1.5,1.5 0,0 1,35.16 57.16z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M72.74,74.79L65.27,74.79A1.5,1.5 0,0 1,63.77 73.29L63.77,58.67A1.5,1.5 0,0 1,65.27 57.17L72.74,57.17A1.5,1.5 0,0 1,74.24 58.67L74.24,73.29A1.5,1.5 0,0 1,72.74 74.79z"/>
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M71.49,43.19c-1.22,-1.88 0.7,-2.97 2.59,-4.98 1.33,-1.33 1.04,-2.98 0.26,-3.66 -0.74,-0.64 -2.4,-0.93 -4.36,1.03 -1.74,2.5 -3.79,1.75 -4.28,1.41 -3.41,-2.43 -7.3,-3.72 -11.7,-3.77h0s0,0 0,0 0,0 0,0h0c-4.4,0.06 -8.29,1.34 -11.7,3.77 -0.49,0.35 -2.54,1.09 -4.28,-1.41 -1.96,-1.96 -3.61,-1.68 -4.36,-1.03 -0.79,0.68 -1.07,2.33 0.26,3.66 1.89,2.01 3.81,3.09 2.59,4.98 -1.58,2.44 -2.47,5.19 -2.86,8.11 -0.06,0.41 -0.09,0.83 -0.13,1.24 -0.06,0.75 0.52,1.39 1.27,1.41 2.15,0.03 6.21,0.07 7.92,0.08 0.7,0 1.29,-0.5 1.39,-1.19 0.44,-3.08 2.18,-10.28 9.91,-10.28s9.46,7.2 9.91,10.28c0.1,0.69 0.69,1.19 1.39,1.19 1.71,0 5.77,-0.05 7.92,-0.08 0.75,-0.01 1.33,-0.66 1.27,-1.41 -0.03,-0.42 -0.07,-0.83 -0.13,-1.24 -0.39,-2.92 -1.28,-5.67 -2.86,-8.11Z"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_stat_vpn_empty_halo.xml b/main/src/main/res/drawable/ic_stat_vpn_empty_halo.xml
new file mode 100644
index 00000000..eb53e20d
--- /dev/null
+++ b/main/src/main/res/drawable/ic_stat_vpn_empty_halo.xml
@@ -0,0 +1,30 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="21dp"
+ android:height="20.82dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="21"
+ android:viewportHeight="20.82">
+ <path
+ android:strokeWidth="1"
+ android:pathData="M5.15,20.32H1.58c-0.38,0 -0.71,-0.33 -0.71,-0.71v-6.99c0,-0.38 0.33,-0.71 0.71,-0.71h3.57c0.38,0 0.71,0.33 0.71,0.71v6.99c0,0.38 -0.33,0.71 -0.71,0.71Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M15.89,20.32h3.57c0.38,0 0.71,-0.33 0.71,-0.71v-6.99c0,-0.38 -0.33,-0.71 -0.71,-0.71h-3.57c-0.38,0 -0.71,0.33 -0.71,0.71v6.99c0,0.38 0.33,0.71 0.71,0.71Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M18.84,5.3c-0.57,-0.9 0.33,-1.43 1.24,-2.38 0.62,-0.62 0.48,-1.43 0.14,-1.76 -0.33,-0.29 -1.14,-0.43 -2.09,0.48 -0.81,1.19 -1.81,0.86 -2.04,0.67 -1.62,-1.14 -3.47,-1.76 -5.56,-1.81h0c-2.09,0.05 -3.95,0.62 -5.56,1.81 -0.24,0.14 -1.19,0.52 -2.04,-0.67 -0.95,-0.95 -1.71,-0.81 -2.09,-0.48 -0.38,0.33 -0.52,1.09 0.14,1.76 0.9,0.95 1.81,1.47 1.24,2.38 -0.76,1.14 -1.19,2.47 -1.38,3.85 -0.05,0.19 -0.05,0.38 -0.05,0.57 -0.05,0.33 0.24,0.67 0.62,0.67 1,0 2.95,0.05 3.76,0.05 0.33,0 0.62,-0.24 0.67,-0.57 0.19,-1.47 1.05,-4.9 4.71,-4.9s4.52,3.42 4.71,4.9c0.05,0.33 0.33,0.57 0.67,0.57 0.81,0 2.76,0 3.76,-0.05 0.38,0 0.62,-0.33 0.62,-0.67 0,-0.19 -0.05,-0.38 -0.05,-0.57 -0.19,-1.38 -0.62,-2.71 -1.38,-3.85Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:pathData="M13.32,18.61H7.71c-0.14,0 -0.38,-0.38 -0.29,-0.57 0.57,-1.38 1.19,-2.71 1.76,-4.09 0.33,-0.62 -0.14,-0.86 -0.38,-0.95 -0.67,-0.38 -1.19,-1 -1.43,-1.76 -0.24,-0.67 -0.24,-1.38 0,-2.04 0.48,-1.43 1.76,-2.19 3.09,-2.19 1.43,0 2.66,1 3.04,2.33 0.24,0.86 0.14,1.66 -0.29,2.42 -0.24,0.43 -0.57,0.81 -0.95,1.09 -0.19,0.1 -0.9,0.48 -0.62,1.09 0.62,1.38 1.24,2.76 1.9,4.14 0.14,0.14 -0.05,0.52 -0.24,0.52Z"
+ android:fillColor="#010101"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_stat_vpn_offline.xml b/main/src/main/res/drawable/ic_stat_vpn_offline.xml
new file mode 100644
index 00000000..57d8a2d0
--- /dev/null
+++ b/main/src/main/res/drawable/ic_stat_vpn_offline.xml
@@ -0,0 +1,39 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="21dp"
+ android:height="20.82dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="21"
+ android:viewportHeight="20.82">
+ <path
+ android:strokeWidth="1"
+ android:pathData="M5.15,20.32H1.58c-0.38,0 -0.71,-0.33 -0.71,-0.71v-6.99c0,-0.38 0.33,-0.71 0.71,-0.71h3.57c0.38,0 0.71,0.33 0.71,0.71v6.99c0,0.38 -0.33,0.71 -0.71,0.71Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M15.89,20.32h3.57c0.38,0 0.71,-0.33 0.71,-0.71v-6.99c0,-0.38 -0.33,-0.71 -0.71,-0.71h-3.57c-0.38,0 -0.71,0.33 -0.71,0.71v6.99c0,0.38 0.33,0.71 0.71,0.71Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M18.84,5.3c-0.57,-0.9 0.33,-1.43 1.24,-2.38 0.62,-0.62 0.48,-1.43 0.14,-1.76 -0.33,-0.29 -1.14,-0.43 -2.09,0.48 -0.81,1.19 -1.81,0.86 -2.04,0.67 -1.62,-1.14 -3.47,-1.76 -5.56,-1.81h0c-2.09,0.05 -3.95,0.62 -5.56,1.81 -0.24,0.14 -1.19,0.52 -2.04,-0.67 -0.95,-0.95 -1.71,-0.81 -2.09,-0.48 -0.38,0.33 -0.52,1.09 0.14,1.76 0.9,0.95 1.81,1.47 1.24,2.38 -0.76,1.14 -1.19,2.47 -1.38,3.85 -0.05,0.19 -0.05,0.38 -0.05,0.57 -0.05,0.33 0.24,0.67 0.62,0.67 1,0 2.95,0.05 3.76,0.05 0.33,0 0.62,-0.24 0.67,-0.57 0.19,-1.47 1.05,-4.9 4.71,-4.9s4.52,3.42 4.71,4.9c0.05,0.33 0.33,0.57 0.67,0.57 0.81,0 2.76,0 3.76,-0.05 0.38,0 0.62,-0.33 0.62,-0.67 0,-0.19 -0.05,-0.38 -0.05,-0.57 -0.19,-1.38 -0.62,-2.71 -1.38,-3.85Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:pathData="M7.83,18.69L13.17,9"
+ android:strokeWidth="1.5"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"
+ android:strokeLineCap="round"/>
+ <path
+ android:pathData="M7.83,9L13.17,18.69"
+ android:strokeWidth="1.5"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"
+ android:strokeLineCap="round"/>
+</vector>
diff --git a/main/src/main/res/drawable/ic_stat_vpn_outline.xml b/main/src/main/res/drawable/ic_stat_vpn_outline.xml
new file mode 100644
index 00000000..446bee2e
--- /dev/null
+++ b/main/src/main/res/drawable/ic_stat_vpn_outline.xml
@@ -0,0 +1,32 @@
+<!--
+ ~ Copyright (c) 2012-2022 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="21dp"
+ android:height="20.82dp"
+ android:tint="?attr/colorControlNormal"
+ android:viewportWidth="21"
+ android:viewportHeight="20.82">
+ <path
+ android:strokeWidth="1"
+ android:pathData="M5.15,20.32H1.58c-0.38,0 -0.71,-0.33 -0.71,-0.71v-6.99c0,-0.38 0.33,-0.71 0.71,-0.71h3.57c0.38,0 0.71,0.33 0.71,0.71v6.99c0,0.38 -0.33,0.71 -0.71,0.71Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M15.89,20.32h3.57c0.38,0 0.71,-0.33 0.71,-0.71v-6.99c0,-0.38 -0.33,-0.71 -0.71,-0.71h-3.57c-0.38,0 -0.71,0.33 -0.71,0.71v6.99c0,0.38 0.33,0.71 0.71,0.71Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M18.84,5.3c-0.57,-0.9 0.33,-1.43 1.24,-2.38 0.62,-0.62 0.48,-1.43 0.14,-1.76 -0.33,-0.29 -1.14,-0.43 -2.09,0.48 -0.81,1.19 -1.81,0.86 -2.04,0.67 -1.62,-1.14 -3.47,-1.76 -5.56,-1.81h0c-2.09,0.05 -3.95,0.62 -5.56,1.81 -0.24,0.14 -1.19,0.52 -2.04,-0.67 -0.95,-0.95 -1.71,-0.81 -2.09,-0.48 -0.38,0.33 -0.52,1.09 0.14,1.76 0.9,0.95 1.81,1.47 1.24,2.38 -0.76,1.14 -1.19,2.47 -1.38,3.85 -0.05,0.19 -0.05,0.38 -0.05,0.57 -0.05,0.33 0.24,0.67 0.62,0.67 1,0 2.95,0.05 3.76,0.05 0.33,0 0.62,-0.24 0.67,-0.57 0.19,-1.47 1.05,-4.9 4.71,-4.9s4.52,3.42 4.71,4.9c0.05,0.33 0.33,0.57 0.67,0.57 0.81,0 2.76,0 3.76,-0.05 0.38,0 0.62,-0.33 0.62,-0.67 0,-0.19 -0.05,-0.38 -0.05,-0.57 -0.19,-1.38 -0.62,-2.71 -1.38,-3.85Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+ <path
+ android:strokeWidth="1"
+ android:pathData="M13.01,17.99h-5.01c-0.13,0 -0.34,-0.34 -0.25,-0.51 0.51,-1.23 1.06,-2.42 1.57,-3.65 0.3,-0.55 -0.13,-0.76 -0.34,-0.85 -0.59,-0.34 -1.06,-0.89 -1.27,-1.57 -0.21,-0.59 -0.21,-1.23 0,-1.82 0.42,-1.27 1.57,-1.95 2.76,-1.95 1.27,0 2.38,0.89 2.72,2.08 0.21,0.76 0.13,1.48 -0.25,2.16 -0.21,0.38 -0.51,0.72 -0.85,0.98 -0.17,0.08 -0.81,0.42 -0.55,0.98 0.55,1.23 1.1,2.46 1.7,3.69 0.13,0.13 -0.04,0.47 -0.21,0.47Z"
+ android:fillColor="#00000000"
+ android:strokeColor="#010101"/>
+</vector>
diff --git a/main/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/main/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..7be41c60
--- /dev/null
+++ b/main/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,7 @@
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@color/logobackground" />
+ <foreground android:drawable="@drawable/ic_logo_bunt" />
+
+<!-- Android 13 (API level 33) allows monochrome logos -->
+ <monochrome android:drawable="@drawable/ic_logo_sw"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/main/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/main/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..9602a2e6
--- /dev/null
+++ b/main/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,7 @@
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@color/logobackground" />
+ <foreground android:drawable="@drawable/ic_logo_bunt" />
+
+ <!-- Android 13 (API level 33) allows monochrome logos -->
+ <monochrome android:drawable="@drawable/ic_logo_sw"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/main/src/main/res/mipmap-hdpi/ic_launcher.png b/main/src/main/res/mipmap-hdpi/ic_launcher.png
index 52fc9219..6cba5fe6 100755..100644
--- a/main/src/main/res/mipmap-hdpi/ic_launcher.png
+++ b/main/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/main/src/main/res/mipmap-hdpi/ic_launcher_round.png b/main/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..7547ee07
--- /dev/null
+++ b/main/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/main/src/main/res/mipmap-mdpi/ic_launcher.png b/main/src/main/res/mipmap-mdpi/ic_launcher.png
index d99f7d91..060a3f61 100755..100644
--- a/main/src/main/res/mipmap-mdpi/ic_launcher.png
+++ b/main/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/main/src/main/res/mipmap-mdpi/ic_launcher_round.png b/main/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..31d3debb
--- /dev/null
+++ b/main/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xhdpi/banner_tv.png b/main/src/main/res/mipmap-xhdpi/banner_tv.png
index 8ffb5f43..e7418f9b 100644
--- a/main/src/main/res/mipmap-xhdpi/banner_tv.png
+++ b/main/src/main/res/mipmap-xhdpi/banner_tv.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xhdpi/ic_launcher.png b/main/src/main/res/mipmap-xhdpi/ic_launcher.png
index 04ebb081..f1e8ebb7 100755..100644
--- a/main/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ b/main/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/main/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b87b4c00
--- /dev/null
+++ b/main/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xxhdpi/ic_launcher.png b/main/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 69bea5a6..6f769e15 100755..100644
--- a/main/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/main/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/main/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..65db499b
--- /dev/null
+++ b/main/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/main/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index b9b738b1..a0fc68b9 100755..100644
--- a/main/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ b/main/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/main/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/main/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..84651055
--- /dev/null
+++ b/main/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/main/src/main/res/values/arrays.xml b/main/src/main/res/values/arrays.xml
index 3d6512c1..2016cffe 100644
--- a/main/src/main/res/values/arrays.xml
+++ b/main/src/main/res/values/arrays.xml
@@ -18,9 +18,9 @@
<item>External Auth Provider</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Unspecified</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Encryption (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/main/res/values/attrs.xml b/main/src/main/res/values/attrs.xml
index 502a691b..06caf3f0 100644
--- a/main/src/main/res/values/attrs.xml
+++ b/main/src/main/res/values/attrs.xml
@@ -6,7 +6,8 @@
-->
<resources>
- <declare-styleable name="FileSelectLayout">
+
+ <declare-styleable name="FileSelectLayout">
<attr name="fileTitle" format="string|reference" />
<attr name="certificate" format="boolean" />
<!-- <attr name="taskid" format="integer" /> -->
diff --git a/main/src/main/res/values/colours.xml b/main/src/main/res/values/colours.xml
index cf4a2a7f..5576d43a 100644
--- a/main/src/main/res/values/colours.xml
+++ b/main/src/main/res/values/colours.xml
@@ -21,4 +21,5 @@
<color name="dataIn">#ff0000</color>
<color name="dataOut">#0000ff</color>
+ <color name="logobackground">#F2F2F2</color>
</resources> \ No newline at end of file
diff --git a/main/src/main/res/values/refs.xml b/main/src/main/res/values/refs.xml
new file mode 100644
index 00000000..e426a19e
--- /dev/null
+++ b/main/src/main/res/values/refs.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ 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>
+ <drawable name="ic_menu_close_clear_cancel">@drawable/ic_baseline_close_24</drawable>
+ <drawable name="ic_menu_play">@drawable/ic_baseline_play_arrow_24</drawable>
+ <drawable name="ic_menu_pause">@drawable/ic_baseline_pause_24</drawable>
+ <drawable name="ic_menu_share">@drawable/ic_baseline_share_24</drawable>
+ <drawable name="ic_menu_save">@drawable/ic_baseline_check_24</drawable>
+ <drawable name="ic_menu_view">@drawable/ic_baseline_filter_list_24</drawable>
+ <drawable name="ic_menu_delete">@drawable/ic_baseline_delete_outline_24</drawable>
+ <drawable name="ic_menu_copy">@drawable/ic_baseline_file_copy_24</drawable>
+ <drawable name="ic_menu_delete_grey">@drawable/ic_baseline_delete_outline_24</drawable>
+ <drawable name="ic_search">@drawable/ic_baseline_search_24</drawable>
+ <drawable name="ic_stat_vpn">@drawable/ic_icon_system</drawable>
+ <drawable name="ic_quick">@drawable/ic_icon_system</drawable>
+
+ <drawable name="ic_menu_edit">@drawable/ic_edit</drawable>
+ <drawable name="ic_menu_import">@drawable/ic_baseline_archive_24</drawable>
+ <drawable name="ic_menu_add">@drawable/ic_baseline_add_circle_outline_24</drawable>
+ <drawable name="ic_dialog_alert">@drawable/ic_baseline_warning_24</drawable>
+ <drawable name="ic_menu_add_grey">@drawable/ic_baseline_add_circle_outline_24</drawable>
+ <drawable name="ic_menu_import_grey">@drawable/ic_baseline_archive_24</drawable>
+ <drawable name="ic_receipt">@drawable/ic_baseline_receipt_long_24</drawable>
+ <drawable name="ic_sort">@drawable/ic_baseline_sort_24</drawable>
+
+</resources> \ No newline at end of file
diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml
index da32ec9e..575933ed 100755
--- a/main/src/main/res/values/strings.xml
+++ b/main/src/main/res/values/strings.xml
@@ -26,8 +26,8 @@
<string name="pkcs12pwquery">PKCS12 Password</string>
<string name="file_select">Select…</string>
<string name="file_nothing_selected">You must select a file</string>
- <string name="useTLSAuth">Use TLS Authentication</string>
- <string name="tls_direction">TLS Direction</string>
+ <string name="useTLSAuth">Use Control Channel Authentication/Encryption</string>
+ <string name="tls_direction">Authentication/encryption method</string>
<string name="ipv6_dialog_tile">Enter IPv6 Address/Netmask in CIDR Format (e.g. 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Enter IPv4 Address/Netmask in CIDR Format (e.g. 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 Address</string>
@@ -68,8 +68,8 @@
<string name="remote_tlscn_check_title">Certificate Hostname Check</string>
<string name="enter_tlscn_dialog">Specify the check used to verify the remote certificate DN (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nSpecify the complete DN or the RDN (openvpn.blinkt.de in the example) or an RDN prefix for verification.\n\nWhen using RDN prefix \"Server\" matches \"Server-1\" and \"Server-2\"\n\nLeaving the text field empty will check the RDN against the server hostname.\n\nFor more details see the OpenVPN 2.3.1+ manpage under —verify-x509-name</string>
<string name="enter_tlscn_title">Remote certificate subject</string>
- <string name="tls_key_auth">Enables the TLS Key Authentication</string>
- <string name="tls_auth_file">TLS Auth File</string>
+ <string name="tls_key_auth">Enables an additional authentication/encryption layer for the OpenVPN control channel</string>
+ <string name="tls_auth_file">TLS Auth/TLS Encryption File</string>
<string name="pull_on_summary">Requests IP addresses, routes and timing options from the server.</string>
<string name="pull_off_summary">No information is requested from the server. Settings need to be specified below.</string>
<string name="use_pull">Pull Settings</string>
@@ -203,8 +203,8 @@
<string name="using_proxy">Using proxy %1$s %2$s</string>
<string name="use_system_proxy">Use system proxy</string>
<string name="use_system_proxy_summary">Use the system wide configuration for HTTP/HTTPS proxies to connect.</string>
- <string name="onbootrestartsummary">OpenVPN will connect the specified VPN if it was active on system boot. Please read the connection warning FAQ before using this option on Android &lt; 5.0.</string>
- <string name="onbootrestart">Connect on boot</string>
+ <string name="keep_vpn_connected_summary">OpenVPN will connect the specified VPN on system boot and will try to keep the VPN connected.</string>
+ <string name="keep_vpn_connected">Keep VPN connected</string>
<string name="ignore">Ignore</string>
<string name="restart">Restart</string>
<string name="restart_vpn_after_change">Configuration changes are applied after restarting the VPN. (Re)start the VPN now?</string>
@@ -260,9 +260,10 @@
<string name="encryption_cipher">Encryption ciphers</string>
<string name="packet_auth">Packet authentication</string>
<string name="auth_dialog_title">Enter packet authentication method</string>
- <string name="built_by">built by %s</string>
+ <string name="built_by">built by %1$s (FP: %2$s)</string>
<string name="debug_build">debug build</string>
<string name="official_build">official build</string>
+ <string name="official_o2build">official OpenVPN2 only build</string>
<string name="make_selection_inline">Copy into profile</string>
<string name="crashdump">Crashdump</string>
<string name="add">Add</string>
@@ -505,5 +506,7 @@
<string name="allow_translations_summary">Allows the app to be translated with translations contributed by the community. Requires a restart of the app to activate.</string>
<string name="tls_profile">TLS Security Profile</string>
<string name="encrypt_profiles">Try to encrypt profiles on storage (if supported by Android OS)</string>
+ <string name="missing_notification_permission">Notification permission missing. This is used to display the status of the VPN and to notify about required user interaction like multi factor authorisation.\n\nClick this message to give the app notification permissions</string>
+ <string name="proxy_auth_username">Username</string>
</resources>
diff --git a/main/src/main/res/values/untranslatable.xml b/main/src/main/res/values/untranslatable.xml
index 0260de8d..6b3c1f70 100644
--- a/main/src/main/res/values/untranslatable.xml
+++ b/main/src/main/res/values/untranslatable.xml
@@ -73,6 +73,8 @@
<string name="apprest_name">Name</string>
<string name="apprest_vpnlist">List of VPN configurations</string>
<string name="apprest_vpnconf">VPN configuration</string>
+ <string name="apprest_certalias">Certificate Alias</string>
+ <string name="apprest_certalias_desc">Alias of a certificate in the Android keystore to use. Leave empty to not use the certificate store.</string>
<string name="apprest_ver">Version of the managed configuration schema (Currently always 1)</string>
<string name="apprest_defprof">UUID of the profile that should be selected as default profile in the app</string>
<string name="privacy_policy">The app OpenVPN for Android does not communicate to any server other than the OpenVPN servers provided in configuration files. The author himself does not collect any data and no therefore also no data is saved. For the privacy policy for the OpenVPN server/VPN service you are using (or other services related to the project like GitHub), please refer to their respective privacy policy.</string>
@@ -82,6 +84,9 @@
<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="faq_title_ncp">Failed to negotiate cipher with server</string>
<string name="import_from_URL">URL</string>
+ <string name="restriction_pausevpn">Pause VPN when screen is off and less than 64 kB transferred data in 60s</string>
+ <string name="apprest_aidl_list">List of apps that are allowed to use the remote AIDL. If this list is in the restrictions, the app will not allowed any changes to the list by the user. Package names of allowed apps separated by comma, space or newlines</string>
+ <string name="apprest_remoteaidl">Remote API access</string>
<string-array name="tls_profile_values" translatable="false">
<item>insecure</item>
diff --git a/main/src/main/res/xml/app_restrictions.xml b/main/src/main/res/xml/app_restrictions.xml
index 813e9bd3..b3258b50 100644
--- a/main/src/main/res/xml/app_restrictions.xml
+++ b/main/src/main/res/xml/app_restrictions.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (c) 2012-2018 Arne Schwabe
~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-->
@@ -7,43 +6,47 @@
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<restriction
+ android:defaultValue="1"
android:key="version"
- android:title="@string/apprest_ver"
android:restrictionType="string"
- android:defaultValue="1"
- />
+ android:title="@string/apprest_ver" />
<restriction
android:key="vpn_configuration_list"
- android:title="@string/apprest_vpnlist"
- android:restrictionType="bundle_array">
+ android:restrictionType="bundle_array"
+ android:title="@string/apprest_vpnlist">
<restriction
- android:title="@string/apprest_vpnconf"
android:key="vpn_configuration"
- android:restrictionType="bundle">
+ android:restrictionType="bundle"
+ android:title="@string/apprest_vpnconf">
<restriction
+ android:description="@string/apprest_uuid_desc"
android:key="uuid"
android:restrictionType="string"
- android:description="@string/apprest_uuid_desc"
- android:title="@string/apprest_uuid"
- />
+ android:title="@string/apprest_uuid" />
<restriction
+ android:description="@string/apprest_name_desc"
android:key="name"
android:restrictionType="string"
android:title="@string/apprest_name"
- android:description="@string/apprest_name_desc"
- />
+ />
<restriction
- android:key="ovpn"
- android:title="@string/apprest_ovpn"
android:description="@string/apprest_ovpn_desc"
- android:restrictionType="string"/>
+ android:key="ovpn"
+ android:restrictionType="string"
+ android:title="@string/apprest_ovpn" />
+ <restriction
+ android:defaultValue=""
+ android:description="@string/apprest_certalias_desc"
+ android:key="certificate_alias"
+ android:restrictionType="string"
+ android:title="@string/apprest_certalias" />
<!--
<restriction
android:key="ovpn_list"
@@ -61,9 +64,17 @@
</restriction>
<restriction
+ android:defaultValue=""
android:key="defaultprofile"
- android:title="@string/apprest_defprof"
android:restrictionType="string"
- android:defaultValue=""
- />
+ android:title="@string/apprest_defprof" />
+ <restriction
+ android:key="screenoffpausevpn"
+ android:restrictionType="bool"
+ android:title="@string/restriction_pausevpn" />
+ <restriction
+ android:description="@string/apprest_aidl_list"
+ android:key="allowed_remote_access"
+ android:restrictionType="string"
+ android:title="@string/apprest_remoteaidl" />
</restrictions> \ No newline at end of file
diff --git a/main/src/skeleton/AndroidManifest.xml b/main/src/skeleton/AndroidManifest.xml
index 02a91024..23b1c7d9 100644
--- a/main/src/skeleton/AndroidManifest.xml
+++ b/main/src/skeleton/AndroidManifest.xml
@@ -4,8 +4,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="de.blinkt.openvpn">
+ xmlns:tools="http://schemas.android.com/tools">
<application tools:ignore="AllowBackup,GoogleAppIndexingWarning">
<activity
diff --git a/main/src/skeleton/java/de/blinkt/openvpn/core/ProfileEncryption.java b/main/src/skeleton/java/de/blinkt/openvpn/core/ProfileEncryption.java
index c526a69f..1f5651ab 100644
--- a/main/src/skeleton/java/de/blinkt/openvpn/core/ProfileEncryption.java
+++ b/main/src/skeleton/java/de/blinkt/openvpn/core/ProfileEncryption.java
@@ -15,7 +15,7 @@ import java.security.GeneralSecurityException;
/* Dummy class that supports no encryption */
class ProfileEncryption {
- static void initMasterCryptAlias()
+ static void initMasterCryptAlias(Context context)
{
}
diff --git a/main/src/skeleton/res/values/attrs.xml b/main/src/skeleton/res/values/attrs.xml
new file mode 100644
index 00000000..051e23d0
--- /dev/null
+++ b/main/src/skeleton/res/values/attrs.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<resources>
+ <!-- allows to share the vector graphics with ui build, a little bit hacky... -->
+ <attr name="colorControlNormal" format="color" />
+</resources> \ No newline at end of file
diff --git a/main/src/skeleton/res/values/refs.xml b/main/src/skeleton/res/values/refs.xml
deleted file mode 100644
index a5105456..00000000
--- a/main/src/skeleton/res/values/refs.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- ~ 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>
- <drawable name="ic_menu_close_clear_cancel">@android:drawable/ic_menu_close_clear_cancel</drawable>
- <drawable name="ic_menu_play">@android:drawable/ic_media_play</drawable>
- <drawable name="ic_menu_pause">@android:drawable/ic_media_pause</drawable>
- <drawable name="ic_menu_share">@android:drawable/ic_menu_share</drawable>
- <drawable name="ic_menu_save">@android:drawable/ic_menu_save</drawable>
- <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_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_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_sort">@android:drawable/ic_menu_sort_by_size</drawable>
-
-</resources> \ No newline at end of file
diff --git a/main/src/skeleton/res/values/styles.xml b/main/src/skeleton/res/values/styles.xml
index dbe2d1e4..9a6ca1e8 100644
--- a/main/src/skeleton/res/values/styles.xml
+++ b/main/src/skeleton/res/values/styles.xml
@@ -14,5 +14,4 @@
<style name="blinkt" parent="blinkt.baseTheme" />
-
</resources> \ No newline at end of file
diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.kt b/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.kt
index 53bfd00a..fcc27878 100644
--- a/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.kt
+++ b/main/src/test/java/de/blinkt/openvpn/core/TestConfigParser.kt
@@ -252,7 +252,7 @@ class TestConfigParser {
val c:Context = ApplicationProvider.getApplicationContext()
val err = vp.checkProfile(c, false)
- Assert.assertTrue("Failed with " + c.getString(err), err == R.string.no_error_found)
+ Assert.assertTrue("Failed with wrong error code: $err", err == R.string.no_error_found)
}
@Test
diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java b/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java
diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt b/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt
new file mode 100644
index 00000000..75505655
--- /dev/null
+++ b/main/src/test/java/de/blinkt/openvpn/core/TestRestrictions.kt
@@ -0,0 +1,146 @@
+/*
+ * Copyright (c) 2012-2023 Arne Schwabe
+ * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ */
+package de.blinkt.openvpn.core
+
+import android.content.Context
+import android.os.Bundle
+import androidx.test.core.app.ApplicationProvider
+import de.blinkt.openvpn.VpnProfile
+import de.blinkt.openvpn.api.AppRestrictions
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+
+interface createTestBundle
+
+@RunWith(RobolectricTestRunner::class)
+class TestRestrictions : createTestBundle {
+ @Test
+ fun testImportRestrictions() {
+
+ val context: Context = ApplicationProvider.getApplicationContext();
+
+ val appr = AppRestrictions.getInstance(context);
+ val b: Bundle = createTestBundle()
+
+
+ appr.parseRestrictionsBundle(context, b);
+
+ val pm = ProfileManager.getInstance(context);
+
+ Assert.assertEquals(pm.profiles.size, 1)
+
+ val firstProfile: VpnProfile = pm.profiles.first()
+
+ Assert.assertEquals(
+ firstProfile.uuidString,
+ "F8AEE125-2D7A-44E9-B9EB-82FB619D51CC".lowercase()
+ )
+ Assert.assertEquals(
+ firstProfile.importedProfileHash,
+ "4098294f8a8d25bb6e85cef5672dfba13ed63719"
+ )
+
+ /* Try to remove the imported profiles again */
+ }
+
+ private fun createTestBundle(): Bundle {
+ val b: Bundle = Bundle();
+
+ val miniconfig = "client\nremote test.blinkt.de\n";
+
+ val testVPN = Bundle();
+ testVPN.putString("name", "Unit Test VPN");
+ testVPN.putString("ovpn", miniconfig)
+ testVPN.putString("uuid", "F8AEE125-2D7A-44E9-B9EB-82FB619D51CC");
+
+ val ba: Array<Bundle> = arrayOf(testVPN)
+
+ b.putParcelableArray("vpn_configuration_list", ba)
+ b.putString("defaultprofile", "F8AEE125-2D7A-44E9-B9EB-82FB619D51CC")
+ b.putString("version", "1")
+ b.putString("allowed_remote_access", "some.random.app")
+ return b
+ }
+
+ private fun createTestBundleEmptyVPN(): Bundle {
+ val b: Bundle = Bundle();
+ val ba: Array<Bundle> = arrayOf()
+
+ b.putParcelableArray("vpn_configuration_list", ba)
+ b.putString("version", "1")
+ b.putString("allowed_remote_access", "some.random.app");
+ return b
+ }
+
+ @Test
+ fun testImportRestrictionsDelete() {
+
+ val context: Context = ApplicationProvider.getApplicationContext();
+
+ val appr = AppRestrictions.getInstance(context);
+ val b: Bundle = createTestBundle()
+
+ appr.parseRestrictionsBundle(context, b)
+
+ /* add another not restriction managed profile */
+ val otherVP: VpnProfile = VpnProfile("another")
+
+ val pm = ProfileManager.getInstance(context)
+ pm.addProfile(otherVP)
+
+ Assert.assertEquals(pm.profiles.size, 2)
+
+ val bEmpty: Bundle = createTestBundleEmptyVPN()
+ appr.parseRestrictionsBundle(context, bEmpty)
+
+ Assert.assertEquals(pm.profiles.size, 1)
+
+ val firstProfile: VpnProfile = pm.profiles.first()
+
+ Assert.assertEquals(
+ firstProfile.name,
+ "another"
+ )
+
+ }
+
+ @Test
+ fun testImportRestrictionsDeleteEmptyProfileList() {
+
+ val context: Context = ApplicationProvider.getApplicationContext();
+
+ val appr = AppRestrictions.getInstance(context);
+ val b: Bundle = createTestBundle()
+
+ appr.parseRestrictionsBundle(context, b)
+
+ /* add another not restriction managed profile */
+ val otherVP: VpnProfile = VpnProfile("another")
+
+ val pm = ProfileManager.getInstance(context)
+ pm.addProfile(otherVP)
+
+ Assert.assertEquals(pm.profiles.size, 2)
+
+ val bNoVPNConfigList: Bundle = Bundle();
+
+ bNoVPNConfigList.putString("version", "1")
+
+
+ appr.parseRestrictionsBundle(context, bNoVPNConfigList)
+
+ Assert.assertEquals(pm.profiles.size, 1)
+
+ val firstProfile: VpnProfile = pm.profiles.first()
+
+ Assert.assertEquals(
+ firstProfile.name,
+ "another"
+ )
+
+ }
+}
diff --git a/main/src/ui/AndroidManifest.xml b/main/src/ui/AndroidManifest.xml
index 21241f0a..2a296183 100644
--- a/main/src/ui/AndroidManifest.xml
+++ b/main/src/ui/AndroidManifest.xml
@@ -4,8 +4,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="de.blinkt.openvpn">
+ xmlns:tools="http://schemas.android.com/tools">
<uses-feature
android:name="android.software.leanback"
diff --git a/main/src/ui/java/de/blinkt/openvpn/OpenVPNTileService.java b/main/src/ui/java/de/blinkt/openvpn/OpenVPNTileService.java
index 1c5dd0e5..94c1f1db 100644
--- a/main/src/ui/java/de/blinkt/openvpn/OpenVPNTileService.java
+++ b/main/src/ui/java/de/blinkt/openvpn/OpenVPNTileService.java
@@ -7,7 +7,6 @@ package de.blinkt.openvpn;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
-import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -23,6 +22,7 @@ import de.blinkt.openvpn.core.ConnectionStatus;
import de.blinkt.openvpn.core.IOpenVPNServiceInternal;
import de.blinkt.openvpn.core.OpenVPNService;
import de.blinkt.openvpn.core.ProfileManager;
+import de.blinkt.openvpn.core.VPNLaunchHelper;
import de.blinkt.openvpn.core.VpnStatus;
@@ -85,13 +85,7 @@ public class OpenVPNTileService extends TileService implements VpnStatus.StateLi
@SuppressLint("Override")
@TargetApi(Build.VERSION_CODES.N)
void launchVPN(VpnProfile profile, Context context) {
- Intent startVpnIntent = new Intent(Intent.ACTION_MAIN);
- startVpnIntent.setClass(context, LaunchVPN.class);
- startVpnIntent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUIDString());
- startVpnIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startVpnIntent.putExtra(LaunchVPN.EXTRA_HIDELOG, true);
-
- context.startActivity(startVpnIntent);
+ VPNLaunchHelper.startOpenVpn(profile, getBaseContext(), "QuickTile");
}
@TargetApi(Build.VERSION_CODES.N)
diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/ConfigConverter.kt b/main/src/ui/java/de/blinkt/openvpn/activities/ConfigConverter.kt
index fa786dcb..b85eaa26 100644
--- a/main/src/ui/java/de/blinkt/openvpn/activities/ConfigConverter.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/activities/ConfigConverter.kt
@@ -811,8 +811,10 @@ class ConfigConverter : BaseActivity(), FileSelectCallback, View.OnClickListener
// We got a file:/// URL and have no permission to read it. Technically an error of the calling app since
// it makes an assumption about other apps being able to read the url but well ...
- if (data != null && "file" == data.scheme)
+ if (data != null && "file" == data.scheme) {
+ log("An external app instructed OpenVPN for Android to open a file:// URI. This kind of URI have been deprecated since Android 7 and no longer work on modern Android versions at all.")
doRequestSDCardPermission(PERMISSION_REQUEST_READ_URL)
+ }
}
diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/CreateShortcuts.java b/main/src/ui/java/de/blinkt/openvpn/activities/CreateShortcuts.java
index e1cb8862..82455895 100644
--- a/main/src/ui/java/de/blinkt/openvpn/activities/CreateShortcuts.java
+++ b/main/src/ui/java/de/blinkt/openvpn/activities/CreateShortcuts.java
@@ -51,9 +51,6 @@ import java.util.Vector;
public class CreateShortcuts extends ListActivity implements OnItemClickListener {
- private static final int START_VPN_PROFILE= 70;
-
-
private ProfileManager mPM;
private VpnProfile mSelectedProfile;
@@ -128,7 +125,8 @@ public class CreateShortcuts extends ListActivity implements OnItemClickListener
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
shortcutIntent.setClass(this, LaunchVPN.class);
- shortcutIntent.putExtra(LaunchVPN.EXTRA_KEY,profile.getUUID().toString());
+ shortcutIntent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUID().toString());
+ shortcutIntent.putExtra(LaunchVPN.EXTRA_START_REASON, "shortcut");
// Then, set up the container intent (the response to the caller)
diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java
deleted file mode 100644
index a6d5ecc4..00000000
--- a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2012-2016 Arne Schwabe
- * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
- */
-
-package de.blinkt.openvpn.activities;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.Toast;
-
-import androidx.appcompat.app.ActionBar;
-import androidx.viewpager.widget.ViewPager;
-
-import com.google.android.material.tabs.TabLayout;
-
-import de.blinkt.openvpn.R;
-import de.blinkt.openvpn.fragments.AboutFragment;
-import de.blinkt.openvpn.fragments.FaqFragment;
-import de.blinkt.openvpn.fragments.GeneralSettings;
-import de.blinkt.openvpn.fragments.GraphFragment;
-import de.blinkt.openvpn.fragments.ImportRemoteConfig;
-import de.blinkt.openvpn.fragments.LogFragment;
-import de.blinkt.openvpn.fragments.SendDumpFragment;
-import de.blinkt.openvpn.fragments.VPNProfileList;
-import de.blinkt.openvpn.views.ScreenSlidePagerAdapter;
-
-
-public class MainActivity extends BaseActivity {
-
- private static final String FEATURE_TELEVISION = "android.hardware.type.television";
- private static final String FEATURE_LEANBACK = "android.software.leanback";
- private TabLayout mTabs;
- private ViewPager mPager;
- private ScreenSlidePagerAdapter mPagerAdapter;
-
- protected void onCreate(android.os.Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.main_activity);
-
-
- // Instantiate a ViewPager and a PagerAdapter.
- mPager = findViewById(R.id.pager);
- mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager(), this);
-
- /* Toolbar and slider should have the same elevation */
- disableToolbarElevation();
-
-
- mPagerAdapter.addTab(R.string.vpn_list_title, VPNProfileList.class);
- mPagerAdapter.addTab(R.string.graph, GraphFragment.class);
-
- mPagerAdapter.addTab(R.string.generalsettings, GeneralSettings.class);
- mPagerAdapter.addTab(R.string.faq, FaqFragment.class);
-
- if (SendDumpFragment.getLastestDump(this) != null) {
- mPagerAdapter.addTab(R.string.crashdump, SendDumpFragment.class);
- }
-
-
- if (isAndroidTV())
- mPagerAdapter.addTab(R.string.openvpn_log, LogFragment.class);
-
- mPagerAdapter.addTab(R.string.about, AboutFragment.class);
- mPager.setAdapter(mPagerAdapter);
- }
-
-
- private void disableToolbarElevation() {
- ActionBar toolbar = getSupportActionBar();
- toolbar.setElevation(0);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- Intent intent = getIntent();
- if (intent != null) {
- String action = intent.getAction();
- if (Intent.ACTION_VIEW.equals(action))
- {
- Uri uri = intent.getData();
- if (uri != null)
- checkUriForProfileImport(uri);
- }
- String page = intent.getStringExtra("PAGE");
- if ("graph".equals(page)) {
- mPager.setCurrentItem(1);
- }
- setIntent(null);
- }
- }
-
- private void checkUriForProfileImport(Uri uri) {
- if ("openvpn".equals(uri.getScheme()) && "import-profile".equals(uri.getHost()))
- {
- String realUrl = uri.getEncodedPath() + "?" + uri.getEncodedQuery();
- if (!realUrl.startsWith("/https://"))
- {
- Toast.makeText(this, "Cannot use openvpn://import-profile/ URL that does not use https://", Toast.LENGTH_LONG).show();
- return;
- }
- realUrl = realUrl.substring(1);
- startOpenVPNUrlImport(realUrl);
- }
- }
-
- private void startOpenVPNUrlImport(String url) {
- ImportRemoteConfig asImportFrag = ImportRemoteConfig.newInstance(url);
- asImportFrag.show(getSupportFragmentManager(), "dialog");
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main_menu, menu);
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId() == R.id.show_log) {
- Intent showLog = new Intent(this, LogWindow.class);
- startActivity(showLog);
- }
- return super.onOptionsItemSelected(item);
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
-
- System.out.println(data);
-
-
- }
-
-
-}
diff --git a/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt
new file mode 100644
index 00000000..68117b52
--- /dev/null
+++ b/main/src/ui/java/de/blinkt/openvpn/activities/MainActivity.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2012-2016 Arne Schwabe
+ * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ */
+package de.blinkt.openvpn.activities
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.view.Menu
+import android.view.MenuItem
+import android.widget.Toast
+import androidx.viewpager.widget.ViewPager
+import com.google.android.material.tabs.TabLayout
+import de.blinkt.openvpn.R
+import de.blinkt.openvpn.fragments.*
+import de.blinkt.openvpn.fragments.ImportRemoteConfig.Companion.newInstance
+import de.blinkt.openvpn.views.ScreenSlidePagerAdapter
+
+class MainActivity : BaseActivity() {
+ private lateinit var mPager: ViewPager
+ private lateinit var mPagerAdapter: ScreenSlidePagerAdapter
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.main_activity)
+
+
+ // Instantiate a ViewPager and a PagerAdapter.
+ mPager = findViewById(R.id.pager)
+ mPagerAdapter = ScreenSlidePagerAdapter(supportFragmentManager, this)
+
+ /* Toolbar and slider should have the same elevation */disableToolbarElevation()
+ mPagerAdapter.addTab(R.string.vpn_list_title, VPNProfileList::class.java)
+ mPagerAdapter.addTab(R.string.graph, GraphFragment::class.java)
+ mPagerAdapter.addTab(R.string.generalsettings, GeneralSettings::class.java)
+ mPagerAdapter.addTab(R.string.faq, FaqFragment::class.java)
+ if (SendDumpFragment.getLastestDump(this) != null) {
+ mPagerAdapter.addTab(R.string.crashdump, SendDumpFragment::class.java)
+ }
+ if (isAndroidTV)
+ mPagerAdapter.addTab(R.string.openvpn_log, LogFragment::class.java)
+ mPagerAdapter.addTab(R.string.about, AboutFragment::class.java)
+ mPager.setAdapter(mPagerAdapter)
+ }
+
+ private fun disableToolbarElevation() {
+ supportActionBar?.elevation = 0f
+ }
+
+ override fun onResume() {
+ super.onResume()
+ val intent = intent
+ if (intent != null) {
+ val action = intent.action
+ if (Intent.ACTION_VIEW == action) {
+ val uri = intent.data
+ uri?.let { checkUriForProfileImport(it) }
+ }
+ val page = intent.getStringExtra("PAGE")
+ if ("graph" == page) {
+ mPager.currentItem = 1
+ }
+ setIntent(null)
+ }
+ }
+
+ private fun checkUriForProfileImport(uri: Uri) {
+ if ("openvpn" == uri.scheme && "import-profile" == uri.host) {
+ var realUrl = uri.encodedPath + "?" + uri.encodedQuery
+ if (!realUrl.startsWith("/https://")) {
+ Toast.makeText(
+ this,
+ "Cannot use openvpn://import-profile/ URL that does not use https://",
+ Toast.LENGTH_LONG
+ ).show()
+ return
+ }
+ realUrl = realUrl.substring(1)
+ startOpenVPNUrlImport(realUrl)
+ }
+ }
+
+ private fun startOpenVPNUrlImport(url: String) {
+ val asImportFrag = newInstance(url)
+ asImportFrag.show(supportFragmentManager, "dialog")
+ }
+
+ override fun onCreateOptionsMenu(menu: Menu): Boolean {
+ menuInflater.inflate(R.menu.main_menu, menu)
+ return super.onCreateOptionsMenu(menu)
+ }
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ if (item.itemId == R.id.show_log) {
+ val showLog = Intent(this, LogWindow::class.java)
+ startActivity(showLog)
+ }
+ return super.onOptionsItemSelected(item)
+ }
+} \ No newline at end of file
diff --git a/main/src/ui/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java b/main/src/ui/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
index 75093e14..ad7a7c28 100644
--- a/main/src/ui/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
+++ b/main/src/ui/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
@@ -189,12 +189,14 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
config.setExternalPkiAlias("extpki");
config.setCompressionMode("asym");
+
config.setHwAddrOverride(NetworkUtils.getFakeMacAddrFromSAAID(mService));
config.setInfo(true);
config.setAllowLocalLanAccess(mVp.mAllowLocalLAN);
boolean retryOnAuthFailed = mVp.mAuthRetry == AUTH_RETRY_NOINTERACT;
config.setRetryOnAuthFailed(retryOnAuthFailed);
config.setEnableLegacyAlgorithms(mVp.mUseLegacyProvider);
+ /* We want the same app internal route emulation for OpenVPN 2 and OpenVPN 3 */
config.setEnableRouteEmulation(false);
if (mVp.mCompatMode > 0 && mVp.mCompatMode < 20500)
config.setEnableNonPreferredDCAlgorithms(true);
diff --git a/main/src/ui/java/de/blinkt/openvpn/core/ProfileEncryption.kt b/main/src/ui/java/de/blinkt/openvpn/core/ProfileEncryption.kt
index ad22460f..fa61e733 100644
--- a/main/src/ui/java/de/blinkt/openvpn/core/ProfileEncryption.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/core/ProfileEncryption.kt
@@ -7,7 +7,7 @@ package de.blinkt.openvpn.core
import android.content.Context
import android.os.Build
import androidx.security.crypto.EncryptedFile
-import androidx.security.crypto.MasterKeys
+import androidx.security.crypto.MasterKey
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
@@ -19,16 +19,18 @@ internal class ProfileEncryption {
companion object {
@JvmStatic
fun encryptionEnabled(): Boolean {
- return mMasterKeyAlias != null
+ return mMasterKey != null
}
- private var mMasterKeyAlias: String? = null
+ private var mMasterKey: MasterKey? = null
@JvmStatic
- fun initMasterCryptAlias() {
+ fun initMasterCryptAlias(context:Context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
return
try {
- mMasterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)
+ mMasterKey = MasterKey.Builder(context)
+ .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
+ .build()
} catch (e: GeneralSecurityException) {
VpnStatus.logException("Could not initialise file encryption key.", e)
} catch (e: IOException) {
@@ -40,9 +42,9 @@ internal class ProfileEncryption {
@Throws(GeneralSecurityException::class, IOException::class)
fun getEncryptedVpInput(context: Context, file: File): FileInputStream {
val encryptedFile = EncryptedFile.Builder(
- file,
context,
- mMasterKeyAlias!!,
+ file,
+ mMasterKey!!,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()
return encryptedFile.openFileInput()
@@ -52,9 +54,9 @@ internal class ProfileEncryption {
@Throws(GeneralSecurityException::class, IOException::class)
fun getEncryptedVpOutput(context: Context, file: File): FileOutputStream {
val encryptedFile = EncryptedFile.Builder(
- file,
context,
- mMasterKeyAlias!!,
+ file,
+ mMasterKey!!,
EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()
return encryptedFile.openFileOutput()
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/AboutFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/AboutFragment.java
index 240fbe06..de6c83d8 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/AboutFragment.java
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/AboutFragment.java
@@ -31,6 +31,7 @@ import androidx.fragment.app.Fragment;
import com.android.vending.billing.IInAppBillingService;
+import de.blinkt.openvpn.BuildConfig;
import de.blinkt.openvpn.core.NativeUtils;
import org.json.JSONException;
import org.json.JSONObject;
@@ -83,9 +84,18 @@ public class AboutFragment extends Fragment implements View.OnClickListener {
TextView verO2 = v.findViewById(R.id.version_ovpn2);
TextView verO3 = v.findViewById(R.id.version_ovpn3);
+ TextView osslVer = v.findViewById(R.id.openssl_version);
verO2.setText(String.format(Locale.US, "OpenVPN version: %s", NativeUtils.getOpenVPN2GitVersion()));
- verO3.setText(String.format(Locale.US, "OpenVPN3 core version: %s", NativeUtils.getOpenVPN3GitVersion()));
+ if (BuildConfig.openvpn3)
+ verO3.setText(String.format(Locale.US, "OpenVPN3 core version: %s", NativeUtils.getOpenVPN3GitVersion()));
+ else
+ verO3.setText("(OpenVPN 2.x only build. No OpenVPN 3.x core in this app)");
+
+
+ osslVer.setText(String.format(Locale.US, "OpenSSL version: %s", NativeUtils.getOpenSSLVersion()));
+
+
/* recreating view without onCreate/onDestroy cycle */
TextView translation = (TextView) v.findViewById(R.id.translation);
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java
index 121cf324..59607fd2 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java
@@ -186,11 +186,11 @@ public class FileSelectionFragment extends ListFragment {
if (!currentPath.equals(ROOT)) {
item.add(ROOT);
- addItem(ROOT, R.drawable.ic_root_folder_am);
+ addItem(ROOT, R.drawable.ic_baseline_folder_24);
path.add(ROOT);
item.add("../");
- addItem("../", R.drawable.ic_root_folder_am);
+ addItem("../", R.drawable.ic_baseline_folder_24);
path.add(f.getParent());
parentPath = f.getParent();
@@ -248,11 +248,11 @@ public class FileSelectionFragment extends ListFragment {
ITEM_KEY, ITEM_IMAGE}, new int[]{R.id.fdrowtext, R.id.fdrowimage});
for (String dir : dirsMap.tailMap("").values()) {
- addItem(dir, R.drawable.ic_root_folder_am);
+ addItem(dir, R.drawable.ic_baseline_folder_24);
}
for (String file : filesMap.tailMap("").values()) {
- addItem(file, R.drawable.ic_doc_generic_am);
+ addItem(file, R.drawable.ic_baseline_file_present_24);
}
fileList.notifyDataSetChanged();
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/GeneralSettings.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/GeneralSettings.kt
index 7db8cba6..6ba7c6fd 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/GeneralSettings.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/GeneralSettings.kt
@@ -73,8 +73,10 @@ class GeneralSettings : PreferenceFragmentCompat(), Preference.OnPreferenceClick
findPreference<Preference>("restartvpnonboot") as CheckBoxPreference
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- val vpn:VpnService = VpnService()
- startOnBoot.isChecked = vpn.isAlwaysOn
+ val vpn = VpnService()
+ if (vpn.isAlwaysOn)
+ /* This is not reliable when the VPN is not active */
+ startOnBoot.isChecked
}
startOnBoot.onPreferenceChangeListener =
@@ -176,6 +178,10 @@ class GeneralSettings : PreferenceFragmentCompat(), Preference.OnPreferenceClick
File("/system/lib/modules/tun.ko").length() > 10
override fun onPreferenceClick(preference: Preference): Boolean {
+ if (!mExtapp.checkAllowingModifyingRemoteControl(requireContext()))
+ {
+ return false;
+ }
if (preference.key == "clearapi") {
val builder = AlertDialog.Builder(
requireContext()
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/KeyChainSettingsFragment.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/KeyChainSettingsFragment.kt
index 2444fb25..8430d788 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/KeyChainSettingsFragment.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/KeyChainSettingsFragment.kt
@@ -128,6 +128,7 @@ internal abstract class KeyChainSettingsFragment : Settings_Fragment(), View.OnC
}
if (cert != null) {
certstr += X509Utils.getCertificateValidityString(cert, resources)
+ certstr += ", "
certstr += X509Utils.getCertificateFriendlyName(cert)
}
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java
index 611e10e9..c5c48b0e 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/LogFragment.java
@@ -538,6 +538,7 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
(dialog1, which) -> {
Intent intent = new Intent(getActivity(), LaunchVPN.class);
intent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUIDString());
+ intent.putExtra(LaunchVPN.EXTRA_START_REASON, "restart from logwindow");
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
});
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java
index a3c19955..802e0b49 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java
@@ -46,7 +46,6 @@ public abstract class OpenVpnPreferencesFragment extends PreferenceFragmentCompa
String profileUUID = savedInstanceState.getString(VpnProfile.EXTRA_PROFILEUUID);
mProfile = ProfileManager.get(getActivity(), profileUUID);
loadSettings();
-
}
}
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java
index 5bc0bbb1..ae90f3d5 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java
@@ -36,7 +36,12 @@ public class SendDumpFragment extends Fragment {
if (c.getCacheDir() == null)
return null;
- for (File f : c.getCacheDir().listFiles()) {
+ File[] filesList = c.getCacheDir().listFiles();
+
+ if (filesList == null)
+ return null;
+
+ for (File f : filesList) {
if (!f.getName().endsWith(".dmp"))
continue;
@@ -104,6 +109,7 @@ public class SendDumpFragment extends Fragment {
Pair<File, Long> ldump = getLastestDump(getActivity());
if (ldump == null) {
VpnStatus.logError("No Minidump found!");
+ return;
}
uris.add(Uri.parse("content://de.blinkt.openvpn.FileProvider/" + ldump.first.getName()));
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/Settings_IP.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/Settings_IP.kt
index 27e6854f..ef69f3f4 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/Settings_IP.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/Settings_IP.kt
@@ -5,6 +5,7 @@
package de.blinkt.openvpn.fragments
import android.os.Bundle
+import android.view.View
import androidx.preference.*
import de.blinkt.openvpn.R
import de.blinkt.openvpn.fragments.OpenVpnPreferencesFragment
@@ -33,6 +34,22 @@ class Settings_IP : OpenVpnPreferencesFragment(), Preference.OnPreferenceChangeL
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.vpn_ipsettings)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ /* Bind the preferences early to avoid loadingSetting which is called
+ * from the superclass to access an uninitialised earlyinit property
+ */
+ super.onViewCreated(view, savedInstanceState)
+ }
+
+ override fun onBindPreferences() {
+ super.onBindPreferences()
+ bindPreferences()
+ loadSettings()
+ }
+
+ private fun bindPreferences() {
mIPv4 = findPreference("ipv4_address")!!
mIPv6 = findPreference("ipv6_address")!!
mUsePull = findPreference("usePull")!!
@@ -45,7 +62,6 @@ class Settings_IP : OpenVpnPreferencesFragment(), Preference.OnPreferenceChangeL
mNobind = findPreference("nobind")!!
mUsePull.onPreferenceChangeListener = this
mOverrideDNS.onPreferenceChangeListener = this
- loadSettings()
}
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/Utils.kt b/main/src/ui/java/de/blinkt/openvpn/fragments/Utils.kt
index 4fdd50ba..55056424 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/Utils.kt
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/Utils.kt
@@ -90,6 +90,7 @@ object Utils {
i.type = "text/plain"
supportedMimeTypes.add("text/plain")
}
+ else -> null
}
val mtm = MimeTypeMap.getSingleton()
for (ext in extensions) {
@@ -305,12 +306,12 @@ object Utils {
if ("insecure".equals(vp.mTlSCertProfile))
warnings.add("low security (TLS security profile 'insecure' selected)");
- var cipher= vp.mCipher?.toUpperCase(Locale.ROOT)
- if (cipher.isNullOrEmpty())
+ var cipher= vp.mCipher.uppercase(Locale.ROOT)
+ if (cipher.isEmpty())
cipher = "BF-CBC";
for (weakCipher in weakCiphers) {
- if ((vp.mDataCiphers != null && vp.mDataCiphers.toUpperCase(Locale.ROOT)
+ if ((vp.mDataCiphers != null && vp.mDataCiphers.uppercase(Locale.ROOT)
.contains(weakCipher))
|| (vp.mCompatMode in 1..20399 && (cipher == weakCipher))
)
diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java
index c7ee5df1..fa9438cb 100644
--- a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java
+++ b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java
@@ -5,12 +5,14 @@
package de.blinkt.openvpn.fragments;
+import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Drawable;
@@ -20,6 +22,9 @@ import android.os.Build;
import android.os.Bundle;
import android.os.PersistableBundle;
+import androidx.activity.result.ActivityResultCallback;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.ListFragment;
@@ -85,6 +90,8 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
private ArrayAdapter<VpnProfile> mArrayadapter;
private Intent mLastIntent;
private VpnProfile defaultVPN;
+ private View mPermissionView;
+ private ActivityResultLauncher<String> mPermReceiver;
@Override
public void updateState(String state, String logmessage, final int localizedResId, ConnectionStatus level, Intent intent) {
@@ -130,6 +137,13 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
setListAdapter();
+
+ registerPermissionReceiver();
+ }
+
+ private void registerPermissionReceiver() {
+ mPermReceiver = registerForActivityResult(new ActivityResultContracts.RequestPermission(),
+ result -> checkForNotificationPermission(requireView()));
}
@RequiresApi(api = Build.VERSION_CODES.N_MR1)
@@ -225,9 +239,10 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
@RequiresApi(Build.VERSION_CODES.N_MR1)
ShortcutInfo createShortcut(VpnProfile profile) {
Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
- shortcutIntent.setClass(getActivity(), LaunchVPN.class);
+ shortcutIntent.setClass(requireContext(), LaunchVPN.class);
shortcutIntent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUID().toString());
shortcutIntent.setAction(Intent.ACTION_MAIN);
+ shortcutIntent.putExtra(LaunchVPN.EXTRA_START_REASON, "shortcut");
shortcutIntent.putExtra("EXTRA_HIDELOG", true);
PersistableBundle versionExtras = new PersistableBundle();
@@ -278,10 +293,24 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
if (fab_import != null)
fab_import.setOnClickListener(this);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
+ checkForNotificationPermission(v);
+
+
return v;
}
+ private void checkForNotificationPermission(View v) {
+ mPermissionView = v.findViewById(R.id.notification_permission);
+ boolean permissionGranted = (requireActivity().checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED);
+ mPermissionView.setVisibility(permissionGranted ? View.GONE : View.VISIBLE);
+
+ mPermissionView.setOnClickListener((view) -> {
+ mPermReceiver.launch(Manifest.permission.POST_NOTIFICATIONS);
+ });
+ }
+
private void setListAdapter() {
if (mArrayadapter == null) {
mArrayadapter = new VPNArrayAdapter(getActivity(), R.layout.vpn_list_item, R.id.vpn_item_title);
@@ -485,11 +514,9 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
onAddOrDuplicateProfile(profile);
}
-
if (resultCode != Activity.RESULT_OK)
return;
-
if (requestCode == START_VPN_CONFIG) {
String configuredVPN = data.getStringExtra(VpnProfile.EXTRA_PROFILEUUID);
@@ -536,6 +563,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
Intent intent = new Intent(getActivity(), LaunchVPN.class);
intent.putExtra(LaunchVPN.EXTRA_KEY, profile.getUUID().toString());
+ intent.putExtra(LaunchVPN.EXTRA_START_REASON, "main profile list");
intent.setAction(Intent.ACTION_MAIN);
startActivity(intent);
}
@@ -640,9 +668,9 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn
public Drawable getDrawable(String source) {
Drawable d = null;
if ("ic_menu_add".equals(source))
- d = requireActivity().getResources().getDrawable(R.drawable.ic_menu_add_grey);
+ d = requireActivity().getResources().getDrawable(R.drawable.ic_menu_add_grey, requireActivity().getTheme());
else if ("ic_menu_archive".equals(source))
- d = requireActivity().getResources().getDrawable(R.drawable.ic_menu_import_grey);
+ d = requireActivity().getResources().getDrawable(R.drawable.ic_menu_import_grey, requireActivity().getTheme());
if (d != null) {
diff --git a/main/src/ui/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png b/main/src/ui/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png
deleted file mode 100644
index 7e0a71cd..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png
deleted file mode 100644
index d86d598e..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_archive_grey600_24dp.png b/main/src/ui/res/drawable-hdpi/ic_archive_grey600_24dp.png
deleted file mode 100644
index 2948d5fc..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_archive_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_archive_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_archive_white_24dp.png
deleted file mode 100644
index a9b0b240..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_archive_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_check_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_check_white_24dp.png
deleted file mode 100644
index f42a0e2d..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_check_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_close_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_close_white_24dp.png
deleted file mode 100644
index ceb1a1ee..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_close_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_content_copy_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_content_copy_white_24dp.png
deleted file mode 100644
index 03b1aac4..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_content_copy_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_delete_grey600_24dp.png b/main/src/ui/res/drawable-hdpi/ic_delete_grey600_24dp.png
deleted file mode 100644
index b72a9f3c..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_delete_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_delete_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_delete_white_24dp.png
deleted file mode 100644
index a9eac0ca..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_delete_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_doc_generic_am.png b/main/src/ui/res/drawable-hdpi/ic_doc_generic_am.png
deleted file mode 100644
index 55b9b7d3..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_doc_generic_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_edit_grey600_24dp.png b/main/src/ui/res/drawable-hdpi/ic_edit_grey600_24dp.png
deleted file mode 100644
index b5f88c80..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_edit_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_edit_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_edit_white_24dp.png
deleted file mode 100644
index 730416c9..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_edit_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_filter_list_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_filter_list_white_24dp.png
deleted file mode 100644
index 30122adf..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_filter_list_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_menu_copy_holo_dark.png b/main/src/ui/res/drawable-hdpi/ic_menu_copy_holo_dark.png
deleted file mode 100644
index d37d0a31..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_menu_copy_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_pause_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_pause_white_24dp.png
deleted file mode 100644
index 4d2ea05c..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_pause_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_play_arrow_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_play_arrow_white_24dp.png
deleted file mode 100644
index 57c9fa54..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_play_arrow_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_receipt_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_receipt_white_24dp.png
deleted file mode 100644
index bf781280..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_receipt_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_root_folder_am.png b/main/src/ui/res/drawable-hdpi/ic_root_folder_am.png
deleted file mode 100644
index 915e1182..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_root_folder_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_search_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_search_white_24dp.png
deleted file mode 100755
index bbfbc96c..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_search_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_share_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_share_white_24dp.png
deleted file mode 100644
index 93b3c219..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_share_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_sort_white_24dp.png b/main/src/ui/res/drawable-hdpi/ic_sort_white_24dp.png
deleted file mode 100644
index 55a429b6..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_sort_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-hdpi/ic_warning_black_36dp.png b/main/src/ui/res/drawable-hdpi/ic_warning_black_36dp.png
deleted file mode 100644
index d1cef177..00000000
--- a/main/src/ui/res/drawable-hdpi/ic_warning_black_36dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png b/main/src/ui/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png
deleted file mode 100644
index b5017d2a..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png
deleted file mode 100644
index 6a1c32aa..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_archive_grey600_24dp.png b/main/src/ui/res/drawable-mdpi/ic_archive_grey600_24dp.png
deleted file mode 100644
index a42d774c..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_archive_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_archive_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_archive_white_24dp.png
deleted file mode 100644
index 8e4a0426..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_archive_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_check_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_check_white_24dp.png
deleted file mode 100644
index e91f9048..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_check_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_close_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_close_white_24dp.png
deleted file mode 100644
index af7f8288..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_close_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_content_copy_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_content_copy_white_24dp.png
deleted file mode 100644
index 6aa238c5..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_content_copy_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_delete_grey600_24dp.png b/main/src/ui/res/drawable-mdpi/ic_delete_grey600_24dp.png
deleted file mode 100644
index e757fdb0..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_delete_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_delete_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_delete_white_24dp.png
deleted file mode 100644
index e4ea52ef..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_delete_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_doc_generic_am.png b/main/src/ui/res/drawable-mdpi/ic_doc_generic_am.png
deleted file mode 100644
index a1bd14ea..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_doc_generic_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_edit_grey600_24dp.png b/main/src/ui/res/drawable-mdpi/ic_edit_grey600_24dp.png
deleted file mode 100644
index bae3480c..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_edit_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_edit_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_edit_white_24dp.png
deleted file mode 100644
index 85cff0b9..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_edit_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_filter_list_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_filter_list_white_24dp.png
deleted file mode 100644
index 49cec669..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_filter_list_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_menu_copy_holo_dark.png b/main/src/ui/res/drawable-mdpi/ic_menu_copy_holo_dark.png
deleted file mode 100644
index 97e8ac1b..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_menu_copy_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_pause_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_pause_white_24dp.png
deleted file mode 100644
index 2272d478..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_pause_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_play_arrow_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_play_arrow_white_24dp.png
deleted file mode 100644
index c61e948b..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_play_arrow_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_receipt_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_receipt_white_24dp.png
deleted file mode 100644
index 565c67ff..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_receipt_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_root_folder_am.png b/main/src/ui/res/drawable-mdpi/ic_root_folder_am.png
deleted file mode 100644
index 4352d08d..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_root_folder_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_search_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_search_white_24dp.png
deleted file mode 100755
index faefc59c..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_search_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_share_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_share_white_24dp.png
deleted file mode 100644
index 4d019722..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_share_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_sort_white_24dp.png b/main/src/ui/res/drawable-mdpi/ic_sort_white_24dp.png
deleted file mode 100644
index 3d84a444..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_sort_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-mdpi/ic_warning_black_36dp.png b/main/src/ui/res/drawable-mdpi/ic_warning_black_36dp.png
deleted file mode 100644
index 52273c3e..00000000
--- a/main/src/ui/res/drawable-mdpi/ic_warning_black_36dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png
deleted file mode 100644
index b9a106fd..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png
deleted file mode 100644
index 0399d60a..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_archive_grey600_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_archive_grey600_24dp.png
deleted file mode 100644
index 6725175d..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_archive_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_archive_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_archive_white_24dp.png
deleted file mode 100644
index 08228d1f..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_archive_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_check_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_check_white_24dp.png
deleted file mode 100644
index e5024472..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_check_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_close_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_close_white_24dp.png
deleted file mode 100644
index b7c7ffd0..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_close_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_content_copy_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_content_copy_white_24dp.png
deleted file mode 100644
index 04a0cc94..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_content_copy_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_delete_grey600_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_delete_grey600_24dp.png
deleted file mode 100644
index c6bb43e8..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_delete_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_delete_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_delete_white_24dp.png
deleted file mode 100644
index cdb230c2..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_delete_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_doc_generic_am.png b/main/src/ui/res/drawable-xhdpi/ic_doc_generic_am.png
deleted file mode 100644
index e05c4b48..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_doc_generic_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_edit_grey600_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_edit_grey600_24dp.png
deleted file mode 100644
index 4c95bd57..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_edit_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_edit_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_edit_white_24dp.png
deleted file mode 100644
index 7f0ea51b..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_edit_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_filter_list_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_filter_list_white_24dp.png
deleted file mode 100644
index d4ca77bf..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_filter_list_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_menu_copy_holo_dark.png b/main/src/ui/res/drawable-xhdpi/ic_menu_copy_holo_dark.png
deleted file mode 100644
index ba883aec..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_menu_copy_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_pause_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_pause_white_24dp.png
deleted file mode 100644
index f49aed75..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_pause_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_play_arrow_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_play_arrow_white_24dp.png
deleted file mode 100644
index a3c80e73..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_play_arrow_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_receipt_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_receipt_white_24dp.png
deleted file mode 100644
index 66dafa4f..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_receipt_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_root_folder_am.png b/main/src/ui/res/drawable-xhdpi/ic_root_folder_am.png
deleted file mode 100644
index c916e0be..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_root_folder_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_search_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_search_white_24dp.png
deleted file mode 100755
index bfc3e393..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_search_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_share_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_share_white_24dp.png
deleted file mode 100644
index dd536bca..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_share_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_sort_white_24dp.png b/main/src/ui/res/drawable-xhdpi/ic_sort_white_24dp.png
deleted file mode 100644
index 6d4af1bc..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_sort_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xhdpi/ic_warning_black_36dp.png b/main/src/ui/res/drawable-xhdpi/ic_warning_black_36dp.png
deleted file mode 100644
index e1d6f7ac..00000000
--- a/main/src/ui/res/drawable-xhdpi/ic_warning_black_36dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png
deleted file mode 100644
index d13b5195..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png
deleted file mode 100644
index 7ae1b4a1..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_archive_grey600_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_archive_grey600_24dp.png
deleted file mode 100644
index 25cfc91a..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_archive_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_archive_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_archive_white_24dp.png
deleted file mode 100644
index aa186ce5..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_archive_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_check_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_check_white_24dp.png
deleted file mode 100644
index 6e03d54c..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_check_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_close_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_close_white_24dp.png
deleted file mode 100644
index 6b717e0d..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_close_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_content_copy_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_content_copy_white_24dp.png
deleted file mode 100644
index 5fc17a4d..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_content_copy_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_delete_grey600_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_delete_grey600_24dp.png
deleted file mode 100644
index 4886ab1e..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_delete_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_delete_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_delete_white_24dp.png
deleted file mode 100644
index 0e95e9b1..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_delete_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_doc_generic_am.png b/main/src/ui/res/drawable-xxhdpi/ic_doc_generic_am.png
deleted file mode 100644
index c0988663..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_doc_generic_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_edit_grey600_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_edit_grey600_24dp.png
deleted file mode 100644
index 6ed4351c..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_edit_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_edit_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_edit_white_24dp.png
deleted file mode 100644
index 34ec7092..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_edit_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_filter_list_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_filter_list_white_24dp.png
deleted file mode 100644
index 802b3cd5..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_filter_list_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_menu_copy_holo_dark.png b/main/src/ui/res/drawable-xxhdpi/ic_menu_copy_holo_dark.png
deleted file mode 100644
index 9dd56eff..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_menu_copy_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_pause_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_pause_white_24dp.png
deleted file mode 100644
index 7192ad48..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_pause_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_play_arrow_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_play_arrow_white_24dp.png
deleted file mode 100644
index 547ef30a..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_play_arrow_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_receipt_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_receipt_white_24dp.png
deleted file mode 100644
index 2161c9a5..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_receipt_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_root_folder_am.png b/main/src/ui/res/drawable-xxhdpi/ic_root_folder_am.png
deleted file mode 100644
index 077c851c..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_root_folder_am.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_search_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_search_white_24dp.png
deleted file mode 100755
index abbb9895..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_search_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_share_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_share_white_24dp.png
deleted file mode 100644
index 9963c6a0..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_share_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_sort_white_24dp.png b/main/src/ui/res/drawable-xxhdpi/ic_sort_white_24dp.png
deleted file mode 100644
index b8ef1050..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_sort_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxhdpi/ic_warning_black_36dp.png b/main/src/ui/res/drawable-xxhdpi/ic_warning_black_36dp.png
deleted file mode 100644
index 2aab2278..00000000
--- a/main/src/ui/res/drawable-xxhdpi/ic_warning_black_36dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png
deleted file mode 100644
index ae11fb25..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png
deleted file mode 100644
index 1d436703..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png
deleted file mode 100644
index 58d38997..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_archive_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_archive_white_24dp.png
deleted file mode 100644
index 9d538ff4..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_archive_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_check_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_check_white_24dp.png
deleted file mode 100644
index 87892840..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_check_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_close_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_close_white_24dp.png
deleted file mode 100644
index 39641921..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_close_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
deleted file mode 100644
index 557c64f7..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_delete_grey600_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_delete_grey600_24dp.png
deleted file mode 100644
index e4e21812..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_delete_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_delete_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_delete_white_24dp.png
deleted file mode 100644
index ccf8c716..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_delete_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_edit_grey600_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_edit_grey600_24dp.png
deleted file mode 100644
index 0c0fd76f..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_edit_grey600_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_edit_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_edit_white_24dp.png
deleted file mode 100644
index 9380370f..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_edit_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_filter_list_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_filter_list_white_24dp.png
deleted file mode 100644
index 511008ce..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_filter_list_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_pause_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_pause_white_24dp.png
deleted file mode 100644
index 660ac658..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_pause_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png
deleted file mode 100644
index be5c062b..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_receipt_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_receipt_white_24dp.png
deleted file mode 100644
index 8cac119c..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_receipt_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_search_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_search_white_24dp.png
deleted file mode 100755
index dd5adfc7..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_search_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_share_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_share_white_24dp.png
deleted file mode 100644
index bb521c14..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_share_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_sort_white_24dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_sort_white_24dp.png
deleted file mode 100644
index 4796c33b..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_sort_white_24dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable-xxxhdpi/ic_warning_black_36dp.png b/main/src/ui/res/drawable-xxxhdpi/ic_warning_black_36dp.png
deleted file mode 100644
index 58999574..00000000
--- a/main/src/ui/res/drawable-xxxhdpi/ic_warning_black_36dp.png
+++ /dev/null
Binary files differ
diff --git a/main/src/ui/res/drawable/ic_warning.xml b/main/src/ui/res/drawable/ic_warning.xml
new file mode 100644
index 00000000..935b6357
--- /dev/null
+++ b/main/src/ui/res/drawable/ic_warning.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0"
+ android:tint="?android:attr/textColorPrimary" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,5.99L19.53,19H4.47L12,5.99 M12,2L1,21h22L12,2L12,2z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M 13 16 L 11 16 L 11 18 L 13 18 L 13 16 Z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M 13 10 L 11 10 L 11 14 L 13 14 L 13 10 Z" />
+</vector> \ No newline at end of file
diff --git a/main/src/ui/res/drawable/notifications.xml b/main/src/ui/res/drawable/notifications.xml
new file mode 100644
index 00000000..b9d27eb7
--- /dev/null
+++ b/main/src/ui/res/drawable/notifications.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="48dp"
+ android:height="48dp"
+ android:viewportWidth="48"
+ android:viewportHeight="48"
+ android:tint="?attr/colorControlNormal">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M8,38V35H12.2V19.7Q12.2,15.5 14.675,12.225Q17.15,8.95 21.2,8.1V6.65Q21.2,5.5 22.025,4.75Q22.85,4 24,4Q25.15,4 25.975,4.75Q26.8,5.5 26.8,6.65V8.1Q30.85,8.95 33.35,12.225Q35.85,15.5 35.85,19.7V35H40V38ZM24,23.25Q24,23.25 24,23.25Q24,23.25 24,23.25Q24,23.25 24,23.25Q24,23.25 24,23.25ZM24,44Q22.4,44 21.2,42.825Q20,41.65 20,40H28Q28,41.65 26.825,42.825Q25.65,44 24,44ZM15.2,35H32.85V19.7Q32.85,16 30.3,13.4Q27.75,10.8 24.05,10.8Q20.35,10.8 17.775,13.4Q15.2,16 15.2,19.7Z"/>
+</vector>
diff --git a/main/src/ui/res/layout-v21/profile_list_fabs.xml b/main/src/ui/res/layout-v21/profile_list_fabs.xml
index 4fe403b6..b4cd154d 100644
--- a/main/src/ui/res/layout-v21/profile_list_fabs.xml
+++ b/main/src/ui/res/layout-v21/profile_list_fabs.xml
@@ -18,7 +18,7 @@
android:elevation="@dimen/elevation_low"
android:layout_marginBottom="@dimen/add_button_margin_topfab"
android:layout_marginEnd="@dimen/add_button_margin"
- android:src="@drawable/ic_archive_grey600_24dp"
+ android:src="@drawable/ic_baseline_archive_24"
android:contentDescription="@string/import_config" />
<ImageButton
diff --git a/main/src/ui/res/layout/about.xml b/main/src/ui/res/layout/about.xml
index fb2497ff..cd482996 100644
--- a/main/src/ui/res/layout/about.xml
+++ b/main/src/ui/res/layout/about.xml
@@ -45,9 +45,13 @@
android:id="@+id/version_ovpn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginBottom="12sp"
tools:text="OpenVPN3 core version 8df8718283" />
-
+ <TextView
+ android:id="@+id/openssl_version"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="12sp"
+ tools:text="OpenSSL version 8df8718283" />
<TextView
android:layout_width="match_parent"
diff --git a/main/src/ui/res/layout/config_converter.xml b/main/src/ui/res/layout/config_converter.xml
index d4e1f820..591de858 100644
--- a/main/src/ui/res/layout/config_converter.xml
+++ b/main/src/ui/res/layout/config_converter.xml
@@ -35,6 +35,7 @@
android:visibility="gone" />
<TextView
+ android:layout_marginTop="@dimen/stdpadding"
android:id="@+id/compatmode_label"
style="@style/item"
android:text="@string/compat_mode_label"
@@ -51,6 +52,7 @@
tools:visibility="visible" />
<TextView
+ android:layout_marginTop="@dimen/stdpadding"
android:id="@+id/tls_profile_label"
style="@style/item"
android:text="@string/tls_profile"
@@ -83,6 +85,7 @@
tools:visibility="visible" />
<CheckBox
+ android:layout_marginTop="@dimen/stdpadding"
android:id="@+id/importpkcs12"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
diff --git a/main/src/ui/res/layout/connections.xml b/main/src/ui/res/layout/connections.xml
index e3c03bf6..165f3559 100644
--- a/main/src/ui/res/layout/connections.xml
+++ b/main/src/ui/res/layout/connections.xml
@@ -41,11 +41,26 @@
</RelativeLayout>
+ <TextView
+ android:id="@+id/noserver_active_warning"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_margin="10dp"
+ android:drawableLeft="@drawable/ic_dialog_alert"
+ android:drawableStart="@drawable/ic_dialog_alert"
+ android:drawablePadding="10dp"
+ android:elevation="2dp"
+ android:gravity="center_vertical"
+ android:padding="@dimen/stdpadding"
+ android:layout_below="@id/switchBar"
+ android:text="@string/remote_no_server_selected"
+ android:visibility="visible"
+ tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:layout_margin="@dimen/vpn_setting_padding"
android:id="@+id/connection_recycler_view"
- android:layout_below="@id/switchBar"
+ android:layout_below="@id/noserver_active_warning"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="@dimen/stdpadding"
@@ -53,20 +68,7 @@
/>
- <TextView
- android:id="@+id/noserver_active_warning"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="10dp"
- android:drawableLeft="@drawable/ic_dialog_alert"
- android:drawableStart="@drawable/ic_dialog_alert"
- android:drawablePadding="10dp"
- android:elevation="2dp"
- android:gravity="center_vertical"
- android:padding="@dimen/stdpadding"
- android:text="@string/remote_no_server_selected"
- android:visibility="visible"
- tools:visibility="visible" />
+
<include layout="@layout/connection_fab" />
diff --git a/main/src/ui/res/layout/server_card.xml b/main/src/ui/res/layout/server_card.xml
index dab975d6..1395cd8b 100644
--- a/main/src/ui/res/layout/server_card.xml
+++ b/main/src/ui/res/layout/server_card.xml
@@ -254,7 +254,7 @@
android:layout_width="wrap_content"
android:layout_height="17dp"
android:layout_below="@id/enable_proxy_auth"
- android:text="@string/auth_username"
+ android:text="@string/proxy_auth_username"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_marginTop="12dp"
card_view:layout_constraintTop_toBottomOf="@+id/enable_proxy_auth"
diff --git a/main/src/ui/res/layout/vpn_list_item.xml b/main/src/ui/res/layout/vpn_list_item.xml
index 5f2e8d0b..8aeb90b8 100644
--- a/main/src/ui/res/layout/vpn_list_item.xml
+++ b/main/src/ui/res/layout/vpn_list_item.xml
@@ -81,6 +81,6 @@
android:paddingLeft="15dip"
android:paddingRight="?android:attr/scrollbarSize"
android:paddingStart="15dip"
- android:src="@drawable/vpn_item_edit" />
+ android:src="@drawable/ic_edit" />
</LinearLayout> \ No newline at end of file
diff --git a/main/src/ui/res/layout/vpn_profile_list.xml b/main/src/ui/res/layout/vpn_profile_list.xml
index f85222b6..a4e1b809 100644
--- a/main/src/ui/res/layout/vpn_profile_list.xml
+++ b/main/src/ui/res/layout/vpn_profile_list.xml
@@ -3,77 +3,88 @@
~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-->
<FrameLayout 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">
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingLeft="@dimen/stdpadding"
- android:paddingRight="@dimen/stdpadding">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/stdpadding"
+ android:paddingRight="@dimen/stdpadding">
+
+ <TextView
+ android:id="@+id/notification_permission"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="@dimen/stdpadding"
+ android:drawableStart="@drawable/notifications"
+ android:drawablePadding="@dimen/stdpadding"
+ tools:visibility="visible"
+ android:visibility="gone"
+ android:text="@string/missing_notification_permission" />
<ListView
- android:id="@android:id/list"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:descendantFocusability="afterDescendants" />
+ android:id="@android:id/list"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:descendantFocusability="afterDescendants" />
<LinearLayout
- android:id="@android:id/empty"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:orientation="vertical">
+ android:id="@android:id/empty"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:orientation="vertical">
<TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/no_vpn_profiles_defined"
- android:textAppearance="?android:attr/textAppearanceLarge" />
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/no_vpn_profiles_defined"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
<Space
- android:layout_width="match_parent"
- android:layout_height="12sp" />
+ android:layout_width="match_parent"
+ android:layout_height="12sp" />
<TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:autoLink="web"
- android:text="@string/openvpn_is_no_free_vpn" />
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:autoLink="web"
+ android:text="@string/openvpn_is_no_free_vpn" />
<Space
- android:layout_width="match_parent"
- android:layout_height="12sp" />
+ android:layout_width="match_parent"
+ android:layout_height="12sp" />
<TextView
- android:id="@+id/add_new_vpn_hint"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- tools:ignore="SelectableText" />
+ android:id="@+id/add_new_vpn_hint"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ tools:ignore="SelectableText" />
<TextView
- android:id="@+id/import_vpn_hint"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- tools:ignore="SelectableText" />
+ android:id="@+id/import_vpn_hint"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ tools:ignore="SelectableText" />
<Space
- android:layout_width="match_parent"
- android:layout_height="12sp" />
+ android:layout_width="match_parent"
+ android:layout_height="12sp" />
<TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/faq_hint" />
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/faq_hint" />
</LinearLayout>
</LinearLayout>
- <!-- <include layout="@layout/profile_list_fabs" /> -->
+ <!-- <include layout="@layout/profile_list_fabs" /> -->
</FrameLayout>
diff --git a/main/src/ui/res/menu/allowed_apps.xml b/main/src/ui/res/menu/allowed_apps.xml
index f357be69..7ef113c4 100644
--- a/main/src/ui/res/menu/allowed_apps.xml
+++ b/main/src/ui/res/menu/allowed_apps.xml
@@ -7,7 +7,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/app_search_widget"
- android:icon="@drawable/ic_search_white_24dp"
+ android:icon="@drawable/ic_search"
app:showAsAction="always"
android:title="@string/Search"
app:actionViewClass="androidx.appcompat.widget.SearchView" />
diff --git a/main/src/ui/res/values-ar/arrays.xml b/main/src/ui/res/values-ar/arrays.xml
new file mode 100644
index 00000000..7e18635b
--- /dev/null
+++ b/main/src/ui/res/values-ar/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>شهادات</item>
+ <item>PKCS12 File</item>
+ <item>شهادة أندرويد</item>
+ <item>اسم المستخدم/كلمة المرور</item>
+ <item>مفاتيح ثابتة</item>
+ <item>المستخدم/كلمة السر + شهادات</item>
+ <item>المستخدم/كلمة السر + PKCS12 </item>
+ <item>User/PW + Android AHMAD</item>
+ <item>مزود المصادقة الخارجية</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>التشفير (tls-سرداب)https://crowdin.com/translate/ics-openvpn/1395/en-ar#2618757</item>
+ <item>TLS تشفير V2.0</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>قطع الاتصال، والاحتفاظ بكلمة المرور</item>
+ <item>قطع الاتصال، والاحتفاظ بكلمة المرور</item>
+ <item>تجاهل، وإعادة المحاولة</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>الافتراضات الحديثة العربيه</item>
+ <item>أقران OpenVPN 2.5.x</item>
+ <item>أقران OpenVPN 2.4.x</item>
+ <item>OpenVPN 2.3.x والأقران الأكبر سنًا</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>غير آمن (غير موصى به ، يسمح بتشفير غير آمن)</item>
+ <item>legacy (default)</item>
+ <item>مفضل (موصى به لكن قابلية محدودة)</item>
+ <item>مجموعة B (المنحنيات البيضاوية المعتمدة من NIST فقط)</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-ar/plurals.xml b/main/src/ui/res/values-ar/plurals.xml
new file mode 100644
index 00000000..1dfa5da3
--- /dev/null
+++ b/main/src/ui/res/values-ar/plurals.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="zero">%d months left</item>
+ <item quantity="one">شهر واحد متبقي</item>
+ <item quantity="two">متبقي شهرين</item>
+ <item quantity="few">%d شهر متبقي</item>
+ <item quantity="many">%d شهر متبقي</item>
+ <item quantity="other">%d شهر متبقي</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="zero">%d days lef</item>
+ <item quantity="one">بقي يوم واحد</item>
+ <item quantity="two">بقي يومان</item>
+ <item quantity="few">%d أيام متبقية</item>
+ <item quantity="many">%d يوم متبقي</item>
+ <item quantity="other">%d يوم متبقي</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="zero">لا ساعات متبقية</item>
+ <item quantity="one">ساعة واحدة متبقية</item>
+ <item quantity="two">متبقي ساعتان</item>
+ <item quantity="few">%d ساعات متبقية</item>
+ <item quantity="many">%d ساعات متبقية</item>
+ <item quantity="other">%d ساعات متبقية</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="zero">100000</item>
+ <item quantity="one">دقيقة واحدة متبقية</item>
+ <item quantity="two">متبقي دقيقتان</item>
+ <item quantity="few">%d دقيقة متبقية</item>
+ <item quantity="many">%d دقيقة متبقية</item>
+ <item quantity="other">%d دقيقة متبقية</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-ar/strings.xml b/main/src/ui/res/values-ar/strings.xml
new file mode 100644
index 00000000..fe0abb87
--- /dev/null
+++ b/main/src/ui/res/values-ar/strings.xml
@@ -0,0 +1,505 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">OpenVPN للأندرويد</string>
+ <string name="address">الخادم العنوان:</string>
+ <string name="port">Server 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="client_no_certificate">لا توجد شهادة</string>
+ <string name="client_certificate_title">شهادة العميل</string>
+ <string name="client_key_title">مفتاح شهادة العميل</string>
+ <string name="client_pkcs12_title">ملف PKCS12</string>
+ <string name="ca_title">سلطة الشهادات للشهادة</string>
+ <string name="no_certificate">يجب اختيار شهادة</string>
+ <string name="copyright_guicode">شفرة المصدر ومتعقب العلل متوفرين على https://github.com/schwabe/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="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="ipv6_address">عنوان IPv6</string>
+ <string name="custom_option_warning">أدخل خيارات مخصصة المسنجر. استخدام بحذر. نلاحظ أيضا أن العديد من الإعدادات المسنجر تون ذات الصلة لا يمكن أن تكون معتمدة من قبل تصميم VPNSettings. إذا كنت تعتقد خيارا هاما مفقود الاتصال المؤلف</string>
+ <string name="auth_username">Hassan</string>
+ <string name="auth_pwquery">كلمه السر</string>
+ <string name="static_keys_info">لكي تكون التهيئة ثابتة سوف تستخدم مفاتيح مصادقة TLS كمفاتيح ثابتة</string>
+ <string name="configure_the_vpn">تهيئة الشبكة الإفتراضية الخاصة</string>
+ <string name="menu_add_profile">إضافة ملف شخصي</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_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">جارٍ الاتصال بالشبكة الإفتراضية الخاصة&#8230;</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">قطع الإتصال بالشبكة الإفتراضية الخاصة</string>
+ <string name="clear_log">مسح السجل</string>
+ <string name="title_cancel">إلغاء التأكيد</string>
+ <string name="cancel_connection_query">هل تريد قطع اتصال الشبكة الإفتراضية المتصلة حاليا أو إلغاء محاولة الاتصال؟</string>
+ <string name="remove_vpn">حذف الشبكة الإفتراضية الخاصة</string>
+ <string name="check_remote_tlscert">اختبار ما إذا كان الملقم يستخدم شهادة مع ملحقات خادم TLS (خادم --remote سيرت-TLS)</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 = دي، ل Paderborn، OU = = \"إنفلونزا الطيور الملكية الفكرية الناقلين\"، CN=openvpn.blinkt.de)\n\nSpecify DN الكامل أو RDN (openvpn.blinkt.de في المثال) أو بادئة RDN ليطابق verification.\n\nWhen RDN البادئة \"الملقم\" باستخدام \"خادم-1\" وسوف تحقق \n\nLeaving \"خادم-2\" إفراغ الحقل النص RDN ضد hostname.\n\nFor الخادم مزيد من التفاصيل، انظر استخدام 2.3.1+ المسنجر تحت — اسم x509 التحقق من</string>
+ <string name="enter_tlscn_title">موضوع الشهادة البعيدة</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">نطاق البحث</string>
+ <string name="dns1_summary">خادم الـ DNS الذي سيتم استخدامه.</string>
+ <string name="dns_server">خادم أسماء النطاقات</string>
+ <string name="secondary_dns_message">خادم DNS الثانوي سيُستخدَم إذا تعذر الإتصال بخادم DNS العادي.</string>
+ <string name="backup_dns">الخادم الإحتياطي لنظام أسماء النطاقات</string>
+ <string name="ignored_pushed_routes">تجاهل المسارات المدفوعة</string>
+ <string name="ignore_routes_summary">Ignore routed pushed by the server.تجاهل توجيه دفعت من قبل الخدمة.</string>
+ <string name="default_route_summary">إعادة توجيه كافة البيانات عبر الشبكة الإفتراضية الخاصة</string>
+ <string name="use_default_title">إستخدم المسار الإفتراضي</string>
+ <string name="custom_route_message">Enter custom routes. Only enter destination in CIDR format. \"10.0.0.0/8 2002::/16\" would direct the networks 10.0.0.0/8 and 2002::/16 over the VPN.</string>
+ <string name="custom_route_message_excluded">المسارات التي يجب عدم توجيهها عبر الشبكة الإفتراضية الخاصة. استخدم نفس البنية كما في المسارات المضمنة.</string>
+ <string name="custom_routes_title">مسارات مخصصة</string>
+ <string name="custom_routes_title_excluded">الشبكات المُقصاة</string>
+ <string name="log_verbosity_level">مستوى سجل الإسهاب</string>
+ <string name="float_summary">يسمح الحُزم المصادق عليها مِن أي عنوان إيبي</string>
+ <string name="float_title">اسمح للخادم العائم</string>
+ <string name="custom_options_title">خيارات مخصصة</string>
+ <string name="edit_vpn">تعديل إعدادات الشبكة الخاصة الإفتراضية</string>
+ <string name="remove_vpn_query">إزالة الملف التعريفي للشبكة الإفتراضية الخاصة \'%s\'؟</string>
+ <string name="tun_error_helpful">السماح للإذن لبعض الصور المخصصة التي قد تكون خاطئة، أو قد تكون الوحدة النمطية مفقودة تماما. بالنسبة للصور 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">خادم أسماء النطاقات: %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 routes installed: %1$s %2$s</string>
+ <string name="ip_not_cidr">Got interface information %1$s and %2$s, assuming second address is peer address of remote. Using /32 netmask for local IP. Mode given by OpenVPN is \"%3$s\".</string>
+ <string name="route_not_cidr">Cannot make sense of %1$s and %2$s as IP route with CIDR netmask, using /32 as netmask.</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 log file</string>
+ <string name="copied_entry"></string>
+ <string name="tap_mode">Tap Mode</string>
+ <string name="faq_tap_mode">وضع برنامج المساعدة التقنية غير ممكن مع الجذر غير VPN API. ولذلك لا يمكن توفير هذا التطبيق دعم برنامج المساعدة التقنية</string>
+ <string name="tap_faq2">مرة أخرى؟ هل أنت تمزح؟ لا، برنامج المساعدة التقنية لوضع حقاً غير معتمد وإرسال مزيد من البريد يسأل إذا كان سيتم دعم لن يساعد.</string>
+ <string name="tap_faq3">للمرة الثالثة؟ في الواقع، يمكن أن يكتب أحد تلقي جهاز المضاهاة صنبور على تون إضافة معلومات الطبقة 2 في إرسال وقطاع معلومات الطبقة 2 على أساس. ولكن هذا المحاكي الصنبور سيتعين أيضا تنفيذ ARP، وربما عميل DHCP. أنا لست على علم بأي شخص القيام بأي عمل في هذا الاتجاه. الاتصال بي إذا كنت ترغب في بدء تشغيل التعليمات البرمجية في هذا.</string>
+ <string name="faq">الأسئلة المتداولة</string>
+ <string name="copying_log_entries">نسخ إدخالات السجل</string>
+ <string name="faq_copying">لنسخ سجل واحد الدخول اضغط واستمر في إدخال السجل. لنسخ/إرسال السجل كله استخدم خيار \"إرسال سجل\". استخدام زر القائمة الأجهزة، إذا كان الزر غير مرئية في واجهة المستخدم الرسومية.</string>
+ <string name="faq_shortcut">اختصار للبدء</string>
+ <string name="faq_howto_shortcut">يمكنك وضع اختصار لتشغيل أوبن فيبي آن على سطح المكتب الخاص بك. اعتماداً على برنامج الشاشة الرئيسية الخاصة بك سيكون لديك لإضافة اختصار أو القطعة.</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 مفصولة بـ: (-شفرات البيانات). اتركه فارغًا لاستخدام الإعداد الافتراضي AES-256-GCM: AES-128-GCM: CHACHA20-POLY1305.</string>
+ <string name="auth_dialog_message">أدخل خلاصة المصادقة التي تستخدم الشبكة الإفتراضية. أتركه فارغاً لاستخدام خلاصة الافتراضي.</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">رفض فتح جهاز 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">"Vấn đề bảo mật OpenVPN trong một số trường hợp là nhạy cảm. Tất cả dữ liệu trên thẻ nhớ vốn không an toàn. Các ứng dụng khác có thể đọc được nó (ví dụ như chương trình này không bắt buộc các quyền đặc biệt từ thẻ nhớ). Dữ liệu của ứng dụng này chỉ có thể đọc bởi chính nó. Mặc dù có thể sử dụng tùy chọn nhập vào để truy cập/xem/khóa ứng dụng bên trong dữ liệu hội thoại lưu trữ trong hồ sơ VPN. Nhưng hồ sơ VPN chỉ có thể truy cập bởi chính ứng dụng này. (Đừng quên xóa các bản sao trên thẻ nhớ sau đó). Dù có thể chỉ truy cập bằng ứng dụng này nhưng dữ liệu vẫn không được mã hóa. Việc root điện thoại hoặc khai thác các vấn đề khác có thể lấy cắp được dữ liệu. Lưu trữ mật khẩu lại trong văn bản là tốt nhất. Tập tin pkcs12 là lời khuyên tốt nhất để bạn có thể nhập chúng vào Khóa lưu trữ 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 Android شما برای ذخیره سازی گواهی خراب است</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;Official HTC images are known to have a strange routing problem causing traffic not to flow through the tunnel (See also &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Issue 18&lt;/a&gt; in the bug tracker.)&lt;/p&gt;&lt;p&gt;Older official SONY images from Xperia Arc S and Xperia Ray have been reported to be missing the VPNService completely from the image. (See also &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Issue 29&lt;/a&gt; in the bug tracker.)&lt;/p&gt;&lt;p&gt;On custom build images the tun module might be missing or the rights of /dev/tun might be wrong. Some CM9 images need the \"Fix ownership\" option under \"Device specific hacks\" enabled.&lt;/p&gt;&lt;p&gt;Most importantly: If your device has a broken Android image, report it to your vendor. The more people who report an issue to the vendor, the more likely they are to fix it.&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">Tenta d\'afitar al sistema como\'l dueñu de /dev/tun. Delles imáxenes de CM9 precisen esto pa facer que\'l serviciu API de VPNService funcione. Rique root.</string>
+ <string name="owner_fix">إصلاح ملكية/dev/tun</string>
+ <string name="generated_config_summary">emad</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) من لوحة مفاتيح Android. حدد شهادة منفصلة إذا حصلت على أخطاء التحقق من الشهادة.</string>
+ <string name="select_file">اختر</string>
+ <string name="keychain_nocacert">لم يتم إرجاع شهادة CA أثناء القراءة من keystore Android. ربما ستفشل المصادقة.</string>
+ <string name="show_log_summary">Shows the log window on connect. The log window can always be accessed from the notification status.</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">خطأ في التوقيع باستخدام مفتاح keystore في Android %1$s: %2$s</string>
+ <string name="error_extapp_sign">خطأ في التوقيع مع تطبيق الموثق الخارجي (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">تحذير من اتصال VPN يخبرك بأن هذا التطبيق يمكنه اعتراض كل حركة المرور التي يفرضها النظام لمنع إساءة استخدام VPNService API.\nيفرض نظام Android أيضًا إشعار اتصال VPN (رمز المفتاح) للإشارة إلى اتصال VPN مستمر. في بعض الصور ، يلعب هذا الإشعار صوتًا.\nقدم Android مربعات حوار النظام هذه من أجل سلامتك وتأكد من عدم التحايل عليها. (في بعض الصور ، يتضمن هذا للأسف صوت إشعار)</string>
+ <string name="faq_system_dialogs_title">تحذير الاتصال وصوت الإخطار</string>
+ <string name="translationby">الترجمة الإنجليزية بفضل Arne Schwabe&lt;arne@rfc2549.org&gt;</string>
+ <string name="ipdns">الإيبي ونظام أسماء النطاقات</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.</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; الحصول على ملف config عامل (اختبار على الكمبيوتر الخاص بك أو تحميل من منظمتكم الموفر) &lt;/p &gt;&lt; p &gt; إذا كان ملف واحد مع لا إضافي بيم/pkcs12 الملفات التي يمكن أن أرسل الملف لنفسك وفتح المرفق. إذا كان لديك عدة ملفات وضعها على الخاص بك 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 بالنقر فوق اسم الشبكة الافتراضية &lt;/p &gt;&lt; p &gt; إذا كان هناك خطأ أو تحذير في السجل في محاولة لفهم التحذيرات/الخطأ ومحاولة إصلاحها &lt;/p &gt; </string>
+ <string name="faq_howto_title">بداية سريعة</string>
+ <string name="setting_loadtun_summary">حاول تحميل الوحدة النمطية tun.ko kernel قبل محاولة الاتصال. يحتاج عمل رووت للأجهزة.</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$s</string>
+ <string name="use_system_proxy">استخدام بروكسي النظام</string>
+ <string name="use_system_proxy_summary">استخدام تكوين النظام على نطاق واسع لوكلاء HTTP/HTTPS للاتصال.</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="faq_duplicate_notification_title">إشعارات مكررة</string>
+ <string name="faq_duplicate_notification">إذا كان Android تحت ضغط ذاكرة النظام (RAM) ، فسيتم إزالة التطبيقات والخدمات غير الضرورية في الوقت الحالي من الذاكرة النشطة. هذا ينهي اتصال VPN المستمر. لضمان بقاء الاتصال / OpenVPN ، يتم تشغيل الخدمة بأولوية أعلى. للتشغيل بأولوية أعلى ، يجب أن يعرض التطبيق إشعارًا. يفرض النظام رمز الإخطار بالمفتاح كما هو موضح في إدخال الأسئلة الشائعة السابق. لا يتم اعتباره إخطارًا للتطبيق بغرض التشغيل بأولوية أعلى.</string>
+ <string name="no_vpn_profiles_defined">لم يتم التعرف على الشبكة الإفتراضية.</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) من sdcard الخاص بك.</string>
+ <string name="faq_hint">تأكد من مراجعة الأسئلة الشائعة أيضًا. هناك دليل البدء السريع.</string>
+ <string name="faq_routing_title">التوجيه/إعداد الواجهة</string>
+ <string name="faq_routing">The Routing and interface configuration is not done via traditional ifconfig/route commands but by using the VPNService API. This results in a different routing configuration than on other OSes. \nThe configuration of the VPN tunnel consists of the IP address and the networks that should be routed over this interface. Especially, no peer partner address or gateway address is needed or required. Special routes to reach the VPN Server (for example added when using redirect-gateway) are not needed either. The application will consequently ignore these settings when importing a configuration. The app ensures with the VPNService API that the connection to the server is not routed through the VPN tunnel.\nThe VPNService API does not allow specifying networks that should not be routed via the VPN. As a workaround the app tries to detect networks that should not be routed over tunnel (e.g. route x.x.x.x y.y.y.y net_gateway) and calculates a set of routes that excludes this routes to emulate the behaviour of other platforms. The log windows shows the configuration of the VPNService upon establishing a connection.\nBehind the scenes: Android 4.4+ does use policy routing. Using route/ifconfig will not show the installed routes. Instead use ip rule, iptables -t mangle -L</string>
+ <string name="persisttun_summary">لا تتراجع إلى عدم وجود اتصال VPN عند إعادة اتصال OpenVPN.</string>
+ <string name="persistent_tun_title">ضبط مستمر</string>
+ <string name="openvpn_log">سِجلّ أوبن فيبي آن</string>
+ <string name="import_config">إستيراد إعدادات لأوبن فيبي آن</string>
+ <string name="battery_consumption_title">استهلاك البطارية</string>
+ <string name="baterry_consumption">In my personal tests the main reason for high battery consumption of OpenVPN are the keepalive packets. Most OpenVPN servers have a configuration directive like \'keepalive 10 60\' which causes the client and server to exchange keepalive packets every ten seconds. &lt;p&gt; While these packets are small and do not use much traffic, they keep the mobile radio network busy and increase the energy consumption. (See also &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; This keepalive setting cannot be changed on the client. Only the system administrator of the OpenVPN can change the setting. &lt;p&gt; Unfortunately using a keepalive larger than 60 seconds with UDP can cause some NAT gateways to drop the connection due to an inactivity timeout. Using TCP with a long keep alive timeout works, but tunneling TCP over TCP performs extremely poorly on connections with high packet loss. (See &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">The Android Tethering feature (over WiFi, USB or Bluetooth) and the VPNService API (used by this program) do not work together. For more details see the &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">الشبكة الإفتراضية الخاصة والربط</string>
+ <string name="connection_retries">إعادات محاولة الاتصال</string>
+ <string name="reconnection_settings">إعدادات إعادة الاتصال</string>
+ <string name="connectretrymessage">عدد الثواني التي يجب فيها الإنتظار بين محاولات الاتصال.</string>
+ <string name="connectretrywait">الثواني بين الاتصالات</string>
+ <string name="minidump_generated">تحطم أوبن فيبي آن بشكل غير متوقع. يرجى النظر في استخدام الخيار تفريغ مصغر إرسال في القائمة الرئيسية</string>
+ <string name="send_minidump">إرسال تقرير للمطور</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_assign_ip">تعيين عناوين IP</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_tcp_connect">الاتصال (TCP)</string>
+ <string name="state_auth_failed">فشلت المصادقة</string>
+ <string name="state_nonetwork">في انتظار شبكة قابلة للاستخدام</string>
+ <string name="state_waitorbot">في انتظار بدء تشغيل أوربوت</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">الإتصال بالشبكة الإفتراضية %s</string>
+ <string name="start_vpn_ticker">الإتصال بالشبكة الإفتراضية %s</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="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="complete_dn">الاسم الكامل المميز DN</string>
+ <string name="remotetlsnote">استخدم التكوين الذي تم استيراده خيار tls-remote القديم DEPRECATED والذي يستخدم تنسيق DN مختلف.</string>
+ <string name="rdn">RDN (الاسم الشائع)</string>
+ <string name="rdn_prefix">بادئة RDN</string>
+ <string name="tls_remote_deprecated">tls-جهاز التحكم عن بعد (تم تجاهله)</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 لنظام Android واعتراض جميع حركات مرور الشبكة.<b>لا تقبل إلا إذا كنت تثق في التطبيق.</b> وإلا فإنك تخاطر بتعرض بياناتك للاختراق بواسطة برامج ضارة. \"</string>
+ <string name="remote_trust">أنا أثق في هذا التطبيق.</string>
+ <string name="no_external_app_allowed">No app allowed to use external API</string>
+ <string name="allowed_apps">التطبيقات المسموح بها: %s</string>
+ <string name="clearappsdialog">Clear list of allowed external apps?\nCurrent list of allowed apps:\n\n%s</string>
+ <string name="screenoff_summary">أوقف VPN مؤقتًا عند إيقاف تشغيل الشاشة ونقل بيانات أقل من 64 كيلو بايت في 60 ثانية. عند تمكين خيار \"ضبط مستمر\" ، فإن الإيقاف المؤقت للشبكة الافتراضية الخاصة (VPN) سيترك جهازك بدون اتصال بالشبكة. بدون خيار \"ضبط مستمر\" ، لن يكون للجهاز اتصال / حماية VPN.</string>
+ <string name="screenoff_title">تعليق اتصال الشبكة الإفتراضية الخاصة عند إطفاء الشاشة</string>
+ <string name="screenoff_pause">إيقاف الاتصال مؤقتا في حالة إيقاف الشاشة: أقل من %1$s في %2$ss</string>
+ <string name="screen_nopersistenttun">تحذير: لم يتم تمكين تون المستمر لهذه الشبكة الإفتراضية. ستستخدم حركة المرور اتصال الإنترنت العادي عند إيقاف تشغيل الشاشة.</string>
+ <string name="save_password">حفظ كلمة المرور</string>
+ <string name="pauseVPN">تعليق الشبكة الافتراضية الخاصة مؤقتا</string>
+ <string name="resumevpn">استئناف تشغيل الشبكة الإفتراضية الخاصة</string>
+ <string name="state_userpause">توقيف مؤقت للشبكة الافتراضية الخاصة مِن طلب مِن المستخدِم</string>
+ <string name="state_screenoff">الشبكة الإفتراضية موقفة - الشاشة مطفأة</string>
+ <string name="device_specific">Device specifics Hacks</string>
+ <string name="cannotparsecert">لا يمكن عرض معلومات الشهادة</string>
+ <string name="appbehaviour">سلوك التطبيق</string>
+ <string name="vpnbehaviour">سلوك الشبكة الإفتراضية الخاصة</string>
+ <string name="allow_vpn_changes">السماح بالتغييرات على ملفات تعريف الشبكة الإفتراضية الخاصة</string>
+ <string name="hwkeychain">Hardware Keystore:</string>
+ <string name="permission_icon_app">أيقونة التطبيق الذي يحاول إستخدام أوبن في بي آن لأندرويد</string>
+ <string name="faq_vpndialog43">"بدءًا من Android 4.3 ، يتم حماية تأكيد VPN من\" التطبيقات المتراكبة \". يؤدي هذا إلى عدم استجابة مربع الحوار لإدخال اللمس. إذا كان لديك تطبيق يستخدم التراكبات ، فقد يتسبب ذلك في هذا السلوك. إذا وجدت تطبيقًا مسيئًا ، فاتصل بالمؤلف من التطبيق. تؤثر هذه المشكلة على جميع تطبيقات VPN على Android 4.3 والإصدارات الأحدث. راجع أيضًا &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;الإصدار 185&lt;a&gt; للحصول على تفاصيل إضافية "</string>
+ <string name="faq_vpndialog43_title">مربع حوار تأكيد الشبكة الإفتراضية الخاصة</string>
+ <string name="donatePlayStore">يمكنكم أيضا أن ترسلوا لنا تبرعاتكم على متجر بلاي:</string>
+ <string name="thanks_for_donation">شكرا للتبرع ب %s!</string>
+ <string name="logCleared">مُسِح السجل.</string>
+ <string name="show_password">إظهار كلمة السر</string>
+ <string name="keyChainAccessError">خطأ في الوصول إلى المفاتيح: %s</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">حالة الشبكة الإفتراضية الخاصة</string>
+ <string name="logview_options">عرض الخيارات</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="faq_system_dialog_xposed">إذا قمت بتجذير جهاز Android الخاص بك ، فيمكنك تثبيت &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 تأكيد الوحدة&lt;/a&gt; على مسؤوليتك الخاصة \"</string>
+ <string name="full_licenses">التراخيص الكاملة</string>
+ <string name="blocklocal_summary">لن يتم توجيه الشبكات المتصلة مباشرة بالواجهات المحلية عبر VPN. سيؤدي إلغاء تحديد هذا الخيار إلى إعادة توجيه كل حركة المرور المخصصة للشبكات المحلية إلى 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="openvpn_is_no_free_vpn">لاستخدام هذا التطبيق ، تحتاج إلى مزود VPN / بوابة VPN تدعم OpenVPN (غالبًا ما يوفره صاحب العمل). راجع 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">يجب أن تكون قيمة تجاوز MSS عددًا صحيحًا بين 0 و 9000</string>
+ <string name="mtu_invalid_value">يجب أن تكون قيمة تجاوز MSS عددًا صحيحًا بين 64 و 9000</string>
+ <string name="mssfix_value_dialog">أعلن لجلسات TCP التي تعمل عبر النفق أنه يجب عليهم تحديد أحجام حزم الإرسال الخاصة بهم بحيث بعد أن يقوم OpenVPN بتغليفها ، لن يتجاوز حجم حزمة UDP الناتجة التي يرسلها OpenVPN إلى نظيرها هذا العدد من البايتات. (الافتراضي هو 1450)</string>
+ <string name="mssfix_checkbox">تجاوز قيمة MSS لحمولة TCP</string>
+ <string name="mssfix_dialogtitle">قم بتعيين MSS لحمولة TCP</string>
+ <string name="client_behaviour">سلوك العميل</string>
+ <string name="clear_external_apps">محو التطبيقات الخارجية المسموح بها</string>
+ <string name="loading">جار التحميل&#8230;</string>
+ <string name="allowed_vpn_apps_info">التطبيقات المسموح بها: %s</string>
+ <string name="disallowed_vpn_apps_info">تطبيقات الشبكة الإفتراضية الغير المسموح بها: %1$s</string>
+ <string name="app_no_longer_exists">الحزمة %s لم تعد مثبتة ، إزالتها من قائمة السماح / عدم السماح للتطبيق</string>
+ <string name="vpn_disallow_radio">يتم استخدام الشبكة الإفتراضية لجميع تطبيقات لكن الاستثناءات المحددة</string>
+ <string name="vpn_allow_radio">يتم استخدام الشبكة الإفتراضية للتطبيقات المختارة</string>
+ <string name="vpn_allow_bypass">اسمح للتطبيقات بتجاوز 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">ملف تعريف الشبكة الإفتراضية الخاصة</string>
+ <string name="duplicate_profile_title">جار تكرار الملف الشخصي: %s</string>
+ <string name="show_log">إظهار السجل</string>
+ <string name="faq_android_clients">يوجد العديد من عملاء OpenVPN لنظام Android. أكثرها شيوعًا هي OpenVPN لنظام Android (هذا العميل) و OpenVPN Connect وإعدادات OpenVPN.&lt;p&gt;يمكن تقسيم العملاء إلى مجموعتين: المسنجر لالروبوت والمسنجر الاتصال استخدام VPNService API الرسمي (الروبوت 4.0+) ولا تحتاج إلى الجذر وإعدادات المسنجر الذي يستخدم الجذر.&lt;p&gt;OpenVPN for Android هو عميل مفتوح المصدر تم تطويره بواسطة Arne Schwabe. يستهدف المستخدمين الأكثر تقدمًا ويوفر العديد من الإعدادات والقدرة على استيراد ملفات التعريف من الملفات وتكوين / تغيير ملفات التعريف داخل التطبيق. يعتمد العميل على إصدار المجتمع من OpenVPN. يعتمد على كود مصدر OpenVPN 2.x. يمكن اعتبار هذا العميل العميل شبه الرسمي للمجتمع. &lt;p&gt;OpenVPN Connect هو عميل غير مفتوح المصدر تم تطويره بواسطة OpenVPN Technologies، Inc. تم وضع مسافة بادئة للعميل ليكون عميلًا للاستخدام العام وأكثر استهدافًا للمستخدم العادي ويسمح باستيراد ملفات تعريف OpenVPN. يعتمد هذا العميل على إعادة تطبيق OpenVPN C ++ لبروتوكول OpenVPN (كان هذا مطلوبًا للسماح لـ OpenVPN Technologies، Inc بنشر تطبيق iOS OpenVPN). هذا العميل هو العميل الرسمي لتقنيات OpenVPN. &lt;p&gt; إعدادات OpenVPN هي أقدم العملاء وأيضًا واجهة مستخدم لـ OpenVPN مفتوح المصدر. على عكس OpenVPN لنظام Android ، فإنه يتطلب جذرًا ولا يستخدم واجهة برمجة تطبيقات VPNService. لا يعتمد على 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 فقط مسارات CIDR إلى VPN. نظرًا لأنه لا يتم استخدام المسارات بخلاف CIDR تقريبًا ، فإن OpenVPN لنظام Android سيستخدم / 32 للطرق التي ليست CIDR ويصدر تحذيرًا.</string>
+ <string name="ab_tethering_44">يعمل الربط أثناء تنشيط VPN. لن يستخدم الاتصال المقيد VPN.</string>
+ <string name="ab_kitkat_mss">عيّن إصدار KitKat المبكر قيمة MSS الخاطئة على اتصالات TCP (# 61948). حاول تمكين خيار mssfix لحل هذا الخطأ.</string>
+ <string name="ab_proxy">سيستمر Android في استخدام إعدادات الوكيل المحددة لاتصال المحمول / Wi-Fi عند عدم تعيين خوادم DNS. سوف يحذرك OpenVPN لنظام Android من هذا في السجل.<p>عند تعيين VPN لخادم DNS ، لن يستخدم Android وكيلًا. لا توجد واجهة برمجة تطبيقات لتعيين وكيل لاتصال VPN.</p></string>
+ <string name="ab_not_route_to_vpn">لا يتم توجيه عنوان IP للعميل الذي تم تكوينه وعناوين IP الموجودة في قناع الشبكة الخاص به إلى VPN. يعمل OpenVPN على حل هذا الخطأ عن طريق إضافة مسار يفسد بشكل صريح إلى عنوان IP للعميل وقناع الشبكة الخاص به</string>
+ <string name="ab_persist_tun">فتح اكثر من جهاز tun في نفس الوقت يمكن ان يؤدي الي فشل عملية VPNServices علي الجهاز و يحتاج الجهاز الي اعادة تشغيل لحل المشكله.
+اندرويد OpenVPN for Android يحاول عدم تشغيل اكثر من جهاز tun في نفس الوقت و ايقاف الجهاز الاول قبل تشغيل جهاز جديد لتفادي هذه المشكله
+وهذا قد يؤدي لان يتم ارسال بعض البيانات لمده قصيره خارج اتصال الفي بي ان
+لكن رغم هذه الحل في بعض الاحيان تفشل VPNServices و تحتاج الي اعادة تشغيل الجهاز.</string>
+ <string name="ab_secondary_users">لا تعمل الشبكة الافتراضية الخاصة بتاتا لدى المستخدمين الثانويين.</string>
+ <string name="ab_kitkat_reconnect">"يبلغ العديد من المستخدمين عن أن اتصال بيانات الجوال / اتصال الهاتف المحمول يتم إسقاطه بشكل متكرر أثناء استخدام تطبيق VPN. يبدو أن السلوك يؤثر على بعض مزودي خدمة / مجموعة الأجهزة المحمولة ، وحتى الآن لم يتم تحديد سبب / حل بديل لهذا الخطأ."</string>
+ <string name="ab_vpn_reachability_44">يمكن الوصول إلى الوجهة فقط عبر VPN التي يمكن الوصول إليها دون VPN. لا تعمل VPN IPv6 على الإطلاق.</string>
+ <string name="ab_only_cidr_title">CIDR رواتر معطل</string>
+ <string name="ab_proxy_title">سلوك الوكيل للشبكات الخاصة الافتراضية</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">قيمة 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">استمرار وضع تون</string>
+ <string name="version_and_later">%s وما بعدها</string>
+ <string name="tls_cipher_alert_title">فشل الاتصالات مع SSL23_GET_SERVER_HELLO: فشل مصافحة تنبيه sslv3</string>
+ <string name="tls_cipher_alert">تستخدم إصدارات OpenVPN الأحدث لنظام Android (0.6.29 / مارس 2015) افتراضيًا أكثر أمانًا لمجموعات التشفير المسموح بها (tls-cipher \"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 (فشل التطبيق على الأرجح أو تم ايقافه بسبب انخفاض الذاكرة)</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 لنظام Android محاولة اكتشاف الملفات (الملفات) المفقودة على بطاقة sdcard تلقائيًا. اضغط على هذه الرسالة بدء طلب الإذن.</string>
+ <string name="protocol">بروتوكول</string>
+ <string name="enabled_connection_entry">تمكين</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="crl_title">قائمة إبطال الشهادات (اختياري)</string>
+ <string name="reread_log">إعادة قراءة عناصر السجل (%d) من ملف ذاكرة التخزين المؤقت للسجل</string>
+ <string name="samsung_broken">على الرغم من أن هواتف Samsung من بين أكثر هواتف Android مبيعًا ، إلا أن البرامج الثابتة من Samsung تعد أيضًا من بين أكثر برامج Android الثابتة التي تجرها الدواب. لا تقتصر الأخطاء على تشغيل VPN على هذه الأجهزة ولكن يمكن حل الكثير منها. فيما يلي وصف لبعض هذه الأخطاء.\n\nلا يعمل DNS إلا إذا كان خادم DNS في نطاق VPN.\n\nفي العديد من أجهزة Samsung 5.x لا تعمل ميزة التطبيقات المسموح بها / غير المسموح بها.\nعلى Samsung 6.x VPN ، تم الإبلاغ عن عدم عمل ما لم يتم إعفاء تطبيق VPN من ميزات Powersave.</string>
+ <string name="samsung_broken_title">هواتف سامسونج</string>
+ <string name="novpn_selected">لم يتم تحديد شبكة إفتراضية.</string>
+ <string name="defaultvpn">الـ VPN الافتراضي</string>
+ <string name="defaultvpnsummary">تُستخدم VPN في الأماكن التي تتطلب شبكة افتراضية خاصة افتراضية. هذه قيد التشغيل حاليًا ، من أجل Always-On و Quick Settings Tile.</string>
+ <string name="vpnselected">الشبكة الإفتراضية الخاصة المُختارة: \'%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 ، فهذا يعني أنه تم تمكين \ "Always on VPN \" لتطبيق آخر. في هذه الحالة ، يُسمح فقط لهذا التطبيق بالاتصال بشبكة VPN. تحقق من الإعدادات-> الشبكات أكثر .. -> VPNS]]></string>
+ <string name="management_socket_closed">تم إغلاق الاتصال ب الشبكة الإفتراضية (%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-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 bit/ثا</string>
+ <string name="kbits_per_second">%.1f kbit/ثا</string>
+ <string name="mbits_per_second">%.1f Mbit/ثا</string>
+ <string name="gbits_per_second">%.1f Gbit/ثا</string>
+ <string name="weakmd">&lt;p&gt;بدءًا من الإصدار 1.1 من OpenSSL ، يرفض OpenSSL التوقيعات الضعيفة في الشهادات مثل
+ MD5. بالإضافة إلى ذلك ، يتم أيضًا رفض توقيعات OpenSSL 3.0 باستخدام SHA1.&lt;/p&gt;&lt;p&gt;
+ يجب عليك تحديث شهادات VPN في أقرب وقت ممكن لأن SHA1 لن يعمل أيضًا على الأنظمة الأساسية الأخرى في المستقبل
+ .&lt;/p&gt;
+ &lt;p&gt;إذا كنت تريد حقًا استخدام الشهادات القديمة والمعطلة ، فحدد \"غير آمن\" لملف تعريف أمان TLS ضمن مصادقة / تشفير ملف التعريف&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 غيغابايت</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 ضعيف جدًا)</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">استخدام ملفات PKCS12 مباشرة مع تطبيق OpenVPN 3 C ++ غير مدعوم. يرجى استيراد ملفات pkcs12 إلى ملف تخزين مفاتيح Android أو التغيير إلى OpenVPN 2.x ضمن الإعدادات العامة.</string>
+ <string name="proxy">وكيل البروكسي</string>
+ <string name="Use_no_proxy">لا شيء</string>
+ <string name="tor_orbot">تور (أوربوت)</string>
+ <string name="openvpn3_socksproxy">لا يدعم تطبيق OpenVPN 3 C ++ الاتصال عبر بروكسي Socks</string>
+ <string name="no_orbotfound">لا يمكن العثور على تطبيق Orbot. الرجاء تثبيت Orbot أو استخدام التكامل اليدوي Socks v5.</string>
+ <string name="faq_remote_api_title">واجهة برمجة التطبيقات عن بُعد</string>
+ <string name="faq_remote_api">يدعم OpenVPN لنظام Android اثنين من واجهات برمجة التطبيقات البعيدة ، وواجهة برمجة تطبيقات متطورة تستخدم AIDL (عن بُعد في مستودع git) وواحدة بسيطة تستخدم Intents. &lt;p&gt;أمثلة باستخدام غلاف adb والأهداف. استبدل اسم ملف التعريف باسم ملفك الشخصي&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn / .api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN - e de.blinkt.openvpn.api.profile الاسم Blinkt de.blinkt.openvpn / .api.ConnectVPN</string>
+ <string name="enableproxyauth">تمكين مصادقة الوكيل</string>
+ <string name="error_orbot_and_proxy_options">لا يمكن استخدام عبارة خيار وكيل http الإضافية وتكامل Orbot في نفس الوقت O</string>
+ <string name="info_from_server">معلومات من الخادم: \"%s\"</string>
+ <string name="channel_name_userreq">تفاعل المستخدم مطلوب</string>
+ <string name="channel_description_userreq">يتطلب اتصال OpenVPN إدخال المستخدم ، على سبيل المثال ، المصادقة الثنائية
+
+ </string>
+ <string name="openurl_requested">افتح URL لمتابعة مصادقة VPN</string>
+ <string name="crtext_requested">Answer challenge to continue VPN authentication</string>
+ <string name="state_auth_pending">المصادقة معلقة</string>
+ <string name="external_authenticator">الموثق الخارجي</string>
+ <string name="configure">تهيئة</string>
+ <string name="extauth_not_configured">الموثق الخارجي غير مهيأ</string>
+ <string name="faq_killswitch_title">حظر الاتصال بخلاف VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">غالبًا ما يكون مطلوبًا حظر الاتصالات بدون VPN. غالبًا ما تستخدم التطبيقات الأخرى مصطلحات وضع العلامات مثل \"Killswitch\" أو \"Seamless tunnel\" لهذه الميزة. يوفر OpenVPN وهذا التطبيق خاصية persist-tun ، وهي ميزة لتنفيذ هذه الوظيفة.&lt;p&gt;تكمن المشكلة في كل هذه الأساليب التي تقدمها التطبيقات في أنها لا تقدم سوى أفضل الجهود وليست حلولاً كاملة. عند بدء التشغيل ، وتعطل التطبيق وحالات الركن الأخرى ، لا يمكن للتطبيق ضمان عمل هذه الكتلة من الاتصال بخلاف VPN. وبالتالي منح المستخدم إحساسًا زائفًا بالأمان.&lt;p&gt;الطريقة &lt;b&gt;الوحيدة&lt;/b&gt; بها للتأكد من حظر الاتصالات غير VPN هي استخدام Android 8.0 أو إصدار أحدث واستخدام إعداد \"حظر الاتصالات بدون VPN\" الذي يمكن العثور عليه ضمن الإعدادات &gt; الشبكة &amp; الإنترنت &gt; المتقدم / VPN &gt; OpenVPN لنظام Android &gt; تمكين Always ON VPN ، قم بتمكين حظر الاتصالات بدون VPN</string>
+ <string name="summary_block_address_families">يوجه هذا الخيار Android إلى عدم السماح بالبروتوكولات (IPv4 / IPv6) إذا لم تقم VPN بتعيين أي عناوين IPv4 أو IPv6.</string>
+ <string name="title_block_address_families">قم بحظر IPv6 (أو IPv4) إذا لم يتم استخدامه بواسطة VPN</string>
+ <string name="install_keychain">تثبيت شهادة جديدة</string>
+ <string name="as_servername">AS Servername</string>
+ <string name="server_url">عنوان URL للخادم</string>
+ <string name="request_autologin">طلب ملف تعريف تسجيل الدخول التلقائي</string>
+ <string name="import_from_as">ملف تعريف الاستيراد من الخادم البعيد</string>
+ <string name="no_default_vpn_set">لم يتم تعيين VPN الافتراضية. يرجى تعيين VPN الافتراضي قبل تمكين هذا الخيار.</string>
+ <string name="internal_web_view">WebView الداخلي</string>
+ <string name="faq_ncp">هناك بعض الاختلاف في هذه الرسالة اعتمادًا على الموقف الدقيق. إنهم جميعًا يشتركون في أن الخادم والعميل لا يمكن أن يتفقوا على تشفير مشترك. الأسباب الرئيسية هي: &lt;ul&gt;&lt;li&gt; أنت لا تزال تعتمد على حقيقة أن OpenVPN 2.4 وما بعده يسمح لـ BF-CBC في التكوين الافتراضي (إذا لم يتم تعيين تشفير). لا يسمح OpenVPN 2.5 به افتراضيًا بعد الآن نظرًا لأنه عبارة عن &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;تشفير مكسور / قديم&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;يقوم الخادم بتشغيل OpenVPN 2.3 (أو حتى أقدم) مع --enable-small (على الأقل 4-5 سنوات من OpenVPN)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;تكوين معطل (على سبيل المثال ، عدم تطابق شفرات البيانات على العميل والخادم)&lt;/li&gt; &lt;p&gt; &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN يشرح القسم اليدوي حول مفاوضات التشفير&lt;/a&gt; السيناريوهات المختلفة لمفاوضات التشفير جيدًا وما يجب القيام به في هذه الحالة. تستخدم&lt;p&gt;جهازًا من أجهزة TP-Link إصدار OpenVPN 2.3.x القديم الذي لا يقل عن 5 سنوات (ربما أقدم) على أجهزتهم ، حتى في طرز 2019/2020.&lt;p&gt;أخيرًا وليس آخرًا ، هناك مزود VPN شهير لديه خادم معطل يقول دائمًا إنه يستخدم \"BF-CBC\" لأن مطوره اعتقد أنه سيكون فكرة جيدة لإنشاء تصحيح تفاوض على تشفير خاص لا يتوافق مع المعيار OpenVPN.&lt;p&gt;باختصار: يجب ألا تحصل جميع التكوينات المعقولة على هذه الأخطاء. ولكن (بصرف النظر عن خادم مزود VPN المعطل) يمكن إقناع العميل بالاستمرار في الاتصال (إصلاح الرمز وليس المشكلة الحقيقية). عند الاتصال بالخوادم القديمة ، يجب أن يكون خيار وضع التوافق في الإعدادات الأساسية لشبكة VPN قادرًا على معالجة معظم مشكلات التوافق الشائعة.</string>
+ <string name="check_peer_fingerprint">تحقق من بصمة شهادة النظير</string>
+ <string name="fingerprint">(أدخل بصمة SHA256 لشهادة (شهادات) الخادم)</string>
+ <string name="proxy_info">HTTP Vekil: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">يرجى استخدام ميزة Always-On لنظام Android لتمكين VPN في وقت التمهيد.</string>
+ <string name="open_vpn_settings">تعديل إعدادات الشبكة الخاصة الإفتراضية</string>
+ <string name="trigger_pending_auth_dialog">اضغط هنا افتح نافذة لإدخال المصادقة الإضافية المطلوبة</string>
+ <string name="compatmode">وضع التوافق</string>
+ <string name="compat_mode_label">وضع التوافق</string>
+ <string name="loadossllegacy">تحميل مزود OpenSSL القديم</string>
+ <string name="bf_cbc_requires_legacy">تستخدم الملفات الشخصية BF-CBC الذي يعتمد على مزود OpenSSL القديم (غير ممكّن).</string>
+ <string name="allow_translations_title">السماح بالترجمات التي يساهم بها المجتمع</string>
+ <string name="allow_translations_summary">للسماح للتطبيق بالترجمة مع الترجمات التي يساهم بها المجتمع. يتطلب إعادة تشغيل التطبيق للتفعيل.</string>
+ <string name="tls_profile">ملف تعريف أمان TLS</string>
+ <string name="encrypt_profiles">Try to encrypt profiles on storage (if supported by Android OS)</string>
+</resources>
diff --git a/main/src/ui/res/values-be/arrays.xml b/main/src/ui/res/values-be/arrays.xml
index 5bbdc780..42d265c2 100644
--- a/main/src/ui/res/values-be/arrays.xml
+++ b/main/src/ui/res/values-be/arrays.xml
@@ -17,9 +17,9 @@
<item>Знешняя праверка сапраўднасці правайдара</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Не вызначана</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Шыфраванне (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Адлучыцца і захаваць пароль</item>
<item>Ігнараваць і паўтарыць</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Сучасныя стандарты</item>
+ <item>Версія OpenVPN 2.5.x</item>
+ <item>Версія OpenVPN 2.4.x</item>
+ <item>Версіі OpenVPN 2.3.x і больш старыя</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>небяспечны (не рэкамендуецца, дазваляе небяспечная шыфраванне)</item>
+ <item>традыцыйны (прадвызначана)</item>
+ <item>пажадана (рэкамендавана, але абмяжоўвае сумяшчальнасць)</item>
+ <item>Suite B (толькі эліптычныя крывыя, якія ўхваленыя NIST)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-be/strings.xml b/main/src/ui/res/values-be/strings.xml
index 619bddfd..05f4cd49 100644
--- a/main/src/ui/res/values-be/strings.xml
+++ b/main/src/ui/res/values-be/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">Пароль PKCS12</string>
<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">Увядзіце адрас/маску падсеткі 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>
@@ -67,8 +65,6 @@
<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\nКалі выкарыстоўваецца прэфікс RDN \"Сервер\", то значэнні будуць \"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>
@@ -201,8 +197,6 @@
<string name="using_proxy">Выкарыстоўваецца проксі-сервер %1$s %2$s</string>
<string name="use_system_proxy">Выкарыстоўваць сістэмны проксі</string>
<string name="use_system_proxy_summary">Скарыстайцеся сістэмнай канфігурацыяй проксі HTTP/HTTPS для злучэння.</string>
- <string name="onbootrestartsummary">OpenVPN падлучыць азначаны VPN, калі ён быў актыўны падчас загрузкі сістэмы. Калі ласка, прачытайце ў радзеле \"Частыя пытанні\" пра папярэджанні пры злучэнні перад тым, як выкарыстоўваць гэты параметр на Android &lt; 5.0.</string>
- <string name="onbootrestart">Злучаць пры загрузцы</string>
<string name="ignore">Ігнараваць</string>
<string name="restart">Перазапуск</string>
<string name="restart_vpn_after_change">Змены ў канфігурацыі адбудуцца толькі пасля перазапуску VPN. (Пера)запусціць VPN?</string>
@@ -258,7 +252,6 @@
<string name="encryption_cipher">Алгарытм шыфравання</string>
<string name="packet_auth">Пакет праверкі сапраўднасці</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>
@@ -356,7 +349,6 @@
<string name="ab_tethering_44">Рэжым мадэма працуе пакуль актыўнае злучэнне з VPN, але сам VPN выкарыстоўвацца НЕ будзе.</string>
<string name="ab_kitkat_mss">Раннія версіі KitKat усталёўваюць памылковае значэнне MSS для злучэння па TCP (#61948). Паспрабуйце ўключыць параметр mssfix, каб выправіць гэту памылку.</string>
<string name="ab_proxy">Android будзе працягваць выкарыстоўваць вашы налады проксі, якія азначаныя для мабільных даных або злучэння праз Wi-Fi, калі сервер DNS не прызначаны. папярэдзіць вас пра гэта ў журнале.<p>Калі злучэнне па VPN прызначае сервер DNS, то Android не будзе выкарыстоўваць проксі. На дадзены момант не існуе API, каб прызначыць проксі для злучэння па VPN.</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 усё яшчэ актыўны і выкарыстоўвае падтрымку persist-TUN, прывядзе да аварыйнага завяршэння VPNServices. Вам неабходна будзе перазагрузіць прыладу, каб VPN зноў пачаў працаваць. стараецца не дазваляць паўторна адкрываць TUN на прыладзе, а калі вам гэта сапраўды неабходна, то спачатку спыніце працу бягучага TUN\'а і толькі потым адкрывайце новы, каб прадухіліць аварыйнае завяршэнне праграмы.</string>
<string name="ab_secondary_users">VPN не працуе для ўсіх астатніх карыстальнікаў.</string>
@@ -364,7 +356,6 @@
<string name="ab_vpn_reachability_44">Некаторыя прызначэнні даступныя толькі праз VPN і доступ да іх нельга атрымаць без VPN. VPN у IPv6 не працуе ўвогуле.</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>
diff --git a/main/src/ui/res/values-ca/arrays.xml b/main/src/ui/res/values-ca/arrays.xml
index efdfca39..faca6ed4 100644
--- a/main/src/ui/res/values-ca/arrays.xml
+++ b/main/src/ui/res/values-ca/arrays.xml
@@ -17,9 +17,9 @@
<item>Proveïdor Extern d\'Autenticació</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Sense especificar</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Encriptatge (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-ca/strings.xml b/main/src/ui/res/values-ca/strings.xml
index 6751130a..74816204 100644
--- a/main/src/ui/res/values-ca/strings.xml
+++ b/main/src/ui/res/values-ca/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">Contrasenya PKCS12</string>
<string name="file_select">Selecciona&#8230;</string>
<string name="file_nothing_selected">Has de seleccionar un fitxer</string>
- <string name="useTLSAuth">Utiltiza autenticació TLS</string>
- <string name="tls_direction">Direcció TLS</string>
<string name="ipv6_dialog_tile">Introduïu l\'adreça/mascara de xarxa IPv6 en format CIDR Format (e.g. 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Introduïu l\'adreça/mascara de xarxa IPv4 en format CIDR (e.g. 1.2.3.4/24)</string>
<string name="ipv4_address">Adreça IPv4</string>
@@ -132,8 +130,6 @@
<string name="advanced">Avançat</string>
<string name="faq_howto_title">Inici rapid</string>
<string name="use_system_proxy">Utiliza el proxy del sistema</string>
- <string name="onbootrestartsummary">OpenVPN es conectarà a la VPN especificada si està actiu durant l\'inici del sistema. Si us plau, llegiu el FAQ de l\'advertència de conexió abans de fer servir aquesta opció en Android &lt; 5.0.</string>
- <string name="onbootrestart">Conecta al reiniciar</string>
<string name="ignore">Ignorar</string>
<string name="restart">Reinicia</string>
<string name="restart_vpn_after_change">Els canvis de configuració s\'apliquen desprès de reinicar la VPN. (Re)inicar la VPN ara?</string>
@@ -159,7 +155,6 @@
<string name="encryption_cipher">Tipus de xifratge</string>
<string name="packet_auth">Autentificació de paquet</string>
<string name="auth_dialog_title">Introdueix el mètode de autentificació de paquet</string>
- <string name="built_by">fet per %s</string>
<string name="make_selection_inline">Copia al perfil</string>
<string name="crashdump">Volcat de fallada</string>
<string name="add">Afegeix</string>
diff --git a/main/src/ui/res/values-cs/arrays.xml b/main/src/ui/res/values-cs/arrays.xml
index bab91fcd..1172be5c 100644
--- a/main/src/ui/res/values-cs/arrays.xml
+++ b/main/src/ui/res/values-cs/arrays.xml
@@ -17,9 +17,9 @@
<item>Externí zprostředkovatel autentizace</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0 (server)</item>
- <item translatable="false">1 (klient)</item>
- <item>Nespecifikováno</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Šifrování (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-cs/strings.xml b/main/src/ui/res/values-cs/strings.xml
index fe79cc07..eae14237 100644
--- a/main/src/ui/res/values-cs/strings.xml
+++ b/main/src/ui/res/values-cs/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12 heslo</string>
<string name="file_select">Vyber&#8230;</string>
<string name="file_nothing_selected">Je třeba vybrat soubor</string>
- <string name="useTLSAuth">Použij TLS autentikaci</string>
- <string name="tls_direction">TLS řízení</string>
<string name="ipv6_dialog_tile">Zadej IPv6 adresu/masku v CIDR formátu (tj. 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Zadej IPv4 adresu/masku v CIDR formátu (tj. 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 adresa</string>
@@ -67,8 +65,6 @@
<string name="remote_tlscn_check_title">Ověření jména certifikátu</string>
<string name="enter_tlscn_dialog">Specifikuj způsob kontroly DN v certifikátu vzdáleného serveru (př. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nSpecifikuj kompletní DN nebo RDN (openvpn.blinkt.de v příkladu) nebo RDN prefix pro verifikaci.\n\nPři použití RDN prefixu, \"Server\" sedí na \"Server-1\" i \"Server-2\"\n\nJe-li RDN pole prázdné, kontroluje se proti jménu serveru.\n\nPro více detailů, viz manuálová stránka OpenVPN 2.3.1+, přepínač —verify-x509-name</string>
<string name="enter_tlscn_title">Předmět vzdáleného certifikátu</string>
- <string name="tls_key_auth">Zapnout autentikaci pomocí TLS klíče</string>
- <string name="tls_auth_file">TLS autentikační soubor</string>
<string name="pull_on_summary">Použít IP adresu, směrování a časování přijaté od serveru.</string>
<string name="pull_off_summary">Žádné informace od serveru nevyžadovat. Nastavení je potřeba zadat níže.</string>
<string name="use_pull">Automaticky</string>
@@ -201,8 +197,6 @@
<string name="using_proxy">Používám proxy %1$s %2$s</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>
@@ -258,7 +252,6 @@
<string name="encryption_cipher">Šifrovací algoritmus</string>
<string name="packet_auth">Ověřování paketů</string>
<string name="auth_dialog_title">Zadej způsob ověřování paketů</string>
- <string name="built_by">sestaveno od %s</string>
<string name="debug_build">ladící verze</string>
<string name="official_build">oficiální verze</string>
<string name="make_selection_inline">Zkopírovat do profilu</string>
@@ -354,13 +347,11 @@
<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_kitkat_reconnect">"Více uživatelů hlásí, že mobilní připojení / mobilní datové připojení má časté výpadky během používání této VPN aplikace. Vypadá to, že chování ovlivňuje jen nějaké kombinace mobilních poskytovatelů / zařízení a zatím nebyla identifikována žádná příčina / řešení chyby."</string>
<string name="ab_vpn_reachability_44">Jediná destinace může být dosažena přes VPN které nejsou dosažitelné bez VPN. Sítě IPv6 nefungují vůbec.</string>
<string name="ab_only_cidr_title">Ne-CIDR trasy</string>
<string name="ab_proxy_title">Proxy chování pro VPN</string>
- <string name="ab_lollipop_reinstall_title">Přeinstalování VPN aplikací</string>
<string name="version_upto">%s a starší</string>
<string name="copy_of_profile">Kopie %s</string>
<string name="ab_not_route_to_vpn_title">Trasa k nastavené IP adrese</string>
diff --git a/main/src/ui/res/values-da/arrays.xml b/main/src/ui/res/values-da/arrays.xml
index fb3dcdd3..cd414a93 100644
--- a/main/src/ui/res/values-da/arrays.xml
+++ b/main/src/ui/res/values-da/arrays.xml
@@ -17,9 +17,9 @@
<item>Ekstern godkendelsesudbyder</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Uspecificeret</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Kryptering (TLS-krypt.)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Afbryd, behold adgangskoden</item>
<item>Ignorér, forsøg igen</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Moderne stander</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x peers</item>
+ <item>OpenVPN 2.3.x og ældre peers</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>usikker (anbefales ikke, tillader usikker krypto)</item>
+ <item>legacy (standard)</item>
+ <item>foretrukket (anbefalet, kompatibilitet dog begrænset)</item>
+ <item>Suite B (kun NIST-godkendte elliptiske kurver)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-da/strings.xml b/main/src/ui/res/values-da/strings.xml
index a45ee25a..8d895a08 100644
--- a/main/src/ui/res/values-da/strings.xml
+++ b/main/src/ui/res/values-da/strings.xml
@@ -5,49 +5,49 @@
-->
<resources>
<string name="app">OpenVPN til Android</string>
- <string name="address">Server Adresse:</string>
- <string name="port">Server Port:</string>
+ <string name="address">Serveradresse:</string>
+ <string name="port">Serverport:</string>
<string name="location">Placering</string>
- <string name="cant_read_folder">Kan ikke læse mappen</string>
+ <string name="cant_read_folder">Mappe kan ikke læses</string>
<string name="select">Vælg</string>
- <string name="cancel">Annuller</string>
+ <string name="cancel">Afbryd</string>
<string name="no_data">Ingen data</string>
- <string name="useLZO">LZO komprimering</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 detaljer om licenserne)</string>
+ <string name="client_key_title">Klientcertifikatnøgle</string>
+ <string name="client_pkcs12_title">PKCS12-fil</string>
+ <string name="ca_title">CA-certifikat</string>
+ <string name="no_certificate">Valg af certifikat er obligatorisk</string>
+ <string name="copyright_guicode">Kildekode- og problematik-tracker findes på http://code.google.com/p/ics-openvpn/</string>
+ <string name="copyright_others">Dette program bruger flg. komponenter (se kildekoden for alle oplysninger 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="pkcs12pwquery">PKCS12-adgangskode</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_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="file_nothing_selected">Valg af fil er obligatorisk</string>
+ <string name="ipv6_dialog_tile">Angiv IPv6-adresse/-netmaske i CIDR-formatet (f.eks. 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Angiv IPv4-adresse/-netmaske i CIDR-formatet (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 tilpassede OpenVPN-indstillinger. Benyt med omtanke. Bemærk også, at mange af de tun-relateret OpenVPN-indstillinger ikke kan understøttes af VPNSettings. Kontakt forfatteren, hvis man mener, at en vigtig indstilling mangler</string>
+ <string name="auth_username">Brugernavn (tomt for ingen godkendelse)</string>
+ <string name="auth_pwquery">Adgangskode</string>
+ <string name="static_keys_info">Ved statisk opsætning bruges TLS Auth-nøglerne som statiske nøgler</string>
+ <string name="configure_the_vpn">Opsæt VPN\'et</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="add_profile_name_prompt">Angiv et navn til den nye profil</string>
+ <string name="duplicate_profile_name">Angiv 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_keystore_cert_selected">Valg af Brugercertifikat er obligatorisk</string>
+ <string name="no_ca_cert_selected">Obligatorisk valg af CA-certifikat eller aktivering af peer-fingeraftrykstjek</string>
<string name="no_error_found">Ingen fejl fundet</string>
- <string name="config_error_found">Fejl ved konfiguration</string>
+ <string name="config_error_found">Fejl i opsætning</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="custom_route_format_error">Fejl ved tolkning af de tilpassede ruter</string>
+ <string name="pw_query_hint">(lad stå tomt for forespørgsel efter behov)</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>
@@ -66,33 +66,31 @@
<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="enter_tlscn_title">Fjerncertifikatemne</string>
+ <string name="pull_on_summary">Anmoder om IP-adresser, rutninger og tidsindstillingerne fra serveren.</string>
+ <string name="pull_off_summary">Ingen oplysninger anmodet 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="override_dns">Tilsidesæt DNS-indstillinger efter Server</string>
+ <string name="dns_override_summary">Brug egne DNS-servere</string>
<string name="searchdomain">søgeDomæne</string>
- <string name="dns1_summary">DNS-server, som skal anvendes.</string>
+ <string name="dns1_summary">DNS-serveren, der 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 modtagne routes</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="secondary_dns_message">Sekundær DNS-Server der bruges, hvis den normale DNS-server er utilgængelig.</string>
+ <string name="backup_dns">Reserve DNS-server</string>
+ <string name="ignored_pushed_routes">Ignorér pushede rutninger</string>
+ <string name="ignore_routes_summary">Ignorér rutninger pushet fra serveren.</string>
+ <string name="default_route_summary">Omdirigerer al trafik over VPN\'et</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="custom_route_message">Angiv tilpassede rutninger. Angiv 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\'et.</string>
+ <string name="custom_route_message_excluded">Rutninger, som IKKE skal dirigeres gennem VPN\'et. Brug samme syntax som til de inkluderede ruter.</string>
+ <string name="custom_routes_title">Tilpassede rutninger</string>
+ <string name="custom_routes_title_excluded">Udelukkede netværk</string>
+ <string name="log_verbosity_level">Detaljegrad for logindhold</string>
+ <string name="float_summary">Tillader 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="custom_options_title">Tilpassede indstillinger</string>
+ <string name="edit_vpn">Redigér 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>
@@ -125,6 +123,7 @@
<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 datakrypteringschifferalgoritmerne brugt af OpenVPN adskilt af: (--data-ciphers). Lad stå tomt for at bruge standarden AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</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>
@@ -201,8 +200,6 @@
<string name="using_proxy">Anvender proxy %1$s %2$s</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>
@@ -258,7 +255,6 @@
<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>
@@ -356,7 +352,6 @@
<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>
@@ -364,7 +359,6 @@
<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>
@@ -435,6 +429,11 @@
<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;Fra og med OpenSSL-version 1.1 afviser OpenSSL svage signaturer i certifikater, såsom
+ MD5. Med OpenSSL 3.0 afvises desuden signaturer med SHA1.&lt;/p&gt;&lt;p&gt;
+ Man bør hurtigst muligt opdatere VPN-certifikaterne, da SHA1 i nær fremtid heller ikke vil fungere på andre platforme.&lt;/p&gt;
+ &lt;p&gt;Ønsker man stadig at bruge gamle og defekte certifikater, så vælg \"usikker\" for TLS-sikkerhedsprofilen under Godkendelse/Kryptering af profilen.&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>
@@ -468,8 +467,35 @@
tofaktorgodkendelse
</string>
<string name="openurl_requested">Åbn URL for at fortsætte VPN-godkendelse</string>
+ <string name="crtext_requested">Svarudfordring for at fortsætte VPN-godkendelse</string>
<string name="state_auth_pending">Godkendelse afventer</string>
<string name="external_authenticator">Ekstern Godkendelse</string>
<string name="configure">Opsæt</string>
<string name="extauth_not_configured">Ekstern Godkendelse er ikke opsat</string>
+ <string name="faq_killswitch_title">Bloker forbindelse uden VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">Det er ofte ønsket til at blokere forbindelser uden VPN. Andre apps bruger ofte markedsføringsbegreber såsom \"Killswitch\" eller \"Sømløs tunnel\" til denne funktion. OpenVPN og denne app tilbyder persist-tun, en funktion til at implementere denne funktionalitet.&lt;p&gt;Problemet med alle disse metoder, som tilbydes af apps, er, at de kun kan tilbyde løsninger efter bedste evne og ikke er komplette løsninger. Ved opstart, app-nedbrud og andre corner cases kan appen ikke sikre, at denne blok af ikke-VPN-forbindelse virker. Dermed gives brugeren en falsk følelse af sikkerhed.&lt;p&gt;Den &lt;b&gt;eneste&lt;/b&gt; pålidelige måde at sikre, at ikke-VPN-forbindelser blokeres, er at bruge Android 8.0 eller senere og bruge indstillingen \"bloker forbindelser uden VPN\", som kan findes under Indstillinger &gt; Netværk &amp; Internet &gt; Avanceret/VPN &gt; OpenVPN til Android &gt; Aktivér Altid TIL VPN, Aktivér Blokér forbindelser uden VPN</string>
+ <string name="summary_block_address_families">Denne indstilling instruerer Android om ikke at tillade protokoller (IPv4/IPv6), hvis VPN\'et ikke angiver nogen IPv4- eller IPv6-adresser.</string>
+ <string name="title_block_address_families">Blokér IPv6 (eller IPv4), hvis ikke i brug af VPN\'et</string>
+ <string name="install_keychain">Installér nyt certifikat</string>
+ <string name="as_servername">AS-servernavn</string>
+ <string name="server_url">Server URL</string>
+ <string name="request_autologin">Anmod om autologin-profil</string>
+ <string name="import_from_as">Importér profil fra ekstern server</string>
+ <string name="no_default_vpn_set">Standard VPN ikke opsat. Opsæt standard-VPN, før denne mulighed aktiveres.</string>
+ <string name="internal_web_view">Internt WebView</string>
+ <string name="faq_ncp">Der findes variationer af denne meddelelse afhængigt af den nøjagtige situation. De har alle det til fælles, at server og klient ikke kunne enes om en fælles chiffer. Hovedårsagerne er: &lt;ul&gt;&lt;li&gt; Der er stadig ikke tillid til det faktum, at OpenVPN 2.4 og ældre tillader BF-CBC i standardopsætningen (ved ingen angivet --cipher). OpenVPN 2.5 tillader som standard ikke dette længere, da det er en &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;defekt/forældet chiffer&lt;/a&gt;.&lt;/li&amp;gt ;&lt;li&gt;Serveren kører OpenVPN 2.3 (eller endnu ældre) med --enable-small (mindst 4-5 år gammel OpenVPN)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;defekt opsætning (f.eks. ikke-matchende data-chifre på klient og server)&lt;/li&gt; &lt;p&gt; &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN manualsektionen om chifferforhandling&lt;/a&gt; forklarer de forskellige scenarier for chifferforhandling ganske godt, samt hvad der skal gøres i disse situationer.&lt;p&gt;TP-Link-enheder bruger en mindst 5 år gammel OpenVPN 2.3.x-version (muligvis ældre) på deres enheder, selv i 2019-/ 2020-modeller.&lt;p&gt;Sidst, men ikke mindst, er der en populær VPN-udbyder, der har en ødelagt server, der altid annoncerer, at den bruger \'BF-CBC\', fordi dens udvikler mente, at det ville være en god idé at oprette en proprietær chiffer-forhandlings patch, der er inkompatibel med standard OpenVPN.&lt;p&gt; Sammenfattende: Alle raske opsætninger bør ikke få disse fejl, men (bortset fra den ødelagte VPN-udbyderserver) kan klienten overtales til stadig at oprette forbindelse (fikser symptomet, men ikke det egentlige problem). Når der oprettes forbindelse til ældre servere, bør muligheden for kompatibilitetstilstand i basisindstillingerne for et VPN være i stand til at løse de fleste af de alm. kompatibilitetsproblemer.</string>
+ <string name="check_peer_fingerprint">Tjek peer-certifikatfingeraftryk</string>
+ <string name="fingerprint">(Angiv servercertifikat(ets/ernes) SHA256-fingeraftryk)</string>
+ <string name="proxy_info">HTTP Proxy: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Brug Altid-Til funktionen i Android til at aktivere VPN ved opstart.</string>
+ <string name="open_vpn_settings">Åbn VPN indstillinger</string>
+ <string name="trigger_pending_auth_dialog">Tryk hér for at åbne et vindue for angivelse af yderligere krævet godkendelse</string>
+ <string name="compatmode">Kompatibilitets-tilstand</string>
+ <string name="compat_mode_label">Kompatibilitets-tilstand</string>
+ <string name="loadossllegacy">Indlæs den gamle OpenSSL-udbyder</string>
+ <string name="bf_cbc_requires_legacy">Profiler bruger BF-CBC, der er baseret på den gamle OpenSSL-udbyder (ikke aktiveret).</string>
+ <string name="allow_translations_title">Tillad fællesskabsbidraget oversættelser</string>
+ <string name="allow_translations_summary">Tillader app-oversættelser bidraget af fællesskabet. Kræver en genstart af appen for effektuering.</string>
+ <string name="tls_profile">TLS-sikkerhedsprofil</string>
+ <string name="encrypt_profiles">Prøv at kryptere lagrede profiler (hvis understøttet af Android OS)</string>
</resources>
diff --git a/main/src/ui/res/values-de/arrays.xml b/main/src/ui/res/values-de/arrays.xml
index 8915d029..1a5858e8 100644
--- a/main/src/ui/res/values-de/arrays.xml
+++ b/main/src/ui/res/values-de/arrays.xml
@@ -17,9 +17,9 @@
<item>Externer Authentifizierungsanbieter</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Unspezifiziert</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction nicht spezifiziert</item>
<item>Verschlüsselung (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-de/strings.xml b/main/src/ui/res/values-de/strings.xml
index 4a2fb918..bb144efb 100644
--- a/main/src/ui/res/values-de/strings.xml
+++ b/main/src/ui/res/values-de/strings.xml
@@ -27,8 +27,8 @@
<string name="pkcs12pwquery">PKCS12-Passwort</string>
<string name="file_select">Auswählen&#8230;</string>
<string name="file_nothing_selected">Nichts ausgewählt</string>
- <string name="useTLSAuth">TLS-Authentifizierung verwenden</string>
- <string name="tls_direction">TLS-Richtung</string>
+ <string name="useTLSAuth">Control channel Authentifizierung/Verschlüsselung benutzen</string>
+ <string name="tls_direction">Authentifizierung/Verschlüsselung Verfahren</string>
<string name="ipv6_dialog_tile">Tragen Sie die IPv6-Adresse und Netzmaske im CIDR-Format ein (z.B. 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Tragen Sie die IPv4-Adresse und Netzmaske im CIDR-Format ein (z.B. 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4-Adresse</string>
@@ -50,7 +50,7 @@
<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 zu VPN&#8230;</string>
+ <string name="vpn_launch_title">Verbinde 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>
@@ -69,8 +69,8 @@
<string name="remote_tlscn_check_title">Hostnamen überprüfen</string>
<string name="enter_tlscn_dialog">Geben Sie hier die Methode an, mit welcher der DN des Serverzertifikates (z. B. C=DE, L=Paderborn, OU=Avian IP-Carrier, CN=openvpn.blinkt.de) überprüft wird.\n\nSie können den vollständigen DN, den RDN (openvpn.blinkt.de im Beispiel) oder ein RDN-Präfix angeben.\n\nDer RDN-Präfix \"Server\" erlaubt z.B. \"Server-1\" und \"Server-2\".\n\nWenn Sie das Eingabefeld leer lassen, wird der RDN gegen den Servernamen geprüft.\n\n Weitere Details finden Sie in der Manpage von OpenVPN 2.3.1+ unter —verify-x509-name</string>
<string name="enter_tlscn_title">Subject des Serverzertifikats</string>
- <string name="tls_key_auth">TLS-Schlüssel-Authentifizierung verwenden</string>
- <string name="tls_auth_file">Schlüssel-Datei</string>
+ <string name="tls_key_auth">Aktiviert zusätzliche Authentifizierung/Verschlüsselung für den OpenVPN control channel</string>
+ <string name="tls_auth_file">TLS-Auth/TLS-Crypt Datei</string>
<string name="pull_on_summary">IP-Adressen, Routen und andere Optionen vom Server anfordern.</string>
<string name="pull_off_summary">Keine Informationen werden vom Server bezogen. Alle Einstellungen müssen unten manuell getätigt werden.</string>
<string name="use_pull">Informationen abrufen</string>
@@ -204,8 +204,8 @@
<string name="using_proxy">Verwende Proxy %1$s %2$s</string>
<string name="use_system_proxy">System-Proxys verwenden</string>
<string name="use_system_proxy_summary">Systemweite Einstellungen für HTTP- und HTTPS-Proxys beim Verbinden verwenden.</string>
- <string name="onbootrestartsummary">Beim Systemstart das angegebene VPN verbinden. Auf Geräten mit Android 5.0 und höher bitte vor der Verwendung dieser Option die FAQ zum Bestätigungsdialog lesen.</string>
- <string name="onbootrestart">Beim Gerätestart verbinden</string>
+ <string name="keep_vpn_connected_summary">OpenVPN stellt beim Systemstart eine Verbindung zum angegebenen VPN her und versucht, die VPN-Verbindung aufrechtzuerhalten.</string>
+ <string name="keep_vpn_connected">VPN-Verbindung immer aktiv</string>
<string name="ignore">Ignorieren</string>
<string name="restart">Neu verbinden</string>
<string name="restart_vpn_after_change">Konfigurationsänderungen werden erst nach einem Neustart des VPNs aktiv. Jetzt neu verbinden?</string>
@@ -261,9 +261,10 @@
<string name="encryption_cipher">Verschlüsselungsalgorithmus</string>
<string name="packet_auth">Paket-Authentifizierung</string>
<string name="auth_dialog_title">Geben Sie den Authentifizierungsalgorithmus an</string>
- <string name="built_by">compiliert von %s</string>
+ <string name="built_by">gebaut von %1$s (FP: %2$s)</string>
<string name="debug_build">Testversion</string>
<string name="official_build">offizielle Version</string>
+ <string name="official_o2build">offizielle App nur mit OpenVPN2 Unterstützung</string>
<string name="make_selection_inline">In das Profil einbetten</string>
<string name="crashdump">Absturzinformationen</string>
<string name="add">Hinzufügen</string>
@@ -336,7 +337,7 @@
<string name="app_no_longer_exists">Die App \'%s\' ist nicht mehr installiert und wird daher von der Liste der erlaubten/nicht erlaubten VPN-Anwendungen entfernt</string>
<string name="vpn_disallow_radio">VPN wird für alle Apps mit Ausnahme der ausgewählten verwendet</string>
<string name="vpn_allow_radio">VPN wird nur für die ausgewählten Apps verwendet</string>
- <string name="vpn_allow_bypass">Allow apps to bypass the VPN</string>
+ <string name="vpn_allow_bypass">Erlaube Apps das VPN zu ignorieren</string>
<string name="query_delete_remote">Servereintrag entfernen?</string>
<string name="keep">Behalten</string>
<string name="delete">Entfernen</string>
@@ -359,7 +360,6 @@
<string name="ab_tethering_44">Verbindungsfreigabe (WiFi-Hotspot/Tethering) funktioniert, während ein VPN aktiv ist, nutzt aber NICHT die VPN-Verbindung.</string>
<string name="ab_kitkat_mss">Frühe KitKat-Version setzen einen falschen MSS-Wert für TCP-Verbindungen (#61948). Versuchen Sie, die mssfix-Option zu aktivieren, um dieses Problem zu umgehen.</string>
<string name="ab_proxy">Android wird ihre Proxy-Einstellungen für die WLAN-Verbindung beibehalten, wenn keine DNS-Servereinstellungen vorhanden sind. OpenVPN für Android gibt einen entsprechenden Warnhinweis in der Protokolldatei aus.<p>Wenn eine VPN-Verbindung einen DNS-Server vorgibt, kann kein Proxy genutzt werden. Es gibt keine API für die Nutzungs eines Proxy-Servers für eine VPN-Verbindung.</p></string>
- <string name="ab_lollipop_reinstall">Ihre VPN-App funktioniert möglicherweise nicht mehr, wenn diese erst de- und später neu installiert wird. Für Details siehe #80074</string>
<string name="ab_not_route_to_vpn">Die konfigurierte Client-IP-Adresse und die IP-Adressen in deren Netzwerkmaske sind nicht in das VPN geroutet. OpenVPN umgeht diesen Fehler, indem eine Route hinzugefügt wird, die zu der Client-IP-Adresse und deren Netzmaske passt.</string>
<string name="ab_persist_tun">Das Öffnen eines neuen tun-Devices, während ein weiteres bereits für persist-tun-Unterstützung geöffnet ist, führt zum Absturz des VPN-Dienstes, der nur durch einen Neustart behoben werden kann. OpenVPN für Android versucht daher, dieses erneute Öffnen zu vermeiden. Wenn ein erneutes Öffnen zwingend notwendig ist, wird zunächst das alte Device geschlossen, bevor ein neues geöffnet wird. Dies kann dazu führen, dass teilweise Pakete unverschlüsselt über die normal Internetverbindung gesendet werden. Auch mit diesem Workaround stürzt der VPN-Dienst möglicherweise ab, was einen Neustart des Gerätes erfordert.</string>
<string name="ab_secondary_users">VPN funktioniert überhaupt nicht für die Sekundärnutzer.</string>
@@ -367,7 +367,6 @@
<string name="ab_vpn_reachability_44">Nur Ziele, die ohne VPN erreichbar sind, sind auch mit VPN erreichbar. IPv6-VPNs funktionieren überhaupt nicht.</string>
<string name="ab_only_cidr_title">Nicht CIDR-konforme Routen</string>
<string name="ab_proxy_title">Proxy-Verhalten für VPNs</string>
- <string name="ab_lollipop_reinstall_title">Neuinstallation von VPN-Apps</string>
<string name="version_upto">%s und früher</string>
<string name="copy_of_profile">Kopie von %s</string>
<string name="ab_not_route_to_vpn_title">Route zur konfigurierten VPN-IP-Adresse</string>
@@ -419,7 +418,7 @@
<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 \"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="management_socket_closed">Verbindung zu OpenVPN Prozess verloren (%s)</string>
<string name="change_sorting">Sortierung ändern</string>
<string name="sort">Sortieren</string>
<string name="sorted_lru">Profile nach letzter Verwendung sortiert</string>
@@ -428,21 +427,22 @@
<string name="auth_failed_behaviour">Verhalten bei AUTH_FAILED</string>
<string name="graph">Kurven</string>
<string name="use_logarithmic_scale">Logarithmische Skala verwenden</string>
- <string name="notenoughdata">Nicht genügend Daten</string>
+ <string name="notenoughdata">noch keine Daten</string>
<string name="avghour">Durchschnitt pro Stunde</string>
<string name="avgmin">Durchschnitt pro Minute</string>
- <string name="last5minutes">Die letzten 5 Minuten</string>
+ <string name="last5minutes">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>
<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 mit OpenSSL Version 1.1 lehnt OpenSSL schwache Signaturen in Zertifikaten wie MD5 ab. Zusätzlich werden bei OpenSSL 3.0 auch Signaturen mit SHA1 abgelehnt.&lt;/p&gt;&lt;p&gt; Sie sollten die VPN-Zertifikate so bald wie möglich aktualisieren, da SHA1 in naher Zukunft auch auf anderen Plattformen nicht mehr funktionieren wird.&lt;/p&gt;&lt;p&gt;Wenn Sie wirklich alte und defekte Zertifikate verwenden wollen, wählen Sie für das TLS-Sicherheitsprofil unter Authentifizierung/Verschlüsselung das Profils „insecure”.&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">Verbindungsstatistiken</string>
+ <string name="channel_name_background">Verbindungsstatistik</string>
<string name="channel_description_background">Laufende Statistik 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>
@@ -469,12 +469,13 @@
<string name="channel_name_userreq">Benutzerinteraktion erforderlich</string>
<string name="channel_description_userreq">OpenVPN Verbindung erfordert eine Benutzereingabe, beispielsweise zwei-Faktor Authentifikations </string>
<string name="openurl_requested">Öffne die URL, um die VPN-Authentifizierung fortzusetzen</string>
- <string name="crtext_requested">Can</string>
+ <string name="crtext_requested">Beantworten Sie die Herausforderung, um die VPN-Authentifizierung fortzusetzen.</string>
<string name="state_auth_pending">Authentifizierung ausstehend</string>
<string name="external_authenticator">Externer Authentifikator</string>
<string name="configure">Konfigurieren</string>
<string name="extauth_not_configured">Externer Authentifikator nicht konfiguriert</string>
<string name="faq_killswitch_title">Nicht-VPN-Verbindungen blockieren (\"Killswitch\")</string>
+ <string name="faq_killswitch">Oft ist es erwünscht, Verbindungen ohne VPN zu unterbinden. Andere Anwendungen verwenden für diese Funktion häufig Marketingbegriffe wie „Killswitch” oder „Seamless Tunnel”. OpenVPN und diese App bieten mit dem Parameter „persist-tun” eine Funktion zur Implementierung dieser Funktionalität.&lt;p&gt;Das Problem bei all diesen Methoden, die von Apps angeboten werden, ist, dass sie nur die bestmögliche Lösung bieten können und keine Komplettlösung darstellen. Beim Hochfahren, beim Absturz der App und in anderen Fällen kann die App nicht sicherstellen, dass das Sperren der Nicht-VPN-Verbindung funktioniert. Dadurch wird dem Benutzer ein falsches Gefühl der Sicherheit vermittelt.&lt;p&gt;Die &lt;b&gt;einzige&lt;/b&gt; zuverlässige Methode, um sicherzustellen, dass Nicht-VPN-Verbindungen unterbuden werden, ist die Verwendung von Android 8.0 oder höher und die Verwendung der Einstellung \"Verbindungen ohne VPN blockieren\", die unter „Einstellungen” ➜ „Netzwerk” ➜ „Internet” ➜ „Erweitert/VPN” ➜ „OpenVPN für Android” ➜ „Always ON VPN aktivieren” und aktivieren Sie dort „Verbindungen ohne VPN sperren”</string>
<string name="summary_block_address_families">Weist Android an, IP Protokolle (IPv4/IPv6) zu blockieren, wenn das VPN, keine IPv4 bzw. IPv6 Adresse setzt.</string>
<string name="title_block_address_families">Blockiere IPv6 (bzw. IPv4) wenn nicht vom VPN genutzt</string>
<string name="install_keychain">Neues Zertifikat installieren</string>
@@ -484,14 +485,20 @@
<string name="import_from_as">Importiere Profil vom Server</string>
<string name="no_default_vpn_set">Standard-VPN nicht festgelegt. Bitte legen Sie das Standard-VPN fest, bevor Sie diese Option aktivieren.</string>
<string name="internal_web_view">Internes Webview</string>
+ <string name="faq_ncp">Fehlerhafte Konfiguration (z. B. nicht übereinstimmende Datenverschlüsselungen auf Client und Server)&lt;/li&gt; &lt;p&gt; Das &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN-Handbuch Abschnitt über Verschlüsselungsaushandlung&lt;/a&gt; erklärt die verschiedenen Szenarien der Verschlüsselungsaushandlung sehr gut und was in diesen Situationen zu tun ist.&lt;p&gt;TP-Link-Geräte verwenden eine mindestens 5 Jahre alte OpenVPN-Version 2.3.x (möglicherweise älter) auf ihren Geräten, selbst in den 2019/2020-Modellen.&lt;p&gt;Zu guter Letzt gibt es einen beliebten VPN-Anbieter, der einen fehlerhaften Server betreibt, der stets angibt, „BF-CBC” zu verwenden, weil sein Entwickler es für eine gute Idee hielt, einen proprietären Patch für die Verschlüsselungsaushandlung zu erstellen, der nicht mit dem OpenVPN-Standard kompatibel ist.&lt;p&gt;Zusammengefasst: alle vernünftigen Konfigurationen sollten diese Fehler nicht erhalten. Aber (abgesehen vom fehlerhaften Server des VPN-Anbieters) kann der Client überredet werden, sich trotzdem zu verbinden (wodurch das Symptom und nicht das eigentliche Problem behoben wird). Bei Verbindungen zu älteren Servern sollte die Option „Kompatibilitätsmodus” in den Grundeinstellungen eines VPN die meisten der üblichen Kompatibilitätsprobleme lösen können.</string>
<string name="check_peer_fingerprint">Fingerabdruck des Peer-Zertifikats prüfen</string>
<string name="fingerprint">(Geben Sie den SHA256-Fingeabdruck des Serverzertifikates an)</string>
+ <string name="proxy_info">HTTP-Proxy: %1$s %2$d</string>
<string name="use_alwayson_vpn">Bitte verwenden sie die \"Durchgehend aktives VPN\" Funktion von Android, um das VPN beim Booten zu aktivieren.</string>
<string name="open_vpn_settings">VPN Einstellungen öffnen</string>
+ <string name="trigger_pending_auth_dialog">Klicken Sie hier, um mit zusätzlich erforderlicher Authentifizierung fortzufahren</string>
<string name="compatmode">Kompatibilitätsmodus</string>
<string name="compat_mode_label">Kompatibilitätsmodus</string>
<string name="loadossllegacy">OpenSSL Legacy-Provider laden</string>
<string name="bf_cbc_requires_legacy">Profile verwendet BF-CBC, das den OpenSSL-Legacy-Provider benötigit (nicht aktiviert).</string>
<string name="allow_translations_title">Community-Übersetzungen zulassen</string>
+ <string name="allow_translations_summary">Erlaubt die Übersetzung der App mit Übersetzungen, die von der Community beigetragen wurden. Zur Aktivierung ist ein Neustart der App erforderlich.</string>
<string name="tls_profile">TLS-Sicherheitsprofil</string>
+ <string name="encrypt_profiles">Try to encrypt profiles on storage (if supported by Android OS)</string>
+ <string name="missing_notification_permission">Berechtigung für Benachrichtigungen fehlt. Diese wird verwendet, um den Status des VPN anzuzeigen und über erforderliche Benutzerinteraktionen wie eine Multi-Faktor-Autorisierung zu informieren.\n\nKlicken Sie auf diese Nachricht, um der App die Berechtigung zu erteilen</string>
</resources>
diff --git a/main/src/ui/res/values-el/arrays.xml b/main/src/ui/res/values-el/arrays.xml
new file mode 100644
index 00000000..39084e42
--- /dev/null
+++ b/main/src/ui/res/values-el/arrays.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>Πιστοποιητικά</item>
+ <item>Αρχείο PKCS12</item>
+ <item>Πιστοποιητικό Android</item>
+ <item>Όνομα χρήστη/κωδικός πρόσβασης</item>
+ <item>Στατικά κλειδιά</item>
+ <item>Χρήστης/Κωδικός + πιστοποιητικά</item>
+ <item>Χρήστης/Κωδικός + PKCS12 </item>
+ <item>Χρήστης/Κωδικός + Android</item>
+ <item>Εξωτερικός Παροχέας Πιστοποίησης</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>Κρυπτογράφηση (tls-crypt)</item>
+ <item>TLS Crypt V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Αποσύνδεση, Ξέχνα τον Κωδικό</item>
+ <item>Αποσύνδεση, θυμήσου τον Κωδικό</item>
+ <item>Αγνόησε, προσπάθησε ξανά</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>Modern defaults</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x peers</item>
+ <item>OpenVPN 2.3.x and older peers</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-el/plurals.xml b/main/src/ui/res/values-el/plurals.xml
new file mode 100644
index 00000000..f273707e
--- /dev/null
+++ b/main/src/ui/res/values-el/plurals.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Απομένει ενας μήνας</item>
+ <item quantity="other">Απομένουν %d μήνες</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Απομένει μία ημέρα</item>
+ <item quantity="other">Απομένει %d μέρες</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Απομένει μια ώρα</item>
+ <item quantity="other">Απομένουν %d ώρες</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Απομένει ενα λεπτό</item>
+ <item quantity="other">Απομένουν %d λεπτά</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-el/strings.xml b/main/src/ui/res/values-el/strings.xml
new file mode 100644
index 00000000..599abd76
--- /dev/null
+++ b/main/src/ui/res/values-el/strings.xml
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">OpenVPN για Android</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="client_no_certificate">Δεν υπάρχει πιστοποιητικό</string>
+ <string name="client_certificate_title">Πιστοποιητικό πελάτη</string>
+ <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="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="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="ipv6_address">Διεύθυνση IPv6</string>
+ <string name="custom_option_warning">Εισαγάγετε προσαρμοσμένες επιλογές OpenVPN. Χρησιμοποιήστε με προσοχή. Επίσης σημειώστε ότι πολλές από τις σχετικές με tunnel ρυθμίσεις δεν υποστηρίζονται από το σχεδιασμό του VPNSettings. Αν νομίζετε ότι λείπει μια σημαντική επιλογή, επικοινωνήστε με το συντάκτη</string>
+ <string name="auth_pwquery">Κωδικός πρόσβασης</string>
+ <string name="static_keys_info">Για την στατική ρύθμιση τα κλειδιά Auth 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="profilename">Όνομα προφίλ</string>
+ <string name="no_keystore_cert_selected">Πρέπει να επιλέξετε ένα πιστοποιητικό χρήστη</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">(αφήστε κενό για υποβολή query κατα βούληση)</string>
+ <string name="vpn_shortcut">Συντόμευση OpenVPN</string>
+ <string name="vpn_launch_title">Σύνδεση στο VPN&#8230;</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">Η διαδρομή απορρίφθηκε από το Android</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="remove_vpn">Αφαίρεση VPN</string>
+ <string name="check_remote_tlscert">Ελέγχει αν ο διακομιστής χρησιμοποιεί ένα πιστοποιητικό με επεκτάσεις διακομιστή TLS (server --remote-cert-TLS)</string>
+ <string name="check_remote_tlscert_title">Αναμένει πιστοποιητικό διακομιστή TLS</string>
+ <string name="remote_tlscn_check_summary">Ελέγχει τo Θέμα 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\nΌταν χρησιμοποιείτε το πρόθεμα RDN \"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="pull_on_summary">Αιτείται διευθύνσεις IP, routes και επιλογές συγχρονισμού από το διακομιστή.</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="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">Παράβλεψη 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="custom_routes_title_excluded">Εξαιρούμενα δίκτυα</string>
+ <string name="log_verbosity_level">Επίπεδο λεπτομερειών καταγραφής</string>
+ <string name="float_summary">Επιτρέπει πιστοποιημένα πακέτα από οποιαδήποτε IP</string>
+ <string name="float_title">Να επιτραπεί διακομιστής floating</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 ROM τα δικαιώματα του /dev/tun μπορεί να είναι λάθος, ή το άρθρωμα tun να λείπει. Για τις CM9 ROM δοκιμάστε την επιλογή για επιδιόρθωση κυριότητας στις γενικές ρυθμίσεις</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">Εγκατεστημένα routes VpnService: %1$s %2$s</string>
+ <string name="ip_not_cidr">Ελήφθησαν πληροφορίες διασύνδεσης %1$s και %2$s, υποθέτω πως η δεύτερη διεύθυνση είναι η διεύθυνση του απομακρυσμένου υπολογιστή. Γίνεται χρήση μάσκας /32 για την τοπική IP. Η λειτουργία που δόθηκε από το OpenVPN είναι \"%3$s\".</string>
+ <string name="route_not_cidr">Η IP δρομολόγηση %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. Αυτό μπορεί να έχει προκληθεί από αναβάθμιση του firmware ή από την επαναφορά ένος αντίγραφου ασφαλείας μιας εφαρμογής. Παρακαλούμε επεξεργαστείτε το 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 VPN API. Εκ τούτου, αυτή η εφαρμογή δεν μπορεί να παρέχει υποστήριξη tap</string>
+ <string name="tap_faq2">Πάλι? Αστειεύεσte? Όχι, η λειτουργία tap πραγματικά δεν υποστηρίζεται και η αποστολή περισσότερων ηλεκτρονικών μηνυμάτων ρωτώντας αν θα υποστηριχτεί, δεν θα βοηθήσει.</string>
+ <string name="tap_faq3">Τρίτη φορά; Στην πραγματικότητα, κάποιος θα μπορούσε να γράψει έναν εξομοιωτή tap βασισμένο σε tun που θα μπορούσε να προσθέσει πληροφορίες layer2 ή να στείλει και να αφαιρέσει πληροφορίες layer2 στη λήψη. Αλλά αυτός ο εξομοιωτής θα έπρεπε επίσης να εφαρμόσει ARP και πιθανότατα και κάποιον πελάτη DHCP. Δεν γνωρίσω κανένα που να κάνει δουλειά με αυτή την κατεύθυνση. επικοινωνήστε μαζί μου αν θέλετε να ξεκινήσετε να γράφετε κώδικα για κάτι τέτοιο.</string>
+ <string name="faq">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. Ανάλογα με την εφαρμογή που χρησιμοποιείτε για την αρχική σας οθόνη, θα χρειαστεί να προσθέσετε είτε συντόμευση είτε κάποιο widget.</string>
+ <string name="no_vpn_support_image">Η ROM σας δεν υποστηρίζει το VPNService API, λυπάμαι :(</string>
+ <string name="encryption">Κρυπτογράφηση</string>
+ <string name="cipher_dialog_title">Εισάγετε μέθοδο κρυπτογράφησης</string>
+ <string name="auth_dialog_message">Καταχωρήστε το digest αυθεντικοποίησης που χρησιμοποιείται για το OpenVPN. Αφήστε το κενό για να χρησιμοποιήσετε το προεπιλεγμένο digest.</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">Άρνηση ανοίγματος της συσκευής tun χωρίς πληροφορίες IP</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">Η διαμόρφωσή σας είχε μερικές επιλογές διαμόρφωσης που δεν αντιστοιχίζονται σε διαμορφώσεις 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 είναι εγγενώς ανασφαλή. Οποιαδήποτε εφαρμογή μπορεί να τα διαβάσει (για παράδειγμα, αυτό το πρόγραμμα δεν απαιτεί ειδικά δικαιώματα στην κάρτα sd). Τα δεδομένα αυτής της εφαργογής μπορούν να διαβαστούν μόνο από την ίδια την εφαρμογή. Χρησιμοποιώντας την επιλογή εισαγωγής για cacert/cert/key στο παράθυρο διαλόγου για αρχεία, τα δεδομένα αποθηκεύονται στο προφίλ του VPN. Τα προφίλ VPN είναι προσβάσιμα μόνο από αυτήν την εφαρμογή (Μην ξεχάσετε να διαγράψετε τα αντίγραφα στην κάρτα sd), Παρόλο που είναι προσπελάσιμα μόνο από την εφαρμογή αυτή, τα δεδομένα δεν είναι ακόμη κρυπτογραφημένα. Αν κάνετε root το τηλέφωνο ή κάνετε χρήση κάποιων άλλων exploit μπορεί να είναι δυνατή η ανάκτηση των δεδομένων. Οι αποθηκευμένοι κωδικοί πρόσβασης αποθηκεύονται και σε απλό κείμενο. Ιδιαίτερα τα αρχεία pkcs12 συνιστάται να τα εισάγετε στο keystore του 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+. Ίσως η υποστήριξη της Android ROM σας για πιστοποιητικά έχει κάποιο πρόβλημα</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=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Issue 18&lt;/a&gt; στον bug tracker.)&lt;/p&gt;&lt;p&gt;Παλιότερα επίσημα αρχεία ειδώλου της SONY για Xperia Arc S και Xperia Ray έχει αναφερθεί πως δεν περιλαμβάνουν καθόλου το VPNService στο αρχείο ειδώλου. (Δείτε επίσης στο &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Issue 29&lt;/a&gt; στον bug tracker.)&lt;/p&gt;&lt;p&gt;Σε προσαρμοσμένα αρχεία ειδώλου το πρόσθετο tun μπορει να λείπει ή τα δικαιώματα του /dev/tun να είναι λάθος. Μερικά αρχεία ειδώλου CM9 χρειάζονται να ενεργοποιήσετε την επιλογή \"Διόρθωση δικαιωμάτων ιδιοκτησίας\" στην ενότητα \"Hacks Συγκεκριμένης Συσκευής\".&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 στο σύστημα. Μερικές εικόνες 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="netstatus">Κατάσταση δικτύου: %s</string>
+ <string name="extracahint">Το πιστοποιητικό CA συνήθως επιστρέφεται από το keystore του Android. Καθορίστε ένα ξεχωριστό πιστοποιητικό εάν λαμβάνετε σφάλματα επαλήθευσης πιστοποιητικού.</string>
+ <string name="select_file">Επιλογή</string>
+ <string name="keychain_nocacert">Δεν επιστράφηκε κανένα πιστοποιητικό CA κατά την ανάγνωση από το Android keystore. Ο έλεγχος ταυτότητας μάλλον θα αποτύχει.</string>
+ <string name="show_log_summary">Εμφανίζει το παράθυρο καταγραφής κατά τη σύνδεση. Το παράθυρο καταγραφής μπορεί πάντα να προσπελαστεί από την περιοχή ειδοποιήσεων.</string>
+ <string name="show_log_window">Εμφάνιση παραθύρου καταγραφής</string>
+ <string name="mobile_info">%10$s%9$s εκτελείται σε %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">Σφάλμα υπογραφής με το κλειδί %1$s: %2$s του Android keystore</string>
+ <string name="error_extapp_sign">Σφάλμα υπογραφής με εξωτερική εφαρμογή πιστοποίησης (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">Η προειδοποίηση της σύνδεσης VPN που λέει πως η εφαρμογή μπορεί να υποκλέψει κίνηση δεδομένων, έχει επιβληθεί από το σύστημα για αποτροπή κατάχρησης του VPNService API.\nΗ ειδοποίηση σύνδεσης του VPN (το σύμβολο με το κλειδί) έχει επίσης επιβληθεί από το σύστημα Android για να σηματοδοτεί ενεργές συνδέσεις VPN. Σε κάποια αρχεία ειδώλου αυτή η ειδοποίηση αναπαράγει και ήχο.\nΤο Android πρόσθεσε αυτούς τους διαλόγους συστήματος για την δικιά σας ασφάλεια και σιγουρεύτηκε πως δεν θα μπορούν να παρακαμφθούν. (Σε μερικά αρχεία ειδώλου δυστυχώς ούτε καν ο ήχος ειδοποίησης)</string>
+ <string name="faq_system_dialogs_title">Προειδοποίηση σύνδεσης και ήχος ειδοποίησης</string>
+ <string name="translationby">Αγγλική μετάφραση από τον Arne Schwabe&lt;arne@rfc2549.org&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. Παρακαλώ σημειώστε επίσης πως το Android θα συνεχίσει να χρησιμοποιεί της ρυθμίσεις διακομιστή μεσολάβησης που έχουν οριστεί για τη σύνδεση δεδομένων/Wi-Fi αν δεν οριστούν διακομιστές DNS.</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/pkcs12 μπορείτε να το στείλετε με ηλεκτρονικό ταχυδρομείο στον εαυτό σας και να ανοίξετε το επισυναπτόμενο. Αν είναι πολλαπλά αρχεία, αποθηκεύστε τα στην κάρτα 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">Προσπαθήστε να φορτώσετε το module tun.ko του πυρήνα, πριν προσπαθήσετε να συνδεθείτε. Χρειάζεται συσκευές με root.</string>
+ <string name="setting_loadtun">Φόρτωση αρθρώματος tun</string>
+ <string name="importpkcs12fromconfig">Εισαγωγή του PKCS12 από το αρχείο ρυθμίσεων στην κλειδοθήκη του Android</string>
+ <string name="getproxy_error">Σφάλμα λήψης ρυθμίσεων του διαμεσολαβητή: %s</string>
+ <string name="using_proxy">Χρησιμοποιείται διακομιστής μεσολάβησης %1$s %2$s</string>
+ <string name="use_system_proxy">Χρήστη διαμεσολαβητή του συστήματος</string>
+ <string name="use_system_proxy_summary">Χρήση των καθολικών ρυθμίσεων για διαμεσολαβητές HTTP/HTTPS για σύνδεση.</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">Αν η μνήμη (RAM) του Android είναι σε επικίνδυνα χαμηλά επίπεδα, υπηρεσίες και εφαρμογές που δεν χρειάζονται τη συγκεκριμένη στιγμή αφαιρούνται από την ενεργή μνήμη. Αυτό τερματίζει τη σύνδεση 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; για να προσθέσετε ένα υπάρχον προφίλ (.ovpn ή .conf) από την κάρτα μνήμης σας.</string>
+ <string name="faq_hint">Βεβαιωθείτε επίσης να ελέγξετε το FAQ. Υπάρχει ένας οδηγός γρήγορης έναρξης.</string>
+ <string name="faq_routing_title">Ρυθμίσεις Δρομολόγησης/Διεπαφής</string>
+ <string name="faq_routing">Η δρομολόγηση και οι ρυθμίσεις του περιβάλλοντος χρήστη δεν γίνονται μέσω των παραδοσιακών εντολών ifconfig/route, αλλά με τη χρήση του VPNService API. αυτό έχει σαν αποτέλεσμα διαφορετικές ρυθμίσεις δρομολόγησης σε σχέση με άλλα λειτουργικά συστήματα. \nΗρύθμιση του VPN καναλιού αποτελείται από τη διεύθυνση IP και από τα δίκτυα τα οποία πρέπει να δρομολογηθούν μέσω αυτής της διασύνδεσης. Ειδικότερα, δεν απαιτείται ούτε και χρειάζεται η διεύθυνση του απέναντι peer ή διεύθυνση της προεπιλεγμένης πύλης. Δεν χρειάζονται ούτε ειδικές δρομολογήσεις για πρόσβαση στον διακομιστή VPN (π.χ. σαν αυτές που προστίθονται όταν χρησιμοποιείται μια προεπιλεγμένη πύλη ανακατεύθυνσης). Σαν αποτέλεσμα, η εφαρμογή θα αγνοήσει τέτοιες ρυθμίσεις όταν γίνεται εισαγωγή των ρυθμίσεων. Η εφαρμογή διασφαλίζει με το VPNService API ότι η σύνδεση με το διακομιστή δεν δρομολογείται μέσω του καναλιού VPN.\nTo VPNService API δεν επιτρέπει ορισμό δικτύων τα οποία δεν πρέπει να δρομολογούνται μέσω του VPNService API. Για να το ξεπεράσει αυτό, η εφαρμογή προσπαθεί να εντοπίσει δίκτυα που δεν πρέπει να δρομολογούνται μέσω του καναλιού (π.χ. 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">Μην ανατρέπετε σε καμία σύνδεση VPN όταν το OpenVPN επανασυνδέεται.</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>
+ <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; Δυστυχώς, χρησιμοποιώντας ένα keepalive μεγαλύτερο από 60 δευτερόλεπτα με το UDP μπορεί να προκαλέσει κάποιες πύλες NAT να ρίξουν τη σύνδεση λόγω λήξης του χρονικού ορίου. Χρησιμοποιώντας το TCP με μεγάλο keepalive δουλεύει, αλλά το tunneling TCP πάνω από TCP έχει πολύ κακή απόδοση σύνδεσης και προκαλεί υψηλή απώλεια πακέτων. (Βλ. &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">Η λειτουργία Tethering του Android (μέσω WiFi, USB ή Bluetooth) και το 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 και Tethering</string>
+ <string name="connection_retries">Επαναλήψεις σύνδεσης</string>
+ <string name="reconnection_settings">Ρυθμίσεις επανασύνδεσης</string>
+ <string name="connectretrymessage">Αριθμός σε δευτερόλεπτα για αναμονή ανάμεσα στις απόπειρες σύνδεσης.</string>
+ <string name="connectretrywait">Δευτερόλεπτα μεταξύ των συνδέσεων</string>
+ <string name="minidump_generated">Το OpenVPN κατέρρευσε απροσδόκητα. Παρακαλούμε σκεφτείται να χρησιμοποιήσετε την επιλογή Minidump στο κύριο μενού</string>
+ <string name="send_minidump">Αποστολή Minidump στον προγραμματιστή</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_assign_ip">Εκχώρηση διευθύνσεων IP</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_tcp_connect">Σύνδεση (TCP)</string>
+ <string name="state_auth_failed">Αποτυχία πιστοποίησης</string>
+ <string name="state_nonetwork">Αναμονή για χρησιμοποιήσιμο δίκτυο</string>
+ <string name="state_waitorbot">Αναμονή εκκίνησης Orbot</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 έχουν προβλήματα όταν το όνομα του πιστοποιητικού keystore περιέχει μη αλφαριθμητικούς χαρακτήρες. (όπως κενά, κάτω παύλες ή παύλες). Δοκιμάστε να εισάγετε ξανά το πιστοποιητικό χωρίς ειδικούς χαρακτήρες</string>
+ <string name="encryption_cipher">Κρυπτογράφηση cipher</string>
+ <string name="packet_auth">Πιστοποίηση πακέτων</string>
+ <string name="auth_dialog_title">Εισάγετε τη μέθοδο πιστοποίησης πακέτων</string>
+ <string name="debug_build">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="complete_dn">Πλήρης DN</string>
+ <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="help_translate">Μπορείτε να βοηθήσετε τη μετάφραση επισκέπτοντας http://crowdin.net/project/ics-openvpn/invite</string>
+ <string name="prompt">Το %1$s προσπαθεί να ελέγξει το %2$s</string>
+ <string name="remote_warning">Συνεχίζοντας, δίνετε στην εφαρμογή την άδεια να ελέγχει πλήρως το OpenVPN για 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">Παύση VPN όταν η οθόνη είναι απενεργοποιημένη και λιγότερο από 64 kB δεδομένα που μεταφέρονται σε 60 δευτερόλεπτα. Όταν είναι ενεργοποιημένη η επιλογή \"Permanent Tun\", η παύση του VPN θα αφήσει τη συσκευή σας χωρίς σύνδεση δικτύου. Χωρίς την επιλογή \"Συνεχής μεταφορά\" η συσκευή δεν θα έχει σύνδεση VPN / προστασία.</string>
+ <string name="screenoff_title">Παύση της σύνδεσης VPN μετά την απενεργοποίηση της οθόνης</string>
+ <string name="screenoff_pause">Παύση σύνδεσης σε κατάσταση απενεργοποίησης οθόνης: λιγότερο από %1$s σε %2$sδευτερόλεπτα</string>
+ <string name="screen_nopersistenttun">Προειδοποίηση: Το \"Persistent Tun\" δεν είναι ενεργοποιημένο για αυτό το VPN. Η κυκλοφορία θα χρησιμοποιήσει την κανονική σύνδεση στο Internet όταν η οθόνη είναι απενεργοποιημένη.</string>
+ <string name="save_password">Αποθήκευση κωδικού πρόσβασης</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="vpnbehaviour">Συμπεριφορά VPN</string>
+ <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;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Έκδοση 185&lt;a&gt; για περισσότερες λεπτομέρειες "</string>
+ <string name="faq_vpndialog43_title">Επιβεβαίωση Διασύνδεσης Vpn</string>
+ <string name="donatePlayStore">Εναλλακτικά, μπορείτε να κάνετε δωρεά μέσω του Play Store:</string>
+ <string name="thanks_for_donation">Ευχαριστούμε για την δωρεά %s!</string>
+ <string name="logCleared">Έγινε εκκαθάριση της καταγραφής.</string>
+ <string name="show_password">Εμφάνιση κωδικού πρόσβασης</string>
+ <string name="keyChainAccessError">Σφάλμα πρόσβασης KeyChain: %s</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="logview_options">Προβολή επιλογών</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="faq_system_dialog_xposed">Αν έχετε μια συσκευή Android με root μπορείτε να εγκαταστήσετε το &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="files_missing_hint">Μερικά αρχεία δεν είναι δυνατό να βρεθούν. Παρακαλούμε επιλέξτε τα αρχεία για την εισαγωγή του προφίλ:</string>
+ <string name="openvpn_is_no_free_vpn">Για να χρησιμοποιήσετε αυτήν την εφαρμογή χρειάζεστε μια πύλη VPN/Εικονικό Προσωπικό Δίκτυο που υποστηρίζει OpenVPN (συχνά παρέχεται από τον εργοδότη σας). Ανατρέξτε στο 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">Ανακοίνωση στις συνδέσεις TCP που είναι ενεργές μέσω του καναλιού ότι θα πρέπει να περιορίσουν το μέγεθος των πακέτων που στέλνουν, ώστε όταν το OpenVPN τα ενσωματώσει, το μέγεθος πακέτου που θα προκύψει όταν το στείλει το OpenVPN στον peer του να μην ξεπερνά αυτό τον αριθμό bytes. (η προεπιλογή είναι 1450)</string>
+ <string name="mssfix_checkbox">Αντικατάσταση τιμής MSS του ωφέλιμου φορτίου TCP</string>
+ <string name="mssfix_dialogtitle">Ορίστε το MSS του φόρτου TCP</string>
+ <string name="client_behaviour">Συμπεριφορά πελάτη</string>
+ <string name="clear_external_apps">Εκκαθάριση επιτρεπόμενων εξωτερικών εφαρμογών</string>
+ <string name="loading">Φόρτωση&#8230;</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="vpn_allow_bypass">Να επιτρέπονται εφαρμογές να παρακάμπτουν το 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">Υπάρχουν πολλά προγράμματα-πελάτες OpenVPN για Android. Τα πιο συνηθισμένα είναι το OpenVPN για Android (αυτό το πρόγραμμα-πελάτη), το OpenVPN Connect και το OpenVPN Settings.&lt;p&gt;Τα προγράμματα-πελάτες μπορούν να ομαδοποιηθούν σε δύο ομάδες: το OpenVPN για Android και το OpenVPN Connect χρησιμοποιούν το επίσημο API VPNService (Android 4.0+) και δεν χρειάζονται root, και το OpenVPN Settings που χρειάζεται πρόσβαση root.&lt;p&gt;Το OpenVPN για Android είναι ένα πρόγραμμα-πελάτης ανοιχτού κώδικα και αναπτύχθηκε από τον Arne Schwabe. Στοχεύει σε πιο προχωρημένους χρήστες και προσφέρει πολλές ρυθμίσεις και τη δυνατότητα εισαγωγής προφίλ από αρχεία και διαμόρφωσης / αλλαγής προφίλ μέσα από εφαρμογή. Βασίζεται στην έκδοση κοινότητας του OpenVPN. Βασίζεται στον πηγαίο κώδικα του OpenVPN 2.x. Αυτό το πρόγραμμα-πελάτης μπορεί να θεωρηθεί ως το ημιεπίσημο πρόγραμμα-πελάτης της κοινότητας. &lt;p&gt;Το OpenVPN Connect δεν είναι πρόγραμμα-πελάτης ανοιχτού κώδικα που αναπτύσσεται από την OpenVPN Technologies, Inc. Το πρόγραμμα-πελάτης προορίζεται σαν πρόγραμμα-πελάτης γενικής χρήσης, απευθύνεται στο μέσο χρήστη και επιτρέπει την εισαγωγή προφίλ OpenVPN. Αυτό το πρόγραμμα-πελάτης βασίζεται στη C ++ OpenVPN υλοποίηση του πρωτοκόλλου OpenVPN (Αυτό ήταν απαραίτητο για να επιτραπεί στην OpenVPN Technologies, Inc να δημοσιεύσει μια εφαρμογή OpenVPN για iOS ). Αυτό το πρόγραμμα-πελάτης είναι το επίσημο πρόγραμμα-πελάτης της OpenVPN Technologies&lt;p&gt; Το OpenVPN Settings είναι ο παλαιότερος από τα προγράμματα-πελάτες και επίσης ένα UI για το OpenVPN ανοιχτού κώδικα. Σε αντίθεση με το OpenVPN για Android, απαιτείται πρόσβαση root και δεν χρησιμοποιεί το API του VPNService. Δεν εξαρτάται από το Android 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 για το Android θα χρησιμοποιήσει ένα /32 για δομολογήσεις που δεν είναι CIDR και θα εμφανίσει μια προειδοποίηση.</string>
+ <string name="ab_tethering_44">Το tethering λειτουργεί ενώ το VPN είναι ενεργό. Η tethered σύνδεση ΔΕΝ θα χρησιμοποιήσει το VPN.</string>
+ <string name="ab_kitkat_mss">Οι πρώιμες εκδόσεις KitKat είχαν ορισμένη λάθος την τιμή MSS στις συνδέσεις TCP (# 61948). Προσπαθήστε να ενεργοποιήσετε την επιλογή mssfix για να επιλύσετε αυτό το σφάλμα.</string>
+ <string name="ab_proxy">Το Android θα συνεχίσει να χρησιμοποιεί τις ρυθμίσεις διακομιστή μεσολάβησης που έχουν οριστεί για τη σύνδεση δεδομένων/ Wi-Fi όταν δεν έχουν οριστεί διακομιστές DNS. Το OpenVPN για το Android, θα σας προειδοποιήσει σχετικά με αυτό στο αρχείο καταγραφής.<p>Όταν ένα VPN ορίζει ένα διακομιστή DNS, το Android δεν χρησιμοποιεί διακομιστή μεσολάβησης. Δεν υπάρχει API που να ορίζει διακομιστή μεσολάβησης σε μία σύνδεση VPN.</p></string>
+ <string name="ab_not_route_to_vpn">Η ρυθμισμένη IP του πελάτη και οι διευθύνσεις IP στη μάσκα δικτύου του δεν δρομολογούνται μέσω του VPN. To OpenVPN ξεπερνά αυτό το bug προσθέτοντας αποκλειστικά μια δρομολόγηση που αντιστοιχεί στην IP και στη μάσκα δικτύου του πελάτη</string>
+ <string name="ab_persist_tun">Το άνοιγμα μιας συσκευής tun ενώ μια άλλη συσκευή tun είναι ενεργή και χρησιμοποιείται για υποστήριξη persist-tun, κρασάρει τα VPNServices στη συσκευή. Χρειάζεται επανεκκίνηση για να μπορέσει να δουλέψει ξανά το VPN. Το OpenVPN για Android προσπαθεί να αποφύγει το εκ νέου άνοιγμα της συσκευής tun και αν χρειάζεται πραγματικά, πρώτα κλείνει την τρέχουσα συσκευή TUN πριν ανοίξει μια νέα, για αποφυγή κρασαρίσματος. Αυτό μπορεί να έχει σαν αποτέλεσμα ένα μικρό χρονικό διάστημα που τα πακέτα θα στέλνονται χωρίς τη χρήση της σύνδεσης VPN. Ακόμη και έτσι, όμως, τα VPNServices μερικές φορές κρασάρουν και χρειάζεται επανεκκίνηση της συσκευής σας.</string>
+ <string name="ab_secondary_users">Το VPN δεν λειτουργεί καθόλου για τους δευτερεύοντες χρήστες.</string>
+ <string name="ab_kitkat_reconnect">"Πολλοί χρήστες αναφέρουν ότι η σύνδεση κινητής τηλεφωνίας/σύνδεση δεδομένων κινητής τηλεφωνίας διακόπτεται συχνά κατά τη χρήση της εφαρμογής VPN. Η συμπεριφορά φαίνεται να επηρεάζει μόνο ορισμένους συνδυασμούς παροχέα / συσκευής κινητής τηλεφωνίας και μέχρι στιγμής δεν έχει μπορέσει να εντοπιστεί καμία αιτία / λύση για το bug."</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="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">Λανθασμένη τιμή MSS για τη σύνδεση VPN</string>
+ <string name="ab_secondary_users_title">Δευτερεύοντες χρήστες tablet</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 για Android (0.6.29 / Μάρτιος 2015) χρησιμοποιούν μια πιο ασφαλή προεπιλογή για τις επιτρεπόμενες σουίτες κρυπτογράφησης (tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). Δυστυχώς, η παράλειψη των λιγότερο ασφαλών cipher suites και η εξαγωγή cipher suites, ειδικά η παράλειψη των cipher suites που δεν υποστηρίζουν το 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 (Η εφαρμογή μάλλον κράσαρε ή έκλεισε λόγω έλλειψης μνήμης)</string>
+ <string name="import_config_error">Η εισαγωγή των ρυθμίσεων απέφερε ένα σφάλμα, δεν μπορεί αποθηκευτεί</string>
+ <string name="Search">Αναζήτηση</string>
+ <string name="lastdumpdate">(Το τελευταίο dump είναι %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 για Android μπορεί να προσπαθήσει να ανακαλύψει αυτόματα τα αρχεία που λείπουν στην κάρτα sd. Πατήστε αυτό το μήνυμα για να ξεκινήσει το αίτημα δικαιωμάτων.</string>
+ <string name="protocol">Πρωτόκολλο</string>
+ <string name="enabled_connection_entry">Ενεργοποιημένο</string>
+ <string name="permission_revoked">Η άδεια VPN ανακλήθηκε από το λειτουργικό σύστημα (π.χ. ξεκίνησε ένα άλλο πρόγραμμα VPN), διακόπτοντας το VPN</string>
+ <string name="pushpeerinfo">Προώθηση πληροφοριών peer</string>
+ <string name="pushpeerinfosummary">Στείλτε επιπλέον πληροφορίες στο διακομιστή, π.χ. έκδοση SSL και έκδοση Android</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="crl_title">Λίστα Ανάκλησης Πιστοποιητικών (προαιρετική)</string>
+ <string name="reread_log">Επαναλάβετε (%d) στοιχεία καταγραφής από το αρχείο καταγραφής cache</string>
+ <string name="samsung_broken">Παρόλο που τα τηλέφωνα Samsung είναι ανάμεσα στα πιο καλοπουλημένα τηλέφωνα Android, το υλικολογισμικό της Samsung συγκαταλέγεται ανάμεσα στα πιο buggy των υλικολογισμικών Android. Αυτά τα bugs δεν περιορίζονται στη λειτουργία του VPN σε αυτές τις συσκευές, αλλά πολλά από αυτά μπορούν να ξεπεραστούν. Παρακάτω περιγράφονται μερικά από αυτά τα bugs.\n\nΤο DNS δεν δουλεύει εκτός αν ο διακομιστής DNS είναι εντός της εμβέλειας του VPN.\n\nΣε πολλές συσκευές Samsung 5.x το χαρακτηριστικό για εφαρμογές που επιτρέπονται/απαγορεύονται δεν λειτουργεί..\nΣε Samsung 6.x το VPN αναφέρεται ότι δεν δουλεύει, εκτός και αν η εφαρμογή VPN εξαιρεθεί από τα χαρακτηριστικά εξοικονόμησης ενέργειας.</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 θα αυξήσει αργά τον χρόνο αναμονής του μετά από μια ανεπιτυχή προσπάθεια σύνδεσης μέχρι την συγκεκριμένη τιμή. Προεπιλογή σε 300s.</string>
+ <string name="connectretrymaxtitle">Μέγιστος χρόνος μεταξύ προσπαθειών σύνδεσης</string>
+ <string name="state_waitconnectretry">Περιμένοντας %s Δευτερόλεπτα μεταξύ προσπαθειών σύνδεσης</string>
+ <string name="nought_alwayson_warning"><![CDATA[Εάν δεν έχετε λάβει παράθυρο διαλόγου επιβεβαίωσης 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">Το Config χρησιμοποιεί την επιλογή 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 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>
+ <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) hashes στην υπογραφή πιστοποιητικού (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">Η χρήση των αρχείων PKCS12 απευθείας με την εφαρμογή OpenVPN 3 C ++ δεν υποστηρίζεται. Παρακαλώ εισαγάγετε τα αρχεία pkcs12 στην αποθήκη κλειδιών Android ή μεταβείτε στο OpenVPN 2.x κάτω από τις γενικές ρυθμίσεις.</string>
+ <string name="proxy">Διαμεσολαβητής</string>
+ <string name="Use_no_proxy">Καθόλου</string>
+ <string name="tor_orbot">Tor (Orbot)</string>
+ <string name="openvpn3_socksproxy">Η εφαρμογή OpenVPN 3 C ++ δεν υποστηρίζει τη σύνδεση μέσω του διακομιστή μεσολάβησης Socks</string>
+ <string name="no_orbotfound">Η εφαρμογή Orbot δεν μπορεί να βρεθεί. Παρακαλώ εγκαταστήστε το Orbot ή χρησιμοποιήστε χειροκίνητη ενσωμάτωση Socks v5.</string>
+ <string name="faq_remote_api_title">Απομακρυσμένο API</string>
+ <string name="faq_remote_api">Το OpenVPN για Android υποστηρίζει δύο απομακρυσμένα API, ένα εξελιγμένο API που χρησιμοποιεί AIDL (remoteEXample στο git repository) και ένα απλό που χρησιμοποιεί Intents. &lt;p&gt;Παραδείγματα χρήσης κέλυφους adb και τα intents. Αντικαταστήστε το όνομα προφίλ με το όνομα του προφίλ σας&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn/.api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN -e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn/.api.ConnectVPN</string>
+ <string name="enableproxyauth">Ενεργοποίηση της Πιστοποίηση του διακομιστή μεσολάβησης</string>
+ <string name="error_orbot_and_proxy_options">Δεν είναι δυνατή η χρήση πρόσθετης εντολής http-proxy-option και της ενσωμάτωσης Orbot ταυτόχρονα</string>
+ <string name="info_from_server">Πληροφορίες από το διακομιστή: \'%s\'</string>
+ <string name="channel_name_userreq">Απαιτείται αλληλεπίδραση από το χρήστη</string>
+ <string name="channel_description_userreq">Η σύνδεση OpenVPN απαιτεί εισαγωγή στοιχείων από το χρήστη, π.χ. πιστοποίηση two factor
+
+ </string>
+ <string name="openurl_requested">Ανοίξτε τη διεύθυνση URL για να συνεχίσετε την πιστοποίηση VPN</string>
+ <string name="state_auth_pending">Εκκρεμεί πιστοποίηση</string>
+ <string name="external_authenticator">Εξωτερικός Πιστοποιητής</string>
+ <string name="configure">Διαμόρφωση</string>
+ <string name="extauth_not_configured">Ο Εξωτερικός Πιστοποιητής δεν έχει ρυθμιστεί</string>
+</resources>
diff --git a/main/src/ui/res/values-es/arrays.xml b/main/src/ui/res/values-es/arrays.xml
index 4460d680..d9ff6b9b 100644
--- a/main/src/ui/res/values-es/arrays.xml
+++ b/main/src/ui/res/values-es/arrays.xml
@@ -17,15 +17,27 @@
<item>Proveedor externo de autenticación</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>No especificado</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Cifrado (--tls-crypt)</item>
- <item>TLS Crypt V2</item>
+ <item>TLS Cripta V2</item>
</string-array>
<string-array name="auth_retry_type">
<item>Desconectar, olvidar contraseña</item>
<item>Desconectar, guardar la contraseña</item>
<item>Ignorar, volver a intentar</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Moderna detalles</item>
+ <item>Versión OpenVPN 2.5. X</item>
+ <item>Versión OpenVPN 2.4. X</item>
+ <item>OpenVPN 2.3. X y antiguas versiones </item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>insecure (not recommend, allows insecure crypto)</item>
+ <item>Legal (estándar)</item>
+ <item>Preferiré (recomienden bus límites compatible)</item>
+ <item>Suite B (onda NIST aprobé eclíptico curves)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-es/plurals.xml b/main/src/ui/res/values-es/plurals.xml
index 773d5422..c151ade7 100644
--- a/main/src/ui/res/values-es/plurals.xml
+++ b/main/src/ui/res/values-es/plurals.xml
@@ -13,7 +13,7 @@
<item quantity="other">%d horas restantes</item>
</plurals>
<plurals name="minutes_left">
- <item quantity="one">%d minuto restante</item>
- <item quantity="other">%d minutos restantes</item>
+ <item quantity="one">%d Minuto restante</item>
+ <item quantity="other">%d Minutos restantes</item>
</plurals>
</resources>
diff --git a/main/src/ui/res/values-es/strings.xml b/main/src/ui/res/values-es/strings.xml
index ce56f746..803d1b62 100644
--- a/main/src/ui/res/values-es/strings.xml
+++ b/main/src/ui/res/values-es/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">Contraseña PKCS12</string>
<string name="file_select">Seleccionar&#8230;</string>
<string name="file_nothing_selected">Debe seleccionar un archivo</string>
- <string name="useTLSAuth">Utilizar la autenticación TLS</string>
- <string name="tls_direction">Dirección TLS</string>
<string name="ipv6_dialog_tile">Introduzca la dirección/máscara de red IPv6 en formato CIDR (por ejemplo, 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Introduzca la dirección/máscara de red IPv4 en formato CIDR (por ejemplo, 1.2.3.4/24)</string>
<string name="ipv4_address">Dirección IPv4</string>
<string name="ipv6_address">Dirección IPv6</string>
<string name="custom_option_warning">Introduzca las opciones personalizadas de OpenVPN. Úselas con mucho cuidado. Además, tenga en cuenta que muchas de las configuraciones de OpenVPN relacionadas con tun no pueden ser soportadas por el diseño de VPNSettings. Si cree que falta una función importante, contacte al autor</string>
+ <string name="auth_username">Nombre de usuario (Dejar vació para no identificarse)</string>
<string name="auth_pwquery">Contraseña</string>
<string name="static_keys_info">Para la configuración estática las claves de autenticación TLS se utilizaran como claves estáticas</string>
<string name="configure_the_vpn">Configurar la VPN</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Por favor, introduzca un nombre de perfil único</string>
<string name="profilename">Nombre del Perfil</string>
<string name="no_keystore_cert_selected">Debe seleccionar un certificado de usuario</string>
+ <string name="no_ca_cert_selected">Debe de seleccionar un certificado CA (Certificate Authority) o bien activar la verificación de huellas digitales (Peer Fingerprint)</string>
<string name="no_error_found">No se encontraron errores</string>
<string name="config_error_found">Error en la configuración</string>
<string name="ipv4_format_error">Error al analizar la dirección IPv4</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Comprobación del certificado de nombre de host</string>
<string name="enter_tlscn_dialog">Especifica el chequeo usado para verificar el certificado remoto DN (ej. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nEspecifica el DN completo o el RDN (openvpn.blinkt.de en el ejemplo) o un prefijo RDN para la verificación.\n\nCuando se usa un prefijo RDN como \"Server\" este coincide también con \"Server-1\" y \"Server-2\"\n\nDejando el campo de texto vacío verificara el RDN contra el nombre host del servidor.\n\nPara más detalles ve la página de manual (manpage) de OpenVPN 2.3.1+ en --verify-x509-name</string>
<string name="enter_tlscn_title">Sujeto del Certificado Remoto</string>
- <string name="tls_key_auth">habilita la autenticación de clave TLS</string>
- <string name="tls_auth_file">Archivo de autenticación TLS</string>
<string name="pull_on_summary">Obtener Direcciones IP, rutas y opciones de sincronizacion del servidor.</string>
<string name="pull_off_summary">No se pedira informacion del servidor. Necesita especifiar la configuracion abajo.</string>
<string name="use_pull">Obtener Configuracion</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Su imagen no es compatible con la API de VPNService, lo siento :(</string>
<string name="encryption">Cifrado</string>
<string name="cipher_dialog_title">Especifique el método de cifrado</string>
+ <string name="chipher_dialog_message">Introduce los datos de cifrado implementados por el algoritmo criptográfico que usa OpenVPN separados de esta manera: (DATOS-DE-CIFRADO). Dejar vació para usar de manera predeterminada el valor: AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
<string name="auth_dialog_message">Introduce la autenticacion digest usada por OpenVPN. Deja en blanco para usar el digest predeterminado.</string>
<string name="settings_auth">Autenticación/Cifrado</string>
<string name="file_explorer_tab">Administrador de archivos</string>
@@ -202,8 +201,6 @@ hacia/de Móvil)</string>
<string name="using_proxy">Using proxy %1$s %2$s</string>
<string name="use_system_proxy">Usar el proxy del sistema</string>
<string name="use_system_proxy_summary">Utilice la configuración del sistema para los proxies HTTP/HTTPS al conectar.</string>
- <string name="onbootrestartsummary">OpenVPN se conectará la VPN se especifica si está activa en el arranque del sistema. Por favor, lea las preguntas frecuentes de aviso de conexión antes de utilizar esta opción en Android &lt; 5.0.</string>
- <string name="onbootrestart">Volver a conectar al reiniciar</string>
<string name="ignore">Ignorar</string>
<string name="restart">Reiniciar</string>
<string name="restart_vpn_after_change">Los cambios de configuración se aplican después de reiniciar la VPN. ¿(Re)iniciar la VPN ahora?</string>
@@ -259,7 +256,6 @@ hacia/de Móvil)</string>
<string name="encryption_cipher">Algoritmo de encriptación</string>
<string name="packet_auth">Autenticación de paquetes</string>
<string name="auth_dialog_title">Introduzca método de autenticación de paquetes</string>
- <string name="built_by">compilado por %s</string>
<string name="debug_build">versión de depuración</string>
<string name="official_build">versión oficial</string>
<string name="make_selection_inline">Copiar en perfil</string>
@@ -357,7 +353,6 @@ hacia/de Móvil)</string>
<string name="ab_tethering_44">Tethering funciona mientras que el VPN está activa. La conexión atada no utilizará el VPN.</string>
<string name="ab_kitkat_mss">Primera versión KitKat establece el valor incorrecto MSS sobre conexiones TCP (# 61948). OpenVPN para automáticamente permitirá mssfix opción para solucionar este error.</string>
<string name="ab_proxy">Android seguirá utilizando la configuración del proxy especificados para la conexión / Wi-Fi móvil cuando no están definidos los servidores DNS. OpenVPN para Android le advertirá sobre esto en el registro.<p>Cuando una VPN establece un servidor DNS Android no lo hará un proxy. No hay ninguna API para configurar un proxy para una conexión VPN.</p></string>
- <string name="ab_lollipop_reinstall">Aplicaciones VPN pueden dejar de funcionar cuando desinstalado y reinstalado de nuevo. Para más detalles ver # 80074</string>
<string name="ab_not_route_to_vpn">La IP del cliente configurado y las IPs en su máscara de red no se enrutan a la VPN. OpenVPN soluciona este error al agregar explícitamente una ruta que corrosponds a la IP del cliente y su máscara de red</string>
<string name="ab_persist_tun">La apertura de un dispositivo tun mientras que otro dispositivo tun está activo, que se utiliza para el apoyo tun-persistir, bloquea los VPNServices en el dispositivo. Es necesario reiniciar para que el trabajo VPN de nuevo. OpenVPN para Android intenta evitar reabrir el dispositivo tun y si realmente se necesita primero cierra el TUN actual antes de abrir el nuevo dispositivo TUN para evitar estrellarse. Esto puede conducir a una corta ventana donde los paquetes se envían a través de la conexión no VPN. Incluso con esta solución los VPNServices a veces se bloquea y requiere un reinicio del dispositivo.</string>
<string name="ab_secondary_users">VPN no funciona en absoluto para los usuarios secundarios.</string>
@@ -365,7 +360,6 @@ hacia/de Móvil)</string>
<string name="ab_vpn_reachability_44">Sólo destino puede llegar a través de la VPN que se puede llegar sin VPN. IPv6 VPNs no funciona en absoluto.</string>
<string name="ab_only_cidr_title">Rutas no CIDR</string>
<string name="ab_proxy_title">Comportamiento Proxy para VPN</string>
- <string name="ab_lollipop_reinstall_title">Reinstalación de aplicaciones VPN</string>
<string name="version_upto">%s y anteriores</string>
<string name="copy_of_profile">copia de %s</string>
<string name="ab_not_route_to_vpn_title">Ruta a la dirección IP configurada</string>
@@ -436,6 +430,11 @@ hacia/de Móvil)</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;A partir de OpenSSL versión 1.1, OpenSSL rechaza firmas de certificados CA no seguros como
+ MD5. Adicionalmente, con OpenSSL 3.0 también se rechazan las firmas con SHA1.&lt;/p&gt;&lt;p&gt;
+ Usted debería actualizar los certificados VPN tan pronto como sea posible ya que también SHA1 dejara de funcionar en otras plataformas en un futuro próximo.&lt;/p&gt;
+ &lt;p&gt;Si realmente desea utilizar certificados antiguos y vulnerables, seleccione \"inseguro\" en el perfil de seguridad TLS > Autenticación/Cifrado del perfil&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>
@@ -469,8 +468,34 @@ hacia/de Móvil)</string>
de dos factores
</string>
<string name="openurl_requested">Abrir URL para continuar con la autenticación de VPN</string>
+ <string name="crtext_requested">Complete la verificación para continuar con la autenticación VPN</string>
<string name="state_auth_pending">Autenticación pendiente</string>
<string name="external_authenticator">Autenticador externo</string>
<string name="configure">Configurar</string>
<string name="extauth_not_configured">Autenticador externo no configurado</string>
+ <string name="faq_killswitch_title">Bloquear la conexión que no es VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">A menudo se desea bloquear las conexiones sin VPN. Otras apps suelen utilizar términos de marketing como \"Killswitch\" o \"Seamless tunnel\" para esta función. OpenVPN y esta app ofrecen \"persist-tun\", una característica para implementar esta funcionalidad.&lt;p&gt;El problema con todos estos métodos ofrecidos por las apps es que sólo pueden proporcionar un bloqueo parcial y no son soluciones completas. En el arranque, cuando la app no responde y otros casos, la aplicación no puede asegurar que este bloqueo de la conexión no VPN funcione. Por lo tanto, le da al usuario una falsa sensación de seguridad.&lt;p&gt;La &lt;b&gt;única&lt;/b&gt; forma fiable de asegurar que las conexiones no VPN se bloquean es utilizar Android 8.0 o posterior y utilizar el ajuste \"bloquear conexiones sin VPN\" que se puede encontrar en Ajustes &gt; Red &amp; Internet &gt; Avanzado/VPN &gt; OpenVPN para Android &gt; Habilitar \"VPN siempre activa\" y \"bloquear conexiones sin VPN\"</string>
+ <string name="summary_block_address_families">Esta opción le indica a Android que bloquee los protocolos (IPv4/IPv6) si la VPN no configura ninguna dirección IPv4 o IPv6.</string>
+ <string name="title_block_address_families">Bloquear IPv6 o IPv4 si no es usado por la VPN</string>
+ <string name="install_keychain">Instalar nuevo certificado</string>
+ <string name="as_servername">Como el nombre del servidor</string>
+ <string name="server_url">Link del Servidor</string>
+ <string name="request_autologin">Solicitar el perfil de usuario para el inicio de sesión automático</string>
+ <string name="import_from_as">Importar perfil de usuario desde un servidor remoto</string>
+ <string name="no_default_vpn_set">La VPN predeterminada no esta configurada. Por favor establece OpenVPN por defecto para activar esta opción.</string>
+ <string name="internal_web_view">WebView interno</string>
+ <string name="faq_ncp">Hay algunas variaciones de este mensaje dependiendo de la situación exacta. Todas tienen en común que el servidor y el cliente no han podido ponerse de acuerdo sobre un cifrado común. Las razones principales son: &lt;ul&gt;&lt;li&gt; Todavía estás confiando en el hecho de que OpenVPN 2.4 y anteriores permitían BF-CBC en la configuración por defecto (si no se establecía --cipher). OpenVPN 2.5 ya no lo permite por defecto ya que es un &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;cifrado roto/desactualizado&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;El servidor ejecuta OpenVPN 2.3 (o incluso más antiguo) con --enable-small (al menos 4-5 años de antigüedad de OpenVPN)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;Configuración inadecuada (por ejemplo, desajuste de cifrado de datos en el cliente y el servidor)&lt;/li&gt; &lt;p&gt; La sección del manual de &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN sobre negociación de cifrado&lt;a&gt; explica muy bien los diferentes escenarios de negociación de cifrado y qué hacer en estas situaciones.&lt;p&gt;Los dispositivos de TP-Link utilizan una versión de OpenVPN 2.3. x (posiblemente más antigua) en sus dispositivos, incluso en los modelos 2019/2020.&lt;p&gt;Por último, pero no menos importante, hay un popular proveedor de VPN que mantiene un servidor mal configurado que siempre menciona que está usando \'BF-CBC\' porque su desarrollador pensó que sería una buena idea crear un parche de negociación de cifrado propietario que es incompatible con el estándar OpenVPN.&lt;p&gt;En resumen: todas las configuraciones sanas no deberían obtener estos errores. Pero (aparte del servidor que provee un VPN defectuoso) se puede forzar al cliente VPN para que se siga conectando (arreglando el error pero no el verdadero problema). Cuando se conecta a servidores más antiguos, la opción de modo de compatibilidad en la configuración básica de una VPN debería poder resolver la mayoría de los problemas de compatibilidad más comunes.</string>
+ <string name="check_peer_fingerprint">Verificar la huella digital del certificado de pares (peer)</string>
+ <string name="fingerprint">(Introducir la huella digital (fingerprint) SHA256 de el servidor de certificados)</string>
+ <string name="proxy_info"> Proxy HTTP: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Por favor use la función siempre activa (Always-On) de Android para activar a OpenVPN en el incio.</string>
+ <string name="open_vpn_settings">Configuraciones de OpenVPN</string>
+ <string name="trigger_pending_auth_dialog">Presione aquí para abrir una nueva ventana e introducir la información adicional requerida para completar la autenticación.</string>
+ <string name="compatmode">Modo de Compatibilidad</string>
+ <string name="compat_mode_label">Modo de Compatibilidad</string>
+ <string name="loadossllegacy">Cargar la fuente OpenSSL heredada (legacy)</string>
+ <string name="bf_cbc_requires_legacy">Los perfiles usan BF-CBC el cual depende de una fuente heredada (legacy) de OpenSSL (No habilitado).</string>
+ <string name="allow_translations_title">Permitir traducciones aportadas por la comunidad</string>
+ <string name="allow_translations_summary">Permitir que la interfaz de OpenVPN sea colocada en Español con traducciones de parte de la comunidad. Para activar esta opción requieres reiniciar OpenVPN.</string>
+ <string name="tls_profile">Perfil de seguridad TLS</string>
</resources>
diff --git a/main/src/ui/res/values-et/arrays.xml b/main/src/ui/res/values-et/arrays.xml
index dd68810a..a9f4026d 100644
--- a/main/src/ui/res/values-et/arrays.xml
+++ b/main/src/ui/res/values-et/arrays.xml
@@ -17,9 +17,9 @@
<item>Väline autentimispakkuja</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Määratlemata</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Krüptimine (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Katkesta ühendus, säilita parool</item>
<item>Ignoreeri, proovi uuesti</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Kaasaegsed vaikesätted</item>
+ <item>OpenVPN 2.5.x partnerid</item>
+ <item>OpenVPN 2.4.x partnerid</item>
+ <item>OpenVPN 2.3.x ja vanemad partnerid</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>ebaturvaline (ei soovita, lubab ebaturvalist krüptot)</item>
+ <item>legacy (default)</item>
+ <item>preferred (recommended but limited compabbility)</item>
+ <item>Suite B (only NIST approved elliptic curves)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-et/strings.xml b/main/src/ui/res/values-et/strings.xml
index e32a6213..026501b1 100644
--- a/main/src/ui/res/values-et/strings.xml
+++ b/main/src/ui/res/values-et/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12 salasõna</string>
<string name="file_select">Vali&#8230;</string>
<string name="file_nothing_selected">Valige fail</string>
- <string name="useTLSAuth">Kasuta TLS autentimist</string>
- <string name="tls_direction">TLS suund</string>
<string name="ipv6_dialog_tile">Sisesta IPv6 Aadress/Võrgumask CIDR formaadis (nt. 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Sisesta IPv4 Aadress/Võrgumask CIDR formaadis (nt. 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 aadress</string>
@@ -68,8 +66,6 @@
<string name="remote_tlscn_check_title">Sertifikaadi domeeninime kontroll</string>
<string name="enter_tlscn_dialog">Määrake meetod millega kontrollida eemalasuva sertifikaadi DN (n.: C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nMäärata saab kas täieliku DN, RDN (openvpn.blinkt.de eelmises näites) või eesliitega RDN kontrolli.\n\nRDN eesliite kasutamisel vastab sellele nii \"Server\", \"Server-1\" kui ka \"Server-2\"\n\nTekstivälja tühjaks jätmisel kontrollitakse kas RDN on vastavuses serveri nimega.\n\nDetailsema info leiate OpenVPN 2.3.1+ käsiraamatust —kinnita-x509-nimi all</string>
<string name="enter_tlscn_title">Eemalasuva sertifikaadi subjekt</string>
- <string name="tls_key_auth">Lubab TLS võtmega autentimise</string>
- <string name="tls_auth_file">TLS Auth fail</string>
<string name="pull_on_summary">Küsib serverist IP aadresse, marsruute ja ajastusvalikuid.</string>
<string name="pull_off_summary">Andmeid ei küsita serverist. Seadistused tuleb määrata allpool.</string>
<string name="use_pull">Sikuta seadistused</string>
@@ -202,8 +198,6 @@
<string name="using_proxy">Kasutusel proxy %1$s %2$s</string>
<string name="use_system_proxy">Kasuta süsteemset proxy\'t</string>
<string name="use_system_proxy_summary">Kasuta ühendumisel süsteemse HTTP/HTTPS proxy konfiguratsiooni.</string>
- <string name="onbootrestartsummary">OpenVPN ühendab määratud VPN kui see oli süsteemi käivitumisel aktiivne. Palun tutvuge, enne Android &lt; 5.0 peal selle võimaluse kasutamist, KKK hoiatusega ühendumise kohta.</string>
- <string name="onbootrestart">Ühenda käivitamisel</string>
<string name="ignore">Ignoreeri</string>
<string name="restart">Uuestilaadimine</string>
<string name="restart_vpn_after_change">Konfiguratsioonimuudatused rakendatakse peale VPN uuestilaadimist. Kas soovite VPN kohe (uuesti)laadida?</string>
@@ -259,7 +253,6 @@
<string name="encryption_cipher">Krüptošiffer</string>
<string name="packet_auth">Pakettide autentimine</string>
<string name="auth_dialog_title">Sisestage pakettide autentimismeetod</string>
- <string name="built_by">Kompileerija: %s</string>
<string name="debug_build">Silumisversioon</string>
<string name="official_build">Ametlik versioon</string>
<string name="make_selection_inline">Kopeeri profiili</string>
@@ -357,7 +350,6 @@
<string name="ab_tethering_44">Lõastamine (tethering) töötab ka aktiivse VPN puhul. Lõastatud ühendus EI kasuta VPN kanalit.</string>
<string name="ab_kitkat_mss">Varased KitKat versioonid kasutavad TCP ühendustel vale MSS väärtust (#61948). OpenVPN määrab vastuabinõuna automaatselt mssfix valiku.</string>
<string name="ab_proxy">Kui ühtegi DNS serverit pole määratud, siis jätkab Android mobiilsele/Wi-Fi ühendusele määratud puhverserveri kasutamist. OpenVPN for Android hoiatab sellest logis.<p>Kui VPN seadistab DNS serveri siis Android ei puhverda. VPN puhverserveri määramiseks puudub API.</p></string>
- <string name="ab_lollipop_reinstall">VPN apid ei pruugi enam töötada pärast eemaldamist ja uuestipaigaldamist. Täpsem info #80074</string>
<string name="ab_not_route_to_vpn">Seadistatud kliendi IP ja selle võrgumaskis sisalduvaid IP-sid ei marsruudita VPN kaudu. OpenVPN lahendab selle probleemi lisades marsruudi kliendi IP ja võrgumaski jaoks</string>
<string name="ab_persist_tun">Tun seadme avamine samal ajal kui mõni teine tun seade on aktiivne, mida kasutatakse püsiva-tun tagamiseks, jooksutab seadme VPN teenused kokku. VPN kasutamiseks tuleb seade uuesti käivitada. OpenVPN üritab vältida tun seadme uuestiavamist ja tõsise vajaduse korral sulgeb uue TUN avamisel eelnevalt aktiivse TUN seadme et vältida hangumist. See võib põhjustada lühiajalise akna mille jooksul saadetakse pakette VPN ühendusest mööda. Kuid isegi vaatamata kirjeldatud protsessile võib VPN teenus vahest kokku joosta ja seade vajada uuestikäivitamist.</string>
<string name="ab_secondary_users">VPN töötab ainult põhikasutaja jaoks.</string>
@@ -365,7 +357,6 @@
<string name="ab_vpn_reachability_44">Üle VPN on ligipääsetav ainult aadress, mis on kättesaadav ka ilma VPN ühenduseta. IPv6 VPNid ei tööta üldse.</string>
<string name="ab_only_cidr_title">Mitte-CIDR marsruudid</string>
<string name="ab_proxy_title">Puhverserveri käitumine VPN puhul</string>
- <string name="ab_lollipop_reinstall_title">VPN appide uuestipaigaldamine</string>
<string name="version_upto">%s ja eelnevad</string>
<string name="copy_of_profile">%s koopia</string>
<string name="ab_not_route_to_vpn_title">Seadistatud IP aadressi marsruut</string>
diff --git a/main/src/ui/res/values-fa/arrays.xml b/main/src/ui/res/values-fa/arrays.xml
new file mode 100644
index 00000000..51790f8b
--- /dev/null
+++ b/main/src/ui/res/values-fa/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>گواهینامه ها</item>
+ <item>فایل PKCS12</item>
+ <item>گواهی های اندروید</item>
+ <item>نام کاربری/رمز عبور</item>
+ <item>کلید های ایستاتیک</item>
+ <item>نام کاربری/رمز + گواهینامه ها</item>
+ <item>کاربر / PW + PKCS12 </item>
+ <item>User/PW + Android</item>
+ <item>ارائه دهنده تأییدیه خارجی</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>رمزگذاری (--tls-crypt)</item>
+ <item>TLS Crypt V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>قطع ارتباط، رمز عبور را فراموش کرده ام</item>
+ <item>قطع ارتباط، نگه داشتن رمز عبور</item>
+ <item>نادیده گرفتن، دوباره امتحان کنید</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>پیش فرض های مدرن</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x peers</item>
+ <item>Mohammad</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>100.576.86</item>
+ <item>میراث (پیش فرض)</item>
+ <item>ترجیح داده شده (توصیه شده اما با سازگاری محدود)</item>
+ <item>مجموعه B (فقط منحنی های بیضوی مورد تایید NIST)</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-fa/plurals.xml b/main/src/ui/res/values-fa/plurals.xml
new file mode 100644
index 00000000..6b3e4815
--- /dev/null
+++ b/main/src/ui/res/values-fa/plurals.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">یک ماه مونده</item>
+ <item quantity="other">یک ساعت باقی مانده</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">یک روز مانده</item>
+ <item quantity="other">2</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">یک ساعت باقی مانده</item>
+ <item quantity="other">%d saat kaldı</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">یک دقیقه باقی مانده است</item>
+ <item quantity="other">%d minutes left</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-fa/strings.xml b/main/src/ui/res/values-fa/strings.xml
new file mode 100644
index 00000000..39ebbe0c
--- /dev/null
+++ b/main/src/ui/res/values-fa/strings.xml
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">OpenVPN برای آندروید</string>
+ <string name="address">Server 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="client_no_certificate">مجوز داده نشد</string>
+ <string name="client_certificate_title">مجوز کاربر</string>
+ <string name="client_key_title">کلید گواهی مشتری</string>
+ <string name="client_pkcs12_title">فایل PKCS12</string>
+ <string name="ca_title">گواهینامه های کانادا</string>
+ <string name="no_certificate">شما باید یک فایل را انتخاب کنید</string>
+ <string name="copyright_guicode">Source code and issue tracker available at https://github.com/schwabe/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 رمز عبور12233445</string>
+ <string name="file_select">انتخاب کنید&#8230;</string>
+ <string name="file_nothing_selected">شما باید یک فایل را انتخاب کنید</string>
+ <string name="ipv6_dialog_tile">آدرس IPv6/نقاب شبکه را در قالب CIDR وارد کنید (مانند 2000:dd::23 / 64)</string>
+ <string name="ipv4_dialog_title">آدرس IPv4/نقاب شبکه را در قالب CIDR وارد کنید (مانند 1.2:dd::3.4 / 24)</string>
+ <string name="ipv4_address">آدرس IPv4</string>
+ <string name="ipv6_address">آدرس IPv6</string>
+ <string name="custom_option_warning">گزینه های OpenVPN سفارشی را وارد کنید. با احتیاط استفاده کنید. همچنین توجه داشته باشید که بسیاری از تنظیمات مرتبط OpenVPN با طراحی VPNS تنظیمات پشتیبانی نمی شود. اگر فکر می کنید یک گزینه مهم از دست رفته است، با نویسنده تماس بگیرید</string>
+ <string name="auth_username">Username (leave empty for no auth)</string>
+ <string name="auth_pwquery">رمز عبور</string>
+ <string name="static_keys_info">برای تنظیمات ثابت، کلید های TLS Auth به عنوان کلیدهای ثابت استفاده می شود</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="profilename">نام پروفایل</string>
+ <string name="no_keystore_cert_selected">شما باید یک گواهی را انتخاب کنید</string>
+ <string name="no_ca_cert_selected">You must select a CA certificate or enable peer fingerprint check</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">(leave empty to query on demand)</string>
+ <string name="vpn_shortcut">میانبر OpenVPN</string>
+ <string name="vpn_launch_title">اتصال به VPN&#8230;</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">مسیر توسط Android لغو شده است</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="remove_vpn">حذف VPN</string>
+ <string name="check_remote_tlscert">بررسی اینکه آیا سرور از یک گواهی با پسوند TLS Server استفاده می کند (--remote-cert-tls 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 = حامل آی پی پرندگان، CN = openvpn.blinkt.de) \n\n مشخص DN کامل یا RDN (openvpn.blinkt.de در مثال مثال) یا یک پیشوند RDN برای تأیید. \n\n در هنگام استفاده از پیشوند RDN \"سرور\" مطابقت با \"سرور-1\" و \"سرور-2\" \n\n درحال خواندن فیلد خالی RDN در برابر نام میزبان سرور است.\n\n برای جزئیات بیشتر، صفحه اصلی OpenVPN 2.3.1+ تحت نام -verify-x509-name را ببینید</string>
+ <string name="enter_tlscn_title">موضوع گواهی ریموت</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">دامنه جستجو</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="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="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 / tunn ممکن است اشتباه باشد، یا ماژول 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 دارای اطلاعات رابط است، فرض بر این است که آدرس دوم آدرس از راه دور است. استفاده از / 32 mask net برای IP محلی. حالت داده شده توسط OpenVPN \"%3$s\" است.</string>
+ <string name="route_not_cidr">نمی تواند %1$s و %2$s را به عنوان مسیر IP با ماسک CIDR معنی کند، با استفاده از / 32 به عنوان ماسک شبکه.</string>
+ <string name="route_not_netip">مسیر اصلاح شده %1$s / %2$s تا %3$s / %2$s</string>
+ <string name="keychain_access">می توانید به گواهینامه های Keychain 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 Mode</string>
+ <string name="faq_tap_mode">Tap Mode با API non-root VPN امکان پذیر نیست. بنابراین این برنامه نمی تواند پشتیبانی Tap را فراهم کند</string>
+ <string name="tap_faq2">دوباره؟ شوخی می کنی؟ خیر، حالت Tap واقعا پشتیبانی نمی شود و ارسال نامه های بیشتری از شما می پرسد که آیا پشتیبانی خواهد شد یا نه.</string>
+ <string name="tap_faq3">A third time? Actually, one could write a a tap emulator based on tun that would add layer2 information on send and strip layer2 information on receive. But this tap emulator would also have to implement ARP and possibly a DHCP client. I am not aware of anybody doing any work in this direction. Contact me if you want to start coding on this.</string>
+ <string name="faq">سوالات متداول</string>
+ <string name="copying_log_entries">کپی کردن ورودی های وارد شده</string>
+ <string name="faq_copying">برای کپی یک ورودی تنها ورودی را فشار داده و نگه دارید. برای کپی / ارسال کل ورود به سیستم از گزینه Send Log استفاده کنید. اگر دکمه در رابط گرافیکی قابل مشاهده نیست، دکمه منوی سخت افزار را استفاده کنید.</string>
+ <string name="faq_shortcut">میانبر برای شروع</string>
+ <string name="faq_howto_shortcut">شما می توانید یک میانبر برای شروع OpenVPN روی دسکتاپ خود قرار دهید. بسته به برنامه صفحه اصلی شما باید میانبر یا ویجت را اضافه کنید.</string>
+ <string name="no_vpn_support_image">تصویر شما API VPNService را پشتیبانی نمی کند، متاسفم :(</string>
+ <string name="encryption">رمزگذاری</string>
+ <string name="cipher_dialog_title">روش رمزگذاری را وارد کنید</string>
+ <string name="chipher_dialog_message">Enter the data encryption cipher algorithms used by OpenVPN separated by : (--data-ciphers). Leave empty to use the default of AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</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>
+ <string name="error_importing_file">خطای وارد کردن فایل</string>
+ <string name="import_error_message">فایل را نمیتوان از فایل سیستمی وارد کرد</string>
+ <string name="inline_file_data">[[داده فایل درون خطی]]</string>
+ <string name="opentun_no_ipaddr">امتناع از قدح دستگاه بدون اطلاعات IP</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">پیکربندی شما دارای چند گزینه پیکربندی است که برای تنظیمات رابط کاربری 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 حساس به امنیت، چند یادداشت در مورد امنیت منطقی است. تمام اطلاعات در SDCARD ذاتا ناامن است. هر برنامه می تواند آن را بخواند (به عنوان مثال این برنامه نیاز به هیچ کارت SD کارت خاصی ندارد) داده های این برنامه فقط می تواند خوانده شود با استفاده از گزینه واردات برای cacert / cert / key در محاوره فایل، داده ها در نمای VPN ذخیره می شوند. پروفایل های VPN تنها از طریق این برنامه قابل دسترسی هستند (فراموش نکنید که پس از آن کپی ها را در SDCARD خذف کنید) با وجود اینکه فقط با استفاده از این نرم افزار قابل دسترسی است، داده ها هنوز رمزگذاری نشده اند. با ریشه کن کردن تلفن یا سایر سوء استفاده ممکن است داده ها را بازیابی کنید. همچنین کلمه عبور ذخیره شده در متن ساده ذخیره می شود. برای فایل های pkcs12 بسیار توصیه می شود که شما آنها را وارد keystore اندرویدی می کنید. "</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 Android شما برای ذخیره سازی گواهی خراب است</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;Official HTC images are known to have a strange routing problem causing traffic not to flow through the tunnel (See also &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Issue 18&lt;/a&gt; in the bug tracker.)&lt;/p&gt;&lt;p&gt;Older official SONY images from Xperia Arc S and Xperia Ray have been reported to be missing the VPNService completely from the image. (See also &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Issue 29&lt;/a&gt; in the bug tracker.)&lt;/p&gt;&lt;p&gt;On custom build images the tun module might be missing or the rights of /dev/tun might be wrong. Some CM9 images need the \"Fix ownership\" option under \"Device specific hacks\" enabled.&lt;/p&gt;&lt;p&gt;Most importantly: If your device has a broken Android image, report it to your vendor. The more people who report an issue to the vendor, the more likely they are to fix it.&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 را به سیستم بگذارد. برخی از تصاویر CM9 نیاز به ایجاد API 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">Cert CA معمولا از فروشگاه اصلی Android باز می شود. در صورتی که خطاهای تأیید گواهی دریافت کنید گواهی جداگانه را مشخص کنید.</string>
+ <string name="select_file">انتخاب کنید</string>
+ <string name="keychain_nocacert">بدون گواهی CA در حالی که خواندن از حافظه اصلی آندروید بازگشت. احراز هویت احتمالا شکست خواهد خورد.</string>
+ <string name="show_log_summary">پنجره ورود به سیستم در اتصال را نشان می دهد. پنجره ورود به سیستم همیشه می تواند از وضعیت اعلان دسترسی داشته باشد.</string>
+ <string name="show_log_window">نمایش پنجره لاگ</string>
+ <string name="mobile_info">%10$s %9$s در حال اجرا در %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="error_extapp_sign">خطا در ورود به سیستم با نرم افزار تأیید کننده خارجی (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">اخطار اتصال VPN به شما این را می گوید که این برنامه می تواند تمام سیستم های ترافیکی را تحت کنترل بگیرد تا از سوء استفاده از VPNS سرویس API جلوگیری شود. \n اطلاع رسانی اتصال VPN (نماد کلیدی) نیز توسط سیستم Android برای نشان دادن اتصال VPN در حال انجام است. در برخی از تصاویر این اعلان یک صدا را پخش می کند. \n اندروید این پنجره های سیستم را برای ایمنی خود معرفی کرد و اطمینان داد که نمی توان آنها را دور زد. (در برخی از تصاویر این متاسفانه شامل یک صدای اعلان)</string>
+ <string name="faq_system_dialogs_title">هشدار اتصال و صدای اعلان</string>
+ <string name="translationby">ترجمه انگلیسی توسط Arne Schwabe&lt;arne@rfc2549.org&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 سفارشی را در نظر بگیرید. لطفا توجه داشته باشید که آندروید با استفاده از تنظیمات پروکسی خود برای اتصال به تلفن همراه / Wi-Fi شما تنظیم می شود که هیچ سرور DNS تنظیم نمی شود.</string>
+ <string name="dns_add_error">DNS Server \"%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 / pkcs12 شما می توانید فایل خودتان ایمیل کنید و پیوست را باز کنید. اگر فایل های چندگانه آنها را روی کارت SD خود قرار دهید، آن را روی کارت 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; اگر خطا یا هشدارها در log وجود دارد در تلاش برای درک هشدارها / خطا و سعی کنید آنها را تعمیر کنید &lt;/p&gt; </string>
+ <string name="faq_howto_title">شروع سریع</string>
+ <string name="setting_loadtun_summary">قبل از تلاش برای اتصال، ماژول kernel tun.ko را بارگیری کنید. نیاز به دستگاه های ریشه دار.</string>
+ <string name="setting_loadtun">ماژول load tun</string>
+ <string name="importpkcs12fromconfig">PKCS12 را از پیکربندی به Android Keystore وارد کنید</string>
+ <string name="getproxy_error">خطا در گرفتن تنظیمات پروکسی: %s</string>
+ <string name="using_proxy">در حال استفاده از پراکسی %1$s %2$s</string>
+ <string name="use_system_proxy">استفاده از پروکسی سیستم</string>
+ <string name="use_system_proxy_summary">از پیکربندی گسترده سیستم برای پروکسی های HTTP / HTTPS برای اتصال استفاده کنید.</string>
+ <string name="keep_vpn_connected_summary">OpenVPN VPN مشخص شده را در هنگام بوت شدن سیستم متصل می کند و سعی می کند VPN را متصل نگه دارد.</string>
+ <string name="keep_vpn_connected">VPN را متصل نگه دارید</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="faq_duplicate_notification_title">اعلان های تکراری</string>
+ <string name="faq_duplicate_notification">اگر اندروید تحت فشار سیستم (RAM) است، برنامه ها و خدمات که در حال حاضر مورد نیاز نیست از حافظه فعال حذف شده است. این یک اتصال VPN مداوم را متوقف می کند. برای اطمینان از اتصال / OpenVPN باقی می ماند سرویس با اولویت بالاتر اجرا می شود. برای اجرای با اولویت بالاتر، برنامه باید اعلان را نمایش دهد. آیکون اعلان کلیدی توسط سیستم اعمال می شود همانطور که در سؤال پیشین پرسشنامه شرح داده شده است. این برنامه به دلیل اعمال با اولویت بالاتر به عنوان اعلان برنامه محسوب نمی شود.</string>
+ <string name="no_vpn_profiles_defined">هیچ پروفایل VPN مجازی تعریف نشده است.</string>
+ <string name="add_new_vpn_hint">برای افزودن یک VPN جدید از نماد &lt;img src=\"ic_menu_add\"/&gt; استفاده کنید</string>
+ <string name="vpn_import_hint">از نماد &lt;img src=\"ic_menu_archive\"/&gt; برای وارد کردن نمایه موجود (.ovpn یا .conf) از sdcard خود استفاده کنید.</string>
+ <string name="faq_hint">همچنین مطمئن شوید که سوالات متداول را نیز بررسی کرده اید. یک راهنمای شروع سریع وجود دارد.</string>
+ <string name="faq_routing_title">مسیریابی / پیکربندی رابط</string>
+ <string name="faq_routing">پیکربندی مسیریابی و رابط کاربری از طریق دستورات ifconfig / route سنتی انجام نمی شود، بلکه با استفاده از API VPNService انجام می شود. این نتیجه پیکربندی مسیریابی متفاوت نسبت به سایر سیستم عاملهاست. \n پیکربندی تونل VPN شامل آدرس IP و شبکه هایی است که باید از طریق این رابط هدایت شوند. به خصوص، آدرس شریک همکار یا نشانی دروازه مورد نیاز یا مورد نیاز است. مسیرهای ویژه برای رسیدن به سرور VPN (برای مثال اضافه شده در هنگام استفاده از هدایت دروازه) نیز مورد نیاز نیستند. پس از وارد کردن یک پیکربندی، این تنظیمات در نتیجه این تنظیمات را نادیده می گیرد. این برنامه با API VPNService تضمین می کند که اتصال به سرور از طریق تونل VPN هدایت نمی شود. \n VPNService API اجازه نمی دهد تا مشخص کردن شبکه هایی که نباید از طریق VPN هدایت شوند. به عنوان یک راه حل، برنامه تلاش می کند تا شبکه هایی را شناسایی کند که نباید از طریق تونل رانده شوند (مثلا route xxxx yyyy net_gateway) و محدوده ای از مسیرهایی را که این مسیرها را حذف می کند را به تقلید از رفتار سایر سیستم عامل ها محاسبه می کند. پنجره های ورود به سیستم نشان می دهد پیکربندی VPNS خدمات پس از ایجاد اتصال. \n صحنه های بین المللی: آندروید 4.4 + از مسیریابی خط مشی استفاده می کند. با استفاده از مسیر / 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="battery_consumption_title">مصرف باتری</string>
+ <string name="baterry_consumption">در آزمایش های شخصی من دلیل اصلی مصرف باتری بالا از OpenVPN بسته های نگهدارنده هستند. اکثر سرورهای OpenVPN دارای یک دستورالعمل پیکربندی مانند \"keepalive 10 60\" هستند که باعث می شود مشتری و سرور هر 10 ثانیه یک بار بسته های نگهداری را تغییر دهند. &lt;p&gt; در حالیکه این بسته ها کوچک هستند و از ترافیک زیادی استفاده نمی کنند، شبکه رادیویی تلفن همراه را مشغول می کنند و مصرف انرژی را افزایش می دهند. (همچنین نگاه کنید به &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt; دستگاه دستگاه رادیویی | Android Developers&lt;/a&gt;) &lt;p&gt; این تنظیم Keepalive را نمی توان در سرویس گیرنده تغییر داد. فقط مدیر سیستم OpenVPN می تواند تنظیمات را تغییر دهد. &lt;p&gt; متاسفانه با استفاده از keepalive بزرگتر از 60 ثانیه با UDP می تواند بعضی از دروازه های NAT را به علت زمان وقوع غیرفعال، قطع کند. با استفاده از TCP با زمان طولانی نگه داشتن زنده کار می کند، اما تونل زدن TCP بیش از TCP در اتصالات با از دست دادن بسته بندی بسیار ضعیف است. (به &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt; چرا TCP بیش از TCP یک Idea&lt;/a&gt; بد است)</string>
+ <string name="faq_tethering">ویژگی Tethering اندروید (بیش از WiFi، USB یا بلوتوث) و API VPNService (که توسط این برنامه استفاده می شود) با یکدیگر کار نمی کنند. برای جزئیات بیشتر &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue # 34&lt;/a&gt; را ببینید;</string>
+ <string name="vpn_tethering_title">VPN و Tethering</string>
+ <string name="connection_retries">اتصال دوباره انجام می شود</string>
+ <string name="reconnection_settings">تنظیمات اتصال مجدد</string>
+ <string name="connectretrymessage">تعداد ثانیه ها برای متوقف کردن تلاش اتصال.</string>
+ <string name="connectretrywait">ثانیه بین اتصالات</string>
+ <string name="minidump_generated">OpenVPN به طور غیر منتظره کرش کرد. لطفا از گزینه Send Minidump در منوی اصلی استفاده کنید</string>
+ <string name="send_minidump">ارسال Minidump به توسعه دهنده</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_assign_ip">اختصاص آدرس های IP</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_tcp_connect">اتصال (TCP)</string>
+ <string name="state_auth_failed">تأیید اعتبار ناموفق بود</string>
+ <string name="state_nonetwork">در حال انتظار برای شبکه قابل استفاده است</string>
+ <string name="state_waitorbot">منتظر Orbot برای شروع</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 مشکلی دارند اگر نام گواهینامه Keystore شامل کاراکترهای غیر الفبا و عددی (مانند فضاهای، تاکید یا خطاهای) باشد. سعی کنید گواهینامه را مجددا وارد کنید بدون کاراکترهای خاص</string>
+ <string name="encryption_cipher">رمزنگاری سری</string>
+ <string name="packet_auth">بسته تأیید هویت</string>
+ <string name="auth_dialog_title">روش اعتبار سنجی بسته را وارد کنید</string>
+ <string name="debug_build">اشکال زدایی ساخت</string>
+ <string name="official_build">ساخت رسمی</string>
+ <string name="make_selection_inline">کپی به نمایه</string>
+ <string name="crashdump">Crashdump</string>
+ <string name="add">اضافه کردن</string>
+ <string name="send_config">ارسال فایل پیکربندی</string>
+ <string name="complete_dn">کامل DN</string>
+ <string name="remotetlsnote">پیکربندی وارد شده شما از گزینه قدیمی DEPRECATED tls-remote استفاده می کند که از فرمت DN متفاوت استفاده می کند.</string>
+ <string name="rdn">RDN (نام مشترک)</string>
+ <string name="rdn_prefix">پیشوند RDN</string>
+ <string name="tls_remote_deprecated">tls-remote (DEPRECATED)</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 برای آندروید و برای تله ترافیک شبکه بروید. <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">مکث VPN زمانی که صفحه خاموش است و داده های کمتر از 64 کیلوبایت در 60 ثانیه منتقل شده است. هنگامی که گزینه \"Permanent Tun\" فعال می شود و توقف VPN، دستگاه شما با NO اتصال به شبکه را ترک می کند. بدون گزینه \"Standing Tun\" دستگاه هیچ اتصال / حفاظت از VPN ندارد.</string>
+ <string name="screenoff_title">توقف اتصال VPN بعد از خاموش کردن</string>
+ <string name="screenoff_pause">اتصال متوقف شده در حالت خاموش روی صفحه نمایش: کمتر از %1$s در %2$ss</string>
+ <string name="screen_nopersistenttun">هشدار: تداوم پایانی برای این VPN فعال نیست. هنگامی که صفحه خاموش باشد، ترافیک از اتصال معمولی اینترنت استفاده خواهد کرد.</string>
+ <string name="save_password">ذخیره گذرواژه</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">خصوصیات دستگاه هک</string>
+ <string name="cannotparsecert">اطلاعات گواهی نمایش داده نمی شود</string>
+ <string name="appbehaviour">رفتار برنامه</string>
+ <string name="vpnbehaviour">رفتار VPN</string>
+ <string name="allow_vpn_changes">اجازه تغییرات در پروفایل VPN</string>
+ <string name="hwkeychain">سخت افزار Keystore:</string>
+ <string name="permission_icon_app">نماد برنامه تلاش برای استفاده از OpenVPN برای آندروید</string>
+ <string name="faq_vpndialog43">"با شروع از Android 4.3 تأیید VPN در برابر\" برنامه های Overlaying \"محافظت می شود.این نتیجه منجر به محاوره ای می شود که به ورودی لمس واکنش نشان نمی دهد.اگر شما یک برنامه ای دارید که از پوشش ها استفاده می کند ممکن است این رفتار را ایجاد کند. از این برنامه است.این مشکل بر تمامی برنامه های VPN در اندروید 4.3 و بالاتر تأثیر می گذارد. همچنین برای جزئیات بیشتر &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; "</string>
+ <string name="faq_vpndialog43_title">گفتگوی تایید Vpn</string>
+ <string name="donatePlayStore">به طور خلاصه شما می توانید با فروشگاه Play Donation را به من بدهید:</string>
+ <string name="thanks_for_donation">متشکرم برای اهدای %s!</string>
+ <string name="logCleared">لاگ پاک شد.</string>
+ <string name="show_password">نمایش گذرواژه</string>
+ <string name="keyChainAccessError">خطای دسترسی KeyChain: %s</string>
+ <string name="timestamp_short">کوتاه</string>
+ <string name="timestamp_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="logview_options">نمایش گزینه ها</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="faq_system_dialog_xposed">اگر دستگاه اندرویدی خود را ریشه کرده باشید می توانید &lt;a href=\"http://xposed.info/\"&gt; بستن framework&lt;/a&gt; را نصب کنید و &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialog را تایپ کنید ماژول &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="files_missing_hint">برخی از فایل ها یافت نشد لطفا فایل ها را برای وارد کردن مشخصات انتخاب کنید:</string>
+ <string name="openvpn_is_no_free_vpn">برای استفاده از این برنامه شما نیاز به یک VPN ارائه دهنده / VPN دروازه پشتیبانی از OpenVPN (اغلب توسط کارفرمای شما ارائه شده). برای اطلاعات بیشتر در مورد OpenVPN و نحوه راه اندازی سرور OpenVPN خود، http://community.openvpn.net/ را بررسی کنید.</string>
+ <string name="import_log">لاگ وارد شده:</string>
+ <string name="ip_looks_like_subnet">توپولوژی وی پی ان \"%3$s\" مشخص شده است، اما ifconfig %1$s %2$s بیشتر شبیه یک آدرس IP با ماسک شبکه است. فرض کنید توپولوژی \"زیر شبکه\".</string>
+ <string name="mssfix_invalid_value">مقدار override MSS باید یک عدد صحیح بین 0 و 9000 باشد</string>
+ <string name="mtu_invalid_value">مقدار override باید یک عدد صحیح بین 64 و 9000 باشد</string>
+ <string name="mssfix_value_dialog">اعلام کرد که جلسات TCP در حال اجرا بر روی تونل است که آنها باید اندازه بسته بسته ارسالی خود را محدود کنند، پس از آن که OpenVPN آنها را محصور کرده است، اندازه بسته یابی UDP که OpenVPN به همتای خود ارسال می کند، از این تعداد بایت ها تجاوز نمی کند. (پیش فرض 1450 است)</string>
+ <string name="mssfix_checkbox">ارزش MSS از مزیت TCP را غیرفعال کنید</string>
+ <string name="mssfix_dialogtitle">تنظیم MSS از بارنامه TCP</string>
+ <string name="client_behaviour">رفتار مشتری</string>
+ <string name="clear_external_apps">پاک کردن مجاز برنامه های خارجی</string>
+ <string name="loading">بارگذاری&#8230;</string>
+ <string name="allowed_vpn_apps_info">مجاز برنامه های وی پی ان: %1$s</string>
+ <string name="disallowed_vpn_apps_info">نرم افزارهای مجاز VPN: %1$s</string>
+ <string name="app_no_longer_exists">Package %s دیگر نصب نشده است، حذف آن از لیست اجازه / عدم اجازه برنامه اجازه می دهد</string>
+ <string name="vpn_disallow_radio">VPN برای تمام برنامه ها استفاده می شود اما حذف شده است</string>
+ <string name="vpn_allow_radio">VPN فقط برای برنامه های انتخاب شده استفاده می شود</string>
+ <string name="vpn_allow_bypass">نرم افزار برای دور زدن 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">گزینه های Payload</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">چندین مشتری OpenVPN برای آندروید وجود دارد. مشترکین OpenVPN برای آندروید (این مشتری)، OpenVPN Connect و OpenVPN Settings.&lt;p&gt; مشتریان را می توان به دو گروه تقسیم کرد: OpenVPN برای آندروید و OpenVPN Connect با استفاده از VPNS سرویس رسمی API (آندروید 4.0+) و نیاز به هیچ ریشه و OpenVPN تنظیماتی که از root.&lt;p&gt;OpenVPN برای آندروید استفاده می کند یک مشتری منبع باز است و توسط Arne Schwabe توسعه یافته است. این است که به کاربران پیشرفته تر هدف قرار می گیرد و تنظیمات بسیاری را فراهم می کند و توانایی وارد کردن پروفایل از فایل ها و پیکربندی / تغییر پروفایل در داخل برنامه. مشتری بر اساس نسخه اجتماعی OpenVPN است. این بر مبنای کد منبع OpenVPN 2.x است. این مشتری می تواند به عنوان مشتری نیمه رسمی جامعه دیده شود. &lt;p&gt; OpenVPN Connect کلاینت غیر منبع باز است که توسط OpenVPN Technologies، Inc. توسعه یافته است. مشتری کلاینت به طور کلی استفاده می شود و بیشتر به کاربر معمولی هدایت می شود و اجازه ورود به پروفایل های OpenVPN را می دهد. این سرویس مبتنی بر بازپرداخت OpenVPN C ++ پروتکل OpenVPN است (این برای اجازه OpenVPN Technologies، Inc به انتشار برنامه iOS OpenVPN لازم بود). این سرویس دهنده مشتری رسمی فن آوری های OpenVPN است. &lt;p&gt; تنظیمات OpenVPN قدیمی ترین مشتریان و همچنین UI برای OpenVPN منبع باز است. در مقایسه با OpenVPN برای آندروید، آن نیاز به ریشه دارد و از API VPNService استفاده نمی کند. این به Android 4.0 + بستگی ندارد</string>
+ <string name="faq_androids_clients_title">تفاوت بین مشتریان OpenVPN اندروید</string>
+ <string name="ignore_multicast_route">نادیده گرفتن مسیر چندرسانه ای: %s</string>
+ <string name="ab_only_cidr">اندروید تنها از مسیرهای CIDR به VPN پشتیبانی می کند. از آنجایی که مسیرهای غیر CIDR تقریبا هرگز استفاده نمی شود، OpenVPN برای اندروید از 32/32 برای مسیرهایی استفاده می کند که CIDR نیستند و هشدار را صادر می کنند.</string>
+ <string name="ab_tethering_44">VPN در حال فعال است. اتصال متصل به VPN از VPN استفاده نخواهد کرد.</string>
+ <string name="ab_kitkat_mss">نسخه کیت کت اولیه مقدار ارزش اشتباه MSS را در اتصالات TCP (# 61948) تنظیم می کند. سعی کنید گزینه mssfix را فعال کنید تا این اشکال حل شود.</string>
+ <string name="ab_proxy">آندروید با استفاده از تنظیمات پروکسی خود را مشخص شده برای اتصال تلفن همراه / Wi-Fi را حفظ خواهد کرد زمانی که هیچ سرور DNS تنظیم نشده است. OpenVPN برای Android در مورد این در log.<p> هنگامی که یک VPN یک سرور DNS را تنظیم می کند، آندروید از پروکسی استفاده نمی کند. هیچ API برای تنظیم یک پروکسی برای اتصال VPN وجود ندارد. 123._4_1_</p>321</string>
+ <string name="ab_not_route_to_vpn">IP سرویس گیرنده پیکربندی و IP ها در ماسک شبکه خود را به VPN هدایت نمی کنند. OpenVPN در مورد این اشکال با صراحت اضافه کردن یک مسیر که corrosponds به IP سرویس گیرنده و mask آن</string>
+ <string name="ab_persist_tun">باز کردن یک دستگاه صدای زنگ در حالی که دستگاه دیگری tun فعال است، که برای پشتیبانی persistent tun استفاده می شود، سرویس VPNS را بر روی دستگاه خراب می کند. مجددا راه اندازی مجدد می شود تا مجددا کار VPN انجام شود. OpenVPN برای آندروید تلاش می کند تا از بازگشایی دستگاه tun جلوگیری کند و اگر واقعا نیاز باشد، ابتدا TUN فعلی را قبل از باز شدن دستگاه جدید TUN برای جلوگیری از سقوط، بسته می کند. این ممکن است منجر به یک پنجره کوتاه که در آن بسته ها بر روی اتصال غیر VPN ارسال شوند. حتی با این راهکار VPNS سرویس ها گاهی اوقات سقوط می کنند و نیاز به راه اندازی مجدد دستگاه دارند.</string>
+ <string name="ab_secondary_users">VPN برای کاربران ثانویه کار نمی کند.</string>
+ <string name="ab_kitkat_reconnect">"کاربران چندگانه گزارش می دهند که اتصال داده های تلفن همراه / داده های تلفن همراه در هنگام استفاده از برنامه VPN غالبا کاهش می یابد. به نظر می رسد که رفتار به تنها برخی از ترکیبی از سرویس دهنده / دستگاه تلفن همراه تاثیر می گذارد و تاکنون هیچ علت / راه حل برای شناسایی اشکال وجود نداشته است."</string>
+ <string name="ab_vpn_reachability_44">تنها مقصد را می توان از طریق VPN که بدون VPN قابل دسترسی است رسیده است. VPN های IPv6 همگی کار نمی کنند.</string>
+ <string name="ab_only_cidr_title">مسیرهای غیر CIDR</string>
+ <string name="ab_proxy_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">مقدار MSS برای اتصال VPN نامعتبر است</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">حالت مداوم را ادامه دهید</string>
+ <string name="version_and_later">%s و بعدا</string>
+ <string name="tls_cipher_alert_title">اتصالات با SSL23_GET_SERVER_HELLO: sslv3 هشدار شکست خوردن دستکاری</string>
+ <string name="tls_cipher_alert">جدیدتر OpenVPN برای نسخه های آندروید (0.6.29 / مارس 2015) از پیش فرض امن تر برای سوئیت های مجاز رمز (tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! kRSA\") استفاده می شود. متأسفانه، حذف کردن سوئیت های امنیتی کمتری و صادر کردن سوئیت های سری، به ویژه حذف مجموعه سوپرمارکت هایی که از تضعیف کامل Perfect Forward پشتیبانی نمی کنند (Diffie-Hellman) باعث مشکلات خاصی می شود. این معمولا توسط تلاش خوبی انجام شده اما به اجرا گذاشته شده به منظور تقویت امنیت TLS با تنظیم tls-cipher در سرور یا برخی از سیستم عامل های جاسازی شده با SSL خالی شده (به عنوان مثال MikroTik) ناشی می شود. \n برای حل این مشکل مشکل، تنظیم tls-رمز تنظیمات سرور به صورت پیش فرض معقول مانند 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 (احتمالا سقوط برنامه ممکن است برای فشار حافظه کشته یا کشته شود)</string>
+ <string name="import_config_error">وارد کردن پیکربندی خطایی را ایجاد کرد، نمیتواند آن را ذخیره کند</string>
+ <string name="Search">جستجو کردن</string>
+ <string name="lastdumpdate">(آخرین بارگیری %1$d: %2$dh قدیمی است (%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 برای اندروید می تواند سعی کند فایل (های) گم شده در Sdcard را به صورت خودکار کشف کند. روی این پیام ضربه بزنید درخواست مجوز را آغاز کنید.</string>
+ <string name="protocol">پروتکل</string>
+ <string name="enabled_connection_entry">فعال شده است</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="crl_title">Certificatecate لغو فهرست (اختیاری)</string>
+ <string name="reread_log">Reread (%d) موارد ورود را از پرونده ذخیره سازی log</string>
+ <string name="samsung_broken">با وجود اینکه گوشی های سامسونگ از جمله تلفن های هوشمند اندرویدی هستند، سیستم عامل سامسونگ نیز در میان سخت افزارهای سخت افزاری اندرویدی قرار دارد. اشکالات فقط به استفاده از VPN در این دستگاه محدود نمی شود، اما بسیاری از آنها می توانند کار کنند. در زیر برخی از این اشکالات شرح داده شده است.\n\nDNS کار نمی کند مگر اینکه سرور DNS در محدوده VPN باشد. \n\n در بسیاری از دستگاه های Samsung 5.x قابلیت برنامه های مجاز / غیر مجاز کار نمی کند.\n در سامسونگ 6. VPN گزارش شده است که کار نمی کند مگر اینکه برنامه VPN از ویژگی های Powersave معاف باشد.</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 پس از تلاش اتصال ناموفق تا این مقدار، زمان انتظار خود را به آرامی افزایش می دهد. پیش فرض به 300s.</string>
+ <string name="connectretrymaxtitle">حداکثر زمان بین تلاش های اتصال</string>
+ <string name="state_waitconnectretry">منتظر %s ثانیه ثانیه بین تلاش اتصال</string>
+ <string name="nought_alwayson_warning"><![CDATA[اگر یک گفت و گو تأیید VPN دریافت نکردید، شما برای همیشه برنامه \"Always on 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">Config با استفاده از گزینه 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;Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like
+ MD5. Additionally with the OpenSSL 3.0 signatures with SHA1 are also rejected.&lt;/p&gt;&lt;p&gt;
+ You should update the VPN certificates as soon as possible as SHA1 will also no longer work on other platforms in the
+ near future.&lt;/p&gt;
+ &lt;p&gt;If you really want to use old and broken certificates select \"insecure\" for the TLS security profile under Authentication/Encryption of the profile&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">باز نمودن سرعت SSL</string>
+ <string name="openssl_cipher_name">باز کردن اسامی رمزنگاشته های SSL </string>
+ <string name="osslspeedtest">آزمون سریع رمز عبور OpenSSL</string>
+ <string name="openssl_error">رمزنگاشته های SSL دچار خطا شده است.</string>
+ <string name="running_test">در حال تست کردن</string>
+ <string name="test_algoirhtms">الگوریتم های انتخاب شده آزمایش</string>
+ <string name="all_app_prompt">یک برنامه بیگانه در حال تلاش برای دسترسی به %s است. درخواست دسترسی برنامه لغو شد ، مجاز نمودن این برنامه موجب دسترسی کلی به تمام برنامه هاست .</string>
+ <string name="openvpn3_nostatickeys">کلیدهای وضعیت را پشتیبانی کنید .لطفا در زیر قسمت تنظیمات عمومی به OpenVPN 2.x تغییر یابد .</string>
+ <string name="openvpn3_pkcs12">استفاده از فایلهای PKCS12 مستقیما با اجرا VPN 3 سی پلاس (++) پشتیبانی نمی شود. لطفا فایل های pkcs12 را به کلیدهای ذخیره اندروید افزوده یا در قسمت زیر تنظیمات عمومی به OpenVPN 2.x تغییر دهید.</string>
+ <string name="proxy">پراکسی</string>
+ <string name="Use_no_proxy">هیچکدام</string>
+ <string name="tor_orbot">تور (اوربوت)</string>
+ <string name="openvpn3_socksproxy">C ++ 3 OpenVPN اجرای حمایت نمی اتصال از طریق پراکسی پراکسی</string>
+ <string name="no_orbotfound">Orbot application cannot be found. Please install Orbot or use manual Socks v5 integration.</string>
+ <string name="faq_remote_api_title">API راه دور</string>
+ <string name="faq_remote_api">Openvpn نیاز برای آندروید APIs دو از راه دور، API پیچیده با استفاده از AIDL (remoteEXample در مخزن دستگاه گوارش) و یکی ساده با استفاده از مفاهیم را پشتیبانی می کند. &lt;p&gt;نمونه با استفاده از پوسته های بانک انکشاف آسیایی و مفاهیم. جایگزینی profilname با شما مشخصات نام&lt;p&gt;&lt;p&gt; بانک انکشاف آسیایی پوسته هستم شروع فعالیت - android.intent.action.MAIN de.blinkt.openvpn/.api. DisconnectVPN&lt;p&gt; پوسته بانک انکشاف آسیایی در شروع فعالیت - android.intent.action.MAIN -e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn/.api. ConnectVPN</string>
+ <string name="enableproxyauth">فعال کردن تأیید اعتبار پراکسی</string>
+ <string name="error_orbot_and_proxy_options">نمیتوان از بیانیه اضافی http-proxy-option یا Integration Orbot در همان زمان استفاده کرد</string>
+ <string name="info_from_server">اطلاعات از سرور: \'%s\'</string>
+ <string name="channel_name_userreq">Hello everyone </string>
+ <string name="channel_description_userreq">اتصال OpenVPN نیاز به ورودی کاربر به عنوان مثال دو عامل
+ authentification
+ </string>
+ <string name="openurl_requested">آدرس URL را برای ادامه VPN تأیید کنید</string>
+ <string name="crtext_requested">آدرس URL را برای ادامه VPN تأیید کنید</string>
+ <string name="state_auth_pending">تایید هویت در انتظار</string>
+ <string name="external_authenticator">Authenticator خارجی</string>
+ <string name="configure">پیکربندی</string>
+ <string name="extauth_not_configured">External Authenticator not configured</string>
+ <string name="faq_killswitch_title">مسدود کردن اتصال غیر VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">اغلب مواقع تمایل به مسدود کردن اتصالات خارج از VPN است. سایر نرم‌افزار ها از لفظ هایی مانند \"Killswitch\" یا \"Seamless tunnel\" برای این ویژگی استفاده می‌کنند. OpenVPN و این نرم‌افزار persist-tun را عرضه می‌کند، یک تابع جهت تعبیه این قابلیت. &lt;p&gt;مشکلی که با تمام این روش های عرضه شده توسط نرم‌افزار ها وجود دارد این است که آنها صرفا بهترین راه حل را ارائه می‌کنند و هیچ راه حل کاملی وجود ندارد. حین راه اندازی، متوقف شدن نرم‌افزار و سایر موارد نادر، نرم‌افزار نمی‌تواند مطمئن شود که مسدودسازی اتصالات غیر VPN عمل کند. و در نتیجه تلقین حس کاذب ایمنی به کاربر.&lt;p&gt;تنها&lt;/b&gt; راه قابل اعتماد جهت اطمینان از مسدود بودن اتصالات خارج از VPN استفاده از اندروید ۸.۰ و بالاتر و استفاده از \"مسدود سازی اتصالات بدون VPN\" از تنظیمات &gt; شبکه &amp; اینترنت &gt; پیشرفته/VPN &gt; OpenVPN برای اندروید &gt; فعالسازی همیشگی VPN، فعالسازی مسدودیت اتصالات بدون VPN است</string>
+ <string name="summary_block_address_families">این گزینه به اندروید دستور می‌دهد که اگر VPN هیچ آدرس IPv4 یا IPv6 را تنظیم نکرده باشد، پروتکل‌های (IPv4/IPv6) را مجاز نکند.</string>
+ <string name="title_block_address_families">Block IPv6 (or IPv4) if not used by the VPN</string>
+ <string name="install_keychain">Install new certificate</string>
+ <string name="as_servername">As servername</string>
+ <string name="server_url">Server URL</string>
+ <string name="request_autologin">248vpn</string>
+ <string name="import_from_as">Importiere Profil vom Server</string>
+ <string name="no_default_vpn_set">Default VPN not set. Please set the Default VPN before enabling this option.</string>
+ <string name="internal_web_view">Internal WebView</string>
+ <string name="faq_ncp">بسته به موقعیت دقیق، تغییراتی در این پیام وجود دارد. همه آنها وجه اشتراک دارند که سرور و کلاینت نمی توانند روی یک رمز مشترک به توافق برسند. دلایل اصلی عبارتند از: &lt;ul&gt;&lt;li&gt; شما همچنان بر این واقعیت تکیه می کنید که OpenVPN نسخه 2.4 و بالاتر به BF-CBC در پیکربندی پیش فرض اجازه داده است (اگر هیچ --cipher تنظیم نشده باشد). OpenVPN 2.5 دیگر آن را به صورت پیش فرض اجازه نمی دهد زیرا یک رمز &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;شکسته/ قدیمی است&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;سرور OpenVPN 2.3 (یا حتی قدیمی تر) را با --enable-small (حداقل OpenVPN 4-5 ساله) اجرا می کند&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;پیکربندی خراب (مثلاً عدم تطابق رمزهای داده روی مشتری و سرور)&lt;/li&gt; &lt;p&gt; &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN بخش دستی در مورد مذاکره رمز&lt;/a&gt; سناریوهای مختلف مذاکره رمز را به خوبی توضیح می دهد و در این شرایط چه باید کرد.&lt;p&gt;دستگاه TP-Link از نسخه حداقل 5 ساله OpenVPN 2.3.x (احتمالاً قدیمی تر) در دستگاه های خود استفاده می کنند، حتی در مدل های 2019/2020.&lt;p&gt;آخرین اما نه کم اهمیت ترین، یک ارائه دهنده VPN محبوب وجود دارد که یک سرور خراب دارد که همیشه می گوید از \"BF-CBC\" استفاده می کند، زیرا توسعه دهنده آن فکر می کرد ایجاد یک پچ مذاکره رمز اختصاصی که با استاندارد ناسازگار است ایده خوبی است. OpenVPN.&lt;p&gt;به طور خلاصه: تمام تنظیمات عاقل نباید این خطاها را دریافت کنند. اما (به غیر از سرور ارائه‌دهنده VPN خراب) می‌توان مشتری را متقاعد کرد که همچنان متصل شود (رفع علامت و نه مشکل واقعی). هنگام اتصال به سرورهای قدیمی، گزینه حالت سازگاری در تنظیمات اولیه VPN باید بتواند اکثر مشکلات رایج سازگاری را برطرف کند.</string>
+ <string name="check_peer_fingerprint">Check peer certificate fingerprint</string>
+ <string name="fingerprint">(Enter the SHA256 fingerprint of the server certificate(s))</string>
+ <string name="proxy_info">HTTP Proxy: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Please use the Always-On Feature of Android to enable VPN at boot time.</string>
+ <string name="open_vpn_settings">Open VPN settings</string>
+ <string name="trigger_pending_auth_dialog">Press here open a window to enter additional required authentication</string>
+ <string name="compatmode">Compatibility Mode</string>
+ <string name="compat_mode_label">Compatibility mode</string>
+ <string name="loadossllegacy">Load OpenSSL legacy provider</string>
+ <string name="bf_cbc_requires_legacy">Profiles uses BF-CBC which depends on OpenSSL legacy provider (not enabled).</string>
+ <string name="allow_translations_title">Allow community contributed translations</string>
+ <string name="allow_translations_summary">Allows the app to be translated with translations contributed by the community. Requires a restart of the app to activate.</string>
+ <string name="tls_profile">TLS Security Profile</string>
+ <string name="encrypt_profiles">Try to encrypt profiles on storage (if supported by Android OS)</string>
+</resources>
diff --git a/main/src/ui/res/values-fr/arrays.xml b/main/src/ui/res/values-fr/arrays.xml
index 4a1dcb24..44574b78 100644
--- a/main/src/ui/res/values-fr/arrays.xml
+++ b/main/src/ui/res/values-fr/arrays.xml
@@ -17,9 +17,9 @@
<item>Fournisseur d\'authentification externe</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Non spécifié</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Chiffrement (tls-crypt)</item>
<item>Chiffrement TLS V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Déconnecter, garder le mot de passe</item>
<item>Ignorer, réessayer</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Paramètres par défaut modernes</item>
+ <item>Pairs OpenVPN 2.5.x</item>
+ <item>Pairs OpenVPN 2.4.x</item>
+ <item>OpenVPN 2.3.x et anciens pairs</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>insecure (not recommend, allows insecure crypto)</item>
+ <item>Légats (défaut)</item>
+ <item>Préfère (recommandé but l\' imiter commuabilités)</item>
+ <item>Suite B (uniquement les courbes elliptiques approuvées par le NIST)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-fr/strings.xml b/main/src/ui/res/values-fr/strings.xml
index 2f2c97b8..f0babb56 100644
--- a/main/src/ui/res/values-fr/strings.xml
+++ b/main/src/ui/res/values-fr/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">"Mot de passe PKCS12"</string>
<string name="file_select">"Sélectionner…"</string>
<string name="file_nothing_selected">Vous devez sélectionner un fichier</string>
- <string name="useTLSAuth">"Utiliser l\'authentification TLS"</string>
- <string name="tls_direction">Direction TLS</string>
<string name="ipv6_dialog_tile">Entrez l\'adresse IPv6 / masque de réseau au format CIDR (ex : 2000:jj::23/64)</string>
<string name="ipv4_dialog_title">Entrez l\'adresse IPv4 / masque de réseau au format CIDR (ex : 1.2.3.4/24)</string>
<string name="ipv4_address">"Adresse IPv4"</string>
<string name="ipv6_address">"Adresse IPv6"</string>
<string name="custom_option_warning">Entrez les options d\'OpenVPN personnalisées. A utiliser avec précaution. A noter aussi que de nombreux paramètres Tun d\'OpenVPN ne sont pas pris en charge à cause de la conception de \"VPNSettings\". Si vous pensez qu\'une option importante manque, veuillez contacter l\'auteur</string>
+ <string name="auth_username">Nom d\'utilisateur (laisser vide pour aucune authentification)</string>
<string name="auth_pwquery">"Mot de passe"</string>
<string name="static_keys_info">"Pour la configuration statique, des clés d\'authentification TLS seront utilisés comme des clés statiques."</string>
<string name="configure_the_vpn">"Configurer le VPN"</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Veuillez entrer un nom de profil unique</string>
<string name="profilename">"Nom de profil"</string>
<string name="no_keystore_cert_selected">"Aucun certificat utilisateur sélectionné."</string>
+ <string name="no_ca_cert_selected">Vous devez sélectionner un certificat CA ou activer la vérification d\'empreinte digitale par un pair</string>
<string name="no_error_found">"Aucune erreur"</string>
<string name="config_error_found">"Erreur dans la configuration"</string>
<string name="ipv4_format_error">"Impossible d\'analyser l\'adresse IPv4"</string>
@@ -65,10 +65,8 @@
<string name="check_remote_tlscert_title">Attendre le certificat de serveur TLS</string>
<string name="remote_tlscn_check_summary">Vérifie le DN du sujet du certificat serveur distant</string>
<string name="remote_tlscn_check_title">"Vérification du certificat de l\'hôte"</string>
- <string name="enter_tlscn_dialog">Indiquez la manière de vérifier le DN du certificat distant (ex : C=DE, L=Paderborn, OU =Avian IP Carriers, CN=openvpn.blinkt.de)\n\nEntrez le DN complet, le RDN (openvpn.blinkt.de dans l\'exemple) ou un préfixe RDN.\n\nEn utilisant le préfixe RDN, \"Server\" correspond à \"Server-1\" et \"Server-2\"\n\nSi vous laissez le champ de texte vide, le RDN sera comparé au nom du serveur.\n\nPour plus de détails, voir la page du manuel OpenVPN 2.3.1+ : —verify-x509-name</string>
+ <string name="enter_tlscn_dialog">Indiquez la manière de vérifier le DN du certificat distant (ex : C=DE, L=Paderborn, OU =Avian IP Carriers, CN=openvpn.blinkt.de)\n\nEntrez le DN complet, le RDN (openvpn.blinkt.de dans l\'exemple) ou un préfixe RDN.\n\nEn utilisant le préfixe RDN, \"Serveur\" cela correspond à \"Serveur-1\" et \"Serveur-2\"\n\nSi vous laissez le champ de texte vide, le RDN sera comparé au nom du serveur.\n\nPour plus de détails, voir la page du manuel OpenVPN 2.3.1+ : —verify-x509-name</string>
<string name="enter_tlscn_title">Objet du certificat distant</string>
- <string name="tls_key_auth">"Activer l\'authentification par clé TLS"</string>
- <string name="tls_auth_file">"Fichier d\'authentification TLS"</string>
<string name="pull_on_summary">"Demande les adresses IP, les règles de redirection et les options de synchronisation du serveur."</string>
<string name="pull_off_summary">"Aucune information n\'est demandée par le serveur. Les paramètres doivent être spécifiés ci-dessous."</string>
<string name="use_pull">Paramètres \"Pull\"</string>
@@ -111,11 +109,11 @@
<string name="version_info">"%1$s %2$s"</string>
<string name="send_logfile">Envoyer le journal</string>
<string name="send">Envoyer</string>
- <string name="ics_openvpn_log_file">"Fichier de log OpenVPN ICS"</string>
+ <string name="ics_openvpn_log_file">Fichier journal OpenVPN ICS</string>
<string name="copied_entry">Entrée du journal copiée dans le presse-papier</string>
<string name="tap_mode">Mode Tap</string>
<string name="faq_tap_mode">Le mode TAP est indisponible avec l\'API VPN non root. Par conséquent, cette application ne peut pas supporter TAP</string>
- <string name="tap_faq2">Encore une fois ? Vous plaisantez ? Le mode TAP n\'est absolument pas pris en charge, et continuer de m\'envoyer des e-mails me demandant s\'il sera intégré ne va en rien aider.</string>
+ <string name="tap_faq2">Encore une fois ? Vous plaisantez ? Le mode TAP n\'est absolument pas pris en charge, et continuer de m\'envoyer des e-mails me demandant s\'il sera intégré ne va pas aider.</string>
<string name="tap_faq3">Encore une fois ? En fait, il est possible que quelqu\'un puisse écrire un émulateur TAP basé sur TUN qui pourrait modifier à la volée les informations de la couche \"Liaison\". Mais cet émulateur devrait aussi implémenter ARP et un client DHCP. A ma connaissance, personne n\'a commencé à travailler sur ce sujet. Contactez-moi si vous voulez m\'aider à travailler là-dessus.</string>
<string name="faq">FAQ</string>
<string name="copying_log_entries">Copie des entrées du journal</string>
@@ -125,32 +123,33 @@
<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="auth_dialog_message">Entrez l\'authentification digest utilisé pour OpenVPN. Laisser vide pour utiliser le digest par défaut.</string>
+ <string name="chipher_dialog_message">Entrez les algorithmes de chiffrement des données utilisés par OpenVPN séparés par : (--data-ciphers). Laissez vide pour utiliser la valeur par défaut AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
+ <string name="auth_dialog_message">Entrez l\'authentification digest utilisée pour OpenVPN. Laissez vide pour utiliser le digest par défaut.</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>
- <string name="import_error_message">"Impossible d\'importer le fichier depuis le système de fichiers"</string>
+ <string name="import_error_message">Impossible d\'importer le fichier depuis le système de fichiers</string>
<string name="inline_file_data">"[[Fichier de données personnalisé]]"</string>
- <string name="opentun_no_ipaddr">"Impossible d\'ouvrir le périphérique TUN sans informations IP"</string>
- <string name="menu_import">"Importer un profil depuis un fichier .ovpn"</string>
- <string name="menu_import_short">"Importer"</string>
- <string name="import_content_resolve_error">"Impossible de lire le profil à importer"</string>
- <string name="error_reading_config_file">"Erreur de lecture du fichier de configuration"</string>
+ <string name="opentun_no_ipaddr">Impossible d\'ouvrir le périphérique TUN sans informations IP</string>
+ <string name="menu_import">Importer un profil depuis un fichier .ovpn</string>
+ <string name="menu_import_short">Importer</string>
+ <string name="import_content_resolve_error">Impossible de lire le profil à importer</string>
+ <string name="error_reading_config_file">Erreur de lecture du fichier de configuration</string>
<string name="add_profile">ajouter un profil</string>
- <string name="import_could_not_open">"Impossible de trouver le fichier %1$s mentionné dans le fichier de configuration importé"</string>
- <string name="importing_config">"Importation du fichier de configuration depuis %1$s"</string>
+ <string name="import_could_not_open">Impossible de trouver le fichier %1$s mentionné dans le fichier de configuration importé</string>
+ <string name="importing_config">Importation du fichier de configuration depuis %1$s</string>
<string name="import_warning_custom_options">Votre configuration a quelques options qui ne sont pas prises en compte par l\'interface utilisateur. Ces options ont donc été ajoutées comme des options de configuration personnalisées :</string>
- <string name="import_done">"Fin de la lecture du fichier de configuration."</string>
- <string name="nobind_summary">"Ne pas se lier à l\'adresse locale et au port"</string>
- <string name="no_bind">"Aucune liaison locale"</string>
+ <string name="import_done">Fin de la lecture du fichier de configuration.</string>
+ <string name="nobind_summary">Ne pas se lier à l\'adresse et au port locaux</string>
+ <string name="no_bind">Aucune liaison locale</string>
<string name="import_configuration_file">Importer le fichier de configuration</string>
<string name="faq_security_title">Remarques sur la sécurité</string>
<string name="faq_security">"Comme OpenVPN est une application critique en terme de sécurité, quelques remarques sur la sécurité sont nécessaires. Toutes les informations stockées sur la carte SD ne sont pas sûres. Toute application peut en obtenir l\'accès : par exemple, ce programme ne requiert aucun droit particulier pour accéder à la carte SD. Par contre, les données d\'OpenVPN ne peuvent être lues que par OpenVPN. En utilisant l\'option d\'importation pour les CACert/Cert/Key, les données sont stockées dans le profil VPN. Ce dernier est seulement accessible à OpenVPN. Ainsi, veuillez ne pas oublier de supprimer les CACert/Cert/Key de la carte SD après importation. Car, même si l\'application en a l\'exclusivité, les données ne sont pas pour autant chiffrées. En \"rootant\" l\'appareil ou par d\'autres exploits il est toujours possible d\'accéder à ces informations. A titre d\'exemple, les mots de passe sont stockés en clair. Pour les fichiers de type Pkfcs12, il est fortement recommandé que vous les importiez dans le gestionnaire de clés d\'Android."</string>
- <string name="import_vpn">"Importer"</string>
- <string name="broken_image_cert_title">"Erreur d\'affichage certificat sélectionné"</string>
+ <string name="import_vpn">Importer</string>
+ <string name="broken_image_cert_title">Erreur lors de l\'affichage de la sélection de certificat</string>
<string name="broken_image_cert">Impossible d\'ouvrir la boite de dialogue de sélection de certificat d\'Android 4.0+. Cela ne devrait jamais se produire car il s\'agit d\'une fonctionnalité de base d\'Android 4.0+. Peut-être que le stockage des certificats de votre ROM Android ne fonctionne plus</string>
- <string name="ipv4">"IPv4"</string>
+ <string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
<string name="speed_waiting">Attente du statut&#8230;</string>
<string name="converted_profile">"profil importé"</string>
@@ -172,17 +171,17 @@
<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 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>
+ <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>
<string name="keychain_nocacert">Aucun certificat CA n\'a été trouvé depuis le gestionnaire de clés d\'Android. L\'authentification va probablement échouer.</string>
<string name="show_log_summary">Affiche le journal à la connexion. Cette fenêtre peut toujours être consultée à partir de la notification d\'état.</string>
<string name="show_log_window">Afficher le journal</string>
<string name="mobile_info">%10$s %9$s fonctionnant sur %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">"Erreur de signature de la clé %1$s : %2$s par le gestionnaire d\'Android"</string>
+ <string name="error_rsa_sign">Erreur de signature de la clé %1$s : %2$s par le gestionnaire d\'Android</string>
<string name="error_extapp_sign">Erreur de signature avec l\'application d\'authentification externe (%3$s): %1$s: %2$s</string>
- <string name="faq_system_dialogs">\"L\'avertissement de connexion au VPN, qui vous informe que cette application peut intercepter tout le trafic, est imposé par le système pour éviter les abus de l\'API du service VPN.\nLa notification de connexion au VPN (le symbole qui ressemble à une clé) est aussi imposée par le système Android pour signaler une connexion VPN en cours de fonctionnement.
+ <string name="faq_system_dialogs">L\'avertissement de connexion au VPN, qui vous informe que cette application peut intercepter tout le trafic, est imposé par le système pour éviter les abus de l\'API du service VPN.\nLa notification de connexion au VPN (le symbole qui ressemble à une clé) est aussi imposée par le système Android pour signaler une connexion VPN en cours de fonctionnement.
Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces notifications pour votre propre sécurité et a fait en sorte qu\'elles soient impossibles à contourner</string>
- <string name="faq_system_dialogs_title">"Avertissement de connexion et son de notification"</string>
+ <string name="faq_system_dialogs_title">Avertissement de connexion et son de notification</string>
<string name="translationby">Traduction française par les utilisateurs sur Crowdin</string>
<string name="ipdns">IP et DNS</string>
<string name="basic">Base</string>
@@ -191,31 +190,29 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="advanced">Avancée</string>
<string name="export_config_title">Configuration ICS OpenVPN</string>
<string name="warn_no_dns">Aucun serveur DNS utilisé. La résolution des noms de domaine peut ne pas fonctionner. Ajoutez des serveurs DNS personnalisés. Veuillez également noter qu\'Android va continuer à utiliser vos paramètres de proxy renseignés pour votre connexion Wi-Fi/mobile lorsqu\'aucun serveur DNS n\'est défini.</string>
- <string name="dns_add_error">"Impossible d\'ajouter le serveur DNS \"%1$s\", rejeté par le système : %2$s"</string>
+ <string name="dns_add_error">Impossible d\'ajouter le serveur DNS \"%1$s\", rejeté par le système : %2$s</string>
<string name="ip_add_error">Impossible de configurer l\'adresse IP \"%1$s\", rejeté par le système : %2$s</string>
<string name="faq_howto">&lt;p&gt;Obtenez une configuration fonctionnelle (testée sur un ordinateur ou téléchargée depuis le site de votre fournisseur/entreprise)&lt;/p&gt;&lt;p&gt;S\'il s\'agit d\'un seul fichier avec aucun fichier Pem/Pks12 supplémentaire, vous pouvez vous l\'envoyer par mail et l\'ouvrir directement. Si vous avez plusieurs fichiers de configuration, mettez-les sur votre carte SD.&lt;/p&gt;&lt;p&gt;Cliquez sur la pièce jointe de votre e-mail / Utilisez l\'icône \"dossier\" dans la liste des VPN pour importer le fichier de configuration.&lt;/p&gt;&lt;p&gt;Si des erreurs concernant des fichiers manquants apparaissent, veuillez mettre les fichiers manquants sur la carte SD.&lt;/p&gt;&lt;p&gt;Cliquez sur l\'icône \"enregistrer\" pour ajouter le profil VPN importé à la liste de VPNs.&lt;/p&gt;&lt;p&gt;Connectez le VPN en cliquant sur son nom dans cette liste.&lt;/p&gt;&lt;p&gt;Si vous rencontrez des erreurs ou des avertissements, veuillez consulter le journal pour les corriger.&lt;/p&gt; </string>
- <string name="faq_howto_title">"Démarrage rapide"</string>
+ <string name="faq_howto_title">Démarrage rapide</string>
<string name="setting_loadtun_summary">Essayez de charger le module du noyau \"tun.ko\" avant de tenter de vous connecter. Requiert des droits root.</string>
- <string name="setting_loadtun">"Charger le module TUN"</string>
+ <string name="setting_loadtun">Charger le module TUN</string>
<string name="importpkcs12fromconfig">Importer le PKCS12 de la configuration dans le gestionnaire de clés Android</string>
<string name="getproxy_error">Erreur d\'obtention des paramètres de proxy : %s</string>
- <string name="using_proxy">"Utilisation du proxy %1$s %2$s"</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 connectera le VPN spécifié si l\'application est active au démarrage du système. Veuillez lire la FAQ d\'avertissement de connexion avant d\'utiliser cette option sur Android &lt; 5.0.</string>
- <string name="onbootrestart">Se connecter au redémarrage</string>
+ <string name="using_proxy">Utilisation du proxy %1$s %2$s</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="ignore">Ignorer</string>
<string name="restart">Redémarrer</string>
<string name="restart_vpn_after_change">Les changements de configuration sont appliqués après redémarrage du VPN. (Re)démarrer le VPN maintenant ?</string>
<string name="configuration_changed">Configuration modifiée</string>
- <string name="log_no_last_vpn">"Impossible de déterminer le dernier profil connecté pour l\'édition"</string>
+ <string name="log_no_last_vpn">Impossible de déterminer le dernier profil connecté pour l\'édition</string>
<string name="faq_duplicate_notification_title">Notifications en double</string>
<string name="faq_duplicate_notification">Si Android manque de mémoire vive (RAM), les application et les services qui ne sont pas utilisés sont automatiquement fermés. 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. L\'application doit alors afficher une notification en permanence. L\'icône de \"clé\" dans la zone de notification est imposée par le système comme expliqué dans l\'entrée précédente de la FAQ.</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\"/&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. Vous y trouverez un guide de démarrage rapide.</string>
- <string name="faq_routing_title">"Redirections / Configuration de l\'interface"</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. La configuration de routage est donc différente par rapport aux 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. Les journaux montrent la configuration de VPNService lors d\'une connexion.\nEn coulisses : Android 4.4+ utilise la politique du routage. Utiliser route/ifconfig n\'affichera pas les routes installés. Utilisez plutôt ip rule, iptables -t mangle -L</string>
<string name="persisttun_summary">Ne pas couper la connexion VPN lors de la reconnexion d\'OpenVPN.</string>
<string name="persistent_tun_title">Persistance de l\'interface TUN</string>
@@ -259,7 +256,6 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="encryption_cipher">Algorithme de chiffrement</string>
<string name="packet_auth">Authentification des paquets</string>
<string name="auth_dialog_title">Méthode d\'authentification des paquets</string>
- <string name="built_by">compilé par %s</string>
<string name="debug_build">version de debug</string>
<string name="official_build">version officielle</string>
<string name="make_selection_inline">Copier dans le profil</string>
@@ -273,7 +269,7 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="tls_remote_deprecated">tls-remote (OBSOLÈTE)</string>
<string name="help_translate">Vous pouvez aider à traduire l\'application en vous rendant sur http://crowdin.net/project/ics-openvpn/invite</string>
<string name="prompt">%1$s essaye de contrôler %2$s</string>
- <string name="remote_warning">En continuant, vous donnez la permission à 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_warning">En continuant, vous donnez la permission à 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>
<string name="allowed_apps">Applications autorisées : %s</string>
@@ -303,7 +299,7 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="keyChainAccessError">Erreur d\'accès de KeyChain : %s</string>
<string name="timestamp_short">Court</string>
<string name="timestamp_iso">ISO</string>
- <string name="timestamps">Horodateurs</string>
+ <string name="timestamps">Horodatages</string>
<string name="timestamps_none">Aucun</string>
<string name="uploaded_data">Envoyé</string>
<string name="downloaded_data">Reçu</string>
@@ -317,7 +313,7 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="blocklocal_title">Contourner le VPN pour les réseaux locaux</string>
<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="files_missing_hint">Certains fichiers sont introuvables. Sélectionnez 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="import_log">Journal d\'import :</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>
@@ -357,15 +353,13 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="ab_tethering_44">Le partage fonctionne tant que le VPN est actif. La connexion partagée n\'utilisera pas le VPN.</string>
<string name="ab_kitkat_mss">Les premières versions KitKat définissent une valeur MSS erronée (#61948). Essayez d\'activer l\'option mssfix pour contourner ce bug.</string>
<string name="ab_proxy">Android va continuer d\'utiliser vos paramètres de proxy spécifiés pour la connexion mobile / Wi-Fi lorsque aucun serveur DNS n\'est défini. OpenVPN pour Android vous avertira à ce sujet dans le journal.<p>Quand un VPN définit un serveur de DNS, Android n\'utilisera pas de proxy. Il n\'y a pas d\'API pour définir un proxy pour une connexion VPN.</p></string>
- <string name="ab_lollipop_reinstall">Les applications VPN peuvent cesser de fonctionner lors d\'une désinstallation suivie d\'une réinstallation. Pour plus de détails, voir #80074</string>
<string name="ab_not_route_to_vpn">L\'adresse IP du client, et les adresses IP de ce réseau ne sont pas routées par le VPN. OpenVPN contourne ce problème en ajoutant une route qui correspond à l’adresse IP et au masque de sous-réseau du client</string>
<string name="ab_persist_tun">Ouvrir un appareil en mode TUN pendant qu\'un autre appareil en mode TUN est actif, ce qui est requis pour la prise en charge de la persistance TUN, produit un plantage de VPNServices sur l\'appareil. Un redémarrage est nécessaire pour faire fonctionner le VPN à nouveau. OpenVPN pour Android tente d\'éviter de ré-ouvrir l\'appareil en mode TUN , et si cela est indispensable il arrête d\'abord le TUN actuel avant d\'ouvrir le nouveau TUN pour éviter un plantage. Cela peut conduire à une courte période pendant laquelle les paquets sont envoyés hors de la connexion VPN. Même avec cette solution de contournement, VPNServices se bloque parfois et nécessite un redémarrage de l\'appareil.</string>
- <string name="ab_secondary_users">Le VPN ne fonctionnera pas du tout pour tous les utilisateurs secondaires.</string>
+ <string name="ab_secondary_users">Le VPN ne fonctionnera pas du tout pour les utilisateurs secondaires.</string>
<string name="ab_kitkat_reconnect">"Plusieurs utilisateurs ont signalé des pertes de paquets durant l\'utilisation d\'un VPN sur leur connexion mobile. Ce comportement semble être lié à certains fournisseurs/téléphones, et jusqu\'à présent, nous n\'avons pas pu identifier la cause de ce bug."</string>
<string name="ab_vpn_reachability_44">Seule la destination peut être atteinte via le VPN accessible sans VPN. Les VPNs IPv6 ne fonctionnent pas du tout.</string>
<string name="ab_only_cidr_title">Routes non CIDR</string>
<string name="ab_proxy_title">Comportement du proxy pour les VPN</string>
- <string name="ab_lollipop_reinstall_title">Réinstallation des applications VPN</string>
<string name="version_upto">%s et antérieur</string>
<string name="copy_of_profile">Copie de %s</string>
<string name="ab_not_route_to_vpn_title">Route vers l\'adresse IP configurée</string>
@@ -387,7 +381,7 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<string name="Search">Rechercher</string>
<string name="lastdumpdate">(Le dernier dump est vieux de %1$d:%2$d (du %3$s ))</string>
<string name="clear_log_on_connect">Effacer le journal sur une nouvelle connexion</string>
- <string name="connect_timeout">Extinction de la connexion</string>
+ <string name="connect_timeout">Délai de connexion</string>
<string name="no_allowed_app">Aucune application autorisée n\'a été ajoutée. Il faut au minimum ajouter cette application (%s) afin d\'en autoriser au moins une. Cela évite d’autoriser toutes les autres applications inutilement</string>
<string name="query_permissions_sdcard">OpenVPN pour Android va essayer de chercher le(s) fichier(s) manquant(s) sur une carte SD. Tapoter ce message va démarrer une demande d\'autorisation.</string>
<string name="protocol">Protocole</string>
@@ -436,6 +430,7 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
<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;</string>
<string name="volume_byte">%.0f B</string>
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
@@ -469,8 +464,35 @@ Sur certaines ROM, cette notification joue un son.\nAndroid a introduit ces noti
exemple une authentification à deux facteurs
</string>
<string name="openurl_requested">Ouvrir l\'URL pour continuer l\'authentification VPN</string>
+ <string name="crtext_requested">Répondez au défi pour continuer l\'authentification VPN</string>
<string name="state_auth_pending">Authentification en attente</string>
<string name="external_authenticator">Authentificateur externe</string>
<string name="configure">Configurer</string>
<string name="extauth_not_configured">Authentificateur externe non configuré</string>
+ <string name="faq_killswitch_title">Bloquer les connexions non VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">Il est souvent souhaité de bloquer les connexions sans VPN. D\'autres applications utilisent souvent des termes de marketing tels que \"Killswitch\" ou \"Seamless tunnel\" pour cette fonctionnalité. OpenVPN et cette application offrent persist-tun, une fonctionnalité pour implémenter cette fonctionnalité.&lt;p&gt;Le problème avec toutes ces méthodes proposées par les applications est qu\'elles ne peuvent fournir que le meilleur effort et ne constituent pas des solutions complètes. Au démarrage, en cas de plantage de l\'application et d\'autres cas particuliers, l\'application ne peut pas garantir que ce bloc de connexion non VPN fonctionne. Donnant ainsi à l\'utilisateur un faux sentiment de sécurité.&lt;p&gt;Le &lt;b&gt;seul&lt;/b&gt; fiable de s\'assurer que les connexions non VPN sont bloquées est d\'utiliser Android 8.0 ou version ultérieure et d\'utiliser le paramètre \"bloquer les connexions sans VPN\" qui se trouve sous Paramètres &gt; Réseau &amp; Internet &gt; Avancé/VPN &gt; OpenVPN pour Android &gt; Activer le VPN toujours activé, activer les connexions bloquées sans VPN</string>
+ <string name="summary_block_address_families">Cette option indique à Android de ne pas autoriser les protocoles (IPv4/IPv6) si le VPN ne définit aucune adresse IPv4 ou IPv6.</string>
+ <string name="title_block_address_families">Bloquer IPv6 (ou IPv4) s\'il n\'est pas utilisé par le VPN</string>
+ <string name="install_keychain">Installer un nouveau certificat</string>
+ <string name="as_servername">Nom du serveur AS</string>
+ <string name="server_url">URL du serveur</string>
+ <string name="request_autologin">Demander un profil de connexion automatique</string>
+ <string name="import_from_as">Importer le profil depuis le serveur distant</string>
+ <string name="no_default_vpn_set">VPN par défaut non défini. Veuillez définir le VPN par défaut avant d\'activer cette option.</string>
+ <string name="internal_web_view">WebView interne</string>
+ <string name="faq_ncp">Il existe des variations de ce message en fonction de la situation exacte. Ils ont tous en commun que le serveur et le client ne peuvent pas s\'entendre sur un chiffrement commun. Les principales raisons sont : &lt;ul&gt;&lt;li&gt; Vous comptez toujours sur le fait qu\'OpenVPN 2.4 et les versions antérieures autorisent BF-CBC dans la configuration par défaut (si aucun --cipher n\'a été défini). OpenVPN 2.5 ne l\'autorise plus par défaut car il s\'agit d\'un chiffrement &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;cassé/obsolète&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Le serveur&lt;/ul&gt;&lt;li&gt;2.3 (ou même plus ancien) avec&lt;/li&gt; - &lt;p&gt; (au moins 4-5 &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;d\'&lt;/li&gt;) La section du manuel sur la négociation de chiffrement&lt;/a&gt; explique très bien les différents scénarios de négociation de chiffrement et ce qu\'il faut faire dans ces situations.&lt;p&gt;appareils TP-Link utilisent une version OpenVPN 2.3.x d\'au moins 5 ans (éventuellement plus ancienne) sur leurs appareils, même dans les modèles 2019/2020.&lt;p&gt;Enfin et surtout, il y a un fournisseur de VPN populaire qui a un serveur en panne qui dit toujours qu\'il utilise \'BF-CBC\' parce que son développeur a pensé que ce serait une bonne idée de créer un correctif de négociation de chiffrement propriétaire qui est incompatible avec la norme OpenVPN.&lt;p&gt;En résumé : toutes les configurations saines ne devraient pas avoir ces erreurs. Mais (mis à part le serveur du fournisseur VPN en panne), le client peut être persuadé de continuer à se connecter (corriger le symptôme et non le vrai problème). Lors de la connexion à des serveurs plus anciens, l\'option de mode de compatibilité dans les paramètres de base d\'un VPN devrait pouvoir résoudre la plupart des problèmes de compatibilité courants.</string>
+ <string name="check_peer_fingerprint">Vérifier l\'empreinte digitale du certificat homologue</string>
+ <string name="fingerprint">(Entrez l\'empreinte SHA256 du ou des certificats de serveur)</string>
+ <string name="proxy_info">Proxy HTTP : %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Veuillez utiliser la fonction Always-On d\'Android pour activer le VPN au démarrage.</string>
+ <string name="open_vpn_settings">Ouvrir les paramètres VPN</string>
+ <string name="trigger_pending_auth_dialog">Appuyez ici pour ouvrir une fenêtre pour entrer l\'authentification supplémentaire requise</string>
+ <string name="compatmode">Mode de compatibilité</string>
+ <string name="compat_mode_label">Mode de compatibilité</string>
+ <string name="loadossllegacy">Charger l\'ancien fournisseur OpenSSL</string>
+ <string name="bf_cbc_requires_legacy">Les profils utilisent BF-CBC qui dépend du fournisseur hérité OpenSSL (non activé).</string>
+ <string name="allow_translations_title">Autoriser les traductions fournies par la communauté</string>
+ <string name="allow_translations_summary">Autoriser l\'application à être traduite avec les traductions apportées par la communauté. Nécessite un redémarrage de l\'application pour s\'activer.</string>
+ <string name="tls_profile">Profil de sécurité TLS</string>
+ <string name="encrypt_profiles">Essayez de chiffrer les profils sur le stockage (si pris en charge par Android OS)</string>
</resources>
diff --git a/main/src/ui/res/values-he/arrays.xml b/main/src/ui/res/values-he/arrays.xml
new file mode 100644
index 00000000..0b01b001
--- /dev/null
+++ b/main/src/ui/res/values-he/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>אישורים</item>
+ <item>קובץ PKCS12</item>
+ <item>אישור Android</item>
+ <item>שם משתמש/ססמה</item>
+ <item>מפתחות סטטיים</item>
+ <item>משתמש/סיסמה + אישורים</item>
+ <item>משתמש/סיסמה + PKCS12 </item>
+ <item>משתמש / PW + Android</item>
+ <item>ספק אימות חיצוני</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>הצפנה (‎--tls-crypt)</item>
+ <item>TLS Crypt V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>התנתק, שכח סיסמה</item>
+ <item>התנתק, זכור סיסמה</item>
+ <item>התעלמות, ניסיון חוזר</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>ברירות מחדל מודרניות</item>
+ <item>עמיתים של OpenVPN 2.5.x</item>
+ <item>עמיתים של OpenVPN 2.4.x</item>
+ <item>OpenVPN 2.3.x ומעלה</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>לא מאובטח (לא מומלץ, מאפשר קריפטו לא מאובטח)</item>
+ <item>מורשת (ברירת מחדל)</item>
+ <item>מועדף (מומלץ אך תאימות מוגבלת)</item>
+ <item>סוויטה B (רק עקומות אליפטיות שאושרו על ידי NIST)</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-he/plurals.xml b/main/src/ui/res/values-he/plurals.xml
new file mode 100644
index 00000000..0a61b8e4
--- /dev/null
+++ b/main/src/ui/res/values-he/plurals.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">One month left</item>
+ <item quantity="two">נותרו חודשיים</item>
+ <item quantity="many">%d חודשים נותרו</item>
+ <item quantity="other">%d חודשים נותרו</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">יום אחד נשאר</item>
+ <item quantity="two">נותרו יומיים</item>
+ <item quantity="many">%d ימים נותרו</item>
+ <item quantity="other">%d ימים נותרו</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">One month left</item>
+ <item quantity="two">נותרו שעתיים</item>
+ <item quantity="many">%d שעות נותרו</item>
+ <item quantity="other">נותרו %d שעות</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">נותרה דקה אחת</item>
+ <item quantity="two">נותרו שתי דקות</item>
+ <item quantity="many">%d דקות נותרו</item>
+ <item quantity="other">%d דקות נותרו</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-he/strings.xml b/main/src/ui/res/values-he/strings.xml
new file mode 100644
index 00000000..b7da80df
--- /dev/null
+++ b/main/src/ui/res/values-he/strings.xml
@@ -0,0 +1,502 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">OpenVPN עבור אנדרואיד</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="client_no_certificate">אין תעודה</string>
+ <string name="client_certificate_title">תעודת לקוח</string>
+ <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">קוד מקור ודיווח על תקלות זמין תחת https://github.com/schwabe/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="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="ipv6_address">כתובת IPv6</string>
+ <string name="custom_option_warning">הזן אפשרויות 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="menu_add_profile">הוספת פרופיל</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_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&#8230;</string>
+ <string name="shortcut_profile_notfound">בפרופיל שצוין הקיצור לא נמצא</string>
+ <string name="random_host_prefix">קידומת Host אקראית</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="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-tls 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 = Avi IP IP, CN = openvpn.blinkt.de)\n\nציין את ה- DN המלא או ה- RDN (openvpn.blinkt.de ב הדוגמה) או קידומת RDN לאימות.\n\nבעת שימוש בקידומת RDN \"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="pull_on_summary">מבקש מהשרת כתובות IP, ניתובים (routes) ואפשרויות תזמון.</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">חפש בדומיין</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="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="custom_options_title">אפשרויות מותאמות אישית</string>
+ <string name="edit_vpn">עריכת הגדרות VPN</string>
+ <string name="remove_vpn_query">הסר את פרופיל \'%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="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, בהנחה הכתובת השניה היא כתובת העמית הרחוק. שימוש /32 מסיכת רשת עבור IP המקומית. מצב שנתן OpenVPN הוא \"%3$s\".</string>
+ <string name="route_not_cidr">לא הגיוני של %1$ s ו- %2$ s כמו ניתוב ה-IP עם netmask CIDR, באמצעות /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. לכן יישום זה אינה יכול לספק תמיכה</string>
+ <string name="tap_faq2">שוב? אתה צוחק? לא, מצב הקשה ממש לא נתמך ושליחת דואר נוסף לשאול אם הוא יתמך לא יעזור.</string>
+ <string name="tap_faq3">פעם שלישית? למעשה, אפשר לכתוב אמולטור ברז המבוסס על tun שיוסיף מידע שכבה2 על שליחה ויסיר מידע על שכבה2 בקבלה. אבל אמולטור הברז הזה יצטרך גם ליישם ARP ואולי לקוח DHCP. אני לא מודע לכך שמישהו עושה עבודה בכיוון הזה. צור איתי קשר אם אתה רוצה להתחיל לקוד על זה.</string>
+ <string name="faq">שאלות נפוצות</string>
+ <string name="copying_log_entries">העתקת ערכי יומן רישום</string>
+ <string name="faq_copying">כדי להעתיק דפוס ערך כניסה יחיד, לחץ לחיצה ארוכה על ערך יומן. כדי להעתיק/לשלח יומן שלם השתמש באפשרות שלח יומן רישום. השתמש בלחצן תפריט חומרה אם אינם גלויים בממשק המשתמש.</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 מופרדים על ידי: (--data-ciphers). השאר ריק כדי להשתמש בברירת המחדל של AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</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>
+ <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>
+ <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 רגיש לאבטחה, כמה הערות לגבי אבטחה הן הגיוניות. כל הנתונים בכרטיס ה-sdcard אינם מאובטחים מטבעם. כל אפליקציה יכולה לקרוא אותם (לדוגמה, תוכנית זו אינה דורשת זכויות מיוחדות של כרטיס sd). ניתן לקרוא את הנתונים של האפליקציה הזו רק ע\"י האפליקציה עצמה. ע\"י שימוש באפשרות הייבוא של cacert/cert/key בתיבת הדו-שיח של הקובץ הנתונים מאוחסנים בפרופיל ה-VPN. פרופילי ה-VPN נגישים רק ע\"י אפליקציה זו. (לא לשכוח למחוק את העותקים בכרטיס ה-sd לאחר מכן). למרות שהאפליקציה הזו נגישה רק על ידי אפליקציה זו, הנתונים עדיין לא מוצפנים. על ידי שורש הטלפון או ניצול אחר ייתכן שניתן יהיה לאחזר את הנתונים. סיסמאות שמורות מאוחסנות גם בטקסט רגיל. עבור קבצי pkcs12 מומלץ מאוד לייבא אותם למאגר המפתחות של אנדרואיד."</string>
+ <string name="import_vpn">ייבוא</string>
+ <string name="broken_image_cert_title">שגיאה בהצגת בחירת האישור</string>
+ <string name="broken_image_cert">יש חריג בניסיון להציג את תיבת הדו-שיח לבחירת אישורים של Android 4.0+. זה לא אמור לקרות מכיוון שזו תכונה סטנדרטית של אנדרואיד 4.0+. אולי התמיכה ב-Android ROM שלך לאחסון אישורים שבורה</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=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;גיליון 18&lt;/a&gt; במעקב אחר באגים.)&lt;/p&gt;&lt;p&gt;תמונות SONY רשמיות ישנות יותר מ-Xperia Arc S ו-Xperia Ray דווחו ל חסר את VPNService לחלוטין מהתמונה. (ראה גם &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/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="tls_authentication">אימות/הצפנה TLS</string>
+ <string name="generated_config">נוצר עריכה</string>
+ <string name="generalsettings">הגדרות</string>
+ <string name="owner_fix_summary">מנסה להגדיר את הבעלים של /dev/tun למערכת. חלק מתמונות 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">אישור \"רשות אישורים\" מוחזרת בדרך כלל מ Keystore של אנדרואיד. ציין אישור נפרד אם אתה מקבל שגיאות אימות אישור.</string>
+ <string name="select_file">בחר</string>
+ <string name="keychain_nocacert">אישור \"רשות אישורים\" לא חזר בזמן הקריאה על פי keystore של אנדרואיד. האימות כנראה ייכשל.</string>
+ <string name="show_log_summary">מציג חלון יומן בהתחברות. ניתן לגשת חלון יומן תמיד ממציג ההודעות.</string>
+ <string name="show_log_window">הצג חלון יומן</string>
+ <string name="mobile_info">%10$s %9$s פועל על %3$s %1$s (%2$s), אנדרואיד %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
+ <string name="error_rsa_sign">שגיאה חתימה עם keystore אנדרואיד המפתח %1$ s: %2$ s</string>
+ <string name="error_extapp_sign">שגיאה בחתימה עם אפליקציית מאמת חיצונית (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">אזהרת חיבור VPN האומרת כי יישום זה יוכל ליירט את כל התעבורה של המערכת. כדי למנוע ניצול לרעה של חיבור ה-VPNService API.\n VPN ההודעה (סמל מפתח) מוצג גם על-ידי מערכת אנדרואיד כדי לאותת על חיבור VPN מתמשך. על כמה רומים הודעה זו מנגנת צליל. \n אנדרואיד הציג את תיבות דו-שיח אלה לצרכי בטיחות שלך, ודאג כי הם לא יכולים להיות מבוטלים. (על כמה רומים לצערינו זה כולל צליל התראה)</string>
+ <string name="faq_system_dialogs_title">אזהרת חיבור והודעות קול</string>
+ <string name="translationby">תרגום לעברית מאת Arne Schwabe&lt;@shopisrael&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.</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/pkcs12 נוספים, תוכל לשלוח את הקובץ בדוא\"ל בעצמך ולפתוח את הקובץ המצורף. אם יש לך מספר קבצים שים אותם בכרטיס ה-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 מהתצורה לחנות המפתחות של אנדרואיד</string>
+ <string name="getproxy_error">שגיאה בהשגת הגדרות פרוקסי: %s</string>
+ <string name="using_proxy">שימוש בפרוקסי %1$s %2$s</string>
+ <string name="use_system_proxy">להשתמש במתווך המערכת</string>
+ <string name="use_system_proxy_summary">השתמש בתצורה הרחבה של המערכת עבור פרוקסי HTTP/HTTPS כדי להתחבר.</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="faq_duplicate_notification_title">התראות כפולות</string>
+ <string name="faq_duplicate_notification">אם אנדרואיד נמצא בלחץ זיכרון מערכת (RAM), אפליקציות ושירותים שאינם נחוצים כרגע יוסרו מהזיכרון הפעיל. זה מפסיק חיבור VPN מתמשך. כדי להבטיח שהחיבור/OpenVPN ישרוד השירות פועל בעדיפות גבוהה יותר. כדי לפעול בעדיפות גבוהה יותר, האפליקציה חייבת להציג הודעה. סמל התראת המפתח מוטל על ידי המערכת כמתואר בערך השאלות הנפוצות הקודם. זה לא נחשב כהתראה לאפליקציה לצורך הפעלה בעדיפות גבוהה יותר.</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) מכרטיס ה-sdcard שלך.</string>
+ <string name="faq_hint">הקפד לבדוק גם את השאלות הנפוצות. יש מדריך להתחלה מהירה.</string>
+ <string name="faq_routing_title">הגדרות ניתוב/מנשק</string>
+ <string name="faq_routing">הניתוב ותצורת הממשק לא נעשים באמצעות פקודות ifconfig/route המסורתיות אלא באמצעות ה-API של VPNService. כתוצאה מכך תצורת ניתוב שונה מאשר במערכות הפעלה אחרות. \nהתצורה של מנהרת ה-VPN מורכבת מכתובת ה-IP והרשתות שיש לנתב על פני ממשק זה. במיוחד, אין צורך או נדרש כתובת שותף עמית או כתובת שער. גם מסלולים מיוחדים להגיע לשרת ה-VPN (לדוגמה הוסיפו בעת שימוש ב-redirect-gateway) אינם נחוצים. כתוצאה מכך, היישום יתעלם מהגדרות אלה בעת ייבוא תצורה. האפליקציה מבטיחה עם VPNService API שהחיבור לשרת לא מנותב דרך מנהרת ה-VPN.\nה-API של VPNService אינו מאפשר לציין רשתות שאסור לנתב באמצעות ה-VPN. כדרך לעקיפת הבעיה, האפליקציה מנסה לזהות רשתות שאסור לנתב עליהן דרך מנהרה (למשל מסלול xxxx yyyy net_gateway) ומחשבת קבוצה של מסלולים שמוציאה את המסלולים האלה כדי לחקות את ההתנהגות של פלטפורמות אחרות. חלונות היומן מציגים את התצורה של VPNService עם יצירת חיבור.\nמאחורי הקלעים: אנדרואיד 4.4+ אכן משתמש בניתוב מדיניות. שימוש ב-route/ifconfig לא יציג את המסלולים המותקנים. במקום זאת השתמש בכלל ip, iptables -t mangle -L</string>
+ <string name="persisttun_summary">אל תחזור ללא חיבור VPN כאשר OpenVPN מתחבר מחדש.</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>
+ <string name="baterry_consumption">בבדיקות האישיות שלי הסיבה העיקרית לצריכת סוללה גבוהה של OpenVPN הן מנות Keepalive. לרוב שרתי OpenVPN יש הנחיית תצורה כמו \'keepalive 10 60\' שגורמת ללקוח ולשרת להחליף מנות Keepalive כל עשר שניות. &lt;p&gt; מנות אלו אמנם קטנות ואינן משתמשות בתעבורה רבה, אך הן מעסיקות את רשת הרדיו הנייד ומגדילות את צריכת האנרגיה. (ראה גם &lt;a href=\"https://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;The Radio State Machine | מפתחי אנדרואיד&lt;/a&gt;) &lt;p&gt; לא ניתן לשנות את ההגדרה Keepalive זו בלקוח. רק מנהל המערכת של OpenVPN יכול לשנות את ההגדרה. &lt;p&gt; לרוע המזל, שימוש ב-Keealive של יותר מ-60 שניות עם UDP עלול לגרום לשערי NAT מסוימים להפסיק את החיבור עקב פסק זמן של חוסר פעילות. השימוש ב-TCP עם פסק זמן ארוך של שמירה על החיים עובד, אבל ביצוע מנהור של TCP על TCP מתפקד בצורה גרועה ביותר בחיבורים עם אובדן מנות גבוה. (ראה &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;מדוע TCP מעל TCP הוא רעיון רע&lt;/a&gt;)</string>
+ <string name="faq_tethering">תכונת ה-Android Tethering (על WiFi, USB או Bluetooth) וממשק ה-API של VPNService (בשימוש על ידי תוכנית זו) אינם פועלים יחד. לפרטים נוספים עיין בגיליון &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;#34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">VPN וקשירה</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="send_minidump">שלח דיווח למפתחים</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_assign_ip">מוקצות כתובות IP</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_tcp_connect">מתחבר (TCP)</string>
+ <string name="state_auth_failed">אימות נכשל</string>
+ <string name="state_nonetwork">ממתין לרשת שמישה</string>
+ <string name="state_waitorbot">מחכה Orbot יתחיל</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">צופן הצפנה</string>
+ <string name="packet_auth">אימות מנות</string>
+ <string name="auth_dialog_title">נא למלא את שיטת אימות המנות</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="complete_dn">DN מלא</string>
+ <string name="remotetlsnote">התצורה המיובאת שלך השתמשה באפשרות הישנה של DEPRECATED 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="help_translate">אתה יכול לעזור בתרגום על ידי ביקור בכתובת https://crowdin.net/project/ics-openvpn/invite</string>
+ <string name="prompt">%1$s ניסיונות לשלוט ב %2$s</string>
+ <string name="remote_warning">אם תמשיך, אתה נותן לאפליקציה הרשאה לשלוט לחלוטין ב-OpenVPN עבור אנדרואיד וליירט את כל תעבורת הרשת.<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">השהה את ה-VPN כאשר המסך כבוי ופחות מ-64 קילובייט מועברים נתונים ב-60s. כאשר אפשרות ה-\"Persistent Tun\" מופעלת, השהיית ה-VPN תשאיר את המכשיר שלך ללא קישוריות רשת. ללא אפשרות \"Persistent Tun\" למכשיר לא יהיה חיבור/הגנה VPN.</string>
+ <string name="screenoff_title">השהה את חיבור ה-VPN לאחר כיבוי המסך</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>
+ <string name="resumevpn">המשך VPN</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 עבור אנדרואיד</string>
+ <string name="faq_vpndialog43">"החל מ-Android 4.3 אישור ה-VPN נשמר מפני \"תצוגת מעל אפליקציות\". כתוצאה מכך תיבת הדו-שיח לא מגיבה לקלט מגע. אם יש לך אפליקציה שמשתמשת בתצוגת-על היא עלולה לגרום להתנהגות זו. אם תמצא אפליקציה פוגעת פנה למחבר של האפליקציה. בעיה זו משפיעה על כל יישומי ה-VPN באנדרואיד 4.3 ואילך. ראה גם &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;גיליון 185&lt;a&gt; לפרטים נוספים"</string>
+ <string name="faq_vpndialog43_title">דו-שיח אישור VPN</string>
+ <string name="donatePlayStore">לחלופין, תוכל לשלוח לי תרומה באמצעות חנות Play:</string>
+ <string name="thanks_for_donation">תודה שתרמת %s!</string>
+ <string name="logCleared">יומן נוקה.</string>
+ <string name="show_password">הצגת סיסמה</string>
+ <string name="keyChainAccessError">שגיאת גישה למחזיק מפתחות: %s</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="logview_options">הצגת אפשרויות</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="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="files_missing_hint">חלק מהקבצים לא נמצאו. אנא בחר את הקבצים לייבא את הפרופיל:</string>
+ <string name="openvpn_is_no_free_vpn">כדי להשתמש באפליקציה זו אתה צריך ספק VPN/שער VPN התומך ב-OpenVPN (לרוב מסופק על ידי המעסיק שלך). בדוק https://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">ערך עקיפת ה-MSS חייב להיות מספר שלם בין 0 ל-9000</string>
+ <string name="mtu_invalid_value">ערך עקיפת ה-MTU חייב להיות מספר שלם בין 64 ל-9000</string>
+ <string name="mssfix_checkbox">עוקף את ערך MSS של מטען TCP</string>
+ <string name="mssfix_dialogtitle">הגדר MSS של מטען TCP</string>
+ <string name="client_behaviour">התנהגות הלקוח</string>
+ <string name="clear_external_apps">נקה אפליקציות חיצוניות מותרות</string>
+ <string name="loading">טוען&#8230;</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="vpn_allow_bypass">אפשר לאפליקציות לעקוף את ה-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">קיימים מספר לקוחות OpenVPN עבור אנדרואיד. הנפוצים שבהם הם OpenVPN עבור אנדרואיד (לקוח זה), OpenVPN Connect והגדרות OpenVPN.&lt;p&gt;ניתן לקבץ את הלקוחות לשתי קבוצות: OpenVPN לאנדרואיד ו-OpenVPN Connect משתמשים ב-API הרשמי של VPNService (Android 4.0+) ואינם דורשים שורש והגדרות OpenVPN המשתמשות ב-root.&lt;p&gt;OpenVPN עבור אנדרואיד הוא לקוח קוד פתוח ופותח על ידי Arne Schwabe. הוא מכוון למשתמשים מתקדמים יותר ומציע הגדרות רבות ויכולת לייבא פרופילים מקבצים ולהגדיר/לשנות פרופילים בתוך האפליקציה. הלקוח מבוסס על גרסת הקהילה של OpenVPN. הוא מבוסס על קוד המקור של OpenVPN 2.x. ניתן לראות בלקוח זה כלקוח חצי רשמי של הקהילה. &lt;p&gt;OpenVPN Connect הוא לקוח ללא קוד פתוח שפותח על ידי OpenVPN Technologies, Inc. הלקוח מסומן כלקוח לשימוש כללי וממוקד יותר למשתמש הממוצע ומאפשר ייבוא של פרופילי OpenVPN. לקוח זה מבוסס על יישום מחדש של OpenVPN C++ של פרוטוקול OpenVPN (זה נדרש כדי לאפשר ל-OpenVPN Technologies, Inc לפרסם אפליקציית iOS OpenVPN). לקוח זה הוא הלקוח הרשמי של טכנולוגיות OpenVPN &lt;p&gt; OpenVPN Settings הוא הוותיק מבין הלקוחות וגם ממשק משתמש עבור OpenVPN בקוד פתוח. בניגוד ל-OpenVPN לאנדרואיד הוא דורש שורש ואינו משתמש ב-API של VPNService. זה לא תלוי באנדרואיד 4.0+</string>
+ <string name="faq_androids_clients_title">הבדלים בין לקוחות OpenVPN Android</string>
+ <string name="ignore_multicast_route">התעלמות ממסלול ריבוי שידור: %s</string>
+ <string name="ab_only_cidr">אנדרואיד תומך רק בנתיבי CIDR ל-VPN. מכיוון שכמעט אף פעם לא נעשה שימוש במסלולים שאינם CIDR, OpenVPN עבור אנדרואיד ישתמש ב-/32 עבור מסלולים שאינם CIDR ויוציא אזהרה.</string>
+ <string name="ab_tethering_44">שיתוף האינטרנט פועל בזמן שה-VPN פעיל. החיבור המקושר לא ישתמש ב-VPN.</string>
+ <string name="ab_kitkat_mss">גרסה מוקדמת של KitKat הגדירה ערך MSS שגוי בחיבורי TCP (#61948). נסה להפעיל את אפשרות mssfix כדי לעקוף את הבאג הזה.</string>
+ <string name="ab_proxy">אנדרואיד תמשיך להשתמש בהגדרות ה-פרוקסי שצוינו עבור חיבור הנייד/וואי-פיי כאשר לא מוגדרים שרתי DNS. OpenVPN עבור אנדרואיד יזהיר אותך על כך ביומן.<p>כאשר VPN מגדיר שרת DNS אנדרואיד לא ישתמש בפרוקסי. אין API להגדיר פרוקסי עבור חיבור VPN.</p></string>
+ <string name="ab_not_route_to_vpn">ה-IP של הלקוח המוגדר וכתובות ה-IP במסיכת הרשת שלו אינם מנותבים ל-VPN. OpenVPN עוקף את הבאג הזה על ידי הוספה מפורשת של מסלול התואם ל-IP של הלקוח ולמסכת הרשת שלו</string>
+ <string name="ab_persist_tun">פתיחת מכשיר tun בזמן שהתקן tun אחר פעיל, המשמש לתמיכה ב-persist-tun, קורסת את VPNServices במכשיר. נדרש אתחול כדי לגרום ל-VPN לעבוד שוב. OpenVPN לאנדרואיד מנסה להימנע מפתיחה מחדש של מכשיר ה-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 VPNs לא עובדים בכלל.</string>
+ <string name="ab_only_cidr_title">מסלולים שאינם CIDR</string>
+ <string name="ab_proxy_title">התנהגות פרוקסי עבור VPNs</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">ערך MSS שגוי עבור חיבור VPN</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</string>
+ <string name="tls_cipher_alert">OpenVPN חדשות יותר עבור גרסאות אנדרואיד (0.6.29/מרץ 2015) משתמשות בברירת מחדל מאובטחת יותר עבור חבילות הצופן המותרות (tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\"). למרבה הצער, השמטת חבילות הצופן הפחות מאובטחות וחבילות הצופן הייצוא, במיוחד השמטת חבילות הצופן שאינן תומכות ב-Perfect Forward Secrecy (דיפי-הלמן) גורמת לכמה בעיות. זה נגרם בדרך כלל על ידי ניסיון עם כוונות טובות אך מבוצעות בצורה גרועה לחזק את אבטחת TLS על ידי הגדרת צופן tls בשרת או כמה מערכת הפעלה משובצת עם SSL מופשט (למשל MikroTik).\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 עבור אנדרואיד יכול לנסות לגלות את הקבצים החסרים בכרטיס ה-sdcard באופן אוטומטי. הקש על הודעה זו התחל את בקשת ההרשאה.</string>
+ <string name="protocol">פרוטוקול</string>
+ <string name="enabled_connection_entry">מופעל</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="crl_title">רשימת ביטולי אישורים (אופציונלי)</string>
+ <string name="reread_log">קרא מחדש (%d) פריטי יומן מקובץ מטמון יומן</string>
+ <string name="samsung_broken">למרות שטלפונים של סמסונג הם בין מכשירי האנדרואיד הנמכרים ביותר, הקושחה של סמסונג היא גם בין קושחות האנדרואיד הכי באגיות. הבאגים אינם מוגבלים לפעולת ה-VPN במכשירים אלה, אך ניתן לעקוף רבים מהם. בהמשך מתוארים חלק מהבאגים הללו.\n\nDNS אינו פועל אלא אם כן שרת ה-DNS בטווח ה-VPN.\n\nבמכשירים רבים של Samsung 5.x תכונת היישומים המותרים/אסורים לא פועלת.\nב-Samsung 6.x דווח כי VPN אינו פועל אלא אם אפליקציית ה-VPN פטורה מתכונות Powersave.</string>
+ <string name="samsung_broken_title">טלפונים של סמסונג</string>
+ <string name="novpn_selected">לא נבחר VPN.</string>
+ <string name="defaultvpn">VPN ברירת מחדל</string>
+ <string name="defaultvpnsummary">VPN בשימוש במקומות שבהם יש צורך ב-VPN ברירת מחדל. אלה נמצאים כעת באתחול, עבור Always-On ואריח ההגדרות המהירות.</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 יעלה לאט את זמן ההמתנה שלו לאחר ניסיון חיבור לא מוצלח עד לערך זה. ברירת המחדל היא 300s.</string>
+ <string name="connectretrymaxtitle">זמן מקסימלי בין ניסיונות חיבור</string>
+ <string name="state_waitconnectretry">המתנה של %s שניות בין ניסיון החיבור</string>
+ <string name="nought_alwayson_warning"><![CDATA[אם לא קיבלת דו-שיח לאישור 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">Config משתמש באפשרות 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 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;החל מגרסה 1.1 של OpenSSL, OpenSSL דוחה חתימות חלשות בתעודות כמו
+ MD5. בנוסף עם OpenSSL 3.0 חתימות עם SHA1 נדחות גם כן.&lt;/p&gt;&lt;p&gt;
+ עליך לעדכן את אישורי
+ VPN בהקדם האפשרי שכן SHA1 גם לא יעבוד יותר בפלטפורמות אחרות בעתיד הקרוב.&lt;/p&gt;
+ &lt;p&gt;אם אתה באמת רוצה להשתמש בתעודות ישנות ושבורות בחר \"לא מאובטח\" עבור פרופיל האבטחה TLS תחת אימות/הצפנה של הפרופיל&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">Hash חלש (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</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 למאגר המפתחות של אנדרואיד או שנה ל-OpenVPN 2.x תחת הגדרות כלליות.</string>
+ <string name="proxy">פרוקסי</string>
+ <string name="Use_no_proxy">ללא</string>
+ <string name="tor_orbot">Tor (Orbot)</string>
+ <string name="openvpn3_socksproxy">יישום OpenVPN 3 C++ אינו תומך בחיבור באמצעות Proxy Socks</string>
+ <string name="no_orbotfound">לא ניתן למצוא את אפליקציית Orbot. אנא התקן את Orbot או השתמש באינטגרציה ידנית של Socks v5.</string>
+ <string name="faq_remote_api_title">API מרוחק</string>
+ <string name="faq_remote_api">OpenVPN לאנדרואיד תומך בשני ממשקי API מרוחקים, API מתוחכם המשתמש ב-AIDL (remoteEXample במאגר git) ואחד פשוט באמצעות Intents. &lt;p&gt;דוגמאות לשימוש ב-adb shell והכוונות. החלף את שם הפרופיל שלך בשם הפרופיל שלך&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn/.api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN - e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn/.api.ConnectVPN</string>
+ <string name="enableproxyauth">אפשר אימות פרוקסי</string>
+ <string name="error_orbot_and_proxy_options">לא ניתן להשתמש בהצהרת http-proxy-option נוספת ובשילוב Orbot בו-זמנית</string>
+ <string name="info_from_server">מידע מהשרת: ‚%s’</string>
+ <string name="channel_name_userreq">נדרשת פעולה מהמשתמש</string>
+ <string name="channel_description_userreq">חיבור OpenVPN דורש קלט משתמש, למשל אימות שני פקטור
+
+ </string>
+ <string name="openurl_requested">יש לפתוח את הכתורת כדי להמשיך באימות ה־VPN</string>
+ <string name="crtext_requested">ענה לאתגר להמשיך באימות VPN</string>
+ <string name="state_auth_pending">בהמתנה לאימות</string>
+ <string name="external_authenticator">תכנית אימות חיצונית</string>
+ <string name="configure">הגדרה</string>
+ <string name="extauth_not_configured">לא מוגדר מאמת חיצוני</string>
+ <string name="faq_killswitch_title">חסום חיבור שאינו VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">לעתים קרובות רצוי לחסום חיבורים ללא VPN. אפליקציות אחרות משתמשות לעתים קרובות במונחי שיווק כמו \"Killswitch\" או \"מנהרה חלקה\" עבור תכונה זו. OpenVPN והאפליקציה הזו מציעות persist-tun, תכונה ליישום פונקציונליות זו.&lt;p&gt;הבעיה עם כל השיטות הללו שמציעות אפליקציות היא שהן יכולות לספק את מיטב המאמצים והן אינן פתרונות מלאים. באתחול, קריסת אפליקציה ומקרי פינות אחרים, האפליקציה לא יכולה להבטיח שהחסימה הזו של חיבור ללא VPN עובד. ובכך נותן למשתמש תחושת ביטחון מזויפת.&lt;p&gt;הדרך האמינה היחידה &lt;b&gt;להבטיח&lt;/b&gt; שאינם VPN חסומים היא להשתמש ב-Android 8.0 ואילך ולהשתמש בהגדרה \"חסום חיבורים ללא VPN\" שניתן למצוא תחת הגדרות &gt; רשת &amp; אינטרנט &gt; מתקדם/VPN &gt; OpenVPN עבור Android &gt; אפשר VPN תמיד פועל, אפשר חסימת חיבורים ללא VPN</string>
+ <string name="summary_block_address_families">אפשרות זו מורה לאנדרואיד לא לאפשר פרוטוקולים (IPv4/IPv6) אם ה-VPN לא מגדיר כתובות IPv4 או IPv6.</string>
+ <string name="title_block_address_families">חסום את IPv6 (או IPv4) אם ה-VPN לא משתמש בו</string>
+ <string name="install_keychain">התקן אישור חדש</string>
+ <string name="as_servername">שם שרת AS</string>
+ <string name="server_url">כתובת האתר של השרת</string>
+ <string name="request_autologin">בקש פרופיל התחברות אוטומטי</string>
+ <string name="import_from_as">ייבא פרופיל משרת מרוחק</string>
+ <string name="no_default_vpn_set">ברירת המחדל של VPN לא הוגדרה. אנא הגדר את ברירת המחדל של VPN לפני הפעלת אפשרות זו.</string>
+ <string name="internal_web_view">WebView פנימי</string>
+ <string name="faq_ncp">ישנן כמה וריאציות של הודעה זו בהתאם למצב המדויק. המשותף לכולם הוא שהשרת והלקוח לא יכלו להסכים על צופן משותף. הסיבות העיקריות הן: &lt;ul&gt;&lt;li&gt; אתה עדיין מסתמך על העובדה ש-OpenVPN 2.4 ומעלה אפשר BF-CBC בתצורת ברירת המחדל (אם לא הוגדר -- צופן). OpenVPN 2.5 אינו מאפשר זאת כברירת מחדל מכיוון שהוא צופן &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;שבור/מיושן&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;השרת מריץ OpenVPN 2.3 (או אפילו ישן יותר) עם --enable-small (לפחות OpenVPN בן 4-5 שנים)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;תצורה שבורה (למשל, אי התאמה של צופני נתונים בלקוח ובשרת)&lt;/li&gt; &lt;p&gt; The &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN חלק ידני על משא ומתן צופן&lt;/a&gt; מסביר היטב את התרחישים השונים של משא ומתן צופן ומה לעשות במצבים אלה.&lt;p&gt;מכשירי TP-Link משתמשים בגרסת OpenVPN 2.3.x בת 5 שנים לפחות (ייתכן שישנה יותר) במכשירים שלהם, אפילו בדגמי 2019/2020.&lt;p&gt;אחרון חביב, יש ספק VPN פופולרי שיש לו שרת מקולקל שתמיד אומר שהוא משתמש ב-\'BF-CBC\' מכיוון שהמפתח שלו חשב שזה יהיה רעיון טוב ליצור תיקון ניהול צופן קנייני שאינו תואם לתקן. OpenVPN.&lt;p&gt;לסיכום: כל התצורות השפויות לא אמורות לקבל שגיאות אלו. אבל (חוץ מהשרת של ספק ה-VPN השבור) ניתן לשכנע את הלקוח בכל זאת להתחבר (תיקון הסימפטום ולא הבעיה האמיתית). בעת חיבור לשרתים ישנים יותר, אפשרות מצב התאימות בהגדרות הבסיסיות של VPN אמורה להיות מסוגלת לטפל ברוב בעיות התאימות הנפוצות.</string>
+ <string name="check_peer_fingerprint">בדוק טביעת אצבע של אישור עמית</string>
+ <string name="fingerprint">(הזן את טביעת האצבע SHA256 של אישורי השרת)</string>
+ <string name="proxy_info">פרוקסי HTTP: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">אנא השתמש בתכונת ה-Always On של Android כדי להפעיל VPN בזמן האתחול.</string>
+ <string name="open_vpn_settings">פתח את הגדרות VPN</string>
+ <string name="trigger_pending_auth_dialog">לחץ כאן פתח חלון כדי להזין אימות נדרש נוסף</string>
+ <string name="compatmode">מצב תאימות</string>
+ <string name="compat_mode_label">מצב תאימות</string>
+ <string name="loadossllegacy">טען ספק OpenSSL מדור קודם</string>
+ <string name="bf_cbc_requires_legacy">פרופילים משתמש ב-BF-CBC אשר תלוי בספק OpenSSL מדור קודם (לא מופעל).</string>
+ <string name="allow_translations_title">אפשר תרגומים שתרמו מהקהילה</string>
+ <string name="allow_translations_summary">מאפשר לתרגם את האפליקציה עם תרגומים שנתרמו על ידי הקהילה. דורש הפעלה מחדש של האפליקציה כדי להפעיל אותה.</string>
+ <string name="tls_profile">פרופיל אבטחה של TLS</string>
+ <string name="encrypt_profiles">לנסות להצפין פרופילים באחסון (אם נתמך על ידי מערכת ה־Android)</string>
+</resources>
diff --git a/main/src/ui/res/values-hu/arrays.xml b/main/src/ui/res/values-hu/arrays.xml
index ef5c852f..6369c72c 100644
--- a/main/src/ui/res/values-hu/arrays.xml
+++ b/main/src/ui/res/values-hu/arrays.xml
@@ -14,12 +14,12 @@
<item>Felhasználó/Jelszó + Tanúsítványok</item>
<item>Felhasználó/Jelszó + PKCS12 </item>
<item>Felhasználó/Jelszó + Android</item>
- <item>External Auth Provider</item>
+ <item>Külső Hitelesítési Szolgáltató</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Nincs megadva</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Titkosítás (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-hu/strings.xml b/main/src/ui/res/values-hu/strings.xml
index 6d7bec00..085ac844 100644
--- a/main/src/ui/res/values-hu/strings.xml
+++ b/main/src/ui/res/values-hu/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">PKCS12 Jelszó</string>
<string name="file_select">Válasszon&#8230;</string>
<string name="file_nothing_selected">Válasszon egy fájlt</string>
- <string name="useTLSAuth">TLS-hitelesítés használata</string>
- <string name="tls_direction">TLS irány</string>
<string name="ipv6_dialog_tile">Adja meg az IPv6 címet CIDR formában (pl.: 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Adja meg az IPv4 címet CIDR formában (pl.: 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 Cím</string>
<string name="ipv6_address">IPv6 Cím</string>
<string name="custom_option_warning">Egyéni OpenVPN opciók megadása. Körültekintéssel használja! Vegye figyelembe, hogy a tun-nal kapcsolatos OpenVPN beállítások nem támogatottak a VPNSettings felépítéséből adódóan. Ha úgy gondolja, hogy egy fontos opció hiányzik, lépjen kapcsolatba a fejlesztőkkel</string>
+ <string name="auth_username">Felhasználónév (hagyja üresen hitelesítés nélkül)</string>
<string name="auth_pwquery">Jelszó</string>
<string name="static_keys_info">A statikus konfigurációhoz a TLS Auth Key-ek statikus kulcsokként lesznek használva</string>
<string name="configure_the_vpn">A VPN beállítása</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Kérem, egyedi profilnevet válasszon</string>
<string name="profilename">Profil név</string>
<string name="no_keystore_cert_selected">Válasszon egy felhasználói tanúsítványt</string>
+ <string name="no_ca_cert_selected">You must select a CA certificate or enable peer fingerprint check</string>
<string name="no_error_found">Hiba nem található</string>
<string name="config_error_found">Hiba a beállításokban</string>
<string name="ipv4_format_error">Hiba az IPv4 cím elemzésekor</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Tanúsítvány Kiszolgálónév Ellenőrzés</string>
<string name="enter_tlscn_dialog">Adja meg a távoli tanúsítvány DN ellenőrzését (pl.: C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nAdja meg a teljes DN-t vagy az RDN-t (openvpn.blinkt.de a példában) vagy egy RDN prefix-et az ellenőrzéshez.\n\nRDN prefix használatakor a \"Server\" egyezik a \"Server-1\"-gyel és a \"Server-2\"-vel\n\nA mező üresen hagyásakor az RDN a kiszolgáló nevével kerül ellenőrzésre.\n\nTovábbi részleteket az OpenVPN 2.3.1+ manuál oldalon talál —verify-x509-name</string>
<string name="enter_tlscn_title">Távoli tanúsítvány tárgy</string>
- <string name="tls_key_auth">TLS Key Hitelesítés engedélyetése</string>
- <string name="tls_auth_file">TLS Auth Fájl</string>
<string name="pull_on_summary">IP címek, útvonalak és időzítések lekérése a kiszolgálótól.</string>
<string name="pull_off_summary">Nem történt információkérés a kiszolgálótól. Alul meg kell adni a beállításokat.</string>
<string name="use_pull">Pull Beállítások</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Az image-ed nem támogatja a VPNService API-t, elnézést :(</string>
<string name="encryption">Titkosítás</string>
<string name="cipher_dialog_title">Adja meg a titkosítási módszert</string>
+ <string name="chipher_dialog_message">Adja meg az OpenVPN által használt adattitkosítási titkosítási algoritmusokat, a következővel elválasztva: (--data-ciphers). Hagyja üresen az alapértelmezett AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305 használatához.</string>
<string name="auth_dialog_message">Adja meg az OpenVPN által használt authentication digest-et. Hagyja üresen az alapértelmezett digest-hez.</string>
<string name="settings_auth">Hitelesítés/Titkosítás</string>
<string name="file_explorer_tab">Fájlkezelő</string>
@@ -201,8 +200,6 @@
<string name="using_proxy">%1$s %2$s proxy használata</string>
<string name="use_system_proxy">Rendszerproxy használata</string>
<string name="use_system_proxy_summary">Rendszerszintű konfiguráció használata a HTTP/HTTPS proxy csatlakozáshoz.</string>
- <string name="onbootrestartsummary">Az OpenVPN csatlakozni fog a VPN-hez, ha az a rendszer indulásakor aktív. Kérem, olvassa el a csatlakozás figyelmeztető GYIK-et mielőtt ezt az opciót Android &lt; 5.0-n használná.</string>
- <string name="onbootrestart">Csatlakozás rendszerindításkor</string>
<string name="ignore">Figyelmen kívül hagy</string>
<string name="restart">Újraindítás</string>
<string name="restart_vpn_after_change">A konfiguráció változások a VPN újraindítása után lépnek életbe. (Újra)indítja most a VPN-t?</string>
@@ -258,7 +255,6 @@
<string name="encryption_cipher">Titkosítás rejtjelezés</string>
<string name="packet_auth">Csomag hitelesítés</string>
<string name="auth_dialog_title">Adja meg a csomaghitelesítési metódust</string>
- <string name="built_by">%s fordítóval</string>
<string name="debug_build">hibakeresési fordítás</string>
<string name="official_build">hivatalos build</string>
<string name="make_selection_inline">Másolás profilba</string>
@@ -356,7 +352,6 @@
<string name="ab_tethering_44">Internetmegosztás működik mialatt a VPN aktív. A megosztott kapcsolat NEM fogja használni a VPN-t.</string>
<string name="ab_kitkat_mss">A korai KitKat verzió rosszul állítja be az MSS értéket a TCP kapcsolaton (#61948). Próbálja meg engedélyezni az mssfix opciót a hiba kiküszöbölésére.</string>
<string name="ab_proxy">Az Android továbbra is használni fogja a proxy beállításokat, amik a mobil/WiFi kapcsolathoz vannak megadva ameddig nincs beállítva DNS kiszolgáló. Az OpenVPN for Android erről figyelmeztetni fog a log-ban.<p>Amikor a VPN beállít egy DNS kiszolgálót, az Android nem fogja tovább használni a proxy-t. Nincs API proxy beállításra VPN kapcsolathoz.</p></string>
- <string name="ab_lollipop_reinstall">A VPN alkalmazások nem biztos hogy működnek ha uninstallálják majd újra installálják. A részleteket lásd #80074</string>
<string name="ab_not_route_to_vpn">A konfigurált kliens IP és a hálózati maszkjában levő IP-k útvonala nem a VPN-en keresztül vezet. Az OpenVPN úgy küszöböli ki ezt a hibát, hogy explicit hozzáad egy útvonalat ami a kliens IP és hálózati maszkjának megfelel</string>
<string name="ab_persist_tun">Egy tun eszköz megnyitása, mialatt egy másik tun eszköz aktív, ami megmaradó-tun esetén használt, a VPNService összeomlását okozza az eszközön. A VPN újbóli működéséhez újraindítás szükséges. Az OpenVPN for Android megpróbálja elkerülni a tun eszköz újra megnyitását és ha valóban szükséges akkor először lezárja az aktuális TUN-t az új TUN megnyitása előtt az összeomlás elkerülése érdekében. Ez egy rövid ablakoz vezethet ami alatt csomagok továbbítódhatnak nem-VPN kapcsolaton keresztül. A VPNService ennek ellenére néha mégis összeomlik, ami az eszköz újraindítását igényli.</string>
<string name="ab_secondary_users">A VPN egyáltalán nem működik másodlagos felhasználóknak.</string>
@@ -364,7 +359,6 @@
<string name="ab_vpn_reachability_44">Csak azok a célállomások érhetőek el VPN-en, amik VPN nélkül is elérhetőek. Az IPv6 VPN egyáltalán nem működik.</string>
<string name="ab_only_cidr_title">Nem CIDR Útvonalak</string>
<string name="ab_proxy_title">Proxy viselkedés a VPN-ekhez</string>
- <string name="ab_lollipop_reinstall_title">VPN alkalmazások újratelepítése</string>
<string name="version_upto">%s és korábbi</string>
<string name="copy_of_profile">%s másolata</string>
<string name="ab_not_route_to_vpn_title">Útvonal a konfigurált IP címhez</string>
@@ -374,14 +368,14 @@
<string name="custom_connection_options">Egyéni beállítások</string>
<string name="remove_connection_entry">Kapcsolat bejegyzés eltávolítása</string>
<string name="ab_kitkat_reconnect_title">Véletlenszerű lecsatlakozások a mobil hálózatról</string>
- <string name="ab_vpn_reachability_44_title">A távoli hálózat nem elérhető</string>
+ <string name="ab_vpn_reachability_44_title">Copy of %s</string>
<string name="ab_persist_tun_title">Megmaradó tun mód</string>
- <string name="version_and_later">%s vagy újabb</string>
+ <string name="version_and_later">%s і больш познія</string>
<string name="tls_cipher_alert_title">Kapcsolódás sikertelen SSL23_GET_SERVER_HELLO:sslv3 alert handshake hibával</string>
<string name="tls_cipher_alert">Újabb OpenVPN for Android verziók (0.6.29/2015 március) biztonságosabb alapértelmezést használnak az engedélyezett rejtjelező kísérletekhez (tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\"). Sajnos a kevésbé biztonságos és export rejtjelező kísérletek kihagyása, különösen azoknak a rejtjelező kísérleteknek a kihagyása amik nem támogatják a Perfect Forward Security-t (Diffie-Hellman), néhány problémát okoz. Ezt általában egy jószándékú de gyengén végrehajtott TLS biztonság fokozás okozza a szerveren vagy néhány beágyazott OS-nél lecsupaszított SSL-el (pl.: MikroTik).\nA probléma megoldásához állítsa a tls-rejtjelezés alapértelmezését ésszerűbbre a szerveren, mint például tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\". A probléma kliensen történő kiküszöböléséhez adja hozzá az Android kliensben az egyedi opciókhoz hogy tls-cipher DEFAULT.</string>
<string name="message_no_user_edit">Ez a profil egy külső alkalmazásból (%s) lett hozzáadva és a felhasználó által nem szerkeszthetőnek lett jelölve.</string>
<string name="crl_file">Tanúsítvány Visszavonási Lista</string>
- <string name="service_restarted">OpenVPN Service újraindítása (az alkalmazás valószínűleg összeomlott vagy memória nyomásra bezárták)</string>
+ <string name="service_restarted">Restarting OpenVPN Service (App crashed probably crashed or killed for memory pressure)</string>
<string name="import_config_error">A konfiguráció importálása akadályba ütközött, nem lehet menteni</string>
<string name="Search">Keresés</string>
<string name="lastdumpdate">(Utolsó dump %3$s (%1$d:%2$d))</string>
@@ -435,6 +429,12 @@
<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 1.1-es verziójától kezdve az OpenSSL elutasítja a gyenge aláírásokat az olyan tanúsítványokban, mint
+ MD5. Ezenkívül az OpenSSL 3.0 esetén az SHA1-es aláírások is elutasításra kerülnek.&lt;/p&gt;&lt;p&gt;
+ A lehető leghamarabb frissítse a VPN-tanúsítványokat, mivel az SHA1 a
+ már nem fog működni más platformokon.&lt;/p&gt;
+ &lt;p&gt;Ha valóban régi és hibás tanúsítványokat szeretne használni, válassza a \"nem biztonságos\" lehetőséget a TLS biztonsági profilhoz a profil hitelesítése/titkosítása alatt.&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>
@@ -476,8 +476,31 @@
hitelesítést
</string>
<string name="openurl_requested">Nyissa meg az URL-t a VPN-hitelesítés folytatásához</string>
+ <string name="crtext_requested">Answer challenge to continue VPN authentication</string>
<string name="state_auth_pending">Hitelesítés függőben</string>
<string name="external_authenticator">Külső Hitelesítő</string>
<string name="configure">Beállítás</string>
<string name="extauth_not_configured">A külső hitelesítő nincs konfigurálva</string>
+ <string name="faq_killswitch_title">Nem VPN kapcsolat blokkolása (\"Killswitch\")</string>
+ <string name="faq_killswitch">It is often desired to block connections without VPN. Other apps often use markting terms like \"Killswitch\" or \"Seamless tunnel\" for this feature. OpenVPN and this app offer persist-tun, a feature to implement this functionality.&lt;p&gt;The problem with all these methods offered by apps is that they can only provide best effort and are no complete solutions. On boot, app crashing and other corner cases the app cannot ensure that this block of non VPN connection works. Thus giving the user a false sense of security.&lt;p&gt;The &lt;b&gt;only&lt;/b&gt; reliable way to ensure non VPN connections are blocked is to use Android 8.0 or later and use the \"block connections without VPN\" setting that can be found under Settings &gt; Network &amp; Internet &gt; Advanced/VPN &gt; OpenVPN for Android &gt; Enable Always ON VPN, Enable Block Connections without VPN</string>
+ <string name="summary_block_address_families">Ez a beállítás arra utasítja az Androidot, hogy ne engedélyezze a protokollokat (IPv4/IPv6), ha a VPN nem állít be IPv4- vagy IPv6-címeket.</string>
+ <string name="title_block_address_families">IPv6 (vagy IPv4) blokkolása, ha a VPN nem használja</string>
+ <string name="install_keychain">Új tanúsítvány telepítése</string>
+ <string name="as_servername">AS szervernév</string>
+ <string name="server_url">Szerver URL</string>
+ <string name="request_autologin">automatikus bejelentkezési profil kérése</string>
+ <string name="import_from_as">Profil importálása a távoli szerverről</string>
+ <string name="no_default_vpn_set">Az alapértelmezett VPN nincs beállítva. Kérjük, állítsa be az alapértelmezett VPN-t mielőtt engedélyezné ezt az opciót.</string>
+ <string name="internal_web_view">Belső WebView</string>
+ <string name="faq_ncp">There are some variation of this message depending on the exact situation. They all have in common that server and client could not agree on a common cipher. The main reasons are: &lt;ul&gt;&lt;li&gt; You are still relying on the fact that OpenVPN 2.4 and older allowed BF-CBC in the default configuration (if no --cipher was set). OpenVPN 2.5 does not allow it per default anymore since it is a &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;broken/outdated cipher&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The server runs OpenVPN 2.3 (or even older) with --enable-small (at least 4-5 year old OpenVPN)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;Broken configuration (e.g., mismatching data-ciphers on client and server)&lt;/li&gt; &lt;p&gt; The &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN manual section on cipher negotiation&lt;/a&gt; explains the different scenarios of cipher negotiation very well and what to do in these situation.&lt;p&gt;TP-Link devices use a at least 5 year old OpenVPN 2.3.x version (possibly older) on their devices, even in the 2019/2020 models.&lt;p&gt;Last but not least, there is a popular VPN provider that has a broken server that always says it is using \'BF-CBC\' because its developer thought it would be a good idea to create a proprietary cipher negotiation patch that is incompatible with standard OpenVPN.&lt;p&gt;In summary: all sane configurations should not get these errors. But (apart from the broken VPN provider\'s server) the client can be persuaded to still connect (fixing the sympton and not the real problem). When connecting to older servers the comaptiblity mode option in the basic settings of a VPN should be able to address most of the common compatiblity problems.</string>
+ <string name="proxy_info">HTTP Proxy: %1$s %2$d</string>
+ <string name="open_vpn_settings">Open VPN Beállítások</string>
+ <string name="compatmode">Kompatibilitási Mód</string>
+ <string name="compat_mode_label">Kompatibilitási mód</string>
+ <string name="loadossllegacy">OpenSSL legacy szolgáltató betöltése</string>
+ <string name="bf_cbc_requires_legacy">A profilok BF-CBC-t használnak ami függ az Open SSL legacy szolgáltatótol (nincs engedélyezve).</string>
+ <string name="allow_translations_title">Közösségi fordítások engedélyezése</string>
+ <string name="allow_translations_summary">Engedélyezze az app számára, hogy közösség általi fordításokat használjon. Az aktiváláshoz az alkalmazást újra kell indítani.</string>
+ <string name="tls_profile">TSL Biztonsági Profil</string>
+ <string name="encrypt_profiles">Próbálja meg titkosítani a tárhelyen lévő profilokat (ha az Android OS által támogatva van)</string>
</resources>
diff --git a/main/src/ui/res/values-in/arrays.xml b/main/src/ui/res/values-in/arrays.xml
index 8f6ebdb4..56ed81e3 100644
--- a/main/src/ui/res/values-in/arrays.xml
+++ b/main/src/ui/res/values-in/arrays.xml
@@ -1,5 +1,4 @@
<?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
@@ -8,7 +7,7 @@
<!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
<string-array name="vpn_types">
<item>Sertifikat</item>
- <item>Berkas PKCS12</item>
+ <item>File PKCS12</item>
<item>Android Certificate</item>
<item>Nama Pengguna\Sandi</item>
<item>Kunci Tetap</item>
@@ -18,9 +17,9 @@
<item>External Auth Provider</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Belum ditentukan</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Encryption (tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -29,4 +28,16 @@
<item>Disconnect, keep password</item>
<item>Abaikan, coba lagi</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Modern defaults</item>
+ <item>OpenVPN 2.5.x rekan-rekan</item>
+ <item>OpenVPN 2.4.x rekan-rekan</item>
+ <item>OpenVPN 2.3.x dan rekan-rekan yang lebih lama</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>insecure (not recommend, allows insecure crypto)</item>
+ <item>legacy (default)</item>
+ <item>disukai (disarankan tetapi kompatibilitas terbatas)</item>
+ <item>Suite B (only NIST approved elliptic curves)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-in/plurals.xml b/main/src/ui/res/values-in/plurals.xml
index 4ec8c686..fd2a1275 100644
--- a/main/src/ui/res/values-in/plurals.xml
+++ b/main/src/ui/res/values-in/plurals.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--Generated by crowdin.com-->
<resources>
<plurals name="months_left">
<item quantity="other">%d bulan kiri</item>
@@ -7,4 +6,10 @@
<plurals name="days_left">
<item quantity="other">%d hari lagi</item>
</plurals>
+ <plurals name="hours_left">
+ <item quantity="other">%d jam lagi</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="other">%d menit lagi</item>
+ </plurals>
</resources>
diff --git a/main/src/ui/res/values-in/strings.xml b/main/src/ui/res/values-in/strings.xml
index 05e09d9c..60e8d9a7 100644
--- a/main/src/ui/res/values-in/strings.xml
+++ b/main/src/ui/res/values-in/strings.xml
@@ -27,13 +27,12 @@
<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>
- <string name="useTLSAuth">Gunakan Autentikasi TLS</string>
- <string name="tls_direction">Pengarah TLS</string>
<string name="ipv6_dialog_tile">Masukkan Alamat IPv6/Netmask dalam Format CIDR (contoh: 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Masukkan IPv4 Address/Netmask dalam format CIDR (contoh: 1.2.3.4/24)</string>
<string name="ipv4_address">Alamat IPv4</string>
<string name="ipv6_address">Alamat IPv6</string>
<string name="custom_option_warning">Masukan pengaturan kustom OpenVPN. Harap gunakan dengan hati-hati. Perlu dicatat bahwa pengaturan yang terkait dengan TUN OpenVPN tidak didukung oleh disain VPNSettings. Jika anda fikir ada hal penting yang belum tersedia segera hubungi pembuatnya</string>
+ <string name="auth_username">Nama pengguna (biarkan kosong tanpa autentikasi)</string>
<string name="auth_pwquery">Kata Sandi</string>
<string name="static_keys_info">Untuk pengaturan tetap, kunci otentifikasi TLS akan digunakan sebagai kunci statis</string>
<string name="configure_the_vpn">Konfigurasi VPN</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Silakan masukan nama profil yang berbeda</string>
<string name="profilename">Nama profil</string>
<string name="no_keystore_cert_selected">Anda harus memilih sertifikat pengguna</string>
+ <string name="no_ca_cert_selected">Anda harus memilih sertifikat CA atau mengaktifkan pemeriksaan sidik jari rekan</string>
<string name="no_error_found">Tidak ada kesalahan</string>
<string name="config_error_found">Konfigurasi Salah</string>
<string name="ipv4_format_error">Kesalahan penulisan alamat IPV4</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Cek nama sertifikat Host</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>
<string name="pull_on_summary">Meminta pilihan alamat IP, rute dan waktu dari server.</string>
<string name="pull_off_summary">Tidak ada informasi diminta dari server. Seting harus ditentukan di bawah ini</string>
<string name="use_pull">Tarik pengaturan</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Gambar Anda tidak mendukung VPNService API, maaf:(</string>
<string name="encryption">Enkripsi</string>
<string name="cipher_dialog_title">Masukkan metode enkripsi</string>
+ <string name="chipher_dialog_message">Masukkan algoritma enkripsi data cipher yang digunakan oleh OpenVPN dipisahkan dengan : (--data-ciphers). Biarkan kosong untuk menggunakan default AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
<string name="auth_dialog_message">Masukkan digest otentikasi yang digunakan OpenVPN. Biarkan kosong untuk menggunakan standar digest.</string>
<string name="settings_auth">Otentikasi/Enkripsi</string>
<string name="file_explorer_tab">Penjelajah berkas</string>
@@ -201,8 +200,6 @@
<string name="using_proxy">Menggunakan proxy %1$s %2$s</string>
<string name="use_system_proxy">Gunakan sistem proxy</string>
<string name="use_system_proxy_summary">Gunakan konfigurasi lebih luas untuk menyambung system melalui proxy HTTP/HTTPS</string>
- <string name="onbootrestartsummary">OpenVPN akan menghubungkan VPN ditentukan apakah itu aktif di sistem boot. Silakan baca koneksi peringatan FAQ sebelum menggunakan opsi ini pada Android &lt; 5.0.</string>
- <string name="onbootrestart">Minatosuki</string>
<string name="ignore">Abaikan</string>
<string name="restart">Restart</string>
<string name="restart_vpn_after_change">Perubahan konfigurasi baru diterapkan setelah restart VPN. Restart VPN sekarang?</string>
@@ -258,7 +255,6 @@
<string name="encryption_cipher">Enkripsi sandi</string>
<string name="packet_auth">Otentikasi paket</string>
<string name="auth_dialog_title">Masukkan metode otentikasi paket</string>
- <string name="built_by">dibangun oleh %s</string>
<string name="debug_build">Pengembangan debug</string>
<string name="official_build">Build Resmi</string>
<string name="make_selection_inline">Salin ke profil</string>
@@ -356,7 +352,6 @@
<string name="ab_tethering_44">Penarikan bekerja sementara VPN aktif. Ditambatkan sambungan tidak akan menggunakan VPN.</string>
<string name="ab_kitkat_mss">Versi KitKat awal menetapkan nilai MSS salah pada TCP koneksi (# 61948). OpenVPN untuk secara otomatis mengaktifkan mssfix pilihan untuk solusi bug ini.</string>
<string name="ab_proxy">Android akan tetap menggunakan pengaturan proxy Anda ditentukan untuk mobile koneksi / Wi-Fi ketika tidak ada server DNS diatur. OpenVPN untuk Android akan memperingatkan Anda tentang hal ini dalam log. <p> Ketika VPN menetapkan server DNS Android tidak akan proxy. Tidak ada API untuk mengatur proxy untuk koneksi VPN. </p></string>
- <string name="ab_lollipop_reinstall">Aplikasi VPN dapat berhenti bekerja ketika dihapus dan diinstal ulang lagi. Untuk jelasnya lihat # 80074</string>
<string name="ab_not_route_to_vpn">IP klien dikonfigurasi dan IP di topeng jaringan tidak diteruskan ke VPN. OpenVPN bekerja di sekitar bug ini dengan secara eksplisit menambahkan rute yang corrosponds ke IP klien dan netmask nya</string>
<string name="ab_persist_tun">Membuka perangkat tun saat perangkat tun lain sedang aktif, yang digunakan untuk dukungan bertahan-tun, crash VPNServices pada perangkat. A reboot diperlukan untuk membuat pekerjaan VPN lagi. OpenVPN untuk Android mencoba untuk menghindari membuka kembali perangkat tun dan jika benar-benar diperlukan pertama menutup TUN saat sebelum membuka perangkat TUN baru untuk menghindari crash. Hal ini dapat menyebabkan jendela pendek di mana paket dikirim melalui koneksi non-VPN. Bahkan dengan solusi ini VPNServices kadang-kadang crash dan memerlukan reboot perangkat.</string>
<string name="ab_secondary_users">VPN tidak bekerja sama sekali bagi pengguna sekunder.</string>
@@ -364,7 +359,6 @@
<string name="ab_vpn_reachability_44">Hanya tujuan yang bisa dicapai melalui VPN yang bisa dijangkau tanpa VPN. VPN IPv6 tidak bekerja sama sekali.</string>
<string name="ab_only_cidr_title">Rute non CIDR</string>
<string name="ab_proxy_title">Tindakan Proxy untuk VPN</string>
- <string name="ab_lollipop_reinstall_title">Menginstal ulang aplikasi VPN</string>
<string name="version_upto">%s dan sebelumnya</string>
<string name="copy_of_profile">Salinan dari %s</string>
<string name="ab_not_route_to_vpn_title">Alihkan ke alamat IP yang telah ditentukan</string>
@@ -435,6 +429,12 @@
<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;Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like
+ MD5. Additionally with the OpenSSL 3.0 signatures with SHA1 are also rejected.&lt;/p&gt;&lt;p&gt;
+ You should update the VPN certificates as soon as possible as SHA1 will also no longer work on other platforms in the
+ near future.&lt;/p&gt;
+ &lt;p&gt;If you really want to use old and broken certificates select \"insecure\" for the TLS security profile under Authentication/Encryption of the profile&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>
@@ -468,6 +468,7 @@
</string>
<string name="openurl_requested">Buka URL untuk melanjutkan otentikasi VPN</string>
+ <string name="crtext_requested">Answer challenge to continue VPN authentication</string>
<string name="state_auth_pending">Otentikasi tertunda</string>
<string name="external_authenticator">Pemeriksa Eksternal</string>
<string name="configure">Konfigurasikan</string>
diff --git a/main/src/ui/res/values-it/arrays.xml b/main/src/ui/res/values-it/arrays.xml
index b968a77f..aa5ce629 100644
--- a/main/src/ui/res/values-it/arrays.xml
+++ b/main/src/ui/res/values-it/arrays.xml
@@ -17,9 +17,9 @@
<item>Provider di autenticazione esterno</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Non specificato</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Crittografia (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Disconnetti, mantieni la password</item>
<item>Ignora, riprova</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Impostazioni predefinite moderne</item>
+ <item>Peer di OpenVPN 2.5.x</item>
+ <item>Peer di OpenVPN 2.4.x</item>
+ <item>Peer di OpenVPN 2.3.x e precedenti</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>insicuro (non consigliato, consente crittografia non sicura)</item>
+ <item>legacy (predefinito)</item>
+ <item>preferito (consigliato ma compatibilità limitata)</item>
+ <item>Suite B (solo curve ellittiche approvate dal NIST)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-it/strings.xml b/main/src/ui/res/values-it/strings.xml
index ade79873..e6961d92 100644
--- a/main/src/ui/res/values-it/strings.xml
+++ b/main/src/ui/res/values-it/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">Password PKCS12</string>
<string name="file_select">Seleziona&#8230;</string>
<string name="file_nothing_selected">Devi selezionare un file</string>
- <string name="useTLSAuth">Usa autenticazione TLS</string>
- <string name="tls_direction">Direzione TLS</string>
<string name="ipv6_dialog_tile">Inserire l\'indirizzo IPv6 e la maschera di rete in formato CIDR (ad esempio 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Inserire l\'indirizzo IPv4 e la maschera di rete in formato CIDR (ad esempio 1.2.3.4/24)</string>
<string name="ipv4_address">Indirizzo IPv4</string>
@@ -69,8 +67,6 @@
<string name="remote_tlscn_check_title">Verifica il certificato dell\'Host</string>
<string name="enter_tlscn_dialog">Specifica il controllo da effettuare per verificare il certificato DN remoto (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nPer verifica specifica il DN o RDN completo (nell\'esempio openvpn.blinkt.de) oppure un prefisso RDN.\n\nQuando usi un prefisso RDN \"Server\" è valido per \"Server-1\" e \"Server-2\"\n\nLasciando la casella vuota verrà controllato l\'RDN con l\'hostname del server.\n\nPer maggiori informazioni consulta la manpage di OpenVPN 2.3.1+ sotto la voce —verify-x509-name</string>
<string name="enter_tlscn_title">Soggetto del certificato remoto</string>
- <string name="tls_key_auth">Abilita l\'autenticazione tramite TLS</string>
- <string name="tls_auth_file">File di autenticazione TLS</string>
<string name="pull_on_summary">Richiede indirizzi IP, instradamenti ed opzioni di sincronizzazione al server.</string>
<string name="pull_off_summary">Nessuna informazione è richiesta al server. Le impostazioni devono essere specificate qui di seguito.</string>
<string name="use_pull">Richiedi impostazioni</string>
@@ -205,8 +201,6 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</string>
<string name="using_proxy">Utilizzo del proxy %1$s %2$s</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>
@@ -262,7 +256,6 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</string>
<string name="encryption_cipher">Algoritmo di crittografia</string>
<string name="packet_auth">Autenticazione pacchetti</string>
<string name="auth_dialog_title">Seleziona il metodo di autenticazione dei pacchetti</string>
- <string name="built_by">compilato da %s</string>
<string name="debug_build">versione di debug</string>
<string name="official_build">versione ufficiale</string>
<string name="make_selection_inline">Copia nel profilo</string>
@@ -360,7 +353,6 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</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>
@@ -368,7 +360,6 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</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>
@@ -439,6 +430,12 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</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;A partire dalla versione 1.1 di OpenSSL, OpenSSL rifiuta le firme deboli nei certificati come
+ MD5. Inoltre con OpenSSL 3.0 vengono rifiutate anche le firme con SHA1.&lt;/p&gt;&lt;p&gt;
+ È necessario aggiornare i certificati VPN il prima possibile in quanto SHA1 non funzionerà più anche su altre piattaforme nel
+ prossimo futuro.&lt;/p&gt;
+ &lt;p&gt;Se vuoi veramente utilizzare certificati vecchi e vulnerabili, selezionare \"non sicuro\" per il profilo di sicurezza TLS in Autenticazione/Crittografia del profilo&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>
@@ -481,6 +478,7 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</string>
<string name="summary_block_address_families">Questa opzione indica ad Android di non consentire i protocolli (IPv4/IPv6) se la VPN non imposta alcun indirizzo IPv4 o IPv6.</string>
<string name="title_block_address_families">Blocca IPv6 (o IPv4) se non usato dalla VPN</string>
<string name="install_keychain">Installa nuovo certificato</string>
+ <string name="as_servername">Come nome server</string>
<string name="server_url">URL del server</string>
<string name="request_autologin">Richiedi profilo di accesso automatico</string>
<string name="import_from_as">Importa profilo da server remoto</string>
@@ -489,6 +487,7 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</string>
<string name="check_peer_fingerprint">Controlla l\'impronta digitale del certificato peer</string>
<string name="fingerprint">(Inserisci l\'impronta digitale SHA256 dei certificati del server)</string>
<string name="proxy_info">Proxy HTTP: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Utilizza la funzione Always-On di Android per abilitare la VPN all\'avvio.</string>
<string name="open_vpn_settings">Apri impostazioni VPN</string>
<string name="trigger_pending_auth_dialog">Premi qui per aprire una finestra per inserire l\'autenticazione aggiuntiva necessaria</string>
<string name="compatmode">Modalità di compatibilità</string>
@@ -497,4 +496,6 @@ Usa il tasto hardware Menù se non è visibile nella GUI.</string>
<string name="bf_cbc_requires_legacy">Profili utilizza BF-CBC che dipende dal fornitore obsoleto OpenSSL (non attivato).</string>
<string name="allow_translations_title">Consenti le traduzioni fornite dalla community</string>
<string name="allow_translations_summary">Consente la traduzione dell\'app con le traduzioni fornite dalla community. Richiede il riavvio dell\'app per l\'attivazione.</string>
+ <string name="tls_profile">Profilo di sicurezza TLS</string>
+ <string name="encrypt_profiles">Prova a criptare i profili sullo spazio di archiviazione (se supportato dal sistema operativo Android)</string>
</resources>
diff --git a/main/src/ui/res/values-ja/arrays.xml b/main/src/ui/res/values-ja/arrays.xml
index 1b5358d3..1a82e0b7 100644
--- a/main/src/ui/res/values-ja/arrays.xml
+++ b/main/src/ui/res/values-ja/arrays.xml
@@ -17,9 +17,9 @@
<item>外部認証プロバイダ</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>未指定</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>暗号化(tls-crypt)</item>
<item>TLS 暗号化 V2</item>
</string-array>
@@ -35,4 +35,16 @@
<item>パスワードを維持して切断</item>
<item>無視して再試行</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>最新のデフォルト</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.xピア</item>
+ <item>OpenVPN 2.3.x以前のピア</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>安全でない(非推奨、安全でない暗号を許可します)</item>
+ <item>レガシー(デフォルト)</item>
+ <item>おすすめ(推奨、ただし互換性が制限されます)</item>
+ <item>Suite B (only NIST approved elliptic curves)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-ja/strings.xml b/main/src/ui/res/values-ja/strings.xml
index de4e8b45..ad0d8b48 100644
--- a/main/src/ui/res/values-ja/strings.xml
+++ b/main/src/ui/res/values-ja/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12のパスワード</string>
<string name="file_select">選択&#8230;</string>
<string name="file_nothing_selected">ファイルを選択する必要があります</string>
- <string name="useTLSAuth">TLS認証を使用する</string>
- <string name="tls_direction">TLS Direction</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>
@@ -69,8 +67,6 @@
<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\nたとえば相対識別名のプリフィクスとして\"Server\"を指定すると、\"Server-1\"と\"Server-2\"にマッチします。\n\n空欄にした場合は相対識別名とサーバのホスト名をチェックします。\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アドレス、経路情報、DNSなどの情報をサーバから取得します。</string>
<string name="pull_off_summary">サーバからは何も情報が取得できません。指定が必要な設定は以下の通りです。</string>
<string name="use_pull">設定情報を取得する</string>
@@ -218,8 +214,6 @@ Androidはあなた自身の安全性のために、これらを迂回できな
<string name="using_proxy">プロキシを使用します %1$s %2$s</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="ignore">無視</string>
<string name="restart">再起動</string>
<string name="restart_vpn_after_change">設定の変更はVPNの再起動後に反映されます。VPNを(再)起動しますか?</string>
@@ -297,7 +291,6 @@ Android 4.4以上はポリシールーティングを使用します。route/ifc
<string name="encryption_cipher">暗号化方式</string>
<string name="packet_auth">パケット認証</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>
@@ -396,7 +389,6 @@ Android 4.4以上はポリシールーティングを使用します。route/ifc
<string name="ab_tethering_44">テザリングはVPNが接続中でも有効です。ただしテザリングした通信はVPNを使用できません。</string>
<string name="ab_kitkat_mss">初期のKitKatはTCP接続において間違ったMSS値を使用します。(#61948). このバグを回避するにはmssfixオプションの有効化を試してください。</string>
<string name="ab_proxy">AndroidはDNSサーバの設定がされていない場合、モバイル/WiFiのプロキシ設定を使用し続けます。OpenVPN for Androidはこれについてログにて警告します。<p>VPNがDNSサーバを設定した場合、Androidはプロキシを使用しなくなります。VPNでプロキシを使用するよう設定するAPIは存在しません。</p></string>
- <string name="ab_lollipop_reinstall">VPNアプリはアンインストール/再インストール時に正常に動作しなくなることがあります。詳細は#80074を参照してください。</string>
<string name="ab_not_route_to_vpn">設定されたクライアントIPとネットマスクに含まれるIPアドレスはVPNを経由しません。OpenVPNは明示的に経路を追加することでこのバグを回避します。</string>
<string name="ab_persist_tun">ほかのTUNデバイスが使用されている間に、永続的なTUNデバイス機能のためにTUNデバイスを開こうとするとデバイス上のVPNServiceがクラッシュします。VPNが再び動作するためにはデバイスの再起動が必要です。OpenVPN for Androidはクラッシュを避けるため、新しいTUNデバイスを開く前に現在のTUNデバイスを閉じます。これは短期間、パケットが非VPN接続に送信される原因になります。この回避策があっても、VPNServiceは時々クラッシュし、デバイスの再起動が必要になります。</string>
<string name="ab_secondary_users">VPNはほかのユーザーに対しては動作しません。</string>
@@ -404,7 +396,6 @@ Android 4.4以上はポリシールーティングを使用します。route/ifc
<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>
@@ -540,4 +531,5 @@ Android 4.4以上はポリシールーティングを使用します。route/ifc
<string name="bf_cbc_requires_legacy">プロファイルは、OpenSSLレガシープロバイダー(有効化されていません)に依存するBF-CBCを使用します。</string>
<string name="allow_translations_title">コミュニティが投稿した翻訳を許可する</string>
<string name="allow_translations_summary">コミュニティから提供された翻訳を使用してアプリを翻訳できるようにします。有効にするには、アプリを再起動する必要があります。</string>
+ <string name="tls_profile">TLSセキュリティプロファイル</string>
</resources>
diff --git a/main/src/ui/res/values-ko/arrays.xml b/main/src/ui/res/values-ko/arrays.xml
index 08de48f4..68a37ca5 100644
--- a/main/src/ui/res/values-ko/arrays.xml
+++ b/main/src/ui/res/values-ko/arrays.xml
@@ -17,9 +17,9 @@
<item>외부 인증 공급자</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>미지정</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>암호화 (--tls-crypt)</item>
<item>TLS 암호화 V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>연결 해제, 암호 유지</item>
<item>무시하기, 재시도</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>최신 기본값</item>
+ <item>OpenVPN 2.5.x 피어</item>
+ <item>OpenVPN 2.4.x 피어</item>
+ <item>OpenVPN 2.3.x and older peers</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>insecure (not recommend, allows insecure crypto)</item>
+ <item>레거시 (기본값)</item>
+ <item>preferred (recommended but limited compabbility)</item>
+ <item>Suite B (only NIST approved elliptic curves)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-ko/strings.xml b/main/src/ui/res/values-ko/strings.xml
index 445c2880..f172ced3 100644
--- a/main/src/ui/res/values-ko/strings.xml
+++ b/main/src/ui/res/values-ko/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12 암호</string>
<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>
@@ -67,8 +65,6 @@
<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>
@@ -201,8 +197,6 @@
<string name="using_proxy">%1$s</string>
<string name="use_system_proxy">시스템 프록시를 사용</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>
@@ -258,7 +252,6 @@
<string name="encryption_cipher">암호화 알고리즘</string>
<string name="packet_auth">패킷 인증</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>
@@ -356,7 +349,6 @@
<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>
@@ -364,7 +356,6 @@
<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>
@@ -472,4 +463,7 @@
<string name="external_authenticator">External Authenticator</string>
<string name="configure">Configure</string>
<string name="extauth_not_configured">외부 Authneticator가 구성되지 않았습니다.</string>
+ <string name="install_keychain">새 인증서 설치</string>
+ <string name="server_url">서버 URL</string>
+ <string name="import_from_as">원격 서버에서 프로필 가져오기</string>
</resources>
diff --git a/main/src/ui/res/values-nl/arrays.xml b/main/src/ui/res/values-nl/arrays.xml
index 3faa319c..33fb7c6f 100644
--- a/main/src/ui/res/values-nl/arrays.xml
+++ b/main/src/ui/res/values-nl/arrays.xml
@@ -17,9 +17,9 @@
<item>External Auth Provider</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Niet-gespecificeerd</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Versleuteling (tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,10 @@
<item>Verbinding verbreken, wachtwoord onthouden</item>
<item>Negeer, probeer opnieuw</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Modern defaults</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x-peers</item>
+ <item>OpenVPN 2.3.x and older peers</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-nl/strings.xml b/main/src/ui/res/values-nl/strings.xml
index 02222529..5d6b6610 100644
--- a/main/src/ui/res/values-nl/strings.xml
+++ b/main/src/ui/res/values-nl/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12 Wachtwoord</string>
<string name="file_select">Selecteer&#8230;</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 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>
@@ -67,8 +65,6 @@
<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 Authenticatie</string>
- <string name="tls_auth_file">TLS Auth Bestand</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>
@@ -201,8 +197,6 @@
<string name="using_proxy">Proxy %1$s %2$s is in gebruik</string>
<string name="use_system_proxy">Gebruik systeemproxy</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>
@@ -258,7 +252,6 @@
<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>
<string name="make_selection_inline">Kopieer naar profiel</string>
@@ -356,7 +349,6 @@
<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>
@@ -364,7 +356,6 @@
<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>
diff --git a/main/src/ui/res/values-no/arrays.xml b/main/src/ui/res/values-no/arrays.xml
index e163f7bf..e3606fbc 100644
--- a/main/src/ui/res/values-no/arrays.xml
+++ b/main/src/ui/res/values-no/arrays.xml
@@ -17,9 +17,9 @@
<item>Ekstern autentleverandør</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Uspesifisert</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Kryptering (-tls-krypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-no/strings.xml b/main/src/ui/res/values-no/strings.xml
index 3a6632c8..51e077af 100644
--- a/main/src/ui/res/values-no/strings.xml
+++ b/main/src/ui/res/values-no/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12 passord</string>
<string name="file_select">Velg&#8230;</string>
<string name="file_nothing_selected">Du må velge en fil</string>
- <string name="useTLSAuth">Bruke TLS-godkjenning</string>
- <string name="tls_direction">TLS-retning</string>
<string name="ipv6_dialog_tile">Angi IPv6-adresse/nettmaske i CIDR format (f.eks 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Angi IPv6-adresse/nettmaske i CIDR format (f.eks 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4-adresse</string>
@@ -67,8 +65,6 @@
<string name="remote_tlscn_check_title">Sjekk av vertsnavn i sertifikat</string>
<string name="enter_tlscn_dialog">Spesifiser sjekken som brukes for å bekrefte det eksterne sertifikatet DN (f.eks. C = DE, L = Paderborn, OU = Avian IP Carriers, CN = openvpn.blinkt.de)\n\nSpesifiser hele DN eller RDN (openvpn.blinkt.de i eksemplet) eller et RDN-prefiks for bekreftelse.\n\nNår du bruker RDN-prefikset, samsvarer \"Server\" med \"Server-1\" og \"Server-2\"\n\nHvis du lar tekstfeltet være tomt, kontrolleres RDN mot serververtsnavnet.\n\nFor mer informasjon, se OpenVPN 2.3.1+ -håndbok under —verify-x509-name</string>
<string name="enter_tlscn_title">Emne for ekstern sertifikat</string>
- <string name="tls_key_auth">Aktiver autentisering med TLS-nøkkel</string>
- <string name="tls_auth_file">TLS-Auth-fil</string>
<string name="pull_on_summary">Etterspør IP-adresser, ruter og alternativer for timing fra serveren.</string>
<string name="pull_off_summary">Serveren etterspør ingen informasjon. Innstillinger må angis nedenfor.</string>
<string name="use_pull">Trekk innstillinger</string>
@@ -196,7 +192,6 @@
<string name="using_proxy">Benytter proxyen %1$s %2$s</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>
@@ -238,7 +233,6 @@
<string name="encryption_cipher">Kryptering chiffer</string>
<string name="packet_auth">Pakkegodkjenning</string>
<string name="auth_dialog_title">Angi pakkeautentiseringsmetode</string>
- <string name="built_by">bygget av %s</string>
<string name="debug_build">avlusings-delversjon</string>
<string name="official_build">offisiell delversjon</string>
<string name="make_selection_inline">Kopier til profil</string>
diff --git a/main/src/ui/res/values-pl/arrays.xml b/main/src/ui/res/values-pl/arrays.xml
index 4a59a99c..0c779a64 100644
--- a/main/src/ui/res/values-pl/arrays.xml
+++ b/main/src/ui/res/values-pl/arrays.xml
@@ -8,18 +8,18 @@
<string-array name="vpn_types">
<item>Certyfikaty</item>
<item>Plik PKCS12</item>
- <item>Certyfikat Android</item>
+ <item>Certyfikat Androida</item>
<item>Nazwa użytkownika/Hasło</item>
<item>Klucze statyczne</item>
<item>Użytkownik/Hasło + Certyfikaty</item>
<item>Użytkownik/Hasło + PKCS12</item>
<item>Użytkownik/Hasło + Android</item>
- <item>External Auth Provider</item>
+ <item>Zewnętrzny dostawca uwierzytelniania</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Nieokreślone</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Szyfrowanie (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Odłącz, zachowaj hasło</item>
<item>Ignore, retry</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Modern defaults</item>
+ <item>rówieśnicy OpenVPN 2.5.x</item>
+ <item>rówieśnicy OpenVPN 2.4.x</item>
+ <item>OpenVPN 2.3.x i starsi rówieśnicy</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>insecure (not recommend, allows insecure crypto)</item>
+ <item>legacy (default)</item>
+ <item>preferowany (zalecana, ale ograniczona kompatybilność)</item>
+ <item>Suite B (tylko krzywe eliptyczne zatwierdzone przez NIST)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-pl/strings.xml b/main/src/ui/res/values-pl/strings.xml
index 507d44f9..818ca2dd 100644
--- a/main/src/ui/res/values-pl/strings.xml
+++ b/main/src/ui/res/values-pl/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">Hasło PKCS12</string>
<string name="file_select">Wybierz&#8230;</string>
<string name="file_nothing_selected">Wybierz plik</string>
- <string name="useTLSAuth">Użyj uwierzytelniania TLS</string>
- <string name="tls_direction">Kierunek TLS</string>
<string name="ipv6_dialog_tile">Wprowadź adres IPv6 w formacie CIDR (np. 2000:dd::23 / 64)</string>
<string name="ipv4_dialog_title">Wprowadź adres IPv4 w formacie CIDR (np. 1.2.3.4/24)</string>
<string name="ipv4_address">Adres IPv4</string>
<string name="ipv6_address">Adres IPv6</string>
<string name="custom_option_warning">Wprowadź ustawienia niestandardowe OpenVPN. Używać z rozwagą. Należy również pamiętać, że wiele ustawień związanych z tun OpenVPN nie jest obsługiwana przez projekt VPNSettings. Jeśli uważasz, że brakuje ważnych opcji skontaktuj się z autorem</string>
+ <string name="auth_username">Nazwa użytkownika (pozostaw puste dla braku autoryzacji)</string>
<string name="auth_pwquery">Hasło</string>
<string name="static_keys_info">W konfiguracji statycznej klucze uwierzytelniania TLS zostaną wykorzystane jako statyczne klucze</string>
<string name="configure_the_vpn">Konfiguracja VPN</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Wybierz unikalną nazwę profilu</string>
<string name="profilename">Nazwa profilu</string>
<string name="no_keystore_cert_selected">Musisz wybrać certyfikat użytkownika</string>
+ <string name="no_ca_cert_selected">Musisz wybrać certyfikat CA lub włączyć sprawdzanie linii papilarnych równorzędnych</string>
<string name="no_error_found">Brak błędów</string>
<string name="config_error_found">Błąd w konfiguracji</string>
<string name="ipv4_format_error">Błąd analizowania adresu IPv4</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Weryfikuj nazwę domenową zawartą w certyfikacie</string>
<string name="enter_tlscn_dialog">Określ czynność weryfikującą DN zdalnego certyfikatu (np. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nUżyj pełnego DN lub RDN (przykładowo penvpn.blinkt.de), lub prefiks RDN w celu weryfikacji\n\nUżywając prefiksu \"Serwer\", RDN będzie prawidłowy dla \"Serwer-1\" lub \"Serwer-Agaty\"\n\nPozostawiając pole puste RDN będzie sprawdzany pod kątem nazwy serwera.\n\nAby uzyskać więcej informacji, spójrz do podręcznika OpenVPN 2.3.1 w dziale —verify-x509-name</string>
<string name="enter_tlscn_title">Podmiot zdalnego certyfikatu</string>
- <string name="tls_key_auth">Włącza uwierzytelnianie kluczem TLS</string>
- <string name="tls_auth_file">Plik TLS</string>
<string name="pull_on_summary">Pobierz z serwera adresy IP, trasy oraz inne opcje.</string>
<string name="pull_off_summary">Żadne opcje nie będą pobierane z serwera, należy je ustawić poniżej.</string>
<string name="use_pull">Pobierz ustawienia</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Twój obraz nie wspiera API VPN, przepraszamy ;(</string>
<string name="encryption">Szyfrowanie</string>
<string name="cipher_dialog_title">Wprowadź metodę szyfrowania</string>
+ <string name="chipher_dialog_message">Enter the data encryption cipher algorithms used by OpenVPN separated by : (--data-ciphers). Leave empty to use the default of AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
<string name="auth_dialog_message">Wprowadź tryb autoryzacji używany z OpenVPN. Pozostaw puste, aby skorzystać z ustawień domyślnych.</string>
<string name="settings_auth">Uwierzytelnianie/Szyfrowanie</string>
<string name="file_explorer_tab">Przeglądanie plików</string>
@@ -168,7 +167,7 @@
<string name="owner_fix">Popraw uprawnienia do /dev/tun</string>
<string name="generated_config_summary">Pokazuje wygenerowany plik konfiguracji OpenVPN</string>
<string name="edit_profile_title">Edytujesz \"%s\"</string>
- <string name="building_configration">Tworzenie konfiguracji&#8230;</string>
+ <string name="building_configration">Tworzenie konfiguracji...</string>
<string name="netchange_summary">Włączenie tej opcji spowoduje ponowne połączenie jeśli stan sieci się zmienił (np. z WiFi na GSM)</string>
<string name="netchange">Połącz ponownie przy zmianie sieci</string>
<string name="netstatus">Stan sieci: %s</string>
@@ -201,8 +200,6 @@
<string name="using_proxy">Korzystanie z serwera proxy %1$s %2$s</string>
<string name="use_system_proxy">Użyj proxy systemowego</string>
<string name="use_system_proxy_summary">Połącz używając systemowej konfiguracji proxy HTTP/HTTPS.</string>
- <string name="onbootrestartsummary">OpenVPN połączy się z wybranym VPN jeżeli będzie aktywny podczas startu systemu. Przeczytaj FAQ dotyczący połączeń przed zastosowaniem tej opcji na Androidzie &lt; 5.0.</string>
- <string name="onbootrestart">Połącz przy starcie</string>
<string name="ignore">Ignoruj</string>
<string name="restart">Uruchom ponownie</string>
<string name="restart_vpn_after_change">Zmiany konfiguracji będą zatwierdzone po restarcie VPN. Uruchomić ponowie teraz?</string>
@@ -258,7 +255,6 @@
<string name="encryption_cipher">Szyfr kodujący</string>
<string name="packet_auth">Pakiety uwierzytelniania</string>
<string name="auth_dialog_title">Wpisz metodę uwierzytelniania pakietów</string>
- <string name="built_by">zbudowany przez %s</string>
<string name="debug_build">Kompilacja z debugiem</string>
<string name="official_build">Oficjalna kompilacja</string>
<string name="make_selection_inline">Skopiuj do profilu</string>
@@ -357,7 +353,6 @@
<string name="ab_kitkat_mss">Wczesne wersje KitKat ustawiają złą wartość MSS połączeń TCP (#61948). Spróbuj ustawić opcję mssfix w celu obejścia tego problemu.</string>
<string name="ab_proxy">Android będzie używał Twoich ustawień proxy dla połączenia mobilnego/Wi-Fi kiedy nie jest sprecyzowany serwer DNS.
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>
@@ -365,7 +360,6 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
<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>
<string name="version_upto">%s i wcześniejsze</string>
<string name="copy_of_profile">Kopia %s</string>
<string name="ab_not_route_to_vpn_title">Trasa do skonfigurowanego adresu IP</string>
@@ -436,6 +430,7 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
<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;</string>
<string name="volume_byte">%.0f B</string>
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
@@ -470,8 +465,34 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
weryfikacji
</string>
<string name="openurl_requested">Otwórz adres URL, aby kontynuować uwierzytelnianie VPN</string>
+ <string name="crtext_requested">Otwórz adres URL, aby kontynuować uwierzytelnianie VPN</string>
<string name="state_auth_pending">Oczekiwanie na uwierzytelnienie</string>
<string name="external_authenticator">Zewnętrzne uwierzytelnienie</string>
<string name="configure">Konfiguruj</string>
<string name="extauth_not_configured">Nie skonfigurowano zewnętrznego uwierzytelnienia</string>
+ <string name="faq_killswitch_title">阻止非 VPN 连接(“Killswitch”)</string>
+ <string name="faq_killswitch">&amp;</string>
+ <string name="summary_block_address_families">Ta opcja instruuje system Android, aby nie zezwalał na protokoły (IPv4/IPv6), jeśli sieć VPN nie ustawia żadnych adresów IPv4 ani IPv6.</string>
+ <string name="title_block_address_families">Blokuj IPv6 (lub IPv4), jeśli nie są używane przez VPN</string>
+ <string name="install_keychain">Zainstaluj nowy certyfikat</string>
+ <string name="as_servername">JAKO nazwa_serwera</string>
+ <string name="server_url">Serwer URL</string>
+ <string name="request_autologin">Poproś o automatyczne logowanie do profilu</string>
+ <string name="import_from_as">Importuj profil ze zdalnego serwera</string>
+ <string name="no_default_vpn_set">Domyślna sieć VPN nie jest ustawiona. Przed włączeniem tej opcji ustaw domyślną sieć VPN.</string>
+ <string name="internal_web_view">Wewnętrzny WebView</string>
+ <string name="check_peer_fingerprint">Sprawdź odcisk palca certyfikatu peera</string>
+ <string name="fingerprint">(Wprowadź odcisk palca SHA256 certyfikatu serwera)</string>
+ <string name="proxy_info">Proxy HTTP: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Użyj funkcji Always-On Androida, aby umożliwić włączenie VPN wraz ze startem systemu.</string>
+ <string name="open_vpn_settings">Otwórz ustawienia VPN</string>
+ <string name="trigger_pending_auth_dialog">Kliknij tutaj, aby otworzyć okno, aby wprowadzić dodatkowe wymagane uwierzytelnienie</string>
+ <string name="compatmode">Tryb zgodności</string>
+ <string name="compat_mode_label">Tryb zgodności</string>
+ <string name="loadossllegacy">Załaduj starszego dostawcę OpenSSL</string>
+ <string name="bf_cbc_requires_legacy">Profile używają BF-CBC, który zależy od starszego dostawcy OpenSSL (nie jest włączony).</string>
+ <string name="allow_translations_title">Zezwalaj na tłumaczenia współtworzone przez społeczność</string>
+ <string name="allow_translations_summary">Zezwól na tłumaczenie aplikacji, wykorzystując propozycje użytkowników. Do aktywacji wymaga ponownego uruchomienie aplikacji.</string>
+ <string name="tls_profile">Profil bezpieczeństwa TLS</string>
+ <string name="encrypt_profiles">Spróbuj zaszyfrować profile w pamięci masowej (jeśli jest to obsługiwane przez system operacyjny Android)</string>
</resources>
diff --git a/main/src/ui/res/values-pt-rBR/arrays.xml b/main/src/ui/res/values-pt-rBR/arrays.xml
new file mode 100644
index 00000000..fcfe5222
--- /dev/null
+++ b/main/src/ui/res/values-pt-rBR/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>Certificados</item>
+ <item>Arquivo PKCS12</item>
+ <item>Certificado Android</item>
+ <item>Usuário/Senha</item>
+ <item>Chaves Estáticas</item>
+ <item>Usuário/Senha + Certificados</item>
+ <item>Usuário/Senha + PKCS12</item>
+ <item>Usuário/Senha + Android</item>
+ <item>Provedor de Autenticação Externa</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>Criptografia (Tls-crypt)</item>
+ <item>TLS Crypt V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Desconectar-se, esquecer a senha</item>
+ <item>Desconectar-se, manter a senha</item>
+ <item>Ignorar, tente novamente</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>Padrões modernos</item>
+ <item>Pares OpenVPN 2.5.x</item>
+ <item>Pares OpenVPN 2.4.xj</item>
+ <item>OpenVPN 2.3.xe pares mais antigos</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>inseguro (não recomendado, permite criptografia insegura)</item>
+ <item>legacy (default)</item>
+ <item>preferencial (compatibilidade recomendada, mas limitada)</item>
+ <item>Suite B (somente curvas elípticas aprovadas pelo NIST)</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-pt-rBR/plurals.xml b/main/src/ui/res/values-pt-rBR/plurals.xml
new file mode 100644
index 00000000..d108121d
--- /dev/null
+++ b/main/src/ui/res/values-pt-rBR/plurals.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Falta um mês</item>
+ <item quantity="other">%d meses restantes</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Falta um dia</item>
+ <item quantity="other">%d dias restantes</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Falta uma hora</item>
+ <item quantity="other">%d horas restantes</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Falta um minuto</item>
+ <item quantity="other">%d minutos restantes</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-pt-rBR/strings.xml b/main/src/ui/res/values-pt-rBR/strings.xml
new file mode 100644
index 00000000..603faf97
--- /dev/null
+++ b/main/src/ui/res/values-pt-rBR/strings.xml
@@ -0,0 +1,488 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">OpenVPN para Android</string>
+ <string name="address">Endereço do Servidor:</string>
+ <string name="port">Porta:</string>
+ <string name="location">Localização</string>
+ <string name="cant_read_folder">Não foi possível ler o diretório</string>
+ <string name="select">Selecionar</string>
+ <string name="cancel">Cancelar</string>
+ <string name="no_data">Não há dados</string>
+ <string name="useLZO">Compressão LZO</string>
+ <string name="client_no_certificate">Sem Certificado</string>
+ <string name="client_certificate_title">Certificado do Cliente</string>
+ <string name="client_key_title">Chave do Certificado do Cliente</string>
+ <string name="client_pkcs12_title">Arquivo PKCS12</string>
+ <string name="ca_title">Certificado CA</string>
+ <string name="no_certificate">Você deve selecionar um certificado</string>
+ <string name="copyright_guicode">O código fonte e o rastreamento de incidentes estão disponíveis em http://code.google.com/p/ics-openvpn/</string>
+ <string name="copyright_others">Este programa utiliza os seguintes componentes; veja o código fonte para mais detalhes das licenças</string>
+ <string name="about">Sobre</string>
+ <string name="vpn_list_title">Perfis</string>
+ <string name="vpn_type">Tipo</string>
+ <string name="pkcs12pwquery">Senha do PKCS12</string>
+ <string name="file_select">Selecione...</string>
+ <string name="file_nothing_selected">Você deve selecionar um arquivo</string>
+ <string name="ipv6_dialog_tile">Entre o Endereço IPv6/CIDR (ex: 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Entre o endereço IPv4/CIDR (ex: 1.2.3.4/24)</string>
+ <string name="ipv4_address">Endereço IPv4</string>
+ <string name="ipv6_address">Endereço IPv6</string>
+ <string name="custom_option_warning">Insira as opções personalizadas para o OpenVPN. Utilize com cuidado. Observe também que muitas das opções relacionadas ao tun do OpenVPN não podem ser suportadas pelo design do VPNSettings. Contate o autor se você acha que uma opção importante está faltando.</string>
+ <string name="auth_username">Nombre de usuario (Dejar vació para no identificarse)</string>
+ <string name="auth_pwquery">Senha</string>
+ <string name="static_keys_info">Para a configuração estática as chaves de autenticação de TLS serão utilizadas como chaves estáticas</string>
+ <string name="configure_the_vpn">Configurar VPN</string>
+ <string name="menu_add_profile">Adicionar Perfil</string>
+ <string name="add_profile_name_prompt">Digite um nome que identifica o novo perfil</string>
+ <string name="duplicate_profile_name">Por favor, digite um nome de perfil único</string>
+ <string name="profilename">Nome do perfil</string>
+ <string name="no_keystore_cert_selected">Você deve selecionar um certificado de usuário</string>
+ <string name="no_ca_cert_selected">Você deve selecionar um certificado de CA ou habilitar a verificação de impressão digital de mesmo nível</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 sob demanda)</string>
+ <string name="vpn_shortcut">Atalho do OpenVPN</string>
+ <string name="vpn_launch_title">Conectando à VPN&#8230;</string>
+ <string name="shortcut_profile_notfound">O perfil especificado no atalho não foi encontrado</string>
+ <string name="random_host_prefix">Prefixo de Host aleatório</string>
+ <string name="random_host_summary">Adiciona 6 caracteres aleatórios na frente do hostname</string>
+ <string name="custom_config_title">Habilitar opções personalizadas</string>
+ <string name="custom_config_summary">Opções personalizadas. Use com cuidado!</string>
+ <string name="route_rejected">Rota rejeitada pelo Android</string>
+ <string name="cancel_connection">Desconectar</string>
+ <string name="cancel_connection_long">Desconectar VPN</string>
+ <string name="clear_log">limpar log</string>
+ <string name="title_cancel">Cancelar confirmação</string>
+ <string name="cancel_connection_query">Desconectar a VPN conectada/cancelar a tentativa de conexão?</string>
+ <string name="remove_vpn">Remover VPN</string>
+ <string name="check_remote_tlscert">Verifica se o servidor usa um certificado com as extensões de servidor TLS (- servidor remoto-cert-TLS)</string>
+ <string name="check_remote_tlscert_title">Esperar certificado do servidor TLS</string>
+ <string name="remote_tlscn_check_summary">Verifica o DN Subject do certificado do servidor remoto</string>
+ <string name="remote_tlscn_check_title">Verificar o Hostname do Certificado</string>
+ <string name="enter_tlscn_dialog">Especificar a conta usada para verificar o certificado remoto DN (por exemplo, C = DE, L = Paderborn, UO = aviária operadoras IP, CN=openvpn.blinkt.de)\n\Especificar o DN completo ou o RDN (openvpn.blinkt.de no exemplo) ou um prefixo RDN para verification.\n\nWhen usando o prefixo RDN \"Servidor\" corresponde a \"Server-1\" e \"Server-2\" \n\nDeixando vazio, o campo de texto irá verificar o RDN contra o servidor hostname.\n\nPara mais detalhes consulte a página principal do 2.3.1+ OpenVPN sob — verificar-X509-nome</string>
+ <string name="enter_tlscn_title">Subject do certificado remoto</string>
+ <string name="pull_on_summary">Solicitações de endereços de IP, rotas e opções de sincronização do servidor.</string>
+ <string name="pull_off_summary">Nenhuma informação é solicitada do servidor. 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 as configurações de DNS pelo servidor</string>
+ <string name="dns_override_summary">Use seus próprios servidores de DNS</string>
+ <string name="searchdomain">Domínio de pesquisa</string>
+ <string name="dns1_summary">Servidor DNS a ser usado.</string>
+ <string name="dns_server">Servidor DNS</string>
+ <string name="secondary_dns_message">Servidor DNS secundário utilizado caso o servidor primário esteja inacessível.</string>
+ <string name="backup_dns">Servidor DNS alternativo</string>
+ <string name="ignored_pushed_routes">Ignorar rotas empurradas</string>
+ <string name="ignore_routes_summary">Ignorar rota empurrada pelo servidor.</string>
+ <string name="default_route_summary">Redireccionar todo o tráfego pela VPN</string>
+ <string name="use_default_title">Usar rota padrão</string>
+ <string name="custom_route_message">Digite rotas personalizadas. Apenas indique destino em formato CIDR. \"10.0.0.0 / 8 2002 :: / 16\" iria dirigir as redes 10.0.0.0 / 8 e 2002 :: / 16 sobre a VPN.</string>
+ <string name="custom_route_message_excluded">As rotas que não devem ser encaminhados pelo VPN. Use a mesma sintaxe para rotas incluídas.</string>
+ <string name="custom_routes_title">Rotas personalizadas</string>
+ <string name="custom_routes_title_excluded">Redes excluídas</string>
+ <string name="log_verbosity_level">Nível de complexidade do log</string>
+ <string name="float_summary">Permite pacotes autenticados a partir de qualquer IP</string>
+ <string name="float_title">Permitir servidor flutuante</string>
+ <string name="custom_options_title">Opções personalizadas</string>
+ <string name="edit_vpn">Editar configurações de VPN</string>
+ <string name="remove_vpn_query">Remover o perfil VPN \'%s\'?</string>
+ <string name="tun_error_helpful">Em algumas imagens ICS personalizado a permissão em / dev / tun pode estar errada, ou o módulo tun pode estar faltando completamente. Para imagens CM9 tente a opção correção propriedade sobre as configurações gerais</string>
+ <string name="tun_open_error">Falha ao abrir a interface de tun</string>
+ <string name="error">"Erro:"</string>
+ <string name="clear">Claro</string>
+ <string name="last_openvpn_tun_config">Abrindo a interface tun:</string>
+ <string name="local_ip_info">Local IPv4: %1$s/%2$d IPv6:%3$s MTU:%4$d</string>
+ <string name="dns_server_info">Servidor DNS: %1$s, domínio: %2$s</string>
+ <string name="routes_info_incl">Rotas: %1$s %2$s</string>
+ <string name="routes_info_excl">Rotas excluídas: %1$s %2$s</string>
+ <string name="routes_debug">Rotas VpnService instaladas: %1$s %2$s</string>
+ <string name="ip_not_cidr">Existem múltiplas informações de interface, %1$s e %2$s, a aplicação assume que o segundo endereço é um endereço \'peer\' do endereço remoto. Será usada uma máscara de rede /32 para o IP local. O modo estabelecido pela OpenVPN é \"%3$s\".</string>
+ <string name="route_not_cidr">Não consigo entender %1$s e %2$s como uma rota IP com máscara de rede CIDR, usando /32 como máscara de rede.</string>
+ <string name="route_not_netip">A rota %1$s/%2$s foi corrigida para %3$s/%2$s</string>
+ <string name="keychain_access">Não é possível aceder aos certificados \'Keychain Android\'. Isso pode ter sido causado por uma atualização de firmware ou uma restauração das configurações da app/app. Será necessário editar o perfil VPN e selecionar novamente o certificado nas configurações básicas para recriar a permissão e possibilitar o acesso ao certificado.</string>
+ <string name="version_info">%1$s %2$s</string>
+ <string name="send_logfile">Enviar arquivo de log</string>
+ <string name="send">Enviar</string>
+ <string name="ics_openvpn_log_file">Ficheiro de registo do ICS OpenVPN</string>
+ <string name="copied_entry">Entrada de registo copiada para a área de transferência</string>
+ <string name="tap_mode">Entrada de registo copiada para a área de transferência</string>
+ <string name="faq_tap_mode">A API VPN não permite o modo Tap em dispositivos sem acesso root. Desta forma não é possível oferecer suporte Tap nesta aplicação</string>
+ <string name="tap_faq2">Outra vez? Você está brincando? Não, o modo tap não é suportado de maneira nenhuma e enviar mais emails perguntando se eventualmente será não irá ajudar.</string>
+ <string name="tap_faq3">Uma terceira vez? Na verdade, seria possível escrever um emulador tap baseado em tun capaz de adicionar informações referentes à camada 2 durante o envio e removê-la quando da recepção. No entanto, a esse emulador tap seria necessário implementar clientes ARP e, provavelmente, DHCP. Não conheço ninguém trabalhando com esse objetivo. Entre em contato caso conheça alguém ou deseje programar isso.</string>
+ <string name="faq">Perguntas frequentes</string>
+ <string name="copying_log_entries">Copiando entradas de log</string>
+ <string name="faq_copying">Para copiar uma única entrada de log, pressione e segure a entrada em questão. Para copiar/enviar o log completo, use a opção Enviar Log. Use o botão de menu físico, caso o botão não esteja visível na interface.</string>
+ <string name="faq_shortcut">Atalho para iniciar</string>
+ <string name="faq_howto_shortcut">É possível colocar um atalho para iniciar o OpenVPN no desktop. Dependendo do programa de homescreen, será necessário adicionar um atalho ou um widget.</string>
+ <string name="no_vpn_support_image">Sua imagem não oferece suporte a API VPNService, desculpe :(</string>
+ <string name="encryption">Criptografia</string>
+ <string name="cipher_dialog_title">Digite o método de criptografia</string>
+ <string name="chipher_dialog_message">Insira os algoritmos de criptografia de dados usados pelo OpenVPN separados por : (--data-ciphers). Deixe em branco para usar o padrão de AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
+ <string name="auth_dialog_message">Digite a autenticação digest utilizada pelo OpenVPN. Deixe em branco para usar o digest padrão.</string>
+ <string name="settings_auth">Autenticação/Cifragem</string>
+ <string name="file_explorer_tab">Explorar Arquivos</string>
+ <string name="inline_file_tab">Arquivo inline</string>
+ <string name="error_importing_file">Erro importando Arquivo</string>
+ <string name="import_error_message">Não foi possível importar o ficheiro</string>
+ <string name="inline_file_data">[[Dados do ficheiro embutido]]</string>
+ <string name="opentun_no_ipaddr">Recusando-se a abrir o dispositivo tun sem informações de IP</string>
+ <string name="menu_import">Importar Perfil a partir de um arquivo ovpn</string>
+ <string name="menu_import_short">Importar</string>
+ <string name="import_content_resolve_error">Não foi possível ler o perfil para importação</string>
+ <string name="error_reading_config_file">Erro ao ler o arquivo de configuração</string>
+ <string name="add_profile">Adicionar perfil</string>
+ <string name="import_could_not_open">Não foi possível encontrar o arquivo %1$s mencionado no arquivo de configuração importado</string>
+ <string name="importing_config">Importando arquivo de configuração a partir de %1$s</string>
+ <string name="import_warning_custom_options">Sua configuração possuía algumas entradas de configuração que não possuem equivalentes na interface gráfica. Essas opções foram adicionadas como opções de configuração personalizadas. A configuração personalizada é exibida abaixo:</string>
+ <string name="import_done">Leitura de arquivo de configuração terminada.</string>
+ <string name="nobind_summary">Não ligar a endereço e porta local</string>
+ <string name="no_bind">Não permitir ligações \'locais\'</string>
+ <string name="import_configuration_file">Importar arquivo de configuração</string>
+ <string name="faq_security_title">Considerações de segurança</string>
+ <string name="faq_security">"Como OpenVPN é segurança sensíveis algumas notas sobre segurança são sensatas. Todos os dados no sdcard é inerentemente inseguro. Cada aplicativo pode lê-lo (por exemplo, este programa não requer direitos especiais cartão SD). Os dados desta aplicação só pode ser lido pelo próprio aplicativo. Ao usar a opção de importação para cacert / cert / chave no diálogo os dados do arquivo é armazenado no perfil de VPN. Os perfis de VPN são acessíveis apenas por esta aplicação. (Não se esqueça de apagar as cópias no sd cartão depois). Mesmo com acesso apenas por este aplicativo os dados ainda não é criptografado. torcendo por telefone ou outros exploits pode ser possível recuperar os dados. senhas salvas são armazenadas em texto simples assim. Para arquivos PKCS12 é altamente recomendável que você importá-los para o armazenamento de chaves android. "</string>
+ <string name="import_vpn">Importar</string>
+ <string name="broken_image_cert_title">Erro a mostrar a selecção de certificados</string>
+ <string name="broken_image_cert">Tenho uma exceção tentando mostrar diálogo de seleção de certificado do Android 4.0+. Isso nunca deveria acontecer como este um recurso padrão do Android 4.0 +. Talvez seu apoio ROM Android para o armazenamento de certificado é quebrado</string>
+ <string name="ipv4">IPv4</string>
+ <string name="ipv6">IPv6</string>
+ <string name="speed_waiting">Aguardando a mensagem de estado...</string>
+ <string name="converted_profile">Perfil importado</string>
+ <string name="converted_profile_i">Perfil importado %d</string>
+ <string name="broken_images">Imagens quebradas</string>
+ <string name="broken_images_faq">Wechat</string>
+ <string name="pkcs12_file_encryption_key">Chave de crifra de ficheiros PKCS12</string>
+ <string name="private_key_password">Senha da chave privada</string>
+ <string name="password">Senha</string>
+ <string name="file_icon">ícone de ficheiro</string>
+ <string name="tls_authentication">Autenticação/Criptografia TLS</string>
+ <string name="generated_config">Config gerada</string>
+ <string name="generalsettings">Configurações</string>
+ <string name="owner_fix_summary">Tenta definir o dono de / dev / tun para sistema. Algumas imagens CM9 precisa disso para fazer o trabalho da API VPNService. Requer raiz.</string>
+ <string name="owner_fix">Corrijir a propriedade de /dev/tun</string>
+ <string name="generated_config_summary">Mostra o arquivo de configuração do OpenVPN gerado</string>
+ <string name="edit_profile_title">A editar \"%s\"</string>
+ <string name="building_configration">A preparar a configuração</string>
+ <string name="netchange_summary">A ativação desta opção forçará uma reconexão se o estado da rede é alterado (por exemplo, WiFi de / para móvel)</string>
+ <string name="netchange">Reconectar-se na mudança de rede</string>
+ <string name="netstatus">Status da rede: %s</string>
+ <string name="extracahint">O certificado CA geralmente é obtido a partir do armazenamento de credenciais do Android. Especifique um certificado diferente caso você encontre erros de validação do certificado.</string>
+ <string name="select_file">Selecione</string>
+ <string name="keychain_nocacert">Nenhum certificado CA foi retornado durante a leitura do armazenamento de credenciais do Android. A autenticação poderá falhar.</string>
+ <string name="show_log_summary">Exibe a janela de registro ao conectar. A janela de registro poderá ser acessada sempre a partir da barra de notificações.</string>
+ <string name="show_log_window">Mostrar janela de registos</string>
+ <string name="mobile_info">%10$s %9$s executando em %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">Falha ao assinar a chave %1$s com Android keystore: %2$s</string>
+ <string name="error_extapp_sign">Erro ao assinar com aplicativo autenticador externo (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">O aviso de conexão VPN dizendo que este aplicativo pode interceptar todo o tráfego é imposto pelo sistema para evitar abusos da API do Serviço VPN.\nA notificação de conexão VPN (ícone de chave) é também imposto pelo sistema Android para indicar uma conexão VPN ativa. Em alguns sistemas essa notificação toca um som.\nO Android implementou avisos no sistema para a sua segurança e garantir que elas não sejam contornadas. (Infelizmente alguns sistemas podem incluir um som de notificação)</string>
+ <string name="faq_system_dialogs_title">Aviso de conexão e som de notificação</string>
+ <string name="translationby">Tradução em Português por Eduardo Addad;</string>
+ <string name="ipdns">IP e DNS</string>
+ <string name="basic">Básico</string>
+ <string name="routing">Encaminhamento</string>
+ <string name="obscure">Configurações OpenVPN obscura. Normalmente não é necessário.</string>
+ <string name="advanced">Avançado</string>
+ <string name="export_config_title">Configuração ICS Openvpn</string>
+ <string name="warn_no_dns">Nenhum servidor DNS está sendo utilizado. A resolução de nomes pode não funcionar. Considere configurar um Servidor DNS personalizado. Observe também que o Android continuará utilizando sua configuração de proxy especificada pelo seu dispositivo/conexão WI-Fi quando não existe servidor DNS definido.</string>
+ <string name="dns_add_error">Não foi possivel adicionar o servidor DNS \"%1$s\", rejeitado pelo sistema: %2$s</string>
+ <string name="ip_add_error">Não foi possível configurar o endereço IP \"%1$s\", recusado pelo sistema: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;Obtenha uma config funcionando (testado em seu computador ou baixado de seu provedor/organização)&lt;/p&gt;&lt;p&gt;Se for arquivo único sem nenhum arquivo pem/pkcs12 extra você pode enviar o arquivo por email para si mesmo e abrir o anexo. Se tiver vários arquivos coloque-os em seu cartão SD.&lt;/p&gt;&lt;p&gt;Abra do anexo de email/Use o ícone de pasta na lista vpn para importar o arquivo de config&lt;/p&gt;&lt;p&gt;Caso houver erros sobre arquivos faltando coloque-os no seu cartão SD.&lt;/p&gt;&lt;p&gt;Clique no ícone de salvar para adicionar o arquivo importado a sua lista VPN&lt;/p&gt;&lt;p&gt;Conecte-se à VPN clicando no nome da VPN&lt;/p&gt;&lt;p&gt;Se houver erros ou avisos no log tente entendê-los e corrigi-los&lt;/p&gt; </string>
+ <string name="faq_howto_title">Inicio rápido</string>
+ <string name="setting_loadtun_summary">Tente carregar o módulo kernel tun.ko antes de se conectar. Precisa de root.</string>
+ <string name="setting_loadtun">Carregar módulo tun</string>
+ <string name="importpkcs12fromconfig">Importar PKCS12 da configuração para o Armazenamento de Credenciais do Android</string>
+ <string name="getproxy_error">Falha ao obter configurações de proxy: %s</string>
+ <string name="using_proxy">Usando o proxy %1$s %2$s</string>
+ <string name="use_system_proxy">Utilizar proxy do sistema</string>
+ <string name="use_system_proxy_summary">Utiliza a configuração proxy HTTP/HTTPS do sistema para a conexão.</string>
+ <string name="ignore">Ignorar</string>
+ <string name="restart">Reiniciar</string>
+ <string name="restart_vpn_after_change">As alterações de configuração são aplicadas depois de reiniciar o VPN. (Re) iniciar o VPN agora?</string>
+ <string name="configuration_changed">Configuração alterada</string>
+ <string name="log_no_last_vpn">Não foi possível determinar o perfil conectado último para edição</string>
+ <string name="faq_duplicate_notification_title">Notificações duplicadas</string>
+ <string name="faq_duplicate_notification">Se Android está sob pressão de memória (RAM) do sistema, aplicativos e serviços que não são necessários neste momento são removidos da memória ativa. Isto encerra uma conexão VPN em curso. Para garantir que a conexão/OpenVPN sobrevive o serviço é executado com prioridade mais alta. Para executar com maior prioridade, o aplicativo deve exibir uma notificação. O ícone de notificação chave é imposto pelo sistema como descrito na entrada da FAQ anterior. Ele não conta como notificação app para efeito de execução com maior prioridade.</string>
+ <string name="no_vpn_profiles_defined">Não há perfis de VPN definidos.</string>
+ <string name="add_new_vpn_hint">Use o ícone &lt;img src=\"ic_menu_add\"/&gt; para adicionar uma nova VPN</string>
+ <string name="vpn_import_hint">Use o &lt; img src = \"ic_menu_archive\" / &gt; ícone para importar um perfil existente (ovpn ou conf) do seu sdcard.</string>
+ <string name="faq_hint">Verifique as FAQ. Existe um guia rápido.</string>
+ <string name="faq_routing_title">Configuração de roteamento/Interface</string>
+ <string name="faq_routing">A configuração de roteamento e interface não é feita através de comandos ifconfig/rota tradicional, mas usando a API VPNService. Isso resulta em uma configuração de roteamento diferente do que em outros sistemas operacionais. \nThe configuração do túnel VPN consiste o endereço IP e as redes que devem ser roteadas através desta interface. Especialmente, nenhum endereço de parceiro de mesmo nível ou endereço de gateway é necessário ou exigido. Rotas especiais para alcançar o servidor de VPN (por exemplo adicionado ao usar redirecionamento-gateway) não são necessários também. O aplicativo irá consequentemente ignorar essas configurações ao importar uma configuração. O app garante com a API de VPNService que a conexão ao servidor não é roteado através do túnel VPN. \nThe VPNService API não permite a especificação de redes que não devem ser roteadas através da VPN. Para solucionar esse problema o aplicativo tenta detectar redes que não devem ser encaminhadas ao longo do túnel (p. ex. rota x.x.x. x y.y.y.y net_gateway) e calcula um conjunto de rotas que exclui este rotas para emular o comportamento de outras plataformas. As janelas de log mostra a configuração da VPNService ao estabelecer uma conexão. \nBehind as cenas: Android 4.4 + usar política de roteamento. Usando a rota/ifconfig não mostrará as rotas instaladas. Em vez disso, use a regra de ip, iptables -t mangle -L</string>
+ <string name="persisttun_summary">Fazer não o retorno ao nenhuma conexão VPN quando OpenVPN é reconectar.</string>
+ <string name="persistent_tun_title">Tun Persistente</string>
+ <string name="openvpn_log">OpenVPN Log</string>
+ <string name="import_config">Importar configuração OpenVPN</string>
+ <string name="battery_consumption_title">Consumo de bateria</string>
+ <string name="baterry_consumption">Em meus testes pessoais, a principal razão para o consumo de bateria alta do OpenVPN são os pacotes keepalive. A maioria dos servidores de OpenVPN tem um como a Directiva de configuração \' keepalive 10 60\', que faz com que o cliente e o servidor trocar pacotes keepalive em 10 segundos. &lt;p&gt; enquanto estes pacotes são pequenos e não use muito tráfego, manter a rede de rádio móvel ocupado e aumentar o consumo de energia. (Veja também a máquina de estado de rádio &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;The | Android Developers&lt;/a&gt;) &lt;p&gt; que essa configuração keepalive não pode ser alterada no cliente. Somente o administrador de sistema do OpenVPN pode alterar a configuração. &lt;p&gt; infelizmente, usando um keepalive maior do que 60 segundos com UDP pode causar alguns gateways NAT para soltar a conexão devido a um tempo limite de inatividade. Usando TCP com uma longa manter vivo timeout funciona, mas encapsulamento TCP sobre TCP executa extremamente mal em conexões com alta perda de pacotes. (Veja &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;Why TCP sobre TCP é um Idea&lt;/a&gt; ruim)</string>
+ <string name="faq_tethering">O recurso de Tethering do Android (através de Wi-Fi, USB ou Bluetooth) e a API de VPNService (usada por este programa) não funcionam juntos. Para mais detalhes consulte o &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">VPN e Tethering</string>
+ <string name="connection_retries">Tentativas de ligação</string>
+ <string name="reconnection_settings">Configurações de religação</string>
+ <string name="connectretrymessage">Número de segundos de espera entre tentativas de conexão.</string>
+ <string name="connectretrywait">Segundos entre as conexões</string>
+ <string name="minidump_generated">OpenVPN caiu inesperadamente. Por favor, considere usar a opção Minidump send no menu principal</string>
+ <string name="send_minidump">Enviar Minidump para desenvolvedor</string>
+ <string name="send_minidump_summary">Envia informação de depuração sobre falhas para o programador</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">Conectando</string>
+ <string name="state_wait">A esperar pela resposta do servidor</string>
+ <string name="state_auth">Autenticando</string>
+ <string name="state_get_config">Obtendo a configuração do cliente</string>
+ <string name="state_assign_ip">Atribuindo endereços IP</string>
+ <string name="state_add_routes">Adicionando rotas</string>
+ <string name="state_connected">Conectado</string>
+ <string name="state_disconnected">Desconectar</string>
+ <string name="state_reconnecting">Reconectando</string>
+ <string name="state_exiting">Saindo</string>
+ <string name="state_noprocess">Não está em execução</string>
+ <string name="state_resolve">A resolver nomes de host</string>
+ <string name="state_tcp_connect">Conectando (TCP)</string>
+ <string name="state_auth_failed">Falha na autenticação</string>
+ <string name="state_nonetwork">Esperando por rede utilizável</string>
+ <string name="state_waitorbot">Aguardando o Orbot iniciar</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
+ <string name="notifcation_title_notconnect">Desconectado</string>
+ <string name="start_vpn_title">Conectando-se a VPN %s</string>
+ <string name="start_vpn_ticker">Conectando-se a VPN %s</string>
+ <string name="jelly_keystore_alphanumeric_bug">Algumas versões do Android 4.1 ter problemas se o nome do certificado de armazenamento de chave contém caracteres não alfanuméricos (como espaços, sublinhados ou traços). Tente importar novamente o certificado sem caracteres especiais</string>
+ <string name="encryption_cipher">Cifra de criptografia</string>
+ <string name="packet_auth">Autenticação de pacotes</string>
+ <string name="auth_dialog_title">Selecione o método de autenticação de pacotes</string>
+ <string name="debug_build">compilação de depuração</string>
+ <string name="official_build">compilação oficial</string>
+ <string name="make_selection_inline">Copiar para o perfil</string>
+ <string name="crashdump">Crashdump</string>
+ <string name="add">Add</string>
+ <string name="send_config">Enviar arquivo de configuração</string>
+ <string name="complete_dn">DN completo</string>
+ <string name="remotetlsnote">Sua configuração importada usado a opção de tls-remoto velha obsoleto que usa um formato diferente do DN.</string>
+ <string name="rdn">RDN (nome comum)</string>
+ <string name="rdn_prefix">Prefixo RDN</string>
+ <string name="tls_remote_deprecated">tLS-remoto (obsoleto)</string>
+ <string name="help_translate">Pode ajudar a traduzir, visite http://crowdin.net/project/ics-openvpn/invite</string>
+ <string name="prompt">%1$s tenta controlar %2$s</string>
+ <string name="remote_warning">Por meio de processo, você está dando a permissão de aplicativo para controlar completamente OpenVPN para Android e para interceptar todos traffic.<b>Do rede não aceitar menos que confie no application.</b> Caso contrário, você corre o risco de ter seus dados comprometidos por software malicioso. \"</string>
+ <string name="remote_trust">Confio nesta aplicação.</string>
+ <string name="no_external_app_allowed">Nenhuma app pode usar a API externa</string>
+ <string name="allowed_apps">Aplicações permitidas:%s</string>
+ <string name="clearappsdialog">Limpar lista de aplicativos externos permitidos?\nLista atual de aplicativos permitidos:\n\n%s</string>
+ <string name="screenoff_summary">Pausar a VPN quando a tela estiver desligada e menos de 64kB transferidos em 60s. Quando a opção \"Tun Persistente\" estiver habilitada, pausando a VPN irá deixar seu dispositivo SEM conexão de rede. Sem a opção \"Tun Persistente\" o dispositivo ficará sem a conexão/proteção VPN.</string>
+ <string name="screenoff_title">Pausar a conexão VPN após desligar a tela</string>
+ <string name="screenoff_pause">Pausando conexão ao desligar a tela: menos que %1$s em %2$ss</string>
+ <string name="screen_nopersistenttun">Aviso: Tun persistente não habilitado para esta VPN. Tráfego usará a conexão de Internet normal quando a tela estiver desligada.</string>
+ <string name="save_password">Salvar senha</string>
+ <string name="pauseVPN">Pausa VPN</string>
+ <string name="resumevpn">Retomar VPN</string>
+ <string name="state_userpause">VPN pausado por solicitação do usuário</string>
+ <string name="state_screenoff">VPN pausado - fora da tela</string>
+ <string name="device_specific">Especificações do dispositivo Hacks</string>
+ <string name="cannotparsecert">Não é possível mostrar as informações de certificado</string>
+ <string name="appbehaviour">Comportamento do aplicativo</string>
+ <string name="vpnbehaviour">Comportamento VPN</string>
+ <string name="allow_vpn_changes">Permitir alterações aos perfis de VPN</string>
+ <string name="hwkeychain">Armazenamento de chaves de hardware:</string>
+ <string name="permission_icon_app">Ícone do app, tentando usar o OpenVPN para Android</string>
+ <string name="faq_vpndialog43">"A partir do Android 4.3 a confirmação de VPN é protegida contra \"aplicativos com sobreposição\". Isso resulta no diálogo não reconhecer o toque na tela. Se você utiliza aplicativos que sobrepõe na tela isso pode acontecer. Se você encontrar um aplicativo causando isso contate o autor do mesmo. Isso afeta todos os aplicaticos VPN no Android 4.3 e superior. Veja também &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; para mais detalhes"</string>
+ <string name="faq_vpndialog43_title">Caixa de diálogo confirmação de Vpn</string>
+ <string name="donatePlayStore">Você também pode me enviar doações através da Play Store:</string>
+ <string name="thanks_for_donation">Obrigado por doar %s!</string>
+ <string name="logCleared">Log apagada.</string>
+ <string name="show_password">Mostrar a senha</string>
+ <string name="keyChainAccessError">Erro de acesso às chaves: %s</string>
+ <string name="timestamp_short">Curto</string>
+ <string name="timestamp_iso">ISO</string>
+ <string name="timestamps">Carimbos de hora</string>
+ <string name="timestamps_none">Nenhum</string>
+ <string name="uploaded_data">Upload</string>
+ <string name="downloaded_data">Download</string>
+ <string name="vpn_status">Vpn Status</string>
+ <string name="logview_options">Ver opções</string>
+ <string name="unhandled_exception">Exceção sem tratamento: %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">Se você tem raiz de seu dispositivo Android, você pode instalar o framework&lt;/a&gt; de &lt;a href=\"http://xposed.info/\"&gt;Xposed e uma caixa de diálogo &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN confirmar module&lt;/a&gt; a seu próprio risco \"</string>
+ <string name="full_licenses">Licenças completas</string>
+ <string name="blocklocal_summary">Redes conectadas diretamente na interface local não serão roteadas para o VPN. Desmarcando esta opção irá redirecionar todo o tráfego das redes locais para a VPN.</string>
+ <string name="blocklocal_title">Ignorar VPN para redes locais</string>
+ <string name="userpw_file">Arquivo de nome de usuário/senha</string>
+ <string name="imported_from_file">[Importados: %s]</string>
+ <string name="files_missing_hint">Alguns arquivos não podem ser encontrados. Por favor, selecione os arquivos para importar o perfil:</string>
+ <string name="openvpn_is_no_free_vpn">Para usar este aplicativo, que você precisa de um gateway de provedor/VPN VPN apoiando o OpenVPN (muitas vezes fornecida pelo seu empregador). Confira http://community.openvpn.net/ para obter mais informações sobre o OpenVPN e como configurar seu próprio servidor OpenVPN.</string>
+ <string name="import_log">Log de importação:</string>
+ <string name="ip_looks_like_subnet">Topologia de VPN \"%3$s\" especificado mas ifconfig %1$s %2$s se parece mais com um endereço IP com uma máscara de rede. Supondo que a topologia \"sub-rede\".</string>
+ <string name="mssfix_invalid_value">O valor de substituição MSS deve ser um número inteiro entre 0 e 9000</string>
+ <string name="mtu_invalid_value">O valor de substituição MTU deve ser um número inteiro entre 64 e 9000</string>
+ <string name="mssfix_value_dialog">Anuncia para as sessões TCP dentro do tunel que elas devem limitar o tamanho dos pacotes de uma forma que após o OpenVPN encapsulá-los, o tamanho final dos pacotes UDP que o OpenVPN enviar não possa exceder esse número de bytes (padrão é 1450)</string>
+ <string name="mssfix_checkbox">Substituir o valor MSS de payload TCP</string>
+ <string name="mssfix_dialogtitle">Definir MSS do TCP payload</string>
+ <string name="client_behaviour">Comportamento cliente</string>
+ <string name="clear_external_apps">Limpar lista de aplicativos externos permitidos</string>
+ <string name="loading">Carregando&#8230;</string>
+ <string name="allowed_vpn_apps_info">Aplicativos permitidos na VPN: %1$s</string>
+ <string name="disallowed_vpn_apps_info">Aplicativos não-permitidos na VPN: %1$s</string>
+ <string name="app_no_longer_exists">O pacote %s não está mais instalado, removendo-o da lista de aplicativos permitidos/não-permitidos</string>
+ <string name="vpn_disallow_radio">O VPN é utilizado para todos os apps exceto os selecionados</string>
+ <string name="vpn_allow_radio">O VPN é utilizado somente para os apps selecionados</string>
+ <string name="vpn_allow_bypass">Permitir apps a contornar o VPN</string>
+ <string name="query_delete_remote">Remover entrada de servidor remoto?</string>
+ <string name="keep">Manter</string>
+ <string name="delete">Excluir</string>
+ <string name="add_remote">Adicionar novo controle remoto</string>
+ <string name="remote_random">Uso conexão entradas em ordem aleatória em conectar</string>
+ <string name="remote_no_server_selected">Você precisa definir e habilitar pelo menos um servidor remoto.</string>
+ <string name="server_list">Lista servidores</string>
+ <string name="vpn_allowed_apps">Aplicativos permitidos</string>
+ <string name="advanced_settings">Configurações avançadas</string>
+ <string name="payload_options">Opções de carga</string>
+ <string name="tls_settings">Definições TLS</string>
+ <string name="no_remote_defined">Sem controle remoto definido</string>
+ <string name="duplicate_vpn">Perfil VPN duplicado</string>
+ <string name="duplicate_profile_title">Duplicando perfil: %s</string>
+ <string name="show_log">Mostrar registo</string>
+ <string name="faq_android_clients">Vários clientes OpenVPN para Android existir. Os mais comuns são OpenVPN para Android (este cliente), os clientes OpenVPN Connect e OpenVPN Settings.&lt;p&gt;The podem ser agrupados em dois grupos: OpenVPN para Android e OpenVPN Ligação usar o VPNService API oficial (Android 4.0+) e não necessitam de raiz e OpenVPN configurações que usa root.&lt;p&gt;OpenVPN para Android é um cliente de código aberto e desenvolvido por Arne Schwabe. É destinado a usuários mais avançados e oferece muitas configurações e a capacidade de importar perfis a partir de arquivos e configurar perfis / mudam dentro do app. O cliente é baseado na versão comunidade de OpenVPN. Ele baseia-se no código de fonte 2.x OpenVPN. Este cliente pode ser visto como a semi oficialmente cliente da comunidade. &lt;p&gt;OpenVPN Connect é cliente de origem não aberta, que é desenvolvido por OpenVPN Technologies, Inc. O cliente é recuado para ser cliente de uso geral e mais orientada para o usuário médio e permite a importação de perfis OpenVPN. Este cliente é baseada na reimplementação do protocolo OpenVPN o OpenVPN C ++ (Isto foi necessário para permitir que OpenVPN Technologies, Inc para publicar um aplicativo iOS OpenVPN). Este cliente é o cliente oficial das tecnologias OpenVPN &lt;p&gt; OpenVPN Configurações é o mais antigo dos clientes e também uma interface do usuário para o código aberto OpenVPN. Em contraste com o OpenVPN para Android requer raiz e não usa a API VPNService. Ele não depende Android 4.0+</string>
+ <string name="faq_androids_clients_title">As diferenças entre os clientes OpenVPN Android</string>
+ <string name="ignore_multicast_route">Ignorar caminho multicast: %s</string>
+ <string name="ab_only_cidr">Android apenas suporta rotas CIDR para a VPN. Pelo facto de as rotas não-CIDR quase nunca serem usadas, OpenVPN para Android irá usar uma rota /32 para rotas não-CIDR e emitir um aviso.</string>
+ <string name="ab_tethering_44">Tethering funciona enquanto o VPN está ativo. A conexão com fio não vai usar a VPN.</string>
+ <string name="ab_kitkat_mss">Primeira versão KitKat definir o valor MSS errado em conexões TCP (# 61948). Tente habilitar a opção mssfix para resolver este bug.</string>
+ <string name="ab_proxy">Android vai continuar a usar as configurações de proxy especificadas para a conexão / Wi-Fi móvel quando não há servidores DNS são configurados. OpenVPN para Android irá avisá-lo sobre isso no log.<p>When uma VPN define um servidor DNS Android não vai usar um proxy. Não há nenhuma API para definir um proxy para um connection.</p> VPN</string>
+ <string name="ab_not_route_to_vpn">O IP do cliente configurado e os IPs em sua máscara de rede não são encaminhadas para a VPN. OpenVPN funciona em torno este bug, acrescentando explicitamente uma rota que corrosponds ao IP do cliente e da sua máscara de rede</string>
+ <string name="ab_persist_tun">Abrindo um dispositivo tun enquanto outro dispositivo tun é ativo, que é usado para suporte de persistir-tun, trava o VPNServices no dispositivo. Uma reinicialização é necessária para fazer a VPN funcionar novamente. OpenVPN para Android tenta evitar a reabertura do dispositivo tun e se realmente precisava primeiro fecha o TUN atual antes de abrir o novo dispositivo TUN para evitar a queda. Isso pode levar a uma pequena janela onde os pacotes são enviados durante a conexão VPN não. Mesmo com esta solução alternativa a VPNServices às vezes trava e requer uma reinicialização do dispositivo.</string>
+ <string name="ab_secondary_users">VPN não funciona de todo para os utilizadores secundários.</string>
+ <string name="ab_kitkat_reconnect">"Vários usuários relatam que o / conexão de dados móveis conexão móvel é frequentemente deixado cair durante o uso do aplicativo VPN. O comportamento parece afetar apenas algumas provedor de combinação móvel / dispositivo e até agora nenhuma causa / solução para o bug poderia ser identificado."</string>
+ <string name="ab_vpn_reachability_44">Único destino pode ser alcançado através da VPN que são acessíveis sem VPN. O IPv6 VPNs não funcionar em todos.</string>
+ <string name="ab_only_cidr_title">Rotas não CIDR</string>
+ <string name="ab_proxy_title">Comportamento proxy para VPNs</string>
+ <string name="version_upto">%s e anteriores</string>
+ <string name="copy_of_profile">Copiar de %s</string>
+ <string name="ab_not_route_to_vpn_title">Rota para o endereço IP configurado</string>
+ <string name="ab_kitkat_mss_title">Valor MSS errado para conexão VPN</string>
+ <string name="ab_secondary_users_title">Usuários de tablet secundárias</string>
+ <string name="custom_connection_options_warng">Especifique opções específicas de conexão personalizado. Use com cuidado</string>
+ <string name="custom_connection_options">Opções personalizadas</string>
+ <string name="remove_connection_entry">Remover entrada de conexão</string>
+ <string name="ab_kitkat_reconnect_title">Desconecta aleatórios da rede móvel</string>
+ <string name="ab_vpn_reachability_44_title">Redes remotas não acessíveis</string>
+ <string name="ab_persist_tun_title">Persistir modo tun</string>
+ <string name="version_and_later">%s e mais tarde</string>
+ <string name="tls_cipher_alert_title">Falha de conexões com falha de alerta do aperto de mão SSL23_GET_SERVER_HELLO:sslv3</string>
+ <string name="tls_cipher_alert">OpenVPN mais recente para as versões do Android (0.6.29/March 2015) usar um padrão mais seguro para as suites cifra permitidos (tls-cifra \"padrão:! EXP:! PSK:! SRP:! kRSA \"). Infelizmente, omitindo o menos segura cifra de suites e suites de cifra de exportação, especialmente a omissão das suites cifra que não oferecem suporte a Perfect Forward Secrecy (Diffie-Hellman) causa alguns problemas. Isso geralmente é causada por uma tentativa bem intencionada, mas mal executada para fortalecer a segurança TLS definindo cifra de tls no servidor ou algum incorporado sistemas operacionais com despojado SSL (por exemplo, MikroTik). \nTo resolver o problema, definir as configurações de cifra-tls no servidor para o padrão razoável como tls-cifra \"padrão:! EXP:! PSK:! SRP:! kRSA \". Para contornar o problema sobre o cliente adicionar o costume opção tls-cifra padrão no cliente Android.</string>
+ <string name="message_no_user_edit">Este perfil foi adicionado um aplicativo externo (%s) e foi marcado como usuário não editável.</string>
+ <string name="crl_file">Lista de certificados revogados</string>
+ <string name="service_restarted">Reiniciando o OpenVPN Service (App caiu provavelmente caiu ou morto para pressão de memória)</string>
+ <string name="import_config_error">Importando o config gerou um erro, não pode salvá-lo</string>
+ <string name="Search">Pesquisa</string>
+ <string name="lastdumpdate">(Último despejo é %1$d:%2$dh velho (%3$s))</string>
+ <string name="clear_log_on_connect">Limpar registo na nova conexão</string>
+ <string name="connect_timeout">Tempo limite de conexão</string>
+ <string name="no_allowed_app">Nenhum app permitido adicionado. Adicionando nós mesmos (%s) para ter pelo menos um app na lista para não permitir todos os apps</string>
+ <string name="query_permissions_sdcard">OpenVPN para Androud pode procurar por aquivo(s) faltante(s) no sdcard automaticamente. Toque nesta mensagem para iniciar a permissão de acesso.</string>
+ <string name="protocol">Protocolo</string>
+ <string name="enabled_connection_entry">Habilitado</string>
+ <string name="permission_revoked">Permissão VPN revogada pelo sistema (ex.: outro aplicativo VPN iniciado), interrompendo VPN</string>
+ <string name="pushpeerinfo">Enviar informações extras</string>
+ <string name="pushpeerinfosummary">Envia outras informações para o servidor como versões do SSL e Android</string>
+ <string name="pw_request_dialog_title">Necessário %1$s</string>
+ <string name="pw_request_dialog_prompt">Entre com a senha do perfil %1$s</string>
+ <string name="menu_use_inline_data">Usar dados embutidos</string>
+ <string name="export_config_chooser_title">Exportar arquivo de configuração</string>
+ <string name="missing_tlsauth">arquivo tls-auth está ausente</string>
+ <string name="missing_certificates">Certificado ou chave de usuário ausente</string>
+ <string name="crl_title">Lista de Revogaçao de Certificado (opcional)</string>
+ <string name="reread_log">Recarregar (%d) itens do arquivo cache de registro</string>
+ <string name="samsung_broken">Mesmo que os telefones Samsung sejam os dispositivos Android mais vendidos, são conhecidos por terem as firmwares mais problemáticas. As falhas nesses dispositivos não são limitadas apenas as funções VPN mas a maioria pode ser contornada. Seguem detalhes de algumas dessas falhas.\n\nO DNS não funciona caso não esteje dentro da rede VPN.\n\nNa maioria dos Samsung 5.x a função de permitir/não-permitir aplicativos não funciona.\nNo Samsung 6.x a VPN pode não funcionar a não ser que seje excluída da função de economia de bateria.</string>
+ <string name="samsung_broken_title">Aparelhos Samung</string>
+ <string name="novpn_selected">Nenhuma VPN selecionada.</string>
+ <string name="defaultvpn">VPN padrão</string>
+ <string name="defaultvpnsummary">VPN usada em locais onde uma VPN padrão é necessária. Estes estão atualmente na inicialização (boot), para Sempre-Ativo (Always-On) e o bloco nas Configurações Rápidas (Quick Settings Tile).</string>
+ <string name="vpnselected">VPN atualmente selecionado: \'%s\'</string>
+ <string name="reconnect">Reconectar</string>
+ <string name="qs_title">Alternar VPN</string>
+ <string name="qs_connect">Conectar a %s</string>
+ <string name="qs_disconnect">Desconectar %s</string>
+ <string name="connectretrymaxmessage">Entre com o limite de tempo para as tentativas de conexão. O OpenVPN irá aumentar lentamente seu tempo de espera durante as tentativas de conexão até o máximo definido aqui. Padrão de 300s.</string>
+ <string name="connectretrymaxtitle">Tempo limite entre as tentativas de conexão</string>
+ <string name="state_waitconnectretry">Aguardando %ss segundos entre as tentativas de conexão</string>
+ <string name="nought_alwayson_warning"><![CDATA[Se você não receber um diálogo de confirmação VPN, você tem \ "VPN Sempre Ativo \" habilitado para outro aplicativo. Nesse caso, somente esse aplicativo tem permissão para se conectar a uma VPN. Verifique em Configuração-> Redes mais .. -> VPNS]]></string>
+ <string name="management_socket_closed">A conexão com OpenVPN fechada (%s)</string>
+ <string name="change_sorting">Alterar a classificação</string>
+ <string name="sort">Ordenar</string>
+ <string name="sorted_lru">Perfis classificados por último usado</string>
+ <string name="sorted_az">Perfis classificados por nome</string>
+ <string name="deprecated_tls_remote">Configuração usa Tls-remotas de opção que foi depreciado em 2.3 e, finalmente, removido em 2,4</string>
+ <string name="auth_failed_behaviour">Ação em AUTH_FAILED</string>
+ <string name="graph">Gráfico</string>
+ <string name="use_logarithmic_scale">Usar escala logarítmica</string>
+ <string name="notenoughdata">Dados insuficientes</string>
+ <string name="avghour">Média por hora</string>
+ <string name="avgmin">Média por minuto</string>
+ <string name="last5minutes">Últimos 5 minutos</string>
+ <string name="data_in">Recebidos</string>
+ <string name="data_out">Enviados</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;A partir do OpenSSL versão 1.1, o OpenSSL rejeita assinaturas fracas em certificados como
+ MD5. Além disso, com o OpenSSL 3.0, as assinaturas com SHA1 também são rejeitadas.&lt;/p&gt;&lt;p&gt;
+ Você deve atualizar os certificados VPN o mais rápido possível, pois o SHA1 também não funcionará mais em outras plataformas em
+ futuro próximo.&lt;/p&gt;
+ &lt;p&gt;Se você realmente deseja usar certificados antigos e quebrados, selecione \"inseguro\" para o perfil de segurança TLS em Autenticação/Criptografia do perfil&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">Estatísticas de conexão</string>
+ <string name="channel_description_background">Estatísticas atuais da conexão OpenVPN estabelecida</string>
+ <string name="channel_name_status">Folkzaza</string>
+ <string name="channel_description_status">Folkzaza</string>
+ <string name="weakmd_title">Hashes fracos (MD5) na assinatura do certificado (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">Teste de velocidade do OpenSSL</string>
+ <string name="openssl_cipher_name">Nomes de cifra OpenSSL</string>
+ <string name="osslspeedtest">Teste de velocidade do OpenSSL Crypto</string>
+ <string name="openssl_error">OpenSSL retornou um erro</string>
+ <string name="running_test">Executando teste&#8230;</string>
+ <string name="test_algoirhtms">Testar os algoritmos selecionados</string>
+ <string name="all_app_prompt">Um aplicativo externo tenta controlar %s. O aplicativo que solicita o acesso não pode ser determinado. Permitir que este aplicativo concede TODOS os aplicativos de acesso.a.3 </string>
+ <string name="openvpn3_nostatickeys">A implementação OpenVPN 3 C++ não suporta chaves estáticas. Altere para OpenVPN 2.x nas configurações gerais.</string>
+ <string name="openvpn3_pkcs12">Usar diretamente arquivos PKCS12 com a implementação do OpenVPN 3 C++ não é suportado. Importe os arquivos PKCS12 para o armazenamento de chaves do Android ou mude para OpenVPN 2.x nas configurações gerais.</string>
+ <string name="proxy">Proxy</string>
+ <string name="Use_no_proxy">Nenhum</string>
+ <string name="tor_orbot">Tor (Orbot)</string>
+ <string name="openvpn3_socksproxy">Implementação do OpenVPN 3 C++ não suporta conexão via proxy Socks</string>
+ <string name="no_orbotfound">O aplicativo Orbot não foi encontrado. Por favor, instale-o ou use uma integração manual do Socks v5.</string>
+ <string name="faq_remote_api_title">API remota</string>
+ <string name="faq_remote_api">O OpenVPN para Android suporta duas APIs remotas, uma API sofisticada usando AIDL (RemoteEXample no repositório git) e uma simples usando Intents. &lt;p&gt;Exemplos usando o shell adb e as intenções. Substitua profilname pelo seu nome de perfil&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn /.api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN - e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn /.api.ConnectVPN</string>
+ <string name="enableproxyauth">Habilitar a autenticação de Proxy</string>
+ <string name="error_orbot_and_proxy_options">Não se pode usar uma declaração adicional de http-proxy-option e a integração Orbot ao mesmo tempo</string>
+ <string name="info_from_server">Informações do servidor: \'%s \'</string>
+ <string name="channel_name_userreq">Necessário a interação do usuário</string>
+ <string name="channel_description_userreq">A conexão OpenVPN requer uma entrada do usuário, por exemplo, autenticação
+ em dois fatores
+ </string>
+ <string name="openurl_requested">Abrir URL para continuar autenticação VPN</string>
+ <string name="crtext_requested">Abrir URL para continuar autenticação VPN</string>
+ <string name="state_auth_pending">Autenticação pendente</string>
+ <string name="external_authenticator">Autenticador Externo</string>
+ <string name="configure">Configurar</string>
+ <string name="extauth_not_configured">Autenticador externo não configurado</string>
+ <string name="faq_killswitch_title">Bloquear conexão não VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">Muitas vezes é desejável bloquear conexões sem VPN. Outros aplicativos costumam usar termos de marcação como \"Killswitch\" ou \"Túnel sem costura\" para esse recurso. OpenVPN e este aplicativo oferecem persist-tun, um recurso para implementar essa funcionalidade.&lt;p&gt;O problema com todos esses métodos oferecidos pelos aplicativos é que eles só podem fornecer o melhor esforço e não são soluções completas. Na inicialização, travamento do aplicativo e outros casos de canto, o aplicativo não pode garantir que esse bloco de conexão não VPN funcione. Assim, dando ao usuário uma falsa sensação de segurança.&lt;p&gt;A &lt;b&gt;única&lt;/b&gt; maneira confiável de garantir que as conexões não VPN sejam bloqueadas é usar o Android 8.0 ou posterior e usar a configuração \"bloquear conexões sem VPN\" que pode ser encontrada em Configurações &gt; Rede &amp; Internet &gt; Avançado/VPN &gt; OpenVPN para Android &gt; Habilite Always ON VPN, Habilite conexões de bloco sem VPN</string>
+ <string name="summary_block_address_families">Esta opção instrui o Android a não permitir protocolos (IPv4/IPv6) se a VPN não definir nenhum endereço IPv4 ou IPv6.</string>
+ <string name="title_block_address_families">Bloqueie IPv6 (ou IPv4) se não for usado pela VPN</string>
+ <string name="install_keychain">Instalar novo certificado</string>
+ <string name="as_servername">nome do servidor AS</string>
+ <string name="server_url">URL do servidor</string>
+ <string name="request_autologin">Solicitar perfil de login automático</string>
+ <string name="import_from_as">Importar perfil do servidor remoto</string>
+ <string name="no_default_vpn_set">Francisco </string>
+ <string name="internal_web_view">Brasil </string>
+ <string name="use_alwayson_vpn">Por favor, use o recurso Always-On do Android para habilitar a VPN no momento da inicialização.</string>
+</resources>
diff --git a/main/src/ui/res/values-pt/arrays.xml b/main/src/ui/res/values-pt/arrays.xml
index d2f3282a..ff666b20 100644
--- a/main/src/ui/res/values-pt/arrays.xml
+++ b/main/src/ui/res/values-pt/arrays.xml
@@ -17,9 +17,9 @@
<item>Provedor de Autenticação Externo</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Não especificado</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Criptografia (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-pt/strings.xml b/main/src/ui/res/values-pt/strings.xml
index e9de4072..f9bf5458 100644
--- a/main/src/ui/res/values-pt/strings.xml
+++ b/main/src/ui/res/values-pt/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">Password PKCS12</string>
<string name="file_select">Selecionar&#8230;</string>
<string name="file_nothing_selected">É necessário selecionar um ficheiro</string>
- <string name="useTLSAuth">Usar autenticação TLS</string>
- <string name="tls_direction">Direção TLS</string>
<string name="ipv6_dialog_tile">Digite o endereço de IPv6/máscara de rede no formato CIDR (por exemplo, 2000:dd::23 / 64)</string>
<string name="ipv4_dialog_title">Digite o endereço de IPv4/máscara de rede no formato CIDR (por exemplo, 1.2.3.4/24)</string>
<string name="ipv4_address">Endereço IPv4</string>
@@ -67,8 +65,6 @@
<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>
@@ -190,7 +186,6 @@
<string name="setting_loadtun">Carregar o módulo tun</string>
<string name="getproxy_error">Erro ao obter definições proxy %s</string>
<string name="use_system_proxy">Usar a proxy do sistema</string>
- <string name="onbootrestart">Ligar no arranque</string>
<string name="ignore">Ignorar</string>
<string name="restart">Reiniciar</string>
<string name="restart_vpn_after_change">As alterações de configuração são aplicadas depois de reiniciar a VPN. Reiniciar a VPN agora?</string>
@@ -235,7 +230,6 @@
<string name="encryption_cipher">Cifra de encriptação</string>
<string name="packet_auth">Autenticação de pacotes</string>
<string name="auth_dialog_title">Selecione o método de autenticação de pacotes</string>
- <string name="built_by">Feito por %s</string>
<string name="debug_build">compilação de debug</string>
<string name="official_build">compilação oficial</string>
<string name="make_selection_inline">Copiar para o perfil</string>
diff --git a/main/src/ui/res/values-ro/arrays.xml b/main/src/ui/res/values-ro/arrays.xml
index 56176e58..bb0c6ab1 100644
--- a/main/src/ui/res/values-ro/arrays.xml
+++ b/main/src/ui/res/values-ro/arrays.xml
@@ -17,9 +17,9 @@
<item>Furnizor extern de autentificare</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Nespecificat</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Criptare (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-ro/strings.xml b/main/src/ui/res/values-ro/strings.xml
index e039b793..e200ecb3 100644
--- a/main/src/ui/res/values-ro/strings.xml
+++ b/main/src/ui/res/values-ro/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">Parola PKCS12</string>
<string name="file_select">Selectaţi&#8230;</string>
<string name="file_nothing_selected">Trebuie să selectaţi un fişier</string>
- <string name="useTLSAuth">Folosiţi autentificare TLS</string>
- <string name="tls_direction">Direcţie TLS</string>
<string name="ipv6_dialog_tile">Introduceţi adresa IPv6/Netmask în Format CIDR (ex. 2000:dd::23 / 64)</string>
<string name="ipv4_dialog_title">Introduceţi adresa IPv4/Netmask în format CIDR (de exemplu, 1.2.3.4/24)</string>
<string name="ipv4_address">Adresă IPv4</string>
<string name="ipv6_address">Adresă IPv6</string>
<string name="custom_option_warning">Introduceţi opţiuni particularizate OpenVPN. Folosiţi cu atenţie. De asemenea, reţineţi că multe dintre opţiunile legate de OpenVPN tun nu sunt suportate de VPNSettings. Dacă lipseşte o opţiune importantă contactaţi autorul</string>
+ <string name="auth_username">Nume de 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">Configurați VPN-ul</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Vă rugăm să introduceţi un nume de profil unic</string>
<string name="profilename">Nume profil</string>
<string name="no_keystore_cert_selected">Trebuie să selectați un certificat de utilizator</string>
+ <string name="no_ca_cert_selected">Trebuie să selectați un certificat CA sau să activați verificarea amprentei </string>
<string name="no_error_found">Nu s-a găsit nici o eroare</string>
<string name="config_error_found">Eroare în configurare</string>
<string name="ipv4_format_error">Eroare parsare adresă IPv4</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Verficare hostname certificat</string>
<string name="enter_tlscn_dialog">Specifică verificarea ce va fi utilizată pentru certificatul DN (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nSpecifică DN complet sau RDN (openvpn.blinkt.de in exemplu) sau un prefix RDN pentru verificare.\n\nCând folosiți prefix RDN \"Server\" face match si cu \"Server-1\" și \"Server-2\"\n\nDacă lăsați câmpul gol se va verifica RDN contra hostaname-ul serverului.\n\nPentru mai multe detalii verificați manualul OpenVPN 2.3.1+ la —verify-x509-name</string>
<string name="enter_tlscn_title">Subiect certificat remote</string>
- <string name="tls_key_auth">Activează autentificarea cu cheie TLS</string>
- <string name="tls_auth_file">Fişier TLS Auth</string>
<string name="pull_on_summary">Cere adrese IP, rute şi opţiuni timing de la server.</string>
<string name="pull_off_summary">Nu se cere nici o informaţie de la server. Setările trebuie specificate mai jos.</string>
<string name="use_pull">Setări pull</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Imaginea dvs. nu suportă API-ul VPNService, îmi pare rău :(</string>
<string name="encryption">Criptare</string>
<string name="cipher_dialog_title">Alegeţi metoda de criptare</string>
+ <string name="chipher_dialog_message">Introduceți algoritmii de criptare a datelor utilizați de OpenVPN, separați prin : (--data-ciphers). Lăsați gol pentru a utiliza valoarea implicită de</string>
<string name="auth_dialog_message">Introduceţi autentificarea digest ce este folosită de OpenVPN. Lăsaţi gol pentru digest predefinit.</string>
<string name="settings_auth">Autentificare/criptare</string>
<string name="file_explorer_tab">File Explorer</string>
@@ -179,6 +178,7 @@
<string name="show_log_window">Arată fereastra Jurnal</string>
<string name="mobile_info">%10$s %9$s rulează pe %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">Eroare semnare cu Android keystore key %1$s: %2$s</string>
+ <string name="error_extapp_sign">Eroare de semnare cu aplicația de autentificare externă (%3$s): %1$s: %2$s</string>
<string name="faq_system_dialogs">Avertizarea la conexiunea VPN ce vă spune că această aplicaţie poate intercepta întreg traficul este impusă de sistem pentru a preveni abuzul funcţiei API VPNService.\nNotificarea de conexiune VPN(simbolul cheie)este de asemenea impusă de sistemul Android pentru a semnala o conexiune VPN în derulare. În cadrul unor imagini această notificare face şi un sunet.\nAndroid a introdus aceste notificări pentru siguranţa dvs. şi este asigurat că nu pot fi evitate. (Din păcate în anumite imagini acestea includ şi un sunet de notificare)</string>
<string name="faq_system_dialogs_title">Alertă conexiune şi sunet notificare</string>
<string name="translationby">Traducere în limba română de Silviu Vulcan&lt;silviuvulcan.ro&gt;</string>
@@ -197,10 +197,9 @@
<string name="setting_loadtun">Încarcă modulul tun</string>
<string name="importpkcs12fromconfig">Import PKCS12 configurare în Android Keystore</string>
<string name="getproxy_error">Eroare la obţinerea setărilor proxy: %s</string>
+ <string name="using_proxy">Utilizarea proxy-ului %1$s %2$s</string>
<string name="use_system_proxy">Foloseşte proxy sistem</string>
<string name="use_system_proxy_summary">Foloseşte configurarea sistem pentru proxy HTTP/HTTPS folosit la conectare.</string>
- <string name="onbootrestartsummary">OpenVPN va conecta VPN-ul specificat dacă vs fi activ la pornirea sistemului. Citiți întrebările frecvente privind avertizare de conexiune înainte de a utiliza această opțiune pe Android &lt; 5.0.</string>
- <string name="onbootrestart">Conectare la pornire</string>
<string name="ignore">Ignora</string>
<string name="restart">Restart</string>
<string name="restart_vpn_after_change">Schimbările de configurare vor fi aplicate după restartarea VPN-ului. (Re)startaţi VPN-ul acum?</string>
@@ -255,7 +254,6 @@
<string name="encryption_cipher">Cifru criptare</string>
<string name="packet_auth">Autentificare pachete</string>
<string name="auth_dialog_title">Introduceţi metoda de autentificare de pachete</string>
- <string name="built_by">compilat de %s</string>
<string name="debug_build">versiune debug</string>
<string name="official_build">versiune oficială</string>
<string name="make_selection_inline">Copiaţi în profil</string>
@@ -353,7 +351,6 @@
<string name="ab_tethering_44">Funcția tethering funcționează în timp ce VPN-ul este activ. Conexiunea legată NU va utiliza VPN-ul.</string>
<string name="ab_kitkat_mss">Primele versiuni KitKat setao o valoare MSS greșită pe conexiunile TCP (#61948). Încercați să activați opțiunea mssfix pentru a rezolva această eroare.</string>
<string name="ab_proxy">Android va continua să utilizeze setările proxy specificate pentru conexiunea mobilă/Wi-Fi atunci când nu sunt setate servere DNS. OpenVPN pentru Android vă va avertiza despre acest lucru în fișierul log.<p>Când VPN stabilește un server DNS, Android nu va utiliza un proxy. Nu există niciun API pentru a seta un proxy pentru o conexiune VPN.</p></string>
- <string name="ab_lollipop_reinstall">Aplicațiile VPN pot să nu mai funcționeze când sunt dezinstalate și reinstalate din nou. Pentru detalii, a se vedea #80074</string>
<string name="ab_not_route_to_vpn">IP-ul client configurat și IP-urile din masca sa de rețea nu sunt direcționate către VPN. OpenVPN funcționează în jurul acestui bug prin adăugarea explicită a unui traseu care corespunde IP-ului client și netmask-ului său</string>
<string name="ab_persist_tun">Deschiderea unui dispozitiv tun în timp ce un alt dispozitiv tun este activ, care este utilizat pentru suportul tun persistent, blochează serviciile VPN de pe dispozitiv. Este necesară o repornire pentru ca VPN să funcționeze din nou. OpenVPN pentru Android încearcă să evite redeschiderea dispozitivului tun și, dacă este necesar, mai întâi închide TUN-ul curent înainte de a deschide noul dispozitiv TUN pentru a evita accidentarea. Acest lucru poate duce la o fereastră scurtă în care pachetele sunt trimise prin conexiunea non-VPN. Chiar și cu această soluție, VPNServices se blochează uneori și necesită repornirea dispozitivului.</string>
<string name="ab_secondary_users">VPN nu funcționează deloc pentru utilizatorii secundari.</string>
@@ -361,7 +358,6 @@
<string name="ab_vpn_reachability_44">Numai destinația poate fi atinsă prin VPN care poate fi accesată fără VPN. Porturile IPv6 VPN nu funcționează deloc.</string>
<string name="ab_only_cidr_title">Rute non-CIDR</string>
<string name="ab_proxy_title">Comportamentul proxy pentru VPN-uri</string>
- <string name="ab_lollipop_reinstall_title">Reinstalarea aplicațiilor VPN</string>
<string name="version_upto">%s sau mai puțin</string>
<string name="copy_of_profile">Copie a %s</string>
<string name="ab_not_route_to_vpn_title">Rutează prin adresa IP configurată</string>
diff --git a/main/src/ui/res/values-ru/arrays.xml b/main/src/ui/res/values-ru/arrays.xml
index 642186eb..da39586a 100644
--- a/main/src/ui/res/values-ru/arrays.xml
+++ b/main/src/ui/res/values-ru/arrays.xml
@@ -14,12 +14,12 @@
<item>Логин/пароль + Сертификаты</item>
<item>Логин/пароль + PKCS12 </item>
<item>Логин/пароль + сертификат Android</item>
- <item>External Auth Provider</item>
+ <item>Внешний провайдер аутентификации</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Не указан</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Шифрование (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Отключиться, сохранить пароль</item>
<item>Игнорировать, повторить</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Современные значения по умолчанию</item>
+ <item>OpenVPN 2.5.x</item>
+ <item>OpenVPN 2.4.x</item>
+ <item>OpenVPN 2.3.x и старее</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>незащищённый (не рекомендуется, допускает небезопасное шифрование)</item>
+ <item>традиционный (по умолчанию)</item>
+ <item>предпочтительный (рекомендуется, но ограничивает совместимость)</item>
+ <item>набор B (только эллиптические кривые, одобренные NIST)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-ru/strings.xml b/main/src/ui/res/values-ru/strings.xml
index e4da5e5d..38ee7d99 100644
--- a/main/src/ui/res/values-ru/strings.xml
+++ b/main/src/ui/res/values-ru/strings.xml
@@ -16,8 +16,8 @@
<string name="client_no_certificate">Нет сертификата</string>
<string name="client_certificate_title">Сертификат клиента</string>
<string name="client_key_title">Ключ сертификата клиента</string>
- <string name="client_pkcs12_title">Файл PKCS12</string>
- <string name="ca_title">Сертификат ЦС</string>
+ <string name="client_pkcs12_title">PKCS12 файл</string>
+ <string name="ca_title">CA сертификат</string>
<string name="no_certificate">Необходимо выбрать сертификат</string>
<string name="copyright_guicode">Исходный код и отслеживание проблем доступны на https://github.com/schwabe/ics-openvpn/</string>
<string name="copyright_others">Данная программа использует следующие компоненты; смотрите исходный код для получения подробной информации о лицензии</string>
@@ -27,99 +27,95 @@
<string name="pkcs12pwquery">Пароль для PKCS12</string>
<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">Введите адрес/маску подсети 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="ipv6_address">Адрес IPv6</string>
- <string name="custom_option_warning">Введите пользовательские параметры OpenVPN. Используйте с осторожностью. Также обратите внимание, что многие настройки OpenVPN, связанные с tun, не могут поддерживаться конструкцией VPNSettings. Если вы считаете, что отсутствует важная опция, свяжитесь с автором</string>
- <string name="auth_username">Имя пользователя (оставьте пустым без авторизации)</string>
+ <string name="custom_option_warning">Введите пользовательские параметры OpenVPN. Используйте осторожно. Также обратите внимание, что многие настройки OpenVPN, связанные с туннелированием (tun), могут не поддерживаться данной реализацией VPNSettings. Если вы считаете, что не хватает важных параметров, свяжитесь с автором</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="profilename">Название конфигурации</string>
<string name="no_keystore_cert_selected">Необходимо выбрать сертификат пользователя</string>
- <string name="no_ca_cert_selected">Вы должны выбрать сертификат CA или включить проверку отпечатка однорангового узла.</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="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&#8230;</string>
<string name="shortcut_profile_notfound">Не найдена конфигурация, указанная в ярлыке</string>
- <string name="random_host_prefix">Случайный префикс узла</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="custom_config_summary">Укажите пользовательские параметры. Будьте осторожны!</string>
<string name="route_rejected">Маршрутизация отклонена Android</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_long">Отключиться от VPN</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-tls server)</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">Проверяет 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\nПри использовании префикса RDN, «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="override_dns">Переопределить DNS параметры сервера</string>
+ <string name="dns_override_summary">Использовать собственные DNS серверы</string>
<string name="searchdomain">Домен поиска</string>
- <string name="dns1_summary">DNS-сервер для использования.</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 сервер когда основной недоступен.</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="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="custom_routes_title_excluded">Исключенные сети</string>
<string name="log_verbosity_level">Уровень детализации журнала</string>
- <string name="float_summary">Разрешить аутентифицированные пакеты с любого IP-адреса</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_error_helpful">На некоторых неофициальных сборках права на модуль туннеля могут быть неверными или модуль туннеля может быть не включён. Для прошивки 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="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, предполагается, что второй адрес является адресом удаленного узла. Использование сетевой маски /32 для локального IP. Режим, предоставляемый OpenVPN: \"%3$s\".</string>
- <string name="route_not_cidr">Невозможно определить %1$s и %2$s в качестве IP-маршрутизации с сетевой маской CIDR, используя /32 в качестве сетевой маски.</string>
+ <string name="ip_not_cidr">Получена информация интерфейса %1$s и %2$s, при условии, что второй адрес является одноранговым адресом удалённого устройства. Используется сетевая маска /32 для локального IP-адреса. Режим, установленный OpenVPN – «%3$s».</string>
+ <string name="route_not_cidr">Невозможно определить %1$s и %2$s как маршрут IP с маской сети 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="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 VPN Pro</string>
- <string name="copied_entry">Запись журнала скопирована в буфер обмена</string>
- <string name="tap_mode">Режим TAP</string>
- <string name="faq_tap_mode">Режим касания невозможен с API VPN без рут прав. Таким образом, это приложение не может поддерживать касание.</string>
- <string name="tap_faq2">Очередной раз? Вы смеётесь? Нет, режим касания действительно не поддерживается, и отправка дополнительных писем с вопросом, будет ли он поддерживаться, не поможет.</string>
- <string name="tap_faq3">Третий раз? На самом деле можно было бы писать эмулятор tap, основанные на tun, который бы добавлял информацию 2 уровня при отправке и извлекал бы ее при получении. Но этот эмулятор потребует также ARP и, возможно, клиента DHCP. Я не знаю никого, кто мог бы этим заняться. Свяжитесь со мной, если вы хотите заняться этим.</string>
- <string name="faq">Помощь</string>
+ <string name="ics_openvpn_log_file">Файл журнала ICS OpenVPN</string>
+ <string name="copied_entry">Запись лог файла скопирована в буфер</string>
+ <string name="tap_mode">Режим касания</string>
+ <string name="faq_tap_mode">Режим TAP невозможен на устройствах без root, поэтому данное приложение не может обеспечить поддержку TAP.</string>
+ <string name="tap_faq2">Снова? Вы шутите? Нет, режим TAP действительно не поддерживается, и отправка большего количества писем с вопросом о том, будет ли реализована его поддержка, не поможет.</string>
+ <string name="tap_faq3">Третий раз? На самом деле можно было бы писать эмулятор tap, основанные на tun, который бы добавлял информацию 2-го уровня при отправке и извлекал бы ее при получении. Но этот эмулятор потребует также ARP и, возможно, клиента DHCP. Я не знаю никого, кто мог бы этим заняться. Свяжитесь со мной, если вы хотите заняться этим.</string>
+ <string name="faq">Вопросы и ответы</string>
<string name="copying_log_entries">Копирование записей журнала</string>
<string name="faq_copying">Чтобы скопировать отдельную запись журнала, нажмите и удерживайте эту запись в журнале. Чтобы скопировать и отправить весь журнал, используйте опцию «Отправить журнал». Используйте кнопку аппаратного меню, если она не отображается в графическом интерфейсе.</string>
<string name="faq_shortcut">Ярлык для запуска</string>
@@ -127,32 +123,32 @@
<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, разделенные символом \":\" (--data-ciphers). Оставьте пустым, чтобы использовать стандартные AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
+ <string name="chipher_dialog_message">Укажите алгоритмы шифрования для OpenVPN, разделяя их двоеточием (--data-ciphers). Для шифрования по умолчанию (AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305) оставьте пустым.</string>
<string name="auth_dialog_message">Введите дайджест аутентификации, используемый для OpenVPN. Оставьте поле пустым, чтобы использовать дайджест по умолчанию.</string>
<string name="settings_auth">Аутентификация/шифрование</string>
- <string name="file_explorer_tab">Проводник</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">Отказ в открытии устройства tun без информации об IP-адресе</string>
+ <string name="inline_file_data">[[Данные встроенного файла]]</string>
+ <string name="opentun_no_ipaddr">Отказ в открытии устройства tun без информации про IP адрес</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="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="no_bind">Без локальной привязки</string>
+ <string name="import_configuration_file">Импортировать файл конфигурации</string>
<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">Получено исключение при попытке отобразить диалоговое окно выбора сертификата Android 4.0+. Этого никогда не должно происходить, поскольку это стандартная функция Android 4.0+. Возможно, ваша поддержка Android ROM для хранения сертификатов не работает</string>
+ <string name="broken_image_cert">Произошла ошибка при попытке вызова системного диалога выбора сертификатов Android 4.0+. Такое никогда не должно происходить, поскольку это стандартная функция Android 4.0+. Возможно, поддержка хранилища сертификатов на вашей прошивке не работает.</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
<string name="speed_waiting">Ожидание сообщения о состоянии&#8230;</string>
@@ -165,78 +161,76 @@
<string name="password">Пароль</string>
<string name="file_icon">значок файла</string>
<string name="tls_authentication">Аутентификация/шифрование TLS</string>
- <string name="generated_config">Созданные параметры</string>
+ <string name="generated_config">Сгенерированная конфигурация</string>
<string name="generalsettings">Настройки</string>
- <string name="owner_fix_summary">Пытается установить владельца /dev/tun в system. Некоторым образам CM9 это необходимо для работы API VPNService. Требуется рут доступ.</string>
- <string name="owner_fix">Исправить право собственности на /dev/tun</string>
- <string name="generated_config_summary">Показывает сгенерированный файл параметров OpenVPN</string>
+ <string name="owner_fix_summary">Попытка изменить владельца /dev/tun в системе. Некоторые прошивки CM9 требуют этого для корректной работы OpenVPN 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">Включение этой опции приведет к принудительному переподключению, если состояние сети изменится (например, Wi-Fi или передачи данных)</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 обычно возвращается из хранилища ключей Android. Укажите отдельный сертификат, если вы получаете ошибки проверки сертификата.</string>
+ <string name="extracahint">Сертификат CA обычно берется из хранилища ключей Android. Если у вас возникли ошибки при проверке, вы можете указать другой CA сертификат.</string>
<string name="select_file">Выбрать</string>
- <string name="keychain_nocacert">Сертификат ЦС не возвращен при чтении из хранилища ключей Android. Аутентификация, вероятно, не удастся.</string>
- <string name="show_log_summary">Показывает окно журнала при подключении. К окну журнала всегда можно получить доступ из статуса уведомления.</string>
- <string name="show_log_window">Показать окно журнала</string>
+ <string name="keychain_nocacert">Не удалось получить CA сертификат из хранилища ключей Android. Аутентификация скорее всего работать не будет.</string>
+ <string name="show_log_summary">Показывает окно лог файла при подключении. Это окно можно также открыть из уведомления о состоянии.</string>
+ <string name="show_log_window">Показать окно лог файла</string>
<string name="mobile_info">%10$s %9$s работает на %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="error_extapp_sign">Ошибка подписи с помощью внешнего приложения для проверки подлинности (%3$s): %1$s: %2$s</string>
- <string name="faq_system_dialogs">\"Предупреждение о VPN-подключении о том, что это приложение может перехватывать весь трафик, наложено системой для предотвращения злоупотребления API VPNService.
-Уведомление о VPN-подключении (символ ключа) также накладывается системой Android, чтобы уведомлять о текущем VPN-подключении. На некоторых образах это уведомление воспроизводит звук.
-Android ввел эти системные диалоги для вашей безопасности и позаботился о том, чтобы их невозможно было обойти. (На некоторых изображениях это, к сожалению, включает звук уведомления)\"</string>
+ <string name="error_rsa_sign">Ошибка подписи с использованием ключа из хранилища Android %1$s: %2$s</string>
+ <string name="error_extapp_sign">Ошибка подписи с помощью внешнего приложения аутентификации (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">Предупреждение о подключении к VPN говорит о том что приложение может перехватывать весь сетевой трафик. Оно показывается системой Android автоматически для предотвращения злоупотреблений с использованием VPNService API.\nУведомление о VPN подключении (символ ключа) также формируется системой Android для индикации подключения к сети через VPN. В некоторых прошивках оно сопровоздается звуком. Система использует предупреждения и уведомления для вашей безопасности и их нельзя обойти (к сожалению, на некоторых прошивках это относится и к звуку уведомления).</string>
<string name="faq_system_dialogs_title">Предупреждение о подключении и звук уведомления</string>
<string name="translationby">Русский перевод от RusFox &lt;horonitel@gmail.com&gt; и многих других</string>
<string name="ipdns">IP и DNS</string>
<string name="basic">Основной</string>
<string name="routing">Маршрутизация</string>
- <string name="obscure">Непонятные настройки OpenVPN. Обычно не требуется.</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-серверов. Также обратите внимание, что Android будет продолжать использовать настройки вашего прокси, указанные для вашего мобильного и Wi-Fi подключения, если DNS-серверы не установлены.</string>
+ <string name="export_config_title">Конфигурация ICS OpenVPN</string>
+ <string name="warn_no_dns">Серверы DNS не используются. Разрешение имён может не работать. Рассмотрите возможность установки пользовательских DNS-серверов. Также обратите внимание, что Android будет продолжать использовать настройки прокси, указанные для вашего мобильного/WiFi-соединения, если не указаны DNS-серверы.</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/pkcs12, вы можете отправить его как вложение по электронной почте на своё устройство. Если же файлов несколько, вы можете использовать их со своей карты памяти.&lt;/p&gt;&lt;p&gt;Просто откройте .conf файл или выберите его в диалоге импорта (значок папки в списке профилей)&lt;/p&gt;&lt;p&gt;Если программа выдаст ошибку о нехватке некоторых файлов, просто поместите эти файлы на карту памяти.&lt;/p&gt;&lt;p&gt;Нажмите кнопку сохранения для добавления импортируемой конфигурации в программу&lt;/p&gt;&lt;p&gt;Запустите ваш 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 из параметров в хранилище ключей Android</string>
+ <string name="setting_loadtun_summary">Перед подключением попробуйте загрузить модуль ядра tun.ko. На устройстве потребуется уровень доступа root.</string>
+ <string name="setting_loadtun">Загрузить модуль туннеля (tun)</string>
+ <string name="importpkcs12fromconfig">Импортировать PKCS12 из параметров конфигурации в хранилище ключей Android</string>
<string name="getproxy_error">Ошибка при получении настроек прокси: %s</string>
- <string name="using_proxy">Через прокси %1$s %2$s</string>
+ <string name="using_proxy">Используется прокси %1$s %2$s</string>
<string name="use_system_proxy">Использовать системный прокси</string>
- <string name="use_system_proxy_summary">Использовать общесистемные параметры для подключения прокси HTTP/HTTPS.</string>
- <string name="onbootrestartsummary">OpenVPN подключит указанный VPN, если он был активен при загрузке системы. Прежде чем использовать эту опцию на Android &lt; 5.0, прочтите часто задаваемые вопросы о предупреждении о подключении.</string>
- <string name="onbootrestart">Подключаться при запуске</string>
+ <string name="use_system_proxy_summary">Использовать системные настройки для подключения HTTP/HTTPS прокси.</string>
+ <string name="keep_vpn_connected_summary">OpenVPN подключится к указанному VPN при старте системы и будет стараться держать VPN подключённым.</string>
+ <string name="keep_vpn_connected">Держать VPN подключённым</string>
<string name="ignore">Игнорировать</string>
- <string name="restart">Перезапуск</string>
- <string name="restart_vpn_after_change">Изменения конфигурации применяются после перезапуска VPN. (Пере)запустить VPN сейчас?</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="faq_duplicate_notification_title">Повторяющиеся уведомления</string>
- <string name="faq_duplicate_notification">Если Android испытывает нехватку системной памяти (ОЗУ), приложения и службы, которые в данный момент не нужны, удаляются из активной памяти. Это завершает текущее соединение VPN. Чтобы гарантировать, что подключение к OpenVPN не закрывается в фоне, то служба работает с более высоким приоритетом. Для работы с более высоким приоритетом приложение должно отображать уведомление. Иконка ключевого уведомления накладывается системой, как описано в предыдущем разделе часто задаваемых вопросов. Это не считается уведомлением приложения для работы с более высоким приоритетом.</string>
+ <string name="faq_duplicate_notification">Если Android испытывает нехватку системной памяти (RAM), приложения и службы, которые в данный момент не нужны, удаляются из активной памяти. Это завершает текущее соединение VPN. Чтобы гарантировать, что подключение к OpenVPN не закрывается, сервис работает с более высоким приоритетом. Для работы с более высоким приоритетом приложение должно отображать уведомление. Иконка ключевого уведомления накладывается системой, как описано в предыдущем разделе часто задаваемых вопросов. Это не считается уведомлением приложения для работы с более высоким приоритетом.</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="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_routing_title">Маршрутизация/Параметры интерфейса</string>
- <string name="faq_routing">\"Маршрутизация и настройка интерфейса выполняется не с помощью традиционных команд ifconfig/route, а с использованием API VPNService. Это приводит к другим параметрам маршрутизации, чем в других операционных системах.
-Параметры VPN-туннеля состоят из IP-адреса и сетей, которые должны быть маршрутизированы через этот интерфейс. В частности, не требуется адрес однорангового партнера или адрес шлюза. Специальные маршрутизации для доступа к VPN-серверу (например, добавленные при использовании шлюза перенаправления) также не нужны. Следовательно, приложение будет игнорировать эти настройки при импорте параметров. Приложение гарантирует работу с помощью API VPNService, что поключение к серверу не маршрутизируется через VPN-туннель.
-API VPNService не позволяет указывать сети, которые не должны маршрутизироваться через VPN. В качестве обходного пути приложение пытается обнаружить сети, которые не следует маршрутизировать через туннель (например, маршрут x.x.x.x y.y.y.y net_gateway), и вычисляет набор маршрутизаций, исключающих эти маршрутизации, для имитации поведения других платформ. В окнах журнала отображаются параметры VPNService после установки подключения.
-Сценарий: Android 4.4+ действительно использует маршрутизацию политик. Использование route/ifconfig не покажет установленные маршрутизации. Вместо этого используйте правило ip, iptables -t mangle -L\"</string>
- <string name="persisttun_summary">Не отключаться от VPN-подключения при повторном подключении OpenVPN.</string>
+ <string name="faq_hint">Ознакомьтесь с секцией Вопросы и Ответы. Есть также краткое руководство начала работы.</string>
+ <string name="faq_routing_title">Конфигурация маршрутизации/интерфейса</string>
+ <string name="faq_routing">Конфигурация маршрутизации и интерфейса производится не через традиционные команды ifconfig/route, а с помощью VPNService API. Это приводит к созданию другой конфигурации маршрутизации, отличной от конфигураций, используемых на других ОС.
+Конфигурация VPN-туннеля состоит из IP-адресов и сетей, которые должны направляться через этот интерфейс. Никаких особых адресов участников или адресов шлюза не требуется. Также не требуются и специальные маршруты для соединения с VPN-сервером (например, добавленные при использовании redirect-gateway). Следовательно, приложение будет игнорировать эти параметры при импорте конфигурации. Приложение с помощью VPNService API гарантирует, что подключение к серверу не направляется через VPN-туннель.
+API VPNService не позволяет указывать сети, которые не должны направляться через VPN. Приложение пытается определить сети, которые не должны быть направлены через туннель (например, маршрут x.x.x.x y.y.y.y net_gateway) и вычисляет список маршрутов, в который не включаются эти маршруты, чтобы эмулировать поведение других платформ. Окно журнала показывают конфигурацию сервиса VPN после установления соединения.
+За кулисами: Android 4.4+ использует политику маршрутизации. Использование route/ifconfig не покажет установленные маршруты. Вместо этого используйте IP-правило, iptables -t mangle -L.</string>
+ <string name="persisttun_summary">Не переходит на соединение без 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>
+ <string name="import_config">Импортировать конфигурацию OpenVPN</string>
+ <string name="battery_consumption_title">Потребление батареи</string>
<string name="baterry_consumption">В моих тестах главным источником высокого потребления электроэнергии батареи были пакеты 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; К сожалению, использование keepalive более, чем 60 секунд с UDP, может привести к тому, что некоторые шлюзы NAT будут обрывать соединение из-за отсутствия активности. Использование TCP с большим keepalive-таймаутом будет работать, но производительность туннелирования TCP через TCP в сетях с высокими потерями пакетов крайне низкая (см. &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">Функция Android-модема (через Wi-Fi, USB или Bluetooth) и API VPNService (используемая этой программой) не работают вместе. Дополнительные сведения смотрите в &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;Выпуск #34&lt;/a&gt;</string>
- <string name="vpn_tethering_title">VPN и модем</string>
- <string name="connection_retries">Повторные попытки подключения</string>
+ <string name="faq_tethering">Функция раздачи интернета в Android (через WiFi, USB или Bluetooth) и VPNService API (используемое этим приложением) не работают вместе. Подробней в &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;проблеме №34&lt;/a&gt;.</string>
+ <string name="vpn_tethering_title">VPN и раздача интернета</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 для Android» завершилось неожиданно. Рассмотрите возможность отправить минидамп разработчику из главного меню.</string>
<string name="send_minidump">Отправить мини-дамп разработчику</string>
<string name="send_minidump_summary">Отправляет отладочную информацию о последнем сбое разработчику</string>
<string name="notifcation_title">OpenVPN - %s</string>
@@ -247,200 +241,194 @@ API VPNService не позволяет указывать сети, которы
<string name="state_auth">Аутентификация</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_resolve">Разрешение имён узлов</string>
<string name="state_tcp_connect">Подключение (TCP)</string>
<string name="state_auth_failed">Аутентификация не удалась</string>
- <string name="state_nonetwork">Ожидание подключения к сети</string>
+ <string name="state_nonetwork">Ожидание доступной к сети</string>
<string name="state_waitorbot">Ожидание запуска Orbot</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">Код шифрования</string>
- <string name="packet_auth">Пакетная аутентификация</string>
- <string name="auth_dialog_title">Введите метод аутентификации пакета</string>
- <string name="built_by">собрано с помощью %s</string>
- <string name="debug_build">Сборка отладки</string>
+ <string name="encryption_cipher">Коды шифрования</string>
+ <string name="packet_auth">Аутентификация пакетов</string>
+ <string name="auth_dialog_title">Укажите метод аутентификации пакетов</string>
+ <string name="debug_build">Отладочная сборка</string>
<string name="official_build">официальная сборка</string>
<string name="make_selection_inline">Скопировать в конфигурацию</string>
- <string name="crashdump">Аварийный дамп</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">Ваши импортированные параметры использовали старую УСТАРЕВШУЮ опцию tls-remote, которая использует другой формат DN.</string>
+ <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="help_translate">Вы можете помочь с переводом, посетив https://crowdin.net/project/ics-openvpn/invite</string>
<string name="prompt">%1$s пытается контролировать %2$s</string>
- <string name="remote_warning">Продолжая, вы даете приложению разрешение полностью контролировать OpenVPN для Android и перехватывать весь сетевой трафик. НЕ принимайте, если вы не доверяете приложению. В противном случае вы рискуете, что ваши данные будут скомпрометированы вредоносным ПО.</string>
+ <string name="remote_warning">Продолжая, вы даёте приложению «OpenVPN для Android» разрешение на полный контроль и перехват всего сетевого трафика. <b> Не продолжайте, если не доверяете этому приложению. </b> В противном случае вы рискуете подвергнуть свои данные риску компрометации вредоносным ПО.</string>
<string name="remote_trust">Я доверяю этому приложению.</string>
- <string name="no_external_app_allowed">Ни одному приложению не разрешено использовать внешний API</string>
+ <string name="no_external_app_allowed">Нет приложений, разрешённых для внешнего API</string>
<string name="allowed_apps">Разрешённые приложения: %s</string>
- <string name="clearappsdialog">\"Очистить список разрешенных внешних приложений?
-Текущий список разрешенных приложений:
-
-%s\"</string>
+ <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 в %2$ss</string>
- <string name="screen_nopersistenttun">Предупреждение: постоянный туннель не включен для этой VPN. Когда экран выключен, трафик будет использовать обычное Интернет-соединение.</string>
+ <string name="screen_nopersistenttun">Внимание: постоянный туннель не включён для этого VPN. Трафик будет использовать обычное подключение к сети интернет, когда экран выключен.</string>
<string name="save_password">Сохранить пароль</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="state_screenoff">VPN приостановлен – выключен экран</string>
<string name="device_specific">Хаки для данного устройства</string>
- <string name="cannotparsecert">Невозможно отобразить информацию о сертификате</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 для Android</string>
+ <string name="permission_icon_app">Значок приложения, пытающегося использовать «OpenVPN для Android»</string>
<string name="faq_vpndialog43">"Начиная с Android 4.3, диалог подтверждения VPN-соединения защищён от приложений, «накладывающихся поверх экрана». Это приводит к тому, что диалоговое окно подтверждения не реагирует на сенсорные нажатия. Если вам попадётся приложение, использующее наложения и вызывающее такое поведение, свяжитесь с автором этого приложения. Эта проблема затрагивает все VPN приложения на Android 4.3 и более поздних версиях. Смотрите также &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; для получения дополнительных сведений"</string>
<string name="faq_vpndialog43_title">Диалог подтверждения VPN</string>
- <string name="donatePlayStore">В качестве альтернативы вы можете отправить нам пожертвование через Google Play:</string>
- <string name="thanks_for_donation">Большое спасибо вам за пожертвование %s!</string>
+ <string name="donatePlayStore">В качестве альтернативы вы можете сделать пожертвование в Play Store:</string>
+ <string name="thanks_for_donation">Спасибо за донат %s!</string>
<string name="logCleared">Журнал очищен.</string>
<string name="show_password">Показать пароль</string>
- <string name="keyChainAccessError">Ошибка доступа к связке ключей: %s</string>
- <string name="timestamp_short">Короткая</string>
+ <string name="keyChainAccessError">Ошибка при доступе к хранилищу ключей: %s</string>
+ <string name="timestamp_short">Кратко</string>
<string name="timestamp_iso">ISO</string>
- <string name="timestamps">Отметки времени</string>
+ <string name="timestamps">Время</string>
<string name="timestamps_none">Ничего</string>
<string name="uploaded_data">Загрузить</string>
- <string name="downloaded_data">Загрузки</string>
+ <string name="downloaded_data">Скачать</string>
<string name="vpn_status">Статус VPN</string>
<string name="logview_options">Настройки вида</string>
- <string name="unhandled_exception">\"Необработанное исключение: %1$s
+ <string name="unhandled_exception">\"Неопознанная ошибка: %1$s
%2$s\"</string>
<string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
- <string name="faq_system_dialog_xposed">Если вы получили рут права на вашем устройстве Android, вы можете установить &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&lt;/a&gt; на свой страх и риск</string>
+ <string name="faq_system_dialog_xposed">Если на вашем устройстве есть root, можете установить &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&lt;/a&gt; на свой страх и риск.</string>
<string name="full_licenses">Полные тексты лицензий</string>
- <string name="blocklocal_summary">Сети, напрямую подключенные к локальным интерфейсам, не будут маршрутизироваться через VPN. Отмена выбора этого параметра приведет к перенаправлению всего трафика, предназначенного для локальных сетей, в частности VPN.</string>
+ <string name="blocklocal_summary">Сети, напрямую подключённые к локальным интерфейсам, не будут маршрутизироваться через VPN. Отмена выбора этого параметра приведёт к перенаправлению всего трафика, предназначенного для локальных сетей, в частности VPN.</string>
<string name="blocklocal_title">Обход VPN для локальных сетей</string>
- <string name="userpw_file">Файл имени пользователя и пароля</string>
+ <string name="userpw_file">Файл с именем пользователя/паролем</string>
<string name="imported_from_file">[Импортировано из: %s]</string>
<string name="files_missing_hint">Некоторые файлы не найдены. Выберите файлы для импорта в конфигурацию:</string>
<string name="openvpn_is_no_free_vpn">Чтобы использовать это приложение, вам необходим провайдер VPN/шлюз VPN, поддерживающий VPN Pro (часто предоставляется вашим работодателем). Посетите https://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">Значение переопределения 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, запущенным через туннель, что они должны ограничить размер своих пакетов отправки, чтобы после их инкапсуляции OpenVPN результирующий размер пакета UDP, который OpenVPN отправляет своему партнеру, не превышал этого количества байтов. (по умолчанию 1450)</string>
+ <string name="mssfix_value_dialog">Объявить TCP-сессиям, работающим через туннель, что они должны ограничить размер своих пакетов так, чтобы после их инкапсуляции OpenVPN результирующий размер UDP-пакета, который OpenVPN посылает своим одноранговым узлам, не превышал это число байт. (1450 по умолчанию)</string>
<string name="mssfix_checkbox">Переопределить MSS для нагрузки TCP</string>
<string name="mssfix_dialogtitle">Задать MSS для нагрузки TCP</string>
<string name="client_behaviour">Поведение клиента</string>
<string name="clear_external_apps">Очистить разрешённые внешние приложения</string>
- <string name="loading">Загрузка...</string>
+ <string name="loading">Загрузка&#8230;</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="vpn_allow_bypass">Разрешить приложениям обходить VPN</string>
- <string name="query_delete_remote">Удалить запись удаленного сервера?</string>
- <string name="keep">Содержание</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="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="payload_options">Настройки нагрузки</string>
<string name="tls_settings">Настройки TLS</string>
- <string name="no_remote_defined">Управление не определено</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">Существуют различные клиенты OpenVPN для Android. Самые распространённые — OpenVPN для Android (этот клиент), OpenVPN Connect и OpenVPN Settings.&lt;p&gt;Клиенты можно разделить на две группы: OpenVPN для Android и OpenVPN Connect используют официальный VPNService API (Android 4.0+) и не требуют root-доступ, и OpenVPN Settings, который требует root.&lt;p&gt;OpenVPN для Android — клиент с открытым исходным кодом, который разработал Arne Schwabe. Он предназначен для более опытных пользователей и предоставляет много настроек, возможность импорта конфигураций из файлов и настраивать/изменять конфигурации внутри приложения. Этот клиент основан на общественной версии OpenVPN. А именно на исходном коде OpenVPN 2.x. Этот клиент можно представить как полуофициальный клиент сообщества. &lt;p&gt;OpenVPN Connect — клиент с закрытым исходным кодом, который разрабатывается OpenVPN Technologies, Inc. Он призван для обычного использования и предназначен для простых пользователей, и позволяет импортировать конфигурации OpenVPN. Этот клиент основан на OpenVPN C++, другой реализации протокола OpenVPN (Это потребовалось OpenVPN Technologies, Inc, чтобы опубликовать приложение OpenVPN на iOS). Этот клиент — официальный клиент OpenVPN technologies &lt;p&gt; OpenVPN Settings — старейший из клиентов, он также UI для OpenVPN с открытым исходным кодом. В отличие от OpenVPN для Android, он требует root-прав и не использует VPNService API. Он не зависит от Android 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 для Android будет использовать /32 для не CIDR-маршрутов и выдавать предупреждение.</string>
- <string name="ab_tethering_44">Режим модема работает, пока активен VPN. Привязанное подключение НЕ будет использовать VPN.</string>
- <string name="ab_kitkat_mss">Ранняя версия KitKat устанавливала неправильное значение MSS для TCP-соединений (#61948). Попробуйте включить опцию mssfix, чтобы обойти эту ошибку.</string>
- <string name="ab_proxy">Android будет продолжать использовать настройки вашего прокси, указанные для мобильного/Wi-Fi подключения, если DNS-серверы не установлены. OpenVPN для Android предупредит вас об этом в журнале. Когда VPN устанавливает DNS-сервер, Android не будет использовать прокси. API для установки прокси для VPN-подключения отсутствует.</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, которое используется для поддержки persist-tun, приводит к сбою служб VPN на устройстве. Для возобновления работы VPN требуется перезагрузка. OpenVPN для Android пытается избежать повторного открытия устройства tun и, если это действительно необходимо, сначала закрывает текущий TUN перед открытием нового устройства TUN, чтобы избежать сбоя. Это может привести к появлению короткого окна, в котором пакеты отправляются через соединение, отличаемые от VPN. Даже с этим временным решением VPNServices иногда дает сбой и требует перезагрузки устройства.</string>
+ <string name="ab_only_cidr">Android поддерживает только CIDR-маршруты к VPN. Поскольку маршруты без CIDR почти никогда не используются, «OpenVPN для Android» будет использовать /32 для маршрутов без CIDR и выдавать предупреждение.</string>
+ <string name="ab_tethering_44">Вы можете раздавать интернет при активном VPN, но это соединение НЕ будет использовать VPN.</string>
+ <string name="ab_kitkat_mss">Ранние версии KitKat устанавливают неправильное значение MSS для TCP-соединений (#61948). Попробуйте включить функцию mssfix, чтобы обойти эту ошибку.</string>
+ <string name="ab_proxy">Android будет продолжать использовать настройки прокси, указанные для мобильного/WiFi-соединения, когда не установлен DNS-сервер. «OpenVPN для Android» предупредит вас об этом в журнале.<p>Когда VPN установит DNS-сервер, Android прекратит использовать прокси. Для установки прокси для VPN-соединения нет API.</p></string>
+ <string name="ab_not_route_to_vpn">Сконфигурированный IP-адрес клиента и IP-адреса в его маске сети не маршрутизируются в VPN. OpenVPN обходит эту ошибку, явно добавляя маршрут, который соответствует IP-адресу клиента и его маске сети.</string>
+ <string name="ab_persist_tun">Открытие туннеля, когда туннель уже активен, для его постоянного удержания, может привести к ошибке и VPNServices закроется на устройстве. Для возобновления работы VPN требуется перезагрузка. «OpenVPN для Android» пытается избежать установки второго туннеля, и, если это действительно нужно, сначала закроет текущий туннель, перед открытием нового, чтобы избежать сбоя приложения. Это может привести к небольшому интервалу, в котором передача пакетов происходит по обычному (не 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_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">Неверное значение MSS для VPN-подключения</string>
+ <string name="ab_kitkat_mss_title">Неправильное значение MSS для VPN-подключения</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">Режим Persist tun</string>
+ <string name="ab_persist_tun_title">Постоянный режим туннеля</string>
<string name="version_and_later">%s и позднее</string>
- <string name="tls_cipher_alert_title">Сбой подключения с SSL23_GET_SERVER_HELLO:sslv3 сбой квитирования предупреждения</string>
- <string name="tls_cipher_alert">\"Более новые версии OpenVPN для Android (0.6.29/март 2015 г.) используют более безопасное значение по умолчанию для разрешенных наборов шифрования (tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\"). К сожалению, пропуск менее безопасных комплектов шифрования и экспортных комплектов шифрований, особенно отсутствие комплектов шифрований, не поддерживающих Perfect Forward Secrecy (Diffie-Hellman), вызывает некоторые проблемы. Обычно это вызвано благими намерениями, но плохо выполненной попыткой усилить безопасность TLS путем установки tls-cipher на сервере или некоторых встроенных ОС с урезанным SSL (например, MikroTik).
-Чтобы решить эту проблему, установите настройки tls-cipher на сервере на разумные значения по умолчанию, такие как tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\". Чтобы обойти проблему на клиенте, добавьте настраиваемую опцию tls-cipher DEFAULT в клиент Android.\"</string>
+ <string name="tls_cipher_alert_title">Сбой соединения с SSL23_GET_SERVER_HELLO:ошибка рукопожатия sslv3</string>
+ <string name="tls_cipher_alert">Новые версии «OpenVPN для Android» (0.6.29/март 2015 года) используют более безопасные настройки по умолчанию для разрешённых наборов шифров (tls-cipher «DEFAULT:!EXP:!PSK:!SRP:!kRSA»). К сожалению, прекращение использования менее безопасных и экспортных наборов шифров, а особенно тех наборов шифров, которые не поддерживают Perfect Forward Secrecy (Diffie-Hellman), приводит к некоторым проблемам. Обычно это происходит из-за благонамеренной, но плохо реализованной попытки усиления безопасности TLS путём установки tls-cipher на сервере или некоторых встроенных ОС с урезанным SSL (например, MikroTik).
+Чтобы решить эту проблему, установите настройки 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 (приложение, вероятно, разбилось или было убито из-за нехватки памяти)</string>
+ <string name="service_restarted">Перезапуск службы OpenVPN (приложение, вероятно, аварийно завершилось или было закрыто из-за нехватки памяти)</string>
<string name="import_config_error">При импорте параметров возникла ошибка, сохранение невозможно.</string>
<string name="Search">Поиск</string>
- <string name="lastdumpdate">(Последний дамп %1$d:%2$dh старый (%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 для Android может попытаться автоматически обнаружить отсутствующие файлы на SD-карте. Нажмите на это сообщение, чтобы предоставить запрос разрешения.</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 для Android» может попытаться автоматически обнаружить отсутствующие файлы на SD-карте. Нажмите на это сообщение, чтобы получить запрос на разрешение.</string>
<string name="protocol">Протокол</string>
<string name="enabled_connection_entry">Включено</string>
<string name="permission_revoked">Разрешение VPN отозвано ОС (например, запущена другая программа VPN), остановка VPN</string>
- <string name="pushpeerinfo">Получить информацию о пире</string>
- <string name="pushpeerinfosummary">Отправьте на сервер дополнительную информацию, например dерсия SSL и версия Android</string>
+ <string name="pushpeerinfo">Получить информацию об участнике</string>
+ <string name="pushpeerinfosummary">Отправлять дополнительную информацию на сервер, например, версию SSL и версию Android</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_tlsauth">Отсутствует файл tls-auth</string>
<string name="missing_certificates">Отсутствует сертификат пользователя или файл ключа сертификата пользователя</string>
<string name="crl_title">Список отозванных сертификатов (необязательно)</string>
- <string name="reread_log">Перечитать (%d) элементы журнала из файла кэша журнала</string>
- <string name="samsung_broken">\"Несмотря на то, что телефоны Samsung являются одними из самых продаваемых телефонов Android, прошивки Samsung также являются одними из самых глючных прошивок Android. Ошибки не ограничиваются работой VPN на этих устройствах, но многие из них можно обойти. Ниже описаны некоторые из этих ошибок.
+ <string name="reread_log">Перечитать (%d) элементов из файла кеша журнала</string>
+ <string name="samsung_broken">Даже несмотря на то, что устройства Samsung являются одними из наиболее продаваемых устройств на Android, прошивки Samsung также являются и наиболее проблемными прошивками на Android. Ошибки не ограничиваются только работой VPN на этих устройствах, но многие из них можно обойти. Далее описаны некоторые из этих ошибок.
-DNS не работает, если DNS-сервер не находится в диапазоне VPN.
+DNS не работает, если сервер DNS не в диапазоне VPN.
На многих устройствах Samsung 5.x функция разрешённых/запрещённых приложений не работает.
-Сообщается, что на Samsung 6.x VPN не работает, если приложение VPN не освобождено от функций Энергосбережения.\"</string>
+На Samsung 6.x, как сообщается, VPN не работает, пока приложению VPN не разрешено не экономить заряд батареи.</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="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="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">Параметры используют опцию tls-remote, которые устарели в 2.3 и окончательно были удалены в 2.4.</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>
@@ -454,43 +442,68 @@ DNS не работает, если DNS-сервер не находится в
<string name="kbits_per_second">%.1f кбит/с</string>
<string name="mbits_per_second">%.1f Мбит/с</string>
<string name="gbits_per_second">%.1f Гбит/с</string>
- <string name="volume_byte">%.1f Б</string>
+ <string name="weakmd">&lt;p&gt;Начиная с OpenSSL версии 1.1, отклоняются слабые подписи сертификатов, такие как MD5. Кроме того, с OpenSSL версии 3.0, подписи с SHA1 также отклоняются.&lt;/p&gt;&lt;p&gt;Вам следует как можно скорее обновить сертификаты VPN, поскольку в ближайшем будущем SHA1 перестанет работать на и других платформах.&lt;/p&gt;&lt;p&gt;Если вы действительно хотите использовать устаревшие и повреждённые сертификаты, выберите «Небезопасный» для профиля безопасности TLS в разделе «Аутентификация/Шифрование».&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_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 слишком слабый)</string>
+ <string name="channel_description_status">Изменения состояния соединения OpenVPN (подключение, аутентификация, &#8230;)</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="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="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>
+ <string name="openvpn3_pkcs12">Использование файлов PKCS12 напрямую с помощью OpenVPN 3 C ++ не поддерживается. Импортируйте файлы PKCS12 в хранилище ключей Android или переключитесь на OpenVPN 2.x в общих настройках.</string>
<string name="proxy">Прокси</string>
<string name="Use_no_proxy">Нет</string>
- <string name="tor_orbot">Tor браузер (Орбот)</string>
- <string name="openvpn3_socksproxy">Реализация VPN Pro 3 C++ не поддерживает подключение через прокси-сервер Socks</string>
- <string name="no_orbotfound">Приложение Orbot не найдено. Установите Orbot или используйте ручную интеграцию Socks v5.</string>
+ <string name="tor_orbot">Tor (Orbot)</string>
+ <string name="openvpn3_socksproxy">Реализация OpenVPN 3 на C++ не поддерживает подключение через Socks-прокси</string>
+ <string name="no_orbotfound">Приложение Orbot не найдено. Установите Orbot или настройте Socks v5 вручную.</string>
<string name="faq_remote_api_title">Удалённый API</string>
<string name="faq_remote_api">OpenVPN для Android поддерживает два удалённых API: сложный API с использованием AIDL (remoteEXample в репозитории git) и простой с использованием Intents.&lt;p&gt;Примеры использования оболочки adb и intents. Замените profileName на название своей конфигурации&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn/.api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN -e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn/.api.ConnectVPN</string>
- <string name="enableproxyauth">Включить аутентификацию прокси</string>
+ <string name="enableproxyauth">Использовать аутентификацию прокси</string>
<string name="error_orbot_and_proxy_options">Невозможно одновременно использовать дополнительную инструкцию http-proxy-option и интеграцию с Orbot</string>
- <string name="info_from_server">"Информация с сервера: \'%s\'"</string>
+ <string name="info_from_server">Информация от сервера: «%s»</string>
<string name="channel_name_userreq">Требуется взаимодействие с пользователем</string>
<string name="channel_description_userreq">Для подключения OpenVPN требуется ввод данных пользователем, например двухфакторная аутентификация</string>
<string name="openurl_requested">Открыть URL-адрес для продолжения аутентификации VPN</string>
<string name="crtext_requested">Ответить на запрос, чтобы продолжить аутентификацию VPN</string>
<string name="state_auth_pending">Ожидание аутентификации</string>
<string name="external_authenticator">Внешний аутентификатор</string>
- <string name="configure">Параметры</string>
+ <string name="configure">Настройка</string>
<string name="extauth_not_configured">Внешний аутентификатор не настроен</string>
- <string name="faq_killswitch_title">Блокировать соединение без VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch_title">Блокировать соединение без VPN («Killswitch»)</string>
+ <string name="faq_killswitch">Часто желательно блокировать соединения без VPN. Другие приложения часто используют термины «Killswitch» или «Seamless tunnel» для данной функции. OpenVPN и это приложение предлагают использовать постоянный туннель для реализации данной функции.&lt;p&gt;Проблема всех этих методов, предлагаемых приложениями, заключается в том, что они могут только улучшить ситуацию, но не являются полноценными решениями. При загрузке, сбое приложения и других сложных случаях приложение не может гарантировать, что запрет не VPN-соединений сработает, давая пользователю ложное чувство безопасности.&lt;p&gt;&lt;b&gt;Единственный&lt;/b&gt; надёжный способ гарантировать, что не VPN-соединения заблокированы, это использовать Android 8.0 или новее и настройку «Блокировать соединения без VPN», которую можно найти в «Настройках» → «Сеть и интернет» → «Дополнительно/VPN» → «OpenVPN для Android» → включить блокировку соединений без VPN («VPN всегда включена»).</string>
+ <string name="summary_block_address_families">Эта функция предписывает Android не разрешать протоколы (IPv4/IPv6), если VPN не устанавливает адреса IPv4 или IPv6.</string>
+ <string name="title_block_address_families">Блокировать IPv6 (или IPv4), если не используется по VPN</string>
+ <string name="install_keychain">Установить новый сертификат</string>
+ <string name="as_servername">Сервер AS</string>
+ <string name="server_url">URL сервера</string>
+ <string name="request_autologin">Запрос профиля автовхода</string>
+ <string name="import_from_as">Импорт профиля с удаленного сервера</string>
+ <string name="no_default_vpn_set">Не задан VPN по умолчанию. Перед включением этой функции установите VPN по умолчанию.</string>
+ <string name="internal_web_view">Встроенный WebView</string>
+ <string name="faq_ncp">"Могут быть вариации этого сообщения в зависимости от конкретной ситуации. Их всех объединяет то, что сервер и клиент не смогли договориться об общем шифре. Основными причинами являются: &lt;ul&gt;&lt;li&gt; Вы всё ещё рассчитываете на то, что в OpenVPN 2.4 и более ранних версиях шифр BF-CBC разрешён в конфигурации по умолчанию (если не задан --cipher). Начиная с OpenVPN 2.5 по умолчанию это не так, так как шифр является &lt;a href=https://community.openvpn.net/openvpn/wiki/SWEET32&gt;скомпрометированным/устаревшим&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; Сервер работает под управлением OpenVPN 2.3 (или даже старее) с --enable-small (как минимум 4-5 летний давности).&lt;/li&gt;&lt;li&gt; Неправильная конфигурация (например, несоответствие шифров на клиенте и сервере).&lt;/li&gt;&lt;p&gt;&lt;a href=https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst&gt;Раздел руководства OpenVPN по согласованию шифров&lt;/a&gt; очень хорошо объясняет различные сценарии согласования и что нужно делать в такой ситуации.&lt;/li&gt;&lt;li&gt; Устройства TP-Link используют в своих прошивках версию OpenVPN 2.3.x как минимум 5-летней давности (возможно, и более раннюю), даже в моделях 2019-2020 годов.&lt;/li&gt;&lt;li&gt; И последнее, но не менее важное: существует популярный VPN-провайдер, у которого есть неправильно настроенный сервер, всегда сообщающий, что использует «BF-CBC», потому что его разработчик подумал, что было бы неплохо создать правильный патч согласования шифров, несовместимый со стандартом OpenVPN.&lt;/li&gt;&lt;p&gt;В качестве итога: все нормальные конфигурации не должны возвращать подобную ошибку. Но (за исключением неправильно настроенного сервера VPN-провайдера) клиент можно заставить подключиться (устранив симптом, а не настоящую проблему). При подключении к старым серверам функция «Режим совместимости» в основных настройках VPN должна помочь решить большинство распространённых проблем совместимости."</string>
+ <string name="check_peer_fingerprint">Проверять отпечаток сертификата участника</string>
+ <string name="fingerprint">(Введите SHA256-отпечаток сертификатов сервера)</string>
+ <string name="proxy_info">HTTP-прокси: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Используйте системную функцию «VPN всегда включена» в Android для включения VPN во время загрузки.</string>
+ <string name="open_vpn_settings">Настройки Open VPN</string>
+ <string name="trigger_pending_auth_dialog">Нажмите здесь, чтобы открыть окно ввода дополнительных необходимых данных аутентификации</string>
<string name="compatmode">Режим совместимости</string>
<string name="compat_mode_label">Режим совместимости</string>
+ <string name="loadossllegacy">Загрузка устаревшего провайдера OpenSSL</string>
+ <string name="bf_cbc_requires_legacy">Профили используют BF-CBC, который зависит от устаревшего OpenSSL (отсутствует).</string>
+ <string name="allow_translations_title">Использовать локализацию</string>
+ <string name="allow_translations_summary">Использовать локализацию приложения с помощью перевода, выполненного сообществом. Потребуется перезапуск приложения.</string>
+ <string name="tls_profile">Профиль безопасности TLS</string>
+ <string name="encrypt_profiles">Пробовать шифровать профили в хранилище (если поддерживается ОС Android)</string>
+ <string name="missing_notification_permission">Отсутствует разрешение на уведомления. Оно используется для отображения состояния VPN и уведомления о необходимом взаимодействии с пользователем, например, о многофакторной авторизации.\n\nЩелкните по этому сообщению, чтобы предоставить приложению разрешение на уведомления</string>
</resources>
diff --git a/main/src/ui/res/values-si/arrays.xml b/main/src/ui/res/values-si/arrays.xml
new file mode 100644
index 00000000..3d4570b9
--- /dev/null
+++ b/main/src/ui/res/values-si/arrays.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>සහතික</item>
+ <item>PKCS12 ගොනුව</item>
+ <item>ඇන්ඩ්රොයිඩ් සහතිකය</item>
+ <item>පරිශීලකනාමය/මුරපදය</item>
+ <item>ස්ථිතික යතුරු</item>
+ <item>පරිශීලක/PW + සහතික</item>
+ <item>පරිශීලක/PW + PKCS12 </item>
+ <item>පරිශීලක/PW + Android</item>
+ <item>බාහිර සත්යාපන සැපයුම්කරු</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>සංකේතනය (--tls-crypt)</item>
+ <item>TLS Crypt V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>විසන්ධි කර, මුරපදය අමතක කරන්න</item>
+ <item>විසන්ධි කර, මුරපදය තබා ගන්න</item>
+ <item>නොසලකන්න, නැවත උත්සාහ කරන්න</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>නවීන පෙරනිමි</item>
+ <item>OpenVPN 2.5.x සම වයසේ මිතුරන්</item>
+ <item>OpenVPN 2.4.x සම වයසේ මිතුරන්</item>
+ <item>OpenVPN 2.3.x සහ වැඩිහිටි සම වයසේ මිතුරන්</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>අනාරක්ෂිත (නිර්දේශ නොකරයි, අනාරක්ෂිත ගුප්තකේතනයට ඉඩ දෙයි)</item>
+ <item>උරුමය (පෙරනිමි)</item>
+ <item>කැමති (නිර්දේශිත නමුත් සීමිත අනුකූලතාව)</item>
+ <item>කට්ටලය B (NIST අනුමත ඉලිප්සීය වක්‍ර පමණි)</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-si/plurals.xml b/main/src/ui/res/values-si/plurals.xml
new file mode 100644
index 00000000..d13ff6cb
--- /dev/null
+++ b/main/src/ui/res/values-si/plurals.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">මාසයක් ඉතිරියි</item>
+ <item quantity="other">මාස %d ක් ඉතිරියි</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">එක දවසක් ඉතුරුයි</item>
+ <item quantity="other">දින %d ක් ඉතිරිව ඇත</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">පැයක් ඉතිරියි</item>
+ <item quantity="other">පැය %d ක් ඉතිරියි</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">විනාඩියක් ඉතිරියි</item>
+ <item quantity="other">විනාඩි %d ක් ඉතිරියි</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-si/strings.xml b/main/src/ui/res/values-si/strings.xml
new file mode 100644
index 00000000..35bd6cfe
--- /dev/null
+++ b/main/src/ui/res/values-si/strings.xml
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">ඇන්ඩ්‍රොයිඩ් සඳහා ඕපන්වීපීඑන්</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="client_no_certificate">සහතිකය නැත</string>
+ <string name="client_certificate_title">අනුග්‍රාහකයාගේ සහතිකය</string>
+ <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">මූලාශ්‍ර කේතය සහ නිකුතු ට්‍රැකරය https://github.com/schwabe/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="ipv6_dialog_tile">CIDR ආකෘතියෙන් IPv6 ලිපිනය/Netmask ඇතුළු කරන්න (උදා: 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">CIDR ආකෘතියෙන් IPv4 ලිපිනය/Netmask ඇතුලත් කරන්න (උදා. 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4 ලිපිනය</string>
+ <string name="ipv6_address">IPv6 ලිපිනය</string>
+ <string name="custom_option_warning">අභිරුචි OpenVPN විකල්ප ඇතුළත් කරන්න. පරිස්සමෙන් භාවිතා කරන්න. VPNSettings නිර්මාණය මගින් බොහෝ tun සම්බන්ධ OpenVPN සිටුවම් වලට සහය දැක්විය නොහැකි බව සලකන්න. වැදගත් විකල්පයක් අස්ථානගත වී ඇතැයි ඔබ සිතන්නේ නම් කතුවරයා අමතන්න</string>
+ <string name="auth_username">පරිශීලක නාමය (සත්‍යාපනයක් නොමැතිව හිස්ව තබන්න)</string>
+ <string name="auth_pwquery">මුරපදය</string>
+ <string name="static_keys_info">ස්ථිතික වින්‍යාසය සඳහා TLS Auth Keys ස්ථිතික යතුරු ලෙස භාවිතා කරනු ඇත</string>
+ <string name="configure_the_vpn">අ.පු.ජා. වින්‍යාසගත කරන්න</string>
+ <string name="menu_add_profile">පැතිකඩ එකතු කරන්න</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_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">ඔපන්වීපීඑන් කෙටිමඟ</string>
+ <string name="vpn_launch_title">අ.පු.ජා. වෙත සම්බන්ධ&#8230;</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">මාර්ගය Android විසින් ප්‍රතික්ෂේප කරන ලදී</string>
+ <string name="cancel_connection">විසන්ධි කරන්න</string>
+ <string name="cancel_connection_long">අ.පු.ජා. විසන්ධි කරන්න</string>
+ <string name="clear_log">පැහැදිලි ලඝු-සටහන</string>
+ <string name="title_cancel">තහවුරු කිරීම අවලංගු කරන්න</string>
+ <string name="cancel_connection_query">සම්බන්ධිත VPN විසන්ධි කරන්න/සම්බන්ධතා උත්සාහය අවලංගු කරන්නද?</string>
+ <string name="remove_vpn">අ.පු.ජා. ඉවත් කරන්න</string>
+ <string name="check_remote_tlscert">සේවාදායකය TLS සේවාදායක දිගු සමඟ සහතිකයක් භාවිතා කරන්නේ දැයි පරීක්ෂා කරයි (--දුරස්ථ-cert-tls සේවාදායකය)</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 (openvpn.blinkt.de in) සඳහන් කරන්න. උදාහරණය) හෝ සත්‍යාපනය සඳහා RDN උපසර්ගයක්.\n\nRDN උපසර්ගය භාවිතා කරන විට \"Server\" ගැලපීම \"Server-1\" සහ \"Server-2\"\n\nපාඨ ක්ෂේත්‍රය හිස්ව තැබීමෙන් සේවාදායක සත්කාරක නාමයට එරෙහිව RDN පරීක්ෂා කරනු ඇත.\n\nවැඩි විස්තර සඳහා -verify-x509-name යටතේ OpenVPN 2.3.1+ manpage බලන්න</string>
+ <string name="enter_tlscn_title">දුරස්ථ සහතික විෂය</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">ඔබගේම ව.නා.ප. සේවාදායක භාවිතා කරන්න</string>
+ <string name="searchdomain">වසමසොයන්න</string>
+ <string name="dns1_summary">භාවිතා කළ යුතු ව.නා.ප. සේවාදායකයා</string>
+ <string name="dns_server">ව.නා.ප. සේවාදායකයා</string>
+ <string name="secondary_dns_message">සාමාන්‍ය DNS සේවාදායකය වෙත ළඟා විය නොහැකි නම් ද්විතීයික DNS සේවාදායකය භාවිතා කරයි.</string>
+ <string name="backup_dns">උපස්ථ ව.නා.ප. සේවාදායකයා</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\" VPN හරහා 10.0.0.0/8 සහ 2002::/16 ජාල මෙහෙයවනු ඇත.</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">අ.පු.ජා. සැකසුම් සංස්කරණය</string>
+ <string name="remove_vpn_query">අ.පු.ජා. පැතිකඩ \'%s\' ඉවත් කරන්නද?</string>
+ <string name="tun_error_helpful">සමහර අභිරුචි ICS රූප මත /dev/tun මත අවසරය වැරදි විය හැක, නැතහොත් tun මොඩියුලය සම්පුර්ණයෙන්ම අතුරුදහන් විය හැක. CM9 පින්තූර සඳහා සාමාන්‍ය සැකසුම් යටතේ හිමිකාරත්වය නිවැරදි කිරීමේ විකල්පය උත්සාහ කරන්න</string>
+ <string name="tun_open_error">ටුන් අතුරුමුහුණත විවෘත කිරීමට අසමත් විය</string>
+ <string name="error">"දෝෂය: "</string>
+ <string name="clear">පැහැදිලිව</string>
+ <string name="last_openvpn_tun_config">ටුන් අතුරුමුහුණත විවෘත කිරීම:</string>
+ <string name="local_ip_info">දේශීය IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
+ <string name="dns_server_info">ව.නා.ප. සේවාදායකය: %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 netmask භාවිතා කිරීම. OpenVPN විසින් ලබා දෙන මාදිලිය \"%3$s\" වේ.</string>
+ <string name="route_not_cidr">CIDR netmask සමඟින් %1$s සහ %2$s IP මාර්ගයක් ලෙස අර්ථ දැක්විය නොහැක, /32 netmask ලෙස භාවිතා කරයි.</string>
+ <string name="route_not_netip">නිවැරදි%2$s %1$s%2$s%3$sදක්වා</string>
+ <string name="keychain_access">Android Keychain සහතික වෙත ප්‍රවේශ විය නොහැක. මෙය ස්ථිරාංග උත්ශ්‍රේණි කිරීමකින් හෝ යෙදුම්/යෙදුම් සැකසීම් වල උපස්ථයක් ප්‍රතිසාධනය කිරීමෙන් සිදු විය හැක. කරුණාකර 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">ප්‍රකාරය තට්ටු කරන්න</string>
+ <string name="faq_tap_mode">මූල නොවන VPN API සමඟ තට්ටු ප්‍රකාරය කළ නොහැක. එබැවින් මෙම යෙදුමට ටැප් සහාය ලබා දිය නොහැක</string>
+ <string name="tap_faq2">යළි? ඔයා විහිළු කරනවාද? නැත, ටැප් ප්‍රකාරය ඇත්ත වශයෙන්ම සහාය නොදක්වන අතර එයට සහය දක්වන්නේ දැයි විමසමින් තවත් තැපැල් යැවීම උදව් නොවනු ඇත.</string>
+ <string name="tap_faq3">තුන්වෙනි වතාව? ඇත්ත වශයෙන්ම, කෙනෙකුට ටුන් මත පදනම්ව ටැප් ඉමුලේටරයක් ලිවිය හැකි අතර එය යැවීමේ ලේයර්2 තොරතුරු එකතු කරන අතර ලැබෙන විට ලේයර්2 තොරතුරු ඉවත් කරයි. නමුත් මෙම ටැප් ඉමුලේටරයට ARP සහ සමහරවිට DHCP සේවාලාභියෙකුද ක්‍රියාත්මක කිරීමට සිදුවේ. මේ පැත්තේ කිසිම වැඩක් කරන කෙනෙක් ඉන්නවා කියලා මම දන්නේ නැහැ. ඔබට මෙය කේතනය කිරීම ආරම්භ කිරීමට අවශ්‍ය නම් මා අමතන්න.</string>
+ <string name="faq">නිති පැණ</string>
+ <string name="copying_log_entries">ලොග් සටහන් පිටපත් කිරීම</string>
+ <string name="faq_copying">තනි ලොග් ප්‍රවේශයක් පිටපත් කිරීමට ඔබා ලොග් ප්‍රවේශය අල්ලාගෙන සිටින්න. සම්පූර්ණ ලොගය පිටපත් කිරීමට/ යැවීමට Send Log විකල්පය භාවිතා කරන්න. 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 විසින් භාවිතා කරන දත්ත සංකේතාංකන කේතාංක ඇල්ගොරිතම ඇතුලත් කරන්න : (--data-ciphers). AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305 හි පෙරනිමිය භාවිතා කිරීමට හිස්ව තබන්න.</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>
+ <string name="error_importing_file">ගොනුව ආයාත කිරීමේ දෝෂයකි</string>
+ <string name="import_error_message">ගොනු පද්ධතියෙන් ගොනුව ආයාත කිරීමට නොහැකි විය</string>
+ <string name="inline_file_data">[[අන්තර්ගත ගොනු දත්ත]]</string>
+ <string name="opentun_no_ipaddr">IP තොරතුරු නොමැතිව ටුන් උපාංගය විවෘත කිරීම ප්රතික්ෂේප කිරීම</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">ඔබගේ වින්‍යාසයට 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 ආරක්ෂක සංවේදී බැවින් ආරක්ෂාව පිළිබඳ සටහන් කිහිපයක් සංවේදී වේ. sdcard හි ඇති සියලුම දත්ත සහජයෙන්ම අනාරක්ෂිත වේ. සෑම යෙදුමකටම එය කියවිය හැකිය (උදාහරණයක් ලෙස මෙම වැඩසටහනට විශේෂ sd කාඩ්පත් හිමිකම් අවශ්ය නොවේ). මෙම යෙදුමේ දත්ත කියවිය හැක්කේ යෙදුමට පමණි. ගොනු සංවාදයේ cacert/cert/key සඳහා ආයාත විකල්පය භාවිතා කිරීමෙන් දත්ත VPN පැතිකඩෙහි ගබඩා වේ. VPN පැතිකඩ වෙත ප්‍රවේශ විය හැක්කේ මෙම යෙදුමට පමණි. (ඉන්පසු sd කාඩ්පතේ ඇති පිටපත් මකා දැමීමට අමතක නොකරන්න). මෙම යෙදුමට පමණක් ප්‍රවේශ විය හැකි වුවද දත්ත තවමත් සංකේතනය කර නොමැත. දුරකථනය රූට් කිරීම හෝ වෙනත් සූරාකෑම මගින් දත්ත ලබා ගැනීමට හැකි වේ. සුරකින ලද මුරපද සරල පෙළෙහිද ගබඩා කර ඇත. pkcs12 ගොනු සඳහා, ඔබ ඒවා ඇන්ඩ්‍රොයිඩ් යතුරු ගබඩාවට ආයාත කිරීම නිර්දේශ කෙරේ."</string>
+ <string name="import_vpn">ආයත කරන්න</string>
+ <string name="broken_image_cert_title">සහතික තේරීම පෙන්වීමේ දෝෂයකි</string>
+ <string name="broken_image_cert">Android 4.0+ සහතික තේරීම් සංවාදය පෙන්වීමට උත්සාහ කිරීමේදී ව්‍යතිරේකයක් ලැබුණි. මෙය Android 4.0+ හි සම්මත විශේෂාංගයක් ලෙස කිසිවිටෙක සිදු නොවිය යුතුය. සමහර විට සහතික ගබඩා කිරීම සඳහා ඔබගේ Android ROM සහාය බිඳී ඇත</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=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;නිකුතුව 18&lt;/a&gt; ද බලන්න.)&lt;/p&gt;&lt;p&gt;Xperia Arc S සහ Xperia Ray වෙතින් පැරණි නිල SONY පින්තූර වාර්තා කර ඇත. රූපයෙන් VPNService සම්පූර්ණයෙන්ම අතුරුදහන් වේ. (දෝෂ ලුහුබැඳීමේ &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;නිකුතුව 29&lt;/a&gt; ද බලන්න.)&lt;/p&gt;&lt;p&gt;අභිරුචි ගොඩනැගීමේ රූපවල ටුන් මොඩියුලය අස්ථානගත වී හෝ /dev/tun හි අයිතිවාසිකම් වැරදි විය හැක. සමහර CM9 පින්තූර සඳහා \"උපාංග විශේෂිත හැක්\" යටතේ \"අයිතිකාරත්වය නිවැරදි කරන්න\" විකල්පය සක්‍රීය කර තිබීම අවශ්‍ය වේ.&lt;/p&gt;&lt;p&gt;වඩාත්ම වැදගත් දෙය: ඔබගේ උපාංගයේ බිඳුණු Android රූපයක් තිබේ නම්, එය ඔබේ වෙළෙන්දාට වාර්තා කරන්න. ගැටලුවක් වෙළෙන්දාට වාර්තා කරන පුද්ගලයින් වැඩි වන තරමට, ඔවුන් එය නිවැරදි කිරීමට වැඩි ඉඩක් ඇත.&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 හි හිමිකරු පද්ධතියට සැකසීමට උත්සාහ කරයි. VPNService API ක්‍රියා කිරීමට සමහර CM9 රූපවලට මෙය අවශ්‍ය වේ. 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="netstatus">ජාලයේ තත්ත්වය: %s</string>
+ <string name="extracahint">CA සහතිකය සාමාන්‍යයෙන් Android යතුරු ගබඩාවෙන් ආපසු එවනු ලැබේ. ඔබට සහතික සත්‍යාපන දෝෂ තිබේ නම් වෙනම සහතිකයක් සඳහන් කරන්න.</string>
+ <string name="select_file">තෝරන්න</string>
+ <string name="keychain_nocacert">ඇන්ඩ්‍රොයිඩ් යතුරු ගබඩාවෙන් කියවන අතරතුර CA සහතිකයක් ආපසු නොලැබුණි. සත්‍යාපනය බොහෝ විට අසාර්ථක වනු ඇත.</string>
+ <string name="show_log_summary">සම්බන්ධකයේ ලොග් කවුළුව පෙන්වයි. දැනුම්දීම් තත්ත්වයෙන් ලොග් කවුළුව සැමවිටම ප්‍රවේශ විය හැක.</string>
+ <string name="show_log_window">ලොග් කවුළුව පෙන්වන්න</string>
+ <string name="mobile_info">%10$s %9$s %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="error_extapp_sign">බාහිර සත්‍යාපන යෙදුම (%3$s): %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">ඉංග්‍රීසි පරිවර්තනය Arne Schwabe&lt;arne@rfc2549.org&gt;විසිනි</string>
+ <string name="ipdns">අ.ජා. කේ. සහ ව.නා.ප.</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 සේවාදායකයන් සකසා නොමැති විට Android ඔබගේ ජංගම/Wi-Fi සම්බන්ධතාවය සඳහා නිශ්චිතව දක්වා ඇති ඔබගේ ප්‍රොක්සි සැකසුම් දිගටම භාවිතා කරන බව කරුණාවෙන් සලකන්න.</string>
+ <string name="dns_add_error">පද්ධතිය විසින් ප්‍රතික්ෂේප කරන ලද \"%1$s\" DNS සේවාදායකය එක් කළ නොහැක: %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/pkcs12 ගොනු නොමැති තනි ගොනුවක් නම් ඔබට ගොනුව ඊමේල් කර ඇමුණුම විවෘත කළ හැක. ඔබට ගොනු කිහිපයක් තිබේ නම් ඒවා ඔබගේ sd කාඩ්පතට දමන්න.&lt;/p&gt;&lt;p&gt;config ගොනුව ආයාත කිරීමට විද්‍යුත් තැපැල් ඇමුණුම මත ක්ලික් කරන්න/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">ටුන් මොඩියුලය පැටවීම</string>
+ <string name="importpkcs12fromconfig">වින්‍යාසයෙන් PKCS12 Android Keystore වෙත ආයාත කරන්න</string>
+ <string name="getproxy_error">ප්‍රොක්සි සැකසුම් ලබා ගැනීමේ දෝෂයකි: %s</string>
+ <string name="using_proxy">ප්‍රොක්සි %1$s %2$sභාවිතා කිරීම</string>
+ <string name="use_system_proxy">පද්ධති ප්‍රොක්සි භාවිතා කරන්න</string>
+ <string name="use_system_proxy_summary">සම්බන්ධ වීමට HTTP/HTTPS ප්‍රොක්සි සඳහා පද්ධති පුළුල් වින්‍යාසය භාවිතා කරන්න.</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="faq_duplicate_notification_title">අනුපිටපත් දැනුම්දීම්</string>
+ <string name="faq_duplicate_notification">ඇන්ඩ්‍රොයිඩ් පද්ධති මතකයේ (RAM) පීඩනය යටතේ පවතී නම්, මේ මොහොතේ අවශ්‍ය නොවන යෙදුම් සහ සේවා ක්‍රියාකාරී මතකයෙන් ඉවත් කරනු ලැබේ. මෙය දැනට පවතින VPN සම්බන්ධතාවයක් අවසන් කරයි. සම්බන්ධතාවය/OpenVPN නොනැසී පවතින බව සහතික කිරීම සඳහා සේවාව ඉහළ ප්‍රමුඛතාවයකින් ක්‍රියාත්මක වේ. ඉහළ ප්‍රමුඛතාවයකින් ක්‍රියාත්මක වීමට යෙදුම දැනුම්දීමක් පෙන්විය යුතුය. ප්‍රධාන දැනුම්දීම් නිරූපකය පෙර නිති අසන ප්‍රශ්න ඇතුළත් කිරීමේ විස්තර කර ඇති පරිදි පද්ධතිය විසින් පනවනු ලැබේ. එය ඉහළ ප්‍රමුඛතාවයකින් ධාවනය කිරීමේ අරමුණ සඳහා යෙදුම් දැනුම්දීමක් ලෙස ගණන් නොගනී.</string>
+ <string name="no_vpn_profiles_defined">VPN පැතිකඩ නිර්වචනය කර නොමැත.</string>
+ <string name="add_new_vpn_hint">නව VPN එකක් එක් කිරීමට &lt;img src=\"ic_menu_add\"/&gt; නිරූපකය භාවිතා කරන්න</string>
+ <string name="vpn_import_hint">ඔබගේ sdcard වෙතින් පවතින (.ovpn හෝ .conf) පැතිකඩක් ආයාත කිරීමට &lt;img src=\"ic_menu_archive\"/&gt; නිරූපකය භාවිතා කරන්න.</string>
+ <string name="faq_hint">නිතර අසන පැන ද පරීක්ෂා කිරීමට වග බලා ගන්න. ඉක්මන් ආරම්භක මාර්ගෝපදේශයක් ඇත.</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 හරහා ගමන් නොකළ යුතු ජාල සඳහන් කිරීමට ඉඩ නොදේ. විසඳුමක් ලෙස යෙදුම උමග හරහා ගමන් නොකළ යුතු ජාල හඳුනා ගැනීමට උත්සාහ කරයි (උදා: මාර්ගය xxxx yyyy net_gateway) සහ අනෙකුත් වේදිකාවල හැසිරීම් අනුකරණය කිරීම සඳහා මෙම මාර්ග බැහැර කරන මාර්ග සමූහයක් ගණනය කරයි. සම්බන්ධතාවයක් ස්ථාපනය කිරීමේදී VPNService හි වින්‍යාසය ලොග් කවුළු පෙන්වයි.\nතිරය පිටුපස: Android 4.4+ ප්‍රතිපත්ති මාර්ගගත කිරීම් භාවිතා කරයි. route/ifconfig භාවිතා කිරීමෙන් ස්ථාපිත මාර්ග නොපෙන්වයි. ඒ වෙනුවට ip රීතිය භාවිතා කරන්න, iptables -t mangle -L</string>
+ <string name="persisttun_summary">OpenVPN නැවත සම්බන්ධ වන විට VPN සම්බන්ධතාවකට ආපසු නොයන්න.</string>
+ <string name="persistent_tun_title">ස්ථීර ටුන්</string>
+ <string name="openvpn_log">OpenVPN ලොගය</string>
+ <string name="import_config">අනුමත කරන්න</string>
+ <string name="battery_consumption_title">විදුලි කෝෂය</string>
+ <string name="baterry_consumption">මගේ පුද්ගලික පරීක්ෂණ වලදී OpenVPN හි අධික බැටරි පරිභෝජනයට ප්‍රධාන හේතුව වන්නේ Keepalive පැකට් ය. බොහෝ OpenVPN සේවාදායකයන් සතුව \'keepalive 10 60\' වැනි වින්‍යාස විධානයක් ඇති අතර එමඟින් සේවාදායකයා සහ සේවාදායකයා සෑම තත්පර දහයකට වරක් තබා ගැනීමේ පැකට් හුවමාරු කර ගනී. &lt;p&gt; මෙම පැකට් කුඩා වන අතර වැඩි තදබදයක් භාවිතා නොකරන අතර, ඒවා ජංගම ගුවන්විදුලි ජාලය කාර්යබහුල කර බලශක්ති පරිභෝජනය වැඩි කරයි. ( &lt;a href=\"https://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 සමඟ තත්පර 60කට වඩා විශාල තබාගැනීමක් භාවිතා කිරීම අක්‍රිය කල් ඉකුත්වීම හේතුවෙන් සමහර NAT ද්වාරවල සම්බන්ධතාවය අත්හැරීමට හේතු විය හැක. TCP භාවිතා කිරීම දිගු කාලයක් සජීවී කාල සීමාවක් සමඟ ක්‍රියා කරයි, නමුත් TCP හරහා TCP උමං කිරීම ඉහළ පැකට් අලාභයක් සහිත සම්බන්ධතා මත අතිශයින් දුර්වල ලෙස ක්‍රියා කරයි. ( &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;බලන්න TCP හරහා TCP නරක අදහසක්&lt;/a&gt;)</string>
+ <string name="faq_tethering">Android Tethering විශේෂාංගය (WiFi, USB හෝ Bluetooth හරහා) සහ VPNService API (මෙම වැඩසටහන මගින් භාවිතා කරන) එකට ක්‍රියා නොකරයි. වැඩි විස්තර සඳහා &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;නිකුතුව #34&lt;/a&gt;බලන්න</string>
+ <string name="vpn_tethering_title">VPN සහ Tethering</string>
+ <string name="connection_retries">සම්බන්ධවීමට නැවත උත්සාහයන්</string>
+ <string name="reconnection_settings">නැවත සම්බන්ධ වීමේ සැකසුම්</string>
+ <string name="connectretrymessage">සම්බන්ධතා උත්සාහයන් අතර රැඳී සිටීමට තත්පර ගණන.</string>
+ <string name="connectretrywait">සම්බන්ධතා අතර තත්පර</string>
+ <string name="minidump_generated">OpenVPN අනපේක්ෂිත ලෙස බිඳ වැටුණි. කරුණාකර ප්‍රධාන මෙනුවේ send Minidump විකල්පය භාවිතා කිරීම සලකා බලන්න</string>
+ <string name="send_minidump">Minidump සංවර්ධකයාට යවන්න</string>
+ <string name="send_minidump_summary">අවසාන බිඳවැටීම පිළිබඳ නිදොස් කිරීමේ තොරතුරු සංවර්ධකයා වෙත යවයි</string>
+ <string name="notifcation_title">විවෘත අ.පු.ජා. - %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_assign_ip">IP ලිපින පැවරීම</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_tcp_connect">සම්බන්ධ කිරීම (TCP)</string>
+ <string name="state_auth_failed">සත්‍යාපනය අසාර්ථක විය</string>
+ <string name="state_nonetwork">භාවිතා කළ හැකි ජාලයක් සඳහා රැඳී සිටිමින්</string>
+ <string name="state_waitorbot">Orbot ආරම්භ වන තෙක් රැඳී සිටිමින්</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">%s අ.පු.ජා. වෙත සම්බන්ධ වේ</string>
+ <string name="start_vpn_ticker">%s අ.පු.ජා. වෙත සම්බන්ධ වේ</string>
+ <string name="jelly_keystore_alphanumeric_bug">යතුරු ගබඩා සහතිකයේ නම අක්ෂරාංක නොවන අක්ෂර (හිස්, යටි ඉරි හෝ ඉරි වැනි) අඩංගු නම් Android 4.1 හි සමහර අනුවාද වල ගැටළු ඇත. විශේෂ අක්ෂර නොමැතිව සහතිකය නැවත ආනයනය කිරීමට උත්සාහ කරන්න</string>
+ <string name="encryption_cipher">සංකේතාංකන කේතාංක</string>
+ <string name="packet_auth">පැකට් සත්‍යාපනය</string>
+ <string name="auth_dialog_title">පැකට් සත්‍යාපන ක්‍රමය ඇතුලත් කරන්න</string>
+ <string name="debug_build">නිදොස් ගොඩනැගීම</string>
+ <string name="official_build">නිල ගොඩනැගීම</string>
+ <string name="make_selection_inline">පැතිකඩට පිටපත් කරන්න</string>
+ <string name="add">එකතු කරන්න</string>
+ <string name="send_config">වින්‍යාස ගොනුව යවන්න</string>
+ <string name="complete_dn">සම්පූර්ණ DN</string>
+ <string name="remotetlsnote">ඔබගේ ආයාත කළ වින්‍යාසය වෙනස් DN ආකෘතියක් භාවිතා කරන පැරණි DEPRECATED tls-remote විකල්පය භාවිතා කර ඇත.</string>
+ <string name="rdn">RDN (පොදු නම)</string>
+ <string name="rdn_prefix">RDN උපසර්ගය</string>
+ <string name="tls_remote_deprecated">tls-දුරස්ථ (අත් හරින ලද)</string>
+ <string name="help_translate">ඔබට https://crowdin.net/project/ics-openvpn/invite වෙත පිවිසීමෙන් පරිවර්තනයට උදවු කළ හැක</string>
+ <string name="prompt">%1$s පාලනය කිරීමට උත්සාහ %2$s</string>
+ <string name="remote_warning">ඉදිරියට යාමෙන්, ඔබ Android සඳහා OpenVPN සම්පූර්ණයෙන්ම පාලනය කිරීමට සහ සියලු ජාල තදබදයට බාධා කිරීමට යෙදුමට අවසර ලබා දෙයි.<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 ගණන්වලදී 64 kB ට වඩා අඩු දත්ත මාරු කළ විට VPN විරාම කරන්න. \"Persistent Tun\" විකල්පය සක්‍රීය කර ඇති විට VPN විරාම කිරීමෙන් ඔබගේ උපාංගයට ජාල සම්බන්ධතාවයක් නොමැත. \"Persistent Tun\" විකල්පය නොමැතිව උපාංගයට VPN සම්බන්ධතාවයක්/ආරක්ෂාවක් නොමැත.</string>
+ <string name="screenoff_title">තිරය අක්‍රිය වූ පසු VPN සම්බන්ධතාව විරාම කරන්න</string>
+ <string name="screenoff_pause">තිරය අක්‍රිය තත්වයේ සම්බන්ධතාවය විරාම කිරීම: තත්පර %2$sකින් %1$s ට අඩු</string>
+ <string name="screen_nopersistenttun">අවවාදයයි: මෙම VPN සඳහා ස්ථීර tune සබල කර නැත. තිරය ක්‍රියාවිරහිත වූ විට තදබදය සාමාන්‍ය අන්තර්ජාල සම්බන්ධතාව භාවිත කරයි.</string>
+ <string name="save_password">මුරපදය සුරකින්න</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">උපාංග විශේෂතා හැක්</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">Android සඳහා OpenVPN භාවිතා කිරීමට උත්සාහ කරන යෙදුමේ නිරූපකය</string>
+ <string name="faq_vpndialog43">"Android 4.3 සමඟින් VPN තහවුරු කිරීම \"වැඩිරහිත යෙදුම්\" වලින් ආරක්ෂා වේ. මෙහි ප්‍රතිඵලයක් ලෙස සංවාදය ස්පර්ශ ආදානයට ප්‍රතිචාර නොදක්වයි. ඔබට උඩැතිරි භාවිතා කරන යෙදුමක් තිබේ නම් එය මෙම හැසිරීමට හේතු විය හැක. ඔබ වැරදි යෙදුමක් සොයා ගන්නේ නම්, යෙදුමේ කර්තෘ අමතන්න. මෙම ගැටළුව Android 4.3 සහ පසුව ඇති සියලුම VPN යෙදුම් වලට බලපායි. අමතර විස්තර සඳහා &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;නිකුතුව 185&lt;a&gt; ද බලන්න"</string>
+ <string name="faq_vpndialog43_title">Vpn තහවුරු කිරීමේ සංවාදය</string>
+ <string name="donatePlayStore">විකල්පයක් ලෙස ඔබට Play Store සමඟින් මට පරිත්‍යාගයක් එවිය හැක:</string>
+ <string name="thanks_for_donation">%s පරිත්‍යාග කිරීම ගැන ස්තුතියි!</string>
+ <string name="logCleared">ලොගය හිස් කරන ලදී.</string>
+ <string name="show_password">මුරපදය පෙන්වන්න</string>
+ <string name="keyChainAccessError">KeyChain ප්‍රවේශ දෝෂය: %s</string>
+ <string name="timestamp_short">කෙටි</string>
+ <string name="timestamps">වේලා මුද්දර</string>
+ <string name="timestamps_none">කිසිවක් නැත</string>
+ <string name="uploaded_data">උඩුගත</string>
+ <string name="downloaded_data">බාගන්න</string>
+ <string name="vpn_status">අ.පු.ජා. තත්ත්වය</string>
+ <string name="logview_options">විකල්ප බලන්න</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="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="files_missing_hint">සමහර ගොනු සොයා ගැනීමට නොහැකි විය. කරුණාකර පැතිකඩ ආයාත කිරීමට ගොනු තෝරන්න:</string>
+ <string name="openvpn_is_no_free_vpn">මෙම යෙදුම භාවිතා කිරීමට ඔබට OpenVPN සඳහා සහාය දක්වන VPN සපයන්නා/VPN ද්වාරයක් අවශ්‍ය වේ (බොහෝ විට ඔබගේ සේවායෝජකයා විසින් සපයනු ලැබේ). OpenVPN සහ ඔබේම OpenVPN සේවාදායකය සකසන්නේ කෙසේද යන්න පිළිබඳ වැඩිදුර තොරතුරු සඳහා https://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="mtu_invalid_value">MTU අභිබවා යන අගය 64 සහ 9000 අතර පූර්ණ සංඛ්‍යාවක් විය යුතුය</string>
+ <string name="mssfix_value_dialog">උමග හරහා ක්‍රියාත්මක වන TCP සැසි වෙත නිවේදනය කරන්න, ඔවුන් ඔවුන්ගේ යැවීමේ පැකට් ප්‍රමාණය සීමා කළ යුතු අතර, එනම් OpenVPN ඒවා කැප්සියුලර් කළ පසු, OpenVPN එහි සම වයසේ මිතුරන්ට යවන UDP පැකට් ප්‍රමාණය මෙම බයිට් ගණන නොඉක්මවනු ඇත. (පෙරනිමිය 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">පූරණයෙන්&#8230;</string>
+ <string name="allowed_vpn_apps_info">ඉඩදුන් අ.පු.ජා. යෙදුම්: %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="vpn_allow_bypass">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 සේවාලාභීන් පවතී. වඩාත් සුලභ ඒවා වන්නේ Android සඳහා OpenVPN (මෙම සේවාදායකයා), OpenVPN සම්බන්ධකය සහ OpenVPN සැකසීම් ය.&lt;p&gt;සේවාලාභීන් කණ්ඩායම් දෙකකට කාණ්ඩගත කළ හැක: Android සඳහා OpenVPN සහ OpenVPN Connect නිල VPNService API (Android 4.0+) භාවිතා කරන අතර root භාවිතා කරන root සහ OpenVPN සැකසීම් අවශ්‍ය නොවේ.&lt;p&gt;ඇන්ඩ්‍රොයිඩ් සඳහා OpenVPN යනු විවෘත මූලාශ්‍ර සේවාදායකයෙක් වන අතර එය 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 සැකසුම් පැරණිතම සේවාදායකයා වන අතර විවෘත මූලාශ්‍ර OpenVPN සඳහා වන UI ද වේ. Android සඳහා OpenVPN වලට ප්‍රතිවිරුද්ධව එයට root අවශ්‍ය වන අතර VPNService API භාවිතා නොකරයි. එය Android 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 VPN වෙත CIDR මාර්ග සඳහා පමණක් සහය දක්වයි. CIDR නොවන මාර්ග කිසි විටෙක භාවිතා නොකරන බැවින්, Android සඳහා OpenVPN CIDR නොවන මාර්ග සඳහා /32 භාවිතා කර අනතුරු ඇඟවීමක් නිකුත් කරයි.</string>
+ <string name="ab_tethering_44">VPN සක්‍රියව පවතින අතරතුර ටෙදරින් ක්‍රියා කරයි. සම්බන්ධිත සම්බන්ධතාවය VPN භාවිතා නොකරනු ඇත.</string>
+ <string name="ab_kitkat_mss">මුල් KitKat අනුවාදය TCP සම්බන්ධතා මත වැරදි MSS අගයක් සකසා ඇත (#61948). මෙම දෝෂය මඟහරවා ගැනීමට mssfix විකල්පය සක්‍රීය කිරීමට උත්සාහ කරන්න.</string>
+ <string name="ab_proxy">DNS සේවාදායකයන් සකසා නොමැති විට Android ජංගම/Wi-Fi සම්බන්ධතාව සඳහා නිශ්චිතව දක්වා ඇති ඔබේ ප්‍රොක්සි සැකසුම් දිගටම භාවිත කරයි. ඇන්ඩ්‍රොයිඩ් සඳහා OpenVPN ලොගයේ මේ ගැන ඔබට අනතුරු අඟවයි.<p>VPN එකක් DNS සේවාදායකයක් සකසන විට Android ප්‍රොක්සියක් භාවිතා නොකරනු ඇත. VPN සම්බන්ධතාවයක් සඳහා ප්‍රොක්සියක් සැකසීමට API නොමැත.</p></string>
+ <string name="ab_not_route_to_vpn">වින්‍යාසගත සේවාදායක IP සහ එහි ජාල ආවරණයේ ඇති IPs VPN වෙත යොමු නොකෙරේ. OpenVPN මෙම දෝෂය වටා ක්‍රියා කරන්නේ සේවාදායක IP සහ එහි ජාල ආවරණයට අනුරූප වන මාර්ගයක් පැහැදිලිව එක් කිරීමෙනි.</string>
+ <string name="ab_persist_tun">තවත් ටුන් උපාංගයක් සක්‍රියව පවතින විට ටුන් උපාංගයක් විවෘත කිරීම, එය persist-tun සහාය සඳහා භාවිතා කරයි, උපාංගයේ VPNServices බිඳ වැටේ. VPN නැවත ක්‍රියා කිරීමට නැවත පණගැන්වීමක් අවශ්‍ය වේ. ඇන්ඩ්‍රොයිඩ් සඳහා වන OpenVPN ටුන් උපාංගය නැවත විවෘත කිරීම වළක්වා ගැනීමට උත්සාහ කරන අතර ඇත්ත වශයෙන්ම අවශ්‍ය නම්, බිඳ වැටීම වැළැක්වීම සඳහා නව 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 VPNs කිසිසේත්ම ක්‍රියා නොකරයි.</string>
+ <string name="ab_only_cidr_title">CIDR නොවන මාර්ග</string>
+ <string name="ab_proxy_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">දිගටම පවතින ටුන් මාදිලිය</string>
+ <string name="version_and_later">%s සහ පසුව</string>
+ <string name="tls_cipher_alert_title">SSL23_GET_SERVER_HELLO සමඟ සම්බන්ධතා අසාර්ථක වේ:sslv3 ඇඟවීම් අතට අත දීම අසාර්ථකයි</string>
+ <string name="tls_cipher_alert">ඇන්ඩ්‍රොයිඩ් අනුවාද සඳහා නව OpenVPN (0.6.29/මාර්තු 2015) අවසර දී ඇති කේතාංක කට්ටල සඳහා වඩාත් ආරක්ෂිත පෙරනිමියක් භාවිතා කරයි (tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\"). අවාසනාවන්ත ලෙස, අඩු ආරක්‍ෂිත කේතාංක කට්ටල සහ අපනයන කේතාංක කට්ටල අත්හැරීම, විශේෂයෙන් පරිපූර්ණ ඉදිරි රහස්‍යභාවය (Diffie-Hellman) සඳහා සහාය නොදක්වන කේතාංක කට්ටල මඟ හැරීම සමහර ගැටලු ඇති කරයි. මෙය සාමාන්‍යයෙන් සිදු වන්නේ සර්වරය මත tls-cipher සැකසීමෙන් හෝ ඉවත් කරන ලද SSL (උදා: MikroTik) සහිත සමහර කාවැද්දූ OS මඟින් TLS ආරක්ෂාව ශක්තිමත් කිරීමට හොඳ චේතනාවෙන් නමුත් දුර්වල ලෙස ක්‍රියාත්මක කරන ලද උත්සාහයක් මගිනි.\nමෙම ගැටළුව විසඳීම සඳහා, සේවාදායකයේ tls-කේතාංකන සැකසීම් 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">Android සඳහා OpenVPN හට ස්වයංක්‍රීයව sdcard හි නැතිවූ ගොනු(ය) සොයා ගැනීමට උත්සාහ කළ හැක. අවසර ඉල්ලීම ආරම්භ කිරීමට මෙම පණිවිඩය තට්ටු කරන්න.</string>
+ <string name="protocol">කෙටුම්පත</string>
+ <string name="enabled_connection_entry">සබල කර ඇත</string>
+ <string name="permission_revoked">VPN අවසරය OS මගින් අවලංගු කරන ලදී (උදා. වෙනත් VPN වැඩසටහනක් ආරම්භ විය), VPN නතර කිරීම</string>
+ <string name="pushpeerinfo">Push Peer තොරතුරු</string>
+ <string name="pushpeerinfosummary">සේවාදායකයට අමතර තොරතුරු යවන්න, උදා: SSL අනුවාදය සහ Android අනුවාදය</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="crl_title">සහතිකය අවලංගු කිරීමේ ලැයිස්තුව (විකල්ප)</string>
+ <string name="reread_log">ලොග් හැඹිලි ගොනුවෙන් (%d) ලොග් අයිතම නැවත කියවන්න</string>
+ <string name="samsung_broken">Samsung ජංගම දුරකථන වැඩිපුරම අලෙවි වන Android දුරකථන අතර වුවද, Samsung හි ස්ථිරාංග ද දෝෂ සහිත Android ස්ථිරාංග අතර වේ. දෝෂ මෙම උපාංගවල VPN මෙහෙයුමට පමණක් සීමා නොවන නමුත් ඒවායින් බොහොමයක් විසඳා ගත හැකිය. පහත දැක්වෙන මෙම දෝෂ සමහරක් විස්තර කර ඇත.\n\nVPN පරාසයේ DNS සේවාදායකය මිස DNS ක්‍රියා නොකරයි.\n\nබොහෝ Samsung 5.x උපාංගවල අවසර/නොදී ඇති යෙදුම් විශේෂාංගය ක්‍රියා නොකරයි.\nSamsung 6.x හි VPN යෙදුම Powersave විශේෂාංගවලින් නිදහස් කරන්නේ නම් මිස VPN ක්‍රියා නොකරන බව වාර්තා වේ.</string>
+ <string name="samsung_broken_title">සැම්සුන් දුරකථන</string>
+ <string name="novpn_selected">VPN තෝරා නැත.</string>
+ <string name="defaultvpn">පෙරනිමි අ.පු.ජා.</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 වෙත සම්බන්ධ වීමට අවසර දෙනු ලබන්නේ එම යෙදුමට පමණි. Settings-> Networks more .. -> 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">වින්‍යාසය 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</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 වැනි සහතිකවල දුර්වල අත්සන් ප්‍රතික්ෂේප කරයි. අමතරව OpenSSL 3.0 සමග SHA1 සමග අත්සන් ද ප්‍රතික්ෂේප වේ.&lt;/p&gt;&lt;p&gt;
+ SHA1 නුදුරු අනාගතයේ
+ වෙනත් වේදිකාවල තවදුරටත් ක්‍රියා නොකරන බැවින් ඔබ හැකි ඉක්මනින් VPN සහතික යාවත්කාලීන කළ යුතුය.&lt;/p&gt;
+ &lt;p&gt;ඔබට සැබවින්ම පැරණි සහ කැඩුණු සහතික භාවිතා කිරීමට අවශ්‍ය නම්, පැතිකඩෙහි සත්‍යාපනය/සංකේතනය යටතේ TLS ආරක්ෂක පැතිකඩ සඳහා \"අනාරක්ෂිත\" තෝරන්න&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 සම්බන්ධතාවයේ තත්ව වෙනස්කම් (සම්බන්ධ කිරීම, සත්‍යාපනය කිරීම,&#8230;)</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">OpenVPN 3 C++ ක්‍රියාත්මක කිරීම සමඟ සෘජුවම PKCS12 ගොනු භාවිතා කිරීම සහය නොදක්වයි. කරුණාකර pkcs12 ගොනු Android යතුරු ගබඩාව වෙත ආයාත කරන්න හෝ සාමාන්‍ය සැකසුම් යටතේ OpenVPN 2.x වෙත වෙනස් කරන්න.</string>
+ <string name="proxy">ප්‍රොක්සි</string>
+ <string name="Use_no_proxy">කිසිවක් නැත</string>
+ <string name="tor_orbot">ටෝර් (ඕර්බෝට්)</string>
+ <string name="openvpn3_socksproxy">OpenVPN 3 C++ ක්‍රියාත්මක කිරීම Socks proxy හරහා සම්බන්ධ වීමට සහාය නොදක්වයි</string>
+ <string name="no_orbotfound">Orbot යෙදුම සොයාගත නොහැක. කරුණාකර Orbot ස්ථාපනය කරන්න හෝ අතින් Socks v5 ඒකාබද්ධ කිරීම භාවිතා කරන්න.</string>
+ <string name="faq_remote_api_title">දුරස්ථ යෙ.ක්‍ර. අ.මු.</string>
+ <string name="faq_remote_api">Android සඳහා OpenVPN දුරස්ථ API දෙකක් සඳහා සහය දක්වයි, AIDL භාවිතා කරන නවීන API (git repository හි remoteEXample) සහ Intents භාවිතා කරන සරල එකක්. &lt;p&gt;adb shell සහ අභිප්‍රායන් භාවිතා කරන උදාහරණ. ඔබේ පැතිකඩ නම&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn/.api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN - සමඟ පැතිකඩ නාමය ප්‍රතිස්ථාපනය කරන්න. e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn/.api.ConnectVPN</string>
+ <string name="enableproxyauth">Proxy Authentication සබල කරන්න</string>
+ <string name="error_orbot_and_proxy_options">අමතර http-proxy-option ප්‍රකාශය සහ Orbot ඒකාබද්ධ කිරීම එකවර භාවිතා කළ නොහැක</string>
+ <string name="info_from_server">සේවාදායකයෙන් තොරතුරු: \'%s\'</string>
+ <string name="channel_name_userreq">පරිශීලක අන්තර්ක්‍රියා අවශ්‍යයි</string>
+ <string name="channel_description_userreq">OpenVPN සම්බන්ධතාවයට පරිශීලක ආදානයක් අවශ්‍ය වේ, උදා සාධක
+ සත්‍යාපනය
+ </string>
+ <string name="openurl_requested">VPN සත්‍යාපනය දිගටම කරගෙන යාමට URL විවෘත කරන්න</string>
+ <string name="crtext_requested">VPN සත්‍යාපනය දිගටම කරගෙන යාමට අභියෝගයට පිළිතුරු දෙන්න</string>
+ <string name="state_auth_pending">සත්‍යාපනය පොරොත්තුවෙන්</string>
+ <string name="external_authenticator">බාහිර සත්‍යාපකය</string>
+ <string name="configure">වින්‍යාසගත කරන්න</string>
+ <string name="extauth_not_configured">බාහිර සත්‍යාපකය වින්‍යාසගත කර නැත</string>
+ <string name="faq_killswitch_title">VPN නොවන සම්බන්ධතාව අවහිර කරන්න (\"Killswitch\")</string>
+ <string name="faq_killswitch">VPN නොමැතිව සම්බන්ධතා අවහිර කිරීමට බොහෝ විට අවශ්ය වේ. වෙනත් යෙදුම් බොහෝ විට මෙම විශේෂාංගය සඳහා \"Killswitch\" හෝ \"Seamless tunnel\" වැනි සලකුණු කිරීමේ පද භාවිතා කරයි. OpenVPN සහ මෙම යෙදුම මෙම ක්‍රියාකාරිත්වය ක්‍රියාත්මක කිරීමේ විශේෂාංගයක් වන persist-tun ලබා දෙයි.&lt;p&gt;යෙදුම් විසින් පිරිනමනු ලබන මෙම සියලු ක්‍රමවල ගැටලුව නම් ඒවාට හොඳම උත්සාහය පමණක් සැපයිය හැකි අතර සම්පූර්ණ විසඳුම් නොමැති වීමයි. ආරම්භයේදී, යෙදුම් බිඳවැටීම් සහ වෙනත් මුල්ලක අවස්ථා වලදී මෙම VPN නොවන සම්බන්ධතා අවහිර කිරීම ක්‍රියා කරන බව යෙදුමට සහතික කළ නොහැක. එබැවින් පරිශීලකයාට ආරක්ෂාව පිළිබඳ ව්යාජ හැඟීමක් ලබා දෙයි.&lt;p&gt;VPN නොවන සම්බන්ධතා අවහිර කර ඇති බව සහතික කිරීම සඳහා &lt;b&gt;පමණක්&lt;/b&gt; විශ්වාසදායක ක්‍රමය වන්නේ Android 8.0 හෝ ඊට පසු භාවිතා කිරීම සහ Android &gt; සඳහා සැකසීම් &gt; Network &amp; Internet &gt; Advanced/VPN &gt; OpenVPN යටතේ සොයා ගත හැකි \"VPN නොමැතිව බ්ලොක් සම්බන්ධතා\" සැකසීමයි. සැමවිටම VPN මත සබල කරන්න, VPN නොමැතිව බ්ලොක් සම්බන්ධතා සබල කරන්න</string>
+ <string name="summary_block_address_families">VPN කිසිදු IPv4 හෝ IPv6 ලිපිනයක් සකසා නොමැති නම්, මෙම විකල්පය Android හට ප්‍රොටෝකෝල (IPv4/IPv6) ඉඩ නොදෙන ලෙස උපදෙස් දෙයි.</string>
+ <string name="title_block_address_families">VPN විසින් භාවිතා නොකරන්නේ නම් IPv6 (හෝ IPv4) අවහිර කරන්න</string>
+ <string name="install_keychain">නව සහතිකයක් ස්ථාපනය කරන්න</string>
+ <string name="as_servername">AS සේවාදායක නාමය</string>
+ <string name="server_url">සේවාදායක URL</string>
+ <string name="request_autologin">ස්වයංක්‍රීය පිවිසුම් පැතිකඩ ඉල්ලන්න</string>
+ <string name="import_from_as">දුරස්ථ සේවාදායකයෙන් පැතිකඩ ආයාත කරන්න</string>
+ <string name="no_default_vpn_set">පෙරනිමි VPN සකසා නැත. මෙම විකල්පය සබල කිරීමට පෙර කරුණාකර පෙරනිමි VPN සකසන්න.</string>
+ <string name="internal_web_view">අභ්යන්තර WebView</string>
+ <string name="faq_ncp">නිශ්චිත තත්ත්වය අනුව මෙම පණිවිඩයේ යම් වෙනස්කම් තිබේ. සේවාදායකයාට සහ සේවාදායකයාට පොදු කේතාංකයකට එකඟ විය නොහැකි බව ඔවුන් සියල්ලන්ටම පොදුය. ප්‍රධාන හේතු වනුයේ: &lt;ul&gt;&lt;li&gt; ඔබ තවමත් රඳා පවතින්නේ පෙරනිමි වින්‍යාසය තුළ OpenVPN 2.4 සහ ඊට වඩා පැරණි BF-CBC අවසර දී ඇති බව (--cipher සකසා නොමැති නම්). OpenVPN 2.5 එය &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;කැඩුණු/යල් පැන ගිය කේතාංක&lt;/a&gt;ක් බැවින් එය තවදුරටත් පෙරනිමියට ඉඩ නොදේ.&lt;/li&gt;&lt;li&gt;සේවාදායකය OpenVPN 2.3 (හෝ ඊටත් වඩා පැරණි) --enable-small (අවම වශයෙන් අවුරුදු 4-5 ක් පැරණි OpenVPN) සමඟින් ධාවනය කරයි&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;කැඩුණු වින්‍යාසය (උදා, සේවාදායක සහ සේවාදායකයේ දත්ත-කේතාංක නොගැලපීම)&lt;/li&gt; &lt;p&gt; OpenVPN &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;කේතාංක සාකච්ඡා පිළිබඳ අත්පොත කොටස&lt;/a&gt; කේතාංක සාකච්ඡාවල විවිධ අවස්ථා සහ මෙම තත්ත්වයන් තුළ කළ යුතු දේ ඉතා හොඳින් පැහැදිලි කරයි. TP-Link උපාංග&lt;p&gt;ක් 2019/2020 මාදිලිවල පවා ඔවුන්ගේ උපාංගවල අවම වශයෙන් අවුරුදු 5ක් පැරණි OpenVPN 2.3.x අනුවාදයක් (සමහරවිට පැරණි) භාවිත කරයි.&lt;p&gt;අවසාන වශයෙන් නොව, ප්‍රමිතියට නොගැලපෙන හිමිකාර කේතාංක සාකච්ඡා පැච් එකක් නිර්මාණය කිරීම හොඳ අදහසක් යැයි එහි සංවර්ධකයා සිතූ නිසා \'BF-CBC\' භාවිතා කරන බව සැමවිටම පවසන කැඩුණු සේවාදායකයක් ඇති ජනප්‍රිය VPN සපයන්නෙකු සිටී. OpenVPN.&lt;p&gt;සාරාංශයක් ලෙස: සියලුම මනරම් වින්‍යාසයන් මෙම දෝෂ ලබා නොගත යුතුය. නමුත් (බිඳුණු VPN සපයන්නාගේ සේවාදායකය හැර) තවමත් සම්බන්ධ වීමට සේවාදායකයාට ඒත්තු ගැන්විය හැකිය (රෝග ලක්ෂණය නිවැරදි කිරීම මිස සැබෑ ගැටළුව නොවේ). පැරණි සේවාදායකයන් වෙත සම්බන්ධ වන විට VPN හි මූලික සැකසුම් තුළ ඇති ගැළපුම් මාදිලියේ විකල්පය පොදු ගැළපුම් ගැටළු බොහොමයක් විසඳීමට සමත් විය යුතුය.</string>
+ <string name="check_peer_fingerprint">සම වයසේ සහතික ඇඟිලි සලකුණ පරීක්ෂා කරන්න</string>
+ <string name="fingerprint">(සේවාදායක සහතිකයේ (ය) SHA256 ඇඟිලි සලකුණ ඇතුළත් කරන්න)</string>
+ <string name="use_alwayson_vpn">ආරම්භයේදී VPN සබල කිරීමට කරුණාකර Android හි සැම විටම ක්‍රියාත්මක විශේෂාංගය භාවිතා කරන්න.</string>
+ <string name="open_vpn_settings">VPN සැකසුම් විවෘත කරන්න</string>
+ <string name="trigger_pending_auth_dialog">අමතර අවශ්‍ය සත්‍යාපනය ඇතුළු කිරීමට කවුළුවක් විවෘත කරන්න මෙතන ඔබන්න</string>
+ <string name="compatmode">අනුකූලතා මාදිලිය</string>
+ <string name="compat_mode_label">අනුකූලතා මාදිලිය</string>
+ <string name="loadossllegacy">OpenSSL ලෙගසි සැපයුම්කරු පූරණය කරන්න</string>
+ <string name="bf_cbc_requires_legacy">පැතිකඩ OpenSSL ලෙගසි සපයන්නා මත රඳා පවතින BF-CBC භාවිතා කරයි (සක්‍රීය කර නැත).</string>
+ <string name="allow_translations_title">ප්‍රජා දායක පරිවර්තන වලට ඉඩ දෙන්න</string>
+ <string name="allow_translations_summary">ප්‍රජාව විසින් දායක වූ පරිවර්තන සමඟින් යෙදුමට පරිවර්තනය කිරීමට ඉඩ දෙන්න. සක්‍රිය කිරීමට යෙදුම නැවත ආරම්භ කිරීම අවශ්‍ය වේ.</string>
+ <string name="tls_profile">TLS ආරක්ෂක පැතිකඩ</string>
+</resources>
diff --git a/main/src/ui/res/values-sk/arrays.xml b/main/src/ui/res/values-sk/arrays.xml
new file mode 100644
index 00000000..2dd85c5d
--- /dev/null
+++ b/main/src/ui/res/values-sk/arrays.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>Certificates</item>
+ <item>PKCS12 File</item>
+ <item>Android Certifikát</item>
+ <item>Meno/Heslo</item>
+ <item>Statické kľúče</item>
+ <item>Meno/Heslo + Certifikáty</item>
+ <item>Meno/Heslo + PKCS12 </item>
+ <item>Meno/Heslo + Android</item>
+ <item>Externý poskytovateľ autentifikácie</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>Šifrovanie (--tls-crypt)</item>
+ <item>Krypta TLS V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Disconnect, forget password</item>
+ <item>Odpojiť, zachovať heslo</item>
+ <item>Ignorovať, skúsiť znova</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-sk/plurals.xml b/main/src/ui/res/values-sk/plurals.xml
new file mode 100644
index 00000000..635b7945
--- /dev/null
+++ b/main/src/ui/res/values-sk/plurals.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Ostáva jeden mesiac</item>
+ <item quantity="few">Zostávajú %d mesiace</item>
+ <item quantity="many">Ostáva %d mesiacov</item>
+ <item quantity="other">Zostáva %d mesiacov</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Zostáva jeden deň</item>
+ <item quantity="few">Zostáva %d dní</item>
+ <item quantity="many">Zostáva %d dní</item>
+ <item quantity="other">Zostáva %d dní</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Zostáva jedna hodina</item>
+ <item quantity="few">Zostáva %d hodín</item>
+ <item quantity="many">Zostáva %d hodín</item>
+ <item quantity="other">Zostáva %d hodín</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Zostáva jedna minúta</item>
+ <item quantity="few">Zostávajú %d minúty</item>
+ <item quantity="many">Zostáva %d minút</item>
+ <item quantity="other">Zostáva %d minút</item>
+ </plurals>
+</resources>
diff --git a/main/src/ui/res/values-sk/strings.xml b/main/src/ui/res/values-sk/strings.xml
new file mode 100644
index 00000000..ca17b7d5
--- /dev/null
+++ b/main/src/ui/res/values-sk/strings.xml
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">OpenVPN pre Android</string>
+ <string name="address">Adresa servera:</string>
+ <string name="port">Port servera:</string>
+ <string name="location">Umiestnenie</string>
+ <string name="cant_read_folder">Adresár sa nedá prečítať</string>
+ <string name="select">Vyberte</string>
+ <string name="cancel">Zrušiť</string>
+ <string name="no_data">Žiadne údaje</string>
+ <string name="useLZO">LZO Kompresia</string>
+ <string name="client_no_certificate">Žiadne Certifikáty</string>
+ <string name="client_certificate_title">Certifikát klienta</string>
+ <string name="client_key_title">Kľúč certifikátu klienta</string>
+ <string name="client_pkcs12_title">PKCS12 súbor</string>
+ <string name="ca_title">Certifikát CA</string>
+ <string name="no_certificate">Musíte vybrať certifikát</string>
+ <string name="copyright_guicode">Zdrojový kód a riešenie problémov je k dispozícii na adrese https://github.com/schwabe/ics-openvpn/</string>
+ <string name="copyright_others">Tento program používa nasledujúce komponenty; pozri zdrojový kód pre podrobnosťi o licenciách</string>
+ <string name="about">O</string>
+ <string name="vpn_list_title">Profily</string>
+ <string name="vpn_type">Typ</string>
+ <string name="pkcs12pwquery">PKCS12 heslo</string>
+ <string name="file_select">Vyberte&#8230;</string>
+ <string name="file_nothing_selected">Musíte vybrať súbor</string>
+ <string name="ipv6_dialog_tile">Zadajte IPv6 adresu / masku siete v CIDR formáte (napr. 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Zadajte IPv4 adresu/masku siete vo formáte CIDR (napr. 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4 adresa</string>
+ <string name="ipv6_address">IPv6 adresa</string>
+ <string name="custom_option_warning">Zadajte vlastné OpenVPN možnosti. Používajte opatrne. Tiež si všimnite, že mnoho OpenVPN nastavení súvisiacich s TUN, nemôže byť podporovaná, kvôli dizajnu VPNSettings. Ak si myslíte, že dôležitá voľba chýba, obráťte sa na autora</string>
+ <string name="auth_pwquery">Heslo</string>
+ <string name="static_keys_info">Pre statickú konfiguráciu budú TLS Auth kľúče použité ako statické kľúče</string>
+ <string name="configure_the_vpn">Konfigurácia VPN</string>
+ <string name="menu_add_profile">Pridať profil</string>
+ <string name="add_profile_name_prompt">Zadajte názov identifikujúci nový profil</string>
+ <string name="duplicate_profile_name">Prosím, zadajte jedinečný názov profilu</string>
+ <string name="profilename">Názov profilu</string>
+ <string name="no_keystore_cert_selected">Musíte vybrať užívateľský certifikát</string>
+ <string name="no_error_found">Nebola nájdená žiadna chyba</string>
+ <string name="config_error_found">Chyba v konfigurácii</string>
+ <string name="ipv4_format_error">Chyba pri analýze IPv4 adresy</string>
+ <string name="custom_route_format_error">Chyba rozboru vlastného smerovania</string>
+ <string name="pw_query_hint">(nechajte prázdne pre dotaz na vyžiadanie)</string>
+ <string name="vpn_shortcut">OpenVPN odkaz</string>
+ <string name="vpn_launch_title">Pripája sa k sieti VPN</string>
+ <string name="shortcut_profile_notfound">Profil specifikovaný v zástupcovi nebol nájdený</string>
+ <string name="random_host_prefix">Náhodný prefix hostiteľa</string>
+ <string name="random_host_summary">Pridá 6 náhodných znakov pred hostname</string>
+ <string name="custom_config_title">Povoliť vlastné možnosti</string>
+ <string name="custom_config_summary">Určite vlastné nastavenia. Používajte opatrne!</string>
+ <string name="route_rejected">Trasa zamietnutá</string>
+ <string name="cancel_connection">Odpojiť</string>
+ <string name="cancel_connection_long">Odpojiť VPN</string>
+ <string name="clear_log">zmazať log</string>
+ <string name="title_cancel">Zrušiť potvrdenie</string>
+ <string name="cancel_connection_query">Odpojiť pripojenie VPN, alebo zrušiť pokus o pripojenie?</string>
+ <string name="remove_vpn">Odstrániť VPN</string>
+ <string name="check_remote_tlscert">Skontroluje, či server používa certifikát s TLS Server extensions (--remote-cert-tls server)</string>
+ <string name="check_remote_tlscert_title">Čaká sa na certifikát servera TLS</string>
+ <string name="remote_tlscn_check_summary">Kontrola DN v certifikáte vzdialeného servera</string>
+ <string name="remote_tlscn_check_title">Kontrola Host certifikátu</string>
+ <string name="enter_tlscn_dialog">Špecifikuj spôsob kontroly DN v certifikáte vzdialeného servera (pr. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nŠpecifikuj kompletné DN alebo RDN (openvpn.blinkt.de v príklade) alebo RDN prefix pre verifikáciu.\n\nPri použití RDN prefixu, \"Server\" sedí na \"Server-1\" i \"Server-2\"\n\nAk je RDN pole prázdne, kontroluje sa proti mene servera.\n\nPre viac detailov, pozri manuálovú stránku OpenVPN 2.3.1+, prepínač —verify-x509-name</string>
+ <string name="enter_tlscn_title">Vzdialený certifikát</string>
+ <string name="pull_on_summary">Použiť IP adresu, smerovanie a časovanie prijaté od servera.</string>
+ <string name="pull_off_summary">Žiadne informácie od servera nepožadovať. Nastavenie je potrebné zadať nižšie.</string>
+ <string name="use_pull">Získajte informácie</string>
+ <string name="dns">DNS</string>
+ <string name="override_dns">Prepísať nastavenia DNS servera</string>
+ <string name="dns_override_summary">Použiť vlastné DNS servery</string>
+ <string name="searchdomain">hľadať doménu</string>
+ <string name="dns1_summary">Adresa primárneho DNS servera</string>
+ <string name="dns_server">Primárny DNS server</string>
+ <string name="secondary_dns_message">Adresa záložného DNS servera, ak sa nemôže pripojiť k primárnemu.</string>
+ <string name="backup_dns">Záložný DNS server</string>
+ <string name="ignored_pushed_routes">ignorovať prijaté</string>
+ <string name="ignore_routes_summary">Ignorovať smerovanie, ktoré zaslal server.</string>
+ <string name="default_route_summary">Presmeruje všetku komunikáciu cez VPN</string>
+ <string name="use_default_title">Použiť ako predvolené</string>
+ <string name="custom_route_message">Zadať vlastné smerovanie. Zadaj ciele v CIDR formáte. \"10.0.0.0/8 2002::/16\" nasmeruje siete 10.0.0.0/8 a 2002::/16 skrz VPN.</string>
+ <string name="custom_route_message_excluded">Trasy, ktoré nemajú byť smerované cez VPN. Použi rovnaký syntax ako pre zahrnuté trasy.</string>
+ <string name="custom_routes_title">Vlastné smerovanie</string>
+ <string name="custom_routes_title_excluded">Vylúčené siete</string>
+ <string name="log_verbosity_level">Ukecanosť logu</string>
+ <string name="float_summary">Povoľ Párované pakety z ľubovoľnej IP</string>
+ <string name="float_title">Povoľ plávajúcí server</string>
+ <string name="custom_options_title">Vlastné nastavenia</string>
+ <string name="edit_vpn">Zmeniť nastavenia VPN</string>
+ <string name="remove_vpn_query">Odstrániť VPN profil \'%s\'?</string>
+ <string name="tun_error_helpful">Na niektorých ICS systémoch môže byť oprávnenia pre /dev/ton zle nastavené, alebo ton modul môže úplne chýbať. Pre systém s CM9 skús využiť opravy vlastníctva vo všeobecnom nastavení</string>
+ <string name="tun_open_error">Chyba pri otváraní ton zariadení</string>
+ <string name="error">"Chyba: "</string>
+ <string name="clear">Vymazať</string>
+ <string name="last_openvpn_tun_config">Otvorenie rozhrania ton:</string>
+ <string name="local_ip_info">Miestne IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
+ <string name="dns_server_info">DNS server: %1$s, Doména: %2$s</string>
+ <string name="routes_info_incl">Trasy: %1$s %2$s</string>
+ <string name="routes_info_excl">Vylúčené trasy: %1$s %2$s</string>
+ <string name="routes_debug">Nainštalované VpnService smerovania: %1$s %2$s</string>
+ <string name="ip_not_cidr">Získané informácie o rozhraní %1$s a %2$s, za predpokladu, že druhá adresa je adresa vzdialeného kolegami. používam /32 masku pre miestnú IP adresu. Mód OpenVPN je \"%3$s\".</string>
+ <string name="route_not_cidr">%1$s a %2$s ako IP adresy s CIDR maskou nedávajú zmysel, používam, /32 ako masku.</string>
+ <string name="route_not_netip">Smerovanie opravené z %1$s/%2$s na %3$s/%2$s</string>
+ <string name="keychain_access">Nemôže získať prístup k Android Keychain certifikáty. To môže byť spôsobené firmware upgrade alebo obnovení zálohy z aplikácie alebo aplikácie nastavenia. Upravte VPN a znova vyberte certifikát podľa základného nastavenia obnoviť povolenie na prístup k certifikátu.</string>
+ <string name="version_info">%1$s %2$s</string>
+ <string name="send_logfile">Odoslať log súbor</string>
+ <string name="send">Odoslať</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN log súbor</string>
+ <string name="copied_entry">Kopírovať log</string>
+ <string name="tap_mode">Tap Mode</string>
+ <string name="faq_tap_mode">TAP režim nie je možné bez root VPN API. Preto táto žiadosť nemôže poskytnúť podporu tap</string>
+ <string name="tap_faq2">Opäť? Robíš si srandu? Nie, tap mód naozaj nie je podporovaný a ďalšie maily na tom nič nezmení.</string>
+ <string name="tap_faq3">Tretíkrát? V skutočnosti, išlo by napísať emulátor tap zariadení pomocou ton, ktoré by patrične spracovávalo informácie z druhej vrstvy. Ale tento emulátor by tiež musel implementovať ARP a DHCP. Nie som si vedomý, že by niekto týmto smerom niečo podnikol. Kontaktuj ma, ak máš záujem toto naprogramovať.</string>
+ <string name="faq">FAQ</string>
+ <string name="copying_log_entries">Kopírovanie log protokolu</string>
+ <string name="faq_copying">Pre skopírovanie jedného záznamu stačí dlho stlačiť požadovaný záznam. Pre skopírovanie/odoslanie celého logu použi možnosť Odoslať súbor s logom. Pokiaľ nie je tlačidlo viditené v užívateľskom rozhraní, skús použiť to hardvérové.</string>
+ <string name="faq_shortcut">Skratka na spustenie</string>
+ <string name="faq_howto_shortcut">Môžeš umiestniť zástupca pre spustenie OpenVPN na plochu. V závislosti na úvodnej obrazovke budeš musieť pridať buď zástupcu alebo widget.</string>
+ <string name="no_vpn_support_image">Tvoj obrázok nie je podporovaný rozhraním VPNService API, je mi ľuto :(</string>
+ <string name="encryption">Šifrovanie</string>
+ <string name="cipher_dialog_title">Zadajte metódu šifrovania</string>
+ <string name="auth_dialog_message">Zadaj algoritmus pre autentifikáciu. Nechaj prázdne pre predvolený algoritmus.</string>
+ <string name="settings_auth">Overenia/šifrovania</string>
+ <string name="file_explorer_tab">prehliadač súbor</string>
+ <string name="inline_file_tab">Vložený súbor</string>
+ <string name="error_importing_file">Chyba pri importe súboru</string>
+ <string name="import_error_message">Nemôžem importovať súbor zo súborového systému</string>
+ <string name="inline_file_data">[[Vložené dáta]]</string>
+ <string name="opentun_no_ipaddr">Odmietam otvoriť ton zariadení bez informácie o IP</string>
+ <string name="menu_import">Importovať profil zo súboru ovpn</string>
+ <string name="menu_import_short">Import</string>
+ <string name="import_content_resolve_error">Nemôžem prečítať profil na import</string>
+ <string name="error_reading_config_file">Chyba pri čítaní konfiguračného súboru</string>
+ <string name="add_profile">pridať profil</string>
+ <string name="import_could_not_open">Nemôžem nájsť súbor %1$s spomínaný v importovanom profile</string>
+ <string name="importing_config">Importujem nastavení z %1$s</string>
+ <string name="import_warning_custom_options">V konfigurácii bolo niekoľko nastavení, ktoré nie sú namapovaná na užívateľské rozhranie. Toto nastavenie bolo pridané ako vlastné konfigurácie. Vlastná konfigurácia je zobrazená nižšie:</string>
+ <string name="import_done">Dočítal som konfiguračný súbor.</string>
+ <string name="nobind_summary">Neviazať sa k miestnej adresy a portu</string>
+ <string name="no_bind">Žiadne miestne viazanie</string>
+ <string name="import_configuration_file">Importovať nastavenia zo súboru</string>
+ <string name="faq_security_title">Úvaha o bezpečnosti</string>
+ <string name="faq_security">\"Pretože OpenVPN je citlivá na bezpečnosť je na mieste niekoľko poznámok. Všetky dáta na SD karte sú už z princípu nezabezpečená. Každá aplikácia ich môže čítať (napríklad ani tento program nepotrebuje žiadne speciǎlní práva pre SD kartu). Dáta tejto aplikácie môže prečítať len aplikácie sama. Použitím importu pre certifikáty/kľúče sú dáta uložené do VPN profilu. VPN profily sú prístupné len pre túto aplikáciu. (Nezabudni ale potom zmazať kópie z SD karty.) ale aj keď sú dáta čitateľné len touto aplikáciou, nie sú nijako šifrovaná. Je -Li zariadenie rootnuté alebo nejako inak upravené, existuje možnosť získať tieto dáta. Uložené heslá sú tiež v čitateľnej podobe. Pre PKCS12 certifikáty je veľmi odporúča využiť importu do androidího úložiska.</string>
+ <string name="import_vpn">Import</string>
+ <string name="broken_image_cert_title">Chyba pri zobrazení výbere certifikátu</string>
+ <string name="broken_image_cert">Výnimka pri pokuse zobraziť Android 4.0+ dialógu pre výber certifikátu. Toto je štandardné funkcie Androidu 4.0+, takže k tejto chybe nemalo vôbec dôjsť, možno je chyba v podpore certifikátov v tvojom systéme.</string>
+ <string name="ipv4">IPv4</string>
+ <string name="ipv6">IPv6</string>
+ <string name="speed_waiting">Čakám na správu o stave...</string>
+ <string name="converted_profile">importovaný profil</string>
+ <string name="converted_profile_i">importovaný profil %d</string>
+ <string name="broken_images">Rozbité obrázky</string>
+ <string name="broken_images_faq">&lt;p&gt; Oficiálne HTC obrazy sú známe tým, že majú konkrétne problémy so smerovaním sieťového tok skrz tunel (pozri tiež &lt; href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\" &gt; problém 18 &lt;/a&gt; v bug trackeru.)&lt;/p&gt; &lt;p&gt; Staršie oficiálne obrazy SONY Xperia Arc S a Xperia Ray úplne chýbala VPNService. (pozri tiež &lt; href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\" &gt; problém 29 &lt;/a&gt; v bug trackeru.)&lt;/p&gt; &lt;p&gt; Na vlastných obrazoch Tun modul môže chýbať alebo mať zle nastavená práva. Niektoré obrazy CM9 potrebujú povolenej \"Opraviť vlastníctva\" v nastavení.&lt;/p&gt; &lt;p&gt;Najdôležitejšie: Ak má zariadenie poškodený Android obraz, oznám to výrobcovia. Čím viac ľudí oznámi problém výrobcovi, tým väčšia je pravdepodobnosť, že to opraví.&lt;/p&gt;</string>
+ <string name="pkcs12_file_encryption_key">Šifrovací kľúč PKCS12</string>
+ <string name="private_key_password">Heslo k súkromnému kľúču</string>
+ <string name="password">Heslo</string>
+ <string name="file_icon">ikona súboru</string>
+ <string name="tls_authentication">TLS autentizácia/šifrovanie</string>
+ <string name="generated_config">Vygenerované nastavenia</string>
+ <string name="generalsettings">Nastavenie</string>
+ <string name="owner_fix_summary">Pokúsiť sa nastaviť vlastníka /dev/ton zariadení. Na niektorých systémoch s CM9 je toto potrebné pre sprevádzkovanie VPNService API. Vyžaduje root zariadenie.</string>
+ <string name="owner_fix">Opraviť vlastníctvo /dev/ton</string>
+ <string name="generated_config_summary">Zobrazí vygenerované nastavenia OpenVPN</string>
+ <string name="edit_profile_title">Úprava \"%s\"</string>
+ <string name="building_configration">Vytváram konfiguráciu ...</string>
+ <string name="netchange_summary">Zapnutím tejto voľby bude vynútené opätovné pripojenie, ak sa zmení stav siete (napr. Z WiFi na mobilnú sieť a späť)</string>
+ <string name="netchange">Opätovne pripojiť pri zmene siete</string>
+ <string name="netstatus">Stav siete: %s</string>
+ <string name="extracahint">CA certifikát je zvyčajne získaný z Androidího úložiska. Zadaj samostatný certifikát, ak dostávaš chybu pri verifikácii.</string>
+ <string name="select_file">Vyber</string>
+ <string name="keychain_nocacert">Žiadny CA certifikát nebol získaný z úložiska, autentikácie pravdepodobne zlyhá.</string>
+ <string name="show_log_summary">Zobraziť okno s logom pri pripájaní. okno možno vždy otvoriť z notifikácia.</string>
+ <string name="show_log_window">Zobraziť okno s logom</string>
+ <string name="mobile_info">%10$s %9$s spustené 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 pri podpisovaní kľúčom %1$s: %2$s</string>
+ <string name="error_extapp_sign">Chyba vo vlákne s externou autentickosti aplikácie</string>
+ <string name="faq_system_dialogs">VPN varovanie pri pripájaní oznamujúce o možnosti presmerovania všetkého prevádzky je vynútené systémom, aby sa zabránilo zneužitiu VPNService API.\nNotifikace (symbol s kľúčom) je tiež vynútená systémom, aby signalizovala odchádzajúce VPN spojenie. Na niektorých systémoch prehráva notifikácia aj zvuk.\nAndroid zaviedol tieto dialógy pre tvoju osobnú bezpečnosť a uistil sa, že nejdú obísť. (Niekedy to bohužiaľ zahŕňa aj zvuk notifikácia.)</string>
+ <string name="faq_system_dialogs_title">Varovanie pri pripojení a zvuková notifikácia</string>
+ <string name="translationby">Slovenský preklad zpracoval mickkymouse &lt;tobiaschannel11@gmail.com&gt;</string>
+ <string name="ipdns">IP a DNS</string>
+ <string name="basic">Základné</string>
+ <string name="routing">Smerovanie</string>
+ <string name="obscure">Skryté OpenVPN voľby. Normálne nie sú nutné.</string>
+ <string name="advanced">Pokročilé</string>
+ <string name="export_config_title">Konfigurácia ICS Openvpn</string>
+ <string name="warn_no_dns">Žiadne DNS servery nie sú použité. Preklad mien nemusí fungovať. Zváž nastavenie vlastných DNS serverov. Tiež dbaj na to, že Android bude naďalej používať nastavenia proxy určené pre mobilné/Wi-Fi pripojenie, ak nie sú nastavené žiadne servery DNS.</string>
+ <string name="dns_add_error">Nemôžem pridať DNS server \"%1$s\", odmietnuté systémom: %2$s</string>
+ <string name="ip_add_error">Nie je možné nastaviť IP adresu \"%1$s\", odmietnuté systémom: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;Získaj fungujúci nastavenia (otestované na tvojom počítači alebo stiahnuté od poskytovateľa/zamestnávateľa).&lt;/p&gt;&lt;p&gt;Ak je to jeden súbor bez extra pem/pks12 súborov, môžeš ho poslať emailom ako prílohu. Ak je súborov viac, ulož ich na SD kartu.&lt;/p&gt;&lt;p&gt;Klikni na prílohu mailu/Použi ikonu adresára v zozname VPN pre import nastavenie.&lt;/p&gt;&lt;p&gt;Ak sa zobrazí chyby o chýbajúcich súboroch, ulož ich na SD kartu.&lt;/p&gt;&lt;p&gt;Pre pridanie importované VPN do zoznamu, klikni na symbol pre uloženie.&lt;/p&gt;&lt;p&gt;Pre pripojenie k VPN klikni na jej meno.&lt;/p&gt;&lt;p&gt;Ak sa v logu objavia varovanie alebo chyby, pokus sa im porozumieť a opraviť nastavenia.&lt;/p&gt; </string>
+ <string name="faq_howto_title">Rýchly štart</string>
+ <string name="setting_loadtun_summary">Pokus sa nahrať jadrový modul tun.ko pred pokusom o pripojenie. Vyžaduje rootnuté zariadenia.</string>
+ <string name="setting_loadtun">Nahrať ton modul</string>
+ <string name="importpkcs12fromconfig">Importovať PKCS12 z konfigurácie do Androidného úložiska</string>
+ <string name="getproxy_error">Chyba pri zisťovaní nastavení proxy: %s</string>
+ <string name="using_proxy">Používam proxy %1$s %2$s</string>
+ <string name="use_system_proxy">Použiť systémovú proxy</string>
+ <string name="use_system_proxy_summary">Na pripojenie použiť systémové nastavenie pre HTTP/HTTPS.</string>
+ <string name="ignore">Ignorovať</string>
+ <string name="restart">Reštartovať</string>
+ <string name="restart_vpn_after_change">Zmena nastavení začne platiť až po reštarte VPN. Reštartovať teraz?</string>
+ <string name="configuration_changed">Nastavenie zmenené</string>
+ <string name="log_no_last_vpn">Nemôžem zistiť naposledy pripojený profil k úprave</string>
+ <string name="faq_duplicate_notification_title">Zdvojená notifikácia</string>
+ <string name="faq_duplicate_notification">Ak je Android pod veľkým tlakom (na RAM pamäť), aplikácie a služby, ktoré nie sú práve potrebné, sú odstránené z aktívnej pamäti. To ukončí odchádzajúce VPN spojenie. Na zaistenie, že OpenVPN spojenie prežije, služba beží s vysokou prioritou. Aby mohla služba bežať s vysokou prioritou, musí zobraziť notifikáciu. Notifikácia s kľúčom je vynútená systémom (ako je popísané v inom oddiele) a nepočíta sa ako aplikačný notifikácia na účely behu s vysokou prioritou.</string>
+ <string name="no_vpn_profiles_defined">Nie je definovaný VPN profil.</string>
+ <string name="add_new_vpn_hint">Použi ikonu &lt;img src=\"ic_menu_add\"/&gt; na pridanie novej VPN</string>
+ <string name="vpn_import_hint">použi ikonu &lt;img src=\"ic_menu_archive\"/&gt; k Importe existujúceho (.ovpn alebo .conf) profilu z SD karty.</string>
+ <string name="faq_hint">Uisti sa, že si si prečítal FAQ. Je tu nápoveda pre rýchly štart.</string>
+ <string name="faq_routing_title">Nastavenie smerovania/rozhrania</string>
+ <string name="faq_routing">Smerovanie a konfigurácia rozhrania nie je vykonaná pomocou tradičných príkazov ifconfig/route, ale pomocou VPNService API. To má za následok odlišnú konfiguráciu smerovania, než na iných operačných systémoch. Konfigurácia VPN tunela sa skladá z IP adresy a siete, ktorá má byť smerovaná cez toto rozhranie. Najmä nie je potreba adresa protistrany alebo brány. Špeciálny smerovania pre dosiahnutie VPN servera (napríklad v prípade použitia redirect-gataway direktívy) tiež nie je potreba. Aplikácia bude toto nastavenie pri importe konfigurácie ignorovať. Aplikácia pomocou VPNService API zaisťuje, že spojenie k VPN servera nie je smerované cez tunel. Povolené je len špecifikovanie sietí, ktoré sa majú smerovať skrze tunel. Aplikácia sa snaží detekovať siete, ktoré by nemali prechádzať tunelom (napr. Route x.x.x.x y.y.y.y net_gateway) a vypočítava nastavenie smerovania tak, aby emuloval správne chované ako na ostatných platformách. Logovacie okno ukazuje konfiguráciu VPNService pri nadviazaní spojenia.</string>
+ <string name="persisttun_summary">Nevracaj sa k spojeniu mimo VPN, zatiaľ čo sa OpenVPN pripája.</string>
+ <string name="persistent_tun_title">Trvalý ton</string>
+ <string name="openvpn_log">OpenVPN Log</string>
+ <string name="import_config">Importovať OpenVPN nastavenia</string>
+ <string name="battery_consumption_title">Spotreba batérie</string>
+ <string name="baterry_consumption">V testoch sa ako hlavný dôvod vysokej spotreby batérie ukázali keepalive pakety. Väčšina OpenVPN serverov má v konfigurácii niečo ako \'keepalive 10 60\', čo znamená posielanie paketov každých desať sekúnd. &lt;p&gt; Tieto pakety sú malé a neznamenajú veľký prevádzku, ale udržujú mobilnú sieť aktívna a zvyšujú spotrebu energie. (Pozri tiež &lt;ahref=\"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; Toto nastavenie sa nedá zmeniť na klientskej strane. Len administrátor OpenVPN môže toto nastavenie zmeniť. &lt;p&gt; Bohužiaľ používanie keepalive hodnôt väčších ako 60 sekúnd spolu s UDP môže spôsobovať problémy s niektorými Naty, ktoré ukončujú po krátkom čase spojenia. Použitie TCP s dlhým keepalive funguje, ale má problém \"TCP cez TCP\" (Pozri &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;Prečo je TCP cez TCP zlý nápad&lt;/a&gt;)</string>
+ <string name="faq_tethering">Androidi funkcie tetheringu (cez WiFi, USB, alebo Bluetooth) a VPService API (používajú týmto programom) spolu nepracujú. Viac detailov viď &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=34\"&gt;problem #34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">Zdieľanie siete VPN</string>
+ <string name="connection_retries">Opakované pripojenie</string>
+ <string name="reconnection_settings">Nastavenie obnovenia</string>
+ <string name="connectretrymessage">Počet sekúnd medzi pokusmi o pripojenie.</string>
+ <string name="connectretrywait">Sekúnd medzi pripojeniami</string>
+ <string name="minidump_generated">Sekúnd medzi pripojením OpenVPN neočakávane havarovalo. Zváž možnosť použitia voľby poslať Minidump z hlavného menu
+ </string>
+ <string name="send_minidump">Poslať Minidump vývojári</string>
+ <string name="send_minidump_summary">Poslať ladiace informácie o poslednej havárii vývojári</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">Pripájam sa</string>
+ <string name="state_wait">Čakanie na odpoveď servera</string>
+ <string name="state_auth">Overujem autorizáciu</string>
+ <string name="state_get_config">Sťahujem konfiguráciu klienta</string>
+ <string name="state_assign_ip">Nastavujem IP adresu</string>
+ <string name="state_add_routes">Pridávanie trás</string>
+ <string name="state_connected">Pripojené</string>
+ <string name="state_disconnected">Odpojiť</string>
+ <string name="state_reconnecting">Obnovujem pripojenie</string>
+ <string name="state_exiting">Odísť</string>
+ <string name="state_noprocess">Nie je spustený</string>
+ <string name="state_resolve">Preklad názvov</string>
+ <string name="state_tcp_connect">Pripájam (TCP)</string>
+ <string name="state_auth_failed">Overenie zlyhalo</string>
+ <string name="state_nonetwork">Čaká sa na použiteľnú sieť</string>
+ <string name="state_waitorbot">Čaká sa, kým sa začne Orbot</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
+ <string name="notifcation_title_notconnect">Nepripojený</string>
+ <string name="start_vpn_title">Pripája sa k sieti VPN %s</string>
+ <string name="start_vpn_ticker">Pripája sa k sieti VPN %s</string>
+ <string name="jelly_keystore_alphanumeric_bug">Niektoré verzie systému Android 4.1 majú problémy, ak názov certifikátu skladu kľúčov obsahuje alfanumerické znaky (napríklad medzery, podčiarknutia alebo pomlčky). Skúste znova importovať certifikát bez špeciálnych znakov</string>
+ <string name="encryption_cipher">Šifrovacia šifra</string>
+ <string name="packet_auth">autentifikácia paketov</string>
+ <string name="auth_dialog_title">Zadajte metódu autentifikácie paketov</string>
+ <string name="debug_build">ladiaca verzia</string>
+ <string name="official_build">oficiálna verzia</string>
+ <string name="make_selection_inline">Skopírovať do profilu</string>
+ <string name="crashdump">havarijný výpis</string>
+ <string name="add">Pridať</string>
+ <string name="send_config">Odoslať konfiguračný súbor</string>
+ <string name="complete_dn">Kompletné DN</string>
+ <string name="remotetlsnote">Tvoja importovaná konfigurácia používa ZASTARANÉ nastavenie tls-remote, ktoré používa iný formát DN.</string>
+ <string name="rdn">RDN (bežné meno)</string>
+ <string name="rdn_prefix">RDN prefix</string>
+ <string name="tls_remote_deprecated">tls-remote (ZASTARANÉ)</string>
+ <string name="help_translate">Môžeš pomôcť s prekladom, navštív http://crowdin.net/project/ics-openvpn/invite</string>
+ <string name="prompt">%1$s sa pokúša o kontrolu %2$s</string>
+ <string name="remote_warning">Pokračovaním dávaš aplikácií privilégiá pre kompletnú kontrolu OpenVPN a na zachytávanie všetkého sieťovej prevádzky.<b>Nepotvrdzuj, ak neveríš aplikácií.</b> V opačnom prípade riskuješ napadnutia nebezpečným softvérom</string>
+ <string name="remote_trust">Verím tejto aplikácii.</string>
+ <string name="no_external_app_allowed">Žiadne aplikácii nie je povolené použiť externý API</string>
+ <string name="allowed_apps">Povolené aplikácie: %s</string>
+ <string name="clearappsdialog">Vyčistiť zoznam povolených aplikácií?\nSúčasný zoznam povolených aplikácií:\n\n%s</string>
+ <string name="screenoff_summary">\"Pozastaviť VPN, ak je obrazovka vypnutá a za posledných 60 sekúnd sa prenieslo menej ako 64 kB. Ak je voľba\" Trvalé TUN\" povolená, pozastavenie VPN dostane zariadenie do stavu BEZ konektivity. Bez \"Trvalé TUN\" možnosti nebude mať zariadenie VPN pripojenie (ochranu).</string>
+ <string name="screenoff_title">Pozastaviť VPN pripojenia pri vypnutí obrazovky</string>
+ <string name="screenoff_pause">Pozastaviť pripojenie pri vypnutej obrazovke: menej ako %1$s za %2$s sekund</string>
+ <string name="screen_nopersistenttun">Varovanie: \"Trvalý TUN\" nie je pre túto VPN povolený. Prevádzka použije pri vypnutej obrazovke normálnej internetové pripojenie.</string>
+ <string name="save_password">Uložiť heslo</string>
+ <string name="pauseVPN">Pozastaviť VPN</string>
+ <string name="resumevpn">Obnoviť VPN</string>
+ <string name="state_userpause">Pozastavenie VPN vyžiadané užívateľom</string>
+ <string name="state_screenoff">VPN pozastavené - vypnutá obrazovka</string>
+ <string name="device_specific">Hacky špecifické pre zariadenie</string>
+ <string name="cannotparsecert">Nie je možné zobraziť informácie o certifikáte</string>
+ <string name="appbehaviour">Správanie aplikácie</string>
+ <string name="vpnbehaviour">Správanie VPN</string>
+ <string name="allow_vpn_changes">Povoliť zmeny VPN profilov</string>
+ <string name="hwkeychain">Hardvérové úložisko:</string>
+ <string name="permission_icon_app">Ikona aplikácie snažiaci sa použiť OpenVPN pre Android</string>
+ <string name="faq_vpndialog43">"Počnúc Androidom 4.3, VPN konfirmácia je chránená proti \"prekryvným aplikáciám\". Výsledkom je dialóg nereagujúca na dotyk. Pokiaľ máš aplikáciu používajúci prekryv, môže to spôsobiť toto správanie. Ak nájdeš škodlivú aplikáciu, kontaktuj jej autora. Tento problém ovplyvňuje všetky VPN aplikácie na Androide 4.3 a vyššie. pozri tiež &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;Problem 185&lt;a&gt; pre ďalšie detaily."</string>
+ <string name="faq_vpndialog43_title">VPN potvrdzovací dialóg na Androide 4.3 a vyššie</string>
+ <string name="donatePlayStore">Prípadne ma môžete sponzorovať cez Play Store:</string>
+ <string name="thanks_for_donation">Vďaka za sponzorovanie %s!</string>
+ <string name="logCleared">Log vyčistený.</string>
+ <string name="show_password">ukázať heslo</string>
+ <string name="keyChainAccessError">Chyba prístupu ku KeyChain: %s</string>
+ <string name="timestamp_short">Krátky</string>
+ <string name="timestamp_iso">ISO</string>
+ <string name="timestamps">Časové značky</string>
+ <string name="timestamps_none">Žiadny</string>
+ <string name="uploaded_data">Nahrávanie</string>
+ <string name="downloaded_data">Sťahovanie</string>
+ <string name="vpn_status">VPN stav</string>
+ <string name="logview_options">Zobraziť možnosti</string>
+ <string name="unhandled_exception">Neošetrená výnimka: %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">Ak máš rootnuté zariadenie, môžeš nainštalovať &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt; a &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN potvrdzovací modul&lt;/a&gt; na vlastné nebezpečenstvo\"</string>
+ <string name="full_licenses">Plné licencie</string>
+ <string name="blocklocal_summary">Sieť môže byť pripojená na lokálne rozhranie nebude možné smerovanými skrze VPN. Odznačením této volby bude přesměrován každý lokálny provoz do VPN.</string>
+ <string name="blocklocal_title">Nepoužívať VPN pre lokálne siete</string>
+ <string name="userpw_file">Súbor pre Meno/Heslo</string>
+ <string name="imported_from_file">[Importované z: %s]</string>
+ <string name="files_missing_hint">Niektoré súbory nemohli byť nájdené. Prosím vyber profil, ktorý chceš importovať:</string>
+ <string name="openvpn_is_no_free_vpn">Pre používanie tejto aplikácie je potreba VPN poskytovateľ/brána, ktorá podporuje OpenVPN (často je to zamestnávateľ). Pre viac informácií a návod na nastavenie OpenVPN serveru navštív http://community.openvpn.net/</string>
+ <string name="import_log">Import logu:</string>
+ <string name="ip_looks_like_subnet">Vpn topológia \"%3$s\" špecifikovaná, ale ifconfig %1$s %2$s vyzerá skôr ako IP adresa so sieťovou maskou. Predpokladám \"podsieťová\" topológiu.</string>
+ <string name="mssfix_invalid_value">mssfix hodnota musí byť celé číslo medzi 0 a 9000</string>
+ <string name="mtu_invalid_value">MTU hodnota musí byť celé číslo medzi 64 a 9000</string>
+ <string name="mssfix_value_dialog">Oznámiť TCP sedením bežiacom skrze tunel, že majú limitovať veľkosť odosielaných paketov tak, aby potom, čo je OpenVPN zabalí, bola výsledná veľkosť UDP paketu, ktoré OpenVPN posiela menší než tento počet bytov. (Predvolený je 1450)</string>
+ <string name="mssfix_checkbox">Prepísať hodnotu MSS pre TCP obsah</string>
+ <string name="mssfix_dialogtitle">Nastaviť MSS pre TCP obsah</string>
+ <string name="client_behaviour">Správanie klienta</string>
+ <string name="clear_external_apps">Zrušiť povolene externé aplikácie</string>
+ <string name="loading">Načítanie...</string>
+ <string name="allowed_vpn_apps_info">Povolené VPN aplikácie: %1$s</string>
+ <string name="disallowed_vpn_apps_info">Zakázané VPN aplikácie: %1$s</string>
+ <string name="app_no_longer_exists">Balíček %s už nie je nainštalovaný, odstraňujem ho zo zoznamu povolených/zakázaných aplikácií</string>
+ <string name="vpn_disallow_radio">VPN je používaná pre všetky aplikácie, okrem</string>
+ <string name="vpn_allow_radio">VPN je používaná je pre vybrané aplikácie</string>
+ <string name="vpn_allow_bypass">Dovoľ aplikáciám obísť VPN</string>
+ <string name="query_delete_remote">Odstrániť položku vzdialeného servera?</string>
+ <string name="keep">Zachovať</string>
+ <string name="delete">Zmazať</string>
+ <string name="add_remote">Pridať nové vzdialené miesto</string>
+ <string name="remote_random">Použiť položky na pripojenie v náhodnom poradí</string>
+ <string name="remote_no_server_selected">Je potrebné definovať a povoliť aspoň jeden vzdialený server.</string>
+ <string name="server_list">Zoznam serverov</string>
+ <string name="vpn_allowed_apps">Povolené aplikácie</string>
+ <string name="advanced_settings">Pokročilé nastavenia</string>
+ <string name="payload_options">Možnosti dát</string>
+ <string name="tls_settings">Nastavenie TLS</string>
+ <string name="no_remote_defined">Nedefinovaná protistrana</string>
+ <string name="duplicate_vpn">Duplicitný VPN profil</string>
+ <string name="duplicate_profile_title">Duplicitný profil: %s</string>
+ <string name="show_log">Zobraziť log</string>
+ <string name="faq_android_clients">Existuje viac klientov OpenVPN pre Android. Najbežnejšie sú OpenVPN pre Android (tento klient), OpenVPN Connect a OpenVPN Settings.&lt;p&gt;Klienti môžu byť zoskupení do dvoch skupín: OpenVPN pre Android a OpenVPN Connect používajú oficiálne API VPNService (Android 4.0+) a nevyžadujú žiadne nastavenia root a OpenVPN, ktoré používajú root.&lt;p&gt;OpenVPN pre Android je klient s otvoreným zdrojom a vyvinutý spoločnosťou Arne Schwabe. Je zameraná na pokročilejších používateľov a ponúka veľa nastavení a možnosť importovať profily zo súborov a konfigurovať / meniť profily v aplikácii. Klient je založený na komunitnej verzii OpenVPN. Je založený na zdrojovom kóde OpenVPN 2.x. Tento klient môže byť videný ako polooficiálny klient komunity. &lt;p&gt;OpenVPN Connect je klient s otvoreným zdrojovým kódom, ktorý vyvinula spoločnosť OpenVPN Technologies, Inc. Klient je označený ako klient so všeobecným použitím a je viac zameraný na priemerného používateľa a umožňuje import profilov OpenVPN. Tento klient je založený na reimplementácii protokolu OpenVPN C ++ protokolu OpenVPN (Vyžadovalo sa to, aby mohla spoločnosť OpenVPN Technologies, Inc zverejniť aplikáciu iOS OpenVPN). Tento klient je oficiálnym klientom technológií OpenVPN. &lt;p&gt; Nastavenia OpenVPN sú najstaršími klientmi a tiež používateľským rozhraním pre otvorený zdroj OpenVPN. Na rozdiel od OpenVPN pre Android vyžaduje root a nepoužíva API VPNService. Nezávisí to od systému Android 4.0 alebo novšieho</string>
+ <string name="faq_androids_clients_title">Rozdiely medzi OpenVPN klientov pre Android</string>
+ <string name="ignore_multicast_route">Ignorovanie trasy multicast: %s</string>
+ <string name="ab_only_cidr">Android podporuje iba trasy CIDR k sieti VPN. Pretože trasy, ktoré nie sú CIDR, sa takmer nikdy nepoužívajú, OpenVPN pre Android použije / 32 pre trasy, ktoré nie sú CIDR, a vydá varovanie.</string>
+ <string name="ab_tethering_44">Tethering funguje, keď je VPN aktívna. Zdieľané pripojenie NEPOUŽÍVA VPN.</string>
+ <string name="ab_kitkat_mss">Staršia verzia KitKat nastavila nesprávnu hodnotu MSS na pripojeniach TCP (# 61948). Pokúste sa povoliť možnosť mssfix na obídenie tejto chyby.</string>
+ <string name="ab_proxy">Ak nie sú nastavené žiadne servery DNS, systém Android bude naďalej používať vaše nastavenia servera proxy určené pre mobilné pripojenie / pripojenie Wi-Fi. OpenVPN pre Android vás na to upozorní v denníku.<p>Keď VPN nastaví DNS server, Android nebude používať proxy. Neexistuje žiadne rozhranie API na nastavenie servera proxy pre pripojenie VPN.</p></string>
+ <string name="ab_not_route_to_vpn">Konfigurovaná adresa IP klienta a adresy IP v jeho sieťovej maske nie sú smerované do VPN. OpenVPN obíde túto chybu tým, že explicitne pridá cestu, ktorá sa zhoduje s IP adresou klienta a jeho sieťovou maskou</string>
+ <string name="ab_persist_tun">Otvorenie tunového zariadenia, zatiaľ čo je aktívne iné tunerové zariadenie, ktoré sa používa na podporu pretrvávajúceho tuningu, zrúti služby VPNS na zariadení. Aby sieť VPN opäť fungovala, je potrebný reštart. OpenVPN pre Android sa snaží vyhnúť sa opätovnému otvoreniu tunového zariadenia a ak je to skutočne potrebné, najskôr zatvorí aktuálny TUN pred otvorením nového TUN zariadenia, aby nedošlo k zlyhaniu. To môže viesť k krátkemu oknu, v ktorom sa pakety odosielajú cez pripojenie iné ako VPN. Aj pri tomto riešení sa niekedy služby VPNS zlyhajú a vyžadujú reštart zariadenia.</string>
+ <string name="ab_secondary_users">VPN pre sekundárnych používateľov vôbec nefunguje.</string>
+ <string name="ab_kitkat_reconnect">„Viacerí používatelia hlásia, že pri používaní aplikácie VPN je často prerušené mobilné pripojenie / mobilné dátové pripojenie. Zdá sa, že správanie ovplyvňuje iba kombináciu mobilných operátorov a zariadení a doteraz sa nedala zistiť príčina / riešenie chyby.“</string>
+ <string name="ab_vpn_reachability_44">Cez VPN je možné dosiahnuť iba cieľ, ktorý je dostupný bez VPN. VPN VPN typu IPv6 vôbec nefungujú.</string>
+ <string name="ab_only_cidr_title">Nie-CIDR trasy</string>
+ <string name="ab_proxy_title">Proxy správania pre VPN</string>
+ <string name="version_upto">%s a staršie</string>
+ <string name="copy_of_profile">Kópia %s</string>
+ <string name="ab_not_route_to_vpn_title">Trasa k nastavenej IP adrese</string>
+ <string name="ab_kitkat_mss_title">Zlá hodnota MSS pre VPN spojenie</string>
+ <string name="ab_secondary_users_title">Používatelia sekundárnych tabletov</string>
+ <string name="custom_connection_options_warng">Zadajte vlastné špecifické možnosti na pripojenie. Používajte opatrne</string>
+ <string name="custom_connection_options">Vlastné možnosti</string>
+ <string name="remove_connection_entry">Odstrániť položku pripojenie</string>
+ <string name="ab_kitkat_reconnect_title">Náhodné odpájaní od mobilnej siete</string>
+ <string name="ab_vpn_reachability_44_title">Vzdialená sieť nie je dostupná</string>
+ <string name="ab_persist_tun_title">Zotrvať v režime ton</string>
+ <string name="version_and_later">%s a neskôr</string>
+ <string name="tls_cipher_alert_title">Pripojenie zlyhalo SSL23_GET_SERVER_HELLO:sslv3 upozorniť na zlyhanie handshake</string>
+ <string name="tls_cipher_alert">Novšie verzie OpenVPN pre verzie systému Android (0.6.29 / marec 2015) používajú bezpečnejšie predvolené nastavenia povolených šifrovacích balíkov (tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). Bohužiaľ, vynechanie menej bezpečných šifrovacích súborov a export šifrovacích súborov, najmä vynechanie šifrovacích súborov, ktoré nepodporujú Perfect Forward Secrecy (Diffie-Hellman), spôsobuje určité problémy. Toto je zvyčajne spôsobené dobre mieneným, ale zle vykonaným pokusom o posilnenie bezpečnosti TLS nastavením tls-šifry na serveri alebo v niektorých zabudovaných OS s odstráneným SSL (napr. MikroTik).\nAk chcete vyriešiť tento problém, nastavte nastavenia tls-šifry na serveri na predvolené predvolené hodnoty, napríklad tls-šifra \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\". Na vyriešenie problému na klientovi pridajte na klientovi Android vlastnú voľbu tls-cipher DEFAULT.</string>
+ <string name="message_no_user_edit">Tento profil bol pridaný z externej aplikácie (%s) a bol označený ako užívateľsky nezmeniteľný.</string>
+ <string name="crl_file">Zoznam zrušených certifikátov</string>
+ <string name="service_restarted">Reštartovanie služby OpenVPN (aplikácia pravdepodobne havarovala, alebo bola ukončená kvôli nedostatku pamäte)</string>
+ <string name="import_config_error">Importovanie konfigurácie spôsobilo chybu, nemožno ho uložiť</string>
+ <string name="Search">Hľadať</string>
+ <string name="lastdumpdate">(Posledný výpis je %1$d: %2$dh starý (%3$s))</string>
+ <string name="clear_log_on_connect">Vymazať log pri novom pripojení</string>
+ <string name="connect_timeout">Časový limit pripojenia</string>
+ <string name="no_allowed_app">Neboli pridané žiadne povolené aplikácie. Ak do zoznamu povolených aplikácií pridáte sami seba (%s), povolíte tak aspoň jednu aplikáciu, ktorá nepovolí všetky aplikácie</string>
+ <string name="query_permissions_sdcard">Aplikácia OpenVPN pre systém Android sa môže pokúsiť automaticky zistiť chýbajúci súbor (y) na sdcard. Kliknutím na túto správu spustite žiadosť o povolenie.</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Povolené</string>
+ <string name="permission_revoked">Povolenie VPN zrušené OS (napr. Spustený iný program VPN), zastavovanie VPN</string>
+ <string name="pushpeerinfo">Push Peer info</string>
+ <string name="pushpeerinfosummary">Odoslať na server ďalšie informácie, napr. Verziu SSL a verziu systému Android</string>
+ <string name="pw_request_dialog_title">Potrebujete %1$s</string>
+ <string name="pw_request_dialog_prompt">Prosím zadajte heslo pre profil %1$s</string>
+ <string name="menu_use_inline_data">Použiť vložené údaje</string>
+ <string name="export_config_chooser_title">Exportovať konfiguračný súbor</string>
+ <string name="missing_tlsauth">súbor tls-auth chýba</string>
+ <string name="missing_certificates">Chýba certifikát používateľa alebo súbor certifikovaný používateľom</string>
+ <string name="crl_title">Zoznam zrušených certifikátov (voliteľné)</string>
+ <string name="reread_log">Znovu načítať (%d) položky protokolu zo súboru vyrovnávacej pamäte protokolu</string>
+ <string name="samsung_broken">Aj keď telefóny Samsung patria medzi najpredávanejšie telefóny s Androidom, firmvér spoločnosti Samsung patrí medzi najobľúbenejšie firmvéry systému Android. Chyby sa neobmedzujú iba na operáciu VPN na týchto zariadeniach, ale mnohé z nich možno vyriešiť. V nasledujúcom texte sú popísané niektoré z týchto chýb.\n\nDNS nefunguje, ak DNS server v rozsahu VPN.\n\nNa mnohých zariadeniach Samsung 5.x nefunguje funkcia povolených / zakázaných aplikácií.\nNa serveri Samsung 6.x VPN sa uvádza, že nefunguje, pokiaľ nie je aplikácia VPN vyňatá z funkcií Powersave.</string>
+ <string name="samsung_broken_title">Telefóny Samsung</string>
+ <string name="novpn_selected">Nie je vybratá žiadna sieť VPN.</string>
+ <string name="defaultvpn">Predvolená VPN</string>
+ <string name="defaultvpnsummary">Sieť VPN sa používa na miestach, kde je potrebná predvolená sieť VPN. Momentálne sú na štarte, pre Always-On a Quick Settings Tile.</string>
+ <string name="vpnselected">Aktuálne vybratá sieť VPN: \'%s\'</string>
+ <string name="reconnect">Znovu pripojiť</string>
+ <string name="qs_title">Prepnúť VPN</string>
+ <string name="qs_connect">Pripojiť k %s</string>
+ <string name="qs_disconnect">Odpojiť %s</string>
+ <string name="connectretrymaxmessage">Zadajte maximálny čas medzi pokusmi o pripojenie. OpenVPN bude pomaly zvyšovať svoju čakaciu dobu po neúspešnom pokuse o pripojenie na túto hodnotu. Predvolená hodnota je 300 s.</string>
+ <string name="connectretrymaxtitle">Maximálny čas medzi pokusmi o pripojenie</string>
+ <string name="state_waitconnectretry">Čakanie %ss sekúnd medzi pokusom o pripojenie</string>
+ <string name="nought_alwayson_warning"><![CDATA[Ak ste nedostali VPN potvrdzovacie okno, máte povolenú \"Vždy v VPN\" pre inú aplikáciu. V takom prípade sa k VPN môže pripojiť iba táto aplikácia. Začiarknite políčko Nastavenia-> Siete viac .. -> VPNS]]></string>
+ <string name="management_socket_closed">Pripojenie k OpenVPN zatvorené (%s)</string>
+ <string name="change_sorting">Zmeniť triedenie</string>
+ <string name="sort">Triediť</string>
+ <string name="sorted_lru">Profily zoradené podľa naposledy použitých</string>
+ <string name="sorted_az">Profily zoradené podľa názvu</string>
+ <string name="deprecated_tls_remote">Config používa voľbu tls-remote, ktorá bola zastaraná v 2.3 a nakoniec odstránená v 2.4</string>
+ <string name="auth_failed_behaviour">Správanie na AUTH_FAILED</string>
+ <string name="graph">Graf</string>
+ <string name="use_logarithmic_scale">Použiť logaritmickú stupnicu</string>
+ <string name="notenoughdata">Nedostatok dát</string>
+ <string name="avghour">Priemer za hodinu</string>
+ <string name="avgmin">Priemer za minutu</string>
+ <string name="last5minutes">Posledných 5 minút</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>
+ <string name="channel_name_background">Štatistika o spojenie</string>
+ <string name="channel_description_background">Priebežná štatistika založeného spojenie s OpenVPN</string>
+ <string name="channel_name_status">Zmena stavu spojenia</string>
+ <string name="channel_description_status">Stav spojení s OpenVPN sa mení (Pripaja, overujem, ...)</string>
+ <string name="weakmd_title">Slabé (MD5) kontrolnej sumy v podpisu certifikátu (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">Rýchlostný test OpenSSL</string>
+ <string name="openssl_cipher_name">Mená OpenSSL šifer</string>
+ <string name="osslspeedtest">Rýchlostný krypto test OpnSSL</string>
+ <string name="openssl_error">OpenSSL vrátilo chybu</string>
+ <string name="running_test">Test beží...</string>
+ <string name="test_algoirhtms">Testuj vybrané algoritmy</string>
+ <string name="all_app_prompt">Externá aplikácia sa pokúša ovládať %s. Aplikáciu požadujúcu prístup nie je možné určiť. Povolením tejto aplikácie získate prístup k VŠETKÝM aplikáciám.</string>
+ <string name="openvpn3_nostatickeys">Implementácia OpenVPN 3 C ++ nepodporuje statické kľúče. V rámci všeobecných nastavení zmeňte na OpenVPN 2.x.</string>
+ <string name="openvpn3_pkcs12">Priame použitie súborov PKCS12 s implementáciou OpenVPN 3 C ++ nie je podporované. Importujte súbory pkcs12 do úložiska kľúčov Android alebo ich zmeňte na OpenVPN 2.x v rámci všeobecných nastavení.</string>
+ <string name="proxy">Proxy</string>
+ <string name="Use_no_proxy">Bez</string>
+ <string name="tor_orbot">Tor (Orbot)</string>
+ <string name="openvpn3_socksproxy">Implementácia OpenVPN 3 C ++ nepodporuje pripojenie cez proxy Socks</string>
+ <string name="no_orbotfound">Aplikácia Orbot sa nedá nájsť. Nainštalujte si Orbot alebo použite manuálnu integráciu Socks v5.</string>
+ <string name="faq_remote_api_title">Vzdialené API</string>
+ <string name="faq_remote_api">OpenVPN pre Android podporuje dve vzdialené API, sofistikované API využívajúce AIDL (remoteEXample v úložisku git) a jednoduché pomocou Intents. &lt;p&gt;Príklady použitia škrupiny adb a zámerov. Nahraďte profilovým menom profilové meno&lt;p&gt;&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN de.blinkt.openvpn / .api.DisconnectVPN&lt;p&gt; adb shell am start-activity -a android.intent.action.MAIN - e de.blinkt.openvpn.api.profileName Blinkt de.blinkt.openvpn / .api.ConnectVPN</string>
+ <string name="enableproxyauth">Zapni overenie s proxy</string>
+ <string name="error_orbot_and_proxy_options">Nie je možné použiť dodatočný príkaz http-proxy-option a integráciu Orbotu súčasneO</string>
+ <string name="info_from_server">Informácie zo servera: \'%s\'</string>
+ <string name="channel_name_userreq">Vstup od užívateľa je nutný</string>
+ <string name="channel_description_userreq">Pripojenie OpenVPN vyžaduje vstup používateľa, napr. Overenie dvoma faktormi
+
+ </string>
+ <string name="openurl_requested">Ak chcete pokračovať v autentifikácii VPN, otvorte webovú adresu</string>
+ <string name="state_auth_pending">Očakáva sa overenie</string>
+ <string name="external_authenticator">Externý autentifikátor</string>
+ <string name="configure">Nastaviť</string>
+ <string name="extauth_not_configured">Nie je nakonfigurovaný externý autorizátor</string>
+</resources>
diff --git a/main/src/ui/res/values-sl/arrays.xml b/main/src/ui/res/values-sl/arrays.xml
index 0aa0e57b..a229b4c9 100644
--- a/main/src/ui/res/values-sl/arrays.xml
+++ b/main/src/ui/res/values-sl/arrays.xml
@@ -17,9 +17,9 @@
<item>Zunanji ponudnik avtentikacije</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Nedoločeno</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Šifriranje (tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
diff --git a/main/src/ui/res/values-sl/strings.xml b/main/src/ui/res/values-sl/strings.xml
index 100b0fae..d348e40a 100644
--- a/main/src/ui/res/values-sl/strings.xml
+++ b/main/src/ui/res/values-sl/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">Geslo PKCS12</string>
<string name="file_select">Izberi &#8230;</string>
<string name="file_nothing_selected">Izbrati morate datoteko</string>
- <string name="useTLSAuth">Uporabi overitev TLS</string>
- <string name="tls_direction">Smer TLS</string>
<string name="ipv6_dialog_tile">Vnesite naslov IPv6/masko omrežja v obliki CIDR (npr. 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Vnesite naslov IPv4/masko omrežja v obliki CIDR (npr. 1.2.3.4/24)</string>
<string name="ipv4_address">Naslov IPv4</string>
@@ -67,8 +65,6 @@
<string name="remote_tlscn_check_title">Preveri ime gost. potrdila</string>
<string name="enter_tlscn_dialog">Določite preverjanje, ki naj se uporabi za preverjanje DN-a oddaljenega potrdila (npr. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de).\n\nDoločite celoten DN ali RDN (npr. openvpn.blinkt.de) ali predpono RDN-a za preverjanje.\n\nKadar uporabljate predpono RDN, se \"Strežnik\" primerja s \"Strežnik-1\" in \"Strežnik-2\".\n\nČe pustite besedilno polje prazno, bo RDN preverjen z imenom gostitelja.\n\nZa več podatkov glejte OpenVPN 2.3.1 + stran man v —verify-x509-name.</string>
<string name="enter_tlscn_title">Zadeva oddaljenega potrdila</string>
- <string name="tls_key_auth">Omogoči overitev ključa TLS</string>
- <string name="tls_auth_file">Datoteka overitve TLS</string>
<string name="pull_on_summary">Zahteva naslove IP, poti in časovne možnosti od strežnika.</string>
<string name="pull_off_summary">Nobeni podatki niso zahtevani od strežnika. Nastavitve morate določiti spodaj.</string>
<string name="use_pull">Dobi nast.</string>
@@ -200,8 +196,6 @@
<string name="getproxy_error">Napaka pri dobivanju nastavitev posredniškega strežnika: %s</string>
<string name="use_system_proxy">Uporabi sis. pos. str.</string>
<string name="use_system_proxy_summary">Za povezavo uporabi nastavitve celega sistema za posredniške strežnike HTTP/HTTPS.</string>
- <string name="onbootrestartsummary">OpenVPN bo povezal navedeni VPN, če je bil dejaven ob zagonu sistema. Preberite pogosta vprašanja o opozorilih glede povezav pred uporabo te možnosti na Androidu &lt; 5.0.</string>
- <string name="onbootrestart">Poveži ob zagonu</string>
<string name="ignore">Prezri</string>
<string name="restart">Ponovno zaženi</string>
<string name="restart_vpn_after_change">Spremembe nastavitev se bodo uporabile po ponovnem zagonu VPN-a. (Ponovno) zaženi VPN zdaj?</string>
@@ -256,7 +250,6 @@
<string name="encryption_cipher">Šifra</string>
<string name="packet_auth">Overitev paketov</string>
<string name="auth_dialog_title">Vnesite način overitve paketov</string>
- <string name="built_by">izgradil %s</string>
<string name="debug_build">razhroščevalna izgradnja</string>
<string name="official_build">uradna izgradnja</string>
<string name="make_selection_inline">Kopiraj v profil</string>
@@ -354,7 +347,6 @@
<string name="ab_tethering_44">Deljenje mobilnega interneta deluje, ko je VPN dejaven. Deljena povezava NE bo uporabila VPN-a.</string>
<string name="ab_kitkat_mss">Zgodnja različica KitKata je nastavila napačno vrednost MSS ob povezavah TCP (#61948). OpenVPN bo samodejno omogočil možnost mssfix, da zaobide ta hrošč.</string>
<string name="ab_proxy">Android bo še naprej uporabljal nastavitve posredniškega strežnika, ki so določene za mobilno povezavo/Wi-Fi, ko ni nastavljenih strežnikov DNS. OpenVPN za Android vas bo o tem opozoril v dnevniku.<p>Ko VPN nastavi strežnik DNS, Android ne bo uporabil posredniškega strežnika. API, ki nastavi posredniški strežnik za povezavo VPN, ne obstaja.</p></string>
- <string name="ab_lollipop_reinstall">Programi VPN lahko prenehajo delovati, ko se jih odstrani in ponovno namesti. Za podrobnosti glejte #80074.</string>
<string name="ab_not_route_to_vpn">IP nastavljenega odjemalca in IP-ji v njegovi maski omrežja se ne usmerijo v VPN. OpenVPN zaobide tega hrošča z izrecnim dodajanjem poti, ki ustreza IP-ju odjemalca in njegovi maski omrežja.</string>
<string name="ab_persist_tun">Odpiranje naprave TUN, ko je dejavna druga naprava, kar se uporablja za podporo vztrajnega TUN-a, sesuje storitve VPN na napravi. Za ponovno delovanje VPN-a je zahtevan ponovni zagon. OpenVPN za Android bo poizkusil ponovno odpreti napravo TUN in če je zelo potrebno, pred tem zaprl trenutni TUN, da se izogne sesutju. To lahko privede do kratkega postanka, kjer se paketi pošljejo preko običajne povezave. Tudi pri tem zaobidenju se storitve VPN včasih sesujejo in je zahtevan ponovni zagon naprave.</string>
<string name="ab_secondary_users">VPN sploh ne deluje za sekundarne uporabnike.</string>
@@ -362,7 +354,6 @@
<string name="ab_vpn_reachability_44">Preko VPN-a so dosegljivi samo cilji, ki so dosegljivi tudi brez njega. VPN-i IPv6 sploh ne delujejo.</string>
<string name="ab_only_cidr_title">Poti brez načina CIDR</string>
<string name="ab_proxy_title">Vedenje posredniškega strežnika za VPN-e</string>
- <string name="ab_lollipop_reinstall_title">Ponovno nameščenje programov VPN</string>
<string name="version_upto">%s in prejšnji</string>
<string name="copy_of_profile">Kopija %s</string>
<string name="ab_not_route_to_vpn_title">Pot do nastavljenega naslova IP</string>
diff --git a/main/src/ui/res/values-sr-rSP/arrays.xml b/main/src/ui/res/values-sr-rSP/arrays.xml
new file mode 100644
index 00000000..0c58aa65
--- /dev/null
+++ b/main/src/ui/res/values-sr-rSP/arrays.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>Сертификати</item>
+ <item>ПКЦС12 Датотека</item>
+ <item>Андроид Потврда</item>
+ <item>Корисничко име / Лозинка</item>
+ <item>Статични кључеви</item>
+ <item>Корисник/ПВ + сертификати</item>
+ <item>Корисник/ПВ + ПКЦС12 </item>
+ <item>Корисник/ПВ + Андроид</item>
+ <item>Екстерни пружалац услуге аутентификације</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
+ <item>Шифровање (--tls-crypt)</item>
+ <item>TLS Crypt V2</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Прекини везу, заборави лозинку</item>
+ <item>Перкини везу, задржи лозинку</item>
+ <item>Занемарите, покушајте</item>
+ </string-array>
+ <string-array name="compat_mode">
+ <item>Модерне подразумеване вредности</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x peers</item>
+ <item>OpenVPN 2.3.x and older peers</item>
+ </string-array>
+</resources>
diff --git a/main/src/ui/res/values-sr-rSP/plurals.xml b/main/src/ui/res/values-sr-rSP/plurals.xml
new file mode 100644
index 00000000..4c9f7e79
--- /dev/null
+++ b/main/src/ui/res/values-sr-rSP/plurals.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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/main/src/ui/res/values-sr-rSP/strings.xml b/main/src/ui/res/values-sr-rSP/strings.xml
new file mode 100644
index 00000000..f860cc1f
--- /dev/null
+++ b/main/src/ui/res/values-sr-rSP/strings.xml
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ 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="app">ОпенВПН за Андроид</string>
+ <string name="address">IPv4 адреса:</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="client_no_certificate">Без сертификата</string>
+ <string name="client_certificate_title">Сертификат клијента</string>
+ <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="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="ipv6_dialog_tile">Унесите ИПв6 адресу / мрежну маску у ЦИДР формату (нпр. 2000: дд :: 23/64)</string>
+ <string name="ipv4_dialog_title">Унесите ИПв4 адресу / мрежну маску у ЦИДР формату (нпр. 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4 адреса</string>
+ <string name="ipv6_address">IPv6 адреса</string>
+ <string name="custom_option_warning">Унесите прилагођене опције ОпенВПН. Користите опрезно. Такође имајте на уму да многа ОпенВПН подешавања не могу да буду подржана дизајном ВПНСеттингс. Ако мислите да недостаје важна опција, обратите се аутору</string>
+ <string name="auth_username">Username (leave empty for no auth)</string>
+ <string name="auth_pwquery">Лозинка</string>
+ <string name="static_keys_info">За статичку конфигурацију користиће се ТЛС Аутх кључеви као статички кључеви</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="profilename">Име профила</string>
+ <string name="no_keystore_cert_selected">Морате да изаберете кориснички сертификат</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">Спајање на ВПН&#8230;</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">Прекини ВПН везу</string>
+ <string name="clear_log">Обриши дневник</string>
+ <string name="title_cancel">Откажи потврду</string>
+ <string name="cancel_connection_query">Прекините повезани ВПН / откажите покушај повезивања?</string>
+ <string name="remove_vpn">Уклоните ВПН</string>
+ <string name="check_remote_tlscert">Провера да ли сервер користи сертификат са екстензијама ТЛС сервера (--ремоте-церт-тлс сервер)</string>
+ <string name="check_remote_tlscert_title">Очекујте ТЛС сертификат</string>
+ <string name="remote_tlscn_check_summary">Провјерава субјект цертификата удаљеног сервера ДН</string>
+ <string name="remote_tlscn_check_title">Провера сертификата хоста </string>
+ <string name="enter_tlscn_dialog">Наведите проверу која се користи за верификацију удаљеног ДН цертификата (нпр. Ц = ДЕ, Л = Падерборн, ОУ = авијски ИП носачи, ЦН = опенвпн.блинкт.де)\n\nНаведите комплетну ДН или РДН (опенвпн.блинкт.де у пример) или РДН префикс за верификацију.\n\nКада користите РДН префикс „Сервер“ се подудара са „Сервер-1“ и „Сервер-2“\n\nАко текстуално поље остави празно, РДН ће проверити у односу на име главног сервера.\n\nЗа више детаља погледајте ОпенВПН 2.3.1+ манпаге под —верифи-к509-наме</string>
+ <string name="enter_tlscn_title">Удаљени предмет цертификата</string>
+ <string name="pull_on_summary">Захтијева ИП адресе, руте и опције времена од сервера.</string>
+ <string name="pull_off_summary">Информације се не захтевају од сервера. Подешавања морају бити наведена у наставку.</string>
+ <string name="use_pull">Повуците Подешавања</string>
+ <string name="dns">ДНС</string>
+ <string name="override_dns">Препишиј ДНС подешавања од стране сервера</string>
+ <string name="dns_override_summary">Користите своје ДНС сервере</string>
+ <string name="searchdomain">претражи домен</string>
+ <string name="dns1_summary">ДНС сервер који се користи.</string>
+ <string name="dns_server">ДНС Сервер</string>
+ <string name="secondary_dns_message">Секундарни ДНС сервер који се користи ако се не може доћи до нормалног ДНС сервера.</string>
+ <string name="backup_dns">РЕзервни ДНС сервер</string>
+ <string name="ignored_pushed_routes">Занемарите потиснуте руте</string>
+ <string name="ignore_routes_summary">Занемари усмеравање које је сервер послао.</string>
+ <string name="default_route_summary">Преусмерава сав промет преко ВПН-а</string>
+ <string name="use_default_title">Користите подразумевану руту</string>
+ <string name="custom_route_message">Унесите прилагођене руте. Унесите одредиште само у ЦИДР формату. \"10.0.0.0/8 2002 :: / 16\" би усмеравао мреже 10.0.0.0/8 и 2002 :: / 16 преко ВПН-а.</string>
+ <string name="custom_route_message_excluded">Руте које НЕ МОГУ бити усмерене преко ВПН-а. Користите исту синтаксу као и за укључене руте.</string>
+ <string name="custom_routes_title">Прилагођене руте</string>
+ <string name="custom_routes_title_excluded">Изузете мреже</string>
+ <string name="log_verbosity_level">Ниво исписа дневника</string>
+ <string name="float_summary">Омогућава аутентификоване пакете са било којег ИП-а</string>
+ <string name="float_title">Дозволи плутајући сервер</string>
+ <string name="custom_options_title">Прилагођене опције</string>
+ <string name="edit_vpn">Измените ВПН поставке</string>
+ <string name="remove_vpn_query">Уклонити ВПН профил \'%s\'?</string>
+ <string name="tun_error_helpful">На неким прилагођеним ИЦС сликама дозвола за укључење / дев / тун можда није у реду или је модул тун потпуно изостао. За ЦМ9 слике испробајте опцију исправка власништва под општим подешавањима</string>
+ <string name="tun_open_error">Отварање интерфејса тун није успело</string>
+ <string name="error">"Грешка:"</string>
+ <string name="clear">Очисти</string>
+ <string name="last_openvpn_tun_config">Отварање тун интерфејса:</string>
+ <string name="local_ip_info">Локалне ИПв4: %1$s/%2$d за ИПв6: %3$s МТУ: %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">Инсталиране ВпнСервице руте: %1$s %2$s</string>
+ <string name="ip_not_cidr">Добијене информације о интерфејсу %1$s и %2$s, под претпоставком да је друга адреса удаљена вршњачка адреса. Кориштење / 32 мрежне маске за локални ИП. Режим ОпенВПН-а је \"%3$s\".</string>
+ <string name="route_not_cidr">Немају смисла %1$s и %2$s као ИП руту са ЦИДР мрежном маском, користећи / 32 као мрежну маску.</string>
+ <string name="route_not_netip">Исправљена роуте %1$s/%2$s до %3$s/%2$s</string>
+ <string name="keychain_access">Није могуће приступити цертификатима Андроид Keychain. Ово може бити узроковано надоградњом управљачког софтвера или враћањем сигурносне копије поставки апликације / апликације. Уредите ВПН и поново изаберите сертификат под основним подешавањима да бисте поново створили дозволу за приступ сертификату.</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">ИЦС ОпенВПН датотека записа</string>
+ <string name="copied_entry">Копиран унос дневника у меморију</string>
+ <string name="tap_mode">Тап начин рада</string>
+ <string name="faq_tap_mode">Тап начин рада није могућ са некоријенским ВПН АПИ-јем. Стога ова апликација не може пружити подршку за славину</string>
+ <string name="tap_faq2">Опет? Шалиш се? Не, режим додирања заиста није подржан, а слање више порука с питањем да ли ће бити подржано неће помоћи.</string>
+ <string name="tap_faq3">Трећи пут? Заправо, могло би се написати емулатор такта заснован на туну који би додао информације о слоју2 о слању и информацији о слоју2 на пријему. Али овај емулатор славине такође би морао да имплементира АРП и евентуално ДХЦП клијент. Нисам свестан да нико ради било који посао у овом правцу. Контактирајте ме ако желите да започнете кодирање на овоме.</string>
+ <string name="faq">Често постављана питања</string>
+ <string name="copying_log_entries">Копирање уноса у дневник</string>
+ <string name="faq_copying">Да бисте копирали унос једног дневника, притисните и држите ставку дневника. За копирање / слање целог дневника користите опцију Пошаљи дневник. Употребите дугме менија хардвера ако тастер није видљив у ГУИ-ју.</string>
+ <string name="faq_shortcut">Пречица за почетак</string>
+ <string name="faq_howto_shortcut">Можете да поставите пречицу за покретање ОпенВПН-а на радној површини. У зависности од програма почетног екрана, мораћете да додате пречицу или виџет.</string>
+ <string name="no_vpn_support_image">Ваша слика не подржава АПИ ВПНСервице, извините :(</string>
+ <string name="encryption">Шифровање</string>
+ <string name="cipher_dialog_title">Унесите методу шифровања</string>
+ <string name="auth_dialog_message">Унесите проверу идентитета који се користи за ОпенВПН. Оставите празно да бисте користили подразумевани преглед.</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">Одбија да отвори тун уређај без ИП података</string>
+ <string name="menu_import">Увези профил из овпн датотеке</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">"Пошто је ОпенВПН безбедносно осетљив, неколико напомена о безбедности је приметно. Сви подаци на сдцард картици су инхерентно несигурни. Свака апликација их може прочитати (на пример, овај програм не захтева посебна права на СД картицу). Подаци ове апликације могу се читати само помоћу саме апликације Употребом опције увоза за цацерт / церт / тастер у дијалошком оквиру датотека подаци се чувају у ВПН профилу. ВПН профиле су доступни само овом апликацијом. (Не заборавите да обришете копије на сд-у картица након тога). Иако су доступни само овом апликацијом, подаци су и даље нешифрирани. Укорјењивањем телефона или другим експлоатацијама могуће је преузимање података. Сачуване лозинке похрањују се и у обичан текст. За пкцс12 датотеке топло се препоручује да их увезете у продавницу тастера са андроидом. "</string>
+ <string name="import_vpn">Увоз</string>
+ <string name="broken_image_cert_title">Погрешка при приказивању избора сертификата</string>
+ <string name="broken_image_cert">Добио сам изузетак који покушава да прикаже дијалог за избор сертификата Андроид 4.0+. То се никада не би требало догодити јер је ово стандардна функција Андроида 4.0+. Можда вам је покренута подршка за Андроид РОМ за чување сертификата</string>
+ <string name="ipv4">ИПв4</string>
+ <string name="ipv6">ИПв6</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;Званични ХТЦ слике је познато да имају чудан рутирање проблем изазива саобраћај не тече кроз тунел (Види такође &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Издање 18&lt;/a&gt; у Буг Трацкер.)&lt;/p&gt;&lt;p&gt;Старији званичне СОНИ слике из Кспериа Арц С и Кспериа Раи су пријављене у недостаје ВПНСервице у потпуности са слике. (Погледајте такође &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;издање 29&lt;/a&gt; у програму за праћење грешака.)&lt;/p&gt;&lt;p&gt;На прилагођеним сликама израде тун модул можда недостаје или су права / дев / тун можда погрешна. Неким ЦМ9 сликама је потребна опција „Поправи власништво“ под „Омогућени уређаји за хаке“.&lt;/p&gt;&lt;p&gt;Најважније: Ако ваш уређај има покварену Андроид слику, пријавите то свом продавцу. Што више људи пријави проблем продавцу, већа је вероватноћа да ће га решити.&lt;/p&gt;</string>
+ <string name="pkcs12_file_encryption_key">ПКЦС12 кључ за шифровање датотека</string>
+ <string name="private_key_password">Лозинка приватног кључа</string>
+ <string name="password">Лозинка</string>
+ <string name="file_icon">икона датотеке</string>
+ <string name="tls_authentication">ТЛС Аутентификација / Шифрирање</string>
+ <string name="generated_config">Генерисана конфигурација</string>
+ <string name="generalsettings">Подешавања</string>
+ <string name="owner_fix_summary">Покушава да постави власника / дев / тун на систем. Неким ЦМ9 сликама је ово потребно да би ВПНСервице АПИ радио. Захтијева роот.</string>
+ <string name="owner_fix">Поправите власништво над / дев / тун</string>
+ <string name="generated_config_summary">Приказује генерисану ОпенВПН конфигурациону датотеку</string>
+ <string name="edit_profile_title">Уређивање \"%s\"</string>
+ <string name="building_configration">Изградња конфигурације&#8230;</string>
+ <string name="netchange_summary">Ако укључите ову опцију, поново ћете се повезати ако се промени стање мреже (нпр. ВиФи у / са мобилног)</string>
+ <string name="netchange">Поново се повежите на промену мреже</string>
+ <string name="netstatus">Статус мреже: %s</string>
+ <string name="extracahint">ЦА церт се обично враћа из Андроид продавнице тастера. Наведите засебан цертификат ако добијете грешке у верификацији сертификата.</string>
+ <string name="select_file">Изабрати</string>
+ <string name="keychain_nocacert">Током читања са Андроид тастатуре није враћен ЦА цертификат. Аутентификација вероватно неће успети.</string>
+ <string name="show_log_summary">Приказује прозор дневника при повезивању. Прозору дневника увијек се може приступити из статуса обавијести.</string>
+ <string name="show_log_window">Прикажи прозор дневника</string>
+ <string name="mobile_info">%10$s %9$s ради на %3$s %1$s (%2$s), Андроид %6$s (%7$s) АПИ %4$d, АБИ %5$s, (%8$s)</string>
+ <string name="error_rsa_sign">Погрешка приликом потписивања са Андроид типком %1$s: %2$s</string>
+ <string name="error_extapp_sign">Грешка приликом потписивања са апликацијом за екстерну провјеру аутентичности (%3$s): %1$s: %2$s</string>
+ <string name="faq_system_dialogs">Упозорење ВПН везе која вам говори да ова апликација може пресрести сав саобраћај који систем намеће да би спречио злоупотребу ВПНСервице АПИ-ја.\nАндроид систем намеће и обавештење о ВПН вези (симбол кључа) ради сигнализације текуће ВПН везе. На неким сликама ово обавештење репродукује звук.\nАндроид је представио ове дијалошке системе ради ваше сигурности и осигурао да их се не може заобићи. (На неким сликама ово нажалост укључује звук обавештења)</string>
+ <string name="faq_system_dialogs_title">Звук упозорења и обавештења о вези</string>
+ <string name="translationby">Енглески превод Arne Schwabe&lt;arne@rfc2549.org&gt;</string>
+ <string name="ipdns">IP и DNS</string>
+ <string name="basic">Основно</string>
+ <string name="routing">Усмеравање</string>
+ <string name="obscure">Замените ОпенВПН поставке. Нормално није потребан.</string>
+ <string name="advanced">Напредно</string>
+ <string name="export_config_title">ИЦС Опенвпн конфигурација</string>
+ <string name="warn_no_dns">ДНС сервери се не користе. Резолуција имена можда неће радити. Размислите о подешавању прилагођених ДНС сервера. Такође имајте на уму да ће Андроид наставити да користи подешавања прокија која су наведена за вашу мобилну / Ви-Фи везу када нису постављени ДНС сервери.</string>
+ <string name="dns_add_error">Није могуће додати ДНС сервер „%1$s“, систем га је одбацио: %2$s</string>
+ <string name="ip_add_error">Није могуће конфигурисати ИП адресу \"%1$s\", систем је одбацио: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;Набавите исправну конфигурацију (тестирану на рачунару или преузмите од свог добављача / организације)&lt;/p&gt;&lt;p&gt;Ако се ради о једној датотеци без додатних пем / пкцс12 датотека, можете је сами послати е-поштом и отворити прилог. Ако имате више датотека ставите их на своју СД картицу.&lt;/p&gt;&lt;p&gt;Кликните на прилог е-поште / Користите икону мапе на впн листи да бисте увезли конфигурациону датотеку.&lt;/p&gt;&lt;p&gt;Ако постоје грешке у вези датотека које недостају, ставите датотеке које недостају на вашу СД картицу.&lt;/p&gt;&lt;p&gt;Кликните на симбол за спремање да бисте увели ВПН у своју ВПН листу&lt;/p&gt;&lt;p&gt;Повежите ВПН кликом на име ВПН&lt;/p&gt;&lt;p&gt;Ако у дневнику постоје грешке или упозорења, покушајте да схватите упозорења / грешке и покушајте да поправите их&lt;/p&gt; </string>
+ <string name="faq_howto_title">Брзо покретање</string>
+ <string name="setting_loadtun_summary">Пре покушаја повезивања покушајте да учитате кернел модул тун.ко. Потребни су укоријењени уређаји.</string>
+ <string name="setting_loadtun">Учитавање тун модула</string>
+ <string name="importpkcs12fromconfig">Увезите ПКЦС12 из конфигурације у Андроид Keystore</string>
+ <string name="getproxy_error">Грешка при добијању подешавања прокија: %s</string>
+ <string name="using_proxy">Коришћење проксија %1$s %2$s</string>
+ <string name="use_system_proxy">Користи системки прокси</string>
+ <string name="use_system_proxy_summary">Користите конфигурацију широм система за повезивање ХТТП / ХТТПС проксија.</string>
+ <string name="ignore">Игнориши</string>
+ <string name="restart">Рестарт</string>
+ <string name="restart_vpn_after_change">Промјене конфигурације примјењују се након поновног покретања ВПН-а. (Поново) покренути ВПН сада?</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">Ако је Андроид под притиском системске меморије (РАМ-а), апликације и услуга који тренутно нису потребни уклањају се из активне меморије. Овим се прекида тренутна ВПН веза. Да би се осигурало да веза / ОпенВПН опстаје, сервис ради са већим приоритетом. Да би се покренуо са већим приоритетом, апликација мора приказати обавештење. Систем наметне кључну икону обавештења како је описано у претходном уносу ФАК-а. То се не рачуна као обавештење о апликацији у сврху покретања са већим приоритетом.</string>
+ <string name="no_vpn_profiles_defined">Није дефинисан ВПН профил.</string>
+ <string name="add_new_vpn_hint">Употријебите икону &lt;img src=\"ic_menu_add\"/&gt; да бисте додали нови ВПН</string>
+ <string name="vpn_import_hint">Употријебите икону &lt;img src=\"ic_menu_archive\"/&gt; да бисте увезли постојећи (.овпн или .цонф) профил са своје СДЦард.</string>
+ <string name="faq_hint">Обавезно погледајте и ФАК. Постоји брзи водич за почетак.</string>
+ <string name="faq_routing_title">Усмеравање / конфигурација интерфејса</string>
+ <string name="faq_routing">Усмеравање и конфигурација интерфејса не врши се путем традиционалних наредби ифцонфиг / роуте већ помоћу ВПНСервице АПИ-ја. То резултира другачијом конфигурацијом усмјеравања него у осталим ОС-овима. \nКонфигурација ВПН тунела састоји се од ИП адресе и мрежа које би требале бити усмерене преко овог интерфејса. Нарочито, није потребна или потребна адреса пеер партнера или адреса приступника. Нису потребне ни посебне руте за достизање ВПН сервера (на пример, додато када се користи гатеваи за преусмеравање). Апликација ће после тога занемарити ове поставке приликом увоза конфигурације. Апликација осигурава помоћу АПИ-ја ВПНСервице да веза са сервером није преусмерена кроз ВПН тунел.\nВПНСервице АПИ не дозвољава специфицирање мрежа које не би требале бити усмјерене путем ВПН-а. Као заобилазно решење, апликација покушава открити мреже које не би требале бити преусмерене преко тунела (нпр. Роуте кккк ииии нет_гатеваи) и израчунава скуп рута које искључују ове руте како би опонашале понашање других платформи. Прозори дневника приказују конфигурацију ВПНС услуге након успостављања везе.\nИза кулиса: Андроид 4.4+ користи усмјеравање правила. Кориштење роуте / ифцонфиг неће приказивати инсталиране руте. Уместо тога, користите ип правило, иптаблес -т мангле -Л</string>
+ <string name="persisttun_summary">Не враћајте се на ВПН везу кад се ОпенВПН поново повеже.</string>
+ <string name="persistent_tun_title">Упорни тун</string>
+ <string name="openvpn_log">ОпенВПН дневник</string>
+ <string name="import_config">Увези ОпенВПН конфигурацију</string>
+ <string name="battery_consumption_title">Потрошња батерије</string>
+ <string name="baterry_consumption">У мојим личним тестовима главни разлог велике потрошње ОпенВПН батерије су кеепаливе пакети. Већина ОпенВПН сервера има конфигурациону директиву попут \'кеепаливе 10 60\' због које клијент и сервер размењују кеепаливе пакете сваких десет секунди. &lt;p&gt; Иако су ови пакети мали и не користе много промета, они држе мобилну радио мрежу заузетом и повећавају потрошњу енергије. (Погледајте такође &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;Радио Стате Мацхине | Андроид Девелоперс&lt;/a&gt;) &lt;p&gt; Ове поставке чувања програма не можете променити на клијенту. Само системски администратор ОпенВПН-а може да промени подешавање. &lt;p&gt; Нажалост, коришћење кеепаливе-а већег од 60 секунди са УДП-ом може проузроковати да неки НАТ приступници испусте везу због времена неактивности. Кориштење ТЦП-а с дуготрајним задржавањем у животу дјелује, али тунелирање ТЦП-а преко ТЦП-а дјелује изузетно лоше на везама са великим губитком пакета. (Погледајте &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;зашто је ТЦП преко ТЦП-а лоша идеја&lt;/a&gt;)</string>
+ <string name="faq_tethering">Функција Андроид Тетхеринг (преко ВиФи, УСБ или Блуетоотх везе) и ВПНСервице АПИ (који користи овај програм) не раде заједно. За више детаља погледајте број &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;# 34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">ВПН и Тетхеринг</string>
+ <string name="connection_retries">Покушаји везе</string>
+ <string name="reconnection_settings">Подешавања поновне везе</string>
+ <string name="connectretrymessage">Број секунди за чекање између покушаја повезивања.</string>
+ <string name="connectretrywait">Секунде између веза</string>
+ <string name="minidump_generated">ОпенВПН се неочекивано срушио. Размислите о употреби опције Минидумп за слање у главном менију</string>
+ <string name="send_minidump">Пошаљите Минидумп програмеру</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_assign_ip">Додељивање ИП адреса</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_tcp_connect">Повезивање (ТЦП)</string>
+ <string name="state_auth_failed">Аутентификација није успела</string>
+ <string name="state_nonetwork">Чекајући употребљиве мреже</string>
+ <string name="state_waitorbot">Чека да се Орбот покрене</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="packet_auth">Аутентификација пакета</string>
+ <string name="auth_dialog_title">Унесите начин провјере аутентичности пакета</string>
+ <string name="debug_build">дебуг буилд</string>
+ <string name="official_build">званична градња</string>
+ <string name="make_selection_inline">Копирајте у профил</string>
+ <string name="crashdump">Crashdump</string>
+ <string name="add">Додати</string>
+ <string name="send_config">Пошаљите конфигурациону датотеку</string>
+ <string name="complete_dn">Комплетна ДН</string>
+ <string name="remotetlsnote">Увезена конфигурација користила је стару ДЕПРЕЦАТЕД тлс-ремоте опцију која користи други ДН формат.</string>
+ <string name="rdn">РДН (опште име)</string>
+ <string name="rdn_prefix">РДН префикс</string>
+ <string name="tls_remote_deprecated">тлс-даљински (ДЕПРЕЦАТЕД)</string>
+ <string name="help_translate">Можете помоћи преводу ако посетите хттп://цровдин.нет/пројецт/ицс-опенвпн/инвите</string>
+ <string name="prompt">%1$s покушаја контроле %2$s</string>
+ <string name="remote_warning">Настављајући, апликацији дајете дозволу за потпуну контролу ОпенВПН-а за Андроид и пресретање целог мрежног саобраћаја.<b>НЕ прихватајте ако не верујете апликацији.</b> У супротном, ризикујете да ваши подаци буду угрожени злонамјерним софтвером. \"</string>
+ <string name="remote_trust">Верујем овој апликацији.</string>
+ <string name="no_external_app_allowed">Ниједној апликацији није дозвољено коришћење екстерног АПИ-ја</string>
+ <string name="allowed_apps">Дозвољене апликације: %s</string>
+ <string name="clearappsdialog">Избришите листу дозвољених спољних апликација?\nТренутна листа дозвољених апликација:\n\n%s</string>
+ <string name="screenoff_summary">Паузирајте ВПН кад је екран искључен и мање од 64 кБ пренесених података у 60-има. Када је омогућена опција „Упорни Тун“ паузирање ВПН-а оставиће ваш уређај без НО мреже. Без опције \"Трајни Тун\" уређај неће имати ВПН везу / заштиту.</string>
+ <string name="screenoff_title">Паузирајте ВПН везу након искључивања екрана</string>
+ <string name="screenoff_pause">Паузирање везе у стању искљученог екрана: мање од %1$s у %2$sс</string>
+ <string name="screen_nopersistenttun">Упозорење: Стални тун није омогућен за овај ВПН. Саобраћај ће користити нормалну интернетску везу када је екран искључен.</string>
+ <string name="save_password">Сачувај лозинку</string>
+ <string name="pauseVPN">Паузирајте ВПН</string>
+ <string name="resumevpn">Уклоните ВПН</string>
+ <string name="state_userpause">ВПН пауза коју тражи корисник</string>
+ <string name="state_screenoff">ВПН је паузиран - екран искључен</string>
+ <string name="device_specific">Специфичности уређаја Хацкс</string>
+ <string name="cannotparsecert">Подаци сертификата не могу да се прикажу</string>
+ <string name="appbehaviour">Понашање апликације</string>
+ <string name="vpnbehaviour">ВПН понашање</string>
+ <string name="allow_vpn_changes">Допусти промене ВПН профила</string>
+ <string name="hwkeychain">Хардваре Кеисторе:</string>
+ <string name="permission_icon_app">Икона апликације која покушава да користи ОпенВПН за Андроид</string>
+ <string name="faq_vpndialog43">"Почевши од Андроида 4.3, потврда ВПН-а заштићена је од\" преклапања апликација \". То резултира тиме да дијалог не реагује на додир уноса. Ако имате апликацију која користи слојеве, то може проузроковати ово понашање. Ако нађете увредљиву апликацију, контактирајте аутора ове апликације. Овај проблем погађа све ВПН апликације на Андроид 4.3 и новијим верзијама. Такође погледајте &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;издање 185&lt;a&gt; за додатне детаље "</string>
+ <string name="faq_vpndialog43_title">Впн дијалог за потврду</string>
+ <string name="donatePlayStore">Можете ми послати и донацију са Play Store:</string>
+ <string name="thanks_for_donation">Хвала на донацији %s!</string>
+ <string name="logCleared">Дневник је обрисан.</string>
+ <string name="show_password">Покажи лозинку</string>
+ <string name="keyChainAccessError">Грешка приступа КеиЦхаин: %s</string>
+ <string name="timestamp_short">Кратко</string>
+ <string name="timestamp_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">Впн статус</string>
+ <string name="logview_options">Погледајте опције</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="faq_system_dialog_xposed">Ако сте уградили свој Андроид уређај, можете на свој ризик инсталирати &lt;a href=\"http://xposed.info/\"&gt;Кспосед оквир&lt;/a&gt; и модул&lt;/a&gt; потврду &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;ВПН дијалога \"</string>
+ <string name="full_licenses">Потпуне лиценце</string>
+ <string name="blocklocal_summary">Мреже директно повезане с локалним сучељима неће бити усмјерене преко ВПН-а. Ако искључите ову опцију, сав промет намењен локалним мрежама преусмерит ће на ВПН.</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="openvpn_is_no_free_vpn">Да бисте користили ову апликацију, потребан вам је ВПН провајдер / ВПН гатеваи који подржава ОпенВПН (често га обезбеђује ваш послодавац). Погледајте хттп://цоммунити.опенвпн.нет/ за више информација о ОпенВПН и како да подесите сопствени ОпенВПН сервер.</string>
+ <string name="import_log">Дневник увоза:</string>
+ <string name="ip_looks_like_subnet">Наведена Впн топологија „%3$s“, али ифцонфиг %1$s %2$s више личи на ИП адресу са мрежном маском. Под претпоставком топологије \"подмреже\".</string>
+ <string name="mssfix_invalid_value">Вредност преписа МСС мора да буде цели број између 0 и 9000</string>
+ <string name="mtu_invalid_value">Поништавање вредности МТУ мора да буде цели број између 64 и 9000</string>
+ <string name="mssfix_value_dialog">Најавите ТЦП сесијама које трче преко тунела да би требале ограничити величине својих пакета за слање тако да након што их ОпенВПН инкапсулира, резултирајућа величина УДП пакета коју ОпенВПН шаље свом пееру неће прелазити овај број бајтова. (подразумевано је 1450)</string>
+ <string name="mssfix_checkbox">Превазилазите МСС вредност ТЦП корисног оптерећења</string>
+ <string name="mssfix_dialogtitle">Подесите МСС ТЦП корисног оптерећења</string>
+ <string name="client_behaviour">Клијентско понашање</string>
+ <string name="clear_external_apps">Очистите дозвољене спољне апликације</string>
+ <string name="loading">Учитавање&#8230;</string>
+ <string name="allowed_vpn_apps_info">Дозвољене ВПН апликације: %1$s</string>
+ <string name="disallowed_vpn_apps_info">Забрањене ВПН апликације: %1$s</string>
+ <string name="app_no_longer_exists">Пакет %s више није инсталиран, уклања га са листе дозвола / забране апликације</string>
+ <string name="vpn_disallow_radio">ВПН се користи за све апликације, осим изабраних</string>
+ <string name="vpn_allow_radio">ВПН се користи само за одабране апликације</string>
+ <string name="vpn_allow_bypass">Дозволи апликацијама да заобиђу ВПН</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">ТЛС подешавања</string>
+ <string name="no_remote_defined">Није дефинисано даљинско</string>
+ <string name="duplicate_vpn">Дупликат ВПН профила</string>
+ <string name="duplicate_profile_title">Умножавање профила: %s</string>
+ <string name="show_log">Прикажи логовање</string>
+ <string name="faq_android_clients">Постоји више ОпенВПН клијената за Андроид. Најчешћи су ОпенВПН за Андроид (овај клијент), ОпенВПН Цоннецт и ОпенВПН подешавања.&lt;p&gt;Клијенти се могу груписати у две групе: ОпенВПН за Андроид и ОпенВПН Цоннецт користе званични ВПНСервице АПИ (Андроид 4.0+) и не захтевају никакав роот и ОпенВПН подешавања која користи роот.&lt;p&gt;ОпенВПН за Андроид је клијент отвореног кода који је развио Арне Сцхвабе. Намењен је напреднијим корисницима и нуди многа подешавања и могућност увоза профила из датотека и подешавања / промене профила унутар апликације. Клијент се заснива на заједничкој верзији ОпенВПН-а. Заснован је на изворном коду ОпенВПН 2.к. Овај клијент се може сматрати полу службеним клијентом заједнице. &lt;p&gt;ОпенВПН Цоннецт није клијент отвореног кода који је развио ОпенВПН Тецхнологиес, Инц. Клијент је разведен као клијент за општу употребу и више је усмерен на просечног корисника и омогућава увоз ОпенВПН профила. Овај клијент је заснован на поновној имплементацији ОпенВПН протокола ОпенВПН Ц ++ (Ово је било потребно да би ОпенВПН Тецхнологиес, Инц могао да објави иОС ОпенВПН апликацију). Овај клијент је званични клијент ОпенВПН технологија. &lt;p&gt; ОпенВПН поставке су најстарије од клијената, а такође и корисничко сучеље за ОпенВПН отвореног кода. За разлику од ОпенВПН-а за Андроид, он захтева роот и не користи ВПНСервице АПИ. Не зависи од Андроид 4.0+</string>
+ <string name="faq_androids_clients_title">Разлике између клијената ОпенВПН Андроид</string>
+ <string name="ignore_multicast_route">Занемаривање руте за вишеструко слање: %s</string>
+ <string name="ab_only_cidr">Андроид подржава само ЦИДР руте до ВПН-а. Пошто се руте које нису ЦИДР готово никада не користе, ОпенВПН за Андроид ће користити а / 32 за руте које нису ЦИДР и издати упозорење.</string>
+ <string name="ab_tethering_44">Тетхеринг ради док је ВПН активан. Привезана веза НЕ користи ВПН.</string>
+ <string name="ab_kitkat_mss">Рана верзија КитКат-а поставила је погрешну МСС вредност на ТЦП везама (# 61948). Покушајте да омогућите опцију мссфик да заобиђете ову грешку.</string>
+ <string name="ab_proxy">Андроид ће наставити да користи подешавања прокија која су одређена за мобилну / Ви-Фи везу када нису постављени ДНС сервери. ОпенВПН за Андроид ће вас упозорити на то у дневнику.<p>Када ВПН постави ДНС сервер, Андроид неће користити проки. Нема АПИ-ја за постављање прокија за ВПН везу.</p></string>
+ <string name="ab_not_route_to_vpn">Конфигурирани клијентски ИП и ИП-ови у његовој мрежној маски не преусмјеравају се на ВПН. ОпенВПН ради око ове грешке експлицитним додавањем руте која нагриза клијентову ИП адресу и њену мрежну маску</string>
+ <string name="ab_persist_tun">Отварање тун уређаја док је активан још један тун уређај, који се користи за подршку трајног подешавања, руши ВПНС услуге на уређају. За поновно покретање ВПН-а потребно је поновно покретање. ОпенВПН за Андроид покушава да избегне поновно отварање тун уређаја и ако је заиста потребан, прво затвара тренутни ТУН пре отварања новог ТУН уређаја како не би дошло до рушења. Ово може довести до кратког прозора где се пакети шаљу преко не-ВПН везе. Чак и уз ово решење ВПНСервицес се понекад руши и захтева поновно покретање уређаја.</string>
+ <string name="ab_secondary_users">ВПН не ради уопште за секундарне кориснике.</string>
+ <string name="ab_kitkat_reconnect">"Више корисника пријављује да се мобилна веза / веза за пренос података често прекида док се користи ВПН апликација. Чини се да понашање дјелује само на неке комбинације мобилног провајдера / уређаја и за сада није могуће утврдити узрок / заобилажење грешке."</string>
+ <string name="ab_vpn_reachability_44">До одредишта се може доћи преко ВПН-а који је доступан без ВПН-а. ИПв6 ВПН-ови уопште не раде.</string>
+ <string name="ab_only_cidr_title">Не ЦИДР руте</string>
+ <string name="ab_proxy_title">Прокси понашање за ВПН-ове</string>
+ <string name="version_upto">%s и раније</string>
+ <string name="copy_of_profile">Копија од %s</string>
+ <string name="ab_not_route_to_vpn_title">Пут до конфигурисане ИП адресе</string>
+ <string name="ab_kitkat_mss_title">Погрешна МСС вредност за ВПН везу</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">Персист тун мод</string>
+ <string name="version_and_later">%s и касније</string>
+ <string name="tls_cipher_alert_title">Веза није успела са ССЛ23_ГЕТ_СЕРВЕР_ХЕЛЛО: неуспех при руковању сслв3 упозорењем</string>
+ <string name="tls_cipher_alert">Новији ОпенВПН за верзије Андроида (0.6.29 / март 2015.) користе сигурнију подразумевану вредност за дозвољене шифарске скупове (тлс-ципхер \"ДЕФАУЛТ:! ЕКСП:! ПСК:! СРП:! КРСА\"). Нажалост, изостављање мање сигурних шифарских пакета и извоз шифарских пакета, посебно изостављање шифарских пакета који не подржавају Перфецт Форвард Сецреци (Диффие-Хеллман) узрокује неке проблеме. Ово је обично узроковано добронамерним, али лоше изведеним покушајем да се ојача ТЛС сигурност постављањем тлс-ципхера на сервер или неким уграђеним ОС-овима са одузетим ССЛ-ом (нпр. МикроТик).\nДа бисте решили овај проблем, подесите поставке тлс-шифре на серверу на разумне вредности као што је тлс-ципхер \"ДЕФАУЛТ:! ЕКСП:! ПСК:! СРП:! КРСА\". Да бисте решили проблем на клијенту, додајте прилагођену опцију тлс-ципхер ДЕФАУЛТ на Андроид клијенту.</string>
+ <string name="message_no_user_edit">Овај профил је додат из екстерне апликације (%s) и означен је као да корисник не може да се уређује.</string>
+ <string name="crl_file">Листа за опозив цертификата</string>
+ <string name="service_restarted">Поново покрените ОпенВПН услугу (апликација се срушила вероватно се срушила или погинула због притиска у меморији)</string>
+ <string name="import_config_error">Увоз конфигурације створио је грешку, не може је сачувати</string>
+ <string name="Search">Претрага</string>
+ <string name="lastdumpdate">(Последњи dump је стар %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">ОпенВПН за Андроид може аутоматски да открије недостајуће датотеке или датотеке на СДЦард картици. Тапните на ову поруку да бисте покренули захтев за дозволу.</string>
+ <string name="protocol">Протокол</string>
+ <string name="enabled_connection_entry">Омогућено</string>
+ <string name="permission_revoked">ВПН је дозволу одузео од стране ОС-а (нпр. Покренут је други ВПН програм) заустављајући ВПН</string>
+ <string name="pushpeerinfo">Пусх Пеер инфо</string>
+ <string name="pushpeerinfosummary">Пошаљите додатне информације серверу, нпр. ССЛ верзија и Андроид верзија</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">тлс-аутх датотека недостаје</string>
+ <string name="missing_certificates">Недостаје кориснички цертификат или датотека кључа корисника</string>
+ <string name="crl_title">Листа опозива цертификата (необавезно)</string>
+ <string name="reread_log">Прочитајте (%d) ставке дневника из датотеке кеш записа</string>
+ <string name="samsung_broken">Иако су Самсунг телефони међу најпродаванијим Андроид телефонима, Самсунгов фирмваре такође је међу најгушнијим Андроид фирмвареа. Грешке нису ограничене на ВПН рад на овим уређајима, али многи од њих могу се заобићи. У наставку су описане неке од ових грешака.\n\nДНС не ради осим ако је ДНС сервер у распону ВПН-а.\n\nНа многим Самсунг 5.к уређајима функција дозвољених / забрањених апликација не ради.\nНа Самсунг 6.к ВПН-у се не ради ако апликација ВПН није изузета од Поверсаве функција.</string>
+ <string name="samsung_broken_title">Самсунг телефони</string>
+ <string name="novpn_selected">Није изабран ВПН.</string>
+ <string name="defaultvpn">Подразумевани ВПН</string>
+ <string name="defaultvpnsummary">ВПН користи се на местима где је потребан подразумевани ВПН. Тренутно се покрећу, за Алваис-Он и плочице за брзе поставке.</string>
+ <string name="vpnselected">Тренутно изабрани ВПН: \'%s\'</string>
+ <string name="reconnect">Поново повежите</string>
+ <string name="qs_title">Пребаци ВПН</string>
+ <string name="qs_connect">Повежите се са %s</string>
+ <string name="qs_disconnect">Прекини везу %s</string>
+ <string name="connectretrymaxmessage">Унесите максимално време између покушаја повезивања. ОпенВПН ће полако повећавати време чекања након неуспешног покушаја повезивања до ове вредности. Задане вредности су 300-те.</string>
+ <string name="connectretrymaxtitle">Максимално време између покушаја повезивања</string>
+ <string name="state_waitconnectretry">Чекате %sсекунди између покушаја везе</string>
+ <string name="nought_alwayson_warning"><![CDATA[Ако нисте добили дијалог за потврду ВПН-а, имате \ "Увек на ВПН \" омогућено за другу апликацију. У том случају само се тој апликацији може повезати на ВПН. Проверите у оквиру Подешавања-> Мреже више .. -> ВПНС]]></string>
+ <string name="management_socket_closed">Веза са ОпенВПН је затворена (%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</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="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">У току је статистика успостављене ОпенВПН везе</string>
+ <string name="channel_name_status">Промјена статуса везе</string>
+ <string name="channel_description_status">Промјене статуса ОпенВПН везе (Повезивање, аутентификација,&#8230;)</string>
+ <string name="weakmd_title">Слаби (МД5) сложени су у потпису сертификата (ССЛ_ЦТКС_усе_цертифицате мд сувише слаб)</string>
+ <string name="title_activity_open_sslspeed">ОпенССЛ тест брзине</string>
+ <string name="openssl_cipher_name">ОпенССЛ имена шифре</string>
+ <string name="osslspeedtest">ОпенССЛ тест крипто брзине</string>
+ <string name="openssl_error">ОпенССЛ је вратио грешку</string>
+ <string name="running_test">Тестирање&#8230;</string>
+ <string name="test_algoirhtms">Испитајте одабране алгоритме</string>
+ <string name="all_app_prompt">Спољна апликација покушава да контролише %s. Апликација која захтева приступ не може се утврдити. Омогућавање ове апликације дозвољава СВИМ апликацијама приступ.</string>
+ <string name="openvpn3_nostatickeys">Имплементација ОпенВПН 3 Ц ++ не подржава статичке кључеве. Промените на ОпенВПН 2.к под општим подешавањима.</string>
+ <string name="openvpn3_pkcs12">Коришћење датотека ПКЦС12 директно са ОпенВПН 3 Ц ++ имплементацијом није подржано. Увезите пкцс12 датотеке у Андроид кеисторе или промените у ОпенВПН 2.к под општим подешавањима.</string>
+ <string name="proxy">Заступник</string>
+ <string name="Use_no_proxy">Ниједан</string>
+ <string name="tor_orbot">Тор (Орбот)</string>
+ <string name="openvpn3_socksproxy">Имплементација ОпенВПН 3 Ц ++ не подржава повезивање путем проки Соцкс</string>
+ <string name="no_orbotfound">Апликацију Орбот није могуће пронаћи. Инсталирајте Орбот или користите ручну интеграцију Соцкс в5.</string>
+ <string name="faq_remote_api_title">Удаљени АПИ</string>
+ <string name="faq_remote_api">ОпенВПН за Андроид подржава два удаљена АПИ-ја, софистицирани АПИ који користи АИДЛ (ремотеЕКСампле у гит репозиторијуму) и једноставан који користи Интентс. &lt;p&gt;Остали примери адб схелл и намере. Замените назив профила својим именом профила&lt;p&gt;&lt;p&gt; адб схелл ам-старт-ацтивити -а андроид.интент.ацтион.МАИН де.блинкт.опенвпн / .апи.ДисцоннецтВПН&lt;p&gt; адб схелл ам-старт-ацтивити -а андроид.интент.ацтион.МАИН - е де.блинкт.опенвпн.апи.профилеНаме Блинкт де.блинкт.опенвпн / .апи.ЦоннецтВПН</string>
+ <string name="enableproxyauth">Омогући провјеру аутентичности прокија</string>
+ <string name="error_orbot_and_proxy_options">Не могу истовремено користити додатни исказ опције хттп-проки и интеграцију ОрботаО</string>
+ <string name="info_from_server">Информације са сервера: \'%s\'</string>
+ <string name="channel_name_userreq">Потребна је интеракција корисника</string>
+ <string name="channel_description_userreq">ОпенВПН веза захтева кориснички унос, нпр. Два фактора
+ потврђивање
+ </string>
+ <string name="openurl_requested">Отворите УРЛ да бисте наставили ВПН аутентификацију</string>
+ <string name="state_auth_pending">Аутентификација је у току</string>
+ <string name="external_authenticator">Екстерни проверавач</string>
+ <string name="configure">Конфигуришите</string>
+ <string name="extauth_not_configured">Спољни проверавач није конфигурисан</string>
+</resources>
diff --git a/main/src/ui/res/values-sv/arrays.xml b/main/src/ui/res/values-sv/arrays.xml
index 451242e8..06040cd1 100644
--- a/main/src/ui/res/values-sv/arrays.xml
+++ b/main/src/ui/res/values-sv/arrays.xml
@@ -17,15 +17,27 @@
<item>Extern auktorisationsleverantör</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Ospecificerad</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Encryption (tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
<string-array name="auth_retry_type">
- <item>Koppla bort, glöm lösenordet</item>
- <item>Koppla bort, behåll lösenordet</item>
+ <item>Koppla ner, glöm lösenordet</item>
+ <item>Koppla ner, behåll lösenordet</item>
<item>Ignorera, försök igen</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Moderna standardinställningar</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x peers</item>
+ <item>OpenVPN 2.3.x och äldre peers</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>Ej säker (rekommenderas ej, tillåter osäker kryptering)</item>
+ <item>legacy (standard)</item>
+ <item>Föredraget (rekommenderas men begränsad kompatibilitet)</item>
+ <item>Svit B (endast NIST-godkända elliptiska kurvor)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-sv/strings.xml b/main/src/ui/res/values-sv/strings.xml
index beaf40f7..4ee5a044 100644
--- a/main/src/ui/res/values-sv/strings.xml
+++ b/main/src/ui/res/values-sv/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">PKCS12 lösenord</string>
<string name="file_select">Välj&#8230;</string>
<string name="file_nothing_selected">Du måste välja en fil</string>
- <string name="useTLSAuth">Använd TLS-autentisering</string>
- <string name="tls_direction">TLS riktning</string>
<string name="ipv6_dialog_tile">Ange IPv6-adress/Netmask i CIDR Format (t.ex. 2000:dd::23 / 64)</string>
<string name="ipv4_dialog_title">Ange IPv4-adressen/Netmask i CIDR Format (t.ex. 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4-adress</string>
<string name="ipv6_address">IPv6-adress</string>
<string name="custom_option_warning">Ange anpassade OpenVPN alternativ. Använd med försiktighet! Tänk också på att många av de tun relaterade OpenVPN inställningarna inte kan stödjas genom utformningen av VPNSettings. Om du anser att ett viktigt alternativ saknas kontakta författaren</string>
+ <string name="auth_username">Användarnamn (lämna tomt för ingen autentisering)</string>
<string name="auth_pwquery">Lösenord</string>
<string name="static_keys_info">Vid statisk konfiguration används TLS Auth nycklarna som statiska nycklar</string>
<string name="configure_the_vpn">Konfigurera VPN-anslutningen</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Vänligen ange ett unikt Profilnamn</string>
<string name="profilename">Profilnamn</string>
<string name="no_keystore_cert_selected">Du måste välja ett användarcertifikat</string>
+ <string name="no_ca_cert_selected">Du måste välja ett CA-certifikat eller aktivera peer fingeravtryckskontroll</string>
<string name="no_error_found">Inga fel hittades</string>
<string name="config_error_found">Fel i konfigurationen</string>
<string name="ipv4_format_error">Det går inte att tolka IPv4-adressen</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Certifikat Hostname kontroll</string>
<string name="enter_tlscn_dialog">Ange den kontroll som används för att verifiera Fjärrcertifikat DN (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nSpecificera en komplett DN eller RDN (openvpn.blinkt.de i exemplet) eller ett RDN prefix för verifiering.\n\nOm RDN prefix används matchar \"Server\" både \"Server-1\" och \"Server-2\" \n\nLämnas textfältet tomt matchas RDN mot server hostname.\n\nFor mer information se OpenVPN 2.3.1+ manpage under —verify-x509-name</string>
<string name="enter_tlscn_title">Fjärrcertifikats ämne</string>
- <string name="tls_key_auth">Aktiverar TLS Key Authetication</string>
- <string name="tls_auth_file">TLS Auth fil</string>
<string name="pull_on_summary">Begär IP-adresser, rutter och tidsalternativ från servern.</string>
<string name="pull_off_summary">Ingen information begärs från servern. Inställningar behöver specificeras nedan.</string>
<string name="use_pull">Hämta inställningar</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Din ROM stöder inte VPNService API, ledsen :(</string>
<string name="encryption">Kryptering</string>
<string name="cipher_dialog_title">Ange krypteringsmetod</string>
+ <string name="chipher_dialog_message">Ange datakrypteringsalgoritmerna som används av OpenVPN separerade med: (--data-chiffer). Lämna tomt för att använda standarden för AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305.</string>
<string name="auth_dialog_message">Ange den autentiserings digest som används för OpenVPN. Lämna tom för att använda standard digest.</string>
<string name="settings_auth">Autentisering/kryptering</string>
<string name="file_explorer_tab">Filutforskare</string>
@@ -201,8 +200,6 @@
<string name="using_proxy">Använder proxy %1$s %2$s</string>
<string name="use_system_proxy">Använd system proxy</string>
<string name="use_system_proxy_summary">Använda systemkonfigurationen för HTTP/HTTPS proxy för att ansluta.</string>
- <string name="onbootrestartsummary">OpenVPN kommer att ansluta angiven VPN om den var aktivt vid systemets uppstart. Läs vanliga frågor för anslutningsvarning innan du använder det här alternativet på Android &lt; 5.0.</string>
- <string name="onbootrestart">Anslut vid uppstart</string>
<string name="ignore">Ignorera</string>
<string name="restart">Starta om</string>
<string name="restart_vpn_after_change">Konfigurationsändringar tillämpas efter omstart av VPN. Starta(om) VPN nu?</string>
@@ -258,7 +255,6 @@
<string name="encryption_cipher">Krypteringschiffer</string>
<string name="packet_auth">Paketautentisering</string>
<string name="auth_dialog_title">Ange autentiseringsmetod för paket</string>
- <string name="built_by">byggd av %s</string>
<string name="debug_build">felsöknings bygge</string>
<string name="official_build">officiellt bygge</string>
<string name="make_selection_inline">Kopiera till profil</string>
@@ -356,7 +352,6 @@
<string name="ab_tethering_44">Internetdelning fungerar medans VPNet är aktivt. Den delade anslutningen kommer INTE gå via VPNet.</string>
<string name="ab_kitkat_mss">Tidigt KitKat version anger fel MSS värdet på TCP-anslutningar (# 61.948). Försök att göra det möjligt för mssfix möjlighet att kringgå denna bugg.</string>
<string name="ab_proxy">Android kommer att använda de proxyinställningar som har ställts in för anslutningen över mobilnät/trådlöst när inga DNS-servrar är inställda. OpenVPN kommer att varna för detta i loggen.<p>När en VPN-anslutning anger en DNS-server, kommer Android att hoppa över proxyn. Det finns inget API för att ange en proxy för en VPN-anslutning.</p></string>
- <string name="ab_lollipop_reinstall">VPN appar kan sluta fungera när avinstalleras och installeras igen. För mer information se # 80074</string>
<string name="ab_not_route_to_vpn">Det konfigurerade klient-IPt och de IP-nummer som omfattas av dess nätmask är inte ruttade via VPNet. OpenVPN kommer att motarbeta denna bugg genom att explicit lägga till en rutt som omfattar klient-IPt och dess nätmask</string>
<string name="ab_persist_tun">Att öppna en tun-enhet medans en annan tun-enhet är aktiv, och denna används för ihållande tun, kommer att krascha VPN-funktionen på enheten. Detta innebär att enheten måste startas om för att VPN skall fungera igen. OpenVPN för Android försöker undvika att öppna tun-enheten på nytt, och om det verkligen behövs, då stänga befintliga tun-anslutningar innan den öppnar den nya tun-enheten för att undvika denna krasch. Detta kan leda till ett litet tidsfönster där paket kan läcka ut utanför VPN-anslutningen. Även med denna fix, så kraschar ibland VPN-funktionen, och kräver då att enheten startas om.</string>
<string name="ab_secondary_users">VPN fungerar inte över huvud taget för extra användarkonton.</string>
@@ -364,7 +359,6 @@
<string name="ab_vpn_reachability_44">Bara destination kan nås över VPN som kan nås utan VPN. IPv6-VPN fungerar inte alls.</string>
<string name="ab_only_cidr_title">Icke CIDR rutter</string>
<string name="ab_proxy_title">Proxy beteende för VPN</string>
- <string name="ab_lollipop_reinstall_title">Installera om VPN appar</string>
<string name="version_upto">%s och tidigare</string>
<string name="copy_of_profile">Kopia av %s</string>
<string name="ab_not_route_to_vpn_title">Rutt till den konfigurerade IP-adressen</string>
@@ -435,6 +429,12 @@
<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;Från och med OpenSSL version 1.1, avvisar OpenSSL svaga signaturer i certifikat som
+ MD5. Dessutom med OpenSSL 3.0 avvisas signaturer med SHA1.&lt;/p&gt;&lt;p&gt;
+ Du bör uppdatera VPN-certifikaten så snart som möjligt eftersom SHA1 inte heller längre kommer att fungera på andra plattformar inom den
+ närmaste framtiden.&lt;/p&gt;
+ &lt;p&gt;Om du verkligen vill använda gamla och trasiga certifikat väljer du \"osäker\" för TLS-säkerhetsprofilen under Autentisering/kryptering av profilen&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>
@@ -468,8 +468,35 @@
autentisering
</string>
<string name="openurl_requested">Öppna webbadressen för att fortsätta VPN-autentisering</string>
+ <string name="crtext_requested">Svara på utmaningen att fortsätta VPN-autentiseringen</string>
<string name="state_auth_pending">Autentisering väntar</string>
<string name="external_authenticator">Extern autentisering</string>
<string name="configure">Konfigurera</string>
<string name="extauth_not_configured">Extern autentiseringsapp inte konfigurerad</string>
+ <string name="faq_killswitch_title">Blockera icke-VPN-anslutning (\"Killswitch\")</string>
+ <string name="faq_killswitch">Det är ofta önskvärt att blockera anslutningar utan VPN. Andra appar använder ofta marknadsföringstermer som \"Killswitch\" eller \"Sömlös tunnel\" för den här funktionen. OpenVPN och denna app erbjuder persist-tun, en funktion för att implementera denna funktionalitet.&lt;p&gt;Problemet med alla dessa metoder som erbjuds av appar är att de bara kan ge bästa möjliga ansträngning och inte är några kompletta lösningar. Vid uppstart, appkraschar och andra hörnfall kan appen inte säkerställa att detta block av icke-VPN-anslutning fungerar. Detta ger användaren en falsk känsla av säkerhet.&lt;p&gt;Det &lt;b&gt;enda&lt;/b&gt; pålitliga sättet att säkerställa att icke-VPN-anslutningar blockeras är att använda Android 8.0 eller senare och använda inställningen \"blockera anslutningar utan VPN\" som finns under Inställningar &gt; Nätverk &amp; Internet &gt; Avancerat/VPN &gt; OpenVPN för Android &gt; Aktivera alltid PÅ VPN, Aktivera Blockera anslutningar utan VPN</string>
+ <string name="summary_block_address_families">Det här alternativet instruerar Android att inte tillåta protokoll (IPv4/IPv6) om VPN inte ställer in några IPv4- eller IPv6-adresser.</string>
+ <string name="title_block_address_families">Blockera IPv6 (eller IPv4) om det inte används av VPN</string>
+ <string name="install_keychain">Installera nytt certifikat</string>
+ <string name="as_servername">AS servernamn</string>
+ <string name="server_url">Server URL</string>
+ <string name="request_autologin">Begär autoinloggningsprofil</string>
+ <string name="import_from_as">Importera profil från fjärrserver</string>
+ <string name="no_default_vpn_set">Standard-VPN inte inställt. Ställ in standard-VPN innan du aktiverar det här alternativet.</string>
+ <string name="internal_web_view">Intern WebView</string>
+ <string name="faq_ncp">Det finns vissa variationer av detta meddelande beroende på den exakta situationen. De har alla gemensamt att server och klient inte kunde komma överens om ett gemensamt chiffer. De främsta anledningarna är: &lt;ul&gt;&lt;li&gt; Du förlitar dig fortfarande på det faktum att OpenVPN 2.4 och äldre tillät BF-CBC i standardkonfigurationen (om inget --chiffer var inställt). OpenVPN 2.5 tillåter inte det som standard längre eftersom det är ett &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;trasigt/föråldrat chiffer&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Servern kör OpenVPN 2.3 (eller ännu äldre) med --enable-small (minst 4-5 år gammal OpenVPN)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;Trasig konfiguration (t.ex. felaktiga data-chiffer på klient och server)&lt;/li&gt; &lt;p&gt; The &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN manualavsnittet om chifferförhandling&lt;/a&gt; förklarar de olika scenarierna för chifferförhandling mycket väl och vad man ska göra i dessa situationer.&lt;p&gt;TP-Link-enheter använder en minst 5 år gammal OpenVPN 2.3.x-version (eventuellt äldre) på sina enheter, även i 2019/2020-modellerna.&lt;p&gt;Sist men inte minst finns det en populär VPN-leverantör som har en trasig server som alltid säger att den använder \'BF-CBC\' eftersom dess utvecklare tyckte att det skulle vara en bra idé att skapa en proprietär chifferförhandlingspatch som är inkompatibel med standarden OpenVPN.&lt;p&gt;Sammanfattningsvis: alla sunda konfigurationer bör inte få dessa fel. Men (bortsett från den trasiga VPN-leverantörens server) kan klienten övertalas att fortfarande ansluta (fixar symtomet och inte det verkliga problemet). När du ansluter till äldre servrar bör alternativet för kompatibilitetsläge i grundinställningarna för ett VPN kunna lösa de flesta vanliga kompatibilitetsproblem.</string>
+ <string name="check_peer_fingerprint">Kontrollera fingeravtryck för peer-certifikat</string>
+ <string name="fingerprint">(Ange SHA256-fingeravtrycket för servercertifikatet)</string>
+ <string name="proxy_info">HTTP-proxy: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Använd \"Alltid-På\" funktionen i Android för att aktivera VPN vid uppstart.</string>
+ <string name="open_vpn_settings">Öppna VPN-inställningar</string>
+ <string name="trigger_pending_auth_dialog">Tryck här öppna ett fönster för att ange ytterligare nödvändig autentisering</string>
+ <string name="compatmode">Kompatibilitetsläge</string>
+ <string name="compat_mode_label">Kompatibilitetsläge</string>
+ <string name="loadossllegacy">Ladda OpenSSL äldre leverantör</string>
+ <string name="bf_cbc_requires_legacy">Profiler använder BF-CBC som beror på OpenSSL legacy provider (ej aktiverat).</string>
+ <string name="allow_translations_title">Tillåt översättningar som bidragit från gemenskapen</string>
+ <string name="allow_translations_summary">Tillåter att appen översätts med översättningar från gemenskapen. Kräver en omstart av appen för att aktiveras.</string>
+ <string name="tls_profile">TLS säkerhetsprofil</string>
+ <string name="encrypt_profiles">Försök att kryptera profiler på lagring (om det stöds av Android OS)</string>
</resources>
diff --git a/main/src/ui/res/values-tr/arrays.xml b/main/src/ui/res/values-tr/arrays.xml
index b62fb8ab..5c183c2e 100644
--- a/main/src/ui/res/values-tr/arrays.xml
+++ b/main/src/ui/res/values-tr/arrays.xml
@@ -17,9 +17,9 @@
<item>Harici Kimlik Doğrulama Sağlayıcısı</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Belirtilmemiş</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Şifreleme (--tls-crypt)</item>
<item>TLS Şifreleme V2</item>
</string-array>
@@ -35,4 +35,16 @@
<item>Bağlantıyı kes, parolayı sakla</item>
<item>Yoksay, yeniden dene</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Modern varsayılanlar</item>
+ <item>OpenVPN 2.5.x eşleri</item>
+ <item>OpenVPN 2.4.x eşleri</item>
+ <item>OpenVPN 2.3.x ve daha eski eşleri</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>güvensiz (önerilmez, güvensiz kriptoya izin verir)</item>
+ <item>eski (varsayılan)</item>
+ <item>tercih edilen (önerilen ancak sınırlı uyumluluk)</item>
+ <item>Suite B (yalnızca NIST onaylı eliptik eğriler)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-tr/strings.xml b/main/src/ui/res/values-tr/strings.xml
index 7c6f2830..970a7d7f 100644
--- a/main/src/ui/res/values-tr/strings.xml
+++ b/main/src/ui/res/values-tr/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">PKCS12 Parolası</string>
<string name="file_select">Seç&#8230;</string>
<string name="file_nothing_selected">Bir dosya seçmelisiniz</string>
- <string name="useTLSAuth">TLS Kimlik Doğrulamasını Kullan</string>
- <string name="tls_direction">TLS Yönü</string>
<string name="ipv6_dialog_tile">CIDR biçiminde IPv6 adresi/ağ maskesi girin (örneğin 2000:dd::23 / 64)</string>
<string name="ipv4_dialog_title">CIDR biçiminde IPv4 Adresi/Ağ Maskesi girin (örneğin 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 Adresi</string>
<string name="ipv6_address">IPv6 Adresi</string>
<string name="custom_option_warning">Özel OpenVPN seçeneklerini girin. Dikkatli kullanın. Ayrıca tun ile ilgili OpenVPN ayarları VPNSettings tasarımı nedeniyle program tarafından desteklenmiyor. Önemli bir seçeneğin eksik olduğunu düşünüyorsanız geliştirici ile iletişime geçin</string>
+ <string name="auth_username">Kullanıcı adı (no auth için boş bırakın)</string>
<string name="auth_pwquery">Parola</string>
<string name="static_keys_info">Statik yapılandırma için TLS Kimlik Doğrulama Anahtarları statik anahtar olarak kullanılacak</string>
<string name="configure_the_vpn">VPN\'i Yapılandır</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Benzersiz bir profil adı girin</string>
<string name="profilename">Profil Adı</string>
<string name="no_keystore_cert_selected">Bir kullanıcı sertifikası seçmelisiniz</string>
+ <string name="no_ca_cert_selected">Bir CA sertifikası seçmeli veya eş parmak izi kontrolünü etkinleştirmelisiniz</string>
<string name="no_error_found">Hiçbir hata bulunamadı</string>
<string name="config_error_found">Yapılandırmada Hata</string>
<string name="ipv4_format_error">IPv4 adresi ayrıştırma hatası</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Sertifika Makine Adı Denetimi</string>
<string name="enter_tlscn_dialog">Uzak sertifika DN\'sini doğrulamak için kullanılan denetimi belirtin (örn. C=TR, L=Ankara, OU=IP Sağlayıcı, CN=openvpn.blinkt.de)\n\nTam DN veya RDN\'yi belirtin (örnekte openvpn.blinkt.de) veya doğrulama için bir RDP ön eki.\n\nRDN ön eki kullanıldığında \"Sunucu\" \"Sunucu-1\" ve \"Sunucu-2\" ile eşleşir\n\nMetin alanını boş bırakmak, RDN\'i sunucu makine adına karşı denetleyecektir.\n\nDaha fazla bilgi için bkz. OpenVPN 2.3.1+ man sayfası konusu —verify-x509-name</string>
<string name="enter_tlscn_title">Uzak sertifika konusu</string>
- <string name="tls_key_auth">TLS Anahtar Kimlik Doğrulamasını etkinleştirir</string>
- <string name="tls_auth_file">TLS Kimlik Doğrulama Dosyası</string>
<string name="pull_on_summary">Sunucudan IP adresleri, rotalar ve zamanlama seçeneklerini talep eder.</string>
<string name="pull_off_summary">Sunucudan hiçbir bilgi talep edilmez. Ayarlar aşağıda belirtilmelidir.</string>
<string name="use_pull">Ayarları Çek</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Kalıbınız VPNService API\'sini desteklemiyor, üzgünüm :(</string>
<string name="encryption">Şifreleme</string>
<string name="cipher_dialog_title">Şifreleme yöntemini gir</string>
+ <string name="chipher_dialog_message">OpenVPN tarafından kullanılan veri şifreleme şifreleme algoritmalarını : (--data-ciphers) ile ayırarak girin. AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305 varsayılanını kullanmak için boş bırakın.</string>
<string name="auth_dialog_message">OpenVPN için kullanılan kimlik doğrulama özetini girin. Varsayılan özeti kullanmak için boş bırakın.</string>
<string name="settings_auth">Kimlik Doğrulama/Şifreleme</string>
<string name="file_explorer_tab">Dosya Gezgini</string>
@@ -201,8 +200,7 @@
<string name="using_proxy">%1$s %2$s vekil sunucusu kullanılıyor</string>
<string name="use_system_proxy">Sistem vekil sunucusunu kullan</string>
<string name="use_system_proxy_summary">Bağlanmak için sistem çapındaki HTTP/HTTPS vekil sunucularını kullan.</string>
- <string name="onbootrestartsummary">Sistem önyüklemesi üzerinde etkinse, OpenVPN belirtilen VPN bağlantısına bağlanır. Lütfen bu seçeneği Android &lt; 5.0 üzerinde kullanmadan önce bağlantı uyarısı için SSS bölümünü okuyun.</string>
- <string name="onbootrestart">Önyükleme sırasında bağlan</string>
+ <string name="keep_vpn_connected_summary">OpenVPN, sistem önyüklemesinde belirtilen VPN\'ye bağlanacak ve VPN\'yi bağlı tutmaya çalışacaktır.</string>
<string name="ignore">Yoksay</string>
<string name="restart">Yeniden Başlat</string>
<string name="restart_vpn_after_change">Yapılandırma değişiklikleri, VPN yeniden başlattıktan sonra geçerli olur. VPN (yeniden) başlatılsın mı?</string>
@@ -258,7 +256,6 @@
<string name="encryption_cipher">Şifre şifresi</string>
<string name="packet_auth">Paket kimlik doğrulaması</string>
<string name="auth_dialog_title">Paket kimlik doğrulama yöntemini girin</string>
- <string name="built_by">%s tarafından derlendi</string>
<string name="debug_build">hata ayıklama yapısı</string>
<string name="official_build">resmi yapı</string>
<string name="make_selection_inline">Profile kopyala</string>
@@ -356,7 +353,6 @@
<string name="ab_tethering_44">Paylaşım sadece VPN etkinken çalışır. Paylaşılan bağlantı VPN\'i KULLANMAYACAKTIR.</string>
<string name="ab_kitkat_mss">Önceki KitKat sürümü TCP bağlantılarında MSS değerini yanlış ayarladı (#61948). Bu sorunu geçici olarak çözebilmek için mssfix seçeneğini etkinleştirmeyi deneyin.</string>
<string name="ab_proxy">Hiçbir DNS sunucusu ayarlanmadığında Android mobil/kablosuz bağlantı için belirtilmiş vekil sunucu ayarlarını kullanmaya devam edecek. Android için OpenVPN, günlüğünde bunu size gösterecek.<p>VPN bir DNS sunucusu ayarladığında, Android vekil sunucuyu kullanmayacak. Bir VPN bağlantısı için vekil sunucu ayarlamak üzere bir API bulunmamaktadır.</p></string>
- <string name="ab_lollipop_reinstall">VPN uygulamaları kaldırılıp tekrar yüklendiklerinde çalışmayabilirler. Ayrıntılar için bkz. #80074</string>
<string name="ab_not_route_to_vpn">Yapılandırılan istemci IP ve ağ maskesindeki IP adresleri VPN\'e yönlendirilmemektedir. OpenVPN bu sorunu istemci IP ve ağ maskesine çözümlenen bir rote ekleyerek çözmektedir</string>
<string name="ab_persist_tun">Persist-tun desteği için kullanılmak üzere bir tun aygıtı etkin iken başka bir tun aygını açmak cihazdaki VPN hizmetlerinin çökmesine neden olur. VPN\'in tekrar çalışması için yeniden başlatma gereklidir. Android için OpenVPN, tun aygıtını yeniden açmayı önlemeye çalışır, ancak gerçekten gerekli olduğunda çökmeyi önlemek için yeni TUN aygıtı açmadan önce geçerli TUN aygıtını kapatır. Bu VPN olmayan bağlantılar üzerinde paketlerin gönderildiği kısa bir aralığa sebep olabilir. Bu çözüme rağmen VPN hizmetleri hala çökmekte ve aygıtınızın yeniden başlatılmasını gerektirir.</string>
<string name="ab_secondary_users">VPN ikincil kullanıcılar için hiç çalışmamaktadır.</string>
@@ -364,7 +360,6 @@
<string name="ab_vpn_reachability_44">VPN\'siz ulaşılabilen hedefe sadece VPN üzerinde ulaşılabilir. IPv6 VPN\'leri hiç çalışmıyor.</string>
<string name="ab_only_cidr_title">CIDR Olmayan Rotalar</string>
<string name="ab_proxy_title">VPN\'ler için Vekil Sunucu davranışı</string>
- <string name="ab_lollipop_reinstall_title">VPN uygulamalarını yeniden yükleme</string>
<string name="version_upto">%s ve önceki</string>
<string name="copy_of_profile">%s kopyası</string>
<string name="ab_not_route_to_vpn_title">Yapılandırılmış IP adresine yönlendir</string>
@@ -435,6 +430,12 @@
<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 sürüm 1.1 ile başlayarak, OpenSSL,
+ MD5 gibi sertifikalardaki zayıf imzaları reddeder. Ek olarak OpenSSL 3.0 ile SHA1 imzaları da reddedilir.&lt;/p&gt;&lt;p&gt;
+ SHA1 yakın gelecekte diğer platformlarda da çalışmayacağı için VPN sertifikalarını mümkün olan en kısa sürede
+ güncellemelisiniz.&lt;/p&gt;
+ &lt;p&gt;Gerçekten eski ve bozuk sertifikaları kullanmak istiyorsanız, Profilin Doğrulaması/Şifrelemesi altında TLS güvenlik profili için \"güvensiz\" seçeneğini seçin&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>
@@ -474,8 +475,35 @@
doğrulama
</string>
<string name="openurl_requested">VPN kimlik doğrulamasına devam etmek için URL\'yi açın</string>
+ <string name="crtext_requested">VPN kimlik doğrulamasına devam etmek için sorgulamayı yanıtlayın</string>
<string name="state_auth_pending">Kimlik doğrulama beklemede</string>
<string name="external_authenticator">Harici Kimlik Doğrulayıcı</string>
<string name="configure">Yapılandır</string>
<string name="extauth_not_configured">Harici kimlik doğrulayıcı yapılandırılmamış</string>
+ <string name="faq_killswitch_title">VPN olmayan bağlantıyı engelle (\"Killswitch\")</string>
+ <string name="faq_killswitch">Genellikle VPN olmadan bağlantıların engellenmesi istenir. Diğer uygulamalar genellikle bu özellik için \"Killswitch\" veya \"Seamless tünel\" gibi işaretleme terimleri kullanır. OpenVPN ve bu uygulama, bu işlevi uygulamak için bir özellik olan persist-tun sunar.&lt;p&gt;Uygulamalar tarafından sunulan tüm bu yöntemlerle ilgili sorun, yalnızca en iyi çabayı gösterebilmeleri ve eksiksiz çözümler olmamasıdır. Açılışta, uygulama kilitlenir ve diğer uç durumları oluşabilir, uygulama bu VPN olmayan bağlantı bloğunun çalışmasını sağlayamayabilir. Böylece kullanıcıya yanlış bir güvenlik hissi verir.&lt;p&gt;VPN olmayan bağlantılarını engelleyebilmek için &lt;b&gt;tek&lt;/b&gt; güvenilir yol Android 8.0 veya sonrasını kullanmak ve Ayarlar &gt; Ağ &amp; İnternet &gt; Gelişmiş/>VPN &gt; Android için OpenVPN içinde bulunan &gt; Her Zaman Açık VPN\'i Etkinleştir, VPN Olmayan Bağlantıları Engelle\'yi Etkinleştir ile \"VPN olmayan bağlantıları engelle\" kullanmaktır.</string>
+ <string name="summary_block_address_families">Bu seçenek, VPN herhangi bir IPv4 veya IPv6 adresi ayarlamazsa Android\'e protokollere (IPv4/IPv6) izin vermemesi talimatını verir.</string>
+ <string name="title_block_address_families">VPN tarafından kullanılmıyorsa IPv6\'yı (veya IPv4) engelle</string>
+ <string name="install_keychain">Yeni sertifika yükle</string>
+ <string name="as_servername">AS sunucu adı</string>
+ <string name="server_url">Sunucu URL\'si</string>
+ <string name="request_autologin">Otomatik oturum açma profili iste</string>
+ <string name="import_from_as">Uzak Sunucudan Profili İçe Aktar</string>
+ <string name="no_default_vpn_set">Varsayılan VPN ayarlanmadı. Bu seçeneği etkinleştirmeden önce lütfen Varsayılan VPN\'i ayarlayın.</string>
+ <string name="internal_web_view">Dahili Web Görünümü</string>
+ <string name="faq_ncp">Kesin duruma bağlı olarak bu mesajın bazı varyasyonları vardır. Hepsinin ortak noktası, sunucu ve istemcinin ortak bir şifre üzerinde anlaşamamasıdır. Ana nedenler şunlardır: &gt;ul&lt;&gt;li&lt; Hala OpenVPN 2.4 ve daha eski sürümlerin varsayılan yapılandırmada BF-CBC\'ye izin verdiği gerçeğine güveniyorsunuz (eğer --cipher ayarlanmamışsa). &gt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&lt;bozuk/eskimiş bir cipher olduğundan&gt;/a&lt; varsayılan olarak buna artık izin vermiyor.&gt;/li&lt;&gt;li&lt;Sunucu, --enable-small (en az 4-5 yıllık OpenVPN) ile OpenVPN 2.3 (veya daha eski) çalıştırıyor&gt;/li&lt;&gt;li&lt;&gt;/ul&lt;Bozuk yapılandırma (örneğin, istemci ve sunucudaki yanlış data-cipher\'ları)&gt;/li&lt; &gt;p&lt; &gt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&lt;OpenVPN kılavuzu cipher anlaşması&gt;/a&lt; bölümü, şifre anlaşmasının farklı senaryolarını ve bu durumda ne yapılması gerektiğini çok iyi açıklamaktadır.&gt;p&lt;TP-Link cihazı, 2019/2020 modellerinde bile cihazlarında en az 5 yıllık OpenVPN 2.3.x sürümünü (muhtemelen daha eski) kullanır.&gt;p&lt;Son olarak, geliştiricisi OpenVPN standardı ile uyumlu olmayan özel bir cipher anlaşma yaması oluşturmanın iyi bir fikir olacağını düşündüğü için her zaman \'BF-CBC\' kullandığını söyleyen bozuk bir sunucusu olan popüler bir VPN sağlayıcısı var.&gt;p&lt;Özetle: tüm mantıklı konfigürasyonlar bu hataları almamalıdır. Ancak (bozuk VPN sağlayıcısının sunucusu dışında) istemci hala bağlanmaya ikna edilebilir (asıl sorunu değil, semptomu düzelterek). Eski sunuculara bağlanırken, bir VPN\'nin temel ayarlarındaki uyumluluk modu seçeneği, yaygın uyumluluk sorunlarının çoğunu çözebilmelidir.</string>
+ <string name="check_peer_fingerprint">Eş sertifika parmak izini kontrol edin</string>
+ <string name="fingerprint">(Sunucu sertifikalarının SHA256 parmak izini girin)</string>
+ <string name="proxy_info">HTTP Vekil: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Önyükleme sırasında VPN\'yi etkinleştirmek için lütfen Android\'in Her Zaman Açık Özelliğini kullanın.</string>
+ <string name="open_vpn_settings">VPN Ayarlarını Aç</string>
+ <string name="trigger_pending_auth_dialog">Ek gerekli kimlik doğrulamasını girmek için buraya basarak bir pencere açın</string>
+ <string name="compatmode">Uyumluluk Modu</string>
+ <string name="compat_mode_label">Uyumluluk modu</string>
+ <string name="loadossllegacy">OpenSSL eski sağlayıcısını yükle</string>
+ <string name="bf_cbc_requires_legacy">Profiller, OpenSSL eski sağlayıcısına (etkinleştirilmemiş) bağlı olan BF-CBC\'yi kullanır.</string>
+ <string name="allow_translations_title">Topluluğun katkıda bulunduğu çevirilere izin ver</string>
+ <string name="allow_translations_summary">Uygulamanın, topluluk tarafından sağlanan çevirilerle çevrilmesine izin verir. Etkinleştirmek için uygulamanın yeniden başlatılmasını gerektirir.</string>
+ <string name="tls_profile">TLS Güvenlik Profili</string>
+ <string name="encrypt_profiles">Depolama alanındaki profilleri şifrelemeyi deneyin (Android işletim sistemi tarafından destekleniyorsa)</string>
</resources>
diff --git a/main/src/ui/res/values-uk/arrays.xml b/main/src/ui/res/values-uk/arrays.xml
index bc985de2..ecf02abc 100644
--- a/main/src/ui/res/values-uk/arrays.xml
+++ b/main/src/ui/res/values-uk/arrays.xml
@@ -14,18 +14,30 @@
<item>Користувач/Пароль + Сертифікати</item>
<item>Користувач/Пароль + PKCS12 </item>
<item>Користувач/Пароль + Android</item>
- <item>Зовнішній постачальник послуг авторизації</item>
+ <item>Зовнішня перевірка авторизації провайдера</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Не визначені</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Шифрування (--tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
<string-array name="auth_retry_type">
- <item>Від\'єднати, забути пароль</item>
- <item>Відключитися, зберегти пароль</item>
+ <item>Роз\'єднати, забути</item>
+ <item>Роз\'єднати, зберегти </item>
<item>Ігнорувати, спробувати ще раз</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Сумісні вихідні данні</item>
+ <item>OpenVPN версія 2.5.x </item>
+ <item>OpenVPN версія 2.4.x </item>
+ <item>OpenVPN версії 2.3.x та попередні</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>ненадіний (не рекомендований, можливе надійне криптування)</item>
+ <item>Звичний (похідний)</item>
+ <item>Обраний (рекомендовано але з обмеженнями)</item>
+ <item>Набір B (тільки еліптичні криві, затверджені NIST)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-uk/plurals.xml b/main/src/ui/res/values-uk/plurals.xml
index 2f9f253f..b5fbe4fb 100644
--- a/main/src/ui/res/values-uk/plurals.xml
+++ b/main/src/ui/res/values-uk/plurals.xml
@@ -4,23 +4,23 @@
<item quantity="one">Залишився один місяць</item>
<item quantity="few">Залишось %d місяці</item>
<item quantity="many">Залишився один місяць</item>
- <item quantity="other">Залишилось % d місяць</item>
+ <item quantity="other">Залишилось %d місяців</item>
</plurals>
<plurals name="days_left">
- <item quantity="one">Залишилось % днів</item>
+ <item quantity="one">Залишився один день</item>
<item quantity="few">Залишилось %d дні</item>
<item quantity="many">Залишилося % днів</item>
<item quantity="other">Залишилось %d днів</item>
</plurals>
<plurals name="hours_left">
<item quantity="one">Залишилась одна година</item>
- <item quantity="few">Залишилося% d годин</item>
- <item quantity="many">Залишилося% d годин</item>
- <item quantity="other">Залишилося% d годин</item>
+ <item quantity="few">Залишилось %d години</item>
+ <item quantity="many">Залишилось %d годин</item>
+ <item quantity="other">Залишилось %d годин</item>
</plurals>
<plurals name="minutes_left">
- <item quantity="one">Залишилося одну хвилину</item>
- <item quantity="few">Залишилося %d хвилин</item>
+ <item quantity="one">Залишилася одна хвилина</item>
+ <item quantity="few">Залишилось %d хвилини</item>
<item quantity="many">Залишилося %d хвилин</item>
<item quantity="other">Залишилось %d хвилин</item>
</plurals>
diff --git a/main/src/ui/res/values-uk/strings.xml b/main/src/ui/res/values-uk/strings.xml
index 013fbb97..e0d45b11 100644
--- a/main/src/ui/res/values-uk/strings.xml
+++ b/main/src/ui/res/values-uk/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">Пароль PKCS12</string>
<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">Введіть адресу 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="ipv6_address">IPv6-адреса</string>
<string name="custom_option_warning">Введіть додаткові параметри OpenVPN. Використовуйте цю можливість з великою обережністю. Якщо ви вважаєте, що відсутній важливий параметр, то зв\'яжіться з автором</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>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Введіть унікальне ім\'я профілю</string>
<string name="profilename">Ім\'я профілю</string>
<string name="no_keystore_cert_selected">Потрібно вибрати сертифікат користувача</string>
+ <string name="no_ca_cert_selected">Необхідно вибрати сертифікат ЦС або ввімкнути перевірку відбитків</string>
<string name="no_error_found">Помилок не знайдено</string>
<string name="config_error_found">Помилка конфігурації</string>
<string name="ipv4_format_error">Помилка при розборі адреси IPv4</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Перевірка імені вузла сертифікату</string>
<string name="enter_tlscn_dialog">Перемикач способу перевірки DN сертифікату (eg C = DE, L = Paderborn, OU = Avian IP Carriers, CN = openvpn.blinkt.de) \n \nМожливо значення: повний DN, RDN (для прикладу openvpn.blinkt.de) або тільки преффікс RDN для перевірки. \n \nПрі використанні преффікса RDN, наприклад \"Server\", значення будуть \"Server-1\", \"Server-2\" і т.д. \n \nПрі порожньому текстовому полі перевірка проводитиметься по імені хоста. \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>
@@ -125,6 +123,7 @@
<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, розділяючи їх двокрапкою (--data-ciphers). Залиште порожнім, щоб використовувати шифри за замовчуванням (AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305).</string>
<string name="auth_dialog_message">Введіть the authentication digest для OpenVPN. Залиште порожнім для використання стандартних значень.</string>
<string name="settings_auth">Автентифікація/Шифрування</string>
<string name="file_explorer_tab">Провідник файлів</string>
@@ -182,7 +181,7 @@
<string name="error_extapp_sign">Помилка підпису із зовнішнім програмою автентифікації (%3$s): %1$s: %2$s</string>
<string name="faq_system_dialogs">Попередження VPN з\'єднання повідомляє вам, що цей додаток може перехоплювати весь мережевий трафік, і повідомляється системою попереджень VPNService API. \nСповіщення про VPN з\'єднання (символ \"Ключа\") також формується системою Android для сигналізації про вихідне VPN з\'єднання. У деяких прошивках це сповіщення супроводжується сигналом. \nAndroid використовує ці cповіщення для вашої власної безпеки і їх не можна обійти. (На жаль, на деяких прошивках також сповіщення супроводжується звуком)</string>
<string name="faq_system_dialogs_title">Повідомлення про підключення та звук сповіщеня</string>
- <string name="translationby">Переклад українською виконан спільнотою code.google.com</string>
+ <string name="translationby">Переклад українською виконано спільнотою</string>
<string name="ipdns">IP-адреса та DNS</string>
<string name="basic">Основне</string>
<string name="routing">Маршрутизація</string>
@@ -201,8 +200,6 @@
<string name="using_proxy">Використовується проксі-сервер %1$s %2$s</string>
<string name="use_system_proxy">Використовувати системний проксі</string>
<string name="use_system_proxy_summary">Використовувати системну конфігурацію HTTP/HTTPS проксі для з\'єднання.</string>
- <string name="onbootrestartsummary">OpenVPN підключатиметься до вказаного VPN, якщо він був активний при завантаженні системи. Будь ласка, прочитайте FAQ про попередження при підключенні перед використанням цієї опції на Android &lt; 5.0.</string>
- <string name="onbootrestart">Підключення при завантаженні</string>
<string name="ignore">Ігнорувати</string>
<string name="restart">Перезапустити</string>
<string name="restart_vpn_after_change">Після перезапуску VPN застосувати зміни конфігурації. (Пере)запустити VPN тепер?</string>
@@ -258,7 +255,6 @@
<string name="encryption_cipher">Алгоритм шифрування</string>
<string name="packet_auth">Пакети автентифікації</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>
@@ -285,27 +281,27 @@
<string name="pauseVPN">Призупинити VPN</string>
<string name="resumevpn">Відновити VPN</string>
<string name="state_userpause">VPN пауза на вимогу користувача</string>
- <string name="state_screenoff">VPN призупинено - screen off</string>
- <string name="device_specific">Хак для цього пристрою</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 для Android</string>
+ <string name="permission_icon_app">Іконка програми, яка намагається використовувати \"OpenVPN for Android\"</string>
<string name="faq_vpndialog43">"Починаючи з Android 4.3, запит підтвердження VPN-з\'єднання захищено від програм, які \"накладаються поверх екрану\". Це призводить до того, що діалогове вікно підтвердження не реагує на сенсорні натискання. Якщо у вас є програма, що використовує накладення, то це може викликати таке поведінку. Якщо ви виявите де-небудь таку програмe, зв\'яжіться з автором програми Ця проблема зачіпає всі VPN програми на Android 4.3 та пізніших версіях Дивіться також &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">Вікно підтвердження VPN</string>
- <string name="donatePlayStore">Також Ви можете висловити подяку у вигляді пожертвувань на Play Store:</string>
+ <string name="donatePlayStore">Крім того, ви можете надіслати мені пожертвування через Play Store:</string>
<string name="thanks_for_donation">Дякуємо за пожертвування %s!</string>
<string name="logCleared">Журнал очищено.</string>
<string name="show_password">Показати пароль</string>
- <string name="keyChainAccessError">Помилка при доступі до сховища ключів:%s</string>
+ <string name="keyChainAccessError">Помилка доступу до ланцюжка ключів: %s</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="downloaded_data">Завантажено</string>
<string name="vpn_status">Vpn Статус</string>
<string name="logview_options">Подивитися налаштування</string>
<string name="unhandled_exception">Невідома помилка: %1$s\n\n%2$s</string>
@@ -314,7 +310,7 @@
<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="userpw_file">Файл з ім\'ям/паролем</string>
<string name="imported_from_file">[Імпортовано з: %s]</string>
<string name="files_missing_hint">Деякі файли не були знайдені. Будь ласка, виберіть файли для імпорту профілю:</string>
<string name="openvpn_is_no_free_vpn">Щоб користуватися цією програмою, Вам знадобиться VPN провайдер/шлюз з підтримкою OpenVPN (часто наданий роботодавцем). Для отримання інформації з налаштування власного OpenVPN сервера: http://community.openvpn.net/</string>
@@ -356,7 +352,6 @@
<string name="ab_tethering_44">Загальний доступ до підключення (WiFi точки/модему) працює як VPN активний, але НЕ використовує VPN.</string>
<string name="ab_kitkat_mss">Рання версія KitKat встановлюе невірне значення MSS з\'єднань TCP (#61948). OpenVPN активує опцію mssfix щоб обійти цю проблему.</string>
<string name="ab_proxy">Android буде продовжувати використовувати налаштування проксі-сервера для мобільного зв\'язку/Wi-Fi, коли немає встановленого DNS-сервера. 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">Налаштований клієнтом IP і IP-адреси в цій мережевій масці не направляються до VPN. OpenVPN обробляє цю помилку явно додаючи маршрут, який відповідає IP клієнта і його маскою мережі</string>
<string name="ab_persist_tun">Відкриття tun пристрію поки інший tun пристрій активний, який використовує persist-tun, приводе до аварії VPNServices на пристрої. Потрібне перезавантаження, щоб VPN запрацював знову. OpenVPN for Android намагається уникнути повторне відкриття tun пристрію, а якщо дійсно необхідно в першу чергу закриває поточний TUN перед відкриттям нового TUN пристрої, щоб уникнути помилки. Це може призвести до виникнення короткого вікна, в якому пакети пересилаються по мережі без VPN. Навіть це тимчасове рішення іноді призводить до краху VPNServices і вимагає перезавантаження пристрою.</string>
<string name="ab_secondary_users">VPN не працює для других користувачів.</string>
@@ -364,7 +359,6 @@
<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">Шлях до налаштованого VPN IP адреса</string>
@@ -435,6 +429,12 @@
<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, відхиляються слабкі підписи в сертифікатах, такі як
+ MD5. Крім того, з OpenSSL 3.0 підписи з SHA1 також відхиляються.&lt;/p&gt;&lt;p&gt;
+ Вам слід якнайшвидше оновити сертифікати VPN, оскільки SHA1 також більше не буде працювати на інших платформах у
+ найближчому майбутньому.&lt;/p&gt;
+ &lt;p&gt;Якщо ви дійсно хочете використовувати старі та пошкоджені сертифікати, виберіть \"небезпечний\" для профілю безпеки TLS в розділі \"Аутентифікація/Шифрування\" профілю&lt;/p&gt;
+ </string>
<string name="volume_byte">%.0f Б</string>
<string name="volume_kbyte">%.1f КБ</string>
<string name="volume_mbyte">%.1f МБ</string>
@@ -468,8 +468,35 @@
аутентифікація
</string>
<string name="openurl_requested">Відкрийте URL-адресу, щоб продовжити аутентифікацію VPN</string>
+ <string name="crtext_requested">Відповісти на запит, щоб продовжити аутентифікацію VPN</string>
<string name="state_auth_pending">Очікується аутентифікація</string>
<string name="external_authenticator">Зовнішній аутентифікатор</string>
<string name="configure">Налаштувати</string>
<string name="extauth_not_configured">Зовнішній аутентифікатор не налаштований</string>
+ <string name="faq_killswitch_title">Блокувати з\'єднання без VPN (\"Killswitch\")</string>
+ <string name="faq_killswitch">Часто бажано блокувати з\'єднання без VPN. Інші програми часто використовують маркетингові терміни, такі як \"Killswitch\" або \"Безшовний тунель\". OpenVPN і ця програма пропонують використовувати persist-tun для реалізації цієї функції.&lt;p&gt;Проблема з усіма цими методами, реалізованими на стороні програм, полягає в тому, що вони не можуть забезпечити надійність. При завантаженні, збої програми та інших складних випадках програма не може гарантувати, що таке блокування підключень без VPN спрацює. Таким чином, даючи користувачеві помилкове почуття безпеки.&lt;b&gt;Єдиний&lt;/b&gt; надійний спосіб забезпечити блокування з’єднань, які не не проходять через VPN, — це використовувати Android 8.0 або новішої версії та налаштування \"Блокувати підключення не через VPN\", яке можна знайти в Налаштування &gt; Мережа й Інтернет &gt; Розширені/VPN &gt; OpenVPN for Android &gt; Увімкнути \"Постійна мережа VPN\" і \"Блокувати підключення не через VPN\"</string>
+ <string name="summary_block_address_families">Цей параметр дає вказівку Android не дозволяти протоколи (IPv4/IPv6), якщо VPN не встановлює адрес IPv4 або IPv6.</string>
+ <string name="title_block_address_families">Блокувати IPv6 (або IPv4), якщо не використовується VPN</string>
+ <string name="install_keychain">Установить новий сертифікат</string>
+ <string name="as_servername">Ім\'я сервера AS</string>
+ <string name="server_url">URL сервера</string>
+ <string name="request_autologin">Запит профіля автоматичного входу</string>
+ <string name="import_from_as">Імпорт профілю з сервера</string>
+ <string name="no_default_vpn_set">Не заданий VPN за замовчуванням. Перед включенням цієї функції встановіть VPN за замовчуванням.</string>
+ <string name="internal_web_view">Системний WebView</string>
+ <string name="faq_ncp">Існують декілька варіантів цього повідомлення в залежності від конкретної ситуації. Всіх їх об\'єднує те, що сервер і клієнт не змогли домовитися про спільний шифр. Основними причинами є: &lt;ul&gt;&lt;li&gt; Ви все ще розраховуєте на той факт, що OpenVPN версії 2.4 і нижче дозволяє BF-CBC в конфігурації за замовчуванням (якщо не був заданий --chipher). Але починаючи з OpenVPN 2.5 це не так, оскільки даний шифр &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;зламаний/застарілий&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; Сервер використовує OpenVPN 2.3 (або навіть старше) з --enable-small (OpenVPN серверу не менше 4-5 років)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;Некоректна конфігурація (наприклад, невідповідність шифрів на клієнті і сервері)&lt;/li&gt; &lt;p&gt; &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;Розділ керівництва OpenVPN про узгодження шифрів&lt;/a&gt; дуже добре пояснює різноманітні сценарії узгодження шифрів і що робити в цій ситуації.&lt;p&gt; Пристрої TP-Link використовують на своїх пристроях версію OpenVPN 2.3.x, 5-річної давності (можливо, старіші), навіть у моделях 2019/2020 року.&lt;p&gt; І останнє, але не менш важливе, у популярного провайдера VPN невірно налаштований сервер, який завжди говорить, що він використовує \"BF-CBC\", тому що його розробник подумав, що було б непогано створити патч для узгодження шифрування, несумісний зі стандартним OpenVPN.&lt;p&gt;Підсумовуючи: всі адекватні конфігурації не повинні видавати такі помилки. Але (крім невірно налаштованого сервера VPN-провайдера) клієнт можна примусити підключитися (Усунувши наслідок, а не реальну проблему). При підключенні до старих серверів опція \"Режиму сумісності\", в основних налаштуваннях VPN, повинна допомогти при вирішенні більшості поширених проблем сумісності.</string>
+ <string name="check_peer_fingerprint">Перевіряти відбиток сертифіката учасника (peer)</string>
+ <string name="fingerprint">(Введіть SHA256-відбиток сертифікату(ів) сервера)</string>
+ <string name="proxy_info">HTTP-проксі: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Використовуйте параметр \"Постійна мережа VPN\" в налаштуваннях Android, для автоматичного ввімкнення VPN після перезавантаження пристрою.</string>
+ <string name="open_vpn_settings">Налаштування Open VPN</string>
+ <string name="trigger_pending_auth_dialog">Натисніть тут, щоб відкрити вікно введення додаткових даних, необхідних для аутентифікації</string>
+ <string name="compatmode">Режим сумісності</string>
+ <string name="compat_mode_label">Режим сумісності</string>
+ <string name="loadossllegacy">Завантаження традиційного провайдера OpenSSL</string>
+ <string name="bf_cbc_requires_legacy">Профілі використовують BF-CBC, який залежить від застарілого OpenSSL (не включено).</string>
+ <string name="allow_translations_title">Використовувати переклад (запропонований спільнотою)</string>
+ <string name="allow_translations_summary">Використовувати переклад програми наданий спільнотою. Необхідний перезапуск програми.</string>
+ <string name="tls_profile">Профіль безпеки TLS</string>
+ <string name="encrypt_profiles">Спробуйте зашифрувати профілі на сховищі (якщо підтримується Android)</string>
</resources>
diff --git a/main/src/ui/res/values-vi/arrays.xml b/main/src/ui/res/values-vi/arrays.xml
index 66adcfe5..9a14718b 100644
--- a/main/src/ui/res/values-vi/arrays.xml
+++ b/main/src/ui/res/values-vi/arrays.xml
@@ -17,9 +17,9 @@
<item>Nhà cung cấp xác thực bên ngoài</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>Không xác định</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>Mã hóa (tls-crypt)</item>
<item>TLS Crypt V2</item>
</string-array>
@@ -28,4 +28,16 @@
<item>Ngắt kết nối, không giữ mật khẩu</item>
<item>Bỏ qua, thử lại</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>Mặc định hiện đại</item>
+ <item>OpenVPN 2.5.x ngang hàng</item>
+ <item>OpenVPN 2.4.x ngang hàng</item>
+ <item>OpenVPN 2.3.x và các đồng nghiệp cũ hơn</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>không an toàn (không được khuyến nghị, cho phép tiền điện tử không an toàn)</item>
+ <item>kế thừa (mặc định)</item>
+ <item>ưu tiên (được khuyến nghị nhưng khả năng tương thích hạn chế)</item>
+ <item>Suite B (chỉ các đường cong elip được NIST phê duyệt)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-vi/strings.xml b/main/src/ui/res/values-vi/strings.xml
index 2d313b2a..b05033ad 100644
--- a/main/src/ui/res/values-vi/strings.xml
+++ b/main/src/ui/res/values-vi/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">Mật khẩu PKCS12</string>
<string name="file_select">Chọn&#8230;</string>
<string name="file_nothing_selected">Bạn phải chọn một tập tin</string>
- <string name="useTLSAuth">Sử dụng xác thực TLS</string>
- <string name="tls_direction">Hướng TLS</string>
<string name="ipv6_dialog_tile">Nhập địa chỉ IPv6/Netmask trong định dạng CIDR (ví dụ 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Nhập địa chỉ IPv4/Netmask trong định dạng CIDR (ví dụ 1.2.3.4/24)</string>
<string name="ipv4_address">Địa chỉ IPv4</string>
<string name="ipv6_address">Địa chỉ IPv6</string>
<string name="custom_option_warning">Nhập tùy chọn cá nhân Open VPN. Sử dụng thận trọng. Lưu ý các thiết lập OpenVPN không thể hỗ trợ bởi thiết kế cấu hình của VPN. Nếu bạn thấy tùy chọn quan trọng hoặc mất mát, bạn có thể liên hệ với tác giả</string>
+ <string name="auth_username">Username (để không lại cho không xác thực)</string>
<string name="auth_pwquery">Mật khẩu</string>
<string name="static_keys_info">Đối với cấu hình tĩnh thì khóa TLS sẽ được dùng như khóa tĩnh</string>
<string name="configure_the_vpn">Cấu hình VPN</string>
@@ -42,6 +41,7 @@
<string name="duplicate_profile_name">Vui lòng nhập một tên hồ sơ duy nhất</string>
<string name="profilename">Tên hồ sơ</string>
<string name="no_keystore_cert_selected">Bạn phải chọn một chứng chỉ người dùng</string>
+ <string name="no_ca_cert_selected">Bạn phải chọn cái CA Chứng nhận hoặc bật kiểm tra vân tay ngang hàng</string>
<string name="no_error_found">Không tìm thấy lỗi</string>
<string name="config_error_found">Lỗi trong cấu hình</string>
<string name="ipv4_format_error">Lỗi phân tích cú pháp địa chỉ IPv4</string>
@@ -67,8 +67,6 @@
<string name="remote_tlscn_check_title">Kiểm tra chứng chỉ tên miền</string>
<string name="enter_tlscn_dialog">Xác định để kiểm tra sử dụng chứng nhận từ xa DN (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nHoàn chỉnh các DN hoặc RDN (openvpn.blinkt.de làm ví dụ) hoặc một tiền tố RDN để xác minh.\n\nKhi dùng tiền tố RDN phù hợp \"Server-1\" và \"Server-2\"\n\nĐể trường văn bản trống sẽ kiểm tra tiền tố RDN phản biện tên miền máy chủ. \n\nĐể biết thêm chi tiết xem tại phần quản lý OpenVPN 2.3.1+ bên dưới —xác minh-x509-tên</string>
<string name="enter_tlscn_title">Chủ đề chứng chỉ từ xa</string>
- <string name="tls_key_auth">Cho phép xác thực khóa TLS</string>
- <string name="tls_auth_file">Tập tin chứng thực TLS</string>
<string name="pull_on_summary">Yêu cầu các địa chỉ IP, định tuyến và tùy chọn thời gian từ máy chủ.</string>
<string name="pull_off_summary">Không có thông tin được yêu cầu từ máy chủ. Thiết lập cần phải được xác định bên dưới.</string>
<string name="use_pull">Cài đặt kéo</string>
@@ -125,6 +123,7 @@
<string name="no_vpn_support_image">Hình ảnh của bạn không hỗ trợ dịch vụ VPN API, xin lỗi :(</string>
<string name="encryption">Mã hóa</string>
<string name="cipher_dialog_title">Nhập phương thức mã hóa</string>
+ <string name="chipher_dialog_message">Nhập các thuật toán mật mã mã hóa dữ liệu được OpenVPN sử dụng, phân tách bằng: (--data-ciphers). Để trống để sử dụng mặc định của AES-256-GCM: AES-128-GCM: CHACHA20-POLY1305.</string>
<string name="auth_dialog_message">Nhập cấu hình xác thực dùng cho OpenVPN. Để trống nếu sử dụng cấu hình mặc định.</string>
<string name="settings_auth">Xác thực/Mã hóa</string>
<string name="file_explorer_tab">Duyệt tập tin</string>
@@ -201,8 +200,6 @@
<string name="using_proxy">Đang sử dụng proxy %1$s %2$s</string>
<string name="use_system_proxy">Sử dụng proxy hệ thống</string>
<string name="use_system_proxy_summary">Sử dụng các cấu hình hệ thống rộng cho HTTP/HTTPS proxy để kết nối.</string>
- <string name="onbootrestartsummary">OpenVPN sẽ kết nối VPN xác định nếu nó đã hoạt động trên hệ thống khởi động. Xin vui lòng đọc hướng dẫn cảnh báo kết nối trước khi sử dụng tùy chọn này trên Android &lt; 5.0.</string>
- <string name="onbootrestart">Kết nối khi khởi động</string>
<string name="ignore">Bỏ qua</string>
<string name="restart">Khởi động lại</string>
<string name="restart_vpn_after_change">Cấu hình sẽ được áp dụng sau khi khởi động lại VPN. (Khởi động) bắt đầu VPN lại ngay bây giờ?</string>
@@ -258,7 +255,6 @@
<string name="encryption_cipher">Mã hóa mật mã</string>
<string name="packet_auth">Gói xác thực</string>
<string name="auth_dialog_title">Nhập phương thức xác thực gói</string>
- <string name="built_by">được xây dựng bởi %s</string>
<string name="debug_build">bản dựng gỡ lỗi</string>
<string name="official_build">bản dựng chính thức</string>
<string name="make_selection_inline">Sao chép vào hồ sơ</string>
@@ -356,7 +352,6 @@
<string name="ab_tethering_44">Tethering hoạt động trong khi VPN đang kích hoạt. Các kết nối Tetherd sẽ KHÔNG sử dụng VPN.</string>
<string name="ab_kitkat_mss">Các phiên bản trước KitKat thiết lập giá trị MSS trên kết nối TCP (#61948). OpenVPN sẽ tự động kích hoạt tùy chỉnh mssfix để xử lý lỗi này.</string>
<string name="ab_proxy">Android sẽ sử dụng cấu hình proxy của bạn để kết nối điện thoại/Wifi khi không có máy chủ DNS được đặt. OpenVPN cho Android sẽ cảnh báo bạn về điều này trong bản ghi.<p>Khi VPN thiết đặt máy chủ DNS Android sẽ không kèm proxy. Không có API nào thiết đặt cho proxy trong kết nối VPN.</p></string>
- <string name="ab_lollipop_reinstall">Ứng dụng VPN có thể dừng hoạt động khi gỡ cài đặt và cài đặt lại lần nữa. Chi tiết xem tại #80074</string>
<string name="ab_not_route_to_vpn">Cấu hình IP của máy trạm và IP trong mặt nạ mạng thì không định tuyến đến VPN. OpenVPN hoạt động bởi sự cố này bằng cách thêm định tuyến mà chuyển đến địa chỉ IP máy trạm và mặt nạ mạng của nó</string>
<string name="ab_persist_tun">Mở một thiết bị tun khi một thiết bị tun khác đang hoạt động, có thể dùng để hỗ trợ tun, sự cố trên dịch vụ VPN. Cần khởi động lại để VPN hoạt động. OpenVPN cho Android cố gắng mở lại thiết bị tun và thực sự cần thiết để đóng TUN hiện tại trước khi mở TUN mới để tránh sự cố. Điều này có thể dẫn đến một cửa sổ nơi các gói tin được gửi qua kết nối không dây VPN. Ngay cả việc giải quyết dịch vụ VPN này thỉnh thoảng vẫn gặp sự cố và cần phải khởi động lại thiết bị.</string>
<string name="ab_secondary_users">VPN không làm việc cho tất cả người dùng phổ thông.</string>
@@ -364,7 +359,6 @@
<string name="ab_vpn_reachability_44">Chỉ có nguồn đích mới có thể truy cập vượt qua VPN mà không cần VPN. IPv6 không hoạt động cho tất cả.</string>
<string name="ab_only_cidr_title">Không định tuyến CIDR</string>
<string name="ab_proxy_title">Proxy chuyển tiếp cho VPN</string>
- <string name="ab_lollipop_reinstall_title">Đang cài đặt lại ứng dụng VPN</string>
<string name="version_upto">%s và trước đó</string>
<string name="copy_of_profile">Bản sao của %s</string>
<string name="ab_not_route_to_vpn_title">Định tuyến đến cấu hình địa chỉ IP</string>
@@ -435,6 +429,12 @@
<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="weakmd">&lt;p&gt;Bắt đầu với OpenSSL phiên bản 1.1, OpenSSL từ chối chữ ký yếu trong các chứng chỉ như
+ MD5. Ngoài ra, chữ ký OpenSSL 3.0 với SHA1 cũng bị từ chối.&lt;/p&gt;&lt;p&gt;
+ Bạn nên cập nhật chứng chỉ VPN càng sớm càng tốt vì SHA1 cũng sẽ không còn hoạt động trên các nền tảng khác trong
+ tương lai gần.&lt;/p&gt;
+ &lt;p&gt;Nếu bạn thực sự muốn sử dụng các chứng chỉ cũ và hỏng, hãy chọn \"không an toàn\" cho cấu hình bảo mật TLS trong Xác thực / Mã hóa của cấu hình&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>
@@ -468,8 +468,34 @@
xác thực
</string>
<string name="openurl_requested">Mở URL để tiếp tục xác thực VPN</string>
+ <string name="crtext_requested">Trả lời thách thức để tiếp tục xác thực VPN</string>
<string name="state_auth_pending">Đang chờ xác thực</string>
<string name="external_authenticator">Trình xác thực bên ngoài</string>
<string name="configure">Cấu hình</string>
<string name="extauth_not_configured">Bộ điều khiển từ bên ngoài không được cấu hình</string>
+ <string name="faq_killswitch_title">Chặn kết nối không phải VPN trong (\"Killswitch\") cho tự động ngắt kết nối của bạn từ kết nối internet của bạn để đảm bảo sự riêng tư của bạn vẫn còn nguyên vẹn cho đến khi VPN kết nối của bạn được phục hồi</string>
+ <string name="faq_killswitch">Người ta thường muốn chặn các kết nối mà không có VPN. Các ứng dụng khác thường sử dụng các thuật ngữ đánh dấu như \"Killswitch\" hoặc \"Đường hầm liền mạch\" cho tính năng này. OpenVPN và ứng dụng này cung cấp kiên trì, một tính năng để triển khai chức năng này.&lt;p&gt;Vấn đề với tất cả các phương pháp này được cung cấp bởi các ứng dụng là chúng chỉ có thể cung cấp nỗ lực tốt nhất và không có giải pháp hoàn chỉnh. Khi khởi động, ứng dụng bị treo và các trường hợp góc khác, ứng dụng không thể đảm bảo rằng khối kết nối không phải VPN này hoạt động. Do đó tạo cho người dùng một cảm giác an toàn giả tạo.&lt;p&gt;Cách đáng tin cậy duy nhất &lt;b&gt;&lt;/b&gt; để đảm bảo các kết nối không phải VPN bị chặn là sử dụng Android 8.0 trở lên và sử dụng cài đặt \"chặn kết nối không có VPN\" có thể tìm thấy trong Cài đặt &gt; Mạng &amp; Internet &gt; Nâng cao / VPN &gt; OpenVPN cho Android &gt; Bật Luôn BẬT VPN, Bật Kết nối Chặn mà không cần VPN</string>
+ <string name="summary_block_address_families">Tùy chọn này hướng dẫn Android không cho phép giao thức (IPv4 / IPv6) nếu VPN không đặt bất kỳ địa chỉ IPv4 hoặc IPv6 nào.</string>
+ <string name="title_block_address_families">Chặn IPv6 (hoặc IPv4) nếu không được VPN sử dụng</string>
+ <string name="install_keychain">Cài đặt chứng chỉ mới</string>
+ <string name="as_servername">AS tên máy chủ</string>
+ <string name="server_url">URL máy chủ</string>
+ <string name="request_autologin">Yêu cầu đăng nhập đăng nhập</string>
+ <string name="import_from_as">Nhập hồ sơ từ máy chủ từ xa</string>
+ <string name="no_default_vpn_set">VPN mặc định chưa được đặt. Vui lòng đặt VPN mặc định trước khi bật tùy chọn này.</string>
+ <string name="internal_web_view">WebView nội bộ</string>
+ <string name="faq_ncp">Có một số biến thể của thông báo này tùy thuộc vào tình huống chính xác. Tất cả chúng đều có điểm chung là máy chủ và máy khách không thể thống nhất về một mật mã chung. Các lý do chính là: &lt;ul&gt;&lt;li&gt; Bạn vẫn đang dựa vào thực tế là OpenVPN 2.4 trở lên cho phép BF-CBC trong cấu hình mặc định (nếu không có --cipher được đặt). OpenVPN 2.5 không cho phép nó theo mặc định nữa vì nó là &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;bị hỏng / lỗi thời&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Máy chủ chạy OpenVPN 2.3 (hoặc thậm chí cũ hơn) với --enable-small (OpenVPN ít nhất 4-5 năm tuổi)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;Cấu hình bị hỏng (ví dụ: không khớp dữ liệu-mật mã trên máy khách và máy chủ)&lt;/li&gt; &lt;p&gt; &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN phần thủ công về thương lượng mật mã&lt;/a&gt; giải thích rất rõ các tình huống khác nhau của thương lượng mật mã và những việc cần làm trong tình huống này.&lt;p&gt;thiết bị TP-Link sử dụng phiên bản OpenVPN 2.3.x ít nhất 5 năm tuổi (có thể cũ hơn) trên thiết bị của họ, ngay cả trong các mẫu 2019/2020.&lt;p&gt;Cuối cùng nhưng không kém phần quan trọng, có một nhà cung cấp VPN phổ biến có một máy chủ bị hỏng luôn nói rằng họ đang sử dụng \'BF-CBC\' vì nhà phát triển của họ nghĩ rằng đó là một ý tưởng hay nếu tạo một bản vá thương lượng mật mã độc quyền không tương thích với tiêu chuẩn. OpenVPN.&lt;p&gt;Tóm lại: tất cả các cấu hình lành mạnh sẽ không mắc phải những lỗi này. Nhưng (ngoại trừ máy chủ của nhà cung cấp VPN bị hỏng), khách hàng có thể được thuyết phục vẫn kết nối (sửa lỗi chứ không phải sự cố thực sự). Khi kết nối với các máy chủ cũ hơn, tùy chọn chế độ comaptiblity trong cài đặt cơ bản của VPN sẽ có thể giải quyết hầu hết các vấn đề phổ biến về tính tương thích.</string>
+ <string name="check_peer_fingerprint">Kiểm tra tệp tham chiếu chứng chỉ ngang hàng</string>
+ <string name="fingerprint">(Nhập tệp tham chiếu SHA256 của (các) chứng chỉ máy chủ)</string>
+ <string name="proxy_info">HTTP Proxy: %1$s %2$d</string>
+ <string name="use_alwayson_vpn">Vui lòng sử dụng Tính năng luôn bật của Android để bật VPN tại thời điểm khởi động.</string>
+ <string name="open_vpn_settings">Cài đặt Open VPN</string>
+ <string name="trigger_pending_auth_dialog">Nhấn vào đây để mở một cửa sổ để nhập xác thực bắt buộc bổ sung</string>
+ <string name="compatmode">Chế độ tương thích</string>
+ <string name="compat_mode_label">Chế độ tương thích</string>
+ <string name="loadossllegacy">Tải nhà cung cấp kế thừa OpenSSL</string>
+ <string name="bf_cbc_requires_legacy">Hồ sơ sử dụng BF-CBC phụ thuộc vào nhà cung cấp kế thừa OpenSSL (không được bật).</string>
+ <string name="allow_translations_title">Cho phép các bản dịch do cộng đồng đóng góp</string>
+ <string name="allow_translations_summary">Cho phép cái app dụng được dịch với các bản dịch do cộng đồng đóng góp. Yêu cầu khởi động lại ứng dụng để kích hoạt.</string>
+ <string name="tls_profile">Hồ sơ bảo mật TLS</string>
</resources>
diff --git a/main/src/ui/res/values-zh-rCN/arrays.xml b/main/src/ui/res/values-zh-rCN/arrays.xml
index f669c916..3fff6fbf 100644
--- a/main/src/ui/res/values-zh-rCN/arrays.xml
+++ b/main/src/ui/res/values-zh-rCN/arrays.xml
@@ -17,9 +17,9 @@
<item>外部认证供应商</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>未指定</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>加密方式(--tls-crypt)</item>
<item>TLS 加密 第二版</item>
</string-array>
@@ -28,4 +28,16 @@
<item>断开,保存密码</item>
<item>忽略,重试</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>较新 OpenVpn 版本默认值</item>
+ <item>OpenVPN 2.5.x 对端</item>
+ <item>OpenVPN 2.4.x 对端</item>
+ <item>OpenVPN 2.3.x 和更旧版本的对端</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>不安全(不推荐,允许不安全的加密)</item>
+ <item>旧式(默认)</item>
+ <item>首选(推荐但兼容性有限)</item>
+ <item>Suite B(仅限 NIST 批准的椭圆曲线)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-zh-rCN/strings.xml b/main/src/ui/res/values-zh-rCN/strings.xml
index 8f84caa9..6a065662 100644
--- a/main/src/ui/res/values-zh-rCN/strings.xml
+++ b/main/src/ui/res/values-zh-rCN/strings.xml
@@ -27,8 +27,6 @@
<string name="pkcs12pwquery">PKCS12 密码</string>
<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>
@@ -69,8 +67,6 @@
<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="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>
@@ -205,8 +201,8 @@
<string name="using_proxy">代理使用时长 %1$s %2$s</string>
<string name="use_system_proxy">使用系统代理</string>
<string name="use_system_proxy_summary">使用系统级HTTP/HTTPS 代理配置来连接</string>
- <string name="onbootrestartsummary">如果在系统启动时OpenVPN处于活动状态,那么它会连接指定的VPN。在Android &lt;5.0上使用这个选项前,请阅读连接警告的常见问题。</string>
- <string name="onbootrestart">在系统启动时自动连接</string>
+ <string name="keep_vpn_connected_summary">OpenVPN 将在系统启动时连接指定的 VPN,并尝试保持 VPN 连接。</string>
+ <string name="keep_vpn_connected">保持 VPN 连接</string>
<string name="ignore">忽略</string>
<string name="restart">重新启动</string>
<string name="restart_vpn_after_change">配置文件的变更将在重新连接 VPN 后生效,是否立即(重新)连接?</string>
@@ -262,7 +258,6 @@
<string name="encryption_cipher">加密算法(cipher)</string>
<string name="packet_auth">数据包验证</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>
@@ -361,7 +356,6 @@
<string name="ab_tethering_44">VPN处于活跃状态时,网络共享可以正常工作。共享连接将不使用VPN。</string>
<string name="ab_kitkat_mss">早期的KitKat版本在TCP连接上设置了错误的MSS值 (#61948)。尝试启用mssfix选项来临时解决这个bug。</string>
<string name="ab_proxy">在没有设置DNS服务器时,Android会继续使用您为移动/Wi-Fi连接指定的代理设置。安卓 OpenVPN会在日志中警告你。<p>当VPN设置了DNS服务器时,Android不会使用代理。没有为VPN连接设置代理的API。</p></string>
- <string name="ab_lollipop_reinstall">在被卸载或重新安装时,VPN程序会停止工作;详细信息请参看 #80074</string>
<string name="ab_not_route_to_vpn">配置的客户端IP及其网络掩码中的IP地址的流量不会路由到VPN。 OpenVPN通过显式地添加一个与客户端IP及其网络掩码相对应的路由来提供这个bug的一个临时应变方法。</string>
<string name="ab_persist_tun">当另一个tun设备处于活动状态时打开一个tun设备(用于持久tun支持),将导致设备上的VPNServices崩溃。需要重新启动才能使VPN重新工作。安卓 OpenVPN 试图避免重新打开tun设备,如果真的需要,首先关闭当前的tun再打开新的tun设备,以避免崩溃。这可能导致短暂窗口期,期间数据包通过非vpn连接发送。即使采用这种方法,VPNServices有时也会崩溃,需要重新启动设备。</string>
<string name="ab_secondary_users">对于二级用户,VPN是不会起作用的。</string>
@@ -369,7 +363,6 @@
<string name="ab_vpn_reachability_44">只有目标可以通过VPN,可以到达VPN没有达到。 IPv6的VPN不能在所有工作。</string>
<string name="ab_only_cidr_title">非CIDR路由</string>
<string name="ab_proxy_title">VPNs的代理行为</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>
@@ -440,6 +433,13 @@
<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。此外,OpenSSL 3.0 拒绝 SHA1 算法的签名 。&lt;/p&gt;&lt;p&gt;
+ 您应该尽快更新 VPN 证书,因为 SHA1 在
+ 不久的将来也将不再适用于其他平台。&lt;/p&gt;
+ &lt;p&gt; 如果您真想使用旧证书,请在配置文件的 “身份验证/加密” 部分为 TLS 安全配置选择“不安全”&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>
@@ -489,6 +489,7 @@
<string name="import_from_as">从远程服务器导入配置文件</string>
<string name="no_default_vpn_set">未设置默认 VPN。请在启用此选项之前设置默认 VPN。</string>
<string name="internal_web_view">内部 WebView</string>
+ <string name="faq_ncp">There are some variation of this message depending on the exact situation. They all have in common that server and client could not agree on a common cipher. The main reasons are: &lt;ul&gt;&lt;li&gt; You are still relying on the fact that OpenVPN 2.4 and older allowed BF-CBC in the default configuration (if no --cipher was set). OpenVPN 2.5 does not allow it per default anymore since it is a &lt;a href=\"https://community.openvpn.net/openvpn/wiki/SWEET32\"&gt;broken/outdated cipher&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The server runs OpenVPN 2.3 (or even older) with --enable-small (at least 4-5 year old OpenVPN)&lt;/li&gt;&lt;li&gt;&lt;/ul&gt;Broken configuration (e.g., mismatching data-ciphers on client and server)&lt;/li&gt; &lt;p&gt; The &lt;a href=\"https://github.com/OpenVPN/openvpn/blob/master/doc/man-sections/cipher-negotiation.rst\"&gt;OpenVPN manual section on cipher negotiation&lt;/a&gt; explains the different scenarios of cipher negotiation very well and what to do in these situation.&lt;p&gt;TP-Link devices use a at least 5 year old OpenVPN 2.3.x version (possibly older) on their devices, even in the 2019/2020 models.&lt;p&gt;Last but not least, there is a popular VPN provider that has a broken server that always says it is using \'BF-CBC\' because its developer thought it would be a good idea to create a proprietary cipher negotiation patch that is incompatible with standard OpenVPN.&lt;p&gt;In summary: all sane configurations should not get these errors. But (apart from the broken VPN provider\'s server) the client can be persuaded to still connect (fixing the sympton and not the real problem). When connecting to older servers the comaptiblity mode option in the basic settings of a VPN should be able to address most of the common compatiblity problems.</string>
<string name="check_peer_fingerprint">检查对端证书指纹</string>
<string name="fingerprint">(输入服务器证书的 SHA256 指纹)</string>
<string name="proxy_info">HTTP 代理: %1$s %2$d</string>
@@ -501,4 +502,7 @@
<string name="bf_cbc_requires_legacy">配置文件使用 BF-CBC,它依赖于 OpenSSL legacy provider(未启用)。</string>
<string name="allow_translations_title">允许社区贡献的翻译</string>
<string name="allow_translations_summary">允许应用程序使用翻译社区贡献的翻译。需要重新启动应用程序才能激活。</string>
+ <string name="tls_profile">TLS 安全配置</string>
+ <string name="encrypt_profiles">d</string>
+ <string name="missing_notification_permission">缺少通知权限。这用于显示 VPN 的状态并通知所需的用户交互,例如多因素授权。\n\n单击此消息授予应用程序通知权限</string>
</resources>
diff --git a/main/src/ui/res/values-zh-rTW/arrays.xml b/main/src/ui/res/values-zh-rTW/arrays.xml
index 35a3626b..cb4f34c5 100644
--- a/main/src/ui/res/values-zh-rTW/arrays.xml
+++ b/main/src/ui/res/values-zh-rTW/arrays.xml
@@ -17,9 +17,9 @@
<item>外部認證提供者</item>
</string-array>
<string-array name="tls_directions_entries">
- <item translatable="false">0</item>
- <item translatable="false">1</item>
- <item>不指定</item>
+ <item translatable="false">tls-auth - --direction 0</item>
+ <item translatable="false">tls-auth - --direction 1</item>
+ <item>tls-auth --direction not specified</item>
<item>加密 (--tls-crypt)</item>
<item>TLS 加密 第二版</item>
</string-array>
@@ -28,4 +28,16 @@
<item>中斷連接,記住密碼</item>
<item>忽略,然後重試</item>
</string-array>
+ <string-array name="compat_mode">
+ <item>現代默認值</item>
+ <item>OpenVPN 2.5.x peers</item>
+ <item>OpenVPN 2.4.x 對等體</item>
+ <item>OpenVPN 2.3.x and older peers</item>
+ </string-array>
+ <string-array name="tls_profile_entries">
+ <item>不安全(不推薦,允許不安全的加密)</item>
+ <item>legacy (default)</item>
+ <item>preferred (recommended but limited compabbility)</item>
+ <item>Suite B(僅 NIST 批准的橢圓曲線)</item>
+ </string-array>
</resources>
diff --git a/main/src/ui/res/values-zh-rTW/strings.xml b/main/src/ui/res/values-zh-rTW/strings.xml
index ded9f69f..fd603f60 100644
--- a/main/src/ui/res/values-zh-rTW/strings.xml
+++ b/main/src/ui/res/values-zh-rTW/strings.xml
@@ -27,13 +27,12 @@
<string name="pkcs12pwquery">PKCS12 密碼</string>
<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 選項。請謹慎使用。另外請注意,VPNSettings 設計上無法支援許多 TUN 通道相關的 OpenVPN 設定 。如果您認為有遺漏重要的設定選項,請聯絡作者。</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>
@@ -67,8 +66,6 @@
<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\n若使用 RDN 前綴,「Server」匹配「Server-1」及「Server-2」\n\n若文字欄位為空,將檢查 RDN 的主機名稱。\n\n更多詳情,請參見 OpenVPN 2.3.1+ 的 manpage 中的 —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>
@@ -201,8 +198,6 @@
<string name="using_proxy">使用 Proxy %1$s %2$s</string>
<string name="use_system_proxy">使用系統 Proxy</string>
<string name="use_system_proxy_summary">使用系統設定值的 HTTP/HTTPS Proxy 進行連線。</string>
- <string name="onbootrestartsummary">OpenVPN 將會在開機被啟動時連線到指定的 VPN。在 Android &lt; 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>
@@ -258,7 +253,6 @@
<string name="encryption_cipher">加密法</string>
<string name="packet_auth">封包驗證</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>
@@ -356,7 +350,6 @@
<string name="ab_tethering_44">VPN 啟用時,網路共用仍可運作。網路共用的連線不會使用 VPN。</string>
<string name="ab_kitkat_mss">早期的 Android 4.4(KitKat)版本,對於 TCP 連線設定了錯誤的最大分段大小值(MSS)(#61948)。可嘗試開啟 mssfix 選項來迴避這個問題。</string>
<string name="ab_proxy">Android 在沒有設定 DNS 伺服器時,會繼續使用行動網路/Wi-Fi 連線中的 Proxy 設定。OpenVPN for Android 會對此在紀錄中做出警告。<p>Android 在有設定 DNS 伺服器時不會使用 Proxy。沒有 API 可以為 VPN 連線設定 Proxy。</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>
@@ -364,7 +357,6 @@
<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 的 Proxy 行為</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>
@@ -472,4 +464,10 @@
<string name="external_authenticator">外部身份驗證器</string>
<string name="configure">設定</string>
<string name="extauth_not_configured">未設定外部身份驗證器</string>
+ <string name="faq_killswitch">通常希望在沒有 VPN 的情況下阻止連接。其他應用程序通常為此功能使用“Killswitch”或“無縫隧道”等標記術語。 OpenVPN 和這個應用程序提供了persist-tun,一個實現這個功能的特性。&lt;p&gt;應用程序提供的所有這些方法的問題在於它們只能提供最大的努力,而不是完整的解決方案。在啟動、應用程序崩潰和其他極端情況下,應用程序無法確保此非 VPN 連接塊正常工作。從而給用戶一種虛假的安全感。&lt;p&gt;確保非 VPN 連接被阻止的唯一 &lt;b&gt;&lt;/b&gt; 可靠方法是使用 Android 8.0 或更高版本,並使用可在設置下找到的“阻止沒有 VPN 的連接”設置 &gt; 網絡 &amp; 互聯網 &gt; 高級/VPN &gt; 適用於 Android &gt; 的 OpenVPN啟用始終開啟 VPN,啟用沒有 VPN 的阻止連接Translate all</string>
+ <string name="compatmode">相容性模式</string>
+ <string name="compat_mode_label">相容性模式</string>
+ <string name="allow_translations_title">允許社群貢獻的翻譯</string>
+ <string name="allow_translations_summary">允許使用社群貢獻的翻譯。需要重新啟動應用程式。</string>
+ <string name="encrypt_profiles">嘗試加密儲存空間中的設定檔(如果 Android 作業系統支持)</string>
</resources>
diff --git a/main/src/ui/res/values/refs.xml b/main/src/ui/res/values/refs.xml
deleted file mode 100644
index 5d2ea134..00000000
--- a/main/src/ui/res/values/refs.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- ~ 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>
- <drawable name="ic_menu_close_clear_cancel">@drawable/ic_close_white_24dp</drawable>
- <drawable name="ic_menu_play">@drawable/ic_play_arrow_white_24dp</drawable>
- <drawable name="ic_menu_pause">@drawable/ic_pause_white_24dp</drawable>
- <drawable name="ic_menu_share">@drawable/ic_share_white_24dp</drawable>
- <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_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="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_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>
-
-</resources> \ No newline at end of file
diff --git a/main/src/ui/res/xml/general_settings.xml b/main/src/ui/res/xml/general_settings.xml
index 55eedb94..a1920aaf 100644
--- a/main/src/ui/res/xml/general_settings.xml
+++ b/main/src/ui/res/xml/general_settings.xml
@@ -39,8 +39,8 @@
<CheckBoxPreference
android:defaultValue="false"
android:key="restartvpnonboot"
- android:summary="@string/onbootrestartsummary"
- android:title="@string/onbootrestart"/>
+ android:summary="@string/keep_vpn_connected_summary"
+ android:title="@string/keep_vpn_connected"/>
<CheckBoxPreference
android:defaultValue="true"
diff --git a/misc/Banner_besser_tv.png b/misc/Banner_besser_tv.png
index 39184f71..43b7969e 100644
--- a/misc/Banner_besser_tv.png
+++ b/misc/Banner_besser_tv.png
Binary files differ
diff --git a/misc/Banner_besser_tv.psd b/misc/Banner_besser_tv.psd
index b2a0d0ce..5703ba19 100644
--- a/misc/Banner_besser_tv.psd
+++ b/misc/Banner_besser_tv.psd
Binary files differ
diff --git a/misc/code-transparency.pem b/misc/code-transparency.pem
new file mode 100644
index 00000000..ee888bc4
--- /dev/null
+++ b/misc/code-transparency.pem
@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIIJDXa55a+Ag0wDQYJKoZIhvcNAQEMBQAwdDELMAkGA1UE
+BhMCREUxDDAKBgNVBAgTA05SVzESMBAGA1UEBxMJUGFkZXJib3JuMRowGAYDVQQK
+ExFBdmlhbiBJUCBDYXJyaWVyczEQMA4GA1UECxMHUkZDMTE0OTEVMBMGA1UEAxMM
+QXJuZSBTY2h3YWJlMCAXDTIzMDcyNzA5MzEyNloYDzIwNTMwNzE5MDkzMTI2WjB0
+MQswCQYDVQQGEwJERTEMMAoGA1UECBMDTlJXMRIwEAYDVQQHEwlQYWRlcmJvcm4x
+GjAYBgNVBAoTEUF2aWFuIElQIENhcnJpZXJzMRAwDgYDVQQLEwdSRkMxMTQ5MRUw
+EwYDVQQDEwxBcm5lIFNjaHdhYmUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQC8FZVaV1aEy3SmIWQSn0xVjn9yrhOyQOZ2AasqB9EH1ylSZs4zii/ePiBE
+4g/auhDPnn/K1hWYevCJr/7zvJVaaocpl0hLqXHCQr7tSifREDM8lHeXYlW67Bbx
+sFFREvHfDyAHM5CYDzIEDWrHNp2mBFRLLP1fgl5bZ8r50UCyNdvgIHozDwXITdnR
+FeTSzIugZaLL+tGvtVU3Mc03bHhFp9mVbB3ZRjVnZsQ8Abs++zimT9srDqRFkbC0
+F1N+Syicw3JRI2trLB6Fezc4lCwAmeKQRIY+QOdCZZSaD5+iyINcXg63QJRkGdoL
+GHhp6wCiJD2xwpuiQLVVzF1sIOUJWq0tcjazjXo3axsHbMhRZNCwspq2wUTgLtuZ
+xSWT1enJF+1o2Y4ecR+aaKorppFe00Bhylg1+tj0CWfn6rwee1jkyf+hFDIuqvZi
+Mukbeke7K3ADK8JdJ6xl9FbZeafFxGHiwt+Ftc5oDariC3LR3gN0ochrNiNI20qS
+3ZAKeHaRLy6AUP8ccvD+KQf439JVXquDdlCgFkE7uSv136cY3HVk1QPzzDJFwFoQ
+TNdLajd2YJD1GXZzinT+HOjrLt61P+qAY1cmsxaKdBdBRXFiRyUaZbBUD+4omcvy
+Uoz8nWXUdwqyEjtYeq+XmL4HX3t3JhNy8zfyLpf6Xa4y0Zdq9QIDAQABoyEwHzAd
+BgNVHQ4EFgQUoivC+NgNB1xqM76DTI3QR6DCgFIwDQYJKoZIhvcNAQEMBQADggIB
+ALo1KRzLjgbpK1aZPfJJ63R2CQLX2KpolHO4GZxcXgZCv2h9V45aiLO6nKUDL6Dc
+6A0izgxtNQlwuloBTb0fMIS/A9Pl1p8/M1JvYNC1zDWVBKeUMkEeBwVCo8rn8giG
+GtdDNLJmFv5bqgS6ZF2av2pZnkr2Q2sAiSFVpBzFjP2T5/WNkO3O7ybTb+c5VeQE
+DuOpJawd+/5m4SjYmthARBX57gpDZiGR/Usid2FHrSSXmddbFkD8tbZUM0AvSW4z
+8TX2v3eO3PJPov5uksV4USNCUxPx7KfVQDsvbGJyup9I08fvVrAI1ZJGuk33QGLa
+Uy2U7UuUGmarOpN9xBrTWkGw/6J+XdJbArRV3N+TjzAs0cCCcqp94+W7aXb7Bvna
+ssXnvvd8Ph2DVocv4msk8NNnGh4Ss2wbfOM1j7hlka0szARjOzribm3oagu5dQmE
+b+CV2mE9RokP3co1hMIf4GAFQM+Ul+4nzz2ogQ7JJfkbLJFnM0WUUzpeKLmB3UD6
+3kWlS6ZsDrqXUDNwUJ0Fn4Kcg0YYKGtQGqUngcwYlU8iuH+WU/cf2XuLM/r8K94l
+P7u5iBz+Cot3lyKMv7GY4huboCe91i4njrjUJkYbyXdNS5WvZoznvg/YsAYBsYk8
+X3vLORq2tRoP4oMEEGEussYdnpWeqYroHJ9FdDM7Sv7e
+-----END CERTIFICATE----- \ No newline at end of file
diff --git a/misc/ic_launcher-playstore.png b/misc/ic_launcher-playstore.png
new file mode 100644
index 00000000..1b670625
--- /dev/null
+++ b/misc/ic_launcher-playstore.png
Binary files differ
diff --git a/misc/logo_arne3.svg b/misc/logo_arne3.svg
new file mode 100644
index 00000000..e201ef71
--- /dev/null
+++ b/misc/logo_arne3.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 26.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 60.9 60.9" style="enable-background:new 0 0 60.9 60.9;" xml:space="preserve">
+<style type="text/css">
+ .st0{display:none;}
+ .st1{display:inline;fill:#F2F2F2;}
+ .st2{display:inline;fill:#F68BFF;}
+ .st3{display:inline;}
+ .st4{fill:#F08327;}
+ .st5{fill:#1E3863;}
+ .st6{fill:#1D3863;}
+ .st7{fill:#F08226;}
+ .st8{fill:#21325A;}
+ .st9{fill:#203159;}
+ .st10{fill:#20315A;}
+ .st11{display:inline;fill:#1E3863;}
+ .st12{display:inline;fill:#F08327;}
+</style>
+<g id="Squircle" class="st0">
+ <path class="st1" d="M42.1,60.9H18.8C8.5,60.9,0,52.4,0,42.1V18.8C0,8.5,8.5,0,18.8,0H42c10.3,0,18.8,8.5,18.8,18.8V42
+ C60.9,52.4,52.4,60.9,42.1,60.9z"/>
+</g>
+<g id="Leerer_Rahmen" class="st0">
+ <rect x="-23.6" y="-23.3" class="st2" width="108" height="108"/>
+</g>
+<g id="Ebene_1_00000173842194180829500080000010770674875624401804_" class="st0">
+ <g id="logo_x5F_fast_x5F_fertig_x5F_mit_Ohren_x5F_2_1_" class="st3">
+ <g>
+ <path class="st4" d="M14.4,30.5c-0.8,0-1.6,0.1-2.4,0.1c-1.9,0-3.7,0-5.6,0c0-0.7,0-1.5,0.1-2.2c0.4-4.3,1.9-8.2,4.4-11.7
+ c0.7-1,0.7-1,0-2C9.7,12.8,8.4,11,7.2,9.1C7,8.8,6.9,8.5,6.9,8.2c0-0.7,0.6-1.2,1.3-0.9C8.6,7.4,9,7.7,9.2,8
+ c1.3,1.8,2.5,3.7,3.8,5.6c0.1,0.1,0.1,0.2,0.2,0.3c4.9-4.8,10.7-7.3,17.5-7.2c6.8,0.1,12.6,2.7,17.4,7.7c0.5-0.8,1.1-1.6,1.6-2.3
+ c0.8-1.2,1.6-2.4,2.4-3.5c0.2-0.3,0.5-0.5,0.8-0.7C53.3,7.7,53.7,7.7,54,8c0.4,0.3,0.5,0.7,0.3,1.2c-0.1,0.2-0.2,0.4-0.3,0.6
+ c-1.3,2-2.6,4-4,5.9c-0.3,0.4-0.3,0.6,0,1.1c2.3,3.2,3.7,6.9,4.3,10.8c0.1,1,0.2,2,0.3,3c-0.2,0-0.3,0.1-0.4,0.1
+ c-2.4,0-4.9,0-7.3,0c-0.1,0-0.3,0-0.4-0.1c-0.3-2-0.8-3.9-1.7-5.7c-1.3-2.9-3.1-5.5-5.6-7.5c-2.2-1.7-4.6-2.8-7.3-3.1
+ c-2.4-0.3-4.7,0.2-6.9,1.2c-1.2,0.5-2.2,1.3-3.2,2.1c-1.2,1-2.4,2.1-3.3,3.4c-0.8,1.3-1.6,2.7-2.2,4
+ C15.2,26.8,14.7,28.6,14.4,30.5z"/>
+ <path class="st5" d="M14.4,30.5c0.3-1.9,0.8-3.8,1.6-5.5c0.7-1.4,1.4-2.7,2.2-4c0.9-1.4,2-2.4,3.3-3.4c1-0.8,2-1.5,3.2-2.1
+ c2.2-1,4.5-1.5,6.9-1.2c2.7,0.3,5.2,1.3,7.3,3.1c2.6,2,4.3,4.6,5.6,7.5c0.8,1.8,1.3,3.7,1.7,5.7l0,0l0,0c-0.1,0-0.3-0.1-0.4-0.1
+ c-2.3,0-4.6,0-6.9,0l0,0c0,0,0-0.1-0.1-0.1c-0.5-1.6-1.1-3.2-2.1-4.7s-2.1-2.9-3.8-3.7c-1.5-0.7-3-0.6-4.5,0
+ c-1.7,0.8-2.8,2.2-3.8,3.7s-1.5,3.1-2.1,4.7c-2.5,0-5,0-7.5,0C14.9,30.5,14.7,30.5,14.4,30.5L14.4,30.5L14.4,30.5z"/>
+ <path class="st6" d="M37,47.3c-4.2,0-8.3,0-12.5,0c1.4-3.3,2.8-6.6,4.3-10c-1.9-0.7-3.3-2-3.9-3.9c-0.4-1.3-0.4-2.6,0-3.9
+ c0.9-2.6,3.3-4.1,5.8-4.1c2.7,0,5,1.9,5.7,4.4c0.4,1.6,0.3,3.1-0.5,4.6c-0.8,1.4-2,2.4-3.5,2.9C33.9,40.7,35.4,44,37,47.3z"/>
+ <path class="st7" d="M52.3,32.5c0.7,0,1.4,0,2.1,0c0,7.4,0,14.8,0,22.1c-2.6,0-5.2,0-7.8,0c0-0.2,0-0.4,0-0.6
+ c0-6.9,0-13.9,0-20.8c0-0.2,0-0.5,0-0.7C46.6,32.5,50.3,32.5,52.3,32.5z"/>
+ <path class="st4" d="M14.2,54.5c-0.1,0-0.2,0.1-0.3,0.1c-2.5,0-4.9,0-7.4,0c0-7.4,0-14.7,0-22.1c0.1,0,0.2,0,0.3,0
+ c2.4,0,4.8,0,7.2,0c0.1,0,0.2,0,0.2,0c0,0.2-0.1,0.5-0.1,0.7C14.2,40.3,14.2,47.4,14.2,54.5z"/>
+ <path class="st6" d="M14.2,54.5c0-7.1,0-14.2,0-21.3c0-0.2,0-0.5,0.1-0.7c0.9,0,1.7,0,2.6,0c1.8,0,3.5,0,5.3,0
+ c-0.4,2.4-0.6,4.7-0.5,7.1c0,0.2-0.1,0.3-0.1,0.5c0,2.2,0,4.4,0,6.6c0,0.2,0.1,0.3,0.1,0.5c-0.1,0.1-0.1,0.2-0.2,0.3
+ c-2.3,2.3-4.6,4.6-6.9,6.9C14.4,54.4,14.3,54.5,14.2,54.5z"/>
+ <path class="st6" d="M46.5,44.1c0,3.3,0,10.2,0,10.5c-0.9-1-1.6-1.8-2.4-2.7c-1.4-1.6-2.8-3.2-4.1-4.8c-0.1-0.1-0.1-0.3-0.1-0.5
+ c0-2.6,0-5.1,0-7.7c0-2.2-0.1-4.3-0.6-6.5c0.1,0,0.2,0,0.2,0c2.2,0,7,0,7,0S46.5,40.3,46.5,44.1z"/>
+ <path class="st8" d="M38.9,30.5c2.3,0,4.6,0,6.9,0c0.1,0,0.3,0.1,0.4,0.1c-0.1,0-0.3,0.1-0.4,0.1c-2.1,0-4.3,0-6.4,0
+ C39.2,30.6,39,30.5,38.9,30.5z"/>
+ <path class="st9" d="M14.5,30.5c0.2,0,0.4-0.1,0.6-0.1c2.5,0,5,0,7.5,0c-0.1,0-0.2,0.1-0.3,0.1c-2.5,0-5,0-7.5,0
+ C14.7,30.6,14.6,30.6,14.5,30.5z"/>
+ <path class="st10" d="M21.6,47.2c0-0.2-0.1-0.3-0.1-0.5c0-2.2,0-4.4,0-6.6c0-0.2,0.1-0.3,0.1-0.5C21.6,42.1,21.6,44.6,21.6,47.2z
+ "/>
+ <path class="st8" d="M38.8,30.4c0,0,0,0.1,0.1,0.1C38.9,30.4,38.9,30.4,38.8,30.4z"/>
+ </g>
+ </g>
+</g>
+<g id="Bunt" class="st0">
+ <path class="st11" d="M36.3,47.9c-4.1,0-7.7,0-11.8,0c-0.3,0-0.8-0.8-0.6-1.2c1.2-2.9,2.5-5.7,3.7-8.6c0.7-1.3-0.3-1.8-0.8-2
+ c-1.4-0.8-2.5-2.1-3-3.7c-0.5-1.4-0.5-2.9,0-4.3c1-3,3.7-4.6,6.5-4.6c3,0,5.6,2.1,6.4,4.9c0.5,1.8,0.3,3.5-0.6,5.1
+ c-0.5,0.9-1.2,1.7-2,2.3c-0.4,0.2-1.9,1-1.3,2.3c1.3,2.9,2.6,5.8,4,8.7C37.1,47.1,36.7,47.9,36.3,47.9z"/>
+ <path class="st12" d="M19.2,34.5"/>
+ <path class="st12" d="M37.5,30.4C37.5,30.5,37.5,30.5,37.5,30.4C37.5,30.5,37.5,30.5,37.5,30.4z"/>
+ <path class="st12" d="M19.2,51.5h-7.5c-0.8,0-1.5-0.7-1.5-1.5V35.3c0-0.8,0.7-1.5,1.5-1.5h7.5c0.8,0,1.5,0.7,1.5,1.5V50
+ C20.7,50.8,20,51.5,19.2,51.5z"/>
+ <path class="st12" d="M41.7,51.5h7.5c0.8,0,1.5-0.7,1.5-1.5V35.3c0-0.8-0.7-1.5-1.5-1.5h-7.5c-0.8,0-1.5,0.7-1.5,1.5V50
+ C40.2,50.8,40.9,51.5,41.7,51.5z"/>
+ <path class="st12" d="M47.9,19.9c-1.2-1.9,0.7-3,2.6-5c1.3-1.3,1-3,0.3-3.7c-0.7-0.6-2.4-0.9-4.4,1c-1.7,2.5-3.8,1.8-4.3,1.4
+ c-3.4-2.4-7.3-3.7-11.7-3.8l0,0l0,0l0,0l0,0c-4.4,0.1-8.3,1.3-11.7,3.8c-0.5,0.3-2.5,1.1-4.3-1.4c-2-2-3.6-1.7-4.4-1
+ c-0.8,0.7-1.1,2.3,0.3,3.7c1.9,2,3.8,3.1,2.6,5c-1.6,2.4-2.5,5.2-2.9,8.1c-0.1,0.4-0.1,0.8-0.1,1.2c-0.1,0.7,0.5,1.4,1.3,1.4
+ c2.1,0,6.2,0.1,7.9,0.1c0.7,0,1.3-0.5,1.4-1.2c0.4-3.1,2.2-10.3,9.9-10.3s9.5,7.2,9.9,10.3c0.1,0.7,0.7,1.2,1.4,1.2
+ c1.7,0,5.8,0,7.9-0.1c0.8,0,1.3-0.7,1.3-1.4c0-0.4-0.1-0.8-0.1-1.2C50.4,25.1,49.5,22.3,47.9,19.9z"/>
+</g>
+<g id="Altes_Android" class="st0">
+ <path class="st11" d="M36.3,47.9c-4.1,0-7.7,0-11.8,0c-0.3,0-0.8-0.8-0.6-1.2c1.2-2.9,2.5-5.7,3.7-8.6c0.7-1.3-0.3-1.8-0.8-2
+ c-1.4-0.8-2.5-2.1-3-3.7c-0.5-1.4-0.5-2.9,0-4.3c1-3,3.7-4.6,6.5-4.6c3,0,5.6,2.1,6.4,4.9c0.5,1.8,0.3,3.5-0.6,5.1
+ c-0.5,0.9-1.2,1.7-2,2.3c-0.4,0.2-1.9,1-1.3,2.3c1.3,2.9,2.6,5.8,4,8.7C37.1,47.1,36.7,47.9,36.3,47.9z"/>
+ <path class="st12" d="M19.2,34.5"/>
+ <path class="st12" d="M37.5,30.4C37.5,30.5,37.5,30.5,37.5,30.4C37.5,30.5,37.5,30.5,37.5,30.4z"/>
+ <path class="st12" d="M19.2,51.5h-7.5c-0.8,0-1.5-0.7-1.5-1.5V35.3c0-0.8,0.7-1.5,1.5-1.5h7.5c0.8,0,1.5,0.7,1.5,1.5V50
+ C20.7,50.8,20,51.5,19.2,51.5z"/>
+ <path class="st12" d="M41.7,51.5h7.5c0.8,0,1.5-0.7,1.5-1.5V35.3c0-0.8-0.7-1.5-1.5-1.5h-7.5c-0.8,0-1.5,0.7-1.5,1.5V50
+ C40.2,50.8,40.9,51.5,41.7,51.5z"/>
+ <path class="st12" d="M47.9,19.9c-1.2-1.9,0.7-3,2.6-5c1.3-1.3,1-3,0.3-3.7c-0.7-0.6-2.4-0.9-4.4,1c-1.7,2.5-3.8,1.8-4.3,1.4
+ c-3.4-2.4-7.3-3.7-11.7-3.8l0,0l0,0l0,0l0,0c-4.4,0.1-8.3,1.3-11.7,3.8c-0.5,0.3-2.5,1.1-4.3-1.4c-2-2-3.6-1.7-4.4-1
+ c-0.8,0.7-1.1,2.3,0.3,3.7c1.9,2,3.8,3.1,2.6,5c-1.6,2.4-2.5,5.2-2.9,8.1c-0.1,0.4-0.1,0.8-0.1,1.2c-0.1,0.7,0.5,1.4,1.3,1.4
+ c2.1,0,6.2,0.1,7.9,0.1c0.7,0,1.3-0.5,1.4-1.2c0.4-3.1,2.2-10.3,9.9-10.3s9.5,7.2,9.9,10.3c0.1,0.7,0.7,1.2,1.4,1.2
+ c1.7,0,5.8,0,7.9-0.1c0.8,0,1.3-0.7,1.3-1.4c0-0.4-0.1-0.8-0.1-1.2C50.4,25.1,49.5,22.3,47.9,19.9z"/>
+</g>
+<g id="sw">
+ <g>
+ <path d="M36.3,47.9c-4.1,0-7.7,0-11.8,0c-0.3,0-0.8-0.8-0.6-1.2c1.2-2.9,2.5-5.7,3.7-8.6c0.7-1.3-0.3-1.8-0.8-2
+ c-1.4-0.8-2.5-2.1-3-3.7c-0.5-1.4-0.5-2.9,0-4.3c1-3,3.7-4.6,6.5-4.6c3,0,5.6,2.1,6.4,4.9c0.5,1.8,0.3,3.5-0.6,5.1
+ c-0.5,0.9-1.2,1.7-2,2.3c-0.4,0.2-1.9,1-1.3,2.3c1.3,2.9,2.6,5.8,4,8.7C37.1,47.1,36.7,47.9,36.3,47.9z"/>
+ <path d="M19.2,34.5"/>
+ <path d="M37.5,30.4C37.5,30.5,37.5,30.5,37.5,30.4C37.5,30.5,37.5,30.5,37.5,30.4z"/>
+ <path d="M19.1,51.5h-7.5c-0.8,0-1.5-0.7-1.5-1.5V35.3c0-0.8,0.7-1.5,1.5-1.5h7.5c0.8,0,1.5,0.7,1.5,1.5V50
+ C20.6,50.8,19.9,51.5,19.1,51.5z"/>
+ <path d="M41.7,51.5h7.5c0.8,0,1.5-0.7,1.5-1.5V35.3c0-0.8-0.7-1.5-1.5-1.5h-7.5c-0.8,0-1.5,0.7-1.5,1.5V50
+ C40.2,50.8,40.9,51.5,41.7,51.5z"/>
+ <path d="M47.9,19.9c-1.2-1.9,0.7-3,2.6-5c1.3-1.3,1-3,0.3-3.7c-0.7-0.6-2.4-0.9-4.4,1c-1.7,2.5-3.8,1.8-4.3,1.4
+ c-3.4-2.4-7.3-3.7-11.7-3.8l0,0l0,0l0,0l0,0c-4.4,0.1-8.3,1.3-11.7,3.8c-0.5,0.3-2.5,1.1-4.3-1.4c-2-2-3.6-1.7-4.4-1
+ c-0.8,0.7-1.1,2.3,0.3,3.7c1.9,2,3.8,3.1,2.6,5c-1.6,2.4-2.5,5.2-2.9,8.1c-0.1,0.4-0.1,0.8-0.1,1.2c-0.1,0.7,0.5,1.4,1.3,1.4
+ c2.1,0,6.2,0.1,7.9,0.1c0.7,0,1.3-0.5,1.4-1.2c0.4-3.1,2.2-10.3,9.9-10.3s9.5,7.2,9.9,10.3c0.1,0.7,0.7,1.2,1.4,1.2
+ c1.7,0,5.8,0,7.9-0.1c0.8,0,1.3-0.7,1.3-1.4c0-0.4-0.1-0.8-0.1-1.2C50.4,25.1,49.5,22.3,47.9,19.9z"/>
+ </g>
+</g>
+</svg>
diff --git a/misc/logo_bunt.svg b/misc/logo_bunt.svg
new file mode 100644
index 00000000..6d0d57bf
--- /dev/null
+++ b/misc/logo_bunt.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="a" data-name="Bunt" xmlns="http://www.w3.org/2000/svg" width="108" height="108" viewBox="0 0 108 108">
+ <defs>
+ <style>
+ .b {
+ fill: #f08327;
+ }
+
+ .c {
+ fill: #1e3863;
+ }
+ </style>
+ </defs>
+ <path class="c" d="M59.87,71.24h-11.77c-.27,0-.76-.78-.59-1.16,1.23-2.87,2.46-5.71,3.69-8.58,.74-1.27-.35-1.8-.77-2.04-1.44-.83-2.47-2.06-3.02-3.73-.48-1.44-.48-2.9,.02-4.34,1.03-2.96,3.69-4.62,6.54-4.6,2.98,.02,5.62,2.1,6.4,4.94,.48,1.77,.32,3.49-.55,5.11-.51,.95-1.16,1.73-2.01,2.28-.35,.23-1.9,1.03-1.33,2.3,1.33,2.9,2.65,5.76,3.98,8.66,.18,.39-.21,1.16-.59,1.16Z"/>
+ <path class="b" d="M61.05,53.75s.04,.06,.05,.09c-.02-.03-.04-.06-.05-.09Z"/>
+ <rect class="b" x="33.77" y="57.16" width="10.47" height="17.62" rx="1.5" ry="1.5"/>
+ <rect class="b" x="63.76" y="57.16" width="10.47" height="17.62" rx="1.5" ry="1.5" transform="translate(138 131.95) rotate(-180)"/>
+ <path class="b" d="M71.49,43.19c-1.22-1.88,.7-2.97,2.59-4.98,1.33-1.33,1.04-2.98,.26-3.66-.74-.64-2.4-.93-4.36,1.03-1.74,2.5-3.79,1.75-4.28,1.41-3.41-2.43-7.3-3.72-11.7-3.77h0s0,0,0,0,0,0,0,0h0c-4.4,.06-8.29,1.34-11.7,3.77-.49,.35-2.54,1.09-4.28-1.41-1.96-1.96-3.61-1.68-4.36-1.03-.79,.68-1.07,2.33,.26,3.66,1.89,2.01,3.81,3.09,2.59,4.98-1.58,2.44-2.47,5.19-2.86,8.11-.06,.41-.09,.83-.13,1.24-.06,.75,.52,1.39,1.27,1.41,2.15,.03,6.21,.07,7.92,.08,.7,0,1.29-.5,1.39-1.19,.44-3.08,2.18-10.28,9.91-10.28s9.46,7.2,9.91,10.28c.1,.69,.69,1.19,1.39,1.19,1.71,0,5.77-.05,7.92-.08,.75-.01,1.33-.66,1.27-1.41-.03-.42-.07-.83-.13-1.24-.39-2.92-1.28-5.67-2.86-8.11Z"/>
+</svg> \ No newline at end of file
diff --git a/misc/logo_sw.svg b/misc/logo_sw.svg
new file mode 100644
index 00000000..421c9561
--- /dev/null
+++ b/misc/logo_sw.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg id="a" data-name="sw" xmlns="http://www.w3.org/2000/svg" width="108" height="108" viewBox="0 0 108 108">
+ <path d="M59.87,71.24h-11.77c-.27,0-.76-.78-.59-1.16,1.23-2.87,2.46-5.71,3.69-8.58,.74-1.27-.35-1.8-.77-2.04-1.44-.83-2.47-2.06-3.02-3.73-.48-1.44-.48-2.9,.02-4.34,1.03-2.96,3.69-4.62,6.54-4.6,2.98,.02,5.62,2.1,6.4,4.94,.48,1.77,.32,3.49-.55,5.11-.51,.95-1.16,1.73-2.01,2.28-.35,.23-1.9,1.03-1.33,2.3,1.33,2.9,2.65,5.76,3.98,8.66,.18,.39-.21,1.16-.59,1.16Z"/>
+ <path d="M61.05,53.75s.04,.06,.05,.09c-.02-.03-.04-.06-.05-.09Z"/>
+ <rect x="33.66" y="57.16" width="10.47" height="17.62" rx="1.5" ry="1.5"/>
+ <rect x="63.76" y="57.16" width="10.47" height="17.62" rx="1.5" ry="1.5" transform="translate(138 131.95) rotate(-180)"/>
+ <path d="M71.49,43.19c-1.22-1.88,.7-2.97,2.59-4.98,1.33-1.33,1.04-2.98,.26-3.66-.74-.64-2.4-.93-4.36,1.03-1.74,2.5-3.79,1.75-4.28,1.41-3.41-2.43-7.3-3.72-11.7-3.77h0s0,0,0,0,0,0,0,0h0c-4.4,.06-8.29,1.34-11.7,3.77-.49,.35-2.54,1.09-4.28-1.41-1.96-1.96-3.61-1.68-4.36-1.03-.79,.68-1.07,2.33,.26,3.66,1.89,2.01,3.81,3.09,2.59,4.98-1.58,2.44-2.47,5.19-2.86,8.11-.06,.41-.09,.83-.13,1.24-.06,.75,.52,1.39,1.27,1.41,2.15,.03,6.21,.07,7.92,.08,.7,0,1.29-.5,1.39-1.19,.44-3.08,2.18-10.28,9.91-10.28s9.46,7.2,9.91,10.28c.1,.69,.69,1.19,1.39,1.19,1.71,0,5.77-.05,7.92-.08,.75-.01,1.33-.66,1.27-1.41-.03-.42-.07-.83-.13-1.24-.39-2.92-1.28-5.67-2.86-8.11Z"/>
+</svg> \ No newline at end of file
diff --git a/remoteExample/build.gradle b/remoteExample/build.gradle
index 453dd529..179555bb 100644
--- a/remoteExample/build.gradle
+++ b/remoteExample/build.gradle
@@ -3,18 +3,23 @@
* Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
*/
-apply plugin: 'com.android.application'
-
+plugins {
+ alias libs.plugins.android.application
+}
android {
- compileSdkVersion 30
+ compileSdkVersion 33
defaultConfig {
minSdkVersion 15
- targetSdkVersion 30
+ targetSdkVersion 33
versionCode 1
versionName "1.0"
}
+ namespace 'de.blinkt.openvpn.remote'
+ buildFeatures {
+ aidl true
+ }
}
dependencies {
diff --git a/remoteExample/src/main/AndroidManifest.xml b/remoteExample/src/main/AndroidManifest.xml
index 8ba7ec79..311afc12 100644
--- a/remoteExample/src/main/AndroidManifest.xml
+++ b/remoteExample/src/main/AndroidManifest.xml
@@ -4,8 +4,7 @@
~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="de.blinkt.openvpn.remote" >
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
@@ -17,6 +16,7 @@
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
+ android:exported="true"
android:name="de.blinkt.openvpn.remote.MainActivity"
android:label="@string/app_name" >
<intent-filter>
diff --git a/runcoverity.sh b/runcoverity.sh
index f6622155..b716e548 100755
--- a/runcoverity.sh
+++ b/runcoverity.sh
@@ -12,8 +12,9 @@ cov-configure --config .coverity/cfg.xml --kotlin
cov-configure --config .coverity/cfg.xml --java
./gradlew -b build.gradle.kts --no-daemon clean
-cov-build --dir .coverity/idir --config .coverity/cfg.xml ./gradlew -b build.gradle.kts --no-daemon assembleUiRelease
+cov-build --dir .coverity/idir --config .coverity/cfg.xml ./gradlew -b build.gradle.kts --no-daemon assembleUiOvpn23Release
-cov-analyze --dir .coverity/idir --all --strip-path ${PWD}/main/src/main/cpp --strip-path ${PWD}/main/src --strip-path ${PWD} --strip-path /Users/arne/oss/android-sdk-macosx/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/
+NDK_VER=${NDK_VER:-25.2.9519653}
+cov-analyze --dir .coverity/idir --all --strip-path ${PWD}/main/src/main/cpp --strip-path ${PWD}/main/src --strip-path ${PWD} --strip-path ${ANDROID_HOME}/ndk/${NDK_VER}/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/ --strip-path ${ANDROID_HOME}/ndk/${NDK_VER}/toolchains/llvm/prebuilt/linux-x86_64/sysroot
cov-commit-defects --dir .coverity/idir --ssl -host ${COVERITY_CONNECT_HOST} --stream icsopenvpn-styx-master --auth-key-file ~/.coverity/auth-key.txt
diff --git a/settings.gradle.kts b/settings.gradle.kts
index b4b170fe..51e9dcbd 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -2,6 +2,22 @@
* Copyright (c) 2012-2016 Arne Schwabe
* Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
*/
+pluginManagement {
+ repositories {
+ gradlePluginPortal()
+ google()
+ mavenCentral()
+
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ maven(url = "https://jitpack.io")
+ }
+}
include(":main")
include(":tlsexternalcertprovider")
diff --git a/tlsexternalcertprovider/build.gradle b/tlsexternalcertprovider/build.gradle
index ddf7cafd..bb50eb03 100644
--- a/tlsexternalcertprovider/build.gradle
+++ b/tlsexternalcertprovider/build.gradle
@@ -3,20 +3,17 @@
* Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
*/
-apply plugin: 'com.android.application'
-
-ext {
- bouncycastleVersion = '1.49'
+plugins {
+ alias libs.plugins.android.application
}
android {
- compileSdkVersion 27
-
+ compileSdkVersion 34
defaultConfig {
applicationId "de.blinkt.externalcertprovider"
- minSdkVersion 16
- targetSdkVersion 27
+ minSdkVersion 21
+ targetSdkVersion 34
versionCode 1
versionName "1.0"
@@ -38,6 +35,10 @@ android {
lint {
abortOnError false
}
+ namespace 'de.blinkt.externalcertprovider'
+ buildFeatures {
+ aidl true
+ }
// This is just a demo package, don't care about it being perfect
}
@@ -45,12 +46,12 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation (
- //'org.bouncycastle:bcprov-jdk15on:' + bouncycastleVersion,
- //'org.bouncycastle:bcprov-ext-jdk15on:' + bouncycastleVersion,
- //'org.bouncycastle:bcpkix-jdk15on:' + bouncycastleVersion,
- 'org.bouncycastle:bcmail-jdk15on:' + bouncycastleVersion,
- //'org.bouncycastle:bcpg-jdk15on:' + bouncycastleVersion
+// libs.org.bouncycastle.bcprov.jdk15on,
+// libs.org.bouncycastle.bcprov.ext.jdk15on,
+// libs.org.bouncycastle.bcpkix.jdk15on,
+ libs.org.bouncycastle.bcmail.jdk15on,
+// libs.org.bouncycastle.bcpg.jdk15on,
)
- testImplementation 'junit:junit:4.12'
+ testImplementation(libs.junit)
}
diff --git a/tlsexternalcertprovider/src/androidTest/java/de/blinkt/externalcertprovider/ExampleInstrumentedTest.java b/tlsexternalcertprovider/src/androidTest/java/de/blinkt/externalcertprovider/ExampleInstrumentedTest.java
deleted file mode 100644
index 8d3a21f1..00000000
--- a/tlsexternalcertprovider/src/androidTest/java/de/blinkt/externalcertprovider/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2012-2018 Arne Schwabe
- * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
- */
-
-package de.blinkt.externalcertprovider;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("de.blinkt.externalcertprovider", appContext.getPackageName());
- }
-}
diff --git a/tlsexternalcertprovider/src/main/AndroidManifest.xml b/tlsexternalcertprovider/src/main/AndroidManifest.xml
index 47e15ac5..79b065e6 100644
--- a/tlsexternalcertprovider/src/main/AndroidManifest.xml
+++ b/tlsexternalcertprovider/src/main/AndroidManifest.xml
@@ -4,8 +4,7 @@
~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
- package="de.blinkt.externalcertprovider">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<application
@@ -33,8 +32,7 @@
</activity>
- <service android:name=".ExternalCertService"
- tools:ignore="ExportedService">
+ <service android:name=".ExternalCertService" android:exported="true">
<intent-filter>
<action android:name="de.blinkt.openvpn.api.ExternalCertificateProvider"/>
</intent-filter>