verify purchase code api

0

I found an employment script and I want the registration of the purchase code to be optional to publish it on my website the route is divided by steps but exactly the step3.blade.php asks me to verify the purchase code thing that I do not want pass (the code is not mine, I will modify it to my need), I hope you can help me

STEP3.BLADE.PHP:

@extends('layouts.app_install')

@section('title_text')
Installing - Step 3
@endsection

@section('title')
Installing - Step 3
@endsection

@section('content')
    <style>
        .btn-info
        {
            background: #4c83c7 !important;
            border: none;
            outline: none;
            height: 40px;
            text-align: center;
            border-radius: 3px;
            padding: 10px;
            min-width: 140px;
        }
        label
        {
            margin:         0;
            padding:        0;
            color:          #48545f;
            font-family:    'FiraSans', sans-serif;
            font-size:      13.0px;
            font-style:     normal;
            font-stretch:   normal;
            font-weight:    500;
            text-align:     left;
        }
        .form-control
        {
            width:          100%;
            border:         1px solid #b7c5ce;
            color:          #48545f;
            font-family:    'FiraSans', sans-serif;
            font-size:      13.0px;
            font-style:     normal;
            font-stretch:   normal;
            font-weight:    500;
            font-size:      20px;
            border:         1px solid #B7C5CE;
            height:         40px !important;
            margin-top:     10px;
        }
    </style>

    <div class="con">
        <div class="row" style="margin-top: 20px;">
            <div class="col-md-8 col-md-offset-2" style="margin-top: 10px;">
                @if (\Session::has('error'))
                    <div class="alert alert-danger">
                        {{ $errors->first('error_msg') == '' ? __('settings.form_error') : $errors->first('error_msg') }}
                    </div>
                @endif
                @if ($errors->any())
                    <div class="alert alert-success">
                        {{ __('settings.saved_successfull') }}
                    </div>
                @endif
            </div>
            <div class="col-md-8 col-md-offset-2">
                {{ Form::open(array('url' => 'install/step3/save')) }}

                    <div class="row">
                        <div class="col-md-12">
                            <div class="form-group">
                                <label>Purchase key</label>
                                {{ Form::text('product_key', '' , ['class' => 'form-control']) }}
                            </div>
                        </div>
                    </div>

                    <button type="submit" class="btn btn-info"><i class="fa fa-angle-right"></i> Install</button>

            </div>
        </div>
    </div>
@endsection

INSTALLATIONCONTROLLER.PHP:

<?php

namespace App\Http\Controllers;

    use App\Fb_account;
    use App\Fb_account_node;
    use App\Fb_app;
use App\Lib\Curl;
use App\Lib\FBLib;
use App\Option;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\URL;


class InstallationController extends Controller
{

    private function checkStep($step)
    {
        if( env('APP_VER' , '') !== '' )
        {
            redirect('update' )->send();
            exit();
        }

        if( $step > 0 && $this->checkRequierments() == false )
        {
            redirect('install' )->send();
            exit();
        }

        $sessStep = session('step' , '1');

        if( $sessStep != $step )
        {
            redirect('install/step' . $sessStep)->send();
            exit();
        }
    }

    public function start()
    {
        if( env('APP_VER' , '') !== '' )
        {
            redirect('update' )->send();
            exit();
        }

        return view('install.start' , ['requirments' => $this->checkRequierments(true) , 'start' => $this->checkRequierments()]);
    }

    private function checkRequierments($returnArray = false)
    {
        $requirments = [
            'allow_url_fopen'       =>  ini_get('allow_url_fopen')                              ? 'yes' : 'no',
            'php_ver'               =>  version_compare(PHP_VERSION, '7.1.3') >= 0      ? 'yes' : 'no',
            'open_ssl'              =>  extension_loaded('openssl')                             ? 'yes' : 'no',
            'pdo'                   =>  class_exists('PDO')                                     ? 'yes' : 'no',
            'mbstring'              =>  extension_loaded('mbstring')                                ? 'yes' : 'no',
            'json'                  =>  function_exists('json_encode')                  ? 'yes' : 'no',
            'curl'                  =>  function_exists('curl_init')                        ? 'yes' : 'no'
        ];

        if( $returnArray )
        {
            return $requirments;
        }

        foreach( $requirments AS $requirment )
        {
            if( $requirment == 'no' )
            {
                return false;
            }
        }

        return true;
    }

    public function step1()
    {
        $this->checkStep(1);

        return view('install.step1');
    }

    public function step1Save(Request $request)
    {
        $validatedData = $request->validate([
            'sql_hostname'  =>  'required|string|max:255',
            'sql_username'  =>  'required|string|max:255',
            'sql_database'  =>  'required|string|max:255',
            'sql_password'  =>  'nullable|string|max:255',
        ]);

        config()->set('database.connections.test', [
            'driver' => 'mysql',
            'host' => $validatedData['sql_hostname'],
            'port' => env('DB_PORT', '3306'),
            'database' => $validatedData['sql_database'],
            'username' => $validatedData['sql_username'],
            'password' => $validatedData['sql_password'],
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ]);

        try
        {
            DB::connection('test')->select('SELECT 1 test');
        }
        catch (\Exception $e)
        {
            return redirect()->back()->withErrors(['error_msg' => 'Connection error!'])->withInput();
        }

        session([
            'step'          =>  2,
            'sql_hostname'  =>  $validatedData['sql_hostname'],
            'sql_username'  =>  $validatedData['sql_username'],
            'sql_database'  =>  $validatedData['sql_database'],
            'sql_password'  =>  $validatedData['sql_password'] ?? ''
        ]);

        return redirect('install/step2');
    }

    public function step2()
    {
        $this->checkStep(2);

        return view('install.step2');
    }

    public function step2Save(Request $request)
    {
        $validatedData = $request->validate([
            'site_title'        =>  'required|string|max:255',
            'admin_username'    =>  'required|string|max:255',
            'admin_email'       =>  'required|string|email|max:255',
            'admin_password'    =>  'required|string|max:255|min:6|confirmed'
        ]);

        session([
            'step'              =>  3,
            'site_title'        =>  $validatedData['site_title'],
            'admin_username'    =>  $validatedData['admin_username'],
            'admin_email'       =>  $validatedData['admin_email'],
            'admin_password'    =>  $validatedData['admin_password']
        ]);

        return redirect('install/step3');
    }

    public function step3()
    {
        $this->checkStep(3);

        return view('install.step3');
    }

    public function step3Save(Request $request)
    {
        $validatedData = $request->validate([
            'product_key'   =>  'required|string|min:5|max:255'
        ]);

        $productKey = $validatedData['product_key'];

        $checkPurchaseCodeURL = "http://api.emplenio.com/api.php?purchase_code=" . $productKey . "&version=" . config('app.version');
        $result = Curl::getURL($checkPurchaseCodeURL);

        $result = json_decode($result , true);
        $result = is_array( $result ) ? $result : ['status' => 'error' , 'error_msg' => 'Error!!!'];

        if( !($result['status'] == 'ok' && isset($result['sql']) && isset($result['routes'])) )
        {
            return redirect()->back()->withErrors(['error_msg' => isset($result['error_msg']) ? $result['error_msg'] : 'Error!'])->withInput();
        }

        $requiredSessions = ['site_title','admin_username','admin_email','admin_password','sql_hostname','sql_username','sql_database','sql_password'];
        foreach($requiredSessions AS $rSess)
        {
            if( session($rSess , null) === null )
            {
                session()->flush();
                return redirect('install/step1');
            }
        }

        config()->set('database.connections.test', [
            'driver' => 'mysql',
            'host' => session('sql_hostname'),
            'port' => env('DB_PORT', '3306'),
            'database' => session('sql_database'),
            'username' => session('sql_username'),
            'password' => session('sql_password'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ]);

        try
        {
            DB::connection('test')->select('SELECT 1 test');
        }
        catch (\Exception $e)
        {
            return redirect('install/step1');
        }

        $pdo = $pdo = DB::connection('test')->getPdo();

        $siteUrl = URL::to('/');

        $envData = "APP_NAME=\"Fb Poster\"\n" .
        "APP_ENV=local\n" .
        "APP_KEY=base64:ZJEEMphpVNqCP7tXfnvU9vOe/EWCghoG482bOgWesck=\n" .
        "APP_DEBUG=false\n" .
        "APP_LOG_LEVEL=debug\n" .
        "APP_VER=".config('app.version')."\n" .
        "APP_URL=\"" . $siteUrl . "\"\n\n" .
        "DB_CONNECTION=\"mysql\"\n" .
        "DB_HOST=\"" . session('sql_hostname') . "\"\n" .
        "DB_PORT=3306\n" .
        "DB_DATABASE=\"" . session('sql_database') . "\"\n" .
        "DB_USERNAME=\"" . session('sql_username') . "\"\n" .
        "DB_PASSWORD=\"" . session('sql_password') . "\"";

        $dbb = base64_decode( $result['sql'] );
        $dbbArray = explode(';' , $dbb);

        foreach( $dbbArray AS $queryOne )
        {
            $queryOne = trim($queryOne);

            if( empty($queryOne) )
                continue;

            $qry = $pdo->prepare( $queryOne );
            $qry->execute();
        }

        DB::connection('test')->table('users')->insert([
            'email'                                 =>  session('admin_email'),
            'username'                              =>  session('admin_username'),
            'password'                              =>  Hash::make(session('admin_password')),
            'timezone'                              =>  'Asia/Baku',
            'language_id'                           =>  '1',
            'records_per_page'                      =>  '25',
            'load_my_groups'                        =>  '1',
            'load_my_pages'                         =>  '1',
            'load_my_ownpages'                      =>  '1',
            'max_groups_to_import'                  =>  '200',
            'max_pages_to_import'                   =>  '200',
            'show_open_groups_only'                 =>  '0',
            'unique_post'                           =>  '0',
            'unique_link'                           =>  '0',
            'post_interval'                         =>  '60',
            'fb_account_id'                         =>  '0',
            'is_admin'                              =>  '1',
            'user_role_id'                          =>  '1',
            'status'                                =>  '1',
            'link_customization'                    =>  '1',
            'created_at'                            =>  date('Y-m-d H:i:s')
        ]);

        DB::connection('test')->table('options')->update([
            'site_name' =>  session('site_title')
        ]);

        file_put_contents( base_path('.env') , $envData );
        file_put_contents(base_path('routes/web.php') , base64_decode( $result['routes'] ));

        if( crontab_installed() )
        {
            try
            {
                $cron_file = "/tmp/crontab.txt";
                $cronUrl = url('/');

                $cmd  = "0 0,6,12,18 * * * wget -O /dev/null ".$cronUrl."/schedule/insert_schedules >/dev/null 2>&1\n";
                $cmd .= "*/2 * * * * wget -O /dev/null ".$cronUrl."/schedule/send_posts >/dev/null 2>&1\n";
                $cmd .= "*/5 * * * * wget -O /dev/null ".$cronUrl."/schedule/auto_resume_post >/dev/null 2>&1";

                $output = shell_exec('crontab -l');
                file_put_contents($cron_file, $output . $cmd . PHP_EOL);
                exec("crontab $cron_file");
            }
            catch(\Exception $e)
            {

            }
        }

        session()->flush();

        return redirect('/');
    }


    public function update()
    {
        if( env('APP_VER' , '') === '' )
        {
            redirect('install' )->send();
            exit();
        }

        return view('install.update');
    }

    public function updateSave(Request $request)
    {
        $validatedData = $request->validate([
            'product_key'   =>  'required|string|min:5|max:255'
        ]);

        $productKey = $validatedData['product_key'];

        $checkPurchaseCodeURL = "http://api.emplenio.com/api.php?act=update&purchase_code=" . $productKey . "&version1=" . env('APP_VER') . "&version2=" . config('app.version');
        $result = Curl::getURL($checkPurchaseCodeURL);

        $result = json_decode($result , true);
        $result = is_array( $result ) ? $result : ['status' => 'error' , 'error_msg' => 'Error!!!'];

        if( !($result['status'] == 'ok' && isset($result['sql']) && isset($result['routes'])) )
        {
            return redirect()->back()->withErrors(['error_msg' => isset($result['error_msg']) ? $result['error_msg'] : 'Error!'])->withInput();
        }

        $pdo = $pdo = DB::connection()->getPdo();

        $dbb = base64_decode( $result['sql'] );
        $dbbArray = explode(';' , $dbb);

        foreach( $dbbArray AS $queryOne )
        {
            $queryOne = trim($queryOne);

            if( empty($queryOne) )
                continue;

            $qry = $pdo->prepare( $queryOne );
            $qry->execute();
        }

        file_put_contents(base_path('routes/web.php') , base64_decode( $result['routes'] ));

        session()->flush();

        // update version in .env file
        $envFile = file_get_contents(base_path('.env'));
        $envFile = str_replace('APP_VER=' . env('APP_VER') , 'APP_VER='.config('app.version') , $envFile);
        file_put_contents(base_path('.env') , $envFile);

        return redirect('/');
    }

}
    
asked by Abdiel Hernandez 03.09.2018 в 04:53
source

1 answer

0

I would remove this part of the code in the view, but you have to bear in mind that the controller may ask you, to go to step 4, the data of the purchase code. You should see the logic of the controller in step 4, going from step 3 to step 4, and see what is asking for that particular method.

<div class="col-md-8 col-md-offset-2">
            {{ Form::open(array('url' => 'install/step3/save')) }}

                <div class="row">
                    <div class="col-md-12">
                        <div class="form-group">
                            <label>Purchase key</label>
                            {{ Form::text('product_key', '' , ['class' => 'form-control']) }}
                        </div>
                    </div>
                </div>

    <button type="submit" class="btn btn-info"><i class="fa fa-angle-right"></i> Install</button>

And in the step3Save method, you have to delete everything related to product_key. Do not copy and paste what happened to you, check it, it's just an approach, since I can not prove your code

public function step3Save(Request $request)
{
    $validatedData = $request->validate([
        'product_key'   =>  'required|string|min:5|max:255'
    ]);

    $productKey = $validatedData['product_key'];

    $checkPurchaseCodeURL = "http://api.emplenio.com/api.php?purchase_code=" . $productKey . "&version=" . config('app.version');
    $result = Curl::getURL($checkPurchaseCodeURL);

    $result = json_decode($result , true);
    $result = is_array( $result ) ? $result : ['status' => 'error' , 'error_msg' => 'Error!!!'];

    if( !($result['status'] == 'ok' && isset($result['sql']) && isset($result['routes'])) )
    {
        return redirect()->back()->withErrors(['error_msg' => isset($result['error_msg']) ? $result['error_msg'] : 'Error!'])->withInput();
    }
    
answered by 03.09.2018 в 17:49