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


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

namespace App\Http\Controllers\Admin;

use 
App\Events\DeleteSmsData;
use 
App\Events\SendMail;
use 
App\Http\Controllers\Controller;
use 
App\Listeners\ProcessDeleteData;
use 
App\Models\BecameReseller;
use 
App\Models\Customer;
use 
App\Models\DbBackup;
use 
App\Models\EmailTemplate;
use 
App\Models\Expense;
use 
App\Models\Message;
use 
App\Models\MessageLog;
use 
App\Models\Number;
use 
App\Models\Settings;
use 
App\Models\SmsQueue;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Config;
use 
Illuminate\Support\Facades\DB;
use 
Illuminate\Support\Facades\Mail;
use 
Illuminate\Support\Facades\Response;

class 
SettingsController extends Controller
{
    public function 
index()
    {
        
$sendingSetting json_decode(get_settings('sending_setting'));
        
$data['offdays'] = isset($sendingSetting) && isset($sendingSetting->offdays) ? json_decode($sendingSetting->offdays) : [];
        
$data['admin'] = auth()->user();
        return 
view('admin.settings.index'$data);
    }

    public function 
otpSettins(){
        return 
view('admin.settings.otp_settings');
    }

    public function 
profile_update(Request $request)
    {
        if (
env("APP_DEMO")){
            return 
redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]);
        }
        
$request->validate([
            
'u_name' => 'required',
            
'email' => 'required|unique:users,email,' auth()->id(),
            
'profile' => 'image',
        ]);
        
$pre_email auth()->user()->email;
        
$new_email $request->email;
        
$user auth()->user();
        if (
$pre_email != $new_email) {
            
$user->email_verified_at null;

            
//TODO::send email here to verify email address
        
}
        
$user->name $request->u_name;
        
$user->email $new_email;
        if (
$request->password)
            
$user->password bcrypt($request->password);

        if (
$request->hasFile('profile')) {
            
$file $request->file('profile');
            
$imageName time() . '.' $file->getClientOriginalExtension();
            
$file->move(public_path('/uploads'), $imageName);
            
$user->profile_picture $imageName;
        }

        
$user->save();
        
cache()->flush();
        return 
redirect()->back()->with('success''Profile successfully updated');
    }

    public function 
app_update(Request $request)
    {
        if (
env("APP_DEMO")){
            return 
redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]);
        }
        
$request->validate([
            
'app_name' => 'required',
            
'logo'=>'image',
            
'favicon'=>'image',
        ]);

        
//TODO:: in future update the settings dynamically

        //update application name
        
$data = ['name' => 'app_name'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->app_name;
        
$setting->save();


        
$data = ['name' => 'crisp_token'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->crisp_token;
        
$setting->save();

        
$data = ['name' => 'recaptcha_site_key'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->recaptcha_site_key;
        
$setting->save();

        
$data = ['name' => 'registration_status'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->registration_status;
        
$setting->save();

        
$data = ['name' => 'footer_content'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->footer_content;
        
$setting->save();
        
        
$data = ['name' => 'terms_condition'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->terms_condition;
        
$setting->save();

        
$data = ['name' => 'privacy_policy'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->privacy_policy;
        
$setting->save();

        
$data=['name'=>'contact_info'];
        
$requestData=$request->only('phone_number','email_address','address');
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value json_encode($requestData);
        
$setting->save();

        
$data = ['name' => 'notice_status'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->notice_status;
        
$setting->save();

        
$data = ['name' => 'maintence_mode'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->maintence_mode;
        
$setting->save();

        if (
$request->reseller_status=='disable'){
            
$findSeller=Customer::whereIn('type', ['reseller''master_reseller'])->count();
            if (
$findSeller && $findSeller 0){
                return  
redirect()->back()->withErrors(['failed'=>'You can not disable seller status at this moment']);
            }
        }
        if (!
$request->reseller_status){
            
$request['reseller_status']='enable';
        }
        
$data = ['name' => 'reseller_status'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->reseller_status;
        
$setting->save();

        
$data = ['name' => 'recaptcha_key'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value json_encode($request->only('recaptcha_secret_key''recaptcha_site_key'));
        
$setting->save();

        
//update favicon
        
if ($request->hasFile('favicon')) {

            
$file $request->file('favicon');
            
$favicon_name time() . '.' $file->getClientOriginalExtension();
            
$file->move(public_path('/uploads'), $favicon_name);

            
$data = ['name' => 'app_favicon'];
            
$setting auth()->user()->settings()->firstOrNew($data);
            
$setting->value $favicon_name;
            
$setting->save();
        }

        
//update logo
        
if ($request->hasFile('logo')) {
            
$file $request->file('logo');
            
$logo_name time() . '.' $file->getClientOriginalExtension();
            
$file->move(public_path('/uploads'), $logo_name);

            
$data = ['name' => 'app_logo'];
            
$setting auth()->user()->settings()->firstOrNew($data);
            
$setting->value $logo_name;
            
$setting->save();
        }
        
cache()->flush();
        return 
redirect()->back()->with('success''Application successfully updated');
    }

    public function 
sending_setting(Request $request){
        if (
env("APP_DEMO")){
            return 
redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]);
        }
        
$data=['name'=>'daily_send_limit'];
        
$sendData=$request->only('send_limit');
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value json_encode($sendData);
        
$setting->save();

        
$sendLimit=['name'=>'minute_send_limit'];
        
$sendLimitData=$request->only('message_limit','minute_limit');
        
$setting auth()->user()->settings()->firstOrNew($sendLimit);
        
$setting->value json_encode($sendLimitData);
        
$setting->save();

        
$days=[];
        if(
$request->offday){
            foreach (
$request->offday as $key=>$day){
                
$days[]= strtolower($day);
            }
        }

        
$request['offdays']= json_encode($days);
        
$sendingSetting=['name'=>'sending_setting'];
        
$sendingSettingData=$request->only('start_time','end_time','offdays');
        
$setting auth()->user()->settings()->firstOrNew($sendingSetting);
        
$setting->value json_encode($sendingSettingData);
        
$setting->save();

        
cache()->flush();
        return 
redirect()->back()->with('success''Sending setting successfully updated');
    }
    public function 
smtp_update(Request $request)
    {
        if (
env("APP_DEMO")){
            return 
redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]);
        }
        
$request->validate([
           
'from'=>'required|email',
           
'host'=>'required',
           
'name'=>'required',
           
'username'=>'required',
           
'password'=>'required',
           
'port'=>'required|numeric',
           
'encryption'=>'required|in:ssl,tls',
        ]);
        unset(
$request['_token']);


        
$from "Picotech Support <demo@picotech.app>";
        
$to "Picotech Support <demo@picotech.app>";
        
$subject "Hi!";
        
$body "Hi,\n\nHow are you?";

        
$host $request->host;
        
$port $request->port;
        
$username $request->username;
        
$password $request->password;
        
$config = array(
            
'driver' => 'smtp',
            
'host' => $host,
            
'port' => $port,
            
'from' => array('address' => $request->from'name' => $request->name),
            
'encryption' => $request->encryption,
            
'username' => $username,
            
'password' => $password,
        );
        
Config::set('mail'$config);

        try {
            
Mail::send('sendMail', ['htmlData' => $body], function ($message) {
                
$message->to("tuhin.picotech@gmail.com")->subject
                
("Setting check from picosms");
            });
        } catch (
\Exception $ex) {
            return 
redirect()->back()->withErrors(['msg' => trans('Invalid email credentials')]);
        }


        foreach (
$request->all() as $key => $req) {
            
$data = ['name' => 'mail_' $key];
            
$setting auth()->user()->settings()->firstOrNew($data);
            
$setting->value $request->$key;
            
$setting->save();
        }
        
//we need to flush the cache as settings are from cache
        
cache()->flush();

        return 
back()->with('success''SMTP configuration successfully updated');
    }

    
        public function 
seo_update(Request $request){
            
$request->validate([
                
'meta_title' => 'required',
                
'meta_description' => 'required',
                
'meta_keywords' => 'required'
            
]);
            
$data = ['name' => 'seo_section'];
            
$setting auth()->user()->settings()->firstOrNew($data);
            
$setting->value json_encode($request->only('meta_title','meta_description','meta_keywords'));
            
$setting->save();
    
            
cache()->flush();
            return 
redirect()->back()->with('success','SEO Section successfully update');
        }

    public function 
templateStore(Request $request)
    {
        if (
env("APP_DEMO")){
            return 
redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]);
        }
        
$request->validate([
            
'subject' => 'required',
            
'body' => 'required'
        
]);
        
$user auth()->user();
        
$emailTemplate = isset($request->emailTemplateID) ? EmailTemplate::find($request->emailTemplateID) : new EmailTemplate();

        
$emailTemplate->type $request->type;
        
$emailTemplate->user_id $user->id;
        
$emailTemplate->subject $request->subject;
        
$emailTemplate->body $request->body;
        
$emailTemplate->added_by 'admin';
        
$emailTemplate->status 'active';

        
$emailTemplate->save();
        
cache()->forget('e_template_'.auth()->user()->id);
        
cache()->flush();
        return 
redirect()->back()->with('success'trans('customer.message.message.setting_update'));
    }

    public function 
local_settings(Request $request)
    {
        if (
env("APP_DEMO")){
            return 
redirect()->back()->withErrors(['msg' => trans('admin.app_demo_message')]);
        }
        
$request->validate([
            
'language' => 'required',
            
'date_time_format' => 'required',
            
'date_time_separator' => 'required',
            
'timezone' => 'required',
            
'decimal_format' => 'required',
            
'currency_symbol' => 'required',
            
'currency_symbol_position' => 'required',
            
'thousand_separator' => 'required',
            
'decimals' => 'required',
            
'direction' => 'in:rtl,ltr'

        
]);

        
$availableLang get_available_languages();
        
$type $request->language;

        if (!
in_array($type$availableLang)){
            
abort('404');
        }

        
session()->put('locale'$type);
        
app()->setLocale($type);

        
$localSetting $request->only('thousand_separator''decimals''language''date_time_format''date_time_separator''timezone''decimal_format''currency_symbol''currency_code''currency_symbol_position''direction');
        
$data = ['name' => 'local_setting'];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value json_encode($localSetting);
        
$setting->save();
        
cache()->flush();

        return 
redirect()->back()->with('success'trans('customer.message.local_setting_updated'));
    }

    public function 
cacheSettings(Request $request){

        
$request->validate([
            
'to'=>'required',
            
'from'=>'required'
        
]);

        
DB::beginTransaction();
        try {
            
$ids Message::whereBetween('created_at', [$request->from$request->to])->pluck('id');

            foreach (
$ids->chunk(4000) as $id){
                
DeleteSmsData::dispatch($id);
            }


            
DB::commit();
            return 
redirect()->route('admin.settings.index')->with('success',trans('customer.message.log_delete'));

        } catch (
\Exception $ex) {
            
DB::rollBack();
            return 
redirect()->back()->withErrors(['failed'=>$ex->getMessage()]);
        }

    }
    public function 
dbBackupList(){
        
$data['files']=DbBackup::orderByDesc('created_at')->get();
        return 
view('admin.settings.db_backuplist'$data);
    }

    public function 
downloadDbBackup(Request  $request){
        
$backup=DbBackup::where('id'$request->id)->firstOrFail();
        
$filepath storage_path().'/app/backup/' .$backup->file_name;

        if(
\File::exists($filepath)){
            return 
Response::download($filepath);
        } else {
            
abort('404');
        }
    }
    public function 
header_title(Request  $request){
        
$request->validate([
            
'header_title' => 'required',
        ]);
        
$data = ['name' => $request->name];
        
$setting auth()->user()->settings()->firstOrNew($data);
        
$setting->value $request->header_title;
        
$setting->save();
        
cache()->flush();
        return 
redirect()->back()->with('success''Profile 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 ]--