#!/usr/local/cpanel/3rdparty/bin/perl
# Copyright 1999-2026. WebPros International GmbH. All rights reserved.

use strict;
use warnings;

use Cpanel::JSON ();
use Cpanel::iContact::Class::WPT::AdminSuspiciousInstance ();
use Cpanel::iContact::Class::WPT::AdminAutoUpdates ();
use Cpanel::iContact::Class::WPT::BlacklistedPluginDeactivated ();
use Cpanel::iContact::Class::WPT::VulnerabilityFound ();

# Notifications addressed to the server administrator.
my %NOTIFICATIONS = (
    'AdminSuspiciousInstance'      => 'Cpanel::iContact::Class::WPT::AdminSuspiciousInstance',
    'AdminAutoUpdates'             => 'Cpanel::iContact::Class::WPT::AdminAutoUpdates',
    'BlacklistedPluginDeactivated' => 'Cpanel::iContact::Class::WPT::BlacklistedPluginDeactivated',
    'VulnerabilityFound'           => 'Cpanel::iContact::Class::WPT::VulnerabilityFound',
);

die "This script must be run as root\n" if $> != 0;

my $name = shift(@ARGV);
$name = '' if !defined $name;

my $class = $NOTIFICATIONS{$name}
    or die "Unknown notification '$name'\n";

my $payload = do { local $/; <STDIN> };
die "No notification arguments on STDIN\n" if !defined $payload || $payload eq '';

my $args = Cpanel::JSON::Load($payload);
die "Notification arguments must be a JSON object\n" if ref($args) ne 'HASH';

# Never taken from the payload.
delete $args->{'to'};
delete $args->{'origin'};

$class->new( 'origin' => 'wp_toolkit', %{$args} );

exit 0;
