]> WPIA git - cassiopeia.git/blobdiff - src/config.cpp
fix: check cert before operating on it
[cassiopeia.git] / src / config.cpp
index ad3c1375963a16602d07611b62bc7ff502e31606..a4d32848ecb7de4e3e4609adc5a83e997d927d47 100644 (file)
@@ -6,20 +6,24 @@
 
 #include "crypto/sslUtil.h"
 
+#include "log/logger.hpp"
+
 std::string keyDir;
 std::unordered_map<std::string, Profile> profiles;
 std::unordered_map<std::string, std::shared_ptr<CAConfig>> CAs;
 std::string sqlHost, sqlUser, sqlPass, sqlDB;
 std::string serialPath;
+std::string crlPrefix;
+std::string crtPrefix;
 
 std::shared_ptr<std::unordered_map<std::string, std::string>> parseConf( std::string path ) {
-    std::shared_ptr<std::unordered_map<std::string, std::string>> map( new std::unordered_map<std::string, std::string>() );
+    auto map = std::make_shared<std::unordered_map<std::string, std::string>>();
     std::ifstream config;
     config.open( path );
 
     if( !config.is_open() ) {
-        std::cout << "Where is " << path << "?" << std::endl;
-        throw "Config missing";
+        logger::notef( "Where is \"%s\"?", path );
+        throw std::runtime_error( "Config missing" );
     }
 
     std::string line1;
@@ -32,7 +36,7 @@ std::shared_ptr<std::unordered_map<std::string, std::string>> parseConf( std::st
         int splitter = line1.find( "=" );
 
         if( splitter == -1 ) {
-            std::cerr << "Ignoring malformed config line: " << line1 << std::endl;
+            logger::warn( "Ignoring malformed config line: ", line1 );
             continue;
         }
 
@@ -54,7 +58,7 @@ int parseProfiles() {
     dp = opendir( "profiles" );
 
     if( dp == NULL ) {
-        std::cerr << "Profiles not found " << std::endl;
+        logger::error( "Profiles directory not found" );
         return -1;
     }
 
@@ -68,14 +72,14 @@ int parseProfiles() {
         int splitter = profileName.find( "-" );
 
         if( splitter == -1 ) {
-            std::cerr << "Ignoring malformed profile: " << profileName << std::endl;
+            logger::warn( "Ignoring malformed profile: ", profileName );
             continue;
         }
 
         std::string id = profileName.substr( 0, splitter );
 
         if( profileName.substr( profileName.size() - 4 ) != ".cfg" ) {
-            std::cerr << "Ignoring malformed profile: " << profileName << std::endl;
+            logger::warn( "Ignoring malformed profile: ", profileName );
             continue;
         }
 
@@ -91,42 +95,43 @@ int parseProfiles() {
 
         std::string cas = map->at( "ca" );
 
-        DIR *dir;
-        struct dirent *ent;
-        if ((dir = opendir ("ca")) != NULL) {
-            while ((ent = readdir (dir)) != NULL) {
-                std::string caName = std::string(ent->d_name);
-                if( caName.find( cas ) != 0 ){
+        DIR* dir;
+        struct dirent* ent;
+
+        if( ( dir = opendir( "ca" ) ) != NULL ) {
+            while( ( ent = readdir( dir ) ) != NULL ) {
+                std::string caName = std::string( ent->d_name );
+
+                if( caName.find( cas ) != 0 ) {
                     continue;
                 }
 
                 if( CAs.find( caName ) == CAs.end() ) {
-                    std::shared_ptr<CAConfig> ca( new CAConfig( caName ) );
+                    auto ca = std::make_shared<CAConfig>( caName );
                     CAs.emplace( caName, ca );
                 }
 
                 prof.ca.push_back( CAs.at( caName ) );
-                std::cout << "Adding CA: " << caName << std::endl;
+                logger::note( "Adding CA: ", caName );
             }
-            closedir (dir);
+
+            closedir( dir );
         } else {
-            throw "Directory with CAConfigs not found";
+            throw std::runtime_error( "Directory with CAConfigs not found" );
         }
 
         profiles.emplace( profileName, prof );
-        std::cout << "Profile: " << profileName << " up and running." << std::endl;
+        logger::notef( "Profile: \"%s\" up and running.", profileName );
     }
 
     ( void ) closedir( dp );
 
-
-    std::cout << profiles.size() << " profiles loaded." << std::endl;
+    logger::notef( "%s profiles loaded.", profiles.size() );
 
     return 0;
 }
 
 int parseConfig( std::string path ) {
-
     auto masterConf = parseConf( path );
 
     keyDir = masterConf->at( "key.directory" );
@@ -135,9 +140,11 @@ int parseConfig( std::string path ) {
     sqlPass = masterConf->at( "sql.password" );
     sqlDB = masterConf->at( "sql.database" );
     serialPath = masterConf->at( "serialPath" );
+    crlPrefix = masterConf->at( "crlPrefix" );
+    crtPrefix = masterConf->at( "crtPrefix" );
 
     if( keyDir == "" ) {
-        std::cerr << "Missing config property key.directory" << std::endl;
+        logger::error( "Missing config property key.directory" );
         return -1;
     }