Эх сурвалжийг харах

+ /alertmanager (тестовая версия, кладет в файл)

Yuriy Zhilovets 5 жил өмнө
parent
commit
4f555e5ca0
1 өөрчлөгдсөн 28 нэмэгдсэн , 0 устгасан
  1. 28 0
      telegram.pl

+ 28 - 0
telegram.pl

@@ -15,6 +15,7 @@ use Mojo::UserAgent;
 use Data::Dumper;
 use Promises qw/deferred/;
 use Mojo::JSON qw/j/;
+use NetAddr::IP;
 
 my $NAME = "telegram";
 my $confdir = "config/".app->mode;
@@ -31,6 +32,8 @@ plugin yaml_config => {
 
 our $config = app->config;
 
+$config->{_alert_allowed} = [ grep {$_} map {new NetAddr::IP($_)} @{$config->{alert_allowed}} ];
+
 app->secrets(["Marsz, Marsz, Dabrowski"]);
 
 my $log = new Mojo::Log;
@@ -85,6 +88,31 @@ get "/health" => sub
   shift->render(text => "Telegram OK");
 };
 
+sub check_ip
+{
+  my $c = shift;
+  my $remip = new NetAddr::IP($c->tx->remote_address);
+      
+  for (@{$config->{_alert_allowed}}) 
+  {
+    return 1 if $_->contains($remip);
+  }
+                    
+  $c->render(status => 403, text => "Неизвестный IP-адрес " . $c->tx->remote_address);
+}
+
+post "/alertmanager" => sub
+{
+  my $c = shift;
+  return unless check_ip($c);
+                        
+  my $params = j($c->req->body);
+  open(F,">>/tmp/alertmanager.txt");
+  say F Dumper $params;
+  close(F);
+  $c->render(text=>"ok");
+};
+
 post "/:token" => sub
 {
   my $c = shift;