Update PoliticTalk Jitsi room policy

This commit is contained in:
2026-05-16 21:51:14 +05:30
parent 8997f4804f
commit def2d46096
20 changed files with 748 additions and 26 deletions

View File

@@ -31,7 +31,7 @@ The browser may warn about a self-signed certificate. That is expected for local
## After Editing Overrides
When you edit `local/custom-config.js`, `local/custom-interface_config.js`, or local assets, run:
When you edit `local/custom-config.js`, `local/custom-interface_config.js`, `web/title.html`, `web/plugin.head.html`, or local assets, run:
```bash
./scripts/local-jitsi-sync.sh
@@ -47,11 +47,30 @@ When you edit `local/custom-config.js`, `local/custom-interface_config.js`, or l
## What This Tests
- PoliticTalk branding assets
- prejoin behavior
- PoliticTalk browser title, favicon, and in-meeting logo
- direct room entry after the PgPlatform prejoin/auth step
- host-only room creation and participant-only Jitsi roles when JWT auth is enabled
- audio-only policy
- muted microphone/camera startup
- host-controlled participant unmute through Jitsi AV moderation
- toolbar restrictions
- chat, polls, raise hand, fullscreen, noise suppression
- E2EE UI availability
Final production verification still happens on the VPS because real WebRTC networking, domain, HTTPS, and future JWT auth depend on the server environment.
## Optional JWT Auth Check
Local Docker Jitsi can be switched into JWT mode when you want to test token-only joins:
```bash
ENABLE_POLITICTALK_JWT_AUTH=1 \
POLITICTALK_JITSI_JWT_APP_ID=politictalk-local \
POLITICTALK_JITSI_JWT_APP_SECRET=replace-with-local-secret \
POLITICTALK_ROOM_INACTIVE_CALLBACK_SECRET=politictalk-local-lifecycle-secret \
./scripts/local-jitsi-setup.sh
./scripts/local-jitsi-start.sh
```
Use the same app id and secret in `pgapi/.env` so `/events/:id/join-link` returns a URL with `?jwt=...`.
Use the same callback secret in `pgapi/.env` as `POLITICTALK_JITSI_LIFECYCLE_SECRET`.

View File

@@ -4,6 +4,9 @@
config.defaultLogoUrl = '/images/politictalk/pgLogo.svg';
config.dynamicBrandingUrl = '/images/politictalk/branding.json';
config.welcomePage = config.welcomePage || {};
config.welcomePage.disabled = false;
config.welcomePage.customUrl = 'http://localhost:3000/politictalk';
config.startAudioOnly = true;
config.startAudioMuted = 0;
@@ -25,8 +28,8 @@ config.enableNoisyMicDetection = true;
config.disableRemoteMute = false;
config.prejoinConfig = {
enabled: true,
hideDisplayName: false,
enabled: false,
hideDisplayName: true,
hideExtraJoinButtons: ['no-audio', 'by-phone'],
preCallTestEnabled: false,
preCallTestICEUrl: '',

View File

@@ -6,10 +6,11 @@ interfaceConfig.APP_NAME = 'PoliticTalk';
interfaceConfig.NATIVE_APP_NAME = 'PoliticTalk';
interfaceConfig.PROVIDER_NAME = 'ParallelGlobe';
interfaceConfig.DEFAULT_LOGO_URL = '/images/politictalk/pgLogo.svg';
interfaceConfig.DEFAULT_WELCOME_PAGE_LOGO_URL = '/images/politictalk/pgLogo.svg';
interfaceConfig.SHOW_JITSI_WATERMARK = false;
interfaceConfig.SHOW_BRAND_WATERMARK = true;
interfaceConfig.BRAND_WATERMARK_LINK = 'https://parallelglobe.io/';
interfaceConfig.BRAND_WATERMARK_LINK = 'https://parallelglobe.io/politictalk';
interfaceConfig.SHOW_POWERED_BY = false;
interfaceConfig.MOBILE_APP_PROMO = false;

View File

@@ -2,3 +2,9 @@ services:
web:
volumes:
- ../../assets/public/politictalk:/usr/share/jitsi-meet/images/politictalk:ro
- ../../web/title.html:/usr/share/jitsi-meet/title.html:ro
- ../../web/plugin.head.html:/usr/share/jitsi-meet/plugin.head.html:ro
prosody:
environment:
- POLITICTALK_ROOM_INACTIVE_CALLBACK_URL=${POLITICTALK_ROOM_INACTIVE_CALLBACK_URL:-http://host.docker.internal:9000/events/politictalk/jitsi/room-inactive}
- POLITICTALK_ROOM_INACTIVE_CALLBACK_SECRET=${POLITICTALK_ROOM_INACTIVE_CALLBACK_SECRET:-politictalk-local-lifecycle-secret}