mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-08 19:27:18 +02:00
Refactor srv-web-7-7-inj-port-ui-desktop to use CDN-served JS file with inline initializer
- Added vars/main.yml to define iframe-handler.js file name and destination - Implemented 01_deploy.yml to deploy iframe-handler.js to CDN and set mtime-based version fact - Split original iframe logic into: • iframe-handler.js (full logic, served from CDN) • iframe-init_one_liner.js.j2 (small inline bootstrap, CSP-hashed) - Updated head_sub.j2 to load script from CDN instead of embedding full code - Added body_sub.j2 for inline init code - Updated iframe-handler.js.j2 with initIframeHandler() function and global exposure - Activated role earlier in inj-compose with public: true so vars are available for templates - Included 'port-ui-desktop' in body_snippets loop in location.lua.j2 - Disabled 'port-ui-desktop' feature in web-svc-cdn config by default https://chatgpt.com/share/689d03a8-4c28-800f-8b06-58ce2807b075
This commit is contained in:
16
roles/srv-web-7-7-inj-port-ui-desktop/tasks/01_deploy.yml
Normal file
16
roles/srv-web-7-7-inj-port-ui-desktop/tasks/01_deploy.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
- name: Deploy iframe-handler.js
|
||||
template:
|
||||
src: iframe-handler.js.j2
|
||||
dest: "{{ inj_port_ui_js_destination }}"
|
||||
owner: "{{ nginx.user }}"
|
||||
group: "{{ nginx.user }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Get stat for iframe-handler.js
|
||||
stat:
|
||||
path: "{{ inj_port_ui_js_destination }}"
|
||||
register: inj_port_ui_js_stat
|
||||
|
||||
- name: Set inj_port_ui_js_version
|
||||
set_fact:
|
||||
inj_port_ui_js_version: "{{ inj_port_ui_js_stat.stat.mtime }}"
|
@@ -3,18 +3,20 @@
|
||||
include_role:
|
||||
name: srv-web-7-4-core
|
||||
when: run_once_srv_web_7_4_core is not defined
|
||||
- include_tasks: 01_deploy.yml
|
||||
- include_tasks: utils/run_once.yml
|
||||
when: run_once_srv_web_7_7_inj_port_ui_desktop is not defined
|
||||
|
||||
- name: "Load iFrame handler JS template for '{{ application_id }}'"
|
||||
# --- Build tiny inline initializer (CSP-hashed) ---
|
||||
- name: "Load iFrame init code for '{{ application_id }}'"
|
||||
set_fact:
|
||||
iframe_code: "{{ lookup('template','iframe-handler.js.j2') }}"
|
||||
iframe_init_code: "{{ lookup('template','iframe-init_one_liner.js.j2') }}"
|
||||
|
||||
- name: "Collapse iFrame code into one-liner for '{{ application_id }}'"
|
||||
- name: "Collapse iFrame init code into one-liner for '{{ application_id }}'"
|
||||
set_fact:
|
||||
iframe_code_one_liner: "{{ iframe_code | to_one_liner }}"
|
||||
iframe_init_code_one_liner: "{{ iframe_init_code | to_one_liner }}"
|
||||
|
||||
- name: "Append iFrame CSP hash for '{{ application_id }}'"
|
||||
- name: "Append iFrame init CSP hash for '{{ application_id }}'"
|
||||
set_fact:
|
||||
applications: "{{ applications | append_csp_hash(application_id, iframe_code_one_liner) }}"
|
||||
applications: "{{ applications | append_csp_hash(application_id, iframe_init_code_one_liner) }}"
|
||||
changed_when: false
|
||||
|
Reference in New Issue
Block a user