[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [messagelib] webengineviewer/src/checkphishingurl: Now it works
From:       Montel Laurent <montel () kde ! org>
Date:       2016-12-10 7:23:31
Message-ID: E1cFc0J-0002no-GP () code ! kde ! org
[Download RAW message or body]

Git commit d06c82c55886865ab72d7b948388f4b36e13778b by Montel Laurent.
Committed on 10/12/2016 at 07:14.
Pushed by mlaurent into branch 'master'.

Now it works

M  +11   -8    webengineviewer/src/checkphishingurl/autotests/searchfullhashjobtest.cpp
 M  +1    -1    webengineviewer/src/checkphishingurl/localdatabasefile.cpp
M  +17   -4    webengineviewer/src/checkphishingurl/localdatabasemanager.cpp
M  +12   -4    webengineviewer/src/checkphishingurl/searchfullhashjob.cpp
M  +1    -1    webengineviewer/src/checkphishingurl/searchfullhashjob.h
M  +6    -1    webengineviewer/src/checkphishingurl/tests/searchfullhashgui.cpp
M  +6    -6    webengineviewer/src/checkphishingurl/urlhashing.cpp
M  +2    -1    webengineviewer/src/checkphishingurl/urlhashing.h

https://commits.kde.org/messagelib/d06c82c55886865ab72d7b948388f4b36e13778b

diff --git a/webengineviewer/src/checkphishingurl/autotests/searchfullhashjobtest.cpp \
b/webengineviewer/src/checkphishingurl/autotests/searchfullhashjobtest.cpp index \
                e9f1570e..aa72d829 100644
--- a/webengineviewer/src/checkphishingurl/autotests/searchfullhashjobtest.cpp
+++ b/webengineviewer/src/checkphishingurl/autotests/searchfullhashjobtest.cpp
@@ -41,25 +41,28 @@ void SearchFullHashJobTest::shouldNotBeAbleToStartWithEmptyUrl()
 
 void SearchFullHashJobTest::shouldCreateRequest_data()
 {
-    QTest::addColumn<QByteArray>("hash");
+    QTest::addColumn<QHash<QByteArray,QByteArray> >("hash");
     QTest::addColumn<QStringList>("databaseHash");
     QTest::addColumn<QString>("request");
     QTest::addColumn<QUrl>("url");
     QTest::addColumn<bool>("canStart");
-    QTest::newRow("no hash") << QByteArray() << QStringList() << QString() << QUrl() \
                << false;
-    QTest::newRow("database hash but not hash and not url") << QByteArray() << \
                QStringList{QStringLiteral("boo")} << QString() << QUrl() << false;
-    QTest::newRow("database hash but hash and not url") << QByteArrayLiteral("bla") \
                << QStringList{QStringLiteral("boo")} << QString() << QUrl() << \
                false;
-    QTest::newRow("database hash and hash") << QByteArrayLiteral("bla") << \
QStringList{QStringLiteral("boo")} +    QTest::newRow("no hash") << \
QHash<QByteArray,QByteArray>() << QStringList() << QString() << QUrl() << false; +    \
QTest::newRow("database hash but not hash and not url") << \
QHash<QByteArray,QByteArray>() << QStringList{QStringLiteral("boo")} << QString() << \
QUrl() << false; +    QHash<QByteArray,QByteArray> hashs;
+    hashs.insert(QByteArrayLiteral("bla"), QByteArrayLiteral("bla"));
+    QTest::newRow("database hash but hash and not url") << hashs << \
QStringList{QStringLiteral("boo")} << QString() << QUrl() << false; +    \
QTest::newRow("database hash and hash") << hashs << \
QStringList{QStringLiteral("boo")}  << \
QStringLiteral("{\"client\":{\"clientId\":\"KDE\",\"clientVersion\":\"%1\"},\"clientSt \
ates\":[\"boo\"],\"threatInfo\":{\"platformTypes\":[\"WINDOWS\"],\"threatEntries\":[{\ \
"hash\":\"bla\"}],\"threatEntryTypes\":[\"URL\"],\"threatTypes\":[\"MALWARE\"]}}").arg(WebEngineViewer::CheckPhishingUrlUtil::versionApps())
                
                                             << \
                QUrl(QStringLiteral("http://www.kde.org")) << true;
-    QTest::newRow("multi database hash and hash") << QByteArrayLiteral("bla") << \
(QStringList() << QStringLiteral("boo") << QStringLiteral("bli")) +    \
QTest::newRow("multi database hash and hash") << hashs << (QStringList() << \
QStringLiteral("boo") << QStringLiteral("bli"))  << \
QStringLiteral("{\"client\":{\"clientId\":\"KDE\",\"clientVersion\":\"%1\"},\"clientSt \
ates\":[\"boo\",\"bli\"],\"threatInfo\":{\"platformTypes\":[\"WINDOWS\"],\"threatEntri \
es\":[{\"hash\":\"bla\"}],\"threatEntryTypes\":[\"URL\"],\"threatTypes\":[\"MALWARE\"]}}").arg(WebEngineViewer::CheckPhishingUrlUtil::versionApps())
  << QUrl(QStringLiteral("http://www.kde.org")) << true;
 }
 
 void SearchFullHashJobTest::shouldCreateRequest()
 {
-    QFETCH(QByteArray, hash);
+    typedef QHash<QByteArray,QByteArray> hashdef;
+    QFETCH(hashdef , hash);
     QFETCH(QStringList, databaseHash);
     QFETCH(QString, request);
     QFETCH(QUrl, url);
@@ -68,7 +71,7 @@ void SearchFullHashJobTest::shouldCreateRequest()
     job.setDatabaseState(databaseHash);
     job.setSearchFullHashForUrl(url);
     if (!hash.isEmpty()) {
-        job.setSearchHashs(QList<QByteArray>() << hash);
+        job.setSearchHashs(hash);
     }
     QCOMPARE(job.canStart(), canStart);
     if (canStart) {
diff --git a/webengineviewer/src/checkphishingurl/localdatabasefile.cpp \
b/webengineviewer/src/checkphishingurl/localdatabasefile.cpp index 8140dabc..ee26ee20 \
                100644
--- a/webengineviewer/src/checkphishingurl/localdatabasefile.cpp
+++ b/webengineviewer/src/checkphishingurl/localdatabasefile.cpp
@@ -154,7 +154,7 @@ QByteArray LocalDataBaseFile::searchHash(const QByteArray \
&hashToSearch)  const char *hashCharStar = getCharStar(hashOffset);
             const int cmp = qstrcmp(hashCharStar, hashToSearch.constData());
             currentValue = QByteArray(hashCharStar);
-            //qCWarning(WEBENGINEVIEWER_LOG) << "search " << hashToSearch << " begin \
" << begin << " end " << end << " hashCharStar" << hashCharStar; +            \
qCWarning(WEBENGINEVIEWER_LOG) << "search " << hashToSearch.toBase64() << " begin " \
<< begin << " end " << end << " hashCharStar" << currentValue.toBase64();  if (end == \
begin) {  return currentValue;
             }
diff --git a/webengineviewer/src/checkphishingurl/localdatabasemanager.cpp \
b/webengineviewer/src/checkphishingurl/localdatabasemanager.cpp index \
                67db1e8f..27432e46 100644
--- a/webengineviewer/src/checkphishingurl/localdatabasemanager.cpp
+++ b/webengineviewer/src/checkphishingurl/localdatabasemanager.cpp
@@ -223,14 +223,27 @@ void LocalDataBaseManager::checkUrl(const QUrl &url)
     if (d->mDataBaseOk) {
         //TODO fixme short hash! we don't need to use it.
         WebEngineViewer::UrlHashing urlHashing(url);
-        QList<QByteArray> hashList = urlHashing.hashList();
-        QList<QByteArray> conflictHashs;
-        Q_FOREACH(const QByteArray &ba, hashList) {
+        QHash<QByteArray, QByteArray> hashList = urlHashing.hashList();
+        QHash<QByteArray, QByteArray> conflictHashs;
+
+        QHashIterator<QByteArray, QByteArray> i(hashList);
+        while (i.hasNext()) {
+            i.next();
+            QByteArray ba = i.value();
+            QByteArray result = d->mFile.searchHash(ba);
+            if (ba.contains(result)) {
+                conflictHashs.insert(i.key().toBase64(), i.value().toBase64());
+            }
+        }
+        qDebug() << "conflictHashs "<< conflictHashs;
+        /*
+        Q_FOREACH(const QByteArray &ba, hashList.values()) {
             QByteArray result = d->mFile.searchHash(ba);
-            if (ba == result) {
+            if (ba.contains(result)) {
                 conflictHashs << ba.toBase64();
             }
         }
+        */
         if (conflictHashs.isEmpty()) {
             Q_EMIT checkUrlFinished(url, \
WebEngineViewer::LocalDataBaseManager::UrlOk);  } else {
diff --git a/webengineviewer/src/checkphishingurl/searchfullhashjob.cpp \
b/webengineviewer/src/checkphishingurl/searchfullhashjob.cpp index b08e33b2..0b216a21 \
                100644
--- a/webengineviewer/src/checkphishingurl/searchfullhashjob.cpp
+++ b/webengineviewer/src/checkphishingurl/searchfullhashjob.cpp
@@ -39,7 +39,7 @@ public:
 
     }
     bool foundExactHash(const QList<QByteArray> &listLongHash);
-    QList<QByteArray> mHashs;
+    QHash<QByteArray, QByteArray> mHashs;
     QUrl mUrl;
     QStringList mDatabaseHashes;
     QNetworkAccessManager *mNetworkAccessManager;
@@ -154,6 +154,12 @@ void SearchFullHashJob::parse(const QByteArray &replyStr)
 
 bool SearchFullHashJobPrivate::foundExactHash(const QList<QByteArray> &listLongHash)
 {
+    QList<QByteArray> lstLongHash = mHashs.keys();
+    Q_FOREACH(const QByteArray &ba, lstLongHash) {
+        if (listLongHash.contains(ba)) {
+            return true;
+        }
+    }
     return false;
 }
 
@@ -163,7 +169,7 @@ void SearchFullHashJob::slotCheckUrlFinished(QNetworkReply \
*reply)  reply->deleteLater();
 }
 
-void SearchFullHashJob::setSearchHashs(const QList<QByteArray> &hash)
+void SearchFullHashJob::setSearchHashs(const QHash<QByteArray, QByteArray> &hash)
 {
     d->mHashs = hash;
 }
@@ -221,8 +227,10 @@ QByteArray SearchFullHashJob::jsonRequest() const
     QVariantList threatEntriesList;
 
     QVariantMap hashUrlMap;
-    Q_FOREACH(const QByteArray &hash, d->mHashs) {
-        hashUrlMap.insert(QStringLiteral("hash"), hash);
+    QHashIterator<QByteArray, QByteArray> i(d->mHashs);
+    while (i.hasNext()) {
+        i.next();
+        hashUrlMap.insert(QStringLiteral("hash"), i.value());
     }
     threatEntriesList.append(hashUrlMap);
 
diff --git a/webengineviewer/src/checkphishingurl/searchfullhashjob.h \
b/webengineviewer/src/checkphishingurl/searchfullhashjob.h index 2f4965fb..e96e4ab4 \
                100644
--- a/webengineviewer/src/checkphishingurl/searchfullhashjob.h
+++ b/webengineviewer/src/checkphishingurl/searchfullhashjob.h
@@ -53,7 +53,7 @@ public:
     QByteArray jsonRequest() const;
     void parse(const QByteArray &replyStr);
 
-    void setSearchHashs(const QList<QByteArray> &hash);
+    void setSearchHashs(const QHash<QByteArray, QByteArray> &hash);
 Q_SIGNALS:
     void result(WebEngineViewer::SearchFullHashJob::UrlStatus status, const QUrl \
&url);  void debugJson(const QByteArray &ba);
diff --git a/webengineviewer/src/checkphishingurl/tests/searchfullhashgui.cpp \
b/webengineviewer/src/checkphishingurl/tests/searchfullhashgui.cpp index \
                80de2702..c04b4cb6 100644
--- a/webengineviewer/src/checkphishingurl/tests/searchfullhashgui.cpp
+++ b/webengineviewer/src/checkphishingurl/tests/searchfullhashgui.cpp
@@ -84,7 +84,12 @@ void SearchFullHashGui::slotCheckUrl()
     connect(job, &WebEngineViewer::SearchFullHashJob::result, this, \
                &SearchFullHashGui::slotGetResult);
     connect(job, &WebEngineViewer::SearchFullHashJob::debugJson, this, \
&SearchFullHashGui::slotJSonDebug);  job->setDatabaseState(QStringList() << \
                databaseHashStr);
-    job->setSearchHashs(QList<QByteArray>() << hashStr.toLatin1());
+    QByteArray ba = hashStr.toLatin1();
+    QByteArray baShort = ba;
+    baShort.truncate(4);
+    QHash<QByteArray, QByteArray> lst;
+    lst.insert(ba, baShort);
+    job->setSearchHashs(lst);
 
     job->start();
 }
diff --git a/webengineviewer/src/checkphishingurl/urlhashing.cpp \
b/webengineviewer/src/checkphishingurl/urlhashing.cpp index e5a97015..09e7a56c 100644
--- a/webengineviewer/src/checkphishingurl/urlhashing.cpp
+++ b/webengineviewer/src/checkphishingurl/urlhashing.cpp
@@ -132,9 +132,9 @@ QStringList UrlHashing::generateHostsToCheck(const QString &str)
     return hostToCheck;
 }
 
-QList<QByteArray> UrlHashing::hashList()
+QHash<QByteArray, QByteArray> UrlHashing::hashList()
 {
-    QList<QByteArray> lst;
+    QHash<QByteArray, QByteArray> lst;
     if (mUrl.isValid()) {
         const QString result = WebEngineViewer::UrlHashing::canonicalizeUrl(mUrl);
         const QUrl url(result);
@@ -145,10 +145,10 @@ QList<QByteArray> UrlHashing::hashList()
             Q_FOREACH(const QString &path, paths) {
                 const QString str = host + path;
                 QByteArray ba = QCryptographicHash::hash(str.toLatin1(), \
                QCryptographicHash::Sha256);
-                qDebug() << " ba " << ba.toBase64();
-                //We need to keep 4
-                ba.truncate(4);
-                lst << ba;
+                QByteArray baShort = ba;
+                baShort.truncate(4);
+                lst.insert(ba, baShort);
+                //qDebug() << " ba " << ba.toBase64();
             }
         }
     }
diff --git a/webengineviewer/src/checkphishingurl/urlhashing.h \
b/webengineviewer/src/checkphishingurl/urlhashing.h index 25999c58..f3a7bfbb 100644
--- a/webengineviewer/src/checkphishingurl/urlhashing.h
+++ b/webengineviewer/src/checkphishingurl/urlhashing.h
@@ -37,7 +37,8 @@ public:
     static QStringList generatePathsToCheck(const QString &str, const QString \
&query);  static QStringList generateHostsToCheck(const QString &str);
 
-    QList<QByteArray> hashList();
+    /*long hash, short hash*/
+    QHash<QByteArray, QByteArray> hashList();
 private:
     QUrl mUrl;
 };


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic