HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/posscale/.trash/1app.2/Http/Controllers/SourceController.php
<?php

namespace App\Http\Controllers;

use App\Actions\SmtpAction;
use App\Http\Requests\Settings\AddSettings;
use App\Models\connectionSettings;
use App\Models\Printer;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\View\View;

class SourceController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request): View
    {
        $search = $request->input('search');

        $connections = connectionSettings::paginate(15);

        return view('tenant.settings.list', ['connections' => $connections, 'search' => $search]);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create(Request $request): View
    {
        return view('tenant.settings.connection');
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(AddSettings $request)
    {
        $connection_details = $request->validated();
        $connection_settings = new connectionSettings();
        $connection_settings->type = $connection_details['type'];
        $data = array();
        $connection_settings->connection_status = 0;
        if ($connection_details['type'] == 'SMTP') {
            $data['type_for_monitoring'] = $connection_details['type_for_monitoring'];
            $data['host'] = $connection_details['host'];
            $data['port'] = $connection_details['port'];
            $data['user_name'] = $connection_details['user_name'];
            $data['user_password'] = $connection_details['user_password'];
            $data['from'] = $connection_details['from'];
            $data['from_name'] = $connection_details['from_name'];

            $smtp_details['client'] = [
                'host'          => $data['host'],
                'port'          => $data['port'],
                'encryption'    => 'ssl',
                'username'      => $data['user_name'],
                'password'      =>  $data['user_password'],
                'protocol'      => $data['type_for_monitoring']
            ];
            $connection_settings->connection_status = $this->validate_smtp($smtp_details);
        }

        $connection_settings->data = json_encode($data);
        $connection_settings->last_connection_date = date('Y-m-d h:i:s');
        $connection_settings->last_sync_date = date('Y-m-d h:i:s');

        $connection_settings->save();
        // Add code here to test connection.
        return Redirect::route('settings.index')->with('status', 'record-inserted');
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(int $id): View
    {
        $row = connectionSettings::find($id);
        return view('tenant.settings.edit-connection', ['connection' => $row]);
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(AddSettings $request, string $id)
    {
        $connection_settings = connectionSettings::find($id);
        $connection_details = $request->validated();
        $connection_settings->type = $connection_details['type'];
        $data = array();
        $connection_settings->connection_status = 0;
        if ($connection_details['type'] == 'SMTP') {
            $data['type_for_monitoring'] = $connection_details['type_for_monitoring'];
            $data['host'] = $connection_details['host'];
            $data['port'] = $connection_details['port'];
            $data['user_name'] = $connection_details['user_name'];
            $data['user_password'] = $connection_details['user_password'];
            $data['from'] = $connection_details['from'];
            $data['from_name'] = $connection_details['from_name'];

            $smtp_details['client'] = [
                'host'          => $data['host'],
                'port'          => $data['port'],
                'encryption'    => 'ssl',
                'username'      => $data['user_name'],
                'password'      =>  $data['user_password'],
                'protocol'      => $data['type_for_monitoring']
            ];
            $connection_settings->connection_status = $this->validate_smtp($smtp_details);
        }

        $connection_settings->data = json_encode($data);
        $connection_settings->last_connection_date = date('Y-m-d h:i:s');
        $connection_settings->last_sync_date = date('Y-m-d h:i:s');

        $connection_settings->save();
        // Add code here to test connection.
        return Redirect::route('settings.index')->with('status', 'record-inserted');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(int $id)
    { 
        $connection_settings = connectionSettings::find($id);
        $connection_settings->delete();
        return Redirect::route('settings.index')->with('message', 'User delete successfully.');
    }

    /**
     * Validate SMTP details and set status according to it
     */

    public function validate_smtp(array $smtp_details): Int
    {
        $smtp_connection = new SmtpAction($smtp_details);
        $connection_info = $smtp_connection->testConnection();
        if ($connection_info['status']) {
            return 1;
        }
        return 0;
    }
}