X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Fdb%2Fmysql.cpp;h=304d4963dcaed689e54751ca1b6ed756405e6f80;hb=5e63f619c0ea0d16babd26d98d14489c311c5ebe;hp=e3fbca5e6a7d4e6336eb6155be002b18ba609e49;hpb=f91a144781e9e71ec04cb39cc6619003def14f00;p=cassiopeia.git diff --git a/src/db/mysql.cpp b/src/db/mysql.cpp index e3fbca5..304d496 100644 --- a/src/db/mysql.cpp +++ b/src/db/mysql.cpp @@ -319,11 +319,36 @@ void MySQLJobProvider::writeBack( std::shared_ptr job, std::shared_ptrescape_string( res->crt_name ) + "', serial='" + this->escape_string( res->serial ) + "', caId = '" + this->escape_string( read_id ) + "', created=NOW() WHERE id='" + this->escape_string( job->target ) + "' LIMIT 1"; - + std::string q = "UPDATE certs SET crt_name='" + this->escape_string( res->crt_name ) + "', serial='" + this->escape_string( res->serial ) + "', caId = '" + this->escape_string( read_id ) + "', created='" + this->escape_string( res->before ) + "', expire='" + this->escape_string( res->after ) + "' WHERE id='" + this->escape_string( job->target ) + "' LIMIT 1"; // TODO write more thingies back if( query( q ).first ) { throw "Error while writing back"; } } + +std::pair MySQLJobProvider::getRevocationInfo( std::shared_ptr job ) { + std::string q = "SELECT certs.serial, cacerts.keyname FROM certs INNER JOIN cacerts ON certs.caId = cacerts.id WHERE certs.id = '" + this->escape_string( job->target ) + "' "; + int err = 0; + std::shared_ptr resu; + std::tie( err, resu ) = query( q ); + + if( err ) { + throw "Error while looking ca cert id"; + } + + MYSQL_ROW row = mysql_fetch_row( resu.get() ); + unsigned long* l = mysql_fetch_lengths( resu.get() ); + + if( !row || !l ) { + throw "Error while inserting new ca cert"; + } + + return std::pair( std::string( row[0], row[0] + l[0] ), std::string( row[1], row[1] + l[1] ) ); +} + +void MySQLJobProvider::writeBackRevocation( std::shared_ptr job, std::string date ) { + if( query( "UPDATE certs SET revoked = '" + this->escape_string( date ) + "' WHERE id = '" + this->escape_string( job->target ) + "'" ).first ) { + throw "Error while writing back revocation"; + } +}