summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2018-02-01 16:45:45 +0100
committercyBerta <cyberta@riseup.net>2018-02-01 16:45:45 +0100
commita73104923c7313243ae8828ced39f0ac223dc1ff (patch)
tree37ddaeafae2fcd6df6b3a4b826656701a77c3648
parent498e9a6264e51ce36c11df7587d6f82395172ac7 (diff)
parent97e2e6674ad1aff81b7b7d94e96594a532c40367 (diff)
#8832 update upstream deps
-rw-r--r--.gitignore1
-rw-r--r--.gitmodules23
-rw-r--r--.travis.yml44
-rw-r--r--CONTRIBUTING2
-rw-r--r--ISSUE_TEMPLATE.md7
-rw-r--r--README.md12
-rw-r--r--build.gradle2
-rw-r--r--doc/README.txt72
-rw-r--r--gradle/wrapper/gradle-wrapper.properties9
-rw-r--r--main/build.gradle109
-rw-r--r--main/jni/Android.mk4
-rw-r--r--main/jni/Application.mk2
-rwxr-xr-xmain/misc/build-native.sh57
-rwxr-xr-xmain/misc/fetchtranslations.sh4
-rwxr-xr-xmain/misc/genFAQ.py2
m---------main/openssl0
m---------main/openvpn0
-rw-r--r--main/ovpn3/Android.mk41
-rw-r--r--main/src/main/AndroidManifest.xml69
-rw-r--r--main/src/main/cpp/CMakeLists.txt207
-rw-r--r--main/src/main/cpp/GetGitRevisionDescription.cmake169
-rw-r--r--main/src/main/cpp/GetGitRevisionDescription.cmake.in42
m---------main/src/main/cpp/asio0
-rw-r--r--main/src/main/cpp/jbcrypto/jbcrypto.cpp (renamed from main/jni/jbcrypto.cpp)56
-rw-r--r--main/src/main/cpp/lzo.cmake75
-rw-r--r--main/src/main/cpp/lzo/AUTHORS (renamed from main/lzo/AUTHORS)0
-rw-r--r--main/src/main/cpp/lzo/Android.mk (renamed from main/lzo/Android.mk)0
-rw-r--r--main/src/main/cpp/lzo/B/00README.TXT (renamed from main/lzo/B/00README.TXT)0
-rw-r--r--main/src/main/cpp/lzo/B/clean.bat (renamed from main/lzo/B/clean.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/done.bat (renamed from main/lzo/B/done.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/bc_pp.bat (renamed from main/lzo/B/dos32/bc_pp.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/dj2.bat (renamed from main/lzo/B/dos32/dj2.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/dj2.opt (renamed from main/lzo/B/dos32/dj2.opt)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/dm.bat (renamed from main/lzo/B/dos32/dm.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/emx.bat (renamed from main/lzo/B/dos32/emx.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/highc.bat (renamed from main/lzo/B/dos32/highc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/highc.rsp (renamed from main/lzo/B/dos32/highc.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/ndp.bat (renamed from main/lzo/B/dos32/ndp.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/ndp.rsp (renamed from main/lzo/B/dos32/ndp.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/sc.bat (renamed from main/lzo/B/dos32/sc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/wc.bat (renamed from main/lzo/B/dos32/wc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/dos32/zc.bat (renamed from main/lzo/B/dos32/zc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/generic/Makefile (renamed from main/lzo/B/generic/Makefile)0
-rwxr-xr-xmain/src/main/cpp/lzo/B/generic/build.sh (renamed from main/lzo/B/generic/build.sh)0
-rwxr-xr-xmain/src/main/cpp/lzo/B/generic/build_freestanding.sh (renamed from main/lzo/B/generic/build_freestanding.sh)0
-rwxr-xr-xmain/src/main/cpp/lzo/B/generic/build_gcc.sh (renamed from main/lzo/B/generic/build_gcc.sh)0
-rwxr-xr-xmain/src/main/cpp/lzo/B/generic/clean.sh (renamed from main/lzo/B/generic/clean.sh)0
-rw-r--r--main/src/main/cpp/lzo/B/os2/emx.bat (renamed from main/lzo/B/os2/emx.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/os2/wc.bat (renamed from main/lzo/B/os2/wc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/os2/zc.bat (renamed from main/lzo/B/os2/zc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/prepare.bat (renamed from main/lzo/B/prepare.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/src.rsp (renamed from main/lzo/B/src.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/unset.bat (renamed from main/lzo/B/unset.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/bc.bat (renamed from main/lzo/B/win32/bc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/bc.rsp (renamed from main/lzo/B/win32/bc.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/cygwin.bat (renamed from main/lzo/B/win32/cygwin.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/cygwin.rsp (renamed from main/lzo/B/win32/cygwin.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/dm.bat (renamed from main/lzo/B/win32/dm.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/ic.bat (renamed from main/lzo/B/win32/ic.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/lccwin32.bat (renamed from main/lzo/B/win32/lccwin32.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/mingw.bat (renamed from main/lzo/B/win32/mingw.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/mwerks.bat (renamed from main/lzo/B/win32/mwerks.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/pellesc.bat (renamed from main/lzo/B/win32/pellesc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/pgi.bat (renamed from main/lzo/B/win32/pgi.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/pw32.bat (renamed from main/lzo/B/win32/pw32.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/rsxnt.bat (renamed from main/lzo/B/win32/rsxnt.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/sc.bat (renamed from main/lzo/B/win32/sc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/vc.bat (renamed from main/lzo/B/win32/vc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/vc.rsp (renamed from main/lzo/B/win32/vc.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/vc_dll.bat (renamed from main/lzo/B/win32/vc_dll.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/vc_dll.def (renamed from main/lzo/B/win32/vc_dll.def)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/wc.bat (renamed from main/lzo/B/win32/wc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win32/wc.rsp (renamed from main/lzo/B/win32/wc.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/win64/ic.bat (renamed from main/lzo/B/win64/ic.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win64/ic_dll.bat (renamed from main/lzo/B/win64/ic_dll.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win64/vc.bat (renamed from main/lzo/B/win64/vc.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win64/vc.rsp (renamed from main/lzo/B/win64/vc.rsp)0
-rw-r--r--main/src/main/cpp/lzo/B/win64/vc_dll.bat (renamed from main/lzo/B/win64/vc_dll.bat)0
-rw-r--r--main/src/main/cpp/lzo/B/win64/vc_dll.def (renamed from main/lzo/B/win64/vc_dll.def)0
-rw-r--r--main/src/main/cpp/lzo/BUGS (renamed from main/lzo/BUGS)0
-rw-r--r--main/src/main/cpp/lzo/CMakeLists.txt (renamed from main/lzo/CMakeLists.txt)0
-rw-r--r--main/src/main/cpp/lzo/COPYING (renamed from main/lzo/COPYING)0
-rw-r--r--main/src/main/cpp/lzo/ChangeLog (renamed from main/lzo/ChangeLog)0
-rw-r--r--main/src/main/cpp/lzo/INSTALL (renamed from main/lzo/INSTALL)0
-rw-r--r--main/src/main/cpp/lzo/Makefile.am (renamed from main/lzo/Makefile.am)0
-rw-r--r--main/src/main/cpp/lzo/Makefile.in (renamed from main/lzo/Makefile.in)0
-rw-r--r--main/src/main/cpp/lzo/NEWS (renamed from main/lzo/NEWS)0
-rw-r--r--main/src/main/cpp/lzo/README (renamed from main/lzo/README)0
-rw-r--r--main/src/main/cpp/lzo/THANKS (renamed from main/lzo/THANKS)0
-rw-r--r--main/src/main/cpp/lzo/aclocal.m4 (renamed from main/lzo/aclocal.m4)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/00README.TXT (renamed from main/lzo/asm/i386/00README.TXT)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1c_s1.o (renamed from main/lzo/asm/i386/obj/coff32/lzo1c_s1.o)bin521 -> 521 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1f_f1.o (renamed from main/lzo/asm/i386/obj/coff32/lzo1f_f1.o)bin563 -> 563 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1x_f1.o (renamed from main/lzo/asm/i386/obj/coff32/lzo1x_f1.o)bin691 -> 691 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1x_s1.o (renamed from main/lzo/asm/i386/obj/coff32/lzo1x_s1.o)bin713 -> 713 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1y_f1.o (renamed from main/lzo/asm/i386/obj/coff32/lzo1y_f1.o)bin691 -> 691 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1y_s1.o (renamed from main/lzo/asm/i386/obj/coff32/lzo1y_s1.o)bin713 -> 713 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1c_s1.o (renamed from main/lzo/asm/i386/obj/elf32/lzo1c_s1.o)bin730 -> 730 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1f_f1.o (renamed from main/lzo/asm/i386/obj/elf32/lzo1f_f1.o)bin767 -> 767 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1x_f1.o (renamed from main/lzo/asm/i386/obj/elf32/lzo1x_f1.o)bin895 -> 895 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1x_s1.o (renamed from main/lzo/asm/i386/obj/elf32/lzo1x_s1.o)bin922 -> 922 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1y_f1.o (renamed from main/lzo/asm/i386/obj/elf32/lzo1y_f1.o)bin895 -> 895 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1y_s1.o (renamed from main/lzo/asm/i386/obj/elf32/lzo1y_s1.o)bin922 -> 922 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1c_s1.o (renamed from main/lzo/asm/i386/obj/macho32/lzo1c_s1.o)bin499 -> 499 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1f_f1.o (renamed from main/lzo/asm/i386/obj/macho32/lzo1f_f1.o)bin536 -> 536 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1x_f1.o (renamed from main/lzo/asm/i386/obj/macho32/lzo1x_f1.o)bin664 -> 664 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1x_s1.o (renamed from main/lzo/asm/i386/obj/macho32/lzo1x_s1.o)bin691 -> 691 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1y_f1.o (renamed from main/lzo/asm/i386/obj/macho32/lzo1y_f1.o)bin664 -> 664 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1y_s1.o (renamed from main/lzo/asm/i386/obj/macho32/lzo1y_s1.o)bin691 -> 691 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1c_s1.obj (renamed from main/lzo/asm/i386/obj/omf32/lzo1c_s1.obj)bin415 -> 415 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1f_f1.obj (renamed from main/lzo/asm/i386/obj/omf32/lzo1f_f1.obj)bin457 -> 457 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1x_f1.obj (renamed from main/lzo/asm/i386/obj/omf32/lzo1x_f1.obj)bin585 -> 585 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1x_s1.obj (renamed from main/lzo/asm/i386/obj/omf32/lzo1x_s1.obj)bin607 -> 607 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1y_f1.obj (renamed from main/lzo/asm/i386/obj/omf32/lzo1y_f1.obj)bin585 -> 585 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1y_s1.obj (renamed from main/lzo/asm/i386/obj/omf32/lzo1y_s1.obj)bin607 -> 607 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1c_s1.obj (renamed from main/lzo/asm/i386/obj/win32/lzo1c_s1.obj)bin442 -> 442 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1f_f1.obj (renamed from main/lzo/asm/i386/obj/win32/lzo1f_f1.obj)bin447 -> 447 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1x_f1.obj (renamed from main/lzo/asm/i386/obj/win32/lzo1x_f1.obj)bin575 -> 575 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1x_s1.obj (renamed from main/lzo/asm/i386/obj/win32/lzo1x_s1.obj)bin634 -> 634 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1y_f1.obj (renamed from main/lzo/asm/i386/obj/win32/lzo1y_f1.obj)bin575 -> 575 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1y_s1.obj (renamed from main/lzo/asm/i386/obj/win32/lzo1y_s1.obj)bin634 -> 634 bytes
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/enter.ash (renamed from main/lzo/asm/i386/src/enter.ash)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/leave.ash (renamed from main/lzo/asm/i386/src/leave.ash)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1c_d.ash (renamed from main/lzo/asm/i386/src/lzo1c_d.ash)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1c_s1.S (renamed from main/lzo/asm/i386/src/lzo1c_s1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1f_d.ash (renamed from main/lzo/asm/i386/src/lzo1f_d.ash)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1f_f1.S (renamed from main/lzo/asm/i386/src/lzo1f_f1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1x_d.ash (renamed from main/lzo/asm/i386/src/lzo1x_d.ash)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1x_f1.S (renamed from main/lzo/asm/i386/src/lzo1x_f1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1x_s1.S (renamed from main/lzo/asm/i386/src/lzo1x_s1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1y_f1.S (renamed from main/lzo/asm/i386/src/lzo1y_f1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo1y_s1.S (renamed from main/lzo/asm/i386/src/lzo1y_s1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src/lzo_asm.h (renamed from main/lzo/asm/i386/src/lzo_asm.h)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/all/asm_all.S (renamed from main/lzo/asm/i386/src_gas/all/asm_all.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/asminit.def (renamed from main/lzo/asm/i386/src_gas/asminit.def)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/lzo1c_s1.S (renamed from main/lzo/asm/i386/src_gas/lzo1c_s1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/lzo1f_f1.S (renamed from main/lzo/asm/i386/src_gas/lzo1f_f1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/lzo1x_f1.S (renamed from main/lzo/asm/i386/src_gas/lzo1x_f1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/lzo1x_s1.S (renamed from main/lzo/asm/i386/src_gas/lzo1x_s1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/lzo1y_f1.S (renamed from main/lzo/asm/i386/src_gas/lzo1y_f1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_gas/lzo1y_s1.S (renamed from main/lzo/asm/i386/src_gas/lzo1y_s1.S)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/all/asm_all.asm (renamed from main/lzo/asm/i386/src_masm/all/asm_all.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/asminit.def (renamed from main/lzo/asm/i386/src_masm/asminit.def)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/lzo1c_s1.asm (renamed from main/lzo/asm/i386/src_masm/lzo1c_s1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/lzo1f_f1.asm (renamed from main/lzo/asm/i386/src_masm/lzo1f_f1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/lzo1x_f1.asm (renamed from main/lzo/asm/i386/src_masm/lzo1x_f1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/lzo1x_s1.asm (renamed from main/lzo/asm/i386/src_masm/lzo1x_s1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/lzo1y_f1.asm (renamed from main/lzo/asm/i386/src_masm/lzo1y_f1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_masm/lzo1y_s1.asm (renamed from main/lzo/asm/i386/src_masm/lzo1y_s1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/all/asm_all.asm (renamed from main/lzo/asm/i386/src_nasm/all/asm_all.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/asminit.def (renamed from main/lzo/asm/i386/src_nasm/asminit.def)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1c_s1.asm (renamed from main/lzo/asm/i386/src_nasm/lzo1c_s1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1f_f1.asm (renamed from main/lzo/asm/i386/src_nasm/lzo1f_f1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1x_f1.asm (renamed from main/lzo/asm/i386/src_nasm/lzo1x_f1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1x_s1.asm (renamed from main/lzo/asm/i386/src_nasm/lzo1x_s1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1y_f1.asm (renamed from main/lzo/asm/i386/src_nasm/lzo1y_f1.asm)0
-rw-r--r--main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1y_s1.asm (renamed from main/lzo/asm/i386/src_nasm/lzo1y_s1.asm)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/ar-lib (renamed from main/lzo/autoconf/ar-lib)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/compile (renamed from main/lzo/autoconf/compile)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/config.guess (renamed from main/lzo/autoconf/config.guess)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/config.rpath (renamed from main/lzo/autoconf/config.rpath)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/config.sub (renamed from main/lzo/autoconf/config.sub)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/depcomp (renamed from main/lzo/autoconf/depcomp)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/install-sh (renamed from main/lzo/autoconf/install-sh)0
-rw-r--r--main/src/main/cpp/lzo/autoconf/local.m4 (renamed from main/lzo/autoconf/local.m4)0
-rw-r--r--main/src/main/cpp/lzo/autoconf/ltmain.sh (renamed from main/lzo/autoconf/ltmain.sh)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/mdate-sh (renamed from main/lzo/autoconf/mdate-sh)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/missing (renamed from main/lzo/autoconf/missing)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/mkinstalldirs (renamed from main/lzo/autoconf/mkinstalldirs)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/py-compile (renamed from main/lzo/autoconf/py-compile)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/shtool (renamed from main/lzo/autoconf/shtool)0
-rwxr-xr-xmain/src/main/cpp/lzo/autoconf/ylwrap (renamed from main/lzo/autoconf/ylwrap)0
-rw-r--r--main/src/main/cpp/lzo/config.hin (renamed from main/lzo/config.hin)0
-rwxr-xr-xmain/src/main/cpp/lzo/configure (renamed from main/lzo/configure)0
-rw-r--r--main/src/main/cpp/lzo/configure.ac (renamed from main/lzo/configure.ac)0
-rw-r--r--main/src/main/cpp/lzo/doc/LZO.FAQ (renamed from main/lzo/doc/LZO.FAQ)0
-rw-r--r--main/src/main/cpp/lzo/doc/LZO.TXT (renamed from main/lzo/doc/LZO.TXT)0
-rw-r--r--main/src/main/cpp/lzo/doc/LZOAPI.TXT (renamed from main/lzo/doc/LZOAPI.TXT)0
-rw-r--r--main/src/main/cpp/lzo/doc/LZOTEST.TXT (renamed from main/lzo/doc/LZOTEST.TXT)0
-rw-r--r--main/src/main/cpp/lzo/examples/dict.c (renamed from main/lzo/examples/dict.c)0
-rw-r--r--main/src/main/cpp/lzo/examples/lzopack.c (renamed from main/lzo/examples/lzopack.c)0
-rw-r--r--main/src/main/cpp/lzo/examples/overlap.c (renamed from main/lzo/examples/overlap.c)0
-rw-r--r--main/src/main/cpp/lzo/examples/portab.h (renamed from main/lzo/examples/portab.h)0
-rw-r--r--main/src/main/cpp/lzo/examples/portab_a.h (renamed from main/lzo/examples/portab_a.h)0
-rw-r--r--main/src/main/cpp/lzo/examples/precomp.c (renamed from main/lzo/examples/precomp.c)0
-rw-r--r--main/src/main/cpp/lzo/examples/precomp2.c (renamed from main/lzo/examples/precomp2.c)0
-rw-r--r--main/src/main/cpp/lzo/examples/simple.c (renamed from main/lzo/examples/simple.c)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1.h (renamed from main/lzo/include/lzo/lzo1.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1a.h (renamed from main/lzo/include/lzo/lzo1a.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1b.h (renamed from main/lzo/include/lzo/lzo1b.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1c.h (renamed from main/lzo/include/lzo/lzo1c.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1f.h (renamed from main/lzo/include/lzo/lzo1f.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1x.h (renamed from main/lzo/include/lzo/lzo1x.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1y.h (renamed from main/lzo/include/lzo/lzo1y.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo1z.h (renamed from main/lzo/include/lzo/lzo1z.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo2a.h (renamed from main/lzo/include/lzo/lzo2a.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzo_asm.h (renamed from main/lzo/include/lzo/lzo_asm.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzoconf.h (renamed from main/lzo/include/lzo/lzoconf.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzodefs.h (renamed from main/lzo/include/lzo/lzodefs.h)0
-rw-r--r--main/src/main/cpp/lzo/include/lzo/lzoutil.h (renamed from main/lzo/include/lzo/lzoutil.h)0
-rw-r--r--main/src/main/cpp/lzo/lzo2.pc.cmakein (renamed from main/lzo/lzo2.pc.cmakein)0
-rw-r--r--main/src/main/cpp/lzo/lzo2.pc.in (renamed from main/lzo/lzo2.pc.in)0
-rw-r--r--main/src/main/cpp/lzo/lzotest/asm.h (renamed from main/lzo/lzotest/asm.h)0
-rw-r--r--main/src/main/cpp/lzo/lzotest/db.h (renamed from main/lzo/lzotest/db.h)0
-rw-r--r--main/src/main/cpp/lzo/lzotest/lzotest.c (renamed from main/lzo/lzotest/lzotest.c)0
-rw-r--r--main/src/main/cpp/lzo/lzotest/wrap.h (renamed from main/lzo/lzotest/wrap.h)0
-rw-r--r--main/src/main/cpp/lzo/lzotest/wrapmisc.h (renamed from main/lzo/lzotest/wrapmisc.h)0
-rw-r--r--main/src/main/cpp/lzo/minilzo/Makefile.minilzo (renamed from main/lzo/minilzo/Makefile.minilzo)0
-rw-r--r--main/src/main/cpp/lzo/minilzo/README.LZO (renamed from main/lzo/minilzo/README.LZO)0
-rw-r--r--main/src/main/cpp/lzo/minilzo/minilzo.c (renamed from main/lzo/minilzo/minilzo.c)0
-rw-r--r--main/src/main/cpp/lzo/minilzo/minilzo.h (renamed from main/lzo/minilzo/minilzo.h)0
-rw-r--r--main/src/main/cpp/lzo/minilzo/testmini.c (renamed from main/lzo/minilzo/testmini.c)0
-rw-r--r--main/src/main/cpp/lzo/src/compr1b.h (renamed from main/lzo/src/compr1b.h)0
-rw-r--r--main/src/main/cpp/lzo/src/compr1c.h (renamed from main/lzo/src/compr1c.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1.h (renamed from main/lzo/src/config1.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1a.h (renamed from main/lzo/src/config1a.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1b.h (renamed from main/lzo/src/config1b.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1c.h (renamed from main/lzo/src/config1c.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1f.h (renamed from main/lzo/src/config1f.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1x.h (renamed from main/lzo/src/config1x.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1y.h (renamed from main/lzo/src/config1y.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config1z.h (renamed from main/lzo/src/config1z.h)0
-rw-r--r--main/src/main/cpp/lzo/src/config2a.h (renamed from main/lzo/src/config2a.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1.c (renamed from main/lzo/src/lzo1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1_99.c (renamed from main/lzo/src/lzo1_99.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1_cm.ch (renamed from main/lzo/src/lzo1_cm.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1_d.ch (renamed from main/lzo/src/lzo1_d.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1a.c (renamed from main/lzo/src/lzo1a.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1a_99.c (renamed from main/lzo/src/lzo1a_99.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1a_cm.ch (renamed from main/lzo/src/lzo1a_cm.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1a_cr.ch (renamed from main/lzo/src/lzo1a_cr.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1a_de.h (renamed from main/lzo/src/lzo1a_de.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_1.c (renamed from main/lzo/src/lzo1b_1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_2.c (renamed from main/lzo/src/lzo1b_2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_3.c (renamed from main/lzo/src/lzo1b_3.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_4.c (renamed from main/lzo/src/lzo1b_4.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_5.c (renamed from main/lzo/src/lzo1b_5.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_6.c (renamed from main/lzo/src/lzo1b_6.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_7.c (renamed from main/lzo/src/lzo1b_7.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_8.c (renamed from main/lzo/src/lzo1b_8.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_9.c (renamed from main/lzo/src/lzo1b_9.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_99.c (renamed from main/lzo/src/lzo1b_99.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_9x.c (renamed from main/lzo/src/lzo1b_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_c.ch (renamed from main/lzo/src/lzo1b_c.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_cc.c (renamed from main/lzo/src/lzo1b_cc.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_cc.h (renamed from main/lzo/src/lzo1b_cc.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_cm.ch (renamed from main/lzo/src/lzo1b_cm.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_cr.ch (renamed from main/lzo/src/lzo1b_cr.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_d.ch (renamed from main/lzo/src/lzo1b_d.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_d1.c (renamed from main/lzo/src/lzo1b_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_d2.c (renamed from main/lzo/src/lzo1b_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_de.h (renamed from main/lzo/src/lzo1b_de.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_r.ch (renamed from main/lzo/src/lzo1b_r.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_rr.c (renamed from main/lzo/src/lzo1b_rr.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_sm.ch (renamed from main/lzo/src/lzo1b_sm.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_tm.ch (renamed from main/lzo/src/lzo1b_tm.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1b_xx.c (renamed from main/lzo/src/lzo1b_xx.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_1.c (renamed from main/lzo/src/lzo1c_1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_2.c (renamed from main/lzo/src/lzo1c_2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_3.c (renamed from main/lzo/src/lzo1c_3.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_4.c (renamed from main/lzo/src/lzo1c_4.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_5.c (renamed from main/lzo/src/lzo1c_5.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_6.c (renamed from main/lzo/src/lzo1c_6.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_7.c (renamed from main/lzo/src/lzo1c_7.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_8.c (renamed from main/lzo/src/lzo1c_8.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_9.c (renamed from main/lzo/src/lzo1c_9.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_99.c (renamed from main/lzo/src/lzo1c_99.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_9x.c (renamed from main/lzo/src/lzo1c_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_cc.c (renamed from main/lzo/src/lzo1c_cc.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_cc.h (renamed from main/lzo/src/lzo1c_cc.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_d1.c (renamed from main/lzo/src/lzo1c_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_d2.c (renamed from main/lzo/src/lzo1c_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_rr.c (renamed from main/lzo/src/lzo1c_rr.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1c_xx.c (renamed from main/lzo/src/lzo1c_xx.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1f_1.c (renamed from main/lzo/src/lzo1f_1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1f_9x.c (renamed from main/lzo/src/lzo1f_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1f_d.ch (renamed from main/lzo/src/lzo1f_d.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1f_d1.c (renamed from main/lzo/src/lzo1f_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1f_d2.c (renamed from main/lzo/src/lzo1f_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_1.c (renamed from main/lzo/src/lzo1x_1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_1k.c (renamed from main/lzo/src/lzo1x_1k.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_1l.c (renamed from main/lzo/src/lzo1x_1l.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_1o.c (renamed from main/lzo/src/lzo1x_1o.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_9x.c (renamed from main/lzo/src/lzo1x_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_c.ch (renamed from main/lzo/src/lzo1x_c.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_d.ch (renamed from main/lzo/src/lzo1x_d.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_d1.c (renamed from main/lzo/src/lzo1x_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_d2.c (renamed from main/lzo/src/lzo1x_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_d3.c (renamed from main/lzo/src/lzo1x_d3.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_o.c (renamed from main/lzo/src/lzo1x_o.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1x_oo.ch (renamed from main/lzo/src/lzo1x_oo.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1y_1.c (renamed from main/lzo/src/lzo1y_1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1y_9x.c (renamed from main/lzo/src/lzo1y_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1y_d1.c (renamed from main/lzo/src/lzo1y_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1y_d2.c (renamed from main/lzo/src/lzo1y_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1y_d3.c (renamed from main/lzo/src/lzo1y_d3.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1y_o.c (renamed from main/lzo/src/lzo1y_o.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1z_9x.c (renamed from main/lzo/src/lzo1z_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1z_d1.c (renamed from main/lzo/src/lzo1z_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1z_d2.c (renamed from main/lzo/src/lzo1z_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo1z_d3.c (renamed from main/lzo/src/lzo1z_d3.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo2a_9x.c (renamed from main/lzo/src/lzo2a_9x.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo2a_d.ch (renamed from main/lzo/src/lzo2a_d.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo2a_d1.c (renamed from main/lzo/src/lzo2a_d1.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo2a_d2.c (renamed from main/lzo/src/lzo2a_d2.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_conf.h (renamed from main/lzo/src/lzo_conf.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_crc.c (renamed from main/lzo/src/lzo_crc.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_dict.h (renamed from main/lzo/src/lzo_dict.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_dll.ch (renamed from main/lzo/src/lzo_dll.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_func.h (renamed from main/lzo/src/lzo_func.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_init.c (renamed from main/lzo/src/lzo_init.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_mchw.ch (renamed from main/lzo/src/lzo_mchw.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_ptr.c (renamed from main/lzo/src/lzo_ptr.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_ptr.h (renamed from main/lzo/src/lzo_ptr.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_str.c (renamed from main/lzo/src/lzo_str.c)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_supp.h (renamed from main/lzo/src/lzo_supp.h)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_swd.ch (renamed from main/lzo/src/lzo_swd.ch)0
-rw-r--r--main/src/main/cpp/lzo/src/lzo_util.c (renamed from main/lzo/src/lzo_util.c)0
-rw-r--r--main/src/main/cpp/lzo/src/stats1a.h (renamed from main/lzo/src/stats1a.h)0
-rw-r--r--main/src/main/cpp/lzo/src/stats1b.h (renamed from main/lzo/src/stats1b.h)0
-rw-r--r--main/src/main/cpp/lzo/src/stats1c.h (renamed from main/lzo/src/stats1c.h)0
-rw-r--r--main/src/main/cpp/lzo/tests/align.c (renamed from main/lzo/tests/align.c)0
-rw-r--r--main/src/main/cpp/lzo/tests/chksum.c (renamed from main/lzo/tests/chksum.c)0
-rw-r--r--main/src/main/cpp/lzo/tests/promote.c (renamed from main/lzo/tests/promote.c)0
-rw-r--r--main/src/main/cpp/lzo/tests/sizes.c (renamed from main/lzo/tests/sizes.c)0
-rw-r--r--main/src/main/cpp/lzo/util/check.sh (renamed from main/lzo/util/check.sh)0
-rw-r--r--main/src/main/cpp/lzo/util/checkasm.sh (renamed from main/lzo/util/checkasm.sh)0
-rw-r--r--main/src/main/cpp/lzo/util/notime.pl (renamed from main/lzo/util/notime.pl)0
-rw-r--r--main/src/main/cpp/lzo/util/overlap.sh (renamed from main/lzo/util/overlap.sh)0
-rw-r--r--main/src/main/cpp/lzo/util/shortf.pl (renamed from main/lzo/util/shortf.pl)0
-rw-r--r--main/src/main/cpp/lzo/util/table.pl (renamed from main/lzo/util/table.pl)0
-rw-r--r--main/src/main/cpp/lzo/util/uncompr.pl (renamed from main/lzo/util/uncompr.pl)0
m---------main/src/main/cpp/mbedtls0
-rw-r--r--main/src/main/cpp/minivpn/minivpn.c0
m---------main/src/main/cpp/openssl0
-rw-r--r--main/src/main/cpp/openssl.cmake828
m---------main/src/main/cpp/openvpn0
-rw-r--r--main/src/main/cpp/openvpn-config/config.h677
m---------main/src/main/cpp/openvpn30
-rw-r--r--main/src/main/cpp/opvpnutil/jniglue.c (renamed from main/jni/jniglue.c)0
-rw-r--r--main/src/main/cpp/opvpnutil/jniglue.h (renamed from main/jni/jniglue.h)0
-rw-r--r--main/src/main/cpp/opvpnutil/scan_ifs.c (renamed from main/jni/scan_ifs.c)0
-rw-r--r--main/src/main/cpp/opvpnutil/sslspeed.c309
-rw-r--r--main/src/main/cpp/tools.cmake7
-rw-r--r--main/src/main/java/android/support/v4n/view/ViewPager.java12
-rw-r--r--main/src/main/java/de/blinkt/openvpn/LaunchVPN.java22
-rw-r--r--main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java2
-rw-r--r--main/src/main/java/de/blinkt/openvpn/VpnProfile.java124
-rw-r--r--main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java193
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java191
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java41
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java43
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java74
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java5
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java2
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java7
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java49
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java5
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java16
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java1
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java8
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java11
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/Settings_Basic.java16
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/ShowConfigFragment.java2
-rw-r--r--main/src/main/res/layout-sw600dp/log_fragment.xml5
-rw-r--r--main/src/main/res/layout-v21/connection_fab.xml2
-rw-r--r--main/src/main/res/layout-v21/save_fab.xml4
-rw-r--r--main/src/main/res/layout-v21/share_fab.xml2
-rw-r--r--main/src/main/res/layout/openssl_speed.xml40
-rw-r--r--main/src/main/res/layout/speedviewitem.xml54
-rwxr-xr-xmain/src/main/res/values-cs/arrays.xml7
-rwxr-xr-xmain/src/main/res/values-cs/plurals.xml23
-rwxr-xr-xmain/src/main/res/values-cs/strings.xml69
-rwxr-xr-xmain/src/main/res/values-da/arrays.xml30
-rwxr-xr-xmain/src/main/res/values-da/plurals.xml20
-rwxr-xr-xmain/src/main/res/values-da/strings.xml399
-rwxr-xr-xmain/src/main/res/values-de/arrays.xml4
-rwxr-xr-xmain/src/main/res/values-de/plurals.xml2
-rwxr-xr-xmain/src/main/res/values-de/strings.xml34
-rwxr-xr-xmain/src/main/res/values-es/arrays.xml5
-rwxr-xr-xmain/src/main/res/values-es/plurals.xml10
-rwxr-xr-xmain/src/main/res/values-es/strings.xml48
-rwxr-xr-xmain/src/main/res/values-fr/arrays.xml5
-rwxr-xr-xmain/src/main/res/values-fr/strings.xml44
-rwxr-xr-xmain/src/main/res/values-hu/arrays.xml7
-rwxr-xr-xmain/src/main/res/values-hu/strings.xml58
-rwxr-xr-xmain/src/main/res/values-in/arrays.xml4
-rwxr-xr-xmain/src/main/res/values-in/strings.xml89
-rwxr-xr-xmain/src/main/res/values-it/arrays.xml7
-rwxr-xr-xmain/src/main/res/values-it/plurals.xml19
-rwxr-xr-xmain/src/main/res/values-it/strings.xml107
-rwxr-xr-xmain/src/main/res/values-ja/arrays.xml7
-rwxr-xr-xmain/src/main/res/values-ja/strings.xml4
-rwxr-xr-xmain/src/main/res/values-ko/arrays.xml7
-rwxr-xr-xmain/src/main/res/values-ko/plurals.xml15
-rwxr-xr-xmain/src/main/res/values-ko/strings.xml459
-rwxr-xr-xmain/src/main/res/values-nl/arrays.xml7
-rwxr-xr-xmain/src/main/res/values-nl/strings.xml350
-rwxr-xr-xmain/src/main/res/values-no/strings.xml40
-rwxr-xr-xmain/src/main/res/values-pl/arrays.xml9
-rwxr-xr-xmain/src/main/res/values-pl/plurals.xml8
-rwxr-xr-xmain/src/main/res/values-pl/strings.xml25
-rwxr-xr-xmain/src/main/res/values-pt/arrays.xml6
-rwxr-xr-xmain/src/main/res/values-pt/plurals.xml19
-rwxr-xr-xmain/src/main/res/values-pt/strings.xml16
-rwxr-xr-xmain/src/main/res/values-ro/strings.xml2
-rwxr-xr-xmain/src/main/res/values-ru/plurals.xml8
-rwxr-xr-xmain/src/main/res/values-ru/strings.xml31
-rwxr-xr-xmain/src/main/res/values-sv/strings.xml11
-rwxr-xr-xmain/src/main/res/values-tr/arrays.xml2
-rwxr-xr-xmain/src/main/res/values-tr/strings.xml22
-rwxr-xr-xmain/src/main/res/values-uk/arrays.xml9
-rwxr-xr-xmain/src/main/res/values-uk/plurals.xml23
-rwxr-xr-xmain/src/main/res/values-uk/strings.xml51
-rwxr-xr-xmain/src/main/res/values-vi/arrays.xml2
-rwxr-xr-xmain/src/main/res/values-vi/strings.xml23
-rwxr-xr-xmain/src/main/res/values-zh-rCN/arrays.xml9
-rwxr-xr-xmain/src/main/res/values-zh-rCN/plurals.xml15
-rwxr-xr-xmain/src/main/res/values-zh-rCN/strings.xml208
-rwxr-xr-xmain/src/main/res/values-zh-rTW/arrays.xml5
-rwxr-xr-xmain/src/main/res/values-zh-rTW/strings.xml11
-rwxr-xr-xmain/src/main/res/values/strings.xml26
-rw-r--r--main/src/main/res/values/untranslatable.xml6
-rw-r--r--main/src/main/res/xml/general_settings.xml11
-rw-r--r--main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java31
-rw-r--r--remoteExample/build.gradle14
426 files changed, 5361 insertions, 883 deletions
diff --git a/.gitignore b/.gitignore
index 6e26c832..547fbdc5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,4 @@ main/openvpn3
main/src/ovpn3/java/net/openvpn/ovpn3
+main/.externalNativeBuild
diff --git a/.gitmodules b/.gitmodules
index 1730ddc4..522c88a7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,18 @@
[submodule "main/openvpn"]
- path = main/openvpn
- url = https://github.com/schwabe/openvpn.git
+ path = main/src/main/cpp/openvpn
+ url = ../../schwabe/openvpn.git
[submodule "main/openssl"]
- path = main/openssl
- url = https://github.com/schwabe/platform_external_openssl.git
-#[submodule "main/breakpad"]
-# path = main/breakpad
-# url = https://github.com/schwabe/breakpad.git
+ path = main/src/main/cpp/openssl
+ url = ../../schwabe/platform_external_openssl.git
+[submodule "main/breakpad"]
+ path = main/breakpad
+ url = ../../schwabe/breakpad.git
+[submodule "main/src/main/cpp/mbedtls"]
+ path = main/src/main/cpp/mbedtls
+ url = ../../schwabe/polarssl.git
+[submodule "main/src/main/cpp/openvpn3"]
+ path = main/src/main/cpp/openvpn3
+ url = ../../schwabe/openvpn3.git
+[submodule "main/src/main/cpp/asio"]
+ path = main/src/main/cpp/asio
+ url = ../../chriskohlhoff/asio/
diff --git a/.travis.yml b/.travis.yml
index 474af626..8afb6ae1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,24 +1,46 @@
language: android
git:
- depth: 1 # avoid cloning cmocka of openvpn
+ depth: 1
jdk: oraclejdk8
android:
components:
- tools
- - android-26
- - build-tools
- - build-tools-26.0.0
- - ndk
+ - build-tools-27.0.3
- extra-android-m2repository
- platform-tools
licenses:
- - '.+'
+ - 'android-sdk-license-.+'
+ - 'google-gdk-license-.+'
- install:
- sdkmanager ndk-bundle
+before_cache:
+ - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
+ - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+cache:
+ directories:
+ - $HOME/.gradle/caches/
+ - $HOME/.gradle/wrapper/
+ - $HOME/.android/build-cache
- script:
- - cd main && ./misc/build-native.sh USE_BREAKPAD=1 -j8; cd ..
- - ./gradlew build connectedCheck
+script:
+ # Building one variant is enough and already takes quite a long time...
+ - ./gradlew assembleNormalRelease
+
+before_script:
+ # Install packages
+ - sudo add-apt-repository ppa:teward/swig3.0 -y
+ - sudo apt-get update -q
+ - sudo apt-get install -q unzip swig3.0 cmake
+
+ # Annoying workarounds #1
+ - sudo ln -s /usr/bin/swig3.0 /usr/bin/swig
+ - swig -version
+ # Annoying workarounds #2
+ - yes | sdkmanager "platforms;android-27"
+ - curl -L https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip -O
+ - unzip -q android-ndk-r16b-linux-x86_64.zip
+ - rm android-ndk-r16b-linux-x86_64.zip
+ - export ANDROID_NDK_HOME=`pwd`/android-ndk-r16b
+ - export LOCAL_ANDROID_NDK_HOME="$ANDROID_NDK_HOME"
+ - export PATH=$PATH:${ANDROID_NDK_HOME}
diff --git a/CONTRIBUTING b/CONTRIBUTING
index f3c73e32..3310c5b2 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -1 +1 @@
-See the README and doc/README.txt for infos about developing and contributing
+See the README and doc/README.txt for information about developing and contributing.
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index 2177edfe..5b80136c 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,12 +1,9 @@
-To make issues more manageable, I would appreciate if you fill out the details if applicable
+To make issues more manageable, I would appreciate it if you fill out the following details as applicable:
# General information
1. Android Version
2. Android Vendor/Custom ROM
3. Device
-4. Version of the app (version number/play store version/self built)
+4. Version of the app (version number/play store version/self-built)
# Description of the issue
-
-
-
diff --git a/README.md b/README.md
index 1738edf2..2223ffe1 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ 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.
-Also please note that before contributing to the project that I would like to retain my ability to relicense the project for different third parties and therefore probably need a contributers agreement from any contributing party. To get started, [sign the Contributor License Agreement](https://www.clahub.com/agreements/schwabe/ics-openvpn).
+Also please note that before contributing to the project that I would like to retain my ability to relicense the project for different third parties and therefore probably need a contributer's agreement from any contributing party. To get started, [sign the Contributor License Agreement](https://www.clahub.com/agreements/schwabe/ics-openvpn).
You can help
------------
@@ -32,7 +32,7 @@ You make your life and that of your users easier if you embed the certificates i
Inline files are supported since OpenVPN 2.1rc1 and documented in the [OpenVPN 2.3 man page](https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage) (under INLINE FILE SUPPORT)
-(Using inline certifaces can also make your life on non Android platforms easier since you have only one file.)
+(Using inline certifaces can also make your life on non-Android platforms easier since you only have one file.)
For example `ca mycafile.pem` becomes
```
@@ -47,12 +47,12 @@ Footnotes
-----------
Please note that OpenVPN used by this project is under GPLv2.
-If you cannot or do not want to use the Play Store you can [download the apk files directly](http://plai.de/android/) .
+If you cannot or do not want to use the Play Store you can [download the apk files directly](http://plai.de/android/).
-If you want to donate you can donate to [arne-paypal@rfc2549.org via paypal](https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&cmd=_s-xclick), or alternatively if you believe in fancy Internet money you can use Bitcoin: 1EgjL1YQYS4V2TR4GuJtX1chmVCsZHDqSQ
+If you want to donate you can donate to [arne-paypal@rfc2549.org via paypal](https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&cmd=_s-xclick), or alternatively if you believe in fancy Internet money you can use Bitcoin: 1EVWVqpVQFhoFE6gKaqSkfvSNdmLAjcQ9z
The old official or main repository was a Mercurial (hg) repository at http://code.google.com/p/ics-openvpn/source/
-The new git repository is now at GitHub under https://github.com/schwabe/ics-openvpn
+The new Git repository is now at GitHub under https://github.com/schwabe/ics-openvpn
-Please read the doc/README before asking question or starting development.
+Please read the doc/README before asking questions or starting development.
diff --git a/build.gradle b/build.gradle
index f88bc5d2..d170fb01 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,7 +11,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.2'
+ classpath 'com.android.tools.build:gradle:3.0.1'
}
}
diff --git a/doc/README.txt b/doc/README.txt
index 057c54c3..736e368b 100644
--- a/doc/README.txt
+++ b/doc/README.txt
@@ -1,65 +1,69 @@
ATTENTION
================
-Before doing anything please read the first FAQ point in this file, espicially if
-you planing to build commercial software from this client. Also make sure you
-understand the licenses of the code. OpenVPN for Android is GPL licensed. You
+Before doing anything, please read the first FAQ point in this file, especially if
+you plan to build commercial software from this client. Also make sure you
+understand the licenses of the code. OpenVPN for Android is GPL-licensed. You
_CANNOT_ build a closed sourced custom UI application without acquiring a different
(paid) license for UI code.
The use of the AIDL API to control OpenVPN for Android from an external app is
not subject to the license. The remoteExample project is licensed under the Apache 2.0 license.
-When in doubt mail me about it.
+When in doubt, mail me about it.
-See the file todo.txt for ideas/not yet implemented features (and the bug tracker).
+See the file todo.txt for ideas/not-yet-implemented features (and the bug tracker).
Build instructions:
-- Install sdk
-- Install ndk (Latest version should work as long as you use gcc)
-- Make sure that ndk-build is in your build path.
+- Install sdk, ndk, cmake (e.g. with Android studio), swig (3.0+)
Fetch the git submodules (the default urls for the submodules use ssh,
-setup your own github ssh key or change the url to http in .gitmodules):
+set up your own GitHub ssh key or change the url to http in .gitmodules):
git submodule init
git submodule update
-Do cd main;./misc/build-native.(sh|bat) in the main directory of the project.
-After that build the project using "gradle build" (Or use Android Studio).
-The project is converted to gradle and building with Eclipse is no longer supported.
+Build the project using "gradle build" (Or use Android Studio).
+
+Android studio tends to the whole build of binaries in its sync gradle
+phase to 15 minutes for initial gradle sync are completely normal.
+
+The native build should with Windows and Linux but is rarely tested
+since my main development platform is Mac Os X
-Alternatively, if the NDK build fails for some reason pre-built libraries can be downloaded
-(e.g. from plai.de/android) and placed under main/ovpnlibs/assets/(no)pie_openvpn.{ABI}
-and main/ovpnlibs/jniLibs/{ABI}/*.so
FAQ
-Q: Why are you not answering my questions about modifying ics-openvpn/why do not help build my app on top
- of ics-openvpn? I thought this is open source.
+Q: Why are you not answering my questions about modifying
+ ics-openvpn/why do not help build my app on top of ics-openvpn? I
+ thought this is open source.
-A: There are many people building/wanting to build commercial VPN clients on top of my of my client. These
- client often do not even honour the license my app or the license of OpenVPN. Even if these modified
- software does honour the license I don't like doing unpaid work/giving advise for free to commerical
- software developers.
-
- If you have a legitimate non commercial open source project I will gladly help you but please understand
- my initial reservations.
+A: There are many people building/wanting to build commercial VPN
+ clients on top of my of my client. These client often do not even
+ honour the license of my app or the license of OpenVPN. Even if
+ these modified software do honour the license, I don't like doing
+ unpaid work/giving advice for free to commercial software
+ developers.
+ If you have a legitimate non-commercial open source project, I will
+ gladly help you, but please understand my initial reservations.
Q: How is the OpenVPN version different from normal OpenVPN
-A: OpenVPN for Android uses a OpenVPN 2.4 master branch + dual stack client patches.
- A git repository of the OpenVPN source code and changes is under:
- https://github.com/schwabe/openvpn/
+A: OpenVPN for Android uses a OpenVPN master branch + dual stack
+ client patches. A git repository of the OpenVPN source code and
+ changes is under: https://github.com/schwabe/openvpn/
-Q: what is minivpn?
+Q: What is minivpn?
-A: minivpn is only a executable thats links against libopenvpn which is the normal openvpn build as
- library. It is done this way so the Android Play/Store apk will treat the library as normal library
- and update it on updates of the application. Also the application does not need to take care of
- keeping minivpn up to date because it contains no code. For almost all intents and purposes
- minivpn + libopenvpn.so is the same as the normal openvpn binary
+A: minivpn is only a executable that links against libopenvpn, which
+ is the normal openvpn built as a library. It is done this way so
+ the Android Play/Store apk will treat the library as a normal
+ library and update it on updates of the application. Also, the
+ application does not need to take care of keeping minivpn up to
+ date because it contains no code. For almost all intents and
+ purposes minivpn + libopenvpn.so is the same as the normal openvpn
+ binary.
Q: How do I start a VPN by name from an external app?
@@ -82,7 +86,7 @@ or from the shell:
am start -a android.intent.action.MAIN -n de.blinkt.openvpn/.LaunchVPN -e de.blinkt.openvpn.shortcutProfileName Home
-Q: How to control the app from an external app?
+Q: How can I control the app from an external app?
A: There is an AIDL interface. See src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl. See the normal Android documentation how to use AIDL.
See also the example project under remoteExample.
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b217b6d7..68843020 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,11 +1,6 @@
-#
-# Copyright (c) 2012-2017 Arne Schwabe
-# Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-#
-
-#Wed Apr 05 16:08:37 CEST 2017
+#Wed Jan 10 14:02:32 CET 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
diff --git a/main/build.gradle b/main/build.gradle
index afe19468..680bba69 100644
--- a/main/build.gradle
+++ b/main/build.gradle
@@ -8,9 +8,9 @@ import com.android.builder.model.ProductFlavor
apply plugin: 'com.android.application'
apply plugin: 'checkstyle'
- checkstyle {
+checkstyle {
showViolations true
- }
+}
repositories {
jcenter()
@@ -19,35 +19,66 @@ repositories {
}
dependencies {
- compile 'com.android.support:support-annotations:26.0.0'
- compile 'com.android.support:cardview-v7:26.0.0'
- compile 'com.android.support:recyclerview-v7:26.0.0'
+ implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+ implementation 'com.android.support:support-annotations:27.0.2'
+ implementation 'com.android.support:cardview-v7:27.0.2'
+ implementation 'com.android.support:recyclerview-v7:27.0.2'
// compile 'ch.acra:acra:4.5.0'
- compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'
+ implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2'
+
+ testImplementation 'junit:junit:4.12'
+}
+
+
+
+def openvpn3SwigFiles = new File(buildDir, "generated/source/ovpn3swig/ovpn3")
+
+task ("generateOpenVPN3Swig" ,type:Exec) {
+ doFirst {
+ mkdir openvpn3SwigFiles
+ }
+ commandLine "swig", "-outdir", openvpn3SwigFiles, "-outcurrentdir", "-c++", "-java", "-package", "net.openvpn.ovpn3",
+ "-Isrc/main/cpp/openvpn3/client", "-Isrc/main/cpp/openvpn3/",
+ "-o", "${openvpn3SwigFiles}/ovpncli_wrap.cxx", "-oh", "${openvpn3SwigFiles}/ovpncli_wrap.h",
+ "src/main/cpp/openvpn3/javacli/ovpncli.i"
- testCompile 'junit:junit:4.12'
}
android {
- compileSdkVersion 26
- buildToolsVersion '26.0.0'
+ compileSdkVersion 27
+ buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 14
- targetSdkVersion 26
- versionCode = 153
- versionName = "0.6.73"
+ targetSdkVersion 27
+ versionCode = 156
+ versionName = "0.7.3"
+
+ externalNativeBuild {
+ cmake {
+ arguments '-DANDROID_TOOLCHAIN=clang',
+ '-DANDROID_STL=c++_static'
+ //abiFilters "arm64-v8a"
+ }
+ }
+ }
+
+ externalNativeBuild {
+ cmake {
+ path "src/main/cpp/CMakeLists.txt"
+ }
}
sourceSets {
main {
- assets.srcDirs = ['src/main/assets', 'ovpnlibs/assets']
- jniLibs.srcDirs = ['ovpnlibs/jniLibs']
- jni.srcDirs = [] //disable automatic ndk-build
+ assets.srcDirs = ['src/main/assets', 'build/ovpnassets']
}
-
- ovpn3 {
-
+
+ normal {
+ java.srcDirs =["src/ovpn3/java/", openvpn3SwigFiles]
+ }
+
+ noovpn3 {
}
debug {
@@ -59,12 +90,6 @@ android {
}
}
- /*
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_7
- targetCompatibility JavaVersion.VERSION_1_7
- }*/
-
signingConfigs {
release
}
@@ -84,22 +109,26 @@ android {
flavorDimensions "implementation"
productFlavors {
- /*ovpn3 {
- dimension "implementation"
+ noovpn3 {
+ dimension "implementation"
+ buildConfigField 'boolean', 'openvpn3', 'false'
+ }
- } */
+ normal {
+ dimension "implementation"
+ buildConfigField 'boolean', 'openvpn3', 'true'
- normal {
- dimension "implementation"
- }
+ }
}
+ compileOptions {
+ targetCompatibility 1.8
+ sourceCompatibility 1.8
+ }
}
-
-
// ~/.gradle/gradle.properties
if (project.hasProperty('keystoreFile') &&
project.hasProperty('keystorePassword') &&
@@ -112,9 +141,17 @@ if (project.hasProperty('keystoreFile') &&
android.buildTypes.release.signingConfig = null
}
-/*tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
- pkgTask.jniFolders = new HashSet<File>()
- pkgTask.jniFolders.add(new File(buildDir, 'native-libs'))
+// Ensure native build is run before assets, so assets are ready to be merged into the apk
+android.applicationVariants.all { variant ->
+ variant.mergeAssets.dependsOn(variant.externalNativeBuildTasks)
}
-*/
+
+android.applicationVariants.all { variant ->
+ variant.productFlavors.each {
+ if (it.dimension == 'implementation' && it.name != 'noovpn3')
+ variant.getJavaCompiler().dependsOn(generateOpenVPN3Swig)
+
+ }
+
+} \ No newline at end of file
diff --git a/main/jni/Android.mk b/main/jni/Android.mk
index 5848edd6..32a76dc0 100644
--- a/main/jni/Android.mk
+++ b/main/jni/Android.mk
@@ -52,8 +52,10 @@ LOCAL_PATH := $(JNI_DIR)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog -lz
LOCAL_CFLAGS = -DTARGET_ARCH_ABI=\"${TARGET_ARCH_ABI}\"
-LOCAL_SRC_FILES:= jniglue.c scan_ifs.c
+LOCAL_SRC_FILES:= jniglue.c scan_ifs.c sslspeed.c
+LOCAL_C_INCLUDES := openssl/include openssl/crypto openssl openssl/crypto/include
LOCAL_MODULE = opvpnutil
+LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
diff --git a/main/jni/Application.mk b/main/jni/Application.mk
index 838c2eba..7033ee93 100644
--- a/main/jni/Application.mk
+++ b/main/jni/Application.mk
@@ -2,7 +2,7 @@ ifeq ($(USE_SHORT_COMMANDS),1)
APP_SHORT_COMMANDS := true
endif
-APP_ABI := arm64-v8a armeabi armeabi-v7a x86 x86_64
+APP_ABI := arm64-v8a armeabi-v7a x86 x86_64
APP_PLATFORM := android-14
#APP_STL:=stlport_static
diff --git a/main/misc/build-native.sh b/main/misc/build-native.sh
deleted file mode 100755
index 75706e21..00000000
--- a/main/misc/build-native.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-
-# Exit on errors
-set -e
-
-# Generate git config if the openvpn directory is checked out from git
-if [ -e openvpn/.git ]; then
- GIT=git
- cd openvpn
- CONFIGURE_GIT_CHFILES=$($GIT diff-files --name-status -r --ignore-submodules --quiet -- || echo "+")
- CONFIGURE_GIT_UNCOMMITTED=$($GIT diff-index --cached --quiet --ignore-submodules HEAD || echo "*")
- CONFIGURE_GIT_REVISION=$($GIT rev-parse --symbolic-full-name HEAD | cut -d/ -f3)-$($GIT rev-parse --short=16 HEAD)
- echo "#define CONFIGURE_GIT_REVISION \"${CONFIGURE_GIT_REVISION}\"" > config-version.h.tmp; \
- echo "#define CONFIGURE_GIT_FLAGS \"${CONFIGURE_GIT_CHFILES}${CONFIGURE_GIT_UNCOMMITTED}\"" >> config-version.h.tmp
-
- if ! [ -f config-version.h ] || ! cmp -s config-version.h.tmp config-version.h; then \
- echo "replacing config-version.h"
- mv config-version.h.tmp config-version.h
- else
- rm -f config-version.h.tmp
- fi
- cd ..
-else
- echo "Cannot find .git directory in openvpn, aborting"
- exit 1
-fi
-
-if [ "x$1" = "x" ]; then
- ndk-build -j 8 USE_BREAKPAD=0
-else
- ndk-build $@
-fi
-
-if [ $? = 0 ]; then
- rm -rf ovpnlibs/
-
- cd libs
- mkdir -p ../ovpnlibs/assets
- for i in *
- do
- cp -v $i/nopie_openvpn ../ovpnlibs/assets/nopie_openvpn.$i
- cp -v $i/pie_openvpn ../ovpnlibs/assets/pie_openvpn.$i
- done
- # Removed compiled openssl libs, will use platform so libs
- # Reduces size of apk
- #
- rm -v */libcrypto.so */libssl.so || true
-
- for arch in *
- do
- builddir=../ovpnlibs/jniLibs/$arch
- mkdir -p $builddir
- cp -v $arch/*.so $builddir
- done
-else
- exit $?
-fi
diff --git a/main/misc/fetchtranslations.sh b/main/misc/fetchtranslations.sh
index b6589ce9..dc56d48e 100755
--- a/main/misc/fetchtranslations.sh
+++ b/main/misc/fetchtranslations.sh
@@ -5,7 +5,7 @@ if [ "$ICSCROWDAPIKEY" != "" ]
then
echo "Generating new translation archives"
#fetch -q -1 -o - "http://api.crowdin.net/api/project/ics-openvpn/export?key=$ICSCROWDAPIKEY"
- curl "http://api.crowdin.net/api/project/ics-openvpn/export?key=$ICSCROWDAPIKEY"
+ curl "https://api.crowdin.com/api/project/ics-openvpn/export?key=$ICSCROWDAPIKEY"
fi
echo "Fetch translation archive"
@@ -15,7 +15,7 @@ wget -q https://crowdin.com/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)
+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)
langtoinclude="de es fr hu it no nl pl pt ro ru tr"
diff --git a/main/misc/genFAQ.py b/main/misc/genFAQ.py
index d69a5e6b..821e9a4c 100755
--- a/main/misc/genFAQ.py
+++ b/main/misc/genFAQ.py
@@ -108,6 +108,8 @@ def getVersionString(ver):
return "4.4 (Kit Kat)"
elif ver == "Build.VERSION_CODES.LOLLIPOP":
return "5.0 (Lollipop)"
+ elif ver == "Build.VERSION_CODES.LOLLIPOP_MR1":
+ return "5.1 (Lollipop MR1)"
else:
return "API " + ver
diff --git a/main/openssl b/main/openssl
deleted file mode 160000
-Subproject 8b837cde90aa660dbbe9075c40a508e21f1aba1
diff --git a/main/openvpn b/main/openvpn
deleted file mode 160000
-Subproject da9d62d4d329d3fc7b012bc8b9d213d9a4685a8
diff --git a/main/ovpn3/Android.mk b/main/ovpn3/Android.mk
deleted file mode 100644
index 4564ca52..00000000
--- a/main/ovpn3/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-LOCAL_PATH:= $(call my-dir)/
-
-include $(CLEAR_VARS)
-
-LOCAL_LDLIBS := -lz
-LOCAL_C_INCLUDES := openssl/include lzo/include openssl/crypto openssl openvpn/src/compat openvpn3/client openvpn3 boost_1_55_0 polarssl/include snappy asio/asio/include
-LOCAL_CPP_FEATURES += exceptions rtti
-
-#LOCAL_SHARED_LIBRARIES := libssl libcrypto
-#LOCAL_SHARED_LIBRARIES := polarssl-dynamic
-LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static liblzo-static
-#LOCAL_STATIC_LIBRARIES := liblzo-static
-
-#LOCAL_CFLAGS= -DHAVE_CONFIG_H -DTARGET_ABI=\"${TARGET_ABI}\" -DUSE_POLARSSL -DHAVE_LZO -DASIO_STANDALONE
-LOCAL_CFLAGS= -DHAVE_CONFIG_H -DTARGET_ABI=\"${TARGET_ABI}\" -DUSE_OPENSSL -DHAVE_LZO -DASIO_STANDALONE
-
-LOCAL_CXXFLAGS += -std=c++1y
-
-#ifneq ($(TARGET_ARCH),mips)
-#LOCAL_STATIC_LIBRARIES += breakpad_client
-#LOCAL_CFLAGS += -DGOOGLE_BREAKPAD=1
-#endif
-
-LOCAL_MODULE = ovpn3
-
-LOCAL_SRC_FILES:= \
- ../openvpn3/javacli/ovpncli_wrap.cxx \
- ../openvpn3/client/ovpncli.cpp \
-
-
-#ifneq ($(TARGET_ARCH),mips)
-#LOCAL_SRC_FILES+=src/openvpn/breakpad.cpp
-#endif
-
-
-
-include $(BUILD_SHARED_LIBRARY)
-#include $(BUILD_EXECUTABLE)
-
-
-
diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml
index d8239bc9..efee02f7 100644
--- a/main/src/main/AndroidManifest.xml
+++ b/main/src/main/AndroidManifest.xml
@@ -1,10 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
+<?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
- -->
-
+-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="de.blinkt.openvpn">
@@ -16,6 +13,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> -->
+
<!-- <uses-permission android:name="com.android.vending.BILLING" /> -->
<uses-feature
@@ -28,6 +26,7 @@
<application
android:name=".core.ICSOpenVPNApplication"
android:allowBackup="true"
+ android:appCategory="productivity"
android:banner="@mipmap/banner_tv"
android:icon="@mipmap/ic_launcher"
android:label="@string/app"
@@ -38,7 +37,6 @@
android:name=".activities.VPNPreferences"
android:exported="false"
android:windowSoftInputMode="stateHidden" />
-
<activity
android:name=".activities.DisconnectVPN"
android:autoRemoveFromRecents="true"
@@ -46,7 +44,6 @@
android:noHistory="true"
android:taskAffinity=".DisconnectVPN"
android:theme="@style/blinkt.dialog" />
-
<activity
android:name=".activities.LogWindow"
android:allowTaskReparenting="true"
@@ -67,39 +64,36 @@
<service
android:name=".core.OpenVPNService"
- android:process=":openvpn"
- android:permission="android.permission.BIND_VPN_SERVICE" >
+ android:permission="android.permission.BIND_VPN_SERVICE"
+ android:process=":openvpn">
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
-
</service>
-
<service
android:name=".api.ExternalOpenVPNService"
android:process=":openvpn"
tools:ignore="ExportedService">
-
<intent-filter>
<action android:name="de.blinkt.openvpn.api.IOpenVPNAPIService" />
</intent-filter>
</service>
-
- <service android:name=".core.OpenVPNStatusService"
- android:process=":openvpn"
- android:exported="false" />
-
-
+ <service
+ android:name=".core.OpenVPNStatusService"
+ android:exported="false"
+ android:process=":openvpn" />
<service
android:name=".OpenVPNTileService"
- android:value="true"
- android:label="@string/qs_title"
android:icon="@drawable/ic_quick"
- android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
+ android:label="@string/qs_title"
+ android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
+ android:value="true">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
- <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
+
+ <meta-data
+ android:name="android.service.quicksettings.ACTIVE_TILE"
android:value="false" />
</service>
@@ -118,7 +112,6 @@
<intent-filter android:priority="999">
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
-
</intent-filter>
</receiver>
@@ -129,7 +122,8 @@
android:taskAffinity=".ConfigConverter"
android:uiOptions="splitActionBarWhenNarrow"
tools:ignore="ExportedActivity">
- <intent-filter android:label="@string/import_config"
+ <intent-filter
+ android:label="@string/import_config"
tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
@@ -138,7 +132,8 @@
<data android:mimeType="application/x-openvpn-profile" />
</intent-filter>
- <intent-filter android:label="@string/import_config"
+ <intent-filter
+ android:label="@string/import_config"
tools:ignore="AppLinkUrlError">
<action android:name="android.intent.action.VIEW" />
@@ -157,6 +152,7 @@
<data android:mimeType="*/*" />
<data android:scheme="file" />
+ <data android:scheme="content" />
<data android:host="*" />
<data android:pathPattern=".*..*..*..*..*.ovpn" />
<data android:pathPattern=".*..*..*..*.ovpn" />
@@ -179,8 +175,6 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
-
-
<activity
android:name=".api.Intents"
android:autoRemoveFromRecents="true"
@@ -195,8 +189,6 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
-
-
<activity
android:name=".activities.CreateShortcuts"
android:excludeFromRecents="true"
@@ -205,6 +197,7 @@
android:theme="@android:style/Theme.DeviceDefault.Light.DialogWhenLarge">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
+
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
@@ -216,7 +209,6 @@
android:grantUriPermissions="true"
tools:ignore="ExportedContentProvider" />
-
<!--
<receiver android:name="core.GetRestrictionReceiver">
<intent-filter>
@@ -224,6 +216,21 @@
</intent-filter>
</receiver>
-->
+ <activity
+ android:name=".activities.OpenSSLSpeed"
+ android:label="@string/title_activity_open_sslspeed"
+ android:parentActivityName=".activities.MainActivity">
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value="de.blinkt.openvpn.activities.MainActivity" />
+ </activity>
+ <activity
+ android:name=".api.RemoteAction"
+ />
+ <activity-alias
+ android:exported="true"
+ android:name=".api.DisconnectVPN"
+ android:targetActivity=".api.RemoteAction" />
</application>
-</manifest>
+</manifest> \ No newline at end of file
diff --git a/main/src/main/cpp/CMakeLists.txt b/main/src/main/cpp/CMakeLists.txt
new file mode 100644
index 00000000..1aca0c36
--- /dev/null
+++ b/main/src/main/cpp/CMakeLists.txt
@@ -0,0 +1,207 @@
+cmake_minimum_required(VERSION 3.4.1)
+# Git version string
+
+include(GetGitRevisionDescription.cmake)
+git_describe(OPENVPN2_GIT "${CMAKE_CURRENT_SOURCE_DIR}/openvpn" "--tags" "--always" "--long")
+git_describe(OPENVPN3_GIT "${CMAKE_CURRENT_SOURCE_DIR}/openvpn3" "--tags" "--always" "--long")
+message ("OpenVPN 2.x version ${OPENVPN2_GIT}")
+message ("OpenVPN 3.x version ${OPENVPN3_GIT}")
+
+
+# Set mbedtls options
+OPTION(ENABLE_PROGRAMS "" OFF)
+OPTION(USE_SHARED_MBEDTLS_LIBRARY "" OFF)
+OPTION(ENABLE_TESTING "" OFF)
+
+#add_subdirectory(lzo)
+include(tools.cmake)
+include(lzo.cmake)
+include(openssl.cmake)
+
+# Super hacky way to determine flavour
+#-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/arne/software/icsopenvpn/main/build/intermediates/cmake/normal/debug/obj/arm64-v8a
+if (NOT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} MATCHES "build/intermediates/cmake/.*noovpn3.*/")
+ add_subdirectory(mbedtls)
+ add_custom_command(OUTPUT "ovpncli_wrap.cxx"
+ COMMAND ${CMAKE_COMMAND} -E make_directory ovpn3
+ COMMAND swig -outdir ovpn3
+ -c++
+ -java -package net.openvpn.ovpn3
+ -outcurrentdir
+ -I${CMAKE_SOURCE_DIR}/openvpn3/client
+ -I${CMAKE_SOURCE_DIR}/openvpn3
+ ${CMAKE_SOURCE_DIR}/openvpn3/javacli/ovpncli.i)
+
+ set(ovpn3_SRCS
+ openvpn3/client/ovpncli.cpp
+ ovpncli_wrap.cxx)
+
+ add_library(ovpn3 SHARED ${ovpn3_SRCS})
+
+ target_include_directories(ovpn3 PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/lzo/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openvpn3
+ ${CMAKE_CURRENT_SOURCE_DIR}/asio/asio/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openvpn3/client
+ ${CMAKE_CURRENT_SOURCE_DIR}/mbedtls/include
+ )
+
+ target_compile_options(ovpn3 PRIVATE -std=c++1y)
+ target_compile_definitions(ovpn3 PRIVATE
+ -DHAVE_CONFIG_H
+ -DHAVE_LZO
+ -DASIO_STANDALONE
+ -DUSE_ASIO
+ -DUSE_MBEDTLS
+ -DGIT_VERSION_STRING=\"${OPENVPN3_GIT}\"
+ -DNO_ROUTE_EXCLUDE_EMULATION
+ )
+ target_link_libraries(ovpn3 mbedtls mbedx509 mbedcrypto lzo_static_lib)
+else()
+ message ("Not budiling OpenVPN for output dir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
+endif()
+
+add_library(opvpnutil SHARED opvpnutil/jniglue.c opvpnutil/scan_ifs.c opvpnutil/sslspeed.c)
+target_compile_definitions(opvpnutil PRIVATE -DTARGET_ARCH_ABI=\"${ANDROID_ABI}\")
+target_link_libraries(opvpnutil log crypto ssl)
+
+# The magic Jellybean keystore signing hack. Beware dragons and dlsyms magic ahead
+add_library(jbcrypto SHARED jbcrypto/jbcrypto.cpp)
+target_link_libraries(jbcrypto log dl)
+target_compile_options(jbcrypto PRIVATE)
+
+set(openvpn_srcs
+ src/compat/compat-basename.c
+ src/compat/compat-daemon.c
+ src/compat/compat-dirname.c
+ src/compat/compat-gettimeofday.c
+ src/compat/compat-inet_ntop.c
+ src/compat/compat-inet_pton.c
+ src/compat/compat-lz4.c
+ src/openvpn/argv.c
+ src/openvpn/base64.c
+ src/openvpn/buffer.c
+ src/openvpn/clinat.c
+ src/openvpn/console.c
+ src/openvpn/console_builtin.c
+ src/openvpn/crypto.c
+ src/openvpn/crypto_openssl.c
+ src/openvpn/crypto_mbedtls.c
+ src/openvpn/cryptoapi.c
+ src/openvpn/dhcp.c
+ src/openvpn/error.c
+ src/openvpn/event.c
+ src/openvpn/fdmisc.c
+ src/openvpn/forward.c
+ src/openvpn/fragment.c
+ src/openvpn/gremlin.c
+ src/openvpn/helper.c
+ src/openvpn/httpdigest.c
+ src/openvpn/init.c
+ src/openvpn/interval.c
+ src/openvpn/list.c
+ src/openvpn/lladdr.c
+ src/openvpn/lzo.c
+ src/openvpn/manage.c
+ src/openvpn/mbuf.c
+ src/openvpn/misc.c
+ src/openvpn/mroute.c
+ src/openvpn/mss.c
+ src/openvpn/mstats.c
+ src/openvpn/mtcp.c
+ src/openvpn/mtu.c
+ src/openvpn/mudp.c
+ src/openvpn/multi.c
+ src/openvpn/ntlm.c
+ src/openvpn/occ.c
+ src/openvpn/openvpn.c
+ src/openvpn/options.c
+ src/openvpn/otime.c
+ src/openvpn/packet_id.c
+ src/openvpn/perf.c
+ src/openvpn/pf.c
+ src/openvpn/ping.c
+ src/openvpn/pkcs11.c
+ src/openvpn/pkcs11_openssl.c
+ src/openvpn/platform.c
+ src/openvpn/plugin.c
+ src/openvpn/pool.c
+ src/openvpn/proto.c
+ src/openvpn/proxy.c
+ src/openvpn/ps.c
+ src/openvpn/push.c
+ src/openvpn/reliable.c
+ src/openvpn/route.c
+ src/openvpn/schedule.c
+ src/openvpn/session_id.c
+ src/openvpn/shaper.c
+ src/openvpn/sig.c
+ src/openvpn/socket.c
+ src/openvpn/socks.c
+ src/openvpn/ssl.c
+ src/openvpn/ssl_openssl.c
+ src/openvpn/ssl_mbedtls.c
+ src/openvpn/ssl_verify.c
+ src/openvpn/ssl_verify_openssl.c
+ src/openvpn/ssl_verify_mbedtls.c
+ src/openvpn/status.c
+ src/openvpn/tls_crypt.c
+ src/openvpn/tun.c
+ src/openvpn/comp-lz4.c
+ src/openvpn/comp.c
+ src/openvpn/compstub.c
+ )
+
+PREPEND(openvpn_srcs_with_path "openvpn" ${openvpn_srcs})
+add_library(openvpn SHARED ${openvpn_srcs_with_path})
+target_include_directories(openvpn PRIVATE
+ openvpn-config
+ openvpn/src/compat
+ openvpn/include
+ lzo/include
+ openvpn
+ )
+
+target_compile_definitions(openvpn PRIVATE
+ -DHAVE_CONFIG_H
+ -DCONFIGURE_GIT_REVISION=\"${OPENVPN2_GIT}\"
+ -DCONFIGURE_GIT_FLAGS=\"\"
+ -DTARGET_ABI=\"${ANDROID_ABI}\"
+ )
+
+target_compile_definitions(openvpn PRIVATE
+ -DENABLE_CRYPTO_OPENSSL=1
+ )
+target_link_libraries(openvpn crypto ssl lzo_static_lib)
+
+add_executable(pie_openvpn.${ANDROID_ABI} minivpn/minivpn.c)
+target_compile_options(pie_openvpn.${ANDROID_ABI} PRIVATE -fPIE)
+target_link_libraries(pie_openvpn.${ANDROID_ABI} PRIVATE openvpn -fPIE -pie)
+
+add_executable(nopie_openvpn.${ANDROID_ABI} minivpn/minivpn.c)
+target_link_libraries(nopie_openvpn.${ANDROID_ABI} PRIVATE openvpn)
+
+# Hack to copy OpenVPN binaries to assets directory
+SET(OVPN_ASSET_DIR ${CMAKE_SOURCE_DIR}/../../../build/ovpnassets)
+
+add_custom_target(makeassetdir ALL
+ COMMAND ${CMAKE_COMMAND} -E make_directory ${OVPN_ASSET_DIR})
+
+add_custom_command(TARGET nopie_openvpn.${ANDROID_ABI} POST_BUILD
+ COMMAND
+ ${CMAKE_COMMAND} -E copy
+ ${CMAKE_CURRENT_BINARY_DIR}/nopie_openvpn.${ANDROID_ABI}
+ ${OVPN_ASSET_DIR}
+)
+
+add_custom_command(TARGET pie_openvpn.${ANDROID_ABI} POST_BUILD
+ COMMAND
+ ${CMAKE_COMMAND} -E copy
+ ${CMAKE_CURRENT_BINARY_DIR}/pie_openvpn.${ANDROID_ABI}
+ ${OVPN_ASSET_DIR}
+)
+
+# Hack that these targets are really executed
+add_dependencies(opvpnutil pie_openvpn.${ANDROID_ABI} nopie_openvpn.${ANDROID_ABI})
+add_dependencies(pie_openvpn.${ANDROID_ABI} makeassetdir)
+add_dependencies(nopie_openvpn.${ANDROID_ABI} makeassetdir)
diff --git a/main/src/main/cpp/GetGitRevisionDescription.cmake b/main/src/main/cpp/GetGitRevisionDescription.cmake
new file mode 100644
index 00000000..54dfbe50
--- /dev/null
+++ b/main/src/main/cpp/GetGitRevisionDescription.cmake
@@ -0,0 +1,169 @@
+# From https://raw.githubusercontent.com/rpavlik/cmake-modules/master/GetGitRevisionDescription.cmake.in
+# - Returns a version string from Git
+#
+# These functions force a re-configure on each git commit so that you can
+# trust the values of the variables in your build system.
+#
+# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
+#
+# Returns the refspec and sha hash of the current head revision
+#
+# git_describe(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe on the source tree, and adjusting
+# the output so that it tests false if an error occurs.
+#
+# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe --exact-match on the source tree,
+# and adjusting the output so that it tests false if there was no exact
+# matching tag.
+#
+# git_local_changes(<var>)
+#
+# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
+# Uses the return code of "git diff-index --quiet HEAD --".
+# Does not regard untracked files.
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+if(__get_git_revision_description)
+ return()
+endif()
+set(__get_git_revision_description YES)
+
+# We must run the following at "include" time, not at function call time,
+# to find the path to this module rather than the path to a calling list file
+get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
+
+function(get_git_head_revision _refspecvar _hashvar path)
+ set(GIT_PARENT_DIR "${path}")
+ set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+ while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
+ set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
+ get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
+ if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
+ # We have reached the root directory, we are not in git
+ set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+ set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+ return()
+ endif()
+ set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+ endwhile()
+ # check if this is a submodule
+ if(NOT IS_DIRECTORY ${GIT_DIR})
+ file(READ ${GIT_DIR} submodule)
+ string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
+ get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
+ get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
+ endif()
+ set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
+ if(NOT EXISTS "${GIT_DATA}")
+ file(MAKE_DIRECTORY "${GIT_DATA}")
+ endif()
+
+ if(NOT EXISTS "${GIT_DIR}/HEAD")
+ return()
+ endif()
+ set(HEAD_FILE "${GIT_DATA}/HEAD")
+ configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
+
+ configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
+ "${GIT_DATA}/grabRef.cmake"
+ @ONLY)
+ include("${GIT_DATA}/grabRef.cmake")
+
+ set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
+ set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
+endfunction()
+
+function(git_describe _var path)
+ if(NOT GIT_FOUND)
+ find_package(Git QUIET)
+ endif()
+ get_git_head_revision(refspec hash ${path})
+ if(NOT GIT_FOUND)
+ set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
+ return()
+ endif()
+ if(NOT hash)
+ set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
+ return()
+ endif()
+
+ # TODO sanitize
+ #if((${ARGN}" MATCHES "&&") OR
+ # (ARGN MATCHES "||") OR
+ # (ARGN MATCHES "\\;"))
+ # message("Please report the following error to the project!")
+ # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
+ #endif()
+
+ #message(STATUS "Arguments to execute_process: ${ARGN}")
+
+ execute_process(COMMAND
+ "${GIT_EXECUTABLE}"
+ describe
+ ${hash}
+ ${ARGN}
+ WORKING_DIRECTORY
+ ${path}
+ RESULT_VARIABLE
+ res
+ OUTPUT_VARIABLE
+ out
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(NOT res EQUAL 0)
+ set(out "${out}-${res}-NOTFOUND")
+ endif()
+
+ set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
+
+function(git_get_exact_tag _var path)
+ git_describe(out ${path} --exact-match ${ARGN})
+ set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
+
+function(git_local_changes _var path)
+ if(NOT GIT_FOUND)
+ find_package(Git QUIET)
+ endif()
+ get_git_head_revision(refspec hash path)
+ if(NOT GIT_FOUND)
+ set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
+ return()
+ endif()
+ if(NOT hash)
+ set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
+ return()
+ endif()
+
+ execute_process(COMMAND
+ "${GIT_EXECUTABLE}"
+ diff-index --quiet HEAD --
+ WORKING_DIRECTORY
+ ${path}
+ RESULT_VARIABLE
+ res
+ OUTPUT_VARIABLE
+ out
+ ERROR_QUIET
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if(res EQUAL 0)
+ set(${_var} "CLEAN" PARENT_SCOPE)
+ else()
+ set(${_var} "DIRTY" PARENT_SCOPE)
+ endif()
+endfunction()
diff --git a/main/src/main/cpp/GetGitRevisionDescription.cmake.in b/main/src/main/cpp/GetGitRevisionDescription.cmake.in
new file mode 100644
index 00000000..4005c47a
--- /dev/null
+++ b/main/src/main/cpp/GetGitRevisionDescription.cmake.in
@@ -0,0 +1,42 @@
+# From https://raw.githubusercontent.com/rpavlik/cmake-modules/master/GetGitRevisionDescription.cmake.in
+#
+# Internal file for GetGitRevisionDescription.cmake
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+set(HEAD_HASH)
+
+file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
+
+string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
+if(HEAD_CONTENTS MATCHES "ref")
+ # named branch
+ string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
+ if(EXISTS "@GIT_DIR@/${HEAD_REF}")
+ configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+ else()
+ configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
+ file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
+ if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
+ set(HEAD_HASH "${CMAKE_MATCH_1}")
+ endif()
+ endif()
+else()
+ # detached HEAD
+ configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
+endif()
+
+if(NOT HEAD_HASH)
+ file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
+ string(STRIP "${HEAD_HASH}" HEAD_HASH)
+endif()
diff --git a/main/src/main/cpp/asio b/main/src/main/cpp/asio
new file mode 160000
+Subproject 9229964dc1853b375077338cb398027a6dbbb14
diff --git a/main/jni/jbcrypto.cpp b/main/src/main/cpp/jbcrypto/jbcrypto.cpp
index 810a3bc7..93a17d95 100644
--- a/main/jni/jbcrypto.cpp
+++ b/main/src/main/cpp/jbcrypto/jbcrypto.cpp
@@ -8,19 +8,40 @@
#include <jni.h>
-
-#include <internal/cryptlib.h>
-#include <openssl/ssl.h>
-#include <openssl/rsa.h>
-#include <openssl/objects.h>
-#include <openssl/md5.h>
#include <android/log.h>
-#include <openssl/err.h>
-
-#include <internal/evp_int.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+
+// Minimal defines for openssl 1.0.x
+typedef void *RSA;
+
+struct EVP_PKEY
+{
+ int type;
+ int save_type;
+ int references;
+ void *ameth;
+ void *engine;
+ union {
+ RSA *rsa;
+ } pkey;
+};
+
+# define RSA_PKCS1_PADDING 1
extern "C" {
-jbyteArray Java_de_blinkt_openvpn_core_NativeUtils_rsasign(JNIEnv* env, jclass, jbyteArray from, jint pkeyRef);
+ jbyteArray Java_de_blinkt_openvpn_core_NativeUtils_rsasign(JNIEnv* env, jclass, jbyteArray from, jint pkeyRef);
+ int jniThrowException(JNIEnv* env, const char* className, const char* msg);
+
+ int (*RSA_size_dyn)(const RSA *);
+ int (*RSA_private_encrypt_dyn)(int, const unsigned char *, unsigned char *, RSA *, int);
+
+ unsigned long (*ERR_get_error_dyn)();
+ void (*ERR_error_string_n_dyn)(unsigned long, char *, size_t);
+
+ void (*ERR_print_errors_fp_dyn)(FILE *);
+
}
int jniThrowException(JNIEnv* env, const char* className, const char* msg) {
@@ -46,6 +67,7 @@ int jniThrowException(JNIEnv* env, const char* className, const char* msg) {
static char opensslerr[1024];
jbyteArray Java_de_blinkt_openvpn_core_NativeUtils_rsasign (JNIEnv* env, jclass, jbyteArray from, jint pkeyRef) {
+
// EVP_MD_CTX* ctx = reinterpret_cast<EVP_MD_CTX*>(ctxRef);
EVP_PKEY* pkey = reinterpret_cast<EVP_PKEY*>(pkeyRef);
@@ -62,7 +84,8 @@ jbyteArray Java_de_blinkt_openvpn_core_NativeUtils_rsasign (JNIEnv* env, jclass,
jniThrowException(env, "java/lang/NullPointerException", "data is null");
int siglen;
- unsigned char* sigret = (unsigned char*)malloc(RSA_size(pkey->pkey.rsa));
+ RSA_size_dyn= (int (*) (const RSA *)) dlsym(RTLD_DEFAULT, "RSA_size");
+ unsigned char* sigret = (unsigned char*)malloc(RSA_size_dyn(pkey->pkey.rsa));
//int RSA_sign(int type, const unsigned char *m, unsigned int m_len,
@@ -72,18 +95,21 @@ jbyteArray Java_de_blinkt_openvpn_core_NativeUtils_rsasign (JNIEnv* env, jclass,
/* if (RSA_sign(NID_md5_sha1, (unsigned char*) data, datalen,
sigret, &siglen, pkey->pkey.rsa) <= 0 ) */
- siglen = RSA_private_encrypt(datalen,(unsigned char*) data,sigret,pkey->pkey.rsa,RSA_PKCS1_PADDING);
+ RSA_private_encrypt_dyn=(int (*)(int, const unsigned char *, unsigned char *, RSA *, int)) dlsym(RTLD_DEFAULT, "RSA_private_encrypt");
+ siglen = RSA_private_encrypt_dyn(datalen,(unsigned char*) data,sigret,pkey->pkey.rsa,RSA_PKCS1_PADDING);
if (siglen < 0)
{
+ ERR_get_error_dyn = (unsigned long (*)()) dlsym(RTLD_DEFAULT, "ERR_get_error");
+ ERR_error_string_n_dyn = (void (*)(unsigned long, char *, size_t)) dlsym(RTLD_DEFAULT, "ERR_error_string_n");
- ERR_error_string_n(ERR_get_error(), opensslerr ,1024);
+ ERR_error_string_n_dyn(ERR_get_error_dyn(), opensslerr ,1024);
jniThrowException(env, "java/security/InvalidKeyException", opensslerr);
- ERR_print_errors_fp(stderr);
+ ERR_print_errors_fp_dyn = (void (*)(FILE *)) dlsym(RTLD_DEFAULT, "ERR_print_errors_fp");
+ ERR_print_errors_fp_dyn(stderr);
return NULL;
-
}
diff --git a/main/src/main/cpp/lzo.cmake b/main/src/main/cpp/lzo.cmake
new file mode 100644
index 00000000..a0afbbda
--- /dev/null
+++ b/main/src/main/cpp/lzo.cmake
@@ -0,0 +1,75 @@
+# Lzo's own cmake is rather throublesome
+
+set(lzo_srcs
+ lzo1.c
+ lzo1_99.c
+ lzo1a.c
+ lzo1a_99.c
+ lzo1b_1.c
+ lzo1b_2.c
+ lzo1b_3.c
+ lzo1b_4.c
+ lzo1b_5.c
+ lzo1b_6.c
+ lzo1b_7.c
+ lzo1b_8.c
+ lzo1b_9.c
+ lzo1b_99.c
+ lzo1b_9x.c
+ lzo1b_cc.c
+ lzo1b_d1.c
+ lzo1b_d2.c
+ lzo1b_rr.c
+ lzo1b_xx.c
+ lzo1c_1.c
+ lzo1c_2.c
+ lzo1c_3.c
+ lzo1c_4.c
+ lzo1c_5.c
+ lzo1c_6.c
+ lzo1c_7.c
+ lzo1c_8.c
+ lzo1c_9.c
+ lzo1c_99.c
+ lzo1c_9x.c
+ lzo1c_cc.c
+ lzo1c_d1.c
+ lzo1c_d2.c
+ lzo1c_rr.c
+ lzo1c_xx.c
+ lzo1f_1.c
+ lzo1f_9x.c
+ lzo1f_d1.c
+ lzo1f_d2.c
+ lzo1x_1.c
+ lzo1x_1k.c
+ lzo1x_1l.c
+ lzo1x_1o.c
+ lzo1x_9x.c
+ lzo1x_d1.c
+ lzo1x_d2.c
+ lzo1x_d3.c
+ lzo1x_o.c
+ lzo1y_1.c
+ lzo1y_9x.c
+ lzo1y_d1.c
+ lzo1y_d2.c
+ lzo1y_d3.c
+ lzo1y_o.c
+ lzo1z_9x.c
+ lzo1z_d1.c
+ lzo1z_d2.c
+ lzo1z_d3.c
+ lzo2a_9x.c
+ lzo2a_d1.c
+ lzo2a_d2.c
+ lzo_crc.c
+ lzo_init.c
+ lzo_ptr.c
+ lzo_str.c
+ lzo_util.c
+ )
+
+PREPEND(lzo_src_with_path "lzo/src" ${lzo_srcs})
+add_library(lzo_static_lib ${lzo_src_with_path})
+target_include_directories(lzo_static_lib PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/lzo/include")
diff --git a/main/lzo/AUTHORS b/main/src/main/cpp/lzo/AUTHORS
index d53d32cd..d53d32cd 100644
--- a/main/lzo/AUTHORS
+++ b/main/src/main/cpp/lzo/AUTHORS
diff --git a/main/lzo/Android.mk b/main/src/main/cpp/lzo/Android.mk
index 004be5fb..004be5fb 100644
--- a/main/lzo/Android.mk
+++ b/main/src/main/cpp/lzo/Android.mk
diff --git a/main/lzo/B/00README.TXT b/main/src/main/cpp/lzo/B/00README.TXT
index 17d8ef8e..17d8ef8e 100644
--- a/main/lzo/B/00README.TXT
+++ b/main/src/main/cpp/lzo/B/00README.TXT
diff --git a/main/lzo/B/clean.bat b/main/src/main/cpp/lzo/B/clean.bat
index 1f7de592..1f7de592 100644
--- a/main/lzo/B/clean.bat
+++ b/main/src/main/cpp/lzo/B/clean.bat
diff --git a/main/lzo/B/done.bat b/main/src/main/cpp/lzo/B/done.bat
index b9bf6aa0..b9bf6aa0 100644
--- a/main/lzo/B/done.bat
+++ b/main/src/main/cpp/lzo/B/done.bat
diff --git a/main/lzo/B/dos32/bc_pp.bat b/main/src/main/cpp/lzo/B/dos32/bc_pp.bat
index 1af928a1..1af928a1 100644
--- a/main/lzo/B/dos32/bc_pp.bat
+++ b/main/src/main/cpp/lzo/B/dos32/bc_pp.bat
diff --git a/main/lzo/B/dos32/dj2.bat b/main/src/main/cpp/lzo/B/dos32/dj2.bat
index eb07ff6c..eb07ff6c 100644
--- a/main/lzo/B/dos32/dj2.bat
+++ b/main/src/main/cpp/lzo/B/dos32/dj2.bat
diff --git a/main/lzo/B/dos32/dj2.opt b/main/src/main/cpp/lzo/B/dos32/dj2.opt
index 9cd02cd0..9cd02cd0 100644
--- a/main/lzo/B/dos32/dj2.opt
+++ b/main/src/main/cpp/lzo/B/dos32/dj2.opt
diff --git a/main/lzo/B/dos32/dm.bat b/main/src/main/cpp/lzo/B/dos32/dm.bat
index e3c9e8a1..e3c9e8a1 100644
--- a/main/lzo/B/dos32/dm.bat
+++ b/main/src/main/cpp/lzo/B/dos32/dm.bat
diff --git a/main/lzo/B/dos32/emx.bat b/main/src/main/cpp/lzo/B/dos32/emx.bat
index 2b42003e..2b42003e 100644
--- a/main/lzo/B/dos32/emx.bat
+++ b/main/src/main/cpp/lzo/B/dos32/emx.bat
diff --git a/main/lzo/B/dos32/highc.bat b/main/src/main/cpp/lzo/B/dos32/highc.bat
index db5a1bda..db5a1bda 100644
--- a/main/lzo/B/dos32/highc.bat
+++ b/main/src/main/cpp/lzo/B/dos32/highc.bat
diff --git a/main/lzo/B/dos32/highc.rsp b/main/src/main/cpp/lzo/B/dos32/highc.rsp
index d477b962..d477b962 100644
--- a/main/lzo/B/dos32/highc.rsp
+++ b/main/src/main/cpp/lzo/B/dos32/highc.rsp
diff --git a/main/lzo/B/dos32/ndp.bat b/main/src/main/cpp/lzo/B/dos32/ndp.bat
index 70b3d633..70b3d633 100644
--- a/main/lzo/B/dos32/ndp.bat
+++ b/main/src/main/cpp/lzo/B/dos32/ndp.bat
diff --git a/main/lzo/B/dos32/ndp.rsp b/main/src/main/cpp/lzo/B/dos32/ndp.rsp
index c62b19eb..c62b19eb 100644
--- a/main/lzo/B/dos32/ndp.rsp
+++ b/main/src/main/cpp/lzo/B/dos32/ndp.rsp
diff --git a/main/lzo/B/dos32/sc.bat b/main/src/main/cpp/lzo/B/dos32/sc.bat
index 88be0958..88be0958 100644
--- a/main/lzo/B/dos32/sc.bat
+++ b/main/src/main/cpp/lzo/B/dos32/sc.bat
diff --git a/main/lzo/B/dos32/wc.bat b/main/src/main/cpp/lzo/B/dos32/wc.bat
index 306f982d..306f982d 100644
--- a/main/lzo/B/dos32/wc.bat
+++ b/main/src/main/cpp/lzo/B/dos32/wc.bat
diff --git a/main/lzo/B/dos32/zc.bat b/main/src/main/cpp/lzo/B/dos32/zc.bat
index 2d344cb1..2d344cb1 100644
--- a/main/lzo/B/dos32/zc.bat
+++ b/main/src/main/cpp/lzo/B/dos32/zc.bat
diff --git a/main/lzo/B/generic/Makefile b/main/src/main/cpp/lzo/B/generic/Makefile
index 98f5d9e5..98f5d9e5 100644
--- a/main/lzo/B/generic/Makefile
+++ b/main/src/main/cpp/lzo/B/generic/Makefile
diff --git a/main/lzo/B/generic/build.sh b/main/src/main/cpp/lzo/B/generic/build.sh
index 28f95b54..28f95b54 100755
--- a/main/lzo/B/generic/build.sh
+++ b/main/src/main/cpp/lzo/B/generic/build.sh
diff --git a/main/lzo/B/generic/build_freestanding.sh b/main/src/main/cpp/lzo/B/generic/build_freestanding.sh
index 9d391e9a..9d391e9a 100755
--- a/main/lzo/B/generic/build_freestanding.sh
+++ b/main/src/main/cpp/lzo/B/generic/build_freestanding.sh
diff --git a/main/lzo/B/generic/build_gcc.sh b/main/src/main/cpp/lzo/B/generic/build_gcc.sh
index 241bbf0f..241bbf0f 100755
--- a/main/lzo/B/generic/build_gcc.sh
+++ b/main/src/main/cpp/lzo/B/generic/build_gcc.sh
diff --git a/main/lzo/B/generic/clean.sh b/main/src/main/cpp/lzo/B/generic/clean.sh
index eb7a9680..eb7a9680 100755
--- a/main/lzo/B/generic/clean.sh
+++ b/main/src/main/cpp/lzo/B/generic/clean.sh
diff --git a/main/lzo/B/os2/emx.bat b/main/src/main/cpp/lzo/B/os2/emx.bat
index 182f0497..182f0497 100644
--- a/main/lzo/B/os2/emx.bat
+++ b/main/src/main/cpp/lzo/B/os2/emx.bat
diff --git a/main/lzo/B/os2/wc.bat b/main/src/main/cpp/lzo/B/os2/wc.bat
index cecce7d8..cecce7d8 100644
--- a/main/lzo/B/os2/wc.bat
+++ b/main/src/main/cpp/lzo/B/os2/wc.bat
diff --git a/main/lzo/B/os2/zc.bat b/main/src/main/cpp/lzo/B/os2/zc.bat
index 91bd480d..91bd480d 100644
--- a/main/lzo/B/os2/zc.bat
+++ b/main/src/main/cpp/lzo/B/os2/zc.bat
diff --git a/main/lzo/B/prepare.bat b/main/src/main/cpp/lzo/B/prepare.bat
index 34bac191..34bac191 100644
--- a/main/lzo/B/prepare.bat
+++ b/main/src/main/cpp/lzo/B/prepare.bat
diff --git a/main/lzo/B/src.rsp b/main/src/main/cpp/lzo/B/src.rsp
index 2a1dbce6..2a1dbce6 100644
--- a/main/lzo/B/src.rsp
+++ b/main/src/main/cpp/lzo/B/src.rsp
diff --git a/main/lzo/B/unset.bat b/main/src/main/cpp/lzo/B/unset.bat
index 21672dd6..21672dd6 100644
--- a/main/lzo/B/unset.bat
+++ b/main/src/main/cpp/lzo/B/unset.bat
diff --git a/main/lzo/B/win32/bc.bat b/main/src/main/cpp/lzo/B/win32/bc.bat
index 7124c361..7124c361 100644
--- a/main/lzo/B/win32/bc.bat
+++ b/main/src/main/cpp/lzo/B/win32/bc.bat
diff --git a/main/lzo/B/win32/bc.rsp b/main/src/main/cpp/lzo/B/win32/bc.rsp
index b48a182d..b48a182d 100644
--- a/main/lzo/B/win32/bc.rsp
+++ b/main/src/main/cpp/lzo/B/win32/bc.rsp
diff --git a/main/lzo/B/win32/cygwin.bat b/main/src/main/cpp/lzo/B/win32/cygwin.bat
index 7cc44486..7cc44486 100644
--- a/main/lzo/B/win32/cygwin.bat
+++ b/main/src/main/cpp/lzo/B/win32/cygwin.bat
diff --git a/main/lzo/B/win32/cygwin.rsp b/main/src/main/cpp/lzo/B/win32/cygwin.rsp
index 62eab38c..62eab38c 100644
--- a/main/lzo/B/win32/cygwin.rsp
+++ b/main/src/main/cpp/lzo/B/win32/cygwin.rsp
diff --git a/main/lzo/B/win32/dm.bat b/main/src/main/cpp/lzo/B/win32/dm.bat
index e9f944a3..e9f944a3 100644
--- a/main/lzo/B/win32/dm.bat
+++ b/main/src/main/cpp/lzo/B/win32/dm.bat
diff --git a/main/lzo/B/win32/ic.bat b/main/src/main/cpp/lzo/B/win32/ic.bat
index eeb260bd..eeb260bd 100644
--- a/main/lzo/B/win32/ic.bat
+++ b/main/src/main/cpp/lzo/B/win32/ic.bat
diff --git a/main/lzo/B/win32/lccwin32.bat b/main/src/main/cpp/lzo/B/win32/lccwin32.bat
index bd40d044..bd40d044 100644
--- a/main/lzo/B/win32/lccwin32.bat
+++ b/main/src/main/cpp/lzo/B/win32/lccwin32.bat
diff --git a/main/lzo/B/win32/mingw.bat b/main/src/main/cpp/lzo/B/win32/mingw.bat
index edd9b894..edd9b894 100644
--- a/main/lzo/B/win32/mingw.bat
+++ b/main/src/main/cpp/lzo/B/win32/mingw.bat
diff --git a/main/lzo/B/win32/mwerks.bat b/main/src/main/cpp/lzo/B/win32/mwerks.bat
index cb1a4718..cb1a4718 100644
--- a/main/lzo/B/win32/mwerks.bat
+++ b/main/src/main/cpp/lzo/B/win32/mwerks.bat
diff --git a/main/lzo/B/win32/pellesc.bat b/main/src/main/cpp/lzo/B/win32/pellesc.bat
index 5115be6d..5115be6d 100644
--- a/main/lzo/B/win32/pellesc.bat
+++ b/main/src/main/cpp/lzo/B/win32/pellesc.bat
diff --git a/main/lzo/B/win32/pgi.bat b/main/src/main/cpp/lzo/B/win32/pgi.bat
index a3b37988..a3b37988 100644
--- a/main/lzo/B/win32/pgi.bat
+++ b/main/src/main/cpp/lzo/B/win32/pgi.bat
diff --git a/main/lzo/B/win32/pw32.bat b/main/src/main/cpp/lzo/B/win32/pw32.bat
index 43d5717f..43d5717f 100644
--- a/main/lzo/B/win32/pw32.bat
+++ b/main/src/main/cpp/lzo/B/win32/pw32.bat
diff --git a/main/lzo/B/win32/rsxnt.bat b/main/src/main/cpp/lzo/B/win32/rsxnt.bat
index c72314fc..c72314fc 100644
--- a/main/lzo/B/win32/rsxnt.bat
+++ b/main/src/main/cpp/lzo/B/win32/rsxnt.bat
diff --git a/main/lzo/B/win32/sc.bat b/main/src/main/cpp/lzo/B/win32/sc.bat
index 6f2932f7..6f2932f7 100644
--- a/main/lzo/B/win32/sc.bat
+++ b/main/src/main/cpp/lzo/B/win32/sc.bat
diff --git a/main/lzo/B/win32/vc.bat b/main/src/main/cpp/lzo/B/win32/vc.bat
index f4336af5..f4336af5 100644
--- a/main/lzo/B/win32/vc.bat
+++ b/main/src/main/cpp/lzo/B/win32/vc.bat
diff --git a/main/lzo/B/win32/vc.rsp b/main/src/main/cpp/lzo/B/win32/vc.rsp
index 690bec1c..690bec1c 100644
--- a/main/lzo/B/win32/vc.rsp
+++ b/main/src/main/cpp/lzo/B/win32/vc.rsp
diff --git a/main/lzo/B/win32/vc_dll.bat b/main/src/main/cpp/lzo/B/win32/vc_dll.bat
index ee1f8dec..ee1f8dec 100644
--- a/main/lzo/B/win32/vc_dll.bat
+++ b/main/src/main/cpp/lzo/B/win32/vc_dll.bat
diff --git a/main/lzo/B/win32/vc_dll.def b/main/src/main/cpp/lzo/B/win32/vc_dll.def
index 967cdf16..967cdf16 100644
--- a/main/lzo/B/win32/vc_dll.def
+++ b/main/src/main/cpp/lzo/B/win32/vc_dll.def
diff --git a/main/lzo/B/win32/wc.bat b/main/src/main/cpp/lzo/B/win32/wc.bat
index e7266e5e..e7266e5e 100644
--- a/main/lzo/B/win32/wc.bat
+++ b/main/src/main/cpp/lzo/B/win32/wc.bat
diff --git a/main/lzo/B/win32/wc.rsp b/main/src/main/cpp/lzo/B/win32/wc.rsp
index 503667ba..503667ba 100644
--- a/main/lzo/B/win32/wc.rsp
+++ b/main/src/main/cpp/lzo/B/win32/wc.rsp
diff --git a/main/lzo/B/win64/ic.bat b/main/src/main/cpp/lzo/B/win64/ic.bat
index 4587019c..4587019c 100644
--- a/main/lzo/B/win64/ic.bat
+++ b/main/src/main/cpp/lzo/B/win64/ic.bat
diff --git a/main/lzo/B/win64/ic_dll.bat b/main/src/main/cpp/lzo/B/win64/ic_dll.bat
index 9139822c..9139822c 100644
--- a/main/lzo/B/win64/ic_dll.bat
+++ b/main/src/main/cpp/lzo/B/win64/ic_dll.bat
diff --git a/main/lzo/B/win64/vc.bat b/main/src/main/cpp/lzo/B/win64/vc.bat
index c4429168..c4429168 100644
--- a/main/lzo/B/win64/vc.bat
+++ b/main/src/main/cpp/lzo/B/win64/vc.bat
diff --git a/main/lzo/B/win64/vc.rsp b/main/src/main/cpp/lzo/B/win64/vc.rsp
index 182de60c..182de60c 100644
--- a/main/lzo/B/win64/vc.rsp
+++ b/main/src/main/cpp/lzo/B/win64/vc.rsp
diff --git a/main/lzo/B/win64/vc_dll.bat b/main/src/main/cpp/lzo/B/win64/vc_dll.bat
index bfc26f2f..bfc26f2f 100644
--- a/main/lzo/B/win64/vc_dll.bat
+++ b/main/src/main/cpp/lzo/B/win64/vc_dll.bat
diff --git a/main/lzo/B/win64/vc_dll.def b/main/src/main/cpp/lzo/B/win64/vc_dll.def
index e80a637a..e80a637a 100644
--- a/main/lzo/B/win64/vc_dll.def
+++ b/main/src/main/cpp/lzo/B/win64/vc_dll.def
diff --git a/main/lzo/BUGS b/main/src/main/cpp/lzo/BUGS
index aed77990..aed77990 100644
--- a/main/lzo/BUGS
+++ b/main/src/main/cpp/lzo/BUGS
diff --git a/main/lzo/CMakeLists.txt b/main/src/main/cpp/lzo/CMakeLists.txt
index 98c0a1ad..98c0a1ad 100644
--- a/main/lzo/CMakeLists.txt
+++ b/main/src/main/cpp/lzo/CMakeLists.txt
diff --git a/main/lzo/COPYING b/main/src/main/cpp/lzo/COPYING
index d159169d..d159169d 100644
--- a/main/lzo/COPYING
+++ b/main/src/main/cpp/lzo/COPYING
diff --git a/main/lzo/ChangeLog b/main/src/main/cpp/lzo/ChangeLog
index 755db71e..755db71e 100644
--- a/main/lzo/ChangeLog
+++ b/main/src/main/cpp/lzo/ChangeLog
diff --git a/main/lzo/INSTALL b/main/src/main/cpp/lzo/INSTALL
index 886ee504..886ee504 100644
--- a/main/lzo/INSTALL
+++ b/main/src/main/cpp/lzo/INSTALL
diff --git a/main/lzo/Makefile.am b/main/src/main/cpp/lzo/Makefile.am
index e4d383b1..e4d383b1 100644
--- a/main/lzo/Makefile.am
+++ b/main/src/main/cpp/lzo/Makefile.am
diff --git a/main/lzo/Makefile.in b/main/src/main/cpp/lzo/Makefile.in
index dd71d85f..dd71d85f 100644
--- a/main/lzo/Makefile.in
+++ b/main/src/main/cpp/lzo/Makefile.in
diff --git a/main/lzo/NEWS b/main/src/main/cpp/lzo/NEWS
index 4c2bbda0..4c2bbda0 100644
--- a/main/lzo/NEWS
+++ b/main/src/main/cpp/lzo/NEWS
diff --git a/main/lzo/README b/main/src/main/cpp/lzo/README
index 9d1d3319..9d1d3319 100644
--- a/main/lzo/README
+++ b/main/src/main/cpp/lzo/README
diff --git a/main/lzo/THANKS b/main/src/main/cpp/lzo/THANKS
index cf09bdf6..cf09bdf6 100644
--- a/main/lzo/THANKS
+++ b/main/src/main/cpp/lzo/THANKS
diff --git a/main/lzo/aclocal.m4 b/main/src/main/cpp/lzo/aclocal.m4
index 1f3e24f5..1f3e24f5 100644
--- a/main/lzo/aclocal.m4
+++ b/main/src/main/cpp/lzo/aclocal.m4
diff --git a/main/lzo/asm/i386/00README.TXT b/main/src/main/cpp/lzo/asm/i386/00README.TXT
index 81b01423..81b01423 100644
--- a/main/lzo/asm/i386/00README.TXT
+++ b/main/src/main/cpp/lzo/asm/i386/00README.TXT
diff --git a/main/lzo/asm/i386/obj/coff32/lzo1c_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1c_s1.o
index 8379dbe9..8379dbe9 100644
--- a/main/lzo/asm/i386/obj/coff32/lzo1c_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1c_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/coff32/lzo1f_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1f_f1.o
index bce69fa9..bce69fa9 100644
--- a/main/lzo/asm/i386/obj/coff32/lzo1f_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1f_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/coff32/lzo1x_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1x_f1.o
index 438d0263..438d0263 100644
--- a/main/lzo/asm/i386/obj/coff32/lzo1x_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1x_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/coff32/lzo1x_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1x_s1.o
index b178f0d6..b178f0d6 100644
--- a/main/lzo/asm/i386/obj/coff32/lzo1x_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1x_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/coff32/lzo1y_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1y_f1.o
index f0ddcf98..f0ddcf98 100644
--- a/main/lzo/asm/i386/obj/coff32/lzo1y_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1y_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/coff32/lzo1y_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1y_s1.o
index 0beadb14..0beadb14 100644
--- a/main/lzo/asm/i386/obj/coff32/lzo1y_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/coff32/lzo1y_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/elf32/lzo1c_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1c_s1.o
index eb4429e2..eb4429e2 100644
--- a/main/lzo/asm/i386/obj/elf32/lzo1c_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1c_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/elf32/lzo1f_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1f_f1.o
index 3134a85f..3134a85f 100644
--- a/main/lzo/asm/i386/obj/elf32/lzo1f_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1f_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/elf32/lzo1x_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1x_f1.o
index fc96ecce..fc96ecce 100644
--- a/main/lzo/asm/i386/obj/elf32/lzo1x_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1x_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/elf32/lzo1x_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1x_s1.o
index 817386dd..817386dd 100644
--- a/main/lzo/asm/i386/obj/elf32/lzo1x_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1x_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/elf32/lzo1y_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1y_f1.o
index 15300e80..15300e80 100644
--- a/main/lzo/asm/i386/obj/elf32/lzo1y_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1y_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/elf32/lzo1y_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1y_s1.o
index 2fdd42e4..2fdd42e4 100644
--- a/main/lzo/asm/i386/obj/elf32/lzo1y_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/elf32/lzo1y_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/macho32/lzo1c_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1c_s1.o
index d70edd91..d70edd91 100644
--- a/main/lzo/asm/i386/obj/macho32/lzo1c_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1c_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/macho32/lzo1f_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1f_f1.o
index 06cc4909..06cc4909 100644
--- a/main/lzo/asm/i386/obj/macho32/lzo1f_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1f_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/macho32/lzo1x_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1x_f1.o
index 3644103a..3644103a 100644
--- a/main/lzo/asm/i386/obj/macho32/lzo1x_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1x_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/macho32/lzo1x_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1x_s1.o
index 79edb273..79edb273 100644
--- a/main/lzo/asm/i386/obj/macho32/lzo1x_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1x_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/macho32/lzo1y_f1.o b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1y_f1.o
index 68e0a005..68e0a005 100644
--- a/main/lzo/asm/i386/obj/macho32/lzo1y_f1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1y_f1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/macho32/lzo1y_s1.o b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1y_s1.o
index f47ecade..f47ecade 100644
--- a/main/lzo/asm/i386/obj/macho32/lzo1y_s1.o
+++ b/main/src/main/cpp/lzo/asm/i386/obj/macho32/lzo1y_s1.o
Binary files differ
diff --git a/main/lzo/asm/i386/obj/omf32/lzo1c_s1.obj b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1c_s1.obj
index 57bc1d70..57bc1d70 100644
--- a/main/lzo/asm/i386/obj/omf32/lzo1c_s1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1c_s1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/omf32/lzo1f_f1.obj b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1f_f1.obj
index 2b08c972..2b08c972 100644
--- a/main/lzo/asm/i386/obj/omf32/lzo1f_f1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1f_f1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/omf32/lzo1x_f1.obj b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1x_f1.obj
index 5720ecb9..5720ecb9 100644
--- a/main/lzo/asm/i386/obj/omf32/lzo1x_f1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1x_f1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/omf32/lzo1x_s1.obj b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1x_s1.obj
index 68d6c159..68d6c159 100644
--- a/main/lzo/asm/i386/obj/omf32/lzo1x_s1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1x_s1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/omf32/lzo1y_f1.obj b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1y_f1.obj
index d5102cde..d5102cde 100644
--- a/main/lzo/asm/i386/obj/omf32/lzo1y_f1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1y_f1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/omf32/lzo1y_s1.obj b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1y_s1.obj
index 29859c28..29859c28 100644
--- a/main/lzo/asm/i386/obj/omf32/lzo1y_s1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/omf32/lzo1y_s1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/win32/lzo1c_s1.obj b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1c_s1.obj
index b9703e8c..b9703e8c 100644
--- a/main/lzo/asm/i386/obj/win32/lzo1c_s1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1c_s1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/win32/lzo1f_f1.obj b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1f_f1.obj
index e0c0295f..e0c0295f 100644
--- a/main/lzo/asm/i386/obj/win32/lzo1f_f1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1f_f1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/win32/lzo1x_f1.obj b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1x_f1.obj
index c6c1f806..c6c1f806 100644
--- a/main/lzo/asm/i386/obj/win32/lzo1x_f1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1x_f1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/win32/lzo1x_s1.obj b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1x_s1.obj
index b95eb969..b95eb969 100644
--- a/main/lzo/asm/i386/obj/win32/lzo1x_s1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1x_s1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/win32/lzo1y_f1.obj b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1y_f1.obj
index 30827912..30827912 100644
--- a/main/lzo/asm/i386/obj/win32/lzo1y_f1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1y_f1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/obj/win32/lzo1y_s1.obj b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1y_s1.obj
index 1c34c7be..1c34c7be 100644
--- a/main/lzo/asm/i386/obj/win32/lzo1y_s1.obj
+++ b/main/src/main/cpp/lzo/asm/i386/obj/win32/lzo1y_s1.obj
Binary files differ
diff --git a/main/lzo/asm/i386/src/enter.ash b/main/src/main/cpp/lzo/asm/i386/src/enter.ash
index cc5941b9..cc5941b9 100644
--- a/main/lzo/asm/i386/src/enter.ash
+++ b/main/src/main/cpp/lzo/asm/i386/src/enter.ash
diff --git a/main/lzo/asm/i386/src/leave.ash b/main/src/main/cpp/lzo/asm/i386/src/leave.ash
index dbaeda03..dbaeda03 100644
--- a/main/lzo/asm/i386/src/leave.ash
+++ b/main/src/main/cpp/lzo/asm/i386/src/leave.ash
diff --git a/main/lzo/asm/i386/src/lzo1c_d.ash b/main/src/main/cpp/lzo/asm/i386/src/lzo1c_d.ash
index 0d410243..0d410243 100644
--- a/main/lzo/asm/i386/src/lzo1c_d.ash
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1c_d.ash
diff --git a/main/lzo/asm/i386/src/lzo1c_s1.S b/main/src/main/cpp/lzo/asm/i386/src/lzo1c_s1.S
index 03ca397b..03ca397b 100644
--- a/main/lzo/asm/i386/src/lzo1c_s1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1c_s1.S
diff --git a/main/lzo/asm/i386/src/lzo1f_d.ash b/main/src/main/cpp/lzo/asm/i386/src/lzo1f_d.ash
index 99093f68..99093f68 100644
--- a/main/lzo/asm/i386/src/lzo1f_d.ash
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1f_d.ash
diff --git a/main/lzo/asm/i386/src/lzo1f_f1.S b/main/src/main/cpp/lzo/asm/i386/src/lzo1f_f1.S
index 212b62f4..212b62f4 100644
--- a/main/lzo/asm/i386/src/lzo1f_f1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1f_f1.S
diff --git a/main/lzo/asm/i386/src/lzo1x_d.ash b/main/src/main/cpp/lzo/asm/i386/src/lzo1x_d.ash
index 4635a2ad..4635a2ad 100644
--- a/main/lzo/asm/i386/src/lzo1x_d.ash
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1x_d.ash
diff --git a/main/lzo/asm/i386/src/lzo1x_f1.S b/main/src/main/cpp/lzo/asm/i386/src/lzo1x_f1.S
index 4f02add5..4f02add5 100644
--- a/main/lzo/asm/i386/src/lzo1x_f1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1x_f1.S
diff --git a/main/lzo/asm/i386/src/lzo1x_s1.S b/main/src/main/cpp/lzo/asm/i386/src/lzo1x_s1.S
index d706fc2a..d706fc2a 100644
--- a/main/lzo/asm/i386/src/lzo1x_s1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1x_s1.S
diff --git a/main/lzo/asm/i386/src/lzo1y_f1.S b/main/src/main/cpp/lzo/asm/i386/src/lzo1y_f1.S
index 2982c32d..2982c32d 100644
--- a/main/lzo/asm/i386/src/lzo1y_f1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1y_f1.S
diff --git a/main/lzo/asm/i386/src/lzo1y_s1.S b/main/src/main/cpp/lzo/asm/i386/src/lzo1y_s1.S
index ddf8574a..ddf8574a 100644
--- a/main/lzo/asm/i386/src/lzo1y_s1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo1y_s1.S
diff --git a/main/lzo/asm/i386/src/lzo_asm.h b/main/src/main/cpp/lzo/asm/i386/src/lzo_asm.h
index 7227b31a..7227b31a 100644
--- a/main/lzo/asm/i386/src/lzo_asm.h
+++ b/main/src/main/cpp/lzo/asm/i386/src/lzo_asm.h
diff --git a/main/lzo/asm/i386/src_gas/all/asm_all.S b/main/src/main/cpp/lzo/asm/i386/src_gas/all/asm_all.S
index 8aa67cbe..8aa67cbe 100644
--- a/main/lzo/asm/i386/src_gas/all/asm_all.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/all/asm_all.S
diff --git a/main/lzo/asm/i386/src_gas/asminit.def b/main/src/main/cpp/lzo/asm/i386/src_gas/asminit.def
index 0f1859ef..0f1859ef 100644
--- a/main/lzo/asm/i386/src_gas/asminit.def
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/asminit.def
diff --git a/main/lzo/asm/i386/src_gas/lzo1c_s1.S b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1c_s1.S
index 374e60f0..374e60f0 100644
--- a/main/lzo/asm/i386/src_gas/lzo1c_s1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1c_s1.S
diff --git a/main/lzo/asm/i386/src_gas/lzo1f_f1.S b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1f_f1.S
index 4c5427bb..4c5427bb 100644
--- a/main/lzo/asm/i386/src_gas/lzo1f_f1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1f_f1.S
diff --git a/main/lzo/asm/i386/src_gas/lzo1x_f1.S b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1x_f1.S
index 9ca92c34..9ca92c34 100644
--- a/main/lzo/asm/i386/src_gas/lzo1x_f1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1x_f1.S
diff --git a/main/lzo/asm/i386/src_gas/lzo1x_s1.S b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1x_s1.S
index 3e31c182..3e31c182 100644
--- a/main/lzo/asm/i386/src_gas/lzo1x_s1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1x_s1.S
diff --git a/main/lzo/asm/i386/src_gas/lzo1y_f1.S b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1y_f1.S
index b3129c39..b3129c39 100644
--- a/main/lzo/asm/i386/src_gas/lzo1y_f1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1y_f1.S
diff --git a/main/lzo/asm/i386/src_gas/lzo1y_s1.S b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1y_s1.S
index c67db49d..c67db49d 100644
--- a/main/lzo/asm/i386/src_gas/lzo1y_s1.S
+++ b/main/src/main/cpp/lzo/asm/i386/src_gas/lzo1y_s1.S
diff --git a/main/lzo/asm/i386/src_masm/all/asm_all.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/all/asm_all.asm
index 58ae4708..58ae4708 100644
--- a/main/lzo/asm/i386/src_masm/all/asm_all.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/all/asm_all.asm
diff --git a/main/lzo/asm/i386/src_masm/asminit.def b/main/src/main/cpp/lzo/asm/i386/src_masm/asminit.def
index 5754d787..5754d787 100644
--- a/main/lzo/asm/i386/src_masm/asminit.def
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/asminit.def
diff --git a/main/lzo/asm/i386/src_masm/lzo1c_s1.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1c_s1.asm
index 67016e35..67016e35 100644
--- a/main/lzo/asm/i386/src_masm/lzo1c_s1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1c_s1.asm
diff --git a/main/lzo/asm/i386/src_masm/lzo1f_f1.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1f_f1.asm
index f1252af9..f1252af9 100644
--- a/main/lzo/asm/i386/src_masm/lzo1f_f1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1f_f1.asm
diff --git a/main/lzo/asm/i386/src_masm/lzo1x_f1.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1x_f1.asm
index 95feaa21..95feaa21 100644
--- a/main/lzo/asm/i386/src_masm/lzo1x_f1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1x_f1.asm
diff --git a/main/lzo/asm/i386/src_masm/lzo1x_s1.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1x_s1.asm
index 4af988a3..4af988a3 100644
--- a/main/lzo/asm/i386/src_masm/lzo1x_s1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1x_s1.asm
diff --git a/main/lzo/asm/i386/src_masm/lzo1y_f1.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1y_f1.asm
index d86112ac..d86112ac 100644
--- a/main/lzo/asm/i386/src_masm/lzo1y_f1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1y_f1.asm
diff --git a/main/lzo/asm/i386/src_masm/lzo1y_s1.asm b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1y_s1.asm
index 3c4ab481..3c4ab481 100644
--- a/main/lzo/asm/i386/src_masm/lzo1y_s1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_masm/lzo1y_s1.asm
diff --git a/main/lzo/asm/i386/src_nasm/all/asm_all.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/all/asm_all.asm
index 87260c08..87260c08 100644
--- a/main/lzo/asm/i386/src_nasm/all/asm_all.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/all/asm_all.asm
diff --git a/main/lzo/asm/i386/src_nasm/asminit.def b/main/src/main/cpp/lzo/asm/i386/src_nasm/asminit.def
index db792afc..db792afc 100644
--- a/main/lzo/asm/i386/src_nasm/asminit.def
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/asminit.def
diff --git a/main/lzo/asm/i386/src_nasm/lzo1c_s1.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1c_s1.asm
index cb408e0d..cb408e0d 100644
--- a/main/lzo/asm/i386/src_nasm/lzo1c_s1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1c_s1.asm
diff --git a/main/lzo/asm/i386/src_nasm/lzo1f_f1.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1f_f1.asm
index ebad1fd7..ebad1fd7 100644
--- a/main/lzo/asm/i386/src_nasm/lzo1f_f1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1f_f1.asm
diff --git a/main/lzo/asm/i386/src_nasm/lzo1x_f1.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1x_f1.asm
index e5594740..e5594740 100644
--- a/main/lzo/asm/i386/src_nasm/lzo1x_f1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1x_f1.asm
diff --git a/main/lzo/asm/i386/src_nasm/lzo1x_s1.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1x_s1.asm
index cd4cb71d..cd4cb71d 100644
--- a/main/lzo/asm/i386/src_nasm/lzo1x_s1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1x_s1.asm
diff --git a/main/lzo/asm/i386/src_nasm/lzo1y_f1.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1y_f1.asm
index 6c65bb1c..6c65bb1c 100644
--- a/main/lzo/asm/i386/src_nasm/lzo1y_f1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1y_f1.asm
diff --git a/main/lzo/asm/i386/src_nasm/lzo1y_s1.asm b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1y_s1.asm
index 08aeec31..08aeec31 100644
--- a/main/lzo/asm/i386/src_nasm/lzo1y_s1.asm
+++ b/main/src/main/cpp/lzo/asm/i386/src_nasm/lzo1y_s1.asm
diff --git a/main/lzo/autoconf/ar-lib b/main/src/main/cpp/lzo/autoconf/ar-lib
index 05094d34..05094d34 100755
--- a/main/lzo/autoconf/ar-lib
+++ b/main/src/main/cpp/lzo/autoconf/ar-lib
diff --git a/main/lzo/autoconf/compile b/main/src/main/cpp/lzo/autoconf/compile
index 2ab71e4e..2ab71e4e 100755
--- a/main/lzo/autoconf/compile
+++ b/main/src/main/cpp/lzo/autoconf/compile
diff --git a/main/lzo/autoconf/config.guess b/main/src/main/cpp/lzo/autoconf/config.guess
index 1000e2bd..1000e2bd 100755
--- a/main/lzo/autoconf/config.guess
+++ b/main/src/main/cpp/lzo/autoconf/config.guess
diff --git a/main/lzo/autoconf/config.rpath b/main/src/main/cpp/lzo/autoconf/config.rpath
index af3c4155..af3c4155 100755
--- a/main/lzo/autoconf/config.rpath
+++ b/main/src/main/cpp/lzo/autoconf/config.rpath
diff --git a/main/lzo/autoconf/config.sub b/main/src/main/cpp/lzo/autoconf/config.sub
index 87abeab6..87abeab6 100755
--- a/main/lzo/autoconf/config.sub
+++ b/main/src/main/cpp/lzo/autoconf/config.sub
diff --git a/main/lzo/autoconf/depcomp b/main/src/main/cpp/lzo/autoconf/depcomp
index b6872321..b6872321 100755
--- a/main/lzo/autoconf/depcomp
+++ b/main/src/main/cpp/lzo/autoconf/depcomp
diff --git a/main/lzo/autoconf/install-sh b/main/src/main/cpp/lzo/autoconf/install-sh
index 0360b79e..0360b79e 100755
--- a/main/lzo/autoconf/install-sh
+++ b/main/src/main/cpp/lzo/autoconf/install-sh
diff --git a/main/lzo/autoconf/local.m4 b/main/src/main/cpp/lzo/autoconf/local.m4
index 978f7dc1..978f7dc1 100644
--- a/main/lzo/autoconf/local.m4
+++ b/main/src/main/cpp/lzo/autoconf/local.m4
diff --git a/main/lzo/autoconf/ltmain.sh b/main/src/main/cpp/lzo/autoconf/ltmain.sh
index a50a21a6..a50a21a6 100644
--- a/main/lzo/autoconf/ltmain.sh
+++ b/main/src/main/cpp/lzo/autoconf/ltmain.sh
diff --git a/main/lzo/autoconf/mdate-sh b/main/src/main/cpp/lzo/autoconf/mdate-sh
index f80075c0..f80075c0 100755
--- a/main/lzo/autoconf/mdate-sh
+++ b/main/src/main/cpp/lzo/autoconf/mdate-sh
diff --git a/main/lzo/autoconf/missing b/main/src/main/cpp/lzo/autoconf/missing
index c6e37958..c6e37958 100755
--- a/main/lzo/autoconf/missing
+++ b/main/src/main/cpp/lzo/autoconf/missing
diff --git a/main/lzo/autoconf/mkinstalldirs b/main/src/main/cpp/lzo/autoconf/mkinstalldirs
index a31ce6d0..a31ce6d0 100755
--- a/main/lzo/autoconf/mkinstalldirs
+++ b/main/src/main/cpp/lzo/autoconf/mkinstalldirs
diff --git a/main/lzo/autoconf/py-compile b/main/src/main/cpp/lzo/autoconf/py-compile
index 3693d96b..3693d96b 100755
--- a/main/lzo/autoconf/py-compile
+++ b/main/src/main/cpp/lzo/autoconf/py-compile
diff --git a/main/lzo/autoconf/shtool b/main/src/main/cpp/lzo/autoconf/shtool
index a1f4e7ee..a1f4e7ee 100755
--- a/main/lzo/autoconf/shtool
+++ b/main/src/main/cpp/lzo/autoconf/shtool
diff --git a/main/lzo/autoconf/ylwrap b/main/src/main/cpp/lzo/autoconf/ylwrap
index abac60c4..abac60c4 100755
--- a/main/lzo/autoconf/ylwrap
+++ b/main/src/main/cpp/lzo/autoconf/ylwrap
diff --git a/main/lzo/config.hin b/main/src/main/cpp/lzo/config.hin
index 985cca77..985cca77 100644
--- a/main/lzo/config.hin
+++ b/main/src/main/cpp/lzo/config.hin
diff --git a/main/lzo/configure b/main/src/main/cpp/lzo/configure
index f0356cd5..f0356cd5 100755
--- a/main/lzo/configure
+++ b/main/src/main/cpp/lzo/configure
diff --git a/main/lzo/configure.ac b/main/src/main/cpp/lzo/configure.ac
index 9c6f5e7a..9c6f5e7a 100644
--- a/main/lzo/configure.ac
+++ b/main/src/main/cpp/lzo/configure.ac
diff --git a/main/lzo/doc/LZO.FAQ b/main/src/main/cpp/lzo/doc/LZO.FAQ
index cb1f38aa..cb1f38aa 100644
--- a/main/lzo/doc/LZO.FAQ
+++ b/main/src/main/cpp/lzo/doc/LZO.FAQ
diff --git a/main/lzo/doc/LZO.TXT b/main/src/main/cpp/lzo/doc/LZO.TXT
index 2d9cb35b..2d9cb35b 100644
--- a/main/lzo/doc/LZO.TXT
+++ b/main/src/main/cpp/lzo/doc/LZO.TXT
diff --git a/main/lzo/doc/LZOAPI.TXT b/main/src/main/cpp/lzo/doc/LZOAPI.TXT
index 547b0d70..547b0d70 100644
--- a/main/lzo/doc/LZOAPI.TXT
+++ b/main/src/main/cpp/lzo/doc/LZOAPI.TXT
diff --git a/main/lzo/doc/LZOTEST.TXT b/main/src/main/cpp/lzo/doc/LZOTEST.TXT
index 93c86591..93c86591 100644
--- a/main/lzo/doc/LZOTEST.TXT
+++ b/main/src/main/cpp/lzo/doc/LZOTEST.TXT
diff --git a/main/lzo/examples/dict.c b/main/src/main/cpp/lzo/examples/dict.c
index 8945caf1..8945caf1 100644
--- a/main/lzo/examples/dict.c
+++ b/main/src/main/cpp/lzo/examples/dict.c
diff --git a/main/lzo/examples/lzopack.c b/main/src/main/cpp/lzo/examples/lzopack.c
index 91c0c1ab..91c0c1ab 100644
--- a/main/lzo/examples/lzopack.c
+++ b/main/src/main/cpp/lzo/examples/lzopack.c
diff --git a/main/lzo/examples/overlap.c b/main/src/main/cpp/lzo/examples/overlap.c
index 3ff4d180..3ff4d180 100644
--- a/main/lzo/examples/overlap.c
+++ b/main/src/main/cpp/lzo/examples/overlap.c
diff --git a/main/lzo/examples/portab.h b/main/src/main/cpp/lzo/examples/portab.h
index 93db56a9..93db56a9 100644
--- a/main/lzo/examples/portab.h
+++ b/main/src/main/cpp/lzo/examples/portab.h
diff --git a/main/lzo/examples/portab_a.h b/main/src/main/cpp/lzo/examples/portab_a.h
index 64841971..64841971 100644
--- a/main/lzo/examples/portab_a.h
+++ b/main/src/main/cpp/lzo/examples/portab_a.h
diff --git a/main/lzo/examples/precomp.c b/main/src/main/cpp/lzo/examples/precomp.c
index e61b0c13..e61b0c13 100644
--- a/main/lzo/examples/precomp.c
+++ b/main/src/main/cpp/lzo/examples/precomp.c
diff --git a/main/lzo/examples/precomp2.c b/main/src/main/cpp/lzo/examples/precomp2.c
index 3216cd99..3216cd99 100644
--- a/main/lzo/examples/precomp2.c
+++ b/main/src/main/cpp/lzo/examples/precomp2.c
diff --git a/main/lzo/examples/simple.c b/main/src/main/cpp/lzo/examples/simple.c
index 5757e0c1..5757e0c1 100644
--- a/main/lzo/examples/simple.c
+++ b/main/src/main/cpp/lzo/examples/simple.c
diff --git a/main/lzo/include/lzo/lzo1.h b/main/src/main/cpp/lzo/include/lzo/lzo1.h
index 06e8c4f6..06e8c4f6 100644
--- a/main/lzo/include/lzo/lzo1.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1.h
diff --git a/main/lzo/include/lzo/lzo1a.h b/main/src/main/cpp/lzo/include/lzo/lzo1a.h
index 7ef9d23e..7ef9d23e 100644
--- a/main/lzo/include/lzo/lzo1a.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1a.h
diff --git a/main/lzo/include/lzo/lzo1b.h b/main/src/main/cpp/lzo/include/lzo/lzo1b.h
index a748fde5..a748fde5 100644
--- a/main/lzo/include/lzo/lzo1b.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1b.h
diff --git a/main/lzo/include/lzo/lzo1c.h b/main/src/main/cpp/lzo/include/lzo/lzo1c.h
index a6c6b756..a6c6b756 100644
--- a/main/lzo/include/lzo/lzo1c.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1c.h
diff --git a/main/lzo/include/lzo/lzo1f.h b/main/src/main/cpp/lzo/include/lzo/lzo1f.h
index 25cbd51e..25cbd51e 100644
--- a/main/lzo/include/lzo/lzo1f.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1f.h
diff --git a/main/lzo/include/lzo/lzo1x.h b/main/src/main/cpp/lzo/include/lzo/lzo1x.h
index a1115140..a1115140 100644
--- a/main/lzo/include/lzo/lzo1x.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1x.h
diff --git a/main/lzo/include/lzo/lzo1y.h b/main/src/main/cpp/lzo/include/lzo/lzo1y.h
index 0f4d4aa2..0f4d4aa2 100644
--- a/main/lzo/include/lzo/lzo1y.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1y.h
diff --git a/main/lzo/include/lzo/lzo1z.h b/main/src/main/cpp/lzo/include/lzo/lzo1z.h
index 3f8dea03..3f8dea03 100644
--- a/main/lzo/include/lzo/lzo1z.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo1z.h
diff --git a/main/lzo/include/lzo/lzo2a.h b/main/src/main/cpp/lzo/include/lzo/lzo2a.h
index f069e9ed..f069e9ed 100644
--- a/main/lzo/include/lzo/lzo2a.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo2a.h
diff --git a/main/lzo/include/lzo/lzo_asm.h b/main/src/main/cpp/lzo/include/lzo/lzo_asm.h
index 9a57e279..9a57e279 100644
--- a/main/lzo/include/lzo/lzo_asm.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzo_asm.h
diff --git a/main/lzo/include/lzo/lzoconf.h b/main/src/main/cpp/lzo/include/lzo/lzoconf.h
index f9a8bdbe..f9a8bdbe 100644
--- a/main/lzo/include/lzo/lzoconf.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzoconf.h
diff --git a/main/lzo/include/lzo/lzodefs.h b/main/src/main/cpp/lzo/include/lzo/lzodefs.h
index c3e2bcf5..c3e2bcf5 100644
--- a/main/lzo/include/lzo/lzodefs.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzodefs.h
diff --git a/main/lzo/include/lzo/lzoutil.h b/main/src/main/cpp/lzo/include/lzo/lzoutil.h
index 75cd067d..75cd067d 100644
--- a/main/lzo/include/lzo/lzoutil.h
+++ b/main/src/main/cpp/lzo/include/lzo/lzoutil.h
diff --git a/main/lzo/lzo2.pc.cmakein b/main/src/main/cpp/lzo/lzo2.pc.cmakein
index 728c84b2..728c84b2 100644
--- a/main/lzo/lzo2.pc.cmakein
+++ b/main/src/main/cpp/lzo/lzo2.pc.cmakein
diff --git a/main/lzo/lzo2.pc.in b/main/src/main/cpp/lzo/lzo2.pc.in
index d5d7fa98..d5d7fa98 100644
--- a/main/lzo/lzo2.pc.in
+++ b/main/src/main/cpp/lzo/lzo2.pc.in
diff --git a/main/lzo/lzotest/asm.h b/main/src/main/cpp/lzo/lzotest/asm.h
index 3648bbe1..3648bbe1 100644
--- a/main/lzo/lzotest/asm.h
+++ b/main/src/main/cpp/lzo/lzotest/asm.h
diff --git a/main/lzo/lzotest/db.h b/main/src/main/cpp/lzo/lzotest/db.h
index d7023418..d7023418 100644
--- a/main/lzo/lzotest/db.h
+++ b/main/src/main/cpp/lzo/lzotest/db.h
diff --git a/main/lzo/lzotest/lzotest.c b/main/src/main/cpp/lzo/lzotest/lzotest.c
index 41fd726a..41fd726a 100644
--- a/main/lzo/lzotest/lzotest.c
+++ b/main/src/main/cpp/lzo/lzotest/lzotest.c
diff --git a/main/lzo/lzotest/wrap.h b/main/src/main/cpp/lzo/lzotest/wrap.h
index 815ce046..815ce046 100644
--- a/main/lzo/lzotest/wrap.h
+++ b/main/src/main/cpp/lzo/lzotest/wrap.h
diff --git a/main/lzo/lzotest/wrapmisc.h b/main/src/main/cpp/lzo/lzotest/wrapmisc.h
index 50e73b6e..50e73b6e 100644
--- a/main/lzo/lzotest/wrapmisc.h
+++ b/main/src/main/cpp/lzo/lzotest/wrapmisc.h
diff --git a/main/lzo/minilzo/Makefile.minilzo b/main/src/main/cpp/lzo/minilzo/Makefile.minilzo
index ae4d6d41..ae4d6d41 100644
--- a/main/lzo/minilzo/Makefile.minilzo
+++ b/main/src/main/cpp/lzo/minilzo/Makefile.minilzo
diff --git a/main/lzo/minilzo/README.LZO b/main/src/main/cpp/lzo/minilzo/README.LZO
index 7d9bea5c..7d9bea5c 100644
--- a/main/lzo/minilzo/README.LZO
+++ b/main/src/main/cpp/lzo/minilzo/README.LZO
diff --git a/main/lzo/minilzo/minilzo.c b/main/src/main/cpp/lzo/minilzo/minilzo.c
index 8fd86645..8fd86645 100644
--- a/main/lzo/minilzo/minilzo.c
+++ b/main/src/main/cpp/lzo/minilzo/minilzo.c
diff --git a/main/lzo/minilzo/minilzo.h b/main/src/main/cpp/lzo/minilzo/minilzo.h
index c1c22975..c1c22975 100644
--- a/main/lzo/minilzo/minilzo.h
+++ b/main/src/main/cpp/lzo/minilzo/minilzo.h
diff --git a/main/lzo/minilzo/testmini.c b/main/src/main/cpp/lzo/minilzo/testmini.c
index ca8c3d19..ca8c3d19 100644
--- a/main/lzo/minilzo/testmini.c
+++ b/main/src/main/cpp/lzo/minilzo/testmini.c
diff --git a/main/lzo/src/compr1b.h b/main/src/main/cpp/lzo/src/compr1b.h
index 521c9f95..521c9f95 100644
--- a/main/lzo/src/compr1b.h
+++ b/main/src/main/cpp/lzo/src/compr1b.h
diff --git a/main/lzo/src/compr1c.h b/main/src/main/cpp/lzo/src/compr1c.h
index 984ef7d6..984ef7d6 100644
--- a/main/lzo/src/compr1c.h
+++ b/main/src/main/cpp/lzo/src/compr1c.h
diff --git a/main/lzo/src/config1.h b/main/src/main/cpp/lzo/src/config1.h
index e67b6006..e67b6006 100644
--- a/main/lzo/src/config1.h
+++ b/main/src/main/cpp/lzo/src/config1.h
diff --git a/main/lzo/src/config1a.h b/main/src/main/cpp/lzo/src/config1a.h
index c5652353..c5652353 100644
--- a/main/lzo/src/config1a.h
+++ b/main/src/main/cpp/lzo/src/config1a.h
diff --git a/main/lzo/src/config1b.h b/main/src/main/cpp/lzo/src/config1b.h
index ee50c1fa..ee50c1fa 100644
--- a/main/lzo/src/config1b.h
+++ b/main/src/main/cpp/lzo/src/config1b.h
diff --git a/main/lzo/src/config1c.h b/main/src/main/cpp/lzo/src/config1c.h
index 988bc49e..988bc49e 100644
--- a/main/lzo/src/config1c.h
+++ b/main/src/main/cpp/lzo/src/config1c.h
diff --git a/main/lzo/src/config1f.h b/main/src/main/cpp/lzo/src/config1f.h
index 1a0fa032..1a0fa032 100644
--- a/main/lzo/src/config1f.h
+++ b/main/src/main/cpp/lzo/src/config1f.h
diff --git a/main/lzo/src/config1x.h b/main/src/main/cpp/lzo/src/config1x.h
index f3c93efb..f3c93efb 100644
--- a/main/lzo/src/config1x.h
+++ b/main/src/main/cpp/lzo/src/config1x.h
diff --git a/main/lzo/src/config1y.h b/main/src/main/cpp/lzo/src/config1y.h
index 56fcfb0d..56fcfb0d 100644
--- a/main/lzo/src/config1y.h
+++ b/main/src/main/cpp/lzo/src/config1y.h
diff --git a/main/lzo/src/config1z.h b/main/src/main/cpp/lzo/src/config1z.h
index 75ebb0a1..75ebb0a1 100644
--- a/main/lzo/src/config1z.h
+++ b/main/src/main/cpp/lzo/src/config1z.h
diff --git a/main/lzo/src/config2a.h b/main/src/main/cpp/lzo/src/config2a.h
index 4a4014b2..4a4014b2 100644
--- a/main/lzo/src/config2a.h
+++ b/main/src/main/cpp/lzo/src/config2a.h
diff --git a/main/lzo/src/lzo1.c b/main/src/main/cpp/lzo/src/lzo1.c
index 63bbc59b..63bbc59b 100644
--- a/main/lzo/src/lzo1.c
+++ b/main/src/main/cpp/lzo/src/lzo1.c
diff --git a/main/lzo/src/lzo1_99.c b/main/src/main/cpp/lzo/src/lzo1_99.c
index 8e1b37f9..8e1b37f9 100644
--- a/main/lzo/src/lzo1_99.c
+++ b/main/src/main/cpp/lzo/src/lzo1_99.c
diff --git a/main/lzo/src/lzo1_cm.ch b/main/src/main/cpp/lzo/src/lzo1_cm.ch
index 5f2ca089..5f2ca089 100644
--- a/main/lzo/src/lzo1_cm.ch
+++ b/main/src/main/cpp/lzo/src/lzo1_cm.ch
diff --git a/main/lzo/src/lzo1_d.ch b/main/src/main/cpp/lzo/src/lzo1_d.ch
index bedc7ce8..bedc7ce8 100644
--- a/main/lzo/src/lzo1_d.ch
+++ b/main/src/main/cpp/lzo/src/lzo1_d.ch
diff --git a/main/lzo/src/lzo1a.c b/main/src/main/cpp/lzo/src/lzo1a.c
index 6bffa307..6bffa307 100644
--- a/main/lzo/src/lzo1a.c
+++ b/main/src/main/cpp/lzo/src/lzo1a.c
diff --git a/main/lzo/src/lzo1a_99.c b/main/src/main/cpp/lzo/src/lzo1a_99.c
index 1628c92e..1628c92e 100644
--- a/main/lzo/src/lzo1a_99.c
+++ b/main/src/main/cpp/lzo/src/lzo1a_99.c
diff --git a/main/lzo/src/lzo1a_cm.ch b/main/src/main/cpp/lzo/src/lzo1a_cm.ch
index 01a957bc..01a957bc 100644
--- a/main/lzo/src/lzo1a_cm.ch
+++ b/main/src/main/cpp/lzo/src/lzo1a_cm.ch
diff --git a/main/lzo/src/lzo1a_cr.ch b/main/src/main/cpp/lzo/src/lzo1a_cr.ch
index 1071fa2b..1071fa2b 100644
--- a/main/lzo/src/lzo1a_cr.ch
+++ b/main/src/main/cpp/lzo/src/lzo1a_cr.ch
diff --git a/main/lzo/src/lzo1a_de.h b/main/src/main/cpp/lzo/src/lzo1a_de.h
index 043c1184..043c1184 100644
--- a/main/lzo/src/lzo1a_de.h
+++ b/main/src/main/cpp/lzo/src/lzo1a_de.h
diff --git a/main/lzo/src/lzo1b_1.c b/main/src/main/cpp/lzo/src/lzo1b_1.c
index 5241125b..5241125b 100644
--- a/main/lzo/src/lzo1b_1.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_1.c
diff --git a/main/lzo/src/lzo1b_2.c b/main/src/main/cpp/lzo/src/lzo1b_2.c
index 764b0a52..764b0a52 100644
--- a/main/lzo/src/lzo1b_2.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_2.c
diff --git a/main/lzo/src/lzo1b_3.c b/main/src/main/cpp/lzo/src/lzo1b_3.c
index a2b9f2ed..a2b9f2ed 100644
--- a/main/lzo/src/lzo1b_3.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_3.c
diff --git a/main/lzo/src/lzo1b_4.c b/main/src/main/cpp/lzo/src/lzo1b_4.c
index 722c82a7..722c82a7 100644
--- a/main/lzo/src/lzo1b_4.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_4.c
diff --git a/main/lzo/src/lzo1b_5.c b/main/src/main/cpp/lzo/src/lzo1b_5.c
index b8bd8d5b..b8bd8d5b 100644
--- a/main/lzo/src/lzo1b_5.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_5.c
diff --git a/main/lzo/src/lzo1b_6.c b/main/src/main/cpp/lzo/src/lzo1b_6.c
index 0226fc85..0226fc85 100644
--- a/main/lzo/src/lzo1b_6.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_6.c
diff --git a/main/lzo/src/lzo1b_7.c b/main/src/main/cpp/lzo/src/lzo1b_7.c
index bfb8d726..bfb8d726 100644
--- a/main/lzo/src/lzo1b_7.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_7.c
diff --git a/main/lzo/src/lzo1b_8.c b/main/src/main/cpp/lzo/src/lzo1b_8.c
index d7736c37..d7736c37 100644
--- a/main/lzo/src/lzo1b_8.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_8.c
diff --git a/main/lzo/src/lzo1b_9.c b/main/src/main/cpp/lzo/src/lzo1b_9.c
index ebe70d52..ebe70d52 100644
--- a/main/lzo/src/lzo1b_9.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_9.c
diff --git a/main/lzo/src/lzo1b_99.c b/main/src/main/cpp/lzo/src/lzo1b_99.c
index 8a667cbc..8a667cbc 100644
--- a/main/lzo/src/lzo1b_99.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_99.c
diff --git a/main/lzo/src/lzo1b_9x.c b/main/src/main/cpp/lzo/src/lzo1b_9x.c
index c19b4366..c19b4366 100644
--- a/main/lzo/src/lzo1b_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_9x.c
diff --git a/main/lzo/src/lzo1b_c.ch b/main/src/main/cpp/lzo/src/lzo1b_c.ch
index cd140499..cd140499 100644
--- a/main/lzo/src/lzo1b_c.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_c.ch
diff --git a/main/lzo/src/lzo1b_cc.c b/main/src/main/cpp/lzo/src/lzo1b_cc.c
index dfad7e2d..dfad7e2d 100644
--- a/main/lzo/src/lzo1b_cc.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_cc.c
diff --git a/main/lzo/src/lzo1b_cc.h b/main/src/main/cpp/lzo/src/lzo1b_cc.h
index 02a6d290..02a6d290 100644
--- a/main/lzo/src/lzo1b_cc.h
+++ b/main/src/main/cpp/lzo/src/lzo1b_cc.h
diff --git a/main/lzo/src/lzo1b_cm.ch b/main/src/main/cpp/lzo/src/lzo1b_cm.ch
index c38b1387..c38b1387 100644
--- a/main/lzo/src/lzo1b_cm.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_cm.ch
diff --git a/main/lzo/src/lzo1b_cr.ch b/main/src/main/cpp/lzo/src/lzo1b_cr.ch
index bb3a9b9d..bb3a9b9d 100644
--- a/main/lzo/src/lzo1b_cr.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_cr.ch
diff --git a/main/lzo/src/lzo1b_d.ch b/main/src/main/cpp/lzo/src/lzo1b_d.ch
index 51e36849..51e36849 100644
--- a/main/lzo/src/lzo1b_d.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_d.ch
diff --git a/main/lzo/src/lzo1b_d1.c b/main/src/main/cpp/lzo/src/lzo1b_d1.c
index 04c075ac..04c075ac 100644
--- a/main/lzo/src/lzo1b_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_d1.c
diff --git a/main/lzo/src/lzo1b_d2.c b/main/src/main/cpp/lzo/src/lzo1b_d2.c
index a741c54b..a741c54b 100644
--- a/main/lzo/src/lzo1b_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_d2.c
diff --git a/main/lzo/src/lzo1b_de.h b/main/src/main/cpp/lzo/src/lzo1b_de.h
index 50c337dc..50c337dc 100644
--- a/main/lzo/src/lzo1b_de.h
+++ b/main/src/main/cpp/lzo/src/lzo1b_de.h
diff --git a/main/lzo/src/lzo1b_r.ch b/main/src/main/cpp/lzo/src/lzo1b_r.ch
index 28fc137c..28fc137c 100644
--- a/main/lzo/src/lzo1b_r.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_r.ch
diff --git a/main/lzo/src/lzo1b_rr.c b/main/src/main/cpp/lzo/src/lzo1b_rr.c
index b4f4f4f6..b4f4f4f6 100644
--- a/main/lzo/src/lzo1b_rr.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_rr.c
diff --git a/main/lzo/src/lzo1b_sm.ch b/main/src/main/cpp/lzo/src/lzo1b_sm.ch
index 8e3f7c47..8e3f7c47 100644
--- a/main/lzo/src/lzo1b_sm.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_sm.ch
diff --git a/main/lzo/src/lzo1b_tm.ch b/main/src/main/cpp/lzo/src/lzo1b_tm.ch
index 98ac2c84..98ac2c84 100644
--- a/main/lzo/src/lzo1b_tm.ch
+++ b/main/src/main/cpp/lzo/src/lzo1b_tm.ch
diff --git a/main/lzo/src/lzo1b_xx.c b/main/src/main/cpp/lzo/src/lzo1b_xx.c
index ba7ab877..ba7ab877 100644
--- a/main/lzo/src/lzo1b_xx.c
+++ b/main/src/main/cpp/lzo/src/lzo1b_xx.c
diff --git a/main/lzo/src/lzo1c_1.c b/main/src/main/cpp/lzo/src/lzo1c_1.c
index 57d92c2e..57d92c2e 100644
--- a/main/lzo/src/lzo1c_1.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_1.c
diff --git a/main/lzo/src/lzo1c_2.c b/main/src/main/cpp/lzo/src/lzo1c_2.c
index 2e4a1c95..2e4a1c95 100644
--- a/main/lzo/src/lzo1c_2.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_2.c
diff --git a/main/lzo/src/lzo1c_3.c b/main/src/main/cpp/lzo/src/lzo1c_3.c
index 15710a74..15710a74 100644
--- a/main/lzo/src/lzo1c_3.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_3.c
diff --git a/main/lzo/src/lzo1c_4.c b/main/src/main/cpp/lzo/src/lzo1c_4.c
index 3ba6bcf6..3ba6bcf6 100644
--- a/main/lzo/src/lzo1c_4.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_4.c
diff --git a/main/lzo/src/lzo1c_5.c b/main/src/main/cpp/lzo/src/lzo1c_5.c
index d43537c3..d43537c3 100644
--- a/main/lzo/src/lzo1c_5.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_5.c
diff --git a/main/lzo/src/lzo1c_6.c b/main/src/main/cpp/lzo/src/lzo1c_6.c
index 2afb6fd1..2afb6fd1 100644
--- a/main/lzo/src/lzo1c_6.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_6.c
diff --git a/main/lzo/src/lzo1c_7.c b/main/src/main/cpp/lzo/src/lzo1c_7.c
index d50c9067..d50c9067 100644
--- a/main/lzo/src/lzo1c_7.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_7.c
diff --git a/main/lzo/src/lzo1c_8.c b/main/src/main/cpp/lzo/src/lzo1c_8.c
index 8ae847a7..8ae847a7 100644
--- a/main/lzo/src/lzo1c_8.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_8.c
diff --git a/main/lzo/src/lzo1c_9.c b/main/src/main/cpp/lzo/src/lzo1c_9.c
index ecc721c0..ecc721c0 100644
--- a/main/lzo/src/lzo1c_9.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_9.c
diff --git a/main/lzo/src/lzo1c_99.c b/main/src/main/cpp/lzo/src/lzo1c_99.c
index c81ecd10..c81ecd10 100644
--- a/main/lzo/src/lzo1c_99.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_99.c
diff --git a/main/lzo/src/lzo1c_9x.c b/main/src/main/cpp/lzo/src/lzo1c_9x.c
index c4ea914d..c4ea914d 100644
--- a/main/lzo/src/lzo1c_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_9x.c
diff --git a/main/lzo/src/lzo1c_cc.c b/main/src/main/cpp/lzo/src/lzo1c_cc.c
index 952df26a..952df26a 100644
--- a/main/lzo/src/lzo1c_cc.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_cc.c
diff --git a/main/lzo/src/lzo1c_cc.h b/main/src/main/cpp/lzo/src/lzo1c_cc.h
index 86a5def7..86a5def7 100644
--- a/main/lzo/src/lzo1c_cc.h
+++ b/main/src/main/cpp/lzo/src/lzo1c_cc.h
diff --git a/main/lzo/src/lzo1c_d1.c b/main/src/main/cpp/lzo/src/lzo1c_d1.c
index 25283aca..25283aca 100644
--- a/main/lzo/src/lzo1c_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_d1.c
diff --git a/main/lzo/src/lzo1c_d2.c b/main/src/main/cpp/lzo/src/lzo1c_d2.c
index 526d5e78..526d5e78 100644
--- a/main/lzo/src/lzo1c_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_d2.c
diff --git a/main/lzo/src/lzo1c_rr.c b/main/src/main/cpp/lzo/src/lzo1c_rr.c
index 5c7c9875..5c7c9875 100644
--- a/main/lzo/src/lzo1c_rr.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_rr.c
diff --git a/main/lzo/src/lzo1c_xx.c b/main/src/main/cpp/lzo/src/lzo1c_xx.c
index fb8d304d..fb8d304d 100644
--- a/main/lzo/src/lzo1c_xx.c
+++ b/main/src/main/cpp/lzo/src/lzo1c_xx.c
diff --git a/main/lzo/src/lzo1f_1.c b/main/src/main/cpp/lzo/src/lzo1f_1.c
index c201383b..c201383b 100644
--- a/main/lzo/src/lzo1f_1.c
+++ b/main/src/main/cpp/lzo/src/lzo1f_1.c
diff --git a/main/lzo/src/lzo1f_9x.c b/main/src/main/cpp/lzo/src/lzo1f_9x.c
index 927cdd5b..927cdd5b 100644
--- a/main/lzo/src/lzo1f_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo1f_9x.c
diff --git a/main/lzo/src/lzo1f_d.ch b/main/src/main/cpp/lzo/src/lzo1f_d.ch
index e86027b8..e86027b8 100644
--- a/main/lzo/src/lzo1f_d.ch
+++ b/main/src/main/cpp/lzo/src/lzo1f_d.ch
diff --git a/main/lzo/src/lzo1f_d1.c b/main/src/main/cpp/lzo/src/lzo1f_d1.c
index b6931a00..b6931a00 100644
--- a/main/lzo/src/lzo1f_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo1f_d1.c
diff --git a/main/lzo/src/lzo1f_d2.c b/main/src/main/cpp/lzo/src/lzo1f_d2.c
index 160d2cea..160d2cea 100644
--- a/main/lzo/src/lzo1f_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo1f_d2.c
diff --git a/main/lzo/src/lzo1x_1.c b/main/src/main/cpp/lzo/src/lzo1x_1.c
index a659393f..a659393f 100644
--- a/main/lzo/src/lzo1x_1.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_1.c
diff --git a/main/lzo/src/lzo1x_1k.c b/main/src/main/cpp/lzo/src/lzo1x_1k.c
index 4ae6eda4..4ae6eda4 100644
--- a/main/lzo/src/lzo1x_1k.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_1k.c
diff --git a/main/lzo/src/lzo1x_1l.c b/main/src/main/cpp/lzo/src/lzo1x_1l.c
index 90b42e1b..90b42e1b 100644
--- a/main/lzo/src/lzo1x_1l.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_1l.c
diff --git a/main/lzo/src/lzo1x_1o.c b/main/src/main/cpp/lzo/src/lzo1x_1o.c
index b935fc7a..b935fc7a 100644
--- a/main/lzo/src/lzo1x_1o.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_1o.c
diff --git a/main/lzo/src/lzo1x_9x.c b/main/src/main/cpp/lzo/src/lzo1x_9x.c
index 6337f143..6337f143 100644
--- a/main/lzo/src/lzo1x_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_9x.c
diff --git a/main/lzo/src/lzo1x_c.ch b/main/src/main/cpp/lzo/src/lzo1x_c.ch
index be19b2b7..be19b2b7 100644
--- a/main/lzo/src/lzo1x_c.ch
+++ b/main/src/main/cpp/lzo/src/lzo1x_c.ch
diff --git a/main/lzo/src/lzo1x_d.ch b/main/src/main/cpp/lzo/src/lzo1x_d.ch
index b6c6d994..b6c6d994 100644
--- a/main/lzo/src/lzo1x_d.ch
+++ b/main/src/main/cpp/lzo/src/lzo1x_d.ch
diff --git a/main/lzo/src/lzo1x_d1.c b/main/src/main/cpp/lzo/src/lzo1x_d1.c
index 68faf48e..68faf48e 100644
--- a/main/lzo/src/lzo1x_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_d1.c
diff --git a/main/lzo/src/lzo1x_d2.c b/main/src/main/cpp/lzo/src/lzo1x_d2.c
index 8b7c316a..8b7c316a 100644
--- a/main/lzo/src/lzo1x_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_d2.c
diff --git a/main/lzo/src/lzo1x_d3.c b/main/src/main/cpp/lzo/src/lzo1x_d3.c
index b3d430f8..b3d430f8 100644
--- a/main/lzo/src/lzo1x_d3.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_d3.c
diff --git a/main/lzo/src/lzo1x_o.c b/main/src/main/cpp/lzo/src/lzo1x_o.c
index 9fdf306c..9fdf306c 100644
--- a/main/lzo/src/lzo1x_o.c
+++ b/main/src/main/cpp/lzo/src/lzo1x_o.c
diff --git a/main/lzo/src/lzo1x_oo.ch b/main/src/main/cpp/lzo/src/lzo1x_oo.ch
index bb16fd40..bb16fd40 100644
--- a/main/lzo/src/lzo1x_oo.ch
+++ b/main/src/main/cpp/lzo/src/lzo1x_oo.ch
diff --git a/main/lzo/src/lzo1y_1.c b/main/src/main/cpp/lzo/src/lzo1y_1.c
index 30e9ffc0..30e9ffc0 100644
--- a/main/lzo/src/lzo1y_1.c
+++ b/main/src/main/cpp/lzo/src/lzo1y_1.c
diff --git a/main/lzo/src/lzo1y_9x.c b/main/src/main/cpp/lzo/src/lzo1y_9x.c
index 983a8804..983a8804 100644
--- a/main/lzo/src/lzo1y_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo1y_9x.c
diff --git a/main/lzo/src/lzo1y_d1.c b/main/src/main/cpp/lzo/src/lzo1y_d1.c
index cbfa23c0..cbfa23c0 100644
--- a/main/lzo/src/lzo1y_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo1y_d1.c
diff --git a/main/lzo/src/lzo1y_d2.c b/main/src/main/cpp/lzo/src/lzo1y_d2.c
index 76fec551..76fec551 100644
--- a/main/lzo/src/lzo1y_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo1y_d2.c
diff --git a/main/lzo/src/lzo1y_d3.c b/main/src/main/cpp/lzo/src/lzo1y_d3.c
index 08324d68..08324d68 100644
--- a/main/lzo/src/lzo1y_d3.c
+++ b/main/src/main/cpp/lzo/src/lzo1y_d3.c
diff --git a/main/lzo/src/lzo1y_o.c b/main/src/main/cpp/lzo/src/lzo1y_o.c
index 1e32b75b..1e32b75b 100644
--- a/main/lzo/src/lzo1y_o.c
+++ b/main/src/main/cpp/lzo/src/lzo1y_o.c
diff --git a/main/lzo/src/lzo1z_9x.c b/main/src/main/cpp/lzo/src/lzo1z_9x.c
index 082baa49..082baa49 100644
--- a/main/lzo/src/lzo1z_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo1z_9x.c
diff --git a/main/lzo/src/lzo1z_d1.c b/main/src/main/cpp/lzo/src/lzo1z_d1.c
index 3b7b9962..3b7b9962 100644
--- a/main/lzo/src/lzo1z_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo1z_d1.c
diff --git a/main/lzo/src/lzo1z_d2.c b/main/src/main/cpp/lzo/src/lzo1z_d2.c
index 6515af44..6515af44 100644
--- a/main/lzo/src/lzo1z_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo1z_d2.c
diff --git a/main/lzo/src/lzo1z_d3.c b/main/src/main/cpp/lzo/src/lzo1z_d3.c
index d7eae4cb..d7eae4cb 100644
--- a/main/lzo/src/lzo1z_d3.c
+++ b/main/src/main/cpp/lzo/src/lzo1z_d3.c
diff --git a/main/lzo/src/lzo2a_9x.c b/main/src/main/cpp/lzo/src/lzo2a_9x.c
index cc1401c5..cc1401c5 100644
--- a/main/lzo/src/lzo2a_9x.c
+++ b/main/src/main/cpp/lzo/src/lzo2a_9x.c
diff --git a/main/lzo/src/lzo2a_d.ch b/main/src/main/cpp/lzo/src/lzo2a_d.ch
index cbbb79ef..cbbb79ef 100644
--- a/main/lzo/src/lzo2a_d.ch
+++ b/main/src/main/cpp/lzo/src/lzo2a_d.ch
diff --git a/main/lzo/src/lzo2a_d1.c b/main/src/main/cpp/lzo/src/lzo2a_d1.c
index 20a167c9..20a167c9 100644
--- a/main/lzo/src/lzo2a_d1.c
+++ b/main/src/main/cpp/lzo/src/lzo2a_d1.c
diff --git a/main/lzo/src/lzo2a_d2.c b/main/src/main/cpp/lzo/src/lzo2a_d2.c
index 0d7ce526..0d7ce526 100644
--- a/main/lzo/src/lzo2a_d2.c
+++ b/main/src/main/cpp/lzo/src/lzo2a_d2.c
diff --git a/main/lzo/src/lzo_conf.h b/main/src/main/cpp/lzo/src/lzo_conf.h
index aa9a2b6b..aa9a2b6b 100644
--- a/main/lzo/src/lzo_conf.h
+++ b/main/src/main/cpp/lzo/src/lzo_conf.h
diff --git a/main/lzo/src/lzo_crc.c b/main/src/main/cpp/lzo/src/lzo_crc.c
index 56235e2f..56235e2f 100644
--- a/main/lzo/src/lzo_crc.c
+++ b/main/src/main/cpp/lzo/src/lzo_crc.c
diff --git a/main/lzo/src/lzo_dict.h b/main/src/main/cpp/lzo/src/lzo_dict.h
index e48addb1..e48addb1 100644
--- a/main/lzo/src/lzo_dict.h
+++ b/main/src/main/cpp/lzo/src/lzo_dict.h
diff --git a/main/lzo/src/lzo_dll.ch b/main/src/main/cpp/lzo/src/lzo_dll.ch
index d66839e1..d66839e1 100644
--- a/main/lzo/src/lzo_dll.ch
+++ b/main/src/main/cpp/lzo/src/lzo_dll.ch
diff --git a/main/lzo/src/lzo_func.h b/main/src/main/cpp/lzo/src/lzo_func.h
index f3ac8e34..f3ac8e34 100644
--- a/main/lzo/src/lzo_func.h
+++ b/main/src/main/cpp/lzo/src/lzo_func.h
diff --git a/main/lzo/src/lzo_init.c b/main/src/main/cpp/lzo/src/lzo_init.c
index 31fdabe5..31fdabe5 100644
--- a/main/lzo/src/lzo_init.c
+++ b/main/src/main/cpp/lzo/src/lzo_init.c
diff --git a/main/lzo/src/lzo_mchw.ch b/main/src/main/cpp/lzo/src/lzo_mchw.ch
index 94bedc3d..94bedc3d 100644
--- a/main/lzo/src/lzo_mchw.ch
+++ b/main/src/main/cpp/lzo/src/lzo_mchw.ch
diff --git a/main/lzo/src/lzo_ptr.c b/main/src/main/cpp/lzo/src/lzo_ptr.c
index d2def7f6..d2def7f6 100644
--- a/main/lzo/src/lzo_ptr.c
+++ b/main/src/main/cpp/lzo/src/lzo_ptr.c
diff --git a/main/lzo/src/lzo_ptr.h b/main/src/main/cpp/lzo/src/lzo_ptr.h
index 8d7ee448..8d7ee448 100644
--- a/main/lzo/src/lzo_ptr.h
+++ b/main/src/main/cpp/lzo/src/lzo_ptr.h
diff --git a/main/lzo/src/lzo_str.c b/main/src/main/cpp/lzo/src/lzo_str.c
index beac725c..beac725c 100644
--- a/main/lzo/src/lzo_str.c
+++ b/main/src/main/cpp/lzo/src/lzo_str.c
diff --git a/main/lzo/src/lzo_supp.h b/main/src/main/cpp/lzo/src/lzo_supp.h
index a2c90210..a2c90210 100644
--- a/main/lzo/src/lzo_supp.h
+++ b/main/src/main/cpp/lzo/src/lzo_supp.h
diff --git a/main/lzo/src/lzo_swd.ch b/main/src/main/cpp/lzo/src/lzo_swd.ch
index 20bc4617..20bc4617 100644
--- a/main/lzo/src/lzo_swd.ch
+++ b/main/src/main/cpp/lzo/src/lzo_swd.ch
diff --git a/main/lzo/src/lzo_util.c b/main/src/main/cpp/lzo/src/lzo_util.c
index f1d72e31..f1d72e31 100644
--- a/main/lzo/src/lzo_util.c
+++ b/main/src/main/cpp/lzo/src/lzo_util.c
diff --git a/main/lzo/src/stats1a.h b/main/src/main/cpp/lzo/src/stats1a.h
index c72d2c1c..c72d2c1c 100644
--- a/main/lzo/src/stats1a.h
+++ b/main/src/main/cpp/lzo/src/stats1a.h
diff --git a/main/lzo/src/stats1b.h b/main/src/main/cpp/lzo/src/stats1b.h
index 52011b98..52011b98 100644
--- a/main/lzo/src/stats1b.h
+++ b/main/src/main/cpp/lzo/src/stats1b.h
diff --git a/main/lzo/src/stats1c.h b/main/src/main/cpp/lzo/src/stats1c.h
index 0bbd841e..0bbd841e 100644
--- a/main/lzo/src/stats1c.h
+++ b/main/src/main/cpp/lzo/src/stats1c.h
diff --git a/main/lzo/tests/align.c b/main/src/main/cpp/lzo/tests/align.c
index e159bf0e..e159bf0e 100644
--- a/main/lzo/tests/align.c
+++ b/main/src/main/cpp/lzo/tests/align.c
diff --git a/main/lzo/tests/chksum.c b/main/src/main/cpp/lzo/tests/chksum.c
index fc492da2..fc492da2 100644
--- a/main/lzo/tests/chksum.c
+++ b/main/src/main/cpp/lzo/tests/chksum.c
diff --git a/main/lzo/tests/promote.c b/main/src/main/cpp/lzo/tests/promote.c
index f516f28a..f516f28a 100644
--- a/main/lzo/tests/promote.c
+++ b/main/src/main/cpp/lzo/tests/promote.c
diff --git a/main/lzo/tests/sizes.c b/main/src/main/cpp/lzo/tests/sizes.c
index 18a81b04..18a81b04 100644
--- a/main/lzo/tests/sizes.c
+++ b/main/src/main/cpp/lzo/tests/sizes.c
diff --git a/main/lzo/util/check.sh b/main/src/main/cpp/lzo/util/check.sh
index 806c8406..806c8406 100644
--- a/main/lzo/util/check.sh
+++ b/main/src/main/cpp/lzo/util/check.sh
diff --git a/main/lzo/util/checkasm.sh b/main/src/main/cpp/lzo/util/checkasm.sh
index 668a8753..668a8753 100644
--- a/main/lzo/util/checkasm.sh
+++ b/main/src/main/cpp/lzo/util/checkasm.sh
diff --git a/main/lzo/util/notime.pl b/main/src/main/cpp/lzo/util/notime.pl
index b5be12d6..b5be12d6 100644
--- a/main/lzo/util/notime.pl
+++ b/main/src/main/cpp/lzo/util/notime.pl
diff --git a/main/lzo/util/overlap.sh b/main/src/main/cpp/lzo/util/overlap.sh
index 439844e7..439844e7 100644
--- a/main/lzo/util/overlap.sh
+++ b/main/src/main/cpp/lzo/util/overlap.sh
diff --git a/main/lzo/util/shortf.pl b/main/src/main/cpp/lzo/util/shortf.pl
index 500eb450..500eb450 100644
--- a/main/lzo/util/shortf.pl
+++ b/main/src/main/cpp/lzo/util/shortf.pl
diff --git a/main/lzo/util/table.pl b/main/src/main/cpp/lzo/util/table.pl
index 3fc977ff..3fc977ff 100644
--- a/main/lzo/util/table.pl
+++ b/main/src/main/cpp/lzo/util/table.pl
diff --git a/main/lzo/util/uncompr.pl b/main/src/main/cpp/lzo/util/uncompr.pl
index a487ca68..a487ca68 100644
--- a/main/lzo/util/uncompr.pl
+++ b/main/src/main/cpp/lzo/util/uncompr.pl
diff --git a/main/src/main/cpp/mbedtls b/main/src/main/cpp/mbedtls
new file mode 160000
+Subproject ce40c23b6b8df2ccb403ec33b5b16bc2fc6c48a
diff --git a/main/src/main/cpp/minivpn/minivpn.c b/main/src/main/cpp/minivpn/minivpn.c
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/main/src/main/cpp/minivpn/minivpn.c
diff --git a/main/src/main/cpp/openssl b/main/src/main/cpp/openssl
new file mode 160000
+Subproject 2b0fd26192c4014eabe8cbacbc87e0a2aec2d04
diff --git a/main/src/main/cpp/openssl.cmake b/main/src/main/cpp/openssl.cmake
new file mode 100644
index 00000000..d6e939e8
--- /dev/null
+++ b/main/src/main/cpp/openssl.cmake
@@ -0,0 +1,828 @@
+enable_language(ASM)
+
+set(crypto_srcs
+ crypto/aes/aes_cbc.c
+ crypto/aes/aes_cfb.c
+ crypto/aes/aes_core.c
+ crypto/aes/aes_ecb.c
+ crypto/aes/aes_ige.c
+ crypto/aes/aes_misc.c
+ crypto/aes/aes_ofb.c
+ crypto/aes/aes_wrap.c
+ crypto/asn1/a_bitstr.c
+ crypto/asn1/a_d2i_fp.c
+ crypto/asn1/a_digest.c
+ crypto/asn1/a_dup.c
+ crypto/asn1/a_gentm.c
+ crypto/asn1/a_i2d_fp.c
+ crypto/asn1/a_int.c
+ crypto/asn1/a_mbstr.c
+ crypto/asn1/a_object.c
+ crypto/asn1/a_octet.c
+ crypto/asn1/a_print.c
+ crypto/asn1/a_sign.c
+ crypto/asn1/a_strex.c
+ crypto/asn1/a_strnid.c
+ crypto/asn1/a_time.c
+ crypto/asn1/a_type.c
+ crypto/asn1/a_utctm.c
+ crypto/asn1/a_utf8.c
+ crypto/asn1/a_verify.c
+ crypto/asn1/ameth_lib.c
+ crypto/asn1/asn1_err.c
+ crypto/asn1/asn1_gen.c
+ crypto/asn1/asn1_lib.c
+ crypto/asn1/asn1_par.c
+ crypto/asn1/asn_mime.c
+ crypto/asn1/asn_moid.c
+ crypto/asn1/asn_mstbl.c
+ crypto/asn1/asn_pack.c
+ crypto/asn1/bio_asn1.c
+ crypto/asn1/bio_ndef.c
+ crypto/asn1/d2i_pr.c
+ crypto/asn1/d2i_pu.c
+ crypto/asn1/evp_asn1.c
+ crypto/asn1/f_int.c
+ crypto/asn1/f_string.c
+ crypto/asn1/i2d_pr.c
+ crypto/asn1/i2d_pu.c
+ crypto/asn1/n_pkey.c
+ crypto/asn1/nsseq.c
+ crypto/asn1/p5_pbe.c
+ crypto/asn1/p5_pbev2.c
+ crypto/asn1/p5_scrypt.c
+ crypto/asn1/p8_pkey.c
+ crypto/asn1/t_bitst.c
+ crypto/asn1/t_pkey.c
+ crypto/asn1/tasn_dec.c
+ crypto/asn1/tasn_enc.c
+ crypto/asn1/tasn_fre.c
+ crypto/asn1/tasn_new.c
+ crypto/asn1/tasn_prn.c
+ crypto/asn1/tasn_scn.c
+ crypto/asn1/tasn_typ.c
+ crypto/asn1/tasn_utl.c
+ crypto/asn1/x_algor.c
+ crypto/asn1/x_bignum.c
+ crypto/asn1/x_info.c
+ crypto/asn1/x_int64.c
+ crypto/asn1/x_long.c
+ crypto/asn1/x_pkey.c
+ crypto/asn1/x_sig.c
+ crypto/asn1/x_spki.c
+ crypto/asn1/x_val.c
+ crypto/async/arch/async_null.c
+ crypto/async/arch/async_posix.c
+ crypto/async/async.c
+ crypto/async/async_err.c
+ crypto/async/async_wait.c
+ crypto/bf/bf_cfb64.c
+ crypto/bf/bf_ecb.c
+ crypto/bf/bf_enc.c
+ crypto/bf/bf_ofb64.c
+ crypto/bf/bf_skey.c
+ crypto/bio/b_addr.c
+ crypto/bio/b_dump.c
+ crypto/bio/b_print.c
+ crypto/bio/b_sock.c
+ crypto/bio/b_sock2.c
+ crypto/bio/bf_buff.c
+ crypto/bio/bf_nbio.c
+ crypto/bio/bf_null.c
+ crypto/bio/bio_cb.c
+ crypto/bio/bio_err.c
+ crypto/bio/bio_lib.c
+ crypto/bio/bio_meth.c
+ crypto/bio/bss_acpt.c
+ crypto/bio/bss_bio.c
+ crypto/bio/bss_conn.c
+ crypto/bio/bss_dgram.c
+ crypto/bio/bss_fd.c
+ crypto/bio/bss_file.c
+ crypto/bio/bss_log.c
+ crypto/bio/bss_mem.c
+ crypto/bio/bss_null.c
+ crypto/bio/bss_sock.c
+ crypto/blake2/blake2b.c
+ crypto/blake2/blake2s.c
+ crypto/blake2/m_blake2b.c
+ crypto/blake2/m_blake2s.c
+ crypto/bn/bn_add.c
+ crypto/bn/bn_asm.c
+ crypto/bn/bn_blind.c
+ crypto/bn/bn_const.c
+ crypto/bn/bn_ctx.c
+ crypto/bn/bn_dh.c
+ crypto/bn/bn_div.c
+ crypto/bn/bn_err.c
+ crypto/bn/bn_exp.c
+ crypto/bn/bn_exp2.c
+ crypto/bn/bn_gcd.c
+ crypto/bn/bn_gf2m.c
+ crypto/bn/bn_intern.c
+ crypto/bn/bn_kron.c
+ crypto/bn/bn_lib.c
+ crypto/bn/bn_mod.c
+ crypto/bn/bn_mont.c
+ crypto/bn/bn_mpi.c
+ crypto/bn/bn_mul.c
+ crypto/bn/bn_nist.c
+ crypto/bn/bn_prime.c
+ crypto/bn/bn_print.c
+ crypto/bn/bn_rand.c
+ crypto/bn/bn_recp.c
+ crypto/bn/bn_shift.c
+ crypto/bn/bn_sqr.c
+ crypto/bn/bn_sqrt.c
+ crypto/bn/bn_srp.c
+ crypto/bn/bn_word.c
+ crypto/bn/bn_x931p.c
+ crypto/bn/rsaz_exp.c
+ crypto/buffer/buf_err.c
+ crypto/buffer/buffer.c
+ crypto/chacha/chacha_enc.c
+ crypto/cmac/cm_ameth.c
+ crypto/cmac/cm_pmeth.c
+ crypto/cmac/cmac.c
+ crypto/cms/cms_asn1.c
+ crypto/cms/cms_att.c
+ crypto/cms/cms_cd.c
+ crypto/cms/cms_dd.c
+ crypto/cms/cms_enc.c
+ crypto/cms/cms_env.c
+ crypto/cms/cms_err.c
+ crypto/cms/cms_ess.c
+ crypto/cms/cms_io.c
+ crypto/cms/cms_kari.c
+ crypto/cms/cms_lib.c
+ crypto/cms/cms_pwri.c
+ crypto/cms/cms_sd.c
+ crypto/cms/cms_smime.c
+ crypto/comp/c_zlib.c
+ crypto/comp/comp_err.c
+ crypto/comp/comp_lib.c
+ crypto/conf/conf_api.c
+ crypto/conf/conf_def.c
+ crypto/conf/conf_err.c
+ crypto/conf/conf_lib.c
+ crypto/conf/conf_mall.c
+ crypto/conf/conf_mod.c
+ crypto/conf/conf_sap.c
+ crypto/cpt_err.c
+ crypto/cryptlib.c
+ crypto/ct/ct_b64.c
+ crypto/ct/ct_err.c
+ crypto/ct/ct_log.c
+ crypto/ct/ct_oct.c
+ crypto/ct/ct_policy.c
+ crypto/ct/ct_prn.c
+ crypto/ct/ct_sct.c
+ crypto/ct/ct_sct_ctx.c
+ crypto/ct/ct_vfy.c
+ crypto/ct/ct_x509v3.c
+ crypto/cversion.c
+ crypto/des/cbc_cksm.c
+ crypto/des/cbc_enc.c
+ crypto/des/cfb64ede.c
+ crypto/des/cfb64enc.c
+ crypto/des/cfb_enc.c
+ crypto/des/des_enc.c
+ crypto/des/ecb3_enc.c
+ crypto/des/ecb_enc.c
+ crypto/des/fcrypt.c
+ crypto/des/fcrypt_b.c
+ crypto/des/ofb64ede.c
+ crypto/des/ofb64enc.c
+ crypto/des/ofb_enc.c
+ crypto/des/pcbc_enc.c
+ crypto/des/qud_cksm.c
+ crypto/des/rand_key.c
+ crypto/des/rpc_enc.c
+ crypto/des/set_key.c
+ crypto/des/str2key.c
+ crypto/des/xcbc_enc.c
+ crypto/dh/dh_ameth.c
+ crypto/dh/dh_asn1.c
+ crypto/dh/dh_check.c
+ crypto/dh/dh_depr.c
+ crypto/dh/dh_err.c
+ crypto/dh/dh_gen.c
+ crypto/dh/dh_kdf.c
+ crypto/dh/dh_key.c
+ crypto/dh/dh_lib.c
+ crypto/dh/dh_meth.c
+ crypto/dh/dh_pmeth.c
+ crypto/dh/dh_rfc5114.c
+ crypto/dsa/dsa_ameth.c
+ crypto/dsa/dsa_asn1.c
+ crypto/dsa/dsa_depr.c
+ crypto/dsa/dsa_err.c
+ crypto/dsa/dsa_gen.c
+ crypto/dsa/dsa_key.c
+ crypto/dsa/dsa_lib.c
+ crypto/dsa/dsa_meth.c
+ crypto/dsa/dsa_ossl.c
+ crypto/dsa/dsa_pmeth.c
+ crypto/dsa/dsa_prn.c
+ crypto/dsa/dsa_sign.c
+ crypto/dsa/dsa_vrf.c
+ crypto/dso/dso_dl.c
+ crypto/dso/dso_dlfcn.c
+ crypto/dso/dso_err.c
+ crypto/dso/dso_lib.c
+ crypto/dso/dso_openssl.c
+ crypto/ebcdic.c
+ crypto/ec/curve25519.c
+ crypto/ec/ec2_mult.c
+ crypto/ec/ec2_oct.c
+ crypto/ec/ec2_smpl.c
+ crypto/ec/ec_ameth.c
+ crypto/ec/ec_asn1.c
+ crypto/ec/ec_check.c
+ crypto/ec/ec_curve.c
+ crypto/ec/ec_cvt.c
+ crypto/ec/ec_err.c
+ crypto/ec/ec_key.c
+ crypto/ec/ec_kmeth.c
+ crypto/ec/ec_lib.c
+ crypto/ec/ec_mult.c
+ crypto/ec/ec_oct.c
+ crypto/ec/ec_pmeth.c
+ crypto/ec/ec_print.c
+ crypto/ec/ecdh_kdf.c
+ crypto/ec/ecdh_ossl.c
+ crypto/ec/ecdsa_ossl.c
+ crypto/ec/ecdsa_sign.c
+ crypto/ec/ecdsa_vrf.c
+ crypto/ec/eck_prn.c
+ crypto/ec/ecp_mont.c
+ crypto/ec/ecp_nist.c
+ crypto/ec/ecp_nistz256.c
+ crypto/ec/ecp_oct.c
+ crypto/ec/ecp_smpl.c
+ crypto/ec/ecx_meth.c
+ crypto/engine/eng_all.c
+ crypto/engine/eng_cnf.c
+ crypto/engine/eng_ctrl.c
+ crypto/engine/eng_dyn.c
+ crypto/engine/eng_err.c
+ crypto/engine/eng_fat.c
+ crypto/engine/eng_init.c
+ crypto/engine/eng_lib.c
+ crypto/engine/eng_list.c
+ crypto/engine/eng_openssl.c
+ crypto/engine/eng_pkey.c
+ crypto/engine/eng_table.c
+ crypto/engine/tb_asnmth.c
+ crypto/engine/tb_cipher.c
+ crypto/engine/tb_dh.c
+ crypto/engine/tb_digest.c
+ crypto/engine/tb_dsa.c
+ crypto/engine/tb_eckey.c
+ crypto/engine/tb_pkmeth.c
+ crypto/engine/tb_rand.c
+ crypto/engine/tb_rsa.c
+ crypto/err/err.c
+ crypto/err/err_all.c
+ crypto/err/err_prn.c
+ crypto/evp/bio_b64.c
+ crypto/evp/bio_enc.c
+ crypto/evp/bio_md.c
+ crypto/evp/bio_ok.c
+ crypto/evp/c_allc.c
+ crypto/evp/c_alld.c
+ crypto/evp/cmeth_lib.c
+ crypto/evp/digest.c
+ crypto/evp/e_aes.c
+ crypto/evp/e_aes_cbc_hmac_sha1.c
+ crypto/evp/e_aes_cbc_hmac_sha256.c
+ crypto/evp/e_bf.c
+ crypto/evp/e_chacha20_poly1305.c
+ crypto/evp/e_des.c
+ crypto/evp/e_des3.c
+ crypto/evp/e_null.c
+ crypto/evp/e_old.c
+ crypto/evp/e_rc2.c
+ crypto/evp/e_rc4.c
+ crypto/evp/e_rc4_hmac_md5.c
+ crypto/evp/e_rc5.c
+ crypto/evp/e_xcbc_d.c
+ crypto/evp/encode.c
+ crypto/evp/evp_cnf.c
+ crypto/evp/evp_enc.c
+ crypto/evp/evp_err.c
+ crypto/evp/evp_key.c
+ crypto/evp/evp_lib.c
+ crypto/evp/evp_pbe.c
+ crypto/evp/evp_pkey.c
+ crypto/evp/m_md4.c
+ crypto/evp/m_md5.c
+ crypto/evp/m_md5_sha1.c
+ crypto/evp/m_mdc2.c
+ crypto/evp/m_null.c
+ crypto/evp/m_sha1.c
+ crypto/evp/m_sigver.c
+ crypto/evp/m_wp.c
+ crypto/evp/names.c
+ crypto/evp/p5_crpt.c
+ crypto/evp/p5_crpt2.c
+ crypto/evp/p_dec.c
+ crypto/evp/p_enc.c
+ crypto/evp/p_lib.c
+ crypto/evp/p_open.c
+ crypto/evp/p_seal.c
+ crypto/evp/p_sign.c
+ crypto/evp/p_verify.c
+ crypto/evp/pmeth_fn.c
+ crypto/evp/pmeth_gn.c
+ crypto/evp/pmeth_lib.c
+ crypto/evp/scrypt.c
+ crypto/ex_data.c
+ crypto/hmac/hm_ameth.c
+ crypto/hmac/hm_pmeth.c
+ crypto/hmac/hmac.c
+ crypto/init.c
+ crypto/kdf/hkdf.c
+ crypto/kdf/kdf_err.c
+ crypto/kdf/tls1_prf.c
+ crypto/lhash/lh_stats.c
+ crypto/lhash/lhash.c
+ crypto/md4/md4_dgst.c
+ crypto/md4/md4_one.c
+ crypto/md5/md5_dgst.c
+ crypto/md5/md5_one.c
+ crypto/mem.c
+ crypto/mem_dbg.c
+ crypto/mem_sec.c
+ crypto/modes/cbc128.c
+ crypto/modes/ccm128.c
+ crypto/modes/cfb128.c
+ crypto/modes/ctr128.c
+ crypto/modes/gcm128.c
+ crypto/modes/ocb128.c
+ crypto/modes/ofb128.c
+ crypto/modes/wrap128.c
+ crypto/modes/xts128.c
+ crypto/o_dir.c
+ crypto/o_fips.c
+ crypto/o_fopen.c
+ crypto/o_init.c
+ crypto/o_str.c
+ crypto/o_time.c
+ crypto/objects/o_names.c
+ crypto/objects/obj_dat.c
+ crypto/objects/obj_err.c
+ crypto/objects/obj_lib.c
+ crypto/objects/obj_xref.c
+ crypto/ocsp/ocsp_asn.c
+ crypto/ocsp/ocsp_cl.c
+ crypto/ocsp/ocsp_err.c
+ crypto/ocsp/ocsp_ext.c
+ crypto/ocsp/ocsp_ht.c
+ crypto/ocsp/ocsp_lib.c
+ crypto/ocsp/ocsp_prn.c
+ crypto/ocsp/ocsp_srv.c
+ crypto/ocsp/ocsp_vfy.c
+ crypto/ocsp/v3_ocsp.c
+ crypto/pem/pem_all.c
+ crypto/pem/pem_err.c
+ crypto/pem/pem_info.c
+ crypto/pem/pem_lib.c
+ crypto/pem/pem_oth.c
+ crypto/pem/pem_pk8.c
+ crypto/pem/pem_pkey.c
+ crypto/pem/pem_sign.c
+ crypto/pem/pem_x509.c
+ crypto/pem/pem_xaux.c
+ crypto/pem/pvkfmt.c
+ crypto/pkcs12/p12_add.c
+ crypto/pkcs12/p12_asn.c
+ crypto/pkcs12/p12_attr.c
+ crypto/pkcs12/p12_crpt.c
+ crypto/pkcs12/p12_crt.c
+ crypto/pkcs12/p12_decr.c
+ crypto/pkcs12/p12_init.c
+ crypto/pkcs12/p12_key.c
+ crypto/pkcs12/p12_kiss.c
+ crypto/pkcs12/p12_mutl.c
+ crypto/pkcs12/p12_npas.c
+ crypto/pkcs12/p12_p8d.c
+ crypto/pkcs12/p12_p8e.c
+ crypto/pkcs12/p12_sbag.c
+ crypto/pkcs12/p12_utl.c
+ crypto/pkcs12/pk12err.c
+ crypto/pkcs7/pk7_asn1.c
+ crypto/pkcs7/pk7_attr.c
+ crypto/pkcs7/pk7_doit.c
+ crypto/pkcs7/pk7_lib.c
+ crypto/pkcs7/pk7_mime.c
+ crypto/pkcs7/pk7_smime.c
+ crypto/pkcs7/pkcs7err.c
+ crypto/poly1305/poly1305.c
+ crypto/rand/md_rand.c
+ crypto/rand/rand_egd.c
+ crypto/rand/rand_err.c
+ crypto/rand/rand_lib.c
+ crypto/rand/rand_unix.c
+ crypto/rand/rand_win.c
+ crypto/rand/randfile.c
+ crypto/rc2/rc2_cbc.c
+ crypto/rc2/rc2_ecb.c
+ crypto/rc2/rc2_skey.c
+ crypto/rc2/rc2cfb64.c
+ crypto/rc2/rc2ofb64.c
+ crypto/rc4/rc4_enc.c
+ crypto/rc4/rc4_skey.c
+ crypto/rsa/rsa_ameth.c
+ crypto/rsa/rsa_asn1.c
+ crypto/rsa/rsa_chk.c
+ crypto/rsa/rsa_crpt.c
+ crypto/rsa/rsa_err.c
+ crypto/rsa/rsa_gen.c
+ crypto/rsa/rsa_lib.c
+ crypto/rsa/rsa_meth.c
+ crypto/rsa/rsa_none.c
+ crypto/rsa/rsa_null.c
+ crypto/rsa/rsa_oaep.c
+ crypto/rsa/rsa_ossl.c
+ crypto/rsa/rsa_pk1.c
+ crypto/rsa/rsa_pmeth.c
+ crypto/rsa/rsa_prn.c
+ crypto/rsa/rsa_pss.c
+ crypto/rsa/rsa_saos.c
+ crypto/rsa/rsa_sign.c
+ crypto/rsa/rsa_ssl.c
+ crypto/rsa/rsa_x931.c
+ crypto/rsa/rsa_x931g.c
+ crypto/sha/sha1_one.c
+ crypto/sha/sha1dgst.c
+ crypto/sha/sha256.c
+ crypto/sha/sha512.c
+ crypto/srp/srp_lib.c
+ crypto/srp/srp_vfy.c
+ crypto/stack/stack.c
+ crypto/threads_none.c
+ crypto/threads_pthread.c
+ crypto/threads_win.c
+ crypto/ts/ts_err.c
+ crypto/txt_db/txt_db.c
+ crypto/ui/ui_err.c
+ crypto/ui/ui_lib.c
+ crypto/ui/ui_openssl.c
+ crypto/ui/ui_util.c
+ crypto/uid.c
+ crypto/x509/by_dir.c
+ crypto/x509/by_file.c
+ crypto/x509/t_crl.c
+ crypto/x509/t_req.c
+ crypto/x509/t_x509.c
+ crypto/x509/x509_att.c
+ crypto/x509/x509_cmp.c
+ crypto/x509/x509_d2.c
+ crypto/x509/x509_def.c
+ crypto/x509/x509_err.c
+ crypto/x509/x509_ext.c
+ crypto/x509/x509_lu.c
+ crypto/x509/x509_obj.c
+ crypto/x509/x509_r2x.c
+ crypto/x509/x509_req.c
+ crypto/x509/x509_set.c
+ crypto/x509/x509_trs.c
+ crypto/x509/x509_txt.c
+ crypto/x509/x509_v3.c
+ crypto/x509/x509_vfy.c
+ crypto/x509/x509_vpm.c
+ crypto/x509/x509cset.c
+ crypto/x509/x509name.c
+ crypto/x509/x509rset.c
+ crypto/x509/x509spki.c
+ crypto/x509/x509type.c
+ crypto/x509/x_all.c
+ crypto/x509/x_attrib.c
+ crypto/x509/x_crl.c
+ crypto/x509/x_exten.c
+ crypto/x509/x_name.c
+ crypto/x509/x_pubkey.c
+ crypto/x509/x_req.c
+ crypto/x509/x_x509.c
+ crypto/x509/x_x509a.c
+ crypto/x509v3/pcy_cache.c
+ crypto/x509v3/pcy_data.c
+ crypto/x509v3/pcy_lib.c
+ crypto/x509v3/pcy_map.c
+ crypto/x509v3/pcy_node.c
+ crypto/x509v3/pcy_tree.c
+ crypto/x509v3/v3_akey.c
+ crypto/x509v3/v3_akeya.c
+ crypto/x509v3/v3_alt.c
+ crypto/x509v3/v3_bcons.c
+ crypto/x509v3/v3_bitst.c
+ crypto/x509v3/v3_conf.c
+ crypto/x509v3/v3_cpols.c
+ crypto/x509v3/v3_crld.c
+ crypto/x509v3/v3_enum.c
+ crypto/x509v3/v3_extku.c
+ crypto/x509v3/v3_genn.c
+ crypto/x509v3/v3_ia5.c
+ crypto/x509v3/v3_info.c
+ crypto/x509v3/v3_int.c
+ crypto/x509v3/v3_lib.c
+ crypto/x509v3/v3_ncons.c
+ crypto/x509v3/v3_pci.c
+ crypto/x509v3/v3_pcia.c
+ crypto/x509v3/v3_pcons.c
+ crypto/x509v3/v3_pku.c
+ crypto/x509v3/v3_pmaps.c
+ crypto/x509v3/v3_prn.c
+ crypto/x509v3/v3_purp.c
+ crypto/x509v3/v3_skey.c
+ crypto/x509v3/v3_sxnet.c
+ crypto/x509v3/v3_tlsf.c
+ crypto/x509v3/v3_utl.c
+ crypto/x509v3/v3err.c
+)
+if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
+ set(crypto_srcs ${crypto_srcs}
+ crypto/aes/asm/aes-armv4.S
+ crypto/aes/asm/aesv8-armx.S
+ crypto/aes/asm/bsaes-armv7.S
+ crypto/armcap.c
+ crypto/armv4cpuid.S
+ crypto/bn/asm/armv4-gf2m.S
+ crypto/bn/asm/armv4-mont.S
+ crypto/ec/asm/ecp_nistz256-armv4.S
+ crypto/modes/asm/ghash-armv4.S
+ crypto/modes/asm/ghashv8-armx.S
+ crypto/sha/asm/sha1-armv4-large.S
+ crypto/sha/asm/sha256-armv4.S
+ crypto/sha/asm/sha512-armv4.S
+ )
+ list(REMOVE_ITEM crypto_srcs
+ crypto/aes/aes_core.c
+ )
+elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
+ set(crypto_srcs ${crypto_srcs}
+ crypto/aes/asm/aesv8-armx-64.S
+ crypto/aes/asm/vpaes-armv8.S
+ crypto/arm64cpuid.S
+ crypto/armcap.c
+ crypto/bn/asm/armv8-mont.S
+ crypto/ec/asm/ecp_nistz256-armv8.S
+ crypto/modes/asm/ghashv8-armx-64.S
+ crypto/poly1305/asm/poly1305-armv8.S
+ crypto/sha/asm/sha1-armv8.S
+ crypto/sha/asm/sha256-armv8.S
+ crypto/sha/asm/sha512-armv8.S
+ )
+elseif(${ANDROID_ABI} STREQUAL "x86")
+ set(crypto_srcs ${crypto_srcs}
+ crypto/aes/asm/aes-586.S
+ crypto/aes/asm/aesni-x86.S
+ crypto/aes/asm/vpaes-x86.S
+ crypto/bf/asm/bf-586.S
+ crypto/bn/asm/bn-586.S
+ crypto/bn/asm/co-586.S
+ crypto/bn/asm/x86-gf2m.S
+ crypto/bn/asm/x86-mont.S
+ crypto/des/asm/crypt586.S
+ crypto/des/asm/des-586.S
+ crypto/ec/asm/ecp_nistz256-x86.S
+ crypto/md5/asm/md5-586.S
+ crypto/modes/asm/ghash-x86.S
+ crypto/poly1305/asm/poly1305-x86.S
+ crypto/sha/asm/sha1-586.S
+ crypto/sha/asm/sha256-586.S
+ crypto/sha/asm/sha512-586.S
+ crypto/x86cpuid.S
+ )
+ list(REMOVE_ITEM crypto_srcs
+ crypto/aes/aes_cbc.c
+ crypto/aes/aes_core.c
+ crypto/bf/bf_enc.c
+ crypto/bn/bn_asm.c
+ crypto/des/des_enc.c
+ crypto/des/fcrypt_b.c
+ )
+elseif(${ANDROID_ABI} STREQUAL "x86_64")
+ set(crypto_srcs ${crypto_srcs}
+ crypto/aes/asm/aes-x86_64.S
+ crypto/aes/asm/aesni-mb-x86_64.S
+ crypto/aes/asm/aesni-sha1-x86_64.S
+ crypto/aes/asm/aesni-sha256-x86_64.S
+ crypto/aes/asm/aesni-x86_64.S
+ crypto/aes/asm/bsaes-x86_64.S
+ crypto/aes/asm/vpaes-x86_64.S
+ crypto/bn/asm/rsaz-avx2.S
+ crypto/bn/asm/rsaz-x86_64.S
+ crypto/bn/asm/x86_64-gcc.c
+ crypto/bn/asm/x86_64-gf2m.S
+ crypto/bn/asm/x86_64-mont.S
+ crypto/bn/asm/x86_64-mont5.S
+ crypto/ec/asm/ecp_nistz256-x86_64.S
+ crypto/md5/asm/md5-x86_64.S
+ crypto/modes/asm/aesni-gcm-x86_64.S
+ crypto/modes/asm/ghash-x86_64.S
+ crypto/poly1305/asm/poly1305-x86_64.S
+ crypto/rc4/asm/rc4-md5-x86_64.S
+ crypto/rc4/asm/rc4-x86_64.S
+ crypto/sha/asm/sha1-mb-x86_64.S
+ crypto/sha/asm/sha1-x86_64.S
+ crypto/sha/asm/sha256-mb-x86_64.S
+ crypto/sha/asm/sha256-x86_64.S
+ crypto/sha/asm/sha512-x86_64.S
+ crypto/x86_64cpuid.S
+ )
+
+ list(REMOVE_ITEM crypto_srcs
+ crypto/aes/aes_cbc.c
+ crypto/aes/aes_core.c
+ crypto/bn/bn_asm.c
+ crypto/mem_clr.c
+ crypto/rc4/rc4_enc.c
+ crypto/rc4/rc4_skey.c
+ )
+else()
+ message( FATAL_ERROR "Unknown arch ${ANDROID_ABI} for source files" )
+endif()
+
+PREPEND(crypto_srcs_with_path "openssl" ${crypto_srcs})
+add_library(crypto ${crypto_srcs_with_path})
+
+target_include_directories(crypto PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/crypto/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openssl/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openssl/crypto/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/openssl/
+ ${CMAKE_CURRENT_SOURCE_DIR}/openssl/crypto/
+ )
+
+target_include_directories(crypto PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/openssl/crypto/modes
+
+ )
+
+target_compile_definitions(crypto PRIVATE -DNO_WINDOWS_BRAINDEATH)
+target_compile_options(crypto PRIVATE -Wno-missing-field-initializers -Wno-unused-parameter)
+
+if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
+ target_compile_definitions(crypto PRIVATE
+ -DAES_ASM
+ -DBSAES_ASM
+ -DDSO_DLFCN
+ -DECP_NISTZ256_ASM
+ -DGHASH_ASM
+ -DHAVE_DLFCN_H
+ -DL_ENDIAN
+ -DNDEBUG
+ -DOPENSSL_BN_ASM_GF2m
+ -DOPENSSL_BN_ASM_MONT
+ -DOPENSSL_CPUID_OBJ
+ -DOPENSSL_NO_STATIC_ENGINE
+ -DOPENSSL_PIC
+ -DOPENSSL_THREADS
+ -DSHA1_ASM
+ -DSHA256_ASM
+ -DSHA512_ASM
+ )
+ elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
+ target_compile_definitions(crypto PRIVATE
+ -DDSO_DLFCN
+ -DECP_NISTZ256_ASM
+ -DHAVE_DLFCN_H
+ -DL_ENDIAN
+ -DNDEBUG
+ -DOPENSSL_BN_ASM_MONT
+ -DOPENSSL_CPUID_OBJ
+ -DOPENSSL_NO_STATIC_ENGINE
+ -DOPENSSL_PIC
+ -DOPENSSL_THREADS
+ -DPOLY1305_ASM
+ -DSHA1_ASM
+ -DSHA256_ASM
+ -DSHA512_ASM
+ -DVPAES_ASM
+ )
+ elseif(${ANDROID_ABI} STREQUAL "x86")
+ target_compile_definitions(crypto PRIVATE
+ -DAES_ASM
+ -DDSO_DLFCN
+ -DECP_NISTZ256_ASM
+ -DGHASH_ASM
+ -DHAVE_DLFCN_H
+ -DL_ENDIAN
+ -DMD5_ASM
+ -DNDEBUG
+ -DOPENSSL_BN_ASM_GF2m
+ -DOPENSSL_BN_ASM_MONT
+ -DOPENSSL_BN_ASM_PART_WORDS
+ -DOPENSSL_CPUID_OBJ
+ -DOPENSSL_IA32_SSE2
+ -DOPENSSL_NO_STATIC_ENGINE
+ -DOPENSSL_PIC
+ -DOPENSSL_THREADS
+ -DPADLOCK_ASM
+ -DPOLY1305_ASM
+ -DRC4_ASM
+ -DRMD160_ASM
+ -DSHA1_ASM
+ -DSHA256_ASM
+ -DSHA512_ASM
+ -DVPAES_ASM
+ )
+ elseif(${ANDROID_ABI} STREQUAL "x86_64")
+ target_compile_definitions(crypto PRIVATE
+ -DAES_ASM
+ -DBSAES_ASM
+ -DDSO_DLFCN
+ -DECP_NISTZ256_ASM
+ -DGHASH_ASM
+ -DHAVE_DLFCN_H
+ -DL_ENDIAN
+ -DMD5_ASM
+ -DNDEBUG
+ -DOPENSSL_BN_ASM_GF2m
+ -DOPENSSL_BN_ASM_MONT
+ -DOPENSSL_BN_ASM_MONT5
+ -DOPENSSL_CPUID_OBJ
+ -DOPENSSL_IA32_SSE2
+ -DOPENSSL_NO_STATIC_ENGINE
+ -DOPENSSL_PIC
+ -DOPENSSL_THREADS
+ -DPADLOCK_ASM
+ -DPOLY1305_ASM
+ -DRC4_ASM
+ -DSHA1_ASM
+ -DSHA256_ASM
+ -DSHA512_ASM
+ -DVPAES_ASM
+
+ )
+ else()
+ message( FATAL_ERROR "Unknown arch ${ANDROID_ABI} for flags" )
+endif()
+
+if (${ANDROID_ABI} STREQUAL "x86_64" OR ${ANDROID_ABI} STREQUAL "arm64-v8a")
+ target_compile_definitions(crypto PRIVATE
+ -DOPENSSLDIR=\"/system/lib/ssl\"
+ -DENGINESDIR=\"/system/lib/ssl/engines\"
+ )
+else()
+ target_compile_definitions(crypto PRIVATE
+ -DOPENSSLDIR=\"/system/lib64/ssl\"
+ -DENGINESDIR=\"/system/lib64/ssl/engines\"
+ )
+endif()
+
+
+
+################## SSL Library ###########################################
+
+set (ssl_srcs
+ ssl/bio_ssl.c
+ ssl/d1_lib.c
+ ssl/d1_msg.c
+ ssl/d1_srtp.c
+ ssl/methods.c
+ ssl/pqueue.c
+ ssl/record/dtls1_bitmap.c
+ ssl/record/rec_layer_d1.c
+ ssl/record/rec_layer_s3.c
+ ssl/record/ssl3_buffer.c
+ ssl/record/ssl3_record.c
+ ssl/s3_cbc.c
+ ssl/s3_enc.c
+ ssl/s3_lib.c
+ ssl/s3_msg.c
+ ssl/ssl_asn1.c
+ ssl/ssl_cert.c
+ ssl/ssl_ciph.c
+ ssl/ssl_conf.c
+ ssl/ssl_err.c
+ ssl/ssl_init.c
+ ssl/ssl_lib.c
+ ssl/ssl_mcnf.c
+ ssl/ssl_rsa.c
+ ssl/ssl_sess.c
+ ssl/ssl_stat.c
+ ssl/ssl_txt.c
+ ssl/ssl_utst.c
+ ssl/statem/statem.c
+ ssl/statem/statem_clnt.c
+ ssl/statem/statem_dtls.c
+ ssl/statem/statem_lib.c
+ ssl/statem/statem_srvr.c
+ ssl/t1_enc.c
+ ssl/t1_ext.c
+ ssl/t1_lib.c
+ ssl/t1_reneg.c
+ ssl/t1_trce.c
+ ssl/tls_srp.c
+)
+
+PREPEND(ssl_srcs_with_path "openssl" ${ssl_srcs})
+add_library(ssl ${ssl_srcs_with_path})
+
+
+target_link_libraries(ssl crypto)
+
+#MESSAGE(FATAL_ERROR "ASM is ${CMAKE_ASM_SOURCE_FILE_EXTENSIONS} and ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS}")
diff --git a/main/src/main/cpp/openvpn b/main/src/main/cpp/openvpn
new file mode 160000
+Subproject e375db48adf11834721053b6defd58998722866
diff --git a/main/src/main/cpp/openvpn-config/config.h b/main/src/main/cpp/openvpn-config/config.h
new file mode 100644
index 00000000..7a25ea96
--- /dev/null
+++ b/main/src/main/cpp/openvpn-config/config.h
@@ -0,0 +1,677 @@
+
+/* config.h. Generated from config.h.in by configure. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+
+/* DISABLE PERSISTEN TUN */
+#undef TUNSETPERSIST
+
+/* Enable deferred authentication */
+#define CONFIGURE_DEF_AUTH 1
+
+/* Enable internal packet filter */
+#undef CONFIGURE_PF //1
+
+/* enable iproute2 support */
+#undef CONFIG_FEATURE_IPROUTE
+
+/* Use memory debugging function in OpenSSL */
+/* #undef CRYPTO_MDEBUG */
+
+/* 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 client/server capability */
+#define ENABLE_CLIENT_SERVER 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
+
+/* Enable TCP Server port sharing */
+#define ENABLE_PORT_SHARE 1
+
+/* Enable smaller executable size */
+/* #undef ENABLE_SMALL */
+
+/* Enable Socks proxy support */
+#define ENABLE_SOCKS 1
+
+/* Define to 1 if you have the `accept' function. */
+#define HAVE_ACCEPT 1
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#define HAVE_ARPA_INET_H 1
+
+/* Define to 1 if you have the `bind' function. */
+#define HAVE_BIND 1
+
+/* Define to 1 if you have the `chdir' function. */
+#define HAVE_CHDIR 1
+
+/* Define to 1 if you have the `chroot' function. */
+#define HAVE_CHROOT 1
+
+/* Define to 1 if you have the `chsize' function. */
+/* #undef HAVE_CHSIZE */
+
+/* struct cmsghdr needed for extended socket error support */
+#define HAVE_CMSGHDR 1
+
+/* Define to 1 if you have the `connect' function. */
+#define HAVE_CONNECT 1
+
+/* Define to 1 if your compiler supports GNU GCC-style variadic macros */
+#define HAVE_CPP_VARARG_MACRO_GCC 1
+
+/* Define to 1 if your compiler supports ISO C99 variadic macros */
+#define HAVE_CPP_VARARG_MACRO_ISO 1
+
+/* Define to 1 if you have the `ctime' function. */
+#define HAVE_CTIME 1
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the `daemon' function. */
+#define HAVE_DAEMON 1
+
+/* Define to 1 if you have the `dup' function. */
+#define HAVE_DUP 1
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Define to 1 if you have the `ENGINE_cleanup' function. */
+#define HAVE_ENGINE_CLEANUP 0
+
+/* Define to 1 if you have the `ENGINE_load_builtin_engines' function. */
+#define HAVE_ENGINE_LOAD_BUILTIN_ENGINES 0
+
+/* Define to 1 if you have the `ENGINE_register_all_complete' function. */
+#define HAVE_ENGINE_REGISTER_ALL_COMPLETE 0
+
+/* epoll_create function is defined */
+#define HAVE_EPOLL_CREATE 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the <err.h> header file. */
+#define HAVE_ERR_H 1
+
+/* Define to 1 if you have the `EVP_CIPHER_CTX_set_key_length' function. */
+#define HAVE_EVP_CIPHER_CTX_SET_KEY_LENGTH 1
+
+/* Define to 1 if you have the `execve' function. */
+#define HAVE_EXECVE 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `flock' function. */
+#define HAVE_FLOCK 1
+
+/* Define to 1 if you have the `fork' function. */
+#define HAVE_FORK 1
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `getgrnam' function. */
+#define HAVE_GETGRNAM 1
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the `getpass' function. */
+/* #define HAVE_GETPASS 1 */
+
+/* Define to 1 if you have the `getpeereid' function. */
+/* #undef HAVE_GETPEEREID */
+
+/* Define to 1 if you have the `getpeername' function. */
+#define HAVE_GETPEERNAME 1
+
+/* Define to 1 if you have the `getpid' function. */
+#define HAVE_GETPID 1
+
+/* Define to 1 if you have the `getpwnam' function. */
+#define HAVE_GETPWNAM 1
+
+/* Define to 1 if you have the `getsockname' function. */
+#define HAVE_GETSOCKNAME 1
+
+/* Define to 1 if you have the `getsockopt' function. */
+#define HAVE_GETSOCKOPT 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the <grp.h> header file. */
+#define HAVE_GRP_H 1
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#define HAVE_INET_NTOA 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* struct in_pktinfo needed for IP_PKTINFO support */
+#define HAVE_IN_PKTINFO 1
+
+#define HAVE_IPI_SPEC_DST 1
+
+/* struct iovec needed for IPv6 support */
+#define HAVE_IOVEC 1
+
+/* struct iphdr needed for IPv6 support */
+#define HAVE_IPHDR 1
+
+/* Define to 1 if you have the <linux/errqueue.h> header file. */
+#define HAVE_LINUX_ERRQUEUE_H 1
+
+/* Define to 1 if you have the <linux/if_tun.h> header file. */
+#define HAVE_LINUX_IF_TUN_H 1
+
+/* Define to 1 if you have the <linux/sockios.h> header file. */
+#define HAVE_LINUX_SOCKIOS_H 1
+
+/* Define to 1 if you have the <linux/types.h> header file. */
+#define HAVE_LINUX_TYPES_H 1
+
+/* Define to 1 if you have the `listen' function. */
+#define HAVE_LISTEN 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `mlockall' function. */
+/* #define HAVE_MLOCKALL 1*/
+
+/* struct msghdr needed for extended socket error support */
+#define HAVE_MSGHDR 1
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/if_ether.h> header file. */
+#define HAVE_NETINET_IF_ETHER_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the <netinet/in_systm.h> header file. */
+#define HAVE_NETINET_IN_SYSTM_H 1
+
+/* Define to 1 if you have the <netinet/ip.h> header file. */
+#define HAVE_NETINET_IP_H 1
+
+/* Define to 1 if you have the <netinet/tcp.h> header file. */
+#define HAVE_NETINET_TCP_H 1
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have the <net/if_tun.h> header file. */
+/* #undef HAVE_NET_IF_TUN_H */
+
+/* Define to 1 if you have the <net/tun/if_tun.h> header file. */
+/* #undef HAVE_NET_TUN_IF_TUN_H */
+
+/* Define to 1 if you have the `nice' function. */
+#define HAVE_NICE 1
+
+/* Define to 1 if you have the `openlog' function. */
+#define HAVE_OPENLOG 1
+
+/* Define to 1 if you have the <openssl/engine.h> header file. */
+#define HAVE_OPENSSL_ENGINE_H 0
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define if you have POSIX threads libraries and header files. */
+/* #undef HAVE_PTHREAD */
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#define HAVE_PWD_H 1
+
+/* Define to 1 if you have the `readv' function. */
+#define HAVE_READV 1
+
+/* Define to 1 if you have the `recv' function. */
+#define HAVE_RECV 1
+
+/* Define to 1 if you have the `recvfrom' function. */
+#define HAVE_RECVFROM 1
+
+/* Define to 1 if you have the `recvmsg' function. */
+#define HAVE_RECVMSG 1
+
+/* Define to 1 if you have the <resolv.h> header file. */
+#define HAVE_RESOLV_H 1
+
+/* Indicates if res_init is available */
+#define HAVE_RES_INIT 1
+
+/* Define to 1 if you have the `select' function. */
+#define HAVE_SELECT 1
+
+/* Define to 1 if you have the `send' function. */
+#define HAVE_SEND 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `sendto' function. */
+#define HAVE_SENDTO 1
+
+/* SELinux support */
+/* #undef HAVE_SETCON */
+
+/* Define to 1 if you have the `setgid' function. */
+#define HAVE_SETGID 1
+
+/* Define to 1 if you have the `setgroups' function. */
+#define HAVE_SETGROUPS 1
+
+/* Define to 1 if you have the `setsid' function. */
+#define HAVE_SETSID 1
+
+/* Define to 1 if you have the `setsockopt' function. */
+#define HAVE_SETSOCKOPT 1
+
+/* Define to 1 if you have the `setuid' function. */
+#define HAVE_SETUID 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `socket' function. */
+#define HAVE_SOCKET 1
+
+/* struct sock_extended_err needed for extended socket error support */
+#define HAVE_SOCK_EXTENDED_ERR 1
+
+/* Define to 1 if you have the `stat' function. */
+#define HAVE_STAT 1
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <stropts.h> header file. */
+#define HAVE_STROPTS_H 1
+
+/* Define to 1 if you have the `syslog' function. */
+ #define HAVE_SYSLOG 1
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#define HAVE_SYSLOG_H 1
+
+/* Define to 1 if you have the `system' function. */
+#define HAVE_SYSTEM 1
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+#define HAVE_SYS_EPOLL_H 1
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#define HAVE_SYS_POLL_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/sockio.h> header file. */
+/* #undef HAVE_SYS_SOCKIO_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#define HAVE_SYS_UN_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* struct tun_pi needed for IPv6 support */
+#define HAVE_TUN_PI 1
+
+/* Define to 1 if you have the `umask' function. */
+#define HAVE_UMASK 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unlink' function. */
+#define HAVE_UNLINK 1
+
+/* Define to 1 if you have the `vfork' function. */
+#define HAVE_VFORK 1
+
+/* Define to 1 if you have the <vfork.h> header file. */
+/* #undef HAVE_VFORK_H */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if `fork' works. */
+#define HAVE_WORKING_FORK 1
+
+/* Define to 1 if `vfork' works. */
+#define HAVE_WORKING_VFORK 1
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+
+/* Path to ifconfig tool */
+#define IFCONFIG_PATH "/system/xbin/ifconfig"
+
+/* Path to iproute tool */
+#define IPROUTE_PATH "ip"
+
+/* Use lzo/ directory prefix for LZO header files (for LZO 2.0) */
+#define LZO_HEADER_DIR 1
+
+/* LZO version number */
+#define LZO_VERSION_NUM "2"
+
+/* Name of package */
+#define PACKAGE "openvpn"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "openvpn-users@lists.sourceforge.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "OpenVPN"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "OpenVPN 2.5-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.5_master"
+
+/* Define to the necessary symbol if this constant uses a non-standard name on
+ your system. */
+/* #undef PTHREAD_CREATE_JOINABLE */
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Path to route tool */
+#define ROUTE_PATH "/system/xbin/route"
+
+/* The size of `unsigned int', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_INT 4
+
+/* The size of `unsigned long', as computed by sizeof. */
+#define SIZEOF_UNSIGNED_LONG 4
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Enable strict options check between peers */
+/* #undef STRICT_OPTIONS_CHECK */
+
+/* The TAP-Win32 id defined in tap-win32/SOURCES */
+#define TAP_ID "tap0901"
+
+/* The TAP-Win32 version number is defined in tap-win32/SOURCES */
+#define TAP_WIN32_MIN_MAJOR 9
+
+/* The TAP-Win32 version number is defined in tap-win32/SOURCES */
+#define TAP_WIN32_MIN_MINOR 1
+
+/* A string representing our target */
+#define TARGET_ALIAS TARGET_ABI
+
+/* Are we running on Mac OS X? */
+/* #undef TARGET_DARWIN */
+
+/* Are we running on DragonFlyBSD? */
+/* #undef TARGET_DRAGONFLY */
+
+/* Are we running on FreeBSD? */
+/* #undef TARGET_FREEBSD */
+
+/* Are we running on Android Linux? */
+/* TARGET_LINUX is not enable since the TARGET_XXX options mainly
+ control different tun/tap, ifconfig behaviour and Android VpnProvider
+ is very different from Linux */
+#define TARGET_ANDROID
+
+/* Are we running on Linux? */
+/* #define TARGET_LINUX 1 */
+
+/* Are we running NetBSD? */
+/* #undef TARGET_NETBSD */
+
+/* Are we running on OpenBSD? */
+/* #undef TARGET_OPENBSD */
+
+/* Are we running on Solaris? */
+/* #undef TARGET_SOLARIS */
+
+/* Are we running WIN32? */
+/* #undef TARGET_WIN32 */
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Win32 builtin */
+/* #undef UF */
+
+/* Use OpenSSL crypto library */
+#define USE_CRYPTO 1
+
+/* Use libdl for dynamic library loading */
+#define USE_LIBDL 1
+
+/* Use LoadLibrary to load DLLs on Windows */
+/* #undef USE_LOAD_LIBRARY */
+
+/* Use LZO compression library */
+#define ENABLE_LZO 1
+#define ENABLE_SNAPPY 1
+#define ENABLE_LZ4 1
+#define NEED_COMPAT_LZ4 1
+
+/* Enable PKCS11 capability */
+/* #undef USE_PKCS11 */
+
+/* Use pthread-based multithreading */
+/* #undef USE_PTHREAD */
+
+/* Use OpenSSL SSL library */
+#define ENABLE_SSL 1
+#define USE_SSL 1
+#define ENABLE_CRYPTO 1
+
+/* via android.mk */
+/*#define ENABLE_CRYPTO_OPENSSL 1*/
+/* #define ENABLE_CRYPTO_POLARSSL 1 */
+
+/* Use valgrind memory debugging library */
+/* #undef USE_VALGRIND */
+
+/* Version number of package */
+//#define VERSION "2.3.1"
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Some systems don't define in_addr_t */
+/* #undef in_addr_t */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+/* #undef inline */
+#endif
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+/* 16-bit unsigned type */
+/* #undef uint16_t */
+
+/* 32-bit unsigned type */
+/* #undef uint32_t */
+
+/* 8-bit unsigned type */
+/* #undef uint8_t */
+
+/* Define as `fork' if `vfork' does not work. */
+/* #undef vfork */
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+/* #undef volatile */
+
+// New version
+#define HAVE_INET_NTOP 1
+#define HAVE_INET_PTON 1
+#define HAVE_LZO_LZOUTIL_H 1
+#define HAVE_LZO_LZO1X_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_TIME_H 1
+// #define HAVE_CONFIG_VERSION_H 1
+#define PATH_SEPARATOR_STR "/"
+#define HAVE_SA_FAMILY_T 1
+
+
+// Workaround for bionc
+#define IPPROTO_IP IPPROTO_IP
+#define IPPROTO_TCP IPPROTO_TCP
+
+int res_init();
+
+#define HAVE_AEAD_CIPHER_MODES 1
+
+#define HAVE_EVP_MD_CTX_RESET 1
+#define HAVE_EVP_MD_CTX_FREE 1
+#define HAVE_EVP_MD_CTX_NEW 1
+#define HAVE_EVP_CIPHER_CTX_FREE 1
+#define HAVE_EVP_CIPHER_CTX_NEW 1
+#define HAVE_HMAC_CTX_RESET 1
+#define HAVE_HMAC_CTX_FREE 1
+#define HAVE_HMAC_CTX_NEW 1
+#define HAVE_SSL_CTX_GET_DEFAULT_PASSWD_CB_USERDATA 1
+#define HAVE_SSL_CTX_GET_DEFAULT_PASSWD_CB 1
+#define HAVE_X509_GET0_PUBKEY 1
+#define HAVE_X509_STORE_GET0_OBJECTS 1
+#define HAVE_X509_OBJECT_FREE 1
+#define HAVE_X509_OBJECT_GET_TYPE 1
+#define HAVE_EVP_PKEY_GET0_RSA 1
+#define HAVE_EVP_PKEY_ID 1
+#define HAVE_EVP_PKEY_GET0_DSA 1
+#define HAVE_RSA_SET_FLAGS 1
+#define HAVE_RSA_GET0_KEY 1
+#define HAVE_RSA_SET0_KEY 1
+#define HAVE_RSA_BITS 1
+#define HAVE_DSA_BITS 1
+#define HAVE_DSA_GET0_PQG 1
+#define HAVE_RSA_METH_NEW 1
+#define HAVE_RSA_METH_FREE 1
+#define HAVE_RSA_METH_SET_PUB_ENC 1
+#define HAVE_RSA_METH_SET_PUB_DEC 1
+#define HAVE_RSA_METH_SET_PRIV_DEC 1
+#define HAVE_RSA_METH_SET_PRIV_ENC 1
+#define HAVE_RSA_METH_SET_INIT 1
+#define HAVE_RSA_METH_SET_FINISH 1
+#define HAVE_RSA_METH_SET0_APP_DATA 1
+#define HAVE_EVP_PKEY_GET0_EC_KEY 1
+#define HAVE_EC_GROUP_ORDER_BITS 1
+#define HAVE_RSA_METH_GET0_APP_DATA 1
+
+#define ENABLE_OFB_CFB_MODE 1 \ No newline at end of file
diff --git a/main/src/main/cpp/openvpn3 b/main/src/main/cpp/openvpn3
new file mode 160000
+Subproject 902ddf9fcda63af73ba3861d0f1fc4a274e2807
diff --git a/main/jni/jniglue.c b/main/src/main/cpp/opvpnutil/jniglue.c
index bb5ec688..bb5ec688 100644
--- a/main/jni/jniglue.c
+++ b/main/src/main/cpp/opvpnutil/jniglue.c
diff --git a/main/jni/jniglue.h b/main/src/main/cpp/opvpnutil/jniglue.h
index 8f813b64..8f813b64 100644
--- a/main/jni/jniglue.h
+++ b/main/src/main/cpp/opvpnutil/jniglue.h
diff --git a/main/jni/scan_ifs.c b/main/src/main/cpp/opvpnutil/scan_ifs.c
index a26e2b36..a26e2b36 100644
--- a/main/jni/scan_ifs.c
+++ b/main/src/main/cpp/opvpnutil/scan_ifs.c
diff --git a/main/src/main/cpp/opvpnutil/sslspeed.c b/main/src/main/cpp/opvpnutil/sslspeed.c
new file mode 100644
index 00000000..0ce9ede2
--- /dev/null
+++ b/main/src/main/cpp/opvpnutil/sslspeed.c
@@ -0,0 +1,309 @@
+/*
+ * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the OpenSSL license (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+/* ====================================================================
+ * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
+ *
+ * Portions of the attached software ("Contribution") are developed by
+ * SUN MICROSYSTEMS, INC., and are contributed to the OpenSSL project.
+ *
+ * The Contribution is licensed pursuant to the OpenSSL open source
+ * license provided above.
+ *
+ * The ECDH and ECDSA speed test software is originally written by
+ * Sumit Gupta of Sun Microsystems Laboratories.
+ *
+ */
+
+// Modified by Arne Schwabe to give a simple openssl evp speed java api
+
+#include <jni.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <sys/ioctl.h>
+#include <linux/if.h>
+#include <android/log.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+
+#include "jniglue.h"
+#include <android/log.h>
+
+#include <openssl/crypto.h>
+#include <openssl/rand.h>
+#include <openssl/err.h>
+#include <openssl/evp.h>
+#include <openssl/objects.h>
+#include <openssl/async.h>
+
+
+/* This file just contains code thrown together until it works */
+
+
+#undef SECONDS
+#define SECONDS 3
+#define PRIME_SECONDS 10
+#define RSA_SECONDS 10
+#define DSA_SECONDS 10
+#define ECDSA_SECONDS 10
+#define ECDH_SECONDS 10
+
+
+typedef struct loopargs_st {
+ unsigned char *buf;
+ unsigned char *buf2;
+ unsigned char *buf_malloc;
+ unsigned char *buf2_malloc;
+ unsigned int siglen;
+ EVP_CIPHER_CTX *ctx;
+ HMAC_CTX *hctx;
+} loopargs_t;
+
+#undef BUFSIZE
+#define BUFSIZE (1024*16+1)
+#define MAX_MISALIGNMENT 63
+
+
+#define MAX_BLOCK_SIZE 128
+static unsigned char iv[2 * MAX_BLOCK_SIZE / 8];
+
+#define SIZE_NUM 6
+static const int lengths[SIZE_NUM] = {
+ 16, 64, 256, 1024, 8 * 1024, 16 * 1024
+};
+
+static int testnum;
+
+# define COND(unused_cond) (run && count<0x7fffffff)
+
+static volatile int run = 0;
+
+#ifdef SIGALRM
+# if defined(__STDC__) || defined(sgi) || defined(_AIX)
+# define SIGRETTYPE void
+# else
+# define SIGRETTYPE int
+# endif
+
+
+#define START 0
+#define STOP 1
+#define TM_START 0
+#define TM_STOP 1
+
+# include <sys/times.h>
+
+static int usertime = 1;
+
+double app_tminterval(int stop, int usertime)
+{
+ double ret = 0;
+ struct tms rus;
+ clock_t now = times(&rus);
+ static clock_t tmstart;
+
+ if (usertime)
+ now = rus.tms_utime;
+
+ if (stop == TM_START)
+ tmstart = now;
+ else {
+ long int tck = sysconf(_SC_CLK_TCK);
+ ret = (now - tmstart) / (double)tck;
+ }
+
+ return (ret);
+}
+
+
+
+
+static double Time_F(int s)
+{
+ double ret = app_tminterval(s, usertime);
+ if (s == STOP)
+ alarm(0);
+ return ret;
+}
+
+#endif
+
+
+static long save_count = 0;
+static int decrypt = 0;
+static int EVP_Update_loop(void *args)
+{
+ loopargs_t *tempargs = *(loopargs_t **)args;
+ unsigned char *buf = tempargs->buf;
+ EVP_CIPHER_CTX *ctx = tempargs->ctx;
+ int outl, count;
+
+ if (decrypt)
+ for (count = 0; COND(nb_iter); count++)
+ EVP_DecryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
+ else
+ for (count = 0; COND(nb_iter); count++)
+ EVP_EncryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
+ if (decrypt)
+ EVP_DecryptFinal_ex(ctx, buf, &outl);
+ else
+ EVP_EncryptFinal_ex(ctx, buf, &outl);
+ return count;
+}
+
+static const EVP_MD *evp_md = NULL;
+static int EVP_Digest_loop(void *args)
+{
+ loopargs_t *tempargs = *(loopargs_t **)args;
+ unsigned char *buf = tempargs->buf;
+ unsigned char md[EVP_MAX_MD_SIZE];
+ int count;
+
+ for (count = 0; COND(nb_iter); count++) {
+ if (!EVP_Digest(buf, lengths[testnum], md, NULL, evp_md, NULL))
+ return -1;
+ }
+ return count;
+}
+
+
+static int run_benchmark(int async_jobs,
+ int (*loop_function)(void *), loopargs_t *loopargs)
+{
+ int job_op_count = 0;
+ int total_op_count = 0;
+ int num_inprogress = 0;
+ int error = 0, i = 0, ret = 0;
+ OSSL_ASYNC_FD job_fd = 0;
+ size_t num_job_fds = 0;
+
+ run = 1;
+
+ if (async_jobs == 0) {
+ return loop_function((void *)&loopargs);
+ }
+ return 1234567;
+}
+
+
+static void* stop_run(void* arg)
+{
+ __android_log_write(ANDROID_LOG_DEBUG,"openvpn", "stop run thread started");
+ sleep(3);
+ run=0;
+ __android_log_write(ANDROID_LOG_DEBUG,"openvpn", "stop run thread stopped");
+ return NULL;
+}
+
+ jdoubleArray Java_de_blinkt_openvpn_core_NativeUtils_getOpenSSLSpeed(JNIEnv* env, jclass thiz, jstring algorithm, jint testnumber)
+{
+ static const unsigned char key16[16] = {
+ 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0,
+ 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12
+ };
+ const EVP_CIPHER *evp_cipher = NULL;
+
+ const char* alg = (*env)->GetStringUTFChars( env, algorithm , NULL ) ;
+
+ evp_cipher = EVP_get_cipherbyname(alg);
+ if (evp_cipher == NULL)
+ evp_md = EVP_get_digestbyname(alg);
+ if (evp_cipher == NULL && evp_md == NULL) {
+ // BIO_printf(bio_err, "%s: %s is an unknown cipher or digest\n", prog, opt_arg());
+ //jniThrowException(env, "java/security/NoSuchAlgorithmException", "Algorithm not found");
+ return NULL;
+ }
+
+
+ const char* name;
+
+ loopargs_t *loopargs = NULL;
+ int loopargs_len = 1;
+ int async_jobs=0;
+ loopargs = malloc(loopargs_len * sizeof(loopargs_t));
+ memset(loopargs, 0, loopargs_len * sizeof(loopargs_t));
+
+
+ jdoubleArray ret = (*env)->NewDoubleArray(env, 3);
+
+ if (testnum < 0 || testnum >= SIZE_NUM)
+ return NULL;
+
+ testnum = testnumber;
+
+
+ for (int i = 0; i < loopargs_len; i++) {
+ int misalign=0;
+ loopargs[i].buf_malloc = malloc((int)BUFSIZE + MAX_MISALIGNMENT + 1);
+ loopargs[i].buf2_malloc = malloc((int)BUFSIZE + MAX_MISALIGNMENT + 1);
+ /* Align the start of buffers on a 64 byte boundary */
+ loopargs[i].buf = loopargs[i].buf_malloc + misalign;
+ loopargs[i].buf2 = loopargs[i].buf2_malloc + misalign;
+ }
+
+
+ int count;
+ float d;
+ if (evp_cipher) {
+ name = OBJ_nid2ln(EVP_CIPHER_nid(evp_cipher));
+ /*
+ * -O3 -fschedule-insns messes up an optimization here!
+ * names[D_EVP] somehow becomes NULL
+ */
+
+
+ for (int k = 0; k < loopargs_len; k++) {
+ loopargs[k].ctx = EVP_CIPHER_CTX_new();
+ if (decrypt)
+ EVP_DecryptInit_ex(loopargs[k].ctx, evp_cipher, NULL, key16, iv);
+ else
+ EVP_EncryptInit_ex(loopargs[k].ctx, evp_cipher, NULL, key16, iv);
+ EVP_CIPHER_CTX_set_padding(loopargs[k].ctx, 0);
+ }
+
+ Time_F(START);
+ pthread_t timer_thread;
+
+ if (pthread_create(&timer_thread, NULL, stop_run, NULL))
+ return NULL;
+
+ count = run_benchmark(async_jobs, EVP_Update_loop, loopargs);
+ d = Time_F(STOP);
+ for (int k = 0; k < loopargs_len; k++) {
+ EVP_CIPHER_CTX_free(loopargs[k].ctx);
+ }
+ }
+ if (evp_md) {
+ name = OBJ_nid2ln(EVP_MD_type(evp_md));
+ // print_message(names[D_EVP], save_count, lengths[testnum]);
+
+ pthread_t timer_thread;
+ if (pthread_create(&timer_thread, NULL, stop_run, NULL))
+ return NULL;
+
+ Time_F(START);
+ count = run_benchmark(async_jobs, EVP_Digest_loop, loopargs);
+ d = Time_F(STOP);
+ }
+
+ // Save results in hacky way
+ double results[] = {(double) lengths[testnum], (double) count, d};
+
+
+ (*env)->SetDoubleArrayRegion(env, ret, 0, 3, results);
+ // print_result(D_EVP, testnum, count, d);
+
+
+ return ret;
+}
diff --git a/main/src/main/cpp/tools.cmake b/main/src/main/cpp/tools.cmake
new file mode 100644
index 00000000..2bd25b4b
--- /dev/null
+++ b/main/src/main/cpp/tools.cmake
@@ -0,0 +1,7 @@
+FUNCTION(PREPEND var prefix)
+ SET(listVar "")
+ FOREACH(f ${ARGN})
+ LIST(APPEND listVar "${prefix}/${f}")
+ ENDFOREACH(f)
+ SET(${var} "${listVar}" PARENT_SCOPE)
+ENDFUNCTION(PREPEND)
diff --git a/main/src/main/java/android/support/v4n/view/ViewPager.java b/main/src/main/java/android/support/v4n/view/ViewPager.java
index 4e44bd99..53daa70d 100644
--- a/main/src/main/java/android/support/v4n/view/ViewPager.java
+++ b/main/src/main/java/android/support/v4n/view/ViewPager.java
@@ -33,7 +33,6 @@ import android.support.annotation.DrawableRes;
import android.support.v4.os.ParcelableCompat;
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.KeyEventCompat;
import android.support.v4.view.MotionEventCompat;
import android.support.v4.view.VelocityTrackerCompat;
import android.support.v4.view.ViewCompat;
@@ -2508,17 +2507,6 @@ public class ViewPager extends ViewGroup {
case KeyEvent.KEYCODE_DPAD_RIGHT:
handled = arrowScroll(FOCUS_RIGHT);
break;
- case KeyEvent.KEYCODE_TAB:
- if (Build.VERSION.SDK_INT >= 11) {
- // The focus finder had a bug handling FOCUS_FORWARD and FOCUS_BACKWARD
- // before Android 3.0. Ignore the tab key on those devices.
- if (KeyEventCompat.hasNoModifiers(event)) {
- handled = arrowScroll(FOCUS_FORWARD);
- } else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
- handled = arrowScroll(FOCUS_BACKWARD);
- }
- }
- break;
}
}
return handled;
diff --git a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
index fc712957..4fff3071 100644
--- a/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/LaunchVPN.java
@@ -5,45 +5,27 @@
package de.blinkt.openvpn;
-import se.leap.bitmaskclient.R;
-
-import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
-import android.content.ComponentName;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
-import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.net.VpnService;
import android.os.Build;
import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.preference.PreferenceManager;
-import android.text.InputType;
-import android.text.TextUtils;
-import android.text.method.PasswordTransformationMethod;
-import android.view.View;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.EditText;
import java.io.IOException;
import de.blinkt.openvpn.activities.LogWindow;
import de.blinkt.openvpn.core.ConnectionStatus;
-import de.blinkt.openvpn.core.IServiceStatus;
-import de.blinkt.openvpn.core.OpenVPNStatusService;
-import de.blinkt.openvpn.core.PasswordCache;
import de.blinkt.openvpn.core.Preferences;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VPNLaunchHelper;
import de.blinkt.openvpn.core.VpnStatus;
+import se.leap.bitmaskclient.R;
/**
* This Activity actually handles two stages of a launcher shortcut's life cycle.
@@ -132,7 +114,7 @@ public class LaunchVPN extends Activity {
}
@Override
- protected void onActivityResult (int requestCode, int resultCode, Intent data) {
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==START_VPN_PROFILE) {
diff --git a/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java b/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java
index 89b5e8d2..ebfab5b2 100644
--- a/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java
+++ b/main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java
@@ -16,6 +16,8 @@ import de.blinkt.openvpn.core.ProfileManager;
public class OnBootReceiver extends BroadcastReceiver {
+
+
// Debug: am broadcast -a android.intent.action.BOOT_COMPLETED
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
index 7af7b519..d5f07843 100644
--- a/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
+++ b/main/src/main/java/de/blinkt/openvpn/VpnProfile.java
@@ -19,6 +19,7 @@ import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Base64;
+import de.blinkt.openvpn.core.*;
import org.spongycastle.util.io.pem.PemObject;
import org.spongycastle.util.io.pem.PemWriter;
@@ -31,9 +32,7 @@ import java.io.Serializable;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
+import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
@@ -48,14 +47,6 @@ import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
-import de.blinkt.openvpn.core.Connection;
-import de.blinkt.openvpn.core.NativeUtils;
-import de.blinkt.openvpn.core.OpenVPNService;
-import de.blinkt.openvpn.core.PasswordCache;
-import de.blinkt.openvpn.core.VPNLaunchHelper;
-import de.blinkt.openvpn.core.VpnStatus;
-import de.blinkt.openvpn.core.X509Utils;
-
public class VpnProfile implements Serializable, Cloneable {
// Note that this class cannot be moved to core where it belongs since
// the profile loading depends on it being here
@@ -180,7 +171,6 @@ public class VpnProfile implements Serializable, Cloneable {
public boolean mUseUdp = true;
-
public VpnProfile(String name) {
mUuid = UUID.randomUUID();
mName = name;
@@ -280,30 +270,42 @@ public class VpnProfile implements Serializable, Cloneable {
}
+
+ public static boolean doUseOpenVPN3(Context c) {
+ SharedPreferences prefs = Preferences.getDefaultSharedPreferences(c);
+ boolean useOpenVPN3 = prefs.getBoolean("ovpn3", false);
+ if (!BuildConfig.openvpn3)
+ useOpenVPN3 = false;
+ return useOpenVPN3;
+ }
+
public String getConfigFile(Context context, boolean configForOvpn3) {
File cacheDir = context.getCacheDir();
String cfg = "";
- // Enable management interface
- cfg += "# Enables connection to GUI\n";
- cfg += "management ";
-
- cfg += cacheDir.getAbsolutePath() + "/" + "mgmtsocket";
- cfg += " unix\n";
- cfg += "management-client\n";
- // Not needed, see updated man page in 2.3
- //cfg += "management-signal\n";
- cfg += "management-query-passwords\n";
- cfg += "management-hold\n\n";
-
if (!configForOvpn3) {
+ // Enable management interface
+ cfg += "# Config for OpenVPN 2.x\n";
+ cfg += "# Enables connection to GUI\n";
+ cfg += "management ";
+
+ cfg += cacheDir.getAbsolutePath() + "/" + "mgmtsocket";
+ cfg += " unix\n";
+ cfg += "management-client\n";
+ // Not needed, see updated man page in 2.3
+ //cfg += "management-signal\n";
+ cfg += "management-query-passwords\n";
+ cfg += "management-hold\n\n";
+
cfg += String.format("setenv IV_GUI_VER %s \n", openVpnEscape(getVersionEnvString(context)));
- String versionString = String.format(Locale.US, "%d %s %s %s %s %s", Build.VERSION.SDK_INT, Build.VERSION.RELEASE,
- NativeUtils.getNativeAPI(), Build.BRAND, Build.BOARD, Build.MODEL);
+ String versionString = getPlatformVersionEnvString();
cfg += String.format("setenv IV_PLAT_VER %s\n", openVpnEscape(versionString));
+ } else {
+ cfg += "# Config for OpeNVPN 3 C++\n";
}
+
cfg += "machine-readable-output\n";
cfg += "allow-recursive-routing\n";
@@ -416,8 +418,7 @@ public class VpnProfile implements Serializable, Cloneable {
cfg += insertFileData("ca", mCaFilename);
}
- if (isUserPWAuth())
- {
+ if (isUserPWAuth()) {
if (mAuthenticationType == AUTH_RETRY_NOINTERACT)
cfg += "auth-retry nointeract";
}
@@ -454,7 +455,7 @@ public class VpnProfile implements Serializable, Cloneable {
if (!TextUtils.isEmpty(mIPv6Address)) {
// Use our own ip as gateway since we ignore it anyway
String fakegw = mIPv6Address.split("/", 2)[0];
- cfg += "ifconfig-ipv6 " + mIPv6Address + " " + fakegw +"\n";
+ cfg += "ifconfig-ipv6 " + mIPv6Address + " " + fakegw + "\n";
}
}
@@ -488,16 +489,12 @@ public class VpnProfile implements Serializable, Cloneable {
if (mOverrideDNS || !mUsePull) {
if (!TextUtils.isEmpty(mDNS1)) {
- if (mDNS1.contains(":"))
- cfg += "dhcp-option DNS6 " + mDNS1 + "\n";
- else
- cfg += "dhcp-option DNS " + mDNS1 + "\n";
- } if (!TextUtils.isEmpty(mDNS2)) {
- if (mDNS2.contains(":"))
- cfg += "dhcp-option DNS6 " + mDNS2 + "\n";
- else
- cfg += "dhcp-option DNS " + mDNS2 + "\n";
- } if (!TextUtils.isEmpty(mSearchDomain))
+ cfg += "dhcp-option DNS " + mDNS1 + "\n";
+ }
+ if (!TextUtils.isEmpty(mDNS2)) {
+ cfg += "dhcp-option DNS " + mDNS2 + "\n";
+ }
+ if (!TextUtils.isEmpty(mSearchDomain))
cfg += "dhcp-option DOMAIN " + mSearchDomain + "\n";
}
@@ -509,9 +506,8 @@ public class VpnProfile implements Serializable, Cloneable {
cfg += "mssfix\n";
}
- if (mTunMtu >= 48 && mTunMtu != 1500)
- {
- cfg+= String.format(Locale.US, "tun-mtu %d\n", mTunMtu);
+ if (mTunMtu >= 48 && mTunMtu != 1500) {
+ cfg += String.format(Locale.US, "tun-mtu %d\n", mTunMtu);
}
if (mNobind)
@@ -578,7 +574,7 @@ public class VpnProfile implements Serializable, Cloneable {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean usesystemproxy = prefs.getBoolean("usesystemproxy", true);
- if (usesystemproxy && !mIsOpenVPN22) {
+ if (usesystemproxy && !mIsOpenVPN22 && !configForOvpn3) {
cfg += "# Use system proxy setting\n";
cfg += "management-query-proxy\n";
}
@@ -607,6 +603,11 @@ public class VpnProfile implements Serializable, Cloneable {
return cfg;
}
+ public String getPlatformVersionEnvString() {
+ return String.format(Locale.US, "%d %s %s %s %s %s", Build.VERSION.SDK_INT, Build.VERSION.RELEASE,
+ NativeUtils.getNativeAPI(), Build.BRAND, Build.BOARD, Build.MODEL);
+ }
+
public String getVersionEnvString(Context c) {
String version = "unknown";
try {
@@ -905,12 +906,12 @@ public class VpnProfile implements Serializable, Cloneable {
if (mAuthenticationType == TYPE_KEYSTORE || mAuthenticationType == TYPE_USERPASS_KEYSTORE) {
if (mAlias == null)
return R.string.no_keystore_cert_selected;
- } else if (mAuthenticationType == TYPE_CERTIFICATES || mAuthenticationType == TYPE_USERPASS_CERTIFICATES){
+ } else if (mAuthenticationType == TYPE_CERTIFICATES || mAuthenticationType == TYPE_USERPASS_CERTIFICATES) {
if (TextUtils.isEmpty(mCaFilename))
return R.string.no_ca_cert_selected;
}
- if (mCheckRemoteCN && mX509AuthType==X509_VERIFY_TLSREMOTE)
+ if (mCheckRemoteCN && mX509AuthType == X509_VERIFY_TLSREMOTE)
return R.string.deprecated_tls_remote;
if (!mUsePull || mAuthenticationType == TYPE_STATICKEYS) {
@@ -946,6 +947,15 @@ public class VpnProfile implements Serializable, Cloneable {
if (noRemoteEnabled)
return R.string.remote_no_server_selected;
+ if (doUseOpenVPN3(context)) {
+ if (mAuthenticationType == TYPE_STATICKEYS) {
+ return R.string.openvpn3_nostatickeys;
+ }
+ if (mAuthenticationType == TYPE_PKCS12 || mAuthenticationType == TYPE_USERPASS_PKCS12) {
+ return R.string.openvpn3_pkcs12;
+ }
+ }
+
// Everything okay
return R.string.no_error_found;
@@ -1079,19 +1089,33 @@ public class VpnProfile implements Serializable, Cloneable {
try {
+ @SuppressLint("GetInstance")
+ String keyalgorithm = privkey.getAlgorithm();
+
+ byte[] signed_bytes;
+ if (keyalgorithm.equals("EC")) {
+ Signature signer = Signature.getInstance("NONEwithECDSA");
+
+ signer.initSign(privkey);
+ signer.update(data);
+ signed_bytes = signer.sign();
+
+ } else {
/* ECB is perfectly fine in this special case, since we are using it for
the public/private part in the TLS exchange
*/
- @SuppressLint("GetInstance")
- Cipher rsaSigner = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
+ Cipher signer;
+ signer = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
+
- rsaSigner.init(Cipher.ENCRYPT_MODE, privkey);
+ signer.init(Cipher.ENCRYPT_MODE, privkey);
- byte[] signed_bytes = rsaSigner.doFinal(data);
+ signed_bytes = signer.doFinal(data);
+ }
return Base64.encodeToString(signed_bytes, Base64.NO_WRAP);
} catch (NoSuchAlgorithmException | InvalidKeyException | IllegalBlockSizeException
- | BadPaddingException | NoSuchPaddingException e) {
+ | BadPaddingException | NoSuchPaddingException | SignatureException e) {
VpnStatus.logError(R.string.error_rsa_sign, e.getClass().toString(), e.getLocalizedMessage());
return null;
}
diff --git a/main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java b/main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java
new file mode 100644
index 00000000..4720dd60
--- /dev/null
+++ b/main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2012-2017 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.Context;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.app.Activity;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.util.Pair;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.Locale;
+import java.util.Vector;
+
+import de.blinkt.openvpn.R;
+import de.blinkt.openvpn.core.NativeUtils;
+import de.blinkt.openvpn.core.OpenVPNService;
+
+public class OpenSSLSpeed extends Activity {
+
+ private static SpeeedTest runTestAlgorithms;
+ private EditText mCipher;
+ private SpeedArrayAdapter mAdapter;
+ private ListView mListView;
+
+
+ static class SpeedArrayAdapter extends ArrayAdapter<SpeedResult> {
+
+ private final Context mContext;
+ private final LayoutInflater mInflater;
+
+ public SpeedArrayAdapter(@NonNull Context context) {
+ super(context, 0);
+ mContext = context;
+ mInflater = LayoutInflater.from(context);
+
+ }
+
+ class ViewHolder {
+ TextView ciphername;
+ TextView blocksize;
+ TextView blocksInTime;
+ TextView speed;
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View view, @NonNull ViewGroup parent) {
+ SpeedResult res = getItem(position);
+ if (view == null) {
+ view = mInflater.inflate(R.layout.speedviewitem, parent, false);
+ ViewHolder holder = new ViewHolder();
+ holder.ciphername = view.findViewById(R.id.ciphername);
+ holder.speed = view.findViewById(R.id.speed);
+ holder.blocksize = view.findViewById(R.id.blocksize);
+ holder.blocksInTime = view.findViewById(R.id.blocksintime);
+ view.setTag(holder);
+ }
+
+ ViewHolder holder = (ViewHolder) view.getTag();
+
+ double total = res.count * res.length;
+ String size = OpenVPNService.humanReadableByteCount((long) res.length, false, mContext.getResources());
+
+ holder.blocksize.setText(size);
+ holder.ciphername.setText(res.algorithm);
+
+ if (res.failed) {
+ holder.blocksInTime.setText(R.string.openssl_error);
+ holder.speed.setText("-");
+ } else if (res.running) {
+ holder.blocksInTime.setText(R.string.running_test);
+ holder.speed.setText("-");
+ } else {
+ String totalBytes = OpenVPNService.humanReadableByteCount((long) total, false, mContext.getResources());
+ // TODO: Fix localisation here
+ String blockPerSec = OpenVPNService.humanReadableByteCount((long) (total / res.time), false, mContext.getResources()) + "/s";
+ holder.speed.setText(blockPerSec);
+ holder.blocksInTime.setText(String.format(Locale.ENGLISH, "%d blocks (%s) in %2.1fs", (long) res.count, totalBytes, res.time));
+ }
+
+ return view;
+
+ }
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.openssl_speed);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+
+ findViewById(R.id.testSpecific).setOnClickListener((view) -> {
+ runAlgorithms(mCipher.getText().toString());
+ });
+ mCipher = (EditText) findViewById(R.id.ciphername);
+
+ mListView = findViewById(R.id.results);
+
+ mAdapter = new SpeedArrayAdapter(this);
+ mListView.setAdapter(mAdapter);
+
+ }
+
+ private void runAlgorithms(String algorithms) {
+ if (runTestAlgorithms != null)
+ runTestAlgorithms.cancel(true);
+ runTestAlgorithms = new SpeeedTest();
+ runTestAlgorithms.execute(algorithms.split(" "));
+ }
+
+
+ static class SpeedResult {
+ String algorithm;
+ boolean failed = false;
+
+ double count;
+ double time;
+ int length;
+ public boolean running=true;
+
+ SpeedResult(String algorithm) {
+ this.algorithm = algorithm;
+ }
+ }
+
+
+ private class SpeeedTest extends AsyncTask<String, SpeedResult, SpeedResult[]> {
+
+
+ private boolean mCancel = false;
+
+ @Override
+ protected SpeedResult[] doInBackground(String... strings) {
+ Vector<SpeedResult> mResult = new Vector<>();
+
+ for (String algorithm : strings) {
+
+ // Skip 16b and 16k as they are not relevevant for VPN
+ for (int i = 1; i < NativeUtils.openSSLlengths.length -1 && !mCancel; i++) {
+ SpeedResult result = new SpeedResult(algorithm);
+ result.length = NativeUtils.openSSLlengths[i];
+ mResult.add(result);
+ publishProgress(result);
+ double[] resi = NativeUtils.getOpenSSLSpeed(algorithm, i);
+ if (resi == null) {
+ result.failed = true;
+ } else {
+ result.count = resi[1];
+ result.time = resi[2];
+ }
+ result.running = false;
+ publishProgress(result);
+ }
+ }
+
+ return mResult.toArray(new SpeedResult[mResult.size()]);
+
+ }
+
+ @Override
+ protected void onProgressUpdate(SpeedResult... values) {
+ for (SpeedResult r : values) {
+ if (r.running)
+ mAdapter.add(r);
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ protected void onPostExecute(SpeedResult[] speedResult) {
+
+ }
+
+ @Override
+ protected void onCancelled(SpeedResult[] speedResults) {
+ mCancel = true;
+ }
+ }
+
+
+}
diff --git a/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java b/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
index 4124b7d4..2355f83b 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
@@ -21,6 +21,7 @@ import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnShowListener;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.util.Log;
@@ -29,97 +30,113 @@ import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
+
import de.blinkt.openvpn.R;
public class ConfirmDialog extends Activity implements
-CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
- private static final String TAG = "OpenVPNVpnConfirm";
-
- private String mPackage;
-
- private Button mButton;
-
- private AlertDialog mAlert;
-
- @Override
- protected void onResume() {
- super.onResume();
- try {
- mPackage = getCallingPackage();
- if (mPackage==null) {
- finish();
- return;
- }
-
-
- PackageManager pm = getPackageManager();
- ApplicationInfo app = pm.getApplicationInfo(mPackage, 0);
-
- View view = View.inflate(this, R.layout.api_confirm, null);
- ((ImageView) view.findViewById(R.id.icon)).setImageDrawable(app.loadIcon(pm));
- ((TextView) view.findViewById(R.id.prompt)).setText(
- getString(R.string.prompt, app.loadLabel(pm), getString(R.string.app)));
- ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
-
-
- Builder builder = new AlertDialog.Builder(this);
-
- builder.setView(view);
-
- builder.setIconAttribute(android.R.attr.alertDialogIcon);
- builder.setTitle(android.R.string.dialog_alert_title);
- builder.setPositiveButton(android.R.string.ok,this);
- builder.setNegativeButton(android.R.string.cancel,this);
-
- mAlert = builder.create();
- mAlert.setCanceledOnTouchOutside(false);
-
- mAlert.setOnShowListener (new OnShowListener() {
- @Override
- public void onShow(DialogInterface dialog) {
- mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
- mButton.setEnabled(false);
-
- }
- });
-
- //setCloseOnTouchOutside(false);
-
- mAlert.show();
-
- } catch (Exception e) {
- Log.e(TAG, "onResume", e);
- finish();
- }
- }
-
- @Override
- public void onBackPressed() {
- setResult(RESULT_CANCELED);
- finish();
- }
-
- @Override
- public void onCheckedChanged(CompoundButton button, boolean checked) {
- mButton.setEnabled(checked);
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- if (which == DialogInterface.BUTTON_POSITIVE) {
- ExternalAppDatabase extapps = new ExternalAppDatabase(this);
- extapps.addApp(mPackage);
- setResult(RESULT_OK);
- finish();
- }
-
- if (which == DialogInterface.BUTTON_NEGATIVE) {
- setResult(RESULT_CANCELED);
- finish();
- }
- }
+ CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
+ private static final String TAG = "OpenVPNVpnConfirm";
+
+ public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
+
+ public static final String ANONYMOUS_PACKAGE = "de.blinkt.openvpn.ANYPACKAGE";
+
+ private String mPackage;
+
+ private Button mButton;
+
+ private AlertDialog mAlert;
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ Intent intent = getIntent();
+ if (intent.getStringExtra(EXTRA_PACKAGE_NAME) != null) {
+ mPackage = intent.getStringExtra(EXTRA_PACKAGE_NAME);
+ } else {
+ mPackage = getCallingPackage();
+ if (mPackage == null) {
+ finish();
+ return;
+ }
+ }
+
+ try {
+ View view = View.inflate(this, R.layout.api_confirm, null);
+ CharSequence appString;
+ if (mPackage.equals(ANONYMOUS_PACKAGE)) {
+ appString = getString(R.string.all_app_prompt, getString(R.string.app));
+ } else {
+ PackageManager pm = getPackageManager();
+ ApplicationInfo app = pm.getApplicationInfo(mPackage, 0);
+ appString = getString(R.string.prompt, app.loadLabel(pm) , getString(R.string.app));
+ ((ImageView) view.findViewById(R.id.icon)).setImageDrawable(app.loadIcon(pm));
+ }
+
+
+ ((TextView) view.findViewById(R.id.prompt)).setText(appString);
+ ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
+
+
+ Builder builder = new AlertDialog.Builder(this);
+
+ builder.setView(view);
+
+ builder.setIconAttribute(android.R.attr.alertDialogIcon);
+ builder.setTitle(android.R.string.dialog_alert_title);
+ builder.setPositiveButton(android.R.string.ok, this);
+ builder.setNegativeButton(android.R.string.cancel, this);
+
+ mAlert = builder.create();
+ mAlert.setCanceledOnTouchOutside(false);
+
+ mAlert.setOnShowListener(new OnShowListener() {
+ @Override
+ public void onShow(DialogInterface dialog) {
+ mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
+ mButton.setEnabled(false);
+
+ }
+ });
+
+ //setCloseOnTouchOutside(false);
+
+ mAlert.show();
+
+ } catch (Exception e) {
+ Log.e(TAG, "onResume", e);
+ finish();
+ }
+ }
+
+ @Override
+ public void onBackPressed() {
+ setResult(RESULT_CANCELED);
+ finish();
+ }
+
+ @Override
+ public void onCheckedChanged(CompoundButton button, boolean checked) {
+ mButton.setEnabled(checked);
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ ExternalAppDatabase extapps = new ExternalAppDatabase(this);
+ extapps.addApp(mPackage);
+ setResult(RESULT_OK);
+ finish();
+ }
+
+ if (which == DialogInterface.BUTTON_NEGATIVE) {
+ setResult(RESULT_CANCELED);
+ finish();
+ }
+ }
}
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 967d7728..e87b4c3a 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java
@@ -5,9 +5,14 @@
package de.blinkt.openvpn.api;
+import android.app.Activity;
import android.content.Context;
+import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Binder;
import java.util.HashSet;
import java.util.Set;
@@ -64,4 +69,40 @@ public class ExternalAppDatabase {
saveExtAppList(allowedapps);
}
+
+ public String checkOpenVPNPermission(PackageManager pm) throws SecurityRemoteException {
+
+ for (String appPackage : getExtAppList()) {
+ ApplicationInfo app;
+ try {
+ app = pm.getApplicationInfo(appPackage, 0);
+ if (Binder.getCallingUid() == app.uid) {
+ return appPackage;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ // App not found. Remove it from the list
+ removeApp(appPackage);
+ }
+
+ }
+ throw new SecurityException("Unauthorized OpenVPN API Caller");
+ }
+
+
+ public boolean checkRemoteActionPermission(Activity a) {
+
+ String callingPackage = a.getCallingPackage();
+
+ if (callingPackage == null)
+ callingPackage = ConfirmDialog.ANONYMOUS_PACKAGE;
+
+ if (isAllowed(callingPackage)) {
+ return true;
+ } else {
+ Intent confirmDialog = new Intent(a, ConfirmDialog.class);
+ confirmDialog.putExtra(ConfirmDialog.EXTRA_PACKAGE_NAME, callingPackage);
+ a.startActivity(confirmDialog);
+ return false;
+ }
+ }
}
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 6b549ed1..e5c50a6c 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
@@ -111,28 +111,9 @@ public class ExternalOpenVPNService extends Service implements StateListener {
private final IOpenVPNAPIService.Stub mBinder = new IOpenVPNAPIService.Stub() {
- private String checkOpenVPNPermission() throws SecurityRemoteException {
- PackageManager pm = getPackageManager();
-
- for (String appPackage : mExtAppDb.getExtAppList()) {
- ApplicationInfo app;
- try {
- app = pm.getApplicationInfo(appPackage, 0);
- if (Binder.getCallingUid() == app.uid) {
- return appPackage;
- }
- } catch (NameNotFoundException e) {
- // App not found. Remove it from the list
- mExtAppDb.removeApp(appPackage);
- }
-
- }
- throw new SecurityException("Unauthorized OpenVPN API Caller");
- }
-
@Override
public List<APIVpnProfile> getProfiles() throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
ProfileManager pm = ProfileManager.getInstance(getBaseContext());
@@ -170,7 +151,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public void startProfile(String profileUUID) throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
VpnProfile vp = ProfileManager.get(getBaseContext(), profileUUID);
if (vp.checkProfile(getApplicationContext()) != R.string.no_error_found)
@@ -180,7 +161,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
}
public void startVPN(String inlineConfig) throws RemoteException {
- String callingApp = checkOpenVPNPermission();
+ String callingApp = mExtAppDb.checkOpenVPNPermission(getPackageManager());
ConfigParser cp = new ConfigParser();
try {
@@ -216,7 +197,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public APIVpnProfile addNewVPNProfile(String name, boolean userEditable, String config) throws RemoteException {
- String callingPackage = checkOpenVPNPermission();
+ String callingPackage = mExtAppDb.checkOpenVPNPermission(getPackageManager());
ConfigParser cp = new ConfigParser();
try {
@@ -241,7 +222,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public void removeProfile(String profileUUID) throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
ProfileManager pm = ProfileManager.getInstance(getBaseContext());
VpnProfile vp = ProfileManager.get(getBaseContext(), profileUUID);
pm.removeProfile(ExternalOpenVPNService.this, vp);
@@ -249,7 +230,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public boolean protectSocket(ParcelFileDescriptor pfd) throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
try {
boolean success= mService.protect(pfd.getFd());
pfd.close();
@@ -272,7 +253,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public Intent prepareVPNService() throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
if (VpnService.prepare(ExternalOpenVPNService.this) == null)
return null;
@@ -284,7 +265,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public void registerStatusCallback(IOpenVPNStatusCallback cb)
throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
if (cb != null) {
cb.newStatus(mMostRecentState.vpnUUID, mMostRecentState.state,
@@ -298,7 +279,7 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public void unregisterStatusCallback(IOpenVPNStatusCallback cb)
throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
if (cb != null)
mCallbacks.unregister(cb);
@@ -306,21 +287,21 @@ public class ExternalOpenVPNService extends Service implements StateListener {
@Override
public void disconnect() throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
if (mService != null)
mService.stopVPN(false);
}
@Override
public void pause() throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
if (mService != null)
mService.userPause(true);
}
@Override
public void resume() throws RemoteException {
- checkOpenVPNPermission();
+ mExtAppDb.checkOpenVPNPermission(getPackageManager());
if (mService != null)
mService.userPause(false);
diff --git a/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java b/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java
new file mode 100644
index 00000000..5206d281
--- /dev/null
+++ b/main/src/main/java/de/blinkt/openvpn/api/RemoteAction.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2012-2017 Arne Schwabe
+ * Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ */
+
+package de.blinkt.openvpn.api;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import de.blinkt.openvpn.core.IOpenVPNServiceInternal;
+import de.blinkt.openvpn.core.OpenVPNService;
+
+public class RemoteAction extends Activity {
+
+ private ExternalAppDatabase mExtAppDb;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mExtAppDb = new ExternalAppDatabase(this);
+ }
+
+ private ServiceConnection mConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName className,
+ IBinder service) {
+
+ IOpenVPNServiceInternal myservice = IOpenVPNServiceInternal.Stub.asInterface(service);
+ try {
+ myservice.stopVPN(false);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName arg0) {
+ //mService = null;
+ }
+
+ };
+
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ if (mExtAppDb.checkRemoteActionPermission(this))
+ performAction();
+
+ finish();
+
+ }
+
+ private void performAction() {
+ Intent intent = new Intent(this, OpenVPNService.class);
+ intent.setAction(OpenVPNService.START_SERVICE);
+
+ ComponentName component = getIntent().getComponent();
+ if (component.getShortClassName().equals(".api.DisconnectVPN")) {
+ boolean mDoDisconnect = true;
+ }
+ getApplicationContext().bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
+
+
+ }
+}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
index 74afd61e..9889754d 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
@@ -261,6 +261,7 @@ public class ConfigParser {
"group",
"allow-recursive-routing",
"ip-win32",
+ "ifconfig-nowarn",
"management-hold",
"management",
"management-client",
@@ -275,6 +276,7 @@ public class ConfigParser {
"management-client-user",
"management-client-group",
"pause-exit",
+ "preresolve",
"plugin",
"machine-readable-output",
"persist-key",
@@ -300,7 +302,8 @@ public class ConfigParser {
{"setenv", "IV_GUI_VER"},
{"setenv", "IV_OPENVPN_GUI_VERSION"},
{"engine", "dynamic"},
- {"setenv", "CLIENT_CERT"}
+ {"setenv", "CLIENT_CERT"},
+ {"resolve-retry","60"}
};
final String[] connectionOptions = {
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
index 919c7d3e..461b2660 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java
@@ -57,7 +57,7 @@ public class ICSOpenVPNApplication extends Application {
name = getString(R.string.channel_name_status);
mChannel = new NotificationChannel(OpenVPNService.NOTIFICATION_CHANNEL_NEWSTATUS_ID,
- name, NotificationManager.IMPORTANCE_DEFAULT);
+ name, NotificationManager.IMPORTANCE_LOW);
mChannel.setDescription(getString(R.string.channel_description_status));
mChannel.enableLights(true);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java b/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
index ea003d41..70c7455a 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java
@@ -18,6 +18,13 @@ public class NativeUtils {
public static native String getNativeAPI();
+
+ public final static int[] openSSLlengths = {
+ 16, 64, 256, 1024, 8 * 1024, 16 * 1024
+ };
+
+ public static native double[] getOpenSSLSpeed(String algorithm, int testnum);
+
static {
System.loadLibrary("opvpnutil");
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN)
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
index c15f659a..6c312c87 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
@@ -11,7 +11,6 @@ import android.app.Notification;
import android.app.UiModeManager;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutManager;
import android.content.res.Configuration;
@@ -43,7 +42,6 @@ import java.util.Vector;
import de.blinkt.openvpn.VpnProfile;
import de.blinkt.openvpn.core.VpnStatus.ByteCountListener;
import de.blinkt.openvpn.core.VpnStatus.StateListener;
-import se.leap.bitmaskclient.BuildConfig;
import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.VpnNotificationManager;
@@ -61,6 +59,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private static final String RESUME_VPN = "se.leap.bitmaskclient.RESUME_VPN";
public static final String NOTIFICATION_CHANNEL_BG_ID = "openvpn_bg";
public static final String NOTIFICATION_CHANNEL_NEWSTATUS_ID = "openvpn_newstat";
+ public static final String VPNSERVICE_TUN = "vpnservice-tun";
private static boolean mNotificationAlwaysVisible = false;
private final Vector<String> mDnslist = new Vector<>();
@@ -76,7 +75,6 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private boolean mDisplayBytecount = false;
private boolean mStarting = false;
private long mConnecttime;
- private boolean mOvpn3 = false;
private OpenVPNManagement mManagement;
private String mLastTunCfg;
private String mRemoteGW;
@@ -169,7 +167,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
// Similar to revoke but do not try to stop process
- public void processDied() {
+ public void openvpnStopped() {
endVpnService();
}
@@ -291,6 +289,18 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
return START_REDELIVER_INTENT;
}
+ /* TODO: check that for Bitmask */
+ // Always show notification here to avoid problem with startForeground timeout
+ VpnStatus.logInfo(R.string.building_configration);
+ VpnStatus.updateStateString("VPN_GENERATE_CONFIG", "", R.string.building_configration, ConnectionStatus.LEVEL_START);
+ notificationManager.buildOpenVpnNotification(
+ mProfile != null ? mProfile.mName : "",
+ VpnStatus.getLastCleanLogMessage(this),
+ VpnStatus.getLastCleanLogMessage(this),
+ ConnectionStatus.LEVEL_START,
+ 0,
+ NOTIFICATION_CHANNEL_NEWSTATUS_ID);
+
if (intent != null && intent.hasExtra(getPackageName() + ".profileUUID")) {
String profileUUID = intent.getStringExtra(getPackageName() + ".profileUUID");
int profileVersion = intent.getIntExtra(getPackageName() + ".profileVersion", 0);
@@ -319,6 +329,12 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
mProfile.checkForRestart(this);
}
+ if (mProfile == null) {
+ stopSelf(startId);
+ return START_NOT_STICKY;
+ }
+
+
/* start the OpenVPN process itself in a background thread */
new Thread(new Runnable() {
@Override
@@ -343,6 +359,9 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
private void startOpenVPN() {
+ /**
+ * see change above (l. 292 ff)
+ */
VpnStatus.logInfo(R.string.building_configration);
VpnStatus.updateStateString("VPN_GENERATE_CONFIG", "", R.string.building_configration, ConnectionStatus.LEVEL_START);
@@ -369,14 +388,10 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
mStarting = false;
// Start a new session by creating a new thread.
- SharedPreferences prefs = Preferences.getDefaultSharedPreferences(this);
-
- mOvpn3 = prefs.getBoolean("ovpn3", false);
- if (!"ovpn3".equals(BuildConfig.FLAVOR))
- mOvpn3 = false;
+ boolean useOpenVPN3 = VpnProfile.doUseOpenVPN3(this);
// Open the Management Interface
- if (!mOvpn3) {
+ if (!useOpenVPN3) {
// start a Thread that handles incoming messages of the managment socket
OpenVpnManagementThread ovpnManagementThread = new OpenVpnManagementThread(mProfile, this);
if (ovpnManagementThread.openManagementInterface(this)) {
@@ -392,15 +407,11 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
}
Runnable processThread;
- if (mOvpn3)
-
+ if (useOpenVPN3)
{
-
OpenVPNManagement mOpenVPN3 = instantiateOpenVPN3Core();
processThread = (Runnable) mOpenVPN3;
mManagement = mOpenVPN3;
-
-
} else {
processThread = new OpenVPNThread(this, argv, nativeLibraryDirectory);
mOpenVPNThread = processThread;
@@ -757,8 +768,8 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
/**
* Route that is always included, used by the v3 core
*/
- public void addRoute(CIDRIP route) {
- mRoutes.addIP(route, true);
+ public void addRoute(CIDRIP route, boolean include) {
+ mRoutes.addIP(route, include);
}
public void addRoute(String dest, String mask, String gateway, String device) {
@@ -810,7 +821,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
private boolean isAndroidTunDevice(String device) {
return device != null &&
- (device.startsWith("tun") || "(null)".equals(device) || "vpnservice-tun".equals(device));
+ (device.startsWith("tun") || "(null)".equals(device) || VPNSERVICE_TUN.equals(device));
}
public void setMtu(int mtu) {
@@ -859,7 +870,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
if (mLocalIP.len <= 31 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CIDRIP interfaceRoute = new CIDRIP(mLocalIP.mIp, mLocalIP.len);
interfaceRoute.normalise();
- addRoute(interfaceRoute);
+ addRoute(interfaceRoute ,true);
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
index 75514930..4119f52c 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java
@@ -111,7 +111,8 @@ public class OpenVPNThread implements Runnable {
}
}
- mService.processDied();
+ if (!mNoProcessExitStatus)
+ mService.openvpnStopped();
Log.i(TAG, "Exiting");
}
}
@@ -177,7 +178,7 @@ public class OpenVPNThread implements Runnable {
VpnStatus.logMessageOpenVPN(logStatus, logLevel, msg);
if (logerror==1)
- VpnStatus.logError("OpenSSL reproted a certificate with a weak hash, please the in app FAQ about weak hashes");
+ VpnStatus.logError("OpenSSL reported a certificate with a weak hash, please the in app FAQ about weak hashes");
} else {
VpnStatus.logInfo("P:" + logline);
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
index 58f1458b..70e2d1f6 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java
@@ -148,6 +148,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
// Closing one of the two sockets also closes the other
//mServerSocketLocal.close();
+ managmentCommand("version 2\n");
while (true) {
@@ -259,8 +260,8 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
case "LOG":
processLogMessage(argument);
break;
- case "RSA_SIGN":
- processSignCommand(argument);
+ case "PK_SIGN":
+ processSignCommand(argument);
break;
default:
VpnStatus.logWarning("MGMT: Got unrecognized command" + command);
@@ -606,7 +607,7 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
if (mWaitingForRelease)
releaseHold();
else if (samenetwork)
- managmentCommand("network-change\n");
+ managmentCommand("network-change samenetwork\n");
else
managmentCommand("network-change\n");
}
@@ -631,16 +632,17 @@ public class OpenVpnManagementThread implements Runnable, OpenVPNManagement {
releaseHold();
}
- private void processSignCommand(String b64data) {
+ private void processSignCommand(String b64data) {
+
+ String signed_string = mProfile.getSignedData(b64data);
- String signed_string = mProfile.getSignedData(b64data);
if (signed_string == null) {
- managmentCommand("rsa-sig\n");
+ managmentCommand("pk-sig\n");
managmentCommand("\nEND\n");
stopOpenVPN();
return;
}
- managmentCommand("rsa-sig\n");
+ managmentCommand("pk-sig\n");
managmentCommand(signed_string);
managmentCommand("\nEND\n");
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
index 0759ce65..bc32616e 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
@@ -6,7 +6,6 @@
package de.blinkt.openvpn.core;
import android.annotation.TargetApi;
-import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java
index 74e76cc4..36e1b621 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java
@@ -196,10 +196,10 @@ public class FileSelectionFragment extends ListFragment {
}
- TreeMap<String, String> dirsMap = new TreeMap<String, String>();
- TreeMap<String, String> dirsPathMap = new TreeMap<String, String>();
- TreeMap<String, String> filesMap = new TreeMap<String, String>();
- TreeMap<String, String> filesPathMap = new TreeMap<String, String>();
+ TreeMap<String, String> dirsMap = new TreeMap<>();
+ TreeMap<String, String> dirsPathMap = new TreeMap<>();
+ TreeMap<String, String> filesMap = new TreeMap<>();
+ TreeMap<String, String> filesPathMap = new TreeMap<>();
// add default locations
for (String dir: getExternalStorages()) {
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java b/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java
index 700095d7..18e5f87f 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java
@@ -12,6 +12,7 @@ import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -28,6 +29,7 @@ import android.preference.PreferenceManager;
import de.blinkt.openvpn.BuildConfig;
import de.blinkt.openvpn.R;
import de.blinkt.openvpn.VpnProfile;
+import de.blinkt.openvpn.activities.OpenSSLSpeed;
import de.blinkt.openvpn.api.ExternalAppDatabase;
import de.blinkt.openvpn.core.ProfileManager;
@@ -66,13 +68,16 @@ public class GeneralSettings extends PreferenceFragment implements OnPreferenceC
Preference clearapi = findPreference("clearapi");
clearapi.setOnPreferenceClickListener(this);
+ findPreference("osslspeed").setOnPreferenceClickListener(this);
if(devHacks.getPreferenceCount()==0)
getPreferenceScreen().removePreference(devHacks);
- if (!"ovpn3".equals(BuildConfig.FLAVOR)) {
+ if (!BuildConfig.openvpn3) {
PreferenceCategory appBehaviour = (PreferenceCategory) findPreference("app_behaviour");
- appBehaviour.removePreference(findPreference("ovpn3"));
+ CheckBoxPreference ovpn3 = (CheckBoxPreference) findPreference("ovpn3");
+ ovpn3.setEnabled(false);
+ ovpn3.setChecked(false);
}
@@ -168,6 +173,8 @@ public class GeneralSettings extends PreferenceFragment implements OnPreferenceC
builder.setNegativeButton(android.R.string.cancel, null);
builder.setMessage(getString(R.string.clearappsdialog,getExtAppList("\n")));
builder.show();
+ } else if (preference.getKey().equals("osslspeed")) {
+ startActivity(new Intent(getActivity(), OpenSSLSpeed.class));
}
return true;
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Basic.java b/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Basic.java
index c85dc114..7188aca1 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Basic.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/Settings_Basic.java
@@ -258,6 +258,7 @@ public class Settings_Basic extends Settings_Fragment implements View.OnClickLis
mUserName.setText(mProfile.mUsername);
mPassword.setText(mProfile.mPassword);
mKeyPassword.setText(mProfile.mKeyPassword);
+ mAuthRetry.setSelection(mProfile.mAuthRetry);
setAlias();
@@ -299,16 +300,11 @@ public class Settings_Basic extends Settings_Fragment implements View.OnClickLis
public void showCertDialog () {
try {
KeyChain.choosePrivateKeyAlias(getActivity(),
- new KeyChainAliasCallback() {
-
- public void alias(String alias) {
- // Credential alias selected. Remember the alias selection for future use.
- mProfile.mAlias=alias;
- mHandler.sendEmptyMessage(UPDATE_ALIAS);
- }
-
-
- },
+ alias -> {
+ // Credential alias selected. Remember the alias selection for future use.
+ mProfile.mAlias=alias;
+ mHandler.sendEmptyMessage(UPDATE_ALIAS);
+ },
new String[] {"RSA"}, // List of acceptable key types. null for any
null, // issuer, null for any
mProfile.mServerName, // host name of server requesting the cert, null if unavailable
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/ShowConfigFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/ShowConfigFragment.java
index c3a3196d..f759f0ed 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/ShowConfigFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/ShowConfigFragment.java
@@ -51,7 +51,7 @@ public class ShowConfigFragment extends Fragment {
new Thread() {
public void run() {
/* Add a few newlines to make the textview scrollable past the FAB */
- configtext = vp.getConfigFile(getActivity(),false) + "\n\n\n";
+ configtext = vp.getConfigFile(getActivity(), VpnProfile.doUseOpenVPN3(getActivity())) + "\n\n\n";
getActivity().runOnUiThread(new Runnable() {
@Override
diff --git a/main/src/main/res/layout-sw600dp/log_fragment.xml b/main/src/main/res/layout-sw600dp/log_fragment.xml
index 26f63df4..089bfb9d 100644
--- a/main/src/main/res/layout-sw600dp/log_fragment.xml
+++ b/main/src/main/res/layout-sw600dp/log_fragment.xml
@@ -17,8 +17,9 @@
android:background="@drawable/white_rect"
android:elevation="1dp"
android:minWidth="300dp"
+
android:orientation="vertical"
- android:layout_width="wrap_content"
+ android:layout_width="400dp"
android:layout_height="match_parent">
<include layout="@layout/log_silders"/>
@@ -27,6 +28,8 @@
</LinearLayout>
<ListView
+ android:minWidth="400dp"
+ android:layout_weight="4"
android:id="@android:id/list"
android:transcriptMode="normal"
android:layout_width="fill_parent"
diff --git a/main/src/main/res/layout-v21/connection_fab.xml b/main/src/main/res/layout-v21/connection_fab.xml
index ea3964d9..e3e620d6 100644
--- a/main/src/main/res/layout-v21/connection_fab.xml
+++ b/main/src/main/res/layout-v21/connection_fab.xml
@@ -21,4 +21,4 @@
android:src="@android:drawable/ic_input_add"
android:stateListAnimator="@anim/fab_anim"
android:tint="@android:color/white"
- tools:showIn="@layout/connections" /> \ No newline at end of file
+ /> \ No newline at end of file
diff --git a/main/src/main/res/layout-v21/save_fab.xml b/main/src/main/res/layout-v21/save_fab.xml
index fbd583da..af7847e8 100644
--- a/main/src/main/res/layout-v21/save_fab.xml
+++ b/main/src/main/res/layout-v21/save_fab.xml
@@ -18,5 +18,5 @@
android:elevation="1dp"
android:src="@android:drawable/ic_menu_save"
android:stateListAnimator="@anim/fab_anim"
- android:tint="@android:color/white"
- tools:showIn="@layout/config_converter" /> \ No newline at end of file
+ android:tint="@android:color/white" />
+ <!--tools:showIn="@layout/config_converter" -->
diff --git a/main/src/main/res/layout-v21/share_fab.xml b/main/src/main/res/layout-v21/share_fab.xml
index 04049fe7..fb0d432f 100644
--- a/main/src/main/res/layout-v21/share_fab.xml
+++ b/main/src/main/res/layout-v21/share_fab.xml
@@ -19,4 +19,4 @@
android:src="@drawable/ic_menu_share"
android:stateListAnimator="@anim/fab_anim"
android:tint="@android:color/white"
- tools:showIn="@layout/viewconfig" /> \ No newline at end of file
+ /> \ No newline at end of file
diff --git a/main/src/main/res/layout/openssl_speed.xml b/main/src/main/res/layout/openssl_speed.xml
new file mode 100644
index 00000000..c23d3567
--- /dev/null
+++ b/main/src/main/res/layout/openssl_speed.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (c) 2012-2017 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+
+
+ <EditText
+ android:id="@+id/ciphername"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:ems="10"
+ android:text="@string/default_cipherlist_test"
+ android:hint="@string/openssl_cipher_name"
+ android:inputType="textPersonName" />
+
+ <Button
+ android:id="@+id/testSpecific"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:text="@string/test_algoirhtms" />
+ </LinearLayout>
+
+ <ListView
+ android:id="@+id/results"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+</LinearLayout>
diff --git a/main/src/main/res/layout/speedviewitem.xml b/main/src/main/res/layout/speedviewitem.xml
new file mode 100644
index 00000000..06a760ec
--- /dev/null
+++ b/main/src/main/res/layout/speedviewitem.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (c) 2012-2017 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <TextView
+ android:id="@+id/ciphername"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="end"
+ android:minWidth="100sp"
+ android:textAlignment="textEnd"
+ tools:text="aes-256-gcm" />
+
+ <TextView
+ android:id="@+id/blocksize"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/ciphername"
+ android:gravity="end"
+ android:minWidth="100sp"
+ android:textAlignment="textEnd"
+ tools:text="1024 kB" />
+
+
+ <TextView
+ android:id="@+id/blocksintime"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="20sp"
+ android:layout_marginStart="20sp"
+ android:layout_toEndOf="@id/ciphername"
+ android:layout_toRightOf="@id/ciphername"
+ tools:text="12345 blocks in 5s" />
+
+ <TextView
+ android:id="@+id/speed"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/blocksintime"
+ android:layout_marginLeft="20dp"
+ android:layout_marginStart="20dp"
+ android:layout_marginTop="2sp"
+ android:layout_toEndOf="@id/ciphername"
+ android:layout_toRightOf="@id/ciphername"
+ tools:text="772 MB/s" />
+
+
+</RelativeLayout>
diff --git a/main/src/main/res/values-cs/arrays.xml b/main/src/main/res/values-cs/arrays.xml
index 99925049..1068de10 100755
--- a/main/src/main/res/values-cs/arrays.xml
+++ b/main/src/main/res/values-cs/arrays.xml
@@ -20,7 +20,7 @@
<item translatable="false">0 (server)</item>
<item translatable="false">1 (klient)</item>
<item>Nespecifikováno</item>
- <item>Encryption (--tls-crypt)</item>
+ <item>Šifrování (--tls-crypt)</item>
</string-array>
<string-array name="crm_entries">
<item>Opětovně nepřipojovat</item>
@@ -29,4 +29,9 @@
<item>Padesát pokusů o připojení</item>
<item>Neomezeně pokusů o připojení</item>
</string-array>
+ <string-array name="auth_retry_type">
+ <item>Odpojit, zapomenout heslo</item>
+ <item>Odpojit, zachovat heslo</item>
+ <item>Ignorovat, zkusit znovu</item>
+ </string-array>
</resources>
diff --git a/main/src/main/res/values-cs/plurals.xml b/main/src/main/res/values-cs/plurals.xml
index 70489fbc..be0f3cb1 100755
--- a/main/src/main/res/values-cs/plurals.xml
+++ b/main/src/main/res/values-cs/plurals.xml
@@ -1,3 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Zbývá jeden měsíc</item>
+ <item quantity="few">Zbývají %d měsíce</item>
+ <item quantity="other">Zbývá %d měsíců</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Zbývá jeden den</item>
+ <item quantity="few">Zbývají %d dny</item>
+ <item quantity="other">Zbývá %d dnů</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Zbývá jedna hodina</item>
+ <item quantity="few">Zbývají %d hodiny</item>
+ <item quantity="other">Zbývá %d hodin</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Zbývá jedna minuta</item>
+ <item quantity="few">Zbývají %d minuty</item>
+ <item quantity="other">Zbývá %d minut</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-cs/strings.xml b/main/src/main/res/values-cs/strings.xml
index 4e2684f9..d398400d 100755
--- a/main/src/main/res/values-cs/strings.xml
+++ b/main/src/main/res/values-cs/strings.xml
@@ -44,12 +44,14 @@
<string name="duplicate_profile_name">Zadej prosím unikátní jméno profilu</string>
<string name="profilename">Jméno profilu</string>
<string name="no_keystore_cert_selected">Je třeba vybrat uživatelský certifikát</string>
+ <string name="no_ca_cert_selected">Je třeba vybrat certifikát</string>
<string name="no_error_found">Bez chyb</string>
<string name="config_error_found">Chyba v konfiguraci</string>
<string name="ipv4_format_error">Chyba při zpracování IPv4 adresy</string>
<string name="custom_route_format_error">Chyba při zpracování vlastního směrování</string>
<string name="pw_query_hint">(nechej prázdné pro dotazování, až bude potřeba)</string>
<string name="vpn_shortcut">OpenVPN zkratka</string>
+ <string name="vpn_launch_title">Připojování k VPN&#8230;</string>
<string name="shortcut_profile_notfound">Profil zvolený ve zkratce nenalezen</string>
<string name="random_host_prefix">Náhodný prefix klienta</string>
<string name="random_host_summary">Přidej 6 náhodných znaků před jméno klienta (hostname)</string>
@@ -163,6 +165,7 @@
<string name="private_key_password">Heslo k soukromému klíči</string>
<string name="password">Heslo</string>
<string name="file_icon">ikona souboru</string>
+ <string name="tls_authentication">TLS autentizace/šifrování</string>
<string name="generated_config">Vygenerované nastavení</string>
<string name="generalsettings">Nastavení</string>
<string name="owner_fix_summary">Pokusit se nastavit vlastníka /dev/tun zařízení. Na některých systémech s CM9 je toto potřeba pro zprovoznění VPNService API. Vyžaduje root zařízení.</string>
@@ -178,6 +181,7 @@
<string name="keychain_nocacert">Žádný CA certifikát nebyl získán z úložiště, autentikace pravděpodobně selže.</string>
<string name="show_log_summary">Zobrazit okno s logem při připojování. okno lze vždy otevřít z notifikace.</string>
<string name="show_log_window">Zobrazit okno s logem</string>
+ <string name="mobile_info">%10$s %9$s spuštěno na %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Chyba při podepisování klíčem %1$s: %2$s</string>
<string name="faq_system_dialogs">VPN varování při připojování oznamující o možnosti přesměrování veškerého provozu je vynuceno systémem, aby se zabránilo zneužití VPNService API.\nNotifikace (symbol s klíčem) je také vynucena systémem, aby signalizovala odchozí VPN spojení. Na některých systémech přehrává notifikace i zvuk.\nAndroid zavedl tyto dialogy pro tvoji osobní bezpečnost a ujistil se, že nejdou obejít. (Někdu to bohužel zahrnuje i zvuk notifikace.)</string>
<string name="faq_system_dialogs_title">Varování při připojení a zvuková notifikace</string>
@@ -200,6 +204,8 @@
<string name="using_proxy">Používám proxy %1$s %2$d</string>
<string name="use_system_proxy">Použít systémovou proxy</string>
<string name="use_system_proxy_summary">K připojení použít systémové nastavení pro HTTP/HTTPS.</string>
+ <string name="onbootrestartsummary">OpenVPN se automaticky připojí k vybrané VPN po startu systému. Prosím věnujte pozornost upozornění ve FAQ pro verzi Android &lt; 5.0.</string>
+ <string name="onbootrestart">Připojit po spuštění systému</string>
<string name="ignore">Ignorovat</string>
<string name="restart">Restartovat</string>
<string name="restart_vpn_after_change">Změna nastavení začne platit až po restartu VPN. Restartovat teď?</string>
@@ -246,6 +252,7 @@
<string name="state_tcp_connect">Připojuji (TCP)</string>
<string name="state_auth_failed">Přihlášení nebylo úspěšné</string>
<string name="state_nonetwork">Čekání na použitelnou síť</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Nepřipojeno</string>
<string name="start_vpn_title">Připojování k VPN %s</string>
<string name="start_vpn_ticker">Připojování k VPN %s</string>
@@ -316,6 +323,7 @@
<string name="import_log">Import logu:</string>
<string name="ip_looks_like_subnet">Vpn topologie \"%3$s\" soecifikována, ale ifconfig %1$s %2$s vypadá spíše jako IP adresa se síťovou maskou. Předpokládám \"podsíťovou\" topologii.</string>
<string name="mssfix_invalid_value">mssfix hodnota musí být celé číslo mezi 0 a 9000</string>
+ <string name="mtu_invalid_value">MTU hodnota musí být celé číslo mezi 64 a 9000</string>
<string name="mssfix_value_dialog">Oznámit TCP sezením běžícím skrze tunel, že mají limitovat velikost odesílaných paketů tak, aby poté, co je OpenVPN zabalí, byla výsledná velikost UDP paketu, které OpenVPN posílá menší než tento počet bytů. (výchozí je 1450)</string>
<string name="mssfix_checkbox">Přepsat hodnotu MSS pro TCP obsah</string>
<string name="mssfix_dialogtitle">Nastavit MSS pro TCP obsah</string>
@@ -347,6 +355,7 @@
<string name="ab_only_cidr">Android podporuje ve VPN síti podporuje pouze CIDR trasy. Protože ne-CIDR trasy nejsou téměř nikdy používány, OpenVPN pro Android použije /32 pro trasy, které nejsou CIDR a zobrazí varování.</string>
<string name="ab_tethering_44">Sdílení připojení funguje během aktivního VPN spojení. Sdílené připojení NEpoužije VPN.</string>
<string name="ab_kitkat_mss">Dřívější KitKat verze nastavovaly špatnou hodnotu MSS na TCP spojení (#61948). OpenVPN automaticky zapne mssfix možnost pro obejití chyby.</string>
+ <string name="ab_lollipop_reinstall">Aplikace VPN mohou přestat fungovat po odinstalování a reinstalaci. Podrobnosti najdete v #80074</string>
<string name="ab_secondary_users">VPN vůbec nefunguje pro vedlejší uživatele.</string>
<string name="ab_only_cidr_title">Ne-CIDR trasy</string>
<string name="ab_proxy_title">Proxy chování pro VPN</string>
@@ -356,6 +365,66 @@
<string name="ab_not_route_to_vpn_title">Trasa k nastavené IP adrese</string>
<string name="ab_kitkat_mss_title">Špatná hodnota MSS pro VPN spojení</string>
<string name="ab_secondary_users_title">Vedlejší uživaté tabletu</string>
+ <string name="custom_connection_options_warng">Zadejte vlastní specifické možnosti k připojení. Používejte opatrně</string>
<string name="custom_connection_options">Vlastní možnosti</string>
<string name="remove_connection_entry">Odstranit položku připojení</string>
+ <string name="ab_kitkat_reconnect_title">Náhodné odpojování od mobilní sítě</string>
+ <string name="ab_vpn_reachability_44_title">Vzdálená síť není dostupná</string>
+ <string name="ab_persist_tun_title">Setrvat v režimu tun</string>
+ <string name="version_and_later">%s a později</string>
+ <string name="tls_cipher_alert_title">Připojení selhalo SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure</string>
+ <string name="message_no_user_edit">Tento profil byl přidán z externí aplikace (%s) a byl označen jako uživatelsky nezměnitelný.</string>
+ <string name="crl_file">Seznam odvolaných certifikátů</string>
+ <string name="service_restarted">Restartování služby OpenVPN (aplikace pravděpodobně havarovala, nebo byla ukončena kvůli nedostatku paměti)</string>
+ <string name="import_config_error">Importování konfigurace způsobilo chybu, nelze jej uložit</string>
+ <string name="Search">Hledat</string>
+ <string name="lastdumpdate">(Poslední výpis je %1$d: %2$dh starý (%3$s))</string>
+ <string name="clear_log_on_connect">Vymazat log při novém připojení</string>
+ <string name="connect_timeout">Časový limit připojení</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Povoleno</string>
+ <string name="pushpeerinfo">Push Peer info</string>
+ <string name="pushpeerinfosummary">Odeslat na server další informace, např. verzi SSL a verzi systému Android</string>
+ <string name="pw_request_dialog_title">Potřebujete %1$s</string>
+ <string name="pw_request_dialog_prompt">Prosím zadejte heslo pro profil %1$s</string>
+ <string name="menu_use_inline_data">Použít vložené údaje</string>
+ <string name="export_config_chooser_title">Exportovat konfigurační soubor</string>
+ <string name="missing_tlsauth">soubor tls-auth chybí</string>
+ <string name="missing_certificates">Chybí uživatelský certifikát nebo soubor uživatelského klíče certifikátu</string>
+ <string name="missing_ca_certificate">Chybí certifikát CA</string>
+ <string name="crl_title">Seznam revokovaných certifikátů (volitelné)</string>
+ <string name="reread_log">Znovu načíst (%d) logy z mezipaměti</string>
+ <string name="samsung_broken_title">Samsung telefony</string>
+ <string name="novpn_selected">Nebyla vybrána žádná VPN.</string>
+ <string name="defaultvpn">Výchozí VPN</string>
+ <string name="vpnselected">Aktuálně vybraná VPN: „%s“</string>
+ <string name="reconnect">Znovu připojit</string>
+ <string name="qs_title">Přepnout VPN</string>
+ <string name="qs_connect">Připojit k %s</string>
+ <string name="qs_disconnect">Odpojit od %s</string>
+ <string name="connectretrymaxtitle">Maximální doba mezi pokusy o připojení</string>
+ <string name="state_waitconnectretry">Čekat %ss sekund mezi pokusem o připojení</string>
+ <string name="management_socket_closed">Připojení k OpenVPN zavřeno (%s)</string>
+ <string name="change_sorting">Změnit řazení</string>
+ <string name="sort">Třídit</string>
+ <string name="sorted_lru">Profily seřazené podle naposledy použitých</string>
+ <string name="sorted_az">Profily řazené podle názvu</string>
+ <string name="deprecated_tls_remote">Konfigurace využívá možnost tls-remote, která je nyní ve 2.3 zastaralá a ve 2.4 bude odstraněna</string>
+ <string name="auth_failed_behaviour">Chování při AUTH_FAILED</string>
+ <string name="graph">Graf</string>
+ <string name="use_logarithmic_scale">Použít logaritmickou stupnici</string>
+ <string name="notenoughdata">Nedostatek dat</string>
+ <string name="avghour">Průměr za hodinu</string>
+ <string name="avgmin">Průměr za minutu</string>
+ <string name="last5minutes">Posledních 5 minut</string>
+ <string name="data_in">Vstup</string>
+ <string name="data_out">Výstup</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-da/arrays.xml b/main/src/main/res/values-da/arrays.xml
new file mode 100755
index 00000000..ce089b48
--- /dev/null
+++ b/main/src/main/res/values-da/arrays.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ ~ Copyright (c) 2012-2016 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+<resources>
+ <!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
+ <string-array name="vpn_types">
+ <item>Certifikater</item>
+ <item>PKCS12-fil</item>
+ <item>Android-certifikat</item>
+ <item>Brugernavn/adgangskode</item>
+ <item>Faste nøgler</item>
+ <item>Bruger/adgangskode + certifikater</item>
+ <item>Bruger/adgangskode + PKCS12 </item>
+ <item>Bruger/adgangskode + Android</item>
+ </string-array>
+ <string-array name="tls_directions_entries">
+ <item translatable="false">0</item>
+ <item translatable="false">1</item>
+ <item>Uspecificeret</item>
+ <item>Kryptering (TLS-krypt.)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Afbryd, glem adgangskoden</item>
+ <item>Afbryd, behold adgangskoden</item>
+ <item>Ignorér, forsøg igen</item>
+ </string-array>
+</resources>
diff --git a/main/src/main/res/values-da/plurals.xml b/main/src/main/res/values-da/plurals.xml
new file mode 100755
index 00000000..3fb9d049
--- /dev/null
+++ b/main/src/main/res/values-da/plurals.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">En måned tilbage</item>
+ <item quantity="other">%d måneder tilbage</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">En dag tilbage</item>
+ <item quantity="other">%d dage tilbage</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">En time tilbage</item>
+ <item quantity="other">%d timer tilbage</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Et minut tilbage</item>
+ <item quantity="other">%d minutter tilbage</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-da/strings.xml b/main/src/main/res/values-da/strings.xml
new file mode 100755
index 00000000..f5bc1306
--- /dev/null
+++ b/main/src/main/res/values-da/strings.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!--
+ ~ Copyright (c) 2012-2016 Arne Schwabe
+ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
+ -->
+<resources>
+ <string name="app">OpenVPN til Android</string>
+ <string name="address">Server Adresse:</string>
+ <string name="port">Server Port:</string>
+ <string name="location">Placering</string>
+ <string name="cant_read_folder">Kan ikke læse mappen</string>
+ <string name="select">Vælg</string>
+ <string name="cancel">Annuller</string>
+ <string name="no_data">Ingen data</string>
+ <string name="useLZO">LZO komprimering</string>
+ <string name="client_no_certificate">Intet certifikat</string>
+ <string name="client_certificate_title">Klientcertifikat</string>
+ <string name="client_key_title">Klientcertifikat nøgle</string>
+ <string name="client_pkcs12_title">PKCS12 fil</string>
+ <string name="ca_title">CA Certifikat</string>
+ <string name="no_certificate">Du skal vælge et certifikat</string>
+ <string name="copyright_guicode">Kildekode og fejl tracker findes på http://code.google.com/p/ics-openvpn/</string>
+ <string name="copyright_others">Dette program bruger følgende komponenter: se kildekoden for alle detaljer om licenserne</string>
+ <string name="about">Om</string>
+ <string name="vpn_list_title">Profiler</string>
+ <string name="vpn_type">Type</string>
+ <string name="pkcs12pwquery">PKCS12 kodeord</string>
+ <string name="file_select">Vælg&#8230;</string>
+ <string name="file_nothing_selected">Du skal vælge en fil</string>
+ <string name="useTLSAuth">Brug TLS-godkendelse</string>
+ <string name="tls_direction">TLS retning</string>
+ <string name="ipv6_dialog_tile">Indtast IPv6-adresse /netmaske i CIDR format (fx 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Indtast IPv4-adresse/netmaske i CIDR format (f.eks 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4-adresse</string>
+ <string name="ipv6_address">IPv6 adresse</string>
+ <string name="custom_option_warning">Angiv brugerdefinerede OpenVPN indstillinger. Benyt med forsigtighed. Bemærk også, at mange af tun relateret OpenVPN indstillinger ikke kan understøttes af VPNSettings. Hvis du syntes en vigtig indstilling mangler, så kontakt os</string>
+ <string name="auth_username">Brugernavn</string>
+ <string name="auth_pwquery">Kodeord</string>
+ <string name="static_keys_info">For statisk konfiguration vil TLS autentifikations nøglerne blive brugt som statiske nøgler</string>
+ <string name="configure_the_vpn">Konfigurer VPN</string>
+ <string name="menu_add_profile">Tilføj profil</string>
+ <string name="add_profile_name_prompt">Indtast et navn, der identificerer den nye profil</string>
+ <string name="duplicate_profile_name">Indtast venligst et unikt profilnavn</string>
+ <string name="profilename">Profilnavn</string>
+ <string name="no_keystore_cert_selected">Du skal vælge et bruger certifikat</string>
+ <string name="no_ca_cert_selected">Du skal vælge et CA-certifikat</string>
+ <string name="no_error_found">Ingen fejl fundet</string>
+ <string name="config_error_found">Fejl ved konfiguration</string>
+ <string name="ipv4_format_error">Fejl ved tolkning af IPv4-adresse</string>
+ <string name="custom_route_format_error">Fejl med den brugerdefinerede rute</string>
+ <string name="pw_query_hint">(efterlad tomt for forespørgsel efter efterspørgsel)</string>
+ <string name="vpn_shortcut">OpenVPN genvej</string>
+ <string name="vpn_launch_title">Opretter forbindelse til VPN&#8230;</string>
+ <string name="shortcut_profile_notfound">Profil angivet i genvejen ikke fundet</string>
+ <string name="random_host_prefix">Tilfældig værts præfiks</string>
+ <string name="random_host_summary">Tilføjer 6 tilfældige tegn foran værtsnavn</string>
+ <string name="custom_config_title">Aktiver brugerdefinerede indstillinger</string>
+ <string name="custom_config_summary">Angiv brugerdefinerede indstillinger. Brug med omtanke!</string>
+ <string name="route_rejected">Rute afvist af Android</string>
+ <string name="cancel_connection">Afbryd</string>
+ <string name="cancel_connection_long">Afbryd VPN</string>
+ <string name="clear_log">ryd log</string>
+ <string name="title_cancel">Annuller bekræftelse</string>
+ <string name="cancel_connection_query">Afbryd den tilsluttede VPN/annuller forbindelses forsøg?</string>
+ <string name="remove_vpn">Fjern VPN</string>
+ <string name="check_remote_tlscert">Kontrollerer om serveren bruger et certifikat med TLS Server udvidelser (--remote-CERT-tls server)</string>
+ <string name="check_remote_tlscert_title">Forvent TLS servercertifikat</string>
+ <string name="remote_tlscn_check_summary">Kontrollerer Remote Server Certificate Subject DN</string>
+ <string name="remote_tlscn_check_title">Kontrol af Certifikat Værtsnavn</string>
+ <string name="enter_tlscn_dialog">Angiv hvilket check der anvendes til at verificere det eksterne certifikat DN (e.g. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nAngiv den komplette DN eller RDN (f.eks. openvpn.blinkt.de) eller et RDN-præfiks til verificering.\n\nNår der anvendes RDN-præfiks vil \"Server\" matche \"Server-1\" og \"Server-2\"\n\nEfterlades feltet tomt vil RDN tjekkes mod serverens værtsnavn.\n\nFor flere detaljer, se OpenVPN 2.3.1+ manpage\'en under —verify-x509-name</string>
+ <string name="enter_tlscn_title">Fjerncertifikat emne</string>
+ <string name="tls_key_auth">Aktiverer TLS Key-godkendelse</string>
+ <string name="tls_auth_file">TLS godkendelses fil</string>
+ <string name="pull_on_summary">Anmoder IP-adresser, ruter og tidsindstillingerne fra serveren.</string>
+ <string name="pull_off_summary">Ingen oplysninger anmodes fra serveren. Indstillinger skal angives nedenfor.</string>
+ <string name="use_pull">Pull-indstillinger</string>
+ <string name="dns">DNS</string>
+ <string name="override_dns">Tilsidesæt DNS-indstillinger fra Server</string>
+ <string name="dns_override_summary">Brug dine egne DNS-servere</string>
+ <string name="searchdomain">søgeDomæne</string>
+ <string name="dns1_summary">DNS-server, som skal anvendes.</string>
+ <string name="dns_server">DNS-server</string>
+ <string name="secondary_dns_message">Sekundær DNS-Server som bruges, hvis den normale DNS-serveren ikke kan nås.</string>
+ <string name="backup_dns">Backup DNS-server</string>
+ <string name="ignored_pushed_routes">Ignorer skubbet ruter</string>
+ <string name="ignore_routes_summary">Ignorer ruter modtaget fra serveren.</string>
+ <string name="default_route_summary">Omdiriger al trafik over VPN\'en</string>
+ <string name="use_default_title">Brug standard Rute</string>
+ <string name="custom_route_message">Indtast brugerdefinerede ruter. Skriv kun destinationen i CIDR format. \"10.0.0.0/8 2002::/16\" vil dirigere netværkene 10.0.0.0/8 og 2002::/16 gennem VPN\'en.</string>
+ <string name="custom_route_message_excluded">Ruter der IKKE skal dirigeres gennem VPN\'en. Brug samme syntax som til de inkluderede ruter.</string>
+ <string name="custom_routes_title">Brugerdefinerede ruter</string>
+ <string name="custom_routes_title_excluded">Ekskluderede netværk</string>
+ <string name="log_verbosity_level">Log informationsniveau</string>
+ <string name="float_summary">Tillad bekræftede pakker fra alle IP\'er</string>
+ <string name="float_title">Tillad flydende server</string>
+ <string name="custom_options_title">Brugerdefinerede indstillinger</string>
+ <string name="edit_vpn">Rediger VPN-indstillinger</string>
+ <string name="remove_vpn_query">Fjern VPN-profilen \'%s\'?</string>
+ <string name="tun_error_helpful">På nogle brugerdefinerede ICS images kan rettighederne til /dev/tun være forkerte, eller tun modulet kan mangle fuldstændigt. Til CM9 images kan du prøve \"fix ejerskab\" valgmuligheden under generelle indstillinger</string>
+ <string name="tun_open_error">Kunne ikke åbne tun grænsefladen</string>
+ <string name="error">"Fejl: "</string>
+ <string name="clear">Tøm</string>
+ <string name="last_openvpn_tun_config">Åbner tun grænseflade:</string>
+ <string name="local_ip_info">Lokal IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
+ <string name="dns_server_info">DNS-Server: %1$s, Domæne: %2$s</string>
+ <string name="routes_info_incl">Ruter: %1$s %2$s</string>
+ <string name="routes_info_excl">Ekskluderede ruter: %1$s %2$s</string>
+ <string name="routes_debug">VpnService rute installeret: %1$s %2$s</string>
+ <string name="ip_not_cidr">Fik grænsfladeoplysninger %1$s og %2$s, antager at anden adresse er peer-adressen på fjernserveren. Bruger /32 netmask til lokal IP. Tilstanden givet af OpenVPN er \"%3$s\".</string>
+ <string name="route_not_cidr">Kan ikke forstå %1$s og %2$s som IP rute med CIDR netmask, bruger /32 som netmask.</string>
+ <string name="route_not_netip">Rettede rute %1$s/%2$s til %3$s/%2$s</string>
+ <string name="keychain_access">Kan ikke få adgang til Android Keychain Certifikater. Dette kan skyldes en firmware opdatering eller ved at gendanne en backup af app\'en/app indstillingerne. Rediger venligst VPN\'en og genvælg certifikatet under grund indstillinger for at gendanne rettighederne til at tilgå certifikatet.</string>
+ <string name="version_info">%1$s %2$s</string>
+ <string name="send_logfile">Send log fil</string>
+ <string name="send">Send</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN log fil</string>
+ <string name="copied_entry">Kopierede logpost til udklipsholder</string>
+ <string name="tap_mode">Tap-tilstand</string>
+ <string name="faq_tap_mode">Tap-tilstand er ikke muligt med ikke-root VPN API. Programmet kan derfor ikke tilbyde tap-understøttelse</string>
+ <string name="tap_faq2">Igen? Laver du sjov? Nej, tap-tilstand er virkelig ikke understøttet og det hjælper ikke at sende mig mails og spørge om det bliver understøttet.</string>
+ <string name="tap_faq3">En tredje gang? Man kunne faktisk skrive en tap-emulator baseret på tun der kunne tilføje layer2 information når den sender og fjerne layer2 information når det modtages. Men en sådan tap-emulator skulle også implementere ARP og muligvis en DHCP-klient. JEg kender ikke nogen der arbejder i denne retning. Kontakt mig hvis du vil begynde at programmere det.</string>
+ <string name="faq">OFTE STILLEDE SPØRGSMÅL</string>
+ <string name="copying_log_entries">Kopiere logposter</string>
+ <string name="faq_copying">For at kopiere en enkelt logpost skal du trykke og holde på logposten. For at kopiere/sende hele log\'en skal du bruge Send Log valgmuligheden. Brug hardware menu knappen hvis den ikke er vist i GUI\'en.</string>
+ <string name="faq_shortcut">Genvej til start</string>
+ <string name="faq_howto_shortcut">Du kan placere en genvej til at starte OpenVPN på dit skrivebord. Afhængigt af dit homescreen-program skal du enten tilføje en genvej eller et widget.</string>
+ <string name="no_vpn_support_image">Dit billede understøtter ikke VPNService API\'en, beklager :(</string>
+ <string name="encryption">Kryptering</string>
+ <string name="cipher_dialog_title">Angiv krypterings metode</string>
+ <string name="chipher_dialog_message">Angiv krypteringsalgoritmen der skal bruges af OpenVPN. Efterlad tom for at anvende standard algoritmen.</string>
+ <string name="auth_dialog_message">Angiv autentificeringsdigest til brug af OpenVPN. Efterlad tom for at anvende standard digest.</string>
+ <string name="settings_auth">Autentificering/kryptering</string>
+ <string name="file_explorer_tab">Stifinder</string>
+ <string name="inline_file_tab">Indlejret fil</string>
+ <string name="error_importing_file">Fejl under importering af fil</string>
+ <string name="import_error_message">Kunne ikke importere fil fra filsytemet</string>
+ <string name="inline_file_data">[[Data inline fil]]</string>
+ <string name="opentun_no_ipaddr">Nægter at åbne tun-enhed uden IP-information</string>
+ <string name="menu_import">Importér profil fra ovpn fil</string>
+ <string name="menu_import_short">Importér</string>
+ <string name="import_content_resolve_error">Kunne ikke læse profil fra import</string>
+ <string name="error_reading_config_file">Fejl under læsning af konfigurationsfil</string>
+ <string name="add_profile">tilføj profil</string>
+ <string name="import_could_not_open">Kunne ikke finde fil %1$s nævnt under importen af konfigurationsfil</string>
+ <string name="importing_config">Importering af konfigurationsfil fra kilde %1$s</string>
+ <string name="import_warning_custom_options">Din konfiguration havde nogle indstillingsmuligheder der ikke er knyttet til brugerinterface indstillinger. Disse indstillinger blev tilføjet som brugerdefinerede indstillingsmuligheder. De brugerdefinerede indstillinger er vist forneden:</string>
+ <string name="import_done">Færdig med at læse konfigurationsfil.</string>
+ <string name="nobind_summary">Bind ikke til lokal adresse eller port</string>
+ <string name="no_bind">Ingen lokal binding</string>
+ <string name="import_configuration_file">Importér konfigurationsfil</string>
+ <string name="faq_security_title">Sikkerhedsovervejelser</string>
+ <string name="faq_security">"Da OpenVPN er sikkerhedsfølsom er det på sin plads med nogle bemærkninger om sikkerhed. Al data på SD-kortet er usikkert af konstruktion. Alle apps kan læse fra det (f. eks. har denne app ikke behov for SD-kort rettigheder). Dette programs data kan kun læses af programmet selv. Ved at anvende Importér valgmuligheden til cacert/cert/key i fil dialogen bliver data\'en opbevaret i VPN-profilen. VPN-profilerne er kun tilgængelige for denne app. (Glem ikke at slette kopierne fra SD-kortet bagefter). Selvom de kun er tilgængelige for dette program er dataen stadig stadig ukrypteret. Ved at root\'e telefonen eller ved hjælp af andre exploits kan det være muligt at indhente dataen. Gemte passwords bliver også opbevaret ukrypteret. For pkcs12 filer er det særligt anbefalet at du importere dem til Android Keystore."</string>
+ <string name="import_vpn">Importér</string>
+ <string name="broken_image_cert_title">Fejl ved visning af certifikat-valg</string>
+ <string name="broken_image_cert">Fik en undtagelse ved visning af Android 4.0+ certifikat valgsdialog. Dette burde ikke ske da det er en standardfunktion i Android 4.0+. Måske er din Android ROM\'s certifikatopbevaring i stykker</string>
+ <string name="ipv4">IPv4</string>
+ <string name="ipv6">IPv6</string>
+ <string name="speed_waiting">Venter på statusmeddelelse&#8230;</string>
+ <string name="converted_profile">importeret profil</string>
+ <string name="converted_profile_i">importeret profil %d</string>
+ <string name="broken_images">Ødelagt Image</string>
+ <string name="broken_images_faq">&lt;p&gt;Official HTC-afbildning er kendte for at have et mærkelig routing-problem, som betyder, at trafikafvikling ikke sker gennem tunnelen (se også &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Problem 18&lt;/a&gt; i fejlsporingen.)&lt;/p&gt;&lt;p&gt;Ældre officielle SONY-afbildninger fra Xperia Arc S og Xperia Ray er blevet rapporteret for helt at mangle VPNService i afbildningen (se også &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Problem 29&lt;/a&gt; i fejlsporingen.)&lt;/p&gt;&lt;p&gt;På tilpassede afbildningsversioner kan tun-modulet mangle eller rettigheder for /dev/tun kan være forkerte. Visse CM9-afbildninger behøver aktivering af valgmuligheden \"Korrigér ejerskab\" under \"Enhedsspecifikke hacks\" .&lt;/p&gt;&lt;p&gt;Og vigtigst: Hvis din enhed har en ødelagt Android-afbildning, så rapportér venligst dette til din salgskanal. Jo flere personer, der rapporterer et problem til salgskanalen, jo større er chancen for, at problemet bliver rettet.&lt;/p&gt;</string>
+ <string name="pkcs12_file_encryption_key">PKCS12 fil-krypterings-nøgle</string>
+ <string name="private_key_password">Private Key adgangskode</string>
+ <string name="password">Adgangskode</string>
+ <string name="file_icon">fil ikon</string>
+ <string name="tls_authentication">TLS-autentificering/kryptering</string>
+ <string name="generated_config">Genereret konfiguration</string>
+ <string name="generalsettings">Indstillinger</string>
+ <string name="owner_fix_summary">Forsøger at indstille ejeren af /dev/tun til system. Nogle CM9 images skal bruge dette for at få VPNService API\'en til at virke. Kræver root.</string>
+ <string name="owner_fix">Ret ejerskab af /dev/tun</string>
+ <string name="generated_config_summary">Vis den generede OpenVPN konfigurationsfil</string>
+ <string name="edit_profile_title">Redigerer \"%s\"</string>
+ <string name="building_configration">Bygger konfiguration&#8230;</string>
+ <string name="netchange_summary">Hvis dette tilvalg slåes til vil det gennemtvinge en genopretning af forbindelsen hvis netværkstilstanden ændres (f.eks. WIFI til/fra mobildata)</string>
+ <string name="netchange">Genopret forbindelse ved ændring i netværkstilstand</string>
+ <string name="netstatus">Netværks status: %s</string>
+ <string name="extracahint">CA certifikatet fåes som regel fra Android Keystore. Angiv et seperat certifikat hvis du certifikats-verificerings-fejl.</string>
+ <string name="select_file">Vælg</string>
+ <string name="keychain_nocacert">Intet CA Certifikat fundet under søgning i Android keystore. Autentificering vil nok mislykkes.</string>
+ <string name="show_log_summary">Vis logvinduet ved tilslutning. Du kan altid komme til logvinduet fra notifikationen.</string>
+ <string name="show_log_window">Vis logvindue</string>
+ <string name="mobile_info">%10$s %9$s kører på %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
+ <string name="error_rsa_sign">Fejl under signering med Android keystore nøgle %1$s: %2$s</string>
+ <string name="faq_system_dialogs">VPN forbindelses advarslen der fortæller dig at denne app kan aflytte al din internettrafik er pålagt af systemet for at undgå misbrug af VPNService API\'en.\nVPN-forbindelses-notifikationen (nøglesymbolet) er også pålagt af Android systemet for at signalere en aktiv VPN forbindelse. På nogle Images afspiller denne notifikation en lyd.\nAndroid introducerede system dialoger for din sikkerhed og sørgede for at de ikke kunne omgås.</string>
+ <string name="faq_system_dialogs_title">Forbindelsesadvarsel og notifikationslyd</string>
+ <string name="translationby">Dansk oversættelse af</string>
+ <string name="ipdns">IP og DNS</string>
+ <string name="basic">Grundlæggende</string>
+ <string name="routing">Routing</string>
+ <string name="obscure">Tildæk OpenVPN indstillinger. Normalt ikke nødvendigt.</string>
+ <string name="advanced">Avanceret</string>
+ <string name="export_config_title">ICS OpenVPN konfiguration</string>
+ <string name="warn_no_dns">Der anvendes ingen DNS server. Name resolution vil muligvis ikke fungere. Overvej at indstille brugerdefinerede DNS servere. Bemærk også at Android vil fortsætte med at anvende de proxy-indstillinger specificeret i din mobil/WI-FI forbindelse når der ikke er indstillet nogen DNS servere.</string>
+ <string name="dns_add_error">Kunne ikke tilføje DNS server \"%1$s\", afvist af systemet: %2$s</string>
+ <string name="ip_add_error">Kunne ikke indstille IP adresse \"%1$s\", afvist af systemet: %2$s</string>
+ <string name="faq_howto">&lt;&gt;Skaf en funktionel konfiguration (testet den på din computer eller downloadet fra din udbyder/organisation)&lt;/p&gt;&lt;p&gt;Hvis det er en enkelt fil uden ekstra pem/pkcs12 filer kan du e-maile den til dig selv og åbne vedhæftningen. Hvis du har flere filer kan du putte dem på dit sd-kort.&lt;/p&gt;&lt;p&gt;Klik på e-mailvedhæftningen/Brug mappe ikonet i VPN-listen for at importere konfigurationsfilen&lt;/p&gt;&lt;p&gt;Hvis der kommer fejlmeddelelser om manglende filer kan du placere de manglende filer på dit sd-kort.&lt;/p&gt;&lt;p&gt;Klik på gem symbolet for at tilføje den importerede VPN til din VPN-liste&lt;/p&gt;&lt;p&gt;Forbind til VPN\'en ved at klikke på dens navn&lt;/p&gt;&lt;p&gt;Hvis der er fejl eller advarsler i loggen så prøv at forstå adverslerne/fejlene og prøv at fikse dem&lt;/p&gt; </string>
+ <string name="faq_howto_title">Hurtig start</string>
+ <string name="setting_loadtun_summary">Prøv at indlæse tun.ko kernel-modulet før du forsøger at forbinde. Kræver enheden er rootet.</string>
+ <string name="setting_loadtun">Indlæs tun-modul</string>
+ <string name="importpkcs12fromconfig">Importer pkcs12 fra konfigurationen til Android Keystore</string>
+ <string name="getproxy_error">Fejl under indlæsning af proxy-indstillinger: %s</string>
+ <string name="using_proxy">Anvender proxy %1$s %2$d</string>
+ <string name="use_system_proxy">Anvend system-proxy</string>
+ <string name="use_system_proxy_summary">Anvend systemets globale konfiguration til forbindelse af HTTP/HTTPS proxy\'er.</string>
+ <string name="onbootrestartsummary">OpenVPN vil forbinde til den angivne VPN hvis den var aktiv under system opstart. Læs venligst forbindelses advarsel FAQ før du bruger demme valgmulighed på Android &lt; 5.0.</string>
+ <string name="onbootrestart">Forbind ved opstart</string>
+ <string name="ignore">Ignorer</string>
+ <string name="restart">Genstart</string>
+ <string name="restart_vpn_after_change">Konfigurationsændringer træder i kræft efter VPN\'en genstartes. (Gen)start VPN\'en nu?</string>
+ <string name="configuration_changed">Konfiguration ændret</string>
+ <string name="log_no_last_vpn">Kunne ikke bestemme den sidst forbundne profil til redigering</string>
+ <string name="faq_duplicate_notification_title">Duplikerede notifikationer</string>
+ <string name="faq_duplicate_notification">Hvis Androids system hukommelse (RAM) er under pres, vil apps og tjenester der ikke bruges i øjeblikket blive fjernet fra den aktive hukommelse. Dette afbryder den igangværende VPN-forbindelse. For at sikre at forbindelsen/OpenVPN overlever, kører tjenesten med en højere prioritet. For at køre med en højere prioritet viser programmet en notifikation. Nøgle-ikons-notifikationen bliver vist af systemet som beskrevet i det sidste FAQ indlæg. Den tæller ikke som en notifikation med det formål at køre programmet med højere prioritet.</string>
+ <string name="no_vpn_profiles_defined">Ingen VPN-profil defineret.</string>
+ <string name="add_new_vpn_hint">Brug &lt;img src=\"ic_menu_add\"/&gt; ikonet for at tilføje en ny VPN</string>
+ <string name="vpn_import_hint">Brug &lt;img src=\"ic_menu_archive\"/&gt; ikonet for at importere en eksisterende (.ovpn eller .conf) profil fra dit SD-kort.</string>
+ <string name="faq_hint">Sørg for også at læse FAQ\'en. Der er en hurtig-start-guide.</string>
+ <string name="faq_routing_title">Routing/interface konfiguration</string>
+ <string name="faq_routing">Routing og interface konfigurationen bliver ikke gjort ved hjælp af traditionel ifconfig/route kommandoer, men ved hjælp af VPNService API\'en. Dette resulterer i en anderledes routing konfiguration end i andre styresystemer.\nKonfigurationen af VPN-forbindelsen består af IP-adressen og netværkerne der skal routes gennem interfacet. Specielt er peer partner adresser eller gateway adresser nødvendige. Særlige ruter til at nå VPN-serveren (for eksempel tilføjet når der anvendes redirect-gateway) er heller ikke nødvendige. Programmet vil konsekvent ignorere disse indstillinger når det importere en konfiguration. App\'en sikre ved hjælp af VPNService API\'en at forbindelsen til serveren ikke bliver routet gennem VPN-forbindelsen.\nVPNService API\'en tillader ikke at specificere netværk der ikke skal routes gennem VPN\'en. For at arbejde sig udenom denne begrænsning prøver denne app at finde netværk der ikke skal routes gennem forbindelsen (f.eks. route x.x.x.x y.y.y.y net_gateway) and udregner et sæt ruter der ekskludere disse ruter for at efterligne adfæren på andre platforme. Logvinduet viser konfigurationen af VPNService ved etablering af en forbindelse.\nBag kulissen: Android 4.4+ bruger policy routing. Anvendes route/ifconfig vil det ikke vise de installerede ruter. Brug i stedet IP-reglen, iptables -t mangle -L</string>
+ <string name="persisttun_summary">Fald ikke tilbage på VPN-løs forbindelse når OpenVPN genforbinder.</string>
+ <string name="persistent_tun_title">Vedvarende tun</string>
+ <string name="openvpn_log">OpenVPN log</string>
+ <string name="import_config">Importér OpenVPN konfiguration</string>
+ <string name="battery_consumption_title">Batteriforbrug</string>
+ <string name="baterry_consumption">I mine personlige tests er hovedårsagen til OpenVPNs høje batteriforbrug keepalive-pakker. De fleste OpenVPN-servere har en konfigurationsregel såsom \'keepalive 10 60\', som får klienten og serveren til at udveksle keepalive-pakker hvert tiende sekund. &lt;p&gt; Selvom disse pakker er små og ikke udgør megen trafik, holder de mobilradioenetværk beskæftiget og øger dermed strømforbruget (se evt. &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt; Radio State Machine | Android Developers&lt;/a&gt;) &lt;p&gt;. Denne keepalive-indstilling kan ikke ændres på klienten, men kun systemadministratoren for OpenVPN kan ændre denne. &lt;p&gt; Ved at benytte et keepalive-niveau længere end 60 sekunder med UDP kan visse NAT-gateways droppe forbindelsen grundet en inaktivitets-timeout. Brug af TCP med en høj keepalive-tid fungerer, men tunnelering af TCP over TCP udviser en ekstrem ringe ydelse på forbindelser med højt pakketab (se &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;Why TCP over TCP is a bad idea&lt;/a&gt;).</string>
+ <string name="faq_tethering">Funktionen Android Tethering (via Wi.Fi, USB eller Bluetooth) og VPN-tjeneste-API\'et (som benyttes af denne app) fungerer ikke sammen. For yderligere oplysninger, se venligst &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;problem #34&lt;/a&gt;</string>
+ <string name="vpn_tethering_title">VPN og Tethering</string>
+ <string name="connection_retries">Forbindelses-forsøg</string>
+ <string name="reconnection_settings">Gentilslutningindstillinger</string>
+ <string name="connectretrymessage">Antal sekunder at vente mellem forbindelsesforsøg.</string>
+ <string name="connectretrywait">Sekunder mellem forbindelser</string>
+ <string name="minidump_generated">OpenVPN gik uventet ned. Overvej venligst at benytte muligheden Send Minidump i hovedmenuen</string>
+ <string name="send_minidump">Send Minidump til udvikler</string>
+ <string name="send_minidump_summary">Sender fejlsøgningsinfo om seneste nedbrud til udvikler</string>
+ <string name="notifcation_title">OpenVPN - %s</string>
+ <string name="session_ipv4string">%1$s - %2$s</string>
+ <string name="session_ipv6string">%1$s - %3$s, %2$s</string>
+ <string name="state_connecting">Tilslutning</string>
+ <string name="state_wait">Afventer serversvar</string>
+ <string name="state_auth">Godkender</string>
+ <string name="state_get_config">Henter klientkonfiguration</string>
+ <string name="state_assign_ip">Tildele IP-adresser</string>
+ <string name="state_add_routes">Tilføjer ruter</string>
+ <string name="state_connected">Tilsluttet</string>
+ <string name="state_disconnected">Afbryd</string>
+ <string name="state_reconnecting">Gentilslutter</string>
+ <string name="state_exiting">Afslutter</string>
+ <string name="state_noprocess">Kører ikke</string>
+ <string name="state_resolve">Opløser værtsnavne</string>
+ <string name="state_tcp_connect">Tilslutter (TCP)</string>
+ <string name="state_auth_failed">Godkendelse mislykkedes</string>
+ <string name="state_nonetwork">Afventer anvendeligt netværk</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
+ <string name="notifcation_title_notconnect">Ikke tilsluttet</string>
+ <string name="start_vpn_title">Forbinder til VPN %s</string>
+ <string name="start_vpn_ticker">Forbinder til VPN %s</string>
+ <string name="jelly_keystore_alphanumeric_bug">Nogle versioner af Android 4.1 har problemer, hvis navnet på keystore-certifikatet indeholder ikke-alfanumeriske tegn (som mellemrum, understregninger eller bindestreger). Prøv at genimportere certifikatet uden specialtegn</string>
+ <string name="encryption_cipher">Krypteringsstreng</string>
+ <string name="packet_auth">Pakkegodkendelse</string>
+ <string name="auth_dialog_title">Angiv pakkegodkendelsesmetode</string>
+ <string name="built_by">bygget af %s</string>
+ <string name="debug_build">fejlfindingskompilering</string>
+ <string name="official_build">officiel kompilering</string>
+ <string name="make_selection_inline">Kopiér til profil</string>
+ <string name="crashdump">Nedbruds-dump</string>
+ <string name="add">Tilføj</string>
+ <string name="send_config">Send opsætningsfil</string>
+ <string name="complete_dn">Komplet DN</string>
+ <string name="remotetlsnote">Din importerede konfiguration benytter den gamle DEPRECATED TLS-remote funktion, der benytter et andet DN-format.</string>
+ <string name="rdn">RDN (almindeligt navn)</string>
+ <string name="rdn_prefix">RDN-præfiks</string>
+ <string name="tls_remote_deprecated">TLS-REMOTE (forældet)</string>
+ <string name="help_translate">Du kan hjælpe med at oversætte ved at gå ind på http://crowdin.net/project/ics-openvpn/invite</string>
+ <string name="prompt">%1$s forsøger at styre %2$s</string>
+ <string name="remote_warning">Ved at fortsætte giver du programmet rettighed til at tage komplet kontrol over OpenVPN til Android og til at opsnappe al netværkstrafik.<b>Accepter IKKE medmindre du har tillid til programmet.</b> Ellers løber du risikoen for at få din data kompromiteret af ondsindet software.</string>
+ <string name="remote_trust">Jeg har tillid til dette program.</string>
+ <string name="no_external_app_allowed">Ingen app har lov til at anvende ekstern API</string>
+ <string name="allowed_apps">Tilladte apps: %s</string>
+ <string name="clearappsdialog">Ryd liste over tilladte eksterne apps?\nNuværende liste over tilladte apps:\n\n%s</string>
+ <string name="screenoff_summary">Paus VPN når skærmen er slukket og mindre end 64 kB data er blevet overført de sidste 60 sekunder. Når \"Vedvarende Tun\" indstillingen er slået til, vil din enhed ikke have forbindelse til netværket når VPN\'en er pauset. Uden \"Vedvarende Tun\" indstillingen til enheden ikke have nogen VPN forbindelse/beskyttelse.</string>
+ <string name="screenoff_title">Paus VPN-forbindelse efter skærmen slukkes</string>
+ <string name="screenoff_pause">Pauser forbindelse i slukket-skræm tilstand: Mindre end %1$s på %2$ss</string>
+ <string name="screen_nopersistenttun">Advarsel: Vedvarende Tun er ikke slået til på denne VPN. Internettrafik vil anvende den normale internetforbindelse når skærmen er slukket.</string>
+ <string name="save_password">Gem adgangskode</string>
+ <string name="pauseVPN">Paus VPN</string>
+ <string name="resumevpn">Genoptag VPN</string>
+ <string name="state_userpause">VPN pausning anmodet af bruger</string>
+ <string name="state_screenoff">VPN pauset - Skærmen er slukket</string>
+ <string name="device_specific">Enheds-specifikke hacks</string>
+ <string name="cannotparsecert">Kan ikke vise certifikatsinformation</string>
+ <string name="appbehaviour">Program opførsel</string>
+ <string name="vpnbehaviour">VPN opførsel</string>
+ <string name="allow_vpn_changes">Tillad ændringer til VPN-profiler</string>
+ <string name="hwkeychain">Hardware keystore:</string>
+ <string name="permission_icon_app">En app prøver at bruge OpenVPN til Androids ikon</string>
+ <string name="faq_vpndialog43">"Fra og med Android 4.3 er VPN-bekræftelsen beskyttet mod \"overlejrede apps\". Dette resulterer i, at dialogen ikke reagerer på berøringsinput. Har du en app, der benytter overlejring, kan det forårsage denne adfærd. Finder du en app, der overtrædende overlejringsbeskyttelsen, skal du kontakte app-udvikleren. Problemet påvirker alle VPN-apps på Android 4.3 og senere. Se også &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; for yderligere oplysninger"</string>
+ <string name="faq_vpndialog43_title">VPN bekræftelses dialog</string>
+ <string name="donatePlayStore">Alternativt kan du sende mig en donation med Play Butik:</string>
+ <string name="thanks_for_donation">Tak for donationen %s!</string>
+ <string name="logCleared">Log ryddet.</string>
+ <string name="show_password">Vis adgangskode</string>
+ <string name="keyChainAccessError">KeyChain adgangsfejl: %s</string>
+ <string name="timestamp_short">Kort</string>
+ <string name="timestamp_iso">ISO</string>
+ <string name="timestamps">Tidsstempler</string>
+ <string name="timestamps_none">Ingen</string>
+ <string name="uploaded_data">Upload</string>
+ <string name="downloaded_data">Download</string>
+ <string name="vpn_status">VPN status</string>
+ <string name="logview_options">Indstillinger for visning</string>
+ <string name="unhandled_exception">Ubehandlet undtagelse: %1$s\n\n%2$s</string>
+ <string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
+ <string name="faq_system_dialog_xposed">Hvis du har rootet din androidenhed kan du installere &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt; og &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialog confirm module&lt;/a&gt; på din egen risiko</string>
+ <string name="full_licenses">Fulde licenser</string>
+ <string name="blocklocal_summary">Netværk forbundet direkte til det lokale interface vil ikke blive dirigeret gennem VPN\'en. Fravælges denne indstilling vil alt trafik til lokale netværk dirigeres gennem VPN\'en.</string>
+ <string name="blocklocal_title">Forbipasser VPN for lokale netværk</string>
+ <string name="userpw_file">Brugernavn/password fil</string>
+ <string name="imported_from_file">[Importeret fra: %s]</string>
+ <string name="files_missing_hint">Nogle filer kunne ikke findes. Vælg venligst filerne for at importere profilen:</string>
+ <string name="openvpn_is_no_free_vpn">For at anvende denne app skal du bruge en VPN udbydder/VPN gateway der understøtter OpenVPN (som regel givet af din arbejdsgiver). Tjek http://community.openvpn.net/ for yderligere information om OpenVPN og instruktioner til at opsætte din egen OpenVPN server.</string>
+ <string name="import_log">Importér log:</string>
+ <string name="ip_looks_like_subnet">VPN topologi \"%3$s\" specificeret, men ifconfig %1$s %2$s ligner mere en IP-adresse med en netværksmaske. Antager \"subnet\" topologi.</string>
+ <string name="mssfix_invalid_value">MSS override-værdien skal være et heltal mellem 0 og 9000</string>
+ <string name="mtu_invalid_value">MTU-tilsidesættelsesværdien skal være et helt tal mellem 64 og 9000</string>
+ <string name="mssfix_value_dialog">Meddel TCP sessioner der kører gennem tunnelen at de skal begrænse deres sendte pakker så, efter at OpenVPN har indkapslet dem, de resulterende UDP-pakker OpenVPN sender til dets modtagere ikker bliver større end de valgte antal bytes. (standarden er 1450)</string>
+ <string name="mssfix_checkbox">Tilsidesæt MSS-værdi af ​​TCP-nyttelast</string>
+ <string name="mssfix_dialogtitle">Opsæt MSSfor TCP-dataindhold</string>
+ <string name="client_behaviour">Klientadfærd</string>
+ <string name="clear_external_apps">Ryd tilladte eksterne apps</string>
+ <string name="loading">Indlæser&#8230;</string>
+ <string name="allowed_vpn_apps_info">Tilladte VPN-apps: %1$s</string>
+ <string name="disallowed_vpn_apps_info">Ikke-tilladte VPN apps: %1$s</string>
+ <string name="app_no_longer_exists">Pakken %s er ikke længere installeret, fjerner den fra app-listen Tilladte/Ikke-tilladte</string>
+ <string name="vpn_disallow_radio">VPN benyttes til alle apps, bortset fra de valgte</string>
+ <string name="vpn_allow_radio">VPN benyttes kun til valgte apps</string>
+ <string name="query_delete_remote">Fjern fjernserverangivelse?</string>
+ <string name="keep">Behold</string>
+ <string name="delete">Slet</string>
+ <string name="add_remote">Tilføj ny fjernserver</string>
+ <string name="remote_random">Benyt forbindelsesangivelser i tilfældig rækkefølge ved tilslutning</string>
+ <string name="remote_no_server_selected">Mindst én fjernserver skal definere og aktiveres.</string>
+ <string name="server_list">Serverliste</string>
+ <string name="vpn_allowed_apps">Tilladte apps</string>
+ <string name="advanced_settings">Avancerede Indstillinger</string>
+ <string name="payload_options">Dataindholdsmuligheder</string>
+ <string name="tls_settings">TLS-indstillinger</string>
+ <string name="no_remote_defined">Ingen fjernserver defineret</string>
+ <string name="duplicate_vpn">Duplicér VPN-profil</string>
+ <string name="duplicate_profile_title">Dupliceringsprofilnavn: %s</string>
+ <string name="show_log">Vis log</string>
+ <string name="faq_android_clients">Der findes flere OpenVPN-klienter til Android. De mest almindelige er OpenVPN for Android (denne klient), OpenVPN Connect og OpenVPN Settings.&lt;p&gt;Klienterne kan placeres i to grupper: OpenVPN for Android og OpenVPN Connect bruger den officielle VPN-tjeneste API (Android 4.0+) og kræver ingen root, og OpenVPN Settings, der benytter root.&lt;p&gt;OpenVPN for Android, er en open source-klient udviklet af Arne Schwabe. Den er målrettet mere avancerede brugere og tilbyder mange indstillinger og muligheden for at importere profiler fra filer samt til at konfigurere/ændre profiler i selve i app\'en. Klienten er baseret på fællesskabsversionen af ​​OpenVPN. Den er baseret på OpenVPN 2.x-kildekoden. Denne klient kan ses som fællesskabets semi-officielle klient. &lt;p&gt;OpenVPN Connect er en ikke-open source-klient, der er udviklet af OpenVPN Technologies, Inc. Klienten er tildigtet generelt brug og mere målrettet den gennemsnitlige bruger og tillader import af OpenVPN-profiler. Denne klient er baseret på OpenVPN C ++ genimplementering af OpenVPN-protokollen (dette var påkrævet for at tillade OpenVPN Technologies, Inc at offentliggøre en iOS OpenVPN-app). Denne klient er den officielle klient for OpenVPN-teknologierne &lt;p&gt; OpenVPN Settings er den ældste af klienterne og også en brugerflade til open source OpenVPN. I modsætning til OpenVPN for Android kræver den root og benytter ikke VPN-tjeneste API. Dem afhænger ikke af Android 4.0+</string>
+ <string name="faq_androids_clients_title">Forskelle mellem OpenVPN Android-klienter</string>
+ <string name="ignore_multicast_route">Ignorerer multicast-rute: %s</string>
+ <string name="ab_only_cidr">Android understøtter kun CIDR-ruter til VPN. Da ikke-CIDR-ruter næsten aldrig benyttes, vil OpenVPN for Android benytte en /32 til ruter, som ikke er CIDR, og udstede en advarsel.</string>
+ <string name="ab_tethering_44">Tøjring fungerer, mens VPN\'en er aktiv. Den kablede forbindelse benytter IKKE VPN\'en.</string>
+ <string name="ab_kitkat_mss">Tidlige KitKat-versioner indstiller den forkerte MSS-værdi på TCP-forbindelser (#61948). Prøv at aktivere mssfix-indstillingen for at løse denne fejl.</string>
+ <string name="ab_proxy">Android vil fortsat bruge de proxyindstillinger, som er angivet til mobil/Wi-Fi-forbindelsen, når ingen DNS-servere er opsat. OpenVPN for Android vil advare dig om dette i loggen.<p>Når en VPN indstiller en DNS-server vil Android ikke benytte en proxy. Der er intet API indstilling af en proxy for en VPN-forbindelse.</p></string>
+ <string name="ab_lollipop_reinstall">VPN-apps stoppe muligvis med at fungere, hvis de afinstalleres og geninstalleres. Se #80074 for yderligere oplysninger</string>
+ <string name="ab_not_route_to_vpn">Den opsatte klient-IP og IP\'erne i netværksmasken bliver ikke sendt til VPN\'en. OpenVPN kompenserer for denne fejl ved udtrykkeligt at tilføje en rute, der korresponderer med klientens IP og dens netmaske</string>
+ <string name="ab_persist_tun">Åbning af en tun-enhed, mens en anden tun-enhed, der benyttes til vedvarende tun-understøttelse, er aktiv, medfører fejl i VPN-tjenesten på enheden. En genstart er nødvendig for at gøre VPN funktionel igen. OpenVPN for Android forsøger at undgå at genåbne tun-enheden, og hvis det virkelig er nødvendigt, lukkes først den nuværende TUN, inden den nye TUN-enhed åbnes for at undgå nedbrud. Dette kan medføre et kort interval, hvori pakker sendes over en ikke-VPN-forbindelse. Selv med denne løsning går VPN-tjenesten somme tider ned og kræver genstart af enheden.</string>
+ <string name="ab_secondary_users">VPN fungerer slet ikke for sekundære brugere.</string>
+ <string name="ab_kitkat_reconnect">"Flere brugere rapporterer, at mobilforbindelse/-dataforbindelse ofte droppes under brug af VPN-app\'en. Denne adfærd synes kun at påvirke visse kombinationer af mobiludbydere/enheder, og indtil nu har ingen årsag/løsning på fejlen kunnet identificeres."</string>
+ <string name="ab_vpn_reachability_44">Kun destinationer, der også kan nås uden VPN, kan nås via VPN. IPv6 VPN\'er virker slet ikke.</string>
+ <string name="ab_only_cidr_title">Ikke-CIDR-ruter</string>
+ <string name="ab_proxy_title">Proxy-adfærd for VPN\'er</string>
+ <string name="ab_lollipop_reinstall_title">Geninstallerer VPN-apps</string>
+ <string name="version_upto">%s og tidligere</string>
+ <string name="copy_of_profile">Kopi af %s</string>
+ <string name="ab_not_route_to_vpn_title">Rute til den konfigurerede IP-adresse</string>
+ <string name="ab_kitkat_mss_title">Forkert MSS-værdi for VPN-forbindelse</string>
+ <string name="ab_secondary_users_title">Sekundære tabletbrugere</string>
+ <string name="custom_connection_options_warng">Angiv tilpassede tilslutningsspecifikke indstillinger. Brug med omtanke</string>
+ <string name="custom_connection_options">Tilpassede indstillinger</string>
+ <string name="remove_connection_entry">Fjern forbindelsesindgang</string>
+ <string name="ab_kitkat_reconnect_title">Tilfældige afbrydelser fra mobiltnetværk</string>
+ <string name="ab_vpn_reachability_44_title">Eksterne netværk kan ikke nås</string>
+ <string name="ab_persist_tun_title">Fortsæt Tun tilstand</string>
+ <string name="version_and_later">%s og senere</string>
+ <string name="tls_cipher_alert_title">Forbindelser fejler SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure</string>
+ <string name="tls_cipher_alert">Nyere OpenVPN for Android-versioner (0.6.29/marts 2015) benytter en mere sikker standard for de tilladte chiffer-pakker (tls-chiffer \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). Uheldigvis afstedkommer udeladelse af de mindre sikre chiffer-pakker og eksportchiffer-pakker, især udeladelsen af ​​chiffer-pakker, som ikke understøtter Perfect Forward Secrecy (Diffie-Hellman), visse problemer. Dette skyldes normalt et velment, men dårligt udført, forsøg på at styrke TLS-sikkerhed ved at opsætte tls-chiffer på serveren eller nogle indlejrede operativsystemer med fjernet SSL (f.eks. MikroTik).\nFor at løse dette problem bør tls-cipher-indstillinger på serverensættes til en rimelig standard såsom tls-chiffer \"DEFAULT:! EXP:! PSK:! SRP:! kRSA\". For at løse problemet på klienten kan den tilpassede indstilling tls-chiffer DEFAULT tilføjes på Android-klienten.</string>
+ <string name="message_no_user_edit">Denne profil er tilføjet fra en ekstern app (%s) og er blevet markeret som ikke-bruger-redigerbar.</string>
+ <string name="crl_file">Liste over tilbagekaldte certifikater</string>
+ <string name="service_restarted">Genstarter OpenVPN Service (App\'en crashede, den crashede sandsynligvis eller blev stoppet på grund a RAM overbelastning)</string>
+ <string name="import_config_error">Import af konfigurationsfilen gav en fejl, kan ikke gemme</string>
+ <string name="Search">Søg</string>
+ <string name="clear_log_on_connect">Ryd log ved ny forbindelse</string>
+ <string name="connect_timeout">Forbindelses-timeout</string>
+ <string name="no_allowed_app">Ingen tilladt app tilføjet. Tilføjer selve appen (%s) for at have mindst én tilladt app, ellers vil alle apps være tilladte</string>
+ <string name="query_permissions_sdcard">OpenVPN til Android kan forsøge at finde de(n) manglende fil(er) automatisk på SD-kortet. Klik på denne besked for at starte rettighedsanmodningen.</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Aktiveret</string>
+ <string name="permission_revoked">VPN tilladelse tilbagekaldt af styresystemet (f.eks. kan et andet VPN program være startet), stopper VPN</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+</resources>
diff --git a/main/src/main/res/values-de/arrays.xml b/main/src/main/res/values-de/arrays.xml
index 10ac9568..402fda49 100755
--- a/main/src/main/res/values-de/arrays.xml
+++ b/main/src/main/res/values-de/arrays.xml
@@ -20,7 +20,7 @@
<item translatable="false">0</item>
<item translatable="false">1</item>
<item>Unspezifiziert</item>
- <item>Verschlüsselung (tls-crypt)</item>
+ <item>Verschlüsselung (--tls-crypt)</item>
</string-array>
<string-array name="crm_entries">
<item>Keine erneuter Verbindungsversuch</item>
@@ -32,6 +32,6 @@
<string-array name="auth_retry_type">
<item>Trennen, Passwort vergessen</item>
<item>Trennen, Passwort merken</item>
- <item>Fehler Ignorieren, neu verbinden</item>
+ <item>Fehler Ignorieren, erneut versuchen</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-de/plurals.xml b/main/src/main/res/values-de/plurals.xml
index 1737fa7a..d6445be6 100755
--- a/main/src/main/res/values-de/plurals.xml
+++ b/main/src/main/res/values-de/plurals.xml
@@ -14,7 +14,7 @@
<item quantity="other">%d Stunden verbleibend</item>
</plurals>
<plurals name="minutes_left">
- <item quantity="one">Ein Minute verbleibend</item>
+ <item quantity="one">Eine Minute verbleibend</item>
<item quantity="other">%d Minuten verbleibend</item>
</plurals>
</resources>
diff --git a/main/src/main/res/values-de/strings.xml b/main/src/main/res/values-de/strings.xml
index 5834f321..518be945 100755
--- a/main/src/main/res/values-de/strings.xml
+++ b/main/src/main/res/values-de/strings.xml
@@ -44,14 +44,14 @@
<string name="duplicate_profile_name">Profilname bereits vorhanden. Bitte vergeben Sie einen eindeutigen Profilnamen.</string>
<string name="profilename">Profilname</string>
<string name="no_keystore_cert_selected">Kein Benutzerzertifikat ausgewählt</string>
- <string name="no_ca_cert_selected">Kein Benutzerzertifikat ausgewählt.</string>
+ <string name="no_ca_cert_selected">Sie müssen ein CA-Zertifikat auswählen</string>
<string name="no_error_found">Kein Fehler.</string>
<string name="config_error_found">Fehler in der Konfiguration</string>
<string name="ipv4_format_error">Kann die konfigurierte IPv4 Adresse nicht parsen</string>
<string name="custom_route_format_error">Kann die manuell angegeben Routen nicht verarbeiten</string>
<string name="pw_query_hint">(Leer lassen, um nicht zu speichern)</string>
<string name="vpn_shortcut">OpenVPN-Verknüpfung</string>
- <string name="vpn_launch_title">Verbinde VPN&#8230;</string>
+ <string name="vpn_launch_title">Verbinde zu VPN&#8230;</string>
<string name="shortcut_profile_notfound">Von der Verknüpfung referenziertes Profil konnte nicht gefunden werden</string>
<string name="random_host_prefix">Zufälliger Host-Präfix</string>
<string name="random_host_summary">Fügt 6 zufällige Zeichen am Anfang des Hostnamens hinzu</string>
@@ -244,7 +244,7 @@
<string name="state_assign_ip">Weise IP-Adressen zu</string>
<string name="state_add_routes">Lege Routen an</string>
<string name="state_connected">Verbunden</string>
- <string name="state_disconnected">Trennen</string>
+ <string name="state_disconnected">Getrennt</string>
<string name="state_reconnecting">Wiederverbinden</string>
<string name="state_exiting">Beende</string>
<string name="state_noprocess">OpenVPN läuft nicht</string>
@@ -323,7 +323,7 @@
<string name="import_log">Import-Protokoll:</string>
<string name="ip_looks_like_subnet">VPN-Topologie \"%3$s\" wurde angegeben, die Interface-Konfiguration \'ifconfig %1$s %2$s sieht allerdings wie eine IP-Adresse mit einer Netzwerkmaske aus. Topologie \"subnet\" wird angenommen.</string>
<string name="mssfix_invalid_value">Wert muss eine Zahl zwischen 0 und 9000 sein</string>
- <string name="mtu_invalid_value">Der MTU-Wert muss eine Zahle zwischen 64 und 9000 sein</string>
+ <string name="mtu_invalid_value">Die MTU Override Angabe muss eine ganze Zahl zwischen 64 und 9000 sein</string>
<string name="mssfix_value_dialog">TCP-Verbindungen, die über den Tunnel laufen, anweisen, ihre maximale Paketgröße so einzustellen, dass die resultierende UDP-Paketgröße nach der Enkapsulierung durch OpenVPN auf den hier eingestellten Wert beschränkt bleibt. (Standardwert ist 1450)</string>
<string name="mssfix_checkbox">MSS-Wert der TCP-Nutzlast überschreiben</string>
<string name="mssfix_dialogtitle">MSS der TCP-Nutzlast</string>
@@ -409,7 +409,7 @@
<string name="samsung_broken_title">Samsung-Geräte</string>
<string name="novpn_selected">Kein VPN ausgewählt</string>
<string name="defaultvpn">Standard-VPN</string>
- <string name="defaultvpnsummary">Standard VPN. Wird momentan für VPN beim Booten, Always-On-Modus und die Schnellzugriffskachel benutzt.</string>
+ <string name="defaultvpnsummary">VPN für Fälle, wo ein Standard-VPN benötigt wird. Wird momentan beim Booten, Always-On-Modus und beim Schnellzugriffskachel benutzt.</string>
<string name="vpnselected">Derzeit ausgewähltes VPN: \'%s\'</string>
<string name="reconnect">Neu verbinden</string>
<string name="qs_title">VPN an-/ausschalten</string>
@@ -418,8 +418,8 @@
<string name="connectretrymaxmessage">Maximale Zeit zwischen Verbindungsversuchen. OpenVPN erhöht die Wartezeit zwischen zwei Verbindungsversuchen schrittweise bis zu dieser Zeit. Der Standardwert ist 300s.</string>
<string name="connectretrymaxtitle">Maximale Zeit zwischen Verbindungsversuchen</string>
<string name="state_waitconnectretry">Warte %ss Sekunden zwischen zwei Verbindungsversuchen</string>
- <string name="nought_alwayson_warning"><![CDATA[Wenn der VPN-Bestätigungs-Dialog nicht geöffnet wurde, ist \"Immer auf VPN\" für eine andere Anwendung aktiviert. In diesem Fall darf nur diese APP über VPN verbunden werden. Überprüfen Sie unter Einstellungen-> Netzwerke mehr... -> VPNS]]></string>
- <string name="management_socket_closed">Verbindung mit OpenVPN getrennt (%s)</string>
+ <string name="nought_alwayson_warning"><![CDATA[Wenn der VPN-Bestätigungs-Dialog nicht geöffnet wurde, ist \"Always on VPN\" für eine andere Anwendung aktiviert. In diesem Fall darf sich nur diese APP zu einem VPN verbinden. Überprüfen Sie unter Einstellungen -> Netzwerke oder Verbindungen -> mehr... oder weitere ...-> VPN]]></string>
+ <string name="management_socket_closed">Verbindung zu OpenVPN getrennt (%s)</string>
<string name="change_sorting">Sortierung ändern</string>
<string name="sort">Sortieren</string>
<string name="sorted_lru">Profile nach letzter Verwendung sortiert</string>
@@ -427,11 +427,11 @@
<string name="deprecated_tls_remote">Konfiguration verwendet die Option tls-remote, die in 2.3 als veraltet markiert und schließlich in 2.4 entfernt wurde</string>
<string name="auth_failed_behaviour">Verhalten bei AUTH_FAILED</string>
<string name="graph">Kurven</string>
- <string name="use_logarithmic_scale">logarithmische Skala verwnden</string>
- <string name="notenoughdata">noch keine Daten</string>
+ <string name="use_logarithmic_scale">Logarithmische Skala verwenden</string>
+ <string name="notenoughdata">Nicht genügend Daten</string>
<string name="avghour">Durchschnitt pro Stunde</string>
<string name="avgmin">Durchschnitt pro Minute</string>
- <string name="last5minutes">letzten 5 Minuten</string>
+ <string name="last5minutes">Die letzten 5 Minuten</string>
<string name="data_in">Eingehend</string>
<string name="data_out">Ausgehend</string>
<string name="bits_per_second">%.0f bit/s</string>
@@ -442,4 +442,18 @@
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Verbindungsstatistiken</string>
+ <string name="channel_description_background">Laufende Statistiken der OpenVPN-Verbindung</string>
+ <string name="channel_name_status">Verbindungsstatus Änderungen</string>
+ <string name="channel_description_status">Statusänderungen der OpenVPN-Verbindung (Verbindung, Authentifizierung,...)</string>
+ <string name="weakmd_title">Schwache (MD5) Hashes in Zertifikatssignatur (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL Geschwindigkeitstest</string>
+ <string name="openssl_cipher_name">OpenSSL Chiffrenamen</string>
+ <string name="osslspeedtest">OpenSSL Crypto Geschwindigkeitstest</string>
+ <string name="openssl_error">OpenSSL hat einen Fehler gemeldet</string>
+ <string name="running_test">Test läuft&#8230;</string>
+ <string name="test_algoirhtms">Ausgewählte Algorithmen testen</string>
+ <string name="all_app_prompt">Eine andere App versucht, %s zu steuern. Die anforderne App kann nicht bestimmt werden. Wenn Sie diesen Zugriff zulassen, erhalten ALLE Apps Zugriff.</string>
+ <string name="openvpn3_nostatickeys">Die OpenVPN 3 C ++ - Implementierung unterstützt keine statischen Schlüssel. Bitte wechseln Sie zu OpenVPN 2.x unter den allgemeinen Einstellungen.</string>
+ <string name="openvpn3_pkcs12">Die Benutzung von PKCS12 Dateien mit der OpenVPN 3 C++ Implementierung wird nicht unterstützt. Bitte importieren Sie entweder die PKCS12 Datei in den Android Keystore oder nutzen Sie die Option OpenVPN 2.x in den allgemeinen Einstellungen auszuwählen.</string>
</resources>
diff --git a/main/src/main/res/values-es/arrays.xml b/main/src/main/res/values-es/arrays.xml
index 93be9eb1..98e8487f 100755
--- a/main/src/main/res/values-es/arrays.xml
+++ b/main/src/main/res/values-es/arrays.xml
@@ -22,4 +22,9 @@
<item>No especificado</item>
<item>Cifrado (-tLS-cripta)</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>
</resources>
diff --git a/main/src/main/res/values-es/plurals.xml b/main/src/main/res/values-es/plurals.xml
index 2aa7eab7..0c0d5139 100755
--- a/main/src/main/res/values-es/plurals.xml
+++ b/main/src/main/res/values-es/plurals.xml
@@ -2,19 +2,19 @@
<!--Generated by crowdin.com-->
<resources>
<plurals name="months_left">
- <item quantity="one">%d mes restante</item>
- <item quantity="other">%d meses restantes</item>
+ <item quantity="one">Queda un mes</item>
+ <item quantity="other">Queda un mes</item>
</plurals>
<plurals name="days_left">
<item quantity="one">%d día restante</item>
- <item quantity="other">%d días restantes</item>
+ <item quantity="other">%d día restante</item>
</plurals>
<plurals name="hours_left">
<item quantity="one">%d hora restante</item>
- <item quantity="other">%d horas restantes</item>
+ <item quantity="other">%d hora restante</item>
</plurals>
<plurals name="minutes_left">
<item quantity="one">%d minuto restanate</item>
- <item quantity="other">%d minutos restanates</item>
+ <item quantity="other">%d minuto restanate</item>
</plurals>
</resources>
diff --git a/main/src/main/res/values-es/strings.xml b/main/src/main/res/values-es/strings.xml
index a5812bb9..de6ff5c0 100755
--- a/main/src/main/res/values-es/strings.xml
+++ b/main/src/main/res/values-es/strings.xml
@@ -51,6 +51,7 @@
<string name="custom_route_format_error">Error al analizar las rutas personalizadas</string>
<string name="pw_query_hint">(Deje en blanco para consultar sobre demanda)</string>
<string name="vpn_shortcut">Acceso directo de OpenVPN</string>
+ <string name="vpn_launch_title">Conectando a VPN&#8230;</string>
<string name="shortcut_profile_notfound">Perfil especificado en el acceso directo no encontrado</string>
<string name="random_host_prefix">Prefijo aleatorio de Host</string>
<string name="random_host_summary">Agrega 6 caracteres al azar delante del nombre de host</string>
@@ -252,6 +253,7 @@ hacia/de Móvil)</string>
<string name="state_tcp_connect">Conectando (TCP)</string>
<string name="state_auth_failed">Fallo de autenticación</string>
<string name="state_nonetwork">Esperando por una red que se pueda usar</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">No conectado</string>
<string name="start_vpn_title">Conectando a VPN %s</string>
<string name="start_vpn_ticker">Conectando a VPN %s</string>
@@ -322,6 +324,7 @@ hacia/de Móvil)</string>
<string name="import_log">Importar registros:</string>
<string name="ip_looks_like_subnet">Topología de VPN \"%3$s\" especificado pero ifconfig %1$s %2$s se parece más a una dirección IP con una máscara de red. Asumiendo una topología de \"subred\".</string>
<string name="mssfix_invalid_value">El valor de mssfix debe ser un número entero entre 0 y 9000</string>
+ <string name="mtu_invalid_value">El valor de anulación de MTU debe ser un número entero entre 64 y 9000</string>
<string name="mssfix_value_dialog">Anunciar a las sesiones TCP ejecutandose sobre el túnel que deben limitar su tamaño de paquetes enviados de tal manera que después de que OpenVPN los hay encapsulado, el tamaño del paquete UDP resultante enviado a su par no exceda este numero de bytes. (Por defecto es 1450)</string>
<string name="mssfix_checkbox">Reemplazar el valor MSS de la carga TCP</string>
<string name="mssfix_dialogtitle">Establecer MSS de la carga TCP</string>
@@ -391,9 +394,54 @@ hacia/de Móvil)</string>
<string name="query_permissions_sdcard">OpenVPN para Android puede tratar de encontrar el/los archivo/s faltante/s en la tarjeta de memoria automáticamente. Toque este mensaje de iniciar la solicitud de permiso.</string>
<string name="protocol">Protocolo</string>
<string name="enabled_connection_entry">Activo</string>
+ <string name="abi_mismatch">La precedencia de ABI nativa preferida de este dispositivo (%1$s) y la ABI informada por bibliotecas nativas (%2$s) no coinciden</string>
+ <string name="permission_revoked">Permiso de VPN revocado por el sistema operativo (por ejemplo, otro programa de VPN iniciado), deteniendo VPN</string>
+ <string name="pushpeerinfo">Presión información por igual</string>
+ <string name="pushpeerinfosummary">Enviar información adicional al servidor, por ejemplo, la versión SSL y la versión de Android</string>
+ <string name="pw_request_dialog_title">Necesito %1$s</string>
+ <string name="pw_request_dialog_prompt">Por favor, introduzca la contraseña para el perfil %1$s</string>
+ <string name="menu_use_inline_data">Utilizar datos en línea</string>
+ <string name="export_config_chooser_title">Exportar archivo de configuración</string>
+ <string name="missing_tlsauth">falta el archivo tls-auth</string>
+ <string name="missing_certificates">Falta el certificado de usuario o el archivo de clave de certifcación del usuario</string>
<string name="missing_ca_certificate">Falta certificado CA</string>
+ <string name="crl_title">Lista de revocación de certificados (opcional)</string>
<string name="reread_log">Vuelva a leer (%d) artículos de archivo de caché de registro log</string>
<string name="samsung_broken">A pesar de que los teléfonos Samsung son algunos de los teléfonos Android más vendidos, el firmware de Samsung se encuentran entre los firmware con más errores. Los errores no se limitan a la operación del VPN en estos dispositivos, pero muchos de ellos se pueden solucionar. A continuación de describen algunos errores. \n\n El DNS no funciona a menos que el servidor DNS en el rango del VPN. \n \n En muchos dispositivos Samsung 5.x la funcionalidad de aplicaciones permitidas y no permitidas no funciona. \n En Samsung 6.x Se reporta que VPN no funcionará a menos que la aplicación de VPN se encuentre por fuera de la funcionalidad de ahorro de energía.</string>
<string name="samsung_broken_title">Celulares Samsung</string>
<string name="novpn_selected">VPN no seleccionado.</string>
+ <string name="defaultvpn">VPN predeterminado</string>
+ <string name="defaultvpnsummary">VPN utilizado en lugares donde se necesita una VPN predeterminada. Estos están actualmente en arranque, para siempre y la ficha de configuración rápida.</string>
+ <string name="vpnselected">VPN actualmente seleccionada: \'%s\'</string>
+ <string name="reconnect">Reconectar</string>
+ <string name="qs_title">Alternar VPN</string>
+ <string name="qs_connect">Conéctese a %s</string>
+ <string name="qs_disconnect">Desconectar %s</string>
+ <string name="connectretrymaxmessage">Ingrese el tiempo máximo entre intentos de conexión. OpenVPN aumentará lentamente su tiempo de espera después de una tentativa de conexión fallida hasta este valor. El valor predeterminado es 300s.</string>
+ <string name="connectretrymaxtitle">Tiempo máximo entre intentos de conexión</string>
+ <string name="state_waitconnectretry">Esperando %s segundos entre intento de conexión</string>
+ <string name="nought_alwayson_warning"><![CDATA[Si no obtuvo un cuadro de diálogo de confirmación VPN, tiene \ "Siempre en VPN \" habilitado para otra aplicación. En ese caso, solo esa aplicación puede conectarse a una VPN. Verifique en Configuraciones-> Redes más .. -> VPNS]]></string>
+ <string name="management_socket_closed">Conexión a OpenVPN cerrada (%s)</string>
+ <string name="change_sorting">Cambio de clasificación</string>
+ <string name="sort">Ordenar</string>
+ <string name="sorted_lru">Perfiles ordenados por última vez usados ​​recientemente</string>
+ <string name="sorted_az">Perfiles ordenados por nombre</string>
+ <string name="deprecated_tls_remote">Config usa la opción tls-remote que quedó obsoleta en 2.3 y finalmente eliminada en 2.4</string>
+ <string name="auth_failed_behaviour">Comportamiento en AUTH_FAILED</string>
+ <string name="graph">Grafico</string>
+ <string name="use_logarithmic_scale">Usar escala logarítmica</string>
+ <string name="notenoughdata">No hay suficientes datos</string>
+ <string name="avghour">Promedio por hora</string>
+ <string name="avgmin">Promedio por minuto</string>
+ <string name="last5minutes">Últimos 5 minutos</string>
+ <string name="data_in">En</string>
+ <string name="data_out">Fuera</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-fr/arrays.xml b/main/src/main/res/values-fr/arrays.xml
index 32402de5..8ba5aa35 100755
--- a/main/src/main/res/values-fr/arrays.xml
+++ b/main/src/main/res/values-fr/arrays.xml
@@ -22,4 +22,9 @@
<item>Non spécifié</item>
<item>Chiffrement (tls-crypt)</item>
</string-array>
+ <string-array name="auth_retry_type">
+ <item>Déconnecter, oublier le mot de passe</item>
+ <item>Déconnecter, garder le mot de passe</item>
+ <item>Ignorer, réessayer</item>
+ </string-array>
</resources>
diff --git a/main/src/main/res/values-fr/strings.xml b/main/src/main/res/values-fr/strings.xml
index 5b30cee6..e0dbf668 100755
--- a/main/src/main/res/values-fr/strings.xml
+++ b/main/src/main/res/values-fr/strings.xml
@@ -6,7 +6,7 @@
-->
<resources>
<string name="app">OpenVPN for Android</string>
- <string name="address">"Adresse du serveur:"</string>
+ <string name="address">Adresse du serveur :</string>
<string name="port">Port du serveur :</string>
<string name="location">"Emplacement"</string>
<string name="cant_read_folder">Impossible de lire le dossier</string>
@@ -128,9 +128,9 @@
<string name="no_vpn_support_image">"Votre ROM ne prend pas en charge l\'API VPNService, désolé :("</string>
<string name="encryption">Chiffrement</string>
<string name="cipher_dialog_title">Entrez la méthode de chiffrement</string>
- <string name="chipher_dialog_message">Entrez l\'algorithme de chiffrement utilisé par OpenVPN. Laisser vide pour utiliser le cipher par défaut.</string>
+ <string name="chipher_dialog_message">Entrez l\'algorithme de chiffrement utilisé par OpenVPN. Laissez vide pour utiliser l\'algorithme par défaut.</string>
<string name="auth_dialog_message">Entrez l\'authentification digest utilisé pour OpenVPN. Laisser vide pour utiliser le digest par défaut.</string>
- <string name="settings_auth">Authentification / Chiffrement</string>
+ <string name="settings_auth">Authentification/Chiffrement</string>
<string name="file_explorer_tab">Explorateur de fichiers</string>
<string name="inline_file_tab">"Fichier personnalisé"</string>
<string name="error_importing_file">"Impossible d\'importer le fichier"</string>
@@ -161,11 +161,11 @@
<string name="converted_profile_i">profil importé %d</string>
<string name="broken_images">Images corrompues</string>
<string name="broken_images_faq">&lt;&gt;Les ROMs officielles HTC sont connues pour avoir des problèmes de routage entraînant que le trafic ne passe pas par le tunnel VPN. (C.f.: &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;Issue 18&lt;/a&gt; dans le \"bug tacker\")&lt;/p&gt;&lt;p&gt;Les ROMs officielles de SONY pour le Xperia Arc S et le Xperia Ray ont été signalé comme ne possédant pas le service VPN. Toute autre ROM SONY peut avoir le même problème. (C.f.: &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;Issue 29&lt;/a&gt; dans le \"bug tacker\")&lt;/p&gt;&lt;p&gt;Sur les ROM personnalisées le module TUN peut être manquant ou les droits de /dev/tun peuvent être incorrects. Certaines ROM CM9 peuvent nécessiter d\'utiliser l\'option de correction des droits de /dev/tun accessible depuis les \"Options générales\"/&lt;/p&gt;&lt;p&gt;Important: Si votre ROM a un problème, contactez le vendeur, il se peut que qu\'il vous fournisse un patch.&lt;/p&gt;</string>
- <string name="pkcs12_file_encryption_key">Fichier contenant la clé de chiffrement PKCS12</string>
+ <string name="pkcs12_file_encryption_key">Fichier avec la clé de chiffrement PKCS12</string>
<string name="private_key_password">Mot de passe de la clé privée</string>
<string name="password">Mot de passe</string>
<string name="file_icon">icône du fichier</string>
- <string name="tls_authentication">TLS Authentification/Cryptage</string>
+ <string name="tls_authentication">Authentification TLS/Chiffrement</string>
<string name="generated_config">Configuration générée</string>
<string name="generalsettings">Paramètres</string>
<string name="owner_fix_summary">Essaie de définir le propriétaire de l\'interface /dev/tun. Certaines images CM9 en ont besoin pour faire fonctionner l\'API VPNService. Nécessite les droits root.</string>
@@ -174,7 +174,7 @@
<string name="edit_profile_title">Modification \"%s\"</string>
<string name="building_configration">Création de la configuration&#8230;</string>
<string name="netchange_summary">Activer cette option forcera une reconnexion si l\'état du réseau est modifié (par exemple WiFi/Mobile)</string>
- <string name="netchange">Se reconnecter lors d\'un changement de réseau</string>
+ <string name="netchange">Se reconnecter au changement de réseau</string>
<string name="netstatus">État du réseau : %s</string>
<string name="extracahint">"Le certificat CA est généralement renvoyé par le gestionnaire de clés Android. Spécifiez un certificat distinct si vous obtenez des erreurs de vérification de certificat."</string>
<string name="select_file">"Sélectionner"</string>
@@ -205,7 +205,7 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="using_proxy">"Utilisation du proxy %1$s %2$d"</string>
<string name="use_system_proxy">"Utiliser le proxy système"</string>
<string name="use_system_proxy_summary">"Utiliser la configuration générale du système pour que les proxy HTTP / HTTPS se connectent."</string>
- <string name="onbootrestartsummary">OpenVPN connecter le VPN spécifié si elle était active au démarrage du système. S\'il vous plaît lire l\'avertissement de connexion FAQ avant d\'utiliser cette option sur Android &lt; 5.0.</string>
+ <string name="onbootrestartsummary">OpenVPN connectera le VPN spécifié si elle était active au démarrage du système. Veuillez lire l\'avertissement de connexion FAQ avant d\'utiliser cette option sur Android &lt; 5.0.</string>
<string name="onbootrestart">Se connecter au redémarrage</string>
<string name="ignore">Ignorer</string>
<string name="restart">Redémarrer</string>
@@ -215,8 +215,8 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="faq_duplicate_notification_title">Notifications en double</string>
<string name="faq_duplicate_notification">"Si Android tourne sur la mémoire du système (RAM), les application et les services qui ne sont pas nécessaires à un moment sont automatiquement supprimés de la mémoire. Cela stoppe donc la connexion VPN en cours. Pour s\'assurer que celle-ci reste toujours lancée, le service est lancé avec une priorité plus élevée. Pour cela, l\'application doit afficher une notification permanente. L\'icône de \"clé\" dans la notification est imposée par le système comme expliqué dans l\'entrée de la FAQ précédente."</string>
<string name="no_vpn_profiles_defined">Aucun profil VPN défini.</string>
- <string name="add_new_vpn_hint">"Utilisez l\'icône &lt;img src=\"ic_menu_add\"/ pour ajouter un nouveau VPN"</string>
- <string name="vpn_import_hint">"Utilisez l\'icône &lt;img src=\"ic_menu_archive\"/&gt; pour importer un fichier profil (.opvpn ou .conf) de votre carte SD."</string>
+ <string name="add_new_vpn_hint">Utilisez l\'icône &lt;img src=\"ic_menu_add\"/&gt; pour ajouter un nouveau VPN.</string>
+ <string name="vpn_import_hint">Utilisez l\'icône &lt;img src=\"ic_menu_archive\"/&gt; pour importer un profil existant (.opvpn ou .conf) depuis votre carte SD.</string>
<string name="faq_hint">"Veillez également à consulter la FAQ. Il s\'y trouve un guide de démarrage rapide."</string>
<string name="faq_routing_title">"Redirections / Configuration de l\'interface"</string>
<string name="faq_routing">La configuration du routage et des interfaces n\'est pas faite par l\'intermédiaire des commandes traditionnelles ifconfig/route, mais en utilisant l\'API VPNService. Il en résulte une configuration de routage différente que sur les autres systèmes d\'exploitation. \nLa configuration du tunnel VPN se compose de l\'adresse IP et des réseaux qui doivent être routés via cette interface. En particulier aucune adresse de pair ou de passerelle n\'est nécessaire ou requise. Des routes spéciales pour atteindre le serveur VPN (par exemple ajoutées lorsque vous utilisez \"redirect-gateway\") ne sont pas nécessaires. L\'application ignore par conséquent ces paramètres lors de l\'importation d\'une configuration. L\'application assure avec l\'API VPNService que la connexion au serveur ne passe pas par le tunnel VPN.\nL\'API VPNService ne permet pas de spécifier les réseaux qui ne doivent pas être routés via le VPN. Pour contourner ce problème, l\'application essaye de détecter les réseaux qui ne doivent pas être routés par le tunnel (ex. route x.x.x.x y.y.y.y net_gateway) et calcule un ensemble de routes qui exclut cette route pour mimer le comportement des autres plates-formes. La fenêtre des logs montre la configuration de VPNService lors d\'une connexion.\nEn coulisse: Android 4.4+ n\'utilise pas la politique du routage. Utiliser route/ifconfig n\'affichera pas les routes installés. Utilisez plutôt ip rule, iptables -t mangle -L</string>
@@ -273,7 +273,7 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="rdn_prefix">Préfixe RDN</string>
<string name="tls_remote_deprecated">tls-remote (OBSOLÈTE)</string>
<string name="help_translate">Vous pouvez aider à traduire en visitant http://crowdin.net/project/ics-openvpn/invite</string>
- <string name="prompt">%1$s essais de controler %2$s</string>
+ <string name="prompt">%1$s essaye de contrôler %2$s</string>
<string name="remote_warning">En poursuivant vous donnez la permission a l\'application de contrôler complètement OpenVPN pour Android et d\'intercepter tout le trafic réseau.<b>N\'acceptez que si vous faite confiance à l\'application.</b> Sinon vous vous exposez au risque de voir vos données compromises par un logiciel malveillant.\"</string>
<string name="remote_trust">Faire confiance à cette application.</string>
<string name="no_external_app_allowed">Aucune application n\'est autorisée à utiliser l\'API externe</string>
@@ -294,7 +294,7 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="vpnbehaviour">Comportement du VPN</string>
<string name="allow_vpn_changes">Autoriser les modifications des profils VPN</string>
<string name="hwkeychain">Clés du matériel :</string>
- <string name="permission_icon_app">Icône de l\'application qui essaie d\'utiliser OpenVPN for Android</string>
+ <string name="permission_icon_app">Icône de l\'appli essayant d\'utiliser OpenVPN for Android</string>
<string name="faq_vpndialog43">"À partir d\'Android 4.3 la confirmation VPN est gardée contre les \"applications recouvrante\". Cela se traduit par la boîte de dialogue qui ne réagi pas à la saisie tactile. Si vous avez une application qui utilise des superpositions, elle peut causer ce comportement. Si vous trouvez une application délinquante contacter l\'auteur de l\'application. Ce problème affecte toutes les applications VPN sur Android 4.3 et plus. Voir aussi &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;Issue 185&lt;a&gt; pour plus de détails"</string>
<string name="faq_vpndialog43_title">Fenêtre de confirmation du VPN</string>
<string name="donatePlayStore">Sinon vous pouvez m\'envoyer un don via le Play Store :</string>
@@ -319,10 +319,11 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="userpw_file">Fichier Nom d\'utilisateur/Mot de passe</string>
<string name="imported_from_file">[Importé de : %s]</string>
<string name="files_missing_hint">Certains fichiers sont introuvables. Sélectionner les fichiers pour importer le profil :</string>
- <string name="openvpn_is_no_free_vpn">Pour utiliser cette application, vous avez besoin d\'un fournisseur/passerelle VPN qui soutient OpenVPN (souvent fourni par votre employeur). Vérifier ici http://community.openvpn.net/ pour plus d\'informations sur OpenVPN et comment configurer votre propre serveur OpenVPN.</string>
+ <string name="openvpn_is_no_free_vpn">Pour utiliser cette application, vous avez besoin d\'un fournisseur/passerelle VPN qui soutient OpenVPN (souvent fourni par votre employeur). Vérifier ici http://community.openvpn.net pour plus d\'informations sur OpenVPN et comment configurer votre propre serveur OpenVPN.</string>
<string name="import_log">Journal d\'importation :</string>
<string name="ip_looks_like_subnet">Topologie VPN «%3$s » spécifiée mais ifconfig %1$s %2$s ressemble plus à une adresse IP avec un masque de réseau. On suppose que la topologie « sous-réseau » est utilisée.</string>
<string name="mssfix_invalid_value">La valeur de mssfix doit être un entier compris entre 0 et 9000</string>
+ <string name="mtu_invalid_value">La valeur de dépassement MTU doit être un entier compris entre 64 et 9000</string>
<string name="mssfix_value_dialog">Annoncer aux sessions TCP en cours d\'exécution sur le tunnel qu\'ils devraient limiter leurs tailles de paquets d\'émission de telle sorte qu\'après OpenVPN les a encapsulé, la taille des paquets UDP résultant que OpenVPN envoie à son homologue ne dépassera pas ce nombre d\'octets. (Valeur par défaut est 1450)</string>
<string name="mssfix_checkbox">Remplacer la valeur MSS de TCP payload</string>
<string name="mssfix_dialogtitle">Définir MSS de TCP payload</string>
@@ -402,6 +403,9 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="reread_log">Relire (%d) éléments du fichier de log</string>
<string name="samsung_broken_title">Téléphones Samsung</string>
<string name="novpn_selected">Aucun VPN sélectionné.</string>
+ <string name="defaultvpn">VPN par défaut</string>
+ <string name="defaultvpnsummary">VPN utilisé dans les endroits où un VPN par défaut est nécessaire. Ceux-ci sont actuellement en cours de démarrage, pour Always-On et la tuile de paramétrage rapide.</string>
+ <string name="vpnselected">VPN actuellement sélectionné : \"%s\"</string>
<string name="reconnect">Reconnecter</string>
<string name="qs_title">Activer VPN</string>
<string name="qs_connect">Connecter à %s</string>
@@ -414,4 +418,20 @@ Sur certaines images, cette notification joue un son.\nAndroid à introduit ces
<string name="sort">Trier</string>
<string name="sorted_lru">Profils triés par dernier récemment utilisé</string>
<string name="sorted_az">Profils triés par nom</string>
+ <string name="graph">Graphique</string>
+ <string name="use_logarithmic_scale">Utiliser l\'échelle logarithmique</string>
+ <string name="notenoughdata">Données insuffisantes</string>
+ <string name="avghour">Moyenne par heure</string>
+ <string name="avgmin">Moyenne par minute</string>
+ <string name="last5minutes">5 dernières minutes</string>
+ <string name="data_in">Entré</string>
+ <string name="data_out">Sorti</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-hu/arrays.xml b/main/src/main/res/values-hu/arrays.xml
index 9a0687b6..09e7a26f 100755
--- a/main/src/main/res/values-hu/arrays.xml
+++ b/main/src/main/res/values-hu/arrays.xml
@@ -20,6 +20,11 @@
<item translatable="false">0</item>
<item translatable="false">1</item>
<item>Nincs megadva</item>
- <item>Titkosítás (tls-crypt)</item>
+ <item>Titkosítás (--tls-crypt)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Kapcsolat bontása, jelszó elfelejtése</item>
+ <item>Kapcsolat bontása, jelszó megőrzése</item>
+ <item>Figyelmen kívül hagy, újrapróbál</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-hu/strings.xml b/main/src/main/res/values-hu/strings.xml
index 3fd765ff..d228f9e8 100755
--- a/main/src/main/res/values-hu/strings.xml
+++ b/main/src/main/res/values-hu/strings.xml
@@ -179,13 +179,13 @@
<string name="extracahint">A CA tanúsítvány általában visszajön az Android Keystore-ból. Adjon meg egy külön tanúsítványt ha tanúsítvány-ellenőrzési hibát kap.</string>
<string name="select_file">Választ</string>
<string name="keychain_nocacert">Nem jött vissza CA tanúsítvány az Android keystore olvasása során. A hitelesítés valószínűleg sikertelen lesz.</string>
- <string name="show_log_summary">Napló ablak mutatása a csatlakozás alatt. A napló ablak mindig elérető a rolóról is.</string>
+ <string name="show_log_summary">Napló ablak mutatása a csatlakozás alatt. A napló ablak mindig elérhető a rolóról is.</string>
<string name="show_log_window">Naplózási ablak mutatása</string>
<string name="mobile_info">%10$s %9$s futtatva %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Hiba az Android keystore %1$s: %2$s kulccsal való belépéskor</string>
<string name="faq_system_dialogs">A VPN csatlakozás figyelmeztetés azt jelzi, hogy ez az alkalmazás a rendszer általi teljes forgalmat lehallgathatja a VPNService API visszaélések elkerülése érdekében.\nA VPN csatlakozás értesítés (A kulcs szimbólum) is az Android rendszer jelzése egy kimenő VPN kapcsolatról. Néhány lemezképen ez az értesítés hangot is lejátszik.\nAz android az ön biztonsága érdekében vezette be ezeket a rendszer értesítéseket, és gondoskodott arról, hogy ne lehessen megkerülni. (Néhány lemezképen ez sajnos értesítési hangot is tartalmaz.)</string>
<string name="faq_system_dialogs_title">Kapcsolat figyelmeztetés és értesítés hang</string>
- <string name="translationby">A magyar fordítást készítették: kisjuhos, hd_adam, tomygee, Floo19, PettyBlue, ha1dfo</string>
+ <string name="translationby">A magyar fordítást készítették: kisjuhos, hd_adam, tomygee, Floo19, PettyBlue, ha1dfo, mmisi74, benewfy</string>
<string name="ipdns">IP és DNS</string>
<string name="basic">Alapvető</string>
<string name="routing">Útválasztás</string>
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Csatlakozás (TCP)</string>
<string name="state_auth_failed">Hitelesítési hiba</string>
<string name="state_nonetwork">Várakozás használható hálózatra</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Nincs kapcsolat</string>
<string name="start_vpn_title">Csatlakozás a %s VPN-hez</string>
<string name="start_vpn_ticker">Csatlakozás a %s VPN-hez</string>
@@ -322,6 +323,7 @@
<string name="import_log">Importálási napló:</string>
<string name="ip_looks_like_subnet">VPN topológia \"%3$s\" specifikálva, de ifconfig %1$s %2$s inkább IP címnek tűnik hálózati maszkkal. \"Alhálózat\" topológiát feltételezve.</string>
<string name="mssfix_invalid_value">Az MSS felülbírálati értéknek egész számnak kell lennie 0 és 9000 között</string>
+ <string name="mtu_invalid_value">Az MTU felülbírálati értéknek egész számnak kell lennie 64 és 9000 között</string>
<string name="mssfix_value_dialog">Jelentse be a TCP munkameneteknek, hogy korlátozniuk kell a küldendő csomagjaik méretét hogy miután az OpenVPN bekapszulázza őket a peer-nek küldendő eredmény UDP csomag mérete ne haladhassa meg ezt a byte számot. (az alapérték 1450)</string>
<string name="mssfix_checkbox">TCP payload MSS felülbírálati érték</string>
<string name="mssfix_dialogtitle">MSS beállítás a TCP payload-hoz</string>
@@ -406,6 +408,9 @@
<string name="samsung_broken">Annak ellenére, hogy a Samsung telefonok a legtöbbet eladott Android telefonok közé tartoznak, a Samsung firmware-ek a leg bug-osabb Android firmware-ek. Ezeken az eszközökön a hibák nem csak a VPN működésre korlátozódnak, de nagy részük kiküszöbölhető. A következő néhány ilyen hiba leírása.\n\nA DNS nem működik hacsak nem a DNS kiszolgáló a VPN tartományban van.\n\nSok Samsung 5.x eszközön nem működik az engedélyezett/tiltott alkalmazások funkció.\nSamsung 6.0-n a VPN nem működik hacsak nem adjuk hozzá kivételként az alkalmazást a Powersave funkcióknál.</string>
<string name="samsung_broken_title">Samsung telefonok</string>
<string name="novpn_selected">Nincs VPN kiválasztva.</string>
+ <string name="defaultvpn">Alapértelmezett VPN</string>
+ <string name="defaultvpnsummary">VPN használata azokon a helyeken ahol alapértelmezett VPN szükséges. Ezek jelenleg a boot-oláskor, a Mindig-BE és a Gyors Beállítások csempe.</string>
+ <string name="vpnselected">Jelenleg kiválasztott VPN: \'%s\'</string>
<string name="reconnect">Újracsatlakozás</string>
<string name="qs_title">VPN be/kikapcsolás</string>
<string name="qs_connect">Csatlakozás %s-hez</string>
@@ -420,4 +425,53 @@
<string name="sorted_lru">A profilok a legutóbbi használat szerint rendezve</string>
<string name="sorted_az">A profilok név szerint rendezve</string>
<string name="deprecated_tls_remote">A konfiguráció tls-remote opciót használ, ami a 2.3-ban elavulttá vált és a 2.4-ben végleg eltávolították</string>
+ <string name="auth_failed_behaviour">Viselkedés AUTH_FAILED-kor</string>
+ <string name="graph">Grafikon</string>
+ <string name="use_logarithmic_scale">Logaritmikus skála használata</string>
+ <string name="notenoughdata">Nincs elég adat</string>
+ <string name="avghour">Átlag óránként</string>
+ <string name="avgmin">Átlag percenként</string>
+ <string name="last5minutes">Utolsó 5 perc</string>
+ <string name="data_in">Be</string>
+ <string name="data_out">Ki</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="weakmd">&lt;p&gt;Az OpenSSL az 1.1-es verziótól kezdve elutasítja a gyenge aláírásokat, mint például
+ az MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Az MD5 aláírások egyáltalán nem biztonságosak, a továbbiakban nem kellene használni.&lt;/b&gt; MD5
+ ütközést lehet létrehozni&lt;
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt;néhány óra alatt minimális erőfeszítéssel.&lt;/a&gt;.
+ Frissítenie kellene a VPN tanúsítványokat amint lehetséges.&lt;/p&gt;&lt;p&gt;Sajnos, a régebbi easy-rsa disztribúciók a \"default_md md5\" beállítás opciót tartalmazták. Ha régi easy-rsa verziót használ, frissítsen
+ a &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;legutóbbi verzióra&lt;/a&gt;) vagy módosítsa az md5-ot sha256-ra és
+ generálja újra a tanúsítványokat.&lt;/p&gt;&lt;p&gt;Ha mégis a régi megtört tanúsítványokat szeretné használni, akkor használja
+ tls-cipher \"DEFAULT:@SECLEVEL=0\" konfiguráció opciót a haladó beállításoknál, vagy adja hozzá mint új sort
+ az importált konfigurációhoz.&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Kapcsolatstatisztika</string>
+ <string name="channel_description_background">A létrehozott OpenVPN kapcsolat pillanatnyi statisztikái</string>
+ <string name="channel_name_status">Kapcsolat állapot változás</string>
+ <string name="channel_description_status">Állapotváltozások az OpenVPN kapcsolatban (Csatlakozás, hitelesítés,&#8230;)
+ </string>
+ <string name="weakmd_title">Gyenge (MD5) hash-ek a tanúsítvány aláírásban (SSL_CTX_use_certificate md túl gyenge)
+ </string>
+ <string name="title_activity_open_sslspeed">OpenSSL Sebesség Teszt</string>
+ <string name="openssl_cipher_name">OpenSSL titkosítások</string>
+ <string name="osslspeedtest">OpenSSL Titkosítás Sebesség teszt</string>
+ <string name="openssl_error">Az OpenSSL hibával tért vissza</string>
+ <string name="running_test">A teszt fut&#8230;</string>
+ <string name="test_algoirhtms">Kijelölt algoritmusok tesztelése</string>
+ <string name="all_app_prompt">Egy külső alkalmazás megpróbálja vezérelni a(z) %s-t. Az alkalmazást nem lehet felismerni, a hozzáférés megadása
+ MINDEN alkalmazás számára elérhetőséget biztosít.
+ </string>
+ <string name="openvpn3_nostatickeys">Az OpenVPN 3 C++ implementáció nem támogatja a statikus kulcsokat, Kérem, váltson
+ OpenVPN 2.x-re az általános beállításokban.
+ </string>
+ <string name="openvpn3_pkcs12">PKCS12-fájlok közvetlen használata nem támogatott az OpenVPN 3 C++ implementációval.
+ Kérem, importálja az Android kulcstárba a pkcs12 fájlokat, vagy váltson OpenVPN 2.x-re az általános beállításokban.
+ </string>
</resources>
diff --git a/main/src/main/res/values-in/arrays.xml b/main/src/main/res/values-in/arrays.xml
index c876ea78..12e205be 100755
--- a/main/src/main/res/values-in/arrays.xml
+++ b/main/src/main/res/values-in/arrays.xml
@@ -15,7 +15,7 @@
<item>Kunci Tetap</item>
<item>Pengguna/Kata Sandi + Sertifikat</item>
<item>Pengguna/Kata Sandi + PKCS12 </item>
- <item>Pengguna/Kata Sandi + Android</item>
+ <item>Pengguna/Kata Sandi + Danian</item>
</string-array>
<string-array name="tls_directions_entries">
<item translatable="false">0</item>
@@ -25,7 +25,7 @@
</string-array>
<string-array name="auth_retry_type">
<item>Disconnect, forget password</item>
- <item>Disconnect, keep password</item>
+ <item>Putus, simpan kata sandi</item>
<item>Abaikan, coba lagi</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-in/strings.xml b/main/src/main/res/values-in/strings.xml
index 41fc6a67..4b6c7488 100755
--- a/main/src/main/res/values-in/strings.xml
+++ b/main/src/main/res/values-in/strings.xml
@@ -12,19 +12,19 @@
<string name="cant_read_folder">Gagal membaca direktori:</string>
<string name="select">Pilih</string>
<string name="cancel">Batal</string>
- <string name="no_data">Tak ada data</string>
+ <string name="no_data">Tidak ada data</string>
<string name="useLZO">Kompresi LZO</string>
- <string name="client_no_certificate">Tanpa Sertifikat</string>
+ <string name="client_no_certificate">Tidak ada Sertifikat</string>
<string name="client_certificate_title">Sertifikat Klien</string>
<string name="client_key_title">Kunci Sertifikat Klien</string>
<string name="client_pkcs12_title">Berkas PKCS12</string>
<string name="ca_title">Sertifikat CA</string>
<string name="no_certificate">Anda harus memilih sertifikat</string>
- <string name="copyright_guicode">Kode sumber dan pelacak masalah tersedia di http://code.google.com/p/ics-openvpn/</string>
- <string name="copyright_others">Program ini menggunakan komponen-komponen berikut ini; lihat kode sumber penjelasan lengkap mengenai lisensi</string>
+ <string name="copyright_guicode">Kode sumber dan masalah pelacak tersedia di http://code.google.com/p/ics-openvpn/</string>
+ <string name="copyright_others">Program ini menggunakan komponen berikut ini; lihat kode sumber penjelasan lengkap mengenai lisensi</string>
<string name="about">Tentang</string>
<string name="vpn_list_title">Profil</string>
- <string name="vpn_type">Jenis</string>
+ <string name="vpn_type">Tipe</string>
<string name="pkcs12pwquery">Password PKCS12</string>
<string name="file_select">Pilih&#8230;</string>
<string name="file_nothing_selected">Anda harus memilih setidaknya satu berkas</string>
@@ -54,21 +54,21 @@
<string name="vpn_launch_title">Dyan</string>
<string name="shortcut_profile_notfound">Profil di shrotcut tidak ada</string>
<string name="random_host_prefix">Acak awalan Host </string>
- <string name="random_host_summary">Tambah 6 karakter acak di depan nama host</string>
- <string name="custom_config_title">Aktifkan pilihan buatan</string>
- <string name="custom_config_summary">Tentukan seting buatan. Gunakan hati-hati!</string>
- <string name="route_rejected">Rute ditolak Android</string>
- <string name="cancel_connection">Putus</string>
+ <string name="random_host_summary">Tambahkan 6 karakter acak di depan nama host</string>
+ <string name="custom_config_title">Aktifkan pilihan buatan (Custom)</string>
+ <string name="custom_config_summary">Tentukan seting buatan (Custom). Gunakan hati-hati!</string>
+ <string name="route_rejected">Rute ditolak oleh Android</string>
+ <string name="cancel_connection">Koneksi Putus</string>
<string name="cancel_connection_long">Memutuskan sambungan VPN</string>
<string name="clear_log">Bersihkan catatan</string>
- <string name="title_cancel">Batal Konfirmasi</string>
- <string name="cancel_connection_query">Putuskan sambungan VPN/Batalkan usaha menyambungkan VPN?</string>
- <string name="remove_vpn">Singkirkan VPN</string>
+ <string name="title_cancel">Membatalkan Konfirmasi</string>
+ <string name="cancel_connection_query">Putuskan sambungan VPN/Batalkan upaya penyambungan VPN?</string>
+ <string name="remove_vpn">Hapus VPN</string>
<string name="check_remote_tlscert">Memeriksa apakah server menggunakan sertifikat dengan ekstensi TLS Server (--server remote-cert-tls)</string>
<string name="check_remote_tlscert_title">Mengharapkan sertifikat server TLS</string>
- <string name="remote_tlscn_check_summary">Memeriksa sertifikat Remote Server Subjek DN</string>
+ <string name="remote_tlscn_check_summary">Memeriksa sertifikat Remote Server dengan Subjek DN</string>
<string name="remote_tlscn_check_title">Cek nama sertifikat Host</string>
- <string name="enter_tlscn_dialog">Tentukan nilai ynag digunakan untuk memverifikasi sertifikat remote DN (misal C=nama perusahaan, L=Kota lokasi, OU=nama departemen perusahaan, CN=openvpn.blinkt.de. Tentukan DN atau RDN yang lengkap (dalam contoh : openvpn.blinkt.de) atau sebuah awalan RDN untuk verifikasi. Saat memakai RDN awalan \"server\" cocok dengan \"server-1\" dan \"server-2\". Mengosongkan field akan membuat RDN diperiksa dengan nama host server. Lebih jelasnya lihat OpenVPN 2.3.1 manpage di bagian -verify-x509-name</string>
+ <string name="enter_tlscn_dialog">Tentukan nilai yang digunakan untuk memverifikasi sertifikat remote DN (misal C=nama perusahaan, L=Kota lokasi, OU=nama departemen perusahaan, CN=openvpn.blinkt.de. Tentukan DN atau RDN yang lengkap (dalam contoh: openvpn.blinkt.de) atau sebuah awalan RDN untuk verifikasi. Saat memakai RDN awalan \"server\" cocok dengan \"server-1\" dan \"server-2\". Mengosongkan field akan membuat RDN diperiksa dengan nama host server. Lebih jelasnya lihat OpenVPN 2.3.1 manpage di bagian -verify-x509-name</string>
<string name="enter_tlscn_title">Subyek sertifikat remote</string>
<string name="tls_key_auth">Aktifkan otentifikasi kunci TLS</string>
<string name="tls_auth_file">Berkas otintikasi TLS</string>
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Menghubungkan (TCP)</string>
<string name="state_auth_failed">Otentifikasi gagal</string>
<string name="state_nonetwork">Menunggu jaringan yang dapat dipakai</string>
+ <string name="statusline_bytecount">↓%2$s/s %1$s - ↑%4$s/s %3$s</string>
<string name="notifcation_title_notconnect">Tidak terhubung</string>
<string name="start_vpn_title">Menghubungkan ke VPN %s</string>
<string name="start_vpn_ticker">Menghubungkan ke VPN %s</string>
@@ -322,6 +323,7 @@
<string name="import_log">Log impor:</string>
<string name="ip_looks_like_subnet">Vpn topologi \"%3$s\" ditentukan tapi ifconfig %1$s %2$s terlihat lebih seperti alamat IP dengan mask jaringan. Dengan asumsi \"subnet\" topologi.</string>
<string name="mssfix_invalid_value">Nilai menimpa MSS telah menjadi bulat antara 0 dan 9000</string>
+ <string name="mtu_invalid_value">Nilai penggantian MTU harus bilangan bulat antara 64 dan 9000</string>
<string name="mssfix_value_dialog">Mengumumkan kepada sesi TCP berjalan di atas terowongan bahwa mereka harus membatasi kirim ukuran paket mereka seperti bahwa setelah OpenVPN telah dikemas mereka, sehingga UDP ukuran paket yang OpenVPN mengirim ke rekan-nya tidak akan melebihi jumlah ini byte. (default adalah 1450)</string>
<string name="mssfix_checkbox">Mengganti nilai MSS TCP muatan</string>
<string name="mssfix_dialogtitle">Mengatur muatan MSS TCP</string>
@@ -383,4 +385,61 @@
<string name="service_restarted">Restart layanan OpenVPN (App jatuh mungkin jatuh atau dibunuh untuk memori tekanan)</string>
<string name="import_config_error">Mengimpor konfigurasi menghasilkan kesalahan, tidak bisa menyimpannya</string>
<string name="Search">Pencarian</string>
+ <string name="lastdumpdate">(Sampah terakhir adalah %1$d: %2$dh lama (%3$s))</string>
+ <string name="clear_log_on_connect">Hapus log pada koneksi baru</string>
+ <string name="connect_timeout">Hubungkan Timeout</string>
+ <string name="no_allowed_app">Tidak ada aplikasi yang diizinkan ditambahkan Menambahkan diri kita (%s) untuk memiliki setidaknya satu aplikasi dalam daftar aplikasi yang diizinkan agar tidak mengizinkan semua aplikasi</string>
+ <string name="query_permissions_sdcard">OpenVPN untuk Android dapat mencoba untuk menemukan file yang hilang pada sdcard secara otomatis. Ketuk pesan ini untuk memulai.</string>
+ <string name="protocol">Protokol</string>
+ <string name="enabled_connection_entry">Diaktifkan</string>
+ <string name="abi_mismatch">Preferred native ABI yang diutamakan dari perangkat ini (%1$s) dan ABI dilaporkan oleh perpustakaan asli (%2$s) ketidakcocokan</string>
+ <string name="permission_revoked">[01.55] Routes excluded: 10.0.0.0/8, *********/32, 172.16.0.0/12, 192.168.0.0/16 </string>
+ <string name="pushpeerinfo">Info Push Peer</string>
+ <string name="pushpeerinfosummary">Send extra information to the server, e.g. SSL version and Android version</string>
+ <string name="pw_request_dialog_title">Butuh %1$s</string>
+ <string name="pw_request_dialog_prompt">Silakan masukkan sandi untuk profil %1$s</string>
+ <string name="menu_use_inline_data">Gunakan data inline</string>
+ <string name="export_config_chooser_title">Ambil berkas konfigurasi</string>
+ <string name="missing_tlsauth">File tls-auth hilang</string>
+ <string name="missing_certificates">Sertifikat pengguna atau file kunci pengguna certifcate hilang</string>
+ <string name="missing_ca_certificate">Sertifikat CA tidak ditemukan</string>
+ <string name="crl_title">Daftar Pencabutan Certifcate (opsional)</string>
+ <string name="reread_log">Baca ulang (%d) item log dari file cache log</string>
+ <string name="samsung_broken">Jjj</string>
+ <string name="samsung_broken_title">Ponsel Samsung</string>
+ <string name="novpn_selected">Tidak ada VPN yang dipilih.</string>
+ <string name="defaultvpn">VPN default</string>
+ <string name="defaultvpnsummary">VPN digunakan di tempat VPN default dibutuhkan. Ini saat ini sedang boot, Always-On dan Quick Settings Tile.</string>
+ <string name="vpnselected">VPN yang dipilih saat ini: \'%s\'</string>
+ <string name="reconnect">Menghubungkan kembali</string>
+ <string name="qs_title">Toggle VPN</string>
+ <string name="qs_connect">Menghubungkan ke %s</string>
+ <string name="qs_disconnect">Memutuskan %s</string>
+ <string name="connectretrymaxmessage">Masukkan waktu maksimum antara upaya koneksi. OpenVPN secara perlahan akan menaikkan waktu tunggunya setelah usaha koneksi gagal mencapai nilai ini. Default ke 300s.</string>
+ <string name="connectretrymaxtitle">Waktu maksimum antar upaya koneksi</string>
+ <string name="state_waitconnectretry">Menunggu %s detik di antara upaya koneksi</string>
+ <string name="nought_alwayson_warning"><![CDATA[Jika Anda tidak mendapatkan dialog konfirmasi VPN, Anda memiliki \"Always on VPN\" yang diaktifkan untuk aplikasi lain. Dalam hal ini hanya aplikasi yang diizinkan yang terhubung ke VPN. Berikan centang di bawah Settings-> Networks more .. -> VPNS]]></string>
+ <string name="management_socket_closed">Sambungan ke OpenVPN ditutup (%s)</string>
+ <string name="change_sorting">Ubah penyortiran</string>
+ <string name="sort">Urutkan</string>
+ <string name="sorted_lru">Profil diurutkan berdasarkan terakhir yang terakhir digunakan</string>
+ <string name="sorted_az">Profil diurutkan berdasarkan nama</string>
+ <string name="deprecated_tls_remote">Config menggunakan opsi tls-remote yang sudah ditinggalkan di 2.3 dan akhirnya dihapus di 2.4</string>
+ <string name="auth_failed_behaviour">Perilaku pada AUTH_FAILED</string>
+ <string name="graph">Grafik</string>
+ <string name="use_logarithmic_scale">Gunakan skala logaritmik</string>
+ <string name="notenoughdata">Tidak cukup data</string>
+ <string name="avghour">Rata-rata per jam</string>
+ <string name="avgmin">Rata-rata per jam</string>
+ <string name="last5minutes">5 menit terakhir</string>
+ <string name="data_in">Masuk</string>
+ <string name="data_out">Keluar</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-it/arrays.xml b/main/src/main/res/values-it/arrays.xml
index f71ada65..b03a7a07 100755
--- a/main/src/main/res/values-it/arrays.xml
+++ b/main/src/main/res/values-it/arrays.xml
@@ -20,6 +20,11 @@
<item translatable="false">0</item>
<item translatable="false">1</item>
<item>Non specificato</item>
- <item>Encryption (--tls-crypt)</item>
+ <item>Crittografia (--tls-crypt)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Disconnetti, elimina la password</item>
+ <item>Disconnetti, mantieni la password</item>
+ <item>Ignora, riprova</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-it/plurals.xml b/main/src/main/res/values-it/plurals.xml
index 70489fbc..ae8b7c61 100755
--- a/main/src/main/res/values-it/plurals.xml
+++ b/main/src/main/res/values-it/plurals.xml
@@ -1,3 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Un mese rimanente</item>
+ <item quantity="other">%d mesi rimanenti</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Un giorno rimanente</item>
+ <item quantity="other">%d giorni rimanenti</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Un\'ora rimanente</item>
+ <item quantity="other">%d ore rimanenti</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Un minuto rimanente</item>
+ <item quantity="other">%d minuti rimanenti</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-it/strings.xml b/main/src/main/res/values-it/strings.xml
index 983d5faa..d6ab0e1f 100755
--- a/main/src/main/res/values-it/strings.xml
+++ b/main/src/main/res/values-it/strings.xml
@@ -44,23 +44,25 @@
<string name="duplicate_profile_name">Si prega di inserire un nome univoco del profilo</string>
<string name="profilename">Nome del profilo</string>
<string name="no_keystore_cert_selected">Devi selezionare un certificato utente</string>
+ <string name="no_ca_cert_selected">Devi selezionare un certificato</string>
<string name="no_error_found">Nessun errore trovato</string>
<string name="config_error_found">Errore nella configurazione</string>
<string name="ipv4_format_error">Impossibile analizzare l\'indirizzo IPv4</string>
<string name="custom_route_format_error">Errore durante la lettura delle regole di reindirizzamento (routing)</string>
<string name="pw_query_hint">(non compilare perché venga sempre richiesto)</string>
<string name="vpn_shortcut">Collegamento a OpenVPN</string>
+ <string name="vpn_launch_title">Connessione alla VPN&#8230;</string>
<string name="shortcut_profile_notfound">Profilo indicato nel collegamento non trovato</string>
<string name="random_host_prefix">Prefisso Host casuale</string>
<string name="random_host_summary">Aggiunge 6 caratteri casuali prima dell\'hostname</string>
<string name="custom_config_title">Abilita opzioni personalizzate</string>
<string name="custom_config_summary">Specifica opzioni personalizzate. Utilizzare con cautela!</string>
<string name="route_rejected">Reindirizzamento (route) rifiutato da Android</string>
- <string name="cancel_connection">Scollega</string>
+ <string name="cancel_connection">Disconnetti</string>
<string name="cancel_connection_long">Disconnettere VPN</string>
<string name="clear_log">Cancella registro</string>
<string name="title_cancel">Conferma l\'annullamento</string>
- <string name="cancel_connection_query">Disconnetti la VPN in uso/annulli il tentativo di connessione?</string>
+ <string name="cancel_connection_query">Disconnettere la VPN in uso/annullare il tentativo di connessione?</string>
<string name="remove_vpn">Rimuovi VPN</string>
<string name="check_remote_tlscert">Controlla se il server utilizza un certificato con estensioni TLS (--remote-cert-tls server)</string>
<string name="check_remote_tlscert_title">Attesa di un certificato server TLS</string>
@@ -165,6 +167,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="private_key_password">Password della chiave privata</string>
<string name="password">Password</string>
<string name="file_icon">icona del file</string>
+ <string name="tls_authentication">Autenticazione/crittografia TLS</string>
<string name="generated_config">Configurazione generata</string>
<string name="generalsettings">Impostazioni</string>
<string name="owner_fix_summary">Tenta di impostare system come proprietario di /dev/tun. Alcuni firmware CM9 necessitano di questa impostazione affinché le API del servizio VPN funzionino. E\' necessario essere root.</string>
@@ -180,6 +183,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="keychain_nocacert">Nessun certificato della CA è stato prelevato dal Keystore di Android. E\' probabile che l\'autenticazione fallisca.</string>
<string name="show_log_summary">Mostra la finestra dei log della connessione. Si può sempre accedere alla finestra dei log tramite la barra delle notifiche.</string>
<string name="show_log_window">Visualizza la finestra dei log</string>
+ <string name="mobile_info">%10$s %9$s in esecuzione su %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Errore di firma con la chiave %1$s: %2$s del Keystore di Android.</string>
<string name="faq_system_dialogs">L\'avvertimento durante la connessione VPN, in cui si informa che questo programma può intercettare tutto il traffico del sistema, serve a prevenire un uso fraudolento delle API del servizio VPN.\nL\'icona di notifica a forma di chiave è altresì imposta dal sistema Android per avvertire che si è connessi ad una VPN. Su alcuni apparecchi questa notifica è accompagnata da un suono.\nAndroid utilizza questi sistemi per la tua sicurezza e per assicurarsi che questi non vengano aggirati (in alcuni firmware questo sfortunamente è accompagnato da un suono di avvertimento).</string>
<string name="faq_system_dialogs_title">Avviso di connessione e notifica sonora</string>
@@ -202,6 +206,8 @@ Effettuata la lettura del file di configurazione</string>
<string name="using_proxy">Si sta utilizzando il proxy %1$s %2$d</string>
<string name="use_system_proxy">Utilizza il proxy di sistema</string>
<string name="use_system_proxy_summary">Utilizza la configurazione generale del sistema relativa ai proxy HTTP/HTTPS per connettersi.</string>
+ <string name="onbootrestartsummary">OpenVPN connetterà la VPN specificata se è attiva durante l\'avvio del sistema. Leggi le domande di avviso di connessione prima di utilizzare questa opzione in Android &lt; 5.0.</string>
+ <string name="onbootrestart">Connessione all\'avvio</string>
<string name="ignore">Ignora</string>
<string name="restart">Riavvia</string>
<string name="restart_vpn_after_change">Le modifiche sarannoi applicate dopo aver riavviato la connessione VPN. Riavviare ora la connessione?</string>
@@ -248,6 +254,7 @@ Effettuata la lettura del file di configurazione</string>
<string name="state_tcp_connect">Connessione in corso (TCP)</string>
<string name="state_auth_failed">Autenticazione fallita</string>
<string name="state_nonetwork">In attesa di una rete utilizzabile</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Non connesso</string>
<string name="start_vpn_title">Connessione alla VPN %s in corso</string>
<string name="start_vpn_ticker">Connessione alla VPN %s in corso</string>
@@ -316,7 +323,10 @@ Effettuata la lettura del file di configurazione</string>
<string name="files_missing_hint">Alcuni file non possono essere trovati. Si prega di selezionare i file da importare nel profilo:</string>
<string name="openvpn_is_no_free_vpn">Per utilizzare questa applicazione è necessario un provider VPN/gateway VPN che supportino OpenVPN (spesso forniti dal datore di lavoro). Vai a http://community.openvpn.net/ per ulteriori informazioni su OpenVPN e come configurare il proprio server OpenVPN.</string>
<string name="import_log">Registro importazione:</string>
+ <string name="ip_looks_like_subnet">Topologia Vpn \"%3$s\" specificata, ma ifconfig %1$s %2$s sembra più un indirizzo IP con una maschera di rete. Assumendo la topologia di \"sottorete\".</string>
<string name="mssfix_invalid_value">Il valore di fix MSS deve essere un intero tra 0 e 9000</string>
+ <string name="mtu_invalid_value">Il valore di override MTU deve essere un intero compreso tra 64 e 9000</string>
+ <string name="mssfix_value_dialog">Notificare alle sessioni TCP in esecuzione sul tunnel che dovrebbero limitare i loro formati di pacchetti di invio dopo che OpenVPN li ha incapsulati, la dimensione del pacchetto UDP risultante da OpenVPN inviata al proprio peer non supererà questo numero di byte. (Impostazione predefinita è 1450)</string>
<string name="mssfix_checkbox">Sovrascrivi il valore del MSS nel payload TCP</string>
<string name="mssfix_dialogtitle">Setta il valore del MSS nel payload TCP</string>
<string name="client_behaviour">Comportamento Client</string>
@@ -331,14 +341,107 @@ Effettuata la lettura del file di configurazione</string>
<string name="keep">Mantieni</string>
<string name="delete">Elimina</string>
<string name="add_remote">Aggiungi nuovo server</string>
+ <string name="remote_random">Utilizza le voci di connessione in ordine casuale di connessione</string>
+ <string name="remote_no_server_selected">È necessario definire e abilitare almeno un server remoto.</string>
<string name="server_list">Lista Server</string>
<string name="vpn_allowed_apps">Applicazioni consentite</string>
<string name="advanced_settings">Impostazioni Avanzate</string>
<string name="payload_options">Opzioni Payload</string>
<string name="tls_settings">Impostazioni TLS</string>
+ <string name="no_remote_defined">Nessuna destinazione definita</string>
<string name="duplicate_vpn">Profilo VPN duplicato</string>
<string name="duplicate_profile_title">Duplicazione del profilo: %s</string>
<string name="show_log">Mostra il log</string>
+ <string name="faq_android_clients">Esistono diversi client OpenVPN per Android. I più comuni sono OpenVPN per Android (questo client), OpenVPN Connect e OpenVPN Settings.&lt;p&gt;I clienti possono essere raggruppati in due gruppi: OpenVPN per Android e OpenVPN Connect utilizzano l\'API VPNService ufficiale (Android 4.0+) e non necessitano di root e OpenVPN Settings che utilizza root.&lt;p&gt;OpenVPN per Android è un client open source sviluppato da Arne Schwabe. È destinato a utenti più avanzati e offre molte impostazioni e la possibilità di importare profili da file e di configurare/modificare i profili all\'interno dell\'applicazione. Il client si basa sulla versione comunitaria di OpenVPN. Si basa sul codice sorgente OpenVPN 2.x. Questo client può essere visto come il client semi ufficiale della comunità. &lt;p&gt;OpenVPN Connect è un client non open source sviluppato da OpenVPN Technologies, Inc. Il client è destinato ad un uso generale e più mirato all\'utente medio e consente l\'importazione di profili OpenVPN. Questo client si basa sulla reimplementazione OpenVPN C ++ del protocollo OpenVPN (questo era necessario per consentire a OpenVPN Technologies, Inc di pubblicare un\'applicazione iOS OpenVPN). Questo client è il client ufficiale delle tecnologie OpenVPN &lt;p&gt; OpenVPN Settings è il più vecchio dei client ed è anche un\'interfaccia utente per OpenVPN Open Source. A differenza di OpenVPN per Android richiede root e non utilizza l\'API VPNService. Non dipende da Android 4.0+</string>
+ <string name="faq_androids_clients_title">Differenze tra i client OpenVPN di Android</string>
+ <string name="ignore_multicast_route">Ignora route multicast: %s</string>
+ <string name="ab_only_cidr">Android supporta solo le route CIDR alla VPN. Poiché i percorsi non CIDR sono quasi mai usati, OpenVPN per Android utilizzerà un /32 per percorsi che non sono CIDR ed invieranno un avviso.</string>
+ <string name="ab_tethering_44">Le operazioni di tethering funzionano mentre la VPN è attiva. La connessione di tether NON utilizzerà la VPN.</string>
+ <string name="ab_kitkat_mss">La prima versione KitKat ha impostato il valore MSS errato sulle connessioni TCP (#61948). Prova ad abilitare l\'opzione mssfix per risolvere questo problema.</string>
+ <string name="ab_proxy">Android continuerà a utilizzare le impostazioni proxy specificate per la connessione mobile/Wi-Fi quando non vengono impostati server DNS. OpenVPN per Android ti avviserà in questo registro.<p>Quando una VPN imposta un server DNS, Android non utilizzerà un proxy. Non esistono API per impostare un proxy per una connessione VPN</p></string>
+ <string name="ab_lollipop_reinstall">Le applicazioni VPN potrebbero smettere di funzionare durante la disinstallazione e la reinstallazione. Per dettagli vedi # 80074</string>
+ <string name="ab_not_route_to_vpn">L\'IP client configurato e gli IP nella maschera di rete non vengono indirizzati alla VPN. OpenVPN funziona senza questo errore aggiungendo esplicitamente un percorso che corrisponda con il client IP e con la sua maschera di rete</string>
+ <string name="ab_persist_tun">L\'apertura di un dispositivo tun mentre è attivo un altro dispositivo tun, che viene utilizzato per il supporto persist-tun, blocca i VPNServices sul dispositivo. Un riavvio è necessario per rendere nuovamente funzionante la VPN. OpenVPN per Android tenta di evitare la riapertura del dispositivo tun e se necessario chiude l\'attuale TUN prima di aprire il nuovo dispositivo TUN per evitare il blocco. Ciò può portare ad una breve finestra in cui i pacchetti vengono inviati tramite la connessione non VPN. Anche con questa soluzione il VPNServices a volte si blocca e richiede un riavvio del dispositivo.</string>
+ <string name="ab_secondary_users">VPN non funziona affatto per gli utenti secondari.</string>
+ <string name="ab_kitkat_reconnect">"Gli utenti multipli riferiscono che la connessione dati mobile/connessione mobile spesso viene eliminata durante l\'utilizzo dell\'applicazione VPN. Il comportamento sembra influenzare solo alcune combinazioni di provider di servizi e dispositivi mobili e finora non è possibile individuare alcuna causa/soluzione."</string>
+ <string name="ab_vpn_reachability_44">Solo la destinazione può essere raggiunta tramite VPN che sono raggiungibili senza VPN. La VPN IPv6 non funziona affatto.</string>
+ <string name="ab_only_cidr_title">Nessuna route CIDR</string>
+ <string name="ab_proxy_title">Modalità proxy per VPN</string>
+ <string name="ab_lollipop_reinstall_title">Reinstallazione applicazioni VPN</string>
<string name="version_upto">%s e precedenti</string>
<string name="copy_of_profile">Copia di %s</string>
+ <string name="ab_not_route_to_vpn_title">Percorso per l\'indirizzo IP configurato</string>
+ <string name="ab_kitkat_mss_title">Valore MSS errato per la connessione VPN</string>
+ <string name="ab_secondary_users_title">Utenti tablet secondari</string>
+ <string name="custom_connection_options_warng">Imposta le opzioni specifiche di connessione personalizzate. Usare con attenzione</string>
+ <string name="custom_connection_options">Opzioni personalizzate</string>
+ <string name="remove_connection_entry">Rimuovi voce connessione</string>
+ <string name="ab_kitkat_reconnect_title">Disconnessioni casuali dalla rete mobile</string>
+ <string name="ab_vpn_reachability_44_title">Reti remote non raggiungibili</string>
+ <string name="ab_persist_tun_title">Modalità tun persistente</string>
+ <string name="version_and_later">%s e successive</string>
+ <string name="tls_cipher_alert_title">Le connessioni falliscono con l\'avviso di autenticazione SSL23_GET_SERVER_HELLO: sslv3</string>
+ <string name="tls_cipher_alert">Nuove OpenVPN per le versioni Android (0.6.29/Marzo 2015) utilizzano un valore predefinito più sicuro per le suite di cifrature consentite (tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). Purtroppo, omettendo le suite di cifrature meno sicure e le suite di cifrature di esportazione, in particolare l\'omissione di suite di cifratura che non supportano la perfetta segretezza avanzata (Diffie-Hellman), provoca alcuni problemi. Questo è solitamente causato da un tentativo ben intenzionato, ma malinteso, per rafforzare la sicurezza di TLS impostando tls-cipher sul server o alcuni OSes incorporati con SSL (ad esempio MikroTik). \nPer risolvere questo problema, impostare l\'opzione tls-cipher sul server a un default ragionevole come tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\". Per aggirare il problema sul client, aggiungere l\'opzione personalizzata tls-cipher DEFAULT sul client Android.</string>
+ <string name="message_no_user_edit">Questo profilo è stato aggiunto da un\'applicazione esterna (%s) ed è stato contrassegnato come non modificabile dall\'utente.</string>
+ <string name="crl_file">Elenco di revoca dei certificati</string>
+ <string name="service_restarted">Riavvio del servizio OpenVPN (l\'applicazione si è probabilmente bloccata o è stata chiusa per motivi di memoria)</string>
+ <string name="import_config_error">L\'importazione della configurazione ha generato un errore, non è possibile salvarlo</string>
+ <string name="Search">Cerca</string>
+ <string name="lastdumpdate">(Ultimo dump è %1$d: %2$dh vecchio (%3$s))</string>
+ <string name="clear_log_on_connect">Pulisci registro su nuova connessione</string>
+ <string name="connect_timeout">Connessione scaduta</string>
+ <string name="no_allowed_app">Non è stata aggiunta alcuna applicazione consentita. Aggiungendo (%s) per avere almeno una app nell\'elenco delle applicazioni consentite per non autorizzare tutte le applicazioni</string>
+ <string name="query_permissions_sdcard">OpenVPN per Android può provare a scoprire automaticamente i file mancanti nella scheda SD. Tocca questo messaggio per avviare la richiesta di autorizzazione.</string>
+ <string name="protocol">Protocollo</string>
+ <string name="enabled_connection_entry">Abilitato</string>
+ <string name="abi_mismatch">Preferenza ABI nativa di questo dispositivo (%1$s) e ABI segnalate da librerie native (%2$s) non corrispondente</string>
+ <string name="permission_revoked">L\'autorizzazione VPN è stata revocata dall\'OS (ad esempio un altro programma VPN avviato), arrestando la VPN</string>
+ <string name="pushpeerinfo">Info Push Peer</string>
+ <string name="pushpeerinfosummary">Invia informazioni aggiuntive al server, ad esempio la versione SSL e la versione Android</string>
+ <string name="pw_request_dialog_title">E\' necessario %1$s</string>
+ <string name="pw_request_dialog_prompt">Inserisci la password per il profilo %1$s</string>
+ <string name="menu_use_inline_data">Utilizza dati in linea</string>
+ <string name="export_config_chooser_title">Esporta file di configurazione</string>
+ <string name="missing_tlsauth">File tls-auth mancante</string>
+ <string name="missing_certificates">Certificato utente o file chiave certificato utente mancante</string>
+ <string name="missing_ca_certificate">Certificato CA mancante</string>
+ <string name="crl_title">Elenco certificato di revoca (facoltativo)</string>
+ <string name="reread_log">Rileggi (%d) gli elementi del registro dal file di cache di log</string>
+ <string name="samsung_broken">Anche se i telefoni Samsung sono tra i più venduti telefoni Android, i firmware di Samsung sono anche tra i firmware Android con più problemi. I problemi non sono limitati all\'operazione VPN su questi dispositivi, ma molti di essi possono essere sistemati. In seguito sono descritti alcuni di questi problemi. \n\nIl DNS non funziona a meno che il server DNS sia nell\'intervallo VPN. \n\nIn molti dispositivi Samsung 5.x la funzionalità delle applicazioni consentite/disattivate non funziona. \nNel Samsung 6.x viene segnalato il non funzionamento della VPN a meno che l\'applicazione VPN non sia esclusa dalle funzioni di Risparmio energia.</string>
+ <string name="samsung_broken_title">Telefoni Samsung</string>
+ <string name="novpn_selected">Nessuna VPN selezionata.</string>
+ <string name="defaultvpn">VPN predefinita</string>
+ <string name="defaultvpnsummary">VPN utilizzata nei luoghi in cui è necessaria una VPN predefinita. Questi sono attualmente in fase di avvio, per Always-On e la finestra Impostazioni rapide.</string>
+ <string name="vpnselected">VPN attualmente selezionata: \'%s\'</string>
+ <string name="reconnect">Riconnetti</string>
+ <string name="qs_title">Attiva/disattiva VPN</string>
+ <string name="qs_connect">Connetti a %s</string>
+ <string name="qs_disconnect">Disconnetti %s</string>
+ <string name="connectretrymaxmessage">Inserire il tempo massimo tra i tentativi di connessione. OpenVPN aumenterà lentamente il tempo di attesa dopo un tentativo di connessione non riuscito fino a questo valore. Il valore predefinito è 300s.</string>
+ <string name="connectretrymaxtitle">Tempo massimo tra i tentativi di connessione</string>
+ <string name="state_waitconnectretry">Attendere %ss secondi tra i tentativi di connessione</string>
+ <string name="nought_alwayson_warning"><![CDATA[Se non hai ottenuto una finestra di conferma VPN, hai abilitato \"Sempre in VPN \" per un'altra applicazione. In questo caso solo l'applicazione può connettersi a una VPN. Controlla in Impostazioni-> Altre reti .. -> VPNS]]></string>
+ <string name="management_socket_closed">Connessione a OpenVPN chiusa (%s)</string>
+ <string name="change_sorting">Cambia ordinamento</string>
+ <string name="sort">Ordina</string>
+ <string name="sorted_lru">Profili ordinati per ultimo usato di recente</string>
+ <string name="sorted_az">Profili ordinati per nome</string>
+ <string name="deprecated_tls_remote">Config utilizza l\'opzione tls-remote che è stata deprecata nella versione 2.3 e infine rimossa nella 2.4</string>
+ <string name="auth_failed_behaviour">Comportamento su AUTH_FAILED</string>
+ <string name="graph">Grafico</string>
+ <string name="use_logarithmic_scale">Usa scala logaritmica</string>
+ <string name="notenoughdata">Dati insufficienti</string>
+ <string name="avghour">Media oraria</string>
+ <string name="avgmin">Media al minuto</string>
+ <string name="last5minutes">Ultimi 5 minuti</string>
+ <string name="data_in">Ingresso</string>
+ <string name="data_out">Uscita</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-ja/arrays.xml b/main/src/main/res/values-ja/arrays.xml
index 4ca5131e..6c5ea25c 100755
--- a/main/src/main/res/values-ja/arrays.xml
+++ b/main/src/main/res/values-ja/arrays.xml
@@ -22,6 +22,13 @@
<item>未指定</item>
<item>暗号化(tls-crypt)</item>
</string-array>
+ <string-array name="crm_entries">
+ <item>再接続を試行しない</item>
+ <item>1回再接続を試行する</item>
+ <item>5回再接続を試行する</item>
+ <item>50回再接続を試行する</item>
+ <item>無制限に再接続を試行する</item>
+ </string-array>
<string-array name="auth_retry_type">
<item>パスワードを破棄して切断</item>
<item>パスワードを維持して切断</item>
diff --git a/main/src/main/res/values-ja/strings.xml b/main/src/main/res/values-ja/strings.xml
index f272ded1..7630b35e 100755
--- a/main/src/main/res/values-ja/strings.xml
+++ b/main/src/main/res/values-ja/strings.xml
@@ -481,4 +481,8 @@ Android 4.4以上はポリシールーティングを使用します。route/ifc
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="title_activity_open_sslspeed">OpenSSLスピードテスト</string>
+ <string name="openssl_error">OpenSSLがエラーを返しました</string>
+ <string name="running_test">テストを実行中...</string>
+ <string name="all_app_prompt">外部アプリが%sを制御しようとしています。アクセスをリクエストしているアプリは特定できません。このアプリを許可すると、すべてのアプリがアクセス許可されます。</string>
</resources>
diff --git a/main/src/main/res/values-ko/arrays.xml b/main/src/main/res/values-ko/arrays.xml
index d232e6b9..d8bc7ab3 100755
--- a/main/src/main/res/values-ko/arrays.xml
+++ b/main/src/main/res/values-ko/arrays.xml
@@ -20,6 +20,11 @@
<item translatable="false">0</item>
<item translatable="false">1</item>
<item>미지정</item>
- <item>Encryption (--tls-crypt)</item>
+ <item>암호화 (--tls-crypt)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>연결 해제, 암호 잊기</item>
+ <item>연결 해제, 암호 유지</item>
+ <item>무시하기, 재시도</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-ko/plurals.xml b/main/src/main/res/values-ko/plurals.xml
index 70489fbc..9f02b893 100755
--- a/main/src/main/res/values-ko/plurals.xml
+++ b/main/src/main/res/values-ko/plurals.xml
@@ -1,3 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="other">%d 개월 남음</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="other">%d 일 남음</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="other">%d 시간 남음</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="other">%d 분 남음</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-ko/strings.xml b/main/src/main/res/values-ko/strings.xml
index 043e9e1f..8b0fc2a6 100755
--- a/main/src/main/res/values-ko/strings.xml
+++ b/main/src/main/res/values-ko/strings.xml
@@ -9,7 +9,7 @@
<string name="address">서버 주소:</string>
<string name="port">서버 포트:</string>
<string name="location">위치</string>
- <string name="cant_read_folder">폴더를 읽을 수 없습니다</string>
+ <string name="cant_read_folder">디렉토리를 읽을 수 없습니다</string>
<string name="select">선택</string>
<string name="cancel">취소</string>
<string name="no_data">데이터 없음</string>
@@ -19,115 +19,117 @@
<string name="client_key_title">클라이언트 인증서 키</string>
<string name="client_pkcs12_title">PKCS12 파일</string>
<string name="ca_title">CA 인증서</string>
- <string name="no_certificate">인증서를 선택 해야 합니다</string>
- <string name="copyright_guicode">소스 코드와 문제 추적기는 http://code.google.com/p/ics-openvpn/에서 사용할 수 있습니다</string>
- <string name="copyright_others">프로그램은 다음 구성 요소를 사용합니다. 라이선스에 대 한 자세한 내용은 소스를 참조 하십시오</string>
+ <string name="no_certificate">인증서를 선택해야 합니다</string>
+ <string name="copyright_guicode">소스 코드와 문제 추적기는 http://code.google.com/p/ics-openvpn/ 에서 사용할 수 있습니다</string>
+ <string name="copyright_others">이 프로그램은 다음 구성 요소를 사용합니다. 라이선스에 대한 자세한 내용은 소스 코드를 참조하십시오.</string>
<string name="about">소개</string>
<string name="vpn_list_title">프로파일</string>
<string name="vpn_type">유형</string>
<string name="pkcs12pwquery">PKCS12 암호</string>
<string name="file_select">선택&#8230;</string>
- <string name="file_nothing_selected">파일을 선택 해야 합니다</string>
+ <string name="file_nothing_selected">파일을 선택해야 합니다</string>
<string name="useTLSAuth">TLS 인증 사용</string>
<string name="tls_direction">TLS 방향</string>
<string name="ipv6_dialog_tile">CIDR 형식의 IPv6 주소/넷마스크를 입력 (예: 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">CIDR 형식의 IPv4 주소/넷마스크를 입력 (예: 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 주소</string>
<string name="ipv6_address">IPv6 주소</string>
- <string name="custom_option_warning">사용자 정의 OpenVPN 옵션을 입력하십시오. 사용 시 유의하십시오. 또한 TUN과 연관된 많은 OpenVPN 설정은 안드로이드에서 지원하는 VPN 설정의 한계로 지원되지 않습니다. 중요한 옵션이 누락됐다고 생각되면 개발자에게 연락주십시오.</string>
- <string name="auth_username">계정</string>
+ <string name="custom_option_warning">사용자 정의 OpenVPN 옵션을 입력하십시오. 사용시 유의하십시오. 또한 TUN과 연관된 많은 OpenVPN 설정은 안드로이드에서 지원하는 VPN 설정의 한계로 지원되지 않습니다. 중요한 옵션이 누락됐다고 생각되면 개발자에게 연락주십시오.</string>
+ <string name="auth_username">사용자 이름</string>
<string name="auth_pwquery">암호</string>
- <string name="static_keys_info">고정설정에는 TLS인증 키가 고정키로 사용됩니다</string>
- <string name="configure_the_vpn">VPN 설정</string>
+ <string name="static_keys_info">고정 설정에는 TLS 인증 키가 고정 키로 사용됩니다</string>
+ <string name="configure_the_vpn">VPN 구성</string>
<string name="menu_add_profile">프로파일 추가</string>
- <string name="add_profile_name_prompt">새 프로파일에 사용할 이름을 입력하세요.</string>
- <string name="duplicate_profile_name">고유 프로필 이름을 입력 하십시오</string>
+ <string name="add_profile_name_prompt">새 프로파일을 식별하는 이름을 입력하세요.</string>
+ <string name="duplicate_profile_name">고유한 프로파일 이름을 입력하십시오</string>
<string name="profilename">프로파일 이름</string>
- <string name="no_keystore_cert_selected">사용자 인증서를 선택 해야 합니다</string>
+ <string name="no_keystore_cert_selected">사용자 인증서를 선택해야 합니다</string>
+ <string name="no_ca_cert_selected">CA 인증서를 선택해야 합니다</string>
<string name="no_error_found">오류 없음</string>
- <string name="config_error_found">설정 오류</string>
+ <string name="config_error_found">구성 오류</string>
<string name="ipv4_format_error">IPv4 주소 구문 분석 오류</string>
<string name="custom_route_format_error">사용자 지정 경로 구문 분석 오류</string>
<string name="pw_query_hint">(비워두면 요청시 쿼리됨)</string>
<string name="vpn_shortcut">OpenVPN 바로 가기</string>
- <string name="shortcut_profile_notfound">바로가기에 지정 된 프로파일을 찾을 수 없습니다.</string>
+ <string name="vpn_launch_title">VPN에 연결 중...</string>
+ <string name="shortcut_profile_notfound">바로가기에 지정된 프로파일을 찾을 수 없습니다.</string>
<string name="random_host_prefix">임의의 호스트 접두사</string>
<string name="random_host_summary">6개 임의의 문자를 호스트 이름 앞에 추가</string>
- <string name="custom_config_title">사용자 지정 옵션을 사용 하도록 설정</string>
- <string name="custom_config_summary">사용자 지정 옵션을 입력하세요. 주의해서 사용!</string>
- <string name="route_rejected">안드로이드에 의해 거부된 라우트</string>
+ <string name="custom_config_title">사용자 지정 옵션 사용</string>
+ <string name="custom_config_summary">사용자 지정 옵션을 지정하세요. 주의해서 사용!</string>
+ <string name="route_rejected">안드로이드에 의해 거부된 경로</string>
<string name="cancel_connection">연결 끊기</string>
<string name="cancel_connection_long">VPN 연결 끊기</string>
<string name="clear_log">로그 지우기</string>
<string name="title_cancel">취소 확인</string>
- <string name="cancel_connection_query">연결된 VPN 끊기/연결시도 취소?</string>
+ <string name="cancel_connection_query">연결된 VPN 끊기/연결 시도 취소?</string>
<string name="remove_vpn">VPN 제거</string>
<string name="check_remote_tlscert">서버가 TLS 서버 확장을 포함한 인증서를 사용하는지 여부 확인 (--remote-cert-tls server)</string>
<string name="check_remote_tlscert_title">TLS 서버 인증서 바람</string>
- <string name="remote_tlscn_check_summary">원격 서버 인증서 대상(Subject) DN을 확인</string>
- <string name="remote_tlscn_check_title">인증서 호스트명 확인</string>
- <string name="enter_tlscn_dialog">원격 인증서 DN을 확인 하는데 사용하는 검사를 지정 (예: C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\n확인을 위해 완전한 DN이나 RDN (예 openvpn.blinkt.de) 또는 RDN 접두사를 지정.\n\nRDN 접두사 \"서버\"를 사용하면 \"서버-1\" 및 \"서버 2\"와 일치합니다\n\n텍스트 필드를 빈 상태로 두면 RDN은 서버의 호스트명과 비교됩니다\n\n더 자세한 내용은 OpenVPN 2.3.1+ 맨페이지에서 —verify-x509-name 아래를 참조</string>
- <string name="enter_tlscn_title">원격 인증서 제목</string>
- <string name="tls_key_auth">TLS Key 인증 활성화</string>
+ <string name="remote_tlscn_check_summary">원격 서버 인증서 주체 DN을 확인</string>
+ <string name="remote_tlscn_check_title">인증서 호스트 이름 확인</string>
+ <string name="enter_tlscn_dialog">원격 인증서 DN을 확인하는 데 사용하는 검사를 지정 (예: C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\n확인을 위해 완전한 DN이나 RDN (예 openvpn.blinkt.de) 또는 RDN 접두사를 지정.\n\nRDN 접두사 \"Server\"를 사용하면 \"Server-1\" 및 \"Server-2\"와 일치합니다.\n\n텍스트 필드를 비워 두면 RDN을 서버의 호스트 이름과 비교합니다\n\n더 자세한 내용은 OpenVPN 2.3.1+ 맨페이지에서 --verify-x509-name 아래를 참조</string>
+ <string name="enter_tlscn_title">원격 인증서 주체</string>
+ <string name="tls_key_auth">TLS 키 인증 사용</string>
<string name="tls_auth_file">TLS 인증 파일</string>
- <string name="pull_on_summary">서버로부터 IP 주소, 라우트와 타이밍 옵션을 요구합니다.</string>
- <string name="pull_off_summary">서버는 어떤 정보도 요구하지 않습니다. 아래에 세부 설정을 지정하십시오.</string>
- <string name="use_pull">설정 받기</string>
+ <string name="pull_on_summary">서버에 IP 주소와 경로, 타이밍 옵션을 요구합니다.</string>
+ <string name="pull_off_summary">서버에 어떤 정보도 요구하지 않습니다. 아래에 설정을 지정해야 합니다.</string>
+ <string name="use_pull">설정 끌어오기</string>
<string name="dns">DNS</string>
<string name="override_dns">서버에서 DNS 설정을 재정의합니다</string>
- <string name="dns_override_summary">지정한 DNS서버 사용하기</string>
- <string name="searchdomain">searchDomain</string>
+ <string name="dns_override_summary">본인의 DNS 서버 사용하기</string>
+ <string name="searchdomain">검색 도메인</string>
<string name="dns1_summary">사용할 DNS 서버.</string>
<string name="dns_server">DNS 서버</string>
- <string name="secondary_dns_message">보조 DNS 서버는 평소 DNS 서버에 접근불가시 사용됩니다.</string>
+ <string name="secondary_dns_message">보조 DNS 서버는 주 DNS 서버에 닿을 수 없는 경우 사용됩니다.</string>
<string name="backup_dns">보조 DNS 서버</string>
- <string name="ignored_pushed_routes">받은 라우트 무시하기</string>
- <string name="ignore_routes_summary">서버로부터 받은 라우트를 무시합니다.</string>
+ <string name="ignored_pushed_routes">푸시된 경로 무시하기</string>
+ <string name="ignore_routes_summary">서버로부터 푸시된 경로를 무시합니다.</string>
<string name="default_route_summary">VPN을 통해 모든 트래픽을 보냅니다.</string>
- <string name="use_default_title">기본 라우트 사용하기</string>
- <string name="custom_route_message">사용자 지정 라우트를 입력하십시오. 목적지는 CIDR 형식으로만 입력하십시오. \"10.0.0.0/8 2002::/16\"은 10.0.0.0/8 과 2002::/16 네트워크를 VPN으로 보냅니다.</string>
- <string name="custom_route_message_excluded">VPN을 통해 라우팅되면 안되는 경로(라우트). 포함된 경로와 동일한 구문을 사용합니다.</string>
- <string name="custom_routes_title">사용자 지정 라우트</string>
+ <string name="use_default_title">기본 경로 사용하기</string>
+ <string name="custom_route_message">사용자 지정 경로를 입력하십시오. 목적지는 CIDR 형식으로만 입력하십시오. \"10.0.0.0/8 2002::/16\"은 10.0.0.0/8 과 2002::/16 네트워크를 VPN으로 보냅니다.</string>
+ <string name="custom_route_message_excluded">VPN을 통해 라우팅되면 안되는 경로. 포함되는 경로와 동일한 구문을 사용합니다.</string>
+ <string name="custom_routes_title">사용자 지정 경로</string>
<string name="custom_routes_title_excluded">제외된 네트워크</string>
<string name="log_verbosity_level">로그의 자세한 정도</string>
- <string name="float_summary">인증된 패킷은 IP와 상관없이 허용</string>
- <string name="float_title">플로팅 서버 허용</string>
+ <string name="float_summary">모든 IP에서 인증된 패킷 허용</string>
+ <string name="float_title">유동 서버 허용</string>
<string name="custom_options_title">사용자 지정 옵션</string>
<string name="edit_vpn">VPN 설정 편집</string>
<string name="remove_vpn_query">VPN 프로파일 \'%s\'을 삭제할까요?</string>
- <string name="tun_error_helpful">일부 사용자 지정 ICS 이미지에서는 /dev/tun에 대한 권한이 잘못 되어 있거나 tun 모듈 자체가 누락 될 수 있습니다. CM9 이미지는 일반 설정에 있는 소유권 고치기 옵션을 사용해 보십시오.</string>
- <string name="tun_open_error">Tun 인터페이스를 열지 못했습니다</string>
- <string name="error">"오류:"</string>
+ <string name="tun_error_helpful">일부 커스텀 ICS 이미지에서는 /dev/tun에 대한 권한이 잘못되어 있거나 tun 모듈 자체가 누락될 수 있습니다. CM9 이미지는 일반 설정에 있는 소유권 고치기 옵션을 사용해 보십시오.</string>
+ <string name="tun_open_error">TUN 인터페이스를 열지 못했습니다</string>
+ <string name="error">"오류: "</string>
<string name="clear">지우기</string>
<string name="last_openvpn_tun_config">TUN 인터페이스 열기:</string>
<string name="local_ip_info">로컬 IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
<string name="dns_server_info">DNS 서버: %1$s, 도메인: %2$s</string>
<string name="routes_info_incl">경로: %1$s %2$s</string>
<string name="routes_info_excl">제외된 경로: %1$s %2$s</string>
- <string name="routes_debug">VpnService 노선 설치: %1$s %2$s</string>
- <string name="ip_not_cidr">인터페이스 정보 %1$s와 %2$s에 있어, 두 번째 주소를 원격 피어 주소로 가정 하겠습니다. 로컬 IP의 넷마스크로는 /32를 사용하겠습니다. OpenVPN에 의해 주어진 모드는 \"%3$s\" 입니다.</string>
- <string name="route_not_cidr">CIDR 넷마스크가 있는 IP 라우트 %1$s 와 %2$s 에 있어서 처리가 불가능합니다. /32를 넷마스크로 사용하겠습니다.</string>
- <string name="route_not_netip">%1$s/%2$s 에서 %3$s/%2$s로 라우트 수정</string>
- <string name="keychain_access">안드로이드 키체인 인증서에 접근할 수 없습니다. 펌웨어 업그래이드 또는 백업된 앱/앱 설정을 복구하면서 발생할 수 있습니다. 인증서에 액세스할 수 있는 권한을 다시 생성하기 위해 VPN을 편집 하고 기본 설정 아래에서 인증서를 다시 선택 하십시오.</string>
+ <string name="routes_debug">설치된 VpnService 경로: %1$s %2$s</string>
+ <string name="ip_not_cidr">인터페이스 정보 %1$s와 %2$s를 받았고 두 번째 주소를 원격 피어 주소로 가정합니다. 로컬 IP에 대해 /32 넷마스크를 사용합니다. OpenVPN에 의해 주어진 모드는 \"%3$s\"입니다.</string>
+ <string name="route_not_cidr">CIDR 넷마스크가 있는 IP 경로로서 %1$s와 %2$s를 이해할 수 없습니다. 넷마스크로 /32를 사용합니다.</string>
+ <string name="route_not_netip">%1$s/%2$s에서 %3$s/%2$s로 경로 정정</string>
+ <string name="keychain_access">안드로이드 키체인 인증서에 접근할 수 없습니다. 이는 펌웨어 업그레이드 또는 앱 백업 복구, 앱 설정 복구에 의해 발생할 수 있습니다. 인증서에 접근할 수 있는 권한을 다시 생성하기 위해 VPN을 편집하고 기본 설정 아래에서 인증서를 다시 선택하십시오.</string>
<string name="version_info">%1$s %2$s</string>
<string name="send_logfile">로그 파일 보내기</string>
<string name="send">보내기</string>
<string name="ics_openvpn_log_file">ICS OpenVPN 로그 파일</string>
<string name="copied_entry">클립보드로 로그 복사</string>
- <string name="tap_mode">Tap 모드</string>
- <string name="faq_tap_mode">Tap 모드는 루트가 아닌 VPN API에서는 불가능합니다. 따라서 본앱은 tap지원을 제공할 수 없습니다</string>
- <string name="tap_faq2">또? 농담인가요? 아니요 정말로 tap 모드는 지원이 불가능합니다. 계속해서 메일을 보내면서 요구하신다고 도움될 일이 아닙니다.</string>
- <string name="tap_faq3">3번째로? 누군가가 송신때 레이어2 정보를 추가하고 수신때 레이어2정보를 때내는 tun을 이용한 tap 에뮬레이터를 제작할 수 있습니다. 하지만 이것만이 아닌 ARP 그리고 어쩌면 DHCP 클라이언트 까지도 구현해야합니다. 본인은 이 같은 작업을 하는 분을 알고있지 않습니다. 코딩을 시작하려고 하시는 분이 계시면 제게 연락주십시오.</string>
+ <string name="tap_mode">TAP 모드</string>
+ <string name="faq_tap_mode">TAP 모드는 루트가 아닌 VPN API에서는 불가능합니다. 따라서 본 앱은 TAP 지원을 제공할 수 없습니다</string>
+ <string name="tap_faq2">또? 농담인가요? 아니요. 정말로 TAP 모드는 지원이 불가능합니다. 계속해서 메일을 보내면서 요구하신다고 도움될 일이 아닙니다.</string>
+ <string name="tap_faq3">세 번째로? 실제로는 송신 때 레이어2 정보를 추가하고 수신 때 레이어2 정보를 떼내는 TUN을 이용한 TAP 에뮬레이터를 제작하는 것이 가능합니다. 하지만 이것만이 아닌 ARP 그리고 어쩌면 DHCP 클라이언트까지도 구현해야 합니다. 본인은 이 같은 작업을 하는 분을 알고 있지 않습니다. 코딩을 시작하려고 하시는 분이 계시면 제게 연락해 주십시오.</string>
<string name="faq">자주 묻는 질문</string>
<string name="copying_log_entries">로그 항목을 복사</string>
- <string name="faq_copying">단일 로그 항목을 복사 하려면 로그 항목을 누르고 계세요. 전체 로그를 복사/전송 하려면 로그 보내기 옵션을 사용하십시오. GUI에 표시 되지 않는 경우 하드웨어 메뉴 버튼를 사용하세요.</string>
- <string name="faq_shortcut">시작으로 바로 가기</string>
- <string name="faq_howto_shortcut">바탕 화면에 OpenVPN 시작 바로 가기를 배치할 수 있습니다. 당신의 homescreen 프로그램에 따라 바로 가기 또는 위젯 추가를 해야 합니다.</string>
- <string name="no_vpn_support_image">당신의 이미지는 VPNService API를 지원 하지 않습니다, 죄송 합니다:(</string>
+ <string name="faq_copying">단일 로그 항목을 복사하려면 로그 항목을 누르고 계세요. 전체 로그를 복사/전송하려면 로그 보내기 옵션을 사용하십시오. GUI에 버튼이 표시되지 않는 경우 하드웨어 메뉴 버튼을 사용하세요.</string>
+ <string name="faq_shortcut">시작하는 바로 가기</string>
+ <string name="faq_howto_shortcut">바탕 화면에 OpenVPN을 시작하는 바로 가기를 배치할 수 있습니다. 당신의 홈화면 프로그램에 따라 바로 가기 또는 위젯 추가해야 합니다.</string>
+ <string name="no_vpn_support_image">당신의 이미지는 VPNService API를 지원하지 않습니다, 죄송합니다 :(</string>
<string name="encryption">암호화</string>
- <string name="cipher_dialog_title">입력 암호화 방법</string>
- <string name="chipher_dialog_message">OpenVPN이 사용할 암호화 암호 알고리즘을 입력 합니다. 기본 암호를 사용하려면 빈 공간으로 두십시오.</string>
- <string name="auth_dialog_message">OpenVPN이 사용할 인증 다이제스트를 입력 합니다. 기본 다이제스트를 사용하려면 빈 공간으로 두십시오.</string>
+ <string name="cipher_dialog_title">암호화 방법 입력</string>
+ <string name="chipher_dialog_message">OpenVPN이 사용할 암호화 암호 알고리즘을 입력하세요. 기본 암호를 사용하려면 비워 두십시오.</string>
+ <string name="auth_dialog_message">OpenVPN이 사용할 인증 다이제스트를 입력하세요. 기본 다이제스트를 사용하려면 비워 두십시오.</string>
<string name="settings_auth">인증/암호화</string>
<string name="file_explorer_tab">파일 탐색기</string>
<string name="inline_file_tab">인라인 파일</string>
@@ -138,184 +140,333 @@
<string name="menu_import">ovpn 파일에서 프로파일 가져오기</string>
<string name="menu_import_short">가져오기</string>
<string name="import_content_resolve_error">가져올 프로파일을 읽을 수 없습니다.</string>
- <string name="error_reading_config_file">설정 파일 읽기 오류</string>
+ <string name="error_reading_config_file">구성 파일 읽기 오류</string>
<string name="add_profile">프로파일 추가</string>
- <string name="import_could_not_open">가져온된 설정 파일에 언급 된 파일 %1$s를 찾을 수 없습니다.</string>
- <string name="importing_config">원본 %1$s에서 설정 파일 가져오기</string>
- <string name="import_warning_custom_options">구성은 UI 구성으로 매핑되지 않는 몇 가지 구성 옵션을 가지고 있습니다. 이 옵션은 사용자 정의 구성 옵션으로 추가되었습니다. 사용자 정의 구성은 아래에 표시됩니다 :</string>
- <string name="import_done">설정 파일 읽기 완료.</string>
- <string name="nobind_summary">로컬 주소와 포트로 바인드 안하기</string>
- <string name="no_bind">로컬 바인딩 안함</string>
+ <string name="import_could_not_open">가져온 구성 파일에 언급된 파일 %1$s를 찾을 수 없습니다.</string>
+ <string name="importing_config">원본 %1$s에서 구성 파일 가져오기</string>
+ <string name="import_warning_custom_options">당신의 구성이 UI 구성으로 매핑되지 않은 몇 가지 구성 옵션을 가지고 있었습니다. 이 옵션은 사용자 정의 구성 옵션으로 추가되었습니다. 사용자 정의 구성은 아래에 표시됩니다:</string>
+ <string name="import_done">구성 파일 읽기 완료.</string>
+ <string name="nobind_summary">로컬 주소와 포트로 바인드 안 하기</string>
+ <string name="no_bind">로컬 바인딩 안 함</string>
<string name="import_configuration_file">구성 파일 가져오기</string>
<string name="faq_security_title">보안 고려 사항</string>
- <string name="faq_security">"OpenVPN은 보안에 민감하기 때문에 보안에 관련된 부분을 알고가는것이 현명합니다. SD 카드에 있는 데이터는 모든 앱이 읽을 수 있기 때문에 보안이 취약합니다. (이 OpenVPN 앱은 SD 카드 읽기 권한이 필요없습니다) 이 OpenVPN 앱의 데이터는 이 OpenVPN 앱만이 읽을 수 있습니다. cacert/cert/key를 파일 탐색기의 가져오기 옵션을 사용하면 데이터는 VPN 프로파일 내에 저장됩니다. 이 VPN 프로파일은 이 OpenVPN 앱만이 접근할 수 있습니다. (잊지 말고 SD 카드에 남아있는 파일들을 삭제하세요.) 접근은 이 OpenVPN 앱만 가능하더라도 데이터는 암호화가 되어 있지 않습니다. 루팅을 비롯한 다른 악의적인 방법으로 데이터를 빼낼 수 있습니다. 암호 또한 일반 텍스트로 저장되어 있습니다. pkcs12 파일은 안드로이드 keystore에 보관할 것을 강력하게 추천합니다."</string>
+ <string name="faq_security">"OpenVPN은 보안에 민감하기 때문에 보안에 관한 몇 가지 주의사항은 합리적입니다. SD 카드에 있는 데이터는 필연적으로 안전하지 않습니다. 모든 앱이 그것을 읽을 수 있습니다(예를 들어 이 프로그램은 특별한 SD 카드 권한을 가질 필요가 없습니다). 이 앱의 데이터는 이 앱만 읽을 수 있습니다. 파일 대화창에서 CA 인증서/인증서/키를 가져옴으로써 데이터는 VPN 프로파일 내에 저장됩니다. 이 VPN 프로파일은 이 앱만 접근할 수 있습니다. (잊지 말고 SD 카드에 남아있는 파일들을 삭제하세요.) 접근은 이 OpenVPN 앱만 가능하더라도 데이터는 암호화가 되어 있지 않습니다. 루팅이나 다른 취약점을 이용해서 데이터를 빼낼 수 있습니다. 저장된 암호 또한 일반 텍스트로 저장되어 있습니다. pkcs12 파일은 안드로이드 키 저장소에 보관할 것을 강력하게 추천합니다."</string>
<string name="import_vpn">가져오기</string>
<string name="broken_image_cert_title">인증서 선택 표시 오류</string>
- <string name="broken_image_cert">안드로이드 4.0+의 인증서 선택창을 보여주려는 과정에서 예외가 발생됐습니다. 안드로이드 4.0+의 표준 기능임으로 이 같은 일은 일어나면 안됩니다. 어쩌면 인증서 저장소에 대한 귀하의 안드로이드 ROM 지원이 깨졌습니다.</string>
+ <string name="broken_image_cert">안드로이드 4.0+의 인증서 선택 대화창을 보여주려는 과정에서 예외가 발생했습니다. 안드로이드 4.0+의 표준 기능이므로 이 같은 일은 일어나면 안 됩니다. 어쩌면 귀하의 안드로이드 롬의 인증서 저장소에 대한 지원이 깨졌을 수 있습니다.</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
<string name="speed_waiting">상태 메시지를 기다리는 중&#8230;</string>
<string name="converted_profile">가져온 프로파일</string>
<string name="converted_profile_i">가져온 프로파일 %d</string>
<string name="broken_images">깨진 이미지</string>
- <string name="broken_images_faq">&lt;p&gt;공식 HTC 이미지에서는 이상한 라우팅 문제로 트래픽이 터널로 통과 하지 않는 경우가 있는것으로 알려져 있습니다 (참고 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;Issue 18&lt;/a&gt; 버그 추적기.)&lt;/p&gt;&lt;p&gt;Xperia arc S 와 Xperia Ray의 공식 SONY 이미지에서는 VPNService 자체가 완전히 없어진 것으로 보고 되었습니다. (참조 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;Issue 29&lt;/a&gt; 버그추적기.)&lt;/p&gt;&lt;p&gt;일부 사용자를 위해 만들어진 이미지에서는 tun 모듈자체가 없거나 /dev/tun의 권한이 틀려있기도 합니다. 일부 CM9 이미지는 \"Device specific hacks\" 아래에 있는 \"Fix ownership\" 옵션을 사용해야 합니다.&lt;/p&gt;&lt;p&gt;가장 중요한 부분: 만약 깨진 이미지를 사용하는 경우라면 해당 공급업체에 보고해야 합니다. 업체에 문제를 보고하는 사람들이 많아야 수정될 가능성도 높아집니다..&lt;/p&gt;</string>
+ <string name="broken_images_faq">&lt;p&gt;공식 HTC 이미지에서는 이상한 라우팅 문제로 트래픽이 터널로 통과하지 않는 경우가 있는 것으로 알려져 있습니다. (버그 추적기의 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;문제 18&lt;/a&gt; 참조.)&lt;/p&gt;&lt;p&gt;Xperia Arc S 와 Xperia Ray의 오래된 공식 SONY 이미지에서는 VPNService 자체가 전혀 없는 것으로 보고되었습니다. (버그 추적기의 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;문제 29&lt;/a&gt; 참조.)&lt;/p&gt;&lt;p&gt;커스텀 빌드 이미지에서는 tun 모듈 자체가 없거나 /dev/tun의 권한이 틀려 있기도 합니다. 일부 CM9 이미지는 \"기기별 해킹\" 아래에 있는 \"소유권 고치기\" 옵션을 사용해야 합니다.&lt;/p&gt;&lt;p&gt;가장 중요한 부분: 만약 깨진 이미지를 사용하는 경우라면 해당 공급 업체에 보고해야 합니다. 업체에 문제를 보고하는 사람들이 많아야 수정될 가능성도 높아집니다.&lt;/p&gt;</string>
<string name="pkcs12_file_encryption_key">PKCS12 파일 암호화 키</string>
<string name="private_key_password">개인 키 암호</string>
<string name="password">암호</string>
<string name="file_icon">파일 아이콘</string>
- <string name="generated_config">생성 된 설정</string>
+ <string name="tls_authentication">TLS 인증/암호화</string>
+ <string name="generated_config">생성된 설정</string>
<string name="generalsettings">설정</string>
- <string name="owner_fix_summary">/dev/tun의 소유권을 시스템으로 설정 하려고 합니다. 일부 CM9 이미지에서 VPNService API를 사용하기 위해서는 앞의 작업이 요구됩니다. root권한을 가져야합니다.</string>
- <string name="owner_fix">/dev/tun 소유권 문제 해결</string>
- <string name="generated_config_summary">생성된 OpenVPN의 설정 파일 보기</string>
- <string name="edit_profile_title">수정 \"%s\"</string>
- <string name="building_configration">설정 만드는중&#8230;</string>
- <string name="netchange_summary">이 기능을 사용하면 네트워크 상태 변환시 강제로 재접속을 합니다 (예. WIFI 로/에서 모바일)</string>
- <string name="netchange">네트워크 변화시 재접속</string>
+ <string name="owner_fix_summary">/dev/tun의 소유권을 system으로 설정하려고 합니다. 일부 CM9 이미지에서 VPNService API를 사용하기 위해서는 앞의 작업이 요구됩니다. 루트 권한을 가져야 합니다.</string>
+ <string name="owner_fix">/dev/tun 소유권 고치기</string>
+ <string name="generated_config_summary">생성된 OpenVPN의 구성 파일 보기</string>
+ <string name="edit_profile_title">\"%s\" 편집</string>
+ <string name="building_configration">구성 만드는 중&#8230;</string>
+ <string name="netchange_summary">이 옵션을 켜면 네트워크 상태 변경시 강제로 재접속합니다 (예: WiFi와 모바일 상호 변경)</string>
+ <string name="netchange">네트워크 변경시 재접속</string>
<string name="netstatus">네트워크 상태: %s</string>
- <string name="extracahint">CA 인증서는 일반적으로 안드로이드 Keystore에 있는것을 사용합니다. 인증서 오류 발생시 벌도의 인증서를 지정하세요.</string>
+ <string name="extracahint">CA 인증서는 일반적으로 안드로이드 키 저장소에 있는 것을 사용합니다. 인증서 오류 발생시 별도의 인증서를 지정하세요.</string>
<string name="select_file">선택</string>
- <string name="keychain_nocacert">안드로이드 keystore에서 CA 인증서를 찾지 못했습니다. Auhtentication은 실패할 것 입니다.</string>
- <string name="show_log_summary">연결시 로그 윈도우를 보여드립니다. 로그 윈도우는 항상 notification status에서 접근이 가능합니다.</string>
- <string name="show_log_window">로그 윈도우 보기</string>
- <string name="error_rsa_sign">안드로이드 keystore 키 %1$s: %2$s과 싸이닝 오류</string>
- <string name="faq_system_dialogs">시스템에서는 VPN연결 경고를 통해 당신에게 본앱이 모든 트래픽을 가로챌수있다는 점을 알리게 되어 있는데 이는 VPNService API가 남용하는것을 막기 위함입니다.\nVPN 연결 알림 (키 아이콘) 또한 안드로이드 시스템에서 부과하는 부분이며 이는 VPN연결을 알리는 신호입니다. 어떤 버전에서는 소리를 알림으로 사용하는 경우도 있습니다.\n안드로이드는 이같은 방법을 당신의 안전을 위해 도입하였으며 사용은 필수적입니다. (어떤 버전에서는 유감스럽게도 소리 알림 또한 포함됩니다.)</string>
+ <string name="keychain_nocacert">안드로이드 키 저장소에서 CA 인증서를 찾지 못했습니다. 인증은 아마 실패할 것입니다.</string>
+ <string name="show_log_summary">연결시 로그 창을 보여드립니다. 로그 창은 항상 알림 상태바에서 접근이 가능합니다.</string>
+ <string name="show_log_window">로그 창 보기</string>
+ <string name="mobile_info">%3$s %1$s (%2$s)에서 %10$s %9$s 작동, 안드로이드 %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
+ <string name="error_rsa_sign">안드로이드 키 저장소 키로 서명 오류 %1$s: %2$s</string>
+ <string name="faq_system_dialogs">시스템에서는 VPN 연결 경고를 통해 당신에게 본 앱이 모든 트래픽을 가로챌 수 있다는 점을 알리게 되어 있는데 이는 VPNService API가 남용되는 것을 막기 위함입니다.\nVPN 연결 알림 (열쇠 기호) 또한 안드로이드 시스템에서 부과하는 부분이며 이는 VPN 연결을 알리는 신호입니다. 어떤 이미지에서는 이 알림이 소리를 내기도 합니다.\n안드로이드는 당신의 안전을 위해서 이 대화창을 도입했으며 회피할 수 없게 하였습니다. (어떤 이미지에서는 유감스럽게도 알림 소리 또한 포함됩니다.)</string>
<string name="faq_system_dialogs_title">연결 경고 및 알림 소리</string>
- <string name="translationby">우리말 번역에 참여해주세요.</string>
- <string name="ipdns">IP 와 DNS</string>
+ <string name="translationby">한국어 번역: 안규태&lt;ktdann@gmail.com&gt;, 강현진&lt;peaceb&gt;</string>
+ <string name="ipdns">IP와 DNS</string>
<string name="basic">기본</string>
<string name="routing">라우팅</string>
<string name="obscure">모호한 OpenVPN 설정. 일반적으로 필요하지 않습니다.</string>
<string name="advanced">고급</string>
- <string name="export_config_title">ICS Openvpn 설정</string>
- <string name="warn_no_dns">DNS 서버가 미사용중입니다. 이름 변환이 작동 않을 수 있습니다. 사용자 지정 DNS 서버를 설정 하십시오. 또한 안드로이드는 DNS서버가 없는 경우 모바일/Wi-Fi 연결에 저정된 프록시 설정을 계속해서 사용한다는 점을 유의하시기 바랍니다.</string>
- <string name="dns_add_error">DNS서버 \"%1$s\" 는, 시스템에 의해 거부되 추가할 수 없습니다: %2$s</string>
- <string name="ip_add_error">%2$s: 시스템에 의해 거부되어 IP 주소 \"%1$s\"를 설정하지 못하였습니다</string>
- <string name="faq_howto">&lt;p&gt;문제없는 설정을 확보하세요 (당신의 컴퓨터에서 테스트 된것 또는 공급자/조직에서 다운받은)&lt;/p&gt;&lt;p&gt;이것이 단일 파일이며 추가 pem/pks12 파일이 없는 경우면 본인에게 이메일로 보내어 첨부파일을 열면 됩니다. 여러 파일인 경우 당신의 sd card에 넣으세요.&lt;/p&gt;&lt;p&gt;이메일 첨부파일을 클릭하세요/vpn목록에 있는 폴더 아이콘을 사용하여 설정 파일을 가져옵니다.&lt;/p&gt;&lt;p&gt;파일 누락 오류 발생시 누락된 파일을 sd card에 복사하세요.&lt;/p&gt;&lt;p&gt;저장 기호를 클릭하여 VPN 목록에 가져온 VPN을 추가 하세요.&lt;/p&gt;&lt;p&gt;VPN 이름을 클릭하여 VPN을 연결하세요.&lt;/p&gt;&lt;p&gt;오류 또는 경고가 로그에 있는 경우 오류/경고를 이해하여 이들을 해결하십시오.&lt;/p&gt; </string>
+ <string name="export_config_title">ICS Openvpn 구성</string>
+ <string name="warn_no_dns">사용 중인 DNS 서버가 없습니다. 이름 변환이 작동하지 않을 수 있습니다. 사용자 지정 DNS 서버를 설정하는 것이 좋습니다. 또한 안드로이드는 DNS 서버가 설정되지 않은 경우 모바일/Wi-Fi 연결에 당신의 프록시 설정을 계속해서 사용한다는 점을 유의하세요.</string>
+ <string name="dns_add_error">DNS 서버 \"%1$s\"는 시스템에 의해 거부돼 추가할 수 없습니다: %2$s</string>
+ <string name="ip_add_error">시스템에 의해 거부되어 IP 주소 \"%1$s\"를 설정하지 못하였습니다: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;작동하는 구성을 얻기 (당신의 컴퓨터에서 검증된 것 또는 공급자/조직에서 내려받은 것)&lt;/p&gt;&lt;p&gt;이것이 추가 pem/pks12 파일이 없는 단일 파일인 경우 본인에게 이메일로 보내어 첨부 파일을 열면 됩니다. 여러 파일인 경우 SD 카드에 넣으세요.&lt;/p&gt;&lt;p&gt;이메일 첨부 파일을 클릭하거나 또는 VPN 목록에 있는, 구성 파일을 가져오는 폴더 모양 아이콘을 사용하세요.&lt;/p&gt;&lt;p&gt;파일 누락 오류 발생시 누락된 파일을 SD 카드에 복사하세요.&lt;/p&gt;&lt;p&gt;저장 기호를 클릭하여 가져온 VPN을 VPN 목록에 추가하세요.&lt;/p&gt;&lt;p&gt;VPN 이름을 클릭하여 VPN에 연결하세요.&lt;/p&gt;&lt;p&gt;오류 또는 경고가 로그에 있는 경우 오류/경고를 이해하여 이들을 해결하십시오.&lt;/p&gt;</string>
<string name="faq_howto_title">빠른 시작</string>
- <string name="setting_loadtun_summary">연결을 시도 하기 전에 tun.ko 커널 모듈을 로드하세요. 루팅된 장치야만 합니다.</string>
- <string name="setting_loadtun">tun 모듈 로드하기</string>
- <string name="importpkcs12fromconfig">설정에 있는 PKCS12를 안드로이드 keystore로 가져오기</string>
+ <string name="setting_loadtun_summary">연결을 시도하기 전에 tun.ko 커널 모듈을 로드합니다. 루팅된 장치이어야만 합니다.</string>
+ <string name="setting_loadtun">TUN 모듈 로드하기</string>
+ <string name="importpkcs12fromconfig">구성에 있는 PKCS12를 안드로이드 키 저장소로 가져오기</string>
<string name="getproxy_error">프록시 설정 가져오기 오류: %s</string>
- <string name="using_proxy">프록시 %1$s %2$d 을 사용</string>
+ <string name="using_proxy">프록시 %1$s %2$d를 사용</string>
<string name="use_system_proxy">시스템 프록시를 사용</string>
- <string name="use_system_proxy_summary">연결시 전 시스템 설정에 있는 HTTP/HTTPS 프록시를 사용합니다.</string>
- <string name="onbootrestartsummary">이 시스템 부팅에 활성화 된 경우 OpenVPN을 지정된 VPN을 연결합니다. 안드로이드 &lt; 5.0에이 옵션을 사용하기 전에 연결 경고 FAQ를 읽어 보시기 바랍니다.</string>
- <string name="onbootrestart">부팅에 연결</string>
+ <string name="use_system_proxy_summary">연결할 HTTP/HTTPS 프록시로 시스템 범위의 설정을 사용합니다.</string>
+ <string name="onbootrestartsummary">OpenVPN이 시스템 부팅시에 활성화되면 지정된 VPN에 연결합니다. 안드로이드 5.0 이전 버전에 이 옵션을 사용하기 전에 연결 경고 FAQ를 읽어 보시기 바랍니다.</string>
+ <string name="onbootrestart">부팅시 연결</string>
<string name="ignore">무시</string>
<string name="restart">다시 시작</string>
- <string name="restart_vpn_after_change">VPN을 다시 시작한 후 설정 변경 내용이 적용 됩니다. VPN을 지금 (재)시작?</string>
- <string name="configuration_changed">설정 변경</string>
- <string name="log_no_last_vpn">편집을 위해 마지막으로 연결 된 프로파일을 확인할 수 없습니다.</string>
+ <string name="restart_vpn_after_change">VPN을 다시 시작한 후 구성 변경 내용이 적용됩니다. VPN을 지금 (재)시작?</string>
+ <string name="configuration_changed">구성 변경됨</string>
+ <string name="log_no_last_vpn">편집하려는 마지막으로 연결된 프로파일을 확인할 수 없습니다.</string>
<string name="faq_duplicate_notification_title">중복 알림</string>
- <string name="faq_duplicate_notification">안드로이드는 시스템의 메모리 (RAM) 가 부족한 경우, 현재 필요하지 않는 앱들과 서비스들을 활성화 메모리에서 삭제합니다. 이 과정에서 진행중인 VPN 연결이 끊어 집니다. 이렇게 되지 않기 위해서 OpenVPN 서비스는 우선순위가 높게 되어 실행됩니다. 높은 우선 순위로 실행되기 위해서는 응용프로그램에서 이를 알림으로 표시해야 합니다. 키 알림 아이콘은 이전 FAQ에서 설명된 대로 시스템에서 강요하기 때문입니다. 이것은 우선 순위가 높이 실행된다는 알림에 대한 알림이 아닙니다.</string>
- <string name="no_vpn_profiles_defined">VPN 프로파일이 없습니다.</string>
- <string name="add_new_vpn_hint">이 &lt;img src=\"ic_menu_add\"/&gt; 아이콘을 사용하여 VPN을 추가 하세요</string>
- <string name="vpn_import_hint">이 &lt;img src=\"ic_menu_archive\"/&gt; 아이콘을 사용하여 귀하의 sdcard에서 기존 (.ovpn 또는 .conf) 프로파일을 가져오세요.</string>
- <string name="faq_hint">꼭 FAQ를 확인 하세요. 빠른 시작 가이드가 있습니다.</string>
- <string name="faq_routing_title">라우팅/인터페이스 설정</string>
- <string name="persisttun_summary">OpenVPN을 다시 연결 하는 경우 VPN 연결 없음으로 표기하지 마십시오.</string>
+ <string name="faq_duplicate_notification">안드로이드는 시스템의 메모리(램)가 부족한 경우, 현재 필요하지 않는 앱들과 서비스들을 활성 메모리에서 삭제합니다. 이 과정에서 진행중인 VPN 연결이 끊어집니다. 이렇게 되지 않기 위해서 OpenVPN 서비스는 더 높은 우선 순위로 실행됩니다. 더 높은 우선 순위로 실행되기 위해서는 앱이 알림을 표시해야 합니다. 열쇠 알림 아이콘은 이전 FAQ에서 설명된 대로 시스템에서 강요하는 것입니다. 이것은 더 높은 우선 순위로 실행되기 위한 앱 알림이 아닙니다.</string>
+ <string name="no_vpn_profiles_defined">정의된 VPN 프로파일이 없습니다.</string>
+ <string name="add_new_vpn_hint">이 &lt;img src=\"ic_menu_add\"/&gt; 아이콘을 사용하여 VPN을 추가하세요</string>
+ <string name="vpn_import_hint">이 &lt;img src=\"ic_menu_archive\"/&gt; 아이콘을 사용하여 귀하의 SD 카드에서 기존 (.ovpn 또는 .conf) 프로파일을 가져오세요.</string>
+ <string name="faq_hint">꼭 FAQ를 확인하세요. 빠른 시작 가이드가 있습니다.</string>
+ <string name="faq_routing_title">라우팅/인터페이스 구성</string>
+ <string name="faq_routing">라우팅 및 인터페이스 구성은 기존 ifconfig/route 명령을 통하지 않고 VPNService API를 사용하여 수행됩니다. 그 결과 다른 OS와 다른 라우팅 구성이 생깁니다.\nVPN 터널의 구성은 IP 주소와 이 인터페이스를 통해 라우팅되어야 하는 네트워크들로 이루어져 있습니다. 특히 피어 파트너 주소 또는 게이트웨이 주소가 필요하거나 요구되지 않습니다. VPN 서버에 이르는 특수 경로들(예컨대 redirect-gateway 사용시 추가되는 것)도 필요하지 않습니다. 따라서 앱은 구성을 가져올 때 이러한 설정을 무시합니다. 이 앱은 VPNService API를 사용하여 서버에 대한 연결이 VPN 터널을 통해 라우팅되지 않도록 합니다.\nVPNService API는 VPN을 통해 라우트하지 않아야 할 네트워크들을 지정하는 걸 허용하지 않습니다. 우회 방법으로서 앱이 터널을 통해 라우팅해서는 안 되는 네트워크들(예: route x.x.x.x y.y.y.y net_gateway)을 감지하고 다른 플랫폼의 동작을 모방하기 위해 이 경로들을 제외한 일련의 경로들을 계산합니다. 로그 창은 연결을 수립할 때 VPNService의 설정을 보여줍니다.\n무대 뒤에서: Android 4.4 이상은 정책 라우팅을 사용합니다. route/ifconfig를 사용해선 설치된 경로를 볼 수 없을 것입니다. 대신 ip rule, iptables -t mangle -L을 사용하십시오.</string>
+ <string name="persisttun_summary">OpenVPN을 다시 연결할 때 VPN 연결이 없는 상태로 빠지지 않습니다.</string>
<string name="persistent_tun_title">지속적인 TUN</string>
<string name="openvpn_log">OpenVPN 로그</string>
- <string name="import_config">OpenVPN 설정 가져오기</string>
+ <string name="import_config">OpenVPN 구성 가져오기</string>
<string name="battery_consumption_title">배터리 소모</string>
- <string name="baterry_consumption">제 개인적인 테스트에서 Openvpn의 높은 배터리 소비에 대한 주요 이유는 keepalive 패킷 때문이었습니다. 대부분의 OpenVPN 서버 설정에는 \'keepalive 10 60\' 와 같은 문구가 있는데 이는 클라이언트에서 서버로 서버에서 클라이언트로 keepalive 패킷을 10 초 마다 보냅니다. &lt;p&gt; 이러한 패킷은 작고 많은 트래픽을 사용 하지 않습니다만 이들은 모바일 라디오 네트워크를 계속 유지하게 만들게되고 따라서 에너지 소비를 증가 합니다. (참조 &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;The Radio State Machine | Android Developers&lt;/a&gt;) &lt;p&gt; 이 keepalive 설정을 클라이언트에서 변경할 수 없습니다. OpenVPN의 시스템 관리자만 설정을 변경할 수 있습니다. &lt;p&gt; 불행히도 udp를 사용할때 keepalive값을 60초 이상으로 하면 일부의 NAT 게이트웨이에서는 비활성 타임아웃 때문에 연결을 끊어버리게 됩니다. TCP와 긴 keepalive 만료기간을 함께 사용할 수는 있지만 패킷 손실이 높은 연결구간에서는 TCP over TCP의 성능이 매우 저조합니다. (참조 &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;왜 TCP를 통한 TCP는 안좋은 방법인지&lt;/a&gt;)</string>
- <string name="faq_tethering">안드로이드 테더링 기능 (WiFi, USB 또는 블루투스를 통한)과 VPNService API (이 프로그램에서 사용됨)는 함께 작동 하지 않습니다. 자세한 내용은 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=34\"&gt;issue #34&lt;/a&gt; 를 참조 하십시오</string>
+ <string name="baterry_consumption">제 개인적인 테스트에서 Openvpn의 높은 배터리 소비에 대한 주요 이유는 keepalive 패킷 때문이었습니다. 대부분의 OpenVPN 서버 설정에는 \'keepalive 10 60\' 와 같은 문구가 있는데 이는 클라이언트에서 서버로 서버에서 클라이언트로 keepalive 패킷을 10 초마다 보냅니다. &lt;p&gt;이러한 패킷은 작고 많은 트래픽을 사용하지 않습니다만 이들은 모바일 라디오 네트워크를 계속 유지하게 만들게 되고 따라서 에너지 소비가 증가합니다. (참조 &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;The Radio State Machine | Android Developers&lt;/a&gt;) &lt;p&gt;이 keepalive 설정을 클라이언트에서 변경할 수 없습니다. OpenVPN의 시스템 관리자만 설정을 변경할 수 있습니다. &lt;p&gt;불행히도 udp를 사용할 때 keepalive값을 60 초 이상으로 하면 일부의 NAT 게이트웨이에서는 비활성 타임아웃 때문에 연결을 끊어버리게 됩니다. TCP와 긴 keepalive 만료기간을 함께 사용할 수는 있지만 패킷 손실이 높은 연결 구간에서는 TCP over TCP의 성능이 매우 저조합니다. (참조 &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;왜 TCP를 통한 TCP는 안 좋은 방법인가&lt;/a&gt;)</string>
+ <string name="faq_tethering">안드로이드의 (WiFi, USB 또는 블루투스를 통한) 테더링 기능과 (이 프로그램에서 사용되는) VPNService API 는 함께 작동하지 않습니다. 자세한 내용은 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=34\"&gt;문제 #34&lt;/a&gt;를 참조하십시오</string>
<string name="vpn_tethering_title">VPN과 테더링</string>
- <string name="connection_retries">다시 연결</string>
+ <string name="connection_retries">연결 재시도</string>
<string name="reconnection_settings">다시 연결 설정</string>
- <string name="connectretrymessage">연결 시도 사이의 기다리는 초단위 주기 입니다.</string>
- <string name="connectretrywait">연결과 연결 사이의 초단위 기간</string>
- <string name="minidump_generated">OpenVPN이 예기치 않게 종료됐습니다. 메인 메뉴에 있는 미니 덤프 보내기 옵션의 사용을 고려 하시기 바랍니다</string>
+ <string name="connectretrymessage">연결 시도 사이에 대기하는 초 단위 시간입니다.</string>
+ <string name="connectretrywait">연결 사이의 초 단위 시간</string>
+ <string name="minidump_generated">OpenVPN이 예기치 않게 종료됐습니다. 메인 메뉴에 있는 미니 덤프 보내기 옵션의 사용을 고려하시기 바랍니다.</string>
<string name="send_minidump">미니 덤프를 개발자에게 보내기</string>
- <string name="send_minidump_summary">개발자에게 마지막 비정상종료에 대한 디버깅 정보를 보냅니다</string>
+ <string name="send_minidump_summary">개발자에게 마지막 비정상 종료에 대한 디버깅 정보를 보냅니다</string>
<string name="notifcation_title">OpenVPN - %s</string>
<string name="session_ipv4string">%1$s - %2$s</string>
<string name="session_ipv6string">%1$s - %3$s, %2$s</string>
<string name="state_connecting">연결중</string>
<string name="state_wait">서버 응답 대기중</string>
<string name="state_auth">인증중</string>
- <string name="state_get_config">클라이언트 구성 가져오는중</string>
+ <string name="state_get_config">클라이언트 구성 가져오는 중</string>
<string name="state_assign_ip">IP 주소 할당중</string>
- <string name="state_add_routes">노선 추가중</string>
+ <string name="state_add_routes">경로 추가중</string>
<string name="state_connected">연결됨</string>
<string name="state_disconnected">연결 끊기</string>
<string name="state_reconnecting">재연결중</string>
<string name="state_exiting">종료중</string>
- <string name="state_noprocess">실행안됨</string>
- <string name="state_resolve">호스트명 찾는중</string>
+ <string name="state_noprocess">실행 안 됨</string>
+ <string name="state_resolve">호스트 이름 변환중</string>
<string name="state_tcp_connect">연결중 (TCP)</string>
<string name="state_auth_failed">인증 실패</string>
<string name="state_nonetwork">사용 가능한 네트워크 대기중</string>
- <string name="notifcation_title_notconnect">연결 되지 않음</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
+ <string name="notifcation_title_notconnect">연결되지 않음</string>
<string name="start_vpn_title">VPN %s 연결중</string>
<string name="start_vpn_ticker">VPN %s 연결중</string>
- <string name="jelly_keystore_alphanumeric_bug">일부 버전의 안드로이드 4.1에서는 키 인증서의 이름에 비 영숫자 문자(공백, 밑줄 또는 대시)가 포함 된 경우 문제가 있습니다. 특수 문자 없는 인증서를 다시 가져와 시도해보세요</string>
- <string name="encryption_cipher">암호화 암호</string>
+ <string name="jelly_keystore_alphanumeric_bug">일부 버전의 안드로이드 4.1에서는 키 저장소 인증서의 이름에 비영숫자 문자(공백, 밑줄 또는 대시)가 포함된 경우 문제가 있습니다. 특수 문자 없는 인증서를 다시 가져와 보세요.</string>
+ <string name="encryption_cipher">암호화 알고리즘</string>
<string name="packet_auth">패킷 인증</string>
- <string name="auth_dialog_title">패킷 인증 방법을 입력한다</string>
- <string name="built_by">개발자 %s</string>
+ <string name="auth_dialog_title">패킷 인증 방법 입력</string>
+ <string name="built_by">%s가 빌드</string>
<string name="debug_build">디버그 빌드</string>
<string name="official_build">공식 빌드</string>
<string name="make_selection_inline">프로파일에 복사</string>
<string name="crashdump">크래시 덤프</string>
<string name="add">추가</string>
- <string name="send_config">설정 파일 보내기</string>
+ <string name="send_config">구성 파일 보내기</string>
<string name="complete_dn">완전한 DN</string>
- <string name="remotetlsnote">가져온 구성에는 다른 DN 형식을 사용하는 오래된 tls-remote옵션이 있는데 이는 더이상 지원되지 않습니다.</string>
- <string name="rdn">RDN (common 이름)</string>
+ <string name="remotetlsnote">가져온 구성에는 다른 DN 형식을 사용하는 오래된 tls-remote 옵션이 있는데 이는 더이상 지원되지 않습니다.</string>
+ <string name="rdn">RDN (공통 이름)</string>
<string name="rdn_prefix">RDN 접두사</string>
- <string name="tls_remote_deprecated">tls-remote (지원 되지 않음)</string>
- <string name="help_translate">http://crowdin.net/project/ics-openvpn/invite를 방문 하여 번역을 도울 수 있습니다</string>
- <string name="prompt">%1$s 이(가) %2$s 을(를) 제어하려고 시도</string>
- <string name="remote_warning">다음 진행으로, 당신은 OpenVPN for Android 응용프로그램에게 완벽한 제어권과 모든 네트워크 트래픽을 가로챌 수 있는 권한을 허락합니다. <b>앱을 신뢰하지 않는다면 허락하지 마십시오.</b> 그렇지 않으면, 당신은 당신의 데이터를 악성 소프트웨어에게 빼앗길 수 있습니다.\"</string>
- <string name="remote_trust">나는 이 프로그램을 신뢰합니다.</string>
- <string name="no_external_app_allowed">어떤 응용 프로그램도 외부 API를 사용할 수 없습니다</string>
+ <string name="tls_remote_deprecated">tls-remote (지원되지 않음)</string>
+ <string name="help_translate">http://crowdin.net/project/ics-openvpn/invite 를 방문하여 번역을 도울 수 있습니다</string>
+ <string name="prompt">%1$s가 %2$s를 제어하려고 합니다</string>
+ <string name="remote_warning">계속 진행하면, 당신은 해당 앱에 OpenVPN for Android의 완벽한 제어권과 모든 네트워크 트래픽을 가로챌 수 있는 권한을 허락합니다.<b>그 앱을 신뢰하지 않는다면 허락하지 마십시오.</b> 그렇지 않으면 악성 소프트웨어가 당신의 데이터를 유출할 수 있습니다.</string>
+ <string name="remote_trust">나는 이 앱을 신뢰합니다.</string>
+ <string name="no_external_app_allowed">어떤 앱도 외부 API를 사용할 수 없습니다</string>
<string name="allowed_apps">허용된 앱: %s</string>
- <string name="clearappsdialog">허용된 외부 앱의 목록을 삭제하겠습니까?\n현재 허용된 외부 앱:\n\n%s</string>
- <string name="screenoff_summary">\"화면이 꺼져있을때 60초동안 64kB 미만의 데이터가 전송되면 VPN 일시정지. \"Persistent Tun\" 옵션이 활성화되어 있으면 VPN 일시 정지시 당신의 장비는 네트워크가 끊어 집니다. \"Persistent Tun\" 옵션이 없는 경우 장비는 VPN 연결/보호를 잃습니다. </string>
+ <string name="clearappsdialog">허용된 외부 앱 목록을 비우겠습니까?\n현재 허용된 외부 앱:\n\n%s</string>
+ <string name="screenoff_summary">\"화면이 꺼져 있고 60 초 동안 64kB 미만의 데이터가 전송되면 VPN 일시 정지. \"지속적인 TUN\" 옵션이 활성화되어 있으면 VPN 일시 정지시 당신의 장비는 네트워크 연결이 없는 상태가 됩니다. \"지속적인 TUN\" 옵션이 없는 경우 기기는 VPN 연결/보호를 잃습니다.</string>
<string name="screenoff_title">화면 꺼짐 후 VPN 연결 일시 정지</string>
- <string name="screenoff_pause">화면이 꺼진 상태에서 일시 중지: %2$ss에서 %1$s 미만</string>
- <string name="screen_nopersistenttun">경고: 이 VPN은 persistent tun이 비활성화 되어있습니다. 화면이 꺼졌을 때 트래픽은 터널을 사용하지 않고 인터넷을 바로 사용합니다.</string>
+ <string name="screenoff_pause">화면이 꺼진 상태에서 연결 일시 정지: %2$s 초 안에 %1$s 미만</string>
+ <string name="screen_nopersistenttun">경고: 이 VPN은 지속적인 TUN이 비활성화 되어있습니다. 화면이 꺼졌을 때 트래픽은 터널을 사용하지 않고 보통 인터넷을 사용합니다.</string>
<string name="save_password">암호 저장</string>
- <string name="pauseVPN">VPN 일시중지</string>
+ <string name="pauseVPN">VPN 일시 정지</string>
<string name="resumevpn">VPN 재개하기</string>
- <string name="state_userpause">VPN 일시 정지 사용자의 요청</string>
- <string name="state_screenoff">VPN 일시정지됨 - 화면 끄기</string>
- <string name="device_specific">장치 관련 Hacks</string>
- <string name="cannotparsecert">인증서 정보를 표시 할 수 없습니다</string>
- <string name="appbehaviour">응용 프로그램 동작</string>
+ <string name="state_userpause">사용자가 요청한 VPN 일시 정지</string>
+ <string name="state_screenoff">VPN 일시 정지됨 - 화면 끄기</string>
+ <string name="device_specific">기기별 해킹</string>
+ <string name="cannotparsecert">인증서 정보를 표시할 수 없습니다</string>
+ <string name="appbehaviour">앱 동작</string>
<string name="vpnbehaviour">VPN 동작</string>
- <string name="allow_vpn_changes">VPN 프로필에 대한 변경을 허용</string>
- <string name="hwkeychain">하드웨어 키 스토어:</string>
- <string name="permission_icon_app">응용 프로그램의 아이콘이 OpenVPN for Android를 사용 하려고함</string>
- <string name="faq_vpndialog43">"안드로이드 4.3부터는 VPN 확인이 \"overlaying apps\"로 부터 보호 받게 됩니다. 따라서 입력창이 터치 입력에 반응하지 않을 수 있습니다. 사용하는 앱중에서 overlay를 사용하는 경우 이러한 문제가 발생될수있습니다. 문제의 앱을 제작한 프로그램어를 연락하십시오. 이 문제는 안드로이드 4.3과 이상의 버전에서 모든 VPN 응용 프로그램에 영향을 줍니다. &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;Issue 185&lt;a&gt; 참조"</string>
- <string name="faq_vpndialog43_title">안드로이드 4.3과 이후 버전에서의 VPN 확인 창</string>
- <string name="donatePlayStore">또는 당신은 플레이 스토어와 나에게 기부금을 보낼 수 있습니다:</string>
- <string name="thanks_for_donation">%s 님! 기부 감사합니다</string>
+ <string name="allow_vpn_changes">VPN 프로파일 변경을 허용</string>
+ <string name="hwkeychain">하드웨어 키 저장소:</string>
+ <string name="permission_icon_app">OpenVPN for Android를 사용하려고 하는 앱의 아이콘</string>
+ <string name="faq_vpndialog43">"안드로이드 4.3부터는 VPN 확인이 \"오버레이하는 앱\"으로부터 보호받습니다. 이 경우 대화창이 터치 입력에 반응하지 않게 됩니다. 사용하는 앱 중에서 오버레이를 사용하는 경우 이러한 문제가 발생될 수 있습니다. 문제의 앱을 발견하면 그 앱의 제작자에게 연락하십시오. 이 문제는 안드로이드 4.3과 이상의 버전에서 모든 VPN 앱에 영향을 줍니다. 상세한 사항은 &lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt;문제 185&lt;a&gt; 참조"</string>
+ <string name="faq_vpndialog43_title">VPN 확인 대화창</string>
+ <string name="donatePlayStore">또는 당신은 플레이 스토어에서 나에게 기부금을 보낼 수 있습니다:</string>
+ <string name="thanks_for_donation">%s를 기부해 주셔서 감사합니다!</string>
<string name="logCleared">로그가 삭제되었습니다.</string>
- <string name="show_password">비밀 번호 표시</string>
+ <string name="show_password">암호 표시</string>
<string name="keyChainAccessError">키체인 접근 오류: %s</string>
- <string name="timestamp_short">짧은</string>
+ <string name="timestamp_short">간결하게</string>
<string name="timestamp_iso">ISO</string>
<string name="timestamps">타임 스탬프</string>
<string name="timestamps_none">없음</string>
<string name="uploaded_data">업로드</string>
<string name="downloaded_data">다운로드</string>
- <string name="vpn_status">Vpn 상태</string>
+ <string name="vpn_status">VPN 상태</string>
<string name="logview_options">옵션 보기</string>
- <string name="unhandled_exception">처리 되지 않은 예외: %1$s\n\n%2$s</string>
+ <string name="unhandled_exception">처리되지 않은 예외: %1$s\n\n%2$s</string>
<string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
- <string name="full_licenses">전체 라이센스</string>
+ <string name="faq_system_dialog_xposed">만약 당신의 안드로이드 기기가 루팅되어 있다면 &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt;와 &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialog confirm module&lt;/a&gt;을 자신의 책임 하에 설치할 수 있습니다.</string>
+ <string name="full_licenses">전체 라이선스</string>
+ <string name="blocklocal_summary">로컬 네트워크에 직접 연결된 인터페이스는 VPN을 통해 접속하지 않습니다. 이 옵션의 선택을 취소하면 로컬 네트워크의 모든 트래픽이 VPN으로 리디렉션됩니다.</string>
+ <string name="blocklocal_title">로컬 네트워크에선 VPN 우회</string>
<string name="userpw_file">사용자 이름/암호 파일</string>
- <string name="imported_from_file">%s 에서 가져옴</string>
- <string name="mssfix_invalid_value">MSS override의 값은 0과 9000 사이의 정수이어야합니다</string>
+ <string name="imported_from_file">[%s에서 가져옴]</string>
+ <string name="files_missing_hint">일부 파일을 찾을 수 없습니다. 프로파일을 가져올 파일을 선택하십시오:</string>
+ <string name="openvpn_is_no_free_vpn">이 앱을 사용하려면 OpenVPN을 지원하는 VPN 공급자/VPN 게이트웨이가 필요합니다(종종 고용주가 제공함). OpenVPN에 대한 자세한 내용과 자신의 OpenVPN 서버를 설정하는 방법은 http://community.openvpn.net/ 를 참조하십시오.</string>
+ <string name="import_log">로그 가져 오기:</string>
+ <string name="ip_looks_like_subnet">VPN 토폴로지 \"%3$s\"가 지정되었지만 ifconfig %1$s %2$s는 네트워크 마스크가 있는 IP 주소와 더 유사합니다. \"subnet\" 토폴로지를 가정합니다.</string>
+ <string name="mssfix_invalid_value">MSS 재정의 값은 0과 9000 사이의 정수이어야 합니다</string>
+ <string name="mtu_invalid_value">MTU 재정의 값은 64과 9000 사이의 정수이어야 합니다</string>
+ <string name="mssfix_value_dialog">송신 패킷을 OpenVPN이 캡슐화하여 만들어지는, OpenVPN이 피어에게 보낼 UDP 패킷 크기가 이 바이트 수를 넘지 않도록 송신 패킷 크기를 제한하도록 터널 상의 TCP 세션들에 알립니다. (기본값 1450)</string>
+ <string name="mssfix_checkbox">TCP 페이로드의 MSS 값 재정의</string>
+ <string name="mssfix_dialogtitle">TCP 페이로드의 MSS 설정</string>
+ <string name="client_behaviour">클라이언트 동작</string>
+ <string name="clear_external_apps">허용된 외부 앱 비우기</string>
<string name="loading">로드 중...</string>
<string name="allowed_vpn_apps_info">VPN을 사용할 앱들: %1$s</string>
<string name="disallowed_vpn_apps_info">VPN을 사용하지 않을 앱들: %1$s</string>
+ <string name="app_no_longer_exists">%s 패키지가 더이상 설치되어 있지 않으며 앱 허용/거부 목록에서 제거함</string>
+ <string name="vpn_disallow_radio">VPN은 모든 앱에 사용되지만 선택된 앱은 제외합니다.</string>
+ <string name="vpn_allow_radio">VPN은 선택된 앱에만 사용됩니다.</string>
+ <string name="query_delete_remote">원격 서버 항목을 제거하시겠습니까?</string>
<string name="keep">유지</string>
<string name="delete">삭제</string>
+ <string name="add_remote">새 원격 서버 추가</string>
+ <string name="remote_random">연결시 임의의 순서로 연결 항목을 사용</string>
+ <string name="remote_no_server_selected">하나 이상의 원격 서버를 정의하고 활성화해야 합니다.</string>
+ <string name="server_list">서버 목록</string>
+ <string name="vpn_allowed_apps">허용된 앱</string>
+ <string name="advanced_settings">고급 설정</string>
<string name="payload_options">페이로드 옵션</string>
<string name="tls_settings">TLS 설정</string>
+ <string name="no_remote_defined">정의된 원격 서버 없음</string>
+ <string name="duplicate_vpn">VPN 프로파일 복제</string>
+ <string name="duplicate_profile_title">프로파일 복제: %s</string>
+ <string name="show_log">로그 보기</string>
+ <string name="faq_android_clients">Android용 OpenVPN 클라이언트가 여러 개 있습니다. 가장 일반적으로 사용되는 것은 OpenVPN for Android (이 클라이언트), OpenVPN Connect 및 OpenVPN Settings입니다. &lt;p&gt;클라이언트들을 두 그룹으로 나눌 수 있습니다. OpenVPN for Android와 OpenVPN Connect는 공식 VPNService API(Android 4.0 이상)를 사용하고 루트가 필요하지 않으며 OpenVPN Settings는 루트를 사용합니다.&lt;p&gt;OpenVPN for Android는 오픈 소스 클라이언트이며 Arne Schwabe에 의해 개발되었습니다. 고급 사용자를 대상으로 하며 많은 설정을 제공하고 파일에서 프로필을 가져오고 앱 내에서 프로필을 구성/변경하는 기능을 제공합니다. 이 클라이언트는 OpenVPN의 커뮤니티 버전을 기반으로 하는데 OpenVPN 2.x 소스 코드를 기반으로 합니다. 이 클라이언트는 커뮤니티의 반 공식 클라이언트로 볼 수 있습니다. &lt;p&gt;OpenVPN Connect는 OpenVPN Technologies, Inc.에서 개발한 비공개 소스 클라이언트입니다. 이 클라이언트는 일반 사용을 목적으로 하고 평균적인 사용자를 대상으로 하며 OpenVPN 프로파일을 가져올 수 있습니다. 이 클라이언트는 OpenVPN 프로토콜의 OpenVPN C++ 재구현을 기반으로 합니다(이는 OpenVPN Technologies, Inc.에서 iOS용 OpenVPN 앱을 내놓는 데 필요했습니다). 이 클라이언트는 OpenVPN 기술의 공식 클라이언트입니다. &lt;p&gt;OpenVPN Settings는 이 클라이언트들 중 가장 오래된 클라이언트이며 오픈 소스 OpenVPN의 UI입니다. OpenVPN for Android와 달리 루트가 필요하며 VPNService API를 사용하지 않습니다. Android 4.0 이상에 의존하지 않습니다.</string>
<string name="faq_androids_clients_title">안드로이드 OpenVPN 클라이언트 간의 차이</string>
+ <string name="ignore_multicast_route">멀티캐스트 경로 무시​​: %s</string>
+ <string name="ab_only_cidr">Android는 VPN에 대한 CIDR 경로만 지원합니다. 비 CIDR 경로는 거의 사용되지 않기 때문에 OpenVPN for Android는 CIDR이 아닌 경로에 /32를 사용하고 경고를 보냅니다.</string>
+ <string name="ab_tethering_44">테더링은 VPN이 활성화되어있는 동안 작동합니다. 테더링된 연결은 VPN을 사용하지 않을 것입니다.</string>
+ <string name="ab_kitkat_mss">초기 킷캣 버전은 TCP 연결에서 잘못된 MSS 값을 설정합니다(# 61948). 이 버그를 우회하려면 MSS 재정의 옵션을 활성화하십시오.</string>
+ <string name="ab_proxy">Android는 DNS 서버가 설정되지 않은 경우 모바일/Wi-Fi 연결에 지정된 프록시 설정을 계속 사용합니다. OpenVPN for Android는 로그에 이에 대해 경고할 것입니다. <p>VPN이 DNS 서버를 설정할 때 안드로이드는 프록시를 사용하지 않을 것입니다. VPN 연결을 위한 프록시를 설정하는 API는 없습니다.</p></string>
+ <string name="ab_lollipop_reinstall">VPN 앱이 제거되고 다시 설치되면 작동을 멈출 수 있습니다. 자세한 내용은 #80074를 참조하십시오.</string>
+ <string name="ab_not_route_to_vpn">구성된 클라이언트 IP와 해당 네트워크 마스크에 있는 IP들은 VPN으로 라우팅되지 않습니다. OpenVPN은 클라이언트 IP와 넷마스크에 해당하는 경로를 명시적으로 추가함으로써 이 버그를 우회합니다.</string>
+ <string name="ab_persist_tun">지속적인 TUN 지원에 사용되는 다른 TUN 장치가 활성화된 상태에서 한 TUN 장치를 열면 기기의 VPNServices가 죽습니다. VPN을 다시 작동 시키려면 재부팅해야 합니다. OpenVPN for Android는 TUN 장치를 다시 열지 않으려고 시도합니다. 정말 필요하면 충돌이 발생하지 않도록 새로운 TUN 장치를 열기 전에 먼저 현재 TUN을 닫습니다. 이 경우 짧은 순간 VPN이 아닌 연결을 통해 패킷이 전송될 수 있습니다. 이 우회 방법으로도 VPNServices가 죽고 기기를 재부팅해야 하는 경우가 있습니다.</string>
+ <string name="ab_secondary_users">VPN은 부차적인 사용자에게는 전혀 작동하지 않습니다.</string>
+ <string name="ab_kitkat_reconnect">"여러 사용자가 VPN 앱을 사용하는 동안 모바일 연결/모바일 데이터 연결이 자주 끊어지는 것으로 보고합니다. 이 반응은 일부 모바일 공급자/기기 조합에만 영향을 미치는 것으로 보이며 지금까지 버그에 대한 원인/해결 방법을 알 수 없습니다."</string>
+ <string name="ab_vpn_reachability_44">VPN 없이 도달할 수 있는 목적지만 VPN을 통해서 도달할 수 있습니다. IPv6 VPN은 전혀 작동하지 않습니다.</string>
+ <string name="ab_only_cidr_title">비 CIDR 경로</string>
+ <string name="ab_proxy_title">VPN을 위한 프록시 동작</string>
+ <string name="ab_lollipop_reinstall_title">VPN 앱들을 재설치</string>
+ <string name="version_upto">%s 및 이전 버전</string>
+ <string name="copy_of_profile">%s의 사본</string>
+ <string name="ab_not_route_to_vpn_title">구성된 IP 주소로의 경로</string>
+ <string name="ab_kitkat_mss_title">VPN 연결에 대한 잘못된 MSS 값</string>
+ <string name="ab_secondary_users_title">부차적인 태블릿 사용자들</string>
+ <string name="custom_connection_options_warng">사용자 지정 연결별 옵션을 지정하십시오. 조심해서 사용하십시오.</string>
+ <string name="custom_connection_options">사용자 지정 옵션</string>
+ <string name="remove_connection_entry">연결 항목 제거</string>
+ <string name="ab_kitkat_reconnect_title">모바일 네트워크에서 임의 연결 해제</string>
+ <string name="ab_vpn_reachability_44_title">원격 네트워크에 도달할 수 없음</string>
+ <string name="ab_persist_tun_title">지속적인 TUN 모드</string>
+ <string name="version_and_later">%s 및 이후 버전</string>
+ <string name="tls_cipher_alert_title">SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure로 연결 실패</string>
+ <string name="tls_cipher_alert">새로운 OpenVPN for Android 버전들(0.6.29/2015년 3월)은 허용된 암호화 스위트(tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\")에 더 안전한 기본값을 사용합니다. 안타깝게도 보안 수준이 낮은 암호화 스위트와 수출용 암호화 스위트를 생략하면, 특히 완벽 전달 보안(Diffie-Hellman)을 지원하지 않는 암호화 스위트를 생략하면 몇 가지 문제가 발생합니다. 이것은 보통 불필요한 요소를 제거한 SSL(예: MikroTik)을 쓰는 서버나 몇 임베디드 OS에서 tls-cipher을설정하여 TLS 보안을 강화하려는 좋은 의도를 가지고 했으나 불완전하게 실행됨으로써 발생합니다.\n이 문제를 해결하려면 서버에서 tls-cipher 설정을 tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\"와 같은 적절한 기본값으로 설정하십시오. 클라이언트에서 문제를 우회하려면 안드로이드 클라이언트의 tls-cipher DEFAULT 사용자 정의 옵션을 추가하십시오.</string>
+ <string name="message_no_user_edit">이 프로파일은 외부 앱(%s)에서 추가되었으며 사용자가 편집할 수 없음으로 표시되었습니다.</string>
+ <string name="crl_file">인증서 폐기 목록</string>
+ <string name="service_restarted">OpenVPN 서비스 재시작 (앱이 메모리 부족으로 죽었거나 강제 종료된 것으로 추정)</string>
+ <string name="import_config_error">구성 가져오기에서 오류가 발생했습니다. 저장할 수 없습니다.</string>
+ <string name="Search">검색</string>
+ <string name="lastdumpdate">(마지막 덤프는 %1$d시간 %2$d분 이전 (%3$s))</string>
+ <string name="clear_log_on_connect">새 연결에 로그 지우기</string>
+ <string name="connect_timeout">연결 시간 초과</string>
+ <string name="no_allowed_app">허용된 앱이 추가되지 않았습니다. 모든 앱을 허용하지 않으려면 허용된 앱 목록에 앱이 하나 이상 있어야 하므로 이 앱 자신(%s)을 추가합니다.</string>
+ <string name="query_permissions_sdcard">OpenVPN for Android는 자동으로 SD 카드에서 누락된 파일을 검색할 수 있습니다. 이 메시지를 탭하여 권한 요청을 시작하십시오.</string>
+ <string name="protocol">프로토콜</string>
+ <string name="enabled_connection_entry">사용</string>
+ <string name="abi_mismatch">이 장치의 고유 ABI 우선 순위(%1$s)와 고유 라이브러리가 보고한 ABI(%2$s)가 불일치</string>
+ <string name="permission_revoked">운영체제에 의해 취소된 VPN 권한(예: 다른 VPN 프로그램 시작됨), VPN 중지</string>
+ <string name="pushpeerinfo">피어 정보 푸시</string>
+ <string name="pushpeerinfosummary">서버에 추가 정보 전송 (예: SSL 버전 및 안드로이드 버전)</string>
+ <string name="pw_request_dialog_title">%1$s이 필요함</string>
+ <string name="pw_request_dialog_prompt">프로파일 %1$s의 암호를 입력하십시오</string>
+ <string name="menu_use_inline_data">인라인 데이터 사용</string>
+ <string name="export_config_chooser_title">구성 파일 내보내기</string>
+ <string name="missing_tlsauth">tls-auth 파일이 누락되었습니다</string>
+ <string name="missing_certificates">사용자 인증서 또는 사용자 인증서 키 파일 누락됨</string>
+ <string name="missing_ca_certificate">CA 인증서 누락됨</string>
+ <string name="crl_title">인증서 폐기 목록 (선택 사항)</string>
+ <string name="reread_log">로그 캐시 파일에서 항목(%d 개)을 다시 읽습니다</string>
+ <string name="samsung_broken">삼성 휴대폰이 가장 많이 판매되는 안드로이드폰 중 하나이지만, 삼성의 펌웨어는 가장 버그가 많은 안드로이드 펌웨어 중 하나입니다. 버그는 이러한 기기에서의 VPN 작업에만 국한되지 않지만 그 중 많은 수를 우회할 수 있습니다. 다음은 일부 버그에 대한 설명입니다.\n\nDNS는 VPN 범위의 DNS 서버가 아니면 작동하지 않습니다.\n\n많은 삼성 5.x 기기에서 허용/허용되지 않는 앱 기능이 작동하지 않습니다.\n삼성 6.x 기기에서는 VPN 앱이 절전 기능에서 제외되지 않으면 VPN이 작동하지 않는 것으로 보고됩니다.</string>
+ <string name="samsung_broken_title">삼성 휴대폰</string>
+ <string name="novpn_selected">VPN이 선택되지 않았습니다.</string>
+ <string name="defaultvpn">기본 VPN</string>
+ <string name="defaultvpnsummary">기본 VPN이 필요한 장소(현재로는 부팅 중에 켜기와 연결 유지, 빠른 설정 타일)에서 사용될 VPN</string>
+ <string name="vpnselected">현재 선택된 VPN: \'%s\'</string>
+ <string name="reconnect">다시 연결</string>
+ <string name="qs_title">VPN 토글</string>
+ <string name="qs_connect">%s에 연결</string>
+ <string name="qs_disconnect">%s 연결 끊기</string>
+ <string name="connectretrymaxmessage">연결 시도 사이의 최대 시간을 입력하십시오. OpenVPN은 매 연결 시도 실패 후 대기 시간을 이 값까지 천천히 올립니다. 기본값은 300 초입니다.</string>
+ <string name="connectretrymaxtitle">연결 시도 사이의 최대 시간</string>
+ <string name="state_waitconnectretry">연결 시도 사이에 %s 초 기다림</string>
+ <string name="nought_alwayson_warning"><![CDATA[VPN 확인 대화 상자가 표시되지 않으면 다른 앱에서 \"연결 유지 VPN\"을 켜 놓았을 수 있습니다. 이 경우 해당 앱만 VPN에 연결할 수 있습니다. 설정 -> 네트워크 더보기 .. -> VPN을 확인하세요.]]></string>
+ <string name="management_socket_closed">OpenVPN에 대한 연결이 끊어졌습니다 (%s)</string>
+ <string name="change_sorting">정렬 변경</string>
+ <string name="sort">정렬</string>
+ <string name="sorted_lru">최근 사용 순으로 프로파일 정렬</string>
+ <string name="sorted_az">이름 순으로 프로파일 정렬</string>
+ <string name="deprecated_tls_remote">구성이 2.3에서 제거될 것으로 표시되었고 2.4에서 완전히 제거된 tls-remote 옵션을 사용합니다</string>
+ <string name="auth_failed_behaviour">AUTH_FAILED에 대한 동작</string>
+ <string name="graph">그래프</string>
+ <string name="use_logarithmic_scale">로그 스케일 사용</string>
+ <string name="notenoughdata">데이터가 충분하지 않습니다</string>
+ <string name="avghour">시간당 평균</string>
+ <string name="avgmin">분당 평균</string>
+ <string name="last5minutes">지난 5 분</string>
+ <string name="data_in">들어옴</string>
+ <string name="data_out">나감</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="weakmd">&lt;p&gt;OpenSSL 1.1 버전부터, OpenSSL은 MD5와 같은, 인증서의 약한 서명을
+ 거부합니다.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5 서명은 완전히 불안전하고 더이상 사용하지 않아야 합니다.&lt;/b&gt; MD5
+ 충돌은 &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt;매우 적은 비용으로
+ 수 시간 안에&lt;/a&gt; 만들 수 있습니다.
+ 가능한 한 빨리 VPN 인증서를 업데이트해야 합니다.&lt;/p&gt;&lt;p&gt;불행하게도 오래된 easy-rsa 배포판은
+ 구성 옵션 \"default_md md5\"가 포함되어 있습니다. 만약 오래된 easy-rsa 버전을
+ 사용하신다면 &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;최신 버전&lt;/a&gt;으로 업데이트하시거나
+ md5를 sha256으로 바꾸고 당신의 인증서를
+ 재생성하세요.&lt;/p&gt;&lt;p&gt;정말 오래되고 깨진 인증서를 사용하고 싶으시다면
+ 사용자 지정 구성 옵션 tls-cipher \"DEFAULT:@SECLEVEL=0\"를 고급 구성에서 설정하거나
+ 불러오는 구성 파일에 추가해 넣으세요.&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">연결 통계</string>
+ <string name="channel_description_background">수립된 OpenVPN 연결의 진행 통계</string>
+ <string name="channel_name_status">연결 상태 변화</string>
+ <string name="channel_description_status">OpenVPN 연결의 상태 변화 (연결중, 인증중,&#8230;)</string>
+ <string name="weakmd_title">인증서 서명에 약한 (MD5) 해시 사용 (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL 속도 테스트</string>
+ <string name="openssl_cipher_name">OpenSSL 암호화 알고리즘 이름</string>
+ <string name="osslspeedtest">OpenSSL 암호화 속도 테스트</string>
+ <string name="openssl_error">OpenSSL이 오류를 반환함</string>
+ <string name="running_test">테스트 수행 중&#8230;</string>
+ <string name="test_algoirhtms">선택한 알고리즘 테스트</string>
+ <string name="all_app_prompt">어떤 외부 앱이 %s를 제어하려고 합니다. 접근을 요청하는 앱을 정해 놓을 수 없습니다. 이 앱을 허용하면 모든 앱의 접근을 승인하게 됩니다.</string>
+ <string name="openvpn3_nostatickeys">OpenVPN 3 C++ 구현은 고정 키를 지원하지 않습니다. 일반 설정에서 OpenVPN 2.x로 변경해 주세요.</string>
+ <string name="openvpn3_pkcs12">OpenVPN 3 C++ 구현과 함께 PKCS12 파일을 직접 사용하는 것은 지원되지 않습니다. PKCS12 파일을 안드로이드 키 저장소로 가져 오거나 일반 설정에서 OpenVPN 2.x으로 변경하세요.</string>
</resources>
diff --git a/main/src/main/res/values-nl/arrays.xml b/main/src/main/res/values-nl/arrays.xml
index 73a299d5..08d1f2d2 100755
--- a/main/src/main/res/values-nl/arrays.xml
+++ b/main/src/main/res/values-nl/arrays.xml
@@ -20,6 +20,11 @@
<item translatable="false">0</item>
<item translatable="false">1</item>
<item>Niet-gespecificeerd</item>
- <item>Versleuteling (tls-crypt)</item>
+ <item>Encryptie (tls-crypt)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Verbinding verbreken, wachtwoord vergeten</item>
+ <item>Verbinding verbreken, wachtwoord onthouden</item>
+ <item>Negeer, probeer opnieuw</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-nl/strings.xml b/main/src/main/res/values-nl/strings.xml
index 9518e3d2..852dcfdc 100755
--- a/main/src/main/res/values-nl/strings.xml
+++ b/main/src/main/res/values-nl/strings.xml
@@ -12,14 +12,14 @@
<string name="cant_read_folder">Map is onleesbaar</string>
<string name="select">Selecteer</string>
<string name="cancel">Annuleer</string>
- <string name="no_data">Geen Gegevens</string>
+ <string name="no_data">Geen Data</string>
<string name="useLZO">LZO Compressie</string>
<string name="client_no_certificate">Geen Certificaat</string>
<string name="client_certificate_title">Client Certificaat</string>
<string name="client_key_title">Client Certificaat Sleutel</string>
<string name="client_pkcs12_title">PKCS12 Bestand</string>
<string name="ca_title">CA Certificaat</string>
- <string name="no_certificate">Je moet een certificaat selecteren</string>
+ <string name="no_certificate">U moet een certificaat selecteren</string>
<string name="copyright_guicode">De broncode en bugs zijn te vinden op https://github.com/schwabe/ics-openvpn/</string>
<string name="copyright_others">Het programma gebruikt de volgende componenten. Zie de broncode voor volledige details over de licenties.</string>
<string name="about">Over</string>
@@ -27,24 +27,24 @@
<string name="vpn_type">Type</string>
<string name="pkcs12pwquery">PKCS12 Wachtwoord</string>
<string name="file_select">Selecteer&#8230;</string>
- <string name="file_nothing_selected">Je moet een bestand selecteren</string>
+ <string name="file_nothing_selected">U moet een bestand selecteren</string>
<string name="useTLSAuth">Gebruik TLS autentificatie</string>
<string name="tls_direction">TLS Richting</string>
- <string name="ipv6_dialog_tile">Voer een IPv6 Adres/Netmask in met het CIDR Formaat (b.v. 2000:dd::23/64)</string>
- <string name="ipv4_dialog_title">Voer een IPv4 Adres/Netmask in met het CIDR Formaat (b.v. 1.2.3.4/24)</string>
- <string name="ipv4_address">IPv6 Adres</string>
- <string name="ipv6_address">IPv4 Adres</string>
- <string name="custom_option_warning">Geavanceerde OpenVPN opties. Veel van de tun gerelateerde OpenVPN instellingen worden niet ondersteund. Als u denkt dat een belangrijke optie ontbreekt, neem dan contact op met de auteur.</string>
+ <string name="ipv6_dialog_tile">Voer IPv6-adres/Netmask in CIDR-indeling in (bijv. 2000:dd::23/64)</string>
+ <string name="ipv4_dialog_title">Voer IPv4-adres/Netmask in CIDR-indeling in (bijv. 1.2.3.4/24)</string>
+ <string name="ipv4_address">IPv4 Adres</string>
+ <string name="ipv6_address">IPv6 Adres</string>
+ <string name="custom_option_warning">Geavanceerde OpenVPN opties. Wees voorzichtig. Veel van de tun gerelateerde OpenVPN instellingen worden niet ondersteund. Als u denkt dat een belangrijke optie ontbreekt, neem dan contact op met de auteur</string>
<string name="auth_username">Gebruikersnaam</string>
- <string name="auth_pwquery">wachtwoord</string>
+ <string name="auth_pwquery">Wachtwoord</string>
<string name="static_keys_info">Voor de statische configuratie worden de TLS Auth keys als statische sleutels gebruikt</string>
- <string name="configure_the_vpn">VPN configureren</string>
+ <string name="configure_the_vpn">Configureer de VPN</string>
<string name="menu_add_profile">Profiel toevoegen</string>
<string name="add_profile_name_prompt">Voer een naam in voor het nieuwe Profiel</string>
- <string name="duplicate_profile_name">Profielnaam is al in gebruik</string>
- <string name="profilename">Profiel name</string>
- <string name="no_keystore_cert_selected">Geen gebruikerscertificaat geselecteerd</string>
- <string name="no_ca_cert_selected">Je moet een CA certificaat selecteren</string>
+ <string name="duplicate_profile_name">Voer een unieke profielnaam in</string>
+ <string name="profilename">Profielnaam</string>
+ <string name="no_keystore_cert_selected">U moet een gebruikerscertificaat selecteren</string>
+ <string name="no_ca_cert_selected">U moet een CA-certificaat selecteren</string>
<string name="no_error_found">Geen fout.</string>
<string name="config_error_found">Fout in de configuratie</string>
<string name="ipv4_format_error">Fout bij inlezen van IPv4-adres</string>
@@ -55,140 +55,211 @@
<string name="shortcut_profile_notfound">Het profiel zoals aangegeven in de snelkoppeling kon niet gevonden worden.</string>
<string name="random_host_prefix">Willekeurig Host Voorvoegsel</string>
<string name="random_host_summary">Voegt 6 willekeurige tekens toe voor de hostname</string>
- <string name="custom_config_title">Eigen configuratie opties</string>
- <string name="custom_config_summary">Geef je eigen configuratieopties aan. Wees voorzichtig!</string>
+ <string name="custom_config_title">Aangepaste opties inschakelen</string>
+ <string name="custom_config_summary">Geef aangepaste opties op. Wees voorzichtig!</string>
<string name="route_rejected">Route geweigerd door Android</string>
<string name="cancel_connection">Verbinding verbreken</string>
<string name="cancel_connection_long">VPN verbinding verbreken</string>
<string name="clear_log">logboek wissen</string>
<string name="title_cancel">Annuleer bevestiging</string>
<string name="cancel_connection_query">Sluit de verbonden VPN af/annuleer de verbindingspoging?</string>
- <string name="remove_vpn">VPN wissen</string>
+ <string name="remove_vpn">VPN verwijderen</string>
<string name="check_remote_tlscert">Controleert of de server een certificaat met TLS Server extensions gebruikt (--remote-cert-tls server)</string>
<string name="check_remote_tlscert_title">Verwacht TLS server-certificaat</string>
- <string name="remote_tlscn_check_summary">Controleert de externe server certificaathouder</string>
+ <string name="remote_tlscn_check_summary">Controleert de DN van het externe servercertificaat</string>
<string name="remote_tlscn_check_title">Controleer Certificaat Hostname</string>
+ <string name="enter_tlscn_dialog">Specificeer de controle die gebruikt wordt om het externe certificaat DN te verifiëren (bijv. C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\nSpecificeer de volledige DN of de RDN (openvpn.blinkt.de in het voorbeeld) of een RDN-voorvoegsel voor verificatie.\n\nWanneer het gebruikte RDN-voorvoegsel \"Server\" overeenkomt met \"Server-1\" en \"Server-2\"\n\nEen leeg tekstveld zorgt dat de RDN wordt gecontroleerd tegen de hostnaam van de server.\n\nVoor meer details zie de OpenVPN 2.3.1+ manpage onder --verify-x509-name</string>
<string name="enter_tlscn_title">Externe certificaathouder</string>
- <string name="tls_key_auth">Activeert TLS Key verificatie</string>
+ <string name="tls_key_auth">Activeert TLS Key Authenticatie</string>
<string name="tls_auth_file">TLS Auth Bestand</string>
- <string name="pull_on_summary">Vraag IP adres, routes en timing opties van de server.</string>
- <string name="pull_off_summary">De server vraagt geen informatie op. Instellingen moeten onderaan worden gespecificeerd.</string>
- <string name="use_pull">Pull Instellingen</string>
+ <string name="pull_on_summary">Verzoek IP adres, routes en timing opties van de server.</string>
+ <string name="pull_off_summary">Er wordt geen informatie gevraagd van de server. Instellingen moeten hieronder worden gespecificeerd.</string>
+ <string name="use_pull">Verkrijg Instellingen</string>
<string name="dns">DNS</string>
<string name="override_dns">DNS Instellingen van Server Overschrijven</string>
<string name="dns_override_summary">Gebruik eigen DNS Servers</string>
- <string name="searchdomain">Zoekd domein</string>
- <string name="dns1_summary">Primaire DNS server</string>
+ <string name="searchdomain">Zoek domein</string>
+ <string name="dns1_summary">DNS server die moet worden gebruikt.</string>
<string name="dns_server">DNS Server</string>
- <string name="secondary_dns_message">Secundaire DNS server. Deze wordt gebruikt voor het geval dat de primaire DNS server niet bereikbaar is</string>
+ <string name="secondary_dns_message">Secundaire DNS server die gebruikt wordt wanneer de primaire DNS server niet bereikbaar is.</string>
<string name="backup_dns">Backup DNS server</string>
<string name="ignored_pushed_routes">Negeer ontvangen routes</string>
<string name="ignore_routes_summary">Negeer routes ontvangen van de server.</string>
<string name="default_route_summary">Leid al het Verkeer over de VPN</string>
<string name="use_default_title">Gebruik standaard Route</string>
- <string name="custom_route_message">Aangepaste routes invoeren. Voer alleen de bestemming in CIDR-formaat. \"10.0.0.0/8 2002::/16\" zou de netwerken 10.0.0.0/8 en 2002::/16 via de VPN routeren.</string>
+ <string name="custom_route_message">Aangepaste routes invoeren. Voer alleen de bestemming in CIDR-formaat in. \"10.0.0.0/8 2002::/16\" zou de netwerken 10.0.0.0/8 en 2002::/16 via de VPN routeren.</string>
<string name="custom_route_message_excluded">Routes die niet via de VPN moeten worden gerouteerd. Gebruik dezelfde syntaxis als voor opgenomen routes.</string>
- <string name="custom_routes_title">Eigen routes</string>
+ <string name="custom_routes_title">Aangepaste routes</string>
<string name="custom_routes_title_excluded">Uitgesloten netwerken</string>
- <string name="log_verbosity_level">Logging nivo</string>
- <string name="float_summary">Geverifieerde pakketen zijn vanuit elk IP toegestaan</string>
+ <string name="log_verbosity_level">Logboek registratie niveau</string>
+ <string name="float_summary">Laat geauthenticeerde pakketten toe vanaf elk IP-adres</string>
<string name="float_title">Zwevende server toestaan</string>
<string name="custom_options_title">Aangepaste Opties</string>
<string name="edit_vpn">VPN Instellingen Bewerken</string>
- <string name="remove_vpn_query">De VPN-profiel \'%s\' verwijderen?</string>
- <string name="tun_open_error">Fout bij het openen van de tun interface</string>
- <string name="error">"Fout:"</string>
+ <string name="remove_vpn_query">Verwijder het VPN-profiel \'%s\'?</string>
+ <string name="tun_error_helpful">Op sommige aangepaste ICS-ROM\'s kunnen de rechten op /dev/tun verkeerd zijn, of de tun module kan volledig ontbreken. Voor CM9-ROM\'s, probeer de optie herstel eigenaar onder algemene instellingen</string>
+ <string name="tun_open_error">Kon de tun interface niet openen</string>
+ <string name="error">"Fout: "</string>
<string name="clear">Leeg maken</string>
<string name="last_openvpn_tun_config">Openen tun interface:</string>
<string name="local_ip_info">Lokaal IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d</string>
+ <string name="dns_server_info">DNS Server: %1$s, Domein: %2$s</string>
<string name="routes_info_incl">Routes: %1$s %2$s</string>
<string name="routes_info_excl">Uitgesloten routes: %1$s %2$s</string>
<string name="routes_debug">VpnService routes geïnstalleerd: %1$s %2$s</string>
+ <string name="ip_not_cidr">Verkreeg interface informatie %1$s en %2$s, ervan uitgaande dat tweede adres het peer-adres van remote is. Gebruik /32 netmask voor lokale IP. De modus die door OpenVPN wordt gegeven is \"%3$s\".</string>
+ <string name="route_not_cidr">Kan %1$s en %2$s niet als IP-route met CIDR-netmask begrijpen met /32 als netmask.</string>
+ <string name="route_not_netip">Gecorrigeerde route van %1$s/%2$s naar %3$s/%2$s</string>
+ <string name="keychain_access">Geen toegang tot de Android Keychain certificaten. Dit kan veroorzaakt worden door een upgrade van de firmware or door het herstellen van een backup van de app/appinstellingen. Pas de VPN-configuratie aan en selecteer opnieuw het certificaat onder basisintellingen om de opslagtoestemming opnieuw te verlenen om het certificaat te laden.</string>
<string name="version_info">%1$s %2$s</string>
- <string name="send_logfile">Logboek verzenden</string>
- <string name="send">Verzenden</string>
- <string name="ics_openvpn_log_file">ICS OpenVPN logbestand</string>
- <string name="copied_entry">Kopiëer de log ingave naar het clip bord</string>
+ <string name="send_logfile">Verzend logboek</string>
+ <string name="send">Verzend</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN logboek</string>
+ <string name="copied_entry">Logboekmelding gekopieerd naar klembord</string>
<string name="tap_mode">Tap mode</string>
- <string name="faq_tap_mode">De VPN API van Android werkt zonder rooten van de telefoon en ondersteunt alleen de tun modus. Daarom is de tap modus niet mogelijk met deze app.</string>
- <string name="tap_faq2">Alweer? Maak je een grapje? Nee, tap mode wordt echt niet ondersteund en meer mails sturen met het verzoek of het ondersteund kan worden zal echt niet helpen, dus Neen.</string>
- <string name="faq">Veelgestelde vragen </string>
+ <string name="faq_tap_mode">Tap mode is niet mogelijk met de niet-root VPN API. Daarom kan deze applicatie geen tap ondersteuning bieden</string>
+ <string name="tap_faq2">Alweer? Maak je een grap? Nee, tap mode wordt echt niet ondersteund en meer mails sturen met het verzoek of het ondersteund kan worden zal echt niet helpen.</string>
+ <string name="tap_faq3">Een derde keer? Eigenlijk zou men een tap-emulator kunnen schrijven gebaseerd op tun die layer2-informatie zou toevoegen bij versturen en strip layer2-informatie bij ontvangst. Maar deze tap-emulator zou ook ARP en mogelijk een DHCP-client moeten implementeren. Ik ben me niet bewust van iemand die enig werk in deze richting doet. Neem contact met me op als je dit wilt gaan programmeren.</string>
+ <string name="faq">FAQ</string>
<string name="copying_log_entries">Loggegevens aan het kopiëren</string>
+ <string name="faq_copying">Om een enkel logboekitem te kopiëren, houd de vermelding lang ingedrukt. Om het hele logboek te kopiëren, gebruik de \'Verzend Logboek\' optie. Gebruik de hardwaretoets als de knop niet zichtbaar is in de interface.</string>
<string name="faq_shortcut">Snelkoppeling naar start</string>
- <string name="encryption">Codering</string>
- <string name="cipher_dialog_title">Codering methode</string>
- <string name="menu_import">Importeer profiel van ovpn bestand</string>
- <string name="menu_import_short">Import</string>
+ <string name="faq_howto_shortcut">U kunt een snelkoppeling plaatsen om OpenVPN vanaf uw startscherm te starten. Afhankelijk van uw startscherm moet u een snelkoppeling of een widget toevoegen.</string>
+ <string name="no_vpn_support_image">Uw afbeelding ondersteunt geen VPNService API, sorry :(</string>
+ <string name="encryption">Encryptie</string>
+ <string name="cipher_dialog_title">Voer encryptiemethode in</string>
+ <string name="chipher_dialog_message">Voer het encryptie-cijfer algoritme in dat door OpenVPN wordt gebruikt. Laat leeg om het standaard cijfer te gebruiken.</string>
+ <string name="auth_dialog_message">Voer de authenticatieverdeling in die gebruikt wordt voor OpenVPN. Laat leeg om de standaard verdeling te gebruiken.</string>
+ <string name="settings_auth">Authenticatie/Encryptie</string>
+ <string name="file_explorer_tab">Bestandsverkenner</string>
+ <string name="inline_file_tab">Inline bestand</string>
+ <string name="error_importing_file">Fout bij het importeren van het bestand</string>
+ <string name="import_error_message">Kan bestand niet importeren vanuit het bestandssysteem</string>
+ <string name="inline_file_data">[[Inline bestandsgegevens]]</string>
+ <string name="opentun_no_ipaddr">Weigering om tun apparaat zonder IP-informatie te openen</string>
+ <string name="menu_import">Profiel importeren uit ovpn-bestand</string>
+ <string name="menu_import_short">Importeer</string>
+ <string name="import_content_resolve_error">Kon het profiel niet lezen om te importeren</string>
<string name="error_reading_config_file">Fout bij het lezen van het configuratiebestand</string>
<string name="add_profile">Profiel toevoegen</string>
<string name="import_could_not_open">Kon het bestand %1$s, zoals aangegeven in de geïmporteerde configuratie niet vinden</string>
- <string name="importing_config">Geïmporteerde configuratie bestand uit %1$s</string>
- <string name="import_done">Lezen van configuratie bestand afgesloten.</string>
- <string name="no_bind">Geen locale binding</string>
- <string name="import_configuration_file">configuratie bestand importeren</string>
+ <string name="importing_config">Configuratiebestand importeren uit bron %1$s</string>
+ <string name="import_warning_custom_options">Uw configuratie heeft een paar configuratieopties die niet gekoppeld zijn aan gebruikersinterface configuraties. Deze opties werden toegevoegd als aanpasbare configuratieopties. De aanpasbare configuratie wordt hieronder weergegeven:</string>
+ <string name="import_done">Klaar met lezen van configuratiebestand.</string>
+ <string name="nobind_summary">Bind niet aan lokaal adres en poort</string>
+ <string name="no_bind">Geen lokale binding</string>
+ <string name="import_configuration_file">Importeer configuratiebestand</string>
<string name="faq_security_title">Beveiligingsoverwegingen</string>
+ <string name="faq_security">"Omdat OpenVPN beveiligingsgevoelig is, zijn enkele opmerkingen over beveiliging verstandig. Alle gegevens op de sdcard zijn onveilig. Elke app kan het lezen (dit programma vereist bijvoorbeeld geen speciale SD-kaartrechten). De gegevens van deze app kunnen alleen worden gelezen door deze app zelf. Door de importoptie voor cacert/cert/key in het bestandsdialoogvenster te gebruiken, worden de gegevens opgeslagen in het VPN-profiel. De VPN-profielen zijn alleen toegankelijk voor deze app. (Vergeet niet om de kopieën op de SD-kaart achteraf te verwijderen). Hoewel deze gegevens alleen toegankelijk zijn voor deze app, zijn ze nog steeds niet geëncrypteerd. Door het rooten van de telefoon of andere exploits is het mogelijk om de gegevens op te halen. Opgeslagen wachtwoorden worden ook als niet-gecodeerde tekst opgeslagen. Voor pkcs12 bestanden is het sterk aanbevolen dat je ze importeert in de Android keystore."</string>
<string name="import_vpn">Importeren</string>
<string name="broken_image_cert_title">Fout bij het weergeven van de certificaat selectie</string>
+ <string name="broken_image_cert">Er is een uitzondering opgetreden bij het weergeven van het dialoogvenster voor het selecteren van certificaten voor Android 4.0+. Dit zou nooit mogen gebeuren omdat dit een standaardfunctie is van Android 4.0+. Misschien werkt uw Android ROM-ondersteuning voor het opslaan van certificaten niet meer</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
<string name="speed_waiting">Wachten op status bericht&#8230;</string>
<string name="converted_profile">Geïmporteerd profiel</string>
<string name="converted_profile_i">Geïmporteerd profiel %d</string>
- <string name="broken_images">Niet Werkende Afbeeldingen</string>
+ <string name="broken_images">Niet Werkende ROM\'s</string>
+ <string name="broken_images_faq">&lt;p&gt; Officiële HTC-ROM\'s hebben een vreemd routeringsprobleem waardoor verkeer niet door de tunnel kan stromen (zie ook &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/18\"&gt;Issue 18&lt;/a&gt; in de bug-tracker.) &lt;/p&gt;&lt;p&gt; Van de officiële SONY-ROM\'s van Xperia Arc S en Xperia Ray is gemeld dat de VPNService volledig mist van de ROM. (Zie ook &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/29\"&gt;Issue 29&lt;/a&gt; in de bug-tracker.) &lt;/p&gt;&lt;p&gt;Aan aangepaste build-ROM\'s ontbreekt de tun-module of zijn de rechten van /dev/tun mogelijk onjuist. Sommige CM9-ROM\'s hebben de optie \'Eigenaar bevestigen\' onder \'Apparaatspecifieke hacks\' ingeschakeld nodig.&lt;/p&gt;&lt;p&gt;Het belangrijkste is: als uw apparaat een kapotte Android-ROM heeft, moet u dit melden aan uw leverancier. Hoe meer mensen een probleem melden aan de leverancier, des te groter de kans is dat ze het probleem oplossen.&lt;/p&gt;</string>
<string name="pkcs12_file_encryption_key">PKCS12 Bestand Encryptie Sleutel</string>
<string name="private_key_password">Privé Sleutel Wachtwoord</string>
<string name="password">Wachtwoord</string>
<string name="file_icon">bestands pictogram</string>
+ <string name="tls_authentication">TLS Authenticatie/Encryptie</string>
<string name="generated_config">Gegenereerde Configuratie</string>
<string name="generalsettings">Instellingen</string>
- <string name="owner_fix">Verbeter eigendom van /dev/tun</string>
+ <string name="owner_fix_summary">Probeert de eigenaar van /dev/tun naar het systeem in te stellen. Sommige CM9-ROM\'s hebben dit nodig om de VPNService API te laten werken. Vereist root toegang.</string>
+ <string name="owner_fix">Herstel eigenaar van /dev/tun</string>
<string name="generated_config_summary">Toont het gegenereerde OpenVPN configuratiebestand</string>
<string name="edit_profile_title">Bewerken van \"%s\"</string>
- <string name="building_configration">Opbouwen configuratie&#8230;</string>
+ <string name="building_configration">Configuratie bouwen&#8230;</string>
<string name="netchange_summary">Het inschakelen van deze optie zal opnieuw verbinden na het veranderen van de netwerk status (bijv. van WiFi naar mobiel) forceren</string>
<string name="netchange">Opnieuw verbinden na netwerkverandering</string>
<string name="netstatus">Netwerk status: %s</string>
+ <string name="extracahint">De CA-certificaat wordt meestal teruggestuurd vanuit de Android-keystore. Geef een apart certificaat op als u certificaatverificatiefouten krijgt.</string>
<string name="select_file">Selecteer</string>
+ <string name="keychain_nocacert">Geen CA-certificaat geretourneerd tijdens het lezen van de Android keystore. Verificatie zal waarschijnlijk mislukken.</string>
+ <string name="show_log_summary">Toont het logboekvenster bij verbinden. Het logboekvenster is altijd toegankelijk via de meldingsstatus.</string>
<string name="show_log_window">Toon logboekvenster</string>
+ <string name="mobile_info">%10$s %9$s draait op %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">Fout bij het ondertekenen met Android keystore sleutel %1$s: %2$s</string>
+ <string name="faq_system_dialogs">De VPN-verbindingswaarschuwing die aangeeft dat deze app al het verkeer kan onderscheppen, wordt door het systeem opgelegd om misbruik van de VPNService-API te voorkomen.\nDe VPN-verbindingsmelding (het sleutelsymbool) wordt ook door het Android-systeem opgelegd om een ​​actieve VPN-verbinding te signaleren. Op sommige ROM\'s speelt deze melding een geluid af.\nAndroid heeft deze systeemdialogen voor uw eigen veiligheid geïntroduceerd en ervoor gezorgd dat deze niet kunnen worden omzeild. (Bij sommige ROM\'s bevat dit helaas een meldingsgeluid)</string>
<string name="faq_system_dialogs_title">Verbindingswaarschuwing en meldingsgeluid</string>
+ <string name="translationby">Nederlandse vertaling door de gebruikers op crowdin.com</string>
<string name="ipdns">IP en DNS</string>
- <string name="advanced">Geanvanceerd</string>
+ <string name="basic">Basis</string>
+ <string name="routing">Routing</string>
+ <string name="obscure">Vreemde OpenVPN-instellingen. Normaal niet nodig.</string>
+ <string name="advanced">Geavanceerd</string>
<string name="export_config_title">ICS Openvpn configuratie</string>
+ <string name="warn_no_dns">Er worden geen DNS-servers gebruikt. Naamomzetting werkt mogelijk niet. Overweeg om aangepaste DNS-servers in te stellen. Houd er ook rekening mee dat Android uw proxy-instellingen gebruikt die zijn opgegeven voor uw mobiele/Wi-Fi-verbinding wanneer er geen DNS-servers zijn ingesteld.</string>
+ <string name="dns_add_error">Kon DNS-server \"%1$s\" niet toevoegen, geweigerd door het systeem: %2$s</string>
+ <string name="ip_add_error">Kan IP-adres \'%1$s\' niet configureren, geweigerd door het systeem: %2$s</string>
+ <string name="faq_howto">&lt;p&gt;Ontvang een werkende config (getest op je computer of gedownload van je provider/organisatie) &lt;/p&gt;&lt;p&gt;Als het een enkel bestand is zonder extra pem/pkcs12-bestanden, kun je jezelf het bestand e-mailen en de bijlage openen. Als je meerdere bestanden hebt zet ze dan op je sd-kaart.&lt;/p&gt;&lt;p&gt;Klik op de e-mailbijlage/Gebruik het mappictogram in de vpn-lijst om het configuratiebestand te importeren&lt;/p&gt;&lt;p&gt;Als er fouten zijn over ontbrekende bestanden plaats dan de ontbrekende bestanden op je sd-kaart.&lt;/p&gt;&lt;p&gt;Klik op het opslaan symbool om de geïmporteerde VPN aan uw VPN-lijst toe te voegen&lt;/p&gt;&lt;p&gt;Verbind de VPN door op de naam van de VPN&lt;/p&gt;&lt;p&gt; te klikken. Als er fouten of waarschuwingen in het logboek zijn, probeer dan de waarschuwingen/fouten te begrijpen en probeer ze op te lossen&lt;/p&gt; </string>
<string name="faq_howto_title">Snelle start</string>
+ <string name="setting_loadtun_summary">Probeer de tun.ko kernelmodule te laden voordat u probeert verbinding te maken. Apparaat moet rooted zijn.</string>
<string name="setting_loadtun">Laad tun module</string>
- <string name="getproxy_error">Fout bij het opvragen van proxy-instellingen: %s</string>
+ <string name="importpkcs12fromconfig">Importeer PKCS12 van configuratie naar Android Keystore</string>
+ <string name="getproxy_error">Fout bij het verkrijgen van proxy-instellingen: %s</string>
+ <string name="using_proxy">Proxy %1$s %2$d is in gebruik</string>
<string name="use_system_proxy">Gebruik systeemproxy</string>
- <string name="use_system_proxy_summary">Gebruik de systeemconfiguratie voor HTTP/HTTPS proxys om te verbinden.</string>
- <string name="onbootrestart">Verbinden bij het opstarten</string>
+ <string name="use_system_proxy_summary">Gebruik de systeemconfiguratie voor HTTP/HTTPS proxies om te verbinden.</string>
+ <string name="onbootrestartsummary">OpenVPN verbindt met de opgegeven VPN als deze actief was bij het opstarten van het systeem. Lees de FAQ over verbindingswaarschuwingen voordat u deze optie gebruikt op Android &lt; 5.0.</string>
+ <string name="onbootrestart">Verbinden bij opstarten</string>
<string name="ignore">Negeren</string>
<string name="restart">Opnieuw starten</string>
+ <string name="restart_vpn_after_change">Configuratiewijzigingen worden toegepast na het herstarten van de VPN. (Her)start het VPN nu?</string>
<string name="configuration_changed">Configuratie gewijzigd</string>
+ <string name="log_no_last_vpn">Kan het laatst verbonden profiel niet bepalen om te bewerken</string>
+ <string name="faq_duplicate_notification_title">Dubbele notificaties</string>
+ <string name="faq_duplicate_notification">Als Android met weinig systeemgeheugen (RAM) staat, worden apps en services die momenteel niet nodig zijn uit het actieve geheugen verwijderd. Hiermee wordt een doorlopende VPN-verbinding beëindigd. Om ervoor te zorgen dat de verbinding/OpenVPN overleeft, wordt de service met een hogere prioriteit uitgevoerd. Om met een hogere prioriteit uit te voeren, moet de toepassing een melding weergeven. Het sleutel notificatie icoon wordt door het systeem opgelegd zoals beschreven in het vorige FAQ item. Het telt niet als app-melding met als doel om als hogere prioriteit uitgevoerd te worden.</string>
<string name="no_vpn_profiles_defined">Geen VPN-profielen gedefinieerd.</string>
+ <string name="add_new_vpn_hint">Gebruik het pictogram &lt;img src=\"ic_menu_add\"/&gt; om een ​​nieuwe VPN toe te voegen</string>
+ <string name="vpn_import_hint">Gebruik het pictogram &lt;img src=\"ic_menu_archive\"/&gt; om een ​​bestaand (.ovpn of .conf) profiel te importeren van uw sdcard.</string>
+ <string name="faq_hint">Bekijk ook de FAQ. Er is een snelstartgids.</string>
+ <string name="faq_routing_title">Routing/Interface-configuratie</string>
+ <string name="faq_routing">De routerings- en interfaceconfiguratie wordt niet uitgevoerd via traditionele ifconfig/route-opdrachten, maar met behulp van de VPNService-API. Dit resulteert in een andere routeringsconfiguratie dan in andere besturingssystemen. \nDe configuratie van de VPN-tunnel bestaat uit het IP-adres en de netwerken die via deze interface moeten worden gerouteerd. Er is met name geen peer-partneradres of gateway-adres nodig of vereist. Speciale routes om de VPN-server te bereiken (bijvoorbeeld toegevoegd bij gebruik van redirect-gateway) zijn ook niet nodig. De toepassing zal bijgevolg deze instellingen negeren bij het importeren van een configuratie. De app zorgt er met de VPNService API voor dat de verbinding met de server niet wordt gerouteerd via de VPN-tunnel. \nDe VPNService API staat geen specificatie van netwerken toe die niet via de VPN moeten worden gerouteerd. Als een tijdelijke oplossing probeert de app netwerken te detecteren die niet via een tunnel moeten worden gerouteerd (bijvoorbeeld route xxxx yyyy net_gateway) en wordt een reeks routes berekend die deze routes uitsluiten om het gedrag van andere platforms te emuleren. Het logvenster toont de configuratie van de VPNService bij het tot stand brengen van een verbinding. \n Achter de schermen: Android 4.4+ gebruikt beleidsroutering. Met behulp van route/ifconfig worden de geïnstalleerde routes niet weergegeven. Gebruik ip-rule ipv, iptables -t mangle -L</string>
<string name="persisttun_summary">Niet terugvallen op geen VPN-verbinding wanneer OpenVPN opnieuw aan het verbinden is.</string>
<string name="persistent_tun_title">Persistent tun</string>
- <string name="openvpn_log">OpenVPN log</string>
+ <string name="openvpn_log">OpenVPN logboek</string>
<string name="import_config">Importeer OpenVPN configuratie</string>
<string name="battery_consumption_title">Batterijverbruik</string>
- <string name="faq_tethering">De Android Tethering feature (via WiFi, USB of Bluetooth) en de VPNService API (die gebruikt wordt door dit programma) werken niet samen. Voor meer details, zie &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt;</string>
+ <string name="baterry_consumption">In mijn persoonlijke tests zijn de keepalive-pakketten de belangrijkste reden voor een hoog batterijverbruik van OpenVPN. De meeste OpenVPN-servers hebben een configuratierichtlijn zoals \'keepalive 10 60\', waardoor de client en de server elke tien seconden keepalive-pakketten uitwisselen. &lt;p&gt; Hoewel deze pakketten klein zijn en weinig verkeer gebruiken, houden ze het mobiele radionetwerk bezig en verhogen ze het energieverbruik. (Zie ook &lt;a href=\"http://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt;De Radio Status Machine | Android Ontwikkelaars&lt;/a&gt;) &lt;p&gt; Deze keepalive-instelling kan niet worden gewijzigd op de client. Alleen de systeembeheerder van OpenVPN kan de instelling wijzigen. &lt;p&gt; Helaas kan het gebruik van een keepalive van meer dan 60 seconden met UDP ertoe leiden dat sommige NAT-gateways de verbinding verbreken vanwege een time-out wegens inactiviteit. TCP gebruiken met een lange keep-alive time-out werkt, maar TCP over TCP tunneling presteert extreem slecht bij verbindingen met een hoog pakketverlies. (Zie &lt;a href=\"http://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt;Waarom TCP via TCP een slechte gedachte is&lt;/a&gt;)</string>
+ <string name="faq_tethering">De Android Tethering functie (via WiFi, USB of Bluetooth) en de VPNService API (die gebruikt wordt door deze app) werken niet samen. Zie &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt; voor meer informatie</string>
<string name="vpn_tethering_title">VPN en Tethering</string>
- <string name="connection_retries">Verbinding pogingen</string>
+ <string name="connection_retries">Verbindingspogingen</string>
<string name="reconnection_settings">Instellingen voor opnieuw verbinden</string>
+ <string name="connectretrymessage">Aantal seconden te wachten tussen verbindingspogingen.</string>
<string name="connectretrywait">Seconden tussen verbindingen</string>
+ <string name="minidump_generated">OpenVPN is onverwacht gecrasht. Overweeg de optie Minidump verzenden in het hoofdmenu</string>
+ <string name="send_minidump">Verzend Minidump naar ontwikkelaar</string>
+ <string name="send_minidump_summary">Stuurt foutopsporingsinformatie over de laatste crash naar de ontwikkelaar</string>
<string name="notifcation_title">OpenVPN - %s</string>
- <string name="state_connecting">Aan het verbinden</string>
- <string name="state_wait">Wachten op antwoord van de server</string>
+ <string name="session_ipv4string">%1$s - %2$s</string>
+ <string name="session_ipv6string">%1$s - %3$s, %2$s</string>
+ <string name="state_connecting">Bezig met verbinden</string>
+ <string name="state_wait">Wachten op antwoord van server</string>
+ <string name="state_auth">Authenticeren</string>
<string name="state_get_config">Clientconfiguratie ophalen</string>
<string name="state_assign_ip">IP-addressen toewijzen</string>
+ <string name="state_add_routes">Routes toevoegen</string>
<string name="state_connected">Verbonden</string>
<string name="state_disconnected">Verbinding verbreken</string>
<string name="state_reconnecting">Opnieuw aan het verbinden</string>
<string name="state_exiting">Afsluiten</string>
<string name="state_noprocess">Niet actief</string>
- <string name="state_tcp_connect">Aan het verbinden (TCP)</string>
+ <string name="state_resolve">Hostnamen omzetten</string>
+ <string name="state_tcp_connect">Bezig met verbinden (TCP)</string>
+ <string name="state_auth_failed">Authenticeren mislukt</string>
+ <string name="state_nonetwork">Wachten op bruikbaar netwerk</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Niet verbonden</string>
- <string name="start_vpn_title">Verbinding maken met VPN %s</string>
- <string name="start_vpn_ticker">Verbinding maken met VPN %s</string>
+ <string name="start_vpn_title">Verbinden met VPN %s</string>
+ <string name="start_vpn_ticker">Verbinden met VPN %s</string>
+ <string name="jelly_keystore_alphanumeric_bug">Sommige versies van Android 4.1 hebben problemen als de naam van het keystore-certificaat niet-alfanumerieke tekens bevat (zoals spaties, onderstrepingstekens of streepjes). Probeer het certificaat opnieuw te importeren zonder speciale tekens</string>
+ <string name="encryption_cipher">Encryptiecijfer</string>
+ <string name="packet_auth">Packet-authenticatie</string>
+ <string name="auth_dialog_title">Voer de methode voor pakketauthenticatie in</string>
<string name="built_by">gebouwd door %s</string>
<string name="debug_build">debug build</string>
<string name="official_build">officiële build</string>
@@ -197,51 +268,200 @@
<string name="add">Toevoegen</string>
<string name="send_config">Verstuur configureerbestand</string>
<string name="complete_dn">Volledige DN</string>
+ <string name="remotetlsnote">Uw geïmporteerde configuratie gebruikte de oude AFGEKEURDE tls-remote optie die een ander DN-formaat gebruikt.</string>
+ <string name="rdn">RDN (algemene naam)</string>
<string name="rdn_prefix">RDN voorvoegsel</string>
+ <string name="tls_remote_deprecated">tls-remote (VEROUDERD)</string>
+ <string name="help_translate">U kunt helpen met vertalen door naar https://crowdin.net/project/ics-openvpn/invite te gaan</string>
+ <string name="prompt">%1$s probeert %2$s te beheren</string>
+ <string name="remote_warning">Door verder te gaan, geeft u de toepassing toestemming om OpenVPN voor Android volledig te beheren en om alle netwerkverkeer te onderscheppen.<b>NIET accepteren, tenzij u de toepassing vertrouwt.</b> Anders loopt u het risico dat uw gegevens worden aangetast door kwaadaardige software.\"</string>
+ <string name="remote_trust">Ik vertrouw deze applicatie.</string>
+ <string name="no_external_app_allowed">Geen app toegestaan ​​om externe API te gebruiken</string>
<string name="allowed_apps">Toegestane apps: %s</string>
+ <string name="clearappsdialog">Lijst met toegestane externe apps wissen?\nHuidige lijst met toegestane apps:\n\n%s</string>
+ <string name="screenoff_summary">Pauzeer VPN wanneer het scherm is uitgeschakeld en minder dan 64 kB gegevens overgedragen in 60s. Wanneer de \"Persistent Tun\" optie is ingeschakeld, pauzeert de VPN uw apparaat zonder netwerkverbinding. Zonder de \"Persistent Tun\" optie heeft het apparaat geen VPN-verbinding/bescherming.</string>
+ <string name="screenoff_title">Pauzeer de VPN-verbinding na het uitschakelen van het scherm</string>
+ <string name="screenoff_pause">Verbinding pauzeren als het scherm uit staat: minder dan %1$s in %2$ss</string>
+ <string name="screen_nopersistenttun">Waarschuwing: Persistent tun is niet ingeschakeld voor deze VPN. Verkeer gebruikt de normale internetverbinding wanneer het scherm is uitgeschakeld.</string>
<string name="save_password">Wachtwoord opslaan</string>
<string name="pauseVPN">Pauzeer VPN</string>
<string name="resumevpn">Hervat VPN</string>
+ <string name="state_userpause">VPN-onderbreking aangevraagd door gebruiker</string>
<string name="state_screenoff">VPN gepauzeerd - scherm uit</string>
+ <string name="device_specific">Apparaatspecifieke trucks</string>
+ <string name="cannotparsecert">Certificaatinformatie kan niet worden weergegeven</string>
+ <string name="appbehaviour">Applicatiegedrag</string>
<string name="vpnbehaviour">VPN gedrag</string>
+ <string name="allow_vpn_changes">Verandering aan VPN-profielen toestaan</string>
+ <string name="hwkeychain">Hardware Keystore:</string>
+ <string name="permission_icon_app">Miniatuur van app die OpenVPN voor Android wilt gebruiken</string>
+ <string name="faq_vpndialog43">"Vanaf Android 4.3 is de VPN-bevestiging beveiligd tegen apps die over andere apps tekenen. Dit betekent dat het dialoogvenster niet reageert op aanrakingen. Als u een app heeft die over andere apps tekent kan dit de oorzaak zijn. Als u een app vind die dit doet, neem dan contact op met de makers van de app. Dit probleem heeft betrekking op alle VPN applicaties op Android 4.3 en later. Zie ook &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; voor meer details."</string>
+ <string name="faq_vpndialog43_title">VPN-bevestigingsdialoogvenster</string>
+ <string name="donatePlayStore">U kunt ook een donatie sturen in de Play Store:</string>
<string name="thanks_for_donation">Bedankt voor het doneren van %s!</string>
- <string name="logCleared">Log gewist.</string>
+ <string name="logCleared">Logboek gewist.</string>
<string name="show_password">Toon wachtwoord</string>
+ <string name="keyChainAccessError">KeyChain toegangsfout: %s</string>
<string name="timestamp_short">Kort</string>
<string name="timestamp_iso">ISO</string>
+ <string name="timestamps">Tijdstempels</string>
<string name="timestamps_none">Geen</string>
<string name="uploaded_data">Upload</string>
<string name="downloaded_data">Download</string>
<string name="vpn_status">VPN Status</string>
<string name="logview_options">Toon opties</string>
+ <string name="unhandled_exception">Niet-afgehandelde uitzondering: %1$s\n\n%2$s</string>
+ <string name="unhandled_exception_context">%3$s: %1$s\n\n%2$s</string>
+ <string name="faq_system_dialog_xposed">Als u uw Android-apparaat hebt geroot, kun je de &lt;a href=\"http://xposed.info/\"&gt;Xposed framework&lt;/a&gt; en de &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN Dialoog bevestigings module&lt;/a&gt; op eigen risico installeren\"</string>
<string name="full_licenses">Volledige licenties</string>
+ <string name="blocklocal_summary">Netwerken die rechtstreeks zijn verbonden met de lokale interfaces, worden niet via de VPN gerouteerd. Als u deze optie uitschakelt, worden alle verkeer gericht op lokale netwerken omgeleid naar de VPN.</string>
+ <string name="blocklocal_title">VPN passeren voor lokale netwerken</string>
<string name="userpw_file">Gebruikersnaam/Wachtwoord bestand</string>
<string name="imported_from_file">[Geïmporteerd uit: %s]</string>
- <string name="import_log">Importeer log:</string>
- <string name="loading">Aan het laden&#8230;</string>
+ <string name="files_missing_hint">Sommige bestanden konden niet worden gevonden. Selecteer de bestanden om het profiel te importeren:</string>
+ <string name="openvpn_is_no_free_vpn">Om deze app te gebruiken heeft u een VPN aanbieder/VPN gateway nodig die OpenVPN ondersteunt (vaak aangeboden door uw werkgever). Kijk op https://community.openvpn.net/ voor meer informatie over OpenVPN en hoe u uw eigen OpenVPN server kunt opzetten.</string>
+ <string name="import_log">Importeer logboek:</string>
+ <string name="ip_looks_like_subnet">Vpn-topologie \"%3$s\" opgegeven, maar ifconfig %1$s %2$s lijkt meer op een IP-adres met een netwerkmask. Uitgaande van \"subnet\" topologie.</string>
+ <string name="mssfix_invalid_value">De overschrijvingswaarde van MSS moet een geheel getal tussen 0 en 9000 zijn</string>
+ <string name="mtu_invalid_value">De MTU overschrijfwaarde moet een geheel getal tussen 64 en 9000 zijn</string>
+ <string name="mssfix_value_dialog">Kondig aan TCP-sessies die over de tunnel lopen aan dat ze hun verzendpakketgroottes zodanig moeten beperken dat nadat OpenVPN ze heeft ingekapseld, de resulterende UDP-pakketgrootte die OpenVPN naar zijn peer stuurt, dit aantal bytes niet overschrijdt. (standaard is 1450)</string>
+ <string name="mssfix_checkbox">Overschrijf de MSS-waarde van de TCP-payload</string>
+ <string name="mssfix_dialogtitle">MSS waarde van TCP-payload instellen</string>
+ <string name="client_behaviour">Cliëntgedrag</string>
+ <string name="clear_external_apps">Verwijder toegestane externe apps</string>
+ <string name="loading">Laden&#8230;</string>
<string name="allowed_vpn_apps_info">Toegestane VPN apps: %1$s</string>
<string name="disallowed_vpn_apps_info">Niet toegestane VPN apps: %1$s</string>
+ <string name="app_no_longer_exists">Pakket %s is niet meer geïnstalleerd en wordt verwijderd uit de lijst met toegestane/niet toegestane apps</string>
+ <string name="vpn_disallow_radio">VPN wordt gebruikt voor alle apps, maar exclusief geselecteerd</string>
+ <string name="vpn_allow_radio">VPN wordt alleen voor geselecteerde apps gebruikt</string>
+ <string name="query_delete_remote">Externe server verwijderen?</string>
<string name="keep">Houden</string>
<string name="delete">Verwijderen</string>
+ <string name="add_remote">Nieuwe externe verbinding toevoegen</string>
+ <string name="remote_random">Gebruik verbindingen in willekeurige volgorde bij verbinden</string>
+ <string name="remote_no_server_selected">U moet tenminste één externe server definiëren en inschakelen.</string>
<string name="server_list">Serverlijst</string>
<string name="vpn_allowed_apps">Toegestane apps</string>
<string name="advanced_settings">Geavanceerde instellingen</string>
+ <string name="payload_options">Payload opties</string>
<string name="tls_settings">TLS-instellingen</string>
+ <string name="no_remote_defined">Geen externe verbinding gedefinieerd</string>
+ <string name="duplicate_vpn">VPN profiel dupliceren</string>
+ <string name="duplicate_profile_title">Profiel dupliceren: %s</string>
<string name="show_log">Toon logboek</string>
+ <string name="faq_android_clients">Er bestaan ​​meerdere OpenVPN-clients voor Android. De meest voorkomende zijn OpenVPN voor Android (deze client), OpenVPN Connect en OpenVPN-instellingen.&lt;p&gt;De clients kunnen in twee groepen worden gegroepeerd: OpenVPN voor Android en OpenVPN Connect gebruiken de officiële VPNService API (Android 4.0+) en vereisen geen root en OpenVPN Instellingen die vereist root.&lt;p&gt;OpenVPN voor Android is een open source-client en ontwikkeld door Arne Schwabe. Het is gericht op meer geavanceerde gebruikers, biedt veel instellingen, de mogelijkheid om profielen uit bestanden te importeren en profielen in de app te configureren/wijzigen. De client is gebaseerd op de communityversie van OpenVPN. Het is gebaseerd op de OpenVPN 2.x-broncode. Deze client kan worden gezien als de semi-officiële client van de community. &lt;p&gt;OpenVPN Connect is een niet-open-sourceclient die is ontwikkeld door OpenVPN Technologies, Inc. Die client is meer gericht op de gemiddelde gebruiker en staat de import van OpenVPN-profielen toe. Deze client is gebaseerd op de OpenVPN C++ herimplementatie van het OpenVPN-protocol (Dit was vereist om OpenVPN Technologies, Inc een iOS OpenVPN-app te kunnen laten publiceren). Deze client is de officiële client van de OpenVPN-technologieën &lt;p&gt; OpenVPN-instellingen is de oudste van de clients en ook een gebruikersinterface voor Open Source OpenVPN. In tegenstelling tot OpenVPN voor Android is root vereist en wordt de VPNService-API niet gebruikt. Het is niet afhankelijk van Android 4.0+</string>
+ <string name="faq_androids_clients_title">Verschillen tussen de OpenVPN Android-clients</string>
+ <string name="ignore_multicast_route">Multicast-route negeren: %s</string>
+ <string name="ab_only_cidr">Android ondersteunt alleen CIDR-routes naar de VPN. Omdat niet-CIDR routes bijna nooit worden gebruikt, zal OpenVPN voor Android een /32 gebruiken voor routes die geen CIDR zijn en een waarschuwing geven.</string>
+ <string name="ab_tethering_44">Tethering werkt terwijl de VPN actief is. De tethered-verbinding maakt GEEN gebruik van de VPN.</string>
+ <string name="ab_kitkat_mss">Vroege KitKat-versie heeft de verkeerde MSS-waarde ingesteld voor TCP-verbindingen (#61948). Probeer de mssfix-optie in te schakelen om deze bug te omzeilen.</string>
+ <string name="ab_proxy">Android blijft uw proxy-instellingen gebruiken die zijn opgegeven voor de mobiel/wifi-verbinding wanneer er geen DNS-servers zijn ingesteld. OpenVPN voor Android waarschuwt u hierover in het logboek. <p>Wanneer een VPN een DNS-server instelt, gebruikt Android geen proxy. Er is geen API om een ​​proxy in te stellen voor een VPN-verbinding.</p></string>
+ <string name="ab_lollipop_reinstall">VPN-apps werken mogelijk niet meer wanneer ze worden verwijderd en opnieuw worden geïnstalleerd. Voor details zie #80074</string>
+ <string name="ab_not_route_to_vpn">Het geconfigureerde client-IP en de IP\'s in het netwerkmask worden niet naar de VPN gerouteerd. OpenVPN werkt om deze bug heen door expliciet een route toe te voegen die overeenkomt met het IP-adres van de client en zijn netmask</string>
+ <string name="ab_persist_tun">Als een tun-apparaat wordt geopend terwijl een ander tun-apparaat actief is, deze wordt gebruikt voor ondersteuning voor persist-tun, crasht het de VPNServices op het apparaat. Opnieuw opstarten is vereist om VPN opnieuw te laten werken. OpenVPN voor Android probeert te voorkomen dat het tun-apparaat opnieuw wordt geopend en als het echt nodig is, sluit het eerst de huidige TUN voordat het nieuwe TUN-apparaat wordt geopend om te voorkomen dat het crasht. Dit kan leiden tot een kort venster waarin pakketten via de niet-VPN-verbinding worden verzonden. Zelfs met deze tijdelijke oplossing crasht de VPNServices soms en is het opnieuw opstarten van het apparaat vereist.</string>
+ <string name="ab_secondary_users">VPN werkt niet helemaal voor secundaire gebruikers.</string>
+ <string name="ab_kitkat_reconnect">"Meerdere gebruikers melden dat de mobiele verbinding/mobiele gegevensverbinding vaak wordt verbroken tijdens het gebruik van de VPN-app. Het gedrag lijkt alleen maar op een combinatie van enkele mobiele providers/apparaten van invloed te zijn en tot nu toe kon geen oorzaak/oplossing voor de bug worden geïdentificeerd."</string>
+ <string name="ab_vpn_reachability_44">Alleen de bestemming kan worden bereikt via de VPN die bereikbaar is zonder VPN. IPv6 VPN\'s werken helemaal niet.</string>
+ <string name="ab_only_cidr_title">Niet CIDR-routes</string>
+ <string name="ab_proxy_title">Proxy-gedrag voor VPN\'s</string>
+ <string name="ab_lollipop_reinstall_title">Herinstalleren van VPN-apps</string>
<string name="version_upto">%s en eerder</string>
<string name="copy_of_profile">Kopie van %s</string>
+ <string name="ab_not_route_to_vpn_title">Route naar het geconfigureerde IP-adres</string>
+ <string name="ab_kitkat_mss_title">Verkeerde MSS-waarde voor VPN-verbinding</string>
<string name="ab_secondary_users_title">Secundaire tabletgebruikers</string>
+ <string name="custom_connection_options_warng">Specificeer aangepaste verbindingsopties. Gebruik voorzichtig</string>
+ <string name="custom_connection_options">Aangepaste Opties</string>
+ <string name="remove_connection_entry">Verwijder de verbinding</string>
+ <string name="ab_kitkat_reconnect_title">Willekeurige verbroken verbinding met mobiel netwerk</string>
+ <string name="ab_vpn_reachability_44_title">Externe netwerken niet bereikbaar</string>
+ <string name="ab_persist_tun_title">Persistente tun mode</string>
<string name="version_and_later">%s en hoger</string>
+ <string name="tls_cipher_alert_title">Verbindingen mislukken met SSL23_GET_SERVER_HELLO:sslv3 waarschuwing voor handshake</string>
+ <string name="tls_cipher_alert">Nieuwere OpenVPN voor Android-versies (0.6.29/maart 2015) gebruiken een veiligere standaard voor de toegestane coderingssuites (tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!KRSA\"). Helaas, het weglaten van de minder veilige cipher suites en export cipher suites, met name het weglaten van cipher suites die geen ondersteuning bieden voor Perfect Forward Secrecy (Diffie-Hellman) veroorzaakt een aantal problemen. Dit wordt meestal veroorzaakt door een goedbedoelde maar slecht uitgevoerde poging om de beveiliging van TLS te verbeteren door tls-cipher op de server in te stellen of door een aantal ingesloten besturingssystemen met uitgeklede SSL (bijv. MikroTik). \nOm dit probleem op te lossen stelt u het tls-cijfer in instellingen op de server naar redelijke standaard zoals tls-cipher \"DEFAULT:!EXP:!PSK:!SRP:!kRSA\". Om het probleem op de client te omzeilen, voegt u de aangepaste optie tls-cipher DEFAULT toe aan de Android-client.</string>
+ <string name="message_no_user_edit">Dit profiel is toegevoegd vanuit een externe app (%s) en is gemarkeerd als niet bewerkbaar door de gebruiker.</string>
+ <string name="crl_file">Certificaatintrekkingslijst</string>
+ <string name="service_restarted">OpenVPN-service herstarten (App vastgelopen, deze is waarschijnlijk gecrasht of gestopt vanwege te weinig vrij geheugen)</string>
+ <string name="import_config_error">Het importeren van de configuratie leverde een fout op, kan deze niet opslaan</string>
<string name="Search">Zoeken</string>
+ <string name="lastdumpdate">(Laatste dump is %1$d:%2$du oud (%3$s))</string>
+ <string name="clear_log_on_connect">Logboek wissen bij nieuwe verbinding</string>
+ <string name="connect_timeout">Verbinding Timeout</string>
+ <string name="no_allowed_app">Geen toegestane app toegevoegd. Onszelf toevoegen (%s) om ten minste één app in de lijst met toegestane apps te hebben om niet alle apps te accepteren</string>
+ <string name="query_permissions_sdcard">OpenVPN voor Android kan proberen om ontbrekende bestand(en) op de sdcard automatisch te vinden. Tik op dit bericht om het toestemmingsverzoek te starten.</string>
<string name="protocol">Protocol</string>
<string name="enabled_connection_entry">Ingeschakeld</string>
+ <string name="abi_mismatch">Voorkeurs native ABI-prioriteit van dit apparaat (%1$s) en ABI gerapporteerd door native bibliotheken (%2$s) komen niet overeen</string>
+ <string name="permission_revoked">VPN-machtiging ingetrokken door OS (bijv. andere VPN-app gestart), VPN wordt gestopt</string>
+ <string name="pushpeerinfo">Push Peer-info</string>
+ <string name="pushpeerinfosummary">Verzend extra informatie naar de server, bijvoorbeeld SSL-versie en Android-versie</string>
+ <string name="pw_request_dialog_title">%1$s is nodig</string>
+ <string name="pw_request_dialog_prompt">Voer het wachtwoord in voor profiel %1$s</string>
+ <string name="menu_use_inline_data">Gebruik inline gegevens</string>
+ <string name="export_config_chooser_title">Exporteer configuratiebestand</string>
+ <string name="missing_tlsauth">tls-auth-bestand ontbreekt</string>
+ <string name="missing_certificates">Ontbrekend gebruikerscertificaat of gebruikerscertificaatsleutelbestand</string>
+ <string name="missing_ca_certificate">Ontbrekend CA-certificaat</string>
+ <string name="crl_title">Certifcate Intrekkingslijst (optioneel)</string>
+ <string name="reread_log">Herlas (%d) logboekitems uit logboekcachebestand</string>
+ <string name="samsung_broken">Hoewel Samsung-telefoons tot de meest verkochte Android-telefoons behoren, behoort de firmware van Samsung ook tot de meest buggy-Android-firmware. De bugs zijn niet beperkt tot de VPN-werking op deze apparaten, maar veel van deze kunnen worden omzeild. Hieronder worden enkele van deze bugs beschreven.\n\nDNS werkt alleen als de DNS-server zich in het VPN-bereik bevindt.\n\nOp veel Samsung 5.x-apparaten werkt de functie toegestane/niet-toegestane apps niet.\nOp Samsung 6.x VPN meldt dat het niet werkt tenzij de VPN-app is vrijgesteld van Powersave-functies.</string>
<string name="samsung_broken_title">Samsung telefoons</string>
<string name="novpn_selected">Geen VPN geselecteerd.</string>
+ <string name="defaultvpn">Standaard VPN</string>
+ <string name="defaultvpnsummary">VPN gebruikt op plaatsen waar een standaard VPN nodig is. Deze bevinden zich momenteel in het opstartproces, voor Always-On en de Quick Settings Tile.</string>
+ <string name="vpnselected">Momenteel geselecteerde VPN: \'%s\'</string>
<string name="reconnect">Opnieuw verbinden</string>
+ <string name="qs_title">Schakel VPN in/uit</string>
<string name="qs_connect">Verbinden met %s</string>
<string name="qs_disconnect">Verbinding met %s verbreken</string>
+ <string name="connectretrymaxmessage">Voer de maximale tijd in tussen verbindingspogingen. OpenVPN verhoogt langzaam de wachttijd na een niet-succesvolle verbindingspoging tot deze waarde. Standaard ingesteld op 300s.</string>
+ <string name="connectretrymaxtitle">Maximale tijd tussen verbindingspogingen</string>
+ <string name="state_waitconnectretry">%ss seconden aan het wachten tussen verbindingspoging</string>
+ <string name="nought_alwayson_warning"><![CDATA[Als u geen bevestigingsvenster voor VPN hebt ontvangen, hebt u \"Always on VPN\" ingeschakeld voor een andere app. In dat geval mag alleen die app verbinding maken met een VPN. Controleer onder Instellingen-> Netwerken meer ... -> VPNS]]></string>
+ <string name="management_socket_closed">Verbinding met OpenVPN gesloten (%s)</string>
<string name="change_sorting">Verander sortering</string>
<string name="sort">Sorteer</string>
<string name="sorted_lru">Profielen gesorteerd op laatst recent gebruikte</string>
<string name="sorted_az">Profielen gesorteerd op naam</string>
+ <string name="deprecated_tls_remote">Config gebruikt de optie tls-remote die in 2.3 is verouderd en uiteindelijk is verwijderd in 2.4</string>
+ <string name="auth_failed_behaviour">Gedrag op AUTH_FAILED</string>
+ <string name="graph">Grafiek</string>
+ <string name="use_logarithmic_scale">Gebruik logaritmische schaal</string>
+ <string name="notenoughdata">Niet genoeg data</string>
+ <string name="avghour">Gemiddeld per uur</string>
+ <string name="avgmin">Gemiddeld per minuut</string>
+ <string name="last5minutes">Laatste 5 minuten</string>
+ <string name="data_in">In</string>
+ <string name="data_out">Uit</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="weakmd">&lt;p&gt;Beginnend met OpenSSL version 1.1, OpenSSL verwerpt zwakke handtekeningen in certificaten zoals
+ MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5 handtekeningen zijn volledig onveilig en zouden niet meer mogen worden gebruikt.&lt;/b&gt; MD5
+ botsingen kunnen worden gemaakt in &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt;enkele uren tegen minimale kosten.&lt;/a&gt;.
+ Je moet de VPN-certificaten zo snel mogelijk bijwerken.&lt;/p&gt;&lt;p&gt;Helaas bevatten oudere easy-rsa-distributies de configuratieoptie \"default_md md5\". Als je een oude easy-rsa-versie gebruikt, update dan naar
+ &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;laatste versie&lt;/a&gt;) of verander md5 naar sha256 en
+ regenereer je certificaten.&lt;/p&gt;&lt;p&gt;Als je echt oude en gebroken certificaten wilt gebruiken, gebruik dan de aangepaste configuratie-optie tls-cipher \"DEFAULT:@SECLEVEL=0\" onder geavanceerde configuratie of als een extra regel in uw geïmporteerd configuratiebestand&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Verbindingsstatistieken</string>
+ <string name="channel_description_background">Lopende statistieken van de tot stand gebrachte OpenVPN-verbinding</string>
+ <string name="channel_name_status">Verbindingsstatus wijzigen</string>
+ <string name="channel_description_status">Statuswijzigingen van de OpenVPN-verbinding (Verbinden, authenticeren,&#8230;)</string>
+ <string name="weakmd_title">Zwakke (MD5) hashes in certificaathandtekening (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL Snelheidstest</string>
+ <string name="openssl_cipher_name">OpenSSL cipher namen</string>
+ <string name="osslspeedtest">OpenSSL Crypto snelheidstest</string>
+ <string name="openssl_error">OpenSSL heeft een fout geretourneerd</string>
+ <string name="running_test">Testen&#8230;</string>
+ <string name="test_algoirhtms">Test geselecteerde algoritmes</string>
+ <string name="all_app_prompt">Een externe app probeert %s te besturen. De app die om toegang vraagt, kan niet worden vastgesteld. Als u deze app toestaat, krijgen ALLE apps toegang.</string>
+ <string name="openvpn3_nostatickeys">De OpenVPN 3 C++ -implementatie ondersteunt geen statische sleutels. Verander naar OpenVPN 2.x onder algemene instellingen.</string>
+ <string name="openvpn3_pkcs12">PKCS12-bestanden rechtstreeks gebruiken met OpenVPN 3 C++ -implementatie wordt niet ondersteund. Importeer de pkcs12-bestanden in de Android keystore of verander naar OpenVPN 2.x onder algemene instellingen.</string>
</resources>
diff --git a/main/src/main/res/values-no/strings.xml b/main/src/main/res/values-no/strings.xml
index 4155337b..193cc686 100755
--- a/main/src/main/res/values-no/strings.xml
+++ b/main/src/main/res/values-no/strings.xml
@@ -99,6 +99,7 @@
<string name="routes_info_incl">Ruter: %1$s %2$s</string>
<string name="routes_info_excl">Ekskluderte ruter: %1$s %2$s</string>
<string name="routes_debug">VpnService-ruter som er installert: %1$s %2$s</string>
+ <string name="route_not_netip">Korrigert rute %1$s / %2$s til %3$s / %2$s</string>
<string name="version_info">%1$s %2$s</string>
<string name="send_logfile">Send loggfilen</string>
<string name="send">Send</string>
@@ -157,13 +158,16 @@
<string name="netstatus">Nettverksstatus: %s</string>
<string name="select_file">Velg</string>
<string name="show_log_window">Vis logg-vindu</string>
+ <string name="mobile_info">%10$s %9$s kjører på %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="faq_system_dialogs_title">Tilkoblingsvarsel og varslingslyd</string>
<string name="translationby">Norsk oversettelse av Jonny</string>
<string name="ipdns">IP og DNS</string>
<string name="basic">Grunnleggende</string>
<string name="routing">Ruting</string>
+ <string name="obscure">Obskure OpenVPN-innstillinger. Vanligvis ikke nødvendig.</string>
<string name="advanced">Avansert</string>
<string name="export_config_title">ICS Openvpn konfigurasjon</string>
+ <string name="warn_no_dns">Ingen DNS-servere som brukes. Navneoppløsning fungerer ikke. Vurdere å angi tilpassede DNS-servere. Vær også oppmerksom på at Android vil fortsette å bruke proxy-innstillingene angitt for mobile/Wi-Fi-tilkoblingen når ingen DNS-servere er angitt.</string>
<string name="faq_howto_title">Hurtigstart</string>
<string name="setting_loadtun_summary">Prøv å laste tun.ko kjernemodul før tilkobling. Krever at enheten er rootet.</string>
<string name="setting_loadtun">Last tun modul</string>
@@ -171,8 +175,10 @@
<string name="using_proxy">Bruker proxy %1$s %2$d</string>
<string name="use_system_proxy">Bruk systemet proxy</string>
<string name="use_system_proxy_summary">Bruk global systemkonfigurasjon for HTTP/HTTPS proxy for å koble til.</string>
+ <string name="onbootrestart">Koble til ved oppstart</string>
<string name="ignore">Ignorer</string>
<string name="restart">Start på nytt</string>
+ <string name="restart_vpn_after_change">Konfigurasjonsendringene vil brukes etter at VPN\'en er startet på nytt. Restarte VPN nå?</string>
<string name="configuration_changed">Konfigurasjon endret</string>
<string name="faq_duplicate_notification_title">Kopier varsler</string>
<string name="no_vpn_profiles_defined">Ingen VPN-profiler er definert.</string>
@@ -181,6 +187,7 @@
<string name="openvpn_log">OpenVPN Logg</string>
<string name="import_config">Importer OpenVPN konfigurasjon</string>
<string name="battery_consumption_title">Batteriforbruk</string>
+ <string name="connection_retries">Tilkoblingsforsøk</string>
<string name="minidump_generated">OpenVPN krasjet uventet. Vennligst vurder bruk av Minidump-alternativet i hovedmenyen</string>
<string name="send_minidump">Send Minidump til utvikler</string>
<string name="send_minidump_summary">Sender feilsøkingsinformasjon om siste krasj til utvikler</string>
@@ -222,4 +229,37 @@
<string name="clear_external_apps">Slett tillatte eksterne apper</string>
<string name="loading">Laster&#8230;</string>
<string name="allowed_vpn_apps_info">Tillatte VPN-apper: %1$s</string>
+ <string name="Search">Søk</string>
+ <string name="protocol">Protokoll</string>
+ <string name="enabled_connection_entry">Aktivert</string>
+ <string name="pw_request_dialog_title">Trenger %1$s</string>
+ <string name="export_config_chooser_title">Eksporter konfigurasjonsfilen</string>
+ <string name="samsung_broken_title">Samsung telefoner</string>
+ <string name="novpn_selected">Ingen VPN valgt.</string>
+ <string name="defaultvpn">Standard VPN</string>
+ <string name="vpnselected">Valgt VPN: \'%s\'</string>
+ <string name="reconnect">Koble til igjen</string>
+ <string name="qs_title">Veksle VPN</string>
+ <string name="qs_connect">Koble til %s</string>
+ <string name="qs_disconnect">Koble fra %s</string>
+ <string name="change_sorting">Endre sortering</string>
+ <string name="sort">Sorter</string>
+ <string name="sorted_lru">Profiler sortert etter siste brukte</string>
+ <string name="sorted_az">Profiler sortert etter navn</string>
+ <string name="graph">Graf</string>
+ <string name="use_logarithmic_scale">Bruk logaritmisk skala</string>
+ <string name="notenoughdata">Ikke nok data</string>
+ <string name="avghour">Gjennomsnitt per time</string>
+ <string name="avgmin">Gjennomsnitt per minutt</string>
+ <string name="last5minutes">Siste 5 minutter</string>
+ <string name="data_in">Inn</string>
+ <string name="data_out">Ut</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-pl/arrays.xml b/main/src/main/res/values-pl/arrays.xml
index 2b52eb75..311eb13d 100755
--- a/main/src/main/res/values-pl/arrays.xml
+++ b/main/src/main/res/values-pl/arrays.xml
@@ -10,8 +10,8 @@
<item>Certyfikaty</item>
<item>Plik PKCS12</item>
<item>Certyfikat z pęku kluczy Androida</item>
- <item>Użytkownik/Hasło</item>
- <item>Statyczne Klucze</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>
@@ -22,4 +22,9 @@
<item>Nieokreślone</item>
<item>Szyfrowanie (tls-crypt)</item>
</string-array>
+ <string-array name="auth_retry_type">
+ <item>Odłącz, zapomnij hasło</item>
+ <item>Odłącz, zachowaj hasło</item>
+ <item>Ignoruj, ponów próbę</item>
+ </string-array>
</resources>
diff --git a/main/src/main/res/values-pl/plurals.xml b/main/src/main/res/values-pl/plurals.xml
index 70489fbc..906e4395 100755
--- a/main/src/main/res/values-pl/plurals.xml
+++ b/main/src/main/res/values-pl/plurals.xml
@@ -1,3 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Pozostał jeden miesiąc</item>
+ <item quantity="few">Pozostało %d miesięcy</item>
+ <item quantity="other">pozostało %d miesięcy</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-pl/strings.xml b/main/src/main/res/values-pl/strings.xml
index 48abf92f..fc07b88e 100755
--- a/main/src/main/res/values-pl/strings.xml
+++ b/main/src/main/res/values-pl/strings.xml
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Łączenie (TCP)</string>
<string name="state_auth_failed">Błąd autentykacji</string>
<string name="state_nonetwork">Czekam na sieć</string>
+ <string name="statusline_bytecount">↓%2$s/s %1$s - ↑%4$s/s %3$s</string>
<string name="notifcation_title_notconnect">Niepołączony</string>
<string name="start_vpn_title">Łączę z VPN %s</string>
<string name="start_vpn_ticker">Łączę z VPN %s</string>
@@ -294,6 +295,7 @@
<string name="allow_vpn_changes">Zezwól na zmiany profili VPN</string>
<string name="hwkeychain">Sprzętowy magazyn kluczy:</string>
<string name="permission_icon_app">Ikona aplikacji próbującej użyć OpenVPN</string>
+ <string name="faq_vpndialog43">"Począwszy od Androida 4.3 potwiedzenie połączenia VPN jest strzeżone przed \"nakładaniem aplikacji\", co powoduje, że okno dialogowe nie reaguje na dotykowe dane wejściowe. Jeśli masz aplikację, która korzysta z nakładek, może to spowodować takie zachowanie. Problem ten dotyczy wszystkich aplikacji VPN na Androidzie 4.3 i nowszych wersjach. Zobacz także &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/185\"&gt;Issue 185&lt;a&gt; aby uzyskać dodatkowe informacje "</string>
<string name="faq_vpndialog43_title">Potwierdzenie dla Android w wersji 4.3 i wyższych</string>
<string name="donatePlayStore">Alternatywnie, dotację możesz przesłać za pomocą Google Play:</string>
<string name="thanks_for_donation">Dziękujemy za wsparcie %s!</string>
@@ -321,6 +323,7 @@
<string name="import_log">Dziennik importu:</string>
<string name="ip_looks_like_subnet">Określono topologię \"%3$s\", jednak ifconfig %1$s %2$s wygląda bardziej na adres IP z maską. Zakładam, że chodzi o topologię \"subnet\".</string>
<string name="mssfix_invalid_value">Wartość nadpisywania MSS musi być liczbą całkowitą pomiędzy 0 i 9000</string>
+ <string name="mtu_invalid_value">Wartość nadpisywania MTU musi być liczbą całkowitą pomiędzy 64 a 9000</string>
<string name="mssfix_value_dialog">Ogłasza sesjom TCP przekazywanym przez tunel, że powinny ograniczyć wielkość pakietu tak, aby po enkapsulacji przez OpenVPN wynikowy rozmiar pakietu UDP wysyłanego przez VPN do peer\'a nie przekraczał tej liczby bajtów (domyślnie 1450)</string>
<string name="mssfix_checkbox">Zastępuje wartość MSS pakietu TCP</string>
<string name="mssfix_dialogtitle">Ustaw wartość MSS pakietu TCP</string>
@@ -357,8 +360,10 @@
OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS Android nie będzie używał więcej proxy. Nie ma żadnego API do ustawienia proxy dla połączenia VPN.</p></string>
<string name="ab_lollipop_reinstall">Aplikacje VPN mogą przestać działać po odinstalowaniu i ponownej instalacji. W celu uzyskania szczegółów zobacz #80074</string>
<string name="ab_not_route_to_vpn">Brakuje konfiguracji tras dla adresu IP klienta oraz masek podsieci. OpenVPN rozwiązuje ten problem przez dodanie trasy odpowiedniej dla adresu IP klienta i maski jego podsieci</string>
+ <string name="ab_persist_tun">Otwieranie urządzenia tun, gdy inne urządzenie używane do obsługi persist-tun, jest otwarte, powoduje awarię VPNServices na urządzeniu. Ponowne uruchomienie urządzenia jest konieczne dla przywrócenia VPN. OpenVPN dla systemu Android próbuje uniknąć ponownego otwarcia urządzenia tun. Aby uniknąć awarii zamknij bieżący TUN przed otwarciem nowego TUN. Może to prowadzić do krótkiego momentu, gdzie pakiety są wysyłane poza siecią VPN. Nawet mimo zastosowania tego obejścia VPNServices czasami ulega awarii i wymaga ponownego uruchomienia urządzenia.</string>
<string name="ab_secondary_users">VPN absolutnie nie działa dla dodatkowych użytkowników.</string>
<string name="ab_kitkat_reconnect">"Jest grono użytkowników, którzy donoszą, iż podczas używania aplikacji VPN połączenie danych/komórkowe jest często zrywane. Zachowanie to wydaje się dotykać niewielkiej liczby urządzeń/dostawców danych komórkowych - na tę chwilę nieznana jest przyczyna, ani rozwiązanie problemu."</string>
+ <string name="ab_vpn_reachability_44">Przy użyciu VPN można dotrzeć tylko do miejsc, które są osiągalne bez sieci VPN. VPN protokołu IPv6 nie działa w ogóle.</string>
<string name="ab_only_cidr_title">Trasy nie-CIDR</string>
<string name="ab_proxy_title">Zachowanie Proxy w sieci VPN</string>
<string name="ab_lollipop_reinstall_title">Ponowna instalacja aplikacji VPN</string>
@@ -403,6 +408,8 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
<string name="samsung_broken">Pomimo, że telefony marki Samsung są jednymi z najliczniej sprzedawanych urządzeń z Androidem, oprogramowanie układowe Samsunga jest jednocześnie jednym z posiadających najwięcej błędów. Błędy nie ograniczają się wyłącznie do operacji związanych z VPN a wiele z nich zostało rozwiązanych technikami tymczasowymi. Poniższa lista przedstawia kilka ze wspomnianych błędów.\n\nDNS nie działa poza zakresem VPN.\n\nNa wielu urządzeniach marki Samsung z Androidem 5.x aplikacje dozwolone/niedozwolone nie działają.\n\nNa urządzeniach marki Samsung z Androidem 6.x VPN może nie działać podczas aktywnego oszczędzania energii.</string>
<string name="samsung_broken_title">Telefony Samsung</string>
<string name="novpn_selected">Nie wybrano VPN.</string>
+ <string name="defaultvpn">Domyślny VPN</string>
+ <string name="vpnselected">Obecnie wybrana sieć VPN: \'%s\'</string>
<string name="reconnect">Podłącz ponownie</string>
<string name="qs_title">Przełącz VPN</string>
<string name="qs_connect">Połącz z %s</string>
@@ -415,4 +422,22 @@ OpenVPN dla Androida ostrzeże Cię o tym w logu.<p>Kiedy VPN ustawi serwer DNS
<string name="sort">Sortowanie</string>
<string name="sorted_lru">Profile posortowane według ostatnio używanych</string>
<string name="sorted_az">Profile sortowane według nazwy</string>
+ <string name="deprecated_tls_remote">Konfigurcja używa opcji tls-remote, która została zaniechana w wersji 2.3 i ostatecznie usunięta w 2.4</string>
+ <string name="auth_failed_behaviour">Zachowanie na AUTH_FAILED</string>
+ <string name="graph">Grafika</string>
+ <string name="use_logarithmic_scale">Użyj skali logarytmicznej</string>
+ <string name="notenoughdata">Za mało danych</string>
+ <string name="avghour">Średnia na godzinę</string>
+ <string name="avgmin">Średnia za minutę</string>
+ <string name="last5minutes">Ostatnie 5 minut</string>
+ <string name="data_in">W</string>
+ <string name="data_out">Zewnątrz</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit / s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-pt/arrays.xml b/main/src/main/res/values-pt/arrays.xml
index 6122add4..fe6f811e 100755
--- a/main/src/main/res/values-pt/arrays.xml
+++ b/main/src/main/res/values-pt/arrays.xml
@@ -23,8 +23,8 @@
<item>Criptografia (--tls-crypt)</item>
</string-array>
<string-array name="auth_retry_type">
- <item>Disconnect, forget password</item>
- <item>Disconnect, keep password</item>
- <item>Ignore, retry</item>
+ <item>Desconecte, esqueça a senha</item>
+ <item>Desconecte, mantenha a senha</item>
+ <item>Ignore, tente novamente</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-pt/plurals.xml b/main/src/main/res/values-pt/plurals.xml
index 70489fbc..8e397d68 100755
--- a/main/src/main/res/values-pt/plurals.xml
+++ b/main/src/main/res/values-pt/plurals.xml
@@ -1,3 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Falta 1 mês</item>
+ <item quantity="other">Faltam %d meses</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Falta um dia</item>
+ <item quantity="other">Faltam %d dias</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Falta 1 hora</item>
+ <item quantity="other">Faltam %d horas</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Falta 1 minuto</item>
+ <item quantity="other">Faltam %d minutos</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-pt/strings.xml b/main/src/main/res/values-pt/strings.xml
index 18e11956..6f938fdc 100755
--- a/main/src/main/res/values-pt/strings.xml
+++ b/main/src/main/res/values-pt/strings.xml
@@ -44,12 +44,14 @@
<string name="duplicate_profile_name">Por favor, digite um nome de perfil que não esteja já em uso</string>
<string name="profilename">Nome do perfil</string>
<string name="no_keystore_cert_selected">Tem de selecionar um certificado de utilizador</string>
+ <string name="no_ca_cert_selected">Deve selecionar um certificado</string>
<string name="no_error_found">Nenhum erro encontrado</string>
<string name="config_error_found">Erro na configuração</string>
<string name="ipv4_format_error">Erro ao analisar o endereço IPv4</string>
<string name="custom_route_format_error">Erro ao analisar as rotas personalizadas</string>
<string name="pw_query_hint">(deixe em branco para consulta a pedido)</string>
<string name="vpn_shortcut">Atalho do OpenVPN</string>
+ <string name="vpn_launch_title">Conectando-se à VPN&#8230;</string>
<string name="shortcut_profile_notfound">Perfil especificado no atalho não encontrado</string>
<string name="random_host_prefix">Prefixo de Host aleatório</string>
<string name="random_host_summary">Adiciona 6 caracteres aleatórios ao nome do host</string>
@@ -66,10 +68,12 @@
<string name="check_remote_tlscert_title">Esperar certificado do servidor TLS</string>
<string name="remote_tlscn_check_summary">Verifica o assunto DN do certificado do servidor remoto</string>
<string name="remote_tlscn_check_title">Verificar nome de host do certificado</string>
+ <string name="enter_tlscn_dialog">Especifique a verificação usada para verificar o DN do certificado remoto (por exemplo, C = DE, L = Paderborn, OU = Avian IP Carriers, CN = openvpn.blinkt.de)\n\nEspecifique o DN completo ou o RDN (openvpn.blinkt.de no exemplo) ou um prefixo RDN para verificação. \n\nQuando utilizar o prefixo RDN \"Servidor\" corresponde ao \"Servidor-1\" e ao \"Servidor-2\"\n\nDeixando o campo de texto vazio verificará o RDN contra o nome do host do servidor.\n\nPara mais detalhes, veja a página de utilizador OpenVPN 2.3.1+ sob -verify-x509-name</string>
<string name="enter_tlscn_title">Assunto do certificado remoto</string>
<string name="tls_key_auth">Ativa a autenticação de chave TLS</string>
<string name="tls_auth_file">Ficheiro de autenticação TLS</string>
<string name="pull_on_summary">Solicita endereços IP, rotas e tempo do servidor.</string>
+ <string name="pull_off_summary">Nenhuma informação é solicitada do servidor. As configurações precisam ser especificadas abaixo.</string>
<string name="use_pull">Obter Configurações</string>
<string name="dns">DNS</string>
<string name="override_dns">Substituir configurações de DNS pelo servidor</string>
@@ -93,6 +97,7 @@
<string name="custom_options_title">Opções personalizadas</string>
<string name="edit_vpn">Editar definições VPN</string>
<string name="remove_vpn_query">Remova o perfil VPN \'%s\'?</string>
+ <string name="tun_error_helpful">Em algumas imagens ICS personalizadas, a permissão em /dev/tun pode estar errada, ou o módulo tun pode estar a faltar completamente. Para imagens CM9, tente a opção de reparação em configurações gerais</string>
<string name="tun_open_error">Falha ao abrir a interface tun</string>
<string name="error">"Erro: "</string>
<string name="clear">Limpar</string>
@@ -119,6 +124,7 @@
<string name="copying_log_entries">Copia entradas de registo</string>
<string name="faq_copying">Para copiar uma única entrada do registo selecione e mantenha seleciona a respetiva entrada. Para copiar/enviar o registo completo use a opção enviar registo. Use o botão de menu do equipamento caso não esteja visível no GUI.</string>
<string name="faq_shortcut">Atalho para iniciar</string>
+ <string name="faq_howto_shortcut">Pode colocar um atalho para iniciar o OpenVPN na sua área de trabalho. Dependendo do seu programa de ecrã inicial, terá que adicionar um atalho ou um widget.</string>
<string name="no_vpn_support_image">A imagem não suporta a API VPNService, lamentamos :(</string>
<string name="encryption">Encriptação</string>
<string name="cipher_dialog_title">Digite o método de encriptação</string>
@@ -155,22 +161,32 @@
<string name="private_key_password">Senha de chave privada</string>
<string name="password">Senha</string>
<string name="file_icon">ícone de ficheiro</string>
+ <string name="tls_authentication">Autenticação/encriptação TLS</string>
<string name="generated_config">Config gerado</string>
<string name="generalsettings">Configurações</string>
+ <string name="owner_fix_summary">Tenta mudar o dono de /dev/tun para sistema. Algumas imagens CM9 precisam disso para fazer a API VPNService funcionar. Requer root.</string>
<string name="owner_fix">Corrija a propriedade de /dev/tun</string>
+ <string name="generated_config_summary">Mostra o arquivo de configuração OpenVPN criado</string>
<string name="edit_profile_title">A editar \"%s\"</string>
<string name="building_configration">A preparar a configuração...</string>
+ <string name="netchange_summary">Ativando essa opção forçará a reconexão se o estado da rede mudar (ex: WiFi de/para celular)</string>
<string name="netchange">Volte a ligar na mudança de rede</string>
<string name="netstatus">Estado da rede: %s</string>
<string name="select_file">Selecione</string>
+ <string name="show_log_summary">Mostra a janela de log ao conectar. A janela de log sempre pode ser acessada pelo status da notificação.</string>
<string name="show_log_window">Mostrar a janela de log</string>
+ <string name="mobile_info">%10$s %9$s rodando no %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="faq_system_dialogs_title">Aviso de ligação e som de notificação</string>
+ <string name="translationby">Tradução em inglês por Arne Schwabe&lt; arne@rfc2549.org&gt;</string>
<string name="ipdns">IP e DNS</string>
<string name="basic">Básico</string>
<string name="routing">Encaminhamento</string>
<string name="obscure">Definições obscuras OpenVPN. Raramente necessário.</string>
<string name="advanced">Avançado</string>
<string name="export_config_title">Configuração Openvpn ICS</string>
+ <string name="warn_no_dns">Nenhum servidor de DNS sendo usado. A resolução do nome pode não funcionar. Considere configurar Servidores DNS personalizados. Observe também que o Android continuará usando suas configurações de proxy especificadas para sua conexão móvel / Wi-Fi quando nenhum servidor DNS estiver configurado.</string>
+ <string name="dns_add_error">Não foi possível adicionar o servidor de DNS \"%1$s\", rejeitado pelo sistema: %2$s</string>
+ <string name="ip_add_error">Não foi possível configurar o endereço de IP \"%1$s\", rejeitado pelo sistema: %2$s</string>
<string name="faq_howto_title">Início Rápido</string>
<string name="setting_loadtun_summary">Tente carregar o módulo tun.ko do kernel antes de ligar. Necessita de acesso root ao dispositivo.</string>
<string name="setting_loadtun">Carregar o módulo tun</string>
diff --git a/main/src/main/res/values-ro/strings.xml b/main/src/main/res/values-ro/strings.xml
index 055873a2..1ceecc4e 100755
--- a/main/src/main/res/values-ro/strings.xml
+++ b/main/src/main/res/values-ro/strings.xml
@@ -38,7 +38,7 @@
<string name="auth_username">Utilizator</string>
<string name="auth_pwquery">Parola</string>
<string name="static_keys_info">Pentru configurarea statică Cheile TLS Auth vor fi utilizate ca şi chei statice</string>
- <string name="configure_the_vpn">Configurare VPN</string>
+ <string name="configure_the_vpn">Configurați VPN-ul</string>
<string name="menu_add_profile">Adaugă profil</string>
<string name="add_profile_name_prompt">Introduceţi un nume ce identifică profilul nou</string>
<string name="duplicate_profile_name">Vă rugăm să introduceţi un nume de profil unic</string>
diff --git a/main/src/main/res/values-ru/plurals.xml b/main/src/main/res/values-ru/plurals.xml
index fc40574a..7cc8112c 100755
--- a/main/src/main/res/values-ru/plurals.xml
+++ b/main/src/main/res/values-ru/plurals.xml
@@ -2,22 +2,22 @@
<!--Generated by crowdin.com-->
<resources>
<plurals name="months_left">
- <item quantity="one">Остался %d месяц</item>
+ <item quantity="one">Остался один месяц</item>
<item quantity="few">Осталось %d месяца</item>
<item quantity="other">Осталось %d месяцев</item>
</plurals>
<plurals name="days_left">
- <item quantity="one">Остался %d день</item>
+ <item quantity="one">Остался один день</item>
<item quantity="few">Осталось %d дня</item>
<item quantity="other">Осталось %d дней</item>
</plurals>
<plurals name="hours_left">
- <item quantity="one">Остался %d час</item>
+ <item quantity="one">Остался один час</item>
<item quantity="few">Осталось %d часа</item>
<item quantity="other">Осталось %d часов</item>
</plurals>
<plurals name="minutes_left">
- <item quantity="one">Осталась %d минута</item>
+ <item quantity="one">Осталась одна минута</item>
<item quantity="few">Осталось %d минуты</item>
<item quantity="other">Осталось %d минут</item>
</plurals>
diff --git a/main/src/main/res/values-ru/strings.xml b/main/src/main/res/values-ru/strings.xml
index 6e414dfa..489d47c5 100755
--- a/main/src/main/res/values-ru/strings.xml
+++ b/main/src/main/res/values-ru/strings.xml
@@ -77,7 +77,7 @@
<string name="use_pull">Запрашивать параметры</string>
<string name="dns">DNS</string>
<string name="override_dns">Переопределить параметры DNS от сервера</string>
- <string name="dns_override_summary">Использовать свой DNS сервер</string>
+ <string name="dns_override_summary">Использовать ваши DNS</string>
<string name="searchdomain">Домен поиска</string>
<string name="dns1_summary">DNS-сервер для использования.</string>
<string name="dns_server">DNS-сервер</string>
@@ -87,8 +87,8 @@
<string name="ignore_routes_summary">Игнорировать маршруты, посылаемые сервером.</string>
<string name="default_route_summary">Перенаправляет весь трафик через VPN</string>
<string name="use_default_title">Использовать маршрут по умолчанию</string>
- <string name="custom_route_message">Введите пользовательские маршруты. Только введите адрес назначения в формате CIDR. \"10.0.0.0/8 2002::/16\" будет использовано для 10.0.0.0/8 и 2002::/16 сетей через VPN.</string>
- <string name="custom_route_message_excluded">Маршруты, которые не следует направлять через VPN. Используйте тот же синтаксис, как и в случае с другими маршрутами.</string>
+ <string name="custom_route_message">Введите пользовательские маршруты. Используйте только адрес назначения в формате CIDR. \"10.0.0.0/8 2002::/16\" направит сети 10.0.0.0/8 и 2002::/16 через VPN.</string>
+ <string name="custom_route_message_excluded">Маршруты, которые НЕ должны направляться через VPN. Используйте тот же синтаксис, что и для включенных маршрутов.</string>
<string name="custom_routes_title">Пользовательские маршруты</string>
<string name="custom_routes_title_excluded">Исключенные сети</string>
<string name="log_verbosity_level">Уровень детализации журнала</string>
@@ -133,7 +133,7 @@
<string name="settings_auth">Аутентификация/шифрование</string>
<string name="file_explorer_tab">Обзор файлов</string>
<string name="inline_file_tab">Встроенный файл</string>
- <string name="error_importing_file">Ошибка при импорте файла</string>
+ <string name="error_importing_file">Ошибка импорта файла</string>
<string name="import_error_message">Не удалось импортировать файл из файловой системы</string>
<string name="inline_file_data">[[Встроенный файл данных]]</string>
<string name="opentun_no_ipaddr">Отказ в открытии устройства tun без информации об IP-адресе</string>
@@ -152,7 +152,7 @@
<string name="faq_security_title">Соображения безопасности</string>
<string name="faq_security">"Так как OpenVPN чувствителен к безопасности, то уместны будут несколько замечаний на её счёт. Все данные на SD-карте по сути не защищены. Каждое приложение может прочесть их (например, эта программа не требует специальных привилегий на SD-карту). Данные этого приложения могут быть прочитаны только им самим. При использовании опции импорта сертификатов и ключей в диалоговом окне данные сохраняются в профиле VPN. Профили VPN доступны только этому приложению. (Не забудьте потом удалить копии на SD-карте). Несмотря на то, что данные доступны только этому приложению, они всё ещё не зашифрованы. При наличии прав администратора (рута) на телефоне или через некую уязвимость эти данные можно извлечь. Также сохранённые пароли хранятся в обычном текстовом виде. Настоятельно рекомендуется файлы pkcs12 импортировать в android keystore."</string>
<string name="import_vpn">Импорт</string>
- <string name="broken_image_cert_title">Ошибка вывода выбранного сертификата</string>
+ <string name="broken_image_cert_title">Ошибка отображения выбора сертификата</string>
<string name="broken_image_cert">Произошла ошибка при попытке вызова системного диалога выбора сертификатов Android 4.0+. Этого не должно было случиться на стандартной прошивке. Может быть в вашей прошивке испорчено хранилище сертификатов</string>
<string name="ipv4">IPv4</string>
<string name="ipv6">IPv6</string>
@@ -220,7 +220,7 @@
<string name="faq_routing_title">Конфигурация маршрутизации/интерфейса</string>
<string name="faq_routing">Конфигурация маршрутизации и интерфейса производится не через традиционные ifconfig/route команды, а с помощью VPNService API. Это приводит к созданию другой конфигурации маршрутизации, отличной от конфигураций, используемых на других ОС. Конфигурация VPN-туннеля состоит из IP-адресов и сетей, которые должны направляться через этот интерфейс. Никаких особых партнерских адресов или адресов шлюза не требуется. Также не требуются и специальные маршруты для соединения с VPN-сервером (например, добавленные при использовании redirect-gateway). Следовательно, приложение будет игнорировать эти параметры при импорте конфигурации. Приложение с помощью VPNService API гарантирует, что подключение к серверу не направляется через VPN-туннель. Поддерживается направление через туннель только определенных сетей. Приложение пытается определить сети, которые не должны быть направлены через туннель (например, маршрут x.x.x.x y.y.y.y net_gateway) и вычисляет список маршрутов, в который не включаются эти маршруты, чтобы эмулировать поведение других платформ. Окна журналов и логов показывают конфигурацию сервиса VPN после установления соединения.</string>
<string name="persisttun_summary">Не использовать обычное соединение без VPN при переподключении OpenVPN.</string>
- <string name="persistent_tun_title">Постоянный туннель</string>
+ <string name="persistent_tun_title">Постоянный tun</string>
<string name="openvpn_log">Журнал OpenVPN</string>
<string name="import_config">Импорт конфигурации OpenVPN</string>
<string name="battery_consumption_title">Потребление батареи</string>
@@ -281,7 +281,7 @@
<string name="clearappsdialog">Очистить список авторизованных внешних приложений?\nСписок разрешенных приложений:\n\n%s</string>
<string name="screenoff_summary">Приостанавливать VPN, если экран выключен и передано меньше 64kb данных за 60 сек. Когда включена опция \"Постоянный туннель\", приостановка VPN оставит ваше устройство без сетевого подключения. Без опции \"Постоянный туннель\" устройство не будет иметь VPN-соединения/защиты.</string>
<string name="screenoff_title">Приостановить VPN-соединение при выключенном экране</string>
- <string name="screenoff_pause">Приостановка соединения при выключенном экране: меньше, чем %1$s in %2$ss</string>
+ <string name="screenoff_pause">Приостановка соединения при выключенном экране: меньше, чем %1$s за %2$sс</string>
<string name="screen_nopersistenttun">Внимание: Постоянный туннель не включен для этого VPN. Трафик будет использовать обычное интернет соединение, когда экран выключен.</string>
<string name="save_password">Сохранить пароль</string>
<string name="pauseVPN">Приостановить VPN</string>
@@ -438,8 +438,25 @@
<string name="kbits_per_second">%.1f Кбит/с</string>
<string name="mbits_per_second">%.1f Мбит/с</string>
<string name="gbits_per_second">%.1f Гбит/с</string>
+ <string name="weakmd">&lt;p&gt; Начиная с OpenSSL версии 1.1, OpenSSL отклоняет слабые подписи в таких сертификатах, как MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5, подписи полностью небезопасны и больше не должны использоваться.&lt;/b&gt; Столкновения MD5 могут быть созданы в &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt; через несколько часов с минимальными затратами.&lt;/a&gt;. Вы должны как можно скорее обновить сертификаты VPN. &lt;/p&gt;&lt;p&gt;К сожалению, старые дистрибутивы easy-rsa включали опцию конфигурации «default_md md5». Если вы используете старую версию easy-rsa, обновите ее до &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;latest версии&lt;/a&gt;) или измените md5 на sha256 и восстановите свои сертификаты.&lt;/p&gt;&lt;p&gt;Если вы действительно хотите использовать старые и поврежденные сертификаты, используйте настраиваемый параметр конфигурации tls-cipher «DEFAULT: @SECLEVEL = 0 \"в расширенной конфигурации или в качестве дополнительной строки в вашей импортированной конфигурации&lt;/p&gt;
+ </string>
<string name="volume_byte">%.0f Б</string>
<string name="volume_kbyte">%.1f КБ</string>
<string name="volume_mbyte">%.1f МБ</string>
<string name="volume_gbyte">%.1f ГБ</string>
+ <string name="channel_name_background">Статистика подключения</string>
+ <string name="channel_description_background">Текущая статистика установленного соединения OpenVPN</string>
+ <string name="channel_name_status">Изменение статуса соединения</string>
+ <string name="channel_description_status">Изменения состояния соединения OpenVPN (подключение, аутентификация,...)</string>
+ <string name="weakmd_title">Слабые (MD5) хэши в сигнатуре сертификата (SSL_CTX_use_certificate md слишком слабый)</string>
+ <string name="title_activity_open_sslspeed">Тест скорости OpenSSL</string>
+ <string name="openssl_cipher_name">Имена шифров OpenSSL</string>
+ <string name="osslspeedtest">Тест скорости OpenSSL Crypto</string>
+ <string name="openssl_error">OpenSSL возвратил ошибку</string>
+ <string name="running_test">Запуск теста&#8230;</string>
+ <string name="test_algoirhtms">Тестирование выбранных алгоритмов</string>
+ <string name="all_app_prompt">Внешнее приложение пытается контролировать %s. Приложение, запрашивающее доступ, не может быть определено. Разрешение этого приложения предоставляет доступ всем приложениям.</string>
+ <string name="openvpn3_nostatickeys">Реализация OpenVPN 3 C ++ не поддерживает статические ключи. Перейдите в OpenVPN 2.x под общие настройки.</string>
+ <string name="openvpn3_pkcs12">Использование файлов PKCS12 напрямую с помощью OpenVPN 3 C ++ не поддерживается. Импортируйте файлы pkcs12 в хранилище ключей Android или замените OpenVPN 2.x на общие настройки.</string>
</resources>
diff --git a/main/src/main/res/values-sv/strings.xml b/main/src/main/res/values-sv/strings.xml
index 68af6a28..c2c12f82 100755
--- a/main/src/main/res/values-sv/strings.xml
+++ b/main/src/main/res/values-sv/strings.xml
@@ -442,4 +442,15 @@
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Anslutningsstatistik</string>
+ <string name="channel_description_background">Löpande statistik för den etablerade OpenVPN-anslutningen</string>
+ <string name="channel_description_status">Statusändringar för OpenVPN-anslutningen (Anslutning, autentisering,...)</string>
+ <string name="weakmd_title">Svag (MD5) hashes i certifikat signatur (SSL_CTX_use_certificate md för svag)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL-hastighetstest</string>
+ <string name="openssl_cipher_name">OpenSSL-ciffernamn</string>
+ <string name="openssl_error">OpenSSL returnerade ett fel</string>
+ <string name="running_test">Kör test&#8230;</string>
+ <string name="test_algoirhtms">Testa valda algoritmer</string>
+ <string name="all_app_prompt">En extern app försöker kontrollera %s. Appen som begär åtkomst kan inte bestämmas. Tillåtelse av den här appen ger åtkomst till ALLA program.</string>
+ <string name="openvpn3_nostatickeys">OpenVPN 3 C ++-implementeringen stöder inte statiska nycklar. Ändra till OpenVPN 2.x under allmänna inställningar.</string>
</resources>
diff --git a/main/src/main/res/values-tr/arrays.xml b/main/src/main/res/values-tr/arrays.xml
index 5bb8b773..2388caa0 100755
--- a/main/src/main/res/values-tr/arrays.xml
+++ b/main/src/main/res/values-tr/arrays.xml
@@ -8,7 +8,7 @@
<!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
<string-array name="vpn_types">
<item>Sertifikalar</item>
- <item>PCKCS12 Dosyası</item>
+ <item>PKCS12 Dosyası</item>
<item>Android Sertifikası</item>
<item>Kullanıcı Adı/Parola</item>
<item>Sabit Anahtarlar</item>
diff --git a/main/src/main/res/values-tr/strings.xml b/main/src/main/res/values-tr/strings.xml
index 0d197b16..d63d6338 100755
--- a/main/src/main/res/values-tr/strings.xml
+++ b/main/src/main/res/values-tr/strings.xml
@@ -409,7 +409,7 @@
<string name="samsung_broken_title">Samsung telefonlar</string>
<string name="novpn_selected">Seçili VPN yok.</string>
<string name="defaultvpn">Öntanımlı VPN</string>
- <string name="defaultvpnsummary">Varsayılan olarak bir VPN gereken yerlerde VPN kullanılır. Bunlar şu anda: önyükleme sırasında, Her Zaman Açık ve Hızlı Ayarlar Döşemesi içindir.</string>
+ <string name="defaultvpnsummary">VPN, varsayılan bir VPN\'in gerekli olduğu yerlerde kullanılır. Bunlar şu anda: önyükleme sırasında, Her Zaman Açık ve Hızlı Ayarlar Döşemesi içindir.</string>
<string name="vpnselected">Şu anda seçili VPN: \'%s\'</string>
<string name="reconnect">Yeniden bağlan</string>
<string name="qs_title">VPN\'i Aç/Kapat</string>
@@ -442,4 +442,24 @@
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
+ <string name="channel_name_background">Bağlantı istatistikleri</string>
+ <string name="channel_description_background">Süren OpenVPN bağlantısının devam eden istatistikleri</string>
+ <string name="channel_name_status">Bağlantı durumu değişimi</string>
+ <string name="channel_description_status">OpenVPN bağlantısının durum değişiklikleri (Bağlantı, kimlik doğrulama,&#8230;)
+ </string>
+ <string name="weakmd_title">Sertifika imzasında zayıf (MD5) karması (SSL_CTX_use_certificate md çok zayıf)
+ </string>
+ <string name="title_activity_open_sslspeed">OpenSSL Hız Testi</string>
+ <string name="openssl_cipher_name">OpenSSL şifre isimleri</string>
+ <string name="osslspeedtest">OpenSSL Kripto Hız testi</string>
+ <string name="openssl_error">OpenSSL bir hata döndürdü</string>
+ <string name="running_test">Test çalışıyor&#8230;</string>
+ <string name="test_algoirhtms">Seçilen algoritmaları test edin</string>
+ <string name="all_app_prompt">Harici bir uygulama, %s denetlemeyi deniyor. Erişim isteyen uygulama belirlenemedi. Uygulamaya TÜM uygulamalara erişim izni veriliyor.</string>
+ <string name="openvpn3_nostatickeys">OpenVPN 3 C++ uygulaması statik anahtarları desteklemez. Lütfen genel ayarlar altında
+ OpenVPN 2.x\'e geçin.
+ </string>
+ <string name="openvpn3_pkcs12">PKCS12 dosyalarını doğrudan OpenVPN 3 C++ uygulamasıyla kullanmak desteklenmiyor.
+ Lütfen, pkcs12 dosyalarını Android anahtar deposuna aktarın veya genel ayarlar altında OpenVPN 2.x\'e geçin.
+ </string>
</resources>
diff --git a/main/src/main/res/values-uk/arrays.xml b/main/src/main/res/values-uk/arrays.xml
index 3e42c277..33383a8d 100755
--- a/main/src/main/res/values-uk/arrays.xml
+++ b/main/src/main/res/values-uk/arrays.xml
@@ -19,7 +19,12 @@
<string-array name="tls_directions_entries">
<item translatable="false">0</item>
<item translatable="false">1</item>
- <item>Невказано</item>
- <item>Шифрування (TLS-crypt)</item>
+ <item>Не вказано</item>
+ <item>Шифрування (--tls-crypt)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>Відключитися, забути пароль</item>
+ <item>Відключитися, зберегти пароль</item>
+ <item>Ігнорувати, повторити</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-uk/plurals.xml b/main/src/main/res/values-uk/plurals.xml
index 70489fbc..0fa0f62e 100755
--- a/main/src/main/res/values-uk/plurals.xml
+++ b/main/src/main/res/values-uk/plurals.xml
@@ -1,3 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="one">Залишився один місяць</item>
+ <item quantity="few">Залишось %d місяці</item>
+ <item quantity="other">Залишось %d місяці(-ів)</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="one">Залишився один день</item>
+ <item quantity="few">Залишилось %d дні</item>
+ <item quantity="other">Залишилось %d днів</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="one">Залишилась одна година</item>
+ <item quantity="few">Залишилось %d години</item>
+ <item quantity="other">Залишилось %d годин</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="one">Залишилася одна хвилина</item>
+ <item quantity="few">Залишилось %d хвилини</item>
+ <item quantity="other">Залишилось %d хвилин</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-uk/strings.xml b/main/src/main/res/values-uk/strings.xml
index fcdbb53e..2960c681 100755
--- a/main/src/main/res/values-uk/strings.xml
+++ b/main/src/main/res/values-uk/strings.xml
@@ -32,7 +32,7 @@
<string name="tls_direction">TLS напрямок</string>
<string name="ipv6_dialog_tile">Введіть адресу IPv6/маску в CIDR форматі (напр., 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">Введіть адресу IPv4/маску в CIDR форматі (напр., 1.2.3.4/24)</string>
- <string name="ipv4_address">IPv4-адреса</string>
+ <string name="ipv4_address">IPv4-адреси</string>
<string name="ipv6_address">IPv6-адреса</string>
<string name="custom_option_warning">Введіть додаткові параметри OpenVPN. Використовуйте цю можливість з великою обережністю. Якщо ви вважаєте, що відсутній важливий параметр, то зв\'яжіться з автором</string>
<string name="auth_username">Ім\'я користувача</string>
@@ -252,6 +252,7 @@
<string name="state_tcp_connect">Підключення (TCP)</string>
<string name="state_auth_failed">Помилка автентифікації</string>
<string name="state_nonetwork">Очікування на використання мережі</string>
+ <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">Не підключено</string>
<string name="start_vpn_title">Підключення до VPN %s</string>
<string name="start_vpn_ticker">Підключення до VPN %s</string>
@@ -278,7 +279,7 @@
<string name="no_external_app_allowed">Не дозволяється використовувати зовнішнє API</string>
<string name="allowed_apps">Дозволенi додатки: %s</string>
<string name="clearappsdialog">Очистити список дозволених зовнішніх програм \nПоточний список дозволених програм:\n\n%s</string>
- <string name="screenoff_summary">\"Пауза VPN, коли екран вимкнений і менш ніж 64 кб були передані за 60 секунд. Якщо увімкена опція \"Постійний tun\", то Пауза VPN залишить ваш пристрій БЕЗ мережевого підключення. Без опції \"Постійний tun\", пристрій використовує нормальне (незахище) підключення до інтернету, коли VPN в паузі.</string>
+ <string name="screenoff_summary">Призупинити VPN, коли екран вимкнений і менш ніж 64 кб були передані за 60 секунд. Якщо увімкнена опція \"Постійний tun\", то призупинення VPN залишить ваш пристрій БЕЗ підключення до мережі. Без опції \"Постійний tun\", пристрій не використовує підключення/захист VPN.</string>
<string name="screenoff_title">Пауза VPN з\'єднання після вимкнення екрану</string>
<string name="screenoff_pause">Призупинення зв\'язку в екрані вимкненого стану: менше %1$s у %2$sс.</string>
<string name="screen_nopersistenttun">Попередження: Постійний tun не увімкнений для цього VPN. Трафік буде використовувати звичайне інтернет-з\'єднання, коли екран вимкнений.</string>
@@ -321,7 +322,8 @@
<string name="openvpn_is_no_free_vpn">Щоб користуватися цією програмою, Вам знадобиться VPN провайдер/шлюз з підтримкою OpenVPN (часто наданий роботодавцем). Для отримання інформації з налаштування власного OpenVPN сервера: http://community.openvpn.net/</string>
<string name="import_log">Журнал імпорту :</string>
<string name="ip_looks_like_subnet">Vpn топологія \"%3$s\" визначена, але ifconfig %1$s %2$s більше схожий на IP-адресу з маскою мережі. Припускаемо, що це топологія \"мережі\".</string>
- <string name="mssfix_invalid_value">Значення MSS являє собою ціле число від 0 до 9000</string>
+ <string name="mssfix_invalid_value">Значення MSS має бути цілим числом в діапазоні від 0 до 9000</string>
+ <string name="mtu_invalid_value">Значення MTU має бути цілим числом в діапазоні від 64 до 9000</string>
<string name="mssfix_value_dialog">Зміни в TCP з\'єднанні, які проходять через тунель, так що отриманий в результаті розмір пакета UDP, після инкапсуляції по OpenVPN обмежується цим значенням. (За замовчуванням 1450)</string>
<string name="mssfix_checkbox">Зміна значення MSS навантаження TCP</string>
<string name="mssfix_dialogtitle">Встановка значення MSS навантаження TCP</string>
@@ -377,6 +379,7 @@
<string name="ab_persist_tun_title">Зберігати tun режим</string>
<string name="version_and_later">%s і подальше</string>
<string name="tls_cipher_alert_title">Підключення не вдається з \"SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure\"</string>
+ <string name="tls_cipher_alert">Новіші версії OpenVPN для Android (0.6.29 / березень 2015 р.) використовують більш безпечниі налаштування за промовчанням для дозволених шифрованих наборів (tls-шифр \"DEFAULT:! EXP:! PSK:! SRP:! KRSA\"). На жаль, виключення менш безпечних та експортних наборів шифрів, особливо тих, які не підтримують Perfect Forward Secrecy (Diffie-Hellman), викликають певні проблеми. Це, як правило, зумовлене добромисною, але погано виконаною спробою посилити захист TLS встановленням tls-cipher на сервері або деяких вбудованих ОС із урізаним SSL (наприклад, MikroTik).\nЩоб вирішити цю проблему, встановіть tls-cipher налаштування на сервері на розумні за промовчанням, як tls-cipher \"DEFAULT:! EXP:! PSK:! SRP:! kRSA\". Щоб вирішити проблему у клієнта, додайте користувацький параметр tls-cipher DEFAULT на клієнті Android.</string>
<string name="message_no_user_edit">Цей профіль був доданий з зовнішнього додатку (%s) і був відзначений як таким, що не керується користувачем.</string>
<string name="crl_file">Список відкликаних сертифікатів</string>
<string name="service_restarted">Перезапуск OpenVPN Service (Додаток зупинився або закрився через нестачу пам\'яті)</string>
@@ -389,6 +392,7 @@
<string name="query_permissions_sdcard">OpenVPN для Android може спробувати знайти відсутні файли на Sd карті автоматично. Натисніть на це повідомлення, щоб отримати права на дозвіл.</string>
<string name="protocol">Протокол</string>
<string name="enabled_connection_entry">Ввімкнено</string>
+ <string name="abi_mismatch">Preferred native ABI precedence of this device (%1$s) and ABI reported by native libraries (%2$s) mismatch</string>
<string name="permission_revoked">Дозвіл VPN відкликано ОС (наприклад, інша програма VPN запущена), зупинка VPN</string>
<string name="pushpeerinfo">Отримати інформацію про піра</string>
<string name="pushpeerinfosummary">Надіслати додаткову інформацію на сервер, наприклад версію SSL та Android</string>
@@ -404,14 +408,55 @@
<string name="samsung_broken">Навіть не зважаючи на те, що телефони Samsung є одними з найбільш популярних телефонів на Android, прошивка від Samsung також є однією з найбільш дирявими прошивками на Android. Ці помилки не обмежуються лише VPN операціями на цих пристроях, але багато з них можна уникнути. Дальше деякі з цих помилок описані. \n\nDNS не працює, якщо сервер DNS в межах віртуальної приватної мережі. \n\nНа багатьох пристроях Samsung 5.x функція дозволених/заборонених програм не працює. \n\nНа Samsung 6.x VPN не працює, якщо додаток VPN не звільняється від PowerSave функцій.</string>
<string name="samsung_broken_title">телефони Samsung</string>
<string name="novpn_selected">VPN не вибрано.</string>
+ <string name="defaultvpn">VPN за промовчанням</string>
+ <string name="defaultvpnsummary">VPN, що буде використовуватися за промовчанням в тих місцях, де потрібно. А саме: при завантаженні, для «Постійного VPN» та для перемикача в «Швидких налаштуваннях».</string>
+ <string name="vpnselected">Наразі вибраний VPN: \'%s\'</string>
<string name="reconnect">Перепідключитись</string>
+ <string name="qs_title">Переключити VPN</string>
<string name="qs_connect">Підключення до %s</string>
<string name="qs_disconnect">Відключення %s</string>
+ <string name="connectretrymaxmessage">Введіть максимальний час між спробами з\'єднання. OpenVPN поступово підвищить час очікування після невдалої спроби з\'єднання до цього значення. Значення за промовчанням до 300 с.</string>
<string name="connectretrymaxtitle">Максимальний час між спробами підключення</string>
<string name="state_waitconnectretry">Очікування %ss секунд між спробами підключення</string>
+ <string name="nought_alwayson_warning"><![CDATA[Якщо у вас не виникло діалогове вікно підтвердження VPN, це значить, що у вас ввімкнено \"Постійний VPN\" для іншої програми. У такому випадку лише цьому додатку дозволено підключатися до VPN. Перевірте розділ Налаштування-> Мережі ще .. -> VPN]]></string>
<string name="management_socket_closed">Підключення до OpenVPN закрито (%s)</string>
<string name="change_sorting">Змінити сортування</string>
<string name="sort">Cортувати</string>
<string name="sorted_lru">Профілі відсортовано за часом використовувався</string>
<string name="sorted_az">Профілі відсортовані за назвою</string>
+ <string name="deprecated_tls_remote">Налаштування містять параметр tls-remote, який був заборонений в версії 2.3 і остаточно видалений в 2.4</string>
+ <string name="auth_failed_behaviour">Поведінка при AUTH_FAILED</string>
+ <string name="graph">Графік</string>
+ <string name="use_logarithmic_scale">Використовувати логарифмічну шкалу</string>
+ <string name="notenoughdata">Недостатньо даних</string>
+ <string name="avghour">В середньому за годину</string>
+ <string name="avgmin">В середньому за хвилину</string>
+ <string name="last5minutes">Останні 5 хвилин</string>
+ <string name="data_in">Вхідний</string>
+ <string name="data_out">Вихідний</string>
+ <string name="bits_per_second">%.0f біт/с</string>
+ <string name="kbits_per_second">%.1f Кбіт/с</string>
+ <string name="mbits_per_second">%.1f Мбіт/с</string>
+ <string name="gbits_per_second">%.1f Гбіт/с</string>
+ <string name="weakmd">&lt;p&gt; Починаючи з OpenSSL версії 1.1, OpenSSL відкидає слабкі підписи в таких сертифікатах, як MD5.&lt;/p&gt;&lt;p&gt;&lt;b&gt;MD5, підписи повністю небезпечні і більше не повинні використовуватись.&lt;/b&gt; Колізії MD5 можуть бути створені в &lt;a
+ href=\"https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html\"&gt; через декілька годин з мінімальними затратами.&lt;/a&gt;. Ви повинні якнайшвидше оновити сертифікати VPN. &lt;/p&gt;&lt;p&gt;Нажаль, старі дистрибутиви easy-rsa включали опцію конфігурації «default_md md5». Якщо ви використовуєте стару версію easy-rsa, оновітб її до &lt;a href=\"https://github.com/OpenVPN/easy-rsa/releases\"&gt;latest версії&lt;/a&gt;) або змініть md5 на sha256 та відновіть свої сертификати.&lt;/p&gt;&lt;p&gt;Якщо ви дійсно хочете використовувати старі та пошкоджені сертификати, використовуйте налаштовуваний параметр конфігурації tls-cipher «DEFAULT: @SECLEVEL = 0 \"в розширеній конфігурації або в якості додаткового рядку в вашій імпортованій конфігурації&lt;/p&gt;
+ </string>
+ <string name="volume_byte">%.0f Б</string>
+ <string name="volume_kbyte">%.1f КБ</string>
+ <string name="volume_mbyte">%.1f МБ</string>
+ <string name="volume_gbyte">%.1f ГБ</string>
+ <string name="channel_name_background">Статистика з\'єднання</string>
+ <string name="channel_description_background">Поточна статистика встановленого з\'єднання OpenVPN</string>
+ <string name="channel_name_status">Зміна статусу з\'єднання</string>
+ <string name="channel_description_status">Зміни статусу з\'єднання OpenVPN (підключення, автентифікація,...)</string>
+ <string name="weakmd_title">Слабкі (MD5) хеші в підписі сертифікату (SSL_CTX_use_certificate md надто слабкий)</string>
+ <string name="title_activity_open_sslspeed">Тест швидкості OpenSSL</string>
+ <string name="openssl_cipher_name">Назви шифрів OpenSSL</string>
+ <string name="osslspeedtest">Тест швидкості OpenSSL Crypto</string>
+ <string name="openssl_error">OpenSSL повернув помилку</string>
+ <string name="running_test">Запуск тесту&#8230;</string>
+ <string name="test_algoirhtms">Тестування вибраних алгоритмів</string>
+ <string name="all_app_prompt">Зовнішній застосунок намагається контролювати %s. Застосунок, що запитує про доступ, не може бути визначений. Дозвіл цьому застосунку надає доступ всім додаткам.</string>
+ <string name="openvpn3_nostatickeys">Реалізація OpenVPN 3 C ++ не підтримує статичні ключи. Перейдіть в OpenVPN 2.x під загальними налаштуваннями.</string>
+ <string name="openvpn3_pkcs12">Використання файлів PKCS12 напряму за допомогою OpenVPN 3 C ++ не підтримується. Імпортуйте файли pkcs12 в сховище ключів Android або замініть OpenVPN 2.x на загальні налаштування.</string>
</resources>
diff --git a/main/src/main/res/values-vi/arrays.xml b/main/src/main/res/values-vi/arrays.xml
index 59ffec5d..06f0f519 100755
--- a/main/src/main/res/values-vi/arrays.xml
+++ b/main/src/main/res/values-vi/arrays.xml
@@ -24,7 +24,7 @@
</string-array>
<string-array name="auth_retry_type">
<item>Ngắt kết nối, không lưu mật khẩu</item>
- <item>Ngắt kết nối, giữ mật khẩu</item>
+ <item>Ngắt kết nối, không giữ mật khẩu</item>
<item>Bỏ qua, thử lại</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-vi/strings.xml b/main/src/main/res/values-vi/strings.xml
index 030c0c6f..5c8d3da2 100755
--- a/main/src/main/res/values-vi/strings.xml
+++ b/main/src/main/res/values-vi/strings.xml
@@ -418,5 +418,28 @@
<string name="connectretrymaxmessage">Hãy nhập tối đa thời gian giữa các kết nối lại. OpenVPN sẽ dần dần tăng thời gian chờ đợi của mình sau khi cố kết nối không thành công đến giá trị này. Mặc định là hệ thống 300.</string>
<string name="connectretrymaxtitle">Thời gian tối đa giữa kết nối lại</string>
<string name="state_waitconnectretry">Vui lòng chờ %ss giây để kết nối</string>
+ <string name="nought_alwayson_warning"><![CDATA[Việt nam]]></string>
+ <string name="management_socket_closed">Kết nối với OpenVPN đã đóng (%s)</string>
+ <string name="change_sorting">Thay đổi sắp xếp</string>
<string name="sort">Sắp xếp</string>
+ <string name="sorted_lru">Hồ sơ đã sắp xếp theo lần sử dụng gần đây nhất</string>
+ <string name="sorted_az">Hồ sơ sắp xếp theo tên</string>
+ <string name="deprecated_tls_remote">Cấu hình dùng tùy chọn tls-remote đã bị hạn chế trong 2.3 và cuối cùng bị gỡ bỏ trong 2.4</string>
+ <string name="auth_failed_behaviour">Hành vi trong XÁC THỰC_LỖI</string>
+ <string name="graph">Biểu đồ</string>
+ <string name="use_logarithmic_scale">Dùng thang đo logarit</string>
+ <string name="notenoughdata">Không đủ dữ liệu</string>
+ <string name="avghour">Trung bình mỗi giờ</string>
+ <string name="avgmin">Trung bình mỗi phút</string>
+ <string name="last5minutes">5 phút gần nhất</string>
+ <string name="data_in">Vào</string>
+ <string name="data_out">Ra</string>
+ <string name="bits_per_second">%.0f bit/giây</string>
+ <string name="kbits_per_second">%.1f kbit/giây</string>
+ <string name="mbits_per_second">%.1f Mbit/giây</string>
+ <string name="gbits_per_second">%.1f Gbit/giây</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-zh-rCN/arrays.xml b/main/src/main/res/values-zh-rCN/arrays.xml
index c41d00da..fda50c5a 100755
--- a/main/src/main/res/values-zh-rCN/arrays.xml
+++ b/main/src/main/res/values-zh-rCN/arrays.xml
@@ -8,7 +8,7 @@
<!-- Keep the order the same as the TYPE_ constants in VPNProfile -->
<string-array name="vpn_types">
<item>证书</item>
- <item>PKCS12 文件</item>
+ <item>PKCS12 加密文件</item>
<item>Android 证书</item>
<item>用户名/密码</item>
<item>静态密钥</item>
@@ -20,6 +20,11 @@
<item translatable="false">0</item>
<item translatable="false">1</item>
<item>未指定</item>
- <item>加密(tls-crypt)</item>
+ <item>加密方式(--tls-crypt)</item>
+ </string-array>
+ <string-array name="auth_retry_type">
+ <item>断开,忘记密码</item>
+ <item>断开,保存密码</item>
+ <item>忽略,重试</item>
</string-array>
</resources>
diff --git a/main/src/main/res/values-zh-rCN/plurals.xml b/main/src/main/res/values-zh-rCN/plurals.xml
index 70489fbc..8aa121e6 100755
--- a/main/src/main/res/values-zh-rCN/plurals.xml
+++ b/main/src/main/res/values-zh-rCN/plurals.xml
@@ -1,3 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
-<resources></resources>
+<resources>
+ <plurals name="months_left">
+ <item quantity="other">剩下 %d 个月</item>
+ </plurals>
+ <plurals name="days_left">
+ <item quantity="other">剩下 %d 天</item>
+ </plurals>
+ <plurals name="hours_left">
+ <item quantity="other">剩下 %d 小时</item>
+ </plurals>
+ <plurals name="minutes_left">
+ <item quantity="other">剩下 %d 分钟</item>
+ </plurals>
+</resources>
diff --git a/main/src/main/res/values-zh-rCN/strings.xml b/main/src/main/res/values-zh-rCN/strings.xml
index 9a62f113..94836955 100755
--- a/main/src/main/res/values-zh-rCN/strings.xml
+++ b/main/src/main/res/values-zh-rCN/strings.xml
@@ -5,15 +5,15 @@
~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-->
<resources>
- <string name="app">OpenVPN for Android</string>
- <string name="address">服务器地址</string>
- <string name="port">Server Port:</string>
+ <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="no_data">没有数据</string>
+ <string name="useLZO">LZO 压缩算法</string>
<string name="client_no_certificate">没有证书</string>
<string name="client_certificate_title">客户端证书</string>
<string name="client_key_title">客户端证书密钥</string>
@@ -29,106 +29,200 @@
<string name="file_select">请选择&#8230;</string>
<string name="file_nothing_selected">你必须选择一个文件</string>
<string name="useTLSAuth">使用 TLS 认证</string>
+ <string name="tls_direction">TLS 位置</string>
<string name="ipv6_dialog_tile">输入 CIDR 格式的 IPv6 地址/网络掩码(例如 2000:dd::23/64)</string>
<string name="ipv4_dialog_title">输入 CIDR 格式的 IPv4 地址/网络掩码(例如 1.2.3.4/24)</string>
<string name="ipv4_address">IPv4 地址</string>
<string name="ipv6_address">IPv6 地址</string>
- <string name="custom_option_warning">请谨慎输入 OpenVPN 的自定义选项。此外请注意许多与 tun 模块有关的 OpenVPN 设置由于系统 VPN 功能的设计而不能得到支持。如果您觉得缺少一个很重要的选项,请与作者联系。</string>
+ <string name="custom_option_warning">输入 OpenVPN 的自定义选项。请谨慎使用此功能。此外请注意许多与 tun 模块有关的 OpenVPN 设置由于系统 VPN 功能的设计而不能得到支持。如果您觉得缺少一个很重要的选项,请与作者联系。</string>
<string name="auth_username">用户名</string>
<string name="auth_pwquery">密码</string>
- <string name="static_keys_info">静态配置中 TLS 身份验证密钥将被用作静态密钥</string>
+ <string name="static_keys_info">在静态配置中 TLS 身份验证密钥将被用作静态密钥</string>
<string name="configure_the_vpn">配置 VPN</string>
<string name="menu_add_profile">添加配置文件</string>
<string name="add_profile_name_prompt">输入新配置文件的名字</string>
- <string name="duplicate_profile_name">请输入一个唯一的配置文件名称</string>
+ <string name="duplicate_profile_name">请输入一个独一无二的配置文件名称</string>
<string name="profilename">配置文件名称</string>
<string name="no_keystore_cert_selected">您必须选择一个用户证书</string>
+ <string name="no_ca_cert_selected">你必须选择一个CA证书</string>
+ <string name="no_error_found">没有找到错误</string>
+ <string name="config_error_found">配置错误</string>
<string name="ipv4_format_error">无法解析 IPv4 地址</string>
<string name="custom_route_format_error">无法解析自定义路由</string>
<string name="pw_query_hint">(根据需求留空)</string>
<string name="vpn_shortcut">OpenVPN 主屏幕快捷方式</string>
+ <string name="vpn_launch_title">正在连接到 VPN %s</string>
+ <string name="shortcut_profile_notfound">未找到快捷方式指定的配置文件</string>
+ <string name="random_host_prefix">随机主机前缀</string>
+ <string name="random_host_summary">在主机名前添加6个随机字符</string>
+ <string name="custom_config_title">启用自定义选项</string>
+ <string name="custom_config_summary">(此处)指定自定义选项。请谨慎使用!</string>
+ <string name="route_rejected">路由被安卓系统拒绝</string>
+ <string name="cancel_connection">断开</string>
<string name="cancel_connection_long">断开VPN</string>
- <string name="title_cancel">确认取消</string>
+ <string name="clear_log">清除日志</string>
+ <string name="title_cancel">确认取消?</string>
+ <string name="cancel_connection_query">断开连接的VPN/取消连接尝试?</string>
+ <string name="remove_vpn">删除VPN</string>
<string name="check_remote_tlscert">检查服务器是否使用 TLS 服务器端扩展 (--remote-cert-tlsserver server)</string>
<string name="check_remote_tlscert_title">需要 TLS 服务器证书</string>
<string name="remote_tlscn_check_summary">检查远程服务器证书的 DN 属性</string>
<string name="remote_tlscn_check_title">证书主机名检查</string>
<string name="enter_tlscn_dialog">勾选此项将验证远程证书的 DN 属性(例:C=DE, L=Paderborn, OU=Avian IP Carriers, CN=openvpn.blinkt.de)\n\n输入完整的 DN 或者 RDN 以便进行验证。\n\nRDN前缀 \"Server\" 可以匹配 \"Server-1\" 以及 \"SERVER-2\"\n\n若留空则将仅验证 RDN 而不验证主机名。\n\n有关更多信息请查看 OpenVPN 2.3.1+ 参考手册的 --verify-x509-name 小节</string>
- <string name="enter_tlscn_title">远程证书主题</string>
+ <string name="enter_tlscn_title">远程证书账户</string>
+ <string name="tls_key_auth">启用TLS密钥验证</string>
+ <string name="tls_auth_file">TLS认证文件</string>
<string name="pull_on_summary">从服务器请求 IP 地址、 路由规则和计时选项。</string>
- <string name="pull_off_summary">没有从服务器请求信息。设置需要在下方被指定。</string>
+ <string name="pull_off_summary">将不会从服务器请求信息。需要手动在下方配置设置。</string>
<string name="use_pull">Pull 设置</string>
- <string name="secondary_dns_message">无法使用主 DNS 服务器时会使用辅助 DNS 服务器。</string>
+ <string name="dns">DNS</string>
+ <string name="override_dns">由服务器下发DNS设置</string>
+ <string name="dns_override_summary">使用您的DNS服务器</string>
+ <string name="searchdomain">搜索域名</string>
+ <string name="dns1_summary">要使用的DNS服务器。</string>
+ <string name="dns_server">主DNS服务器</string>
+ <string name="secondary_dns_message">如果无法到达正常的DNS服务器,则使用辅助DNS服务器。</string>
+ <string name="backup_dns">备用DNS服务器</string>
+ <string name="ignored_pushed_routes">忽略推送的路由</string>
<string name="ignore_routes_summary">不使用服务器推送的路由</string>
- <string name="default_route_summary">重定向所有流量到VPN</string>
+ <string name="default_route_summary">通过VPN重定向所有流量</string>
+ <string name="use_default_title">使用默认路由</string>
<string name="custom_route_message">输入自定义路由。目标地址只能用CIDR格式。\"10.0.0.0/8 2002::/16\" 将会通过VPN重定向到10.0.0.0/8 和 2002::/16 网络。</string>
- <string name="custom_route_message_excluded">不应该通过VPN路由的路线。使用自定义路由相同的语法。</string>
- <string name="custom_routes_title_excluded">排除的路线</string>
+ <string name="custom_route_message_excluded">设置要不通过VPN路由的路线。使用与自定义路由相同的语法。</string>
+ <string name="custom_routes_title">自定义路由</string>
+ <string name="custom_routes_title_excluded">排除的网络</string>
+ <string name="log_verbosity_level">日志记录级别</string>
+ <string name="float_summary">允许来自任何IP的认证数据包</string>
<string name="float_title">允许不固定服务器</string>
+ <string name="custom_options_title">自定义选项</string>
+ <string name="edit_vpn">编辑VPN设置</string>
<string name="remove_vpn_query">移除 VPN 配置文件 \'%s\' 吗?</string>
- <string name="tun_error_helpful">在某些自定义 ICS 系统版本上,/dev/tun 的权限可能会有错误,或者根本就没有该文件。CM9 系统用户请尝试通过本程序设置中的修复选项进行权限修复。</string>
+ <string name="tun_error_helpful">在某些自定义 ICS 系统版本上,/dev/tun 的权限可能会有错误,或者根本就没有tun模块。CM9 系统用户请尝试本程序设置中的修复权限选项。</string>
<string name="tun_open_error">打开 tun 接口失败</string>
<string name="error">错误:</string>
+ <string name="clear">清除</string>
<string name="last_openvpn_tun_config">正在打开 tun 设备:</string>
+ <string name="local_ip_info">本地IPv4:%1$s/%2$d IPv6:%3$s MTU:%4$d</string>
<string name="dns_server_info">DNS 服务器: %1$s, 域名: %2$s</string>
- <string name="routes_info_incl">路线: %1$s %2$s</string>
+ <string name="routes_info_incl">路由: %1$s %2$s</string>
<string name="routes_info_excl">排除的路由: %1$s %2$s</string>
<string name="routes_debug">VpnService安装路线 : %1$s %2$s</string>
<string name="ip_not_cidr">已获得接口信息 %1$s 以及 %2$s,将第二个地址作为远程地址。使用 /32 作为本地掩码。OpenVPN 给出的模式是 \"%3$s\"。</string>
<string name="route_not_cidr">无法将 %1$s 和 %2$s 作为 CIDR 形式的路由,将使用 /32 的子网掩码。</string>
<string name="route_not_netip">纠正路由 %1$s/%2$s 为 %3$s/%2$s</string>
<string name="keychain_access">不能访问 Android 密钥链证书。这可能是由于固件升级或通过还原备份的应用程序/软件设置造成的。请编辑 VPN 配置文件并在基本设置中重新选择证书以重新创建证书访问权限。</string>
+ <string name="version_info">%1$s %2$s</string>
+ <string name="send_logfile">发送日志文件</string>
+ <string name="send">发送</string>
+ <string name="ics_openvpn_log_file">ICS OpenVPN日志文件</string>
+ <string name="copied_entry">将日志复制到剪贴板</string>
+ <string name="tap_mode">Tap模式</string>
<string name="faq_tap_mode">Tap 模式在未 root 的机器上不可用。因此本程序无法提供 tap 模块支持</string>
<string name="tap_faq2">还来? 您在开玩笑嘛? tap 连接模式是不支持的,不要再发邮件问这些问题了。</string>
<string name="tap_faq3">这已经是第三次有人问这个问题了。好吧,虽然确实可以在 TAP 设备上写一个 TAP 模拟器,给发送出去的数据包添加第二层网络头,并去掉收到的数据包中的第二层网络头,但是这个 TAP 模拟器可能还需要实现 ARP 甚至 DHCP 客户端功能。我目前不知道有谁在做这方面的工作。如果你想开展这方面的编码工作的话,请联系我。</string>
+ <string name="faq">常见问题</string>
+ <string name="copying_log_entries">正在复制日志</string>
<string name="faq_copying">若要复制单条日志请在相应条目上轻按即可。若要复制/发送全部日志请使用发送日志功能。如果该功能在界面中没有显示,请使用设备原生的菜单按钮。</string>
- <string name="faq_howto_shortcut">你可以在桌面上放置一个启动 OpenVPN 的图标。如果你的桌面程序支持,你可以在桌面上放置 OpenVPN 的启动图标,或者是 OpenVPN 的桌面挂件</string>
- <string name="no_vpn_support_image">很遗憾,您目前的系统不支持 VPN 服务接口</string>
+ <string name="faq_shortcut">快捷方式启动</string>
+ <string name="faq_howto_shortcut">你可以在桌面上放置一个启动 OpenVPN 的图标。如果你的桌面程序支持,你可以在桌面上放置 OpenVPN 的启动图标,或者是 OpenVPN 的桌面挂小部件。</string>
+ <string name="no_vpn_support_image">很遗憾,您目前的系统不支持 VPN 服务接口 :(</string>
+ <string name="encryption">加密</string>
+ <string name="cipher_dialog_title">输入加密方式</string>
<string name="chipher_dialog_message">输入 OpenVPN 所使用的加密密码算法。留空以使用默认算法。</string>
<string name="auth_dialog_message">输入 OpenVPN 使用的认证摘要。留空则使用默认的摘要。</string>
- <string name="inline_file_tab">内联文件</string>
- <string name="inline_file_data">[[内联文件数据]]</string>
+ <string name="settings_auth">认证/加密</string>
+ <string name="file_explorer_tab">文件浏览器</string>
+ <string name="inline_file_tab">内置文件</string>
+ <string name="error_importing_file">导入文件时出错</string>
+ <string name="import_error_message">无法从文件系统导入文件</string>
+ <string name="inline_file_data">[[内置的文件数据]]</string>
<string name="opentun_no_ipaddr">无 IP 信息,拒绝打开 tun 设备</string>
+ <string name="menu_import">从ovpn文件导入配置文件</string>
+ <string name="menu_import_short">导入</string>
+ <string name="import_content_resolve_error">无法读取要导入的配置文件</string>
+ <string name="error_reading_config_file">读取配置文件时出错</string>
+ <string name="add_profile">添加配置文件</string>
+ <string name="import_could_not_open">在导入的配置文件中找不到文件%1$s</string>
+ <string name="importing_config">从源代码%1$s导入配置文件</string>
<string name="import_warning_custom_options">您的配置文件中有几个配置项无法在配置菜单中查看和修改,这些配置项将会当成自定义配置选项。下面是这些自定义的配置选项:</string>
+ <string name="import_done">配置文件读取完毕。</string>
+ <string name="nobind_summary">不要绑定到本地地址和端口</string>
<string name="no_bind">无本地绑定</string>
+ <string name="import_configuration_file">导入配置文件</string>
+ <string name="faq_security_title">安全注意事项</string>
<string name="faq_security">“OpenVPN 是非常注重安全的,所以在此提供一些安全方面的建议。所有保存在存储卡上的数据都是不安全的,任何应用都可以读取存储卡上的文件,即使这个应用没有‘写入存储卡’的权限也是如此。应用自身的数据只能被应用自己读取。在选择 CA 证书、证书文件或者密钥文件的时候请使用导入功能,这样这些数据就会保存在 OpenVPN 自身的数据文件中,保证不会被其他的应用恶意读取。当然导入证书之后记得要把证书从存储卡上删除掉。不过,虽然这些数据不能被其他应用读取,但是这些数据是明文保存的,如果你的系统是 rooted 的,那么这些数据将能够被任何拥有 root 权限的应用轻松地读取。保存在 OpenVPN 中的密码也是以明文保存的,如果设备被 rooted 了,这些密码也有可能被其他应用恶意读取。强烈建议使用 pkcs12 证书并将证书导入到 Android 自己的证书管理系统里。”</string>
+ <string name="import_vpn">导入</string>
+ <string name="broken_image_cert_title">显示证书选择错误</string>
<string name="broken_image_cert">尝试显示 Android 4.0 + 证书选择对话框时出现异常。Android 4.0 以上的系统不可能出现该问题,因为这是标准的系统功能。可能您当前 ROM 中的证书存储已经损坏。</string>
+ <string name="ipv4">IPv4</string>
+ <string name="ipv6">IPv6</string>
+ <string name="speed_waiting">正在等待状态消息...</string>
+ <string name="converted_profile">导入配置文件</string>
+ <string name="converted_profile_i">导入配置文件%d</string>
<string name="broken_images">图像已损坏</string>
<string name="broken_images_faq">&lt;p&gt;HTC官方固件可能存在异常的路由问题并会导致数据流不通过隧道传输(详见BUG追踪&lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=18\"&gt;Issue 18&lt;/a&gt;)。&lt;/p&gt;&lt;p&gt;据报导,旧版的SONY Xperia Arc S和Xperia Ray的官方固件完全不包含VPNService(详见BUG追踪&lt;a href=\"http://code.google.com/p/ics-openvpn/issues/detail?id=29\"&gt;Issue 29&lt;/a&gt;)。&lt;/p&gt;&lt;p&gt;在自制固件中,tun
模块可能会有缺失,或是未被设置正确的权限。部分CM9固件需要启用“特定设备HACKS”项下的“修复/dev/tun的权限”的选项。&lt;/p&gt;&lt;p&gt;最重要的是:若您的设备的固件存在问题,请直接向您的设备供应商反馈。越多人向供应商反映问题,问题越有可能得到解决。&lt;/p&gt;</string>
+ <string name="pkcs12_file_encryption_key">PKCS12 文件加密密钥</string>
+ <string name="private_key_password">私钥密码</string>
+ <string name="password">密码</string>
+ <string name="file_icon">文件图标</string>
+ <string name="tls_authentication">TLS认证/加密</string>
+ <string name="generated_config">生成的配置</string>
<string name="generalsettings">设置</string>
<string name="owner_fix_summary">尝试设定 /dev/tun 的属主为 system。一些 CM9 ROM 需要它以使 VPNService API 工作。本操作需要 root 权限。</string>
<string name="owner_fix">修复 /dev/tun 的权限</string>
+ <string name="generated_config_summary">显示生成的OpenVPN配置文件</string>
+ <string name="edit_profile_title">正在编辑“ %s ”</string>
+ <string name="building_configration">生成配置中...</string>
<string name="netchange_summary">启用该选项以在网络变化(例如在蜂窝数据和 WiFi 之间切换)时强制重新连接</string>
+ <string name="netchange">当网络更改时重新连接</string>
+ <string name="netstatus">网络状态:%s</string>
<string name="extracahint">Android 密钥库通常会自带 CA 证书。如果您获取的证书发生验证错误,请单独指定一个证书。</string>
+ <string name="select_file">选择</string>
<string name="keychain_nocacert">在 Android 密钥库中未找到任何 CA 证书。可能验证失败。</string>
<string name="show_log_summary">连接时显示日志窗口。日志窗口可始终从通知栏访问。</string>
+ <string name="show_log_window">显示日志窗口</string>
<string name="mobile_info">%10$s %9$s running on %3$s %1$s (%2$s), Android %6$s (%7$s) API %4$d, ABI %5$s, (%8$s)</string>
<string name="error_rsa_sign">与 Android 密钥库 %1$s 签名时出错: %2$s</string>
<string name="faq_system_dialogs">VPN 连接警告会告诉你有程序正要拦截所有的网络流量,这是为了确保 VPN 服务的 API 不被恶意应用滥用。\nVPN 连接通知(通知栏上的钥匙图标)是 Android 系统内建的,如果当前有 VPN 连接,Android 系统就会自动显示这个通知图标。一些系统上还会在 VPN 连接建立的时候发出提示音。Android 这么做的原因是为了保护你不受恶意应用的欺骗。</string>
<string name="faq_system_dialogs_title">连接警告和通知声音</string>
<string name="translationby">中文翻译:Christopher Meng
&lt;trans@cicku.me&gt;</string>
+ <string name="ipdns">IP和DNS</string>
+ <string name="basic">基本设置</string>
+ <string name="routing">路由</string>
+ <string name="obscure">模糊OpenVPN设置。通常不需要。</string>
+ <string name="advanced">高级</string>
<string name="export_config_title">ICS Openvpn 配置</string>
<string name="warn_no_dns">没有使用 DNS 服务器,无法解析域名,请考虑设置一个 DNS 服务器。请注意,即使你没有设置 DNS 服务器,你为移动网络以及 Wi-Fi 设置的代理服务器配置也是有效的。</string>
<string name="dns_add_error">无法添加 DNS 服务器 \"%1$s\",%2$s 拒绝了您的操作。</string>
<string name="ip_add_error">无法配置 IP 地址 %1$s,被系统拒绝:%2$s</string>
<string name="faq_howto">&lt;p&gt;获取你的 VPN 配置文件,可以是在电脑上正在使用的 OpenVPN 客户端配置文件,也可以向你的 VPN 服务商索取配置文件。&lt;/p&gt;&lt;p&gt;如果配置文件只有一个,可以把配置文件发到你自己的邮箱然后从手机上下载。如果配置文件有很多个,可以将它们复制到存储卡内。&lt;/p&gt;&lt;p&gt;从邮件中下载附件,或者在 VPN 列表中点击文件夹图标来导入配置文件。&lt;/p&gt;&lt;p&gt;如果提示找不到文件,那就将缺失的文件复制到存储卡内。&lt;/p&gt;&lt;p&gt;点击保存,将配置文件保存到你的 VPN 列表中。&lt;/p&gt;&lt;p&gt;在 VPN 列表中点击 VPN 的连接的名字,就可以连接到 VPN 了。&lt;/p&gt;&lt;p&gt;如果发生错误,可以看日志窗口中的日志,然后设法解决问题。&lt;/p&gt; </string>
+ <string name="faq_howto_title">快速开始</string>
+ <string name="setting_loadtun_summary">尝试在连接之前加载 tun.ko 内核模块。需要已root的设备。</string>
+ <string name="setting_loadtun">加载tun模块</string>
+ <string name="importpkcs12fromconfig">将PKCS12从配置导入到Android Keystore</string>
+ <string name="getproxy_error">获取代理设置时出错:%s</string>
<string name="using_proxy">使用代理 %1$s %2$d</string>
<string name="use_system_proxy">使用系统代理</string>
<string name="use_system_proxy_summary">使用系统设置连接 HTTP/HTTPS 代理服务器。</string>
<string name="onbootrestartsummary">如果在系统启动时OpenVPN处于活动状态,那么它会连接指定的VPN。在Android 5.0上使用这个选项前,请阅读连接警告的常见问题。</string>
- <string name="onbootrestart">启动时连接</string>
- <string name="restart_vpn_after_change">配置的变更将在重启 VPN 后生效,是否立即重启?</string>
+ <string name="onbootrestart">在系统启动时自动连接</string>
+ <string name="ignore">忽略</string>
+ <string name="restart">重新启动</string>
+ <string name="restart_vpn_after_change">配置文件的变更将在重新连接 VPN 后生效,是否立即(重新)连接?</string>
+ <string name="configuration_changed">配置已更改</string>
<string name="log_no_last_vpn">无法判断最后一次连接使用的是哪个配置文件,所以无法编辑配置文件</string>
<string name="faq_duplicate_notification_title">重复的通知</string>
<string name="faq_duplicate_notification">当 Android 系统的内存(RAM)即将耗尽的时候,不再需要的应用和服务将被关闭以腾出内存空间,这项机制也会影响到 VPN 进程。为了保证 OpenVPN 及其连接不被关闭,OpenVPN 服务会以较高的优先级运行,而为了以较高的优先级运行,OpenVPN 必须在状态栏显示一个图标。正如前面的问题中说过的,系统的“钥匙”图标是系统内建的,仅仅显示这个“钥匙”图标并不能让 OpenVPN 以更高的优先级运行。</string>
- <string name="no_vpn_profiles_defined">没有定义 VPN 配置文件</string>
+ <string name="no_vpn_profiles_defined">VPN 配置文件未定义</string>
<string name="add_new_vpn_hint">点击 &lt;img src=\"ic_menu_add\"/&gt; 图标添加新的 VPN 配置</string>
<string name="vpn_import_hint">使用 &lt;img src=\"ic_menu_archive\"/&gt; 图标导入存储卡中已有的配置文件(.ovpn 或 .conf)。</string>
- <string name="faq_hint">请确保阅读常见问题解答。这是一个快速向导。</string>
+ <string name="faq_hint">确保已经阅读FAQ部分。这里有一个快速向导。</string>
<string name="faq_routing_title">路由/接口配置</string>
<string name="faq_routing">的路由和接口配置不通过传统的ifconfig /路由的命令而将用VPNService API来完成。这导致了比在其它操作系统不同的路由配置。 \ n此VPN隧道的配置包括IP地址,并应被指定到该接口的网络。特别是,没有同行伙伴地址或网关地址是必要的或需要。特殊的路由到达VPN服务器不需要任何(例如,当使用重定向网关添加)。导入配置时,应用程序会因此忽略这些设置。该应用程序可确保与连接到服务器没有通过VPN隧道路由的VPNService API。\ n此VPNService API不允许指定的网络,不应该通过VPN路由。作为一种变通方法的应用程序会检测网络,不应该被路由到隧道(如路由XXXX YYYY net_gateway),并计算一组路由排除这种路线效仿其他平台的行为。日志窗口显示VPNService的在建立连接的配置\ nBehind的场景:安卓4.4+确实使用策略路由。使用route / ifconfig命令不会显示已安装的路径。而使用IP规则,iptables的-t轧-L</string>
+ <string name="persisttun_summary">当OpenVPN正在重新连接时,不要回退到没有VPN连接的状态。</string>
+ <string name="persistent_tun_title">保持tun连接</string>
<string name="openvpn_log">OpenVPN 日志</string>
<string name="import_config">导入 OpenVPN 配置文件</string>
<string name="battery_consumption_title">电池消耗</string>
@@ -160,13 +254,14 @@
<string name="state_tcp_connect">连接中(TCP)</string>
<string name="state_auth_failed">验证失败</string>
<string name="state_nonetwork">等待可用网络</string>
+ <string name="statusline_bytecount">↓%2$s %1$s-↑%4$s %3$s</string>
<string name="notifcation_title_notconnect">未连接</string>
<string name="start_vpn_title">正在连接 VPN %s</string>
<string name="start_vpn_ticker">正在连接 VPN %s</string>
<string name="jelly_keystore_alphanumeric_bug">某些版本的 Android 4.1 存在问题,如果密钥库证书的名称包含非字母和数字字符(如空格、 下划线或短划线)。请尝试重新导入不包含特殊字符的证书</string>
<string name="encryption_cipher">加密算法(cipher)</string>
<string name="packet_auth">数据包验证</string>
- <string name="auth_dialog_title">数据包验证方式</string>
+ <string name="auth_dialog_title">输入数据包验证方式</string>
<string name="built_by">由 %s 构建</string>
<string name="debug_build">调试版本</string>
<string name="official_build">正式版本</string>
@@ -178,18 +273,18 @@
<string name="remotetlsnote">您导入的配置包含不再使用的 tls-remote 选项,该选项使用了不同的 DN 格式。</string>
<string name="rdn">RDN (通用名称)</string>
<string name="rdn_prefix">RDN 前缀</string>
- <string name="tls_remote_deprecated">tls-remote(不再使用)</string>
+ <string name="tls_remote_deprecated">tls-remote(不再被使用)</string>
<string name="help_translate">你可以通过访问 http://crowdin.net/project/ics-openvpn/invite 来帮助翻译</string>
<string name="prompt">%1$s 正在试图控制 %2$s</string>
<string name="remote_warning">如果继续,你将允许该应用完全控制 OpenVPN for Android,并拦截所有网络流量。<b>除非你信任该应用,否则请不要继续。</b>如果该应用是恶意应用,你需要自行承担所有的后果。</string>
<string name="remote_trust">我信任此应用。</string>
<string name="no_external_app_allowed">没有允许使用外部 API 的应用</string>
- <string name="allowed_apps">已授权的应用:%s</string>
+ <string name="allowed_apps">经 VPN 代理的应用程序: %s</string>
<string name="clearappsdialog">清除已授权的应用列表?\n当前已授权的应用:\n\n%s</string>
<string name="screenoff_summary">当屏幕关闭且 60 秒内传输数据量小于 64kB 时暂停 VPN。当启用“持久性 Tun”选项时,暂停 VPN 将使设备处于无网络连接的状态。未启用“持久性 Tun”时,设备将没有 VPN 连接保护。</string>
<string name="screenoff_title">屏幕关闭后暂停 VPN 连接</string>
<string name="screenoff_pause">屏幕关闭时暂停连接:若在%2$s秒内少于%1$s</string>
- <string name="screen_nopersistenttun">警告:该 VPN 没有启用“持久化 tun 设备”,当屏幕关闭时,网络流量将不走 VPN 隧道,而是走 Wi-Fi 或者移动网络。</string>
+ <string name="screen_nopersistenttun">警告:该 VPN 没有启用“保持tun连接”这一选项,当屏幕关闭时,网络流量将不通过 VPN 隧道,而是通过 Wi-Fi 或者移动网络。</string>
<string name="save_password">保存密码</string>
<string name="pauseVPN">暂停 VPN</string>
<string name="resumevpn">继续 VPN</string>
@@ -202,9 +297,9 @@
<string name="allow_vpn_changes">允许更改 VPN 配置</string>
<string name="hwkeychain">硬件密钥库:</string>
<string name="permission_icon_app">应用程序试图使用 OpenVPN 为 Android 的图标</string>
- <string name="faq_vpndialog43">"入手 Android 4.3 VPN 确认被防范\"覆盖应用程序\"。这将导致在不发生反应,触摸输入的对话框中。如果您有一个应用程序,使用覆盖它可能会导致这种行为。如果你发现违规应用程序联系的应用程序的作者。这个问题影响到所有 VPN 应用程序的 Android 4.3 及更高版本。请参阅 &lt; href =\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt; 问题 185 &lt; &gt; 有关其他详细信息"</string>
+ <string name="faq_vpndialog43">"自 Android 4.3 开始,VPN 确认被防范\"覆盖应用程序\"。这将导致在不发生反应,触摸输入的对话框中。如果您有一个应用程序,使用覆盖它可能会导致这种行为。如果你发现违规应用程序联系的应用程序的作者。这个问题将影响到运行在 Android 4.3 及更高版本上的所有 VPN 应用程序。有关其他详细信息请参阅 &lt; href =\"http://code.google.com/p/ics-openvpn/issues/detail?id=185\"&gt; issue 185 &lt; &gt; "</string>
<string name="faq_vpndialog43_title">Vpn 确认对话框的 Android 4.3 及更高版本</string>
- <string name="donatePlayStore">或者你可以给我捐赠与播放存储:</string>
+ <string name="donatePlayStore">或者你可以通过GooglePlay来捐赠我:</string>
<string name="thanks_for_donation">感谢捐赠 %s!</string>
<string name="logCleared">日志已清除。</string>
<string name="show_password">显示密码</string>
@@ -222,27 +317,28 @@
<string name="faq_system_dialog_xposed">如果您的 Android 设备已经 root,您可以自担风险安装&lt;a href=\"http://xposed.info/\"&gt;Xposed 框架&lt;/a&gt; 和 &lt;a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\"&gt;VPN 对话框确认模块&lt;/a&gt;</string>
<string name="full_licenses">完整授权</string>
<string name="blocklocal_summary">不会将网络直接连接到本地接口路由通过 VPN。取消选中此选项会将缩进到 VPN 的本地网络的所有流量重都定向。</string>
- <string name="blocklocal_title">对本地地址绕过 VPN</string>
+ <string name="blocklocal_title">绕过本地地址</string>
<string name="userpw_file">用户名/密码文件</string>
- <string name="imported_from_file">[从进口: %s]</string>
- <string name="files_missing_hint">找不到一些文件。请选择要导入的配置文件的文件:</string>
+ <string name="imported_from_file">[导入: %s]</string>
+ <string name="files_missing_hint">有些文件未找到。请选择要导入的配置文件的文件:</string>
<string name="openvpn_is_no_free_vpn">若要使用此应用程序需要支持 OpenVPN (通常由您的雇主提供) 的 VPN 提供商/VPN 网关。查阅 http://community.openvpn.net/ OpenVPN 和如何设置您自己的 OpenVPN 服务器的详细信息。</string>
<string name="import_log">导入日志:</string>
<string name="ip_looks_like_subnet">VPN拓扑“%3$s”指定的,但使用ifconfig %1$s %2$s看起来更像是一个网络掩码的IP地址。假设“子网”的拓扑结构。</string>
<string name="mssfix_invalid_value">mssfix 值必须是一个介于 0 和 9000 之间的整数</string>
+ <string name="mtu_invalid_value">MTU覆盖的值必须是64到9000之间的整数</string>
<string name="mssfix_value_dialog">公布于运行在他们应该限制其发送分组大小,使得后的OpenVPN已包封它们,将得到的UDP包大小的OpenVPN发送到其对等体将不超过此字节数隧道TCP会话。 (默认为1450)</string>
<string name="mssfix_checkbox">重写TCP有效载荷的MSS值</string>
- <string name="mssfix_dialogtitle">设置的 TCP MSS 负载</string>
+ <string name="mssfix_dialogtitle">设置 TCP MSS 负载</string>
<string name="client_behaviour">客户端行为</string>
- <string name="clear_external_apps">明确允许外部应用程序</string>
+ <string name="clear_external_apps">清除允许的外部应用程序</string>
<string name="loading">加载中...</string>
- <string name="allowed_vpn_apps_info">允许 VPN 应用程序: %1$s</string>
- <string name="disallowed_vpn_apps_info">不允许VPN应用:%1$s</string>
- <string name="app_no_longer_exists">从应用程序允许禁止列表中移除它,不再安装包 %s</string>
- <string name="vpn_disallow_radio">VPN 用于所有的应用程序,但排除选定</string>
+ <string name="allowed_vpn_apps_info">经 VPN 代理的应用程序: %1$s</string>
+ <string name="disallowed_vpn_apps_info">不允许通过VPN的应用:%1$s</string>
+ <string name="app_no_longer_exists">程序 %s 已经从设备上卸载,正在将其从应用过滤规则中移除。</string>
+ <string name="vpn_disallow_radio">将VPN 用于所有的应用程序,但排除选定</string>
<string name="vpn_allow_radio">VPN 是只用于所选的应用程序</string>
<string name="query_delete_remote">删除远程服务器的条目吗?</string>
- <string name="keep">Thorny</string>
+ <string name="keep">保存</string>
<string name="delete">删除</string>
<string name="add_remote">添加新的远程服务器</string>
<string name="remote_random">连接时随机选择配置文件</string>
@@ -265,7 +361,7 @@
<string name="ab_kitkat_mss">早期的KitKat版本在TCP连接上设置了错误的MSS值 (#61948)。OpenVPN将自动启动mssfix选项来解决这个Bug。</string>
<string name="ab_proxy">在DNS服务没有设置的情况下,安卓会继续使用手机wifi的代理设置。 安卓OpenVPN会在日志文件中留下警告信息。在VPN设置DNS服务时,安卓不是代理;安卓系统里没有为vpn连接设置代理的程序接口。</string>
<string name="ab_lollipop_reinstall">在被卸载或重新安装时,VPN程序会停止工作;详细信息请参看 #80074</string>
- <string name="ab_not_route_to_vpn">The configured client IP and the IPs in its network mask are not routed to the VPN. OpenVPN works around this bug by explicitly adding a route that corrosponds to the client IP and its netmask</string>
+ <string name="ab_not_route_to_vpn">配置的客户端IP及其网络掩码中的IP不会代理到VPN。 OpenVPN通过显式地添加一个可应对客户端IP及其网络掩码的路由来解决这个错误</string>
<string name="ab_persist_tun">Opening a tun device while another tun device is active, which is used for persist-tun support, crashes the VPNServices on the device. A reboot is required to make VPN work again. OpenVPN for Android tries to avoid reopening the tun device and if really needed first closes the current TUN before opening the new TUN device to avoid to crash. This may lead to a short window where packets are sent over the non-VPN connection. Even with this workaround the VPNServices sometimes crashes and requires a reboot of the device.</string>
<string name="ab_secondary_users">对于次级用户而言,VPN是不会起作用的。</string>
<string name="ab_kitkat_reconnect">有多个用户报告说,在使用VPN应用时,移动连接/移动数据连接经常会掉线。该行为似乎只影响一些移动运营商/设备组合,目前为止尚未确定原因及bug解决方案。</string>
@@ -315,6 +411,9 @@
<string name="samsung_broken">三星手机几乎是最热销的安卓机,同时三星的固件也是bug最多的 Android 固件。Bug 并不局限于运行在这些设备上的VPN,但其中许多可以是可以想办法绕开的。下面列出几个已知Bug:\n\nDNS 不工作,除非其在VPN 地址池内.\n\n很多三星5.X设备上 允许/禁止 应用程序的特性并不能工作。 \n在三星 6.x 机器上只有VPN应用被加入省电模式白名单之后VPN才能工作。</string>
<string name="samsung_broken_title">三星手机</string>
<string name="novpn_selected">没有选定的 VPN。</string>
+ <string name="defaultvpn">默认VPN</string>
+ <string name="defaultvpnsummary">VPN 在 VPN 需要默认使用在的地方。这些对于目前上启动,总是在和快速设置平铺。</string>
+ <string name="vpnselected">目前选择的VPN:\'%s\'</string>
<string name="reconnect">重新连接</string>
<string name="qs_title">VPN切换</string>
<string name="qs_connect">连接到%s</string>
@@ -322,4 +421,29 @@
<string name="connectretrymaxmessage">输入连接重试时间间隔的最大值。OpenVPN在每次不成功的连接尝试后都会慢慢提高等待时间,直到提高到这个值后停止。默认值300秒。</string>
<string name="connectretrymaxtitle">连接重试最长间隔</string>
<string name="state_waitconnectretry">连接重试期间已等待 %s 秒</string>
+ <string name="nought_alwayson_warning"><![CDATA[如果您没有看到VPN确认对话框,则表示您已为其他应用启动VPN\"始终启用VPN\" 。在这种情况下,只有那个应用程序被允许连接到VPN。
+检查设置 - >网络更多.. - > VPNS]]></string>
+ <string name="management_socket_closed">连接到OpenVPN已关闭(%s)</string>
+ <string name="change_sorting">更改排序</string>
+ <string name="sort">排序</string>
+ <string name="sorted_lru">根据最近使用的配置排序</string>
+ <string name="sorted_az">按名字排列配置文件</string>
+ <string name="deprecated_tls_remote">配置使用选项 tls 远程在 2.3 中已过时,最后在 2.4 中删除</string>
+ <string name="auth_failed_behaviour">AUTH_FAILED</string>
+ <string name="graph">图像</string>
+ <string name="use_logarithmic_scale">使用对数刻度</string>
+ <string name="notenoughdata">没有足够的数据</string>
+ <string name="avghour">平均每小时</string>
+ <string name="avgmin">平均每分钟</string>
+ <string name="last5minutes">最后5分钟</string>
+ <string name="data_in">接收</string>
+ <string name="data_out">发送</string>
+ <string name="bits_per_second">%.0f bit/s</string>
+ <string name="kbits_per_second">%.1f kbit/s</string>
+ <string name="mbits_per_second">%.1f Mbit/s</string>
+ <string name="gbits_per_second">%.1f Gbit/s</string>
+ <string name="volume_byte">%.0f B</string>
+ <string name="volume_kbyte">%.1f kB</string>
+ <string name="volume_mbyte">%.1f MB</string>
+ <string name="volume_gbyte">%.1f GB</string>
</resources>
diff --git a/main/src/main/res/values-zh-rTW/arrays.xml b/main/src/main/res/values-zh-rTW/arrays.xml
index ceea7e05..46917899 100755
--- a/main/src/main/res/values-zh-rTW/arrays.xml
+++ b/main/src/main/res/values-zh-rTW/arrays.xml
@@ -22,4 +22,9 @@
<item>不指定</item>
<item>加密 (tls-crypt)</item>
</string-array>
+ <string-array name="auth_retry_type">
+ <item>斷開連接,忘記了密碼</item>
+ <item>斷開連接,保存密碼</item>
+ <item>忽略,然後重試</item>
+ </string-array>
</resources>
diff --git a/main/src/main/res/values-zh-rTW/strings.xml b/main/src/main/res/values-zh-rTW/strings.xml
index 01e170f2..570a6ab3 100755
--- a/main/src/main/res/values-zh-rTW/strings.xml
+++ b/main/src/main/res/values-zh-rTW/strings.xml
@@ -119,6 +119,7 @@
<string name="tap_mode">Tap 模式</string>
<string name="faq_tap_mode">點擊模式是不可能的非根VPN API。因此,該應用程序不能提供自來水的支持</string>
<string name="tap_faq2">再一次?你在開玩笑吧?這真的不支援 tap 模式,就算再寄電子郵件詢問能不能支援也是沒用的。</string>
+ <string name="tap_faq3">第三次嗎?實際上,一個可以寫基於屯,並添加 2 層資訊發送帶 2 層資訊上水龍頭模擬器接收。但這個水龍頭模擬器還必須實施 ARP 和可能 DHCP 用戶端。我不知道的任何人做任何工作在這個方向。與我聯繫,如果你想要開始對此編碼。</string>
<string name="faq">FAQ</string>
<string name="copying_log_entries">複製記錄項目</string>
<string name="faq_copying">若要複製單筆記錄,在此記錄項目上點選。若要複製/送出整筆記錄,使用送出記錄選項。如果這個按鈕在畫面中無法顯示,請使用實體的選單按鈕。</string>
@@ -223,6 +224,7 @@
<string name="openvpn_log">OpenVPN 運作記錄</string>
<string name="import_config">匯入 OpenVPN 配置</string>
<string name="battery_consumption_title">電池消耗</string>
+ <string name="baterry_consumption">在我個人的測試中的 OpenVPN 高電池消耗的主要原因是保活資料包。大多數的 OpenVPN 伺服器有一個配置指令像 \' keepalive 10 60\',這會導致用戶端和伺服器交換保活資料包每十秒。&lt; P &gt; 雖然這些資料包是小和不使用太多的交通,它們保持移動無線電網路忙,增加了能源消耗。(請參見 &lt; href =\"HTTP://developer.android.com/training/efficient-downloads/efficient-network-access.html#RadioStateMachine\"&gt; 無線電狀態機 |Android 開發者 &lt; /a &gt;) &lt; p &gt; 此 keepalive 設置不能更改用戶端上。只有 OpenVPN 的系統管理員可以更改的設置。&lt; P &gt; 不幸的 udp 使用保活大於 60 秒可以導致一些 NAT 閘道來斷開連接由於不活動超時。用不了多久使用 TCP 保持活著超時工作,但隧道 TCP 通過 TCP 表現極為不佳與高資料包丟失連接上。(請參閱 &lt; href =\"HTTP://sites.inka.de/bigred/devel/tcp-tcp.html\"&gt; 為什麼 TCP 在 TCP 是一個壞點子 &lt; /a &gt;)</string>
<string name="faq_tethering">網路共用的功能 (透過 Wi-Fi、USB 或藍牙) 和 VPNService API (此程式使用) 不一起作用。更多細節請看 &lt;a href=\"https://github.com/schwabe/ics-openvpn/issues/34\"&gt;issue #34&lt;/a&gt;</string>
<string name="vpn_tethering_title">VPN 與網路共用</string>
<string name="connection_retries">連線重試次數</string>
@@ -250,6 +252,7 @@
<string name="state_tcp_connect">連線中 (TCP)</string>
<string name="state_auth_failed">身份驗證失敗</string>
<string name="state_nonetwork">等待可使用的網路</string>
+ <string name="statusline_bytecount">↓%2$s/秒 %1$s - ↑%4$s/秒 %3$s</string>
<string name="notifcation_title_notconnect">未連線</string>
<string name="start_vpn_title">正在連接至 VPN %s</string>
<string name="start_vpn_ticker">正在連接至 VPN %s</string>
@@ -322,6 +325,7 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="import_log">匯入日誌:</string>
<string name="ip_looks_like_subnet">VPN拓撲“%3$s”規定,但使用ifconfig %1$s %2$s看起來更像是一個網絡掩碼的IP地址。假設“子網”的拓撲結構。</string>
<string name="mssfix_invalid_value">MSS的覆蓋值必須在0到9000的整數</string>
+ <string name="mtu_invalid_value">MSS的覆蓋值必須在0到9000的整數</string>
<string name="mssfix_value_dialog">宣布運行在他們應當限制其發送的包大小,使得後的OpenVPN已包封它們,將所得的UDP包大小的OpenVPN給對端發送將不超過此字節數的隧道的TCP會話。 (默認為1450)</string>
<string name="mssfix_checkbox">覆寫TCP 裝載資料 (payload) 的最大分段大小 (MSS) 值</string>
<string name="mssfix_dialogtitle">設定 TCP 裝載資料 (payload) 的最大分段大小 (MSS)</string>
@@ -348,6 +352,7 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="duplicate_vpn">重複的 VPN 設定檔</string>
<string name="duplicate_profile_title">複製設定檔︰ %s</string>
<string name="show_log">顯示記錄</string>
+ <string name="faq_android_clients">安卓系統的多個 OpenVPN 用戶端存在。最常見是 OpenVPN 為 Android (此用戶端),OpenVPN 連接和 OpenVPN 設置。 &lt; p &gt; 用戶端可以分為兩組: OpenVPN 為 Android 和 OpenVPN 連接使用官方的 VPNService API (安卓 4.0 +),需要無根、 無使用根 &lt; p &gt; 的 OpenVPN 設置 OpenVPN 的 Android 是開源用戶端和開發的 Arne 米爾克。 它針對更高級的使用者,並提供許多設置和能力,從檔導入設定檔,配置更改內部應用程式的設定檔。用戶端基於 OpenVPN 的社區版本。它基於 OpenVPN 2.x 原始程式碼。此用戶端可以被看作是半正式的社區用戶端。&lt; p &gt; OpenVPN 連接是由 OpenVPN 技術公司開發的非開源用戶端用戶端縮進是一般使用的用戶端和更多針對普通使用者,並允許的 OpenVPN 設定檔導入。此用戶端基於 OpenVPN c + + 重新實現的 OpenVPN 協定 (這要求允許 OpenVPN 技術,公司將發佈 iOS OpenVPN 應用程式)。此用戶端是最古老的用戶端和也的使用者介面對於開放源碼 OpenVPN OpenVPN 技術 &lt; p &gt; OpenVPN 設置的官方用戶端。與安卓系統的 OpenVPN 它需要根和不使用 VPNService API。它不依賴于安卓 4.0 +</string>
<string name="faq_androids_clients_title">OpenVPN Android 用戶端之間的差異</string>
<string name="ignore_multicast_route">忽略多點傳送路徑:%s</string>
<string name="ab_only_cidr">Android 只支援無類別域間 (CIDR) 路由到此 VPN。因為非無類別域間 (CIDR) 路由幾乎不會被使用,OpenVPN for Android 將使用 /32 非無類別域間 (CIDR) 路由處理這個警告。</string>
@@ -355,7 +360,9 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="ab_kitkat_mss">早期的 KitKat 版本在 TCP 連線中,設定錯誤的最大分段大小 (MSS) 值 (#61948)。試著開啟 mssfix 選項來繞開這個 bug。</string>
<string name="ab_proxy">Android 沒有 DNS 伺服器設定時,會繼續使用你指定的行動/Wi-Fi 連線代理設定。OpenVPN for Android 會在日誌中記錄警告訊息。<p>當 VPN 有設定 DNS 伺服器時,因為,Android API 中無法為 VPN 連線設定代理,所以,將不會使用代理設定。</p></string>
<string name="ab_lollipop_reinstall">當解除安裝或重新安裝,VPN 應用程式也會停止運作。詳細資訊起參閱 #80074</string>
+ <string name="ab_not_route_to_vpn">台灣繁體中文</string>
<string name="ab_secondary_users">VPN 不會對次級使用者作用。</string>
+ <string name="ab_vpn_reachability_44">Vpn是幹嗎?</string>
<string name="ab_only_cidr_title">非無類別域間 (CIDR) 路由</string>
<string name="ab_proxy_title">VPN 的代理行為</string>
<string name="ab_lollipop_reinstall_title">重新安裝 VPN 應用程式</string>
@@ -363,9 +370,11 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="copy_of_profile">%s 的副本</string>
<string name="ab_not_route_to_vpn_title">路由到設定的 IP 位址</string>
<string name="ab_kitkat_mss_title">VPN 連線錯誤的最大分段大小 (MSS) 值</string>
+ <string name="ab_secondary_users_title">二级平板电脑用户</string>
<string name="custom_connection_options_warng">指定自訂連線的特定選項,請小心使用</string>
<string name="custom_connection_options">自定義選項</string>
<string name="remove_connection_entry">刪除連線項目</string>
+ <string name="ab_kitkat_reconnect_title">了解!</string>
<string name="ab_vpn_reachability_44_title">遠端網路無法連線</string>
<string name="ab_persist_tun_title">保持 tun 模式</string>
<string name="version_and_later">%s 及更高版本</string>
@@ -393,6 +402,8 @@ http://crowdin.net/project/ics-openvpn/invite
<string name="crl_title">憑證撤銷清單 (可選)</string>
<string name="samsung_broken_title">三星手機</string>
<string name="novpn_selected">沒有 VPN 被選擇</string>
+ <string name="defaultvpn">預設 VPN</string>
+ <string name="defaultvpnsummary">VPN 在 VPN 需要預設使用在的地方。這些對於目前上啟動,總是在和快速設置平鋪。</string>
<string name="reconnect">重新連線</string>
<string name="qs_title">切換 VPN</string>
<string name="qs_connect">連線到 %s</string>
diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml
index c63ec601..2c26580a 100755
--- a/main/src/main/res/values/strings.xml
+++ b/main/src/main/res/values/strings.xml
@@ -436,16 +436,34 @@
<string name="kbits_per_second">%.1f kbit/s</string>
<string name="mbits_per_second">%.1f Mbit/s</string>
<string name="gbits_per_second">%.1f Gbit/s</string>
- <string name="weakmd">&lt;p>Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like MD5.&lt;/p>&lt;p>&lt;b>MD5 signatures are insecure and should not be used anymore.&lt;/b> MD5 collisions can be created in &lt;a href="https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html">few hours at a minimal cost.&lt;/a>. You should update the VPN certificates as soon as possible.&lt;/p>&lt;p>Unfortunately, older easy-rsa distributions included the config option "default_md md5". If you are using an old easy-rsa version, update to the &lt;a href="https://github.com/OpenVPN/easy-rsa/releases">latest version&lt;/a>) or change md5 to sha256 and regenerate your certificates.&lt;/p>&lt;p>If you really want to use old and broken certificates use the custom configuration option tls-cipher "DEFAULT:@SECLEVEL=0" under advanced configuration or as additional line in your imported configuration&lt;/p></string>
-
-<string name="volume_byte">%.0f B</string>
+ <string name="weakmd">&lt;p>Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like
+ MD5.&lt;/p>&lt;p>&lt;b>MD5 signatures are completely insecure and should not be used anymore.&lt;/b> MD5
+ collisions can be created in &lt;a
+ href="https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html">few hours at a minimal cost.&lt;/a>.
+ You should update the VPN certificates as soon as possible.&lt;/p>&lt;p>Unfortunately, older easy-rsa
+ distributions included the config option "default_md md5". If you are using an old easy-rsa version, update to
+ the &lt;a href="https://github.com/OpenVPN/easy-rsa/releases">latest version&lt;/a>) or change md5 to sha256 and
+ regenerate your certificates.&lt;/p>&lt;p>If you really want to use old and broken certificates use the custom
+ configuration option tls-cipher "DEFAULT:@SECLEVEL=0" under advanced configuration or as additional line in your
+ imported configuration&lt;/p>
+ </string>
+ <string name="volume_byte">%.0f B</string>
<string name="volume_kbyte">%.1f kB</string>
<string name="volume_mbyte">%.1f MB</string>
<string name="volume_gbyte">%.1f GB</string>
<string name="channel_name_background">Connection statistics</string>
<string name="channel_description_background">Ongoing statistics of the established OpenVPN connection</string>
<string name="channel_name_status">Connection status change</string>
- <string name="channel_description_status">Status changes of the OpenVPN connection (Connecting, authenticating,…)</string>
+ <string name="channel_description_status">Status changes of the OpenVPN connection (Connecting, authenticating,…)</string>
<string name="weakmd_title">Weak (MD5) hashes in certificate signature (SSL_CTX_use_certificate md too weak)</string>
+ <string name="title_activity_open_sslspeed">OpenSSL Speed Test</string>
+ <string name="openssl_cipher_name">OpenSSL cipher names</string>
+ <string name="osslspeedtest">OpenSSL Crypto Speed test</string>
+ <string name="openssl_error">OpenSSL returned an error</string>
+ <string name="running_test">Running test…</string>
+ <string name="test_algoirhtms">Test selected algorithms</string>
+ <string name="all_app_prompt">An external app tries to control %s. The app requesting access cannot be determined. Allowing this app grants ALL apps access.</string>
+ <string name="openvpn3_nostatickeys">The OpenVPN 3 C++ implementation does not support static keys. Please change to OpenVPN 2.x under general settings.</string>
+ <string name="openvpn3_pkcs12">Using PKCS12 files directly with OpenVPN 3 C++ implementation is not supported. Please import the pkcs12 files into the Android keystore or change to OpenVPN 2.x under general settings.</string>
</resources>
diff --git a/main/src/main/res/values/untranslatable.xml b/main/src/main/res/values/untranslatable.xml
index 8e6f2c75..f8f0cc96 100644
--- a/main/src/main/res/values/untranslatable.xml
+++ b/main/src/main/res/values/untranslatable.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?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
-->
@@ -43,11 +42,12 @@
<item>-1</item>
</string-array>
<string name="crash_toast_text">OpenVPN for Android crashed, crash reported</string>
-
+
<!-- These strings should not be visible to the user -->
<string name="state_user_vpn_permission" translatable="false">Waiting for user permission to use VPN API</string>
<string name="state_user_vpn_password" translatable="false">Waiting for user VPN password</string>
<string name="state_user_vpn_password_cancelled" translatable="false">VPN password input dialog cancelled</string>
<string name="state_user_vpn_permission_cancelled" translatable="false">VPN API permission dialog cancelled</string>
+ <string name="default_cipherlist_test" translatable="false">aes-256-gcm bf-cbc sha1</string>
</resources>
diff --git a/main/src/main/res/xml/general_settings.xml b/main/src/main/res/xml/general_settings.xml
index f53e6d5b..928fa583 100644
--- a/main/src/main/res/xml/general_settings.xml
+++ b/main/src/main/res/xml/general_settings.xml
@@ -17,8 +17,9 @@
<CheckBoxPreference
android:defaultValue="false"
android:key="ovpn3"
- android:summaryOn="Use the C++ OpenVPN library"
- android:summaryOff="Use OpenVPN 2.3"
+ android:disableDependentsState="true"
+ android:summaryOn="Use the C++ OpenVPN library (experimental)"
+ android:summaryOff="Use OpenVPN 2.x"
android:title="OpenVPN 3 Core"/>
@@ -44,6 +45,7 @@
<CheckBoxPreference
android:defaultValue="true"
android:key="usesystemproxy"
+ android:dependency="ovpn3"
android:summary="@string/use_system_proxy_summary"
android:title="@string/use_system_proxy"/>
<CheckBoxPreference
@@ -59,6 +61,11 @@
android:summary="@string/screenoff_summary"
android:title="@string/screenoff_title"/>
+ <Preference
+ android:dependency=""
+ android:key="osslspeed"
+ android:persistent="false"
+ android:title="@string/osslspeedtest" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/device_specific" android:key="device_hacks">
diff --git a/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java b/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
index 850983a9..54029628 100644
--- a/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
+++ b/main/src/ovpn3/java/de/blinkt/openvpn/core/OpenVPNThreadv3.java
@@ -63,16 +63,18 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
if(!setConfig(configstr))
return;
setUserPW();
+ VpnStatus.logInfo(platform());
VpnStatus.logInfo(copyright());
- StatusPoller statuspoller = new StatusPoller(5000);
+
+ StatusPoller statuspoller = new StatusPoller(OpenVPNManagement.mBytecountInterval*1000);
new Thread(statuspoller,"Status Poller").start();
ClientAPI_Status status = connect();
if(status.getError()) {
VpnStatus.logError(String.format("connect() error: %s: %s",status.getStatus(),status.getMessage()));
} else {
- VpnStatus.logInfo("OpenVPN3 thread finished");
+ VpnStatus.logDebug("OpenVPN3 thread finished");
}
statuspoller.stop();
}
@@ -103,7 +105,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
if(ipv6)
mService.addRoutev6(address + "/" + prefix_length,"tun");
else
- mService.addRoute(new CIDRIP(address, prefix_length));
+ mService.addRoute(new CIDRIP(address, prefix_length), true);
return true;
}
@@ -112,8 +114,8 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
if(ipv6)
mService.addRoutev6(address + "/" + prefix_length, "wifi0");
else {
- //TODO
- mService.addRoute(address, String.valueOf(prefix_length), "1.2.3.4" , "wifi0");
+ CIDRIP route = new CIDRIP(address, prefix_length);
+ mService.addRoute(route, false);
}
return true;
}
@@ -133,7 +135,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public boolean tun_builder_set_session_name(String name) {
- VpnStatus.logInfo("We should call this session" + name);
+ VpnStatus.logDebug("We should call this session" + name);
return true;
}
@@ -164,7 +166,12 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public boolean tun_builder_reroute_gw(boolean ipv4, boolean ipv6, long flags) {
- //ignore
+ if (ipv4)
+ mService.addRoute("0.0.0.0", "0.0.0.0", "127.0.0.1", OpenVPNService.VPNSERVICE_TUN);
+
+ if (ipv6)
+ mService.addRoutev6("::/0", OpenVPNService.VPNSERVICE_TUN);
+
return true;
}
@@ -179,11 +186,12 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
config.setContent(vpnconfig);
config.setTunPersist(mVp.mPersistTun);
config.setGuiVersion(mVp.getVersionEnvString(mService));
+ //config.setPlatformVersion(mVp.getPlatformVersionEnvString());
config.setExternalPkiAlias("extpki");
ClientAPI_EvalConfig ec = eval_config(config);
if(ec.getExternalPki()) {
- VpnStatus.logError("OpenVPN seem to think as external PKI");
+ VpnStatus.logDebug("OpenVPN3 core assumes an external PKI config");
}
if (ec.getError()) {
VpnStatus.logError("OpenVPN config file parse error: " + ec.getMessage());
@@ -196,7 +204,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void external_pki_cert_request(ClientAPI_ExternalPKICertRequest certreq) {
- VpnStatus.logError("EXT PKI CERT");
+ VpnStatus.logDebug("Got external PKI certificate request from OpenVPN core");
String[] ks = mVp.getKeyStoreCertificates((Context) mService);
if(ks==null) {
certreq.setError(true);
@@ -215,6 +223,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void external_pki_sign_request(ClientAPI_ExternalPKISignRequest signreq) {
+ VpnStatus.logDebug("Got external PKI signing request from OpenVPN core");
signreq.setSig(mVp.getSignedData(signreq.getData()));
}
@@ -244,12 +253,13 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public boolean stopVPN(boolean replaceConnection) {
+ stop();
return false;
}
@Override
public void networkChange(boolean sameNetwork) {
-
+ reconnect(1);
}
@Override
@@ -288,6 +298,7 @@ public class OpenVPNThreadv3 extends ClientAPI_OpenVPNClient implements Runnable
@Override
public void stop() {
super.stop();
+ mService.openvpnStopped();
}
@Override
diff --git a/remoteExample/build.gradle b/remoteExample/build.gradle
index 7e063c75..f3b0c749 100644
--- a/remoteExample/build.gradle
+++ b/remoteExample/build.gradle
@@ -5,18 +5,24 @@
apply plugin: 'com.android.application'
+repositories {
+ jcenter()
+ maven { url "https://jitpack.io" }
+ maven { url 'https://maven.google.com' }
+}
+
+
android {
- compileSdkVersion 26
- buildToolsVersion '26.0.0'
+ compileSdkVersion 27
+ buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 15
- targetSdkVersion 26
+ targetSdkVersion 27
versionCode 1
versionName "1.0"
}
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}