From b492b5076bb117d9b1bedd872bf8e8df390db7c8 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 21 Jun 2026 15:21:16 +0300 Subject: [PATCH] feat: implement accessibility-based scraper service and standalone worker backend with device registration UI --- .../gradle-8.13-bin.zip.lck | 0 .../gradle-8.13-bin.zip.part | 0 .../.gradle/8.13/checksums/checksums.lock | Bin 17 -> 17 bytes .../.gradle/8.13/checksums/md5-checksums.bin | Bin 32497 -> 32547 bytes .../.gradle/8.13/checksums/sha1-checksums.bin | Bin 86693 -> 86855 bytes .../executionHistory/executionHistory.bin | Bin 0 -> 629561 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/8.13/fileHashes/fileHashes.bin | Bin 18597 -> 71865 bytes .../.gradle/8.13/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.13/fileHashes/resourceHashesCache.bin | Bin 18531 -> 18973 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../buildOutputCleanup/outputFiles.bin | Bin 0 -> 22097 bytes android_bot/.gradle/file-system.probe | Bin 0 -> 8 bytes android_bot/app/src/main/AndroidManifest.xml | 18 +- .../java/com/siro/android_bot/MainActivity.kt | 73 +- .../siro/android_bot/network/WorkerClient.kt | 121 +++ .../siro/android_bot/service/AppLauncher.kt | 39 + .../service/ScraperAccessibilityService.kt | 397 +++++++++ .../app/src/main/res/values/strings.xml | 1 + .../res/xml/accessibility_service_config.xml | 9 + backend/bot/standalone_worker.php | 753 ++++++++++++++++++ 21 files changed, 1402 insertions(+), 9 deletions(-) create mode 100644 .gradle_home/wrapper/dists/gradle-8.13-bin/5xuhj0ry160q40clulazy9h7d/gradle-8.13-bin.zip.lck create mode 100644 .gradle_home/wrapper/dists/gradle-8.13-bin/5xuhj0ry160q40clulazy9h7d/gradle-8.13-bin.zip.part create mode 100644 android_bot/.gradle/8.13/executionHistory/executionHistory.bin create mode 100644 android_bot/.gradle/buildOutputCleanup/outputFiles.bin create mode 100644 android_bot/.gradle/file-system.probe create mode 100644 android_bot/app/src/main/java/com/siro/android_bot/network/WorkerClient.kt create mode 100644 android_bot/app/src/main/java/com/siro/android_bot/service/AppLauncher.kt create mode 100644 android_bot/app/src/main/java/com/siro/android_bot/service/ScraperAccessibilityService.kt create mode 100644 android_bot/app/src/main/res/xml/accessibility_service_config.xml create mode 100644 backend/bot/standalone_worker.php diff --git a/.gradle_home/wrapper/dists/gradle-8.13-bin/5xuhj0ry160q40clulazy9h7d/gradle-8.13-bin.zip.lck b/.gradle_home/wrapper/dists/gradle-8.13-bin/5xuhj0ry160q40clulazy9h7d/gradle-8.13-bin.zip.lck new file mode 100644 index 0000000..e69de29 diff --git a/.gradle_home/wrapper/dists/gradle-8.13-bin/5xuhj0ry160q40clulazy9h7d/gradle-8.13-bin.zip.part b/.gradle_home/wrapper/dists/gradle-8.13-bin/5xuhj0ry160q40clulazy9h7d/gradle-8.13-bin.zip.part new file mode 100644 index 0000000..e69de29 diff --git a/android_bot/.gradle/8.13/checksums/checksums.lock b/android_bot/.gradle/8.13/checksums/checksums.lock index 54a0ddfa1c26d326fca2674a5f33080791fc59b6..da21be09db7ecf7c49f940105eb8361a12b27b19 100644 GIT binary patch literal 17 VcmZRsIY0CEqbrVS3}C?G4FEyO1#bWV literal 17 VcmZRsIY0CEqbrVS3}C?G3;;pF1!n*N diff --git a/android_bot/.gradle/8.13/checksums/md5-checksums.bin b/android_bot/.gradle/8.13/checksums/md5-checksums.bin index 9d46967064a3cd80e1169f7bd50ef428797e9db3..4463403e5e04548bb4f5623b28ce05ef933e4346 100644 GIT binary patch delta 100 zcmezPmvQkw#tkMCjFOv8B{m2MXe{TH?mae5k^v0rK5o9Nv6z!FbED!4(anw?8_bN1 tffAZPtO&vaQjBlYMQ`mZzEa_A5i{p#7Xt(1yqBNOIe~REuy_J#JpgA@9o+x` delta 32 ocmZ4dkMZMQ#tkMCj1rqoB{m3b{;M&YlQD3k;sMdkjvgD#0ONfO{r~^~ diff --git a/android_bot/.gradle/8.13/checksums/sha1-checksums.bin b/android_bot/.gradle/8.13/checksums/sha1-checksums.bin index f261c432f99c388c90f2a1e88a1586d2741751da..874c193221788bd19db73d87351fe5ca17ac91bd 100644 GIT binary patch delta 271 zcmZ3wl=b*B)(s{Sj1xDTN(eIXxAyn;*MHY!00G9JrJHS~nw1$>ZoX-|dl}=5%~PLn zFbc5$3pu+}`WdJlkQz`%e delta 61 zcmV-D0K)&rrUj*?1+X+20g$sb7!d-qUK)BM0g;nI`Bk$PK7OVFma~=Q2m!OT<>&~r TweBk%0U@y=@Cmn}6afT2?^75{ diff --git a/android_bot/.gradle/8.13/executionHistory/executionHistory.bin b/android_bot/.gradle/8.13/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..040e87c36e220b7531e06a6e662b2c1b277b95b0 GIT binary patch literal 629561 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˙y^MzNNQ6lutfAkFy_i8 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
_u5qb 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�_3FZ3Dw~Mp)R`cCl8%3TmOrDmQ>=5D8~(4-Mr-i z&o_hLzj!hD?j`C3E3aKEPh@C=DU5E=RFz!jjHF~g^4zpyRikEyye8!d6QZaSt-VLJ zl^y9{hsgcQ2|=#q)eq~m=%07jeYwrv-poH$MAgXG2H$xq)u1Jb2)AZ|~3_uG_Ob3R$)NYD6=LLxgolOKTsYhpwa%Ox$= z{ND6%?d^7pG4qOk|jXVTi!l4~i2W9a$TBPS5w<^@hHaq<9MC z6=(Q`ehm9bSPK&dyv7Zlp z#V&nDf2CHwSRKFGWNFsC`-lDlH(*X;W|@SvYZuzRrOAj0k~R9!S{2-y(J#p@V1TSI zWdtn`2G$UuRc%GU3jl%ZjrB?@N*Dw-zA5~-FW=EoY{sHSJLcOa?+$_-f0%=z3$dqo zBDB{9uW=XzY@4iofDbhr!<3 z8Cw|`oFFQ9`vRBcTe)4%6nQG^bxw92@5DPfzkotBrkt*go^Wo8yM1;`_}{BXfI>S( z7smLNI)6K@U^IKr+~P!*36N+&j3V5n#efSu))`UP!!ih@$KN-L4capI#2nY^;(kM? zd*JwPo^_iAdv$|5g#djgx~D&>oNx8pN*-$`W?!uxpoRYWPk{^lnKOVm0fc9lXXR8F z=jCN(7A2Vi7pwyBHcl@wsZ7o*OBCq!T6^(xL9BV1zHV^b2b&B=3=xJ?Sk~mCFHVK5 z`1b*=DbGs>Wv?LMVI`nJnh@Yt06fe78EI-d17i>9B1EW@7zZG8Gh<}#fpEn@*oonB z0n2TZls0QW)IE@LM(!ie8j|)!C$7c<^;INasy>J=3D@sEeBu# literal 0 HcmV?d00001 diff --git a/android_bot/.gradle/8.13/executionHistory/executionHistory.lock b/android_bot/.gradle/8.13/executionHistory/executionHistory.lock index 8f4ba1cb01e69a7c4babe4adbfe63d80f0d17593..7d8f04655f6997ebac564c77858cae3747b437bf 100644 GIT binary patch literal 17 UcmZSHW4!avD({VX3=rT106ZoH{r~^~ literal 17 TcmZSHW4!avD({VX3{U_7JLCks diff --git a/android_bot/.gradle/8.13/fileHashes/fileHashes.bin b/android_bot/.gradle/8.13/fileHashes/fileHashes.bin index 3ee70d3014106ecb51128f86949713d6fd1d40e5..7d8fe4aa60469892f85d4ad74489bbbd4c032f78 100644 GIT binary patch literal 71865 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

E~>1bCD-hW`$x5_x301K{S^xf?My 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 literal 17 UcmZQpDUVz8=j>v01_JhPei7N;|00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##{uhDco)-!7y$o-g zzxN_U!!SF8Jr~@o4N6N;#W|(#wsal+|Dbaq>u8=c;RWeQv=4pOy)?(yoh3bo_JGPs z?d6SW249yH(H^*=YW?VkyzgYcOncN3*NmnvM@PDe_O0*U8n#^Qdqnzq+T+zz&EtAz zggn2J_Qa&{&7;QGX42DW-+fybbDt}|N%}nP5_QvskhX$i(i>^dY%d%vZx=NAy0nva zc~@^&*@QiS?1yPreUtNVtyPN1-bOq9W*EQIzI*tD00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2>e?Cq33aY&l%=D zLw}_2TZ(+MX8xc+hs|}pr(jcU zg0yd(z2H=vQ?;_}V~;t9udIlNYS;@$k3-gyzw24aol`X{aU~}9!rC3E$l$%w?M<=u z&uU9!*$a!pAu6rdlX&9H#B`B-HkG~T&pa7f-)b~i{TXMkb7nt#QB}NX5*Dg*v!-Jd z$!dw4z35nI9(fvkiStQ37hdjO*v?+WK6#KG9pU8W4`-wwm|C>57k~ei;`*{{g6`^Q gyY0)vFs|Oke#Sl3vgW5gS9P=)I0}R3;;dh1v&r# literal 17 UcmZSn@TkOm3HOb23=qHw06l#K*8l(j diff --git a/android_bot/.gradle/buildOutputCleanup/outputFiles.bin b/android_bot/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..2d8ab2c13b8dd62d520a5658dba0fa7d7e4ae2ba GIT binary patch literal 22097 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 NeCxw%`hM#_@^9YMNUs0@ literal 0 HcmV?d00001 diff --git a/android_bot/.gradle/file-system.probe b/android_bot/.gradle/file-system.probe new file mode 100644 index 0000000000000000000000000000000000000000..31d1f58f2e78b231f1be8e324b6cae2921f24a7f GIT binary patch literal 8 PcmZQzV4U~z)0sm63-|;H literal 0 HcmV?d00001 diff --git a/android_bot/app/src/main/AndroidManifest.xml b/android_bot/app/src/main/AndroidManifest.xml index 3d14b48..e511a4e 100644 --- a/android_bot/app/src/main/AndroidManifest.xml +++ b/android_bot/app/src/main/AndroidManifest.xml @@ -2,6 +2,9 @@ + + + + android:theme="@style/Theme.Android_bot" + android:usesCleartextTraffic="true"> + + + + + + + \ No newline at end of file diff --git a/android_bot/app/src/main/java/com/siro/android_bot/MainActivity.kt b/android_bot/app/src/main/java/com/siro/android_bot/MainActivity.kt index 41860b5..6a468c8 100644 --- a/android_bot/app/src/main/java/com/siro/android_bot/MainActivity.kt +++ b/android_bot/app/src/main/java/com/siro/android_bot/MainActivity.kt @@ -1,27 +1,46 @@ package com.siro.android_bot +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context import android.os.Bundle +import android.provider.Settings +import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import com.siro.android_bot.ui.theme.Android_botTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + + val androidId = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) ?: "UNKNOWN" + enableEdgeToEdge() setContent { Android_botTheme { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> - Greeting( - name = "Android", + BotSetupScreen( + deviceId = androidId, modifier = Modifier.padding(innerPadding) ) } @@ -31,17 +50,55 @@ class MainActivity : ComponentActivity() { } @Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) +fun BotSetupScreen(deviceId: String, modifier: Modifier = Modifier) { + val context = LocalContext.current + + Column( + modifier = modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "Siro Scraper Bot 🤖", + style = MaterialTheme.typography.headlineMedium, + fontWeight = FontWeight.Bold + ) + Spacer(modifier = Modifier.height(32.dp)) + Text( + text = "Your Device ID (Android ID):", + style = MaterialTheme.typography.bodyLarge + ) + Spacer(modifier = Modifier.height(8.dp)) + Text( + text = deviceId, + style = MaterialTheme.typography.headlineSmall, + color = MaterialTheme.colorScheme.primary, + fontWeight = FontWeight.Black, + textAlign = TextAlign.Center + ) + Spacer(modifier = Modifier.height(32.dp)) + Button(onClick = { + val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("Device ID", deviceId) + clipboard.setPrimaryClip(clip) + Toast.makeText(context, "Copied to clipboard!", Toast.LENGTH_SHORT).show() + }) { + Text("Copy ID") + } + Spacer(modifier = Modifier.height(48.dp)) + Text( + text = "Make sure to add this ID to your Siro Server.\nAlso, remember to enable this app in Settings > Accessibility.", + style = MaterialTheme.typography.bodyMedium, + textAlign = TextAlign.Center, + modifier = Modifier.padding(horizontal = 32.dp) + ) + } } @Preview(showBackground = true) @Composable fun GreetingPreview() { Android_botTheme { - Greeting("Android") + BotSetupScreen("a1b2c3d4e5f6g7h8") } } \ No newline at end of file diff --git a/android_bot/app/src/main/java/com/siro/android_bot/network/WorkerClient.kt b/android_bot/app/src/main/java/com/siro/android_bot/network/WorkerClient.kt new file mode 100644 index 0000000..4f01755 --- /dev/null +++ b/android_bot/app/src/main/java/com/siro/android_bot/network/WorkerClient.kt @@ -0,0 +1,121 @@ +package com.siro.android_bot.network + +import android.content.Context +import android.provider.Settings +import android.util.Log +import org.json.JSONObject +import java.io.BufferedReader +import java.io.InputStreamReader +import java.io.OutputStreamWriter +import java.net.HttpURLConnection +import java.net.URL +import javax.crypto.Mac +import javax.crypto.spec.SecretKeySpec + +class WorkerClient(private val context: Context) { + + private val TAG = "WorkerClient" + private val SECRET_KEY = "SIRO_BOT_SUPER_SECRET_123" + + // Read the real hardware Android ID + val deviceId: String by lazy { + Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID) ?: "UNKNOWN_DEVICE" + } + + // Change this to your actual server domain + private val BASE_URL = "https://api.intaleq.xyz/bot_android/standalone_worker.php" + // For local testing use: "http://10.0.2.2:8000/standalone_worker.php" + + private fun generateSignature(deviceId: String, ts: Long): String { + val message = "$deviceId$ts" + val algorithm = "HmacSHA256" + val mac = Mac.getInstance(algorithm) + val secretKeySpec = SecretKeySpec(SECRET_KEY.toByteArray(), algorithm) + mac.init(secretKeySpec) + val hashBytes = mac.doFinal(message.toByteArray()) + return hashBytes.joinToString("") { "%02x".format(it) } + } + + fun fetchTask(): JSONObject? { + try { + val ts = System.currentTimeMillis() / 1000 + val sig = generateSignature(deviceId, ts) + + val urlString = "$BASE_URL?device_id=$deviceId&ts=$ts&sig=$sig" + val url = URL(urlString) + + Log.d(TAG, "Fetching task from: $urlString") + val connection = url.openConnection() as HttpURLConnection + connection.requestMethod = "GET" + connection.connectTimeout = 10000 + connection.readTimeout = 10000 + + val responseCode = connection.responseCode + if (responseCode == HttpURLConnection.HTTP_OK) { + val reader = BufferedReader(InputStreamReader(connection.inputStream)) + val response = reader.readText() + reader.close() + return JSONObject(response) + } else { + Log.e(TAG, "Fetch Error: HTTP $responseCode") + } + } catch (e: Exception) { + Log.e(TAG, "Exception during fetchTask: ${e.message}") + } + return null + } + + fun submitPrice(taskId: String, appName: String, startLat: Double, startLng: Double, endLat: Double, endLng: Double, distanceKm: Double, price: Double): Boolean { + try { + val ts = System.currentTimeMillis() / 1000 + val sig = generateSignature(deviceId, ts) + + val payload = JSONObject().apply { + put("device_id", deviceId) + put("ts", ts) + put("sig", sig) + put("task_id", taskId) + put("type", "price_check") + put("status", "success") + + val resultData = JSONObject().apply { + put("app", appName) + put("distance_km", distanceKm) + put("price", price) + put("start_lat", startLat) + put("start_lng", startLng) + put("end_lat", endLat) + put("end_lng", endLng) + } + put("result_data", resultData) + } + + val url = URL(BASE_URL) + val connection = url.openConnection() as HttpURLConnection + connection.requestMethod = "POST" + connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8") + connection.doOutput = true + connection.connectTimeout = 10000 + connection.readTimeout = 10000 + + val writer = OutputStreamWriter(connection.outputStream) + writer.write(payload.toString()) + writer.flush() + writer.close() + + val responseCode = connection.responseCode + return if (responseCode == HttpURLConnection.HTTP_OK) { + val reader = BufferedReader(InputStreamReader(connection.inputStream)) + Log.d(TAG, "Submit Success: ${reader.readText()}") + reader.close() + true + } else { + Log.e(TAG, "Submit Error: HTTP $responseCode") + false + } + } catch (e: Exception) { + Log.e(TAG, "Exception during submitPrice: ${e.message}") + return false + } + } +} diff --git a/android_bot/app/src/main/java/com/siro/android_bot/service/AppLauncher.kt b/android_bot/app/src/main/java/com/siro/android_bot/service/AppLauncher.kt new file mode 100644 index 0000000..08c71f6 --- /dev/null +++ b/android_bot/app/src/main/java/com/siro/android_bot/service/AppLauncher.kt @@ -0,0 +1,39 @@ +package com.siro.android_bot.service + +import android.content.Context +import android.content.Intent +import android.util.Log + +object AppLauncher { + private const val TAG = "AppLauncher" + + // Maps the server app name to the actual Android package name + // Important: We will verify these exact package names tomorrow once you install them. + private val APP_PACKAGES = mapOf( + "yallago" to "ae.com.yalla.go.dubai.client", + "ae.com.yalla.go.dubai.client" to "ae.com.yalla.go.dubai.client", + "zaken" to "com.zakinn.app", + "com.zakinn.app" to "com.zakinn.app", + "tufaddal" to "com.bis.taxi", + "com.bis.taxi" to "com.bis.taxi" + ) + + fun launchApp(context: Context, appName: String): Boolean { + val packageName = APP_PACKAGES[appName.lowercase()] + if (packageName == null) { + Log.e(TAG, "Unknown app name from server: $appName") + return false + } + + val launchIntent = context.packageManager.getLaunchIntentForPackage(packageName) + if (launchIntent != null) { + launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + context.startActivity(launchIntent) + Log.i(TAG, "Successfully launched $appName ($packageName)") + return true + } else { + Log.e(TAG, "App $appName ($packageName) is not installed on this device!") + return false + } + } +} diff --git a/android_bot/app/src/main/java/com/siro/android_bot/service/ScraperAccessibilityService.kt b/android_bot/app/src/main/java/com/siro/android_bot/service/ScraperAccessibilityService.kt new file mode 100644 index 0000000..1d7ae8b --- /dev/null +++ b/android_bot/app/src/main/java/com/siro/android_bot/service/ScraperAccessibilityService.kt @@ -0,0 +1,397 @@ +package com.siro.android_bot.service + +import android.accessibilityservice.AccessibilityService +import android.util.Log +import android.view.accessibility.AccessibilityEvent +import com.siro.android_bot.network.WorkerClient +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch +import org.json.JSONObject + +enum class BotState { + IDLE, + LAUNCHING_APP, + SEARCHING_START, + SEARCHING_END, + READING_PRICE, + SUBMITTING +} + +class ScraperAccessibilityService : AccessibilityService() { + + private val TAG = "ScraperService" + private var pollingJob: Job? = null + private val serviceScope = CoroutineScope(Dispatchers.IO) + + private lateinit var workerClient: WorkerClient + + // State Machine Memory + private var currentState = BotState.IDLE + private var currentTask: JSONObject? = null + private var currentAppName: String = "" + + override fun onServiceConnected() { + super.onServiceConnected() + Log.i(TAG, "Accessibility Service Connected!") + + workerClient = WorkerClient(this) + Log.i(TAG, "Device Android ID: ${workerClient.deviceId}") + + startPolling() + } + + private fun startPolling() { + pollingJob = serviceScope.launch { + while (isActive) { + if (currentState == BotState.IDLE) { + Log.d(TAG, "Polling for tasks as ${workerClient.deviceId}...") + val result = workerClient.fetchTask() + + if (result != null && result.optBoolean("has_task", false)) { + val task = result.getJSONObject("task") + handleTask(task) + } else { + Log.d(TAG, "No tasks available.") + } + } + // Poll every 15 seconds + delay(15000) + } + } + } + + private fun handleTask(task: JSONObject) { + currentTask = task + currentAppName = task.optString("app") + val taskId = task.optString("task_id") + + Log.i(TAG, "Received Task: $taskId for App: $currentAppName") + + currentState = BotState.LAUNCHING_APP + + // Launch the App + val success = AppLauncher.launchApp(this, currentAppName) + if (success) { + // We wait for the AccessibilityEvent to tell us the app is opened, + // but we can preemptively change state to SEARCHING_START + currentState = BotState.SEARCHING_START + Log.i(TAG, "State -> SEARCHING_START") + } else { + // Failed to launch (app not installed) + Log.e(TAG, "Failed to launch app. Returning to IDLE.") + currentState = BotState.IDLE + currentTask = null + } + } + + override fun onAccessibilityEvent(event: AccessibilityEvent?) { + if (event == null) return + + val packageName = event.packageName?.toString() ?: return + val rootNode = rootInActiveWindow ?: return + + when (packageName) { + "ae.com.yalla.go.dubai.client" -> handleYallaGoAutomation(rootNode) + "com.zakinn.app" -> handleZakinnAutomation(rootNode) + "com.bis.taxi" -> handleTfadalAutomation(rootNode) + } + } + + private fun handleYallaGoAutomation(rootNode: android.view.accessibility.AccessibilityNodeInfo) { + val task = currentTask ?: return + + when (currentState) { + BotState.SEARCHING_START -> { + // If on main screen, find the "Where to" or dropoff TextView by text to tap + val dropoffNode = findNodeByText(rootNode, "Where to") ?: findNodeByText(rootNode, "أين تريد الذهاب") + if (dropoffNode != null) { + dropoffNode.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK) + Log.i(TAG, "YallaGo: Clicked dropoff entry node.") + currentState = BotState.SEARCHING_END + return + } + + // If already on the search screen, type pickup location + val startLoc = task.optString("start_location", "Main Square") + val pickupEdit = findEditableNode(rootNode) + if (pickupEdit != null) { + val arguments = android.os.Bundle().apply { + putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, startLoc) + } + pickupEdit.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments) + Log.i(TAG, "YallaGo: Set pickup to: $startLoc") + currentState = BotState.SEARCHING_END + } + } + BotState.SEARCHING_END -> { + // Find destination field on search screen or select-on-map screen + val endLoc = task.optString("end_location", "Airport") + val destEdit = findEditableNode(rootNode) + if (destEdit != null) { + val arguments = android.os.Bundle().apply { + putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, endLoc) + } + destEdit.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments) + Log.i(TAG, "YallaGo: Set destination to: $endLoc") + + // Look for the primary action button to confirm (e.g., "Confirm", "Book", "Done") + val confirmBtn = findNodeByText(rootNode, "Confirm") ?: findNodeByText(rootNode, "تأكيد") + if (confirmBtn != null) { + confirmBtn.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK) + Log.i(TAG, "YallaGo: Clicked confirm button.") + currentState = BotState.READING_PRICE + } + } + } + BotState.READING_PRICE -> { + // Search the screen for currency value + searchPriceByCurrency(rootNode) + } + else -> {} + } + } + + private fun handleZakinnAutomation(rootNode: android.view.accessibility.AccessibilityNodeInfo) { + val task = currentTask ?: return + + when (currentState) { + BotState.SEARCHING_START -> { + val inputNodes = rootNode.findAccessibilityNodeInfosByViewId("com.zakinn.app:id/ui-input-taxi-startText") + if (inputNodes.isNotEmpty()) { + val startLoc = task.optString("start_location", "Main Square") + val arguments = android.os.Bundle().apply { + putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, startLoc) + } + inputNodes[0].performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments) + Log.i(TAG, "Zakinn: Entered start location: $startLoc") + currentState = BotState.SEARCHING_END + } else { + traverseAndType(rootNode, "locTypeStart", task.optString("start_location")) + } + } + BotState.SEARCHING_END -> { + val confirmButton = rootNode.findAccessibilityNodeInfosByViewId("com.zakinn.app:id/ui-btn-checkout-order-confirm") + if (confirmButton.isNotEmpty()) { + confirmButton[0].performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK) + Log.i(TAG, "Zakinn: Confirmed checkout.") + currentState = BotState.READING_PRICE + } else { + val fallbackConfirm = findNodeByText(rootNode, "Confirm") ?: findNodeByText(rootNode, "تأكيد") + if (fallbackConfirm != null) { + fallbackConfirm.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK) + Log.i(TAG, "Zakinn: Confirmed checkout via fallback text.") + currentState = BotState.READING_PRICE + } + } + } + BotState.READING_PRICE -> { + val priceValueNodes = rootNode.findAccessibilityNodeInfosByViewId("com.zakinn.app:id/service-price-value") + if (priceValueNodes.isNotEmpty()) { + val price = priceValueNodes[0].text?.toString() ?: "" + Log.i(TAG, "Zakinn: Read price: $price") + submitPriceToServer(price) + } else { + searchPriceByCurrency(rootNode) + } + } + else -> {} + } + } + + private fun handleTfadalAutomation(rootNode: android.view.accessibility.AccessibilityNodeInfo) { + val task = currentTask ?: return + + when (currentState) { + BotState.SEARCHING_START -> { + // In Flutter, look for inputs matching localized source strings + val sourceNode = findNodeByText(rootNode, "Find Your Source") + ?: findNodeByText(rootNode, "Source") + ?: findNodeByText(rootNode, "نقطة الانطلاق") + ?: findNodeByText(rootNode, "الانطلاق") + ?: findNodeByText(rootNode, "ابحث عن مصدرك") + ?: findNodeByText(rootNode, "Kalkış") + ?: findNodeByText(rootNode, "Kaynağınızı bulun") + + if (sourceNode != null) { + val startLoc = task.optString("start_location", "Main Square") + val arguments = android.os.Bundle().apply { + putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, startLoc) + } + sourceNode.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments) + Log.i(TAG, "Tfadal: Set source location: $startLoc") + currentState = BotState.SEARCHING_END + } + } + BotState.SEARCHING_END -> { + val destNode = findNodeByText(rootNode, "Find Your Destination") + ?: findNodeByText(rootNode, "Destination") + ?: findNodeByText(rootNode, "الوجهة") + ?: findNodeByText(rootNode, "ابحث عن وجهتك") + ?: findNodeByText(rootNode, "Varış") + ?: findNodeByText(rootNode, "Varış noktanızı bulun") + + if (destNode != null) { + val endLoc = task.optString("end_location", "Airport") + val arguments = android.os.Bundle().apply { + putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, endLoc) + } + destNode.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments) + Log.i(TAG, "Tfadal: Set destination location: $endLoc") + + val requestButton = findNodeByText(rootNode, "Add a trip") + ?: findNodeByText(rootNode, "Normal Trip") + ?: findNodeByText(rootNode, "طلب الرحلة") + ?: findNodeByText(rootNode, "اطلب رحلة") + ?: findNodeByText(rootNode, "Normal Yolculuk") + ?: findNodeByText(rootNode, "Yolculuk ekle") + ?: findNodeByText(rootNode, "Continue") + ?: findNodeByText(rootNode, "متابعة") + ?: findNodeByText(rootNode, "Devam") + + if (requestButton != null) { + requestButton.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK) + Log.i(TAG, "Tfadal: Clicked request trip button.") + currentState = BotState.READING_PRICE + } + } + } + BotState.READING_PRICE -> { + // Read expected price using localized strings + val priceNode = findNodeByText(rootNode, "Expected Price") + ?: findNodeByText(rootNode, "Total Price") + ?: findNodeByText(rootNode, "السعر المتوقع") + ?: findNodeByText(rootNode, "السعر الإجمالي") + + if (priceNode != null) { + val priceText = priceNode.text?.toString() ?: "" + Log.i(TAG, "Tfadal: Found price header node: $priceText") + searchPriceByCurrency(rootNode) + } else { + searchPriceByCurrency(rootNode) + } + } + else -> {} + } + } + + private fun findNodeByText(node: android.view.accessibility.AccessibilityNodeInfo?, query: String): android.view.accessibility.AccessibilityNodeInfo? { + if (node == null) return null + val text = node.text?.toString() ?: "" + val desc = node.contentDescription?.toString() ?: "" + if (text.contains(query, ignoreCase = true) || desc.contains(query, ignoreCase = true)) { + return node + } + for (i in 0 until node.childCount) { + val res = findNodeByText(node.getChild(i), query) + if (res != null) return res + } + return null + } + + private fun findEditableNode(node: android.view.accessibility.AccessibilityNodeInfo?): android.view.accessibility.AccessibilityNodeInfo? { + if (node == null) return null + if (node.className == "android.widget.EditText" || node.isEditable) { + return node + } + for (i in 0 until node.childCount) { + val res = findEditableNode(node.getChild(i)) + if (res != null) return res + } + return null + } + + private fun traverseAndType(node: android.view.accessibility.AccessibilityNodeInfo?, hintText: String, value: String) { + if (node == null) return + if (node.className == "android.widget.EditText" || node.isEditable) { + val arguments = android.os.Bundle().apply { + putCharSequence(android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, value) + } + node.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_SET_TEXT, arguments) + Log.i(TAG, "Typed '$value' into editable node.") + return + } + for (i in 0 until node.childCount) { + traverseAndType(node.getChild(i), hintText, value) + } + } + + private fun searchPriceByCurrency(node: android.view.accessibility.AccessibilityNodeInfo?) { + if (node == null) return + val text = node.text?.toString() ?: "" + if (text.contains("ل.س") || text.contains("SYP") || text.contains("AED") || text.contains("SP") || text.contains("SP.")) { + Log.i(TAG, "Found price pattern dynamically: $text") + submitPriceToServer(text) + return + } + for (i in 0 until node.childCount) { + searchPriceByCurrency(node.getChild(i)) + } + } + + private fun submitPriceToServer(rawPrice: String) { + val task = currentTask ?: return + val taskId = task.optString("task_id") + + // Extract nested payload object where coordinates reside + val payload = task.optJSONObject("payload") + val startLat = payload?.optDouble("start_lat", 0.0) ?: 0.0 + val startLng = payload?.optDouble("start_lng", 0.0) ?: 0.0 + val endLat = payload?.optDouble("end_lat", 0.0) ?: 0.0 + val endLng = payload?.optDouble("end_lng", 0.0) ?: 0.0 + + // Calculate distance + val distanceKm = calculateDistanceInKm(startLat, startLng, endLat, endLng) + + // Extract numeric digits from price + val numericPrice = rawPrice.replace(Regex("[^0-9.]"), "").toDoubleOrNull() ?: 0.0 + + serviceScope.launch { + Log.i(TAG, "Submitting price $numericPrice for task $taskId...") + val success = workerClient.submitPrice( + taskId = taskId, + appName = currentAppName, + startLat = startLat, + startLng = startLng, + endLat = endLat, + endLng = endLng, + distanceKm = distanceKm, + price = numericPrice + ) + + if (success) { + Log.i(TAG, "Successfully submitted price to server.") + } else { + Log.e(TAG, "Failed to submit price.") + } + + // Go back to IDLE + currentState = BotState.IDLE + currentTask = null + } + } + + private fun calculateDistanceInKm(lat1: Double, lon1: Double, lat2: Double, lon2: Double): Double { + val r = 6371.0 // Earth radius in km + val dLat = Math.toRadians(lat2 - lat1) + val dLon = Math.toRadians(lon2 - lon1) + val a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * + Math.sin(dLon / 2) * Math.sin(dLon / 2) + val c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) + return r * c + } + + override fun onInterrupt() { + Log.w(TAG, "Accessibility Service Interrupted") + } + + override fun onDestroy() { + super.onDestroy() + pollingJob?.cancel() + Log.i(TAG, "Accessibility Service Destroyed") + } +} diff --git a/android_bot/app/src/main/res/values/strings.xml b/android_bot/app/src/main/res/values/strings.xml index 0b781ab..bc4152e 100644 --- a/android_bot/app/src/main/res/values/strings.xml +++ b/android_bot/app/src/main/res/values/strings.xml @@ -1,3 +1,4 @@ android_bot + Siro Scraper Accessibility Service helps automate competitor price checks. \ No newline at end of file diff --git a/android_bot/app/src/main/res/xml/accessibility_service_config.xml b/android_bot/app/src/main/res/xml/accessibility_service_config.xml new file mode 100644 index 0000000..cf6c11d --- /dev/null +++ b/android_bot/app/src/main/res/xml/accessibility_service_config.xml @@ -0,0 +1,9 @@ + + diff --git a/backend/bot/standalone_worker.php b/backend/bot/standalone_worker.php new file mode 100644 index 0000000..fd03db7 --- /dev/null +++ b/backend/bot/standalone_worker.php @@ -0,0 +1,753 @@ + 900) { + return false; + } + // Generate the expected signature + $expected_sig = hash_hmac('sha256', $device_id . $ts, $secret_key); + // Secure comparison + return hash_equals($expected_sig, $sig); +} + +function jsonError($message, $code = 400) { + http_response_code($code); + echo json_encode(['status' => 'failure', 'message' => $message]); + exit; +} + +// ---------------------------------------------------------------------------- +// API Request Routing +// ---------------------------------------------------------------------------- +$method = $_SERVER['REQUEST_METHOD']; +$contentType = $_SERVER['CONTENT_TYPE'] ?? ''; + +// Check if request is API call from the Bot +$isApiCall = false; +$device_id = null; +$ts = null; +$sig = null; + +if ($method === 'GET' && isset($_GET['device_id'], $_GET['ts'], $_GET['sig'])) { + $isApiCall = true; + $device_id = $_GET['device_id']; + $ts = intval($_GET['ts']); + $sig = $_GET['sig']; +} elseif ($method === 'POST') { + // Check if JSON body has device credentials + $rawInput = file_get_contents('php://input'); + $input = json_decode($rawInput, true); + if ($input && isset($input['device_id'], $input['ts'], $input['sig'])) { + $isApiCall = true; + $device_id = $input['device_id']; + $ts = intval($input['ts']); + $sig = $input['sig']; + } +} + +if ($isApiCall) { + header('Content-Type: application/json; charset=UTF-8'); + + // Validate signature + if (!validateSignature($device_id, $ts, $sig, SECRET_KEY)) { + jsonError("Unauthorized device signature or expired timestamp. Device ID: $device_id, ts: $ts", 401); + } + + if ($method === 'GET') { + // Dequeue one task for this bot (FIFO) + $tasks = json_decode(file_get_contents(TASKS_FILE), true); + + if (count($tasks) > 0) { + $task = array_shift($tasks); + file_put_contents(TASKS_FILE, json_encode($tasks, JSON_PRETTY_PRINT)); + + echo json_encode([ + "status" => "success", + "has_task" => true, + "task" => $task + ]); + } else { + echo json_encode([ + "status" => "success", + "has_task" => false + ]); + } + exit; + } elseif ($method === 'POST') { + // Record Scrape result + if (empty($input['task_id']) || empty($input['status'])) { + jsonError("Missing required parameters in payload"); + } + + $results = json_decode(file_get_contents(RESULTS_FILE), true); + + $newResult = [ + 'task_id' => $input['task_id'], + 'device_id' => $device_id, + 'status' => $input['status'], // 'success' or 'failed' + 'type' => $input['type'] ?? 'price_check', + 'recorded_at' => date('Y-m-d H:i:s'), + 'result_data' => $input['result_data'] ?? [] + ]; + + array_unshift($results, $newResult); + file_put_contents(RESULTS_FILE, json_encode($results, JSON_PRETTY_PRINT)); + + echo json_encode([ + "status" => "success", + "message" => "Result recorded successfully" + ]); + exit; + } +} + +// ---------------------------------------------------------------------------- +// Admin Dashboard UI (Rendered on normal GET browser requests) +// ---------------------------------------------------------------------------- + +// Handle Admin Actions +$message = ''; +$msgType = 'success'; + +if (isset($_POST['action'])) { + if ($_POST['action'] === 'add_task') { + $app = $_POST['app'] ?? ''; + $start_loc = $_POST['start_location'] ?? ''; + $end_loc = $_POST['end_location'] ?? ''; + $start_lat = floatval($_POST['start_lat'] ?? 0.0); + $start_lng = floatval($_POST['start_lng'] ?? 0.0); + $end_lat = floatval($_POST['end_lat'] ?? 0.0); + $end_lng = floatval($_POST['end_lng'] ?? 0.0); + + if ($app && $start_loc && $end_loc) { + $tasks = json_decode(file_get_contents(TASKS_FILE), true); + $taskId = "prc_" . uniqid(); + + $newTask = [ + "task_id" => $taskId, + "type" => "price_check", + "app" => $app, + "start_location" => $start_loc, + "end_location" => $end_loc, + "payload" => [ + "start_lat" => $start_lat, + "start_lng" => $start_lng, + "end_lat" => $end_lat, + "end_lng" => $end_lng + ] + ]; + + $tasks[] = $newTask; + file_put_contents(TASKS_FILE, json_encode($tasks, JSON_PRETTY_PRINT)); + $message = "Task successfully added and queued! Task ID: $taskId"; + } else { + $message = "Please fill in all required fields."; + $msgType = 'error'; + } + } elseif ($_POST['action'] === 'clear_tasks') { + file_put_contents(TASKS_FILE, json_encode([])); + $message = "Task queue cleared successfully."; + } elseif ($_POST['action'] === 'clear_results') { + file_put_contents(RESULTS_FILE, json_encode([])); + $message = "Scrape results history cleared successfully."; + } +} + +// Fetch stats and lists for display +$currentTasks = json_decode(file_get_contents(TASKS_FILE), true); +$scrapedResults = json_decode(file_get_contents(RESULTS_FILE), true); + +?> + + + + + + Siro Bot - Standalone Server Control Panel + + + + + + + + +

+ + + +