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

# cpanel - scripts/enable_spf_dkim_globally        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::enable_spf_dkim_globally;

use strict;
use warnings;

use Cpanel::SPF                     ();
use Cpanel::DKIM::Transaction       ();
use Cpanel::Logger                  ();
use Cpanel::Config::Users           ();
use Cpanel::Config::CpUserGuard     ();
use Cpanel::Config::LoadCpUserFile  ();
use Cpanel::DnsUtils::AskDnsAdmin   ();
use Cpanel::DnsUtils::Fetch         ();
use Cpanel::PwCache::Build          ();
use Cpanel::ZoneFile                ();
use Cpanel::Config::LoadUserDomains ();
use Cpanel::ServerTasks             ();
use Getopt::Long                    ();

my $DOMAINS_TO_RELOAD_EACH_CALL    = 2048;
my $DKIM_RECORD_NAME_PREFIX        = 'default._domainkey.';
my $DKIM_RECORD_NAME_PREFIX_LENGTH = length $DKIM_RECORD_NAME_PREFIX;

our $logger;
our @USERS = ();

sub new {
    my $pkg = shift;
    return bless {
        domains_by_user => scalar Cpanel::Config::LoadUserDomains::loaduserdomains( undef, 0, 1 ),
        reload_zones    => [],
    }, $pkg;
}

sub as_script {
    my $self = shift;

    $logger //= Cpanel::Logger->new();

    my $execute;
    Getopt::Long::GetOptions(
        "user=s" => \@USERS,
        "x"      => \$execute,
    );

    if ( not $execute ) {
        my $msg = qq{To execute, use the -x flag.};
        $logger->die($msg);
    }

    $self->run();

    return 1;
}

sub run {
    my $self         = shift;
    my $options_href = shift;    # { users => [qw/user1 user2/] }

    $logger //= Cpanel::Logger->new();

    my @users =
      ( exists $options_href->{user} and @{ $options_href->{user} } ) ?    #
      @{ $options_href->{user} }
      :                                                                    #
      scalar @USERS ?                                                      #
      @USERS
      :                                                                    #
      Cpanel::Config::Users::getcpusers();                                 #

    Cpanel::PwCache::Build::init_passwdless_pwcache() if scalar @users > 5;

    my $domains_by_user = $self->{domains_by_user};

  USERS:
    foreach my $user (@users) {

        unless ( exists $domains_by_user->{$user} ) {
            $logger->warn(qq{Invalid user "$user", skipping.});
            next USERS;
        }

        my $users_domains_ref = $domains_by_user->{$user};

        $self->_enable_spf_dkim_cpusers_file($user);

        my $zone_ref = Cpanel::DnsUtils::Fetch::fetch_zones( 'zones' => $users_domains_ref );

        $self->_setup_spf_for_all_users_domains( $user, $zone_ref );

        $zone_ref = Cpanel::DnsUtils::Fetch::fetch_zones( 'zones' => $users_domains_ref );    # Need to fetch again in case setup_spf has modified them

        $self->_setup_dkim_for_users_domains_without_it( $user, $zone_ref );

        push @{ $self->{'reload_zones'} }, grep { exists $zone_ref->{$_} } @$users_domains_ref;
    }

    $self->_reload_zones();

    Cpanel::ServerTasks::queue_task( ['DKIMTasks'], 'refresh_entire_dkim_validity_cache' );

    return 1;
}

sub _setup_spf_for_all_users_domains {
    my ( $self, $user, $zone_ref ) = @_;

    my $users_domains_ref = $self->{domains_by_user}->{$user};

    # set up SPF on all domains owned by $users
    my ( $status, $msg ) = Cpanel::SPF::setup_spf(
        'user'       => $user,
        'preserve'   => 1,
        'skipreload' => 1,
        'zone_ref'   => $zone_ref
    );
    $logger->warn(qq{Failed to set up SPF for $user: $msg}) unless $status;
    return $status;
}

sub _setup_dkim_for_users_domains_without_it {
    my ( $self, $user, $zone_ref ) = @_;

    my $users_domains_ref       = $self->{domains_by_user}->{$user};
    my $seen_dkim_for_domain_hr = _find_domains_that_have_dkim_installed($zone_ref);

    foreach my $domain (@$users_domains_ref) {
        if ( $seen_dkim_for_domain_hr->{$domain} ) {
            $logger->info(qq{"default._domainkey" DKIM TXT record detected for $domain, skipping.});
        }
    }

    my @domains_to_setup_dkim_on = grep { !$seen_dkim_for_domain_hr->{$_} } @$users_domains_ref;
    if (@domains_to_setup_dkim_on) {

        my $dkim = Cpanel::DKIM::Transaction->new();

        my @w;

        my $result = do {
            local $SIG{'__WARN__'} = sub { push @w, @_ };

            $dkim->set_up_user_domains(
                $user,
                \@domains_to_setup_dkim_on,
                $zone_ref,
            );
        };

        $dkim->commit();

        if ( !$result || !$result->was_any_success() ) {
            $logger->warn(qq{Failed to set up DKIM for $user: @w});
        }

        return $result->was_any_success();
    }
    return;
}

sub _enable_spf_dkim_cpusers_file {
    my ( $self, $user ) = @_;
    my $cpuser_data = Cpanel::Config::LoadCpUserFile::loadcpuserfile($user);
    if ( !$cpuser_data->{'HASSPF'} || !$cpuser_data->{'HASDKIM'} ) {

        # check each domain to make sure that we don't overwrite SPF
        my $lock = Cpanel::Config::CpUserGuard->new($user);
        $lock->{data}{HASSPF}  = 1;
        $lock->{data}{HASDKIM} = 1;
        $lock->save;
    }
    return 1;
}

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

    while ( @{ $self->{'reload_zones'} } ) {
        Cpanel::DnsUtils::AskDnsAdmin::askdnsadmin( 'RELOADZONES', 0, join( ',', splice( @{ $self->{'reload_zones'} }, 0, $DOMAINS_TO_RELOAD_EACH_CALL ) ) );
    }
    return 1;
}

sub _find_domains_that_have_dkim_installed {
    my ($zone_ref) = @_;

    my %seen_dkim_for_domain;

    foreach my $zone ( keys %$zone_ref ) {
        my $dkim_records_ar = _get_dkim_records_from_zone_ref( $zone, $zone_ref->{$zone} );
        foreach my $record (@$dkim_records_ar) {
            my $record_name_without_prefix = substr( $record->{'name'}, $DKIM_RECORD_NAME_PREFIX_LENGTH );
            my $domain                     = _convert_zone_name_to_domain( $record_name_without_prefix, $zone );
            $seen_dkim_for_domain{$domain} = 1;
        }
    }

    return \%seen_dkim_for_domain;
}

sub _get_dkim_records_from_zone_ref {
    my ( $zone, $zone_contents_ar ) = @_;
    my $zone_obj = Cpanel::ZoneFile->new( 'domain' => $zone, 'text' => $zone_contents_ar );
    return [ grep { index( $_->{'name'}, $DKIM_RECORD_NAME_PREFIX ) == 0 } $zone_obj->find_records( { 'type' => 'TXT' } ) ];

}

sub _convert_zone_name_to_domain {
    my ( $zone_name_record, $zone ) = @_;

    # If the name does not end with a . we must append .$zone
    if ( substr( $zone_name_record, -1 ) eq '.' ) {
        return substr( $zone_name_record, 0, -1 );    # strip tailing .
    }
    return $zone_name_record . '.' . $zone;
}

if ( not caller() ) {
    my $enable = scripts::enable_spf_dkim_globally->new();
    $enable->as_script;
    exit 0;
}

1;

__END__

=head1 NAME

/scripts/enable_spf_dkim_globally

=head1 USAGE AS A SCRIPT

  /scripts/enable_spf_dkim_globally -x [--user=<user1>] [--user=<user2>] ... [--user=<userN>]

=head2 AS A LIBRARY

This script is internally written as a modulino, which means it can be C<require>'d:

  use strict;
  require q{/scripts/enable_spf_dkim_globally};
  my $enable = scripts::enable_spf_dkim_globally->new();
  $enable->run();                                       # globally enable, iterate over domains from all users
  $enable->run( { user => [qw/username1 username2/] }); # globally enable, iterate over domains from list of specified users

=head1 DESCRIPTION

This script enables C<SPF> and C<DKIM> system-wide, and it adds respective C<DNS> entries for all domains
if none exist. If a C<DKIM DNS> record is detected for a domain, it remains untouched. If a C<SPF>
record exists, it is updated.

The scope of the domains that are affected with new C<DKIM>/C<SPF> or updated C<SPF> records may be limited
by using the C<--user> flag to specify one or more users from whom the list of domains to affect is generated.

=head1 REQUIRED COMMAND LINE ARGUMENTS

=over 4

=item -x

Use this option to actually run the script, otherwise it will warn and return
without doing anything.

=back

=head1 COMMAND LINE OPTIONS

=over 4

=item --user C<username>

Specify a user or list of users for whom all domains are enabled rather than all user
accounts on the system. Specify more than one user by using one C<--user> per username.

For example,

  /scripts/enable_spf_dkim_globally -x --user="username1" --user="username2"

If no users are specified, all domains for all user accounts on the system are enabled.

=back

=head1 DIAGNOSTICS

None

=head1 EXIT STATUS

Exit status is 0 (success) unless an unexpected error occurs.

=head1 DEPENDENCIES

None

=head1 INCOMPATIBILITIES

None

=head1 BUGS AND LIMITATIONS

None

=head1 LICENSE AND COPYRIGHT

   Copyright 2022 cPanel, L.L.C.
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: