-
Notifications
You must be signed in to change notification settings - Fork 1
/
mainwindow.py
100 lines (84 loc) · 3.95 KB
/
mainwindow.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 25 11:27:39 2022
@author: md arman hossain
!python mainwindow.py
"""
import os
from PyQt5.QtWidgets import (
QMainWindow, QMessageBox
)
from PyQt5.uic import loadUi
from graph import Window as GraphView
from nvd_downloader import download_data, download_scores_and_links
from merging_16_22_databases import merge_all
from data_files_generator import generate
from epss_dataset_generator import dataforexcel
from cvss_calculator import Cvss_calc
class Excel(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.check_dir()
loadUi("mainwindow.ui", self)
self.setWindowTitle("Vulnerability Dataset")
self.statusbar = self.statusBar()
self.initvar()
self.connect()
def initvar(self):
self.graphview = GraphView()
def connect(self):
self.actionGraphical.triggered.connect(self.actiongraphicaltriggered)
self.actionCVSS.triggered.connect(self.actioncvsstriggered)
self.actionCheck_for_update.triggered.connect(self.update_data)
self.actionUpdate_EPSS_Scores_and_Exploit_Links.triggered.connect(self.update_scores_and_links)
self.actionExport.triggered.connect(self.exportData)
def check_dir(self):
isExist = os.path.exists('./downloaded')
if not isExist: os.mkdir('./downloaded')
isExist = os.path.exists('./data')
if not isExist: os.mkdir('./data')
def actiongraphicaltriggered(self):
self.graphview.show()
def actioncvsstriggered(self):
self.win = Cvss_calc()
self.win.show()
def exportData(self):
self.excel.tableWidget.saveFileDialog()
def show_info(self,message,button_both=True):
msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText(message)
msg.setWindowTitle("Update Info")
if button_both:
msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
else:
msg.setStandardButtons(QMessageBox.Ok)
return msg.exec_()
def update_scores_and_links(self):
res = self.show_info('Are you sure want to proceed?')
if res ==1024:
self.statusbar.showMessage('1. Downloading Data [please, do not close this Application]')
download_scores_and_links()
self.statusbar.showMessage('2. Updating Excel Data [please, do not close this Application]')
dataforexcel() # merge epss and links data with nvd dataset
self.excel.reload_data()
self.show_info('Successfully updated scores and links',False)
self.statusbar.showMessage('')
def update_data(self):
self.statusbar.showMessage('1. Checking Update [please, do not close this Application]')
modified_years = download_data(True)
if len(modified_years)>0:
# res = 0
res = self.show_info('Some update founded. if you proceed, it may required several time to complete')
if res ==1024:
self.statusbar.showMessage('2. Downloading Data [please, do not close this Application]')
modified_years = download_data(False)
self.statusbar.showMessage('3. Merging Data [please, do not close this Application]')
merge_all('./downloaded',modified_years) # affected year should be used and merging with original database inorder to reduce time
self.statusbar.showMessage('4. Updating Graph Data [please, do not close this Application]')
generate("") # files will be generate for graph view
self.statusbar.showMessage('5. Updating Excel Data [please, do not close this Application]')
dataforexcel() # merge epss and links data with nvd dataset
self.excel.reload_data()
self.show_info('Successfully updated data',False)
self.statusbar.showMessage('')