mirror of
https://github.com/percona/percona-toolkit.git
synced 2025-09-10 05:00:45 +00:00
Merge pull request #303 from percona/PT-1479
PMM-1479 Switched to UUID for version check
This commit is contained in:
@@ -5373,15 +5373,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -5598,6 +5599,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -5634,7 +5675,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4711,15 +4711,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4936,6 +4937,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4972,7 +5013,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -3775,15 +3775,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4000,6 +4001,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4036,7 +4077,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4328,15 +4328,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4553,6 +4554,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4589,7 +4630,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4379,15 +4379,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4604,6 +4605,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4640,7 +4681,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
57
bin/pt-find
57
bin/pt-find
@@ -3093,15 +3093,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -3318,6 +3319,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -3354,7 +3395,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -3280,15 +3280,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -3505,6 +3506,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -3541,7 +3582,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4980,15 +4980,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -5205,6 +5206,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -5241,7 +5282,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -5777,15 +5777,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -6002,6 +6003,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -6038,7 +6079,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
57
bin/pt-kill
57
bin/pt-kill
@@ -6185,15 +6185,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -6410,6 +6411,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -6446,7 +6487,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -7413,15 +7413,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -7638,6 +7639,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -7674,7 +7715,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -12446,15 +12446,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -12671,6 +12672,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -12707,7 +12748,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -3597,15 +3597,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -3822,6 +3823,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -3858,7 +3899,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4306,15 +4306,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4531,6 +4532,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4567,7 +4608,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -797,15 +797,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -1022,6 +1023,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -1058,7 +1099,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -9215,15 +9215,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -9440,6 +9441,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -9476,7 +9517,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4086,15 +4086,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4311,6 +4312,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4347,7 +4388,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -4504,15 +4504,16 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -4729,6 +4730,46 @@ sub get_instance_id {
|
||||
}
|
||||
|
||||
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
|
||||
sub pingback {
|
||||
my (%args) = @_;
|
||||
my @required_args = qw(url instances);
|
||||
@@ -4765,7 +4806,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -48,6 +48,14 @@ eval {
|
||||
require HTTP::Micro;
|
||||
};
|
||||
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
# Return the version check file used to keep track of
|
||||
# MySQL instance that have been checked and when. Some
|
||||
# systems use random tmp dirs; we don't want that else
|
||||
@@ -55,13 +63,6 @@ eval {
|
||||
# per system is the goal, so prefer global sys dirs first.
|
||||
{
|
||||
my $file = 'percona-version-check';
|
||||
my $home = $ENV{HOME} || $ENV{HOMEPATH} || $ENV{USERPROFILE} || '.';
|
||||
my @vc_dirs = (
|
||||
'/etc/percona',
|
||||
'/etc/percona-toolkit',
|
||||
'/tmp',
|
||||
"$home",
|
||||
);
|
||||
|
||||
sub version_check_file {
|
||||
foreach my $dir ( @vc_dirs ) {
|
||||
@@ -326,6 +327,49 @@ sub get_instance_id {
|
||||
return $name, $id;
|
||||
}
|
||||
|
||||
|
||||
# This function has been implemented solely to be able to count individual
|
||||
# Toolkit users for statistics. It uses a random UUID, no client info is
|
||||
# being gathered nor stored
|
||||
sub get_uuid {
|
||||
my $uuid_file = '/.percona-toolkit.uuid';
|
||||
foreach my $dir (@vc_dirs) {
|
||||
my $filename = $dir.$uuid_file;
|
||||
my $uuid=_read_uuid($filename);
|
||||
return $uuid if $uuid;
|
||||
}
|
||||
|
||||
my $filename = $ENV{"HOME"} . $uuid_file;
|
||||
my $uuid = _generate_uuid();
|
||||
|
||||
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
|
||||
print $fh $uuid;
|
||||
close $fh;
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
sub _generate_uuid {
|
||||
return sprintf+($}="%04x")."$}-$}-$}-$}-".$}x3,map rand 65537,0..7;
|
||||
}
|
||||
|
||||
sub _read_uuid {
|
||||
my $filename = shift;
|
||||
my $fh;
|
||||
|
||||
eval {
|
||||
open($fh, '<:encoding(UTF-8)', $filename);
|
||||
};
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
my $uuid;
|
||||
eval { $uuid = <$fh>; };
|
||||
return if ($EVAL_ERROR);
|
||||
|
||||
chomp $uuid;
|
||||
return $uuid;
|
||||
}
|
||||
|
||||
# #############################################################################
|
||||
# Protocol handlers
|
||||
# #############################################################################
|
||||
@@ -387,7 +431,7 @@ sub pingback {
|
||||
my $client_content = encode_client_response(
|
||||
items => $items,
|
||||
versions => $versions,
|
||||
general_id => md5_hex( hostname() ),
|
||||
general_id => get_uuid(),
|
||||
);
|
||||
|
||||
my $client_response = {
|
||||
|
@@ -201,7 +201,7 @@ is_deeply(
|
||||
# Former Pingback tests
|
||||
# #############################################################################
|
||||
|
||||
my $general_id = md5_hex( hostname() );
|
||||
my $general_id = VersionCheck::get_uuid();
|
||||
my $master_id; # the instance ID, _not_ 12345 etc.
|
||||
my $slave1_id; # the instance ID, _not_ 12346 etc.
|
||||
my ($mysql_ver, $mysql_distro);
|
||||
@@ -679,6 +679,22 @@ foreach my $tool ( @vc_tools ) {
|
||||
);
|
||||
}
|
||||
|
||||
my $should_remove_uuid_file;
|
||||
my $home_uuid_file = $ENV{"HOME"} . "/.percona-toolkit.uuid";
|
||||
|
||||
if ( ! -e $home_uuid_file ) {
|
||||
$should_remove_uuid_file = 1;
|
||||
}
|
||||
|
||||
my $uuid = VersionCheck::get_uuid();
|
||||
is (
|
||||
length($uuid),
|
||||
36,
|
||||
"Have a valid UUID4",
|
||||
);
|
||||
|
||||
unlink $home_uuid_file if $should_remove_uuid_file;
|
||||
|
||||
# #############################################################################
|
||||
# Done.
|
||||
# #############################################################################
|
||||
|
Reference in New Issue
Block a user