@@ -146,40 +146,40 @@ def workstation(sql_user, sql_password, sql_host, sql_port, sql_database, tablen
146
146
lastModifiedDate = str (jsonElement .get ('lastModifiedDate' , '' ))
147
147
148
148
# Unused variable for column fields
149
- sql_user = None
150
- sql_database = None
151
- sql_port = None
152
- sql_host = None
153
- sql_password = None
154
-
149
+ c = None
155
150
d = None
156
- defined = None
151
+
152
+ sql_data = {'sql_user' : False , 'sql_database' : False , 'sql_port' : False , 'sql_host' : False , 'sql_password' : False , 'tablename' : False }
153
+ filter_vars = lambda l : isinstance (l [1 ], str ) and sql_data .get (l [0 ], True ) and l [1 ] is not None
157
154
158
155
if safe_insert :
159
156
subWorker = SQLWorker (_cpeList ).initialize (2 )
157
+
158
+ # Check the cpe elements has at least 1
160
159
while len (data ) != 0 :
161
- defined = dict ( vars ())
160
+ defined = None
162
161
r = jsonElement [data .pop ()].split (' || ' )
163
- subWorker ._submit .append (subWorker ._executor .submit (subWorker ._function , sql_user , sql_password , sql_host , sql_port , sql_database , tablename , c , r , defined ))
162
+ defined = dict ((i , j ) for i , j in filter (filter_vars , list (dict (vars ()).items ())))
163
+ subWorker ._submit .append (subWorker ._executor .submit (subWorker ._function , sql_user , sql_password , sql_host , sql_port , sql_database , tablename , r , cpe_list , defined ))
164
164
165
165
for ps in subWorker .as_complete ():
166
166
result = result + ps .result ()
167
+
167
168
subWorker .terminate ()
168
169
169
170
else :
170
171
while len (data ) != 0 :
171
- c = data .pop ()
172
- r = jsonElement [c ].split (' || ' )
172
+ r = jsonElement [data .pop ()].split (' || ' )
173
173
cpe_list_clone = list (cpe_list )
174
174
cpe_list_clone .reverse ()
175
175
176
176
# It will use the value of table columns.
177
177
affects_vendor_name = r [0 ]
178
178
affects_product_name = r [1 ]
179
179
affects_version_value = r [2 ]
180
- c = None
181
180
182
181
while len (cpe_list_clone ) != 0 :
182
+ defined = None
183
183
cp = cpe_list_clone .pop ()
184
184
r = cp .split ('||' )
185
185
@@ -194,23 +194,23 @@ def workstation(sql_user, sql_password, sql_host, sql_port, sql_database, tablen
194
194
cp = None
195
195
196
196
# Get deined variables
197
- v = dict (vars ())
197
+ defined = dict (( i , j ) for i , j in filter ( filter_vars , list ( dict ( vars ()). items ()) ))
198
198
199
- if execute (base , tablename , v ):
199
+ if execute (base , tablename , defined ):
200
200
result = result + 1
201
201
else :
202
202
print ('err\n ' )
203
203
base .disconnect ()
204
204
return result
205
205
except (KeyboardInterrupt , SystemExit ):
206
206
print ("Interrupt" )
207
- return 0
207
+ sys . exit ( 0 )
208
208
209
- def _cpeList (sql_user , sql_password , sql_host , sql_port , sql_database , tablename , ID , c , r , variable ):
209
+ def _cpeList (sql_user , sql_password , sql_host , sql_port , sql_database , tablename , r , cpe_list , variable ):
210
210
base = initialize (sql_user , sql_password , sql_host , sql_port )
211
211
base .use_database (sql_database )
212
212
result = 0
213
- cpe_list_clone = list (c )
213
+ cpe_list_clone = list (cpe_list )
214
214
cpe_list_clone .reverse ()
215
215
216
216
affects_vendor_name = r [0 ]
@@ -229,32 +229,39 @@ def _cpeList(sql_user, sql_password, sql_host, sql_port, sql_database, tablename
229
229
sql_host = None
230
230
sql_password = None
231
231
232
+ sql_data = {'sql_user' : False , 'sql_database' : False , 'sql_port' : False , 'sql_host' : False , 'sql_password' : False , 'tablename' : False }
233
+ filter_vars = lambda l : isinstance (l [1 ], str ) and sql_data .get (l [0 ], True ) and l [1 ] is not None
234
+
232
235
while len (cpe_list_clone ) != 0 :
233
236
cp = cpe_list_clone .pop ().split ('||' )
234
237
nodes_cpe_vulnerable = cp [0 ]
235
238
nodes_cpe_cpe22uri = cp [1 ]
236
239
nodes_cpe_cpe23uri = cp [2 ]
237
240
nodes_cpe = cp [3 ]
241
+
238
242
cp = None
239
- v = dict (vars ()).update (variable )
240
- if execute (base , tablename , v ):
243
+ current_variable = dict (vars ())
244
+
245
+ defined = dict ((i , j ) for i , j in filter (filter_vars , list (current_variable .items ())))
246
+ defined .update (variable )
247
+
248
+ if execute (base , tablename , defined ):
241
249
result = result + 1
242
250
else :
243
251
print ('sub-process err\n ' )
244
252
base .disconnect ()
245
253
return result
246
254
247
- def execute (base , tablename , v ):
255
+ def execute (base , tablename , variable ):
248
256
query_header = "("
249
257
query_format = "("
250
258
query_argument = []
251
259
252
260
# automatic insert value
253
- for variable_name in v .keys ():
254
- if isinstance (v [variable_name ], str ) and not variable_name == "tablename" :
255
- query_header += variable_name + ','
256
- query_format += "%s,"
257
- query_argument .append (v [variable_name ])
261
+ for variable_name in variable .keys ():
262
+ query_header += variable_name + ','
263
+ query_format += "%s,"
264
+ query_argument .append (variable [variable_name ])
258
265
259
266
query_header = query_header [:- 1 ]
260
267
query_header += ")"
@@ -466,25 +473,29 @@ def find_key(self, element, pattern):
466
473
return key
467
474
468
475
def table_insert (self , tablename , jsonCollection ):
469
- result = 0
470
- finish = 0
471
- print ("USE_MAX_THREAD_COUNT=%d" % self ._usuge_thread )
472
- worker = SQLWorker (workstation ).initialize (self ._usuge_thread )
473
- self ._worker = worker
474
-
475
- print ("Inserting value ..." )
476
- for jsonElement in jsonCollection :
477
- worker .reserve (self .user , self .password , self .host , self .port , self .database , tablename , jsonElement )
478
-
479
- for ps in worker .as_complete ():
480
- result = result + ps .result ()
481
- finish = finish + 1
482
- sys .stdout .write ("\r Finish CVE(s): %d :: Processed amount: %d" % (finish , result ))
483
- sys .stdout .flush ()
476
+ try :
477
+ result = 0
478
+ finish = 0
479
+ print ("USE_MAX_THREAD_COUNT=%d" % self ._usuge_thread )
480
+ worker = SQLWorker (workstation ).initialize (self ._usuge_thread )
481
+ self ._worker = worker
482
+
483
+ print ("Inserting value ..." )
484
+ for jsonElement in jsonCollection :
485
+ worker .reserve (self .user , self .password , self .host , self .port , self .database , tablename , jsonElement )
486
+
487
+ for ps in worker .as_complete ():
488
+ result = result + ps .result ()
489
+ finish = finish + 1
490
+ sys .stdout .write ("\r Finish CVE(s): %d :: Processed amount: %d" % (finish , result ))
491
+ sys .stdout .flush ()
484
492
485
- print ("\n All data insert completed." )
493
+ print ("\n All data insert completed." )
486
494
487
- self ._worker .terminate ()
495
+ self ._worker .terminate ()
496
+ except (KeyboardInterrupt , SystemExit ):
497
+ self ._worker .terminate ()
498
+ sys .exit (0 )
488
499
489
500
def auto_serialize (self , obj , jsonDefault , o = None ):
490
501
default_type = {str : True ,bool : True ,float : True ,str : True ,int : True }
0 commit comments