use Modern::Perl;
use utf8;
use Mojo::AsyncAwait;
use Data::Dumper;
use Sub::Install;
our $client;
##############################################
sub command_help
{
my $cmd = shift;
my $args = shift;
my $chatid = shift;
my $rest = shift;
notify($chatid, "/purge ip-адрес-устройства номер-дерева - Очистить дерево PON", $rest);
}
# purge 172.1.1.1 2 - почистить дерево 2 на ПОН
async command_purge => sub
{
my $cmd = shift;
my $args = shift;
my $chatid = shift;
my $rest = shift;
my $ip = $args->[0];
my $tree = $args->[1];
return notify($chatid, "Не указан IP-адрес") unless $ip;
return notify($chatid, "Не указан номер дерева") unless $tree;
return notify($chatid, "Неправильный IP-адрес: $ip") unless is_valid_ip($ip);
return notify($chatid, "Неправильный номер дерева: $tree") unless $tree =~ /^\d+$/;
my $res;
eval {
$res = await $client->get_p("device", "/pon?query=ip=$ip");
};
return notify($chatid, "Ошибка: " . parse_error($@)) if $@;
return notify($chatid, "Устройство с IP=$ip не найдено") if @$res<1;
my $dev = $res->[0];
notify($chatid, "Очищаю дерево $tree на устройстве $ip '$dev->{name}'...");
};
###################################
sub is_valid_ip
{
return $_[0] =~ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
}
sub parse_error
{
my $e = shift;
return $e unless ref $e;
return "$e->{code} $e->{message} $e->{body}";
}
1;