优化安装脚本

添加随机token设置
pull/276/head
Karson 2020-12-21 11:38:25 +08:00
parent 346f6eab1a
commit dd3d6f3172
1 changed files with 23 additions and 10 deletions

View File

@ -199,21 +199,34 @@ class Install extends Command
// 后台入口文件
$adminFile = ROOT_PATH . 'public' . DS . 'admin.php';
// 生成数据库Env配置文件
$envFile = ROOT_PATH . '.env.sample';
$envStr = @file_get_contents($envFile);
// 数据库配置文件
$dbConfigFile = APP_PATH . 'database.php';
$dbConfigText = @file_get_contents($dbConfigFile);
$callback = function ($matches) use ($mysqlHostname, $mysqlHostport, $mysqlUsername, $mysqlPassword, $mysqlDatabase, $mysqlPrefix) {
$field = "mysql" . ucfirst($matches[1]);
$replace = $$field;
return "{$matches[1]} = {$replace}" . PHP_EOL;
};
$envConf = preg_replace_callback('/(hostname|database|username|password|hostport|prefix)\s*=\s*(.*?)\n/', $callback, $envStr);
$dbConfigText = preg_replace_callback("/'(hostname|database|username|password|hostport|prefix)'(\s+)=>(\s+)Env::get\((.*)\)\,/", $callback, $config);
$result = @file_put_contents(ROOT_PATH . '.env', $envConf);
// 检测能否成功写入数据库配置
$result = @file_put_contents($dbConfigFile, $dbConfigText);
if (!$result) {
throw new Exception(__('The current permissions are insufficient to write the file %s', '.env'));
}
// 设置新的Token随机密钥key
$oldTokenKey = config('token.key');
$newTokenKey = \fast\Random::alnum(32);
$coreConfigFile = CONF_PATH . 'config.php';
$coreConfigText = @file_get_contents($coreConfigFile);
$coreConfigText = preg_replace("/'key'(\s+)=>(\s+)'{$oldTokenKey}'/", "'key'\$1=>\$2'{$newTokenKey}'", $coreConfigText);
$result = @file_put_contents($coreConfigFile, $coreConfigText);
if (!$result) {
throw new Exception(__('The current permissions are insufficient to write the file %s', 'application/config.php'));
}
// 变更默认管理员密码
$adminPassword = $adminPassword ? $adminPassword : Random::alnum(8);
$adminEmail = $adminEmail ? $adminEmail : "admin@admin.com";
@ -237,8 +250,8 @@ class Install extends Command
//修改站点名称
if ($siteName != config('site.name')) {
$instance->name('config')->where('name', 'name')->update(['value' => $siteName]);
$configFile = CONF_PATH . 'extra' . DS . 'site.php';
$config = include $configFile;
$siteConfigFile = CONF_PATH . 'extra' . DS . 'site.php';
$siteConfig = include $siteConfigFile;
$configList = $instance->name("config")->select();
foreach ($configList as $k => $value) {
if (in_array($value['type'], ['selects', 'checkbox', 'images', 'files'])) {
@ -247,10 +260,10 @@ class Install extends Command
if ($value['type'] == 'array') {
$value['value'] = (array)json_decode($value['value'], true);
}
$config[$value['name']] = $value['value'];
$siteConfig[$value['name']] = $value['value'];
}
$config['name'] = $siteName;
file_put_contents($configFile, '<?php' . "\n\nreturn " . var_export_short($config) . ";\n");
$siteConfig['name'] = $siteName;
file_put_contents($siteConfigFile, '<?php' . "\n\nreturn " . var_export_short($siteConfig) . ";\n");
}
$installLockFile = INSTALL_PATH . "install.lock";