可能原因:
+v2.0.11-20230414
+-
+
- 修复热门网址/最新网址的一些问题 +
- 新增Atool工具 (应急工具),用于强行修改密码/配置等 使用说明 +
- 调整安装脚本session_name避免与其他面板冲突(如小皮面板,造成安装提示无法满足) +
From 0ef96aba232a7b4f49e9a401bc7b85af9ebabc99 Mon Sep 17 00:00:00 2001
From: "MI15\\Win" <10359480+tznb@user.noreply.gitee.com>
Date: Fri, 14 Apr 2023 16:10:51 +0800
Subject: [PATCH] v2.0.11-20230414
---
system/ATool.php | 398 +++++++++++++++++++++++++++++
system/index.php | 90 ++++---
system/install.php | 1 +
system/version.txt | 2 +-
templates/admin/js/public.js | 5 +-
templates/admin/other/error.php | 2 +-
templates/admin/page/updatelog.php | 11 +
7 files changed, 471 insertions(+), 38 deletions(-)
create mode 100644 system/ATool.php
diff --git a/system/ATool.php b/system/ATool.php
new file mode 100644
index 0000000..fe64930
--- /dev/null
+++ b/system/ATool.php
@@ -0,0 +1,398 @@
+ 2. 进入TwoNav的程序目录
3. 编辑 data/ATool_config.php 将"switch" => 0 改为 "switch" => 1
4. 复制Key的内容,保存后刷新此页面,使用Key验证即可进入ATool';
+ require DIR.'/templates/admin/other/error.php';
+ exit;
+}
+
+session_name('ATool_SSID');
+session_start();
+
+if(!empty($_GET['type'])){
+ if($_GET['type'] == 'verify'){
+ if(isset($_SESSION['verify']) && $_SESSION['verify'] === true){
+ msg(-1,'您已经验证过了,无需重复验证!');
+ }else{
+ if(!empty($_POST['Key']) && $_POST['Key'] === md5($config['key'])){
+ $_SESSION['verify'] = true;
+ msg(1,'验证成功');
+ }else{
+ msg(-1,'Key错误');
+ }
+ }
+ }
+
+ //判断是否已验证
+ if(isset($_SESSION['verify']) && $_SESSION['verify'] === true){
+ $db = Load_db();
+ $global_config = unserialize( get_db("global_config", "v", ["k" => "o_config"]) );
+ }else{
+ msg(-1,'鉴权失败');
+ }
+
+ if($_GET['type'] == 'logout'){
+ $_SESSION['verify'] = false;
+ Reset_Config();
+ msg(1,'退出成功');
+ }elseif($_GET['type'] == 'user_list'){
+ $query = $_POST['query'];
+ $UserGroup = @$_POST['UserGroup'];
+ $page = empty(intval($_REQUEST['page'])) ? 1 : intval($_REQUEST['page']);
+ $limit = empty(intval($_REQUEST['limit'])) ? 50 : intval($_REQUEST['limit']);
+ $offset = ($page - 1) * $limit; //起始行号
+ //用户组筛选
+ if(!empty($UserGroup)){
+ $where['AND']['UserGroup'] = $UserGroup;
+ }
+ //关键字筛选
+ if(!empty($query)){
+ $where['AND']['OR'] = ["User[~]" => $query,"Email[~]" => $query,"RegIP[~]" => $query];
+ }
+ //统计条数
+ $count = count_db('global_user',$where);
+ //权重排序(数字小的排前面)
+ $where['ORDER']['RegTime'] = 'DESC';
+ //分页
+ $where['LIMIT'] = [$offset,$limit];
+ //查询
+ $datas = select_db('global_user',['ID','User','UserGroup','Email','RegIP','RegTime','Login'],$where);
+ if(!empty($datas)){
+ $user_group = select_db('user_group',['name','code'],'');//读用户组
+ $user_group = array_column($user_group, 'name', 'code');//以代号为键
+ $user_group['root'] = '站长';
+ $user_group['default'] = '默认';
+ foreach ($datas as $key => $data){
+ $datas[$key]['UserGroupName'] = $user_group[$data['UserGroup']]??'Null';
+ }
+ }
+ msgA(['code'=>1,'msg'=>'获取成功','count'=>$count,'data'=>$datas]);
+ }elseif($_GET['type'] == 'set_pwd'){
+ if(!has_db('global_user',['ID'=>$_POST['ID']])){
+ msg(-1,'用户不存在!');
+ }
+ //空字符串md5 防止意外出现空密码
+ if( $_POST['new_pwd']== 'd41d8cd98f00b204e9800998ecf8427e'){
+ msg(-1,'密码不能为空');
+ }
+ $RegTime = get_db('global_user','RegTime',['ID'=>$_POST['ID']]);
+ update_db('global_user',['Password'=>Get_MD5_Password($_POST['new_pwd'],$RegTime)],["ID" => $_POST['ID'] ],[1,'修改成功']);
+ }elseif($_GET['type'] == 'set_root'){
+ update_db('global_user',['UserGroup'=>'root'],["ID" => $_POST['ID'] ],[1,'修改成功']);
+ //设为允许注册
+ }elseif($_GET['type'] == 'set_allow_register'){
+ $global_config['RegOption'] = 1;
+ update_db("global_config", ["v" => $global_config], ["k" => "o_config"],[1,'设置成功']);
+ //关闭维护模式
+ }elseif($_GET['type'] == 'set_close_Maintenance'){
+ $global_config['Maintenance'] = 0;
+ update_db("global_config", ["v" => $global_config], ["k" => "o_config"],[1,'设置成功']);
+ //重置静态路径
+ }elseif($_GET['type'] == 'Set_Libs'){
+ $global_config['Libs'] = "./static";
+ update_db("global_config", ["v" => $global_config], ["k" => "o_config"],[1,'设置成功']);
+ //清理缓存
+ }elseif($_GET['type'] == 'Set_clear_cache'){
+ clearstatcache();
+ if(function_exists("opcache_reset")){
+ opcache_reset(); //清理PHP缓存
+ }
+ msgA(['code'=>1,'msg'=>'操作成功']);
+ }
+ msgA(['code'=>-1,'msg'=>'请求类型错误']);
+}else{
+ //判断是否已验证
+ if(isset($_SESSION['verify']) && $_SESSION['verify'] === true){
+ $db = Load_db();
+ $global_config = unserialize( get_db("global_config", "v", ["k" => "o_config"]) );
+ echo_Atool();
+ }else{
+ echo_verify();
+ }
+}
+
+
+
+//载入数据库
+function Load_db(){
+ require DIR."/data/config.php";
+ require DIR.'/system/Medoo.php';
+ if($db_config['type'] == 'sqlite'){
+ try {
+ $db_config['path'] = DIR."/data/".$db_config['file'];
+ $db = new Medoo\Medoo(['type'=>'sqlite','database'=>$db_config['path']]);
+ }catch (Exception $e) {
+ Amsg(-1,'载入数据库失败'.$db_config['path']);
+ }
+ }elseif($db_config['type'] == 'mysql'){
+ try {
+ $db = new Medoo\Medoo(['type' => 'mysql',
+ 'host' => $db_config['host'],
+ 'port' => $db_config['port'],
+ 'database' => $db_config['name'],
+ 'username' => $db_config['user'],
+ 'password' => $db_config['password']
+ ]);
+ }catch (Exception $e) {
+ Amsg(-1,'链接数据库失败!');
+ }
+ }
+ require DIR.'/system/public.php';
+ return $db;
+}
+
+function echo_Atool(){
+ global $global_config;
+?>
+
+
+
+
可能原因:
+