Peach VPN v4.0版本的 MD5 值为:44c7a87caba90fec9b7945dd44651111
以下内容为反编译后的 BackendResistanceHelper.java 源代码,内容仅作参考
package com.peacholo.peach.BackendResistance;
import android.content.Context;
import com.google.gson.Gson;
import com.peacholo.peach.BackendResistance.BackendCaller;
import com.peacholo.peach.BackendResistance.BackendResistanceCaller;
import com.peacholo.peach.Helper.SharedPreferencesHelper;
import com.peacholo.peach.Model.BackendResistance;
import java.util.ArrayList;
import java.util.Random;
public class BackendResistanceHelper {
private static final String KEY_BACKEND_RESISTANCE = "KEY_BACKEND_RESISTANCE";
private static final String KEY_CHOSEN_BACKEND_URL = "KEY_CHOSEN_BACKEND_URL";
private static final String SHP_NAME = "BackendResistanceHelper";
public static void backendResistanceCheck(final Context context, final Runnable runnable) {
if (shouldFetchBackendResistanceData(context)) {
new BackendResistanceCaller(context, getResistanceUrls(context), 10000, new BackendResistanceCaller.OnJobResultListener() {
@Override
public void onJobDone(BackendResistance backendResistance) {
BackendResistanceHelper.setBackendResistances(context, backendResistance);
BackendResistanceHelper.checkBackendUrls(context, runnable);
}
@Override
public void onJobFailed() {
Runnable runnable2 = runnable;
if (runnable2 != null) {
runnable2.run();
}
}
}).start();
} else {
checkBackendUrls(context, runnable);
}
}
public static void checkBackendUrls(final Context context, final Runnable runnable) {
new BackendCaller(context, getBackendUrls(context), 10000, new BackendCaller.OnJobResultListener() {
@Override
public void onJobDone(String str) {
BackendResistanceHelper.setChosenBackendUrl(context, str);
Runnable runnable2 = runnable;
if (runnable2 != null) {
runnable2.run();
}
}
@Override
public void onJobFailed() {
Runnable runnable2 = runnable;
if (runnable2 != null) {
runnable2.run();
}
}
}).start();
}
public static BackendResistance getBackendResistances(Context context) {
String string = new SharedPreferencesHelper(context, SHP_NAME).getString(KEY_BACKEND_RESISTANCE);
return (string == null || string.isEmpty()) ? new BackendResistance() : (BackendResistance) new Gson().fromJson(string, BackendResistance.class);
}
public static ArrayList<String> getBackendUrls(Context context) {
BackendResistance backendResistances = getBackendResistances(context);
return backendResistances.getSaveTimeInMillis() == 0 ? getDefaultBackendUrls() : backendResistances.getBackendUrls();
}
public static String getChosenBackendUrl(Context context) {
String string = new SharedPreferencesHelper(context, SHP_NAME).getString(KEY_CHOSEN_BACKEND_URL);
return !isValid(string) ? getDefaultChosenBackendUrls() : string;
}
private static ArrayList<String> getDefaultBackendUrls() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("http://peacholo.com");
arrayList.add("http://zivarsoft.com");
arrayList.add("http://sholezanza.com");
return arrayList;
}
private static String getDefaultChosenBackendUrls() {
ArrayList<String> defaultBackendUrls = getDefaultBackendUrls();
return defaultBackendUrls.get(new Random().nextInt(defaultBackendUrls.size()));
}
private static ArrayList<String> getDefaultResistanceUrls() {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("http://peacholo.com/peach.json");
arrayList.add("http://zivarsoft.com/peach.json");
arrayList.add("http://sholezanza.com/peach.json");
arrayList.add("https://raw.githubusercontent.com/sileacorina2/Peach/main/Peach.json");
return arrayList;
}
public static ArrayList<String> getResistanceUrls(Context context) {
BackendResistance backendResistances = getBackendResistances(context);
return backendResistances.getSaveTimeInMillis() == 0 ? getDefaultResistanceUrls() : backendResistances.getResistanceUrl();
}
public static boolean isValid(String str) {
return (str == null || str.isEmpty()) ? false : true;
}
public static void setBackendResistances(Context context, BackendResistance backendResistance) {
backendResistance.setSaveTimeInMillis(System.currentTimeMillis());
SharedPreferencesHelper sharedPreferencesHelper = new SharedPreferencesHelper(context, SHP_NAME);
if (backendResistance != null) {
sharedPreferencesHelper.putString(KEY_BACKEND_RESISTANCE, new Gson().toJson(backendResistance));
} else {
sharedPreferencesHelper.putString(KEY_BACKEND_RESISTANCE, new Gson().toJson(new BackendResistance()));
}
}
public static void setChosenBackendUrl(Context context, String str) {
new SharedPreferencesHelper(context, SHP_NAME).putString(KEY_CHOSEN_BACKEND_URL, str);
}
public static boolean shouldFetchBackendResistanceData(Context context) {
BackendResistance backendResistances = getBackendResistances(context);
if (backendResistances.getSaveTimeInMillis() == 0) {
return true;
}
return !(backendResistances.getSaveTimeInMillis() + ((long) backendResistances.getValidationPeriod()) > System.currentTimeMillis());
}
}