55 lines
1.2 KiB
PHP
55 lines
1.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* File: populate_cve_web.php
|
|
* Author: Ryan Prather
|
|
* Purpose: Find all CVE files, read entire file and add to database for later retrieval
|
|
* Created: Sep 1, 2016
|
|
*
|
|
* Portions Copyright 2016: Cyber Perspectives, All rights reserved
|
|
* Released under the Apache v2.0 License
|
|
*
|
|
* See license.txt for details
|
|
*
|
|
* Change Log:
|
|
* - Sep 1, 2016 - File created
|
|
*/
|
|
include_once 'config.inc';
|
|
include_once 'database.inc';
|
|
include_once 'helper.inc';
|
|
|
|
$db = new mysqli(DB_SERVER, "web", db::decrypt_pwd());
|
|
|
|
set_time_limit(0);
|
|
|
|
$files = glob("../reference/cve/*.xml");
|
|
|
|
$count = 0;
|
|
$start_sql = $sql = "INSERT IGNORE INTO `reference`.`cve_web` (`cve_id`,`xml`) VALUES ";
|
|
|
|
foreach ($files as $file) {
|
|
print ".";
|
|
$xml = new DOMDocument();
|
|
$xml->load($file);
|
|
|
|
$cve_id = getValue($xml, "/item/@name");
|
|
if (empty($cve_id)) {
|
|
die;
|
|
}
|
|
|
|
$sql .= "(" .
|
|
"'" . $db->real_escape_string($cve_id) . "'," .
|
|
"'" . $db->real_escape_string($xml->saveXML()) . "'),";
|
|
|
|
$count++;
|
|
|
|
if ($count % 100 == 0 || strlen($sql) > 5000000) {
|
|
if (!$db->real_query(substr($sql, -1))) {
|
|
error_log($db->error);
|
|
Sagacity_Error::sql_handler($sql);
|
|
die;
|
|
}
|
|
print "\t$count\t" . strlen($sql) . PHP_EOL;
|
|
$sql = $start_sql;
|
|
}
|
|
} |