From 5f4de7ff9df41e1bb409cf08ea4c6de38c787da6 Mon Sep 17 00:00:00 2001 From: HMBSbige Date: Mon, 16 Sep 2019 21:59:06 +0800 Subject: [PATCH] Fix typo and reformat code --- .../com/github/shadowsocks/BaseService.java | 24 ++--- .../github/shadowsocks/BaseVpnService.java | 22 ++-- .../shadowsocks/ProfileManagerActivity.java | 101 +++++++++--------- .../shadowsocks/ServiceBoundContext.java | 50 +++++---- .../shadowsocks/ServiceBoundService.java | 50 +++++---- .../com/github/shadowsocks/Shadowsocks.java | 89 +++++++-------- .../shadowsocks/ShadowsocksApplication.java | 29 ++--- .../shadowsocks/ShadowsocksNotification.java | 10 +- .../ShadowsocksQuickSwitchActivity.java | 2 +- .../shadowsocks/ShadowsocksRunnerService.java | 44 ++++---- .../shadowsocks/ShadowsocksSettings.java | 8 +- .../github/shadowsocks/database/DBHelper.java | 41 ++++--- .../github/shadowsocks/database/Profile.java | 29 +---- .../shadowsocks/database/ProfileManager.java | 26 ++--- .../shadowsocks/job/SSRSubUpdateJob.java | 6 +- .../shadowsocks/network/ping/PingCallback.kt | 7 +- .../shadowsocks/network/ping/PingHelper.kt | 25 +++-- .../network/request/RequestHelper.kt | 49 ++------- .../network/ssrsub/SubUpdateCallback.kt | 2 +- .../network/ssrsub/SubUpdateHelper.kt | 16 +-- .../preferences/DropDownPreference.java | 62 +++++------ .../preferences/NumberPickerPreference.java | 30 +++--- .../github/shadowsocks/utils/Constants.java | 12 +-- 23 files changed, 311 insertions(+), 423 deletions(-) diff --git a/app/src/main/java/com/github/shadowsocks/BaseService.java b/app/src/main/java/com/github/shadowsocks/BaseService.java index 70bae19d..bcbd9f7c 100644 --- a/app/src/main/java/com/github/shadowsocks/BaseService.java +++ b/app/src/main/java/com/github/shadowsocks/BaseService.java @@ -82,23 +82,16 @@ @SuppressLint("Registered") public abstract class BaseService extends Service { + public static final String protectPath = ShadowsocksApplication.app.getApplicationInfo().dataDir + "/protect_path"; private static final String TAG = BaseService.class.getSimpleName(); - - private int state = Constants.State.STOPPED; + private static final Handler handler = new Handler(Looper.getMainLooper()); + private final RemoteCallbackList callbacks; protected Profile profile; - + private int state = Constants.State.STOPPED; private Timer timer; private TrafficMonitorThread trafficMonitorThread; - - private final RemoteCallbackList callbacks; private int callbacksCount; - private static final Handler handler = new Handler(Looper.getMainLooper()); - public static final String protectPath = ShadowsocksApplication.app.getApplicationInfo().dataDir + "/protect_path"; - - public BaseService() { - callbacks = new RemoteCallbackList<>(); - } - + private boolean closeReceiverRegistered; private BroadcastReceiver closeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -106,9 +99,6 @@ public void onReceive(Context context, Intent intent) { stopRunner(true); } }; - - private boolean closeReceiverRegistered; - public IShadowsocksService.Stub binder = new IShadowsocksService.Stub() { @Override public int getState() { @@ -196,6 +186,10 @@ public void useSync(int profileId) { } }; + public BaseService() { + callbacks = new RemoteCallbackList<>(); + } + private boolean checkProfile(Profile profile) { if (TextUtils.isEmpty(profile.host) || TextUtils.isEmpty(profile.password)) { stopRunner(true, getString(R.string.proxy_empty)); diff --git a/app/src/main/java/com/github/shadowsocks/BaseVpnService.java b/app/src/main/java/com/github/shadowsocks/BaseVpnService.java index 2184e42b..b141e06b 100644 --- a/app/src/main/java/com/github/shadowsocks/BaseVpnService.java +++ b/app/src/main/java/com/github/shadowsocks/BaseVpnService.java @@ -86,23 +86,16 @@ @SuppressLint("Registered") public abstract class BaseVpnService extends VpnService { + public static final String protectPath = ShadowsocksApplication.app.getApplicationInfo().dataDir + "/protect_path"; private static final String TAG = BaseVpnService.class.getSimpleName(); - - private int state = Constants.State.STOPPED; + private final RemoteCallbackList callbacks; protected Profile profile; - + private int state = Constants.State.STOPPED; private Timer timer; private TrafficMonitorThread trafficMonitorThread; - - private final RemoteCallbackList callbacks; private int callbacksCount; private Handler handler = new Handler(Looper.getMainLooper()); - public static final String protectPath = ShadowsocksApplication.app.getApplicationInfo().dataDir + "/protect_path"; - - public BaseVpnService() { - callbacks = new RemoteCallbackList<>(); - } - + private boolean closeReceiverRegistered; private BroadcastReceiver closeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -110,9 +103,6 @@ public void onReceive(Context context, Intent intent) { stopRunner(true); } }; - - private boolean closeReceiverRegistered; - public IShadowsocksService.Stub binder = new IShadowsocksService.Stub() { @Override public int getState() { @@ -200,6 +190,10 @@ public void useSync(int profileId) { } }; + public BaseVpnService() { + callbacks = new RemoteCallbackList<>(); + } + private boolean checkProfile(Profile profile) { if (TextUtils.isEmpty(profile.host) || TextUtils.isEmpty(profile.password)) { stopRunner(true, getString(R.string.proxy_empty)); diff --git a/app/src/main/java/com/github/shadowsocks/ProfileManagerActivity.java b/app/src/main/java/com/github/shadowsocks/ProfileManagerActivity.java index 905fd1c0..3a2e2faf 100644 --- a/app/src/main/java/com/github/shadowsocks/ProfileManagerActivity.java +++ b/app/src/main/java/com/github/shadowsocks/ProfileManagerActivity.java @@ -79,6 +79,8 @@ import net.glxn.qrgen.android.QRCode; +import org.jetbrains.annotations.NotNull; + import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; @@ -113,6 +115,50 @@ public class ProfileManagerActivity extends AppCompatActivity implements View.On private boolean is_sort = false; private ServiceBoundContext mServiceBoundContext; + /** + * progress handler + */ + private Handler mProgressHandler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_FULL_TEST_FINISH: + if (testProgressDialog != null) { + testProgressDialog.dismiss(); + testProgressDialog = null; + } + + finish(); + startActivity(new Intent(getIntent())); + break; + default: + break; + } + } + }; + + /** + * use string divider list value + * + * @param list list + * @param divider divider string + * @return list is empty, return null. + */ + public static String makeString(List list, String divider) { + if (list == null || list.isEmpty()) { + return null; + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < list.size(); i++) { + Profile item = list.get(i); + if (i > 0) { + sb.append(divider); + } + sb.append(item); + } + return sb.toString(); + } @Override protected void attachBaseContext(Context newBase) { @@ -204,7 +250,6 @@ public void trafficUpdated(long txRate, long rxRate, long txTotal, long rxTotal) } } - private void initGroupSpinner() { Spinner spinner = findViewById(R.id.group_choose_spinner); List groups_name = ShadowsocksApplication.app.profileManager.getGroupNames(); @@ -225,7 +270,6 @@ public void onNothingSelected(AdapterView parent) { }); } - /** * init toolbar */ @@ -325,7 +369,6 @@ public void qrcodeScan() { } } - @Override public void onClick(View v) { switch (v.getId()) { @@ -779,28 +822,6 @@ public NdefMessage createNdefMessage(NfcEvent nfcEvent) { return new NdefMessage(new NdefRecord[]{new NdefRecord(NdefRecord.TNF_ABSOLUTE_URI, nfcShareItem, new byte[]{}, nfcShareItem)}); } - /** - * progress handler - */ - private Handler mProgressHandler = new Handler(Looper.getMainLooper()) { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_FULL_TEST_FINISH: - if (testProgressDialog != null) { - testProgressDialog.dismiss(); - testProgressDialog = null; - } - - finish(); - startActivity(new Intent(getIntent())); - break; - default: - break; - } - } - }; - @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { @@ -940,30 +961,6 @@ public void onFinished(Profile profile) { } - - /** - * use string divider list value - * - * @param list list - * @param divider divider string - * @return list is empty, return null. - */ - public static String makeString(List list, String divider) { - if (list == null || list.isEmpty()) { - return null; - } - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < list.size(); i++) { - Profile item = list.get(i); - if (i > 0) { - sb.append(divider); - } - sb.append(item); - } - return sb.toString(); - } - private class ProfileViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnKeyListener { private Profile item; @@ -1041,7 +1038,7 @@ private void initPingBtn() { final ProgressDialog singleTestProgressDialog = ProgressDialog.show(ProfileManagerActivity.this, getString(R.string.tips_testing), getString(R.string.tips_testing), false, true); PingHelper.Companion.instance().ping(ProfileManagerActivity.this, item, new PingCallback() { @Override - public void onSuccess(Profile profile, long elapsed) { + public void onSuccess(@NotNull Profile profile, long elapsed) { if (profile.elapsed == 0) { profile.elapsed = elapsed; } else if (profile.elapsed > elapsed) { @@ -1084,9 +1081,9 @@ private void initTcpPingBtn() { pingBtn.setOnClickListener(v -> { item.elapsed = 0; final ProgressDialog singleTestProgressDialog = ProgressDialog.show(ProfileManagerActivity.this, getString(R.string.tips_testing), getString(R.string.tips_testing), false, true); - PingHelper.Companion.instance().tcp_ping(ProfileManagerActivity.this, item, new PingCallback() { + PingHelper.Companion.instance().tcpPing(ProfileManagerActivity.this, item, new PingCallback() { @Override - public void onSuccess(Profile profile, long tcpdelay) { + public void onSuccess(@NotNull Profile profile, long tcpdelay) { if (profile.tcpdelay == 0) { profile.tcpdelay = tcpdelay; } else if (profile.tcpdelay > tcpdelay) { diff --git a/app/src/main/java/com/github/shadowsocks/ServiceBoundContext.java b/app/src/main/java/com/github/shadowsocks/ServiceBoundContext.java index ebbddea8..6efdcc8a 100644 --- a/app/src/main/java/com/github/shadowsocks/ServiceBoundContext.java +++ b/app/src/main/java/com/github/shadowsocks/ServiceBoundContext.java @@ -57,10 +57,8 @@ public class ServiceBoundContext extends ContextWrapper implements IBinder.DeathRecipient { private static final String TAG = ServiceBoundContext.class.getSimpleName(); - - private IBinder binder; protected IShadowsocksService bgService; - + private IBinder binder; private IShadowsocksServiceCallback callback; private ShadowsocksServiceConnection connection; private boolean callbackRegistered; @@ -69,29 +67,6 @@ public ServiceBoundContext(Context base) { super(base); } - public class ShadowsocksServiceConnection implements ServiceConnection { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - try { - binder = service; - service.linkToDeath(ServiceBoundContext.this, 0); - bgService = IShadowsocksService.Stub.asInterface(service); - registerCallback(); - ServiceBoundContext.this.onServiceConnected(); - } catch (RemoteException e) { - VayLog.e(TAG, "onServiceConnected", e); - } - } - - @Override - public void onServiceDisconnected(ComponentName name) { - unregisterCallback(); - ServiceBoundContext.this.onServiceDisconnected(); - bgService = null; - binder = null; - } - } - /** * register callback */ @@ -170,4 +145,27 @@ public void detachService() { bgService = null; } + + public class ShadowsocksServiceConnection implements ServiceConnection { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + try { + binder = service; + service.linkToDeath(ServiceBoundContext.this, 0); + bgService = IShadowsocksService.Stub.asInterface(service); + registerCallback(); + ServiceBoundContext.this.onServiceConnected(); + } catch (RemoteException e) { + VayLog.e(TAG, "onServiceConnected", e); + } + } + + @Override + public void onServiceDisconnected(ComponentName name) { + unregisterCallback(); + ServiceBoundContext.this.onServiceDisconnected(); + bgService = null; + binder = null; + } + } } diff --git a/app/src/main/java/com/github/shadowsocks/ServiceBoundService.java b/app/src/main/java/com/github/shadowsocks/ServiceBoundService.java index ab54e4f7..f103dc46 100644 --- a/app/src/main/java/com/github/shadowsocks/ServiceBoundService.java +++ b/app/src/main/java/com/github/shadowsocks/ServiceBoundService.java @@ -57,37 +57,12 @@ public abstract class ServiceBoundService extends Service implements IBinder.DeathRecipient { private static final String TAG = ServiceBoundService.class.getSimpleName(); - - private IBinder binder; protected IShadowsocksService bgService; - + private IBinder binder; private IShadowsocksServiceCallback callback; private ShadowsocksServiceConnection connection; private boolean callbackRegistered; - public class ShadowsocksServiceConnection implements ServiceConnection { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - try { - binder = service; - service.linkToDeath(ServiceBoundService.this, 0); - bgService = IShadowsocksService.Stub.asInterface(service); - registerCallback(); - ServiceBoundService.this.onServiceConnected(); - } catch (RemoteException e) { - VayLog.e(TAG, "onServiceConnected", e); - } - } - - @Override - public void onServiceDisconnected(ComponentName name) { - unregisterCallback(); - ServiceBoundService.this.onServiceDisconnected(); - bgService = null; - binder = null; - } - } - /** * register callback */ @@ -166,4 +141,27 @@ public void detachService() { bgService = null; } + + public class ShadowsocksServiceConnection implements ServiceConnection { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + try { + binder = service; + service.linkToDeath(ServiceBoundService.this, 0); + bgService = IShadowsocksService.Stub.asInterface(service); + registerCallback(); + ServiceBoundService.this.onServiceConnected(); + } catch (RemoteException e) { + VayLog.e(TAG, "onServiceConnected", e); + } + } + + @Override + public void onServiceDisconnected(ComponentName name) { + unregisterCallback(); + ServiceBoundService.this.onServiceDisconnected(); + bgService = null; + binder = null; + } + } } diff --git a/app/src/main/java/com/github/shadowsocks/Shadowsocks.java b/app/src/main/java/com/github/shadowsocks/Shadowsocks.java index d0872bdc..7ac8f81e 100644 --- a/app/src/main/java/com/github/shadowsocks/Shadowsocks.java +++ b/app/src/main/java/com/github/shadowsocks/Shadowsocks.java @@ -88,49 +88,24 @@ public class Shadowsocks extends AppCompatActivity { private static final String TAG = Shadowsocks.class.getSimpleName(); private static final int REQUEST_CONNECT = 1; - + public Handler handler = new Handler(); private boolean serviceStarted; private FloatingActionButton fab; private FABProgressCircle fabProgressCircle; private ProgressDialog progressDialog; private int state = Constants.State.STOPPED; - private ServiceBoundContext mServiceBoundContext; - private boolean isDestroyed; private boolean isTestConnect; - - @Override - protected void attachBaseContext(Context newBase) { - super.attachBaseContext(newBase); - - mServiceBoundContext = new ServiceBoundContext(newBase) { - @Override - protected void onServiceConnected() { - // Update the UI - if (fab != null) { - fab.setEnabled(true); - } - - updateState(); - } - - @Override - protected void onServiceDisconnected() { - if (fab != null) { - fab.setEnabled(false); - } - } - - @Override - public void binderDied() { - detachService(); - ShadowsocksApplication.app.crashRecovery(); - attachService(); - } - }; - } - + private View stat; + private TextView connectionTestText; + private TextView txText; + private TextView rxText; + private TextView txRateText; + private TextView rxRateText; + private ColorStateList greyTint; + private ColorStateList greenTint; + private ShadowsocksSettings preferences; /** * Services */ @@ -221,6 +196,37 @@ public void run() { } }; + @Override + protected void attachBaseContext(Context newBase) { + super.attachBaseContext(newBase); + + mServiceBoundContext = new ServiceBoundContext(newBase) { + @Override + protected void onServiceConnected() { + // Update the UI + if (fab != null) { + fab.setEnabled(true); + } + + updateState(); + } + + @Override + protected void onServiceDisconnected() { + if (fab != null) { + fab.setEnabled(false); + } + } + + @Override + public void binderDied() { + detachService(); + ShadowsocksApplication.app.crashRecovery(); + attachService(); + } + }; + } + public void updateTraffic(long txRate, long rxRate, long txTotal, long rxTotal) { txText.setText(TrafficMonitor.formatTraffic(txTotal)); rxText.setText(TrafficMonitor.formatTraffic(rxTotal)); @@ -236,19 +242,6 @@ public void detachService() { mServiceBoundContext.detachService(); } - private View stat; - private TextView connectionTestText; - private TextView txText; - private TextView rxText; - private TextView txRateText; - private TextView rxRateText; - - private ColorStateList greyTint; - private ColorStateList greenTint; - private ShadowsocksSettings preferences; - - public Handler handler = new Handler(); - private void changeSwitch(boolean checked) { serviceStarted = checked; int resId = checked ? R.drawable.ic_start_connected : R.drawable.ic_start_idle; diff --git a/app/src/main/java/com/github/shadowsocks/ShadowsocksApplication.java b/app/src/main/java/com/github/shadowsocks/ShadowsocksApplication.java index 458c5f24..5ecb0259 100644 --- a/app/src/main/java/com/github/shadowsocks/ShadowsocksApplication.java +++ b/app/src/main/java/com/github/shadowsocks/ShadowsocksApplication.java @@ -54,24 +54,14 @@ import eu.chainfire.libsuperuser.Shell; public class ShadowsocksApplication extends Application { - public static ShadowsocksApplication app; - - private static final String TAG = ShadowsocksApplication.class.getSimpleName(); public static final String SIG_FUNC = "getSignature"; - - private String[] EXECUTABLES = { - Constants.Executable.PDNSD, - Constants.Executable.REDSOCKS, - Constants.Executable.SS_TUNNEL, - Constants.Executable.SS_LOCAL, - Constants.Executable.TUN2SOCKS, - Constants.Executable.KCPTUN}; - + private static final String TAG = ShadowsocksApplication.class.getSimpleName(); /** * The ones in Locale doesn't have script included */ private static final Locale SIMPLIFIED_CHINESE; private static final Locale TRADITIONAL_CHINESE; + public static ShadowsocksApplication app; static { if (Build.VERSION.SDK_INT >= 21) { @@ -84,26 +74,29 @@ public class ShadowsocksApplication extends Application { } public ContainerHolder containerHolder; - - private Tracker tracker; public SharedPreferences settings; public SharedPreferences.Editor editor; - public ProfileManager profileManager; public SSRSubManager ssrsubManager; public Resources resources; + public ScheduledExecutorService mThreadPool; + private String[] EXECUTABLES = { + Constants.Executable.PDNSD, + Constants.Executable.REDSOCKS, + Constants.Executable.SS_TUNNEL, + Constants.Executable.SS_LOCAL, + Constants.Executable.TUN2SOCKS, + Constants.Executable.KCPTUN}; + private Tracker tracker; public boolean isNatEnabled() { return false; } - public boolean isVpnEnabled() { return !isNatEnabled(); } - public ScheduledExecutorService mThreadPool; - /** * /// xhao: init variable */ diff --git a/app/src/main/java/com/github/shadowsocks/ShadowsocksNotification.java b/app/src/main/java/com/github/shadowsocks/ShadowsocksNotification.java index 1d30bc1a..8d019f25 100644 --- a/app/src/main/java/com/github/shadowsocks/ShadowsocksNotification.java +++ b/app/src/main/java/com/github/shadowsocks/ShadowsocksNotification.java @@ -76,7 +76,9 @@ public class ShadowsocksNotification { private KeyguardManager keyGuard; private NotificationManager nm; - + private boolean callbackRegistered; + private NotificationCompat.Builder builder; + private NotificationCompat.BigTextStyle style; private IShadowsocksServiceCallback.Stub callback = new IShadowsocksServiceCallback.Stub() { @Override @@ -99,12 +101,6 @@ public void trafficUpdated(long txRate, long rxRate, long txTotal, long rxTotal) show(); } }; - - private boolean callbackRegistered; - - private NotificationCompat.Builder builder; - - private NotificationCompat.BigTextStyle style; private boolean isVisible = true; /** diff --git a/app/src/main/java/com/github/shadowsocks/ShadowsocksQuickSwitchActivity.java b/app/src/main/java/com/github/shadowsocks/ShadowsocksQuickSwitchActivity.java index b1ed80c2..2ccb7cda 100644 --- a/app/src/main/java/com/github/shadowsocks/ShadowsocksQuickSwitchActivity.java +++ b/app/src/main/java/com/github/shadowsocks/ShadowsocksQuickSwitchActivity.java @@ -133,8 +133,8 @@ public void onClick(View v) { private class ProfilesAdapter extends RecyclerView.Adapter { - private List profiles; private final String name; + private List profiles; public ProfilesAdapter() { List profiles = ShadowsocksApplication.app.profileManager.getAllProfiles(); diff --git a/app/src/main/java/com/github/shadowsocks/ShadowsocksRunnerService.java b/app/src/main/java/com/github/shadowsocks/ShadowsocksRunnerService.java index b59a2638..c2b0c3e1 100644 --- a/app/src/main/java/com/github/shadowsocks/ShadowsocksRunnerService.java +++ b/app/src/main/java/com/github/shadowsocks/ShadowsocksRunnerService.java @@ -55,6 +55,27 @@ public class ShadowsocksRunnerService extends ServiceBoundService { private static final String TAG = ShadowsocksRunnerService.class.getSimpleName(); private Handler handler = new Handler(); + /** + * callback + */ + private IShadowsocksServiceCallback.Stub mCallback = new IShadowsocksServiceCallback.Stub() { + @Override + public void stateChanged(int state, String profileName, String msg) throws RemoteException { + } + + @Override + public void trafficUpdated(long txRate, long rxRate, long txTotal, long rxTotal) throws RemoteException { + } + }; + /** + * stop self runnable + */ + private Runnable mStopSelfRunnable = new Runnable() { + @Override + public void run() { + stopSelf(); + } + }; @Nullable @Override @@ -106,27 +127,4 @@ public void onDestroy() { super.onDestroy(); detachService(); } - - /** - * callback - */ - private IShadowsocksServiceCallback.Stub mCallback = new IShadowsocksServiceCallback.Stub() { - @Override - public void stateChanged(int state, String profileName, String msg) throws RemoteException { - } - - @Override - public void trafficUpdated(long txRate, long rxRate, long txTotal, long rxTotal) throws RemoteException { - } - }; - - /** - * stop self runnable - */ - private Runnable mStopSelfRunnable = new Runnable() { - @Override - public void run() { - stopSelf(); - } - }; } diff --git a/app/src/main/java/com/github/shadowsocks/ShadowsocksSettings.java b/app/src/main/java/com/github/shadowsocks/ShadowsocksSettings.java index 0339ed5e..e85c15d4 100644 --- a/app/src/main/java/com/github/shadowsocks/ShadowsocksSettings.java +++ b/app/src/main/java/com/github/shadowsocks/ShadowsocksSettings.java @@ -97,10 +97,10 @@ public class ShadowsocksSettings extends PreferenceFragment implements SharedPre private static final String[] FEATURE_PREFS = { Constants.Key.route, Constants.Key.proxyApps, Constants.Key.udpdns, Constants.Key.ipv6, Constants.Key.tfo}; - + public Profile profile; private Shadowsocks activity; - private SwitchPreference isProxyApps; + private boolean enabled = true; /** * Helper functions @@ -642,8 +642,6 @@ public void onDestroy() { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { } - private boolean enabled = true; - public void setEnabled(boolean enabled) { this.enabled = enabled; List list = new ArrayList<>(); @@ -658,8 +656,6 @@ public void setEnabled(boolean enabled) { } } - public Profile profile; - public void setProfile(Profile profile) { this.profile = profile; List list = new ArrayList<>(); diff --git a/app/src/main/java/com/github/shadowsocks/database/DBHelper.java b/app/src/main/java/com/github/shadowsocks/database/DBHelper.java index b33005ba..6d601c0f 100644 --- a/app/src/main/java/com/github/shadowsocks/database/DBHelper.java +++ b/app/src/main/java/com/github/shadowsocks/database/DBHelper.java @@ -19,12 +19,27 @@ public class DBHelper extends OrmLiteSqliteOpenHelper { - private static final String TAG = DBHelper.class.getSimpleName(); - public static final String PROFILE = "profile.db"; + private static final String TAG = DBHelper.class.getSimpleName(); private static final int VERSION = 25; - + Dao profileDao; + Dao ssrsubDao; private List apps; + private Context context; + public DBHelper(Context context) { + super(context, DBHelper.PROFILE, null, VERSION); + this.context = context; + try { + profileDao = getDao(Profile.class); + } catch (SQLException e) { + VayLog.e(TAG, "", e); + } + try { + ssrsubDao = getDao(SSRSub.class); + } catch (SQLException e) { + VayLog.e(TAG, "", e); + } + } /** * is all digits @@ -72,26 +87,6 @@ private synchronized String updateProxiedApps(Context context, String old) { return sb.toString(); } - Dao profileDao; - Dao ssrsubDao; - - private Context context; - - public DBHelper(Context context) { - super(context, DBHelper.PROFILE, null, VERSION); - this.context = context; - try { - profileDao = getDao(Profile.class); - } catch (SQLException e) { - VayLog.e(TAG, "", e); - } - try { - ssrsubDao = getDao(SSRSub.class); - } catch (SQLException e) { - VayLog.e(TAG, "", e); - } - } - @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { diff --git a/app/src/main/java/com/github/shadowsocks/database/Profile.java b/app/src/main/java/com/github/shadowsocks/database/Profile.java index ceeda5a5..8d266f40 100644 --- a/app/src/main/java/com/github/shadowsocks/database/Profile.java +++ b/app/src/main/java/com/github/shadowsocks/database/Profile.java @@ -48,81 +48,56 @@ public class Profile { + @DatabaseField + public final Date date = new java.util.Date(); @DatabaseField(generatedId = true) public int id = 0; - @DatabaseField public String name = "ShadowsocksR"; - @DatabaseField public String host = "1.1.1.1"; - @DatabaseField public int localPort = 1080; - @DatabaseField public int remotePort = 8388; - @DatabaseField public String password = ""; - @DatabaseField public String protocol = "origin"; - @DatabaseField public String protocol_param = ""; - @DatabaseField public String obfs = "plain"; - @DatabaseField public String obfs_param = ""; - @DatabaseField public String method = "aes-256-cfb"; - @DatabaseField public String route = "HMBSbige-whitelist"; - @DatabaseField public boolean proxyApps = false; - @DatabaseField public boolean bypass = false; - @DatabaseField public boolean udpdns = false; - @DatabaseField public String url_group = "ShadowsocksR"; - @DatabaseField public String dns = "8.8.8.8:53"; - @DatabaseField public String china_dns = "114.114.114.114:53,223.5.5.5:53"; - @DatabaseField public boolean ipv6 = false; - @DatabaseField(dataType = DataType.LONG_STRING) public String individual = ""; - @DatabaseField public long tx = 0; - @DatabaseField public long rx = 0; - @DatabaseField public long elapsed = 0; - @DatabaseField public long tcpdelay = 0; - - @DatabaseField - public final Date date = new java.util.Date(); - @DatabaseField public long userOrder = 0; diff --git a/app/src/main/java/com/github/shadowsocks/database/ProfileManager.java b/app/src/main/java/com/github/shadowsocks/database/ProfileManager.java index c4a7f8e5..99f0bf39 100644 --- a/app/src/main/java/com/github/shadowsocks/database/ProfileManager.java +++ b/app/src/main/java/com/github/shadowsocks/database/ProfileManager.java @@ -418,19 +418,6 @@ private void invokeProfileAdded(Profile profile) { } } - /** - * pro file added listener - */ - public interface ProfileAddedListener { - - /** - * profile added - * - * @param profile profile object - */ - void onProfileAdded(Profile profile); - } - public List getGroupNames() { try { List groupdistinktprofile = dbHelper.profileDao.query(dbHelper.profileDao.queryBuilder().selectColumns("url_group").distinct().prepare()); @@ -446,5 +433,18 @@ public List getGroupNames() { } } + /** + * pro file added listener + */ + public interface ProfileAddedListener { + + /** + * profile added + * + * @param profile profile object + */ + void onProfileAdded(Profile profile); + } + } diff --git a/app/src/main/java/com/github/shadowsocks/job/SSRSubUpdateJob.java b/app/src/main/java/com/github/shadowsocks/job/SSRSubUpdateJob.java index a4477337..8a135d89 100644 --- a/app/src/main/java/com/github/shadowsocks/job/SSRSubUpdateJob.java +++ b/app/src/main/java/com/github/shadowsocks/job/SSRSubUpdateJob.java @@ -42,10 +42,10 @@ protected Result onRunJob(Params params) { List subs = ShadowsocksApplication.app.ssrsubManager.getAllSSRSubs(); SubUpdateHelper.Companion.instance().updateSub(subs, new SubUpdateCallback() { @Override - public void onSuccess(String subname) { + public void onSuccess(String subName) { VayLog.d(TAG, "onRunJob() update sub success!"); - ToastUtils.showShort(getContext().getString(R.string.sub_autoupdate_success, subname)); - Log.i("sub", subname); + ToastUtils.showShort(getContext().getString(R.string.sub_autoupdate_success, subName)); + Log.i("sub", subName); } @Override diff --git a/app/src/main/java/com/github/shadowsocks/network/ping/PingCallback.kt b/app/src/main/java/com/github/shadowsocks/network/ping/PingCallback.kt index 5689c8cd..87d26887 100644 --- a/app/src/main/java/com/github/shadowsocks/network/ping/PingCallback.kt +++ b/app/src/main/java/com/github/shadowsocks/network/ping/PingCallback.kt @@ -12,12 +12,7 @@ open class PingCallback { /** - * get test result message - */ - /** - * set test result message - * - * @param resultMsg test result message + * test result message */ open var resultMsg: String = "" diff --git a/app/src/main/java/com/github/shadowsocks/network/ping/PingHelper.kt b/app/src/main/java/com/github/shadowsocks/network/ping/PingHelper.kt index 54fd061b..b3f6b29b 100644 --- a/app/src/main/java/com/github/shadowsocks/network/ping/PingHelper.kt +++ b/app/src/main/java/com/github/shadowsocks/network/ping/PingHelper.kt @@ -70,7 +70,7 @@ private constructor() * @param profile profile object * @param callback ping callback object */ - fun tcp_ping(aty: Activity, profile: Profile, callback: PingCallback) + fun tcpPing(aty: Activity, profile: Profile, callback: PingCallback) { mThreadPool.execute { pingByProfile(aty, profile, callback, 2) } } @@ -161,7 +161,7 @@ private constructor() } } - var mUIHandler = Handler(Looper.getMainLooper()) + private var mUIHandler = Handler(Looper.getMainLooper()) /** @@ -200,7 +200,7 @@ private constructor() val cmd = arrayOf(applicationInfo!!.nativeLibraryDir + "/libssr-local.so", "-t", "600", "-L", "www.google.com:80", "-c", applicationInfo!!.dataDir + "/libssr-local.so-test.conf") - val cmds = ArrayList(Arrays.asList(*cmd)) + val cmds = ArrayList(listOf(*cmd)) if (TcpFastOpen.sendEnabled()) { @@ -270,14 +270,13 @@ private constructor() override fun onFailed(code: Int, msg: String) { - val result: String - if (code != 404) + val result: String = if (code != 404) { - result = getString(R.string.connection_test_error_status_code, code) + getString(R.string.connection_test_error_status_code, code) } else { - result = getString(R.string.connection_test_error, msg) + getString(R.string.connection_test_error, msg) } callback.resultMsg = result callback.onFailed(profile) @@ -382,25 +381,25 @@ private constructor() } } - fun tcping(target: String, port: Int): Long + private fun tcping(target: String, port: Int): Long { try { - var mindelay: Long = 5000 + var minDelay: Long = 5000 for (i in 1..2) { val start = System.currentTimeMillis() - var sock = Socket() + val sock = Socket() val socketAddress = InetSocketAddress(target, port) sock.connect(socketAddress, 1000) val delay = System.currentTimeMillis() - start sock.close() - if (delay < mindelay) + if (delay < minDelay) { - mindelay = delay + minDelay = delay } } - return mindelay + return minDelay } catch (e: UnknownHostException) { diff --git a/app/src/main/java/com/github/shadowsocks/network/request/RequestHelper.kt b/app/src/main/java/com/github/shadowsocks/network/request/RequestHelper.kt index 52e0be17..f0f2d1a1 100644 --- a/app/src/main/java/com/github/shadowsocks/network/request/RequestHelper.kt +++ b/app/src/main/java/com/github/shadowsocks/network/request/RequestHelper.kt @@ -58,26 +58,11 @@ private constructor(builder: OkHttpClient.Builder? = null) request(request, callback) } - /** - * network request by post - * - * @param url request url - * @param body request body - * @param callback request callback - */ - fun post(url: String, body: RequestBody, callback: RequestCallback) - { - val request = createRequest(url, body, callback) ?: return - - // request - request(request, callback) - } - /** * network request * * @param request request object - * @param callback request callback + * @param _callback request callback */ fun request(request: Request, _callback: RequestCallback?) { @@ -121,7 +106,7 @@ private constructor(builder: OkHttpClient.Builder? = null) /** * create request object * - * @param url request url + * @param _url request url * @param body request body * @return create failed return null. */ @@ -153,7 +138,7 @@ private constructor(builder: OkHttpClient.Builder? = null) /** * format url string * - * @param url request url + * @param _url request url * @return url */ private fun formatUrl(_url: String): String @@ -172,14 +157,7 @@ private constructor(builder: OkHttpClient.Builder? = null) */ private fun setClientBuilder(builder: OkHttpClient.Builder?) { - if (builder != null) - { - mClientBuilder = builder - } - else - { - mClientBuilder = mDefaultBuilder - } + mClientBuilder = builder ?: mDefaultBuilder mClient = mClientBuilder!!.build() } @@ -283,19 +261,12 @@ private constructor(builder: OkHttpClient.Builder? = null) { private var sInstance: RequestHelper? = null - private val mDefaultBuilder: OkHttpClient.Builder - - init - { - // init default builder - mDefaultBuilder = OkHttpClient.Builder() - .connectTimeout(5, TimeUnit.SECONDS) - .writeTimeout(5, TimeUnit.SECONDS) - .readTimeout(5, TimeUnit.SECONDS) - .followRedirects(false) - .followSslRedirects(false) - - } + private val mDefaultBuilder: OkHttpClient.Builder = OkHttpClient.Builder() + .connectTimeout(5, TimeUnit.SECONDS) + .writeTimeout(5, TimeUnit.SECONDS) + .readTimeout(5, TimeUnit.SECONDS) + .followRedirects(false) + .followSslRedirects(false) /** * init diff --git a/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateCallback.kt b/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateCallback.kt index 7ab048ef..9e107880 100644 --- a/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateCallback.kt +++ b/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateCallback.kt @@ -10,7 +10,7 @@ open class SubUpdateCallback /** * success */ - open fun onSuccess(subname: String) + open fun onSuccess(subName: String) { } diff --git a/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateHelper.kt b/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateHelper.kt index d4b1d84f..5b14832c 100644 --- a/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateHelper.kt +++ b/app/src/main/java/com/github/shadowsocks/network/ssrsub/SubUpdateHelper.kt @@ -77,7 +77,7 @@ class SubUpdateHelper private constructor() { val sub = subs[position] // start request - RequestHelper.instance()!!.get(sub.url, object : RequestCallback() + RequestHelper.instance()!![sub.url, object : RequestCallback() { override fun onSuccess(code: Int, response: String) @@ -98,7 +98,7 @@ class SubUpdateHelper private constructor() callback.onFailed() callback.onFinished() } - }) + }] } else { @@ -122,7 +122,7 @@ class SubUpdateHelper private constructor() } else { - Collections.shuffle(profiles) + profiles.shuffle() } for (profile in profiles) @@ -190,14 +190,14 @@ class SubUpdateHelper private constructor() fun parseSSRSub(subUrl: String, base64text: String): SSRSub? { val profilesSSR = Parser.findAll_ssr(String(Base64.decode(base64text, Base64.URL_SAFE))) - if (profilesSSR != null && !profilesSSR.isEmpty()) + if (profilesSSR != null && profilesSSR.isNotEmpty()) { if (!TextUtils.isEmpty(profilesSSR[0].url_group)) { - val ssrsub = SSRSub() - ssrsub.url = subUrl - ssrsub.url_group = profilesSSR[0].url_group - return ssrsub + val ssrSub = SSRSub() + ssrSub.url = subUrl + ssrSub.url_group = profilesSSR[0].url_group + return ssrSub } } return null diff --git a/app/src/main/java/com/github/shadowsocks/preferences/DropDownPreference.java b/app/src/main/java/com/github/shadowsocks/preferences/DropDownPreference.java index ba6a2c7c..b302b3ad 100644 --- a/app/src/main/java/com/github/shadowsocks/preferences/DropDownPreference.java +++ b/app/src/main/java/com/github/shadowsocks/preferences/DropDownPreference.java @@ -111,6 +111,15 @@ public Object getSummaryValue() { return getValue(); } + /** + * The list of entries to be shown in the list in subsequent dialogs. + * + * @return The list as an array. + */ + public CharSequence[] getEntries() { + return mEntries; + } + /** * Sets the human-readable entries to be shown in the list. This will be shown in subsequent dialogs. *

@@ -138,12 +147,12 @@ public void setEntries(@ArrayRes int entriesResId) { } /** - * The list of entries to be shown in the list in subsequent dialogs. + * Returns the array of values to be saved for the preference. * - * @return The list as an array. + * @return The array of values. */ - public CharSequence[] getEntries() { - return mEntries; + public CharSequence[] getEntryValues() { + return mEntryValues; } /** @@ -164,15 +173,6 @@ public void setEntryValues(@ArrayRes int entryValuesResId) { setEntryValues(mContext.getResources().getTextArray(entryValuesResId)); } - /** - * Returns the array of values to be saved for the preference. - * - * @return The array of values. - */ - public CharSequence[] getEntryValues() { - return mEntryValues; - } - public String getValue(int index) { if (mEntryValues == null) { return null; @@ -181,24 +181,6 @@ public String getValue(int index) { } } - /** - * Sets the value of the key. This should be one of the entries in [[getEntryValues]]. - * - * @param value The value to set for the key. - */ - public void setValue(String value) { - setValue(findIndexOfValue(value), value); - } - - /** - * Sets the value to the given index from the entry values. - * - * @param index The index of the value to set. - */ - public void setValueIndex(int index) { - setValue(index, getValue(index)); - } - public void setValue(int index, String value) { persistString(value); mSelectedIndex = index; @@ -219,6 +201,15 @@ public String getValue() { } } + /** + * Sets the value of the key. This should be one of the entries in [[getEntryValues]]. + * + * @param value The value to set for the key. + */ + public void setValue(String value) { + setValue(findIndexOfValue(value), value); + } + /** * Returns the entry corresponding to the current value. * @@ -256,6 +247,15 @@ public int getValueIndex() { return mSelectedIndex; } + /** + * Sets the value to the given index from the entry values. + * + * @param index The index of the value to set. + */ + public void setValueIndex(int index) { + setValue(index, getValue(index)); + } + @Override protected Object onGetDefaultValue(TypedArray a, int index) { return a.getString(index); diff --git a/app/src/main/java/com/github/shadowsocks/preferences/NumberPickerPreference.java b/app/src/main/java/com/github/shadowsocks/preferences/NumberPickerPreference.java index 954e673b..49154b80 100644 --- a/app/src/main/java/com/github/shadowsocks/preferences/NumberPickerPreference.java +++ b/app/src/main/java/com/github/shadowsocks/preferences/NumberPickerPreference.java @@ -73,39 +73,39 @@ public int getValue() { return this.value; } - public int getMin() { - if (picker == null) { - return 0; + public void setValue(int i) { + if (i == getValue()) { + return; } - return picker.getMinValue(); + picker.setValue(i); + value = picker.getValue(); + persistInt(value); + notifyChanged(); } - public int getMax() { + public int getMin() { if (picker == null) { return 0; } - return picker.getMaxValue(); + return picker.getMinValue(); } - public void setValue(int i) { - if (i == getValue()) { + public void setMin(int value) { + if (picker == null) { return; } - picker.setValue(i); - value = picker.getValue(); - persistInt(value); - notifyChanged(); + picker.setMinValue(value); } - public void setMin(int value) { + public int getMax() { if (picker == null) { - return; + return 0; } - picker.setMinValue(value); + return picker.getMaxValue(); } public void setMax(int value) { diff --git a/app/src/main/java/com/github/shadowsocks/utils/Constants.java b/app/src/main/java/com/github/shadowsocks/utils/Constants.java index 906fe63f..aeaa170b 100644 --- a/app/src/main/java/com/github/shadowsocks/utils/Constants.java +++ b/app/src/main/java/com/github/shadowsocks/utils/Constants.java @@ -50,10 +50,6 @@ public static class Executable { public static class ConfigUtils { - public static String EscapedJson(String OriginString) { - return OriginString.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\""); - } - public static final String SHADOWSOCKS = "{\"server\": \"%s\", \"server_port\": %d, \"local_port\": %d, \"password\": \"%s\", \"method\":\"%s\", \"timeout\": %d, \"protocol\": \"%s\", \"obfs\": \"%s\", \"obfs_param\": \"%s\", \"protocol_param\": \"%s\"}"; public static final String REDSOCKS = "base {\n" + " log_debug = off;\n" + @@ -69,12 +65,10 @@ public static String EscapedJson(String OriginString) { " port = %d;\n" + " type = socks5;\n" + "}\n"; - public static final String PROXYCHAINS = "strict_chain\n" + "localnet 127.0.0.0/255.0.0.0\n" + "[ProxyList]\n" + "%s %s %s %s %s"; - public static final String PDNSD_LOCAL = "global {" + "perm_cache = 2048;" + @@ -105,7 +99,6 @@ public static String EscapedJson(String OriginString) { "owner=localhost;" + "soa=localhost,root.localhost,42,86400,900,86400,86400;" + "}"; - public static final String PDNSD_DIRECT = "global {" + "perm_cache = 2048;" + @@ -140,7 +133,6 @@ public static String EscapedJson(String OriginString) { "owner=localhost;" + "soa=localhost,root.localhost,42,86400,900,86400,86400;" + "}"; - public static final String REMOTE_SERVER = "server {" + "label = \"remote-servers\";" + @@ -154,6 +146,10 @@ public static String EscapedJson(String OriginString) { "reject_policy = fail;" + "reject_recursively = on;" + "}"; + + public static String EscapedJson(String OriginString) { + return OriginString.replaceAll("\\\\", "\\\\\\\\").replaceAll("\"", "\\\\\""); + } } public static class Key {