From kde-commits Fri Dec 09 13:01:26 2016 From: Montel Laurent Date: Fri, 09 Dec 2016 13:01:26 +0000 To: kde-commits Subject: [messagelib] webengineviewer/src/checkphishingurl: Start to implement host to check Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=148128849510259 Git commit 43fbb5af68af4afc89afddde38fd4e302314fad3 by Montel Laurent. Committed on 09/12/2016 at 12:22. Pushed by mlaurent into branch 'master'. Start to implement host to check M +3 -2 webengineviewer/src/checkphishingurl/autotests/urlhashingtes= t.cpp M +48 -3 webengineviewer/src/checkphishingurl/urlhashing.cpp M +1 -1 webengineviewer/src/checkphishingurl/urlhashing.h https://commits.kde.org/messagelib/43fbb5af68af4afc89afddde38fd4e302314fad3 diff --git a/webengineviewer/src/checkphishingurl/autotests/urlhashingtest.= cpp b/webengineviewer/src/checkphishingurl/autotests/urlhashingtest.cpp index 63852362..8ccd3c6c 100644 --- a/webengineviewer/src/checkphishingurl/autotests/urlhashingtest.cpp +++ b/webengineviewer/src/checkphishingurl/autotests/urlhashingtest.cpp @@ -148,9 +148,10 @@ void UrlHashingTest::shouldGenerateHostPath() QFETCH(QStringList, hosts); QFETCH(QStringList, paths); QString result =3D WebEngineViewer::UrlHashing::canonicalizeUrl(QUrl::= fromUserInput(input)); + QUrl url(result); = - QCOMPARE(WebEngineViewer::UrlHashing::generateHostsToCheck(result), ho= sts); - QCOMPARE(WebEngineViewer::UrlHashing::generatePathsToCheck(result), pa= ths); + QCOMPARE(WebEngineViewer::UrlHashing::generateHostsToCheck(url.host())= , hosts); + QCOMPARE(WebEngineViewer::UrlHashing::generatePathsToCheck(url.path(),= url.query()), paths); } = = diff --git a/webengineviewer/src/checkphishingurl/urlhashing.cpp b/webengin= eviewer/src/checkphishingurl/urlhashing.cpp index 2cf70e0a..e859bf39 100644 --- a/webengineviewer/src/checkphishingurl/urlhashing.cpp +++ b/webengineviewer/src/checkphishingurl/urlhashing.cpp @@ -77,14 +77,59 @@ QString UrlHashing::canonicalizeUrl(QUrl url) return QString::fromLatin1(urlEncoded); } = -QStringList UrlHashing::generatePathsToCheck(const QString &str) +QStringList UrlHashing::generatePathsToCheck(const QString &str, const QSt= ring &query) { - return {}; + QStringList pathToCheck; + if (str.isEmpty()) { + return pathToCheck; + } + const int strLenght(str.length()); + for (int i =3D 0; i < strLenght; ++i) { + //We check 5 element =3D> 4 here and host if necessary + if (pathToCheck.count() =3D=3D 4) { + break; + } + if (str.at(i) =3D=3D QLatin1Char('/')) { + if (i =3D=3D 0) { + pathToCheck << QStringLiteral("/"); + } else { + pathToCheck << str.left(i); + } + } + } + if (!pathToCheck.isEmpty() && pathToCheck.at(pathToCheck.count()-1) != =3D str) { + pathToCheck << str; + } + if (!query.isEmpty()) { + pathToCheck << str + QLatin1Char('?') + query; + } + qDebug() << "ssssssssssss :" << pathToCheck; + return pathToCheck; } = QStringList UrlHashing::generateHostsToCheck(const QString &str) { - return {}; + QStringList hostToCheck; + if (str.isEmpty()) { + return hostToCheck; + } + const int strLenght(str.length()); + bool lastElement =3D true; + for (int i =3D strLenght; i > 0; --i) { + //We need to check just 5 element =3D> 4 splits hosts + current ho= st + if (hostToCheck.count() =3D=3D 4) { + break; + } + if (str.at(i) =3D=3D QLatin1Char('.')) { + if (lastElement) { + lastElement =3D false; + } else { + hostToCheck << str.right(strLenght - i - 1); + } + } + } + hostToCheck << str; + return hostToCheck; } = QByteArray UrlHashing::hashComputation() diff --git a/webengineviewer/src/checkphishingurl/urlhashing.h b/webenginev= iewer/src/checkphishingurl/urlhashing.h index 988c2564..4c1c4d20 100644 --- a/webengineviewer/src/checkphishingurl/urlhashing.h +++ b/webengineviewer/src/checkphishingurl/urlhashing.h @@ -34,7 +34,7 @@ public: ~UrlHashing(); = static QString canonicalizeUrl(QUrl url); - static QStringList generatePathsToCheck(const QString &str); + static QStringList generatePathsToCheck(const QString &str, const QStr= ing &query); static QStringList generateHostsToCheck(const QString &str); = QByteArray hashComputation();