403Webshell
Server IP : 138.197.107.151  /  Your IP : 216.73.217.7
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64
User : wpbetasites_mrakzqskir ( 1022)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/silversharkadmindev/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/silversharkadmindev/app/Http/Controllers/WebsiteController.php
<?php
// app/Http/Controllers/WPController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
use App\Models\Website;
use App\Models\Prompt;
use App\Helpers\EncryptionHelper;
use DB;

class WebsiteController extends Controller
{
    public function index()
    {
        /* $data = session('website_json');
       
        if(!$data){
            return redirect('/dashboard');
        }*/
        //print_r($data);

        return view('generate-site');
    }

    public function run(Request $request)
    {
        // Run the WP-CLI command

        $data = session('website_json');

        $website = Website::create([
            "user_id" => auth()->user()->id,
            "title" => $data["website_title"],
            "path" => "/bloxby_wp",
            "is_temp" => 1
        ]);

        $json = escapeshellarg(json_encode($data, JSON_PRETTY_PRINT));

        $process = Process::fromShellCommandline(env("SITEGENPATH")." site_bloxy_wp_".$website->id." site_bloxy_db_".$website->id." '".$json."'"); // change to your command
        $process->setTimeout(300); // Increase for long tasks
        $process->run();

        if (!$process->isSuccessful()) {

            session()->forget('website_json');

            return response()->json(['status' => 'error', 'message' => $process->getErrorOutput()], 500);
            
        } else {

            session()->forget('website_json');

            $website->path =  "site_bloxy_wp_".$website->id;
            
            $website->dbname = "site_bloxy_db_".$website->id;

            $website->meta = json_encode($data);
            
            $website->is_temp = 0;

            $website->save();
        }

        return response()->json(['status' => 'success', 'output' => $process->getOutput()]);
    }
    public function remove(Request $request, $id){

        
        
        $website = Website::where("id",$id)->first();

        
        $user_id = $website->user->id;
        if($website){
            
            if($website->domain!=null){
                return redirect()->back()->withError( "Please remove the domain attached before removing the website.");
            }
            if($website->plan){
                return redirect()->back()->withError( "You are not authorized to remove the website");
            }

            $server_meta = json_decode($website->server_meta, true);

            $process = new Process([
                'sudo',
                '/var/bloxbycommands/remove_site.sh',
                '--folder', $server_meta["folder"],
                '--site', $server_meta["site"],
                '--wpsite', $server_meta["slug_environment"],
                '--domain',  $server_meta["domain"]
            ]);
            //$process = Process::fromShellCommandline(env("SITEREMPATH")." site_bloxy_wp_".$website->id." site_bloxy_db_".$website->id); // change to your command
            $process->setTimeout(300); // Increase for long tasks
            $process->run();

            if (!$process->isSuccessful()) {

                
                return response()->json(['status' => 'error', 'message' => $process->getErrorOutput()], 500);
                
            } else {
                
                @unlink(env("FRONT_PUBLIC_PATH")."websites/thumbs/".$website->thumbnail);

                Prompt::where("website_id", $website->id)->delete();
                
                $website->delete();
                return redirect()->route('users.websites.list',["id"=>$user_id])->with(['status' => 'success', 'output' => $process->getOutput()]);
            }
        }
        
        return redirect()->route('users.websites.list',["id"=>$user_id]);
    }
    public function listUserWebsites(Request $request, $id){

        $title = "User websites";

        $websites = Website::where("user_id", $id)->orderby("id","desc")->get();

        /*foreach($websites as $key => $website){

            $server_meta = json_decode($website->server_meta, true);

            $websites[$key]->size =null;

            if(is_array($server_meta)){
                $userDir = "/var/www/".$server_meta["folder"]."/".$server_meta["slug_environment"]."_".$server_meta["site"];

                $size = trim(shell_exec("du -sb " . escapeshellarg($userDir) . " | cut -f1"));

                $mb = $size / (1024 * 1024);

                $websites[$key]->size =$mb;
            }
        }*/
        $prompts = Prompt::query();

        //->where("website_id",null)
        $prompts_count = $prompts->where("user_id",$id)->count();
        
        
        return view('websites.user_websites', compact('title','id','websites','prompts_count'));
    }
    public function toggleSite(Request $request, $id){


        $website = Website::where("id", $id)->first();

        if($website){

            if($website->is_website_down==1){

                $server_meta = json_decode($website->server_meta, true);

                $process = new Process([
                    'sudo',
                    '/var/bloxbycommands/toggle_site.sh',
                    "up",
                    $server_meta["sftp_user"],
                    "/var/www/".$server_meta["folder"]."/".$server_meta["sftp_user"]
                ]);
                
                $process->setTimeout(300); // Increase for long tasks
                $process->run();

                if (!$process->isSuccessful()) {

                    
                    return redirect()->back()->with([ 'errors' =>[ $process->getErrorOutput()]]);
                    
                } 

                $website->is_website_down=0;

                $website->save();
            } else {

                $server_meta = json_decode($website->server_meta, true);

                $process = new Process([
                    'sudo',
                    '/var/bloxbycommands/toggle_site.sh',
                    "down",
                    $server_meta["sftp_user"],
                    "/var/www/".$server_meta["folder"]."/".$server_meta["sftp_user"]
                ]);
                
                $process->setTimeout(300); // Increase for long tasks
                $process->run();

                if (!$process->isSuccessful()) {

                    
                    return redirect()->back()->with([ 'errors' => [$process->getErrorOutput()]]);
                    
                } 

                $website->is_website_down=1;

                $website->save();
            }
        }
        return redirect()->back()->with(["success","The website has been toggled successfully."]);
    }
    public function addDomain(Request $request, $id){

        $website = Website::where("domain", $request->domain)->first();

        if($website){
            return redirect()->back()->with('error', "The domain is already attached to another website");
        }


        $website = Website::where("id", $id)->first();

        $website->domain = $request->domain;

        $website->domain_status = "pending";

        $website->save();

        return redirect()->back()->with(["success"=>"The domain has been added successfully."]);

    }
    public function attachDomain(Request $request, $id){

        $website = Website::where("id", $id)->first();

        if($website){

            $ip = gethostbyname($request->domain);

            if ($ip && $ip === env("SERVER_IP")) {

                $server_meta = json_decode($website->server_meta, true);

                $process = new Process([
                    'sudo',
                    '/var/bloxbycommands/attach_domain.sh',
                    $server_meta["domain"].".".\config('app.site_uri'),
                    $request->domain,
                    "/var/www/".$server_meta["folder"]."/".$server_meta["sftp_user"]."/public_html"
                ]);
                
                $process->setTimeout(300); // Increase for long tasks
                $process->run();

                $output = trim($process->getOutput());      // single-line message from script
                $exitCode = $process->getExitCode();

                // Determine message type
                if ($exitCode === 0) {

                    $website->domain = $request->domain;

                    $website->save();
                    
                    return redirect()->back()->with('success', $output);
                } else {
                    // Optionally include stderr if needed
                    $errorOutput = trim($process->getErrorOutput());
                    $message = $output ?: $errorOutput ?: 'Unknown error';
                    return redirect()->back()->with('error', $message);
                }
               
            } else {
                return redirect()->back()->with('error', "Your domain is either not pointed or still in transition.");
                
            }
        }
        return redirect()->back()->with(["success"=>"Your domain has been pointed successfully."]);

    }
    public function removeDomain(Request $request, $id){
        $website = Website::where("id", $id)->first();

        if($website){
            
            $server_meta = json_decode($website->server_meta, true);

            $process = new Process([
                'sudo',
                '/var/bloxbycommands/remove_domain.sh',
                $website->domain,
                $server_meta["domain"].".". \config('app.site_uri'),
                "/var/www/".$server_meta["folder"]."/".$server_meta["sftp_user"]."/public_html"
            ]);
            
            $process->setTimeout(300); // Increase for long tasks
            $process->run();

            if (!$process->isSuccessful()) {

                
                return redirect()->back()->with([ 'errors' =>[ $process->getErrorOutput()]]);
                
            } 

            $website->domain= null;

            $website->domain_status= 'pending';

            $website->domain_error= null;

            $website->save();
        }
        return redirect()->back()->with(["success"=>"Your domain has been removed successfully."]);
    }
    public function deleteDomain(Request $request, $id){
        
        try{
            DB::BeginTransaction();
            $website = Website::where("id", $id)->first();

            if($website){
                
                
                if($website->domain_status=="pending"){

                    $website->domain= null;

                    $website->domain_status= 'pending';

                    $website->domain_error= null;

                    $website->save();
                }

                DB::Commit();
            }
        } catch(\Exception $e){

            DB::Rollback();
            return redirect()->back()->with([ 'errors' =>[ $e->getMessage()]]);
        }
        return redirect()->back()->with(["success"=>"The domain has been deleted sucessfully."]);
    }
    public function websiteDetails(Request $request, $id){

        $website = Website::where("id", $id)->first();

        $server_meta = json_decode($website->server_meta, true);

        $sftp_ip = env("SERVER_IP");

        $sftp_user = null;

        $sftp_pass = null;
        
        if($website){

            

            $sftp_user = $server_meta["sftp_user"];
            
            $sftp_pass = EncryptionHelper::secret_decrypt($server_meta["sftp_pass"],env("SODIUM_KEY"));
        }
        $dns_status = false;

        if($website->domain){
            $ip = gethostbyname($website->domain);

            if ($ip && $ip === env("SERVER_IP")){
                $dns_status = true;
            }
        }
        return view("websites.overview")->with(compact(['website','server_meta','sftp_ip','sftp_user','sftp_pass','dns_status','id']));
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit