]> WPIA git - cassiopeia.git/blobdiff - src/apps/client.cpp
fix: catch another exception
[cassiopeia.git] / src / apps / client.cpp
index d7cda514b5bcaa8830c75156bf284b77089f96d0..96e5b67442bf94046cb01dba31e3a9c25f0fc56b 100644 (file)
@@ -7,7 +7,7 @@
 #include <unordered_map>
 
 #include "db/database.h"
-#include "db/mysql.h"
+#include "db/psql.h"
 #include "crypto/simpleOpensslSigner.h"
 #include "crypto/remoteSigner.h"
 #include "crypto/sslUtil.h"
@@ -53,10 +53,14 @@ void checkCRLs( std::shared_ptr<Signer> sign ) {
 
 int main( int argc, const char* argv[] ) {
     bool once = false;
+    bool resetOnly = false;
 
     if( argc == 2 && std::string( "--once" ) == argv[1] ) {
         once = true;
     }
+    if( argc == 2 && std::string( "--reset" ) == argv[1] ) {
+        resetOnly = true;
+    }
 
     std::string path;
 
@@ -75,14 +79,20 @@ int main( int argc, const char* argv[] ) {
         logger::fatal( "Error: no serial device is given!" );
         return -1;
     }
-
-    std::shared_ptr<JobProvider> jp( new MySQLJobProvider( sqlHost, sqlUser, sqlPass, sqlDB ) );
+    std::shared_ptr<JobProvider> jp = std::make_shared<PostgresJobProvider>( sqlHost, sqlUser, sqlPass, sqlDB );
     std::shared_ptr<BIO> b = openSerial( serialPath );
     std::shared_ptr<BIO> slip1( BIO_new( toBio<SlipBIO>() ), BIO_free );
-    static_cast<SlipBIO*>( slip1->ptr )->setTarget( std::shared_ptr<OpensslBIO>( new OpensslBIOWrapper( b ) ) );
-    std::shared_ptr<RemoteSigner> sign( new RemoteSigner( slip1, generateSSLContext( false ) ) );
+    static_cast<SlipBIO*>( slip1->ptr )->setTarget( std::make_shared<OpensslBIOWrapper>( b ), false );
+    auto sign = std::make_shared<RemoteSigner>( slip1, generateSSLContext( false ) );
     // std::shared_ptr<Signer> sign( new SimpleOpensslSigner() );
 
+    if( resetOnly ) {
+        std::cout << "Doing BIO reset" << std::endl;
+        int result = BIO_reset( slip1.get() );
+        std::cout << "Did BIO reset, result " << result << ", exiting." << std::endl;
+        return result;
+    }
+
     time_t lastCRLCheck = 0;
 
     while( true ) {
@@ -93,26 +103,29 @@ int main( int argc, const char* argv[] ) {
             // todo set good log TODO FIXME
             sign->setLog( std::shared_ptr<std::ostream>(
                 &std::cout,
-                []( std::ostream * o ) {
+                []( std::ostream* o ) {
                     ( void ) o;
                 } ) );
             checkCRLs( sign );
             lastCRLCheck = current;
         }
 
-        std::shared_ptr<Job> job = jp->fetchJob();
-
+        std::shared_ptr<Job> job;
+       try {
+       job = jp->fetchJob();
+       } catch ( std::exception &e ){
+               logger::errorf ( "Exception while fetchJob: %s", e.what() );
+       }
         if( !job ) {
-            logger::debug( "Nothing to work on." );
+            logger::note( "Nothing to work on." );
             sleep( 5 );
             continue;
         }
 
         std::shared_ptr<std::ofstream> logPtr = openLogfile( std::string( "logs/" ) + job->id + std::string( "_" ) + job->warning + std::string( ".log" ) );
 
-        std::ofstream& log = *( logPtr.get() );
+        logger::logger_set log_set({logger::log_target(*logPtr, logger::level::debug)}, logger::auto_register::on);
 
-        sign->setLog( logPtr );
         logger::note( "TASK ID: ", job->id );
         logger::note( "TRY:     ", job->warning );
         logger::note( "TARGET:  ", job->target );