. * * @package LibreNMS * @link http://librenms.org * @copyright 2020 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Install; use Exception; use LibreNMS\Util\EnvHelper; class FinalizeController extends \App\Http\Controllers\Controller { public function __invoke() { $env = ''; $config = $this->getConfigFileContents(); $messages = []; $success = true; try { $this->writeConfigFile($config); } catch (Exception $e) { $messages[] = $e->getMessage(); $success = true; } // write env last only if everything else succeeded if ($success) { try { $env = $this->writeEnvFile(); } catch (Exception $e) { $messages[] = $e->getMessage(); $success = false; } } return view('install.finish', [ 'env' => $env, 'config' => $config, 'messages' => $messages, 'success' => $success, ]); } private function writeEnvFile() { return EnvHelper::setEnv([ 'NODE_ID' => uniqid(), 'DB_HOST' => session('db.host'), 'DB_PORT' => session('db.port'), 'DB_USERNAME' => session('db.username'), 'DB_PASSWORD' => session('db.password'), 'DB_DATABASE' => session('db.database'), 'DB_SOCKET' => session('db.socket'), ], base_path('.env')); } private function writeConfigFile($config_file) { $file = base_path('config.php'); if (!file_exists($file)) { $conf = fopen($file, 'w'); if ($conf !== false) { if (fwrite($conf, " $controller) { if ($step !== 'finish' && !session("install.$step")) { return false; } } return true; } public static function icon(): string { return 'fa-check'; } private function getConfigFileContents() { $db = session('db'); $install_dir = base_path(); return <<<"EOD" ## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php! ### Database config \$config\['db_host'\] = '{$db['host']}'; \$config\['db_port'\] = '{$db['port']}'; \$config\['db_user'\] = '{$db['username']}'; \$config\['db_pass'\] = '{$db['password']}'; \$config\['db_name'\] = '{$db['database']}'; \$config\['db_socket'\] = '{$db['unix_socket']}'; // This is the user LibreNMS will run as //Please ensure this user is created and has the correct permissions to your install \$config['user'] = 'librenms'; ### Locations - it is recommended to keep the default #\$config\['install_dir'\] = "$install_dir"; ### This should *only* be set if you want to *force* a particular hostname/port ### It will prevent the web interface being usable form any other hostname #\$config\['base_url'\] = "http://librenms.company.com"; ### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir ### and that your web server has permission to talk to rrdcached. #\$config\['rrdcached'\] = "unix:/var/run/rrdcached.sock"; ### Default community \$config\['snmp'\]\['community'\] = array("public"); ### Authentication Model \$config\['auth_mechanism'\] = "mysql"; # default, other options: ldap, http-auth #\$config\['http_auth_guest'\] = "guest"; # remember to configure this user if you use http-auth ### List of RFC1918 networks to allow scanning-based discovery #\$config\['nets'\]\[\] = "10.0.0.0/8"; #\$config\['nets'\]\[\] = "172.16.0.0/12"; #\$config\['nets'\]\[\] = "192.168.0.0/16"; # Update configuration #\$config\['update_channel'\] = 'release'; # uncomment to follow the monthly release channel #\$config\['update'\] = 0; # uncomment to completely disable updates EOD; } }