This commit is contained in:
jokob-sk
2026-01-28 21:56:24 +11:00
4 changed files with 39 additions and 41 deletions

View File

@@ -1,8 +1,7 @@
name: Enforce Issue Templates
on:
issues:
types: [opened]
workflow_dispatch:
permissions:
issues: write
@@ -15,19 +14,26 @@ jobs:
uses: actions/github-script@v7
with:
script: |
const body = (context.payload.issue.body || "").toLowerCase();
const title = (context.payload.issue.title || "").toLowerCase();
const body = (context.payload.issue?.body || "").toLowerCase();
const title = (context.payload.issue?.title || "").toLowerCase();
// Manual runs don't have an issue context
if (!context.payload.issue) {
console.log("No issue context (manual run) nothing to enforce.");
return;
}
// 1. Check for template marker
const usedTemplate = body.includes('netalertx_template');
// 2. Security Bypass: Don't close if it looks like a security report
const isSecurity = title.includes('security') || title.includes('vulnerability');
// 2. Security bypass
const isSecurity =
title.includes('security') ||
title.includes('vulnerability');
if (!usedTemplate && !isSecurity) {
const warningLabel = 'missing-template 📋';
// Add descriptive label
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
@@ -35,17 +41,15 @@ jobs:
labels: [warningLabel]
});
// Post polite comment with direct link to new issue
const commentMessage = `
Hi there! 👋 Thanks for reaching out.
Hi there! 👋 Thanks for reaching out.
To help the maintainers triage issues effectively, we **enforce the use of issue templates**. This helps us resolve problems much faster!
To help the maintainers triage issues effectively, we **enforce the use of issue templates**.
**This issue has been closed** because it is missing the required template.
Please [open a new issue here](https://github.com/${context.repo.owner}/${context.repo.repo}/issues/new/choose)
and select the appropriate template.
Please [open a new issue here](https://github.com/${context.repo.owner}/${context.repo.repo}/issues/new/choose) and select the appropriate template.
Thank you for your understanding! 🙏
Thank you! 🙏
`;
await github.rest.issues.createComment({
@@ -55,15 +59,9 @@ jobs:
body: commentMessage
});
// Close the issue (but do NOT lock it)
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
state: 'closed'
});
// Intentionally NOT closing issues in manual mode
console.log("Issue missing template labeled and commented.");
return;
}
console.log("Template detected or security keyword found ✅. Proceeding.");
console.log("Template detected or security issue no action taken.");

View File

@@ -206,7 +206,7 @@
"Device_Save_Failed": "Erreur à l'enregistrement de l'appareil",
"Device_Save_Unauthorized": "Non autorisé - Jeton d'API invalide",
"Device_Saved_Success": "Appareil enregistré avec succès",
"Device_Saved_Unexpected": "",
"Device_Saved_Unexpected": "La mise à jour de l'appareil a renvoyé une réponse inattendue",
"Device_Searchbox": "Rechercher",
"Device_Shortcut_AllDevices": "Mes appareils",
"Device_Shortcut_AllNodes": "Tous les nœuds",
@@ -296,14 +296,14 @@
"Events_Tablelenght": "Afficher _MENU_ entrées",
"Events_Tablelenght_all": "Tous",
"Events_Title": "Évènements",
"FakeMAC_hover": "Autodétecté - indique si l'appareil utilise une fausse adresse MAC (qui commence par FA:CE ou 00:1A), typiquement générée par un plugin qui ne peut pas détecter la vraie adresse MAC, ou en créant un appareil factice.",
"FieldLock_Error": "",
"FieldLock_Lock_Tooltip": "",
"FieldLock_Locked": "",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_Source_Label": "",
"FieldLock_Unlock_Tooltip": "",
"FieldLock_Unlocked": "",
"FakeMAC_hover": "Cet appareil a une adresse MAC fausse ou falsifiée",
"FieldLock_Error": "Erreur de mise à jour du statut de verrouillage du champ",
"FieldLock_Lock_Tooltip": "Verrouiller le champ (empêche les surcharges de plugin)",
"FieldLock_Locked": "Champ verrouillé",
"FieldLock_SaveBeforeLocking": "Enregistrez vos changements avant de verrouiller",
"FieldLock_Source_Label": "Source : ",
"FieldLock_Unlock_Tooltip": "Déverrouiller le champ (autorise les surcharges de plugin)",
"FieldLock_Unlocked": "Champ déverrouillé",
"GRAPHQL_PORT_description": "Le numéro de port du serveur GraphQL. Assurez vous sue le port est unique a l'échelle de toutes les applications sur cet hôte et vos instances NetAlertX.",
"GRAPHQL_PORT_name": "Port GraphQL",
"Gen_Action": "Action",
@@ -466,8 +466,8 @@
"Maintenance_Tool_restore_noti": "Restauration de la base de données",
"Maintenance_Tool_restore_noti_text": "Êtes-vous sûr de vouloir lancer la restauration de la base données? Assurez-vous qu'aucun scan ne soit en cours.",
"Maintenance_Tool_restore_text": "La dernière sauvegarde peut être restaurée à l'aide du bouton, mais les sauvegardes plus anciennes ne peuvent être restaurées que manuellement. Après la restauration, faites un contrôle d'intégrité de la base de donnes par sécurité, au cas où elle était en cours d'ecriture lorsque la sauvegarde a été réalisée.",
"Maintenance_Tool_unlockFields_selecteddev": "",
"Maintenance_Tool_unlockFields_selecteddev_noti": "",
"Maintenance_Tool_unlockFields_selecteddev": "Déverrouiller les champs de l'appareil",
"Maintenance_Tool_unlockFields_selecteddev_noti": "Déverrouiller les champs",
"Maintenance_Tool_upgrade_database_noti": "Mise à jour de la base de données",
"Maintenance_Tool_upgrade_database_noti_text": "Êtes-vous sûr de vouloir mettre à jour la base de données?<br>(il peut être préférable de l'archiver)",
"Maintenance_Tool_upgrade_database_text": "Ce bouton va mettre à jour la base de données pour activer le graphique de l'activité réseau sur les 12 dernières heures. Veillez à faire une sauvegarde de la base de données en cas de problème.",
@@ -609,7 +609,7 @@
"REPORT_MAIL_description": "Si activé, un courriel est envoyé, avec la liste des changements pour lesquels on a souscrit. Cela nécessite de renseigner les paramètres associés au paramétrage SMTP plus bas. Si vous rencontrez des problèmes, positionnez le <code>LOG_LEVEL</code> au niveau <code>debug</code> et vérifiez les <a href=\"/maintenance.php#tab_Logging\">journaux d'erreurs</a>.",
"REPORT_MAIL_name": "Activer les courriels",
"REPORT_TITLE": "Rapport",
"RandomMAC_hover": "Détecté automatiquement - indique si l'appareil dispose d'une adresse MAC générée aléatoirement. Vous pouvez exclure des adresses MAC spécifiques via le paramètre UI_NOT_RANDOM_MAC. Cliquez pour plus d'informations.",
"RandomMAC_hover": "Cet appareil a une adresse MAC aléatoire",
"Reports_Sent_Log": "Rapports de log transmis",
"SCAN_SUBNETS_description": "La plupart des scanners sur le réseau (scan ARP, NMAP, Nslookup, DIG) se base sur le scan d'une partie spécifique des interfaces réseau ou de sous-réseau. Consulter la <a href=\"https://docs.netalertx.com/SUBNETS\" target=\"_blank\">documentation des sous-réseaux</a> pour plus d'aide sur ce paramètre, notamment pour des VLAN, lesquels sont supportés ou sur comment identifier le masque réseau et votre interface réseau. <br/> <br/> Une alternative à ces scanner sur le réseau et d'activer d'autres scanners d'appareils ou des importe, qui ne dépendent pas du fait de laisser NetAlert<sup>X</sup> accéder au réseau (Unifié, baux DHCP, Pi-hole, etc.).<br/><br/> Remarque : la durée du scan en lui-même dépend du nombre d'adresses IP à scanner, renseignez donc soigneusement avec le bon masque réseau et la bonne interface réseau.",
"SCAN_SUBNETS_name": "Réseaux à scanner",
@@ -617,7 +617,7 @@
"Setting_Override": "Remplacer la valeur",
"Setting_Override_Description": "Activer cette option va remplacer la valeur fournie par défaut par une application par la valeur renseignée au-dessus.",
"Settings_Metadata_Toggle": "Afficher/masquer les méta données pour le paramètre sélectionné.",
"Settings_Show_Description": "Montrer la description de la configuration.",
"Settings_Show_Description": "Afficher la description",
"Settings_device_Scanners_desync": "⚠ La planification des différents scanners d'appareils est désynchronisée.",
"Settings_device_Scanners_desync_popup": "La planification des scanners (<code>*_RUN_SCHD</code>) n'est pas identique entre scanners. Cela va entraîner des notifications en ligne/hors-ligne non cohérentes. À moins que cela soit attendu, utilisez la même planification pour tous les <b>🔍scanners d'appareils</b> activés.",
"Speedtest_Results": "Résultats du test de débit",
@@ -783,4 +783,4 @@
"settings_system_label": "Système",
"settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. <b>Il n'y a pas de pas de contrôle.</b>",
"test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage."
}
}

View File

@@ -300,7 +300,7 @@
"FieldLock_Error": "Errore durante l'aggiornamento dello stato di blocco del campo",
"FieldLock_Lock_Tooltip": "Blocca campo (impedisci sovrascrittura plugin)",
"FieldLock_Locked": "Campo bloccato",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_SaveBeforeLocking": "Salva modifiche prima di bloccare",
"FieldLock_Source_Label": "Sorgente: ",
"FieldLock_Unlock_Tooltip": "Sblocca campo (consenti sovrascritture plugin)",
"FieldLock_Unlocked": "Campo sbloccato",
@@ -783,4 +783,4 @@
"settings_system_label": "Sistema",
"settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. <b>La convalida non viene eseguita.</b>",
"test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni."
}
}

View File

@@ -300,7 +300,7 @@
"FieldLock_Error": "Помилка оновлення стану блокування поля",
"FieldLock_Lock_Tooltip": "Заблокувати поле (запобігти перезапису плагіном)",
"FieldLock_Locked": "Поле заблоковано",
"FieldLock_SaveBeforeLocking": "",
"FieldLock_SaveBeforeLocking": "Збережіть зміни перед блокуванням",
"FieldLock_Source_Label": "Джерело: ",
"FieldLock_Unlock_Tooltip": "Поле розблокування (дозволити перезапис плагіна)",
"FieldLock_Unlocked": "Поле розблоковано",
@@ -783,4 +783,4 @@
"settings_system_label": "Система",
"settings_update_item_warning": "Оновіть значення нижче. Слідкуйте за попереднім форматом. <b>Перевірка не виконана.</b>",
"test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни."
}
}