. * * @package LibreNMS * @link http://librenms.org * @copyright 2020 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Install; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Arr; use LibreNMS\DB\Eloquent; class DatabaseController extends Controller { const KEYS = ['host', 'username', 'password', 'database', 'port', 'unix_socket']; public function __invoke(Request $request) { $data = Arr::only(session()->get('db') ?: [], self::KEYS); $data['stage'] = 2; $data['status'] = session('install.database'); return view('install.database', $data); } public function test(Request $request) { Eloquent::setConnection( 'setup', $request->get('host', 'localhost'), $request->get('username', 'librenms'), $request->get('password', ''), $request->get('database', 'librenms'), $request->get('port', 3306), $request->get('unix_socket') ); session()->put('db', Arr::only(config('database.connections.setup', []), self::KEYS)); $ok = false; $message = ''; try { $conn = Eloquent::DB('setup'); $ok = $conn && !is_null($conn->getPdo()); } catch (\Exception $e) { $message = $e->getMessage(); } session(['install.database' => $ok]); return response()->json([ 'result' => $ok ? 'ok' : 'fail', 'message' => $message, ]); } public static function enabled(): bool { return true; } public static function icon(): string { return 'fa-database'; } }