From be2ca68503bdd46e064d1b8d98f83046233b395e Mon Sep 17 00:00:00 2001
From: tianya <yanghuxiao@vip.qq.com>
Date: Mon, 3 Apr 2023 21:57:51 +0800
Subject: [PATCH] =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=A2=9E=E5=8A=A0?=
 =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=E5=B7=A5=E5=85=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 dedebiz | 55 ++++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 40 insertions(+), 15 deletions(-)

diff --git a/dedebiz b/dedebiz
index 33d6a7c3..54f39355 100755
--- a/dedebiz
+++ b/dedebiz
@@ -13,9 +13,16 @@ define('DEDE_ENVIRONMENT', 'production');
 define('DEBUG_LEVEL', FALSE); //如果设置为TRUE则会打印执行SQL的时间和标签加载时间方便调试
 //切换工作目录到/src
 $workDir = dirname(__FILE__) . "/src";
+if (!file_exists($workDir . "/system/common.inc.php")) {
+	DedeCli::error("检查目录是否正确");
+	exit;
+}
+require_once($workDir . "/system/common.inc.php");
+require_once(DEDEINC . "/libraries/cli.class.php");
 chdir($workDir);
 if (substr(php_sapi_name(), 0, 3) === 'cgi') {
-	die("DedeBIZ:需要使用php-cli运行\n\n");
+	DedeCli::error("DedeBIZ:需要使用php-cli运行");
+	exit;
 }
 $helpStr = "
 NAME:
@@ -72,18 +79,13 @@ function RandEncode($length=26)
 if (count($argv) > 1 && ($argv[1] == "serv" || $argv[1] == "s")) {
 	//PHP5.4以下不支持内建服务器,用于开发调试
 	if (phpversion() < "5.4") {
-		die("DedeBIZ:命令行Web Server不支持\n\n");
+		DedeCli::error("DedeBIZ:命令行Web Server不支持");
+		exit;
 	}
 	echo "启动DedeBIZ开发环境\n\r";
 	echo "浏览器打开 http://localhost:8088\n\r";
 	passthru(PHP_BINARY . ' -S localhost:8088 -t' . escapeshellarg('./'));
 } else if (count($argv) > 1 && ($argv[1] == "make" || $argv[1] == "m")) {
-	if (!file_exists($workDir . "/system/common.inc.php")) {
-		DedeCli::error("检查目录是否正确");
-		exit;
-	}
-	require_once($workDir . "/system/common.inc.php");
-	require_once(DEDEINC . "/libraries/cli.class.php");
 	//一个命令行的生成工具
 	if (count($argv) > 2 && ($argv[2] == "arc" || $argv[2] == "a")) {
 		//生成文档
@@ -256,6 +258,7 @@ if (count($argv) > 1 && ($argv[1] == "serv" || $argv[1] == "s")) {
 			auto,o 自动更新
 				--start 开始时间(format:2012-03-12)
 			tdata 更新测试数据
+			pwd 更改管理员密码
 		WEBSITE:
 			https://www.dedebiz.com/help/";
 		DedeCli::write($helpStr);
@@ -431,8 +434,8 @@ if (count($argv) > 1 && ($argv[1] == "serv" || $argv[1] == "s")) {
     $db->exec($adminquery);
     $adminquery = "INSERT INTO `{$dbprefix}member_space` (`mid`,`pagesize`,`matt`,`spacename`,`spacelogo`,`spacestyle`,`sign`,`spacenews`) VALUES ('1','10','0','{$adminuser}的空间','','person','',''); ";
     $db->exec($adminquery);
-    DedeCli::write("admin user:admin");
-    DedeCli::write("admin password:admin");
+    DedeCli::write("用户名:admin");
+    DedeCli::write("密码:admin");
 	if (phpversion() < "5.4") {
 		die("DedeBIZ:命令行Web Server不支持\n\n");
 	}
@@ -451,7 +454,7 @@ if (count($argv) > 1 && ($argv[1] == "serv" || $argv[1] == "s")) {
 	require_once(DEDEINC . "/libraries/cli.class.php");
     $in_query = "INSERT INTO `#@__arctype` (reid,topid,sortrank,typename,cnoverview,enname,enoverview,bigpic,litimg,typedir,isdefault,defaultname,issend,channeltype,tempindex,templist,temparticle,modname,namerule,namerule2,ispart,corank,description,keywords,seotitle,moresite,siteurl,sitepath,ishidden,`cross`,`crossid`,`content`,`smalltypes`) VALUES ('0','0','999','测试栏目','','','','','','{cmspath}/a/ceshilanmu','1','index.html','1','1','{style}/index_article.htm','{style}/list_article.htm','{style}/article_article.htm','default','{typedir}/{aid}.html','{typedir}/{tid}-{page}.html','0','0','测试','测试','','0','','','0','0','','','')";
     if (!$dsql->ExecuteNoneQuery($in_query)) {
-        die("保存目录数据时失败,请检查您的输入资料是否存在问题");
+        DedeCli::error("保存目录数据时失败,请检查您的输入资料是否存在问题");
     }
 	$typeid = $dsql->GetLastID();
 	DedeCli::write("开始生成测试数据...");
@@ -460,13 +463,13 @@ if (count($argv) > 1 && ($argv[1] == "serv" || $argv[1] == "s")) {
 		$now = time();
 		$arcID = GetIndexKey(0, $typeid, $now, 1, $now, 1);
 		if (empty($arcID)) {
-			die("无法获得主键,因此无法进行后续操作");
+			DedeCli::error("无法获得主键,因此无法进行后续操作");
 		}
 		$query = "INSERT INTO `#@__archives` (id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,notpost,description,keywords,filename,dutyadmin,weight) VALUES ('$arcID','$typeid','0','$now','','1','1','0','100','0','这是一篇测试文章$arcID','测试文章$arcID','','天涯','DedeBIZ','','$now','$now','1','0','测试描述','测试关键词','','1','');";
 		if (!$dsql->ExecuteNoneQuery($query)) {
 			$gerr = $dsql->GetError();
 			$dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
-			die("数据保存到数据库主表`#@__archives`时出错,请检查数据库字段".str_replace('"', '', $gerr));
+			DedeCli::error("数据保存到数据库主表`#@__archives`时出错,请检查数据库字段".str_replace('"', '', $gerr));
 		}
 		$body = str_repeat("得德内容管理系统DedeBIZ上海穆云智能科技有限公司,天涯、叙述别离、老岳2023",500);
 		$query = "INSERT INTO `#@__addonarticle` (aid,typeid,redirecturl,templet,userip,body) VALUES ('$arcID','$typeid','','','127.0.0.1','$body')";
@@ -474,11 +477,33 @@ if (count($argv) > 1 && ($argv[1] == "serv" || $argv[1] == "s")) {
 			$gerr = $dsql->GetError();
 			$dsql->ExecuteNoneQuery("DELETE FROM `#@__archives` WHERE id='$arcID'");
 			$dsql->ExecuteNoneQuery("DELETE FROM `#@__arctiny` WHERE id='$arcID'");
-			die("数据保存到数据库附加表时出错,请检查数据库字段".str_replace('"', '', $gerr));
+			DedeCli::error("数据保存到数据库附加表时出错,请检查数据库字段".str_replace('"', '', $gerr));
 		}
 	}
 	DedeCli::write("成功生成所有测试数据");
+}  else if(count($argv) > 1 && ($argv[1] =="pwd")){
+	DedeCli::write("请选择需要更改密码的用户名:");
+	$dsql->Execute('out', "SELECT id,userid FROM `#@__admin`");
+	$ids = array();
+	while ($row = $dsql->GetObject('out')) {
+		DedeCli::write("[id:{$row->id}]{$row->userid}");
+		$ids[] = $row->id;
+	}
+	$id = intval(DedeCli::prompt('输入id?', $ids));
+	$pwd = DedeCli::prompt('请输入新的密码');
+	if (function_exists('password_hash')) {
+		$pwdm = "pwd='',pwd_new='".password_hash($pwd, PASSWORD_BCRYPT)."'";
+		$pwd = "pwd='',pwd_new='".password_hash($pwd, PASSWORD_BCRYPT)."'";
+	} else {
+		$pwdm = "pwd='".md5($pwd)."'";
+		$pwd = "pwd='".substr(md5($pwd), 5, 20)."'";
+	}
+	$query = "UPDATE `#@__admin` SET $pwd WHERE id='$id'";
+    $dsql->ExecuteNoneQuery($query);
+    $query = "UPDATE `#@__member` SET $pwdm WHERE mid='$id'";
+    $dsql->ExecuteNoneQuery($query);
+	DedeCli::write("成功修改密码");
 } else {
-	echo $helpStr;
+	DedeCli::write($helpStr);
 }
 ?>
\ No newline at end of file