diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 0a6e064e..c29a085e 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -21,6 +21,7 @@
+
diff --git a/app/build.gradle b/app/build.gradle
index 9f38f8dd..645b8f4f 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -144,4 +144,12 @@ dependencies {
implementation files('libs/httpclientandroidlib-1.2.1.jar')
implementation 'net.zetetic:android-database-sqlcipher:4.4.3@aar'
+ implementation 'com.github.apl-devs:appintro:v4.2.2'
+ implementation 'androidx.palette:palette:1.0.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
+ implementation 'com.google.android.material:material:1.2.1'
+ implementation project(path: ':intentintegrator')
+ androidTestImplementation "tools.fastlane:screengrab:1.2.0"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e8ded7e..6bed4757 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -193,11 +193,6 @@
android:enabled="true"
android:exported="false"
android:stopWithTask="true" />
-
@@ -210,16 +205,6 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/Error/error-dark.html b/app/src/main/assets/Error/error-dark.html
index 5f3f8833..bc30986f 100644
--- a/app/src/main/assets/Error/error-dark.html
+++ b/app/src/main/assets/Error/error-dark.html
@@ -21,7 +21,7 @@
-
+
$ERROR_M1
$ERROR_M2
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeController.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeController.java
index a23aeb96..97384169 100644
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeController.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeController.java
@@ -14,6 +14,7 @@ import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
+import android.net.VpnService;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -43,7 +44,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.bookmarkManager.bookmarkController;
-import com.darkweb.genesissearchengine.appManager.tabManager.tabController;
import com.darkweb.genesissearchengine.databaseManager.databaseController;
import com.darkweb.genesissearchengine.appManager.historyManager.historyController;
import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel;
@@ -81,10 +81,10 @@ import com.google.android.gms.ads.AdView;
import org.mozilla.geckoview.ContentBlocking;
import org.mozilla.geckoview.GeckoResult;
import org.mozilla.geckoview.GeckoSession;
-import org.torproject.android.service.OrbotService;
-import org.torproject.android.service.util.Prefs;
-import org.torproject.android.service.wrapper.LocaleHelper;
-import org.torproject.android.service.wrapper.orbotLocalConstants;
+import org.torproject.android.proxy.OrbotService;
+import org.torproject.android.proxy.util.Prefs;
+import org.torproject.android.proxy.wrapper.LocaleHelper;
+import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -108,6 +108,7 @@ import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessage
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManagerCallbacks.M_RATE_APPLICATION;
import static java.lang.Character.isLetter;
import static org.mozilla.geckoview.ContentBlocking.CookieBehavior.ACCEPT_FIRST_PARTY;
+import static org.torproject.android.proxy.TorServiceConstants.REQUEST_VPN;
public class homeController extends AppCompatActivity implements ComponentCallbacks2
{
@@ -1478,6 +1479,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
handler.postDelayed(() -> mGeckoView.clearFocus(), 500);
}
}
+ else if(requestCode == 7777){
+ if(resultCode == RESULT_OK){
+ status.sVPNPermission = true;
+ onStartVPNApplication();
+ }else {
+ status.sVPNPermission = false;
+ }
+ }
else if(requestCode==1){
mGeckoClient.onUploadRequest(resultCode,data);
}
@@ -1512,6 +1521,17 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
public void onStartApplication(View view){
+ Intent intentVPN = VpnService.prepare(this);
+ if(status.sVPNStatus && intentVPN!=null){
+ startActivityForResult(intentVPN, REQUEST_VPN);
+ }else{
+ pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_START_ORBOT);
+ onInvokeProxyLoading();
+ mHomeViewController.initHomePage();
+ }
+ }
+
+ public void onStartVPNApplication(){
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_START_ORBOT);
onInvokeProxyLoading();
mHomeViewController.initHomePage();
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeViewController.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeViewController.java
index fd16be42..640de0af 100644
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeViewController.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/homeManager/homeController/homeViewController.java
@@ -48,7 +48,7 @@ import com.example.myapplication.R;
import com.google.android.gms.ads.AdView;
import com.google.android.material.appbar.AppBarLayout;
import org.mozilla.geckoview.GeckoView;
-import org.torproject.android.service.wrapper.orbotLocalConstants;
+import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -1028,6 +1028,7 @@ class homeViewController
}
}
+ @SuppressLint("WrongConstant")
public void onUpdateSearchEngineBar(boolean pStatus, int delay)
{
if(pStatus){
@@ -1275,6 +1276,7 @@ class homeViewController
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
mContext.getWindow().getDecorView().setSystemUiVisibility(flags);
+ mContext.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
mProgressBar.setVisibility(View.GONE);
mTopBar.setVisibility(View.GONE);
@@ -1320,6 +1322,7 @@ class homeViewController
}
this.mBlockerFullSceen.animate().setStartDelay(0).setDuration(200).alpha(0).withEndAction(() -> mBlockerFullSceen.setVisibility(View.GONE));
+ mContext.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
initTopBarPadding();
mAppBar.setExpanded(true,false);
mAppBar.refreshDrawableState();
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogAdapter.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogAdapter.java
index bca37541..a303bc72 100644
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogAdapter.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogAdapter.java
@@ -15,7 +15,7 @@ import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.tabManager.tabEnums;
import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.example.myapplication.R;
-import org.torproject.android.service.wrapper.logRowModel;
+import org.torproject.android.proxy.wrapper.logRowModel;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogController.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogController.java
index b187b907..5ec6eb67 100644
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogController.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogController.java
@@ -2,11 +2,9 @@ package com.darkweb.genesissearchengine.appManager.orbotLogManager;
import android.content.res.Configuration;
import android.os.Bundle;
-import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
-import android.view.ViewTreeObserver;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -26,7 +24,7 @@ import com.darkweb.genesissearchengine.pluginManager.pluginController;
import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
import com.example.myapplication.R;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import org.torproject.android.service.wrapper.orbotLocalConstants;
+import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.util.Collections;
import java.util.List;
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogModel.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogModel.java
index 09739aef..ee3928e4 100644
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogModel.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotLogManager/orbotLogModel.java
@@ -2,9 +2,8 @@ package com.darkweb.genesissearchengine.appManager.orbotLogManager;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
-import org.torproject.android.service.wrapper.logRowModel;
+import org.torproject.android.proxy.wrapper.logRowModel;
import java.util.ArrayList;
-import java.util.Collections;
class orbotLogModel
{
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotManager/orbotController.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotManager/orbotController.java
index ef145d7a..1e5cc4cb 100755
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotManager/orbotController.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/orbotManager/orbotController.java
@@ -2,6 +2,7 @@ package com.darkweb.genesissearchengine.appManager.orbotManager;
import android.content.Intent;
import android.content.res.Configuration;
+import android.net.VpnService;
import android.os.Bundle;
import android.os.Debug;
import android.util.Log;
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/constants/constants.java b/app/src/main/java/com/darkweb/genesissearchengine/constants/constants.java
index 6f3ed6d9..58b9eb10 100755
--- a/app/src/main/java/com/darkweb/genesissearchengine/constants/constants.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/constants/constants.java
@@ -24,6 +24,7 @@ public class constants
public static final String CONST_GENESIS_ERROR_CACHED_DARK = "error/error-dark.html";
public static final String CONST_GENESIS_DOMAIN_URL_SLASHED = "https://boogle.store/";
public static final String CONST_GENESIS_REFERENCE_WEBSITES = "https://drive.google.com/uc?export=download&id=1lOmukKOPYHApBFyTDkaRPoAwm59E_YEE";
+ public static final String CONST_GENESIS_BRIDGE_WEBSITES = "https://drive.google.com/uc?export=download&id=1EIX0ERNxDesCv8yc65reEn4LV6Y1PjbR";
public static final String CONST_GENESIS_DOMAIN_URL = "https://boogle.store";
public static final String CONST_GENESIS_LOCAL_TIME_GET_KEY = "pLocalTimeVerificationToken";
public static final String CONST_GENESIS_GMT_TIME_GET_KEY = "pGlobalTimeVerificationToken";
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/constants/keys.java b/app/src/main/java/com/darkweb/genesissearchengine/constants/keys.java
index 0a41861b..04b32d63 100755
--- a/app/src/main/java/com/darkweb/genesissearchengine/constants/keys.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/constants/keys.java
@@ -63,5 +63,6 @@ public class keys
public static final String BRIDGE_CUSTOM_TYPE = "BRIDGE_CUSTOM_TYPE_V1";
public static final String BRIDGE_ENABLES = "pref_bridges_enabled_V1";
public static final String VPN_ENABLED = "pref_vpn_V1";
+ public static final String BRIDGE_DEFAULT = "BRIDGE_DEFAULT";
}
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/constants/status.java b/app/src/main/java/com/darkweb/genesissearchengine/constants/status.java
index 0124cf4c..6b57dfd9 100755
--- a/app/src/main/java/com/darkweb/genesissearchengine/constants/status.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/constants/status.java
@@ -31,6 +31,7 @@ public class status
public static String sBridgeCustomType = strings.GENERIC_EMPTY_STR;
public static String sVersion = "";
public static String sExternalWebsite = strings.GENERIC_EMPTY_STR;
+ public static String sBridgesDefault = strings.BRIDGES_DEFAULT;
public static boolean sSettingEnableZoom = true;
public static boolean sSettingEnableVoiceInput = true;
@@ -61,6 +62,7 @@ public class status
public static boolean sBridgeGatewayAuto = false;
public static boolean sBridgeGatewayManual = false;
public static boolean sVPNStatus = false;
+ public static boolean sVPNPermission = false;
public static boolean sBridgeStatus = false;
public static int sTheme = enums.Theme.THEME_DEFAULT;
@@ -111,6 +113,7 @@ public class status
status.sSettingSearchStatus = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE,constants.CONST_BACKEND_GENESIS_URL));
status.sBridgeCustomBridge = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
status.sBridgeCustomType = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,strings.GENERIC_EMPTY_SPACE));
+ status.sBridgesDefault = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_DEFAULT,strings.BRIDGES_DEFAULT));
status.sBridgeNotificationManual = (int)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_NOTIFICATION_STATUS,1));
status.sRestoreTabs = (boolean)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_RESTORE_TAB,false));
status.sCharacterEncoding = (boolean)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING,false));
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/constants/strings.java b/app/src/main/java/com/darkweb/genesissearchengine/constants/strings.java
index 9bb2f5a8..1077a49d 100755
--- a/app/src/main/java/com/darkweb/genesissearchengine/constants/strings.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/constants/strings.java
@@ -28,6 +28,18 @@ public class strings
public static final String BRIDGE_CUSTOM_BRIDGE_OBFS4 = "obfs4";
public static final String BRIDGE_CUSTOM_BRIDGE_MEEK = "meek";
+ public static final String BRIDGES_DEFAULT = "obfs4 78.215.187.186:45675 AE907EE5FAA5D0D27E0C83EFA6ADF8E79FCC0FF1 cert=/TRjMo+RinKaixARMjMtZZBhystaBe+aDaapPrbiITFtWx3M/AJcvpjHjO54tJqLd1+IWQ iat-mode=0\n" +
+ "obfs4 107.160.7.24:443 7A0904F6D182B81BEFE0DEDAFEC974494672627B cert=a5/IlZMnDvb8d92LTHMfsBIgL7QlDLPiXiLwe85uedC80mGD0QerygzmsWnMEdwG9ER9Eg iat-mode=0\n" +
+ "obfs4 79.136.160.201:46501 66AC975BF7CB429D057AE07FC0312C57D61BAEC1 cert=dCtn9Ya8z+R8YQikdWgC3XTAt58z5Apnm95QHrJwnhFSdnphPPEz+NMm6OawWc2srKLjJg iat-mode=0\n" +
+ "obfs4 94.242.249.2:58809 6AF3024788A7EA8F84E3FA3F60018B62291803E4 cert=X0sDCJLKMM/EISdGDEfGrsks41UYmScjIIXQ9AZgWFVKNKS6klcNEpdF4tNXFz6kIyk4Ug iat-mode=0\n" +
+ "obfs4 35.203.134.33:2224 15524C683CC872C8C8FB5B779A8D53F54F7ADCD4 cert=bXLTv0Kwt1zgPBoeVF86vC+0tYAHepR7+QMczhhTQw9hpAIhatt/Bpe6rSGY63Zh8aZ+dQ iat-mode=0\n" +
+ "obfs4 188.166.252.228:9443 595770328CA95E39FF5B81013880B46CA1B29546 cert=3PjhGUq3xWDMrBAzbV1eU4zPSB3GRGBpYdXQEs9hkrwC9RSZdnEe1P+cg7VgLgYTj/2MMg iat-mode=0\n" +
+ "obfs4 89.163.181.169:443 6A17D1E29E2807A1A4314215553079001031A7FF cert=e8JIYivx1zbYNOqq3a3+nDf/NDHoDQ/th/RVAnlVQePUIHxllG7aOku7pSwZisZ7i6ybVw iat-mode=0\n" +
+ "obfs4 94.242.249.2:40190 C7BE8154678E7537CCAC60B097D51A8A7EF8BCDF cert=8jw57wlMlVXCKsCnF7gCdApx7sRZLD5zPl8qdccwp0zltYG6kMYqBNm60dP8IxRH/l8OcQ iat-mode=0\n" +
+ "obfs4 77.81.104.251:443 115C90EBD0EB631C177560A872535772215478D9 cert=UsuF7oN4KNKviZP54JOyTCoCphrdM5gwZK4vT8GnCAcmqLUJEJxyw1dpko9a/ii6He4iZg iat-mode=0\n" +
+ "obfs4 5.249.146.133:80 FAF3A0073330D6AD92F3B4874B0D945562A633EF cert=TRe8bAODtjcGij7EPQaUayWEOqR99wDh2l3B4hFtCsn1JTJCph03pRZ9tx8wynpLYKWMQg iat-mode=0\n" +
+ "meek_lite 0.0.2.0:2 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com\n" +
+ "snowflake 192.0.2.3:1";
/*Generic*/
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/dataManager/bridgesDataModel.java b/app/src/main/java/com/darkweb/genesissearchengine/dataManager/bridgesDataModel.java
new file mode 100644
index 00000000..1ea21461
--- /dev/null
+++ b/app/src/main/java/com/darkweb/genesissearchengine/dataManager/bridgesDataModel.java
@@ -0,0 +1,71 @@
+package com.darkweb.genesissearchengine.dataManager;
+
+import android.content.Context;
+
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.toolbox.StringRequest;
+import com.android.volley.toolbox.Volley;
+import com.darkweb.genesissearchengine.constants.keys;
+import com.darkweb.genesissearchengine.constants.status;
+import com.darkweb.genesissearchengine.constants.strings;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_BRIDGE_WEBSITES;
+import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_REFERENCE_WEBSITES;
+
+public class bridgesDataModel {
+
+ private String mBridges = "null";
+ private boolean mLoading = false;
+
+ public bridgesDataModel(){
+ mBridges = status.sBridgesDefault;
+ }
+
+ private void onLoad(Context pContext){
+ if(!mLoading){
+ mLoading = true;
+
+ StringRequest stringRequest = new StringRequest(Request.Method.GET, CONST_GENESIS_BRIDGE_WEBSITES,
+ response -> {
+ if(response.length()>10){
+ mBridges = response;
+ status.sBridgesDefault = response;
+ dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_DEFAULT,strings.BRIDGES_DEFAULT));
+ mLoading = false;
+ }else {
+ mBridges = status.sReferenceWebsites;
+ }
+ },
+ error -> {
+ mBridges = status.sReferenceWebsites;
+ mLoading = false;
+ });
+
+ RequestQueue requestQueue = Volley.newRequestQueue(pContext);
+ requestQueue.add(stringRequest);
+ }
+ }
+
+ private String onFetch(){
+ try {
+ return mBridges;
+ }catch (Exception ignored){}
+ return strings.GENERIC_EMPTY_SPACE;
+ }
+
+ public Object onTrigger(dataEnums.eBridgeWebsiteCommands p_commands, List