2.5 KiB
2.5 KiB
Architectural Request
Date: 2026-04-12 Topic: Deploy Phase 11D to Dev Panel — Blueprint license integration
1. Current State
Phase 11D code pushed (8872f67). Blueprint extension has license activation UI, phone-home cron, and tier gating. Ready for testing on Dev Panel.
2. Deploy Target
Dev Panel (64.50.188.128) — NOT live Panel VPS.
3. Files Changed
New files:
blueprint-extension/app/Services/LicenseService.phpblueprint-extension/app/Console/Commands/ValidateLicense.php
Modified files:
blueprint-extension/admin/controller.php— added LicenseService DI, license activation/deactivation handlingblueprint-extension/admin/view.blade.php— license UI, status banners, dynamic tier gating
4. Dependencies
- No new Composer packages — uses Laravel's built-in
Httpfacade (already available) - No database migrations needed (license state stored in Blueprint's dbGet/dbSet)
5. Deployment Steps
-
Rebuild the .blueprint package:
cd /opt/mod-builds/firefrost-services/services/modpack-version-checker/blueprint-extension bash build.sh -
Install on Dev Panel:
blueprint -install modpackchecker -
Register the daily cron (add to Panel's crontab):
0 4 * * * cd /var/www/pterodactyl && php artisan mvc:validate >> /dev/null 2>&1 -
For immediate testing, run manually:
cd /var/www/pterodactyl && php artisan mvc:validate
6. What "Working" Looks Like
- Admin page loads — visit
/admin/extensions/modpackchecker, no errors - License section visible — "BuiltByBit Order ID" text input + gray "Not Activated" badge
- Activate test — enter a test order ID, click Save. Should show error "License not found" (expected — no real license exists yet). Confirms Arbiter connectivity.
- Pro fields locked — Check Interval dropdown and Discord Webhook URL should be disabled (grayed out)
- Artisan command runs —
php artisan mvc:validateoutputs "No license configured" (expected for fresh install) - No PHP errors in logs —
tail -f /var/www/pterodactyl/storage/logs/laravel.log
7. Smoke Test with Real License
To fully test the flow, Chronicler can provision a test license directly in the DB:
INSERT INTO mvc_licenses (order_id, buyer_id, tier, max_activations)
VALUES ('TEST-001', 'chronicler', 'professional', 5);
Then enter TEST-001 in the admin UI — should activate, show green badge, unlock pro fields.