def cves(self): log.info('++++++++++++++++++++++++++++++++++++++++++++') log.info('正在获取 [%s] 威胁情报...' % self.NAME_CH()) old_cves = self.load_cache() try: new_cves = self.get_cves() except: new_cves = [] log.error('获取 [%s] 威胁情报异常' % self.NAME_CH()) dao = TCvesDao() sdbc = SqliteSDBC(env.DB_PATH) conn = sdbc.conn() _cves = [] for cve in new_cves: if cve.MD5() not in old_cves: _cves.append(cve) self.to_cache(cve) self.to_db(conn, dao, cve) sdbc.close() log.info('得到 [%s] 最新威胁情报 [%s] 条' % (self.NAME_CH(), len(_cves))) log.info('--------------------------------------------') return _cves
def query_cves(conn, src, limit): dao = TCvesDao() where = "and %s = '%s' order by %s desc limit %d" % (TCves.s_src, src, TCves.s_time, limit) sql = TCvesDao.SQL_SELECT + where beans = [] try: cursor = conn.cursor() cursor.execute(sql) rows = cursor.fetchall() for row in rows: bean = dao._to_bean(row) beans.append(bean) cursor.close() except: log.error("从表 [%s] 查询数据失败" % TCves.table_name) return beans
def cves(self): log.info("++++++++++++++++++++++++++++++++++++++++++++") log.info(f"正在获取 [{self.name_ch}] 威胁情报...") old_cves = self.load_cache() try: new_cves = self.get_cves() except: new_cves = [] log.error(f"获取 [{self.name_ch}] 威胁情报异常") dao = TCvesDao() sdbc = SqliteSDBC(config.DB_PATH) result = [] with sdbc.conn() as conn: for cve in new_cves: if cve.MD5() not in old_cves: result.append(cve) self.to_cache(cve) self.to_db(conn, dao, cve) log.info("得到 [%s] 最新威胁情报 [%s] 条" % (self.name_ch, len(result))) log.info("--------------------------------------------") return result