From ca4067c6a099893e8fd2e0cf70838cef13078217 Mon Sep 17 00:00:00 2001 From: Meenbeese Date: Sat, 14 Dec 2024 09:21:56 -0500 Subject: [PATCH] Refactor and rewrite the OrbotConstants --- .../java/org/torproject/android/OrbotApp.kt | 6 +- .../android/ui/AppManagerActivity.kt | 2 +- orbotservice/build.gradle | 5 + .../android/service/OrbotConstants.java | 186 ----------------- .../android/service/OrbotConstants.kt | 192 ++++++++++++++++++ .../android/service/OrbotService.java | 3 +- .../android/service/StartTorReceiver.java | 6 +- .../android/service/vpn/OrbotVpnManager.java | 8 +- 8 files changed, 212 insertions(+), 196 deletions(-) delete mode 100644 orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java create mode 100644 orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.kt diff --git a/app/src/main/java/org/torproject/android/OrbotApp.kt b/app/src/main/java/org/torproject/android/OrbotApp.kt index bb4d77d2f..2b2be6bb5 100644 --- a/app/src/main/java/org/torproject/android/OrbotApp.kt +++ b/app/src/main/java/org/torproject/android/OrbotApp.kt @@ -1,15 +1,15 @@ package org.torproject.android import android.app.Application -import android.content.Intent import android.content.res.Configuration + import org.torproject.android.core.Languages import org.torproject.android.core.LocaleHelper -import org.torproject.android.service.OrbotConstants import org.torproject.android.service.util.Prefs + import java.util.Locale -class OrbotApp : Application(), OrbotConstants { +class OrbotApp : Application() { override fun onCreate() { diff --git a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.kt b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.kt index 17365acb9..882ebdf68 100644 --- a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.kt +++ b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.kt @@ -39,7 +39,7 @@ import org.torproject.android.service.vpn.TorifiedApp import java.util.Arrays import java.util.StringTokenizer -class AppManagerActivity : AppCompatActivity(), View.OnClickListener, OrbotConstants { +class AppManagerActivity : AppCompatActivity(), View.OnClickListener { inner class TorifiedAppWrapper { var header: String? = null var subheader: String? = null diff --git a/orbotservice/build.gradle b/orbotservice/build.gradle index 9f983368c..58681a8ad 100644 --- a/orbotservice/build.gradle +++ b/orbotservice/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.library' apply from: "../commons.gradle" apply from : '../dependencies.gradle' +apply plugin: 'org.jetbrains.kotlin.android' android { defaultConfig { @@ -31,6 +32,9 @@ android { xmlReport false } namespace 'org.torproject.android.service' + kotlinOptions { + jvmTarget = '17' + } } dependencies { @@ -52,4 +56,5 @@ dependencies { ) implementation files('../libs/geoip.jar') + implementation 'androidx.core:core-ktx:1.10.1' } diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java deleted file mode 100644 index 3c8a4215b..000000000 --- a/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.java +++ /dev/null @@ -1,186 +0,0 @@ -/* Copyright (c) 2009, Nathan Freitas, Orbot/The Guardian Project - http://openideals.com/guardian */ -/* See LICENSE for licensing information */ - -package org.torproject.android.service; - -import android.content.Intent; - -import org.torproject.jni.TorService; - -import java.util.Arrays; -import java.util.List; - -public interface OrbotConstants { - - String TAG = "Orbot"; - - String PREF_OR = "pref_or"; - String PREF_OR_PORT = "pref_or_port"; - String PREF_OR_NICKNAME = "pref_or_nickname"; - String PREF_REACHABLE_ADDRESSES = "pref_reachable_addresses"; - String PREF_REACHABLE_ADDRESSES_PORTS = "pref_reachable_addresses_ports"; - - String PREF_TOR_SHARED_PREFS = "org.torproject.android_preferences"; - - String PREF_SOCKS = "pref_socks"; - - String PREF_HTTP = "pref_http"; - - String PREF_ISOLATE_DEST = "pref_isolate_dest"; - String PREF_ISOLATE_PORT = "pref_isolate_port"; - String PREF_ISOLATE_PROTOCOL = "pref_isolate_protocol"; - - String PREF_CONNECTION_PADDING = "pref_connection_padding"; - String PREF_REDUCED_CONNECTION_PADDING = "pref_reduced_connection_padding"; - String PREF_CIRCUIT_PADDING = "pref_circuit_padding"; - String PREF_REDUCED_CIRCUIT_PADDING = "pref_reduced_circuit_padding"; - - String PREF_PREFER_IPV6 = "pref_prefer_ipv6"; - String PREF_DISABLE_IPV4 = "pref_disable_ipv4"; - - - String APP_TOR_KEY = "_app_tor"; - String APP_DATA_KEY = "_app_data"; - String APP_WIFI_KEY = "_app_wifi"; - - - String DIRECTORY_TOR_DATA = "tordata"; - - //geoip data file asset key - String GEOIP_ASSET_KEY = "geoip"; - String GEOIP6_ASSET_KEY = "geoip6"; - - int TOR_TRANSPROXY_PORT_DEFAULT = 9040; - - int TOR_DNS_PORT_DEFAULT = 5400; - - String HTTP_PROXY_PORT_DEFAULT = "8118"; // like Privoxy! - String SOCKS_PROXY_PORT_DEFAULT = "9050"; - - //control port - String LOG_NOTICE_HEADER = "NOTICE: "; - String LOG_NOTICE_BOOTSTRAPPED = "Bootstrapped"; - - /** - * A request to Orbot to transparently start Tor services - */ - String ACTION_START = TorService.ACTION_START; - String ACTION_STOP = "org.torproject.android.intent.action.STOP"; - - // needed when Orbot exits and tor is not running, but the notification is still active - String ACTION_STOP_FOREGROUND_TASK = "org.torproject.android.intent.action.STOP_FOREGROUND_TASK"; - - String ACTION_START_VPN = "org.torproject.android.intent.action.START_VPN"; - String ACTION_STOP_VPN = "org.torproject.android.intent.action.STOP_VPN"; - String ACTION_RESTART_VPN = "org.torproject.android.intent.action.RESTART_VPN"; - - String ACTION_LOCAL_LOCALE_SET = "org.torproject.android.intent.LOCAL_LOCALE_SET"; - - String ACTION_UPDATE_ONION_NAMES = "org.torproject.android.intent.action.UPDATE_ONION_NAMES"; - - /** - * {@link Intent} send by Orbot with {@code ON/OFF/STARTING/STOPPING} status - */ - String ACTION_STATUS = TorService.ACTION_STATUS; - /** - * {@code String} that contains a status constant: {@link #STATUS_ON}, - * {@link #STATUS_OFF}, {@link #STATUS_STARTING}, or - * {@link #STATUS_STOPPING} - */ - String EXTRA_STATUS = TorService.EXTRA_STATUS; - /** - * A {@link String} {@code packageName} for Orbot to direct its status reply - * to, used in {@link #ACTION_START} {@link Intent}s sent to Orbot - */ - String EXTRA_PACKAGE_NAME = TorService.EXTRA_PACKAGE_NAME; - /** - * The SOCKS proxy settings in URL form. - */ - String EXTRA_SOCKS_PROXY = "org.torproject.android.intent.extra.SOCKS_PROXY"; - String EXTRA_SOCKS_PROXY_HOST = "org.torproject.android.intent.extra.SOCKS_PROXY_HOST"; - String EXTRA_SOCKS_PROXY_PORT = "org.torproject.android.intent.extra.SOCKS_PROXY_PORT"; - /** - * The HTTP proxy settings in URL form. - */ - String EXTRA_HTTP_PROXY = "org.torproject.android.intent.extra.HTTP_PROXY"; - String EXTRA_HTTP_PROXY_HOST = "org.torproject.android.intent.extra.HTTP_PROXY_HOST"; - String EXTRA_HTTP_PROXY_PORT = "org.torproject.android.intent.extra.HTTP_PROXY_PORT"; - - String EXTRA_DNS_PORT = "org.torproject.android.intent.extra.DNS_PORT"; - String EXTRA_TRANS_PORT = "org.torproject.android.intent.extra.TRANS_PORT"; - /** - * When present, indicates with certainty that the system itself did *not* send the Intent. - * Effectively, the lack of this extra indicates that the VPN is being started by the system - * as a result of the user's always-on preference for the VPN. - * See: - * Detect always-on | VPN | Android Developers - */ - String EXTRA_NOT_SYSTEM = "org.torproject.android.intent.extra.NOT_SYSTEM"; - - String LOCAL_ACTION_LOG = "log"; - String LOCAL_ACTION_STATUS = "status"; - String LOCAL_ACTION_BANDWIDTH = "bandwidth"; - String LOCAL_EXTRA_TOTAL_READ = "totalRead"; - String LOCAL_EXTRA_TOTAL_WRITTEN = "totalWritten"; - String LOCAL_EXTRA_LAST_WRITTEN = "lastWritten"; - String LOCAL_EXTRA_LAST_READ = "lastRead"; - String LOCAL_EXTRA_LOG = "log"; - String LOCAL_EXTRA_BOOTSTRAP_PERCENT = "percent"; - String LOCAL_ACTION_PORTS = "ports"; - String LOCAL_ACTION_V3_NAMES_UPDATED = "V3_NAMES_UPDATED"; - String LOCAL_ACTION_NOTIFICATION_START = "notification_start"; - String LOCAL_ACTION_SMART_CONNECT_EVENT = "smart"; - String LOCAL_EXTRA_SMART_STATUS = "status"; - String SMART_STATUS_NO_DIRECT = "no_direct"; - String SMART_STATUS_CIRCUMVENTION_ATTEMPT_FAILED = "bad_attempt_suggestion"; - - - /** - * All tor-related services and daemons are stopped - */ - String STATUS_OFF = TorService.STATUS_OFF; - - /** - * All tor-related services and daemons have completed starting - */ - String STATUS_ON = TorService.STATUS_ON; - String STATUS_STARTING = TorService.STATUS_STARTING; - String STATUS_STOPPING = TorService.STATUS_STOPPING; - - /** - * The user has disabled the ability for background starts triggered by - * apps. Fallback to the old {@link Intent} action that brings up Orbot: - * {@link #ACTION_START} - */ - String STATUS_STARTS_DISABLED = "STARTS_DISABLED"; - - // actions for internal command Intents - String CMD_SET_EXIT = "setexit"; - String CMD_ACTIVE = "ACTIVE"; - String CMD_SNOWFLAKE_PROXY = "sf_proxy"; - - String ONION_SERVICES_DIR = "v3_onion_services"; - String V3_CLIENT_AUTH_DIR = "v3_client_auth"; - - String PREFS_DNS_PORT = "PREFS_DNS_PORT"; - - String PREFS_KEY_TORIFIED = "PrefTord"; - - /** - * Include packages here to make the VPNService ignore these apps. This is to - * prevent tor over tor scenarios... - */ - List BYPASS_VPN_PACKAGES = Arrays.asList( - "org.torproject.torbrowser_alpha", - "org.torproject.torbrowser", - "org.onionshare.android", // issue #618 - "org.onionshare.android.fdroid", - "org.briarproject.briar.android", // https://github.com/guardianproject/orbot/issues/474 - "im.cwtch.flwtch" - ); - - List VPN_SUGGESTED_APPS = Arrays.asList("org.thoughtcrime.securesms", // Signal - "com.whatsapp", "com.instagram.android", "im.vector.app", "org.telegram.messenger", "com.twitter.android", "com.facebook.orca", "com.facebook.mlite", "com.brave.browser", "org.mozilla.focus"); - - String ONION_EMOJI = "\uD83E\uDDC5"; -} diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.kt b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.kt new file mode 100644 index 000000000..e5a2db974 --- /dev/null +++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotConstants.kt @@ -0,0 +1,192 @@ +package org.torproject.android.service + +import org.torproject.jni.TorService + +object OrbotConstants { + const val TAG = "Orbot" + + const val PREF_OR = "pref_or" + const val PREF_OR_PORT = "pref_or_port" + const val PREF_OR_NICKNAME = "pref_or_nickname" + const val PREF_REACHABLE_ADDRESSES = "pref_reachable_addresses" + const val PREF_REACHABLE_ADDRESSES_PORTS = "pref_reachable_addresses_ports" + + const val PREF_TOR_SHARED_PREFS = "org.torproject.android_preferences" + + const val PREF_SOCKS = "pref_socks" + + const val PREF_HTTP = "pref_http" + + const val PREF_ISOLATE_DEST = "pref_isolate_dest" + const val PREF_ISOLATE_PORT = "pref_isolate_port" + const val PREF_ISOLATE_PROTOCOL = "pref_isolate_protocol" + + const val PREF_CONNECTION_PADDING = "pref_connection_padding" + const val PREF_REDUCED_CONNECTION_PADDING = "pref_reduced_connection_padding" + const val PREF_CIRCUIT_PADDING = "pref_circuit_padding" + const val PREF_REDUCED_CIRCUIT_PADDING = "pref_reduced_circuit_padding" + + const val PREF_PREFER_IPV6 = "pref_prefer_ipv6" + const val PREF_DISABLE_IPV4 = "pref_disable_ipv4" + + + const val APP_TOR_KEY = "_app_tor" + const val APP_DATA_KEY = "_app_data" + const val APP_WIFI_KEY = "_app_wifi" + + + const val DIRECTORY_TOR_DATA = "tordata" + + // geoip data file asset key + const val GEOIP_ASSET_KEY = "geoip" + const val GEOIP6_ASSET_KEY = "geoip6" + + const val TOR_TRANSPROXY_PORT_DEFAULT = 9040 + + const val TOR_DNS_PORT_DEFAULT = 5400 + + const val HTTP_PROXY_PORT_DEFAULT = "8118" // like Privoxy! + const val SOCKS_PROXY_PORT_DEFAULT = "9050" + + // control port + const val LOG_NOTICE_HEADER = "NOTICE: " + const val LOG_NOTICE_BOOTSTRAPPED = "Bootstrapped" + + /** + * A request to Orbot to transparently start Tor services + */ + const val ACTION_START = TorService.ACTION_START + const val ACTION_STOP = "org.torproject.android.intent.action.STOP" + + // needed when Orbot exits and tor is not running, but the notification is still active + const val ACTION_STOP_FOREGROUND_TASK = "org.torproject.android.intent.action.STOP_FOREGROUND_TASK" + + const val ACTION_START_VPN = "org.torproject.android.intent.action.START_VPN" + const val ACTION_STOP_VPN = "org.torproject.android.intent.action.STOP_VPN" + const val ACTION_RESTART_VPN = "org.torproject.android.intent.action.RESTART_VPN" + + const val ACTION_LOCAL_LOCALE_SET = "org.torproject.android.intent.LOCAL_LOCALE_SET" + + const val ACTION_UPDATE_ONION_NAMES = "org.torproject.android.intent.action.UPDATE_ONION_NAMES" + + /** + * [Intent] send by Orbot with `ON/OFF/STARTING/STOPPING` status + */ + const val ACTION_STATUS = TorService.ACTION_STATUS + + /** + * `String` that contains a status constant: [.STATUS_ON], + * [.STATUS_OFF], [.STATUS_STARTING], or + * [.STATUS_STOPPING] + */ + const val EXTRA_STATUS = TorService.EXTRA_STATUS + + /** + * A [String] `packageName` for Orbot to direct its status reply + * to, used in [.ACTION_START] [Intent]s sent to Orbot + */ + const val EXTRA_PACKAGE_NAME = TorService.EXTRA_PACKAGE_NAME + + /** + * The SOCKS proxy settings in URL form. + */ + const val EXTRA_SOCKS_PROXY = "org.torproject.android.intent.extra.SOCKS_PROXY" + const val EXTRA_SOCKS_PROXY_HOST = "org.torproject.android.intent.extra.SOCKS_PROXY_HOST" + const val EXTRA_SOCKS_PROXY_PORT = "org.torproject.android.intent.extra.SOCKS_PROXY_PORT" + + /** + * The HTTP proxy settings in URL form. + */ + const val EXTRA_HTTP_PROXY = "org.torproject.android.intent.extra.HTTP_PROXY" + const val EXTRA_HTTP_PROXY_HOST = "org.torproject.android.intent.extra.HTTP_PROXY_HOST" + const val EXTRA_HTTP_PROXY_PORT = "org.torproject.android.intent.extra.HTTP_PROXY_PORT" + + const val EXTRA_DNS_PORT = "org.torproject.android.intent.extra.DNS_PORT" + const val EXTRA_TRANS_PORT = "org.torproject.android.intent.extra.TRANS_PORT" + + /** + * When present, indicates with certainty that the system itself did *not* send the Intent. + * Effectively, the lack of this extra indicates that the VPN is being started by the system + * as a result of the user's always-on preference for the VPN. + * See: [Detect always-on | VPN | Android Developers](https://developer.android.com/guide/topics/connectivity/vpn#detect_always-on) + */ + const val EXTRA_NOT_SYSTEM = "org.torproject.android.intent.extra.NOT_SYSTEM" + + const val LOCAL_ACTION_LOG = "log" + const val LOCAL_ACTION_STATUS = "status" + const val LOCAL_ACTION_BANDWIDTH = "bandwidth" + const val LOCAL_EXTRA_TOTAL_READ = "totalRead" + const val LOCAL_EXTRA_TOTAL_WRITTEN = "totalWritten" + const val LOCAL_EXTRA_LAST_WRITTEN = "lastWritten" + const val LOCAL_EXTRA_LAST_READ = "lastRead" + const val LOCAL_EXTRA_LOG = "log" + const val LOCAL_EXTRA_BOOTSTRAP_PERCENT = "percent" + const val LOCAL_ACTION_PORTS = "ports" + const val LOCAL_ACTION_V3_NAMES_UPDATED = "V3_NAMES_UPDATED" + const val LOCAL_ACTION_NOTIFICATION_START = "notification_start" + const val LOCAL_ACTION_SMART_CONNECT_EVENT = "smart" + const val LOCAL_EXTRA_SMART_STATUS = "status" + const val SMART_STATUS_NO_DIRECT = "no_direct" + const val SMART_STATUS_CIRCUMVENTION_ATTEMPT_FAILED = "bad_attempt_suggestion" + + + /** + * All tor-related services and daemons are stopped + */ + const val STATUS_OFF = TorService.STATUS_OFF + + /** + * All tor-related services and daemons have completed starting + */ + const val STATUS_ON = TorService.STATUS_ON + const val STATUS_STARTING = TorService.STATUS_STARTING + const val STATUS_STOPPING = TorService.STATUS_STOPPING + + /** + * The user has disabled the ability for background starts triggered by + * apps. Fallback to the old [Intent] action that brings up Orbot: + * [.ACTION_START] + */ + const val STATUS_STARTS_DISABLED = "STARTS_DISABLED" + + // actions for internal command Intents + const val CMD_SET_EXIT = "setexit" + const val CMD_ACTIVE = "ACTIVE" + const val CMD_SNOWFLAKE_PROXY = "sf_proxy" + + const val ONION_SERVICES_DIR = "v3_onion_services" + const val V3_CLIENT_AUTH_DIR = "v3_client_auth" + + const val PREFS_DNS_PORT: String = "PREFS_DNS_PORT" + + const val PREFS_KEY_TORIFIED: String = "PrefTord" + + /** + * Include packages here to make the VPNService ignore these apps. This is to + * prevent tor over tor scenarios... + */ + @JvmField + val BYPASS_VPN_PACKAGES = mutableListOf( + "org.torproject.torbrowser_alpha", + "org.torproject.torbrowser", + "org.onionshare.android", // issue #618 + "org.onionshare.android.fdroid", + "org.briarproject.briar.android", // https://github.com/guardianproject/orbot/issues/474 + "im.cwtch.flwtch", + ) + + val VPN_SUGGESTED_APPS = mutableListOf( + "org.thoughtcrime.securesms", // Signal + "com.whatsapp", + "com.instagram.android", + "im.vector.app", + "org.telegram.messenger", + "com.twitter.android", + "com.facebook.orca", + "com.facebook.mlite", + "com.brave.browser", + "org.mozilla.focus", + ) + + const val ONION_EMOJI: String = "\uD83E\uDDC5" +} diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java index 3ff956c1f..2180b83f2 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java +++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java @@ -3,6 +3,7 @@ package org.torproject.android.service; +import static org.torproject.android.service.OrbotConstants.*; import static org.torproject.jni.TorService.ACTION_ERROR; import android.annotation.SuppressLint; @@ -83,7 +84,7 @@ @SuppressWarnings("StringConcatenationInsideStringBufferAppend") -public class OrbotService extends VpnService implements OrbotConstants { +public class OrbotService extends VpnService { public final static String BINARY_TOR_VERSION = TorService.VERSION_NAME; diff --git a/orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java b/orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java index fa5229bdc..a912b9220 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java +++ b/orbotservice/src/main/java/org/torproject/android/service/StartTorReceiver.java @@ -1,5 +1,7 @@ package org.torproject.android.service; +import static org.torproject.android.service.OrbotConstants.*; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -10,7 +12,7 @@ import org.torproject.android.service.util.Prefs; -public class StartTorReceiver extends BroadcastReceiver implements OrbotConstants { +public class StartTorReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { @@ -24,7 +26,7 @@ public void onReceive(Context context, Intent intent) { if (Prefs.allowBackgroundStarts()) { Intent startTorIntent = new Intent(context, OrbotService.class).setAction(action).putExtra(OrbotConstants.EXTRA_NOT_SYSTEM, true); if (packageName != null) { - startTorIntent.putExtra(OrbotService.EXTRA_PACKAGE_NAME, packageName); + startTorIntent.putExtra(OrbotConstants.EXTRA_PACKAGE_NAME, packageName); } ContextCompat.startForegroundService(context, startTorIntent); } else if (!TextUtils.isEmpty(packageName)) { diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java index d14217f00..c52111f22 100644 --- a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java +++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java @@ -16,6 +16,8 @@ package org.torproject.android.service.vpn; +import static org.torproject.android.service.OrbotConstants.*; + import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; @@ -51,7 +53,7 @@ import IPtProxy.IPtProxy; import IPtProxy.PacketFlow; -public class OrbotVpnManager implements Handler.Callback, OrbotConstants { +public class OrbotVpnManager implements Handler.Callback { private static final String TAG = "OrbotVpnManager"; boolean isStarted = false; private final static String mSessionName = "OrbotVPN"; @@ -96,9 +98,9 @@ public void handleIntent(VpnService.Builder builder, Intent intent) { } case OrbotConstants.LOCAL_ACTION_PORTS -> { Log.d(TAG, "setting VPN ports"); - int torSocks = intent.getIntExtra(OrbotService.EXTRA_SOCKS_PROXY_PORT, -1); + int torSocks = intent.getIntExtra(OrbotConstants.EXTRA_SOCKS_PROXY_PORT, -1); // int torHttp = intent.getIntExtra(OrbotService.EXTRA_HTTP_PROXY_PORT,-1); - int torDns = intent.getIntExtra(OrbotService.EXTRA_DNS_PORT, -1); + int torDns = intent.getIntExtra(OrbotConstants.EXTRA_DNS_PORT, -1); //if running, we need to restart if ((torSocks != -1 && torSocks != mTorSocks && torDns != -1 && torDns != mTorDns)) {