User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dbdumper:validation [2019-10-01 10:57]
ziggi created
dbdumper:validation [2020-02-15 00:57]
Line 1: Line 1:
- 
-<code perl > 
-#​!/​usr/​bin/​env perl 
- 
-package aAgentI; 
- 
-use strict; 
-use warnings; 
-use Mojo::​UserAgent;​ 
-use Mojo::JSON qw(encode_json decode_json);​ 
-use Mojo::Util qw(dumper); 
- 
-sub new { 
-    my ($class, $host, $login, $password) = @_; 
-    my $ua = Mojo::​UserAgent->​new;​ 
-    my $self = { 
-        host => $host, 
-        login => $login, 
-        password => $password, 
-        port => '​8184',​ 
-        ua => $ua 
-    }; 
-    bless $self, $class; 
-    return $self; 
-} 
- 
-sub ua { 
-    my ($self, $ua) = @_; 
-    return $self->​{ua} unless $ua; 
-    $self->​{ua} = $ua; 
-    $self; 
-} 
- 
-sub host { 
-    my ($self, $host) = @_; 
-    return $self->​{host} unless $host; 
-    $self->​{host} = $host; 
-    $self; 
-} 
- 
-sub login { 
-    my ($self, $login) = @_; 
-    return $self->​{login} unless $login; 
-    $self->​{login} = $login; 
-    $self; 
-} 
- 
-sub password { 
-    my ($self, $password) = @_; 
-    return $self->​{password} unless $password; 
-    $self->​{password} = $password; 
-    $self; 
-} 
- 
-sub port { 
-    my ($self, $port) = @_; 
-    return $self->​{port} unless $port; 
-    $self->​{port} = $port; 
-    $self; 
-} 
- 
- 
-sub rpc { 
-    my ($self, ​ $call, %args) = @_; 
-    return undef unless $call; 
-    return undef unless $call =~ /^\//; 
- 
-    my $host = $self->​host;​ 
-    my $login = $self->​login;​ 
-    my $password = $self->​password;​ 
-    my $port = $self->​port;​ 
- 
-    my $url = "​https://​$login:​$password\@$host:​$port$call";​ 
-    $url .= "?"​ if %args; 
-    foreach my $key (sort keys %args) { 
-        my $value = $args{$key};​ 
-        next unless $value; 
-        $url .= "&​$key=$value";​ 
-    } 
- 
-    $url =~ s/​\?&/​\?/;​ 
-    my $res; 
-    eval { 
-        my $tx = $self->​ua->​get($url);​ 
-        $res = $tx->​result->​body;​ 
-    }; 
-    return undef if $@; 
-    my $j = decode_json($res);​ 
-    return $j if $j; 
-    undef; 
-} 
- 
- 
-sub alive { 
-    my $self = shift; 
-    my $res = $self->​rpc('/​hello'​);​ 
-    return undef unless $res; 
-    return 1 if  $res->​{'​message'​} eq '​hello';​ 
-    return undef; 
-} 
- 
-sub db_list { 
-    my $self = shift; 
-    $self->​rpc('/​db/​list'​);​ 
-} 
- 
-sub db_profile { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​db/​profile',​ name => $name); 
-} 
- 
-sub db_create { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​db/​create',​ name => $name); 
-} 
- 
-sub db_copy { 
-    my ($self, $name, $new_name) = @_; 
-    $self->​rpc('/​db/​copy',​ name => $name, new_name => $new_name); 
-} 
- 
-sub db_drop { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​db/​drop',​ name => $name); 
-} 
- 
-sub db_rename { 
-    my ($self, $name, $new_name) = @_; 
-    $self->​rpc('/​db/​rename',​ name => $name, new_name => $new_name); 
-} 
- 
-sub db_owner { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​db/​drop',​ name => $name); 
-} 
- 
- 
-sub user_list { 
-    my $self = shift; 
-    $self->​rpc('/​user/​list'​);​ 
-} 
- 
-sub user_profile { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​user/​profile',​ name => $name); 
-} 
- 
-sub user_create { 
-    my ($self, $name, $password) = @_; 
-    $self->​rpc('/​user/​create',​ name => $name, password => $password); 
-} 
- 
-sub user_drop { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​user/​drop',​ name => $name); 
-} 
- 
-sub user_rename { 
-    my ($self, $name, $new_name) = @_; 
-    $self->​rpc('/​user/​rename',​ name => $name, new_name => $new_name); 
-} 
- 
-sub user_password { 
-    my ($self, $name, $password) = @_; 
-    $self->​rpc('/​user/​password',​ name => $name, password => $password); 
-} 
- 
-sub db_dump { 
-    my ($self, $name, $store, $login, $password, $cb, $job_id, $magic) = @_; 
-    $self->​rpc('/​db/​dump',​ 
-                        name => $name, 
-                        store => $store, 
-                        login => $login, 
-                        password => $password, 
-                        cb => $cb, 
-                        job_id => $job_id, 
-                        magic => $magic); 
-} 
- 
-sub db_restore { 
-    my ($self, $store, $login, $password, $file, $new_name, $cb, $job_id, $magic) = @_; 
-    $self->​rpc('/​db/​restore',​ 
-                        store => $store, 
-                        login => $login, 
-                        password => $password, 
-                        file => $file, 
-                        new_name => $new_name, 
-                        cb => $cb, 
-                        job_id => $job_id, 
-                        magic => $magic); 
-} 
- 
- 
-1; 
- 
-use strict; 
-use warnings; 
-use Mojo::Util qw(dumper); 
-use Scalar::​Util '​blessed';​ 
- 
-my $a = aAgentI->​new("​pgdbxxxx.xxxxx.us",​ "​xxxxxx",​ "​xxxxxxxxxxx"​);​ 
-#print ref $a; 
- 
- 
-#no strict '​refs';​ 
-#print dumper @{'​aAgentI'​ . '::'​};​ 
- 
- 
-#my $a = aAgentI->​new("​thx.xxxxxx.org",​ "​master",​ "​password"​);​ 
- 
-print dumper $a->​rpc('/​hello'​);​ 
- 
-#print dumper $a->​db_list;​ 
-#print dumper $a->​db_create('​asterisk_copy'​);​ 
-#print dumper $a->​db_profile('​asterisk_copy'​);​ 
- 
-##print dumper $a->​db_profile('​kpi_xxx1'​)->​{profile};​ 
- 
-#print dumper $a->​db_drop('​kpi_xxxx_copy'​);​ 
-#print dumper $a->​db_copy('​kpixxx',​ '​kpi_xxxx_copy'​);​ 
-#print dumper $a->​db_copy('​kpixxx',​ '​kpi_xxx_copy'​);​ 
- 
-#print dumper $a->​db_profile('​kpi_xxx'​);​ 
-#print dumper $a->​db_profile('​kpi_xxxx_copy'​);​ 
-#print dumper $a->​db_drop('​kpi_xxx_copy'​);​ 
-#print dumper $a->​db_drop('​asterisk_copy'​);​ 
-#print dumper $a->​db_drop('​asterisk_copy_2'​);​ 
- 
-#print dumper $a->​db_create('​asterisk_copy'​);​ 
-#print dumper $a->​db_copy('​asterisk_copy',​ '​asterisk_copy_2'​);​ 
-#print dumper $a->​db_profile('​asterisk_copy_2'​);​ 
-#print dumper $a->​db_drop('​asterisk_copy_2'​);​ 
-#print dumper $a->​db_profile('​asterisk_copy_2'​);​ 
- 
-#print dumper $a->​user_profile('​asterisk'​);​ 
-#print dumper $a->​user_create('​asterisk_2',​ '​123456'​);​ 
-#print dumper $a->​user_profile('​asterisk_2'​);​ 
-#print dumper $a->​user_rename('​asterisk_2',​ '​asterisk_222'​);​ 
-#print dumper $a->​user_profile('​asterisk_222'​);​ 
-#print dumper $a->​user_drop('​asterisk_222'​);​ 
-#print dumper $a->​user_drop('​asterisk_2'​);​ 
- 
-#print dumper $a->​db_profile('​asterisk_copy'​);​ 
-#print dumper $a->​db_dump('​asterisk',​ '​th.xxxx.org',​ '​master',​ '​password',​ '​th.xxxx.org',​ '​123',​ '​magic'​);​ 
- 
-#print dumper $a->​db_restore( '​thx.xxxxx.org',​ '​master',​ '​password',​ 
-#                                     '​asterisk_copy--20171221-181222-MSK--127.0.0.1.sqlz',​ 
-#                                      '​asterisk_copy333'​ , '​thx.xxxxx.org',​ '​123',​ '​magic'​);​ 
- 
- 
-#my $list = $a->​db_list->​{list};​ 
- 
-#foreach my $pro (@$list) { 
-#    my $name = $pro->​{name};​ 
-#    print dumper $a->​db_dump($name,​ '​thx.xxxxx.org',​ '​login',​ '​password',​ '​thx.xxxx.org',​ '​123',​ '​magic'​);​ 
-#} 
- 
-#print dumper $a->​db_dump('​asterisk_copy',​ '​thx.xxxx.org',​ '​login',​ '​password',​ '​thx.xxxx.org',​ '​123',​ '​magic'​);​ 
- 
-#my $a = aAgentI->​new("​pgdb-xxxx.lazurit.us",​ "​master",​ "​password"​);​ 
-#if ($a->​alive) { 
-#    my $list = $a->​db_list->​{list};​ 
-#    foreach my $db (@$list) { 
-#        my $name = $db->​{name};​ 
-#        my $size = $db->​{size};​ 
-#        my $owner = $db->​{owner};​ 
-#        my $nb = $db->​{numbackends};​ 
-#        print "$name $size $owner $nb\n";​ 
-#    } 
-#} 
- 
-#EOF 
-</​code>​ 
- 
- 
-<code perl astorei.pl>​ 
-#​!/​usr/​bin/​env perl 
- 
-#​-------------- 
-#--- STOREI --- 
-#​-------------- 
- 
-package aStoreI; 
- 
-use strict; 
-use warnings; 
-use Mojo::​UserAgent;​ 
-use Mojo::JSON qw(encode_json decode_json);​ 
-use Mojo::Util qw(dumper); 
- 
-sub new { 
-    my ($class, $host, $login, $password) = @_; 
-    my $ua = Mojo::​UserAgent->​new;​ 
- 
-    $ua->​max_response_size(10*1024*1024*1024);​ 
-    $ua->​inactivity_timeout(60);​ 
-    $ua->​connect_timeout(60);​ 
-    $ua->​request_timeout(2*60*60);​ 
- 
-    my $self = { 
-        host => $host, 
-        login => $login, 
-        password => $password, 
-        port => '​8184',​ 
-        ua => $ua 
-    }; 
-    bless $self, $class; 
-    return $self; 
-} 
- 
-sub ua { 
-    my ($self, $ua) = @_; 
-    return $self->​{ua} unless $ua; 
-    $self->​{ua} = $ua; 
-    $self; 
-} 
- 
-sub host { 
-    my ($self, $host) = @_; 
-    return $self->​{host} unless $host; 
-    $self->​{host} = $host; 
-    $self; 
-} 
- 
-sub login { 
-    my ($self, $login) = @_; 
-    return $self->​{login} unless $login; 
-    $self->​{login} = $login; 
-    $self; 
-} 
- 
-sub password { 
-    my ($self, $password) = @_; 
-    return $self->​{password} unless $password; 
-    $self->​{password} = $password; 
-    $self; 
-} 
- 
-sub port { 
-    my ($self, $port) = @_; 
-    return $self->​{port} unless $port; 
-    $self->​{port} = $port; 
-    $self; 
-} 
- 
- 
-sub rpc { 
-    my ($self, ​ $call, %args) = @_; 
-    return undef unless $call; 
-    return undef unless $call =~ /^\//; 
- 
-    my $host = $self->​host;​ 
-    my $login = $self->​login;​ 
-    my $password = $self->​password;​ 
-    my $port = $self->​port;​ 
- 
-    my $url = "​https://​$login:​$password\@$host:​$port$call";​ 
-    $url .= "?"​ if %args; 
-    foreach my $key (sort keys %args) { 
-        my $value = $args{$key};​ 
-        next unless $value; 
-        $url .= "&​$key=$value";​ 
-    } 
- 
-    $url =~ s/​\?&/​\?/;​ 
-    my $res; 
-    eval { 
-        my $tx = $self->​ua->​get($url);​ 
-        $res = $tx->​result->​body;​ 
-    }; 
-    return undef if $@; 
-    my $j = decode_json($res);​ 
-} 
- 
- 
-sub alive { 
-    my $self = shift; 
-    my $res = $self->​rpc('/​hello'​);​ 
-    return 1 if  $res->​{'​message'​} eq '​hello';​ 
-    return undef; 
-} 
- 
-sub data_list { 
-    my $self = shift; 
-    $self->​rpc('/​data/​list'​);​ 
-} 
- 
-sub data_profile { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​data/​profile',​ name => $name); 
-} 
- 
-sub data_delete { 
-    my ($self, $name) = @_; 
-    $self->​rpc('/​data/​delete',​ name => $name); 
-} 
- 
-sub store_profile { 
-    my ($self) = @_; 
-    $self->​rpc('/​store/​profile'​);​ 
-} 
- 
- 
-sub data_get { 
-    my ($self, $name, $dir) = @_; 
- 
-    return undef unless $dir; 
-    return undef unless -w $dir; 
- 
-    my $host = $self->​host;​ 
-    my $login = $self->​login;​ 
-    my $password = $self->​password;​ 
-    my $port = $self->​port;​ 
- 
-    $ENV{MOJO_TMPDIR} = $dir; 
- 
-    my $tx = $self->​ua->​get("​https://​$login:​$password\@$host:​$port/​data/​get?​name=$name"​);​ 
-    my $res = $tx->​result;​ 
- 
-    my $type = $res->​headers->​content_type || '';​ 
-    my $disp = $res->​headers->​content_disposition || '';​ 
-    my $file = "​$dir/​$name";​ 
- 
-    if ($type =~ /name=/ or $disp =~ /​filename=/​) { 
-        my ($filename) = $disp =~ /​filename=\"​(.*)\"/;​ 
-        rename $file, "​$file.bak"​ if -r $file; 
-        $res->​content->​asset->​move_to($file);​ 
-    } 
-    return undef unless -r $file; 
-    $file; 
-} 
- 
-sub data_put { 
-    my ($self, $file) = @_; 
- 
-    return undef unless $file; 
-    return undef unless -r $file; 
- 
-    my $host = $self->​host;​ 
-    my $login = $self->​login;​ 
-    my $password = $self->​password;​ 
-    my $port = $self->​port;​ 
- 
-    my $url = "​https://​$login:​$password\@$host:​$port/​data/​put";​ 
-    my $res; 
-    eval { 
-        my $tx = $self->​ua->​post($url => form => {data => { file => $file } }); 
-        $res = $tx->​result->​body;​ 
-    }; 
-    return undef if $@; 
-    my $j = decode_json($res);​ 
-} 
- 
-sub dump_clean { 
-    my ($self, $pattern, $remain) = @_; 
-    $self->​rpc('/​dump/​clean',​ pattern => $pattern, remain => $remain); 
-} 
- 
-1; 
- 
-use strict; 
-use warnings; 
-use Mojo::Util qw(dumper); 
- 
- 
-my $s = aStoreI->​new("​dbstorexx.xxxx.us",​ "​xxxxxx",​ "​xxxxxxxx"​);​ 
-print dumper $s->​data_list;​ 
-#print dumper $s->​dump_clean('​hrm_auto_new--*',​ 1); 
-#print dumper $s->​data_put('​data.bin'​);​ 
-#print dumper $s->​data_profile('​data.bin'​);​ 
-print dumper $s->​data_get('​_dummy--20180901-001004-MSK--local.sqlz',​ '​.'​);​ 
-#print dumper $s->​data_delete('​data.bin'​);​ 
-#print dumper $s->​data_profile('​data.bin'​);​ 
-#print dumper $s->​store_profile;​ 
- 
-#EOF 
-</​code>​ 
-