mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-29 15:06:26 +02:00
Renamed server roles by osi they work on
This commit is contained in:
28
roles/srv-web-7-7-inj-javascript/README.md
Normal file
28
roles/srv-web-7-7-inj-javascript/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 🌐 Global JavaScript Injector for Nginx
|
||||
|
||||
## Description
|
||||
|
||||
This Ansible role injects a custom JavaScript snippet into all HTML responses served by Nginx. It leverages Nginx’s `sub_filter` to seamlessly insert your application-specific script just before the closing `</head>` tag, ensuring that your code runs on every page load—perfect for global feature flags, analytics, or UI enhancements.
|
||||
|
||||
## Features
|
||||
|
||||
- **One-line Script Injection**
|
||||
Collapses your JavaScript into a single line and injects it via `sub_filter` for minimal footprint and maximal compatibility.
|
||||
|
||||
- **Easy CSP Integration**
|
||||
Automatically computes and appends a CSP hash entry for your script, so you can lock down Content Security Policy without lifting a finger.
|
||||
|
||||
- **Conditional Activation**
|
||||
Activates only when you enable the `javascript` feature for a given application, keeping your server blocks clean and performant.
|
||||
|
||||
- **Debug Mode**
|
||||
Supports an `enable_debug` flag that appends optional `console.log` statements for easier troubleshooting in staging or development.
|
||||
|
||||
## Author
|
||||
|
||||
Developed by **Kevin Veen-Birkenbach**
|
||||
Consulting & Coaching Solutions — [veen.world](https://www.veen.world)
|
||||
|
||||
---
|
||||
|
||||
Happy automating! 🎉
|
28
roles/srv-web-7-7-inj-javascript/meta/main.yml
Normal file
28
roles/srv-web-7-7-inj-javascript/meta/main.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
galaxy_info:
|
||||
author: "Kevin Veen-Birkenbach"
|
||||
description: "Injects a custom JavaScript snippet into Nginx-served HTML responses via sub_filter."
|
||||
company: |
|
||||
Kevin Veen-Birkenbach
|
||||
Consulting & Coaching Solutions
|
||||
https://www.veen.world
|
||||
license: "CyMaIS NonCommercial License (CNCL)"
|
||||
license_url: "https://s.veen.world/cncl"
|
||||
min_ansible_version: "2.9"
|
||||
platforms:
|
||||
- name: Archlinux
|
||||
versions:
|
||||
- rolling
|
||||
galaxy_tags:
|
||||
- nginx
|
||||
- javascript
|
||||
- csp
|
||||
- sub_filter
|
||||
- injection
|
||||
- global
|
||||
repository: "https://s.veen.world/cymais"
|
||||
documentation: "https://s.veen.world/cymais"
|
||||
issue_tracker_url: "https://s.veen.world/cymaisissues"
|
||||
|
||||
dependencies:
|
||||
- srv-web-7-4-core
|
12
roles/srv-web-7-7-inj-javascript/tasks/main.yml
Normal file
12
roles/srv-web-7-7-inj-javascript/tasks/main.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
- name: "Load JavaScript code for '{{ application_id }}'"
|
||||
set_fact:
|
||||
javascript_code: "{{ lookup('template', modifier_javascript_template_file) }}"
|
||||
|
||||
- name: "Collapse Javascript code into one-liner for '{{application_id}}'"
|
||||
set_fact:
|
||||
javascript_code_one_liner: "{{ javascript_code | to_one_liner }}"
|
||||
|
||||
- name: "Append Javascript CSP hash for '{{application_id}}'"
|
||||
set_fact:
|
||||
applications: "{{ applications | append_csp_hash(application_id, javascript_code_one_liner) }}"
|
||||
changed_when: false
|
1
roles/srv-web-7-7-inj-javascript/templates/head_sub.j2
Normal file
1
roles/srv-web-7-7-inj-javascript/templates/head_sub.j2
Normal file
@@ -0,0 +1 @@
|
||||
<script>{{ javascript_code_one_liner | replace("'", "\\'") }}</script>
|
1
roles/srv-web-7-7-inj-javascript/vars/main.yml
Normal file
1
roles/srv-web-7-7-inj-javascript/vars/main.yml
Normal file
@@ -0,0 +1 @@
|
||||
modifier_javascript_template_file: "{{ application_id | abs_role_path_by_application_id }}/templates/javascript.js.j2"
|
Reference in New Issue
Block a user