From 1a65622af5d97bfcf56c84e90e40bfd0b214e43b Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Tue, 5 Feb 2013 09:49:06 +0100 Subject: =?UTF-8?q?Fix=20Locale=20related=20errors/bugs.=20Update=20?= =?UTF-8?q?=E2=80=A6=20to=20unicode=20replacement.=20Fix=20the=20speed=20d?= =?UTF-8?q?isplay.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidManifest.xml | 8 +++-- openvpn/config.h | 2 +- res/layout/basic_settings.xml | 2 +- res/values-ca/strings.xml | 6 ++-- res/values-es/strings.xml | 6 ++-- res/values-fr/strings.xml | 6 ++-- res/values-id/strings.xml | 16 ++++----- res/values-it/strings.xml | 4 +-- res/values-ko/strings.xml | 4 +-- res/values-no/strings.xml | 6 ++-- res/values-ro/strings.xml | 4 +-- res/values-uk/strings.xml | 4 +-- res/values-zh-rCN/strings.xml | 38 ++++++++++++++++++---- res/values-zh-rTW/strings.xml | 2 +- res/values/strings.xml | 4 +-- src/de/blinkt/openvpn/CIDRIP.java | 4 ++- src/de/blinkt/openvpn/FileSelectionFragment.java | 5 +-- src/de/blinkt/openvpn/OpenVPN.java | 1 - src/de/blinkt/openvpn/OpenVpnManagementThread.java | 3 +- src/de/blinkt/openvpn/OpenVpnService.java | 19 ++++++++--- src/de/blinkt/openvpn/Settings_Basic.java | 17 +--------- src/de/blinkt/openvpn/VpnProfile.java | 8 +++-- 22 files changed, 98 insertions(+), 71 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 4d0d183f..c37199ec 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -30,7 +30,7 @@ + android:targetSdkVersion="17" /> + android:label="@string/app" + android:supportsRtl="true" > - + + diff --git a/openvpn/config.h b/openvpn/config.h index 0d86c1d9..f72e8b70 100644 --- a/openvpn/config.h +++ b/openvpn/config.h @@ -456,7 +456,7 @@ #define PACKAGE_TARNAME "openvpn" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.3_beta1" +#define PACKAGE_VERSION "2.3_master" /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ diff --git a/res/layout/basic_settings.xml b/res/layout/basic_settings.xml index d37bc37a..d8f39a83 100644 --- a/res/layout/basic_settings.xml +++ b/res/layout/basic_settings.xml @@ -23,7 +23,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:padding="3mm" > + android:padding="4dp" > Perfils VPN Tipus Contrasenya PKCS12 - Selecciona... + Selecciona… Utiltiza autenticació TLS Direcció TLS Introduïu l\'adreça/mascara de xarxa IPv6 en format CIDR Format (e.g. 2000:dd::23/64) @@ -90,7 +90,7 @@ Importa IPv4 IPv6 - Esperant el missatge d\'estat... + Esperant el missatge d\'estat… Perfil importat Perfil importat %d Imatges trencades @@ -103,7 +103,7 @@ Corregir els permisos de /dev/tun Mostra el fitxer de configuració d\'OpenVPN generat Editant \"%s\" - Construint la configuració... + Construint la configuració… Reconecta al canviar de xarxa Estat de la xarxa %s Selecciona diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 521985db..8e1b3a5a 100755 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -24,7 +24,7 @@ Perfiles VPN Tipo Contraseña PKCS12 - Seleccionar... + Seleccionar… Debe seleccionar un archivo Utilizar la autenticación TLS Dirección TLS @@ -153,7 +153,7 @@ Se obtuvo una excepción al intentar mostrar el diálogo de selección de certificado de Android 4.0+. Esto nunca debería ocurrir por ser una funcionalidad estándar de Android 4.0+. Quizás el respaldo ROM para almacenamiento de certificados de su Android está arruinado IPv4 IPv6 - Esperando el mensaje de estado... + Esperando el mensaje de estado… perfil importado perfil importado %d Imágenes rotas @@ -169,7 +169,7 @@ Arreglar la propiedad de /dev/tun Muestra el archivo de configuración OpenVPN generado Editando \"%s\" - Construyendo configuracion... + Construyendo configuracion… Turning this option on will force a reconnect if the network state is changed (e.g. WiFi to/from mobile) Reconectar en cambio de red Conseguido el certificado de \'%s\' de almacén de claves diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 9da62050..e7048048 100755 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -24,7 +24,7 @@ "Vos VPNs" "Type" "Mot de passe PKCS12" - "Sélectionner..." + "Sélectionner…" "Utiliser l\'authentification TLS" "Direction de l\'authentification TLS" "Entrez l\'adresse IPv6 / masque de réseau au format CIDR (ex.: 2000:jj::23/64)" @@ -152,7 +152,7 @@ "Exception en essayant d\'afficher le dialogue de sélection du certification d\'Android 4.0+. Ceci ne devrait pas se produire car c\'est une des fonctionnalités de base de ce système. Il est donc possible que votre ROM ne supporte pas le stockage de certfiicats." "IPv4" "IPv6" - "Attente du status..." + "Attente du status…" "profil importé" "profil importé: %d" "Images corrompues " @@ -169,7 +169,7 @@ "Corriger le propriétaire de /dev/tun" "Affiche le fichier de configuration OpenVPN généré" "Modification \"%s\"" - "Création de la configuration ..." + "Création de la configuration…" "L\'activation de cette option forcera l\'appareil à se reconnecter si l\'état du réseau change (ex.: WIFI/Mobile)" "Reconnexion lors de changement du réseau" "Certificat \'%s\' obtenu" diff --git a/res/values-id/strings.xml b/res/values-id/strings.xml index 857cde22..50459a66 100755 --- a/res/values-id/strings.xml +++ b/res/values-id/strings.xml @@ -18,7 +18,7 @@ Anda harus memilih sertifikat Kode program dan perekam masalah tersedia di Aplikasi memakai komponen berikut; lihat kode program untuk lebih jelas mengenai lisensi - Tentang... + Tentang… Tentang OpenVPN untuk Android Daftar konfigurasi VPN Profil VPN @@ -103,8 +103,8 @@ Domain DNS : %s Rute: %s Rute IPv6: %s - Memilki informasi antarmuka %1$ s dan %2$, asumsi alamat kedua adalah alamat remote. Menggunakan netmask /32 untuk IP lokal. Mode yang diberikan oleh OpenVPN adalah \"%3$\". - Tidak masuk akal membuat %1$ s dan %2$ s sebagai rute IP dengan netmask CIDR, Gunakan /32 sebagai netmask. + Memilki informasi antarmuka %1$s dan %2$s, asumsi alamat kedua adalah alamat remote. Menggunakan netmask /32 untuk IP lokal. Mode yang diberikan oleh OpenVPN adalah \"%3$s\". + Tidak masuk akal membuat %1$s dan %2$s sebagai rute IP dengan netmask CIDR, Gunakan /32 sebagai netmask. rute yang diperbaiki %1$s/%2$s hingga %3$s/%2$s Tidak dapat mengakses sertifikat Keychain Android. Dapat disebabkan karena upgrade firmware atau pengembalian backup pengaturan app. Mohon ubah VPN, dan pilih ulang sertifikat berbasis pengaturan dasar agar izin mengakses sertifikat dapat dibuat ulang. %1$s %2$s @@ -181,7 +181,7 @@ Tampilkan jendela catatan saat terkoneksi. Jendela catatan juga dapat diakses melalui status notifikasi Tampilkan jendela catatan Berjalan di %1$s (%2$s) %3$s, Android API %4$d - Kesalahan masuk dengan kunci Android keystore %1$ s: %2$ s + Kesalahan masuk dengan kunci Android keystore %1$s: %2$s Peringatan sambungan VPN yang memberitahukan Anda bahwa aplikasi ini dapat mencegat semua lalu lintas dikeluarkan oleh sistem untuk mencegah penyalahgunaan dari sambungan VPNService API.\nPemberitahuan sambungan VPN (simbol kunci) juga dikeluarkan oleh sistem Android untuk memberitahu VPN yang sedang berlangsung. Pada beberapa gambar pemberitahuan ini memainkan suara. \nAndroid memperkenalkan sistem dialog ini untuk keselamatan Anda sendiri dan memastikan bahwa mereka tidak membuat masalah. (Pada beberapa gambar sayangnya ini termasuk peringatan suara) Peringatan sambungan dan pemberitahuan melalui suara Terjemah Bahasa Indonesia oleh Dayro @@ -192,14 +192,14 @@ Lanjutan Konfigurasi ICS Openvpn Tidak ada server DNS yang digunakan. Resolusi nama mungkin tidak bisa bekerja. Pertimbangkan seting server DNS yang diatur sendiri - Tak bisa menambahkan Server DNS \"%1$ s\", ditolak oleh sistem: %2$ s + Tak bisa menambahkan Server DNS \"%1$s\", ditolak oleh sistem: %2$s <p> Ambil konfigurasi yang dapat berjalan (diuji pada komputer Anda atau download dari penyedia/organisasi) </p> <p> Satu file(berkas) saja tanpa tambahan berkas pem/pks12. Anda dapat kirim imel berkas dan membuka lampirannya. Jika Anda memiliki beberapa berkas, salin ke sd-card </p> <p> klik pada lampiran imel atau gunakan ikon folder dalam daftar vpn untuk mengimpor berkas konfigurasi </p> <p> jika ada berkas yang kurang, salin file hilang ke sd-card. </p> <p> klik pada simbol Simpan untuk menambahkan VPN yang diimpor ke daftar VPN </p> <p > Connect VPN dengan mengklik nama VPN </p> <p> jika ada kesalahan atau peringatan di catatan, coba pahami peringatannya dan coba untuk memperbaikinya </p> Mulai Cepat Coba pakai tun.ko kernel sebelum mencoba koneksi. Membutuhkan perangkat yang sudah diroot. Google: android superuser Pakai modul TUN Ambil PKCS12 dari konfigurasi ke Android Keystore Gagal mendapatkan pengaturan proxy: %s - Menggunakan proxy %1$ s %2$ d + Menggunakan proxy %1$s %2$d Gunakan sistem proxy Gunakan konfigurasi lebih luas untuk menyambung system melalui proxy HTTP/HTTPS Anda dapat melakukan donasi <a href=\"https://www.paypal.com/cgi-bin/webscr?hosted_button_id=R2M6ZP9AF25LS&amp;cmd=_s-xclick\">dengan PayPal</a> @@ -236,8 +236,8 @@ Mengirim MiniDump untuk pengembang Kirim informasi kesalahan tentang kegagalan aplikasi yang terakhir ke pengembang OpenVPN - %s - %1$ s - %2$ s - %1$ s - %3$ s, %2$ s + %1$s - %2$s + %1$s - %3$s, %2$s Menghubungkan Menunggu jawaban server Melakukan otentifikasi diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index a8f39816..3ad6fdd2 100755 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -155,7 +155,7 @@ Effettuata la lettura del file di configurazione Si è incappati in una eccezione tentando di visualizzare la finestra di selezione dei certificati di Android 4.0+. Questo non dovrebbe mai accadere dato che questa è una caratteristica standard di Android 4.0+. Forse il supporto al salvataggio dei certificati del tuo firmware di Android è corrotto. IPv4 IPv6 - In attesa del messaggio di stato... + In attesa del messaggio di stato… profilo importato profilo importato %d Firmware bacati @@ -173,7 +173,7 @@ nel bug tracker).</p><p>Si è visto che ai firmware ufficiali della Correggi i diritti su /dev/tun Mostra il file di configurazione di OpenVPN generato Modifica \"%s\" - Configurazione in corso... + Configurazione in corso… Selezionando questa opzione verrà forzata una riconnessione se lo stato della rete cambia (da WIFI a cellulare e viceversa) Riconnetti in caso cambi la rete Ottenuto il certificato \'%s\' dal Keystore diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index dd83c09d..07989d5d 100755 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -24,7 +24,7 @@ VPN 프로파일 유형 PKCS12 암호 - 선택... + 선택… 파일을 선택 해야 합니다 TLS 인증 사용 TLS 방향 @@ -153,7 +153,7 @@ 안드로이드 4.0+의 인증서 선택창을 보여주려는 과정에서 예외가 발생됐습니다. 안드로이드 4.0+의 표준 기능임으로 이 같은 일은 일어나면 안됩니다. 어쩌면 인증서 저장소에 대한 귀하의 안드로이드 ROM 지원이 깨졌습니다. IPv4 IPv6 - 상태 메시지를 기다리는 중... + 상태 메시지를 기다리는 중… 가져온 프로파일 가져온 프로파일 %d 깨진 이미지 diff --git a/res/values-no/strings.xml b/res/values-no/strings.xml index 1ee26c0d..9ea085b3 100755 --- a/res/values-no/strings.xml +++ b/res/values-no/strings.xml @@ -20,7 +20,7 @@ VPN-profiler Type PKCS12 passord - Velg... + Velg… Bruke TLS-godkjenning TLS-retning Angi IPv6-adresse/nettmaske i CIDR format (f.eks 2000:dd::23/64) @@ -91,7 +91,7 @@ Feil ved visning av sertifikatvalg IPv4 IPv6 - Venter på tilstands melding... + Venter på tilstands melding… importert profil importert profilen %d Ødelagte bilder @@ -105,7 +105,7 @@ Generelle innstillinger Fiks eierskap av /dev/tun Rediger \"%s\" - Lager konfigurasjon... + Lager konfigurasjon… Koble til på nytt ved nettverks endring Nettverksstatus: %s Velg diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 842d9352..c0ced54d 100755 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -123,7 +123,7 @@ Import Eroare la citirea fişierului de configurare Adaugă profil - Imposibil de găsit fișierul %1$ s menţionat în fişierul de configurare importat + Imposibil de găsit fișierul %1$s menţionat în fişierul de configurare importat S-a terminat citirea fişierului de configurare. Fără binding local Import fişier de configurare @@ -160,7 +160,7 @@ Pornire rapidă Încarcă modulul tun Import PKCS12 configurare în Android Keystore - Folosesc proxy %1$ s %2$ d + Folosesc proxy %1$s %2$d Foloseşte proxy sistem Reconectarea la reboot Ignora diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index e8482370..064c20fa 100755 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -24,7 +24,7 @@ VPN профілі Тип Пароль PKCS12 - Виберіть... + Виберіть… Слід вибрати файл Використовувати TLS аутентифікацію TLS напрямок @@ -153,7 +153,7 @@ Відбулася помилка при спробі виклику системного діалогу вибору сертифікатів Android 4.0 + Цього не повинно було статися на стандартній прошивці. Можливо у вашій прошивці зіпсовано сховище сертифікатів IPv4 IPv6 - Очікування повідомлення стану... + Очікування повідомлення стану… імпортований профіль імпортований профіль: %d Пошкоджені зображення diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 74a672ad..b6156ab2 100755 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -16,7 +16,7 @@ PKCS12 文件 CA 证书 您必须选择一个证书 - 请前往 http://code.google.com/p/ics-openvpn/ 源码或提供问题反馈 + 请前往 http://code.google.com/p/ics-openvpn/ 查看源码或提供问题反馈 本程序使用以下组件,请在 Licenses 查看源码获取更详细内容。 关于 关于 OpenVPN for Android @@ -39,14 +39,15 @@ 添加配置文件 输入新配置文件名: 请输入一个唯一的配置文件名称 - 配置文件名 + 配置文件名称 + 您必须选择一个用户证书 未找到错误 配置有错误 无法解析 IPv4 地址 无法解析自定义路由 (根据需求留空) OpenVPN 快捷方式 - 连接到 VPN + 连接至 VPN 未找到快捷方式中指定的配置文件 随机主机前缀 在主机名前添加6个随机字符 @@ -64,7 +65,7 @@ 远程主机名 (CN) 启用 TLS 密钥认证 TLS 认证文件 - 使用pull + Pull 设置 DNS 覆盖服务器 DNS 设置 使用自定义 DNS 服务器 @@ -84,6 +85,7 @@ 允许浮服务器 自定义选项 编辑 VPN 设置 + 移除 VPN 配置文件 \'%s\' 吗? 未能打开 tun 模块 错误 清除 @@ -153,14 +155,16 @@ 选择 显示日志窗口 运行 %1$s ( %2$s ) %3$s ,Android API %4$d - 中文翻译: 白达卫 -<59539051+ovpntrans.zh@mail.dcu.ie> + 连接警告和通知声音 + 中文翻译:Christopher Meng +<trans@cicku.me> IP 和 DNS 设置 基本 路由设置 其他 OpenVPN 设置,一般不需要修改。 高级设置 ICS Openvpn 配置 + 无法添加 DNS 服务器 \"%1$s\",%2$s 拒绝了您的操作。 快速入门 尝试在连接之前加载 tun.ko 内核模块。需要 root 权限。 载入 tun 模块 @@ -175,11 +179,31 @@ 配置已更改 重复的通知 没有定义 VPN 配置文件 - 使用 < img src =\"ic_menu_add\"/ > 图标以添加新的 VPN + 点击 <img src=\"ic_menu_add\"/> 图标添加新的 VPN 配置 + 路由/接口配置 当 OpenVPN 重连时,也一直使用 VPN 连接。 保持 tun 通道 翻译 OpenVPN 日志 导入 OpenVPN 配置文件 电池消耗 + VPN 和中继 + 连接重试次数 + 重新连接设置 + 每次尝试连接等待时间(秒)。 + 两次连接间隔时间(秒) + OpenVPN 意外崩溃。建议您使用主菜单中的发送转储文件功能向开发者发送转储文件 + 向开发者发送转储信息 + OpenVPN - %s + %1$s - %2$s + %1$s - %3$s, %2$s + 连接中 + 等待服务器响应 + 验证中 + 正在退出 + 未运行 + 正在解析主机名 + 连接中(TCP) + 验证失败 + 等待可用网络 diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 23e9c002..20807bb9 100755 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -131,7 +131,7 @@ 匯入 IPv4 IPv6 - 等待狀態訊息... + 等待狀態訊息… 使用者名稱不能為空。 PKCS12檔加密金鑰 私密金鑰密碼 diff --git a/res/values/strings.xml b/res/values/strings.xml index f1bd9bd9..1fe96ae2 100755 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -254,9 +254,9 @@ Connecting (TCP) Authentication failed Waiting for usable network - In: %8$1s %8$2s/s Out: %8$3s %8$4s/s + In: %1$8s %2$8s/s Out: %3$8s %4$8s/s Not connected - Some versions of Android 4.1 have problem if the name of the keystore certificate contains non alphanumeric character (like spaces or dashes) + Some versions of Android 4.1 have problems if the name of the keystore certificate contains non alphanumeric characters (like spaces, underscores or dashes). Try to reimport the certificate without special characters Encryption cipher Packets authentication Enter packet authentication method diff --git a/src/de/blinkt/openvpn/CIDRIP.java b/src/de/blinkt/openvpn/CIDRIP.java index ccb3836a..d3939dfc 100644 --- a/src/de/blinkt/openvpn/CIDRIP.java +++ b/src/de/blinkt/openvpn/CIDRIP.java @@ -1,5 +1,7 @@ package de.blinkt.openvpn; +import java.util.Locale; + class CIDRIP{ String mIp; int len; @@ -26,7 +28,7 @@ class CIDRIP{ } @Override public String toString() { - return String.format("%s/%d",mIp,len); + return String.format(Locale.ENGLISH,"%s/%d",mIp,len); } public boolean normalise(){ diff --git a/src/de/blinkt/openvpn/FileSelectionFragment.java b/src/de/blinkt/openvpn/FileSelectionFragment.java index 2d8110e1..5badc6e0 100644 --- a/src/de/blinkt/openvpn/FileSelectionFragment.java +++ b/src/de/blinkt/openvpn/FileSelectionFragment.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.TreeMap; import android.app.AlertDialog; @@ -180,12 +181,12 @@ public class FileSelectionFragment extends ListFragment { dirsPathMap.put(dirName, file.getPath()); } else { final String fileName = file.getName(); - final String fileNameLwr = fileName.toLowerCase(); + final String fileNameLwr = fileName.toLowerCase(Locale.getDefault()); // se ha um filtro de formatos, utiliza-o if (formatFilter != null) { boolean contains = false; for (int i = 0; i < formatFilter.length; i++) { - final String formatLwr = formatFilter[i].toLowerCase(); + final String formatLwr = formatFilter[i].toLowerCase(Locale.getDefault()); if (fileNameLwr.endsWith(formatLwr)) { contains = true; break; diff --git a/src/de/blinkt/openvpn/OpenVPN.java b/src/de/blinkt/openvpn/OpenVPN.java index 9cfaf1e8..c1616f2d 100644 --- a/src/de/blinkt/openvpn/OpenVPN.java +++ b/src/de/blinkt/openvpn/OpenVPN.java @@ -4,7 +4,6 @@ import java.util.LinkedList; import java.util.Locale; import java.util.Vector; - import android.content.Context; import android.os.Build; diff --git a/src/de/blinkt/openvpn/OpenVpnManagementThread.java b/src/de/blinkt/openvpn/OpenVpnManagementThread.java index c67d027d..381fee82 100644 --- a/src/de/blinkt/openvpn/OpenVpnManagementThread.java +++ b/src/de/blinkt/openvpn/OpenVpnManagementThread.java @@ -11,6 +11,7 @@ import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.util.LinkedList; +import java.util.Locale; import java.util.Vector; import javax.crypto.BadPaddingException; @@ -261,7 +262,7 @@ public class OpenVpnManagementThread implements Runnable { OpenVPN.logInfo(R.string.using_proxy, isa.getHostName(),isa.getPort()); - String proxycmd = String.format("proxy HTTP %s %d\n", isa.getHostName(),isa.getPort()); + String proxycmd = String.format(Locale.ENGLISH,"proxy HTTP %s %d\n", isa.getHostName(),isa.getPort()); managmentCommand(proxycmd); } else { managmentCommand("proxy NONE\n"); diff --git a/src/de/blinkt/openvpn/OpenVpnService.java b/src/de/blinkt/openvpn/OpenVpnService.java index 0ac57406..71cc5cd2 100644 --- a/src/de/blinkt/openvpn/OpenVpnService.java +++ b/src/de/blinkt/openvpn/OpenVpnService.java @@ -17,6 +17,7 @@ package de.blinkt.openvpn;import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Locale; import java.util.Vector; import android.annotation.TargetApi; @@ -37,10 +38,10 @@ import android.os.Handler.Callback; import android.os.IBinder; import android.os.Message; import android.os.ParcelFileDescriptor; - +import de.blinkt.openvpn.OpenVPN.ByteCountListener; import de.blinkt.openvpn.OpenVPN.StateListener; -public class OpenVpnService extends VpnService implements StateListener, Callback { +public class OpenVpnService extends VpnService implements StateListener, Callback, ByteCountListener { public static final String START_SERVICE = "de.blinkt.openvpn.START_SERVICE"; public static final String START_SERVICE_STICKY = "de.blinkt.openvpn.START_SERVICE_STICKY"; public static final String ALWAYS_SHOW_NOTIFICATION = "de.blinkt.openvpn.NOTIFICATION_ALWAYS_VISIBLE"; @@ -116,6 +117,8 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac private void endVpnService() { mProcessThread=null; OpenVPN.logBuilderConfig(null); + OpenVPN.removeStateListener(this); + OpenVPN.removeByteCountListener(this); ProfileManager.setConntectedVpnProfileDisconnected(this); if(!mStarting) { stopSelf(); @@ -158,6 +161,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac startForeground(OPENVPN_STATUS, notification); } + @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void jbNotificationExtras(boolean lowpriority, android.app.Notification.Builder nbuilder) { @@ -217,6 +221,12 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac return lss; } catch (IOException e) { e.printStackTrace(); + } finally { + try { + sock.close(); + } catch (IOException e) { + e.printStackTrace(); + } } return null; @@ -238,6 +248,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac mNotificationalwaysVisible=true; OpenVPN.addStateListener(this); + OpenVPN.addByteCountListener(this); if(intent != null && intent.getAction() !=null &&intent.getAction().equals(START_SERVICE)) return START_NOT_STICKY; @@ -517,7 +528,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac } } - + @Override public void updateByteCount(long in, long out, long diffin, long diffout) { if(mDisplayBytecount) { String netstat = String.format(getString(R.string.statusline_bytecount), @@ -538,7 +549,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac if (bytes < unit) return bytes + " B"; int exp = (int) (Math.log(bytes) / Math.log(unit)); String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i"); - return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); + return String.format(Locale.getDefault(),"%.1f %sB", bytes / Math.pow(unit, exp), pre); } @Override diff --git a/src/de/blinkt/openvpn/Settings_Basic.java b/src/de/blinkt/openvpn/Settings_Basic.java index 9c85094a..137e75c5 100644 --- a/src/de/blinkt/openvpn/Settings_Basic.java +++ b/src/de/blinkt/openvpn/Settings_Basic.java @@ -58,29 +58,15 @@ public class Settings_Basic extends Fragment implements View.OnClickListener, On private Spinner mType; private FileSelectLayout mpkcs12; private TextView mPKCS12Password; - private Handler mHandler; - - - - - - private SparseArray fileselects = new SparseArray(); - - private EditText mUserName; - - private EditText mPassword; - - private View mView; - - private VpnProfile mProfile; private EditText mProfileName; private EditText mKeyPassword; + private SparseArray fileselects = new SparseArray(); private void addFileSelectLayout (FileSelectLayout fsl) { @@ -129,7 +115,6 @@ public class Settings_Basic extends Fragment implements View.OnClickListener, On mpkcs12.setBase64Encode(); mCaCert.setShowClear(); - mType.setOnItemSelectedListener(this); mView.findViewById(R.id.select_keystore_button).setOnClickListener(this); diff --git a/src/de/blinkt/openvpn/VpnProfile.java b/src/de/blinkt/openvpn/VpnProfile.java index 6f21397e..37e9b2ff 100644 --- a/src/de/blinkt/openvpn/VpnProfile.java +++ b/src/de/blinkt/openvpn/VpnProfile.java @@ -15,6 +15,7 @@ import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.Collection; +import java.util.Locale; import java.util.UUID; import java.util.Vector; @@ -391,12 +392,13 @@ public class VpnProfile implements Serializable{ //! Put inline data inline and other data as normal escaped filename private String insertFileData(String cfgentry, String filedata) { if(filedata==null) { + // TODO: generate good error return String.format("%s %s\n",cfgentry,"missing"); }else if(filedata.startsWith(VpnProfile.INLINE_TAG)){ String datawoheader = filedata.substring(VpnProfile.INLINE_TAG.length()); - return String.format("<%s>\n%s\n\n",cfgentry,datawoheader,cfgentry); + return String.format(Locale.ENGLISH,"<%s>\n%s\n\n",cfgentry,datawoheader,cfgentry); } else { - return String.format("%s %s\n",cfgentry,openVpnEscape(filedata)); + return String.format(Locale.ENGLISH,"%s %s\n",cfgentry,openVpnEscape(filedata)); } } @@ -465,7 +467,7 @@ public class VpnProfile implements Serializable{ long nm = 0xffffffffl; nm = (nm << (32-len)) & 0xffffffffl; - String netmask =String.format("%d.%d.%d.%d", (nm & 0xff000000) >> 24,(nm & 0xff0000) >> 16, (nm & 0xff00) >> 8 ,nm & 0xff ); + String netmask =String.format(Locale.ENGLISH,"%d.%d.%d.%d", (nm & 0xff000000) >> 24,(nm & 0xff0000) >> 16, (nm & 0xff00) >> 8 ,nm & 0xff ); return parts[0] + " " + netmask; } -- cgit v1.2.3