Added agent as name parameter in create_agent CLI function
Former-commit-id: 1395aed8a79b8e26836ca523d457f939a006f5a1
This commit is contained in:
parent
32f665c761
commit
44f9a73a81
|
@ -35,6 +35,8 @@ use threads;
|
|||
|
||||
# Used to calculate the MD5 checksum of a string
|
||||
use constant MOD232 => 2**32;
|
||||
# 2 to the power of 32.
|
||||
use constant POW232 => 2**32;
|
||||
|
||||
# UTF-8 flags deletion from multibyte characters when files are opened.
|
||||
use open OUT => ":utf8";
|
||||
|
@ -122,6 +124,7 @@ our @EXPORT = qw(
|
|||
check_server_threads
|
||||
start_server_thread
|
||||
stop_server_threads
|
||||
generate_agent_name_hash
|
||||
);
|
||||
|
||||
# ID of the different servers
|
||||
|
@ -1813,6 +1816,146 @@ sub stop_server_threads {
|
|||
@ServerThreads = ();
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Generate random hash as agent name.
|
||||
################################################################################
|
||||
sub generate_agent_name_hash {
|
||||
my ($agent_alias, $server_ip) = @_;
|
||||
return sha256(join('|', ($agent_alias, $server_ip, time(), sprintf("%04d", rand(10000)))));
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Return the SHA256 checksum of the given string as a hex string.
|
||||
# Pseudocode from: http://en.wikipedia.org/wiki/SHA-2#Pseudocode
|
||||
###############################################################################
|
||||
my @K2 = (
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
|
||||
0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
|
||||
0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
||||
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
|
||||
0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
||||
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
|
||||
0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
||||
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
|
||||
0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
||||
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
||||
);
|
||||
sub sha256 {
|
||||
my $str = shift;
|
||||
|
||||
# No input!
|
||||
if (!defined($str)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
# Note: All variables are unsigned 32 bits and wrap modulo 2^32 when
|
||||
# calculating.
|
||||
|
||||
# First 32 bits of the fractional parts of the square roots of the first 8
|
||||
# primes.
|
||||
my $h0 = 0x6a09e667;
|
||||
my $h1 = 0xbb67ae85;
|
||||
my $h2 = 0x3c6ef372;
|
||||
my $h3 = 0xa54ff53a;
|
||||
my $h4 = 0x510e527f;
|
||||
my $h5 = 0x9b05688c;
|
||||
my $h6 = 0x1f83d9ab;
|
||||
my $h7 = 0x5be0cd19;
|
||||
|
||||
# Pre-processing.
|
||||
my $msg = unpack ("B*", pack ("A*", $str));
|
||||
my $bit_len = length ($msg);
|
||||
|
||||
# Append "1" bit to message.
|
||||
$msg .= '1';
|
||||
|
||||
# Append "0" bits until message length in bits = 448 (mod 512).
|
||||
$msg .= '0' while ((length ($msg) % 512) != 448);
|
||||
|
||||
# Append bit /* bit, not byte */ length of unpadded message as 64-bit
|
||||
# big-endian integer to message.
|
||||
$msg .= unpack ("B32", pack ("N", $bit_len >> 32));
|
||||
$msg .= unpack ("B32", pack ("N", $bit_len));
|
||||
|
||||
# Process the message in successive 512-bit chunks.
|
||||
for (my $i = 0; $i < length ($msg); $i += 512) {
|
||||
|
||||
my @w;
|
||||
my $chunk = substr ($msg, $i, 512);
|
||||
|
||||
# Break chunk into sixteen 32-bit big-endian words.
|
||||
for (my $j = 0; $j < length ($chunk); $j += 32) {
|
||||
push (@w, unpack ("N", pack ("B32", substr ($chunk, $j, 32))));
|
||||
}
|
||||
|
||||
# Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array:
|
||||
for (my $i = 16; $i < 64; $i++) {
|
||||
my $s0 = rightrotate($w[$i - 15], 7) ^ rightrotate($w[$i - 15], 18) ^ ($w[$i - 15] >> 3);
|
||||
my $s1 = rightrotate($w[$i - 2], 17) ^ rightrotate($w[$i - 2], 19) ^ ($w[$i - 2] >> 10);
|
||||
$w[$i] = ($w[$i - 16] + $s0 + $w[$i - 7] + $s1) % POW232;
|
||||
}
|
||||
|
||||
# Initialize working variables to current hash value.
|
||||
my $a = $h0;
|
||||
my $b = $h1;
|
||||
my $c = $h2;
|
||||
my $d = $h3;
|
||||
my $e = $h4;
|
||||
my $f = $h5;
|
||||
my $g = $h6;
|
||||
my $h = $h7;
|
||||
|
||||
# Compression function main loop.
|
||||
for (my $i = 0; $i < 64; $i++) {
|
||||
my $S1 = rightrotate($e, 6) ^ rightrotate($e, 11) ^ rightrotate($e, 25);
|
||||
my $ch = ($e & $f) ^ ((0xFFFFFFFF & (~ $e)) & $g);
|
||||
my $temp1 = ($h + $S1 + $ch + $K2[$i] + $w[$i]) % POW232;
|
||||
my $S0 = rightrotate($a, 2) ^ rightrotate($a, 13) ^ rightrotate($a, 22);
|
||||
my $maj = ($a & $b) ^ ($a & $c) ^ ($b & $c);
|
||||
my $temp2 = ($S0 + $maj) % POW232;
|
||||
|
||||
$h = $g;
|
||||
$g = $f;
|
||||
$f = $e;
|
||||
$e = ($d + $temp1) % POW232;
|
||||
$d = $c;
|
||||
$c = $b;
|
||||
$b = $a;
|
||||
$a = ($temp1 + $temp2) % POW232;
|
||||
}
|
||||
|
||||
# Add the compressed chunk to the current hash value.
|
||||
$h0 = ($h0 + $a) % POW232;
|
||||
$h1 = ($h1 + $b) % POW232;
|
||||
$h2 = ($h2 + $c) % POW232;
|
||||
$h3 = ($h3 + $d) % POW232;
|
||||
$h4 = ($h4 + $e) % POW232;
|
||||
$h5 = ($h5 + $f) % POW232;
|
||||
$h6 = ($h6 + $g) % POW232;
|
||||
$h7 = ($h7 + $h) % POW232;
|
||||
}
|
||||
|
||||
# Produce the final hash value (big-endian).
|
||||
return unpack ("H*", pack ("N", $h0)) .
|
||||
unpack ("H*", pack ("N", $h1)) .
|
||||
unpack ("H*", pack ("N", $h2)) .
|
||||
unpack ("H*", pack ("N", $h3)) .
|
||||
unpack ("H*", pack ("N", $h4)) .
|
||||
unpack ("H*", pack ("N", $h5)) .
|
||||
unpack ("H*", pack ("N", $h6)) .
|
||||
unpack ("H*", pack ("N", $h7));
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
# Rotate a 32-bit number a number of bits to the right.
|
||||
###############################################################################
|
||||
sub rightrotate {
|
||||
my ($x, $c) = @_;
|
||||
|
||||
return (0xFFFFFFFF & ($x << (32 - $c))) | ($x >> $c);
|
||||
}
|
||||
|
||||
# End of function declaration
|
||||
# End of defined Code
|
||||
|
||||
|
|
|
@ -996,21 +996,29 @@ sub cli_enable_group() {
|
|||
##############################################################################
|
||||
|
||||
sub cli_create_agent() {
|
||||
my ($agent_name,$os_name,$group_name,$server_name,$address,$description,$interval) = @ARGV[2..8];
|
||||
my ($agent_name,$os_name,$group_name,$server_name,$address,$description,$interval, $alias_as_name) = @ARGV[2..9];
|
||||
|
||||
print_log "[INFO] Creating agent '$agent_name'\n\n";
|
||||
|
||||
$address = '' unless defined ($address);
|
||||
$description = (defined ($description) ? safe_input($description) : '' ); # safe_input() might be better at pandora_create_agent() (when passing 'description' to db_insert())
|
||||
$interval = 300 unless defined ($interval);
|
||||
|
||||
$alias_as_name = 1 unless defined ($alias_as_name);
|
||||
my $agent_alias = undef;
|
||||
|
||||
if (!$alias_as_name) {
|
||||
$agent_alias = $agent_name;
|
||||
$agent_name = generate_agent_name_hash($agent_alias, $conf{'dbhost'});
|
||||
}
|
||||
|
||||
my $id_group = get_group_id($dbh,$group_name);
|
||||
exist_check($id_group,'group',$group_name);
|
||||
my $os_id = get_os_id($dbh,$os_name);
|
||||
exist_check($id_group,'operating system',$group_name);
|
||||
my $agent_exists = get_agent_id($dbh,$agent_name);
|
||||
non_exist_check($agent_exists, 'agent name', $agent_name);
|
||||
pandora_create_agent ($conf, $server_name, $agent_name, $address, $id_group, 0, $os_id, $description, $interval, $dbh);
|
||||
pandora_create_agent ($conf, $server_name, $agent_name, $address, $id_group, 0, $os_id, $description, $interval, $dbh,
|
||||
undef, undef, undef, undef, undef, undef, undef, undef, $agent_alias);
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
|
@ -5697,7 +5705,7 @@ sub pandora_manage_main ($$$) {
|
|||
cli_enable_group();
|
||||
}
|
||||
elsif ($param eq '--create_agent') {
|
||||
param_check($ltotal, 7, 3);
|
||||
param_check($ltotal, 8, 4);
|
||||
cli_create_agent();
|
||||
}
|
||||
elsif ($param eq '--delete_agent') {
|
||||
|
|
Loading…
Reference in New Issue