[MIGRATE] Migrazione a nis2.agile.software

- Tutti i riferimenti nis2.certisource.it → nis2.agile.software
- Apache vhost HTTP nis2.agile.software attivo su Hetzner
- Script setup-nis2-agile-software.sh: certbot SSL + redirect da vecchio dominio
- .env server: APP_URL aggiornato a https://nis2.agile.software
- CLAUDE.md, docs commerciali, integrazioni, API docs aggiornati

DNS da aggiungere in Cloudflare: nis2.agile.software A 135.181.149.254 (proxy OFF)
Poi eseguire: bash /opt/devenv/scripts/setup-nis2-agile-software.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-03-07 14:07:10 +01:00
co-authored by Claude Sonnet 4.6
parent 0fcc69ee85
commit 07c1a71685
11 changed files with 38 additions and 38 deletions
+3 -3
View File
@@ -161,14 +161,14 @@
<p>API REST per integrare NIS2 Agile con SIEM, GRC, piattaforme ESG e strumenti di compliance.</p>
<div class="version-badge">
<svg viewBox="0 0 20 20" fill="currentColor" width="12" height="12"><path fill-rule="evenodd" d="M10 2a8 8 0 100 16A8 8 0 0010 2zm0 14a6 6 0 110-12 6 6 0 010 12zm-1-5a1 1 0 012 0v2a1 1 0 11-2 0v-2zm0-4a1 1 0 112 0 1 1 0 01-2 0z" clip-rule="evenodd"/></svg>
v1.0.0 — Produzione: https://nis2.certisource.it/
v1.0.0 — Produzione: https://nis2.agile.software/
</div>
</div>
<div class="section">
<h2 class="section-title">Panoramica</h2>
<p class="section-desc">NIS2 Agile espone due famiglie di API: <strong>Services API</strong> per lettura dati di compliance in tempo reale, e <strong>Webhook API</strong> per notifiche push su eventi NIS2.</p>
<div class="base-url">Base URL: https://nis2.certisource.it/api</div>
<div class="base-url">Base URL: https://nis2.agile.software/api</div>
<div class="info-box info">
<strong>Rate Limiting:</strong> Services API: 100 richieste/ora per API Key. Webhook delivery: max 1000/ora per subscription.
</div>
@@ -682,7 +682,7 @@ if not hmac.compare_digest(expected, received):
<div style="padding-top:40px; border-top:1px solid var(--border); color:var(--text-muted); font-size:0.8rem;">
NIS2 Agile API Reference v1.0.0 — &copy; 2026 CertiSource Srl —
<a href="https://nis2.certisource.it" style="color:var(--primary);">nis2.certisource.it</a>
<a href="https://nis2.agile.software" style="color:var(--primary);">nis2.agile.software</a>
</div>
</main>
+1 -1
View File
@@ -80,7 +80,7 @@
<span style="color:#f1fa8c;">$apiKey</span> = getenv(<span style="color:#86efac;">'NIS2_API_KEY'</span>);
<span style="color:#f1fa8c;">$orgId</span> = getenv(<span style="color:#86efac;">'NIS2_ORG_ID'</span>);
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.certisource.it/api'</span>;
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.agile.software/api'</span>;
<span style="color:#f1fa8c;">$allriskOrgId</span> = getenv(<span style="color:#86efac;">'ALLRISK_ORG_ID'</span>);
<span style="color:#7dd3fc;">// Fetch rischi HIGH/CRITICAL aperti da NIS2</span>
+3 -3
View File
@@ -92,7 +92,7 @@
<span style="color:#f1fa8c;">$apiKey</span> = getenv(<span style="color:#86efac;">'NIS2_API_KEY'</span>); <span style="color:#7dd3fc;">// nis2_abc123...</span>
<span style="color:#f1fa8c;">$orgId</span> = getenv(<span style="color:#86efac;">'NIS2_ORG_ID'</span>);
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.certisource.it/api'</span>;
<span style="color:#f1fa8c;">$baseUrl</span> = <span style="color:#86efac;">'https://nis2.agile.software/api'</span>;
<span style="color:#f1fa8c;">function</span> nis2Get(<span style="color:#f1fa8c;">string $endpoint</span>, array <span style="color:#f1fa8c;">$query</span> = []): array {
global <span style="color:#f1fa8c;">$apiKey</span>, <span style="color:#f1fa8c;">$orgId</span>, <span style="color:#f1fa8c;">$baseUrl</span>;
@@ -172,7 +172,7 @@ http_response_code(200);</pre>
<svg viewBox="0 0 24 24" fill="#06b6d4" width="18" height="18"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4z"/></svg>
NIS2 Compliance (Preview widget)
</div>
<span style="font-size:0.7rem; color:#64748b;">nis2.certisource.it</span>
<span style="font-size:0.7rem; color:#64748b;">nis2.agile.software</span>
</div>
<div style="display:flex; align-items:center; gap:24px;">
<div class="score-ring">73%</div>
@@ -191,7 +191,7 @@ http_response_code(200);</pre>
&lt;div id="nis2-widget"&gt;&lt;/div&gt;
&lt;script&gt;
(async () => {
const r = await fetch('https://nis2.certisource.it/api/services/compliance-summary', {
const r = await fetch('https://nis2.agile.software/api/services/compliance-summary', {
headers: {
'X-API-Key': '<span style="color:#86efac;">nis2_YOUR_KEY</span>',
'X-Organization-Id': '<span style="color:#86efac;">YOUR_ORG_ID</span>'
+3 -3
View File
@@ -84,7 +84,7 @@
<span style="color:#f1fa8c;">$apiKey</span> = getenv(<span style="color:#86efac;">'NIS2_API_KEY'</span>);
<span style="color:#f1fa8c;">$orgId</span> = getenv(<span style="color:#86efac;">'NIS2_ORG_ID'</span>);
<span style="color:#f1fa8c;">$base</span> = <span style="color:#86efac;">'https://nis2.certisource.it/api'</span>;
<span style="color:#f1fa8c;">$base</span> = <span style="color:#86efac;">'https://nis2.agile.software/api'</span>;
<span style="color:#f1fa8c;">$headers</span> = [
<span style="color:#86efac;">'X-API-Key: '</span> . <span style="color:#f1fa8c;">$apiKey</span>,
@@ -123,7 +123,7 @@ EsgKpiService::updateCyberGovernance([
<pre>&lt;!-- SustainAI: sezione Governance → Cybersecurity KPIs --&gt;
&lt;div id="nis2-esg-widget" style="padding:20px; border:1px solid #e2e8f0; border-radius:8px; background:#f0fdf4;"&gt;&lt;/div&gt;
&lt;script&gt;
fetch('https://nis2.certisource.it/api/services/compliance-summary', {
fetch('https://nis2.agile.software/api/services/compliance-summary', {
headers: { 'X-API-Key': '<span style="color:#86efac;">nis2_YOUR_KEY</span>', 'X-Organization-Id': '<span style="color:#86efac;">ORG_ID</span>' }
}).then(r => r.json()).then(({ data }) => {
document.getElementById('nis2-esg-widget').innerHTML = `
@@ -141,7 +141,7 @@ fetch('https://nis2.certisource.it/api/services/compliance-summary', {
&lt;div style="font-size:.7rem; color:#64748b;"&gt;Incidenti Art.23&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style="font-size:.7rem; color:#94a3b8; margin-top:12px; text-align:right;"&gt;
Fonte: NIS2 Agile — nis2.certisource.it — Aggiornato: ${new Date().toLocaleDateString('it')}
Fonte: NIS2 Agile — nis2.agile.software — Aggiornato: ${new Date().toLocaleDateString('it')}
&lt;/p&gt;`;
});
&lt;/script&gt;</pre>