Includes:
- compositor.app, compositor.session, compositor.session.app, compositor.audit.log models
- /web/compositor/{token,apps,launch,audit} HTTP controllers with JWT (HS256)
- CompositorService OWL service (reusable via useService('compositor'))
- CompositorCanvas OWL component (reusable canvas wrapper)
- Security: compositor_group_user, compositor_group_manager groups + ir.access.csv rules
- 5 demo apps pre-loaded (gnome-calculator, xterm, gtk4-demo, glxgears, featherpad)
- Audit log capturing JWT issuance + app launch events
- Stub mode: launching apps returns a stub SurfaceHandle when proxy isn't connected
- Tested against Odoo 20 + PostgreSQL 17
Author: 1bspace.com
Parent company: 1B Global
License: Proprietary (1B Space internal use)
40 lines
1.7 KiB
XML
40 lines
1.7 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data noupdate="1">
|
|
<!-- Default compositor config parameters -->
|
|
<record id="config_param_proxy_url" model="ir.config_parameter">
|
|
<field name="key">compositor.proxy_url</field>
|
|
<field name="value">http://localhost:8081</field>
|
|
</record>
|
|
|
|
<record id="config_param_encoder" model="ir.config_parameter">
|
|
<field name="key">compositor.encoder</field>
|
|
<field name="value">vaapih264</field>
|
|
</record>
|
|
|
|
<record id="config_param_render_device" model="ir.config_parameter">
|
|
<field name="key">compositor.render_device</field>
|
|
<field name="value">/dev/dri/renderD128</field>
|
|
</record>
|
|
|
|
<!-- JWT secret is auto-generated in post_init_hook, but we set a
|
|
dev placeholder here so the addon works out of the box. -->
|
|
<record id="config_param_jwt_secret_dev" model="ir.config_parameter">
|
|
<field name="key">compositor.jwt_secret</field>
|
|
<field name="value">dev-secret-change-in-production-1bspace-compositor</field>
|
|
</record>
|
|
|
|
<!-- Session timeout (10 minutes, matches Greenfield's SIGHUP grace) -->
|
|
<record id="config_param_session_timeout_seconds" model="ir.config_parameter">
|
|
<field name="key">compositor.session_timeout_seconds</field>
|
|
<field name="value">600</field>
|
|
</record>
|
|
|
|
<!-- App kill timer escalation (10s SIGTERM → SIGKILL) -->
|
|
<record id="config_param_kill_escalation_seconds" model="ir.config_parameter">
|
|
<field name="key">compositor.kill_escalation_seconds</field>
|
|
<field name="value">10</field>
|
|
</record>
|
|
</data>
|
|
</odoo>
|