Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf2f17dfff | ||
|
|
a64eb8ac58 | ||
|
|
9ab9230960 | ||
|
|
8f6357d9cf | ||
|
|
73462b08af | ||
|
|
6d07c03bc7 | ||
|
|
953f59ea43 | ||
|
|
6df5179734 | ||
|
|
2f312486a1 | ||
|
|
88d5c01cb0 | ||
|
|
2b05da3aff | ||
|
|
c5a98a9b12 | ||
|
|
5633ae7b21 | ||
|
|
92af48f528 |
@@ -47,13 +47,13 @@ Translators can go to [POEditor](https://poeditor.com/join/project/u5VHO9vhSf) t
|
||||
<ul>
|
||||
<li>redsocks: <a href="https://github.com/shadowsocks/redsocks/blob/shadowsocks-android/README">APL 2.0</a></li>
|
||||
<li>mbed TLS: <a href="https://github.com/ARMmbed/mbedtls/blob/development/LICENSE">APL 2.0</a></li>
|
||||
<li>libevent: <a href="https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/jni/libevent/LICENSE">BSD</a></li>
|
||||
<li>libevent: <a href="https://github.com/shadowsocks/libevent/blob/master/LICENSE">BSD</a></li>
|
||||
<li>tun2socks: <a href="https://github.com/shadowsocks/badvpn/blob/shadowsocks-android/COPYING">BSD</a></li>
|
||||
<li>pcre: <a href="https://android.googlesource.com/platform/external/pcre/+/master/dist2/LICENCE">BSD</a></li>
|
||||
<li>libancillary: <a href="https://github.com/shadowsocks/libancillary/blob/shadowsocks-android/COPYING">BSD</a></li>
|
||||
<li>shadowsocks-libev: <a href="https://github.com/shadowsocks/shadowsocks-libev/blob/master/LICENSE">GPLv3</a></li>
|
||||
<li>overture: <a href="https://github.com/shawn1m/overture/blob/master/LICENSE">MIT</a></li>
|
||||
<li>libev: <a href="https://github.com/shadowsocks/shadowsocks-libev/blob/master/libev/LICENSE">GPLv2</a></li>
|
||||
<li>libev: <a href="https://github.com/shadowsocks/libev/blob/master/LICENSE">GPLv2</a></li>
|
||||
<li>libsodium: <a href="https://github.com/jedisct1/libsodium/blob/master/LICENSE">ISC</a></li>
|
||||
<li>libudns: <a href="https://github.com/shadowsocks/libudns/blob/master/COPYING.LGPL">LGPL</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -10,6 +10,7 @@ lazy val commonSettings = Seq(
|
||||
javacOptions ++= "-source" :: "1.7" :: "-target" :: "1.7" :: Nil,
|
||||
scalacOptions ++= "-target:jvm-1.7" :: "-Xexperimental" :: Nil,
|
||||
ndkArgs := "-j" :: java.lang.Runtime.getRuntime.availableProcessors.toString :: Nil,
|
||||
ndkAbiFilter := Seq("armeabi-v7a", "arm64-v8a", "x86"),
|
||||
|
||||
proguardVersion := "5.3.3",
|
||||
proguardCache := Seq(),
|
||||
|
||||
+6
-13
@@ -4,29 +4,22 @@ enablePlugins(AndroidGms)
|
||||
android.useSupportVectors
|
||||
|
||||
name := "shadowsocks"
|
||||
version := "4.1.6"
|
||||
versionCode := Some(186)
|
||||
version := "4.1.7"
|
||||
versionCode := Some(187)
|
||||
|
||||
proguardOptions ++=
|
||||
"-dontwarn com.evernote.android.job.gcm.**" ::
|
||||
"-dontwarn com.evernote.android.job.util.GcmAvailableHelper" ::
|
||||
"-dontwarn com.google.android.gms.internal.**" ::
|
||||
"-dontwarn com.j256.ormlite.**" ::
|
||||
"-dontwarn okio.**" ::
|
||||
"-dontwarn org.xbill.**" ::
|
||||
"-keep public class com.evernote.android.job.v21.PlatformJobService" ::
|
||||
"-keep public class com.evernote.android.job.v14.PlatformAlarmService" ::
|
||||
"-keep public class com.evernote.android.job.v14.PlatformAlarmReceiver" ::
|
||||
"-keep public class com.evernote.android.job.JobBootReceiver" ::
|
||||
"-keep public class com.evernote.android.job.JobRescheduleService" ::
|
||||
"-keep class com.github.shadowsocks.JniHelper { *; }" ::
|
||||
Nil
|
||||
|
||||
val playServicesVersion = "10.2.1"
|
||||
val playServicesVersion = "10.2.4"
|
||||
resolvers += Resolver.jcenterRepo
|
||||
libraryDependencies ++=
|
||||
"com.futuremind.recyclerfastscroll" % "fastscroll" % "0.2.5" ::
|
||||
"com.evernote" % "android-job" % "1.1.9" ::
|
||||
"com.evernote" % "android-job" % "1.1.10" ::
|
||||
"com.github.jorgecastilloprz" % "fabprogresscircle" % "1.01" ::
|
||||
"com.google.android.gms" % "play-services-ads" % playServicesVersion ::
|
||||
"com.google.android.gms" % "play-services-analytics" % playServicesVersion ::
|
||||
@@ -35,8 +28,8 @@ libraryDependencies ++=
|
||||
"com.j256.ormlite" % "ormlite-android" % "5.0" ::
|
||||
"com.mikepenz" % "crossfader" % "1.5.0" ::
|
||||
"com.mikepenz" % "fastadapter" % "2.5.2" ::
|
||||
"com.mikepenz" % "iconics-core" % "2.8.3" ::
|
||||
"com.mikepenz" % "materialdrawer" % "5.9.0" ::
|
||||
"com.mikepenz" % "iconics-core" % "2.8.4" ::
|
||||
"com.mikepenz" % "materialdrawer" % "5.9.1" ::
|
||||
"com.mikepenz" % "materialize" % "1.0.1" ::
|
||||
"com.squareup.okhttp3" % "okhttp" % "3.7.0" ::
|
||||
"com.twofortyfouram" % "android-plugin-api-for-locale" % "1.0.2" ::
|
||||
|
||||
@@ -291,13 +291,13 @@ along with this program. If not, see <a href="http://www.gnu.org/licenses/">http
|
||||
<ul>
|
||||
<li>redsocks: <a href="https://github.com/shadowsocks/redsocks/blob/shadowsocks-android/README">APL 2.0</a></li>
|
||||
<li>mbed TLS: <a href="https://github.com/ARMmbed/mbedtls/blob/development/LICENSE">APL 2.0</a></li>
|
||||
<li>libevent: <a href="https://github.com/shadowsocks/shadowsocks-android/blob/master/src/main/jni/libevent/LICENSE">BSD</a></li>
|
||||
<li>libevent: <a href="https://github.com/shadowsocks/libevent/blob/master/LICENSE">BSD</a></li>
|
||||
<li>tun2socks: <a href="https://github.com/shadowsocks/badvpn/blob/shadowsocks-android/COPYING">BSD</a></li>
|
||||
<li>pcre: <a href="https://android.googlesource.com/platform/external/pcre/+/master/dist2/LICENCE">BSD</a></li>
|
||||
<li>libancillary: <a href="https://github.com/shadowsocks/libancillary/blob/shadowsocks-android/COPYING">BSD</a></li>
|
||||
<li>shadowsocks-libev: <a href="https://github.com/shadowsocks/shadowsocks-libev/blob/master/LICENSE">GPLv3</a></li>
|
||||
<li>overture: <a href="https://github.com/shawn1m/overture/blob/master/LICENSE">MIT</a></li>
|
||||
<li>libev: <a href="https://github.com/shadowsocks/shadowsocks-libev/blob/master/libev/LICENSE">GPLv2</a></li>
|
||||
<li>libev: <a href="https://github.com/shadowsocks/libev/blob/master/LICENSE">GPLv2</a></li>
|
||||
<li>libsodium: <a href="https://github.com/jedisct1/libsodium/blob/master/LICENSE">ISC</a></li>
|
||||
<li>libudns: <a href="https://github.com/shadowsocks/libudns/blob/master/COPYING.LGPL">LGPL</a></li>
|
||||
</ul>
|
||||
|
||||
Submodule mobile/src/main/jni/badvpn updated: 057ed9f364...af4a5647ea
Submodule mobile/src/main/jni/shadowsocks-libev updated: aaff27ed4d...33fe5adc19
@@ -2,8 +2,7 @@
|
||||
<resources>
|
||||
<string name="quick_toggle">"켜기/끄기"</string>
|
||||
|
||||
<!-- global/misc category -->
|
||||
<string name="misc_cat">"기타"</string>
|
||||
<!-- misc -->
|
||||
<string name="profile">"프로필"</string>
|
||||
<string name="profile_summary">"다른 프로필로 전환하거나 새 프로필 추가"</string>
|
||||
<string name="nat">"NAT 모드 (지원 중단)"</string>
|
||||
@@ -45,4 +44,5 @@
|
||||
<string name="tcp_fastopen_summary">"루트 권한이 필요합니다"</string>
|
||||
<string name="tcp_fastopen_summary_unsupported">"지원하지 않는 버전의 커널입니다: %s < 3.7.1"</string>
|
||||
<string name="udp_dns">"DNS 포워딩"</string>
|
||||
<string name="udp_dns_summary">"모든 DNS 요청을 외부로 포워딩 합니다"</string>
|
||||
</resources>
|
||||
@@ -2,22 +2,28 @@
|
||||
<resources>
|
||||
<string name="quick_toggle">"Подключение"</string>
|
||||
|
||||
<!-- global/misc category -->
|
||||
<string name="misc_cat">"Разное"</string>
|
||||
<!-- misc -->
|
||||
<string name="profile">"Профиль"</string>
|
||||
<string name="profile_summary">"Переключить на другой профиль или добавить новые"</string>
|
||||
<string name="nat">"Режим NAT (не рекомендуется)"</string>
|
||||
<string name="nat_summary">"Использовать режим NAT вместо VPN. Требует ROOT прав."</string>
|
||||
<string name="stat_summary">"Отправлено: \t\t\t\t\t%3$s\t↑\t%1$s/s
|
||||
<string name="remote_dns">"Удалённый DNS"</string>
|
||||
<string name="stat_summary">"Отправлено: \t%3$s\t↑\t%1$s/s
|
||||
Получено: \t%4$s\t↓\t%2$s/s"</string>
|
||||
<string name="stat_profiles">"
|
||||
%1$s↑\t%2$s↓"</string>
|
||||
<string name="traffic_summary">"%1$s/s↑\t%2$s/s↓"</string>
|
||||
<string name="connection_test_pending">"Проверить подключение"</string>
|
||||
<plurals name="bytes">
|
||||
<item quantity="one">"байт"</item>
|
||||
<item quantity="few">"байта"</item>
|
||||
<item quantity="many">"байт"</item>
|
||||
<item quantity="other">"байт"</item>
|
||||
</plurals>
|
||||
<string name="connection_test_pending">"Проверить соединение"</string>
|
||||
<string name="connection_test_testing">"Проверка…"</string>
|
||||
<string name="connection_test_available">"Успешно: %dms задержка"</string>
|
||||
<string name="connection_test_error">"Сбой проверки интернет подключения: %s"</string>
|
||||
<string name="connection_test_fail">"Интернет Недоступен"</string>
|
||||
<string name="connection_test_available">"Успешно: задержка %d мс"</string>
|
||||
<string name="connection_test_error">"Сбой проверки интернет-соединения: %s"</string>
|
||||
<string name="connection_test_fail">"Интернет недоступен"</string>
|
||||
<string name="connection_test_error_status_code">"Код ошибки: #%d"</string>
|
||||
|
||||
<!-- proxy category -->
|
||||
@@ -30,7 +36,7 @@
|
||||
|
||||
<!-- feature category -->
|
||||
<string name="ipv6">"IPv6 Маршрут"</string>
|
||||
<string name="ipv6_summary">"Перенаправлять IPv6 траффик на удалённый сервер"</string>
|
||||
<string name="ipv6_summary">"Перенаправлять трафик IPv6 на удалённый сервер"</string>
|
||||
<string name="route_list">"Маршрут"</string>
|
||||
<string name="route_entry_gfwlist">"Список GFW"</string>
|
||||
<string name="proxied_apps">"Прокси для выбранных приложений"</string>
|
||||
@@ -42,22 +48,23 @@
|
||||
<string name="auto_connect_summary">"Запускать Shadowsocks при включении"</string>
|
||||
<string name="tcp_fastopen_summary">"Переключение требует наличия ROOT прав"</string>
|
||||
<string name="tcp_fastopen_summary_unsupported">"Неподдерживаемая версия ядра: %s < 3.7.1"</string>
|
||||
<string name="udp_dns">"Проброс DNS"</string>
|
||||
<string name="udp_dns_summary">"Пробрасывать DNS пакеты на удалённый сервер"</string>
|
||||
<string name="udp_dns">"Перенаправление DNS"</string>
|
||||
<string name="udp_dns_summary">"Перенаправлять все DNS-запросы на удалённый сервер"</string>
|
||||
|
||||
<!-- notification category -->
|
||||
<string name="forward_success">"Shadowsocks запущен."</string>
|
||||
<string name="invalid_server">"Неправильное имя сервера"</string>
|
||||
<string name="service_failed">"Ошибка при подключении к удалённому серверу"</string>
|
||||
<string name="nat_deprecated">"ВНИМАНИЕ:режим NAT не работает в Android 5.0"</string>
|
||||
<string name="nat_deprecated">"ВНИМАНИЕ: режим NAT не рекомендуется, начиная с Android 5.0"</string>
|
||||
<string name="nat_no_root">"Режим NAT требует наличия ROOT прав"</string>
|
||||
<string name="switch_to_vpn">"Переключить на режим VPN"</string>
|
||||
<string name="stop">"Остановить"</string>
|
||||
<string name="stopping">"Останавливается…"</string>
|
||||
<string name="reboot_required">"Сбой запуска VPN сервиса. Требуется перезагрузка Вашего устройства."</string>
|
||||
<string name="reboot_required">"Не удалось запустить службу VPN. Возможно, требуется перезагрузить ваше устройство."</string>
|
||||
|
||||
<!-- alert category -->
|
||||
<string name="close">"Закрыть"</string>
|
||||
<string name="profile_empty">"Пожалуйста, выберите профиль"</string>
|
||||
<string name="proxy_empty">"Прокси/Пароль не должны быть пустыми"</string>
|
||||
<string name="connect">"Подключить"</string>
|
||||
<string name="recovering">"Сброс…"</string>
|
||||
@@ -69,6 +76,7 @@
|
||||
<string name="recovery">"Сброс"</string>
|
||||
<string name="about">"О приложении"</string>
|
||||
<string name="about_title">"Shadowsocks %s"</string>
|
||||
<string name="edit">"Изменить"</string>
|
||||
<string name="share">"Поделиться"</string>
|
||||
<string name="add_profile">"Добавить Профиль"</string>
|
||||
<string name="action_apply_all">"Применить настройки для всех профилей"</string>
|
||||
@@ -78,19 +86,26 @@
|
||||
<string name="action_export_err">"Сбой экспорта."</string>
|
||||
<string name="action_import_msg">"Успешный импорт!"</string>
|
||||
<string name="action_import_err">"Сбой импорта."</string>
|
||||
|
||||
<!-- profile -->
|
||||
<string name="profile_config">"Настройка профиля"</string>
|
||||
<string name="delete">"Удалить"</string>
|
||||
<string name="delete_confirm_prompt">"Вы уверены, что хотите удалить этот профиль?"</string>
|
||||
<string name="share_qr_nfc">"QR-код/NFC"</string>
|
||||
<string name="add_profile_dialog">"Добавить этот Профиль Shadowsocks?"</string>
|
||||
<string name="add_profile_methods_scan_qr_code">"Сканировать QR код"</string>
|
||||
<string name="add_profile_methods_manual_settings">"Настройка вручную"</string>
|
||||
<string name="add_profile_methods_scan_qr_code">"Сканировать QR-код"</string>
|
||||
<string name="add_profile_methods_manual_settings">"Ручные настройки"</string>
|
||||
<string name="add_profile_scanner_not_installed">"Пожалуйста, установите любое ZXing-совместимое приложение для сканирования QR-кодов."</string>
|
||||
<plurals name="removed">
|
||||
<item quantity="one">"Удалён"</item>
|
||||
<item quantity="few">"%d элементы удалены"</item>
|
||||
<item quantity="many">"%d элементы удалены"</item>
|
||||
<item quantity="other">"%d элементы удалены"</item>
|
||||
<item quantity="one">"Удалено"</item>
|
||||
<item quantity="few">"Удалено %d элемента"</item>
|
||||
<item quantity="many">"Удалено %d элементов"</item>
|
||||
<item quantity="other">"Удалено %d элементов"</item>
|
||||
</plurals>
|
||||
<string name="undo">"Вернуть"</string>
|
||||
|
||||
<!-- tasker -->
|
||||
<string name="toggle_service_state">"Запустить сервисStart the service"</string>
|
||||
<string name="toggle_service_state">"Запустить службу"</string>
|
||||
<string name="start_service_default">"Подключиться к текущему серверу"</string>
|
||||
<string name="start_service">"Подключиться к %s"</string>
|
||||
<string name="stop_service">"Переключить на %s"</string>
|
||||
@@ -99,10 +114,30 @@
|
||||
<!-- status -->
|
||||
<string name="sent">"Отправлено:"</string>
|
||||
<string name="received">"Получено:"</string>
|
||||
<string name="connecting">"Соединение..."</string>
|
||||
<string name="vpn_connected">"Подключено, нажмите для проверки соединения"</string>
|
||||
<string name="nat_connected">"Подключено"</string>
|
||||
<string name="not_connected">"Не подключено"</string>
|
||||
|
||||
<!-- acl -->
|
||||
<string name="custom_rules">"Пользовательские правила"</string>
|
||||
<string name="action_selection">"Выделение..."</string>
|
||||
<string name="action_add_rule">"Добавить правило..."</string>
|
||||
<string name="edit_rule">"Редактировать правило"</string>
|
||||
<string name="route_entry_all">"Все"</string>
|
||||
<string name="route_entry_bypass_lan">"Обход LAN"</string>
|
||||
<string name="route_entry_bypass_chn">"Обходной Китай"</string>
|
||||
<string name="route_entry_bypass_lan_chn">"Обход LAN и Китай"</string>
|
||||
<string name="route_entry_bypass_lan">"Все, кроме LAN"</string>
|
||||
<string name="route_entry_bypass_chn">"Все, кроме Китая"</string>
|
||||
<string name="route_entry_bypass_lan_chn">"Все, кроме LAN и Китая"</string>
|
||||
<string name="route_entry_chinalist">"Список Китай"</string>
|
||||
<string name="proxied_apps_summary_v21">"Установить прокси для выбранных приложений"</string>
|
||||
<string name="acl_rule_templates_generic">"Подсеть/Регулярное выражение (PCRE) имени хоста"</string>
|
||||
<string name="acl_rule_templates_domain">"Доменное имя и все его поддомены"</string>
|
||||
|
||||
<!-- plugin -->
|
||||
<string name="plugin">"Плагин"</string>
|
||||
<string name="plugin_configure">"Настроить..."</string>
|
||||
<string name="plugin_disabled">"Отключён"</string>
|
||||
<string name="plugin_unknown">"Неизвестный плагин %s"</string>
|
||||
<string name="plugin_untrusted">"Предупреждение: этот плагин получен из недоверенного источника."</string>
|
||||
<string name="profile_plugin">"Плагин: %s"</string>
|
||||
</resources>
|
||||
@@ -2,8 +2,7 @@
|
||||
<resources>
|
||||
<string name="quick_toggle">"切換"</string>
|
||||
|
||||
<!-- global/misc category -->
|
||||
<string name="misc_cat">"其他"</string>
|
||||
<!-- misc -->
|
||||
<string name="profile">"設定檔"</string>
|
||||
<string name="profile_summary">"切換至其他設定檔或新增新設定檔"</string>
|
||||
<string name="nat">"NAT 模式 (已過時)"</string>
|
||||
@@ -124,4 +123,12 @@
|
||||
<string name="proxied_apps_summary_v21">"為已選擇的應用程式設定 Proxy"</string>
|
||||
<string name="acl_rule_templates_generic">"子網路/主機名稱 PCRE 模式"</string>
|
||||
<string name="acl_rule_templates_domain">"網域及其所有子網域"</string>
|
||||
</resources>
|
||||
|
||||
<!-- plugin -->
|
||||
<string name="plugin">"插件"</string>
|
||||
<string name="plugin_configure">"配置..."</string>
|
||||
<string name="plugin_disabled">"未啟用"</string>
|
||||
<string name="plugin_unknown">"未知插件 %s"</string>
|
||||
<string name="plugin_untrusted">"警告:該插件似乎不是來自一個已知的可信任源。"</string>
|
||||
<string name="profile_plugin">"插件: %s"</string>
|
||||
</resources>
|
||||
|
||||
@@ -317,7 +317,7 @@ trait BaseService extends Service {
|
||||
|
||||
protected final def buildOvertureConfig(file: String): String = {
|
||||
val config = new JSONObject()
|
||||
.put("BindAddress", ":" + (profile.localPort + 53))
|
||||
.put("BindAddress", "127.0.0.1:" + (profile.localPort + 53))
|
||||
.put("RedirectIPv6Record", true)
|
||||
.put("DomainBase64Decode", true)
|
||||
.put("HostsFile", "hosts")
|
||||
|
||||
@@ -384,7 +384,6 @@ class MainActivity extends Activity with ServiceBoundContext with Drawer.OnDrawe
|
||||
displayFragment(new AboutFragment)
|
||||
case DRAWER_FAQ => launchUrl(getString(R.string.faq_url))
|
||||
case DRAWER_CUSTOM_RULES => displayFragment(new CustomRulesFragment)
|
||||
case _ => // ignore
|
||||
}
|
||||
true // unexpected cases will throw exception
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ class ShadowsocksApplication extends Application {
|
||||
checkChineseLocale(getResources.getConfiguration)
|
||||
|
||||
FirebaseApp.initializeApp(this)
|
||||
remoteConfig.setDefaults(R.xml.default_configs);
|
||||
remoteConfig.setDefaults(R.xml.default_configs)
|
||||
remoteConfig.fetch().addOnCompleteListener(task => if (task.isSuccessful) remoteConfig.activateFetched())
|
||||
|
||||
JobManager.create(this).addJobCreator(DonaldTrump)
|
||||
|
||||
@@ -143,7 +143,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
def handleConnection() {
|
||||
|
||||
|
||||
startShadowsocksDaemon()
|
||||
|
||||
if (!profile.udpdns) {
|
||||
@@ -214,7 +214,9 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
||||
}
|
||||
}
|
||||
|
||||
if (profile.route == Acl.ALL || profile.route == Acl.BYPASS_CHN) {
|
||||
if (profile.route == Acl.ALL
|
||||
|| profile.route == Acl.BYPASS_CHN
|
||||
|| profile.route == Acl.CUSTOM_RULES) {
|
||||
builder.addRoute("0.0.0.0", 0)
|
||||
} else {
|
||||
getResources.getStringArray(R.array.bypass_private_route).foreach(cidr => {
|
||||
@@ -245,7 +247,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
||||
cmd += "--enable-udprelay"
|
||||
|
||||
if (!profile.udpdns)
|
||||
cmd += ("--dnsgw", "%s:%d".formatLocal(Locale.ENGLISH, PRIVATE_VLAN.formatLocal(Locale.ENGLISH, "1"),
|
||||
cmd += ("--dnsgw", "%s:%d".formatLocal(Locale.ENGLISH, "127.0.0.1",
|
||||
profile.localPort + 53))
|
||||
|
||||
tun2socksProcess = new GuardedProcess(cmd: _*).start(() => sendFd(fd))
|
||||
|
||||
@@ -46,8 +46,6 @@ object AclSyncJob {
|
||||
}
|
||||
|
||||
class AclSyncJob(route: String) extends Job {
|
||||
var rescheduled = 0
|
||||
|
||||
override def onRunJob(params: Params): Result = {
|
||||
try {
|
||||
//noinspection JavaAccessorMethodCalledAsEmptyParen
|
||||
@@ -57,11 +55,7 @@ class AclSyncJob(route: String) extends Job {
|
||||
} catch {
|
||||
case e: IOException =>
|
||||
e.printStackTrace()
|
||||
rescheduled += 1
|
||||
if (rescheduled < AclSyncJob.MAX_RESCHEDULE)
|
||||
Result.RESCHEDULE
|
||||
else
|
||||
Result.FAILURE
|
||||
if (params.getFailureCount < AclSyncJob.MAX_RESCHEDULE) Result.RESCHEDULE else Result.FAILURE
|
||||
case e: Exception => // unknown failures, probably shouldn't retry
|
||||
e.printStackTrace()
|
||||
Result.FAILURE
|
||||
|
||||
+1
-1
Submodule mobile/src/overture/go updated: 86036dcce8...26db64c766
Submodule mobile/src/overture/src/github.com/shadowsocks/overture updated: 7263b82d2e...6d51c15e28
@@ -6,4 +6,10 @@
|
||||
|
||||
<!-- feature category -->
|
||||
<string name="feature_cat">"Дополнительные Настройки"</string>
|
||||
|
||||
<!-- alert category -->
|
||||
<string name="yes">"Да"</string>
|
||||
<string name="no">"Нет"</string>
|
||||
<string name="unsaved_changes_prompt">"Изменения не сохранены. Сохранить?"</string>
|
||||
<string name="apply">"Применить"</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user