Compare commits

...
Author SHA1 Message Date
gdlbo 6eb88e678f ok 2024-03-01 23:46:19 +03:00
gdlbo 4aee200214 init 2024-02-23 02:41:00 +03:00
10 changed files with 168 additions and 62 deletions
@@ -0,0 +1,93 @@
package ru.vtosters.hooks;
import android.util.Log;
import com.vk.core.network.Network;
import com.vk.core.network.proxy.NetworkProxy;
import com.vk.core.network.proxy.ProxyHost;
import com.vk.core.network.proxy.ProxySettings;
import com.vk.core.preference.Preference;
import com.vtosters.lite.NetworkProxyPreferences;
import okhttp3.*;
import org.json.JSONException;
import org.json.JSONObject;
import ru.vtosters.hooks.other.Preferences;
import ru.vtosters.lite.di.singleton.VtOkHttpClient;
import ru.vtosters.lite.utils.AndroidUtils;
import java.io.IOException;
public class VKProxy {
private static final OkHttpClient sClient = VtOkHttpClient.getInstance();
private static String nwProxy = Preferences.getPreferences().getString("configNetworkProxy", "");
private static String nwProxyCerts = Preferences.getPreferences().getString("configNetworkProxyCerts", "");
public static boolean isProxyEnabled() {
return Preferences.getBoolValue("useProxyServer", false);
}
public static void setProxyStatus(boolean status) {
Preferences.getPreferences().edit().putBoolean("useProxyServer", status).apply();
}
public static String getConfigNetworkProxy() {
if (nwProxyCerts.isEmpty()) {
load();
}
return nwProxy;
}
public static String getConfigNetworkProxyCerts() {
if (nwProxyCerts.isEmpty()) {
load();
}
return nwProxyCerts;
}
public static void load() {
Request request = new Request.a()
.b("https://firebaseremoteconfig.googleapis.com/v1/projects/api-project-841415684880/namespaces/firebase:fetch")
.a(RequestBody.a(MediaType.b("application/json; charset=UTF-8"), "{\"appId\":\"1:841415684880:android:632f429381141121\",\"appInstanceId\":\"RB855168585SG\"}\n"))
// .a("Content-Encoding", "gzip")
// .a("Accept-Encoding", "gzip")
.a("Connection", "Keep-Alive")
.a("X-Android-Package", "com.vkontakte.android")
.a("X-Android-Cert", "C8EAB7342DA62B4A229E1BFDEB27B029DD6788A1")
.a("Host", "firebaseremoteconfig.googleapis.com")
.a("x-goog-api-key", "AIzaSyCL17U2Q5i1NVwIcXgMOZMidSRFHyGYgwM")
.a("User-Agent", Network.l.c().a())
.a();
sClient.a(request).a(new Callback() {
@Override
public void a(Call call, IOException e) {
Log.d("VKProxy", e.getMessage());
}
@Override
public void a(Call call, Response response) throws IOException {
String payload = response.a().g();
try {
JSONObject jsonObject = new JSONObject(payload).getJSONObject("entries");
String configNetworkProxy = jsonObject.getString("config_network_proxy");
String configNetworkProxyCerts = jsonObject.getString("config_network_proxy_certs");
Log.d("VKProxy", configNetworkProxy);
Log.d("VKProxy", configNetworkProxyCerts);
new ProxySettings().c(configNetworkProxy);
new ProxySettings().b(configNetworkProxyCerts);
Preferences.getPreferences().edit().putString("configNetworkProxy", configNetworkProxy).putString("configNetworkProxyCerts", configNetworkProxyCerts).apply();
nwProxy = configNetworkProxy;
nwProxyCerts = configNetworkProxyCerts;
AndroidUtils.sendToast("Инициализированы прокси");
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
});
}
}
@@ -11,6 +11,7 @@ import com.vk.medianative.MediaNative;
import com.vtosters.lite.data.Users;
import com.vtosters.lite.fragments.SettingsListFragment;
import ru.vtosters.hooks.GmsHook;
import ru.vtosters.hooks.VKProxy;
import ru.vtosters.hooks.VerificationsHook;
import ru.vtosters.lite.BuildConfig;
import ru.vtosters.lite.proxy.ProxyUtils;
@@ -33,6 +34,7 @@ public class Preferences {
LifecycleUtils.registerActivities(application);
AnalyticsHelper.start(application);
VKProxy.load();
} // VK Init
public static String getBuildName() {
@@ -1,25 +1,34 @@
package ru.vtosters.lite.ui.fragments;
import android.os.Bundle;
import com.vk.core.preference.Preference;
import com.vtosters.lite.R;
import ru.vtosters.hooks.VKProxy;
import ru.vtosters.lite.ui.PreferenceFragmentUtils;
public class ProxySettingsFragment extends TrackedMaterialPreferenceToolbarFragment {
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
addPreferencesFromResource(R.xml.preferences_proxy);
// findPreference("random_proxy").setOnPreferenceClickListener(preference -> {
// try {
// setupNewProxy();
// } catch (IOException e) {
// sendToast(requireContext().getString(R.string.get_proxy_error));
// }
// return true;
// });
PreferenceFragmentUtils.addMaterialSwitchPreference(
getPreferenceScreen(),
"",
"Use VK Proxy Server",
null,
null,
VKProxy.isProxyEnabled(),
(preference, o) -> {
VKProxy.setProxyStatus((Boolean) o);
VKProxy.load();
return true;
}
);
}
@Override
public int T4() {
return R.string.vtlproxy;
}
}
}
@@ -36,6 +36,11 @@
android:key="trackInstalledApps"
android:summary="@string/sett_mytracker_location_crap_summary"
android:title="@string/sett_mytracker_apps"/>
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="useProxyServer"
android:title="@string/sett_use_proxy"
android:visibility="gone" />
<com.vtosters.lite.ui.MaterialSwitchPreference
android:defaultValue="false"
android:key="isRoamingState"
@@ -1162,7 +1162,10 @@
:try_start_0
iput-object p1, p0, Lcom/vk/core/network/proxy/NetworkProxy;->c:Lcom/vk/core/network/proxy/NetworkProxy$c;
const p1, 0x0
.line 7
invoke-static {}, Lru/vtosters/hooks/VKProxy;->isProxyEnabled()Z
move-result p1
if-eqz p1, :cond_1
@@ -1,49 +0,0 @@
.class Lcom/vk/core/network/proxy/ProxyHost$a$a;
.super Ljava/lang/Object;
.source "ProxyHost.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lcom/vk/core/network/proxy/ProxyHost$a;->a(Ljava/lang/Long;)V
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = null
.end annotation
# instance fields
.field final synthetic a:Lcom/vk/core/network/proxy/ProxyHost$a;
# direct methods
.method constructor <init>(Lcom/vk/core/network/proxy/ProxyHost$a;)V
.locals 0
.line 1
iput-object p1, p0, Lcom/vk/core/network/proxy/ProxyHost$a$a;->a:Lcom/vk/core/network/proxy/ProxyHost$a;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public run()V
.locals 1
.line 1
iget-object v0, p0, Lcom/vk/core/network/proxy/ProxyHost$a$a;->a:Lcom/vk/core/network/proxy/ProxyHost$a;
iget-object v0, v0, Lcom/vk/core/network/proxy/ProxyHost$a;->a:Lcom/vk/core/network/proxy/ProxyHost;
invoke-virtual {v0}, Lcom/vk/core/network/proxy/ProxyHost;->i()V
return-void
.end method
@@ -52,6 +52,11 @@
}
.end annotation
.line 1
iget-object v0, p0, Lcom/vk/core/network/proxy/ProxyHost$a;->a:Lcom/vk/core/network/proxy/ProxyHost;
invoke-virtual {v0}, Lcom/vk/core/network/proxy/ProxyHost;->i()V
return-void
.end method
@@ -382,6 +382,8 @@
if-eqz p1, :cond_0
const/4 v3, 0x1
goto :goto_0
:cond_0
@@ -687,9 +689,13 @@
.method public i()V
.locals 3
const-string v1, ""
invoke-static {}, Lru/vtosters/hooks/VKProxy;->getConfigNetworkProxy()Z
const-string v0, ""
move-result-object v1
invoke-static {}, Lru/vtosters/hooks/VKProxy;->getConfigNetworkProxyCerts()Z
move-result-object v0
.line 3
iget-object v2, p0, Lcom/vk/core/network/proxy/ProxyHost;->d:Lcom/vk/core/network/proxy/ProxySettings;
@@ -622,7 +622,9 @@
.line 12
:cond_1
const p1, 0x0
invoke-static {}, Lru/vtosters/hooks/VKProxy;->isProxyEnabled()Z
move-result p1
if-eqz p1, :cond_2
@@ -989,6 +989,36 @@
invoke-virtual {v0, p1}, Landroidx/preference/PreferenceGroup;->removePreference(Landroidx/preference/Preference;)Z
const-string p1, "useProxyServer"
.line 9
invoke-virtual {p0, p1}, Lcom/vtosters/lite/fragments/u2/PreferenceFragmentCompat;->findPreference(Ljava/lang/CharSequence;)Landroidx/preference/Preference;
move-result-object p1
check-cast p1, Landroidx/preference/SwitchPreference;
.line 10
sget-object v0, Lcom/vk/core/network/Network;->l:Lcom/vk/core/network/Network;
invoke-virtual {v0}, Lcom/vk/core/network/Network;->b()Lcom/vk/core/network/proxy/NetworkProxy;
move-result-object v0
.line 11
invoke-virtual {v0}, Lcom/vk/core/network/proxy/NetworkProxy;->d()Z
move-result v2
invoke-virtual {p1, v2}, Landroidx/preference/TwoStatePreference;->setChecked(Z)V
.line 12
new-instance v2, Lcom/vtosters/lite/general/fragments/SettingsGeneralFragment$b;
invoke-direct {v2, p0, v0, p1}, Lcom/vtosters/lite/general/fragments/SettingsGeneralFragment$b;-><init>(Lcom/vtosters/lite/general/fragments/SettingsGeneralFragment;Lcom/vk/core/network/proxy/NetworkProxy;Landroidx/preference/SwitchPreference;)V
invoke-virtual {p1, v2}, Landroidx/preference/Preference;->setOnPreferenceChangeListener(Landroidx/preference/Preference$OnPreferenceChangeListener;)V
const-string p1, "isRoamingState"
.line 13