/** * This functions takes a serial port and tries if it can find a Kettler bike connected * to it. */ bool Kettler::discover(QString portName) { bool found = false; QSerialPort sp; sp.setPortName(portName); if (sp.open(QSerialPort::ReadWrite)) { m_kettlerConnection.configurePort(&sp); // Discard any existing data QByteArray data = sp.readAll(); // Read id from bike sp.write("cd\r\n"); sp.waitForBytesWritten(500); QByteArray reply = sp.readAll(); reply.append('\0'); QString replyString(reply); if (replyString.startsWith("ACK") || replyString.startsWith("RUN")) { found = true; } } sp.close(); return found; }
QMultiMap<QString, QString> KQOAuthManagerPrivate::createTokensFromResponse(QByteArray reply) { QMultiMap<QString, QString> result; QString replyString(reply); QStringList parameterPairs = replyString.split('&', QString::SkipEmptyParts); foreach (const QString ¶meterPair, parameterPairs) { QStringList parameter = parameterPair.split('='); result.insert(parameter.value(0), parameter.value(1)); }
void Servers::finishedSlot(QNetworkReply* reply ) { if (reply->error() == QNetworkReply::NoError) { QByteArray replyBytes = reply->readAll(); // bytes QString replyString(replyBytes); // string //fprintf(stderr, "replyString length:%i\n", replyString.length()); //qDebug() << replyString; QStringList list = replyString.split("\n", QString::SkipEmptyParts); populateList(list); } // Some http error received else { fprintf(stderr, "Servers Reply error\n"); } reply->deleteLater(); }
bool MessageProcessor::processMessage(const std::string& messageString, std::string& reply) { if (messageString.size() < 1) return false; // First we grab the client's message OTASCIIArmor ascMessage; ascMessage.MemSet(messageString.data(), messageString.size()); String messageContents; ascMessage.GetString(messageContents); // All decrypted--now let's load the results into an OTMessage. // No need to call message.ParseRawFile() after, since // LoadContractFromString handles it. Message message; if (!messageContents.Exists() || !message.LoadContractFromString(messageContents)) { Log::vError("Error loading message from message " "contents:\n\n%s\n\n", messageContents.Get()); return true; } Message replyMessage; replyMessage.m_strCommand.Format("%sResponse", message.m_strCommand.Get()); // NymID replyMessage.m_strNymID = message.m_strNymID; // NotaryID, a hash of the server contract replyMessage.m_strNotaryID = message.m_strNotaryID; // The default reply. In fact this is probably superfluous replyMessage.m_bSuccess = false; ClientConnection client; Nym nym(message.m_strNymID); bool processedUserCmd = server_->userCommandProcessor_.ProcessUserCommand( message, replyMessage, &client, &nym); // By optionally passing in &client, the client Nym's public // key will be set on it whenever verification is complete. (So // for the reply, I'll have the key and thus I'll be able to // encrypt reply to the recipient.) if (!processedUserCmd) { String s1(message); Log::vOutput(0, "Unable to process user command: %s\n ********** " "REQUEST:\n\n%s\n\n", message.m_strCommand.Get(), s1.Get()); // NOTE: normally you would even HAVE a true or false if // we're in this block. ProcessUserCommand() // is what tries to process a command and then sets false // if/when it fails. Until that point, you // wouldn't get any server reply. I'm now changing this // slightly, so you still get a reply (defaulted // to success==false.) That way if a client needs to re-sync // his request number, he will get the false // and therefore know to resync the # as his next move, vs // being stuck with no server reply (and thus // stuck with a bad socket.) // We sign the reply here, but not in the else block, since // it's already signed in cases where // ProcessUserCommand() is a success, by the time that call // returns. // Since the process call definitely failed, I'm replyMessage.m_bSuccess = false; // making sure this here is definitely set to // false (even though it probably was already.) replyMessage.SignContract(server_->GetServerNym()); replyMessage.SaveContract(); String s2(replyMessage); Log::vOutput(0, " ********** RESPONSE:\n\n%s\n\n", s2.Get()); } else { // At this point the reply is ready to go, and client // has the public key of the recipient... Log::vOutput(1, "Successfully processed user command: %s.\n", message.m_strCommand.Get()); } String replyString(replyMessage); if (!replyString.Exists()) { Log::vOutput(0, "Failed trying to grab the reply " "in OTString form. " "(No reply message will be sent.)\n"); return true; } OTASCIIArmor ascReply(replyString); if (!ascReply.Exists()) { Log::vOutput(0, "Unable to WriteArmoredString from " "OTASCIIArmor object into OTString object. (No reply " "message will be sent.)\n"); return true; } reply.assign(ascReply.Get(), ascReply.GetLength()); return false; }
void Layer7::LoadSlot(QNetworkReply *reply) { switch (op) { case lsoStart: emit UpdateSignal("Loading started..."); Logger::ins.Header() << "Loading registry data from " << http.Url() << "data/ started...\r\n"; http.Propfind(http.Url() + "data/"); op = lsoListDomains; break; case lsoListDomains: if (reply->error() == QNetworkReply::NoError) { QString replyString(reply->readAll()); sl::log << "lsoListDomains: " << SQ(replyString) << sl::end; Propfinds elements = http.ParsePropfindReply(replyString); for (Propfinds::iterator e = elements.begin(); e != elements.end(); ++e) if (e->href != http.Url()) { domains.push_back(GtDomain(SQ(e->href), SQ(e->name))); Logger::ins.Info() << "Service domain: " << e->name << "\r\n"; emit UpdateSignal("Service Domain: " + e->name); } if (SelectFirstDomain()) { loaded = true; // check if all domains match domains from the db for (unsigned int d = 0; d < domains.size(); ++d) if (!sdoms.contains(QS(domains[d].name))) { loaded = false; Logger::ins.Error() << "Repository does not contain service domain named " << QS(domains[d].name) << "\r\n"; emit DoneSignal("Repository does not contain service domain named " + QS(domains[d].name)); } if (loaded) { op = lsoListServices; http.Propfind(QS(SelectedDomain().href) + "web/"); } } } else emit UpdateSignal(reply->errorString()); break; case lsoListServices: if (reply->error() == QNetworkReply::NoError) { QString replyString(reply->readAll()); sl::log << "lsoListServices: " << SQ(replyString) << sl::end; Propfinds elements = http.ParsePropfindReply(replyString); for (Propfinds::iterator e = elements.begin(); e != elements.end(); ++e) if (e->href != http.Url() && e->name != "OLD" && e->name != "REMOVED") { endpoints.push_back(GtEndpoint(item++ * 100 + REPO_TB_IDX, SelectedDomain().name, SQ(e->href), SQ(e->name))); Logger::ins.Info() << "Service: " << e->name << "\r\n"; emit UpdateSignal("Service: " + e->name); } } else emit UpdateSignal(reply->errorString()); if (SelectNextDomain()) http.Propfind(QS(SelectedDomain().href) + "web/"); else if (SelectFirstEndpoint()) { Logger::ins.Info() << "Parsing index files...\r\n"; emit UpdateSignal("Parsing index files..."); op = lsoGetIndexXml; Logger::ins.Info() << "Parsing " << QS(SelectedEndpoint().urlRegistryFolder) << "index.xml...\r\n"; http.Get(QS(SelectedEndpoint().urlRegistryFolder) + "index.xml"); } break; case lsoGetIndexXml: if (reply->error() == QNetworkReply::NoError) { QString replyString(reply->readAll()); sl::log << "lsoGetIndexXml: " << SQ(replyString) << sl::end; QDomDocument doc; doc.setContent(replyString); for (QDomElement r = doc.firstChildElement(); !r.isNull(); r = r.nextSiblingElement()) { if (r.nodeName() == "service") { for (QDomElement e = r.firstChildElement(); !e.isNull(); e = e.nextSiblingElement()) { if (e.nodeName() == "files") { for (QDomElement f = e.firstChildElement(); !f.isNull(); f = f.nextSiblingElement()) { QDomAttr r = f.attributeNode("root"), t = f.attributeNode("type"); if (!r.isNull() && r.nodeValue() == "true" && !t.isNull() && t.value() == "WSDL") SelectedEndpoint().urlWSDL = SQ(f.text()); } } else if (e.nodeName() == "name") SelectedEndpoint().intGivenName = SQ(e.text()); else if (e.nodeName() == "version") SelectedEndpoint().intGivenVersion = SQ(e.text()); else if (e.nodeName() == "policyVersion") SelectedEndpoint().policyVersion = SQ(e.text()); else if (e.nodeName() == "enabled") SelectedEndpoint().enabled = SQ(e.text()); else if (e.nodeName() == "soap") SelectedEndpoint().soap = SQ(e.text()); else if (e.nodeName() == "resolutionPath") SelectedEndpoint().resolutionPath = SQ(e.text()); else if (e.nodeName() == "id") SelectedEndpoint().intGivenId = SQ(e.text()); else if (e.nodeName() == "protectedEndpoint") SelectedEndpoint().protectedEndpoint = SQ(e.text()); } break; } } if (SelectedEndpoint().urlWSDL == "") { Logger::ins.Warning() << "WSDL file url not found for endpoint '" << QS(SelectedEndpoint().intGivenName) << "'\r\n"; emit UpdateSignal("WSDL file url not found for endpoint '" + QS(SelectedEndpoint().intGivenName) + "'"); SelectedEndpoint().serviceName = SelectedEndpoint().intGivenName; } if (SelectedEndpoint().protectedEndpoint == "") { Logger::ins.Warning() << "Ignoring non-protected endpoint '" << QS(SelectedEndpoint().intGivenName) << "'\r\n"; emit UpdateSignal("Ignoring non-protected endpoint '" + QS(SelectedEndpoint().intGivenName) + "'"); RemoveSelectedEndpoint(); } } else { Logger::ins.Error() << reply->errorString() << "\r\n"; emit UpdateSignal(reply->errorString()); } if (SelectNextEndpoint()) { Logger::ins.Info() << "Parsing " << QS(SelectedEndpoint().urlRegistryFolder) << "index.xml...\r\n"; http.Get(QS(SelectedEndpoint().urlRegistryFolder) + "index.xml"); } else if (SelectFirstEndpoint()) { Logger::ins.Info() << "Parsing WSDL files...\r\n"; emit UpdateSignal("Parsing WSDL files..."); op = lsoGetWsdl; Logger::ins.Info() << "Parsing " << QS(SelectedEndpoint().urlRegistryFolder + SelectedEndpoint().urlWSDL) << "\r\n"; http.Get(QS(SelectedEndpoint().urlRegistryFolder + SelectedEndpoint().urlWSDL)); } break; case lsoGetWsdl: if (reply->error() == QNetworkReply::NoError) { QString replyString(reply->readAll()); sl::log << "lsoGetWsdl: " << SQ(replyString) << sl::end; QDomDocument doc; doc.setContent(replyString); for (QDomElement r = doc.firstChildElement(); !r.isNull(); r = r.nextSiblingElement()) { if (r.nodeName() == "definitions" || r.nodeName() == "wsdl:definitions") { QDomAttr n = r.attributeNode("targetNamespace"); if (!n.isNull()) SelectedEndpoint().targetNamespace = SQ(n.nodeValue()); n = r.attributeNode("name"); if (!n.isNull()) SelectedEndpoint().definitionName = SQ(n.nodeValue()); // find all service names std::vector<std::string> serviceNames; for (QDomElement e = r.firstChildElement(); !e.isNull(); e = e.nextSiblingElement()) { if (e.nodeName() == "service" || e.nodeName() == "wsdl:service") { QDomAttr a = e.attributeNode("name"); if (!a.isNull()) serviceNames.push_back(SQ(a.nodeValue())); } } // assign service name if (serviceNames.size() == 1) SelectedEndpoint().serviceName = serviceNames[0]; else if (serviceNames.size() > 1) { // search service node name with best fit to protected endpoint string std::map<int, std::string> m; for (std::vector<std::string>::iterator s = serviceNames.begin(); s != serviceNames.end(); ++s) m.insert(std::pair<int, std::string>(LevenshteinDistance(SelectedEndpoint().protectedEndpoint, *s, true), *s)); SelectedEndpoint().serviceName = m.begin()->second; } else { Logger::ins.Warning() << "Service name not found for endpoint '" << QS(SelectedEndpoint().intGivenName) + "'\r\n"; emit UpdateSignal("Service name not found for endpoint '" + QS(SelectedEndpoint().intGivenName) + "'"); SelectedEndpoint().serviceName = SelectedEndpoint().intGivenName; } break; } } } else { Logger::ins.Error() << reply->errorString() << "\r\n"; emit UpdateSignal(reply->errorString()); } if (SelectNextEndpoint()) { Logger::ins.Info() << "Parsing " << QS(SelectedEndpoint().urlRegistryFolder + SelectedEndpoint().urlWSDL) << "\r\n"; http.Get(QS(SelectedEndpoint().urlRegistryFolder + SelectedEndpoint().urlWSDL)); } else { Logger::ins.Info() << "Finished loading registry.\r\n"; emit DoneSignal("Finished loading."); } break; default: ; } }