From 6ce8843c3fad246c4ee82c5a9d30864b1f10d652 Mon Sep 17 00:00:00 2001
From: Guillaume Rousse <guillaume.rousse@renater.fr>
Date: Fri, 2 Mar 2018 12:19:53 +0100
Subject: [PATCH] add multiple early configuration sanity checks

---
 bin/account-manager.cgi.in | 10 ++++++++++
 conf/manager.conf.in       |  2 +-
 lib/AccountManager/App.pm  | 10 ++++------
 3 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/bin/account-manager.cgi.in b/bin/account-manager.cgi.in
index 75c0d21..577d25c 100755
--- a/bin/account-manager.cgi.in
+++ b/bin/account-manager.cgi.in
@@ -13,6 +13,16 @@ my $configuration_file =
     $ENV{ACCOUNTMANAGER_CONFIG} || '@sysconfdir@/manager.conf';
 my $configuration = Config::Tiny->read($configuration_file);
 
+# configuration sanity check
+die "no database defined in configuration, aborting\n"
+    unless $configuration->{database};
+die "no mailer defined in configuration, aborting\n"
+    unless $configuration->{mailer};
+die "no idp defined in configuration, aborting\n"
+    unless $configuration->{idp};
+warn "no logger in configuration, logging disabled\n"
+    unless $configuration->{logger};
+
 my $app = AccountManager::App->new(
     configuration => $configuration
 );
diff --git a/conf/manager.conf.in b/conf/manager.conf.in
index bdfcdab..ac2dd91 100644
--- a/conf/manager.conf.in
+++ b/conf/manager.conf.in
@@ -18,7 +18,7 @@ federation_metadata_file = @sysconfdir@/edugain-md.xml
 file = /opt/testidp/IdPAccountManager/log/manager.log
 level = info
 
-[notifier)
+[mailer]
 # path to sendmail executable
 sendmail_path = /usr/sbin/sendmail
 # from field use by the account manager
diff --git a/lib/AccountManager/App.pm b/lib/AccountManager/App.pm
index 65078b1..351dae9 100644
--- a/lib/AccountManager/App.pm
+++ b/lib/AccountManager/App.pm
@@ -44,11 +44,9 @@ sub new {
     if ($self->{configuration}->{logger}) {
         Log::Any::Adapter->set(
             'File',
-            $self->{configuration}->{log}->{file},
-            log_level => $self->{configuration}->{log}->{level}
+            $self->{configuration}->{logger}->{file},
+            log_level => $self->{configuration}->{logger}->{level}
         );
-    } else {
-        warn "no logger defined in configuration, logging disabled\n";
     }
 
     $self->{logger} = Log::Any->get_logger();
@@ -414,8 +412,8 @@ sub req_complete_challenge {
         );
     }
 
-    my $sender    = $self->{configuration}->{notifier}->{from};
-    my $sendmail  = $self->{configuration}->{notifier}->{sendmail_path} ||
+    my $sender    = $self->{configuration}->{mailer}->{from};
+    my $sendmail  = $self->{configuration}->{mailer}->{sendmail_path} ||
                     '/usr/sbin/sendmail';
     my $recipient = $self->{in}->{email};
 
-- 
GitLab