Файловый менеджер - Редактировать - /home/c7lekhnath/silverray.com.au/Modules/Language/database/seeders/68334/Installer.zip
Назад
PK ���Z lang/.gitkeepnu �[��� PK ���Z�KN7 7 lang/en/setup.phpnu �[��� <?php /** * This Language configs are used when running the setup wizard */ return [ 'php_version' => 'PHP version >= 8.1.0', 'extension_bcmath' => 'PHP Extension: BCMath', 'extension_ctype' => 'PHP Extension: Ctype', 'extension_json' => 'PHP Extension: JSON', 'extension_mbstring' => 'PHP Extension: Mbstring', 'extension_openssl' => 'PHP Extension: OpenSSL', 'extension_pdo_mysql' => 'PHP Extension: PDO', 'extension_tokenizer' => 'PHP Extension: Tokenizer', 'extension_xml' => 'PHP Extension: XML', 'extension_zip' => 'PHP Extension: ZIP', 'extension_php_intl' => 'PHP Extension: INTL', 'env_writable' => '.env file is present and writable', 'storage_writable' => '/storage and /storage/logs directories are writable', 'setup_database' => 'Setup Database', ]; PK ���Z�\�'� � module.jsonnu �[��� { "name": "Installer", "alias": "installer", "description": "", "keywords": [], "priority": 0, "providers": [ "Modules\\Installer\\app\\Providers\\InstallerServiceProvider" ], "files": [] } PK ���Z tests/Unit/.gitkeepnu �[��� PK ���Z tests/Feature/.gitkeepnu �[��� PK ���Z�WX� � vite.config.jsnu �[��� import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ build: { outDir: '../../public/build-installer', emptyOutDir: true, manifest: true, }, plugins: [ laravel({ publicDirectory: '../../public', buildDirectory: 'build-installer', input: [ __dirname + '/resources/assets/sass/app.scss', __dirname + '/resources/assets/js/app.js' ], refresh: true, }), ], }); //export const paths = [ // 'Modules/$STUDLY_NAME$/resources/assets/sass/app.scss', // 'Modules/$STUDLY_NAME$/resources/assets/js/app.js', //];PK ���ZD���� � wsus.jsonnu �[��� { "name": "Installer Addon", "is_default": true, "description": "This is Installer Addon", "author": { "name": "Websolutionsus", "email": "websolutionus1@gmail.com", "website": "https://websolutionus.com" }, "license": "Proprietary", "url": "", "options" : { "route" : "home" }, "last_update": "2024-03-31", "version": "1.0.0" } PK ���Z routes/.gitkeepnu �[��� PK ���Zb���J J routes/error_lognu �[��� [07-May-2025 00:06:37 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Route" not found in /home/lekhnath/silverray.com.au/Modules/Installer/routes/web.php:10 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/Installer/routes/web.php on line 10 [07-May-2025 04:04:22 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\Facades\Route" not found in /home/lekhnath/silverray.com.au/Modules/Installer/routes/api.php:5 Stack trace: #0 {main} thrown in /home/lekhnath/silverray.com.au/Modules/Installer/routes/api.php on line 5 PK ���ZU�\BT T routes/web.phpnu �[��� <?php use Illuminate\Support\Facades\Route; use Modules\Installer\app\Http\Controllers\InstallerController; use Modules\Installer\app\Http\Controllers\PuchaseVerificationController; use Modules\Installer\app\Http\Middleware\PurchaseVerifyMiddleware; use Modules\Installer\app\Http\Middleware\SetupMiddleware; //all setup route Route::prefix('setup')->withoutMiddleware(PurchaseVerifyMiddleware::class)->group(function () { Route::controller(PuchaseVerificationController::class)->group(function () { Route::get('verify', 'index')->name('setup.verify'); Route::post('verify', 'validatePurchase')->name('setup.checkParchase'); }); Route::controller(InstallerController::class)->withoutMiddleware('demo')->group(function () { Route::get('requirements', 'requirements')->name('setup.requirements'); Route::get('database', 'database')->name('setup.database'); Route::post('database-submit', 'databaseSubmit')->name('setup.database.submit'); Route::get('account', 'account')->name('setup.account'); Route::post('account-submit', 'accountSubmit')->name('setup.account.submit'); Route::get('configuration', 'configuration')->name('setup.configuration'); Route::post('configuration-submit', 'configurationSubmit')->name('setup.configuration.submit'); Route::get('smtp', [InstallerController::class, 'smtp'])->name('setup.smtp'); Route::post('smtp', [InstallerController::class, 'smtpSetup'])->name('setup.smtp.update'); Route::post('smtp/skip', [InstallerController::class, 'smtpSkip'])->name('setup.smtp.skip'); Route::get('complete', 'setupComplete')->name('setup.complete'); }); Route::get('lunch/{type}', [InstallerController::class, 'launchWebsite'])->name('website.completed')->withoutMiddleware('demo')->withoutMiddleware(SetupMiddleware::class); }); PK ���Z/�VJ� � routes/api.phpnu �[��� <?php use Illuminate\Support\Facades\Route; Route::middleware(['auth:sanctum'])->prefix('v1')->name('api.')->group(function () { }); PK ���Z9�r� � composer.jsonnu �[��� { "name": "nwidart/installer", "description": "", "authors": [ { "name": "Nicolas Widart", "email": "n.widart@gmail.com" } ], "extra": { "laravel": { "providers": [], "aliases": { } } }, "autoload": { "psr-4": { "Modules\\Installer\\": "", "Modules\\Installer\\App\\": "app/", "Modules\\Installer\\Database\\Factories\\": "database/factories/", "Modules\\Installer\\Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { "Modules\\Installer\\Tests\\": "tests/" } } } PK ���Z�6�. . config/config.phpnu �[��� <?php return [ 'name' => 'Installer', ]; PK ���Z config/.gitkeepnu �[��� PK ���Z��8� package.jsonnu �[��� { "private": true, "type": "module", "scripts": { "dev": "vite", "build": "vite build" }, "devDependencies": { "axios": "^1.1.2", "laravel-vite-plugin": "^0.7.5", "sass": "^1.69.5", "postcss": "^8.3.7", "vite": "^4.0.0" } } PK ���Z[T+5 +5 , app/Http/Controllers/InstallerController.phpnu �[��� <?php namespace Modules\Installer\app\Http\Controllers; use Closure; use Exception; use App\Models\Admin; use App\Enums\UserStatus; use Illuminate\Http\Request; use Spatie\Permission\Models\Role; use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Cache; use Modules\GlobalSetting\app\Models\Setting; use Modules\Installer\app\Enums\InstallerInfo; use Modules\Installer\app\Models\Configuration; use Modules\Installer\app\Traits\InstallerMethods; class InstallerController extends Controller { use InstallerMethods; public function __construct() { set_time_limit(8000000); $this->middleware(function (Request $request, Closure $next) { $data = purchaseVerificationHashed(InstallerInfo::getLicenseFilePath()); if (isset($data) && isset($data['success']) && $data['success']) { return $next($request); } else { if (strtolower(config('app.app_mode')) == 'demo') { return $next($request); } } return redirect()->route('setup.verify')->withInput()->withErrors(['errors' => isset($data) && isset($data['success']) && $data['message'] ? $data['message'] : 'License key not found']); }); } public function requirements() { [$checks, $success, $failedChecks] = $this->checkMinimumRequirements(); if ( $step = Configuration::stepExists( ) && $success) { if($step == 5){ return redirect()->route( 'setup.complete' ); } return redirect()->route( 'setup.account' ); } session()->put( 'step-2-complete', true ); return view( 'installer::requirements', compact( 'checks', 'success', 'failedChecks' ) ); } public function database() { if ($this->requirementsCompleteStatus()) { session()->put( 'requirements-complete', true ); if (Configuration::stepExists()) { return redirect()->route('setup.account'); } changeEnvValues('DB_DATABASE', ''); return view('installer::database', ['isLocalHost' => InstallerInfo::isRemoteLocal()]); } return redirect()->route('setup.requirements')->withInput()->withErrors(['errors' => 'Your server does not meet the minimum requirements.']); } public function databaseSubmit(Request $request) { if (! $this->requirementsCompleteStatus()) { return redirect()->route('setup.requirements')->withInput()->withErrors(['errors' => 'Your server does not meet the minimum requirements.']); } try { $request->validate([ 'host' => 'required|ip', 'port' => 'required|integer', 'database' => 'required', 'user' => 'required', ]); if (! InstallerInfo::isRemoteLocal()) { $request->validate([ 'password' => 'required', ]); } $databaseCreate = $this->createDatabaseConnection($request->all()); if ($databaseCreate !== true) { if ($databaseCreate == 'not-found') { return response()->json(['create_database' => true, 'message' => 'Database not found! Please create the database first.'], 200); } elseif ($databaseCreate == 'table-exist') { return response()->json(['reset_database' => true, 'message' => 'This database has tables already. Please create a new database or reset existing tables first to continue'], 200); } else { return response()->json(['success' => false, 'message' => $databaseCreate], 200); } } $deleteDummyData = false; if ($request->has('fresh_install') && $request->filled('fresh_install') && $request->fresh_install == 'on') { $deleteDummyData = true; Cache::put('fresh_install', true, now()->addMinutes(60)); $migration = $this->importDatabase( InstallerInfo::getFreshDatabaseFilePath() ); }else{ $migration = $this->importDatabase( InstallerInfo::getDummyDatabaseFilePath() ); } if ($migration !== true) { return response()->json(['success' => false, 'message' => $migration], 200); } $this->changeEnvDatabaseConfig($request->except('reset_database')); if ($migration == true && $deleteDummyData) { $this->removeDummyFiles(); } Cache::forget('fresh_install'); session()->put('step-3-complete', true); return response()->json(['success' => true, 'message' => 'Successfully setup the database'], 200); } catch (Exception $e) { Log::error($e->getMessage()); return response()->json(['success' => false, 'message' => 'Database connection failed! Look like you have entered wrong database credentials (host, port, database, user or password).'], 200); } } public function account() { $step = Configuration::stepExists(); if ( $step >= 1 && $step < 5 && $this->requirementsCompleteStatus()) { $admin = $step >= 2 ? Admin::select('name','email')->first() : null; return view( 'installer::account',compact('admin') ); } if($step == 5 || !$this->requirementsCompleteStatus()){ return redirect()->route( 'setup.requirements' ); } return redirect()->route( 'setup.database' ); } public function accountSubmit(Request $request) { try { $request->validate([ 'name' => 'required', 'email' => 'required|email', 'password' => 'required|same:confirm_password', ]); $role = Role::first(); if (! Admin::first()) { $admin = new Admin(); $admin->name = $request->name; $admin->email = $request->email; $admin->image = 'uploads/website-images/admin.jpg'; $admin->password = Hash::make($request->password); $admin->status = UserStatus::ACTIVE->value; $admin->save(); } else { $admin = Admin::first(); $admin->name = $request->name; $admin->email = $request->email; $admin->image = 'uploads/website-images/admin.jpg'; $admin->password = Hash::make($request->password); $admin->status = UserStatus::ACTIVE->value; $admin->save(); } $admin?->assignRole($role); Configuration::updateStep(2); session()->put('step-4-complete', true); return response()->json(['success' => true, 'message' => 'Admin Account Successfully Created'], 200); } catch (Exception $e) { Log::error($e); return response()->json(['success' => false, 'message' => 'Failed to Create Admin Account'], 200); } } public function configuration() { $step = Configuration::stepExists(); if($step == 5 || !$this->requirementsCompleteStatus()){ return redirect()->route( 'setup.requirements' ); } if ( $step < 2 ) { return redirect()->route( 'setup.account' ); } $app_name = $step >= 3 ? Setting::where('key', 'app_name')->first()->value : null; return view( 'installer::config',compact('app_name') ); } public function configurationSubmit(Request $request) { try { $request->validate([ 'config_app_name' => 'required|string', ]); Configuration::updateStep(3); Setting::where('key', 'app_name')->update(['value' => $request->config_app_name]); if (Cache::has('last_updated_at')) { Setting::where('key', 'last_update_date')->update(['value' => Cache::get('last_updated_at')]); Cache::forget('last_updated_at'); } Cache::forget('setting'); session()->put('step-5-complete', true); return response()->json(['success' => true, 'message' => 'Configuration Successfully Saved'], 200); } catch (Exception $e) { Log::error($e); return response()->json(['success' => false, 'message' => 'Configuration Failed'], 200); } } public function smtp() { $step = Configuration::stepExists(); if($step == 5 || !$this->requirementsCompleteStatus()){ return redirect()->route( 'setup.requirements' ); } if ( $step < 3 ) { return redirect()->route( 'setup.configuration' ); } $email = null; $setting_info = Cache::get('setting'); if($step >= 4 && ($setting_info->mail_username != 'mail_username' && $setting_info->mail_password != 'mail_password')){ $email = []; $email['mail_host'] = $setting_info->mail_host; $email['email'] = $setting_info->mail_sender_email; $email['smtp_username'] = $setting_info->mail_username; $email['smtp_password'] = $setting_info->mail_password; $email['mail_port'] = $setting_info->mail_port; $email['mail_encryption'] = $setting_info->mail_encryption; $email['mail_sender_name'] = $setting_info->mail_sender_name; $email = (object) $email; } return view( 'installer::smtp',compact('email') ); } public function smtpSetup( Request $request ) { try { $rules = [ 'mail_host' => 'required', 'email' => 'required', 'smtp_username' => 'required', 'smtp_password' => 'required', 'mail_port' => 'required', 'mail_encryption' => 'required', 'mail_sender_name' => 'required', ]; $customMessages = [ 'mail_host.required' => 'Mail host is required', 'email.required' => 'Email is required', 'smtp_username.required' => 'Smtp username is required', 'smtp_password.unique' => 'Smtp password is required', 'mail_port.required' => 'Mail port is required', 'mail_encryption.required' => 'Mail encryption is required', 'mail_sender_name.required' => 'Mail Sender Name is required', ]; $this->validate( $request, $rules, $customMessages ); Setting::where('key', 'mail_host')->update(['value' => $request->mail_host]); Setting::where('key', 'mail_sender_email')->update(['value' => $request->email]); Setting::where('key', 'mail_username')->update(['value' => $request->smtp_username]); Setting::where('key', 'mail_password')->update(['value' => $request->smtp_password]); Setting::where('key', 'mail_port')->update(['value' => $request->mail_port]); Setting::where('key', 'mail_encryption')->update(['value' => $request->mail_encryption]); Setting::where('key', 'mail_sender_name')->update(['value' => $request->mail_sender_name]); Configuration::updateStep( 4 ); session()->put( 'step-6-complete', true ); Cache::forget('setting'); return response()->json( ['success' => true, 'message' => 'Successfully setup mail SMTP'], 200 ); } catch ( Exception $e ) { Log::error($e->getMessage()); return response()->json( ['success' => false, 'message' => 'Failed to Setup SMTP'], 200 ); } } public function smtpSkip( ) { Configuration::updateStep( 4 ); session()->put( 'step-6-complete', true ); return redirect()->route( 'setup.complete' ); } public function setupComplete() { session()->put( 'step-7-complete', true ); if ( Configuration::setupStepCheck( 4 ) && $this->requirementsCompleteStatus() ) { $envContent = File::get( base_path( '.env' ) ); $envContent = preg_replace( ['/APP_ENV=(.*)\s/','/APP_DEBUG=(.*)\s/',], ['APP_ENV=' . 'production' . "\n",'APP_DEBUG=' . 'false' . "\n",], $envContent ); if ( $envContent !== null ) { File::put( base_path( '.env' ), $envContent ); } return view( 'installer::complete' ); } if ( Configuration::setupStepCheck( 5 ) && $this->requirementsCompleteStatus() ) { return $this->completedSetup( 'home' ); } if ( Configuration::stepExists() < 4 ) { return redirect()->route( 'setup.smtp' ); } return redirect()->back()->withInput()->withErrors( ['errors' => 'Setup Is Incomplete hh'] ); } public function launchWebsite( $type ) { if ( Configuration::setupStepCheck( 4 ) ) { Configuration::updateStep( 5 ); return $this->completedSetup( $type ); } elseif ( Configuration::setupStepCheck( 5 ) ) { return $this->completedSetup( $type ); } return redirect()->back()->withInput()->withErrors( ['errors' => 'Setup Is Incomplete'] ); } } PK ���Z app/Http/Controllers/.gitkeepnu �[��� PK ���Zi�" � � 6 app/Http/Controllers/PuchaseVerificationController.phpnu �[��� <?php namespace Modules\Installer\app\Http\Controllers; use App\Http\Controllers\Controller; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Modules\Installer\app\Enums\InstallerInfo; class PuchaseVerificationController extends Controller { public function __construct() { set_time_limit(8000000); } public function index() { return view('installer::index'); } public function validatePurchase(Request $request) { session()->flush(); $request->validate([ 'purchase_code' => 'required|string', ]); try { $response = Http::post(InstallerInfo::VERIFICATION_URL->value, [ 'purchase_code' => $request->purchase_code, 'item_id' => InstallerInfo::ITEM_ID->value, 'incoming_url' => InstallerInfo::getHost(), 'incoming_ip' => InstallerInfo::getRemoteAddr(), ])->json(); session()->put('step-1-complete', true); if (InstallerInfo::rewriteHashedFile($response, $request->purchase_code)) { return response()->json(['success' => true, 'message' => $response['message']], 200); } return response()->json(['success' => false, 'message' => (is_array($response) && array_key_exists('message', $response)) && $response['message'] ? $response['message'] : 'Verification Failed'], 200); } catch (Exception $e) { Log::error($e->getMessage()); return response()->json(['success' => false, 'message' => 'Server Error'], 200); } } } PK ���Z app/Http/Requests/.gitkeepnu �[��� PK ���Z app/Http/Middleware/.gitkeepnu �[��� PK ���ZB�? '