|
|
@@ -3,7 +3,8 @@ use utf8;
|
|
|
|
|
|
use Mojo::AsyncAwait;
|
|
|
use Data::Dumper;
|
|
|
-use Sub::Install;
|
|
|
+use purge_cdata;
|
|
|
+use purge_bdcom;
|
|
|
|
|
|
our $client;
|
|
|
|
|
|
@@ -38,14 +39,35 @@ async command_purge => sub
|
|
|
|
|
|
my $res;
|
|
|
eval {
|
|
|
- $res = await $client->get_p("device", "/pon?query=ip=$ip");
|
|
|
+ $res = await $client->get_p("device", "/pon?query=ip=\"$ip\"");
|
|
|
};
|
|
|
return notify($chatid, "Ошибка: " . parse_error($@)) if $@;
|
|
|
- return notify($chatid, "Устройство с IP=$ip не найдено") if @$res<1;
|
|
|
+ return notify($chatid, "Устройство с ip=$ip не найдено") if @$res<1;
|
|
|
|
|
|
my $dev = $res->[0];
|
|
|
+
|
|
|
+ my $sub;
|
|
|
+ if ($dev->{type} =~ /^BDCOM/)
|
|
|
+ {
|
|
|
+ $sub = reference("purge_bdcom");
|
|
|
+ }
|
|
|
+ elsif ($dev->{type} =~ /^C-DATA/)
|
|
|
+ {
|
|
|
+ $sub = reference("purge_cdata");
|
|
|
+ }
|
|
|
+
|
|
|
+ return notify($chatid, "Устройство $ip '$dev->{name}' неизвестного типа $dev->{type}") unless $sub;
|
|
|
+
|
|
|
+ notify($chatid, "Очищаю дерево $tree на устройстве $ip '$dev->{name}'");
|
|
|
+
|
|
|
+ my $count;
|
|
|
+ eval {
|
|
|
+ $count = await $sub->($ip, $dev->{login}, $dev->{password}, $tree);
|
|
|
+ };
|
|
|
+
|
|
|
+ return notify($chatid, "$ip '$dev->{name}': $@") if $@;
|
|
|
|
|
|
- notify($chatid, "Очищаю дерево $tree на устройстве $ip '$dev->{name}'...");
|
|
|
+ notify($chatid, "$ip '$dev->{name}': работает $count ONU");
|
|
|
};
|
|
|
|
|
|
###################################
|