shell bypass 403
<?php namespace Modules\ModulesManager\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Controller; use GuzzleHttp\Client as GuzzleClient; use Modules\Core\Library\License; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Storage; use Modules\ModulesManager\Entities\PurchaseManager; class ModulesManagerController extends Controller { /** * Display a listing of the resource. * @return Response */ public function index(Request $request, License $license) { $products_purchased = PurchaseManager::all(); $data = $license->getListProducts('oneresumecv'); return view('modulesmanager::index', compact('data','products_purchased')); } public function migrateModule(Request $request, $type = "update") { // Migrate DB $message = __('Update module successfully'); if ($type == "install") { $message = __('Install module succeszsfully'); } try { Artisan::call('migrate', ["--force" => true]); Artisan::call('translation:sync-missing-translation-keys'); Artisan::call('optimize:clear'); } catch (\Exception $e) { return redirect()->back() ->with('error', 'Error: ' . $e->getMessage()); } return redirect()->back() ->with('success', $message); } public function install(Request $request) { $request->validate([ 'license' => 'required|string', 'product_id' => 'required|string', 'email_username_purchase' => 'required|string', 'product_name' => 'required|string', 'verify_type' => 'required|string|in:envato,non_envato', ]); $license_code = trim($request->input('license')); $product_id = trim($request->input('product_id')); $email_username_purchase = trim($request->input('email_username_purchase')); $path_main = trim($request->input('path_main')); $verify_type = trim($request->input('verify_type')); $product_name = trim($request->input('product_name')); $item = PurchaseManager::where('product_id', $product_id)->first(); // check exits purchase code if ($item) { return redirect()->back() ->with('error', __('This modules or themes is already installed')); } $license = new License($product_id,$verify_type); // active license $response = $license->activateLicense($license_code, $email_username_purchase); if (!$response['status']) { return redirect()->back() ->with('error', $response['message']); } $response = $license->downloadUgrade($license_code, $email_username_purchase, $path_main,true); if (!$response['status']) { // roll back $license->deactivateLicense($license_code, $email_username_purchase); return redirect()->back() ->with('error', $response['message']); } // Active success add new record $item = PurchaseManager::create([ "product_id" => $product_id, "product_name" => $product_name, "purchase_code" => $license_code, "verify_type" => $verify_type, "email_username_purchase" => $email_username_purchase, "path_main" => $path_main, "version" => '1.0.0' ]); try { Artisan::call('module:publish'); // publish all language modules publishLangModule(); $item->version = $response['version_new']; $item->save(); return redirect()->route('settings.modulesmanager.migreatemodule', array('type' => 'install')); } catch (\Exception $e) { // revert deactive license $response = $license->deactivateLicense($item->purchase_code, $item->email_username_purchase); return redirect()->back() ->with('error', 'Error install: ' . $e->getMessage()); } } public function update(Request $request, $product_id) { $item = PurchaseManager::where('product_id', $product_id)->first(); if ($item) { // check exits purchase code $license = new License($item->product_id, $item->verify_type, $item->version); // verify license $response = $license->verifyLicense($item->purchase_code, $item->email_username_purchase); if (!$response['status']) { return redirect()->back() ->with('error', $response['message']); } $response = $license->downloadUgrade($item->purchase_code, $item->email_username_purchase,$item->path_main,false); if (!$response['status']) { // roll back return redirect()->back() ->with('error', $response['message']); } try { // Clear cache, routes, views Artisan::call('optimize:clear'); Artisan::call('module:publish'); // publish all language modules publishLangModule(); $item->version = $response['version_new']; $item->save(); return redirect()->route('settings.modulesmanager.migreatemodule', array('type' => 'update')); } catch (\Exception $e) { // revert deactive license $response = $license->deactivateLicense($item->purchase_code, $item->email_username_purchase); return redirect()->back() ->with('error', 'Error install: ' . $e->getMessage()); } } abort(404); } }