mirror of
https://github.com/PretendoNetwork/BOSS.git
synced 2026-03-21 17:34:19 -05:00
Pretendo BOSS server implementation
Use the JSON list of apps documented on the archival-tools repo as source for these apps. The title IDs were obtained by querying tasksheets of these apps, but not all of them were available so the title ID is set to 0 in those cases. The title name and region were populated though various public sources, but they aren't perfect so some names and/or regions are left unknown. |
||
|---|---|---|
| .github/workflows | ||
| scripts | ||
| seeding | ||
| src | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitignore | ||
| boss | ||
| Dockerfile | ||
| eslint.config.mjs | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| tsup.config.ts | ||
BOSS
Handles all BOSS (Background Online Storage Service) related tasks for the Pretendo network.
What does BOSS handle?
- SpotPass on 3DS
- Tasksheets and policy files for both WiiU and 3DS
- Streetpass relay
Configuration
Configurations are loaded through environment variables. .env files are supported.
| Environment variable | Description | Default |
|---|---|---|
PN_BOSS_CONFIG_HTTP_PORT |
The HTTP port the server listens on | None |
PN_BOSS_CONFIG_LOG_FORMAT |
What logging format to use, possible options: pretty or json |
pretty |
PN_BOSS_CONFIG_LOG_LEVEL |
What log level to use | info |
PN_BOSS_CONFIG_BOSS_WIIU_AES_KEY |
The BOSS WiiU AES key, needs to be dumped from a console | None |
PN_BOSS_CONFIG_BOSS_WIIU_HMAC_KEY |
The BOSS WiiU HMAC key, needs to be dumped from a console | None |
PN_BOSS_CONFIG_BOSS_3DS_AES_KEY |
The BOSS 3DS AES key, needs to be dumped from a console | None |
PN_BOSS_CONFIG_MONGO_CONNECTION_STRING |
MongoDB connection string | None |
PN_BOSS_CONFIG_GRPC_BOSS_SERVER_ADDRESS |
Address for the GRPC server to listen on | None |
PN_BOSS_CONFIG_GRPC_BOSS_SERVER_PORT |
Port for the GRPC server to listen on | None |
PN_BOSS_CONFIG_GRPC_BOSS_SERVER_API_KEY |
API key that services will use to connect to the BOSS GRPC server | None |
PN_BOSS_CONFIG_GRPC_ACCOUNT_SERVER_ADDRESS |
Address of the account GRPC server | None |
PN_BOSS_CONFIG_GRPC_ACCOUNT_SERVER_PORT |
Port of the account GRPC server | None |
PN_BOSS_CONFIG_GRPC_ACCOUNT_SERVER_API_KEY |
API key of the account GRPC server | None |
PN_BOSS_CONFIG_GRPC_FRIENDS_SERVER_ADDRESS |
Address of the friends GRPC server | None |
PN_BOSS_CONFIG_GRPC_FRIENDS_SERVER_PORT |
Port of the friends GRPC server | None |
PN_BOSS_CONFIG_GRPC_FRIENDS_SERVER_API_KEY |
API key of the friends GRPC server | None |
PN_BOSS_CONFIG_S3_ENDPOINT |
S3 server endpoint | None |
PN_BOSS_CONFIG_S3_REGION |
S3 server region | None |
PN_BOSS_CONFIG_S3_BUCKET |
S3 server bucket | None |
PN_BOSS_CONFIG_S3_ACCESS_KEY |
S3 access key | None |
PN_BOSS_CONFIG_S3_ACCESS_SECRET |
S3 access key secret | None |
PN_BOSS_CONFIG_CDN_DISK_PATH |
Storage path for the CDN, use as alternative for S3 | None |
PN_BOSS_CONFIG_STREETPASS_RELAY_ENABLED |
Should Streetpass Relay be enabled? | false |
PN_BOSS_CONFIG_STREETPASS_RELAY_CLEAN_OLD_DATA |
Should old Streetpass Relay data be automatically cleaned up? | false |
PN_BOSS_CONFIG_DOMAINS_NPDI |
What domain should the NPDI component use? | npdi.cdn.pretendo.cc |
PN_BOSS_CONFIG_DOMAINS_NPDL |
What domain should the NPDL component use? | npdl.cdn.pretendo.cc |
PN_BOSS_CONFIG_DOMAINS_NPFL |
What domain should the NPFL component use? | npfl.c.app.pretendo.cc |
PN_BOSS_CONFIG_DOMAINS_NPPL |
What domain should the NPPL component use? | nppl.app.pretendo.cc,nppl.c.app.pretendo.cc |
PN_BOSS_CONFIG_DOMAINS_NPTS |
What domain should the NPTS component use? | npts.app.pretendo.cc |
PN_BOSS_CONFIG_DOMAINS_SPR |
What domain should the SPR component use? | service.spr.app.pretendo.cc |
S3 server
The S3 server is optional, you can set PN_BOSS_CONFIG_CDN_DISK_PATH if you want to use a local folder as CDN source instead.
BOSS CLI
The CLI is a helper to interact with the content of the BOSS server.
npm run build
./boss --help
CLI configuration
Configurations are loaded through environment variables. .env files are supported.
| Environment variable | Description | |
|---|---|---|
PN_BOSS_CLI_GRPC_HOST |
The Host that the BOSS GRPC server is on. Example: localhost:5678 |
Required |
PN_BOSS_CLI_GRPC_APIKEY |
Master API key of the BOSS GRPC server. | Required |
PN_BOSS_CLI_WIIU_AES_KEY |
The BOSS WiiU AES key, needs to be dumped from a console | Optional |
PN_BOSS_CLI_WIIU_HMAC_KEY |
The BOSS WiiU HMAC key, needs to be dumped from a console | Optional |
PN_BOSS_CLI_NPDI_URL |
The URL of the NPDI part the BOSS HTTP server, only needed when downloading | Optional |
PN_BOSS_CLI_NPDI_HOST |
The Host header for the NPDI requests. Use when you don't have NPDI exposed to the internet | Optional |
Common CLI operations
# Download taskfile and decrypt
./boss file ls <BOSS_APP_ID> <TASK_ID> # View list of files and their IDs
./boss file view --decrypt <BOSS_APP_ID> <TASK_ID> <DATA_ID> > output.txt # Download file and decrypt
# Update splatoon rotations
# Run the following for all of these BOSS app ids:
# - bb6tOEckvgZ50ciH
# - rjVlM7hUXPxmYQJh
# - zvGSM4kOrXpkKnpT
./boss file create <BOSS_APP_ID> schdat2 --name VSSetting.byaml --type AppData --notify-new app --file <FILE_PATH_FOR_VSSETTING>