Skip to content

Commit c539b1c

Browse files
committed
修复后台在启用独立入口时addon_url地址生成错误的BUG
优化插件配置写入错误的提示 增强默认安全过滤配置
1 parent 253f265 commit c539b1c

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"homepage": "https://github.com/karsonzhang/fastadmin-addons",
55
"license": "Apache-2.0",
66
"minimum-stability": "dev",
7-
"version": "1.1.8",
7+
"version": "1.1.9",
88
"authors": [
99
{
1010
"name": "karsonzhang",

src/addons/Controller.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function __construct(Request $request = null)
6262
$this->request = $request;
6363

6464
//移除HTML标签
65-
$this->request->filter('strip_tags');
65+
$this->request->filter('trim,strip_tags,htmlspecialchars');
6666

6767
// 是否自动转换控制器和操作名
6868
$convert = Config::get('url_convert');

src/common.php

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@
9898

9999
/**
100100
* 处理插件钩子
101-
* @param string $hook 钩子名称
102-
* @param mixed $params 传入参数
101+
* @param string $hook 钩子名称
102+
* @param mixed $params 传入参数
103103
* @return void
104104
*/
105105
function hook($hook, $params = [])
@@ -134,6 +134,8 @@ function get_addon_list()
134134
continue;
135135

136136
$info = Config::parse($info_file, '', "addon-info-{$name}");
137+
if (!isset($info['name']))
138+
continue;
137139
$info['url'] = addon_url($name);
138140
$list[$name] = $info;
139141
}
@@ -142,6 +144,7 @@ function get_addon_list()
142144

143145
/**
144146
* 获得插件自动加载的配置
147+
* @param bool $truncate 是否清除手动配置的钩子
145148
* @return array
146149
*/
147150
function get_addon_autoload_config($truncate = false)
@@ -206,8 +209,8 @@ function get_addon_autoload_config($truncate = false)
206209

207210
/**
208211
* 获取插件类的类名
209-
* @param $name 插件名
210-
* @param string $type 返回命名空间类型
212+
* @param string $name 插件名
213+
* @param string $type 返回命名空间类型
211214
* @param string $class 当前类名
212215
* @return string
213216
*/
@@ -277,7 +280,7 @@ function get_addon_config($name)
277280

278281
/**
279282
* 获取插件的单例
280-
* @param $name
283+
* @param string $name 插件名
281284
* @return mixed|null
282285
*/
283286
function get_addon_instance($name)
@@ -297,8 +300,8 @@ function get_addon_instance($name)
297300

298301
/**
299302
* 插件显示内容里生成访问插件的url
300-
* @param $url 地址 格式:插件名/控制器/方法
301-
* @param array $vars 变量参数
303+
* @param string $url 地址 格式:插件名/控制器/方法
304+
* @param array $vars 变量参数
302305
* @param bool|string $suffix 生成的URL后缀
303306
* @param bool|string $domain 域名
304307
* @return bool|string
@@ -323,6 +326,7 @@ function addon_url($url, $vars = [], $suffix = true, $domain = false)
323326
$dispatch = think\Request::instance()->dispatch();
324327
$indomain = isset($dispatch['var']['indomain']) && $dispatch['var']['indomain'] ? true : false;
325328
$domainprefix = $config && isset($config['domain']) && $config['domain'] ? $config['domain'] : '';
329+
$domain = $domainprefix && Config::get('url_domain_deploy') ? $domainprefix : $domain;
326330
$rewrite = $config && isset($config['rewrite']) && $config['rewrite'] ? $config['rewrite'] : [];
327331
if ($rewrite) {
328332
$path = substr($url, stripos($url, '/') + 1);
@@ -352,13 +356,15 @@ function addon_url($url, $vars = [], $suffix = true, $domain = false)
352356
$vars[substr($k, 1)] = $v;
353357
}
354358
}
355-
return url($val, [], $suffix, $domain) . ($vars ? '?' . http_build_query($vars) : '');
359+
$url = url($val, [], $suffix, $domain) . ($vars ? '?' . http_build_query($vars) : '');
360+
$url = preg_replace("/\/((?!index)[\w]+)\.php\//i", "/", $url);
361+
return $url;
356362
}
357363

358364
/**
359365
* 设置基础配置信息
360-
* @param string $name 插件名
361-
* @param array $array
366+
* @param string $name 插件名
367+
* @param array $array 配置数据
362368
* @return boolean
363369
* @throws Exception
364370
*/
@@ -367,6 +373,9 @@ function set_addon_info($name, $array)
367373
$file = ADDON_PATH . $name . DIRECTORY_SEPARATOR . 'info.ini';
368374
$addon = get_addon_instance($name);
369375
$array = $addon->setInfo($name, $array);
376+
if (!isset($array['name']) || !isset($array['title']) || !isset($array['version'])) {
377+
throw new Exception("插件配置写入失败");
378+
}
370379
$res = array();
371380
foreach ($array as $key => $val) {
372381
if (is_array($val)) {
@@ -389,9 +398,11 @@ function set_addon_info($name, $array)
389398

390399
/**
391400
* 写入配置文件
392-
* @param string $name 插件名
393-
* @param array $config 配置数据
401+
* @param string $name 插件名
402+
* @param array $config 配置数据
394403
* @param boolean $writefile 是否写入配置文件
404+
* @return bool
405+
* @throws Exception
395406
*/
396407
function set_addon_config($name, $config, $writefile = true)
397408
{
@@ -414,8 +425,8 @@ function set_addon_config($name, $config, $writefile = true)
414425
/**
415426
* 写入配置文件
416427
*
417-
* @param string $name 插件名
418-
* @param array $array
428+
* @param string $name 插件名
429+
* @param array $array 配置数据
419430
* @return boolean
420431
* @throws Exception
421432
*/

0 commit comments

Comments
 (0)