Server IP : 66.29.132.124 / Your IP : 3.145.88.101 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/book24.ng/modules/Core/Admin/ |
Upload File : |
<?php /** * Created by PhpStorm. * User: Admin * Date: 9/6/2019 * Time: 1:24 PM */ namespace Modules\Core\Admin; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Auth; use Modules\AdminController; use Modules\Core\Models\Settings; class UpdaterController extends AdminController { public function __construct() { $this->setActiveMenu(route('core.admin.tool.index')); parent::__construct(); } public function index(){ $data = [ 'ready_for_update'=>(setting_item('envato_license_key') and setting_item('envato_username')) ? true : false ]; $this->checkPermission('system_log_view'); return view('Core::admin.updater.index',$data); } public function checkUpdate(){ $this->checkPermission('system_log_view'); if(!setting_item('envato_license_key') or !setting_item('envato_username')) { return redirect()->back()->with('danger',__("Please enter license key")); } $url = config('app.updater_url'); $data = file_get_contents_curl($url,true,[ 'envato_license_key'=>setting_item('envato_license_key'), 'envato_username'=>setting_item('envato_username'), 'action'=>'check_update', 'domain'=>\request()->getHost(), 'product'=>'bookingcore', ]); $data_json = json_decode($data,true); if(!$data or empty($data_json)) { return redirect()->back()->with('danger',__("Can not connect to update server. Please check again")); } Settings::store('last_check_update',time()); if(!empty($data_json['version'])) { Settings::store('updater_latest_version',$data_json['version']); } if(!empty($data_json['message'])) { return redirect()->back()->with($data_json['status'] ? 'success' : 'danger',__("Can not connect to update server. Please check again")); } return redirect()->back(); } public function doUpdate(){ set_time_limit(0); ini_set('max_execution_time', '0'); $this->checkPermission('system_log_view'); $updater_latest_version = setting_item('updater_latest_version'); if(empty($updater_latest_version) or version_compare(config('app.version'),$updater_latest_version,'>=')){ return $this->sendError(__("You are using latest version of Booking Core")); } if(!class_exists('\ZipArchive')) { return $this->sendError("Your server does not support ZipArchive libraries. Please contact your hosting to install it or do update manually"); } // Try to set folder permission $this->chmod_r(base_path(),0755,0755); if(!is_writable(base_path())) { return $this->sendError("The root folder is not able to write"); } $url = config('app.updater_url'); $data = file_get_contents_curl($url,true,[ 'envato_license_key'=>setting_item('envato_license_key'), 'envato_username'=>setting_item('envato_username'), 'action'=>'get_update', 'domain'=>\request()->getHost(), 'product'=>'bookingcore' ]); $data_json = json_decode($data,true); if(!$data or empty($data_json)) { return $this->sendError("Can not connect to update server. Please check again"); } if(empty($data_json['file'])) { return $this->sendError(__("Can not get update file from server")); } $zip_file_tmp = storage_path('tmp-update.zip'); try { $this->downloadFile($data_json['file'], $zip_file_tmp); }catch (\Exception $exception){ return $this->sendError("downloadFile: ".$exception->getMessage()); } if(!file_exists($zip_file_tmp)) { return $this->sendError(__("Can not download update file to folder storage")); } $check = $this->unzipFile($zip_file_tmp,base_path()); if($check){ Settings::store('updater_last_success',time()); return $this->sendSuccess([],__("Update Success")); }else{ return $this->sendError(__("Can not un-zip the package")); } } protected function unzipFile($file,$path){ $zip = new \ZipArchive; $res = $zip->open($file); if ($res === TRUE) { // extract it to the path we determined above $zip->extractTo($path); $zip->close(); return true; } else { return false; } } private function downloadFile($url, $filepath) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); $raw_file_data = curl_exec($ch); if(curl_errno($ch)){ return false; } curl_close($ch); file_put_contents($filepath, $raw_file_data); return (filesize($filepath) > 0)? true : false; } public function storeLicense(){ $this->checkPermission('system_log_view'); \request()->validate([ 'envato_license_key'=>'required', 'envato_username'=>'required' ]); Settings::store('envato_license_key',trim(\request()->input('envato_license_key'))); Settings::store('envato_username',trim(\request()->input('envato_username'))); return redirect()->back()->withInput()->with('success',__("License information has been saved")); } protected function chmod_r($dir, $dirPermissions, $filePermissions) { $dp = opendir($dir); while ($file = readdir($dp)) { if (($file == ".") || ($file == "..")) continue; $fullPath = $dir . "/" . $file; if (strpos($fullPath, '.git') !== false or strpos($fullPath, 'node_modules') !== false or strpos($fullPath, 'public/uploads') !== false or strpos($fullPath, 'storage/') !== false ) { continue; } if (is_dir($fullPath)) { chmod($fullPath, $dirPermissions); $this->chmod_r($fullPath, $dirPermissions, $filePermissions); } else { chmod($fullPath, $filePermissions); } } closedir($dp); } }