|
|
@@ -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;
|