403Webshell
Server IP : 192.64.118.117  /  Your IP : 3.148.113.167
Web Server : LiteSpeed
System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User : thecgapy ( 1160)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/thecgapy/mobilecreationz.com/wp-content/plugins/e-signature/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/thecgapy/mobilecreationz.com/wp-content/plugins/e-signature/includes/Esign-add-on.php
<?php

/**
 *  addons check for active add-ons and premium add-ons / managins addons 
 */
class Esig_Addons {

    const ESIGN_ADDON_OPTION = "esign_addon_option";

    private static $active_addons = array();

    public static function init() {
        self::$active_addons = self::get_addons_setting();
        if (!is_array(self::$active_addons)) {
            self::$active_addons = self::default_active_addons();
        }
        self::load_addons();
    }

    public static function get_addons_setting() {
        return json_decode(WP_E_Sig()->setting->get_generic(self::ESIGN_ADDON_OPTION), true);
    }

    public static function get_active_addons() {
        return self::$active_addons;
    }

    private static function save_addons_setting($addons) {
        WP_E_Sig()->setting->set_generic(self::ESIGN_ADDON_OPTION, json_encode($addons));
    }

    public static function activate($addon_file) {

        if (($key = array_search($addon_file, self::$active_addons)) === false) {
            self::$active_addons[] = $addon_file;
            // saving active addons now . 
            self::save_addons_setting(self::$active_addons);

            self::isBusinessPackActive();

            return true;
        }

        if (self::is_exists_in_plugindir($addon_file)) {
            activate_plugins($addon_file);
        }
    }

    public static function deactivate($addon_file) {


        // deactivate from add on folder 
        if (($key = array_search($addon_file, self::$active_addons)) !== false) {
            unset(self::$active_addons[$key]);
            // save active_addons now . 
            self::save_addons_setting(self::$active_addons);
            return true;
        }

        deactivate_plugins($addon_file);
    }

    public static function is_buildin_addon($addon_file) {
        if (file_exists(ESIGN_PLUGIN_PATH . DS . "add-ons/" . $addon_file)) {
            return true;
        } else {
            return false;
        }
    }

    public static function get_business_pack_path() {
        return WP_PLUGIN_DIR . '/e-signature-business-add-ons/';
    }

    /**
     * Default is to activate all add-ons
     * @return array
     */
    public static function default_active_addons() {
        $addons = self::get_addons();
        $active_addons = array();
        foreach ($addons as $path => $details) {
            $active_addons[] = $path;
        }
        return $active_addons;
    }

    /**
     * Is addon enabled
     * @param string  $addon path of the plugin
     * @return boolean
     */
    public static function is_enabled($addon_file) {

        if (in_array($addon_file, self::$active_addons)) {
            return true;
        }

        if (is_plugin_active($addon_file)) {
            return true;
        }

        return false;
    }

    public static function load_addons() {

        //backward compatability . 

        $addons = self::get_addons();
        foreach ($addons as $path => $data) {

            if (in_array($path, self::$active_addons)) {

                if (self::is_addons_exist_inbusiness($path)) {
                    require self::get_install_dir() . $path;
                } else {

                    require ESIGN_PLUGIN_PATH . '/add-ons/' . $path;
                }
            }
        }
    }

    /**
     * Delete add-ons which bundled and installed previously in plugins folder 
     * @param type $path 
     */
    public static function backward_addons_delete() {

        /* $backward_addons = array(
          "esig-document-activity-notifications/esig-dan.php",
          "esig-save-as-pdf/esig-pdf.php",
          "esig-signer-input-fields/esig-sif.php"
          );

          if (file_exists(WP_PLUGIN_DIR . "/esig-signer-input-fields/uninstall.php")) {
          error_reporting(0);
          @unlink(WP_PLUGIN_DIR . "/esig-signer-input-fields/uninstall.php");
          }

          foreach ($backward_addons as $path) {
          if (file_exists(WP_PLUGIN_DIR . "/" . $path)) {
          error_reporting(0);
          $plugins = get_plugin_files($path);
          $deleted = delete_plugins($plugins);
          }
          } */
    }

    private static function get_addons($addon_folder = '') {

        if (!$cache_addons = wp_cache_get('esig_addons', 'esig_addons')) {
            $cache_addons = array();
        }

        if (is_array($cache_addons) && isset($cache_addons[$addon_folder])) {
            return apply_filters('esig_get_addons', $cache_addons[$addon_folder], true);
        }

        $esig_addons = array();
        $addon_root = ESIGN_PLUGIN_PATH . '/add-ons/';

        if (!empty($addon_folder)) {
            $addon_root .= $addon_folder;
        }

        // Files in wp-content/addons directory
        $addons_dir = @ opendir($addon_root);

        $addon_files = array();
        if ($addons_dir) {
            while (($file = readdir($addons_dir) ) !== false) {
                if (substr($file, 0, 1) == '.') {
                    continue;
                }
                if (is_dir($addon_root . '/' . $file)) {
                    $addons_subdir = @ opendir($addon_root . '/' . $file);
                    if ($addons_subdir) {
                        while (( $subfile = readdir($addons_subdir) ) !== false) {
                            if (substr($subfile, 0, 1) == '.') {
                                continue;
                            }
                            if (substr($subfile, -4) == '.php') {
                                $addon_files[] = "$file/$subfile";
                            }
                        }
                        closedir($addons_subdir);
                    }
                } else {
                    if (substr($file, -4) == '.php') {
                        $addon_files[] = $file;
                    }
                }
            }
            closedir($addons_dir);
        }



        if (empty($addon_files)) {
            return apply_filters('esig_get_addons', $esig_addons);
        }

        foreach ($addon_files as $addon_file) {
            if (!is_readable("$addon_root/$addon_file")) {
                continue;
            }

            $addon_data = self::get_addon_data("$addon_root/$addon_file");

            if (empty($addon_data['Name'])) {
                continue;
            }

            $esig_addons[plugin_basename($addon_file)] = $addon_data;
        }

        // get business pack add-ons 
        $esig_addons = self::get_business_addons($esig_addons);

        $cache_addons[$addon_folder] = $esig_addons;
        wp_cache_set('esig_addons', $cache_addons, 'esig_addons');

        return apply_filters('esig_get_addons', $esig_addons);
    }

    public static function get_business_addons($esig_addons) {

        //getting business pack add-ons 
        $addons_dir = @ opendir(self::get_business_pack_path());
        $addon_files = array();
        if ($addons_dir) {
            while (($file = readdir($addons_dir) ) !== false) {
                if (substr($file, 0, 1) == '.') {
                    continue;
                }
                if (is_dir(self::get_business_pack_path() . $file)) {

                    $addons_subdir = @ opendir(self::get_business_pack_path() . $file);
                    if ($addons_subdir) {
                        while (( $subfile = readdir($addons_subdir) ) !== false) {
                            if (substr($subfile, 0, 1) == '.') {
                                continue;
                            }
                            if (substr($subfile, -4) == '.php') {
                                $addon_files[] = "$file/$subfile";
                            }
                        }
                        closedir($addons_subdir);
                    }
                } else {
                    if (substr($file, -4) == '.php') {
                        $addon_files[] = $file;
                    }
                }
            }
            closedir($addons_dir);
        }

        if (empty($addon_files)) {
            return apply_filters('esig_get_addons', $esig_addons);
        }

        foreach ($addon_files as $addon_file) {
            if (!is_readable(self::get_business_pack_path() . $addon_file)) {
                continue;
            }

            $addon_data = self::get_addon_data(self::get_business_pack_path() . $addon_file);

            if (empty($addon_data['Name'])) {
                continue;
            }

            $esig_addons[plugin_basename($addon_file)] = $addon_data;
        }

        return $esig_addons;
    }

    public static function get_addon_data($addon_file) {

        if (!file_exists($addon_file)) {
            return false;
        }
        $default_headers = array(
            'Name' => 'Name',
            'pName' => 'Plugin Name',
            'PluginURI' => 'URI',
            'Version' => 'Version',
            'Description' => 'Description',
            'Author' => 'Author',
            'AuthorURI' => 'Author URI',
            'Documentation' => 'Documentation',
        );

        $addon_data = get_file_data($addon_file, $default_headers, 'plugin');
        if (empty($addon_data['Name']) && !empty($addon_data['pName'])) {
            $addon_data['Name'] = $addon_data['pName'];
        }
        $addon_data['Title'] = $addon_data['Name'];
        $addon_data['AuthorName'] = $addon_data['Author'];

        return $addon_data;
    }

    public static function get_addon_key($addon_file = '', $data = array()) {
        if (empty($data)) {
            $data = self::get_addon_data($addon_file);
        }
        $key = str_replace('.php', '', $data['Name']);
        return sanitize_title($key);
    }

    public static function get_all_addons() {

        $build_in_addons = self::get_addons();
        // wp core add-ons 
        $wp_addons = get_plugins();

        return array_merge($build_in_addons, $wp_addons);
    }

    public static function get_buildin_addon_dir() {
        return ESIGN_PLUGIN_PATH . DS . "add-ons/";
    }

    public static function get_install_dir($folder_name = false) {

        if (!$folder_name) {
            return WP_PLUGIN_DIR . "/e-signature-business-add-ons/";
        }
        if ($folder_name == "e-signature-business-add-ons") {
            return WP_PLUGIN_DIR . "/" . $folder_name;
        }
        if (!self::is_business_pack_exists()) {
            wp_mkdir_p(WP_PLUGIN_DIR . "/e-signature-business-add-ons");
            return WP_PLUGIN_DIR . "/e-signature-business-add-ons/" . $folder_name;
        } else {
            return WP_PLUGIN_DIR . "/e-signature-business-add-ons/" . $folder_name;
        }
        return WP_PLUGIN_DIR . "/";
    }

    public static function is_business_pack_exists() {

        if (file_exists(WP_PLUGIN_DIR . "/e-signature-business-add-ons/")) {
            return true;
        } else {
            return false;
        }
    }

    public static function is_exists_in_plugindir($plugin_file) {

        if (file_exists(WP_PLUGIN_DIR . "/" . $plugin_file)) {
            return true;
        } else {
            return false;
        }
    }

    public static function is_addons_exist_inbusiness($path) {

        if (file_exists(self::get_install_dir() . $path)) {
            return true;
        }
        return false;
    }

    public static function get_update_dir($plugin_file) {

        if (self::is_buildin_addon($plugin_file)) {
            return self::get_buildin_addon_dir();
        } else if (self::is_business_pack_exists()) {
            return self::get_install_dir();
        } else {
            return WP_PLUGIN_DIR . "/";
        }
    }

    // old alrady installed add-on compatablity 
    public static function find_old_installed_addon() {

        $old_addons = get_plugins();
        $found = false;
        foreach ($old_addons as $plugin_file => $plugin_data) {

            $plugin_name = $plugin_data['Name'];
            if (preg_match("/esig/", $plugin_file)) {

                if ($plugin_name != "WP E-Signature" && $plugin_name != 'WP E-Signature Updater') {
                    $found = true;
                    break;
                }
            }
        }
        return $found;
    }

    public static function is_old_addons_exists($folder_name) {

        if (file_exists(WP_PLUGIN_DIR . "/" . $folder_name)) {
            return true;
        } else {
            return false;
        }
    }

    public static function get_installed_directory($folder_name) {

        if (self::is_addons_exist_inbusiness($folder_name)) {
            return self::get_business_pack_path();
        } else if (self::is_buildin_addon($folder_name)) {
            return self::get_buildin_addon_dir();
        } else {
            return WP_PLUGIN_DIR . "/";
        }
    }

    public static function is_updates_available() {
        
        if (!get_transient('esign-update-list')) {
            return false;
        }
        if(!self::is_business_pack_exists()){
            return false;
        }
        $plugin_list = json_decode(get_transient('esign-update-list'));
        if (!is_object($plugin_list)) {
            return false;
        }
        foreach ($plugin_list as $plugin) {
            $folderName = trim($plugin->download_name, ".zip");
            $newVersion = $plugin->new_version;
            $addon = new WP_E_Addon();
            $addon_files = $addon->esig_get_addons_file_path($folderName);
            $file = Esig_Addons::get_business_pack_path() . $addon_files;
            if (file_exists($file)) {
                $oldVersion = getAddonVersion($file);
                if (version_compare($oldVersion, $newVersion, '<')) {
                    return true;
                }
            }
        }

        return false;
    }

    public static function empty_updates_available() {
        delete_transient('esign-addons-updates-available');
        delete_transient('esign-message');
        delete_transient('esign-auto-downloads');    
    }

    public static function get_business_pack_link() {

        if (!self::is_updates_available()) {
            return false;
        }
        if (self::find_old_installed_addon()) {
            return false;
        }

        $plugin_list = json_decode(get_transient('esign-update-list'));

        if (isset($plugin_list->business_pack)) {
            $business = $plugin_list->business_pack;

            return $business->download_link;
        }
        return false;
    }

    public static function get_delete_path($folder_name) {

        if (self::is_addons_exist_inbusiness($folder_name)) {
            return "e-signature-business-add-ons/" . $folder_name;
        } elseif (self::is_buildin_addon($folder_name)) {

            return "e-signature/add-ons/" . $folder_name;
        } else {
            return $folder_name;
        }
    }

    public static function esig_get_update_list() {
        $update_list = get_transient('esign-update-list');
        if ($update_list) {
            return $update_list;
        } else {
            return false;
        }
    }

    public static function is_core_updates_available() {

        $current = get_site_transient('update_plugins');

        if (!isset($current->response[ESIGN_PLUGIN_BASENAME]))
            return false;

        $r = $current->response[ESIGN_PLUGIN_BASENAME];

        if (version_compare(esigGetVersion(), $r->new_version, '<')) {
            return true;
        } else {
            return false;
        }
    }

    public static function esig_create_plugin_files() {
        if (self::is_business_pack_exists()) {
            $file = self::get_business_pack_path() . "e-signature-business-add-ons.php";
            if (!file_exists($file)) {
                // $myfile = fopen(self::get_business_pack_path() . "e-signature-business-add-ons.php", "w") or die("Unable to open file!");
                $txt = "<?php
/*
  Plugin Name: WP E-Signature Business add-ons
  Description: Legally sign and collect signatures on documents, contracts, proposals, estimates and more using WP E-Signature.
  Version: 1.4.5.2
  Author: Approve Me
  Author URI: https://www.approveme.com
  Contributors: Kevin Michael Gray, Micah Blu, Michael Medaglia, Abu Shoaib, Earl Red, Pippin Williamson
  Text Domain: esig-business
  Domain Path:       /languages
  License/Terms and Conditions: https://www.approveme.com/terms-conditions/
  License/Terms of Use: https://www.approveme.com/terms-of-use/
  Privacy Policy: https://www.approveme.com/privacy-policy/
 */
 
  // If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) 
{
	die;
}";
                if (!@file_put_contents($file, $txt)) {

                    $sigfile = @fopen($file, "w") or die("Unable to open file!");

                    @fwrite($file, $txt);

                    fclose($file);
                }
            }
        }
    }

    public static function esig_object_sort($all_addons_list) {

        $json_encode = json_encode($all_addons_list);

        $array = json_decode($json_encode, true);


        uasort($array, array(__CLASS__, "sort_cmp"));


        return json_decode(json_encode($array));
    }

    private static function sort_cmp($a, $b) {
        if (!isset($a["addon_name"])) {
            return false;
        }

        return strcmp($a["addon_name"], $b["addon_name"]);
    }

    private static function isBusinessPackActive() {
        $plugin = "e-signature-business-add-ons/e-signature-business-add-ons.php";
        if (!self::is_business_pack_exists()) {
            return false;
        }
        if (!is_plugin_active($plugin)) {
            $current = get_option('active_plugins', array());
            $current[] = $plugin;
            sort($current);
            update_option('active_plugins', $current);
        }
    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit