diff --git a/src/cpp/Crypto/KeyPair.cpp b/src/cpp/Crypto/KeyPair.cpp index f09665054..17cdfc778 100644 --- a/src/cpp/Crypto/KeyPair.cpp +++ b/src/cpp/Crypto/KeyPair.cpp @@ -103,6 +103,7 @@ bool KeyPair::generateFromPassphrase(const char* passphrase, Mnemonic* word_sour printf("Sodium Private: \t%s\n", getHex(*mSodiumSecret, mSodiumSecret->size()).data()); printf("// ********* Keys End ************ //\n"); */ + printf("[KeyPair::generateFromPassphrase] finished!\n"); // using return true; } diff --git a/src/cpp/Crypto/Obfus_array.cpp b/src/cpp/Crypto/Obfus_array.cpp index 8b5c0f7a0..9e319540c 100644 --- a/src/cpp/Crypto/Obfus_array.cpp +++ b/src/cpp/Crypto/Obfus_array.cpp @@ -18,11 +18,15 @@ ObfusArray::ObfusArray(size_t size, const unsigned char * data) d[m_arraySize - 4] = randombytes_random(); memcpy(&m_Data[m_offsetSize], data, size); + printf("[ObfusArray] data: %lld\n", (int64_t)m_Data); } ObfusArray::~ObfusArray() { + printf("[ObfusArray::~ObfusArray] data: %lld\n", (int64_t)m_Data); if (m_Data) { + free(m_Data); } + printf("[ObfusArray::~ObfusArray] finish\n"); } \ No newline at end of file diff --git a/src/cpp/HTTPInterface/DashboardPage.cpp b/src/cpp/HTTPInterface/DashboardPage.cpp index 5533158dd..31a607462 100644 --- a/src/cpp/HTTPInterface/DashboardPage.cpp +++ b/src/cpp/HTTPInterface/DashboardPage.cpp @@ -49,11 +49,13 @@ void DashboardPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::N responseStream << "
\n"; responseStream << "\t

Willkommen "; #line 28 "/home/rock/code/gradido_login_server/src/cpsp/dashboard.cpsp" +printf("[DashboardPage] call get User get Name: \n"); responseStream << ( mSession->getUser()->getName() ); responseStream << "

\n"; responseStream << "\t

Status

\n"; responseStream << "\t

"; #line 30 "/home/rock/code/gradido_login_server/src/cpsp/dashboard.cpsp" +printf("[DashboardPage] call getSessionStateString: \n"); responseStream << ( mSession->getSessionStateString() ); responseStream << "

\n"; responseStream << "\t"; diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp index 359f8ef55..e15c84aa9 100644 --- a/src/cpp/HTTPInterface/LoginPage.cpp +++ b/src/cpp/HTTPInterface/LoginPage.cpp @@ -33,7 +33,8 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: session->setClientIp(user_host); response.addCookie(session->getLoginCookie()); auto uri_start = request.serverParams().getServerName(); - response.redirect(uri_start + "/"); + //response.redirect(uri_start + "/"); + response.redirect("./"); return; } } else { @@ -78,7 +79,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "\t
\n"; responseStream << "\t\t

Login

\n"; responseStream << "\t\t"; -#line 62 "/home/rock/code/gradido_login_server/src/cpsp/login.cpsp" +#line 63 "/home/rock/code/gradido_login_server/src/cpsp/login.cpsp" responseStream << ( session->getErrorsHtml() ); responseStream << "\n"; responseStream << "\t\t
\n"; diff --git a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp index b5f83d5ac..d564cca9a 100644 --- a/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp +++ b/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp @@ -77,6 +77,7 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c return new SaveKeysPage(s); } if (s && s->getUser()) { + printf("[PageRequestHandlerFactory] go to dashboard page with user\n"); return new DashboardPage(s); } } else { diff --git a/src/cpp/model/Session.cpp b/src/cpp/model/Session.cpp index 7b2f96faa..03257d099 100644 --- a/src/cpp/model/Session.cpp +++ b/src/cpp/model/Session.cpp @@ -498,6 +498,7 @@ bool Session::generateKeys(bool savePrivkey, bool savePassphrase) } else { if (savePassphrase) { + printf("[Session::generateKeys] create save passphrase task\n"); UniLib::controller::TaskPtr savePassphrase(new WritePassphraseIntoDB(mSessionUser->getDBId(), mPassphrase)); savePassphrase->setFinishCommand(new SessionStateUpdateCommand(SESSION_STATE_PASSPHRASE_WRITTEN, this)); savePassphrase->scheduleTask(savePassphrase); diff --git a/src/cpp/model/User.cpp b/src/cpp/model/User.cpp index 5ec976b2c..d564a8fce 100644 --- a/src/cpp/model/User.cpp +++ b/src/cpp/model/User.cpp @@ -23,11 +23,12 @@ int UserCreateCryptoKey::run() mUser->setCryptoKey(cryptoKey); if (sizeof(User::passwordHashed) != crypto_shorthash_BYTES) { + printf("[UserCreateCryptoKey] crypto_shorthash_BYTES != sizeof(mPasswordHashed)\n"); throw Poco::Exception("crypto_shorthash_BYTES != sizeof(mPasswordHashed)"); } User::passwordHashed pwdHashed; + crypto_shorthash((unsigned char*)&pwdHashed, *cryptoKey, crypto_box_SEEDBYTES, *ServerConfig::g_ServerCryptoKey); - mUser->setPwdHashed(pwdHashed); printf("crypto key created\n"); @@ -54,11 +55,18 @@ int UserGenerateKeys::run() int UserWriteIntoDB::run() { auto cm = ConnectionManager::getInstance(); + auto em = ErrorManager::getInstance(); auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER); Poco::Data::Statement insert = mUser->insertIntoDB(session); - if (1 != insert.execute()) { - mUser->addError(new Error("User::insertIntoDB", "error by inserting data tuple to db")); - return -1; + try { + if (1 != insert.execute()) { + mUser->addError(new Error("User::insertIntoDB", "error by inserting data tuple to db")); + return -1; + } + } catch (Poco::Exception& ex) { + em->addError(new ParamError("[UserWriteIntoDB]", "error writing into db", ex.displayText().data())); + em->sendErrorsAsEmail(); + return -3; } if (!mUser->loadEntryDBId(session)) { return -2; @@ -86,14 +94,18 @@ int UserWriteKeysIntoDB::run() auto keyPairs = getParent(0).cast()->getKeyPairs(); auto pubKey = keyPairs->getPublicKey(); + printf("[UserWriteKeysIntoDB] after init\n"); + Poco::Data::BLOB pubkey_blob(pubKey, crypto_sign_PUBLICKEYBYTES); Poco::Data::Statement update(session); Poco::Data::BLOB* pprivkey_blob = nullptr; if (mSavePrivKey) { + printf("[UserWriteKeysIntoDB] save privkey\n"); // TODO: encrypt privkey auto privKey = keyPairs->getPrivateKey(); printf("[UserWriteKeysIntoDB] privKey hex: %s\n", KeyPair::getHex(*privKey, privKey->size()).data()); pprivkey_blob = mUser->encrypt(privKey); + printf("[UserWriteKeysIntoDB] privkey encrypted\n"); //Poco::Data::BLOB privkey_blob(*privKey, privKey->size()); update << "UPDATE users SET pubkey=?, privkey=? where id=?", @@ -122,6 +134,7 @@ int UserWriteKeysIntoDB::run() } return -1; } + printf("[UserWriteKeysIntoDB] after saving into db\n"); if (pprivkey_blob) { delete pprivkey_blob; } @@ -310,6 +323,7 @@ bool User::generateKeys(bool savePrivkey, const std::string& passphrase, Session session->updateState(SESSION_STATE_KEY_PAIR_GENERATED); if (mDBId == 0) { + //printf("[User::generateKeys] dbid is zero, load from db\n"); loadEntryDBId(ConnectionManager::getInstance()->getConnection(CONNECTION_MYSQL_LOGIN_SERVER)); if (mDBId == 0) { auto em = ErrorManager::getInstance(); @@ -375,14 +389,19 @@ Poco::Data::Statement User::insertIntoDB(Poco::Data::Session session) bool User::loadEntryDBId(Poco::Data::Session session) { + auto em = ErrorManager::getInstance(); Poco::Data::Statement select(session); select << "SELECT id from users where email = ?;", into(mDBId), use(mEmail); - - if (select.execute() != 1) { - addError(new Error("User::loadEntryDBId", "didn't get expectet row count (1)")); - return false; + try { + if (select.execute() != 1) { + addError(new Error("User::loadEntryDBId", "didn't get expectet row count (1)")); + return false; + } + } catch(Poco::Exception& ex) { + em->addError(new ParamError("[User::loadEntryDBId]", "error selecting from db", ex.displayText().data())); + em->sendErrorsAsEmail(); } return true; diff --git a/src/cpsp/login.cpsp b/src/cpsp/login.cpsp index ed6257a0c..b38228ae3 100644 --- a/src/cpsp/login.cpsp +++ b/src/cpsp/login.cpsp @@ -18,7 +18,8 @@ session->setClientIp(user_host); response.addCookie(session->getLoginCookie()); auto uri_start = request.serverParams().getServerName(); - response.redirect(uri_start + "/"); + //response.redirect(uri_start + "/"); + response.redirect("./"); return; } } else {