#!/usr/local/cpanel/3rdparty/bin/perl
#                                      Copyright 2024 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 autofixer2::update_elevate_script;

use strict;
use warnings;
use Carp;
use Cpanel::OS ();
use HTTP::Tiny ();
use File::Temp ();

my $elevate_script_file = '/usr/local/cpanel/scripts/elevate-cpanel';
my $elevate_script_url  = 'https://raw.githubusercontent.com/cpanel/elevate/release/elevate-cpanel';

exit run() unless caller;

sub run {

    return 0 unless supported_on_this_major( 104, 110 );    # Set this to the Min/Max we support this autofixer on.

    # Should only run on C7
    return 0 if ( Cpanel::OS::major() != 7 );

    # Update not needed if script doesn't exist
    return 0 unless ( -e $elevate_script_file );

    my $response = HTTP::Tiny->new()->get($elevate_script_url);

    if ( !$response->{success} ) {
        croak "Download from $elevate_script_url failed: " . $response->{content};
    }

    open my $fh, '>', $elevate_script_file or croak "Unable to open $elevate_script_file: $!";
    print {$fh} $response->{content};
    close $fh;
    chmod 0700, $elevate_script_file;

    return 0;    # exit(0);
}

# Do we run this code?
sub supported_on_this_major {
    my ( $min_ver, $max_ver ) = @_;

    my $major = get_major_version();

    return 0 if $major < $min_ver;
    return 0 if $major > $max_ver;

    return 1;
}

sub get_major_version {
    my $major_version;

    if ( open( my $fh, '<', '/usr/local/cpanel/version' ) ) {
        my $full_version = <$fh>;
        close($fh);
        if ( length $full_version ) {
            chomp $full_version;
            ($major_version) = $full_version =~ /^[0-9]+\.([0-9]+)/;
        }
    }

    # Safe default.
    return $major_version || 30;
}

1;
