Server : LiteSpeed
System : Linux premium92.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : rbnsfqys ( 805)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /home/rbnsfqys/ali.rbn.services/wp-content/plugins/Repairplugin-pro/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : /home/rbnsfqys/ali.rbn.services/wp-content/plugins/Repairplugin-pro/RepairpluginEnhanced.php
<?php



if(!class_exists("RepairpluginEnhanced")) {



	class RepairpluginEnhanced {



    	public $key = "434D48B5B65B1D56";



    	public $product_id = "3";



    	public $product_base = "enhanced-locations";



    	public $server_host = "https://license.repairplugin.com/wp-json/license-api/";



    	public $hasCheckUpdate=true;



    	public $isEncryptUpdate=false;



    	public $pluginFile;



        private static $selfobj=null;



        public $version="";



        public $isTheme=false;



        public $emailAddress = "";



        private static $_onDeleteLicense=[];



		public function __construct($plugin_base_file='')



		{



			$this->pluginFile=$plugin_base_file;



            $dir=dirname($plugin_base_file);



            $dir=str_replace('\\','/',$dir);



            if(strpos($dir,'wp-content/themes')!==FALSE){



                $this->isTheme=true;



            }



			$this->version=$this->getCurrentVersion();


            // Adding line of code back that lisent to license
            // server for updating license info immediately
            if( function_exists("add_action") ) {

                rp_add_action( 'init', [ $this, "initActionHandler" ] );

            }
            
            
		}



		public function setEmailAddress( $emailAddress ) {



            $this->emailAddress = $emailAddress;



        }



		public function initActionHandler(){



			$handler=hash("crc32b",$this->product_id.$this->key.$this->getDomain())."_handle";



			if(isset($_GET['action']) && $_GET['action']==$handler){



				$this->handleServerRequest();



				exit;



			}



		}



		public function handleServerRequest(){



			$type=isset($_GET['type'])?strtolower($_GET['type']):"";



			switch ($type) {



				case "rl": //remove license



					$this->cleanUpdateInfo();



					$this->removeOldWPResponse();



					$obj          = new stdClass();



					$obj->product = $this->product_id;



					$obj->status  = true;



					echo $this->encryptObj( $obj );



					



					return;



				case "rc": //remove license



					$key  = $this->getKeyName();



					rp_delete_option( $key );



					$obj          = new stdClass();



					$obj->product = $this->product_id;



					$obj->status  = true;



					echo $this->encryptObj( $obj );



					return;



				case "dl": //delete plugins



					$obj          = new stdClass();



					$obj->product = $this->product_id;



					$obj->status  = false;



					$this->removeOldWPResponse();



					require_once( ABSPATH . 'wp-admin/includes/file.php' );



					if ( $this->isTheme ) {



						$res = delete_theme( $this->pluginFile );



						if ( ! is_wp_error( $res ) ) {



							$obj->status = true;



						}



						echo $this->encryptObj( $obj );



					} else {



					    deactivate_plugins( [ plugin_basename( $this->pluginFile ) ] );



						$res = delete_plugins( [ plugin_basename( $this->pluginFile ) ] );



						if ( ! is_wp_error( $res ) ) {



							$obj->status = true;



						}



						echo $this->encryptObj( $obj );



					}



					



					return;



				default:



					return;



			}



		}



		/**



         * @param callable $func



         */



        static function addOnDelete( $func){



            self::$_onDeleteLicense[]=$func;



        }



		public function getCurrentVersion(){



			if( !function_exists('get_plugin_data') ){



				require_once( ABSPATH . 'wp-admin/includes/plugin.php' );



			}



			$data=get_plugin_data($this->pluginFile, true, false);



			if(isset($data['Version'])){



				return $data['Version'];



			}



			return 0;



		}



		public function cleanUpdateInfo(){



            rp_update_option('_site_transient_update_plugins','');



            rp_update_option('_site_transient_update_themes','');



            delete_transient($this->product_base."_up");



        }



        public function updateMessageCB($data, $response){



            if(is_array($data)){



                $data=(object)$data;



            }



            if(isset($data->package) && empty($data->package)) {



                if(empty($data->update_denied_type)) {



                    print  "<br/><span style='display: block; border-top: 1px solid #ccc;padding-top: 5px; margin-top: 10px;'>Please <strong>active product</strong> or  <strong>renew support period</strong> to get latest version</span>";



                }elseif($data->update_denied_type=="L"){



                    print  "<br/><span style='display: block; border-top: 1px solid #ccc;padding-top: 5px; margin-top: 10px;'>Please <strong>active product</strong> to get latest version</span>";



                }elseif($data->update_denied_type=="S"){



                    print  "<br/><span style='display: block; border-top: 1px solid #ccc;padding-top: 5px; margin-top: 10px;'>Please <strong>renew support period</strong> to get latest version</span>";



                }



            }



        }



		public function __plugin_updateInfo(){



            if(function_exists("wp_remote_get")) {



                $response = get_transient( $this->product_base."_up" );



                $oldFound = false;



                if ( ! empty( $response['data'] ) ) {



                    $response = unserialize( $this->decrypt( $response['data'] ) );



                    if ( is_array( $response ) ) {



                        $oldFound = true;



                    }



                }







                if ( ! $oldFound ) {



                    $licenseInfo=self::GetRegisterInfo();



                    $url=$this->server_host . "product/update/" . $this->product_id;



                    if(!empty($licenseInfo->license_key)) {



                        $url.="/".$licenseInfo->license_key."/".$this->version;



                    }



                    $args=[



                        'sslverify' => true,



                        'timeout' => 120,



                        'redirection' => 5,



                        'cookies' => array()



                    ];



                    $response = wp_remote_get( $url,$args);



                    if (is_wp_error($response)) {



                        $args['sslverify']=false;



                        $response = wp_remote_get( $url,$args);



                    }



                }







                if (!is_wp_error($response)) {



                    $body         = $response['body'];



                    $responseJson = @json_decode( $body );



                    if ( ! $oldFound ) {



                        set_transient( $this->product_base."_up", [ "data" => $this->encrypt( serialize( [ 'body' => $body ] ) ) ], DAY_IN_SECONDS );



                    }







                    if(!(is_object( $responseJson ) && isset($responseJson->status )) && $this->isEncryptUpdate){



                        $body=$this->decrypt($body,$this->key);



                        $responseJson = json_decode( $body );



                    }







                    if ( is_object( $responseJson ) && ! empty( $responseJson->status ) && ! empty( $responseJson->data->new_version ) ) {



                        $responseJson->data->slug = plugin_basename( $this->pluginFile );;



                        $responseJson->data->new_version = ! empty( $responseJson->data->new_version ) ? $responseJson->data->new_version : "";



                        $responseJson->data->url         = ! empty( $responseJson->data->url ) ? $responseJson->data->url : "";



                        $responseJson->data->package     = ! empty( $responseJson->data->download_link ) ? $responseJson->data->download_link : "";



                        $responseJson->data->update_denied_type     = ! empty( $responseJson->data->update_denied_type ) ? $responseJson->data->update_denied_type : "";







                        $responseJson->data->sections    = (array) $responseJson->data->sections;



                        $responseJson->data->plugin      = plugin_basename( $this->pluginFile );



                        $responseJson->data->icons       = (array) $responseJson->data->icons;



                        $responseJson->data->banners     = (array) $responseJson->data->banners;



                        $responseJson->data->banners_rtl = (array) $responseJson->data->banners_rtl;



                        unset( $responseJson->data->IsStoppedUpdate );







                        return $responseJson->data;



                    }



                }



            }







            return null;



        }



		public function PluginUpdate($transient)



		{



			$response = $this->__plugin_updateInfo();



			if(!empty($response->plugin)){



                if($this->isTheme){



                    $theme_data = wp_get_theme();



                    $index_name="".$theme_data->get_template();



                }else{



                    $index_name=$response->plugin;



                }



                if (!empty($response) && version_compare($this->version, $response->new_version, '<')) {



                    unset($response->download_link);



                    unset($response->IsStoppedUpdate);



                    if($this->isTheme){



                        $transient->response[$index_name] = (array)$response;



                    }else{



                        $transient->response[$index_name] = (object)$response;



                    }



                }else{



                    if(isset($transient->response[$index_name])){



                        unset($transient->response[$index_name]);



                    }



                }



            }



            return $transient;



		}



		public function checkUpdateInfo($false, $action, $arg) {



		    if ( empty($arg->slug)){



                return $false;



            }



			if($this->isTheme){



				if ( !empty($arg->slug) && $arg->slug === $this->product_base){



					$response =$this->__plugin_updateInfo();



					if ( !empty($response)) {



						return $response;



					}



				}



			}else{



				if ( !empty($arg->slug) && $arg->slug === plugin_basename($this->pluginFile) ) {



					$response =$this->__plugin_updateInfo();



					if ( !empty($response)) {



						return $response;



					}



				}



			}







			return $false;



		}







		/**



		 * @param $plugin_base_file



		 *



		 * @return self|null



		 */



		static function &getInstance($plugin_base_file=null) {



			if(empty(self::$selfobj)){



				if(!empty($plugin_base_file)) {



					self::$selfobj = new self( $plugin_base_file );



				}



			}



			return self::$selfobj;



		}



        static function getRenewLink($responseObj,$type="s"){



			if(empty($responseObj->renew_link)){



                return "";



            }



            $isShowButton=false;



            if($type=="s") {



                $support_str=strtolower( trim( $responseObj->support_end ) );



                if ( strtolower( trim( $responseObj->support_end ) ) == "no support" ) {



                    $isShowButton = true;



                } elseif ( !in_array($support_str, ["unlimited"] ) ) {



                    if ( strtotime( 'ADD 30 DAYS', strtotime( $responseObj->support_end ) ) < time() ) {



                        $isShowButton = true;



                    }



                }



                if ( $isShowButton ) {



                    return $responseObj->renew_link.(strpos($responseObj->renew_link,"?")===FALSE?'?type=s&lic='.rawurlencode($responseObj->license_key):'&type=s&lic='.rawurlencode($responseObj->license_key));



                }



                return '';



            }else{



                $isShowButton=false;



                $expire_str=strtolower( trim( $responseObj->expire_date ) );



                if ( !in_array($expire_str, ["unlimited","no expiry"] )) {



                    if ( strtotime( 'ADD 30 DAYS', strtotime( $responseObj->expire_date ) ) < time() ) {



                        $isShowButton = true;



                    }



                }



                if ( $isShowButton ) {



                    return $responseObj->renew_link.(strpos($responseObj->renew_link,"?")===FALSE?'?type=l&lic='.rawurlencode($responseObj->license_key):'&type=l&lic='.rawurlencode($responseObj->license_key));



                }



                return '';



            }



		}







		public function encrypt($plainText,$password='') {



			if(empty($password)){



				$password=$this->key;



			}



			$plainText=rand(10,99).$plainText.rand(10,99);



			$method = 'aes-256-cbc';



			$key = substr( hash( 'sha256', $password, true ), 0, 32 );



			$iv = substr(strtoupper(md5($password)),0,16);



			return base64_encode( openssl_encrypt( $plainText, $method, $key, OPENSSL_RAW_DATA, $iv ) );



		}



		public function decrypt($encrypted,$password='') {



			if(empty($password)){



				$password=$this->key;



			}



			$method = 'aes-256-cbc';



			$key = substr( hash( 'sha256', $password, true ), 0, 32 );



			$iv = substr(strtoupper(md5($password)),0,16);



			$plaintext=openssl_decrypt( base64_decode( $encrypted ), $method, $key, OPENSSL_RAW_DATA, $iv );



			return substr($plaintext,2,-2);



		}







		public function encryptObj( $obj ) {



			$text = serialize( $obj );







			return $this->encrypt( $text );



		}







		public function decryptObj( $ciphertext ) {



			$text = $this->decrypt( $ciphertext );







			return unserialize( $text );



		}







		public function getDomain() {
            
		    if(function_exists("site_url")){

                $site_url = str_replace('.transurl.nl', '', site_url());

                $site_url = str_replace(':443', '', $site_url);

                return $site_url;



            }



			if ( defined( "WPINC" ) && function_exists( "get_bloginfo" ) ) {

                $site_url = str_replace('.transurl.nl', '', get_bloginfo( 'url' ));

                $site_url = str_replace(':443', '', $site_url);

				return $site_url;



			} else {



				$base_url = ( ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == "on" ) ? "https" : "http" );



				$base_url .= "://" . $_SERVER['HTTP_HOST'];



				$base_url .= str_replace( basename( $_SERVER['SCRIPT_NAME'] ), "", $_SERVER['SCRIPT_NAME'] );


                $site_url = str_replace('.transurl.nl', '', $base_url);

                $site_url = str_replace(':443', '', $site_url);


				return $site_url;



			}



		}







		public function getEmail() {



            return $this->emailAddress;



        }



		public function processs_response($response){



			$resbk="";



			if ( ! empty( $response ) ) {



				if ( ! empty( $this->key ) ) {



					$resbk=$response;



					$response = $this->decrypt( $response );



				}



				$response = json_decode( $response );







				if ( is_object( $response ) ) {



					return $response;



				} else {


					$response=new stdClass();



					$response->status = false;



					$response->msg    = "Response Error, contact with the author or update the plugin or theme";



					if(!empty($bkjson)){



                        $bkjson=@json_decode($resbk);



                        if(!empty($bkjson->msg)){



                            $response->msg    = $bkjson->msg;



                        }



					}



					$response->data = NULL;



					return $response;







				}



			}



			$response=new stdClass();



			$response->msg    = "unknown response";



			$response->status = false;



			$response->data = NULL;







			return $response;



		}



		public function _request( $relative_url, $data, &$error = '' ) {

            $response         = new stdClass();

            $response->status = false;

            $response->msg    = "Empty Response";

            $response->is_request_error = false;

            $finalData        = json_encode( $data );

            if ( ! empty( $this->key ) ) {

                $finalData = $this->encrypt( $finalData );

            }

            $url = rtrim( $this->server_host, '/' ) . "/" . ltrim( $relative_url, '/' );

            $last_request = rp_curl_post( $url, $finalData, 15 ); // 15 seconds timeout

            if( empty( $last_request ) ) {

                $response->msg    = "Could not connect to the server";

                $response->status = false;

                $response->data = NULL;

                $response->is_request_error = true;

                return $response;

            }

            list( $info, $serverResponse, $error ) = $last_request;

            if( !empty( $error ) ) {

                $response->msg    = $error;

                $response->status = false;

                $response->data = NULL;

                $response->is_request_error = true;

                return $response;

            }

            if( empty( $serverResponse ) ) {

                $response->msg    = "Empty Response";

                $response->status = false;

                $response->data = NULL;

                $response->is_request_error = true;

                return $response;

            }

            if( ( $info['http_code'] ?? '') != 200 ) {

                $response->msg    = "Server Responded with " . $info['http_code'] . " and message: " . $serverResponse;

                $response->status = false;

                $response->data = NULL;

                $response->is_request_error = true;

                return $response;

            }

            return $this->processs_response( $serverResponse );

        }







		public function getParam( $purchase_key, $app_version, $admin_email = '' ) {



			$req               = new stdClass();



			$req->license_key  = $purchase_key;



			$req->email        = ! empty( $admin_email ) ? $admin_email : $this->getEmail();



			$req->domain       = $this->getDomain();



			$req->app_version  = $app_version;



			$req->product_id   = $this->product_id;



			$req->product_base = $this->product_base;







			return $req;



		}







		public function getKeyName() {



            return hash( 'crc32b', $this->getDomain() . $this->pluginFile . $this->product_id . $this->product_base . $this->key . "LIC" );



        }







        public function SaveWPResponse( $response ) {



            $key  = $this->getKeyName();



            $data = $this->encrypt( serialize( $response ), $this->getDomain() );



            rp_update_option( $key, $data );



        }







        public function getOldWPResponse() {
        	


            $key  = $this->getKeyName();



            $response = rp_get_option( $key, NULL );



            if ( empty( $response ) ) {



                return NULL;



            }







            return unserialize( $this->decrypt( $response, $this->getDomain() ) );



        }







        public function removeOldWPResponse() {



            $key  = $this->getKeyName();



            $isDeleted = rp_delete_option( $key );



            foreach ( self::$_onDeleteLicense as $func ) {



                if ( is_callable( $func ) ) {



                    call_user_func( $func );



                }



            }







            return $isDeleted;



        }



		public static function RemoveLicenseKey($plugin_base_file,&$message = "") {



			$obj=self::getInstance($plugin_base_file);



            $obj->cleanUpdateInfo();



			return $obj->_removeWPPluginLicense($message);



		}



		public static function CheckWPPlugin($purchase_key, $email,&$error = "", &$responseObj = null,$plugin_base_file="") {

			$obj=self::getInstance($plugin_base_file);



			$obj->setEmailAddress($email);



			return $obj->_CheckWPPlugin($purchase_key, $error, $responseObj);



		}



		public function _removeWPPluginLicense(&$message=''){



			$oldRespons=$this->getOldWPResponse();



			if(!empty($oldRespons->is_valid)) {



				if ( ! empty( $oldRespons->license_key ) ) {



					$param    = $this->getParam( $oldRespons->license_key, $this->version );



					$response = $this->_request( 'product/deactive/'.$this->product_id, $param, $message );



					if ( empty( $response->code ) ) {



						if ( ! empty( $response->status ) ) {



							$message = $response->msg;



							$this->removeOldWPResponse();



							return true;



						}else{



							$message = $response->msg;



						}



					}else{



						$message=$response->message;



					}



				}



			}else{



                $this->removeOldWPResponse();



				return true;



			}



			return false;







		}



		public static function GetRegisterInfo() {



			if(!empty(self::$selfobj)){



				return self::$selfobj->getOldWPResponse();



			}



			return null;







		}







		public function _CheckWPPlugin( $purchase_key, &$error = "", &$responseObj = null ) {

            if(empty($purchase_key)){



                $this->removeOldWPResponse();



                $error="";



                return false;



            }



            $oldRespons=$this->getOldWPResponse();



            $isForce=false;



            if(!empty($oldRespons)) {



                if ( ! empty( $oldRespons->expire_date ) && strtolower( $oldRespons->expire_date ) != "no expiry" && strtotime( $oldRespons->expire_date ) < time() ) {



                    if( (strtotime( $oldRespons->expire_date ) + (7 * 24 * 60 * 60)) < time() ) {

                        // If 7 days passed after expiry date then force to check license
						$isForce = true;

					} else {
                        
                        // get last forced update time
						$last_forced_time = rp_get_option( $this->product_base . $this->product_id . '_last_forced_time', 0 );

                        if( $last_forced_time === 0 || ($last_forced_time + 3600) < time() ) {

                            // One hour passed after last forced update time

							$isForce = true;

							rp_update_option( $this->product_base . $this->product_id . '_last_forced_time', time() );
                            
						}

                    }


                }



                if ( ! $isForce && ! empty( $oldRespons->is_valid ) && $oldRespons->next_request > time() && ( ! empty( $oldRespons->license_key ) && $purchase_key == $oldRespons->license_key ) ) {



                    $responseObj = clone $oldRespons;



                    unset( $responseObj->next_request );







                    return true;



                }



            }



            rp_update_option( $this->product_base . $this->product_id . '_last_forced_time', time() );



            $param    = $this->getParam( $purchase_key, $this->version );



            $response = $this->_request( 'product/active/'.$this->product_id, $param, $error );



            if(empty($response->is_request_error)) {



                if ( empty( $response->code ) ) {



                    if ( ! empty( $response->status ) ) {



                        if ( ! empty( $response->data ) ) {



                            $serialObj = $this->decrypt( $response->data, $param->domain );







                            $licenseObj = unserialize( $serialObj );



                            if ( $licenseObj->is_valid ) {



                                $responseObj           = new stdClass();



                                $responseObj->is_valid = $licenseObj->is_valid;



                                if ( $licenseObj->request_duration > 0 ) {



                                    $responseObj->next_request = strtotime( "+ {$licenseObj->request_duration} hour" );



                                } else {



                                    $responseObj->next_request = time();



                                }



                                $responseObj->expire_date   = $licenseObj->expire_date;



                                $responseObj->support_end   = $licenseObj->support_end;



                                $responseObj->license_title = $licenseObj->license_title;



                                $responseObj->license_key   = $purchase_key;



                                $responseObj->msg           = $response->msg;



                                $responseObj->renew_link           = !empty($licenseObj->renew_link)?$licenseObj->renew_link:"";



                                $responseObj->expire_renew_link           = self::getRenewLink($responseObj,"l");



                                $responseObj->support_renew_link           = self::getRenewLink($responseObj,"s");







                                //------------zartasha



                                $license_key = $responseObj->license_key;



				                $expiry_date = $responseObj->expire_date;



				                $status      = $responseObj->is_valid;



				                $license_type= $responseObj->license_title;



				                $duration    = $responseObj->support_end;



				                if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on'){



							        $domain = "https";



							    }else{ 



							    	$domain = "http";



								    $domain .= "://";



								    $domain .= $_SERVER['HTTP_HOST'];



								}

                                $last_request_result = \rp_curl_post( WP_REPAIR_BASE_SERVER_URL.'add_elite_clients', array( 'license_key' => $license_key,'expiry_date' => $expiry_date,'status' => $status, 'license_type' => $license_type,'duration' => $duration, 'domain' => $domain, 'license_email' => $param->email, 'license_domain' => $param->domain, 'license_app_version' => $param->app_version, 'product_id' => $this->product_id), 15 ); // 15 seconds timeout



				                //------end 



                                $this->SaveWPResponse( $responseObj );



                                unset( $responseObj->next_request );



                                delete_transient($this->product_base."_up");



                                return true;



                            } else {



                                if ( $this->__checkoldtied( $oldRespons, $responseObj, $response ) ) {



                                    return true;



                                } else {



                                    $this->removeOldWPResponse();



                                    $error = ! empty( $response->msg ) ? $response->msg : "";



                                }



                            }



                        } else {



                            $error = "Invalid data";



                        }







                    } else {



                        $error = $response->msg;



                    }



                } else {



                    $error = $response->message;



                }



            }else{



                if ( $this->__checkoldtied( $oldRespons, $responseObj, $response ) ) {



                    return true;



                } else {



                    $this->removeOldWPResponse();



                    $error = ! empty( $response->msg ) ? $response->msg : "";



                }



            }



            return $this->__checkoldtied($oldRespons,$responseObj);



        }



        public function __checkoldtied(&$oldRespons,&$responseObj){



            if(!empty($oldRespons) && (empty($oldRespons->tried) || $oldRespons->tried<=2)){



                $oldRespons->next_request = strtotime("+ 1 hour");



                $oldRespons->tried=empty($oldRespons->tried)?1:($oldRespons->tried+1);



                $responseObj = clone $oldRespons;



                unset( $responseObj->next_request );



                if(isset($responseObj->tried)) {



                    unset( $responseObj->tried );



                }



                $this->SaveWPResponse($oldRespons);



                return true;



            }



            return false;



        }



	}



}

F1le Man4ger