| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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, "<b>/purge</b> <i>ip-адрес-устройства номер-дерева</i> - Очистить дерево 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;
|