!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/smabpro.picotech.app/public_html/app/Http/Controllers/   drwxr-xr-x
Free 28.6 GB of 117.98 GB (24.24%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace App\Http\Controllers;

use 
App\Http\Controllers\Controller;
use 
App\Models\ProjectUser;
use 
App\Models\User;
use 
App\Traits\ApiResponser;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Auth;
use 
App\Models\AssignProject;
use 
App\Models\Project;
use 
App\Models\Utility;
use 
App\Models\Tag;
use 
App\Models\ProjectTask;
use 
App\Models\TimeTracker;
use 
App\Models\TrackPhoto;
use 
Pusher\Pusher;

use 
Illuminate\Support\Facades\Validator;


class 
ApiController extends Controller
{
    
//
    
use ApiResponser;

    public function 
login(Request $request)
    {

        
$attr $request->validate([
            
'email' => 'required|string|email|',
            
'password' => 'required|string'
        
]);

        if (!
Auth::attempt($attr)) {
            return 
$this->error('Credentials not match'401);
        }

        
$settings              Utility::settings(auth()->user()->id);

        
$settings = [
            
'shot_time'=> isset($settings['interval_time'])?$settings['interval_time']:0.5,
        ];

        return 
$this->success([
            
'token' => auth()->user()->createToken('API Token')->plainTextToken,
            
'user'=> auth()->user()->id,
//            'user'=> auth()->user()->id,
            
'settings' =>$settings,
        ],
'Login successfully.');
    }
    public function 
logout()
    {
        
auth()->user()->tokens()->delete();
        return 
$this->success([],'Tokens Revoked');
    }


    public function 
getProjects(Request $request)
    {

        
$user auth()->user();

        if(
$user->type!='company')
        {
            
$assign_pro_ids ProjectUser::where('user_id',$user->id)->pluck('project_id');

//            $project_s      = Project::with('tasks')->select(
//                [
//                    'project_name',
//                    'id',
//                    'client_id',
//                ]
//            )->whereIn('id', $assign_pro_ids)->get()->toArray();

            
$project_s      Project::with('tasks')->whereIn('id'$assign_pro_ids)->get()->toArray();

        }
        else
        {

//            $project_s = Project::with('tasks')->select(
//                [
//                    'project_name',
//                    'id',
//                    'client_id',
//                ]
//            )->where('created_by', $user->id)->get()->toArray();

            
$project_s Project::with('tasks')->where('created_by'$user->id)->get()->toArray();


        }

        return 
$this->success([
            
'projects' => $project_s,
        ],
'Get Project List successfully.');
    }


    public function 
addTracker(Request $request){

        
$user auth()->user();
        if(
$request->has('action') && $request->action == 'start'){

            
$validatorArray = [
                
'task_id' => 'required|integer',
            ];
            
$validator      \Validator::make(
                
$request->all(), $validatorArray
            
);
            if(
$validator->fails())
            {
                return 
$this->error($validator->errors()->first(), 401);
            }
            
$taskProjectTask::find($request->task_id);

            if(empty(
$task)){
                return 
$this->error('Invalid task'401);
            }

            
$project_id = isset($task->project_id)?$task->project_id:'';
            
TimeTracker::where('created_by''='$user->id)->where('is_active''='1)->update(['end_time' => date("Y-m-d H:i:s")]);

            
$track['name']        = $request->has('workin_on') ? $request->input('workin_on') : '';
            
$track['project_id']  = $project_id;
            
$track['is_billable'] =  $request->has('is_billable')? $request->is_billable:0;
            
$track['tag_id']      = $request->has('workin_on') ? $request->input('workin_on') : '';
            
$track['start_time']  = $request->has('time') ?  date("Y-m-d H:i:s",strtotime($request->input('time'))) : date("Y-m-d H:i:s");
            
$track['task_id']     = $request->has('task_id') ? $request->input('task_id') : '';
            
$track['created_by']  = $user->id;
            
$track                TimeTracker::create($track);
            
$track->action        ='start';

            return 
$this->success$track,'Track successfully create.');
        }else{
            
$validatorArray = [
                
'task_id' => 'required|integer',
                
'traker_id' =>'required|integer',
            ];
            
$validator      Validator::make(
                
$request->all(), $validatorArray
            
);
            if(
$validator->fails())
            {
                return 
Utility::error_res($validator->errors()->first());
            }
            
$tracker TimeTracker::where('id',$request->traker_id)->first();
            
// dd($tracker);
            
if($tracker)
            {
                
$tracker->end_time   $request->has('time') ?  date("Y-m-d H:i:s",strtotime($request->input('time'))) : date("Y-m-d H:i:s");
                
$tracker->is_active  0;
                
$tracker->total_time Utility::diffance_to_time($tracker->start_time$tracker->end_time);
                
$tracker->save();
                return 
$this->success$tracker,'Stop time successfully.');
            }
        }

    }
    public function 
uploadImage(Request $request){
        
$user auth()->user();
        
$image_base64 base64_decode($request->img);
        
$file =$request->imgName;
        if(
$request->has('tracker_id') && !empty($request->tracker_id)){
            
$app_path storage_path('uploads/traker_images/').$request->tracker_id.'/';
            if (!
file_exists($app_path)) {
                
mkdir($app_path0777true);
            }

        }else{
            
$app_path storage_path('uploads/traker_images/');
            if (
is_dir($app_path)) {
                
mkdir($app_path0777true);
            }
        }
        
$file_name =  $app_path.$file;
        
file_put_contents$file_name$image_base64);
        
$new = new TrackPhoto();
        
$new->track_id $request->tracker_id;
        
$new->user_id  $user->id;
        
$new->img_path  'uploads/traker_images/'.$request->tracker_id.'/'.$file;
        
$new->time  $request->time;
        
$new->status  1;
        
$new->save();
        return 
$this->success( [],'Uploaded successfully.');
    }

    public function 
pusherAuth(Request $request){
         
// Auth data
         
$authData json_encode(
            [
                
'user_id' => Auth::user()->id,
                
'user_info' => [
                    
'name' => Auth::user()->name,
                    
'type' => Auth::user()->type,
                ],
            ]
        );

        
$pusher= new Pusher(
            
config('chatify.pusher.key'),
            
config('chatify.pusher.secret'),
            
config('chatify.pusher.app_id'),
            
config('chatify.pusher.options')
        );

        return 
$pusher->socket_auth($request['channel_name'], $request['socket_id'], $authData);

    }

    public function 
locationUpdate(Request $request){
        
$location=$request->location;
        
$location=json_decode(json_encode($location));

        
$user_id=auth()->user()->id;
        
User::where('id'$user_id)->where('type','driver')->update([
            
'current_location'=>$location->lat.','.$location->lng
        
]);

        return 
$this->success(null,'Location successfully updated');
    }


}

:: 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.0042 ]--