DRIVER=processor
MODALIAS=cpu:type:x86,ven0002fam001Amod0002:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,0020,0021,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0036,0037,0038,0039,003A,003B,003D,0064,0065,006E,0070,0074,0075,0079,007A,007F,0080,0081,0089,008C,008D,0091,0093,0094,0095,0096,0097,0098,0099,009A,009B,009C,009D,009E,009F,00C0,00C1,00C2,00C4,00C5,00C6,00C7,00C8,00C9,00D7,00EA,00F0,00F1,00F4,00F9,00FA,00FB,00FC,00FE,010F,0114,0115,0120,0121,0123,0125,0127,0128,0129,012A,0130,0131,0132,0133,0134,0135,0137,0138,013C,013D,013E,013F,0140,0141,0142,0143,0165,017A,0184,0185,018B,01A0,01A2,01A9,01AC,01AE,01AF,01B1,01B8,01BC,01C2,01E0,01E1,01E3,01E4,01E5,01E6,01EA,01EC,01EF,01F0,01F9,01FC,0201,0202,0203,0204,0206,0208,0209,020A,020B,020C,020E,0210,0216,021B,021C,0220,0221,0244,0248,025A,025B,025C,025D,025F,0280,0281,0282,0286,0288,029B,029C,029E

     �¿ÁÀ      File not found.
  "   	ˆl–Ü4ý()¨‰P@Š	›Œ·q ©‹FÿÄƒh¹ÂÁ      	0
  "   ˆl–Ðz¾”Jj"TÒ�zàœ¸”Å£Åƒ|¿ÃÂ #O    #!/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_dom