#include #include #include #include #include #include #include bool gTextAntialiasing = false; bool gShowLoraScreen = false; QNetworkRequest netReq(const QString &url, int timeout, const QVariant &contentType) { QNetworkRequest request{url}; request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); request.setTransferTimeout(timeout); if(contentType.isValid()) request.setHeader(QNetworkRequest::ContentTypeHeader, contentType); return request; } QString parseReplyJson(QNetworkReply *reply, QJsonDocument *outJson) { reply->deleteLater(); auto error = reply->error(); if(error != QNetworkReply::NoError) { auto errStr = reply->errorString(); if(error==QNetworkReply::OperationCanceledError) { error = QNetworkReply::TimeoutError; errStr = QCoreApplication::translate("Def","Connection Timeout"); } return QString::number(error)+" "+QMetaEnum::fromType().valueToKey(error)+" "+errStr+"\n"+reply->readAll(); } auto status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(status != 200) return QString::number(status)+" "+reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()+"\n"+reply->readAll(); if(outJson) { auto data = reply->readAll(); QJsonParseError jsonErr; *outJson = QJsonDocument::fromJson(data, &jsonErr); if(jsonErr.error != QJsonParseError::NoError) return "JsonError "+jsonErr.errorString()+"\n"+data; } return ""; } QString checkReplyForJson(QNetworkReply *reply, QJsonDocument *doc) { reply->deleteLater(); auto error = reply->error(); auto data = reply->readAll(); if(error != QNetworkReply::NoError) { auto errStr = reply->errorString(); if(error==QNetworkReply::OperationCanceledError) { error = QNetworkReply::TimeoutError; errStr = QCoreApplication::translate("Def","Connection Timeout"); } return QString::number(error)+" - "+QMetaEnum::fromType().valueToKey(error)+": "+errStr+"\n"+data; } auto status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(status != 200) return QString::number(status)+" "+reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()+"\n"+data; QJsonParseError jsonErr; QJsonDocument json = QJsonDocument::fromJson(data, &jsonErr); if(jsonErr.error != QJsonParseError::NoError) return "JsonError "+jsonErr.errorString()+"\n"+data; if(! json["success"].toBool()) return QCoreApplication::translate("Def","Fail"); if(doc) doc->swap(json); return ""; } bool isTextValid(const QString &strIP){ if(! strIP.isEmpty()) { QRegExp rx2("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"); if (!rx2.exactMatch(strIP)) return false; } return true; } QString getRandomString(int len) { static const char table[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; static const int tableSize = sizeof(table) - 1; QString str; str.resize(len); for(int i=0; ihttpPost(strUrl, QJsonDocument(json).toJson(QJsonDocument::Compact)); } bool copyDir(const QString &source, const QString &destination, bool override) { QDir directory(source); if (!directory.exists()) { return false; } QString srcPath = QDir::toNativeSeparators(source); if (!srcPath.endsWith(QDir::separator())) srcPath += QDir::separator(); QString dstPath = QDir::toNativeSeparators(destination); if (!dstPath.endsWith(QDir::separator())) dstPath += QDir::separator(); bool error = false; QStringList fileNames = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); for (QStringList::size_type i=0; i != fileNames.size(); ++i) { QString fileName = fileNames.at(i); QString srcFilePath = srcPath + fileName; QString dstFilePath = dstPath + fileName; QFileInfo fileInfo(srcFilePath); if (fileInfo.isFile() || fileInfo.isSymLink()) { if (override) { QFile::setPermissions(dstFilePath, QFile::WriteOwner); } QFile::copy(srcFilePath, dstFilePath); } else if (fileInfo.isDir()) { QDir dstDir(dstFilePath); dstDir.mkpath(dstFilePath); if (!copyDir(srcFilePath, dstFilePath, override)) { error = true; } } } return !error; } unsigned char GetCheckCodeIn8(unsigned char * pBuffer,unsigned int uiSize) { unsigned int i=0; unsigned char ucCheckCode=0; for (i=0;i