From 329f58da4be2bc86e27d995b82d3afeb030753de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Wed, 30 Nov 2022 22:15:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=B9=E6=80=A7=EF=BC=9A=E5=8F=91=E5=B8=83?= =?UTF-8?q?=2020221130=20=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/DatabasesController.php | 30 ----- app/Http/Controllers/Api/InfosController.php | 17 --- .../Controllers/Api/PluginsController.php | 127 +++++++++++++----- .../Controllers/Api/SettingsController.php | 33 ++--- app/Http/Controllers/Api/TasksController.php | 2 +- app/Http/Controllers/Api/UsersController.php | 2 +- .../Controllers/Api/WebsitesController.php | 54 ++++++-- config/panel.php | 2 +- .../Controllers/OpenrestyController.php | 39 +++--- plugins/Openresty/plugin.json | 2 +- plugins/Openresty/views/index.blade.php | 10 +- resources/views/database/mysql.blade.php | 2 - resources/views/database/postgresql.blade.php | 2 - resources/views/home.blade.php | 6 +- resources/views/index.blade.php | 6 +- resources/views/plugin.blade.php | 42 +++--- resources/views/setting.blade.php | 39 +----- resources/views/task.blade.php | 27 ++-- resources/views/website/add.blade.php | 5 +- .../views/website/default_settings.blade.php | 81 +++++++++++ resources/views/website/edit.blade.php | 16 ++- resources/views/website/list.blade.php | 39 +++--- routes/api.php | 3 + routes/web.php | 2 +- 24 files changed, 334 insertions(+), 254 deletions(-) delete mode 100644 app/Http/Controllers/Api/DatabasesController.php delete mode 100644 resources/views/database/mysql.blade.php delete mode 100644 resources/views/database/postgresql.blade.php create mode 100644 resources/views/website/default_settings.blade.php diff --git a/app/Http/Controllers/Api/DatabasesController.php b/app/Http/Controllers/Api/DatabasesController.php deleted file mode 100644 index cddd5ca8..00000000 --- a/app/Http/Controllers/Api/DatabasesController.php +++ /dev/null @@ -1,30 +0,0 @@ -where('name', 'mysql_root_password')->value('value'); - $db_raw = trim(shell_exec("/www/server/mysql/bin/mysql -u root -p".$password." -e \"SHOW DATABASES;\"")); - $res['code'] = 0; - $res['msg'] = 'success'; - $db = explode("\n", $db_raw); - foreach ($db as $key => $value) { - if ($value == 'Database' || $value == 'information_schema' || $value == 'mysql' || $value == 'performance_schema' || $value == 'sys') { - unset($db[$key]); - } else { - $res['data'][] = $value; - } - } - - return response()->json($res); - } -} diff --git a/app/Http/Controllers/Api/InfosController.php b/app/Http/Controllers/Api/InfosController.php index 63a4f190..7d616120 100644 --- a/app/Http/Controllers/Api/InfosController.php +++ b/app/Http/Controllers/Api/InfosController.php @@ -31,23 +31,6 @@ class InfosController extends Controller "icon" => "layui-icon-website", "jump" => "website/list" ), - array( - "name" => "database", - "title" => "数据库", - "icon" => "layui-icon-template-1", - "list" => array( - array( - "name" => "mysql", - "title" => "MySQL", - "jump" => "database/mysql" - ), - array( - "name" => "postgresql", - "title" => "PostgreSQL", - "jump" => "database/postgresql" - ) - ) - ), array( "name" => "monitor", "title" => "监控", diff --git a/app/Http/Controllers/Api/PluginsController.php b/app/Http/Controllers/Api/PluginsController.php index 5db15a6d..de5cea89 100644 --- a/app/Http/Controllers/Api/PluginsController.php +++ b/app/Http/Controllers/Api/PluginsController.php @@ -15,6 +15,7 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Http; +use Illuminate\Validation\ValidationException; class PluginsController extends Controller @@ -28,7 +29,7 @@ class PluginsController extends Controller { $data['code'] = 0; $data['msg'] = 'success'; - $data['data'] = $this->pluginList(false); + $data['data'] = $this->pluginList(); foreach ($data['data'] as $k => $v) { // 获取首页显示状态 $shows = Plugin::query()->pluck('show', 'slug'); @@ -73,34 +74,28 @@ class PluginsController extends Controller 'slug' => 'required|max:255', ]); $slug = $credentials['slug']; - } catch (Exception $e) { + } catch (ValidationException $e) { return response()->json(['code' => 1, 'msg' => $e->getMessage()]); } // 通过slug获取插件信息 $pluginList = $this->pluginList(); // 循环插件列表查找对应的插件信息 - $plugin_check = false; - $plugin_data = []; + $pluginCheck = false; + $pluginData = []; foreach ($pluginList as $v) { if ($v['slug'] == $slug) { - $plugin_data = $v; - $plugin_check = true; + $pluginData = $v; + $pluginCheck = true; } } + // 判断插件是否存在 - if (!$plugin_check) { + if (!$pluginCheck) { return response()->json(['code' => 1, 'msg' => '插件不存在']); } - // 判断有无任务记录 - $task_check = Task::query()->where('name', '安装'.$plugin_data['name'])->first(); - if ($task_check) { - $data['code'] = 1; - $data['msg'] = '此插件已存在安装记录,请先删除!'; - return response()->json($data); - } // 判断插件是否已经安装 - $installed = Task::query()->where('slug', $slug)->first(); + $installed = isset(PLUGINS[$slug]); if ($installed) { $data['code'] = 1; $data['msg'] = '请不要重复安装!'; @@ -109,10 +104,10 @@ class PluginsController extends Controller // 入库等待安装 $task = new Task(); - $task->name = '安装'.$plugin_data['name']; - $task->shell = $plugin_data['install']; + $task->name = '安装 '.$pluginData['name']; + $task->shell = $pluginData['install']; $task->status = 'waiting'; - $task->log = '/tmp/'.$plugin_data['slug'].'.log'; + $task->log = '/tmp/'.$pluginData['slug'].'.log'; $task->save(); // 塞入队列 ProcessShell::dispatch($task->id)->delay(1); @@ -136,32 +131,25 @@ class PluginsController extends Controller 'slug' => 'required|max:255', ]); $slug = $credentials['slug']; - } catch (Exception $e) { + } catch (ValidationException $e) { return response()->json(['code' => 1, 'msg' => $e->getMessage()]); } // 通过slug获取插件信息 $pluginList = $this->pluginList(); // 循环插件列表查找对应的插件信息 - $plugin_check = false; - $plugin_data = []; + $pluginCheck = false; + $pluginData = []; foreach ($pluginList as $v) { if ($v['slug'] == $slug) { - $plugin_data = $v; - $plugin_check = true; + $pluginData = $v; + $pluginCheck = true; } } - // 判断插件是否存在 - if (!$plugin_check) { - return response()->json(['code' => 1, 'msg' => '插件不存在']); - } - // 判断有无任务记录 - $task_check = Task::query()->where('name', '卸载'.$plugin_data['name'])->first(); - if ($task_check) { - $data['code'] = 1; - $data['msg'] = '此插件已存在卸载记录,请先删除!'; - return response()->json($data); + // 判断插件是否存在 + if (!$pluginCheck) { + return response()->json(['code' => 1, 'msg' => '插件不存在']); } // 判断是否是操作openresty @@ -173,10 +161,67 @@ class PluginsController extends Controller // 入库等待卸载 $task = new Task(); - $task->name = '卸载'.$plugin_data['name']; - $task->shell = $plugin_data['uninstall']; + $task->name = '卸载 '.$pluginData['name']; + $task->shell = $pluginData['uninstall']; $task->status = 'waiting'; - $task->log = '/tmp/'.$plugin_data['slug'].'.log'; + $task->log = '/tmp/'.$pluginData['slug'].'.log'; + $task->save(); + // 塞入队列 + ProcessShell::dispatch($task->id)->delay(1); + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'] = '任务添加成功'; + + return response()->json($res); + } + + /** + * 更新插件 + */ + public function update(Request $request): JsonResponse + { + // 消毒 + try { + $credentials = $this->validate($request, [ + 'slug' => 'required|max:255', + ]); + $slug = $credentials['slug']; + } catch (ValidationException $e) { + return response()->json(['code' => 1, 'msg' => $e->getMessage()]); + } + // 通过slug获取插件信息 + $pluginList = $this->pluginList(); + + // 循环插件列表查找对应的插件信息 + $pluginCheck = false; + $pluginData = []; + foreach ($pluginList as $v) { + if ($v['slug'] == $slug) { + $pluginData = $v; + $pluginCheck = true; + break; + } + } + + // 判断插件是否存在 + if (!$pluginCheck) { + return response()->json(['code' => 1, 'msg' => '插件不存在']); + } + + // 判断插件是否已经安装 + $installed = isset(PLUGINS[$slug]); + if (!$installed) { + $data['code'] = 1; + $data['msg'] = '插件未安装!'; + return response()->json($data); + } + + // 入库等待更新 + $task = new Task(); + $task->name = '更新 '.$pluginData['name']; + $task->shell = $pluginData['update']; + $task->status = 'waiting'; + $task->log = '/tmp/'.$pluginData['slug'].'.log'; $task->save(); // 塞入队列 ProcessShell::dispatch($task->id)->delay(1); @@ -229,10 +274,18 @@ class PluginsController extends Controller ]); $slug = $credentials['slug']; $show = $credentials['show']; - } catch (Exception $e) { + } catch (ValidationException $e) { return response()->json(['code' => 1, 'msg' => $e->getMessage()]); } + // 判断插件是否已经安装 + $installed = isset(PLUGINS[$slug]); + if (!$installed) { + $data['code'] = 1; + $data['msg'] = '插件未安装!'; + return response()->json($data); + } + Plugin::query()->where('slug', $slug)->update(['show' => $show]); $res['code'] = 0; $res['msg'] = 'success'; diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php index d1e0bb9b..4e48bde0 100644 --- a/app/Http/Controllers/Api/SettingsController.php +++ b/app/Http/Controllers/Api/SettingsController.php @@ -15,24 +15,18 @@ class SettingsController extends Controller { /** * 获取面板设置 - * @param Request $request * @return JsonResponse */ - public function get(Request $request) + public function get(): JsonResponse { - $settings = Setting::query()->get()->toArray(); - foreach ($settings as $setting) { - $res['data'][$setting['name']] = $setting['value']; - } - - if (!empty($settings)) { - $res['code'] = 0; - $res['msg'] = 'success'; - } else { - $res['code'] = 1; - $res['msg'] = '面板设置获取失败'; - $res['data'] = null; - } + $settings = Setting::all(); + // 隐藏字段 + $settings->makeHidden('id'); + $settings->makeHidden('created_at'); + $settings->makeHidden('updated_at'); + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'] = $settings->pluck('value', 'name'); return response()->json($res); } @@ -47,16 +41,9 @@ class SettingsController extends Controller $settings = $request->all(); // 将数据入库 foreach ($settings as $key => $value) { - if ($key == 'access_token' || $key == 'username' || $key == 'password') { + if ($key == 'access_token') { continue; } - if ($key == 'mysql_root_password') { - $old_mysql_password = Setting::query()->where('name', 'mysql_root_password')->value('value'); - if ($old_mysql_password != $value) { - shell_exec('mysql -uroot -p'.$old_mysql_password.' -e "ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \''.$value.'\';"'); - shell_exec('mysql -uroot -p'.$old_mysql_password.' -e "flush privileges;"'); - } - } Setting::query()->where('name', $key)->update(['value' => $value]); } $res['code'] = 0; diff --git a/app/Http/Controllers/Api/TasksController.php b/app/Http/Controllers/Api/TasksController.php index 9086f9b7..ae089b55 100644 --- a/app/Http/Controllers/Api/TasksController.php +++ b/app/Http/Controllers/Api/TasksController.php @@ -23,7 +23,7 @@ class TasksController extends Controller $task = Task::query()->where('status', 'running')->orWhere('status', 'waiting')->first(); $res['code'] = 0; $res['msg'] = 'success'; - if ($task) { + if (empty($task)) { $res['data'] = false; } else { $res['data'] = true; diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index b67562d8..46bc708f 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -29,7 +29,7 @@ class UsersController extends Controller } catch (ValidationException $e) { return response()->json([ 'code' => 1, - 'msg' => '参数错误', + 'msg' => '参数错误:'.$e->getMessage(), 'errors' => $e->errors() ], 422); } diff --git a/app/Http/Controllers/Api/WebsitesController.php b/app/Http/Controllers/Api/WebsitesController.php index be97da56..8fc61592 100644 --- a/app/Http/Controllers/Api/WebsitesController.php +++ b/app/Http/Controllers/Api/WebsitesController.php @@ -9,10 +9,8 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\Website; use App\Models\Setting; -use Illuminate\Database\Eloquent\Model; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Storage; use Illuminate\Validation\ValidationException; class WebsitesController extends Controller @@ -23,9 +21,9 @@ class WebsitesController extends Controller */ public function getList(): JsonResponse { - $website_lists = Website::query()->get(); + $websiteList = Website::query()->get(); // 判空 - if ($website_lists->isEmpty()) { + if ($websiteList->isEmpty()) { return response()->json([ 'code' => 0, 'msg' => '无数据', @@ -35,7 +33,7 @@ class WebsitesController extends Controller return response()->json([ 'code' => 0, 'msg' => '获取成功', - 'data' => $website_lists + 'data' => $websiteList ]); } @@ -58,15 +56,31 @@ class WebsitesController extends Controller 'db_type' => 'required_if:db,true|max:10', 'db_name' => 'required_if:db,true|max:255', 'db_username' => 'required_if:db,true|max:255', - 'db_password' => 'required_if:db,true|max:255', + 'db_password' => ['required_if:db,true', 'regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/', 'min:8'], ]); } catch (ValidationException $e) { return response()->json([ 'code' => 1, - 'msg' => '参数错误', + 'msg' => '参数错误:'.$e->getMessage(), 'errors' => $e->errors() ], 200); } + + // 禁止添加重复网站 + $website = Website::query()->where('name', $credentials['name'])->first(); + if ($website) { + return response()->json([ + 'code' => 1, + 'msg' => '网站已存在' + ]); + } + // 禁止phpmyadmin作为名称 + if ($credentials['name'] == 'phpmyadmin') { + return response()->json([ + 'code' => 1, + 'msg' => '该名称为保留名称,请更换' + ]); + } // path为空时,设置默认值 if (empty($credentials['path'])) { $credentials['path'] = '/www/wwwroot/'.$credentials['name']; @@ -228,20 +242,34 @@ EOF; /** * 获取网站全局设置 - * @return + * @return JsonResponse */ - public function get_website_default_settings() + public function getDefaultSettings(): JsonResponse { - return '待开发功能'; + $index = @file_get_contents('/www/server/nginx/html/index.html') ? file_get_contents('/www/server/nginx/html/index.html') : ''; + $stop = @file_get_contents('/www/server/nginx/html/stop.html') ? file_get_contents('/www/server/nginx/html/stop.html') : ''; + $res['code'] = 0; + $res['msg'] = 'success'; + $res['data'] = [ + 'index' => $index, + 'stop' => $stop, + ]; + return response()->json($res); } /** * 保存网站全局设置 - * @return + * @return JsonResponse */ - public function save_website_default_settings() + public function saveDefaultSettings(): JsonResponse { - return '待开发功能'; + $index = request()->input('index'); + $stop = request()->input('stop'); + file_put_contents('/www/server/nginx/html/index.html', $index); + file_put_contents('/www/server/nginx/html/stop.html', $stop); + $res['code'] = 0; + $res['msg'] = 'success'; + return response()->json($res); } /** diff --git a/config/panel.php b/config/panel.php index 8014f5ae..9b79900b 100644 --- a/config/panel.php +++ b/config/panel.php @@ -1,6 +1,6 @@ '耗子Linux面板', - 'version' => '20221121', + 'version' => '20221130', 'plugin_dir' => '/www/panel/plugins', ]; \ No newline at end of file diff --git a/plugins/Openresty/Controllers/OpenrestyController.php b/plugins/Openresty/Controllers/OpenrestyController.php index 5f64dc67..a5a9ff07 100755 --- a/plugins/Openresty/Controllers/OpenrestyController.php +++ b/plugins/Openresty/Controllers/OpenrestyController.php @@ -2,7 +2,7 @@ /** * Name: OpenResty插件控制器 * Author:耗子 - * Date: 2022-11-21 + * Date: 2022-11-30 */ namespace Plugins\Openresty\Controllers; @@ -11,15 +11,16 @@ namespace Plugins\Openresty\Controllers; use App\Http\Controllers\Controller; // HTTP +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; -use Illuminate\Support\Facades\Request; // Filesystem use Illuminate\Filesystem\Filesystem; class OpenrestyController extends Controller { - public function status() + public function status(): JsonResponse { $command = 'systemctl status nginx'; $result = shell_exec($command); @@ -35,7 +36,7 @@ class OpenrestyController extends Controller return response()->json($res); } - public function restart() + public function restart(): JsonResponse { $command = 'nginx -t 2>&1'; $result = shell_exec($command); @@ -50,15 +51,12 @@ class OpenrestyController extends Controller } $command2 = 'systemctl restart nginx'; - $result2 = shell_exec($command2); - if (str_contains($result2, 'done')) { - $res['data'] = 'OpenResty已重启'; - return response()->json($res); - } + shell_exec($command2); + $res['data'] = 'OpenResty已重启'; return response()->json($res); } - public function reload() + public function reload(): JsonResponse { $command = 'nginx -t 2>&1'; $result = shell_exec($command); @@ -72,17 +70,12 @@ class OpenrestyController extends Controller } $command2 = 'systemctl reload nginx'; - $result2 = shell_exec($command2); - if (str_contains($result2, 'done')) { - $res['data'] = 'OpenResty已重载'; - } else { - $res['msg'] = 'error'; - $res['data'] = 'OpenResty重载失败'; - } + shell_exec($command2); + $res['data'] = 'OpenResty已重载'; return response()->json($res); } - public function getConfig() + public function getConfig(): JsonResponse { $res['code'] = 0; $res['msg'] = 'success'; @@ -90,12 +83,12 @@ class OpenrestyController extends Controller return response()->json($res); } - public function saveConfig() + public function saveConfig(Request $request): JsonResponse { $res['code'] = 0; $res['msg'] = 'success'; // 获取配置内容 - $config = Request::post('config'); + $config = $request->input('config'); // 备份一份旧配置 $old_config = file_get_contents('/www/server/nginx/conf/nginx.conf'); // 写入配置 @@ -118,7 +111,7 @@ class OpenrestyController extends Controller } } - public function load() + public function load(): JsonResponse { $raw_status = HTTP::get('http://127.0.0.1/nginx_status')->body(); @@ -158,7 +151,7 @@ class OpenrestyController extends Controller return response()->json($res); } - public function errorLog() + public function errorLog(): JsonResponse { $res['code'] = 0; $res['msg'] = 'success'; @@ -170,7 +163,7 @@ class OpenrestyController extends Controller return response()->json($res); } - public function cleanErrorLog() + public function cleanErrorLog(): JsonResponse { $res['code'] = 0; $res['msg'] = 'success'; diff --git a/plugins/Openresty/plugin.json b/plugins/Openresty/plugin.json index ba46b391..92e15202 100755 --- a/plugins/Openresty/plugin.json +++ b/plugins/Openresty/plugin.json @@ -1,5 +1,5 @@ { - "name": "OpenResty-1.21.4", + "name": "OpenResty", "slug": "openresty", "version": "1.21.4.1" } \ No newline at end of file diff --git a/plugins/Openresty/views/index.blade.php b/plugins/Openresty/views/index.blade.php index 7328cb96..04d1c922 100755 --- a/plugins/Openresty/views/index.blade.php +++ b/plugins/Openresty/views/index.blade.php @@ -1,7 +1,7 @@ OpenResty
@@ -96,7 +96,8 @@ Date: 2022-11-21 console.log('耗子Linux面板:OpenResty错误日志获取失败,接口返回' + result); $('#openresty-error-log').text('OpenResty错误日志获取失败,请刷新重试!'); code({ - title: 'error.log' + elem: '#openresty-error-log' + , title: 'error.log' , encode: true , about: false @@ -105,7 +106,8 @@ Date: 2022-11-21 } $('#openresty-error-log').text(result.data); code({ - title: 'error.log' + elem: '#openresty-error-log' + , title: 'error.log' , encode: true , about: false @@ -201,8 +203,8 @@ Date: 2022-11-21 layer.alert(result.data); return false; } - layer.alert('OpenResty重启成功!'); admin.events.refresh(); + layer.alert('OpenResty重启成功!'); } , error: function (xhr, status, error) { console.log('耗子Linux面板:ajax请求出错,错误' + error) diff --git a/resources/views/database/mysql.blade.php b/resources/views/database/mysql.blade.php deleted file mode 100644 index 9c7fe768..00000000 --- a/resources/views/database/mysql.blade.php +++ /dev/null @@ -1,2 +0,0 @@ -数据库 - MySQL -

管理正在开发中!

\ No newline at end of file diff --git a/resources/views/database/postgresql.blade.php b/resources/views/database/postgresql.blade.php deleted file mode 100644 index 77af7a01..00000000 --- a/resources/views/database/postgresql.blade.php +++ /dev/null @@ -1,2 +0,0 @@ -数据库 - PostgreSQL -

管理正在开发中!

\ No newline at end of file diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 0a03991d..38628a53 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -1,7 +1,7 @@
@@ -84,7 +84,7 @@ Date: 2022-10-14
    diff --git a/resources/views/plugin.blade.php b/resources/views/plugin.blade.php index dcaf1f42..59750c3b 100644 --- a/resources/views/plugin.blade.php +++ b/resources/views/plugin.blade.php @@ -2,26 +2,26 @@
    -
    -
    +
    - + diff --git a/resources/views/website/edit.blade.php b/resources/views/website/edit.blade.php index 3a1b0294..90b045de 100644 --- a/resources/views/website/edit.blade.php +++ b/resources/views/website/edit.blade.php @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/resources/views/website/list.blade.php b/resources/views/website/list.blade.php index d5f3247b..2958db68 100644 --- a/resources/views/website/list.blade.php +++ b/resources/views/website/list.blade.php @@ -1,7 +1,7 @@ 网站
    @@ -15,8 +15,8 @@ Date: 2022-11-21 @@ -31,6 +31,10 @@ Date: 2022-11-21 value="@{{ d.status }}" data-website-name="@{{ d.name }}" @{{ d.status== 1 ? 'checked' : '' }} /> + +
    @@ -77,7 +81,7 @@ Date: 2022-11-21 , {field: 'run', title: '运行', width: 100, templet: '#website-run', unresize: true} , {field: 'path', title: '目录', width: 250} , {field: 'php', title: 'PHP', width: 60} - , {field: 'ssl', title: 'SSL', width: 110} + , {field: 'ssl', title: 'SSL', width: 110, templet: '#website-ssl'} , {field: 'note', title: '备注', edit: 'textarea'} , {fixed: 'right', title: '操作', toolbar: '#website-setting', width: 150} ]] @@ -90,7 +94,7 @@ Date: 2022-11-21 // 头工具栏事件 table.on('toolbar(website-list)', function (obj) { console.log(obj); - if (obj.event === 'add_website') { + if (obj.event === 'website_add') { admin.popup({ title: '添加网站' , area: ['70%', '60%'] @@ -104,22 +108,22 @@ Date: 2022-11-21 }); } }); - } else if (obj.event === 'edit_default_settings') { - layer.open({ - type: 2 - , title: '全局设置' - , content: 'website/edit_default_settings' - , area: ['500px', '500px'] - , btn: ['确定', '取消'] - , yes: function (index, layero) { - var iframeWin = window[layero.find('iframe')[0]['name']]; - iframeWin.submitForm(); + } else if (obj.event === 'website_default_settings') { + admin.popup({ + title: '全局设置' + , area: ['70%', '60%'] + , id: 'LAY-popup-website-add' + , success: function (layer, index) { + view(this.id).render('website/default_settings', { + }).done(function () { + form.render(null, 'LAY-popup-website-default-settings'); + }); } }); } }); - //行工具事件 + // 行工具事件 table.on('tool(website-list)', function (obj) { console.log(obj); let data = obj.data; @@ -156,7 +160,7 @@ Date: 2022-11-21 , success: function (result) { if (result.code !== 0) { console.log('耗子Linux面板:网站设置获取失败,接口返回' + result); - layui.alert('网站设置获取失败!'); + layer.alert('网站设置获取失败!'); return false; } config = result.data; @@ -217,6 +221,7 @@ Date: 2022-11-21 let run = obj.elem.checked ? 1 : 0; console.log(website_name); //当前行数据 + layer.msg('待开发功能!', {icon: 2}); }); }); diff --git a/routes/api.php b/routes/api.php index c7fc04ef..7763cb3d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -71,6 +71,8 @@ Route::prefix('panel')->group(function () { // 网站 Route::middleware('auth:sanctum')->prefix('website')->group(function () { // 获取网站列表 + Route::get('getDefaultSettings', [WebsitesController::class, 'getDefaultSettings']); + Route::post('saveDefaultSettings', [WebsitesController::class, 'saveDefaultSettings']); Route::get('getList', [WebsitesController::class, 'getList']); Route::post('add', [WebsitesController::class, 'add']); Route::post('delete', [WebsitesController::class, 'delete']); @@ -123,6 +125,7 @@ Route::prefix('panel')->group(function () { Route::get('getList', [PluginsController::class, 'getList']); Route::post('install', [PluginsController::class, 'install']); Route::post('uninstall', [PluginsController::class, 'uninstall']); + Route::post('update', [PluginsController::class, 'update']); Route::post('setShowHome', [PluginsController::class, 'setShowHome']); }); // 设置 diff --git a/routes/web.php b/routes/web.php index e87c18c3..2a2ecdf7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -30,7 +30,7 @@ Route::prefix('panel/views')->group(function () { // 网站 Route::prefix('website')->group(function () { //全局设置 - Route::view('default_setting', 'website.default_settings'); + Route::view('default_settings', 'website.default_settings'); // 列表 Route::view('list', 'website.list'); // 添加