dbarzin / deming

Management tool for the information security management system / Outil de gestion du système de management de la sécurité de l'information

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Notifier lors de la planification d'un contrôle

JinxCH73 opened this issue · comments

Merci pour ce travail d'outillage 27001 !

Est-il possible de notifier par mail la personne en charge de réaliser le contrôle lors de sa planification ?

Merci !

Cette fonctionnalité existe déjà. c'est décrit ici : https://dbarzin.github.io/deming/config.fr/#notifications
Une fois cette option configurée, les utilisateurs responsables de contrôles vont recevoir tous les jours une notification sur les contrôles à réaliser.

Oui merci pour le lien.
Est-ce que ce paramétrage est valable pour tous les utilisateurs de l'application ou uniquement pour l'utilisateur connecté ?
Pour le moment, je n'ai rien reçu mais le test (avec le bouton test) était adressé à admin@admin.localhost mais sinon le test du paramétrage Postfix fonctionne correctement.
L'envoi de mail est appliqué à un horaire défini ?
Merci.

Le mail est envoyé immédiatement à l'adresse mail de l'utilisateur connecté.
Regarde les logs dans /var/log/mail.log

Serait-ce possible d'avertir l'utilisateur qui a été sélectionné au moment de la planification ?
Rien dans les logs en effet.

Pas de logs ? Il devrait au moins y avoir une trace de l'envoi du mail. le packet "mailutils" est-il installé ?

J'ai suivi la procédure d'installation https://github.com/dbarzin/deming/blob/main/INSTALL.fr.md#configuration-du-mail
Le test de la dernière étape fonctionne correctement.
Rien de plus.

Chaque envoi de mail devrait générer une trace dans /var/log/mail.log

Je vais revoir ma configuration de Postfix

La config Postfix me semble correcte.

Voici ce que je fais et qui ne résulte à n'envoyer aucun mail et aucun log dans /var/log/mail.log :

image

La configuration interne à Deming :

image

Que se passe t-il lorsque tu envoie un mail avec la commande mailx ?

echo "Test mail body" | mailx -r "deming@yourdomain.local" -s "Subject Test" yourname@yourdomain.local

Y a-t-il une erreur ? Y a-t-il des logs dans /var/log/mail.log ? Le mail arrive t-il ?

Ca râle sur l'expéditeur (inconnu) mais le mail arrive bien.

J'ai vraiment le sentiment que depuis Deming en planifiant un contrôle, il n'y a pas de mail qui part... Rien dans les logs.

Tu as bien mis en place le crontab ? Les mails partent une fois par jour vers minuit ou après selon la timezone.

Je viens de vérifier avec un crontab -l, et il n'y a rien...
Je suis quasi sûr de l'avoir fait mais merci pour la piste je vais la refaire.

Alors j'attends demain...
Ma config ici :
image
Le test fonctionne bien.

Il bien évidemment qu'il y aie des contrôles expirés ou qui arrivent à échéance dans les 7 jours !
Les envois de mail génèrent des logs deming/storage/logs/laravel.log

C'est bien cette action "Planifier" qui devrait déclencher l'envoi d'un mail ? C'est juste ?
image

Mail adressé au responsable sélectionné à la page
image

Adresse mail définie dans la page Configuation > Utilisateurs

Y a-t-il des logs dans deming/storage/logs/laravel.log ?

Oui mais rien pour les mails :

@deming:/var/www/deming/storage/logs$ tail -50 laravel.log
#10 /var/www/deming/app/Http/Controllers/UserController.php(158): Illuminate\Database\Eloquent\Model->update()
#11 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\Http\Controllers\UserController->update()
#12 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction()
#13 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\Routing\ControllerDispatcher->dispatch()
#14 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController()
#15 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Router.php(799): Illuminate\Routing\Route->run()
#16 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing\{closure}()
#17 /var/www/deming/app/Http/Middleware/SetLocale.php(20): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#18 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\Http\Middleware\SetLocale->handle()
#19 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#20 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#21 /var/www/deming/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(57): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#22 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Auth\Middleware\Authenticate->handle()
#23 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#24 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#25 /var/www/deming/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#26 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#27 /var/www/deming/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#28 /var/www/deming/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#29 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle()
#30 /var/www/deming/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#31 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#32 /var/www/deming/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#33 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#34 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#35 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Pipeline\Pipeline->then()
#36 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Router.php(777): Illuminate\Routing\Router->runRouteWithinStack()
#37 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Router.php(741): Illuminate\Routing\Router->runRoute()
#38 /var/www/deming/vendor/laravel/framework/src/Illuminate/Routing/Router.php(730): Illuminate\Routing\Router->dispatchToRoute()
#39 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch()
#40 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()
#41 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#42 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#43 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()
#44 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#45 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#46 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#47 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#48 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()
#49 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#50 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#51 /var/www/deming/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#52 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Http\Middleware\TrustProxies->handle()
#53 /var/www/deming/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()
#54 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then()
#55 /var/www/deming/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#56 /var/www/deming/public/index.php(55): Illuminate\Foundation\Http\Kernel->handle()
#57 /var/www/deming/server.php(21): require_once('...')
#58 {main}

Pour envoyer les notifications immédiatement :

php artisan deming:send-notifications

Pour récupérer les logs qui concernent l'envoi de notifications

grep SendNotifications storage/logs/laravel.log

Cela donne quelles réponses ?

oui dans laravel.log cette fois-ci après "php artisan deming:send-notifications" :

local.DEBUG: SendNotifications - Start.
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - day 25
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - check
[2023-07-25 12:07:55] local.DEBUG: 9 control(s) will expire within 7 days.
[2023-07-25 12:07:55] local.DEBUG: Mail sent to admin@admin.localhost
[2023-07-25 12:07:55] local.DEBUG: Mail sent to x@xx.xx
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - DONE.

Et c'est visiblement la première fois :

grep SendNotifications laravel.log
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - Start.
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - day 25
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - check
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - DONE.

Mais les mails n'arrivent pas...

Dans le mail.log, j'ai des erreurs bizarres que je n'ai pas avec les tests d'envoi en ligne de commande :

Jul 25 14:07:55 Deming postfix/pickup[19331]: C02E91E3DFA: uid=1000 from=admin@admin.localhost
Jul 25 14:07:55 Deming postfix/cleanup[19968]: C02E91E3DFA: message-id=20230725120755.C02E91E3DFA@Deming.localdomain
Jul 25 14:07:55 Deming postfix/qmgr[16893]: C02E91E3DFA: from=admin@admin.localhost, size=724, nrcpt=1 (queue active)
Jul 25 14:07:55 Deming postfix/pickup[19331]: C55941E4DA6: uid=1000 from=x@xx.xx
Jul 25 14:07:55 Deming postfix/cleanup[19968]: C55941E4DA6: message-id=20230725120755.C55941E4DA6@Deming.localdomain
Jul 25 14:07:55 Deming postfix/qmgr[16893]: C55941E4DA6: from=x@xx.xx, size=728, nrcpt=1 (queue active)
Jul 25 14:07:55 Deming postfix/smtp[19973]: C02E91E3DFA: to=admin@admin.localhost, relay=none, delay=0.03, delays=0.02/0.01/0/0, dsn=5.4.6, status=bounced (mail for admin.localhost loops back to myself)
Jul 25 14:07:55 Deming postfix/cleanup[19968]: C805D1E4DA7: message-id=20230725120755.C805D1E4DA7@Deming.localdomain
Jul 25 14:07:55 Deming postfix/bounce[19974]: C02E91E3DFA: sender non-delivery notification: C805D1E4DA7
Jul 25 14:07:55 Deming postfix/qmgr[16893]: C805D1E4DA7: from=<>, size=2678, nrcpt=1 (queue active)
Jul 25 14:07:55 Deming postfix/qmgr[16893]: C02E91E3DFA: removed
Jul 25 14:07:55 Deming postfix/smtp[19973]: C805D1E4DA7: to=admin@admin.localhost, relay=none, delay=0.01, delays=0.01/0/0/0, dsn=5.4.6, status=bounced (mail for admin.localhost loops back to myself)
Jul 25 14:07:55 Deming postfix/qmgr[16893]: C805D1E4DA7: removed
Jul 25 14:07:55 Deming postfix/local[19975]: C55941E4DA6: to=x@xx.xx, relay=local, delay=0.04, delays=0.02/0.02/0/0, dsn=5.1.1, status=bounced (unknown user: "x")
Jul 25 14:07:55 Deming postfix/cleanup[19968]: CC26D1E3DFA: message-id=20230725120755.CC26D1E3DFA@Deming.localdomain
Jul 25 14:07:55 Deming postfix/bounce[19974]: C55941E4DA6: sender non-delivery notification: CC26D1E3DFA
Jul 25 14:07:55 Deming postfix/qmgr[16893]: CC26D1E3DFA: from=<>, size=2676, nrcpt=1 (queue active)
Jul 25 14:07:55 Deming postfix/qmgr[16893]: C55941E4DA6: removed
Jul 25 14:07:55 Deming postfix/local[19975]: CC26D1E3DFA: to=x@xx.xx, relay=local, delay=0.01, delays=0/0/0/0, dsn=5.1.1, status=bounced (unknown user: "x")
Jul 25 14:07:55 Deming postfix/qmgr[16893]: CC26D1E3DFA: removed

x@xx.xx n'est pas une adresse mail valide. C'est l'adresse mail de ton utilisateur dans Deming.

Oui j'ai masqué la vraie avec x@xx.xx

Mais à priori l'automatisation d'envoi de mails ne fonctionne pas. Il a fallu la commande manuelle donnée pour trouver les premiers logs de notifications dans laravel.log

Il faut vérifier le crontab. Les commandes d'envoi de mail partent de là.

Au lieu des * * * * *, j'ai mis 00 */1 * * * cd /var/www/deming && php artisan schedule:run >> /dev/null 2>&1 pour que cela s'execute toutes les heures plutôt que tout le temps...
A voir.

Non la planif via crontab ne fonctionne pas.

Si je reprends la commande exécutée par la crontab :
/var/www/deming$ php artisan schedule:run

INFO No scheduled commands are ready to run.

Or une execution manuelle :
php artisan deming:send-notifications

Envoie bien les mails.

C'est normal, php artisan schedule:run vérifie si des commandes peuvent être exécutées.
La commande "deming:send-notifications" ne s'exécute qu'une fois par jour vers minuit.
Cela se passe ici dans le code : https://github.com/dbarzin/deming/blob/main/app/Console/Kernel.php

Donc y a-t-il une notification par mail après avoir planifié et "assigné la réalisation" d'un contrôle ou faut-il attendre minuit ?

Les notifications automatiques ne sont envoyées que via le crontab.
Elles arrivent vers minuit à la fréquence définie dans l'écran de configuration.

Mis à part les commandes lancées manuellement, la planification de minuit ne semble pas fonctionner.

obo@Deming:/var/www/deming$ grep SendNotifications storage/logs/laravel.log
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - Start.
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - day 25
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - check
[2023-07-25 12:07:55] local.DEBUG: SendNotifications - DONE.
[2023-07-25 12:45:27] local.DEBUG: SendNotifications - Start.
[2023-07-25 12:45:27] local.DEBUG: SendNotifications - day 25
[2023-07-25 12:45:27] local.DEBUG: SendNotifications - check
[2023-07-25 12:45:28] local.DEBUG: SendNotifications - DONE.
[2023-07-25 12:48:28] local.DEBUG: SendNotifications - Start.
[2023-07-25 12:48:28] local.DEBUG: SendNotifications - day 25
[2023-07-25 12:48:28] local.DEBUG: SendNotifications - check
[2023-07-25 12:48:28] local.DEBUG: SendNotifications - DONE.
[2023-07-25 13:01:01] local.DEBUG: SendNotifications - Start.
[2023-07-25 13:01:01] local.DEBUG: SendNotifications - day 25
[2023-07-25 13:01:01] local.DEBUG: SendNotifications - check
[2023-07-25 13:01:01] local.DEBUG: SendNotifications - DONE.
[2023-07-25 13:04:56] local.DEBUG: SendNotifications - Start.
[2023-07-25 13:04:56] local.DEBUG: SendNotifications - day 25
[2023-07-25 13:04:56] local.DEBUG: SendNotifications - check
[2023-07-25 13:04:56] local.DEBUG: SendNotifications - DONE.
obo@Deming:/var/www/deming$

Y a-t-il possibilité de modifier cet horaire ? J'aimerai faire un peu de debug et j'avoue qu'à minuit je préfère dormir :-)

Oui, tu peux directement appeler la commande

php artisan deming:send-notifications

Ca fonctionne avec cette autre commande dans la crontab...

Maintenant, par rapport au mail reçu :
image

Comment customiser le localhost de l'URL ?

Il faut configurer la variable APP_URL dans le fichier .env

OK