mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
fix elopage webhook request error
This commit is contained in:
parent
15a08227e6
commit
f77f50a24b
@ -38,14 +38,15 @@ void ElopageWebhook::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
|||||||
int breakCount = 100;
|
int breakCount = 100;
|
||||||
while (stream.good() && breakCount > 0) {
|
while (stream.good() && breakCount > 0) {
|
||||||
// char dummy;
|
// char dummy;
|
||||||
char keyBuffer[30]; memset(keyBuffer, 0, 30);
|
//char keyBuffer[30]; memset(keyBuffer, 0, 30);
|
||||||
char valueBuffer[75]; memset(valueBuffer, 0, 75);
|
//char valueBuffer[75]; memset(valueBuffer, 0, 75);
|
||||||
|
std::vector<char> keyBuffer(30);
|
||||||
|
std::vector<char> valueBuffer(75);
|
||||||
/*stream.get(keyBuffer, 30, '=').get(dummy)
|
/*stream.get(keyBuffer, 30, '=').get(dummy)
|
||||||
.get(valueBuffer, 35, '&').get(dummy);*/
|
.get(valueBuffer, 35, '&').get(dummy);*/
|
||||||
std::string line;
|
std::string line;
|
||||||
std::getline(stream, line);
|
std::getline(stream, line);
|
||||||
int mode = 0;
|
int mode = 0;
|
||||||
int cursor = 0;
|
|
||||||
for (int i = 0; i < line.size(); i++) {
|
for (int i = 0; i < line.size(); i++) {
|
||||||
char c = line.at(i);
|
char c = line.at(i);
|
||||||
completeRequest += c;
|
completeRequest += c;
|
||||||
@ -55,43 +56,51 @@ void ElopageWebhook::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::
|
|||||||
}
|
}
|
||||||
if (c == '&') {
|
if (c == '&') {
|
||||||
mode = 0;
|
mode = 0;
|
||||||
cursor = 0;
|
valueBuffer.push_back('\0');
|
||||||
|
keyBuffer.push_back('\0');
|
||||||
std::string urlDecodedValue;
|
std::string urlDecodedValue;
|
||||||
Poco::URI::decode(valueBuffer, urlDecodedValue);
|
try {
|
||||||
elopageRequestData.set(keyBuffer, urlDecodedValue);
|
Poco::URI::decode(valueBuffer.data(), urlDecodedValue);
|
||||||
memset(keyBuffer, 0, 30);
|
}
|
||||||
memset(valueBuffer, 0, 75);
|
catch (Poco::Exception& ex) {
|
||||||
|
Poco::Logger& logging(Poco::Logger::get("errorLog"));
|
||||||
|
logging.error("[ElopageWebhook::handleRequest] error decoding URI: %s, exception: %s", std::string(valueBuffer.data()), ex.displayText());
|
||||||
|
urlDecodedValue = valueBuffer.data();
|
||||||
|
}
|
||||||
|
elopageRequestData.set(keyBuffer.data(), urlDecodedValue);
|
||||||
|
valueBuffer.clear();
|
||||||
|
keyBuffer.clear();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0: // read key
|
case 0: // read key
|
||||||
if (c == '=') {
|
if (c == '=') {
|
||||||
mode = 1;
|
mode = 1;
|
||||||
cursor = 0;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (cursor < 29) {
|
keyBuffer.push_back(c);
|
||||||
keyBuffer[cursor++] = c;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
int zahl = 1;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 1: // read value
|
case 1: // read value
|
||||||
if (cursor < 74) {
|
valueBuffer.push_back(c);
|
||||||
valueBuffer[cursor++] = c;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
int zahl = 1;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
valueBuffer.push_back('\0');
|
||||||
|
keyBuffer.push_back('\0');
|
||||||
|
|
||||||
// last key-value pair
|
// last key-value pair
|
||||||
std::string urlDecodedValue;
|
std::string urlDecodedValue;
|
||||||
Poco::URI::decode(valueBuffer, urlDecodedValue);
|
try {
|
||||||
if (strcmp(keyBuffer, "")) {
|
Poco::URI::decode(valueBuffer.data(), urlDecodedValue);
|
||||||
elopageRequestData.set(keyBuffer, urlDecodedValue);
|
}
|
||||||
|
catch (Poco::Exception& ex) {
|
||||||
|
Poco::Logger& logging(Poco::Logger::get("errorLog"));
|
||||||
|
logging.error("[ElopageWebhook::handleRequest] error decoding URI (last): %s, exception: %s", std::string(valueBuffer.data()), ex.displayText());
|
||||||
|
urlDecodedValue = valueBuffer.data();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(keyBuffer.data(), "")) {
|
||||||
|
elopageRequestData.set(keyBuffer.data(), urlDecodedValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
//printf("[ElopageWebhook::handleRequest] key: %s, value: %s\n", keyBuffer, valueBuffer);
|
//printf("[ElopageWebhook::handleRequest] key: %s, value: %s\n", keyBuffer, valueBuffer);
|
||||||
|
|||||||
@ -561,7 +561,7 @@ bool User::validatePassphrase(const std::string& passphrase, Mnemonic** wordSour
|
|||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
int zahl = 0;
|
int zahl = 0;
|
||||||
}
|
}
|
||||||
printf("wordlist: %d, word not found: %s\n", i, it->data());
|
//printf("wordlist: %d, word not found: %s\n", i, it->data());
|
||||||
existAll = false;
|
existAll = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user