wip
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
#Mon Mar 04 00:45:54 CST 2024
|
#Mon Mar 04 01:08:49 CST 2024
|
||||||
base.0=/home/brian/Desktop/vpnhotspotmod/mobile/build/intermediates/dex/freedomDebug/mergeExtDexFreedomDebug/classes.dex
|
base.0=/home/brian/Desktop/vpnhotspotmod/mobile/build/intermediates/dex/freedomDebug/mergeExtDexFreedomDebug/classes.dex
|
||||||
base.1=/home/brian/Desktop/vpnhotspotmod/mobile/build/intermediates/dex/freedomDebug/mergeProjectDexFreedomDebug/0/classes.dex
|
base.1=/home/brian/Desktop/vpnhotspotmod/mobile/build/intermediates/dex/freedomDebug/mergeProjectDexFreedomDebug/0/classes.dex
|
||||||
base.10=/home/brian/Desktop/vpnhotspotmod/mobile/build/intermediates/desugar_lib_dex/freedomDebug/classes1000.dex
|
base.10=/home/brian/Desktop/vpnhotspotmod/mobile/build/intermediates/desugar_lib_dex/freedomDebug/classes1000.dex
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
repositories {
|
repositories {
|
||||||
system: GIT
|
system: GIT
|
||||||
local_root_path: "$PROJECT_DIR"
|
local_root_path: "$PROJECT_DIR"
|
||||||
revision: "9a33a7d17a7c3c33885aa64c949b314c1bfcb3f8"
|
revision: "c7272190a891ad579733970c31e3d3c45ea64743"
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
|||||||
94
|
96
|
||||||
0
|
0
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
ä<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>h<EFBFBD><EFBFBD>Ҕ<EFBFBD>y<EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
ä<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>h<EFBFBD><EFBFBD>Ҕ<EFBFBD>y<EFBFBD>n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD>
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1,2 @@
|
|||||||
99
|
101
|
||||||
0
|
0
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
ɠ<EFBFBD>cϫ<EFBFBD>S<EFBFBD>lЉ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>}<EFBFBD>z
|
ɠ<EFBFBD>cϫ<EFBFBD>S<EFBFBD>lЉ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>}<EFBFBD>z<EFBFBD>y
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
package hanson.xyz.vpnhotspotmod;
|
package hanson.xyz.vpnhotspotmod;
|
||||||
|
|
||||||
@kotlin.Metadata(mv = {1, 9, 0}, k = 1, xi = 48, d1 = {"\u0000(\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u00012\u00020\u0002B\u0005\u00a2\u0006\u0002\u0010\u0003J\u0018\u0010\u0006\u001a\u00020\u00072\u0006\u0010\b\u001a\u00020\t2\u0006\u0010\n\u001a\u00020\u000bH\u0016R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006\f"}, d2 = {"Lhanson/xyz/vpnhotspotmod/MyBroadcastReceiver;", "Landroid/content/BroadcastReceiver;", "Lhanson/xyz/vpnhotspotmod/net/TetheringManager$StartTetheringCallback;", "()V", "handler", "Landroid/os/Handler;", "onReceive", "", "context", "Landroid/content/Context;", "intent", "Landroid/content/Intent;", "mobile_freedomDebug"})
|
@kotlin.Metadata(mv = {1, 9, 0}, k = 1, xi = 48, d1 = {"\u00004\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0002\u0018\u00002\u00020\u00012\u00020\u0002B\u0005\u00a2\u0006\u0002\u0010\u0003J\u0010\u0010\u0006\u001a\u00020\u00072\u0006\u0010\b\u001a\u00020\tH\u0002J\u0018\u0010\n\u001a\u00020\u00072\u0006\u0010\b\u001a\u00020\t2\u0006\u0010\u000b\u001a\u00020\fH\u0016J \u0010\r\u001a\u00020\u00072\u0006\u0010\b\u001a\u00020\t2\u0006\u0010\u000e\u001a\u00020\u000f2\u0006\u0010\u0010\u001a\u00020\u000fH\u0002R\u000e\u0010\u0004\u001a\u00020\u0005X\u0082\u0004\u00a2\u0006\u0002\n\u0000\u00a8\u0006\u0011"}, d2 = {"Lhanson/xyz/vpnhotspotmod/MyBroadcastReceiver;", "Landroid/content/BroadcastReceiver;", "Lhanson/xyz/vpnhotspotmod/net/TetheringManager$StartTetheringCallback;", "()V", "handler", "Landroid/os/Handler;", "createNotificationChannel", "", "context", "Landroid/content/Context;", "onReceive", "intent", "Landroid/content/Intent;", "showNotification", "title", "", "message", "mobile_freedomDebug"})
|
||||||
public final class MyBroadcastReceiver extends android.content.BroadcastReceiver implements hanson.xyz.vpnhotspotmod.net.TetheringManager.StartTetheringCallback {
|
public final class MyBroadcastReceiver extends android.content.BroadcastReceiver implements hanson.xyz.vpnhotspotmod.net.TetheringManager.StartTetheringCallback {
|
||||||
@org.jetbrains.annotations.NotNull
|
@org.jetbrains.annotations.NotNull
|
||||||
private final android.os.Handler handler = null;
|
private final android.os.Handler handler = null;
|
||||||
@@ -12,6 +12,12 @@ public final class MyBroadcastReceiver extends android.content.BroadcastReceiver
|
|||||||
/**
|
/**
|
||||||
* Called when tethering has been successfully started.
|
* Called when tethering has been successfully started.
|
||||||
*/
|
*/
|
||||||
|
private final void createNotificationChannel(android.content.Context context) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private final void showNotification(android.content.Context context, java.lang.String title, java.lang.String message) {
|
||||||
|
}
|
||||||
|
|
||||||
@java.lang.Override
|
@java.lang.Override
|
||||||
public void onReceive(@org.jetbrains.annotations.NotNull
|
public void onReceive(@org.jetbrains.annotations.NotNull
|
||||||
android.content.Context context, @org.jetbrains.annotations.NotNull
|
android.content.Context context, @org.jetbrains.annotations.NotNull
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -29,6 +29,11 @@ import android.content.Intent
|
|||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
|
import android.app.NotificationChannel
|
||||||
|
import android.app.NotificationManager
|
||||||
|
import android.app.PendingIntent
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import androidx.core.app.NotificationCompat
|
||||||
|
|
||||||
// added by hansonxyz
|
// added by hansonxyz
|
||||||
|
|
||||||
@@ -61,35 +66,72 @@ class MyBroadcastReceiver : BroadcastReceiver(), TetheringManager.StartTethering
|
|||||||
// */
|
// */
|
||||||
// override fun onTetheringFailed(error: Int? = null) { }
|
// override fun onTetheringFailed(error: Int? = null) { }
|
||||||
|
|
||||||
|
private fun createNotificationChannel(context: Context) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
val name = "Tethering Notification"
|
||||||
|
val descriptionText = "Notifications for tethering status"
|
||||||
|
val importance = NotificationManager.IMPORTANCE_DEFAULT
|
||||||
|
val channel = NotificationChannel("TETHERING_STATUS", name, importance).apply {
|
||||||
|
description = descriptionText
|
||||||
|
}
|
||||||
|
val notificationManager: NotificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
notificationManager.createNotificationChannel(channel)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun showNotification(context: Context, title: String, message: String) {
|
||||||
|
createNotificationChannel(context)
|
||||||
|
|
||||||
|
val notificationBuilder = NotificationCompat.Builder(context, "TETHERING_STATUS")
|
||||||
|
.setSmallIcon(R.drawable.ic_launcher_foreground)
|
||||||
|
.setContentTitle(title)
|
||||||
|
.setContentText(message)
|
||||||
|
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
|
||||||
|
|
||||||
|
val notificationManager = ContextCompat.getSystemService(context, NotificationManager::class.java)
|
||||||
|
notificationManager?.notify(System.currentTimeMillis().toInt(), notificationBuilder.build())
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
if (intent.action.toString().contains("BT_TETHER_START")) {
|
when (intent.action) {
|
||||||
TetheringManager.startTethering(TetheringManager.TETHERING_BLUETOOTH, false, this)
|
"BT_TETHER_START" -> {
|
||||||
}
|
TetheringManager.startTethering(TetheringManager.TETHERING_BLUETOOTH, false, this)
|
||||||
if (intent.action.toString().contains("BT_TETHER_STOP")) {
|
|
||||||
TetheringManager.stopTethering(TetheringManager.TETHERING_BLUETOOTH)
|
|
||||||
}
|
|
||||||
if (intent.action.toString().contains("WIFI_TETHER_START")) {
|
|
||||||
val config = synchronized(BootReceiver) { BootReceiver.config }
|
|
||||||
if (!(config == null || config.startables.isEmpty())) {
|
|
||||||
for (startable in config.startables.values) startable.start(App.app)
|
|
||||||
}
|
}
|
||||||
TetheringManager.startTethering(TetheringManager.TETHERING_WIFI, false, this)
|
"BT_TETHER_STOP" -> {
|
||||||
Toast.makeText(context, "Started tethering", Toast.LENGTH_SHORT).show()
|
TetheringManager.stopTethering(TetheringManager.TETHERING_BLUETOOTH)
|
||||||
}
|
}
|
||||||
if (intent.action.toString().contains("WIFI_TETHER_STOP")) {
|
"WIFI_TETHER_START" -> {
|
||||||
TetheringManager.stopTethering(TetheringManager.TETHERING_WIFI)
|
val config = synchronized(BootReceiver) { BootReceiver.config }
|
||||||
}
|
if (!(config == null || config.startables.isEmpty())) {
|
||||||
if (intent.action.toString().contains("android.net.conn.TETHER_STATE_CHANGED")) {
|
for (startable in config.startables.values) startable.start(App.app)
|
||||||
@Suppress("UNCHECKED_CAST")
|
}
|
||||||
val tetheredInterfaces = intent.getStringArrayListExtra("tetherArray")
|
TetheringManager.startTethering(TetheringManager.TETHERING_WIFI, false, this)
|
||||||
Toast.makeText(context, "Tethering interfaces changed", Toast.LENGTH_SHORT).show()
|
showNotification(context, "Tethering Status", "Wi-Fi tethering started")
|
||||||
tetheredInterfaces?.forEach { iface ->
|
}
|
||||||
Intent(context, TetheringService::class.java).apply {
|
"WIFI_TETHER_STOP" -> {
|
||||||
putExtra(TetheringService.EXTRA_ADD_INTERFACES, arrayOf(iface))
|
TetheringManager.stopTethering(TetheringManager.TETHERING_WIFI)
|
||||||
context.startForegroundService(this)
|
}
|
||||||
|
TetheringManager.ACTION_TETHER_STATE_CHANGED -> {
|
||||||
|
val tetheredInterfaces = intent.getStringArrayListExtra(TetheringManager.EXTRA_ACTIVE_TETHER)
|
||||||
|
val message = if (tetheredInterfaces != null && tetheredInterfaces.isNotEmpty()) {
|
||||||
|
"Tethering interfaces changed. Monitoring service called for ${tetheredInterfaces.joinToString(", ")}"
|
||||||
|
} else {
|
||||||
|
"No active tethering interfaces found"
|
||||||
|
}
|
||||||
|
showNotification(context, "Tethering Status", message)
|
||||||
|
if (tetheredInterfaces != null && tetheredInterfaces.isNotEmpty()) {
|
||||||
|
Toast.makeText(context, "Tethering interfaces changed", Toast.LENGTH_SHORT).show()
|
||||||
|
tetheredInterfaces.forEach { iface ->
|
||||||
|
Intent(context, TetheringService::class.java).apply {
|
||||||
|
putExtra(TetheringService.EXTRA_ADD_INTERFACES, arrayOf(iface))
|
||||||
|
context.startForegroundService(this)
|
||||||
|
}
|
||||||
|
Toast.makeText(context, "Monitoring service called for $iface", Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Toast.makeText(context, "No active tethering interfaces found", Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
Toast.makeText(context, "Monitoring service called for $iface", Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ object TetheringManager {
|
|||||||
* gives a String[] listing all the interfaces currently tethered
|
* gives a String[] listing all the interfaces currently tethered
|
||||||
* (ie, has DHCPv4 support and packets potentially forwarded/NATed)
|
* (ie, has DHCPv4 support and packets potentially forwarded/NATed)
|
||||||
*/
|
*/
|
||||||
private const val EXTRA_ACTIVE_TETHER = "tetherArray"
|
public const val EXTRA_ACTIVE_TETHER = "tetherArray"
|
||||||
/**
|
/**
|
||||||
* gives a String[] listing all the interfaces we tried to tether and
|
* gives a String[] listing all the interfaces we tried to tether and
|
||||||
* failed. Use [getLastTetherError] to find the error code
|
* failed. Use [getLastTetherError] to find the error code
|
||||||
|
|||||||
Reference in New Issue
Block a user