Current File : //scripts/notify_expiring_certificates
#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - scripts/notify_expiring_certificates    Copyright 2022 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

package scripts::notify_expiring_certificates;

use strict;
use warnings;

=encoding utf-8

=head1 USAGE

    notify_expiring_certificates [ --help ]

=head1 DESCRIPTION

This script checks for expiring SSL certificates and sends notifications
to user and admin for certificates that are about to expire or have already
expired.

This script does nothing if C<notify_expiring_certificates> is disabled
in Tweak Settings.

=cut

use parent qw( Cpanel::HelpfulScript );

use Cpanel::Time::ISO                       ();
use Cpanel::Update::Recent                  ();
use Cpanel::Apache::TLS::Index              ();
use Cpanel::Apache::TLS                     ();
use Cpanel::SSL::Objects::Certificate::File ();
use Cpanel::SSL::Auto::Config::Read         ();
use Cpanel::SSL::Notify                     ();
use Cpanel::Transaction::File::JSON         ();
use Cpanel::Config::LoadCpConf              ();
use Cpanel::AcctUtils::DomainOwner::Tiny    ();
use Cpanel::AcctUtils::Suspended            ();
use Cpanel::Features::Check                 ();
use Cpanel::Domain::Owner                   ();
use Cpanel::LinkedNode::AccountCache        ();
use Cpanel::PromiseUtils                    ();

use Try::Tiny;

our $LAST_NOTIFY_RUN_FILE = '/var/cpanel/ssl/notify_expiring_certificates.json';

use constant DAY_IN_SECONDS => 86400;

use constant _OPTIONS => ();

run(@ARGV) if !caller;

sub run {
    my (@args) = @_;

    return 1 if $ENV{'CPANEL_BASE_INSTALL'};

    #Instantiate this to process --help and other args.
    my $self = __PACKAGE__->new(@args);

    return 0 unless Cpanel::Config::LoadCpConf::loadcpconf_not_copy()->{'notify_expiring_certificates'};

    return $self->script();
}

sub _time { return time(); }    # for tests

sub script {
    my ($self) = @_;

    # This is a no-op if there are no certificates installed.
    return if !@{ [ Cpanel::Apache::TLS->get_tls_vhosts() ] };

    Cpanel::AcctUtils::DomainOwner::Tiny::build_domain_cache() if !$Cpanel::AcctUtils::DomainOwner::Tiny::CACHE_IS_SET;

    my $atls_idx       = Cpanel::Apache::TLS::Index->new();
    my $all_records_ar = $atls_idx->get_all_ar();
    my $now            = _time();                             # make sure all the notification checks are for the same time

    my $trans         = Cpanel::Transaction::File::JSON->new( path => $LAST_NOTIFY_RUN_FILE );
    my $last_run_data = $trans->get_data();
    if ( ref $last_run_data ne 'HASH' ) {
        $trans->set_data( {} );
        $last_run_data = $trans->get_data();
    }

    $last_run_data->{'notify_history_by_uniq_key'} ||= {};
    $last_run_data->{'last_notified_time'} = $now;

    my $notify_history_by_uniq_id_hr = $last_run_data->{'notify_history_by_uniq_key'};

    _delete_notify_history_for_uniq_keys_that_no_longer_exist( $notify_history_by_uniq_id_hr, $all_records_ar );

    _notify_and_remember_for_each_vhost_if_needed( $now, $notify_history_by_uniq_id_hr, $all_records_ar );

    $trans->save_and_close_or_die();

    return 1;
}

# We need a uniq key for each entry to track if
# we have sent a notification for each interval
# that we can delete when the cert or vhost
# is changed/removed.
sub _get_uniq_key_for_atls_entry {
    my ($entry) = @_;

    return join( '|', $entry->{'vhost_name'}, $entry->{'certificate_id'} );
}

sub _delete_notify_history_for_uniq_keys_that_no_longer_exist {
    my ( $notify_history_by_uniq_id_hr, $all_records_ar ) = @_;

    my %current_uniq_keys = map { _get_uniq_key_for_atls_entry($_) => 1 } @$all_records_ar;

    my @uniq_keys_that_no_longer_exist = grep { !$current_uniq_keys{$_} } keys %{$notify_history_by_uniq_id_hr};

    delete @{$notify_history_by_uniq_id_hr}{@uniq_keys_that_no_longer_exist};

    return 1;
}

sub _get_child_accounts_cache_sync {
    my $p = Cpanel::LinkedNode::AccountCache->new_p();

    return Cpanel::PromiseUtils::wait_anyevent($p)->get();
}

sub _notify_and_remember_for_each_vhost_if_needed {
    my ( $now, $notify_history_by_uniq_id_hr, $all_records_ar ) = @_;

    my $autossl_is_on = !!Cpanel::SSL::Auto::Config::Read->new()->get_provider();

    my $child_acct_lookup_hr = _get_child_accounts_cache_sync();
    my $user_type_alias_hr   = $child_acct_lookup_hr->get_all_child_workloads();

    my $installed_autossl_providers = $autossl_is_on && do {
        require Cpanel::SSL::Auto::Providers;
        Cpanel::SSL::Auto::Providers->new();
    };

    my %_memorized_user_is_suspended;
    my %_memorized_user_has_autossl_feature;

    foreach my $crt (@$all_records_ar) {
        my ( $user, $err );
        try {
            $user = Cpanel::Domain::Owner::get_owner_or_die( $crt->{'vhost_name'} )
        }
        catch {
            $err = $_;
        };

        if ($err) {
            warn "Failed to process “$crt->{'vhost_name'}”: $err";
            next;
        }
        elsif ( $user_type_alias_hr->{$user} ) {
            next;
        }
        elsif ( $_memorized_user_is_suspended{$user} //= Cpanel::AcctUtils::Suspended::is_suspended($user) ) {
            next;
        }

        my $user_has_autossl_feature = $_memorized_user_has_autossl_feature{$user} //= Cpanel::Features::Check::check_feature_for_user( $user, 'autossl' );

        try {
            my $cert_obj = Cpanel::SSL::Objects::Certificate::File->new( path => Cpanel::Apache::TLS->get_certificates_path( $crt->{'vhost_name'} ) );

            #If AutoSSL provides the certificate, then:
            #   - If AutoSSL is off: process the cert as a normal cert
            #   - Otherwise, let AutoSSL do notifications.
            my $auto_ssl_provider_obj = $autossl_is_on && $user_has_autossl_feature && $installed_autossl_providers->get_provider_object_for_certificate_object($cert_obj);

            if ( !$auto_ssl_provider_obj ) {

                if ( !$cert_obj->is_self_signed() ) {    # no notification for self signed

                    my $not_after_time_unix   = Cpanel::Time::ISO::iso2unix( $crt->{'not_after'} );
                    my $seconds_until_expired = $not_after_time_unix - $now;
                    my $uniq_key              = _get_uniq_key_for_atls_entry($crt);

                    my $notify_history_hr = $notify_history_by_uniq_id_hr->{$uniq_key} ||= {};

                    my $notification_interval_to_send = Cpanel::SSL::Notify::get_next_notification_level_to_send_for_local(
                        $seconds_until_expired,
                        keys %$notify_history_hr,
                    );

                    if ( defined $notification_interval_to_send ) {

                        # We do not send notifications for the first 10 days
                        # since they won't have notification history
                        if ( !Cpanel::Update::Recent::installed_with_last_days() ) {
                            try {
                                _notify_certificate_expiring(
                                    'vhost_name' => $crt->{'vhost_name'},
                                    'user'       => $user,
                                    'type'       => 'SSL::CertificateExpiring',
                                );
                            }
                            catch {
                                warn "Failed to send notification for $crt->{'vhost_name'}: $_";
                            };
                        }

                        # Mark the notification interval as sent so we
                        # do not send again for that interval
                        $notify_history_hr->{$notification_interval_to_send} = $now;
                    }
                }
            }
        }
        catch {
            warn "Failed to process “$crt->{'vhost_name'}”: $_";
        };
    }
    return;
}

sub _notify_certificate_expiring {
    my (%opts) = @_;

    my ( $type, $vhost_name, $user ) =    #
      @opts{ 'type', 'vhost_name', 'user' };

    require Cpanel::Notify::Deferred;
    require Cpanel::IP::Remote;

    foreach my $target (qw(admin user)) {
        if ( $target eq 'user' ) {
            require Cpanel::ContactInfo;
            my $cinfo = Cpanel::ContactInfo::get_contactinfo_for_user($user);
            next if !$cinfo->{'notify_ssl_expiry'};
        }

        #Have queueprocd do it so that we don’t create kazoodles of
        #notification processes which cripple lower-powered servers.
        Cpanel::Notify::Deferred::notify(
            'class'            => $type,
            'application'      => $type,
            'constructor_args' => [
                _get_icontact_args_for_target( $target, $user ),
                vhost_name        => $vhost_name,
                origin            => 'notify_expiring_certificates',
                source_ip_address => Cpanel::IP::Remote::get_current_remote_ip(),
            ]
        );
    }
    return;
}

sub _get_icontact_args_for_target {
    my ( $target, $user ) = @_;

    if ( $target eq 'user' ) {
        return (
            user                              => $user,
            username                          => $user,
            to                                => $user,
            notification_targets_user_account => 1,
        );
    }

    return (
        username => $user,

    );
}

1;
Vox Kasyno Sieciowy Poglądy Fachowców i Bonusy 2025

Vox Kasyno Sieciowy Poglądy Fachowców i Bonusy 2025

Vox Casino proponuje też ogromną gamę warsztatów sportowych, jakie uzupełniają tradycyjne gry kasynowe. Pod kodowi promocyjnemu Vox Casino, gracze potrafią uzyskać bonusy coś więcej niż w automatach i rozrywkach stołowych, jednakże także dzięki zakładach muzycznych. Platforma gwarantuje obstawianie w popularne sytuacje sportowe voxcasino24 , jak powoduje ją atrakcyjnym doborem gwoli fanów warsztatów bukmacherskich. W ten sposób gracze mogą w tej chwili korzystać pochodzące z kody atrakcyjne Vox Casino jak i również odgrywać bez ryzyka, co sprawia, iż praktyka wydaje się być dostępne zarówno w celu nowych, jak i fachowych internautów. Kompletny przebieg wydaje się ciekawy oraz nie wymaga jakichkolwiek złożonych prac.

Przetestowałem sobie Roulette Green, Mega Sic Bac oraz Las Vegas Roulette – jakichkolwiek zarzutów gdy do odwiedzenia jakości transmisji, tak bardzo jak i również do samej gry. Należy pamiętać, iż żadne zapłaty w takich gracz nie zaliczają czujności do odwiedzenia warunku ruchu. Korzystając z Vox Casino kodów rabatowych, osiągasz wejście do szczególnych przywilejów, jak na przykład bezpłatne spiny, bonusowe nakłady w grę czy cashback w całej złotówkach. Vox Casino przyjmuje rozległy wybór metod płatności, w tym karty kredytowe (Visa, MasterCard), portfele elektroniczne (Skrill, Neteller) i kryptowaluty, na przykład Bitcoin.

Profesjonalni krupierzy jak i również możliwość interakcji pochodzące z innymi graczami powodują, iż rozgrywka jest niezmiernie angażująca oraz autentyczna. Ażeby całkiem skorzystać Vox Casino bonusy, warto przyjąć strategiczne postępowanie do odwiedzenia rozrywki, jakie pozwoli zoptymalizować możliwości na wygraną jak i również dobrze zarządzać przyznanymi środkami. Niżej znajdziesz parę możliwych strategii, jakie mogą pomóc ci po efektywniejszym korzystaniu z bonusów. Vox dysponuje też program lojalnościowy, gdzie gracze zdobywają punkty, obstawiając oryginalne kapitał. Owe punkty pomagają Ci ukończyć za pośrednictwem rozmaite poziomy, w poniższym Początkujący, Amator, Profesjonalny, Fachowiec, Czempion jak i również Legenda. Naprawdę, duża liczba wygranych pochodzące z bonusów dysponuje limit wypłaty oraz potrzeba obrotu, jaki to winna pozostać zaspokojony poprzednio wypłatą.

Jak korzystać wraz z kodu reklamowego w warsztaty sportowe czy bukmacherskie na stronie VoxCasino?: voxcasino24

Sterowanie w całej odrębnej partii lobby Casino Vox nie będzie ci na szczęście nastręczać niepotrzebnych problemu – w nim twórca poskąpił zakładek jak i również dodatkowych lokalizacji po menu. Firm gier nie ma zbyt dużo i operator wyróżnił tylko świeżości, chodliwe tytuły, uciechy stołowe online, Aviatora, zabawy typu crash oraz sloty. Zabawy on-line zupełnie nie doczekały uwagi własnej pozycji w karta – wydobędziemy te rolety, przewijając stronę kluczową na dół.

Bonus powitalny na start

voxcasino24

Ów klasa kodu zasilana wydaje się za sprawą nad czterdzieści renomowanych wytwórców, w tym tego typu firmy kiedy Nolimit City jak i również Big Time Gaming. Za sprawą tego gwarantujemy najlepszą klasa oraz zawrotną wielorakość komputerów. Zagrasz tutaj w szczególności przy popularne automaty online na temat rozmaitych motywach i mechanikach. Miłośnicy klasyki potrafią liczyć na ogromny selekcja gierek stołowych jak i również karcianych RNG – posiadamy szachy, ruletkę, blackjacka, a także bakarata. Zawodnicy poszukujący wrażeń oryginalnych jak i również aury realnego kasyna, mają do odwiedzenia dyspozycji bogato zaopatrzone kasyno dzięki energicznie. Poza tym udostępniamy chodliwe zabawy crash, takie jak Aviator, cechujące się zwykłym gameplayem oraz natychmiastowym biegiem rywalizacji.

W ciągu dowolną grę jak i również wykonane zadanie uzyskujesz punkty, jakie wymieniasz pod ciekawe gratyfikacyj oraz korzystasz wraz ze osobliwych możliwości. Warunki aktywacji wszystkich bonusu są wprost pewne jak i również odróżniają się w zależności od etapu oferty. Dzięki temu możesz uporządkować zastosowanie działaniu do własnego nurcie uciechy i dysponować ryzykiem pod naszych ustaleniach. Drobiazgowe dane odnośnie Vox Casino istotnie deposit bonus, będziesz wyszukać na polskiej formalnej witrynie. VOX Casino nadprogram wyjąwszy depozytu, lub nadprogram w start owo zniżki rzadkie, jakimi na osobisty rodzaj potrzebujemy zachęcić do odwiedzenia nas.

By korzystać pochodzące z szyfrów rabatowych Vox Casino oraz zdobyć dostęp do odwiedzenia niepowtarzalnych bonusów, wystarczy kilka prostych kroków. Jak się zarejestrować z systemem wydaje się być łatwa i żwawa, a Vox Casino nadprogram z brakiem depozytu wydaje się być dostępny natychmiast w całej wpisaniu należytego systemu kodowania w całej odpowiednie pole w ciągu zarejestrowania się. W ten sposób fani mają możliwość skorzystać z Vox Casino free spins i odmiennych zalety wyjąwszy potrzeby wpłacania podstawowego depozytu. Respektujemy wszelakiego gracza oraz chcemy zaoferować fascynujące aplikacje bonusowe również w celu nowicjuszy, jak i stałych konsumentów kasyna VOX. Na swoim koncie swoim odnajdziesz sporo przydatnych ofert, choćby takich jak darmowe spiny oraz środki bonusowe, które to można korzystać w całej dużej liczby pozostałych grach.

Wszyscy gracz ma swój unikalny odznaczenie ID oraz wyraźny przy prawym górnym rogu profilu status przy projekcie lojalnościowym. Regularnie aktualizujemy pferowane zakupy, aby zagwarantować tym fanom kiedy najkorzystniejsze wytyczne. Dzięki temu polski promokod może być niejednokrotnie wzbogacany na temat równoczesne bonusy, , którzy zapewnia cieszyć się grą wraz z nadal znaczniejszą zabawą. Żeby w pełni korzystać wraz z własnego promokodu, za każdym razem powinno się badać najświeższe propozycji oraz promocje dostępne w danym kasynie. Nasze kody atrakcyjne dają specjalną sposobność dzięki powiększenie szans dzięki wygraną, więc nie zapomnij, by użytkować pierwotnego bezzwłocznie.

voxcasino24

Dla przykładu, wówczas gdy kasyno proponuje 100% bonus powitalny, gracz, jaki wpłaci pięćset złotych, dostanie następujące 500 zł zdecydowanie nadprogram, jak daje jemu łącznie tysiąc zł dzięki zaczątek zabawy. Wszyscy bonus bez depozytu przy Vox Casino sprzęga się z określonymi warunkami, które to fani muszą zaspokoić zanim wypłatą wygranych. Szczegółowe doniesienia na temat wymogów ruchu istnieją w regulaminie każdej reklamy.

Normy odnoszące się do paliwa bonusowego z brakiem depozytu w VoxCasino

Vox Casino szyfr promocji wyjąwszy depozytu wydaje się być niejednokrotnie nadrzędnym powodem, w celu któregoż fani typują owe platformę, w zamian innych, które wymagają szybkiej wpłaty depozytu. Prócz bonusu powitalnego, kasyno Vox proponuje graczom propozycję cashback. Aktywni konsumenci potrafią odebrać do odwiedzenia dziesięciu% swoich przegranych zakładów. Odmienne prawidłowe zakupy zawierają darmowe spiny, bonusy bez depozytu, kody promocyjne i specjalne propozycji tymczasowe.

Nasze turnieje produkowane są we współpracy spośród wiodącymi producentami automatów do odwiedzenia gry. Na bazie jednym bądź 3 popularnych slotach, przygotowujemy zawody, gdzie ogół rotacja przybliża ciebie do zwycięstwa. Zawodnicy uzyskują punkty zbyt obstawianie, wygrywanie oraz wykonywanie niektórych zadań. Punkty tę określają obszary w całej klasyfikacji, w której każdy artykuł może być krokiem w odniesieniu do ekscytujących nagród.

Szyfr promocyjny VOX Casino — dlaczego powinno się fita skorzystać?

voxcasino24

Kod promocyjny do odwiedzenia VOX Casino może także przyjechać do Cię samodzielnie — pod Twój adres mailowy, przypisany do odwiedzenia konta pod własnej platformie. Stale sprawdzaj skrzynkę, bo czasami wysyłamy unikalne kody w specjalistyczne okazje, przykładowo na urodziny. Automaty online jest to czerwień ogłoszenia Vox Casino, pociągające zawodników rozmaitością tematów, dynamiczną rozgrywką i ogromnymi wygranymi.

Klub proponuje 3 poziomy – Złocisty, Platynowy i Diamentowy, jak i również daje dużo korzyści, w poniższym gry VIP, szybsze wypłaty oraz ekskluzywne bonusy. Szukasz licencjonowanego kasyna sieciowy, które to przynosi ekscytujące odczucia pochodzące z rozrywki, w którym miejscu elastyczna klasa kodu konsol jest wzbogacona dużym zaangażowaniem platformy po radość fanów? Twe wyszukiwania dobiegły naturalnie końca, gdyż VOX Casino jest tymże stanowiskiem, którego od chwili tak wielu lat szukałeś. W całej Casino VOX udostępniamy graczom zaawansowaną platformę hazardową z niekończącą się bibliotekę gier. Odkrywanie naszego obszernego katalogu automatów przez internet, komputerów stołowych, gierek dzięki energicznie i konsol szybkich wydaje się nieskomplikowana i potulna, na intuicyjnemu interfejsowi. Obfita podaż konsol gwarantuje doświadczyć hazardowy spektakl, a wszystko to wydaje się być okraszone hojnymi bonusami oraz rabatami, które to oczekują w Ciebie na każdym etapie zabawy.

Vox Casino Online

Dobrze chcemy zaoferować Panstwu rozległą paletę konsol, w tym także znane klasyki, oraz tę skromniej znane, jednak minimalna wartość ekscytujące. Nie czekaj, aż będzie za późno – dodaj do odwiedzenia Vox Casino już teraz i rozpocznij grupowanie paragrafów dzięki swe od razu nagrody! Nie zapomnij, ażeby systematycznie testować obiekt handlowy wraz z nagrodami, dokąd czekają  interesujące bonusy. Każdy dzienna pora owe nowa możliwość dzięki otrzymanie pobocznych paragrafów oraz wymianę ich pod pomocne gratyfikacyj. Zgłoś do mrowiska zadowolonych fanów Vox Casino jak i również sprawdź, jak łatwo wolno gromadzić bonusy wyjąwszy depozytu.


Publicado

en

por

Etiquetas: