{'id'})) { unlink($cmd['f']); die; } if (isset($cmd['debug'])) { print_r($nasl); } $plugin_id = 0; $file_date = null; $db->help->select("sagacity.nessus_plugins", array('plugin_id', 'file_date'), [ [ 'field' => 'plugin_id', 'op' => '=', 'value' => $nasl->id ] ]); if ($row = $db->help->execute()) { $plugin_id = $row['plugin_id']; $file_date = DateTime::createFromFormat("U", $row['file_date']); } if (($plugin_id && !is_a($file_date, "DateTime")) || (is_a($file_date, "DateTime") && isset($nasl->last_modification) && is_a($nasl->last_modification, "DateTime") && $file_date->format("U") < $nasl->last_modification->format("U"))) { file_put_contents(LOG_PATH . "/nessus_plugins.log", "Updating {$nasl->id}\n", FILE_APPEND); $db->help->update("sagacity.nessus_plugins", [ 'file_name' => basename($cmd['f']), 'file_date' => (is_a($file_date, "DateTime") ? $file_date->format("U") : filemtime($cmd['f']))], [ [ 'field' => 'plugin_id', 'op' => '=', 'value' => $nasl->id ] ]); if (!isset($cmd['debug'])) { if (!$db->help->execute()) { throw(new Exception("Failed to update the plugin {$nasl->id}", E_WARNING)); } } else { print "$db->help->sql\n"; } } elseif (!$plugin_id) { file_put_contents(LOG_PATH . "/nessus_plugins.log", "Inserting {$nasl->id}\n", FILE_APPEND); $params = [ 'plugin_id' => $nasl->id, 'oid' => isset($nasl->oid) ? $nasl->oid : null, 'name' => isset($nasl->name) ? $nasl->name : null, 'copyright' => isset($nasl->copyright) ? $nasl->copyright : null, 'version' => isset($nasl->rev) ? $nasl->rev : null, 'file_name' => basename($cmd['f']), 'file_date' => isset($nasl->last_modification) && is_a($nasl->last_modification, "DateTime") ? $nasl->last_modification->format("U") : null ]; $db->help->insert("sagacity.nessus_plugins", $params, true); if (!isset($cmd['debug'])) { if (!$db->help->execute()) { throw(new Exception("Failed to insert a new plugin {$nasl->id}", E_WARNING)); } } else { print "$db->help->sql\n"; } } else { file_put_contents(LOG_PATH . "/nessus_plugins.log", "No changes to plugin {$nasl->id}\n", FILE_APPEND); } $params = array(); if (isset($nasl->ref)) { foreach ($nasl->ref as $key => $refs) { if (is_array($refs)) { foreach ($refs as $ref) { $params[] = [ $nasl->id, $key, $ref ]; } } else { $params[] = [ $nasl->id, $key, $refs ]; } } } unset($nasl->ref); unset($nasl->oid); unset($nasl->name); unset($nasl->copyright); unset($nasl->rev); unset($nasl->last_modification); foreach ((array) $nasl as $field => $val) { if (($field == 'id') || (is_array($val) && count($val) > 1)) { continue; } elseif (is_array($val) && count($val) == 1 && isset($val[0])) { $val = $val[0]; } $params[] = [ $nasl->id, $field, $val ]; } if (count($params)) { $db->help->extended_insert("sagacity.nessus_meta", [ 'plugin_id', 'type', 'val' ], $params, true); } if (!isset($cmd['debug'])) { $db->help->execute(); } else { print $db->help->sql . PHP_EOL; } if (!isset($cmd['debug'])) { unlink($cmd['f']); } function usage() { print <<