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

#                                      Copyright 2025 WebPros International, LLC
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited.

package scripts::servicedomains;

use strict;
use warnings;

use Cpanel::Config::LoadCpConf ();
use Cpanel::Hostname           qw( gethostname );
use Cpanel::Proxy              ();
use Cpanel::Server::Type       qw( is_dnsonly );
use Getopt::Long;
use Pod::Usage;

exit( __PACKAGE__->script(@ARGV) );

sub script {    ## no critic qw(Subroutines::ProhibitExcessComplexity)
    my ( $class, @args ) = @_;

    if ( $> != 0 ) {
        die "Must be root to run $0";
    }

    # process arguments
    my $help;
    my $user;
    my $domain;
    my $man;
    my $subdomain;
    my $force_autodiscover_support;
    my $allow_disabled;
    my $old_autodiscover_host;
    my $no_replace;
    my $ifenabled;
    Getopt::Long::GetOptionsFromArray(
        \@args,
        'domain=s'                     => \$domain,
        'force_autodiscover_support=s' => \$force_autodiscover_support,
        'allow_disabled'               => \$allow_disabled,
        'help'                         => \$help,
        'man'                          => \$man,
        'no_replace=s'                 => \$no_replace,
        'old_autodiscover_host=s'      => \$old_autodiscover_host,
        'subdomain=s'                  => \$subdomain,
        'user=s'                       => \$user,
        'ifenabled'                    => \$ifenabled,
    ) || pod2usage("Invalid options");

    if ($ifenabled) {
        my $conf = Cpanel::Config::LoadCpConf::loadcpconf_not_copy();
        if ( !$conf->{proxysubdomains} ) {
            print "Service subdomains are not enabled; there is nothing to do.\n";
            return;
        }
    }

    my $action = shift @args || ( $help = 1 );
    $action = lc $action if $action;

    # validate

    if ( $user && $domain ) {
        pod2usage("User and Domain cannot be specified at the same time");
    }

    if ( ( $domain eq Cpanel::Hostname::gethostname() ) && Cpanel::Server::Type::is_dnsonly() ) {
        pod2usage("Service subdomains cannot be applied to the hostname of a DNSONLY system.");
    }

    if ( !$help && $action ne 'add' && $action ne 'remove' ) {
        pod2usage("Invalid action ($action) specified");
    }

    my @subdomains;
    if ( defined $subdomain ) {
        @subdomains = split( m{,}, $subdomain );
        if ( grep ( !m/^(?:webmail|webdisk|cpcalendars|cpcontacts|whm|cpanel|autoconfig|autodiscover)$/, @subdomains ) ) {
            pod2usage("Invalid subdomain specified, must be: whm, cpanel, webmail, webdisk, cpcalendars, cpcontacts, autoconfig, and autodiscover");
        }
    }

    pod2usage( { -verbose => 2 } ) if $man;
    pod2usage(1)                   if $help;

    # dispatch

    my %args = ();
    my $function;

    if ($force_autodiscover_support) {
        $args{'force_autodiscover_support'} = 1;
    }

    if ($allow_disabled) {
        $args{'include_disabled'} = 1;
    }

    if ( defined $no_replace ) {
        $args{'no_replace'} = $no_replace;    # we have to replace the old records
    }

    if ($old_autodiscover_host) {
        $args{'old_autodiscover_host'} = $old_autodiscover_host;
    }

    if (@subdomains) {
        $args{'subdomain'} = \@subdomains;
    }

    if ( $action eq 'add' ) {
        if ($user) {
            print "Adding service subdomains for user ${user}.\n";
            $args{'user'} = $user;
            my ( $status, $msg, $results ) = Cpanel::Proxy::setup_proxy_subdomains(%args);    # issafe
            foreach my $response ( sort { $a->{'domain'} cmp $b->{'domain'} } @{ $results->{'domain_status'} } ) {
                print _pad( $response->{'domain'}, 35 ) . $response->{'msg'} . "\n";
            }

            print $msg . "\n" if $msg;
            return 1          if !$status;
        }
        elsif ($domain) {
            print "Adding service subdomains for domain ${domain}.\n";
            $args{'domain'} = $domain;
            my ( $status, $msg, $results ) = Cpanel::Proxy::setup_proxy_subdomains(%args);    # issafe
            foreach my $response ( sort { $a->{'domain'} cmp $b->{'domain'} } @{ $results->{'domain_status'} } ) {
                print _pad( $response->{'domain'}, 35 ) . $response->{'msg'} . "\n";
            }

            print $msg . "\n" if $msg;
            return 1          if !$status;
        }
        else {
            print "Adding service subdomains for all users.\n";
            print "This may take several minutes if there are many accounts on the system.\n";
            my $rsp = Cpanel::Proxy::setup_all_proxy_subdomains(%args);                       # issafe
            foreach my $response ( @{$rsp} ) {
                print _pad( $response->{'domain'}, 35 ) . $response->{'msg'} . "\n";
            }
            return 0;
        }
    }
    elsif ( $action eq 'remove' ) {
        if ($user) {
            print "Removing service subdomains for user ${user}.\n";
            $args{'user'} = $user;
            my ( $status, $msg, $results ) = Cpanel::Proxy::remove_proxy_subdomains(%args);    # issafe
            foreach my $response ( sort { $a->{'domain'} cmp $b->{'domain'} } @{ $results->{'domain_status'} || [] } ) {
                print _pad( $response->{'domain'}, 35 ) . $response->{'msg'} . "\n";
            }

            print $msg . "\n" if $msg;
            return 1          if !$status;
        }
        elsif ($domain) {
            print "Removing service subdomains for domain ${domain}.\n";
            $args{'domain'} = $domain;
            my ( $status, $msg, $results ) = Cpanel::Proxy::remove_proxy_subdomains(%args);    # issafe
            foreach my $response ( sort { $a->{'domain'} cmp $b->{'domain'} } @{ $results->{'domain_status'} || [] } ) {
                print _pad( $response->{'domain'}, 35 ) . $response->{'msg'} . "\n";
            }

            print $msg . "\n" if $msg;
            return 1          if !$status;
        }
        else {
            print "Removing service subdomains for all users.\n";
            print "This may take several minutes if there are many accounts on the system.\n";
            my $rsp = Cpanel::Proxy::remove_all_proxy_subdomains(%args) || [];                 # issafe
            foreach my $response ( @{$rsp} ) {
                print _pad( $response->{'domain'}, 35 ) . $response->{'msg'} . "\n";
            }
            return 0;
        }
    }

    return 0;
}

sub _pad {
    my ( $text, $length ) = @_;

    if ( length($text) > $length ) {
        return substr( $text, 0, ( $length - 1 ) ) . '…';
    }
    else {
        return $text . ( ' ' x ( $length - length $text ) );
    }
}

__END__

=head1 NAME

servicedomains - Add or remove service subdomains

=head1 SYNOPSIS

servicedomains [action] [options]

    Options:
      --help                          Brief help message
      --man                           Full help message
      --user=                         User to configure
      --domain=                       Domain to configure
      --subdomain=                    Service subdomain to manipulate
      --no_replace=0                  Enable replacment of existing records (currently
                                      only used for changing autodiscover hosts)
      --old_autodiscover_host=        The previously configured autodiscover host (used
                                      for matching old records and updating them to the
                                      new host)
      --force_autodiscover_support=1  Behave as if the autodiscover support has not been
                                      disabled even if it has. This is useful for
                                      removing the autodiscovery service subdomains after
                                      the support for them has been disabled.
      --ifenabled                     Only perform the operation if service subdomains
                                      are enabled.

    Actions:
      add          Create service subdomains
      remove       Remove service subdomains

=head1 DESCRIPTION

This script creates the DNS records required to use cpanel.domain.com,
webmail.domain.com, webdisk.domain.com, whm.domain.com, cpcontacts.domain.com,
and cpcalendars.domain.com service redirect domains. This script will add the
required subdomains to the main domain's DNS record without creating any
matching VirtualHost entry in httpd.conf. When the service domains setting in
the WebHostManger Tweak Settings has also been enabled, this will allow http
and https connections to cpanel.domain.com to be internally proxied to
port 2082, webmail.domain.com to port 2095, webdisk.domain.com to port 2077,
whm.domain.com to port 2086, and cpcalendars.domain.com and cpcontacts.domain.com
to port 2079.

When no --user or --domain argument is supplied this script will attempt to
configure the service subdomains for all cPanel accounts.

If no --user or --domain argument is supplied and
the system will not configure autoconfig, autodiscover, or SRV
records for domains that are not listed in /etc/localdomains.

When --subdomain is specified, this script will only add or remove the
specified service subdomain.  When no --subdomain is specified, it will
add or remove all four service subdomains.

The --ifenabled flag causes the script to immediately exit if service subdomains
are not enabled. This may be used as a convenience in cases where systems that
already have service subdomains need to have all of them updated, but systems that
don't have service subdomains should be left alone.

=cut
Gay Pornography Blog Explicit images and videos offering the newest homosexual porno moments & pornography stars

Gay Pornography Blog Explicit images and videos offering the newest homosexual porno moments & pornography stars

Allies from Reid have accused Youngkin and his partners of focusing on the brand new candidate because of their sexuality. Reid are Virginia’s basic publicly homosexual statewide nominee. Reid has declined the newest account are their and you can would not action away — leaving group loyal scrambling in order to unite regarding the half a year from the state’s bellwether 2025 from-year election. Okay, very I’m pretty sure all of these movies are novice.

Anna beggion sex videos: Implant it video clips on the page using this code

Research and acquire all anna beggion sex videos of the gender information of the greatest homosexual pornography celebrities on the adult industry. Find in which gay porn video clips he’s played thanks to these IMDB gay adult film database and you may homosexual p… Check out 100 percent free Hd gay rape porn fantasy video to the very popular homosexual pornography hoses worldwide.

BongHunk – Day sex with my date

This site has been in existence for only nine weeks, or at least it seems like one to, and they curently have a significant-measurements of video clips collection. Their upload plan are both insane, otherwise they just ensured that people features lots of posts to watch right away. In either case, you will not use up all your what to observe anytime soon, so you have absolutely nothing to consider. Unlike pushing you to definitely read the latest content, they just state new stuff is coming every day, that is good enough for me personally. Although not, the greater amount of bottom line is whether or not these moments look nice otherwise not, thus why don’t we see. Scott DeMarco and you will Filou Fitt have created an intimate atmosphere which have delicate lights as they hug and you can strip down one another for the sleep.

Check out and you can download full-length 720p/1080p/4K High definition vintage homosexual porn video clips in the most famous homosexual porn studios. Load private classic gay adult Cds that have old-fashioned male porn superstars from the 60s, 70s… Observe free High definition homosexual bareback porn movies on the most widely used homosexual intercourse tubes worldwide. Discover explicit gay porno video out of sensuous men and men pornography superstars having rectal intercourse without condom. Check out and you can install 720p/1080p/4K homosexual twink porn movies in the most well-known homosexual porn studios. Weight private full-duration homosexual gender movies from adorable slim guys, sexy 18-year-dated males and you will younger male po…

Best Yaoi Manga Web sites

anna beggion sex videos

“People on line can be unlock profile with the exact same or equivalent brands while the someone else.

Or maybe you want gay shag movies having shy males and masculine alphas? Our curator ensures you have made an informed mature homosexual banging vids. Are you searching for the most popular gay pornography videos?

Gay Porn POV: Alex Kof Takes Angelo Sin’s Huge Penis

Stream exclusive complete-size gay intercourse video with nasty men porn stars pissing, pooping, farting and you may eat… View and you can download 720p/1080p/4K homosexual bareback porno video on the most famous gay pornography studios. Load private full-length homosexual sex videos away from gorgeous people screwing both anally with no condom!

We’ve got obtained the best of the best all-in-one place in order to take pleasure in high quality pornography videos, amateur homosexual intercourse movies, passionate photos and you can gifs and so much more. Do not hesitate to search all of our larger, heavy collection of movies and select away from a variety of video classes and. A robust look setting places the advantage on your own give when you are helpful sorting and you may filter systems enables you to easily view the current or most popular homosexual Adult inside a pinch.


Publicado

en

por

Etiquetas: