mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-31 01:35:36 +02:00
Wip command center, Plugins in meta
This commit is contained in:
parent
64dd4f2c2b
commit
5b1498e08c
@ -838,131 +838,6 @@ if (($create != '') || ($view != '')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($deploy_plugin_server) {
|
|
||||||
$setup = db_get_all_rows_in_table('tmetaconsole_setup');
|
|
||||||
// recorremos todos los nodos.
|
|
||||||
foreach ($setup as $key => $value) {
|
|
||||||
// Obtenemos los plugins de la meta.
|
|
||||||
$all_plugin_meta = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
|
|
||||||
// Conectamos con el nodo.
|
|
||||||
if (metaconsole_connect($value) == NOERR) {
|
|
||||||
$values = [];
|
|
||||||
// Obtenemos los plugin del nodo.
|
|
||||||
$node_plugin_server = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
|
|
||||||
foreach ($node_plugin_server as $key2 => $plugin) {
|
|
||||||
// Comprobamos si el id esta meta y nodo al mismo tiempo.
|
|
||||||
$key_exists = array_search($plugin['id'], array_column($all_plugin_meta, 'id'));
|
|
||||||
if ($key_exists !== false) {
|
|
||||||
// Si el plugin tiene el mismo id pero diferentes datos.
|
|
||||||
if ($all_plugin_meta[$key_exists] != $plugin) {
|
|
||||||
$old_id = $plugin['id'];
|
|
||||||
$new_id = ($plugin['id'] + (1000 * $value['id']));
|
|
||||||
|
|
||||||
// El plugin del nodo pasa a tener otro id y otro nombre.
|
|
||||||
$plugin['id'] = $new_id;
|
|
||||||
$plugin['name'] = $plugin['name'].'_'.$value['server_name'];
|
|
||||||
$result_update = db_process_sql_update(
|
|
||||||
'tplugin',
|
|
||||||
[
|
|
||||||
'id' => $new_id,
|
|
||||||
'name' => $plugin['name'],
|
|
||||||
],
|
|
||||||
['id' => $old_id]
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($result_update) {
|
|
||||||
db_process_sql_update(
|
|
||||||
'tagente_modulo',
|
|
||||||
['id_plugin' => $new_id],
|
|
||||||
['id_plugin' => $old_id]
|
|
||||||
);
|
|
||||||
|
|
||||||
db_process_sql_update(
|
|
||||||
'tnetwork_component',
|
|
||||||
['id_plugin' => $new_id],
|
|
||||||
['id_plugin' => $old_id]
|
|
||||||
);
|
|
||||||
|
|
||||||
db_process_sql_update(
|
|
||||||
'tpolicy_modules',
|
|
||||||
['id_plugin' => $new_id],
|
|
||||||
['id_plugin' => $old_id]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// New plugins to insert in the metaconsole.
|
|
||||||
$values[$plugin['id']] = $plugin;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Exists in the node, but does not exist in the metaconsole.
|
|
||||||
$values[$plugin['id']] = $plugin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore to metaconsole.
|
|
||||||
metaconsole_restore_db();
|
|
||||||
|
|
||||||
// Insert in metaconsole.
|
|
||||||
if (!empty($values)) {
|
|
||||||
foreach ($values as $key2 => $val) {
|
|
||||||
// Insert into metaconsole.
|
|
||||||
$result_insert = db_process_sql_insert('tplugin', $val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$all_plugin_meta = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
|
|
||||||
|
|
||||||
foreach ($setup as $key => $value) {
|
|
||||||
if (metaconsole_connect($value) == NOERR) {
|
|
||||||
$all_plugin_node = db_get_all_rows_sql('SELECT SQL_NO_CACHE * FROM tplugin', false, false);
|
|
||||||
|
|
||||||
$array_diff = array_diff(array_column($all_plugin_meta, 'id'), array_column($all_plugin_node, 'id'));
|
|
||||||
foreach ($array_diff as $key2 => $pluginid) {
|
|
||||||
$other = [];
|
|
||||||
$plugin_meta = $all_plugin_meta[$key2];
|
|
||||||
|
|
||||||
unset($plugin_meta['id']);
|
|
||||||
$other['name'] = urlencode($plugin_meta['name']);
|
|
||||||
$other['description'] = urlencode($plugin_meta['description']);
|
|
||||||
$other['max_timeout'] = $plugin_meta['max_timeout'];
|
|
||||||
$other['max_retries'] = $plugin_meta['max_retries'];
|
|
||||||
$other['execute'] = urlencode($plugin_meta['execute']);
|
|
||||||
$other['net_dst_opt'] = $plugin_meta['net_dst_opt'];
|
|
||||||
$other['net_port_opt'] = $plugin_meta['net_port_opt'];
|
|
||||||
$other['user_opt'] = $plugin_meta['user_opt'];
|
|
||||||
$other['pass_opt'] = $plugin_meta['pass_opt'];
|
|
||||||
$other['plugin_type'] = $plugin_meta['plugin_type'];
|
|
||||||
$other['macros'] = urlencode($plugin_meta['macros']);
|
|
||||||
$other['parameters'] = urlencode($plugin_meta['parameters']);
|
|
||||||
$other = implode('%7E', $other);
|
|
||||||
|
|
||||||
$auth_token = json_decode($value['auth_token']);
|
|
||||||
$url = $value['server_url'].'include/api.php?op=set&op2=push_plugin'.'&id='.$pluginid.'&other_mode=url_encode_separator_%7E&other='.$other."&apipass=$auth_token->api_password"."&user=$auth_token->console_user&pass=$auth_token->console_password";
|
|
||||||
$file_path = realpath($plugin_meta['execute']);
|
|
||||||
$post = '';
|
|
||||||
if (file_exists($file_path)) {
|
|
||||||
$post = ['file' => curl_file_create($file_path)];
|
|
||||||
}
|
|
||||||
|
|
||||||
$curlObj = curl_init();
|
|
||||||
curl_setopt($curlObj, CURLOPT_URL, $url);
|
|
||||||
curl_setopt($curlObj, CURLOPT_POST, 1);
|
|
||||||
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $post);
|
|
||||||
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
|
|
||||||
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, false);
|
|
||||||
|
|
||||||
$api_result = curl_exec($curlObj);
|
|
||||||
curl_close($curlObj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// restore to metaconsole
|
|
||||||
metaconsole_restore_db();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If not edition or insert, then list available plugins
|
// If not edition or insert, then list available plugins
|
||||||
$rows = db_get_all_rows_sql('SELECT * FROM tplugin ORDER BY name');
|
$rows = db_get_all_rows_sql('SELECT * FROM tplugin ORDER BY name');
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user