12 import json |
12 import json |
13 |
13 |
14 from PyQt6.QtCore import pyqtSignal, QObject, QUrl, QUrlQuery, QByteArray |
14 from PyQt6.QtCore import pyqtSignal, QObject, QUrl, QUrlQuery, QByteArray |
15 from PyQt6.QtNetwork import QNetworkRequest, QNetworkReply |
15 from PyQt6.QtNetwork import QNetworkRequest, QNetworkReply |
16 |
16 |
17 from EricWidgets import EricMessageBox |
17 from eric7.EricWidgets import EricMessageBox |
18 |
18 |
19 import Preferences |
19 from eric7 import Preferences |
|
20 |
|
21 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
20 |
22 |
21 |
23 |
22 class VirusTotalAPI(QObject): |
24 class VirusTotalAPI(QObject): |
23 """ |
25 """ |
24 Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> |
26 Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> |
119 "apikey={0}&resource={1}".format(key, self.TestServiceKeyScanID).encode( |
121 "apikey={0}&resource={1}".format(key, self.TestServiceKeyScanID).encode( |
120 "utf-8" |
122 "utf-8" |
121 ) |
123 ) |
122 ) |
124 ) |
123 |
125 |
124 import WebBrowser.WebBrowserWindow |
126 nam = WebBrowserWindow.networkManager() |
125 |
|
126 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
127 reply = nam.post(request, params) |
127 reply = nam.post(request, params) |
128 reply.finished.connect(lambda: self.__checkServiceKeyValidityFinished(reply)) |
128 reply.finished.connect(lambda: self.__checkServiceKeyValidityFinished(reply)) |
129 self.__replies.append(reply) |
129 self.__replies.append(reply) |
130 |
130 |
131 def __checkServiceKeyValidityFinished(self, reply): |
131 def __checkServiceKeyValidityFinished(self, reply): |
164 "apikey={0}&url=".format( |
164 "apikey={0}&url=".format( |
165 Preferences.getWebBrowser("VirusTotalServiceKey") |
165 Preferences.getWebBrowser("VirusTotalServiceKey") |
166 ).encode("utf-8") |
166 ).encode("utf-8") |
167 ).append(QUrl.toPercentEncoding(url.toString())) |
167 ).append(QUrl.toPercentEncoding(url.toString())) |
168 |
168 |
169 import WebBrowser.WebBrowserWindow |
169 nam = WebBrowserWindow.networkManager() |
170 |
|
171 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
172 reply = nam.post(request, params) |
170 reply = nam.post(request, params) |
173 reply.finished.connect(lambda: self.__submitUrlFinished(reply)) |
171 reply.finished.connect(lambda: self.__submitUrlFinished(reply)) |
174 self.__replies.append(reply) |
172 self.__replies.append(reply) |
175 |
173 |
176 def __submitUrlFinished(self, reply): |
174 def __submitUrlFinished(self, reply): |
214 "apikey={0}&resource={1}".format( |
212 "apikey={0}&resource={1}".format( |
215 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId |
213 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId |
216 ).encode("utf-8") |
214 ).encode("utf-8") |
217 ) |
215 ) |
218 |
216 |
219 import WebBrowser.WebBrowserWindow |
217 nam = WebBrowserWindow.networkManager() |
220 |
|
221 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
222 reply = nam.post(request, params) |
218 reply = nam.post(request, params) |
223 reply.finished.connect(lambda: self.__getUrlScanReportUrlFinished(reply)) |
219 reply.finished.connect(lambda: self.__getUrlScanReportUrlFinished(reply)) |
224 self.__replies.append(reply) |
220 self.__replies.append(reply) |
225 |
221 |
226 def __getUrlScanReportUrlFinished(self, reply): |
222 def __getUrlScanReportUrlFinished(self, reply): |
253 "apikey={0}&resource={1}".format( |
249 "apikey={0}&resource={1}".format( |
254 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId |
250 Preferences.getWebBrowser("VirusTotalServiceKey"), scanId |
255 ).encode("utf-8") |
251 ).encode("utf-8") |
256 ) |
252 ) |
257 |
253 |
258 import WebBrowser.WebBrowserWindow |
254 nam = WebBrowserWindow.networkManager() |
259 |
|
260 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
261 reply = nam.post(request, params) |
255 reply = nam.post(request, params) |
262 reply.finished.connect(lambda: self.__getFileScanReportUrlFinished(reply)) |
256 reply.finished.connect(lambda: self.__getFileScanReportUrlFinished(reply)) |
263 self.__replies.append(reply) |
257 self.__replies.append(reply) |
264 |
258 |
265 def __getFileScanReportUrlFinished(self, reply): |
259 def __getFileScanReportUrlFinished(self, reply): |
293 query = QUrlQuery() |
287 query = QUrlQuery() |
294 query.setQueryItems(queryItems) |
288 query.setQueryItems(queryItems) |
295 url.setQuery(query) |
289 url.setQuery(query) |
296 request = QNetworkRequest(url) |
290 request = QNetworkRequest(url) |
297 |
291 |
298 import WebBrowser.WebBrowserWindow |
292 nam = WebBrowserWindow.networkManager() |
299 |
|
300 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
301 reply = nam.get(request) |
293 reply = nam.get(request) |
302 reply.finished.connect(lambda: self.__getIpAddressReportFinished(reply)) |
294 reply.finished.connect(lambda: self.__getIpAddressReportFinished(reply)) |
303 self.__replies.append(reply) |
295 self.__replies.append(reply) |
304 |
296 |
305 def __getIpAddressReportFinished(self, reply): |
297 def __getIpAddressReportFinished(self, reply): |
360 query = QUrlQuery() |
352 query = QUrlQuery() |
361 query.setQueryItems(queryItems) |
353 query.setQueryItems(queryItems) |
362 url.setQuery(query) |
354 url.setQuery(query) |
363 request = QNetworkRequest(url) |
355 request = QNetworkRequest(url) |
364 |
356 |
365 import WebBrowser.WebBrowserWindow |
357 nam = WebBrowserWindow.networkManager() |
366 |
|
367 nam = WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager() |
|
368 reply = nam.get(request) |
358 reply = nam.get(request) |
369 reply.finished.connect(lambda: self.__getDomainReportFinished(reply)) |
359 reply.finished.connect(lambda: self.__getDomainReportFinished(reply)) |
370 self.__replies.append(reply) |
360 self.__replies.append(reply) |
371 |
361 |
372 def __getDomainReportFinished(self, reply): |
362 def __getDomainReportFinished(self, reply): |