From 27fdbb930b60c4c95b3712a60a0290763cf24276 Mon Sep 17 00:00:00 2001 From: sceneq Date: Thu, 26 Oct 2017 13:05:52 +0900 Subject: Accept from the content scheme --- main/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml index d8239bc9..e1dd161a 100644 --- a/main/src/main/AndroidManifest.xml +++ b/main/src/main/AndroidManifest.xml @@ -157,6 +157,7 @@ + -- cgit v1.2.3 From d2ccedd8d4aa3eeac79fb2029056a93b68d8fb45 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Thu, 16 Nov 2017 13:50:46 +0100 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1738edf2..4ffc0d13 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ 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 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/ -- cgit v1.2.3 From f1c7ca88e48c6e314f3b1c16485fc6506077ffc5 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sat, 16 Sep 2017 17:45:17 +0200 Subject: Update translations --- main/misc/fetchtranslations.sh | 4 +- main/misc/genFAQ.py | 2 + main/src/main/AndroidManifest.xml | 1 + .../java/de/blinkt/openvpn/core/OpenVPNThread.java | 2 +- .../openvpn/fragments/FileSelectionFragment.java | 8 +- main/src/main/res/values-da/arrays.xml | 30 ++ main/src/main/res/values-da/plurals.xml | 20 ++ main/src/main/res/values-da/strings.xml | 344 +++++++++++++++++++++ main/src/main/res/values-de/arrays.xml | 2 +- main/src/main/res/values-de/plurals.xml | 2 +- main/src/main/res/values-de/strings.xml | 18 +- main/src/main/res/values-es/arrays.xml | 5 + main/src/main/res/values-es/strings.xml | 4 + main/src/main/res/values-it/arrays.xml | 7 +- main/src/main/res/values-it/plurals.xml | 7 +- main/src/main/res/values-it/strings.xml | 107 ++++++- main/src/main/res/values/strings.xml | 5 +- 17 files changed, 543 insertions(+), 25 deletions(-) create mode 100755 main/src/main/res/values-da/arrays.xml create mode 100755 main/src/main/res/values-da/plurals.xml create mode 100755 main/src/main/res/values-da/strings.xml 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/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml index e1dd161a..925d7945 100644 --- a/main/src/main/AndroidManifest.xml +++ b/main/src/main/AndroidManifest.xml @@ -27,6 +27,7 @@ dirsMap = new TreeMap(); - TreeMap dirsPathMap = new TreeMap(); - TreeMap filesMap = new TreeMap(); - TreeMap filesPathMap = new TreeMap(); + TreeMap dirsMap = new TreeMap<>(); + TreeMap dirsPathMap = new TreeMap<>(); + TreeMap filesMap = new TreeMap<>(); + TreeMap filesPathMap = new TreeMap<>(); // add default locations for (String dir: getExternalStorages()) { 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 @@ + + + + + + + Certifikater + PKCS12-fil + Android-certifikat + Brugernavn/adgangskode + Faste nøgler + Bruger/adgangskode + certifikater + Bruger/adgangskode + PKCS12 + Bruger/adgangskode + Android + + + 0 + 1 + Uspecificeret + Kryptering (TLS-krypt.) + + + Afbryd, glem adgangskoden + Afbryd, behold adgangskoden + Ignorér, forsøg igen + + 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 @@ + + + + + En måned tilbage + %d måneder tilbage + + + En dag tilbage + %d dage tilbage + + + En time tilbage + %d timer tilbage + + + Et minut tilbage + %d minutter tilbage + + 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..cbf93e38 --- /dev/null +++ b/main/src/main/res/values-da/strings.xml @@ -0,0 +1,344 @@ + + + + + OpenVPN til Android + Server Adresse: + Server Port: + Placering + Kan ikke læse mappen + Vælg + Annuller + Ingen data + LZO komprimering + Intet certifikat + Klientcertifikat + Klientcertifikat nøgle + PKCS12 fil + CA Certifikat + Du skal vælge et certifikat + Kildekode og fejl tracker findes på http://code.google.com/p/ics-openvpn/ + Dette program bruger følgende komponenter: se kildekoden for alle detaljer om licenserne + Om + Profiler + Type + PKCS12 kodeord + Vælg… + Du skal vælge en fil + Brug TLS-godkendelse + TLS retning + Indtast IPv6-adresse /netmaske i CIDR format (fx 2000:dd::23/64) + Indtast IPv4-adresse/netmaske i CIDR format (f.eks 1.2.3.4/24) + IPv4-adresse + IPv6 adresse + 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 + Brugernavn + Kodeord + For statisk konfiguration vil TLS autentifikations nøglerne blive brugt som statiske nøgler + Konfigurer VPN + Tilføj profil + Indtast et navn, der identificerer den nye profil + Indtast venligst et unikt profilnavn + Profilnavn + Du skal vælge et bruger certifikat + Du skal vælge et CA-certifikat + Ingen fejl fundet + Fejl ved konfiguration + Fejl ved tolkning af IPv4-adresse + Fejl med den brugerdefinerede rute + (efterlad tomt for forespørgsel efter efterspørgsel) + OpenVPN genvej + Opretter forbindelse til VPN… + Profil angivet i genvejen ikke fundet + Tilfældig værts præfiks + Tilføjer 6 tilfældige tegn foran værtsnavn + Aktiver brugerdefinerede indstillinger + Angiv brugerdefinerede indstillinger. Brug med omtanke! + Rute afvist af Android + Afbryd + Afbryd VPN + ryd log + Annuller bekræftelse + Afbryd den tilsluttede VPN/annuller forbindelses forsøg? + Fjern VPN + Kontrollerer om serveren bruger et certifikat med TLS Server udvidelser (--remote-CERT-tls server) + Forvent TLS servercertifikat + Kontrollerer Remote Server Certificate Subject DN + Kontrol af Certifikat Værtsnavn + 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 + Fjerncertifikat emne + Aktiverer TLS Key-godkendelse + TLS godkendelses fil + Anmoder IP-adresser, ruter og tidsindstillingerne fra serveren. + Ingen oplysninger anmodes fra serveren. Indstillinger skal angives nedenfor. + Pull-indstillinger + DNS + Tilsidesæt DNS-indstillinger fra Server + Brug dine egne DNS-servere + søgeDomæne + DNS-server, som skal anvendes. + DNS-server + Sekundær DNS-Server som bruges, hvis den normale DNS-serveren ikke kan nås. + Backup DNS-server + Ignorer skubbet ruter + Ignorer ruter modtaget fra serveren. + Omdiriger al trafik over VPN\'en + Brug standard Rute + 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. + Ruter der IKKE skal dirigeres gennem VPN\'en. Brug samme syntax som til de inkluderede ruter. + Brugerdefinerede ruter + Ekskluderede netværk + Log informationsniveau + Tillad bekræftede pakker fra alle IP\'er + Tillad flydende server + Brugerdefinerede indstillinger + Rediger VPN-indstillinger + Fjern VPN-profilen \'%s\'? + 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 + Kunne ikke åbne tun grænsefladen + "Fejl: " + Tøm + Åbner tun grænseflade: + Lokal IPv4: %1$s/%2$d IPv6: %3$s MTU: %4$d + DNS-Server: %1$s, Domæne: %2$s + Ruter: %1$s %2$s + Ekskluderede ruter: %1$s %2$s + VpnService rute installeret: %1$s %2$s + 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\". + Kan ikke forstå %1$s og %2$s som IP rute med CIDR netmask, bruger /32 som netmask. + Rettede rute %1$s/%2$s til %3$s/%2$s + 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. + %1$s %2$s + Send log fil + Send + ICS OpenVPN log fil + Kopierede logpost til udklipsholder + Tap-tilstand + Tap-tilstand er ikke muligt med ikke-root VPN API. Programmet kan derfor ikke tilbyde tap-understøttelse + 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. + 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. + OFTE STILLEDE SPØRGSMÅL + Kopiere logposter + 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. + Genvej til start + 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. + Dit billede understøtter ikke VPNService API\'en, beklager :( + Kryptering + Angiv krypterings metode + Angiv krypteringsalgoritmen der skal bruges af OpenVPN. Efterlad tom for at anvende standard algoritmen. + Angiv autentificeringsdigest til brug af OpenVPN. Efterlad tom for at anvende standard digest. + Autentificering/kryptering + Stifinder + Indlejret fil + Fejl under importering af fil + Kunne ikke importere fil fra filsytemet + Nægter at åbne tun-enhed uden IP-information + Importér profil fra ovpn fil + Importér + Kunne ikke læse profil fra import + Fejl under læsning af konfigurationsfil + tilføj profil + Kunne ikke finde fil %1$s nævnt under importen af konfigurationsfil + Importering af konfigurationsfil fra kilde %1$s + 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: + Færdig med at læse konfigurationsfil. + Bind ikke til lokal adresse eller port + Ingen lokal binding + Importér konfigurationsfil + Sikkerhedsovervejelser + "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." + Importér + Fejl ved visning af certifikat-valg + 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 + IPv4 + IPv6 + Venter på statusmeddelelse… + importeret profil + importeret profil %d + Ødelagt Image + <p>Official HTC-afbildning er kendte for at have et mærkelig routing-problem, som betyder, at trafikafvikling ikke sker gennem tunnelen (se også <a href=\"https://github.com/schwabe/ics-openvpn/issues/18\">Problem 18</a> i fejlsporingen.)</p><p>Ældre officielle SONY-afbildninger fra Xperia Arc S og Xperia Ray er blevet rapporteret for helt at mangle VPNService i afbildningen (se også <a href=\"https://github.com/schwabe/ics-openvpn/issues/29\">Problem 29</a> i fejlsporingen.)</p><p>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\" .</p><p>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.</p> + PKCS12 fil-krypterings-nøgle + Private Key adgangskode + Adgangskode + fil ikon + TLS-autentificering/kryptering + Genereret konfiguration + Indstillinger + 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. + Ret ejerskab af /dev/tun + Vis den generede OpenVPN konfigurationsfil + Redigerer \"%s\" + Bygger konfiguration… + Hvis dette tilvalg slåes til vil det gennemtvinge en genopretning af forbindelsen hvis netværkstilstanden ændres (f.eks. WIFI til/fra mobildata) + Genopret forbindelse ved ændring i netværkstilstand + Netværks status: %s + CA certifikatet fåes som regel fra Android Keystore. Angiv et seperat certifikat hvis du certifikats-verificerings-fejl. + Vælg + Intet CA Certifikat fundet under søgning i Android keystore. Autentificering vil nok mislykkes. + Vis logvinduet ved tilslutning. Du kan altid komme til logvinduet fra notifikationen. + Vis logvindue + %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) + Fejl under signering med Android keystore nøgle %1$s: %2$s + 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. + Forbindelsesadvarsel og notifikationslyd + Dansk oversættelse af + IP og DNS + Grundlæggende + Routing + Tildæk OpenVPN indstillinger. Normalt ikke nødvendigt. + Avanceret + ICS OpenVPN konfiguration + 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. + Kunne ikke tilføje DNS server \"%1$s\", afvist af systemet: %2$s + Kunne ikke indstille IP adresse \"%1$s\", afvist af systemet: %2$s + <>Skaf en funktionel konfiguration (testet den på din computer eller downloadet fra din udbyder/organisation)</p><p>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.</p><p>Klik på e-mailvedhæftningen/Brug mappe ikonet i VPN-listen for at importere konfigurationsfilen</p><p>Hvis der kommer fejlmeddelelser om manglende filer kan du placere de manglende filer på dit sd-kort.</p><p>Klik på gem symbolet for at tilføje den importerede VPN til din VPN-liste</p><p>Forbind til VPN\'en ved at klikke på dens navn</p><p>Hvis der er fejl eller advarsler i loggen så prøv at forstå adverslerne/fejlene og prøv at fikse dem</p> + Hurtig start + Prøv at indlæse tun.ko kernel-modulet før du forsøger at forbinde. Kræver enheden er rootet. + Indlæs tun-modul + Importer pkcs12 fra konfigurationen til Android Keystore + Fejl under indlæsning af proxy-indstillinger: %s + Anvender proxy %1$s %2$d + Anvend system-proxy + Anvend systemets globale konfiguration til forbindelse af HTTP/HTTPS proxy\'er. + 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 < 5.0. + Forbind ved opstart + Ignorer + Genstart + Konfigurationsændringer træder i kræft efter VPN\'en genstartes. (Gen)start VPN\'en nu? + Konfiguration ændret + Kunne ikke bestemme den sidst forbundne profil til redigering + Duplikerede notifikationer + 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. + Ingen VPN-profil defineret. + Brug <img src=\"ic_menu_add\"/> ikonet for at tilføje en ny VPN + Brug <img src=\"ic_menu_archive\"/> ikonet for at importere en eksisterende (.ovpn eller .conf) profil fra dit SD-kort. + Sørg for også at læse FAQ\'en. Der er en hurtig-start-guide. + Routing/interface konfiguration + 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 + Fald ikke tilbage på VPN-løs forbindelse når OpenVPN genforbinder. + Vedvarende tun + OpenVPN log + Importér OpenVPN konfiguration + Batteriforbrug + VPN og Tethering + Forbindelses-forsøg + Gentilslutningindstillinger + Antal sekunder at vente mellem forbindelsesforsøg. + Sekunder mellem forbindelser + OpenVPN gik uventet ned. Overvej venligst at benytte muligheden Send Minidump i hovedmenuen + Send Minidump til udvikler + Sender fejlsøgningsinfo om seneste nedbrud til udvikler + OpenVPN - %s + %1$s - %2$s + %1$s - %3$s, %2$s + Tilslutning + Afventer serversvar + Godkender + Henter klientkonfiguration + Tildele IP-adresser + Tilføjer ruter + Tilsluttet + Afbryd + Gentilslutter + Afslutter + Kører ikke + Opløser værtsnavne + Tilslutter (TCP) + Godkendelse mislykkedes + Afventer anvendeligt netværk + ↓%2$s %1$s - ↑%4$s %3$s + Ikke tilsluttet + Forbinder til VPN %s + Forbinder til VPN %s + 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 + Krypteringsstreng + Pakkegodkendelse + Angiv pakkegodkendelsesmetode + bygget af %s + Kopiér til profil + Nedbruds-dump + Tilføj + Send opsætningsfil + Komplet DN + Din importerede konfiguration benytter den gamle DEPRECATED TLS-remote funktion, der benytter et andet DN-format. + RDN (almindeligt navn) + RDN-præfiks + TLS-REMOTE (forældet) + Du kan hjælpe med at oversætte ved at gå ind på http://crowdin.net/project/ics-openvpn/invite + %1$s forsøger at styre %2$s + Ved at fortsætte giver du programmet rettighed til at tage komplet kontrol over OpenVPN til Android og til at opsnappe al netværkstrafik.Accepter IKKE medmindre du har tillid til programmet. Ellers løber du risikoen for at få din data kompromiteret af ondsindet software. + Jeg har tillid til dette program. + Ingen app har lov til at anvende ekstern API + Tilladte apps: %s + Ryd liste over tilladte eksterne apps?\nNuværende liste over tilladte apps:\n\n%s + 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. + Paus VPN-forbindelse efter skærmen slukkes + Pauser forbindelse i slukket-skræm tilstand: Mindre end %1$s på %2$ss + Advarsel: Vedvarende Tun er ikke slået til på denne VPN. Internettrafik vil anvende den normale internetforbindelse når skærmen er slukket. + Gem adgangskode + Paus VPN + Genoptag VPN + VPN pausning anmodet af bruger + VPN pauset - Skærmen er slukket + Enheds-specifikke hacks + Kan ikke vise certifikatsinformation + Program opførsel + VPN opførsel + Tillad ændringer til VPN-profiler + Hardware keystore: + En app prøver at bruge OpenVPN til Androids ikon + "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å <a href=\"https://github.com/schwabe/ics-openvpn/issues/185\">Issue 185<a> for yderligere oplysninger" + VPN bekræftelses dialog + Alternativt kan du sende mig en donation med Play Butik: + Tak for donationen %s! + Log ryddet. + Vis adgangskode + KeyChain adgangsfejl: %s + Kort + ISO + Tidsstempler + Ingen + Upload + Download + VPN status + Indstillinger for visning + Ubehandlet undtagelse: %1$s\n\n%2$s + %3$s: %1$s\n\n%2$s + Hvis du har rootet din androidenhed kan du installere <a href=\"http://xposed.info/\">Xposed framework</a> og <a href=\"http://repo.xposed.info/module/de.blinkt.vpndialogxposed\">VPN Dialog confirm module</a> på din egen risiko + Fulde licenser + 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. + Forbipasser VPN for lokale netværk + Brugernavn/password fil + [Importeret fra: %s] + Nogle filer kunne ikke findes. Vælg venligst filerne for at importere profilen: + 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. + Importér log: + VPN topologi \"%3$s\" specificeret, men ifconfig %1$s %2$s ligner mere en IP-adresse med en netværksmaske. Antager \"subnet\" topologi. + MSS override-værdien skal være et heltal mellem 0 og 9000 + MTU-tilsidesættelsesværdien skal være et helt tal mellem 64 og 9000 + 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) + Tilsidesæt MSS-værdi af ​​TCP-nyttelast + Angiv tilpassede tilslutningsspecifikke indstillinger. Brug med omtanke + Tilpassede indstillinger + Fjern forbindelsesindgang + Tilfældige afbrydelser fra mobiltnetværk + Eksterne netværk kan ikke nås + Fortsæt Tun tilstand + %s og senere + Forbindelser fejler SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure + Denne profil er tilføjet fra en ekstern app (%s) og er blevet markeret som ikke-bruger-redigerbar. + Liste over tilbagekaldte certifikater + Genstarter OpenVPN Service (App\'en crashede, den crashede sandsynligvis eller blev stoppet på grund a RAM overbelastning) + Import af konfigurationsfilen gav en fejl, kan ikke gemme + Søg + Ryd log ved ny forbindelse + Forbindelses-timeout + Ingen tilladt app tilføjet. Tilføjer selve appen (%s) for at have mindst én tilladt app, ellers vil alle apps være tilladte + 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. + Protokol + Aktiveret + VPN tilladelse tilbagekaldt af styresystemet (f.eks. kan et andet VPN program være startet), stopper VPN + diff --git a/main/src/main/res/values-de/arrays.xml b/main/src/main/res/values-de/arrays.xml index 10ac9568..c7a0fa72 100755 --- a/main/src/main/res/values-de/arrays.xml +++ b/main/src/main/res/values-de/arrays.xml @@ -32,6 +32,6 @@ Trennen, Passwort vergessen Trennen, Passwort merken - Fehler Ignorieren, neu verbinden + Fehler Ignorieren, erneut versuchen 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 @@ %d Stunden verbleibend - Ein Minute verbleibend + Eine Minute verbleibend %d Minuten verbleibend diff --git a/main/src/main/res/values-de/strings.xml b/main/src/main/res/values-de/strings.xml index 5834f321..5b7e0bec 100755 --- a/main/src/main/res/values-de/strings.xml +++ b/main/src/main/res/values-de/strings.xml @@ -44,14 +44,14 @@ Profilname bereits vorhanden. Bitte vergeben Sie einen eindeutigen Profilnamen. Profilname Kein Benutzerzertifikat ausgewählt - Kein Benutzerzertifikat ausgewählt. + Sie müssen ein CA-Zertifikat auswählen Kein Fehler. Fehler in der Konfiguration Kann die konfigurierte IPv4 Adresse nicht parsen Kann die manuell angegeben Routen nicht verarbeiten (Leer lassen, um nicht zu speichern) OpenVPN-Verknüpfung - Verbinde VPN… + Verbinde zu VPN… Von der Verknüpfung referenziertes Profil konnte nicht gefunden werden Zufälliger Host-Präfix Fügt 6 zufällige Zeichen am Anfang des Hostnamens hinzu @@ -323,7 +323,7 @@ Import-Protokoll: 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. Wert muss eine Zahl zwischen 0 und 9000 sein - Der MTU-Wert muss eine Zahle zwischen 64 und 9000 sein + Die MTU Override Angabe muss eine ganze Zahl zwischen 64 und 9000 sein 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) MSS-Wert der TCP-Nutzlast überschreiben MSS der TCP-Nutzlast @@ -409,7 +409,7 @@ Samsung-Geräte Kein VPN ausgewählt Standard-VPN - Standard VPN. Wird momentan für VPN beim Booten, Always-On-Modus und die Schnellzugriffskachel benutzt. + VPN für Fälle, wo ein Standard-VPN benötigt wird. Wird momentan beim Booten, Always-On-Modus und beim Schnellzugriffskachel benutzt. Derzeit ausgewähltes VPN: \'%s\' Neu verbinden VPN an-/ausschalten @@ -418,8 +418,8 @@ Maximale Zeit zwischen Verbindungsversuchen. OpenVPN erhöht die Wartezeit zwischen zwei Verbindungsversuchen schrittweise bis zu dieser Zeit. Der Standardwert ist 300s. Maximale Zeit zwischen Verbindungsversuchen Warte %ss Sekunden zwischen zwei Verbindungsversuchen - Netzwerke mehr... -> VPNS]]> - Verbindung mit OpenVPN getrennt (%s) + Netzwerke oder Verbindungen -> mehr... oder weitere ...-> VPN]]> + Verbindung zu OpenVPN getrennt (%s) Sortierung ändern Sortieren Profile nach letzter Verwendung sortiert @@ -427,11 +427,11 @@ Konfiguration verwendet die Option tls-remote, die in 2.3 als veraltet markiert und schließlich in 2.4 entfernt wurde Verhalten bei AUTH_FAILED Kurven - logarithmische Skala verwnden - noch keine Daten + Logarithmische Skala verwenden + Nicht genügend Daten Durchschnitt pro Stunde Durchschnitt pro Minute - letzten 5 Minuten + Die letzten 5 Minuten Eingehend Ausgehend %.0f bit/s 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 @@ No especificado Cifrado (-tLS-cripta) + + Desconectar, olvidar contraseña + Desconectar, guardar la contraseña + Ignorar, volver a intentar + diff --git a/main/src/main/res/values-es/strings.xml b/main/src/main/res/values-es/strings.xml index a5812bb9..85df96f9 100755 --- a/main/src/main/res/values-es/strings.xml +++ b/main/src/main/res/values-es/strings.xml @@ -51,6 +51,7 @@ Error al analizar las rutas personalizadas (Deje en blanco para consultar sobre demanda) Acceso directo de OpenVPN + Conectando a VPN… Perfil especificado en el acceso directo no encontrado Prefijo aleatorio de Host Agrega 6 caracteres al azar delante del nombre de host @@ -391,9 +392,12 @@ hacia/de Móvil) 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. Protocolo Activo + Utilizar datos en línea + Exportar archivo de configuración Falta certificado CA Vuelva a leer (%d) artículos de archivo de caché de registro log 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. Celulares Samsung VPN no seleccionado. + VPN predeterminado 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 @@ 0 1 Non specificato - Encryption (--tls-crypt) + Crittografia (--tls-crypt) + + + Disconnetti, elimina la password + Disconnetti, mantieni la password + Ignora, riprova diff --git a/main/src/main/res/values-it/plurals.xml b/main/src/main/res/values-it/plurals.xml index 70489fbc..be2105b5 100755 --- a/main/src/main/res/values-it/plurals.xml +++ b/main/src/main/res/values-it/plurals.xml @@ -1,3 +1,8 @@ - + + + Un mese di sinistra + Un mese di sinistra + + 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 @@ Si prega di inserire un nome univoco del profilo Nome del profilo Devi selezionare un certificato utente + Devi selezionare un certificato Nessun errore trovato Errore nella configurazione Impossibile analizzare l\'indirizzo IPv4 Errore durante la lettura delle regole di reindirizzamento (routing) (non compilare perché venga sempre richiesto) Collegamento a OpenVPN + Connessione alla VPN… Profilo indicato nel collegamento non trovato Prefisso Host casuale Aggiunge 6 caratteri casuali prima dell\'hostname Abilita opzioni personalizzate Specifica opzioni personalizzate. Utilizzare con cautela! Reindirizzamento (route) rifiutato da Android - Scollega + Disconnetti Disconnettere VPN Cancella registro Conferma l\'annullamento - Disconnetti la VPN in uso/annulli il tentativo di connessione? + Disconnettere la VPN in uso/annullare il tentativo di connessione? Rimuovi VPN Controlla se il server utilizza un certificato con estensioni TLS (--remote-cert-tls server) Attesa di un certificato server TLS @@ -165,6 +167,7 @@ Effettuata la lettura del file di configurazione Password della chiave privata Password icona del file + Autenticazione/crittografia TLS Configurazione generata Impostazioni 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. @@ -180,6 +183,7 @@ Effettuata la lettura del file di configurazione Nessun certificato della CA è stato prelevato dal Keystore di Android. E\' probabile che l\'autenticazione fallisca. Mostra la finestra dei log della connessione. Si può sempre accedere alla finestra dei log tramite la barra delle notifiche. Visualizza la finestra dei log + %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) Errore di firma con la chiave %1$s: %2$s del Keystore di Android. 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). Avviso di connessione e notifica sonora @@ -202,6 +206,8 @@ Effettuata la lettura del file di configurazione Si sta utilizzando il proxy %1$s %2$d Utilizza il proxy di sistema Utilizza la configurazione generale del sistema relativa ai proxy HTTP/HTTPS per connettersi. + 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 < 5.0. + Connessione all\'avvio Ignora Riavvia Le modifiche sarannoi applicate dopo aver riavviato la connessione VPN. Riavviare ora la connessione? @@ -248,6 +254,7 @@ Effettuata la lettura del file di configurazione Connessione in corso (TCP) Autenticazione fallita In attesa di una rete utilizzabile + ↓%2$s %1$s - ↑%4$s %3$s Non connesso Connessione alla VPN %s in corso Connessione alla VPN %s in corso @@ -316,7 +323,10 @@ Effettuata la lettura del file di configurazione Alcuni file non possono essere trovati. Si prega di selezionare i file da importare nel profilo: 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. Registro importazione: + 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\". Il valore di fix MSS deve essere un intero tra 0 e 9000 + Il valore di override MTU deve essere un intero compreso tra 64 e 9000 + 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) Sovrascrivi il valore del MSS nel payload TCP Setta il valore del MSS nel payload TCP Comportamento Client @@ -331,14 +341,107 @@ Effettuata la lettura del file di configurazione Mantieni Elimina Aggiungi nuovo server + Utilizza le voci di connessione in ordine casuale di connessione + È necessario definire e abilitare almeno un server remoto. Lista Server Applicazioni consentite Impostazioni Avanzate Opzioni Payload Impostazioni TLS + Nessuna destinazione definita Profilo VPN duplicato Duplicazione del profilo: %s Mostra il log + Esistono diversi client OpenVPN per Android. I più comuni sono OpenVPN per Android (questo client), OpenVPN Connect e OpenVPN Settings.<p>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.<p>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à. <p>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 <p> 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+ + Differenze tra i client OpenVPN di Android + Ignora route multicast: %s + 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. + Le operazioni di tethering funzionano mentre la VPN è attiva. La connessione di tether NON utilizzerà la VPN. + La prima versione KitKat ha impostato il valore MSS errato sulle connessioni TCP (#61948). Prova ad abilitare l\'opzione mssfix per risolvere questo problema. + 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.

Quando una VPN imposta un server DNS, Android non utilizzerà un proxy. Non esistono API per impostare un proxy per una connessione VPN

+ Le applicazioni VPN potrebbero smettere di funzionare durante la disinstallazione e la reinstallazione. Per dettagli vedi # 80074 + 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 + 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. + VPN non funziona affatto per gli utenti secondari. + "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." + Solo la destinazione può essere raggiunta tramite VPN che sono raggiungibili senza VPN. La VPN IPv6 non funziona affatto. + Nessuna route CIDR + Modalità proxy per VPN + Reinstallazione applicazioni VPN %s e precedenti Copia di %s + Percorso per l\'indirizzo IP configurato + Valore MSS errato per la connessione VPN + Utenti tablet secondari + Imposta le opzioni specifiche di connessione personalizzate. Usare con attenzione + Opzioni personalizzate + Rimuovi voce connessione + Disconnessioni casuali dalla rete mobile + Reti remote non raggiungibili + Modalità tun persistente + %s e successive + Le connessioni falliscono con l\'avviso di autenticazione SSL23_GET_SERVER_HELLO: sslv3 + 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. + Questo profilo è stato aggiunto da un\'applicazione esterna (%s) ed è stato contrassegnato come non modificabile dall\'utente. + Elenco di revoca dei certificati + Riavvio del servizio OpenVPN (l\'applicazione si è probabilmente bloccata o è stata chiusa per motivi di memoria) + L\'importazione della configurazione ha generato un errore, non è possibile salvarlo + Cerca + (Ultimo dump è %1$d: %2$dh vecchio (%3$s)) + Pulisci registro su nuova connessione + Connessione scaduta + Non è stata aggiunta alcuna applicazione consentita. Aggiungendo (%s) per avere almeno una app nell\'elenco delle applicazioni consentite per non autorizzare tutte le applicazioni + OpenVPN per Android può provare a scoprire automaticamente i file mancanti nella scheda SD. Tocca questo messaggio per avviare la richiesta di autorizzazione. + Protocollo + Abilitato + Preferenza ABI nativa di questo dispositivo (%1$s) e ABI segnalate da librerie native (%2$s) non corrispondente + L\'autorizzazione VPN è stata revocata dall\'OS (ad esempio un altro programma VPN avviato), arrestando la VPN + Info Push Peer + Invia informazioni aggiuntive al server, ad esempio la versione SSL e la versione Android + E\' necessario %1$s + Inserisci la password per il profilo %1$s + Utilizza dati in linea + Esporta file di configurazione + File tls-auth mancante + Certificato utente o file chiave certificato utente mancante + Certificato CA mancante + Elenco certificato di revoca (facoltativo) + Rileggi (%d) gli elementi del registro dal file di cache di log + 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. + Telefoni Samsung + Nessuna VPN selezionata. + VPN predefinita + 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. + VPN attualmente selezionata: \'%s\' + Riconnetti + Attiva/disattiva VPN + Connetti a %s + Disconnetti %s + 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. + Tempo massimo tra i tentativi di connessione + Attendere %ss secondi tra i tentativi di connessione + Altre reti .. -> VPNS]]> + Connessione a OpenVPN chiusa (%s) + Cambia ordinamento + Ordina + Profili ordinati per ultimo usato di recente + Profili ordinati per nome + Config utilizza l\'opzione tls-remote che è stata deprecata nella versione 2.3 e infine rimossa nella 2.4 + Comportamento su AUTH_FAILED + Grafico + Usa scala logaritmica + Dati insufficienti + Media oraria + Media al minuto + Ultimi 5 minuti + Ingresso + Uscita + %.0f bit/s + %.1f kbit/s + %.1f Mbit/s + %.1f Gbit/s + %.0f B + %.1f kB + %.1f MB + %.1f GB diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index c63ec601..79c84223 100755 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -436,9 +436,8 @@ %.1f kbit/s %.1f Mbit/s %.1f Gbit/s - <p>Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like MD5.</p><p><b>MD5 signatures are insecure and should not be used anymore.</b> MD5 collisions can be created in <a href="https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html">few hours at a minimal cost.</a>. You should update the VPN certificates as soon as possible.</p><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 <a href="https://github.com/OpenVPN/easy-rsa/releases">latest version</a>) or change md5 to sha256 and regenerate your certificates.</p><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</p> - -%.0f B + <p>Starting with OpenSSL version 1.1, OpenSSL rejects weak signatures in certificates like MD5.</p><p><b>MD5 signatures are completely insecure and should not be used anymore.</b> MD5 collisions can be created in <a href="https://natmchugh.blogspot.de/2015/02/create-your-own-md5-collisions.html">few hours at a minimal cost.</a>. You should update the VPN certificates as soon as possible.</p><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 <a href="https://github.com/OpenVPN/easy-rsa/releases">latest version</a>) or change md5 to sha256 and regenerate your certificates.</p><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</p> + %.0f B %.1f kB %.1f MB %.1f GB -- cgit v1.2.3 From bfc020a66bad76966b37f1a2be7887c0d9a6dc91 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 10 Nov 2017 10:47:05 +0100 Subject: Ignroe our own always generated config items (closes #778) --- main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java | 2 ++ .../main/java/de/blinkt/openvpn/core/ConfigParser.java | 5 ++++- .../java/de/blinkt/openvpn/fragments/Settings_Basic.java | 16 ++++++---------- remoteExample/build.gradle | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) 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/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/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/remoteExample/build.gradle b/remoteExample/build.gradle index 7e063c75..31049d5d 100644 --- a/remoteExample/build.gradle +++ b/remoteExample/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 26 - buildToolsVersion '26.0.0' + buildToolsVersion '26.0.2' defaultConfig { minSdkVersion 15 -- cgit v1.2.3 From 7b0af007a717c72d957ed413bb91ae17da9343a1 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sun, 26 Nov 2017 23:41:50 -0500 Subject: New NDK and OpenSSL Speed test --- gradle/wrapper/gradle-wrapper.properties | 9 +- main/jni/Android.mk | 4 +- main/jni/Application.mk | 2 +- main/jni/jbcrypto.cpp | 3 +- main/jni/sslspeed.c | 309 +++++++++++++++++++++ main/openssl | 2 +- main/openvpn | 2 +- main/src/main/AndroidManifest.xml | 62 ++--- .../java/android/support/v4n/view/ViewPager.java | 12 - .../de/blinkt/openvpn/activities/OpenSSLSpeed.java | 192 +++++++++++++ .../java/de/blinkt/openvpn/core/NativeUtils.java | 7 + .../blinkt/openvpn/fragments/GeneralSettings.java | 5 + main/src/main/res/layout/openssl_speed.xml | 40 +++ main/src/main/res/layout/speedviewitem.xml | 54 ++++ main/src/main/res/values/strings.xml | 8 + main/src/main/res/values/untranslatable.xml | 6 +- main/src/main/res/xml/general_settings.xml | 4 + 17 files changed, 662 insertions(+), 59 deletions(-) create mode 100644 main/jni/sslspeed.c create mode 100644 main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java create mode 100644 main/src/main/res/layout/openssl_speed.xml create mode 100644 main/src/main/res/layout/speedviewitem.xml diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b217b6d7..c188c8b0 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 +#Fri Nov 24 12:34:12 EST 2017 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-snapshots/gradle-4.4-20171031235950+0000-all.zip diff --git a/main/jni/Android.mk b/main/jni/Android.mk index 828bb8da..ae45c10d 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/jni/jbcrypto.cpp b/main/jni/jbcrypto.cpp index 810a3bc7..c61ef14f 100644 --- a/main/jni/jbcrypto.cpp +++ b/main/jni/jbcrypto.cpp @@ -20,7 +20,8 @@ #include 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 jniThrowException(JNIEnv* env, const char* className, const char* msg) { diff --git a/main/jni/sslspeed.c b/main/jni/sslspeed.c new file mode 100644 index 00000000..0ce9ede2 --- /dev/null +++ b/main/jni/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 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "jniglue.h" +#include + +#include +#include +#include +#include +#include +#include + + +/* 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 + +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/openssl b/main/openssl index 8b837cde..e6d693e8 160000 --- a/main/openssl +++ b/main/openssl @@ -1 +1 @@ -Subproject commit 8b837cde90aa660dbbe9075c40a508e21f1aba1a +Subproject commit e6d693e846f38eb43a06b1c464d534bf39be80db diff --git a/main/openvpn b/main/openvpn index 9fa0b9a7..61ec1d32 160000 --- a/main/openvpn +++ b/main/openvpn @@ -1 +1 @@ -Subproject commit 9fa0b9a7e1240170f964bbca6a3d4f608b6325bc +Subproject commit 61ec1d3207a058b29eb8c463550dc5958cf0e386 diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml index 925d7945..e57cf096 100644 --- a/main/src/main/AndroidManifest.xml +++ b/main/src/main/AndroidManifest.xml @@ -1,10 +1,7 @@ - - - - +--> @@ -16,6 +13,7 @@ + - - + android:permission="android.permission.BIND_VPN_SERVICE" + android:process=":openvpn"> - - - - - - - + + android:label="@string/qs_title" + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" + android:value="true"> - @@ -119,7 +112,6 @@ - @@ -130,7 +122,8 @@ android:taskAffinity=".ConfigConverter" android:uiOptions="splitActionBarWhenNarrow" tools:ignore="ExportedActivity"> - @@ -139,7 +132,8 @@ - @@ -181,8 +175,6 @@ - - - - + @@ -218,7 +209,6 @@ android:grantUriPermissions="true" tools:ignore="ExportedContentProvider" /> - + + +
- + \ No newline at end of file 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/activities/OpenSSLSpeed.java b/main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java new file mode 100644 index 00000000..e10778f1 --- /dev/null +++ b/main/src/main/java/de/blinkt/openvpn/activities/OpenSSLSpeed.java @@ -0,0 +1,192 @@ +/* + * 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 { + + 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 { + + + private boolean mCancel = false; + + @Override + protected SpeedResult[] doInBackground(String... strings) { + Vector mResult = new Vector<>(); + + for (String algorithm : strings) { + + for (int i = 0; i < NativeUtils.openSSLlengths.length && !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/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/fragments/GeneralSettings.java b/main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java index 700095d7..ef49c656 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,6 +68,7 @@ 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); @@ -168,6 +171,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/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 @@ + + + + + + + + + +