From 15883b47ae5bca4ebf09ca54536b480013d7a23e Mon Sep 17 00:00:00 2001 From: KOWX712 Date: Tue, 4 Mar 2025 00:16:16 +0800 Subject: [PATCH] webui: add preview fingerprint toggle --- module/webroot/index.html | 37 +++++++++++++++++------------ module/webroot/scripts.js | 50 ++++++++++++++++++++++++++++++++------- 2 files changed, 64 insertions(+), 23 deletions(-) diff --git a/module/webroot/index.html b/module/webroot/index.html index caee1be..d34f309 100644 --- a/module/webroot/index.html +++ b/module/webroot/index.html @@ -1,12 +1,12 @@ - - - Play Integrity Fix - - - + + + Play Integrity Fix + + +
@@ -18,15 +18,22 @@
- Fetch pif.json -
-
- Spoof sdk version to Play Store - -
+ Fetch pif.json +
+
+ Use preview fingerprint + +
+
+ Spoof sdk version to Play Store + +
diff --git a/module/webroot/scripts.js b/module/webroot/scripts.js index 23aa49b..f47c8df 100644 --- a/module/webroot/scripts.js +++ b/module/webroot/scripts.js @@ -20,6 +20,7 @@ async function execCommand(command) { function applyButtonEventListeners() { const fetchButton = document.getElementById('fetch'); const sdkVendingToggle = document.getElementById('sdk-vending-toggle-container'); + const previewFpToggle = document.getElementById('preview-fp-toggle-container'); const clearButton = document.querySelector('.clear-terminal'); fetchButton.addEventListener('click', runAction); @@ -43,10 +44,21 @@ function applyButtonEventListeners() { appendToOutput(`[+] Successfully changed spoofVendingSdk to ${isChecked ? 0 : 1}`); document.getElementById('toggle-sdk-vending').checked = !isChecked; } catch (error) { - appendToOutput("[-] Failed to change spoofVendingSdk"); + appendToOutput("[!] Failed to change spoofVendingSdk"); console.error('Failed to toggle sdk vending:', error); } }); + previewFpToggle.addEventListener('click', async () => { + try { + const isChecked = document.getElementById('toggle-preview-fp').checked; + await execCommand(`sed -i 's/^FORCE_PREVIEW=.*$/FORCE_PREVIEW=${isChecked ? 0 : 1}/' /data/adb/modules/playintegrityfix/action.sh`); + appendToOutput(`[+] Switched fingerprint to ${isChecked ? 'beta' : 'preview'}`); + loadPreviewFingerprintConfig(); + } catch (error) { + appendToOutput("[!] Failed to switch fingerprint type"); + console.error('Failed to switch fingerprint type:', error); + } + }); clearButton.addEventListener('click', () => { const output = document.querySelector('.output-terminal-content'); output.innerHTML = ''; @@ -92,19 +104,40 @@ async function loadVersionFromModuleProp() { const version = await execCommand("grep '^version=' /data/adb/modules/playintegrityfix/module.prop | cut -d'=' -f2"); versionElement.textContent = version.trim(); } catch (error) { - appendToOutput("[-] Failed to read version from module.prop"); + appendToOutput("[!] Failed to read version from module.prop"); console.error("Failed to read version from module.prop:", error); } } // Function to load spoofVendingSdk config async function loadSpoofVendingSdkConfig() { - const sdkVendingToggle = document.getElementById('toggle-sdk-vending'); - const isChecked = await execCommand(`grep -o '"spoofVendingSdk": [01]' /data/adb/modules/playintegrityfix/pif.json | cut -d' ' -f2`); - if (isChecked === '0') { - sdkVendingToggle.checked = false; - } else { - sdkVendingToggle.checked = true; + try { + const sdkVendingToggle = document.getElementById('toggle-sdk-vending'); + const isChecked = await execCommand(`grep -o '"spoofVendingSdk": [01]' /data/adb/modules/playintegrityfix/pif.json | cut -d' ' -f2`); + if (isChecked === '0') { + sdkVendingToggle.checked = false; + } else { + sdkVendingToggle.checked = true; + } + } catch (error) { + appendToOutput("[!] Failed to load spoofVendingSdk config"); + console.error("Failed to load spoofVendingSdk config:", error); + } +} + +// Function to load preview fingerprint config +async function loadPreviewFingerprintConfig() { + try { + const previewFpToggle = document.getElementById('toggle-preview-fp'); + const isChecked = await execCommand(`grep -o 'FORCE_PREVIEW=[01]' /data/adb/modules/playintegrityfix/action.sh | cut -d'=' -f2`); + if (isChecked === '0') { + previewFpToggle.checked = false; + } else { + previewFpToggle.checked = true; + } + } catch (error) { + appendToOutput("[!] Failed to load preview fingerprint config"); + console.error("Failed to load preview fingerprint config:", error); } } @@ -262,6 +295,7 @@ document.addEventListener('DOMContentLoaded', async () => { checkMMRL(); loadVersionFromModuleProp(); loadSpoofVendingSdkConfig(); + loadPreviewFingerprintConfig(); applyButtonEventListeners(); applyRippleEffect(); }); \ No newline at end of file