* fix bug and upgrade.

This commit is contained in:
z
2020-11-29 17:20:30 +08:00
parent 116c9fa5eb
commit ca26bfbfec
25 changed files with 1288 additions and 7 deletions

View File

@@ -1 +1 @@
12.5.stable
12.5.1

View File

@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* 基本设置。Basic settings. */
$config->version = '12.5'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->version = '12.5.1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
$config->cookieLife = time() + 2592000; // Cookie的生存时间。 The cookie life time.
$config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php.

View File

@@ -0,0 +1,109 @@
CREATE TABLE IF NOT EXISTS `zt_im_chat` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`gid` char(40) NOT NULL DEFAULT '',
`name` varchar(60) NOT NULL DEFAULT '',
`type` varchar(20) NOT NULL DEFAULT 'group',
`admins` varchar(255) NOT NULL DEFAULT '',
`committers` varchar(255) NOT NULL DEFAULT '',
`subject` mediumint(8) unsigned NOT NULL DEFAULT 0,
`public` enum('0', '1') NOT NULL DEFAULT '0',
`createdBy` varchar(30) NOT NULL DEFAULT '',
`createdDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`editedBy` varchar(30) NOT NULL DEFAULT '',
`editedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`lastActiveTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`dismissDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `gid` (`gid`),
KEY `name` (`name`),
KEY `type` (`type`),
KEY `public` (`public`),
KEY `createdBy` (`createdBy`),
KEY `editedBy` (`editedBy`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_chatuser` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`cgid` char(40) NOT NULL DEFAULT '',
`user` mediumint(8) NOT NULL DEFAULT 0,
`order` smallint(5) NOT NULL DEFAULT 0,
`star` enum('0', '1') NOT NULL DEFAULT '0',
`hide` enum('0', '1') NOT NULL DEFAULT '0',
`mute` enum('0', '1') NOT NULL DEFAULT '0',
`freeze` enum('0', '1') NOT NULL DEFAULT '0',
`join` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`quit` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`category` varchar(40) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `cgid` (`cgid`),
KEY `user` (`user`),
KEY `order` (`order`),
KEY `star` (`star`),
KEY `hide` (`hide`),
UNIQUE KEY `chatuser` (`cgid`, `user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_client` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`version` char(30) NOT NULL DEFAULT '',
`desc` varchar(100) NOT NULL DEFAULT '',
`changeLog` text NOT NULL,
`strategy` varchar(10) NOT NULL DEFAULT '',
`downloads` text NOT NULL,
`createdDate` datetime NOT NULL,
`createdBy` varchar(30) NOT NULL DEFAULT '',
`editedDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL DEFAULT '',
`status` enum('released','wait') NOT NULL DEFAULT 'wait',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_message` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`gid` char(40) NOT NULL DEFAULT '',
`cgid` char(40) NOT NULL DEFAULT '',
`user` varchar(30) NOT NULL DEFAULT '',
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`order` bigint(8) unsigned NOT NULL,
`type` enum('normal', 'broadcast', 'notify') NOT NULL DEFAULT 'normal',
`content` text NOT NULL DEFAULT '',
`contentType` enum('text', 'plain', 'emotion', 'image', 'file', 'object', 'code') NOT NULL DEFAULT 'text',
`data` text NOT NULL DEFAULT '',
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `mgid` (`gid`),
KEY `mcgid` (`cgid`),
KEY `muser` (`user`),
KEY `mtype` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_messagestatus` (
`user` mediumint(8) NOT NULL DEFAULT 0,
`message` int(11) unsigned NOT NULL,
`status` enum('waiting','sent','readed','deleted') NOT NULL DEFAULT 'waiting',
UNIQUE KEY `user` (`user`,`message`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_queue` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`type` char(30) NOT NULL,
`content` text NOT NULL,
`addDate` datetime NOT NULL,
`processDate` datetime NOT NULL,
`result` text NOT NULL,
`status` char(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_conference` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`rid` char(24) NOT NULL DEFAULT '',
`cgid` char(40) NOT NULL DEFAULT '',
`status` enum('closed','open') NOT NULL DEFAULT 'closed',
`participants` text NOT NULL,
`openedBy` mediumint(8) NOT NULL DEFAULT 0,
`openedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_im_conferenceaction` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`rid` char(24) NOT NULL DEFAULT '',
`type` enum('create','join','leave','close') NOT NULL DEFAULT 'create',
`user` mediumint(8) NOT NULL DEFAULT 0,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

1084
db/standard/zentao12.5.1.sql Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,11 @@
2020-11-29 12.5.1
修复的Bug
3406 AppScan漏洞
3648 CNVD-2014-08794--ZenTaoPMS禅道任意文件上传漏洞
3649 CNVD-2017-04121--青岛易软天创网络科技有限公司禅道项目管理软件后台存在设计缺陷漏洞
3651 CNVD-2017-06354--禅道项目管理软件存在权限控制逻辑漏洞
3702 CNVD-C-2020-275684 禅道4.0.3后台存在SQL注入漏洞
2020-11-19 12.5.stable
完成的需求
5487 在禅道专业版、企业版的授权中增加版本号限制

View File

@@ -951,7 +951,7 @@ class baseFixer
public function cleanFloat($fieldName)
{
$fields = $this->processFields($fieldName);
foreach($fields as $fieldName) $this->data->$fieldName = filter_var($this->data->$fieldName, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION|FILTER_FLAG_ALLOW_THOUSAND);
foreach($fields as $fieldName) $this->data->$fieldName = (float)filter_var($this->data->$fieldName, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION|FILTER_FLAG_ALLOW_THOUSAND);
return $this;
}
@@ -971,7 +971,7 @@ class baseFixer
$filterVar = filter_var($this->data->$fieldName, FILTER_SANITIZE_NUMBER_INT);
if(empty($filterVar)) $filterVar = 0;
$this->data->$fieldName = $filterVar;
$this->data->$fieldName = (int)$filterVar;
}
return $this;
}

View File

@@ -427,12 +427,19 @@ class extension extends control
if($_FILES)
{
if($_FILES['file']['size'] == 0) die(js::alert(str_replace("'", "\'", sprintf($this->lang->extension->errorFileNotEmpty, $fileName, $return->error))));
$tmpName = $_FILES['file']['tmp_name'];
$fileName = $_FILES['file']['name'];
move_uploaded_file($tmpName, $this->app->getTmpRoot() . "/extension/$fileName");
$dest = $this->app->getTmpRoot() . "/extension/$fileName";
move_uploaded_file($tmpName, $dest);
$extension = basename($fileName, '.zip');
$return = $this->extension->extractPackage($extension);
if($return->result != 'ok') die(js::alert(str_replace("'", "\'", sprintf($this->lang->extension->errorExtracted, $fileName, $return->error))));
if($return->result != 'ok')
{
unlink($dest);
die(js::alert(str_replace("'", "\'", sprintf($this->lang->extension->errorExtracted, $fileName, $return->error))));
}
$info = $this->extension->parseExtensionCFG($extension);
if(isset($info->code) and $info->code != $extension)

View File

@@ -300,6 +300,8 @@ class fileModel extends model
public function getExtension($filename)
{
$extension = trim(strtolower(pathinfo($filename, PATHINFO_EXTENSION)));
if($extension and strpos($extension, '::') !== false) $extension = substr($extension, 0, strpos($extension, '::'));
if(empty($extension) or stripos(",{$this->config->file->dangers},", ",{$extension},") !== false) return 'txt';
if(empty($extension) or stripos(",{$this->config->file->allowed},", ",{$extension},") === false) return 'txt';
if($extension == 'php') return 'txt';

View File

@@ -38,7 +38,7 @@ $lang->job->commitEx = "用於匹配創建構建任務的關鍵字,多個
$lang->job->cronSample = '如 0 0 2 * * 2-6/1 表示每個工作日凌晨2點';
$lang->job->sendExec = '發送執行請求成功!執行結果:%s';
$lang->job->inputName = '請輸入參數名稱。';
$lang->job->invalidName = '參數名稱應該是英文字母、數字或下劃的組合。';
$lang->job->invalidName = '參數名稱應該是英文字母、數字或下劃的組合。';
$lang->job->buildTypeList['build'] = '僅構建';
$lang->job->buildTypeList['buildAndDeploy'] = '構建部署';

View File

@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = 'Letzte Version';
$lang->misc->feature->detailed = 'Details';
$lang->misc->releaseDate['12.5.1'] = '2020-11-30';
$lang->misc->releaseDate['12.5.stable'] = '2020-11-19';
$lang->misc->releaseDate['12.4.4'] = '2020-10-30';
$lang->misc->releaseDate['12.4.3'] = '2020-10-13';
@@ -136,6 +137,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['12.5.1'][] = array('title' => 'Fix Bug', 'desc' => '');
$lang->misc->feature->all['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => '');
$lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => '');

View File

@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = 'Latest Version';
$lang->misc->feature->detailed = 'Detail';
$lang->misc->releaseDate['12.5.1'] = '2020-11-30';
$lang->misc->releaseDate['12.5.stable'] = '2020-11-19';
$lang->misc->releaseDate['12.4.4'] = '2020-10-30';
$lang->misc->releaseDate['12.4.3'] = '2020-10-13';
@@ -136,6 +137,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['12.5.1'][] = array('title' => 'Fix Bug', 'desc' => '');
$lang->misc->feature->all['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => '');
$lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => '');

View File

@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = 'Dernière Version';
$lang->misc->feature->detailed = 'Détail';
$lang->misc->releaseDate['12.5.1'] = '2020-11-30';
$lang->misc->releaseDate['12.5.stable'] = '2020-11-19';
$lang->misc->releaseDate['12.4.4'] = '2020-10-30';
$lang->misc->releaseDate['12.4.3'] = '2020-10-13';
@@ -136,6 +137,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['12.5.1'][] = array('title' => 'Fix Bug', 'desc' => '');
$lang->misc->feature->all['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => '');
$lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => '');

View File

@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = 'Latest Version';
$lang->misc->feature->detailed = 'Chi tiết';
$lang->misc->releaseDate['12.5.1'] = '2020-11-30';
$lang->misc->releaseDate['12.5.stable'] = '2020-11-19';
$lang->misc->releaseDate['12.4.4'] = '2020-10-30';
$lang->misc->releaseDate['12.4.3'] = '2020-10-13';
@@ -136,6 +137,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['12.5.1'][] = array('title' => 'Fix Bug', 'desc' => '');
$lang->misc->feature->all['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => '');
$lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => '');

View File

@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = '最新版本';
$lang->misc->feature->detailed = '详情';
$lang->misc->releaseDate['12.5.1'] = '2020-11-30';
$lang->misc->releaseDate['12.5.stable'] = '2020-11-19';
$lang->misc->releaseDate['12.4.4'] = '2020-10-30';
$lang->misc->releaseDate['12.4.3'] = '2020-10-13';
@@ -136,6 +137,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['12.5.1'][] = array('title' => '修复漏洞。', 'desc' => '');
$lang->misc->feature->all['12.5.stable'][] = array('title' => '解决bug完成高优先级需求。', 'desc' => '');
$lang->misc->feature->all['12.4.4'][] = array('title' => '兼容专业版和企业版', 'desc' => '');

View File

@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = '最新版本';
$lang->misc->feature->detailed = '詳情';
$lang->misc->releaseDate['12.5.1'] = '2020-11-30';
$lang->misc->releaseDate['12.5.stable'] = '2020-11-19';
$lang->misc->releaseDate['12.4.4'] = '2020-10-30';
$lang->misc->releaseDate['12.4.3'] = '2020-10-13';
@@ -136,6 +137,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['12.5.1'][] = array('title' => '修復漏洞。', 'desc' => '');
$lang->misc->feature->all['12.5.stable'][] = array('title' => '解決bug完成高優先順序需求。', 'desc' => '');
$lang->misc->feature->all['12.4.4'][] = array('title' => '兼容專業版和企業版', 'desc' => '');

View File

@@ -129,3 +129,4 @@ $lang->upgrade->fromVersions['12_4_1'] = '12.4.1';
$lang->upgrade->fromVersions['12_4_2'] = '12.4.2';
$lang->upgrade->fromVersions['12_4_3'] = '12.4.3';
$lang->upgrade->fromVersions['12_4_4'] = '12.4.4';
$lang->upgrade->fromVersions['12_5'] = '12.5';

View File

@@ -624,6 +624,9 @@ class upgradeModel extends model
$this->execSQL($this->getUpgradeFile('12.4.4'));
$this->adjustPriv12_5();
$this->appendExec('12_4_4');
case '12_5':
$this->saveLogs('Execute 12_5');
$this->appendExec('12_5');
}
$this->deletePatch();
@@ -804,6 +807,7 @@ class upgradeModel extends model
case '12_4_2': $confirmContent .= file_get_contents($this->getUpgradeFile('12.4.2'));
case '12_4_3':
case '12_4_4': $confirmContent .= file_get_contents($this->getUpgradeFile('12.4.4'));
case '12_5':
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
}

View File

@@ -216,3 +216,4 @@ $lang->user->noticeResetFile = "<h5>Kontaktieren Sie den Administrator um Ihr Pa
<li>Die Datei muss leer sein.</li>
<li>Wenn die Datei bereits existiert löschen Sie diese und erstellen Sie eine neue.</li>
</ol>";
$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites: <br />%s";

View File

@@ -216,3 +216,4 @@ $lang->user->noticeResetFile = "<h5>Contact the Administrator to reset your pass
<li>Keep the file empty.</li>
<li>If the file exists, remove it and create it again.</li>
</ol>";
$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites: <br />%s";

View File

@@ -216,3 +216,4 @@ $lang->user->noticeResetFile = "<h5>Contactez l'administrateur pour réinitialis
<li>Gardez ce fichier vide.</li>
<li>Si le fichier existe déjà, supprimez le et créez le à nouveau.</li><li>Bonne chance.</li>
</ol>";
$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites: <br />%s";

View File

@@ -216,3 +216,4 @@ $lang->user->noticeResetFile = "<h5>Liên hệ quản trị viên để thiết
<li>Giữ tập tin này rỗng.</li>
<li>Nếu tập tin đã tồn tại, xóa và tạo lại.</li>
</ol>";
$lang->user->notice4Safe = "It is detected that you may be using the one click installation package environment, and other sites in the environment are still using a simple password. For security, please change the password in time. Login address of other sites: <br />%s";

View File

@@ -216,3 +216,4 @@ $lang->user->noticeResetFile = "<h5>普通用户请联系管理员重置密码</
<li>文件内容为空。</li>
<li>如果之前文件存在,删除之后重新创建。</li>
</ol>";
$lang->user->notice4Safe = "检测到您可能在使用一键安装包环境,该环境中其他站点还在用简单密码,安全起见,请及时修改密码。其他站点的登录地址:<br />%s";

View File

@@ -216,3 +216,4 @@ $lang->user->noticeResetFile = "<h5>普通用戶請聯繫管理員重置密碼</
<li>檔案內容為空。</li>
<li>如果之前檔案存在,刪除之後重新創建。</li>
</ol>";
$lang->user->notice4Safe = "檢測到您可能在使用一鍵安裝包環境,該環境中其他站點還在用簡單密碼,安全起見,請及時修改密碼。其他站點的登錄地址:<br />%s";

View File

@@ -60,11 +60,13 @@
<td><?php echo html::select('role', $lang->user->roleList, '', "class='form-control' onchange='changeGroup(this.value)'");?></td>
<td><?php echo $lang->user->placeholder->role?></td>
</tr>
<?php if(common::hasPriv('group', 'managemember')):?>
<tr>
<th><?php echo $lang->user->group;?></th>
<td><?php echo html::select('group', $groupList, '', "class='form-control chosen'");?></td>
<td><?php echo $lang->user->placeholder->group?></td>
</tr>
<?php endif;?>
<tr>
<th><?php echo $lang->user->email;?></th>
<td><?php echo html::input('email', '', "class='form-control'");?></td>

View File

@@ -89,4 +89,50 @@ if(empty($config->notMd5Pwd))js::import($jsRoot . 'md5.js');
</div>
</div>
</main>
<?php
if(strpos('/zentao/|/pro/|/biz/', $this->config->webRoot) !== false)
{
$databases = array('zentao' => 'zentao', 'zentaopro' => 'zentaopro', 'zentaobiz' => 'zentaobiz', 'zentaoep' => 'zentaoep');
if($this->config->webRoot == '/zentao/') unset($databases['zentao']);
if($this->config->webRoot == '/pro/') unset($databases['zentaopro']);
if($this->config->webRoot == '/biz/')
{
unset($databases['zentaobiz']);
unset($databases['zentaoep']);
}
$users = array();
foreach($databases as $database)
{
try
{
$webRoot = "/{$database}/";
if($database == 'zentao') $webRoot = '/zentao/';
if($database == 'zentaopro') $webRoot = '/pro/';
if($database == 'zentaobiz') $webRoot = '/biz/';
if($database == 'zentaoep') $webRoot = '/biz/';
$users[$webRoot] = $this->dbh->query("select * from {$database}.`zt_user` where account = 'admin' and password='" . md5('123456') . "'")->fetch();
}
catch(Exception $e){}
}
if($users)
{
$sysURL = common::getSysURL();
$links = array();
foreach($users as $webRoot => $user) $links[] = $sysURL . $webRoot;
$notice = sprintf($lang->user->notice4Safe, join('<br />', $links));
echo <<<EOD
<script>
\$(function()
{
bootbox.alert('$notice');
})
</script>
EOD;
}
}
?>
<?php include '../../common/view/footer.lite.html.php';?>