diff --git a/README.md b/README.md index c3981c1..b8fbb30 100644 --- a/README.md +++ b/README.md @@ -36,13 +36,17 @@ - 在`系统基本设置`修改宝塔面板接口设置。你需要一个官方最新脚本安装并绑定账号的宝塔面板,用于获取最新插件列表及插件包。并根据界面提示安装好专用插件。 - 在`定时任务设置`执行所显示的命令从宝塔官方获取最新的插件列表并批量下载插件包(增量更新)。当然你也可以去插件列表,一个一个点击下载。 -- 在public/install/src和update文件夹里面分别是bt安装包和更新包,解压后源码里面全部的 www.example.com 替换成你自己搭建的云端域名,然后重新打包。可使用VSCode等支持批量替换的软件。 -- 将bt安装脚本public/install/install_6.0.sh和更新脚本update6.sh里面的 www.example.com 替换成你自己搭建的云端域名。 +- 在public/install/src和update文件夹里面分别是Linux面板安装包和更新包,解压后源码里面全部的 www.example.com 替换成你自己搭建的云端域名(如果云端用了强制https也需要单独改),然后重新打包。可使用VSCode等支持批量替换的软件。 +- 在public/win/panel/panel_x.x.x.zip是Windows面板的更新包,同样方法替换域名。 +- Linux面板安装脚本public/install/install_6.0.sh和更新脚本update6.sh里面的 www.example.com 替换成你自己搭建的云端域名。 +- Windows面板更新脚本 public/win/install/panel_update.py、public/win/panel/data/setup.py、api.py 里面的 www.example.com 替换成你自己搭建的云端域名。 - 访问网站`/download`查看使用此第三方云端的一键安装脚本 ## 其他 -- [bt官方更新包修改记录](./wiki/update.md) +- [Linux面板官方更新包修改记录](./wiki/update.md) + +- [Windows面板官方更新包修改记录](./wiki/updatewin.md) - 宝塔面板官方版与此第三方云端版对比: diff --git a/app/command/UpdateAll.php b/app/command/UpdateAll.php index 3395667..f6df2f1 100644 --- a/app/command/UpdateAll.php +++ b/app/command/UpdateAll.php @@ -25,16 +25,27 @@ class UpdateAll extends Command $res = Db::name('config')->cache('configs',0)->column('value','key'); Config::set($res, 'sys'); + if(config_get('bt_url')){ + $this->process_plugins($input, $output, 'Linux'); + } + if(config_get('wbt_url')){ + $this->process_plugins($input, $output, 'Windows'); + } + + config_set('runtime', date('Y-m-d H:i:s')); + } + + private function process_plugins(Input $input, Output $output, $os){ //刷新插件列表 - if(!$this->refresh_plugin_list($input, $output)){ + if(!$this->refresh_plugin_list($input, $output, $os)){ return; } $count = 0; - $type = intval(config_get('updateall_type')); + $type = intval(config_get($os=='Windows'?'updateall_type_win':'updateall_type')); - $json_arr = Plugins::get_plugin_list(); + $json_arr = Plugins::get_plugin_list($os); //循环下载缺少的插件 foreach($json_arr['list'] as $plugin){ if($type == 0 && ($plugin['type']==8 || $plugin['type']==12) || $type == 1 && $plugin['type']==12 || $plugin['type']==10 || $plugin['type']==5) continue; @@ -43,18 +54,18 @@ class UpdateAll extends Command $ver = $version['m_version'].'.'.$version['version']; if(isset($version['download'])){ if(!file_exists(get_data_dir().'plugins/other/'.$version['download'])){ - if(!$this->download_plugin($input, $output, $plugin['name'], $ver)){ + if(!$this->download_plugin($input, $output, $plugin['name'], $ver, $os)){ sleep(1); - $this->download_plugin($input, $output, $plugin['name'], $ver); + $this->download_plugin($input, $output, $plugin['name'], $ver, $os); } sleep(1); $count++; } }else{ - if(!file_exists(get_data_dir().'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ - if(!$this->download_plugin($input, $output, $plugin['name'], $ver)){ + if(!file_exists(get_data_dir($os).'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ + if(!$this->download_plugin($input, $output, $plugin['name'], $ver, $os)){ sleep(1); - $this->download_plugin($input, $output, $plugin['name'], $ver); + $this->download_plugin($input, $output, $plugin['name'], $ver, $os); } sleep(1); $count++; @@ -62,29 +73,15 @@ class UpdateAll extends Command } } } - - $imgcount = 0; - //循环下载缺少的插件图片 - /*foreach($json_arr['list'] as $plugin){ - if(isset($plugin['min_image']) && strpos($plugin['min_image'], 'fname=')){ - $fname = substr($plugin['min_image'], strpos($plugin['min_image'], '?fname=')+7); - if(!file_exists(get_data_dir().'plugins/other/'.$fname)){ - $this->download_plugin_image($input, $output, $fname); - sleep(1); - $imgcount++; - } - } - }*/ - $output->writeln('本次成功下载'.$count.'个插件'.($imgcount>0?','.$imgcount.'个图片':'')); - config_set('runtime', date('Y-m-d H:i:s')); + $output->writeln($os.'本次成功下载'.$count.'个插件'); } - private function refresh_plugin_list(Input $input, Output $output){ + private function refresh_plugin_list(Input $input, Output $output, $os){ try{ - Plugins::refresh_plugin_list(); - Db::name('log')->insert(['uid' => 1, 'action' => '刷新插件列表', 'data' => '刷新插件列表成功', 'addtime' => date("Y-m-d H:i:s")]); - $output->writeln('刷新插件列表成功'); + Plugins::refresh_plugin_list($os); + Db::name('log')->insert(['uid' => 1, 'action' => '刷新插件列表', 'data' => '刷新'.$os.'插件列表成功', 'addtime' => date("Y-m-d H:i:s")]); + $output->writeln('刷新'.$os.'插件列表成功'); return true; }catch(\Exception $e){ $output->writeln($e->getMessage()); @@ -93,12 +90,12 @@ class UpdateAll extends Command } } - private function download_plugin(Input $input, Output $output, $plugin_name, $version){ + private function download_plugin(Input $input, Output $output, $plugin_name, $version, $os){ $fullname = $plugin_name.'-'.$version; try{ - Plugins::download_plugin($plugin_name, $version); - Db::name('log')->insert(['uid' => 1, 'action' => '下载插件', 'data' => $fullname, 'addtime' => date("Y-m-d H:i:s")]); - $output->writeln('下载插件: '.$fullname.' 成功'); + Plugins::download_plugin($plugin_name, $version, $os); + Db::name('log')->insert(['uid' => 1, 'action' => '下载插件', 'data' => $fullname.' os:'.$os, 'addtime' => date("Y-m-d H:i:s")]); + $output->writeln('下载'.$os.'插件: '.$fullname.' 成功'); return true; }catch(\Exception $e){ $output->writeln($fullname.' '.$e->getMessage()); diff --git a/app/common.php b/app/common.php index 58499cd..3f8eb10 100644 --- a/app/common.php +++ b/app/common.php @@ -2,8 +2,8 @@ // 应用公共文件 use think\facade\Db; -function get_data_dir(){ - return app()->getRootPath().'data/'; +function get_data_dir($os = 'Linux'){ + return app()->getRootPath().'data/'.($os == 'Windows' ? 'win/' : ''); } diff --git a/app/controller/Admin.php b/app/controller/Admin.php index bda4bc0..5fc6322 100644 --- a/app/controller/Admin.php +++ b/app/controller/Admin.php @@ -133,7 +133,7 @@ class Admin extends BaseController if(!$bt_url || !$bt_key)return json(['code'=>-1, 'msg'=>'参数不能为空']); $btapi = new Btapi($bt_url, $bt_key); $result = $btapi->get_config(); - if($result && isset($result['status']) && $result['status']==1){ + if($result && isset($result['status']) && ($result['status']==1 || isset($result['sites_path']))){ $result = $btapi->get_user_info(); if($result && isset($result['username'])){ return json(['code'=>0, 'msg'=>'面板连接测试成功!']); @@ -157,11 +157,25 @@ class Admin extends BaseController return view(); } + public function pluginswin(){ + $typelist = []; + $json_arr = Plugins::get_plugin_list('Windows'); + if($json_arr){ + foreach($json_arr['type'] as $type){ + $typelist[$type['id']] = $type['title']; + } + } + View::assign('typelist', $typelist); + return view(); + } + public function plugins_data(){ $type = input('post.type/d'); $keyword = input('post.keyword', null, 'trim'); + $os = input('get.os'); + if(!$os) $os = 'Linux'; - $json_arr = Plugins::get_plugin_list(); + $json_arr = Plugins::get_plugin_list($os); if(!$json_arr) return json([]); $typelist = []; @@ -184,7 +198,7 @@ class Admin extends BaseController $versions[] = ['status'=>$status, 'type'=>1, 'version'=>$ver, 'download'=>$version['download'], 'md5'=>$version['md5']]; }else{ $status = false; - if(file_exists(get_data_dir().'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ + if(file_exists(get_data_dir($os).'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ $status = true; } $versions[] = ['status'=>$status, 'type'=>0, 'version'=>$ver]; @@ -209,10 +223,12 @@ class Admin extends BaseController public function download_plugin(){ $name = input('post.name', null, 'trim'); $version = input('post.version', null, 'trim'); + $os = input('post.os'); + if(!$os) $os = 'Linux'; if(!$name || !$version) return json(['code'=>-1, 'msg'=>'参数不能为空']); try{ - Plugins::download_plugin($name, $version); - Db::name('log')->insert(['uid' => 0, 'action' => '下载插件', 'data' => $name.'-'.$version, 'addtime' => date("Y-m-d H:i:s")]); + Plugins::download_plugin($name, $version, $os); + Db::name('log')->insert(['uid' => 0, 'action' => '下载插件', 'data' => $name.'-'.$version.' os:'.$os, 'addtime' => date("Y-m-d H:i:s")]); return json(['code'=>0,'msg'=>'下载成功']); }catch(\Exception $e){ return json(['code'=>-1, 'msg'=>$e->getMessage()]); @@ -220,9 +236,11 @@ class Admin extends BaseController } public function refresh_plugins(){ + $os = input('get.os'); + if(!$os) $os = 'Linux'; try{ - Plugins::refresh_plugin_list(); - Db::name('log')->insert(['uid' => 0, 'action' => '刷新插件列表', 'data' => '刷新插件列表成功', 'addtime' => date("Y-m-d H:i:s")]); + Plugins::refresh_plugin_list($os); + Db::name('log')->insert(['uid' => 0, 'action' => '刷新插件列表', 'data' => '刷新'.$os.'插件列表成功', 'addtime' => date("Y-m-d H:i:s")]); return json(['code'=>0,'msg'=>'获取最新插件列表成功!']); }catch(\Exception $e){ return json(['code'=>-1, 'msg'=>$e->getMessage()]); diff --git a/app/controller/Api.php b/app/controller/Api.php index 180205d..92fcead 100644 --- a/app/controller/Api.php +++ b/app/controller/Api.php @@ -22,18 +22,40 @@ class Api extends BaseController return json($json_arr); } + //获取插件列表(win) + public function get_plugin_list_win(){ + if(!$this->checklist()) return ''; + $record = Db::name('record')->where('ip',$this->clientip)->find(); + if($record){ + Db::name('record')->where('id',$record['id'])->update(['usetime'=>date("Y-m-d H:i:s")]); + }else{ + Db::name('record')->insert(['ip'=>$this->clientip, 'addtime'=>date("Y-m-d H:i:s"), 'usetime'=>date("Y-m-d H:i:s")]); + } + $json_file = get_data_dir('Windows').'config/plugin_list.json'; + if(file_exists($json_file)){ + $data = file_get_contents($json_file); + $json_arr = json_decode($data, true); + if($json_arr){ + return json($json_arr); + } + } + return json((object)[]); + } + //下载插件包 public function download_plugin(){ $plugin_name = input('post.name'); $version = input('post.version'); + $os = input('post.os'); if(!$plugin_name || !$version){ return '参数不能为空'; } + if(!in_array($os,['Windows','Linux'])) $os = 'Linux'; if(!preg_match('/^[a-zA-Z0-9_]+$/', $plugin_name) || !preg_match('/^[0-9.]+$/', $version)){ return '参数不正确'; } if(!$this->checklist()) '你的服务器被禁止使用此云端'; - $filepath = get_data_dir().'plugins/package/'.$plugin_name.'-'.$version.'.zip'; + $filepath = get_data_dir($os).'plugins/package/'.$plugin_name.'-'.$version.'.zip'; if(file_exists($filepath)){ $filename = $plugin_name.'.zip'; $this->output_file($filepath, $filename); @@ -46,19 +68,21 @@ class Api extends BaseController public function download_plugin_main(){ $plugin_name = input('post.name'); $version = input('post.version'); + $os = input('post.os'); if(!$plugin_name || !$version){ return '参数不能为空'; } + if(!in_array($os,['Windows','Linux'])) $os = 'Linux'; if(!preg_match('/^[a-zA-Z0-9_]+$/', $plugin_name) || !preg_match('/^[0-9.]+$/', $version)){ return '参数不正确'; } if(!$this->checklist()) '你的服务器被禁止使用此云端'; - $filepath = get_data_dir().'plugins/main/'.$plugin_name.'-'.$version.'.dat'; + $filepath = get_data_dir($os).'plugins/main/'.$plugin_name.'-'.$version.'.dat'; if(file_exists($filepath)){ $filename = $plugin_name.'_main.py'; $this->output_file($filepath, $filename); }else{ - $filepath = get_data_dir().'plugins/folder/'.$plugin_name.'-'.$version.'/'.$plugin_name.'/'.$plugin_name.'_main.py'; + $filepath = get_data_dir($os).'plugins/folder/'.$plugin_name.'-'.$version.'/'.$plugin_name.'/'.$plugin_name.'_main.py'; if(file_exists($filepath)){ $filename = $plugin_name.'_main.py'; $this->output_file($filepath, $filename); @@ -86,14 +110,26 @@ class Api extends BaseController } public function get_update_logs(){ - $version = config_get('new_version'); - $data = [ - [ - 'title' => 'Linux面板'.$version, - 'body' => config_get('update_msg'), - 'addtime' => config_get('update_date') - ] - ]; + $type = input('get.type'); + if($type == 'Windows'){ + $version = config_get('new_version_win'); + $data = [ + [ + 'title' => 'Linux面板'.$version, + 'body' => config_get('update_msg_win'), + 'addtime' => config_get('update_date_win') + ] + ]; + }else{ + $version = config_get('new_version'); + $data = [ + [ + 'title' => 'Linux面板'.$version, + 'body' => config_get('update_msg'), + 'addtime' => config_get('update_date') + ] + ]; + } return jsonp($data); } @@ -102,6 +138,11 @@ class Api extends BaseController return $version; } + public function get_version_win(){ + $version = config_get('new_version_win'); + return $version; + } + //安装统计 public function setup_count(){ return 'ok'; @@ -130,6 +171,32 @@ class Api extends BaseController return json($data); } + //检测更新(win) + public function check_update_win(){ + $version = config_get('new_version_win'); + $down_url = request()->root(true).'/win/panel/panel_'.$version.'.zip'; + $data = [ + 'force' => false, + 'version' => $version, + 'downUrl' => $down_url, + 'updateMsg' => config_get('update_msg_win'), + 'uptime' => config_get('update_date_win'), + 'is_beta' => 0, + 'py_version' => '3.8.6', + 'adviser' => -1, + 'is_rec' => -1, + 'btb' => '', + 'beta' => [ + 'py_version' => '3.8.6', + 'version' => $version, + 'downUrl' => $down_url, + 'updateMsg' => config_get('update_msg_win'), + 'uptime' => config_get('update_date_win'), + ] + ]; + return json($data); + } + //获取内测版更新日志 public function get_beta_logs(){ return json(['beta_ps'=>'当前暂无内测版', 'list'=>[]]); @@ -160,6 +227,11 @@ class Api extends BaseController return time(); } + //同步时间 + public function get_win_date(){ + return date("Y-m-d H:i:s"); + } + //查询是否专业版(废弃) public function is_pro(){ return json(['endtime'=>true, 'code'=>1]); @@ -190,6 +262,14 @@ class Api extends BaseController return json(['status'=>false, 'msg'=>'不支持绑定宝塔官网账号', 'data'=>'5b5d']); } + //绑定一键部署列表 + public function get_deplist(){ + $os = input('post.os'); + $json_arr = Plugins::get_deplist($os); + if(!$json_arr) return json([]); + return json($json_arr); + } + public function return_success(){ return json(['status'=>true, 'msg'=>1, 'data'=>(object)[]]); } diff --git a/app/lib/Plugins.php b/app/lib/Plugins.php index 10742a1..13a38fd 100644 --- a/app/lib/Plugins.php +++ b/app/lib/Plugins.php @@ -8,30 +8,35 @@ use ZipArchive; class Plugins { - private static function get_btapi(){ - $bt_url = config_get('bt_url'); - $bt_key = config_get('bt_key'); + private static function get_btapi($os){ + if($os == 'Windows'){ + $bt_url = config_get('wbt_url'); + $bt_key = config_get('wbt_key'); + }else{ + $bt_url = config_get('bt_url'); + $bt_key = config_get('bt_key'); + } if(!$bt_url || !$bt_key) throw new Exception('请先配置好宝塔面板接口信息'); $btapi = new Btapi($bt_url, $bt_key); return $btapi; } //刷新插件列表 - public static function refresh_plugin_list(){ - $btapi = self::get_btapi(); + public static function refresh_plugin_list($os = 'Linux'){ + $btapi = self::get_btapi($os); $result = $btapi->get_plugin_list(); if($result && isset($result['list']) && isset($result['type'])){ if(empty($result['list']) || empty($result['type'])){ throw new Exception('获取插件列表失败:插件列表为空'); } - self::save_plugin_list($result); + self::save_plugin_list($result, $os); }else{ throw new Exception('获取插件列表失败:'.(isset($result['msg'])?$result['msg']:'面板连接失败')); } } //保存插件列表 - private static function save_plugin_list($data){ + private static function save_plugin_list($data, $os){ $data['ip'] = '127.0.0.1'; $data['serverid'] = ''; $data['beta'] = 0; @@ -45,15 +50,15 @@ class Plugins $data['list'] = $list; if($data['pro']>-1) $data['pro'] = 0; if($data['ltd']>-1) $data['ltd'] = strtotime('+1 year'); - $json_file = get_data_dir().'config/plugin_list.json'; + $json_file = get_data_dir($os).'config/plugin_list.json'; if(!file_put_contents($json_file, json_encode($data))){ throw new Exception('保存插件列表失败,文件无写入权限'); } } //获取插件列表 - public static function get_plugin_list(){ - $json_file = get_data_dir().'config/plugin_list.json'; + public static function get_plugin_list($os = 'Linux'){ + $json_file = get_data_dir($os).'config/plugin_list.json'; if(file_exists($json_file)){ $data = file_get_contents($json_file); $json_arr = json_decode($data, true); @@ -65,8 +70,8 @@ class Plugins } //获取一个插件信息 - public static function get_plugin_info($name){ - $json_arr = self::get_plugin_list(); + public static function get_plugin_info($name, $os = 'Linux'){ + $json_arr = self::get_plugin_list($os); if(!$json_arr) return null; foreach($json_arr['list'] as $plugin){ if($plugin['name'] == $name){ @@ -77,30 +82,30 @@ class Plugins } //下载插件(自动判断是否第三方) - public static function download_plugin($plugin_name, $version){ - $plugin_info = Plugins::get_plugin_info($plugin_name); + public static function download_plugin($plugin_name, $version, $os = 'Linux'){ + $plugin_info = Plugins::get_plugin_info($plugin_name, $os); if(!$plugin_info) throw new Exception('未找到该插件信息'); if($plugin_info['type'] == 10 && isset($plugin_info['versions'][0]['download'])){ if($plugin_info['price'] == 0){ - $btapi = self::get_btapi(); + $btapi = self::get_btapi($os); $btapi->create_plugin_other_order($plugin_info['id']); } $fname = $plugin_info['versions'][0]['download']; $filemd5 = $plugin_info['versions'][0]['md5']; - Plugins::download_plugin_other($fname, $filemd5); + Plugins::download_plugin_other($fname, $filemd5, $os); if(isset($plugin_info['min_image']) && strpos($plugin_info['min_image'], 'fname=')){ $fname = substr($plugin_info['min_image'], strpos($plugin_info['min_image'], '?fname=')+7); - Plugins::download_plugin_other($fname); + Plugins::download_plugin_other($fname, null, $os); } }else{ - Plugins::download_plugin_package($plugin_name, $version); + Plugins::download_plugin_package($plugin_name, $version, $os); } } //下载插件包 - public static function download_plugin_package($plugin_name, $version){ - $filepath = get_data_dir().'plugins/package/'.$plugin_name.'-'.$version.'.zip'; - $btapi = self::get_btapi(); + public static function download_plugin_package($plugin_name, $version, $os = 'Linux'){ + $filepath = get_data_dir($os).'plugins/package/'.$plugin_name.'-'.$version.'.zip'; + $btapi = self::get_btapi($os); $result = $btapi->get_plugin_filename($plugin_name, $version); if($result && isset($result['status'])){ if($result['status'] == true){ @@ -110,12 +115,12 @@ class Plugins $zip = new ZipArchive; if ($zip->open($filepath) === true) { - $zip->extractTo(get_data_dir().'plugins/folder/'.$plugin_name.'-'.$version); + $zip->extractTo(get_data_dir($os).'plugins/folder/'.$plugin_name.'-'.$version); $zip->close(); - $main_filepath = get_data_dir().'plugins/folder/'.$plugin_name.'-'.$version.'/'.$plugin_name.'/'.$plugin_name.'_main.py'; + $main_filepath = get_data_dir($os).'plugins/folder/'.$plugin_name.'-'.$version.'/'.$plugin_name.'/'.$plugin_name.'_main.py'; if(file_exists($main_filepath) && filesize($main_filepath)>10){ if(!strpos(file_get_contents($main_filepath), 'import ')){ //加密py文件,需要解密 - self::decode_plugin_main($plugin_name, $version, $main_filepath); + self::decode_plugin_main($plugin_name, $version, $main_filepath, $os); self::noauth_plugin_main($main_filepath); $zip->open($filepath, ZipArchive::CREATE); $zip->addFile($main_filepath, $plugin_name.'/'.$plugin_name.'_main.py'); @@ -138,9 +143,9 @@ class Plugins } //下载插件主程序文件 - public static function download_plugin_main($plugin_name, $version){ - $filepath = get_data_dir().'plugins/main/'.$plugin_name.'-'.$version.'.dat'; - $btapi = self::get_btapi(); + public static function download_plugin_main($plugin_name, $version, $os = 'Linux'){ + $filepath = get_data_dir($os).'plugins/main/'.$plugin_name.'-'.$version.'.dat'; + $btapi = self::get_btapi($os); $result = $btapi->get_plugin_main_filename($plugin_name, $version); if($result && isset($result['status'])){ if($result['status'] == true){ @@ -160,8 +165,8 @@ class Plugins } //解密并下载插件主程序文件 - public static function decode_plugin_main($plugin_name, $version, $main_filepath){ - $btapi = self::get_btapi(); + public static function decode_plugin_main($plugin_name, $version, $main_filepath, $os = 'Linux'){ + $btapi = self::get_btapi($os); $result = $btapi->get_decode_plugin_main($plugin_name, $version); if($result && isset($result['status'])){ if($result['status'] == true){ @@ -180,20 +185,29 @@ class Plugins public static function noauth_plugin_main($main_filepath){ $data = file_get_contents($main_filepath); if(!$data) return false; + $data = str_replace('\'http://www.bt.cn/api/panel/get_soft_list_test', 'public.GetConfigValue(\'home\')+\'/api/panel/get_soft_list_test', $data); $data = str_replace('\'https://www.bt.cn/api/panel/get_soft_list_test', 'public.GetConfigValue(\'home\')+\'/api/panel/get_soft_list_test', $data); $data = str_replace('\'http://www.bt.cn/api/panel/get_soft_list', 'public.GetConfigValue(\'home\')+\'/api/panel/get_soft_list', $data); $data = str_replace('\'https://www.bt.cn/api/panel/get_soft_list', 'public.GetConfigValue(\'home\')+\'/api/panel/get_soft_list', $data); $data = str_replace('\'http://www.bt.cn/api/panel/notpro', 'public.GetConfigValue(\'home\')+\'/api/panel/notpro', $data); $data = str_replace('\'https://www.bt.cn/api/panel/notpro', 'public.GetConfigValue(\'home\')+\'/api/panel/notpro', $data); + + $data = str_replace('\'http://www.bt.cn/api/wpanel/get_soft_list_test', 'public.GetConfigValue(\'home\')+\'/api/wpanel/get_soft_list_test', $data); + $data = str_replace('\'https://www.bt.cn/api/wpanel/get_soft_list_test', 'public.GetConfigValue(\'home\')+\'/api/wpanel/get_soft_list_test', $data); + $data = str_replace('\'http://www.bt.cn/api/wpanel/get_soft_list', 'public.GetConfigValue(\'home\')+\'/api/wpanel/get_soft_list', $data); + $data = str_replace('\'https://www.bt.cn/api/wpanel/get_soft_list', 'public.GetConfigValue(\'home\')+\'/api/wpanel/get_soft_list', $data); + $data = str_replace('\'http://www.bt.cn/api/wpanel/notpro', 'public.GetConfigValue(\'home\')+\'/api/wpanel/notpro', $data); + $data = str_replace('\'https://www.bt.cn/api/wpanel/notpro', 'public.GetConfigValue(\'home\')+\'/api/wpanel/notpro', $data); + file_put_contents($main_filepath, $data); } //下载插件其他文件 - public static function download_plugin_other($fname, $filemd5 = null){ + public static function download_plugin_other($fname, $filemd5 = null, $os = 'Linux'){ $filepath = get_data_dir().'plugins/other/'.$fname; @mkdir(dirname($filepath), 0777, true); - $btapi = self::get_btapi(); + $btapi = self::get_btapi($os); $result = $btapi->get_plugin_other_filename($fname); if($result && isset($result['status'])){ if($result['status'] == true){ @@ -244,4 +258,17 @@ class Plugins } } + //获取一键部署列表 + public static function get_deplist($os = 'Linux'){ + $json_file = get_data_dir($os).'config/deployment_list.json'; + if(file_exists($json_file)){ + $data = file_get_contents($json_file); + $json_arr = json_decode($data, true); + if($json_arr){ + return $json_arr; + } + } + return false; + } + } \ No newline at end of file diff --git a/app/view/admin/layout.html b/app/view/admin/layout.html index 74f3baf..4350043 100644 --- a/app/view/admin/layout.html +++ b/app/view/admin/layout.html @@ -34,8 +34,12 @@
  • 后台首页
  • -
  • - 插件列表 +
  • + 插件列表 +
  • 使用记录 diff --git a/app/view/admin/pluginswin.html b/app/view/admin/pluginswin.html new file mode 100644 index 0000000..4a522ae --- /dev/null +++ b/app/view/admin/pluginswin.html @@ -0,0 +1,214 @@ +{extend name="admin/layout" /} +{block name="title"}插件列表{/block} +{block name="main"} + + +
    +
    + +
    +
    +
    + + +
    +
    + +
    +
    +   + 重置  + 重新获取  + +
    +
    +
    + + +
    +
    +
    + + + + + +{/block} \ No newline at end of file diff --git a/app/view/admin/set.html b/app/view/admin/set.html index 50b260e..ca19b9a 100644 --- a/app/view/admin/set.html +++ b/app/view/admin/set.html @@ -19,19 +19,34 @@ 页面地址:/download,开启后可以公开访问,否则只能管理员访问
    - + 用于一键更新脚本获取最新版本号,以及检测更新接口。并确保已在/public/install/update/放置对应版本更新包
    - + 用于检测更新接口返回
    - + 用于检测更新接口返回 +
    +
    + + + 用于一键更新脚本获取最新版本号,以及检测更新接口。并确保已在/public/win/panel/放置对应版本更新包 +
    +
    + + + 用于检测更新接口返回 +
    +
    + + + 用于检测更新接口返回
    @@ -40,7 +55,7 @@
    -

    宝塔面板接口设置

    +

    宝塔Linux面板接口设置

    以下宝塔面板请使用官方最新脚本安装并绑定账号,用于获取最新插件列表及插件包

    @@ -61,6 +76,29 @@
    +
    +

    宝塔Windows面板接口设置

    +
    +
    +

    以下宝塔面板请使用官方最新脚本安装并绑定账号,用于获取最新插件列表及插件包

    +

    下载专用插件,在面板【软件商店】->【第三方应用】,点击【导入插件】,导入该专用插件。

    +

    下载py替换文件,解压覆盖到C:\Program Files\python\Lib\json\目录下,然后重启面板。

    +
    +
    + + 填写规则如:http://192.168.1.1:8888 ,不要带其他后缀 +
    +
    + + +
    +
    + + +
    +
    +
    +
    {elseif $mod=='task'}

    定时任务说明

    @@ -78,9 +116,13 @@
    -
    +
    (批量下载不包含所有第三方插件,第三方插件需要去手动下载。)
    +
    +
    + (批量下载不包含所有第三方插件,第三方插件需要去手动下载。) +
    @@ -153,6 +195,38 @@ $(document).ready(function(){ } }); }) + $("#testbturl2").click(function(){ + var wbt_url = $("input[name=wbt_url]").val(); + var wbt_key = $("input[name=wbt_key]").val(); + if(wbt_url == ''){ + layer.alert('宝塔面板URL不能为空');return; + } + if(wbt_url.indexOf('http://')==-1 && wbt_url.indexOf('https://')==-1){ + layer.alert('宝塔面板URL不正确');return; + } + if(wbt_key == ''){ + layer.alert('宝塔面板接口密钥不能为空');return; + } + var ii = layer.load(2, {shade:[0.1,'#fff']}); + $.ajax({ + type : 'POST', + url : '/admin/testbturl', + data : {bt_url:wbt_url, bt_key:wbt_key}, + dataType : 'json', + success : function(data) { + layer.close(ii); + if(data.code == 0){ + layer.msg(data.msg, {icon: 1, time:1000}) + }else{ + layer.alert(data.msg, {icon: 2}) + } + }, + error:function(data){ + layer.close(ii); + layer.msg('服务器错误'); + } + }); + }) }) function saveSetting(obj){ var ii = layer.load(2, {shade:[0.1,'#fff']}); diff --git a/app/view/index/download.html b/app/view/index/download.html index 7a404f9..c68f3e4 100644 --- a/app/view/index/download.html +++ b/app/view/index/download.html @@ -20,12 +20,47 @@

    2分钟装好面板,一键管理服务器

    集成LAMP/LNMP环境安装,网站、FTP、数据库、文件管理、软件安装等功能

    -
    - 查看演示 - - - 立即免费安装 - +
    +
    +
    + +
    +
    +
    +
    Linux面板 {:config_get('new_version')}
    +
    + 支持Centos、Ubuntu、Deepin、Debian、Fedora等Linux系统。 + 查看演示 +
    +
    + 2分钟装好 + 阿里云推荐 + 腾讯云推荐 +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    Windows面板 {:config_get('new_version_win')}
    +
    支持Windows Server 2008 R2/2012/2016/2019,64位系统
    +
    + 操作简单 + 使用方便 +
    +
    + +
    +
    @@ -33,7 +68,7 @@
    -
    使用此云端的宝塔面板(版本:{:config_get('new_version')})
    +
    Linux面板{:config_get('new_version')}安装脚本
    使用 SSH 连接工具,如 @@ -70,13 +105,23 @@
    -
    +
    -
    更新日志
    +
    Windows面板{:config_get('new_version_win')}安装方法
    -

    宝塔Linux面板更新到{:config_get('new_version')}

    +

    1、使用官方安装程序进行安装,安装完先不要进入面板。

    +

    2、在命令提示符(cmd)输入以下一键更新命令,然后重启面板。

    +
    +
    +
    +
    wget {$siteurl}/win/panel/data/setup.py -O C:/update.py && "C:\Program Files\python\python.exe" C:/update.py update_panel {:config_get('new_version_win')}
    + 复制 +
    +
    +
    +

    注意:仅支持Windows Server 2008 R2/2012/2016/2019,64位系统(中文简体),且未安装其它环境

    @@ -133,8 +178,8 @@ scrollTop('#instal-linux'); }); - $('#goOnlineInstall').click(function () { - scrollTop('#online-instal'); + $('#goInstallWindows').click(function () { + scrollTop('#instal-windows'); }); $('#goInstallCloud').click(function () { diff --git a/data/config/deployment_list.json b/data/config/deployment_list.json new file mode 100644 index 0000000..966498b --- /dev/null +++ b/data/config/deployment_list.json @@ -0,0 +1 @@ +{"list": [{"id": 600801461, "type": 2, "sort": 4.6, "name": "yun_shop", "title": "\u82b8\u4f17\u5546\u57ce\u667a\u6167\u5546\u4e1a\u7cfb\u7edf", "ps": "\u514d\u8d39\u5546\u7528\uff0c\u516c\u4f17\u53f7/H5/\u5c0f\u7a0b\u5e8f\u540c\u6b65\u5206\u9500\u5546\u57ce\uff0c100+\u8425\u9500\u6a21\u5757?", "version": "2.4.2", "author": "\u82b8\u4f17\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-43962-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200212/daa1aff0abdd72a3840239506b3bb59b.png", "php": "72", "official": "https://www.yunzmall.com", "enable_functions": "putenv", "count": 12960, "score": "4.6", "versions": [{"m_version": "2", "version": "4.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u4e00\u952e\u90e8\u7f72--\u914d\u7f6ehttps--\u66f4\u65b0\u540e\u53f0--\u542f\u52a8\u961f\u5217!", "download": "other/20220402/75a0e92441e0c86d9f21c82ac5d1b6de.zip", "md5": "9de8497edf28f824c98992116e085b88", "size": 2008}]}, {"id": 600801247, "type": 4, "sort": 4.5, "name": "wordpress", "title": "WordPress", "ps": "\u6700\u591a\u4eba\u7528\u7684\u535a\u5ba2\u7a0b\u5e8f?", "version": "5.6", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "https://www.bt.cn", "min_image": "/api/Pluginother/get_file?fname=image/20190606/842f584540740a34fdab6c646d3f2a8a.png", "php": "56,70,71,72,73,74,80", "official": "https://cn.wordpress.org", "enable_functions": "", "count": 212466, "score": "4.5", "versions": [{"m_version": "5", "version": "6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "5.6\u7248wordpress", "download": "other/20201219/7902f20168ab7d9f7953d1f4b29e77df.zip", "md5": "c19e06766bd984649049135437e6e71b", "size": 16588808}]}, {"id": 600801590, "type": 1, "sort": 4.5, "name": "kodbox", "title": "\u53ef\u9053\u4e91KODBOX", "ps": "\u51e0\u5206\u949f\u5185\u642d\u5efa\u60a8\u7684\u4e13\u5c5e\u79c1\u6709\u4e91\u76d8/\u4f01\u4e1a\u7f51\u76d8?", "version": "v1.28", "author": "kodcloud", "price": 0, "auth_price": 0, "home": "http://bbs.kodcloud.com/", "min_image": "/api/Pluginother/get_file?fname=image/20200831/83b5f26ecc688e363bcd9aa747338608.png", "php": "54,55,56,70,71,72,73,74,80", "official": "https://kodcloud.com/", "enable_functions": "", "count": 33887, "score": "4.5", "versions": [{"m_version": "v1", "version": "28", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e3b\u8981\u65b0\u589e: \u5bf9\u8c61\u5b58\u50a8\u4f18\u5316,\u56fe\u7247\u7f29\u7565\u56fe\u4f18\u5316.. \u53d1\u5e03\u4e8e: 2022.3.10", "download": "other/20220316/f29d2bd404ae4d291d9db570f4076289.zip", "md5": "69f70f9776b8f1ad01542b4f623e9106", "size": 32603212}]}, {"id": 600801280, "type": 5, "sort": 3.7, "name": "wee7", "title": "\u5fae\u64ce", "ps": "\u5fae\u4fe1\u7b2c\u4e09\u65b9\u7ba1\u7406\u5f15\u64ce?", "version": "2.7.16", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190703/eacfc08e3524255f8269f0eb4d9dd3b4.png", "php": "53,54,55,56,70,71,72", "official": "https://www.w7.cc/", "enable_functions": "", "count": 32992, "score": "3.7", "versions": [{"m_version": "2", "version": "7.16", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5fae\u64ce-2.7.16", "download": "other/20220311/8cecd18813795eac723d5d622a59e3f0.zip", "md5": "d9e55ccb1f811ccffa340f3f00a8300e", "size": 35949}]}, {"id": 600801418, "type": 3, "sort": 4.5, "name": "discuz-X3.4", "title": "discuz-X3.4", "ps": "\u56fd\u5185\u77e5\u540d\u8bba\u575b\u7a0b\u5e8f?", "version": "20211124.", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-40982-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20191203/af7f0ba60f8700b09cb2903223198166.png", "php": "53,54,55,56,70,71,72,73,74", "official": "https://www.discuz.net/", "enable_functions": "", "count": 31768, "score": "4.5", "versions": [{"m_version": "20211124", "version": "", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u7ad9\u63a8\u8350", "download": "other/20220108/3e0fb5e16370fc85cbb622cad670e455.zip", "md5": "6d59adb73904073e0c92ea9f00190a17", "size": 12478686}]}, {"id": 600801262, "type": 2, "sort": 4, "name": "zfaka-zlkb", "title": "ZFAKA\u53d1\u5361\u7cfb\u7edf", "ps": "\u514d\u8d39\u3001\u5b89\u5168\u3001\u7a33\u5b9a\u3001\u9ad8\u6548\u7684\u53d1\u5361\u7cfb\u7edf\uff0c\u503c\u5f97\u62e5\u6709!?", "version": "1.4.3", "author": "\u8d44\u6599\u7a7a\u767d", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-33944-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190620/5c27a89b5f28482c123438d0ed6f8ba8.png", "php": "70,71,72,73", "official": "https://faka.zlkb.net", "enable_functions": "", "count": 24087, "score": "4.0", "versions": [{"m_version": "1", "version": "4.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "ZFAKA1.4.3 \u5b9d\u5854\u81ea\u52a8\u90e8\u7f72\u4e13\u7528(\u7531baiyue.one\u63d0\u4f9b\u652f\u6301)", "download": "other/20190620/28297ce9ee5e8a3ef2684a794f237dec.zip", "md5": "473302bc02fad4c571151d3e89a47bcf", "size": 11424416}]}, {"id": 600801804, "type": 2, "sort": 4, "name": "kaidianxing", "title": "\u5f00\u5e97\u661f\u5f00\u6e90\u5c0f\u7a0b\u5e8f\u5546\u57ce", "ps": "10\u5e74\u7535\u5546\u7814\u53d1\u56e2\u961f\uff0c\u6570\u4e07\u7528\u6237\u8ba4\u53ef\uff0c\u5168\u6e20\u9053\u591a\u573a\u666f\u8986\u76d6\uff0c\u514d\u8d39\u5546\u7528?", "version": "1.0.5", "author": "\u5f00\u5e97\u661f", "price": 0, "auth_price": 0, "home": "https://demo-free.kaidianxing.com", "min_image": "/api/Pluginother/get_file?fname=image/20220421/427281bc479a9124c5573f25c26b5fcb.png", "php": "74", "official": "", "enable_functions": "proc_open,proc_close,pcntl_signal,pcntl_signal_dispatch,proc_get_status", "count": 238, "score": "4.0", "versions": [{"m_version": "1", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301\u5bf9\u63a5\u89c6\u9891\u53f7\u4ea4\u6613\u7ec4\u4ef6", "download": "other/20220525/c246195051e0e9f8235b5f3e30b3080e.zip", "md5": "4b2f0f9c9dfa50a675d857616ee66aeb", "size": 69149608}]}, {"id": 600801333, "type": 2, "sort": 4.7, "name": "shopxo", "title": "ShopXO\u5f00\u6e90\u5546\u57ce", "ps": "WEB+\u5c0f\u7a0b\u5e8f\u3001\u5206\u9500\u3001\u591a\u4ed3\u5e93\u3001\u591a\u5546\u6237\u3001\u591a\u95e8\u5e97\u3001DIY\u62d6\u62fd\u88c5\u4fee?", "version": "v2.2.8 220527", "author": "gongfuxiang", "price": 0, "auth_price": 0.01, "home": "https://doc.shopxo.net/article/1/260680208858742784.html", "min_image": "/api/Pluginother/get_file?fname=image/20190822/bbad40b94f8eca5bc96799177ff9fcc6.png", "php": "74,80,81", "official": "https://shopxo.net/", "enable_functions": "", "count": 22072, "score": "4.7", "versions": [{"m_version": "v2", "version": "2.8 220527", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "IP\u8bbf\u95ee\u83b7\u53d6\u4e3b\u57df\u540dbug\u4fee\u590d", "download": "other/20220528/763a7976d5121090b98dc5bc40a63470.zip", "md5": "48b4d489ea2d3d3b260ef1aa38755096", "size": 41973454}]}, {"id": 600801534, "type": 4, "sort": 4.5, "name": "zblogphp", "title": "Z-BlogPHP", "ps": "\u4e00\u6b3e\u5c0f\u5de7,\u529f\u80fd\u5f3a\u5927,\u63d2\u4ef6\u4e3b\u9898\u7b49\u5e94\u7528\u4f17\u591a\u7684Blog\u548cCMS\u7a0b\u5e8f?", "version": "v1.7.2.3050", "author": "ZBlogTeam", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20200511/12acba2e32703e6b23d36ebe1ef68870.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.zblogcn.com/", "enable_functions": "", "count": 22054, "score": "4.5", "versions": [{"m_version": "v1", "version": "7.2.3050", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "1.7.2 Tenet Build 173050", "download": "other/20220510/a54c8fb09db4d4fb8a1f7323c423078c.zip", "md5": "3e6a77454126c96990f2bbb4f74d6bd6", "size": 3078001}]}, {"id": 600801287, "type": 4, "sort": 4.4, "name": "emlog", "title": "emlog", "ps": "\u7b80\u6d01\u6613\u7528\u7684PHP\u535a\u5ba2\u5efa\u7ad9\u7cfb\u7edf?", "version": "pro 1.3.1", "author": "emlog", "price": 0, "auth_price": 0, "home": "https://www.emlog.net", "min_image": "/api/Pluginother/get_file?fname=image/20210414/f374fc51fd4718169e6e4ac2f7197c9b.png", "php": "70,71,72,73,74,80", "official": "https://www.emlog.net", "enable_functions": "", "count": 20656, "score": "4.4", "versions": [{"m_version": "pro 1", "version": "3.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "emlog", "download": "other/20220522/65395998e567e535e7acc5f2ade59bc6.zip", "md5": "6968529baa8d77de4c9387902e448bc7", "size": 1033174}]}, {"id": 600801257, "type": 1, "sort": 5, "name": "jtbc3", "title": "JTBC\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u6e90\u4e8e2006\u5e74\u575a\u6301\u3010\u6c38\u4e45\u514d\u8d39\u5546\u7528\u3011\u7684\u5f00\u6e90CMS?", "version": "5.0.0.4", "author": "Jetiben", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-33484-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190619/8b75ddbdf943408e2a72cc62a6609457.png", "php": "80,81", "official": "https://www.jtbc.cn/", "enable_functions": "", "count": 17074, "score": "5.0", "versions": [{"m_version": "5", "version": "0.0.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "JTBC(v5)\u57fa\u4e8eAGPL\u5f00\u6e90\u534f\u8bae\u514d\u8d39\u5f00\u6e90\u53ef\u5546\u7528", "download": "other/20220601/93d3745906af130feac9804a57e5098f.zip", "md5": "092ff1010f7a40f97732d32986fd3e14", "size": 2375013}]}, {"id": 600801269, "type": 1, "sort": 3.5, "name": "qrpay", "title": "\u4e94\u5408\u4e00\u6536\u6b3e\u7801", "ps": "\u6536\u6b3e\u7801\u5728\u7ebf\u5408\u6210,\u652f\u6301\u4e94\u5927\u5e38\u7528\u4f53\u7cfb.40\u6a21\u677f?", "version": "0.1000", "author": "\u59ec\u957f\u4fe1", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-33637-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190703/a8e52ad118a6e2b930e3cd95cd0fc9fd.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://github.com/insoxin/qrpay", "enable_functions": "", "count": 12975, "score": "3.5", "versions": [{"m_version": "0", "version": "1000", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6536\u6b3e\u7801\u5408\u6210", "download": "other/20190903/2242f6e2169e538f13953e92cd79fd6c.zip", "md5": "757785c619b0d16083011a7f2386bc0f", "size": 3795363}]}, {"id": 600801278, "type": 6, "sort": 4, "name": "ThinkPHP-5.0", "title": "ThinkPHP-5.0", "ps": "\u56fd\u5185\u77e5\u540dPHP\u6846\u67b6?", "version": "5.0.24", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190702/cc480887ab3b85243aeb7bd6f9ffc624.png", "php": "54,55,56,70,71,72", "official": "http://www.thinkphp.cn/", "enable_functions": "", "count": 12228, "score": "4.0", "versions": [{"m_version": "5", "version": "0.24", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "5.0.24\u5b8c\u6574\u7248", "download": "other/20190702/82add708c7ee9b8a19b672ef156263d7.zip", "md5": "baaa01684e1ef010b7d6dd72d1fbe746", "size": 2460174}]}, {"id": 600801288, "type": 1, "sort": 4.3, "name": "empirecms", "title": "\u5e1d\u56fdCMS", "ps": "\u5e1d\u56fd\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?", "version": "7.5", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190705/ca52292bee66c3384483eb8ed5fc0741.png", "php": "53,54,55,56,70,71,72", "official": "http://www.phome.net/", "enable_functions": "", "count": 11555, "score": "4.3", "versions": [{"m_version": "7", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "empirecms-7.5", "download": "other/20190705/731920b4891019824239968dd2ce1f86.zip", "md5": "2ed82255b9e8d6880cf87fc0cf3897dd", "size": 6440216}]}, {"id": 600801425, "type": 1, "sort": 3.2, "name": "metinfo", "title": "\u7c73\u62d3\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf\uff08MetInfo\uff09", "ps": "\u7c73\u62d3\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf\uff0cPHP+MYSQL/SQLITE?", "version": "V7.6", "author": "MetInfo", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-41376-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20191213/493041db569f0c666f3576044c9585bb.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "http://www.mituo.cn", "enable_functions": "", "count": 11299, "score": "3.2", "versions": [{"m_version": "V7", "version": "6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301\u53ef\u89c6\u5316\u7f16\u8f91\u3001\u591a\u8bed\u8a00\u300110\u5408\u4e00\u5efa\u7ad9\u3001IPV6\u7b49\u529f\u80fd", "download": "other/20220412/710310d55170e373994ef6650c8dd010.zip", "md5": "fb8fb94d8d99d3d2959367b5473ccf6c", "size": 14854745}]}, {"id": 600801343, "type": 1, "sort": 3, "name": "newlogoedu", "title": "\u65b0\u8d77\u70b9\u7f51\u6821", "ps": "\u4e91\u8bfe\u7f51\u6821\u63d0\u9192\uff0c\u5305\u542b\u76f4\u64ad\uff0c\u70b9\u64ad\uff0c\u4e60\u9898\u6d4b\u8bd5\uff0c\u95ee\u7b54\u7cfb\u7edf\u7b49\u6a21\u5757\u3002?", "version": "2.3.1", "author": "\u65b0\u8d77\u70b9\u8f6f\u4ef6", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-36831-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200511/4d39a29fa2e5d18b4d2973c7952e92d9.png", "php": "55,56,70,71,72,73", "official": "https://www.yunknet.cn", "enable_functions": "", "count": 8386, "score": "3.0", "versions": [{"m_version": "2", "version": "3.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e91\u8bfe\u7f51\u6821\u7cfb\u7edf\u5347\u7ea7\u52302.3.1\u7248\u672c", "download": "other/20220407/9ac136108c950d2c35d0745cb6bae852.zip", "md5": "f2fd89779cdc9cb7e254c52031a38656", "size": 16194304}]}, {"id": 600801476, "type": 1, "sort": 2.5, "name": "netease_music", "title": "\u7f51\u6613MUSIC\u7ad9", "ps": "\u4ece\u7f51\u6613\u4e91\u97f3\u4e50\u83b7\u53d6\u6570\u636e\u542c\u6b4c?", "version": "1.1", "author": "cxbsoft", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-45689-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200312/736229582c1294a716725b4825541111.png", "php": "71,72,73", "official": "http://blog.bsot.cn/index.php/archives/40/", "enable_functions": "", "count": 8103, "score": "2.5", "versions": [{"m_version": "1", "version": "1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u6b63\u4e86API\u5931\u6548\u7684\u95ee\u9898\uff0c\u4fee\u6539\u4e86\u6837\u5f0f", "download": "other/20200705/01ad96709e7f0a0e86e8fdb37e96fd5c.zip", "md5": "aaa716d8c609e899bdc65bd7793a5523", "size": 74058}]}, {"id": 600801474, "type": 1, "sort": 5, "name": "jizhicms", "title": "jizhicms", "ps": "\u529f\u80fd\u5f3a\u5927\uff0c\u65e0\u9700\u6388\u6743\uff0c\u514d\u8d39\u5546\u7528\u7684\u5efa\u7ad9\u7cfb\u7edf?", "version": "v2.2.3", "author": "\u5982\u6c90\u6625", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;tid=45494", "min_image": "/api/Pluginother/get_file?fname=image/20200309/67a06f7f39665b89a982469e9460b349.png", "php": "56,70,71,72,73,74", "official": "https://jizhicms.cn", "enable_functions": "", "count": 7381, "score": "5.0", "versions": [{"m_version": "v2", "version": "2.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u5f00\u6e90\uff0c\u529f\u80fd\u5f3a\u5927\uff0c\u514d\u8d39\u5546\u7528\uff0c\u65e0\u9700\u6388\u6743\uff0c\u597d\u7528\u7684\u5efa\u7ad9CMS", "download": "other/20220506/0c365afb5a01cee9b7120ff0ef8c0b0d.zip", "md5": "a268b142927ee755d0d002bf15f4c886", "size": 16199366}]}, {"id": 600801310, "type": 2, "sort": 5, "name": "DBShop", "title": "DBShop\u5546\u57ce\u7cfb\u7edf", "ps": "\u5320\u5fc3\u4e4b\u4f5c\uff0c\u4e00\u5982\u65e2\u5f80\u4e13\u4e1a\u7684\u4f01\u4e1a\u7ea7\u5546\u57ce\u7cfb\u7edf?", "version": "V3.1 Release 220419", "author": "\u9759\u9759\u7684\u98ce", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;amp;tid=5099", "min_image": "/api/Pluginother/get_file?fname=image/20190729/d3d87c257d62423f2bd7e0b0394eb750.png", "php": "72,73,74,80", "official": "https://www.dbshop.net/", "enable_functions": "", "count": 7293, "score": "5.0", "versions": [{"m_version": "V3", "version": "1 Release 220419", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u529f\u80fd\u66f4\u65b0\uff0cbug\u4fee\u590d", "download": "other/20220421/d9c3a42c10c89df70bf200731cd1c82a.zip", "md5": "5f138ef0f0a1949f3552bb62860eabf4", "size": 48875488}]}, {"id": 600801330, "type": 1, "sort": 4.2, "name": "demososo", "title": "DM\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf", "ps": "\u4f01\u4e1a\u5b98\u7f51\uff0c\u5916\u8d38\u7f51\u7ad9\u5efa\u8bbe\u7684\u5f00\u6e90cms?", "version": "v2022.6", "author": "jasonzhang", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-36262-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190820/9830cf2ba7e96f816a323a809380ce73.png", "php": "70,71,72,73", "official": "https://www.demososo.com", "enable_functions": "", "count": 7263, "score": "4.2", "versions": [{"m_version": "v2022", "version": "6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v2022.6", "download": "other/20220605/2649a39a0b3992a48509a2b426c082cc.zip", "md5": "f959f6674e0b2a0abbfc2b8400a6eeea", "size": 16036773}]}, {"id": 600801265, "type": 1, "sort": 3, "name": "YoungxjTools", "title": "\u6768\u5c0f\u6770\u5de5\u5177\u7bb1", "ps": "\u6768\u5c0f\u6770\u5de5\u5177\u7bb1?", "version": "1.3", "author": "Youngxj", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190623/363ca165c89b105069ffed80182063aa.png", "php": "56", "official": "https://www.youngxj.cn", "enable_functions": "", "count": 6680, "score": "3.0", "versions": [{"m_version": "1", "version": "3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6768\u5c0f\u6770\u5de5\u5177\u7bb1\uff0c\u96c6\u6210\u5f88\u591aweb\u5c0f\u5de5\u5177", "download": "other/20190625/3efe3391874ee5d89edd656425642539.zip", "md5": "e1b58fd2e518de8f78fd1910b6c97657", "size": 7136596}]}, {"id": 600801704, "type": 0, "sort": 4.5, "name": "yibaiyun_jianzhan", "title": "\u58f9\u4f70\u4e91\u5efa\u7ad9", "ps": "1000+\u6a21\u677f\uff0c5\u5206\u949f\u514d\u8d39\u642d\u5efa11\u7aef\u5408\u4e00\u7684\u4f01\u4e1a\u7f51\u7ad9?", "version": "2.0.5", "author": "\u6d1b\u9633\u58f9\u4f70\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68002-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210420/3ebacb9608765de7dab319bdba7a01c0.png", "php": "56,70,71,72,73", "official": "http://www.ybyun.wang/", "enable_functions": "\u65e0", "count": 6590, "score": "4.5", "versions": [{"m_version": "2", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "1000+\u6a21\u677f\uff0c5\u5206\u949f\u514d\u8d39\u642d\u5efa11\u7aef\u5408\u4e00\u7684\u4f01\u4e1a\u7f51\u7ad9", "download": "other/20210720/d37cac343995852e435277ea36a479f2.zip", "md5": "fee368683adb6cf39d408fa42b9ece56", "size": 10962597}]}, {"id": 600801597, "type": 2, "sort": 4.5, "name": "blfk_v3", "title": "\u4f2f\u4e50\u53d1\u5361V3\u5b9d\u5854\u7248", "ps": "\u5b89\u5168\u3001\u7a33\u5b9a\u3001\u9ad8\u6548\u3001\u514d\u8d39\u7684\u4e2a\u4eba\u53d1\u5361\u865a\u62df\u5546\u57ce\u7cfb\u7edf\uff0c\u503c\u5f97\u62e5\u6709!?", "version": "8.0.0", "author": "\u4f2f\u4e50\u53d1\u5361", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-55859-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200918/ed7f31e86c295ce2406130c3dd67cd2d.png", "php": "56,70,71,72,73,74", "official": "http://www.313t.com", "enable_functions": "", "count": 6406, "score": "4.5", "versions": [{"m_version": "8", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590dbug\u589e\u52a0\u5206\u9500\u7248\u672c\u9009\u62e9", "download": "other/20220415/86d799f36848a891cee80b253dfa4879.zip", "md5": "2f38faaa5eefb8852ddd5db5f4e0a3df", "size": 129755}]}, {"id": 600801669, "type": 1, "sort": 5, "name": "loveway", "title": "\u672a\u77e5\u8868\u767d\u5899", "ps": "\u8fd9\u6b3e\u7b80\u6d01\u7f8e\u89c2\u7684\u8868\u767d\u5899\u732e\u7ed9\u6700\u53ef\u7231\u7684\u955c\u97f3\u53cc\u5b50\uff01?", "version": "1.5.9", "author": "\u5434\u5148\u68ee", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-64350-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210219/4a50747cb78410bb44fe55f0142defe0.png", "php": "56,70,71,72,73,74,80", "official": "https://www.wunote.cn", "enable_functions": "", "count": 6182, "score": "5.0", "versions": [{"m_version": "1", "version": "5.9", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5305\u542b\u591a\u9879\u529f\u80fd\u66f4\u65b0", "download": "other/20220228/a8daa90397ee69b78cc32fb75665db6e.zip", "md5": "3e4a3d56dd965fa8d31cc7acb0449bcf", "size": 2723233}]}, {"id": 600801371, "type": 3, "sort": 3.1, "name": "hybbs", "title": "HYBBS", "ps": "PHP\u8f7b\u8bba\u575b\u7a0b\u5e8f\uff0c\u57faMVC\u6846\u67b6\u5f00\u53d1\uff0c\u652f\u6301\u63d2\u4ef6\u3001\u6a21\u677f\u6269\u5c55?", "version": "2.3.2", "author": "hyphp", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20191008/29cff5304a28ec83e5615e784024928f.png", "php": "54,55,56,70,71,72,73", "official": "http:/bbs.hyphp.cn", "enable_functions": "", "count": 5856, "score": "3.1", "versions": [{"m_version": "2", "version": "3.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "PHP\u8f7b\u8bba\u575b\u7a0b\u5e8f\uff0c\u57faMVC\u6846\u67b6\u5f00\u53d1\uff0c\u652f\u6301\u63d2\u4ef6\u3001\u6a21\u677f\u6269\u5c55", "download": "other/20210407/7465cb76dc5981ce3ddf419a912cca15.zip", "md5": "de09680ea65e86ac2dbdcc50256feb3f", "size": 6562939}]}, {"id": 600801532, "type": 1, "sort": 5, "name": "dmandwp", "title": "dmandwp\u7cfb\u7edf - wordprss\u548cDM\u7cfb\u7edf\u533a\u5757\u7ec4\u5408\u5efa\u7ad9", "ps": "dmandwp--\u51fa\u8272\u7684wordpress\u524d\u7aef\u6548\u679c\u5e93?", "version": "v2021.10", "author": "jasonzhang", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-49107-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200508/f87d8df11a66cbd4cb992052ce55ebf9.png", "php": "53,54,55,56,70,71,72,73,74", "official": "www.dmandwp.com", "enable_functions": "", "count": 5817, "score": "5.0", "versions": [{"m_version": "v2021", "version": "10", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v2021.10", "download": "other/20211004/e0e2603cf879298baef7eb6c8de6f1bc.zip", "md5": "e9d56c7fb19a8e8499470ba7b46160f9", "size": 35624444}]}, {"id": 600801271, "type": 5, "sort": 3.7, "name": "doxcx", "title": "DOXCX", "ps": "\u591a\u7aef\u5408\u4e00\u5c0f\u7a0b\u5e8f\u6e90\u7801\u7cfb\u7edf,\u81ea\u5e26\u591a\u4e2a\u63d2\u4ef6,\u7fa4\u53f7879792832?", "version": "4.081", "author": "DOXCX", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-34393-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200411/fee8fdd6d8f138cba5339738b6a21631.png", "php": "54,55,56", "official": "https://www.doxcx.cn", "enable_functions": "", "count": 5808, "score": "3.7", "versions": [{"m_version": "4", "version": "081", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u65b0\u7248\u53d1\u5e03", "download": "other/20200525/d670e0cb5e8d0710677583e3cf187834.zip", "md5": "fc476e978afa3efec63f78b0e7c32172", "size": 34458333}]}, {"id": 600801274, "type": 2, "sort": 3.9, "name": "crmeb", "title": "CRMEB", "ps": "\u5f00\u6e90\u6392\u540d\u9065\u9065\u9886\u5148,\u9ad8\u6027\u80fd\u5f00\u6e90\u5546\u57ce,\u524d\u540e\u7aef\u5206\u79bb,\u5e26\u76f4\u64ad\u5ba2\u670d\u7cfb\u7edf?", "version": "v4.4.0", "author": "\u8046\u542c", "price": 0, "auth_price": 0, "home": "https://gitee.com/ZhongBangKeJi/CRMEB", "min_image": "/api/Pluginother/get_file?fname=image/20220312/c42a765e4ffbaf384b57e687ca40baf1.png", "php": "71,72,73,74", "official": "http://www.crmeb.com", "enable_functions": "pcntl_signal,pcntl_signal_dispatch,pcntl_fork,pcntl_wait,pcntl_alarm", "count": 5781, "score": "3.9", "versions": [{"m_version": "v4", "version": "4.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u9ad8\u6027\u80fd\u5f00\u6e90\u5546\u57ce\uff0cQQ\u7fa4\uff1a1025263163", "download": "other/20220216/10867846f35046664597a1c813deb39a.zip", "md5": "2c4ea352c9313dfd8c1a19076e487a0c", "size": 68461181}]}, {"id": 600801349, "type": 2, "sort": 4.7, "name": "DSMall", "title": "DSMall\u591a\u5e97\u94faB2B2C\u5546\u57ce", "ps": "\u6700\u6709\u7ade\u4e89\u529b\u7684B2B2C\u591a\u5e97\u94fa\u5546\u57ce\u7cfb\u7edf\uff0c\u652f\u6301\u62fc\u56e2\u3001\u5206\u9500\u3001\u780d\u4ef7\u7b49?", "version": "V5.0.3", "author": "\u5fb7\u5c1a\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-37082-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190911/0c6cf27bb350cbd5f080d08991c5fcbb.png", "php": "55,56,70,71,72", "official": "http://www.csdeshang.com", "enable_functions": "", "count": 5629, "score": "4.7", "versions": [{"m_version": "V5", "version": "0.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6700\u6709\u7ade\u4e89\u529b\u7684B2B2C\u591a\u5e97\u94fa\u5546\u57ce\u7cfb\u7edf\uff0c\u652f\u6301\u62fc\u56e2\u3001\u5206\u9500\u3001\u780d\u4ef7\u7b49", "download": "other/20190911/749d4567bb5ac54edbd95d2ed5b108f8.zip", "md5": "ad187dd42d74769bcac1f93b7d13baf5", "size": 35064783}]}, {"id": 600801338, "type": 1, "sort": 3, "name": "bgkcrm", "title": "\u5e2e\u7ba1\u5ba2CRM\u5ba2\u6237\u7ba1\u7406\u7cfb\u7edf", "ps": "\u5e2e\u60a8\u7ba1\u5ba2\u6237\u3001\u7ba1\u4e1a\u52a1\u3001\u7ba1\u8ddf\u5355\u3001\u7ba1\u8ba2\u5355\u3001\u7ba1\u5408\u540c\u3001\u7ba1\u552e\u540e\uff0c\u5185\u90e8\u529e\u516c?", "version": "4.3.5", "author": "\u6b66\u6c49\u521b\u76ca\u4e91\u4fe1\u606f\u6280\u672f\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-36350-1-2.html", "min_image": "/api/Pluginother/get_file?fname=image/20190914/995399c68e4c81e4724cabc733820c59.png", "php": "70,71,72", "official": "http://www.bgk100.com", "enable_functions": "", "count": 5442, "score": "3.0", "versions": [{"m_version": "4", "version": "3.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5e2e\u7ba1\u5ba2CRM\u5ba2\u6237\u7ba1\u7406\u7cfb\u7edfv4.3.5", "download": "other/20220407/98f944fa02f07e39e87cf0bc54632f8f.zip", "md5": "574f71c558fbf2967b75e519f163732d", "size": 14875769}]}, {"id": 600801426, "type": 1, "sort": 4, "name": "youke365", "title": "\u4f18\u5ba2365\u7f51\u5740\u5bfc\u822a\u5f00\u6e90\u7248", "ps": "\u4e00\u6b3e\u5f00\u6e90\u7684\u7f51\u5740\u5bfc\u822a\u7cfb\u7edf?", "version": "v1.5.3", "author": "\u5947\u4e50\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-41520-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200209/da8f64c225cab466b46616bdc80714a0.png", "php": "56,70,71,72,73", "official": "http://www.youke365.site", "enable_functions": "", "count": 5375, "score": "4.0", "versions": [{"m_version": "v1", "version": "5.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u3010\u4fee\u590d\u3011\u4fee\u590d\u7cfb\u7edf\u5b89\u5168\u6f0f\u6d1e \u3010\u4f18\u5316\u3011\u4f18\u5316\u7cfb\u7edf\u767b\u5f55\u673a\u5236 \u3010\u4f18\u5316\u3011\u652f\u63017.0 7.1 7.2 7.3 7.4 8.0 \u3010\u4fee\u590d\u3011\u6700\u65b0\u5217\u8868\u9875\u9762\u5206\u9875\u95ee\u9898 \u3010\u4fee\u590d\u3011\u4f1a\u5458\u65e0\u6cd5\u767b\u5f55\u7684\u95ee\u98980", "download": "other/20210618/711f7985089afce634210fc2e8a28850.zip", "md5": "bdfdbd793151942eddbc6707c097e310", "size": 22149569}]}, {"id": 600801286, "type": 2, "sort": 3.6, "name": "ecshop", "title": "ecshop", "ps": "B2C\u72ec\u7acb\u7f51\u5e97\u7cfb\u7edf?", "version": "3.6", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190704/4cfd38f7d58c20896dd6e5bd87437574.png", "php": "53,54,55,56", "official": "http://www.ecshop.com", "enable_functions": "", "count": 4842, "score": "3.6", "versions": [{"m_version": "3", "version": "6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "ecshop-3.6", "download": "other/20190704/b2cf20441de457ea21f4640a5414cec6.zip", "md5": "d9668fb3d799103a76c156abc13b3ae2", "size": 36024409}]}, {"id": 600801294, "type": 1, "sort": 3.3, "name": "tipask", "title": "tipask\u95ee\u7b54\u7cfb\u7edf", "ps": "PHP\u5f00\u6e90\u95ee\u7b54\u7cfb\u7edf\uff0c\u5bb9\u6613\u6269\u5c55\uff0c\u5177\u6709\u5f3a\u5927\u7684\u8d1f\u8f7d\u80fd\u529b\u548c\u7a33\u5b9a\u6027\u3002?", "version": "3.5.5", "author": "tipask.com", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-5924-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190709/893d0adad66b14e0152ec790b1133707.png", "php": "71,72,73", "official": "http://www.tipask.com", "enable_functions": "exec,shell_exec,proc_open,proc_get_status", "count": 4830, "score": "3.3", "versions": [{"m_version": "3", "version": "5.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u89e3\u51b3\u5168\u6587\u68c0\u7d22\u914d\u7f6e\u95ee\u9898", "download": "other/20191017/6ee897729ce06f73e39ba4ba7bc3e9fa.zip", "md5": "33edf176cbe4a6ce73a5d54251c76277", "size": 22212465}]}, {"id": 600801417, "type": 2, "sort": 4.3, "name": "yidu_tc_plus", "title": "\u58f9\u5ea6\u540c\u57ce\u65b0\u96f6\u552e", "ps": "\u4e3b\u5e94\u7528\u65e0\u9700\u6388\u6743\u3001\u514d\u8d39\u5546\u7528\uff1b\u4e13\u6ce8\u540c\u57ce,\u4e13\u6ce8\u95e8\u5e97,\u66f4\u4e13\u6ce8\u670d?", "version": "2.0.71", "author": "\u58f9\u5ea6\u6280\u672f", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-41074-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20191203/9b9d69f4a19e1017df92119132c51231.png", "php": "71,72", "official": "https://www.chiwon.cn", "enable_functions": "", "count": 4824, "score": "4.3", "versions": [{"m_version": "2", "version": "0.71", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u7248\u53d1\u5e03", "download": "other/20210908/17667cae9348b456e81da8c505bdd45f.zip", "md5": "f7d94c0424acb3eee7ef2743854e36b7", "size": 47737698}]}, {"id": 600801345, "type": 1, "sort": 4.2, "name": "meedu", "title": "MeEdu", "ps": "\u57fa\u4e8eLaravel\u5f00\u53d1\u7684\u5f00\u6e90\u514d\u8d39\u5728\u7ebf\u6559\u80b2\u7cfb\u7edf?", "version": "v4.2.2", "author": "\u5c0f\u6ed5", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=45944", "min_image": "/api/Pluginother/get_file?fname=image/20200316/4fdd06f7f1804cd87016639f817c3db1.png", "php": "72,73,74", "official": "https://meedu.vip/", "enable_functions": "passthru,proc_open,proc_get_status,symlink,putenv", "count": 4641, "score": "4.2", "versions": [{"m_version": "v4", "version": "2.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v4.2.2", "download": "other/20210617/531ae517fb4f36e969767a49ffbb35bc.zip", "md5": "43e55ad183bdea1a2c3527cd17810ffe", "size": 34545096}]}, {"id": 600801299, "type": 1, "sort": 1.9, "name": "chengxuxia", "title": "\u7a0b\u5e8f\u4fa0CMS", "ps": "\u4e13\u4e1a\u3001\u5b89\u5168\u3001\u7a33\u5b9a\u7684\u6dd8\u5b9d\u5ba2CMS\u7cfb\u7edf?", "version": "2.5.0", "author": "\u7a0b\u5e8f\u4fa0", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-6523-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190724/96460df8dc38ef3c358313f5d6c0b607.png", "php": "54,55,56,70,71", "official": "http://www.chengxuxia.com.cn/? source=bt", "enable_functions": "", "count": 4557, "score": "1.9", "versions": [{"m_version": "2", "version": "5.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u8c03\u6574\u5546\u54c1\u81ea\u52a8\u6a21\u5f0f", "download": "other/20190926/61aedd0651c252b61c98ede4670b20fa.zip", "md5": "ddf5f5a8f799d16b86d2c41d1c20d611", "size": 27360478}]}, {"id": 600801361, "type": 2, "sort": 5, "name": "DSShop", "title": "DSShop\u5355\u5e97\u94faB2C\u5546\u57ce", "ps": "\u6700\u6709\u7ade\u4e89\u529b\u7684B2C\u5355\u5e97\u94fa\u5546\u57ce\u7cfb\u7edf?", "version": "V2.1.5", "author": "\u5fb7\u5c1a\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-37698-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190924/ebc65ab04f7a3af88be101529763d38b.png", "php": "55,56,70,71,72", "official": "http://www.csdeshang.com", "enable_functions": "", "count": 4494, "score": "5.0", "versions": [{"m_version": "V2", "version": "1.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6700\u6709\u7ade\u4e89\u529b\u7684B2C\u5355\u5e97\u94fa\u5546\u57ce\u7cfb\u7edf", "download": "other/20190924/d4231a2263fa06ea28da4cf74f0a9af4.zip", "md5": "ff97f2a19d50de960041c97297aa6b15", "size": 29163452}]}, {"id": 600801472, "type": 1, "sort": 3.7, "name": "postoffice", "title": "CX\u90ae\u5c40\u7cfb\u7edf", "ps": "\u4e00\u5957\u65b9\u4fbf\u7684\u90ae\u5c40\u7cfb\u7edf?", "version": "v1.0", "author": "cxbsoft", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-45304-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200306/5bf3f446699f21e38208efd1b6f91545.png", "php": "53,54,55,56,70,71,72", "official": "http://blog.bsot.cn/index.php/archives/39/", "enable_functions": "", "count": 4097, "score": "3.7", "versions": [{"m_version": "v1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7b2c\u4e00\u7248\u672c\uff0c\u63d0\u4f9b\u57fa\u7840\u529f\u80fd", "download": "other/20200306/aaabd196f8eb2400286eb79c83590ba6.zip", "md5": "a5f55522d61d0c2ecc8f4220a135cf38", "size": 19999678}]}, {"id": 600801339, "type": 1, "sort": 3.7, "name": "xunruicms", "title": "\u8fc5\u777fCMS\u514d\u8d39\u5f00\u6e90\u5efa\u7ad9\u7a0b\u5e8f", "ps": "\u514d\u8d39\u5f00\u6e90\u7684PHP8\u7f51\u7ad9\u540e\u53f0\u7a0b\u5e8f?", "version": "4.5.5", "author": "PHP\u7801\u519c", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=36445", "min_image": "/api/Pluginother/get_file?fname=image/20210416/f005e05a6096919dd78158de6bbd40d6.png", "php": "72,73,74,80,81", "official": "http://www.xunruicms.com", "enable_functions": "", "count": 4068, "score": "3.7", "versions": [{"m_version": "4", "version": "5.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301php81", "download": "other/20220320/0a050171f0c963a609fc0d0f07b3daa6.zip", "md5": "70294c7df3a9624ccca6a5014149c056", "size": 6960291}]}, {"id": 600801380, "type": 1, "sort": 5, "name": "DSO2O", "title": "DSO2O\u5916\u5356\u8ba2\u9910/\u5bb6\u653f\u670d\u52a1/\u540c\u57ce\u8dd1\u817f\u7cfb\u7edf", "ps": "\u5305\u542b\u540c\u57ce\u8dd1\u817f\u3001\u5916\u5356\u9001\u9910\u3001\u4e0a\u95e8\u670d\u52a1\u7b49\u6700\u8d34\u8fd1\u793e\u533a\u5c45\u6c11\u7684\u529f\u80fd?", "version": "V3.2.5", "author": "\u5fb7\u5c1a\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=38506", "min_image": "/api/Pluginother/get_file?fname=image/20191014/a6be4f7aaacac8f1bbb0709a03ed0855.png", "php": "55,56,70,71,72", "official": "http://www.csdeshang.com", "enable_functions": "", "count": 3971, "score": "5.0", "versions": [{"m_version": "V3", "version": "2.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5305\u542b\u540c\u57ce\u8dd1\u817f\u3001\u5916\u5356\u9001\u9910\u3001\u4e0a\u95e8\u670d\u52a1\u7b49\u6700\u8d34\u8fd1\u793e\u533a\u5c45\u6c11\u7684\u529f\u80fd", "download": "other/20191014/9b9cbb0c573dbd5a7b1a50b04b2f0bff.zip", "md5": "8785f26b6c7dbed53db401b40b92e431", "size": 43263702}]}, {"id": 600801596, "type": 1, "sort": 3.8, "name": "bthost", "title": "btHost - \u9884\u89c8\u7248", "ps": "\u5b9d\u5854\u4e3b\u673a\u72ec\u7acb\u63a7\u5236\u7cfb\u7edf - \u9650\u65f6\u514d\u8d39\u4e2d?", "version": "1.6.1", "author": "Youngxj", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-56376-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200917/650287343ab89034b887b93e548aef67.png", "php": "71,72,73,74", "official": "https://btai.cc", "enable_functions": "", "count": 3932, "score": "3.8", "versions": [{"m_version": "1", "version": "6.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5b9d\u5854\u4e3b\u673a\u72ec\u7acb\u63a7\u5236\u7cfb\u7edf\uff0c\u53ef\u5bf9\u63a5\u8d22\u52a1\u9500\u552e", "download": "other/20210731/ccbdfe47425dc29711ffd386df7e8e4b.zip", "md5": "b2fb2115bf873c398520956314fc5708", "size": 24739370}]}, {"id": 600801353, "type": 1, "sort": 3, "name": "schoolcms", "title": "SchoolCMS\u6559\u52a1\u7cfb\u7edf", "ps": "\u4e2d\u56fd\u9996\u4e2a\u5f00\u6e90 \u5b66\u6821\u6559\u52a1\u7ba1\u7406\u7cfb\u7edf \u5efa\u7ad9\u66f4\u5feb\u901f\uff01?", "version": "v2.3.1", "author": "gongfuxiang", "price": 0, "auth_price": 0, "home": "https://gong.gg/post-51.html", "min_image": "/api/Pluginother/get_file?fname=image/20190918/b6ef031ca21798589a8fc4d4f7f48a72.png", "php": "56,70,71,72,73", "official": "https://gong.gg/post-51.html", "enable_functions": "", "count": 3781, "score": "3.0", "versions": [{"m_version": "v2", "version": "3.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e2d\u56fd\u9996\u4e2a\u5f00\u6e90 \u5b66\u6821\u6559\u52a1\u7ba1\u7406\u7cfb\u7edf \u5efa\u7ad9\u66f4\u5feb\u901f\uff01", "download": "other/20190918/df9c55c4f59c5bd9cae9138609c5056a.zip", "md5": "46e2fc6192382edfbf3e851c85e4f57d", "size": 14355493}]}, {"id": 600801350, "type": 2, "sort": 5, "name": "DSKms", "title": "DSKms\u89c6\u9891\u5185\u5bb9\u4ed8\u8d39\u7cfb\u7edf", "ps": "\u4e3a\u4f01\u4e1a\u5ba2\u6237\u91cf\u8eab\u6253\u9020\u7684\u4e13\u4e1a\u5185\u5bb9\u4ed8\u8d39\u7cfb\u7edf?", "version": "V2.1.8", "author": "\u5fb7\u5c1a\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=37334", "min_image": "/api/Pluginother/get_file?fname=image/20190916/0c25eabcbc60dfcd735ceff651e379a6.png", "php": "55,56,70,71,72", "official": "http://www.csdeshang.com", "enable_functions": "", "count": 3594, "score": "5.0", "versions": [{"m_version": "V2", "version": "1.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e3a\u4f01\u4e1a\u5ba2\u6237\u91cf\u8eab\u6253\u9020\u7684\u4e13\u4e1a\u5185\u5bb9\u4ed8\u8d39\u7cfb\u7edf", "download": "other/20190916/d58b2d07f100136b5b3c7dd46d3f327e.zip", "md5": "e255f1838079040038c65dd70f315c72", "size": 38672565}]}, {"id": 600801255, "type": 1, "sort": 3, "name": "sentcms", "title": "sentcms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u4f01\u4e1a\u7f51\u7ad9\u5efa\u8bbe?", "version": "v4.0.5", "author": "\u817e\u901f\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://gitee.com/sentcms/sentcms/issues", "min_image": "/api/Pluginother/get_file?fname=image/20190617/5ab73a997a6aef68194e7fa85989caa1.png", "php": "71,72,73,74", "official": "http://www.tensent.cn", "enable_functions": "pdo,pdo_mysql,mb_strlen,file_get_contents,file_put_contents", "count": 3589, "score": "3.0", "versions": [{"m_version": "v4", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590d\u63d2\u4ef6\u7684\u4e00\u4e2abug", "download": "other/20210103/190fe094f7b7a8d3cf0e380482001b63.zip", "md5": "2964039e0bdf080b13058ac092df40a5", "size": 22634880}]}, {"id": 600801251, "type": 1, "sort": 1, "name": "Centcount_Analytics", "title": "\u767e\u592b\u957f\u7edf\u8ba1", "ps": "\u4e00\u6b3e\u529f\u80fd\u5f3a\u5927\u7684\u7f51\u7ad9\u7edf\u8ba1\u5206\u6790\u7a0b\u5e8f\uff0c5\u5206\u949f\u642d\u5efa\u4e00\u4e2aCNZZ\uff01?", "version": "2.1.1", "author": "WM Jonssen", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-33104-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190613/a3f3fcae0b648a57d5aff3b8606dc1b3.png", "php": "55,56,70,71,72,73", "official": "https://cn.centcount.com", "enable_functions": "popen", "count": 3439, "score": "1.0", "versions": [{"m_version": "2", "version": "1.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u767e\u592b\u957f\u7edf\u8ba12.1.1 - \u4fee\u590d\u82e5\u5e72\u95ee\u9898", "download": "other/20200515/f3a5cf77781614545776f007d356733c.zip", "md5": "a6583128ad8397e606b7cd7e7cc499fe", "size": 33142}]}, {"id": 600801722, "type": 1, "sort": 4, "name": "biz", "title": "INSO\u58c1\u7eb8", "ps": "\u6536\u5f55\u51e0\u5341\u4ebf\u9ad8\u6e05\u4f18\u8d28\u56fe\u7247,\u6570\u5343\u4e07\u7528\u6237\u7684\u73cd\u85cf\u5206\u4eab?", "version": "0.02", "author": "\u59ec\u957f\u4fe1", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs", "min_image": "/api/Pluginother/get_file?fname=image/20210516/884a557dd671252b711ce19af2e97a9f.png", "php": "53,54,55,56,70,71,72,73,80", "official": "https://github.com/insoxin/a", "enable_functions": "", "count": 3385, "score": "4.0", "versions": [{"m_version": "0", "version": "02", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u66f4\u6362\u88ab\u5899\u7684cdn.jsdelivr.net", "download": "other/20220601/a8834ae2b85616514154de780ac5ef00.zip", "md5": "44f02e83af955f0b67e96818d05c40f5", "size": 57678}]}, {"id": 600801566, "type": 1, "sort": 4, "name": "download_station", "title": "\u672a\u77e5\u4e0b\u8f7d\u7ad9", "ps": "\u7531\u4e00\u4e2a\u54b8\u9c7c\u5f00\u53d1\u7684\u4e00\u4e2a\u6781\u5176\u7b80\u964b\u7684\u4e0b\u8f7d\u7ad9\uff0c\u6765\u8bd5\u8bd5\u5457\uff01?", "version": "1.1.8", "author": "\u5434\u5148\u68ee", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-53000-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200723/376d9ec8f03ae2c6d3bc419ff7b49a59.png", "php": "56,70,71,72,73,74,80", "official": "https://www.wunote.cn", "enable_functions": "", "count": 3315, "score": "4.0", "versions": [{"m_version": "1", "version": "1.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "1.\u4f7f\u7528\u65b0\u7684\u7248\u672c\u53f7\u547d\u540d\u89c4\u5219 2.\u65b0\u589e\u76f4\u63a5\u4e0b\u8f7d\u6a21\u5f0f\u4ee5\u53ca\u62fc\u63a5\u94fe\u63a5\u4e0b\u8f7d\u6a21\u5f0f 3.\u4f18\u5316\u7a0b\u5e8f\u4ee3\u7801", "download": "other/20220203/30383420ba6cd18e377942188d224256.zip", "md5": "9cd88ec488171be82019803e4052dc72", "size": 6378666}]}, {"id": 600801470, "type": 1, "sort": 5, "name": "short_url", "title": "\u7f51\u5740\u7f29\u77ed", "ps": "\u4e00\u6b3e\u65b9\u4fbf\u7684\u7f51\u5740\u7f29\u77ed?", "version": "v1.3.1", "author": "cxbsoft", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-44991-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200302/5f9770f5ca60644441d1eb33b90bcbe6.png", "php": "53,54,55,56,70,71,72,73", "official": "http://blog.bsot.cn/index.php/archives/38/", "enable_functions": "", "count": 3216, "score": "5.0", "versions": [{"m_version": "v1", "version": "3.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590dv1.3\u7248\u672cbug", "download": "other/20200305/bd8e170a9df3cee1b2716a3edc57b4c8.zip", "md5": "8b57f18366b7bbe54aec74703be976f0", "size": 12882297}]}, {"id": 600801513, "type": 1, "sort": 2.8, "name": "yunknet", "title": "\u4e91\u8bfe\u7f51\u6821\u7cfb\u7edf", "ps": "\u4e91\u8bfe\u7f51\u6821\uff0c\u5305\u542b\u76f4\u64ad\uff0c\u70b9\u64ad\uff0c\u8003\u8bd5\uff0c\u8d44\u8baf \uff0c\u6d4b\u8bc4\u7b49\u6a21\u5757?", "version": "2.3.1", "author": "\u65b0\u8d77\u70b9\u8f6f\u4ef6", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=89126", "min_image": "/api/Pluginother/get_file?fname=image/20200417/9b03195b0ddfa80c9c88e07c0e464b6c.png", "php": "55,56,70,71,72,73,74", "official": "https://www.yunknet.cn", "enable_functions": "", "count": 3190, "score": "2.8", "versions": [{"m_version": "2", "version": "3.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e91\u8bfe\u7f51\u6821\u7cfb\u7edf\u5347\u7ea7\u52302.3.1\u7248\u672c", "download": "other/20220407/2cb15514635204f6cb42d0d35a0d9f7a.zip", "md5": "f2fd89779cdc9cb7e254c52031a38656", "size": 16194304}]}, {"id": 600801397, "type": 1, "sort": 4.1, "name": "whatsns", "title": "whatsns\u5f00\u6e90php\u95ee\u7b54\u7cfb\u7edf", "ps": "\u4e00\u6b3e\u5305\u542b\u4ed8\u8d39\u95ee\u7b54\uff0cseo\uff0c\u5c0f\u7a0b\u5e8f\u4e00\u4f53\u7684\u5f00\u6e90php\u7cfb\u7edf?", "version": "6.0.3.2", "author": "whatsns", "price": 0, "auth_price": 0, "home": "https://wenda.whatsns.com/", "min_image": "/api/Pluginother/get_file?fname=image/20191106/4c85a5ba55f441862340c2612c84aa31.png", "php": "56,70,71,72,73", "official": "https://www.whatsns.com/", "enable_functions": "", "count": 3143, "score": "4.1", "versions": [{"m_version": "6", "version": "0.3.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590d\u6ca1\u6709\u914d\u7f6e\u4f2a\u9759\u6001\u7ad9\u957f\u540e\u53f0\u9996\u9875\u7ed1\u5b9a\u5f00\u53d1\u8005\u53c2\u6570\u63d0\u793a\u670d\u52a1\u5668\u5f02\u5e38", "download": "other/20211228/f192051abd978988993a50bd7b51f96d.zip", "md5": "899d1eec9ba5673502a8ba5edbe99a14", "size": 40801174}]}, {"id": 600801263, "type": 1, "sort": 2.3, "name": "wdja", "title": "WDJA\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u5b98\u7f51www.wdja.net QQ\u7fa4:122019913?", "version": "2.2", "author": "shadoweb", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-34750-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210727/9ad87e05422043568d5bb300f760542d.png", "php": "70,71,72,73,74,80", "official": "http://www.wdja.net/", "enable_functions": "", "count": 3114, "score": "2.3", "versions": [{"m_version": "2", "version": "2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301mysql5.6\u7248\u672c.\u4f18\u5316\u6027\u80fd.", "download": "other/20211113/28cd5a660a1ee3eabd95642833fa6647.zip", "md5": "ac20e7bf96e5f3b4853355dfde541039", "size": 5701141}]}, {"id": 600801616, "type": 3, "sort": 4.4, "name": "mdclub", "title": "MDClub", "ps": "Material Design \u6837\u5f0f\u7684\u8f7b\u91cf\u7ea7\u8bba\u575b\u7cfb\u7edf?", "version": "1.0.2", "author": "MDClub", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;tid=55802", "min_image": "/api/Pluginother/get_file?fname=image/20201029/76ee89ec581e6c2df77c4159d56231e0.png", "php": "73,74", "official": "https://www.mdclub.org/", "enable_functions": "", "count": 3023, "score": "4.4", "versions": [{"m_version": "1", "version": "0.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "cdn \u5730\u5740\u4ece jsdelivr \u6362\u6210 unpkg", "download": "other/20220530/f3429894bc0a5bf125f858e204e946cf.zip", "md5": "b0869a297e4c14304a91358e361fccee", "size": 15189827}]}, {"id": 600801284, "type": 1, "sort": 5, "name": "phpcms", "title": "phpcms", "ps": "PHPCMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?", "version": "9.6.3", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190704/417fabf69ca8f9efcc5609e5ecd7d3b1.png", "php": "52,53,54,55,56,70", "official": "http://www.phpcms.cn/", "enable_functions": "", "count": 2791, "score": "5.0", "versions": [{"m_version": "9", "version": "6.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "phpcms-9.6.3", "download": "other/20190704/943802751c17ec6e24f3dd643e99ab4c.zip", "md5": "fc20335df73de679be6965edfb0728d6", "size": 8503708}]}, {"id": 600801410, "type": 1, "sort": 5, "name": "chanzhi", "title": "\u8749\u77e5\u4f01\u4e1a\u95e8\u6237\u7cfb\u7edf", "ps": "\u8749\u77e5\u662f\u4e00\u6b3e\u4e13\u4e1a\u7684\u89e3\u51b3\u4f01\u4e1a\u8425\u9500\u4e00\u4f53\u5316\u7684\u95e8\u6237\u5efa\u7ad9\u7cfb\u7edf\u3002?", "version": "7.7", "author": "\u8749\u77e5\u4f01\u4e1a\u95e8\u6237", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-40551-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20191127/464f648a5d2fc7075307c9fa34ef8694.png", "php": "54,55,56,70,71,72", "official": "https://www.chanzhi.org/", "enable_functions": "", "count": 2750, "score": "5.0", "versions": [{"m_version": "7", "version": "7", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u8be5\u7248\u672c\u5bf9\u79fb\u52a8\u7aef\u6240\u6709\u9875\u9762\u505a\u4e86\u5927\u5e45\u5ea6\u7684\u4f18\u5316\uff0c\u63d0\u5347\u79fb\u52a8\u8bbe\u5907\u7684\u7528\u6237\u4f53\u9a8c", "download": "other/20191203/f154406bfa409bed9d6bc41b128596cc.zip", "md5": "c45dff392cd4f2f00f35a3b9ddd76b57", "size": 8506136}]}, {"id": 600801705, "type": 0, "sort": 4.4, "name": "yibaiyun_shangcheng", "title": "\u58f9\u4f70\u4e91\u5546\u57ce", "ps": "100+\u8425\u9500\u6a21\u5757\uff0c5\u5206\u949f\u514d\u8d39\u642d\u5efa10\u7aef\u5408\u4e00\u7684\u5c0f\u7a0b\u5e8f\u5546\u57ce?", "version": "2.0.5", "author": "\u6d1b\u9633\u58f9\u4f70\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68011-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210420/d2cdeae31faced91aa9881fc38f195d7.png", "php": "56,70,71,72,73", "official": "http://www.ybyun.wang/", "enable_functions": "", "count": 2713, "score": "4.4", "versions": [{"m_version": "2", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "100+\u8425\u9500\u6a21\u5757\uff0c5\u5206\u949f\u514d\u8d39\u642d\u5efa10\u7aef\u5408\u4e00\u7684\u5c0f\u7a0b\u5e8f\u5546\u57ce", "download": "other/20210720/94c406f2ac8ac95dae6895b7cbfb0d79.zip", "md5": "0d602d101a108bbfcd02bb60c3754abb", "size": 10962597}]}, {"id": 600801603, "type": 1, "sort": 5, "name": "timemailx", "title": "TimeMail-\u65f6\u5149\u90ae\u5c40", "ps": "\u7ed9\u672a\u6765\u5199\u5c01\u4fe1 \u591a\u5e74\u4e4b\u540e \u613f\u4f60\u4e0d\u8d1f\u6240\u671f?", "version": "1.1", "author": "xcsoft", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-57138-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20201002/c57016503e78b04b0da96a18ce4cf6a3.png", "php": "56,71,72,73,74", "official": "https://time.xsot.cn", "enable_functions": "", "count": 2562, "score": "5.0", "versions": [{"m_version": "1", "version": "1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u521d\u59cb\u7248\u672c", "download": "other/20201002/e96db6f3e5e4ee46b030b38f5233057c.zip", "md5": "a6d4153dd4bea98375fd3d473ec018ca", "size": 130968}]}, {"id": 600801700, "type": 1, "sort": 4.3, "name": "onenav", "title": "OneNav", "ps": "\u7b80\u7ea6\u5bfc\u822a/\u4e66\u7b7e\u7ba1\u7406\u5668\uff0c\u754c\u9762\u7b80\u6d01\uff0c\u4f7f\u7528\u65b9\u4fbf\uff0c\u514d\u8d39\u5f00\u6e90\u3002?", "version": "0.9.22", "author": "xiaoz", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20210408/b489ea360bf79948246812a6e366dfed.png", "php": "56,70,71,72,73", "official": "https://nav.rss.ink/", "enable_functions": "", "count": 2562, "score": "4.3", "versions": [{"m_version": "0", "version": "9.22", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "OneNav 0.9.22", "download": "other/20220602/228afec52efd57590ca5dceae77f82c7.zip", "md5": "5f5a14466f7ec1b16ba99465ae4d4b21", "size": 5056090}]}, {"id": 600801559, "type": 1, "sort": 5, "name": "eyoucms", "title": "\u6613\u4f18CMS", "ps": "EyouCms\u662f\u57fa\u4e8eTP5\u5f00\u53d1\u7684\u4f01\u4e1a\u7f51\u7ad9\u5efa\u7ad9\u7cfb\u7edf\u3002?", "version": "v1.5.8", "author": "\u6613\u4f18cms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-92297-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200708/9c93b2069e8384da034cfe59df8f005e.png", "php": "54,55,56,70,71,72,73,74,80", "official": "https://www.eyoucms.com/", "enable_functions": "", "count": 2331, "score": "5.0", "versions": [{"m_version": "v1", "version": "5.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u3001\u5b89\u5168\u3001\u591a\u6a21\u677f\u662f\u4f01\u4e1a\u7f51\u7ad9\u5efa\u7ad9\u7684\u795e\u5668", "download": "other/20220517/44cde0a274a46dd96f60485b009579c3.zip", "md5": "c75deb36ee1bad5b0d452b75a869c594", "size": 24283393}]}, {"id": 600801430, "type": 1, "sort": 3.7, "name": "phpok", "title": "PHPOK\u4f01\u4e1a\u7ad9\u7cfb\u7edf", "ps": "\u4e00\u5957\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u91c7\u7528 PHP + MySQL \u5f00\u53d1?", "version": "6.2", "author": "phpok.com", "price": 0, "auth_price": 0, "home": "https://www.phpok.com/manual.html", "min_image": "/api/Pluginother/get_file?fname=image/20191219/15184c3fd5dbbcad0fb99faf16bf51d0.png", "php": "55,56,70,71,72,73", "official": "https://www.phpok.com", "enable_functions": "", "count": 2320, "score": "3.7", "versions": [{"m_version": "6", "version": "2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u5546\u7528\uff0c\u81ea\u7531\u5f00\u6e90\u7684CMS", "download": "other/20220526/e3a33db58763b015a8b08d38a8a4d04a.zip", "md5": "4f53ebc57a8e79c64c5b81fb54ae9571", "size": 34192018}]}, {"id": 600801577, "type": 2, "sort": 3.5, "name": "niushopv4", "title": "Niushop\u5f00\u6e90\u5546\u57ceV4", "ps": "\u5546\u4e1a\u8fd0\u8425\u3001\u5b8c\u5168\u5f00\u6e90\u3001100%\u5c0f\u7a0b\u5e8f\u6e90\u7801\u3001\u4e8c\u6b21\u5f00\u53d1?", "version": "4.0", "author": "Niushop\u5f00\u6e90\u5546\u57ce", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20200812/e39796e6a14687d04ab1333ae5febe56.png", "php": "70,71,72,73", "official": "https://www.niushop.com.cn/", "enable_functions": "", "count": 2287, "score": "3.5", "versions": [{"m_version": "4", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5168\u65b0\u67b6\u6784\uff0c\u5b8c\u5168\u5f00\u6e90", "download": "other/20200812/ded735b0939df17439648692a990138d.zip", "md5": "7e7b9cd7823635e23cd7c7caa477f6a1", "size": 47913397}]}, {"id": 600801329, "type": 1, "sort": 5, "name": "qibosoft", "title": "\u9f50\u535aCMS", "ps": "\u57fa\u4e8ethinkphp\u7684\u514d\u8d39\u5f00\u6e90CMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?", "version": "1.06", "author": "\u9f50\u535a\u8f6f\u4ef6", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-59569-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190817/30e21e0e638accf39dc96ff74d66946c.png", "php": "55,56,70,71,72,73,74", "official": "https://x1.php168.com", "enable_functions": "", "count": 2284, "score": "5.0", "versions": [{"m_version": "1", "version": "06", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "BUG\u4fee\u590d", "download": "other/20220507/266696f8ebcbea4c0297ec550f065390.zip", "md5": "1274a67a4ae2858be1c4265ec492b090", "size": 24945351}]}, {"id": 600801578, "type": 4, "sort": 2.2, "name": "wdja_blog", "title": "WDJA\u535a\u5ba2\u7ba1\u7406\u7cfb\u7edf", "ps": "\u5b98\u7f51www.wdja.net QQ\u7fa4:122019913?", "version": "2.5", "author": "shadoweb", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-54413-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210802/a72c781d79108259b582689dcfaaf4b9.png", "php": "70,71,72,73,74,80,81", "official": "http://www.wdja.net", "enable_functions": "", "count": 2277, "score": "2.2", "versions": [{"m_version": "2", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u529f\u80fd\u4f18\u5316\uff0c\u65b0\u589e\u524d\u53f0\u65e5\u5386\u8bb0\u4e8b\u672c\u6a21\u5757", "download": "other/20220427/39533f9a18c503bd0715fcc0d138b5c9.zip", "md5": "d51e56280106ac1873963dcc2c916af4", "size": 8253168}]}, {"id": 600801672, "type": 1, "sort": 2, "name": "urlive", "title": "URLive-\u7eaf\u51c0\u76f4\u64ad", "ps": "\u805a\u5408\u70ed\u95e8\u76f4\u64ad\u5e73\u53f0\uff0c\u65e0\u5e7f\u544a\u3001\u65e0\u5f39\u5e55\u3001\u65e0\u793c\u7269\u7eaf\u51c0\u76f4\u64ad\u6d41?", "version": "1.1", "author": "\u79c0\u624d", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-64602-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210224/24d9af7c3b9e1d3fc7a538f4f7c6cbf1.png", "php": "53,54,55,56,70,71,72,73,74", "official": "https://urhost.cn", "enable_functions": "", "count": 2247, "score": "2.0", "versions": [{"m_version": "1", "version": "1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u589e\u76f4\u64ad\u5e73\u53f0\uff0c\u4f18\u5316\u66f4\u65b0\u903b\u8f91\uff0c\u4fee\u590d\u4e00\u4e9bBUG", "download": "other/20210312/285169ddbab3294293b69d2e16b8c494.zip", "md5": "9e51574aea1db98c82111cfa20aa55a2", "size": 1500539}]}, {"id": 600801635, "type": 3, "sort": 3.3, "name": "hadsky", "title": "HadSky\u8f7b\u8bba\u575b", "ps": "\u8f7b\u3001\u5feb\u3001\u7b80\u7684\u539f\u521b\u5f00\u6e90PHP\u8f7b\u8bba\u575b\u7cfb\u7edf?", "version": "7.6.3", "author": "puyuetian", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-62307-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20201221/ace466ef98d03b56496e49edd8194eae.png", "php": "52,53,54,55,56,70,71,72,73,74", "official": "https://www.hadsky.com", "enable_functions": "scandir", "count": 2225, "score": "3.3", "versions": [{"m_version": "7", "version": "6.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u8f7b\u3001\u5feb\u3001\u7b80\u7684\u539f\u521b\u5f00\u6e90PHP\u8f7b\u8bba\u575b\u7cfb\u7edf", "download": "other/20210108/662aa71363f92d0457e7b8847655d69d.zip", "md5": "b1d90038aacca09b3f9b304d6dbbfb77", "size": 3136061}]}, {"id": 600801618, "type": 1, "sort": 3.3, "name": "taokeyun", "title": "\u6dd8\u5ba2\u4e91\u6dd8\u5b9d\u5ba2\u7cfb\u7edf", "ps": "\u6dd8\u5ba2\u4e91\u6dd8\u5b9d\u5ba2-\u5728\u7ebf\u4e91\u7f16\u8bd1APP\uff0c\u5168\u9875\u9762\u53ef\u89c6\u5316DIY\u3002?", "version": "1.0.5", "author": "\u6dd8\u5ba2\u4e91", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20201217/bf1c03cb53f5949b9799bc03c38044ee.png", "php": "56,70,71,72,73", "official": "https://www.taokeyun.cn", "enable_functions": "", "count": 2167, "score": "3.3", "versions": [{"m_version": "1", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6dd8\u5ba2\u4e91\u6dd8\u5b9d\u5ba2-\u6dd8\u4eac\u62fc\u5168\u80fd\u5728\u7ebfDIY\u4e91\u7f16\u8bd1APP\uff0cQQ785976928\u3002", "download": "other/20210121/2eb31fdc6d9d006e23f92b34c7a24324.zip", "md5": "a443cb1239033432e3873de0e5c3efab", "size": 50536951}]}, {"id": 600801455, "type": 1, "sort": 3, "name": "qilenews", "title": "\u5947\u4e50\u81ea\u5a92\u4f53\u65b0\u95fb\u7ba1\u7406\u7cfb\u7edf\u514d\u8d39\u7248", "ps": "\u4e00\u6b3e\u81ea\u5a92\u4f53\u65b0\u95fb\u7ba1\u7406\u7cfb\u7edf?", "version": "v1.1.3", "author": "\u5947\u4e50\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-43786-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200209/daaa9af04da675ea267e0158e1993f6c.png", "php": "70,71,72,73", "official": "http://www.qilecms.com/?invite=WElqNXdIbWVSaEZK", "enable_functions": "", "count": 2157, "score": "3.0", "versions": [{"m_version": "v1", "version": "1.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590d\u4e0a\u671fbug", "download": "other/20200407/4546eacb20a6f288fe43dc5b1e0713e5.zip", "md5": "a175da69b5ab7ff5526f3546f131ce70", "size": 14696379}]}, {"id": 600801509, "type": 1, "sort": 4.5, "name": "omocms", "title": "OmoCms", "ps": "\u5728\u7ebf\u6559\u80b2\u4e0e\u77e5\u8bc6\u4ed8\u8d39\u6e90\u7801\u7cfb\u7edf\uff0c\u652f\u6301\u4ed8\u8d39\u97f3\u89c6\u9891\u4e13\u680fVIP\u8d2d\u4e70\u7b49?", "version": "1.4", "author": "DOXCX", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-47681-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200411/e9b37a7fc1120907cf4892f04070aa49.png", "php": "70", "official": "www.omocms.com", "enable_functions": "", "count": 2116, "score": "4.5", "versions": [{"m_version": "1", "version": "4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u586b\u5145\u9ed8\u8ba4\u6570\u636e\uff0c\u4f18\u5316\u5927\u91cf\u7ec6\u8282", "download": "other/20200418/936a7bc960f433d2f3a8369476925dc5.zip", "md5": "14d8d74da7a646f0377ba3645697861a", "size": 47021969}]}, {"id": 600801304, "type": 1, "sort": 5, "name": "Temmoku_MVC", "title": "\u5929\u76eeMVC\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf(PHP+Mysql)", "ps": "\u7b80\u5355\u6613\u7528\u514d\u8d39\u5546\u7528\uff0c\u529f\u80fd\u5b8c\u5584\u3002\u6280\u672f\u652f\u6301\u7ed9\u529b?", "version": "2.12", "author": "Temmoku MVC", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-34791-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190720/e61f3a2e905caa5f492cefff71590fb4.png", "php": "54,55,56,70,71,72,73,74,80", "official": "https://www.temmokumvc.com", "enable_functions": "", "count": 2016, "score": "5.0", "versions": [{"m_version": "2", "version": "12", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301PHP8.0", "download": "other/20210415/b2b8fb2af7961530814b564f933aa273.zip", "md5": "db006134676c08070b440d9b9d86ed84", "size": 5357989}]}, {"id": 600801486, "type": 1, "sort": 4.5, "name": "vip_card", "title": "\u597d\u5e97\u4f1a\u5458\u5361", "ps": "oem\u514d\u8d39\u5b89\u88c5\uff0c\u62e5\u6709\u5c5e\u4e8e\u81ea\u5df1\u7684\u4f1a\u5458\u5361\u7cfb\u7edf?", "version": "6.4.2.60", "author": "\u597d\u5e97\u4f1a\u5458\u5361", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-50827-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200321/ed1bcb7b3a680af2bbab9288b458e800.png", "php": "70", "official": "https://oem.yongxunw.com", "enable_functions": "", "count": 1998, "score": "4.5", "versions": [{"m_version": "6", "version": "4.2.60", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u52a0\u5165\u4f01\u4e1a\u5fae\u4fe1\u4f53\u7cfb", "download": "other/20210320/821dd4784661e38c868345896e7faeb3.zip", "md5": "f4290258a5d31d90d5be70ee6d81de14", "size": 454735}]}, {"id": 600801703, "type": 2, "sort": 4.3, "name": "leadshop", "title": "Leadshop\u5f00\u6e90\u514d\u8d39\u5546\u7528\u5546\u57ce", "ps": "Leadshop\u5f00\u6e90\u5546\u57ce,\u52a9\u529b\u4e2d\u5c0f\u4f01\u4e1a\u642d\u5efa\u79c1\u6709\u5316\u7535\u5546\u5e73\u53f0?", "version": "1.4.5", "author": "\u79be\u6210\u4e91", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=67594&highlight=leadshop", "min_image": "/api/Pluginother/get_file?fname=image/20210414/a3351d7c9222155eb65652e76709fed0.png", "php": "74", "official": "https://forum.leadshop.vip/", "enable_functions": "symlink", "count": 1986, "score": "4.3", "versions": [{"m_version": "1", "version": "4.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4f18\u5316\u82e5\u5e72\u529f\u80fd\uff1b\u4fee\u590d\u82e5\u5e72bug\uff1b", "download": "other/20211027/565b64802f6b5dca4305058d65385896.zip", "md5": "11ba3f3e683101e5a2d40ce8928d0994", "size": 48465019}]}, {"id": 600801323, "type": 1, "sort": 5, "name": "iCMS7", "title": "iCMS", "ps": "iCMS \u4e00\u6b3e\u514d\u8d39\u3001\u7b80\u6d01\u3001\u9ad8\u6548\u3001\u597d\u7528\u7684PHP\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\u3002?", "version": "v7.0.15", "author": "iCMSdev", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190814/6ca5d36ee665eefd889c3a6ffded7761.png", "php": "53,54,55,56,70,71,72,73", "official": "https://www.icmsdev.com/", "enable_functions": "", "count": 1983, "score": "5.0", "versions": [{"m_version": "v7", "version": "0.15", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "iCMS v7.0.15", "download": "other/20190827/b7efccf9dd5aa532488cb380b5b824bd.zip", "md5": "1d06be00631d514d442310e0adf0a239", "size": 8194825}]}, {"id": 600801661, "type": 1, "sort": 4.7, "name": "openbi", "title": "openbi", "ps": "\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5c06\u6570\u636e\u66f4\u53cb\u597d\u7684\u5c55\u793a\uff0cqq\u7fa4\uff1a328601229?", "version": "1.0.8", "author": "\u5317\u4eac\u683c\u80dc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://github.com/openBI-kwc/openBI", "min_image": "/api/Pluginother/get_file?fname=image/20210205/46ecccfd0979a3021aea022f77878ebe.png", "php": "72", "official": "http://www.openbi.com.cn", "enable_functions": "fileinfo,popen,putenv", "count": 1913, "score": "4.7", "versions": [{"m_version": "1", "version": "0.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "1. \u4fee\u590d\u90e8\u5206windows server \u65e0\u6cd5\u53d1\u5e03\u95ee\u9898 2. \u4fee\u590dsql\u6570\u636e\u6e90\u8bed\u53e5\u8fc7\u957f\u62a5\u9519\u95ee\u9898 3. \u4fee\u590d\u89d2\u8272\u4fee\u6539\u63a5\u53e3\u62a5\u9519\u95ee\u9898", "download": "other/20210618/30cb9f8874d21b40718fc578a5615299.zip", "md5": "83a2635253298175b2c76c3c4caf69d7", "size": 42832908}]}, {"id": 600801467, "type": 1, "sort": 5, "name": "otcms", "title": "\u7f51\u949bCMS\uff08PHP\u7248\uff09", "ps": "\u6700\u597d\u7528\u7684\u6587\u7ae0CMS\uff0c\u53ef\u642d\u5efa\u535a\u5ba2\u3001\u5a31\u4e50\u8d44\u6e90\u3001\u6559\u7a0b\u8f85\u52a9\u7b49\u7f51\u7ad9?", "version": "6.30", "author": "\u7f51\u949b\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-45115-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200316/47dcad7a9115df1960ad8c3cb3ce78e8.png", "php": "53,54,55,56,70,71,72,73", "official": "http://otcms.com", "enable_functions": "", "count": 1757, "score": "5.0", "versions": [{"m_version": "6", "version": "30", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6700\u597d\u7528\u7684\u6587\u7ae0CMS\uff0c\u53ef\u642d\u5efa\u535a\u5ba2\u3001\u5a31\u4e50\u8d44\u6e90\u3001\u6559\u7a0b\u8f85\u52a9\u7b49\u7f51\u7ad9", "download": "other/20220225/5002d02bef0364a1c0849cfddc616394.zip", "md5": "f4a26bf914ca6a93c18ee3d38d88068e", "size": 16290026}]}, {"id": 600801751, "type": 2, "sort": 5, "name": "likeshop_b2c", "title": "likeshop\u5355\u5546\u6237\u5f00\u6e90\u5546\u57ce\u7cfb\u7edf-\u4f01\u4e1a\u7248", "ps": "likeshop\u5f00\u6e90\u5546\u57ce\u7cfb\u7edf\uff0c\u4ee3\u7801\u5168\u5f00\u6e90\uff0c\u529f\u80fd\u4e30\u5bcc\uff0c\u53e3\u7891\u4e4b\u9009?", "version": "2.5.7.20210311", "author": "likeshop", "price": 0, "auth_price": 0, "home": "http://doc.likeshop.cn/likeshop_develop_v2_x/2105149", "min_image": "/api/Pluginother/get_file?fname=image/20210824/ffca1ad63dc15924e1f362156367366c.png", "php": "72,73,74", "official": "https://www.likeshop.cn", "enable_functions": "", "count": 1736, "score": "5.0", "versions": [{"m_version": "2", "version": "5.7.20210311", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "likeshop\u5f00\u6e90\u5546\u57ce\u7cfb\u7edf\uff0c\u4ee3\u7801\u5168\u5f00\u6e90\uff0c\u529f\u80fd\u4e30\u5bcc\uff0c\u53e3\u7891\u4e4b\u9009", "download": "other/20220311/a8e30ff6ada07c1cad2e2e7f41b4f4e9.zip", "md5": "3f757f67628d793bb2f9816b496f861a", "size": 91599003}]}, {"id": 600801387, "type": 1, "sort": 5, "name": "DSCMS", "title": "DSCMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf(PC+H5)", "ps": "\u4e00\u6b3e\u9002\u5408\u4f01\u4e1a\u7f51\u7ad9\u5efa\u8bbe\u7684CMS\u5efa\u7ad9\u7cfb\u7edf?", "version": "V1.4", "author": "\u5fb7\u5c1a\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=39157", "min_image": "/api/Pluginother/get_file?fname=image/20191028/c9de19972ec0977d189d6050dfccea16.png", "php": "55,56,70,71,72", "official": "http://www.csdeshang.com", "enable_functions": "", "count": 1704, "score": "5.0", "versions": [{"m_version": "V1", "version": "4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e00\u6b3e\u9002\u5408\u4f01\u4e1a\u7f51\u7ad9\u5efa\u8bbe\u7684CMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "download": "other/20191028/744cf106bb1e2352724eb202de13850a.zip", "md5": "7355eea6b521bf7907c98cf5c8cda161", "size": 16018322}]}, {"id": 600801591, "type": 1, "sort": 2.3, "name": "nxcrm", "title": "NXCRM\u5ba2\u6237\u7ba1\u7406\u7cfb\u7edf", "ps": "\u7ebf\u7d22\uff0c\u5546\u673a\uff0c\u5408\u540c\uff0c\u6536\u6b3e\uff0c\u5ba2\u6237\uff0c\u9644\u4ef6\uff0c\u8054\u7cfb\u4eba\uff0c\u8ddf\u8fdb\u7b49\u6570\u9879\u529f\u80fd?", "version": "v1.11.11", "author": "\u5b81\u590f\u5357\u76f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-54753-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200901/05c7673b66d31000305afd4852d81c04.png", "php": "72,73,74", "official": "https://www.nx.tt", "enable_functions": "", "count": 1670, "score": "2.3", "versions": [{"m_version": "v1", "version": "11.11", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590d\u7f51\u7ad9\u8bbe\u7f6e\uff0c\u4ee5\u53ca\u5176\u4ed6\u7684\u4e00\u4e9b\u5c0f\u95ee\u9898", "download": "other/20201116/b25099eb48667838bcb8fd8dfcce55f5.zip", "md5": "f375367e623c947535e2f92d07d91f10", "size": 48667958}]}, {"id": 600801733, "type": 1, "sort": 3.4, "name": "prokvm", "title": "prokvm\u5b9d\u5854\u865a\u62df\u4e3b\u673a\u9500\u552e\u7ba1\u7406\u7cfb\u7edf", "ps": "Prokvm\u4e91\u670d\u52a1\u5668\u7ba1\u7406\u7cfb\u7edf\uff0c\u96c6\u6210BT\u9500\u552e\u865a\u62df\u4e3b\u673a?", "version": "2.2.5", "author": "xmbillion", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-54451-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210617/47d23ccde7f5b0e85036815783726671.png", "php": "72", "official": "https://www.xmbillion.com/prokvm.html", "enable_functions": "", "count": 1656, "score": "3.4", "versions": [{"m_version": "2", "version": "2.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590d\u5b89\u88c5redis\u9519\u8bef\u5f15\u8d77500\u9519\u8bef", "download": "other/20220328/d34f298551597bf07f004d1e62330dbe.zip", "md5": "4aa3d4eaed24ba86a2af1505307feb00", "size": 45435810}]}, {"id": 600801692, "type": 1, "sort": 5, "name": "douphp", "title": "DouPHP\u8f7b\u91cf\u7ea7\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf", "ps": "\u8f7b\u91cf\u7ea7\u3001\u6a21\u5757\u5316\u3001\u514d\u8d39\u5f00\u6e90\u3001\u53ef\u5546\u7528?", "version": "v1.6 Release 20210324", "author": "DouPHP", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-66084-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210325/715dbfc352d52f027ea894f84d287bc2.png", "php": "53,54,55,56,70,71,72,73", "official": "https://www.douphp.com", "enable_functions": "", "count": 1616, "score": "5.0", "versions": [{"m_version": "v1", "version": "6 Release 20210324", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u8f7b\u91cf\u7ea7\u3001\u6a21\u5757\u5316\u3001\u514d\u8d39\u5f00\u6e90\u3001\u53ef\u5546\u7528", "download": "other/20210325/4abc4235e2830683cb7a5a944cdc43b1.zip", "md5": "40c2ff1f09aae22434c004d5719daa28", "size": 5736996}]}, {"id": 600801301, "type": 1, "sort": 4.3, "name": "easyiamge", "title": "\u7b80\u5355\u56fe\u5e8a", "ps": "\u652f\u6301\u591a\u6587\u4ef6\u4e0a\u4f20,\u7b80\u5355\u65e0\u6570\u636e\u5e93\u7684\u4e00\u6b3e\u56fe\u5e8a\u7a0b\u5e8f?", "version": "2.6.5", "author": "icret", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-83801-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220118/5e46a6cf46511190fb6742710028d225.png", "php": "56,70,71,72,73,74,80", "official": "https://png.cm", "enable_functions": "", "count": 1603, "score": "4.3", "versions": [{"m_version": "2", "version": "6.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u66f4\u65b0\u7248\u672c\u52302.6.5", "download": "other/20220527/509c9180bd8ccbb21f4c234bbe03e8cf.zip", "md5": "ec08ea15eef8ebc43d6311445a430a5f", "size": 3817079}]}, {"id": 600801683, "type": 2, "sort": 4.2, "name": "shopwind", "title": "ShopWind\u5f00\u6e90\u591a\u5e97\u94fa\u7535\u5546\u7cfb\u7edf", "ps": "\u57fa\u4e8eYii2\u6846\u67b6\u7684\u514d\u8d39\u5f00\u6e90B2B2C\u591a\u7528\u6237\u5546\u57ce\u7cfb\u7edf?", "version": "V3.4.2", "author": "\u5e7f\u897f\u5357\u5b81\u9886\u4f17\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-67044-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210317/1ec1a24446befc27f130834df920819e.png", "php": "70,71,72,73", "official": "https://www.shopwind.net", "enable_functions": "", "count": 1567, "score": "4.2", "versions": [{"m_version": "V3", "version": "4.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57fa\u4e8eYii2\u6846\u67b6\u7684\u514d\u8d39\u5f00\u6e90B2B2C\u591a\u7528\u6237\u5546\u57ce\u7cfb\u7edf", "download": "other/20220331/8d1463a8db3a578ede8d2ca765bcc06b.zip", "md5": "1341cca905517a4b24b2c6b9f6dacc42", "size": 44585113}]}, {"id": 600801402, "type": 1, "sort": 5, "name": "zhicms", "title": "ZhiCms", "ps": "ZhiCms\u662f\u4e00\u6b3e\u4e13\u4e1a\u7684\u503c\u5f97\u4e70\u7cfb\u7edf\u3002?", "version": "4.0", "author": "\u4e91\u7aef\u7535\u5546", "price": 0, "auth_price": 0, "home": "https://www.zhicms.vip", "min_image": "/api/Pluginother/get_file?fname=image/20200401/c710fad2cedaed1bf890ebde5d505769.png", "php": "53,54,55,56,70,71,72", "official": "http://www.zhicms.vip", "enable_functions": "", "count": 1524, "score": "5.0", "versions": [{"m_version": "4", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "ZhiCms\u662f\u4e00\u6b3e\u4e13\u4e1a\u7684\u503c\u5f97\u4e70\u7cfb\u7edf\u3002", "download": "other/20201204/4988c8a4c8bcfdc42601272806a104f3.zip", "md5": "cd44b54efeaa2b7be432053709d38ef4", "size": 31406769}]}, {"id": 600801480, "type": 2, "sort": 3, "name": "jpshop", "title": "jpshop\u793e\u533a\u56e2\u8d2d-\u5fae\u5546\u57ce\u76f4\u64ad\u5c0f\u7a0b\u5e8f\u7cfb\u7edf", "ps": "\u5b89\u5168\uff0c\u5f00\u6e90\uff0c\u514d\u8d39\uff0c\u793e\u533a\u56e2\u8d2d\u5fae\u5546\u57ce\u5c0f\u7a0b\u5e8f?", "version": "1.4.50", "author": "\u8fde\u4e91\u6e2f\u5377\u6ce1\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-46093-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200318/aa5ae40cc921e60ff8af7fc0b3134390.png", "php": "72", "official": "http://www.juanpao.com", "enable_functions": "", "count": 1521, "score": "3.0", "versions": [{"m_version": "1", "version": "4.50", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "jpshop", "download": "other/20200616/fd5a902cb9bb86a22f9a80944c189614.zip", "md5": "224d3b1f1d9f3dfad1b08e8796db4b73", "size": 40044271}]}, {"id": 600801462, "type": 1, "sort": 4, "name": "qile_guarantee_free", "title": "\u5947\u4e50\u4e2d\u4ecb\u62c5\u4fdd\u4ea4\u6613\u7cfb\u7edf", "ps": "\u4e2d\u4ecb\u62c5\u4fdd\u7a0b\u5e8f,\u4e13\u6ce8\u4e8e\u7f51\u7ad9/\u57df\u540d/\u81ea\u5a92\u4f53/\u5c0f\u7a0b\u5e8f/\u6e90\u7801\u7b49\u62c5\u4fdd?", "version": "1.3.0", "author": "\u5947\u4e50\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-44205-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200214/aa3f654a9eea85c934b2edd946a376b0.png", "php": "70\uff0c71\uff0c72", "official": "http://www.qilecms.com/?invite=WElqNXdIbWVSaEZK", "enable_functions": "", "count": 1449, "score": "4.0", "versions": [{"m_version": "1", "version": "3.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u3010\u66f4\u65b0\u3011\u540e\u53f0\u5e7f\u544a\u4e0a\u4f20\u63a5\u53e3\u9519\u8bef \u3010\u66f4\u65b0\u3011\u5e7b\u706f\u7247\u65e0\u6cd5\u5207\u6362\u7684\u95ee\u9898", "download": "other/20220317/a99b0256277dfe30f084712ae579e1b9.zip", "md5": "773ed956e8e7c45bab04d3b0a561ce36", "size": 18060311}]}, {"id": 600801706, "type": 0, "sort": 4.4, "name": "yibaiyun_scrm", "title": "\u58f9\u4f70\u4e91SCRM", "ps": "50+\u5ba2\u6237\u8425\u9500\u7ba1\u7406\u529f\u80fd\uff0c\u514d\u8d39\u7684\u65b0\u4e00\u4ee3\u793e\u4ea4\u5ba2\u6237\u7ba1\u7406\u7cfb\u7edf?", "version": "2.0.5", "author": "\u6d1b\u9633\u58f9\u4f70\u7f51\u7edc", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68014-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210420/14a7aee555e0c57de4aa4e08229b5aeb.png", "php": "56,70,71,72,73", "official": "http://www.ybyun.wang/", "enable_functions": "", "count": 1439, "score": "4.4", "versions": [{"m_version": "2", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "50+\u5ba2\u6237\u8425\u9500\u7ba1\u7406\u529f\u80fd\uff0c\u514d\u8d39\u7684\u65b0\u4e00\u4ee3\u793e\u4ea4\u5ba2\u6237\u7ba1\u7406\u7cfb\u7edf", "download": "other/20210720/cc60cb1924f51aebfc5b53b4c7a876aa.zip", "md5": "2d3937efa25ba0927edbe771d3068012", "size": 10962597}]}, {"id": 600801697, "type": 1, "sort": 4.4, "name": "yzncms", "title": "YznCMS", "ps": "\u57fa\u4e8ethinkphp5.1\u548cLayui2.6\u7684\u540e\u53f0\u7cfb\u7edf?", "version": "1.04", "author": "\u5fa1\u5b85\u7537\u5de5\u4f5c\u5ba4", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-66787-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210406/1020ab61e7afb7d4674ce30374c4f192.png", "php": "70,71,72,73,74,8.0", "official": "https://gitee.com/ken678/YZNCMS", "enable_functions": "", "count": 1379, "score": "4.4", "versions": [{"m_version": "1", "version": "04", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7cfb\u7edf\u67b6\u6784\u4f18\u5316\u5927\u91cf\u7ec6\u8282", "download": "other/20220304/c97b71df854fe0440b4295a7862c1673.zip", "md5": "8757cdaa5375a7f6ab1545bca5e084af", "size": 26061747}]}, {"id": 600801601, "type": 5, "sort": 3.7, "name": "qvmhcn", "title": "\u4f01\u5fae\u9b54\u76d2", "ps": "\u4f01\u5fae\u9b54\u76d2\u4e13\u6ce8\u4e8e\u4f01\u4e1a\u5fae\u4fe1\u7b2c\u4e09\u65b9\u6e90\u7801\u79c1\u6709\u5316\u90e8\u7f72?", "version": "4.0", "author": "DOXCX", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-57174-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200929/c254af3b0ff298ca6c9bff9aa5556883.png", "php": "70,71", "official": "http://www.qvmh.cn", "enable_functions": "", "count": 1373, "score": "3.7", "versions": [{"m_version": "4", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4f01\u5fae\u9b54\u76d2\u514d\u8d39\u7248V4\u53d1\u5e03\uff0c\u529f\u80fd\u66f4\u5f3a\u5927", "download": "other/20201223/3b4ef65906d90d208f89b8d57b0e8c9c.zip", "md5": "5232059ab725fbd3a5251dc1e1e76fdd", "size": 13272074}]}, {"id": 600801289, "type": 6, "sort": 5, "name": "codeigniter", "title": "codeigniter", "ps": "\u5c0f\u5de7\u4f46\u529f\u80fd\u5f3a\u5927\u7684 PHP \u6846\u67b6?", "version": "3.1.10", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20190705/78882b423c4a38f7eb048db1aea60255.png", "php": "53,54,55,56,70,71,72", "official": "https://codeigniter.org.cn", "enable_functions": "", "count": 1297, "score": "5.0", "versions": [{"m_version": "3", "version": "1.10", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "CI-3.1.10", "download": "other/20190705/2709474d3bcca0796205e51425fd1edc.zip", "md5": "2a25747926f00dacff9fb59619eaacb7", "size": 2741644}]}, {"id": 600801547, "type": 5, "sort": 5, "name": "yq_20200606", "title": "\u9002\u7528\u4e8e\u95e8\u5e97\u9884\u7ea6\u7684\u5c0f\u7a0b\u5e8f\u7ba1\u7406\u7cfb\u7edf", "ps": "\u9002\u7528\u4e8e\u95e8\u5e97\u9884\u7ea6\u7684\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u7ba1\u7406\u7cfb\u7edf?", "version": "1.0.5", "author": "\u706b\u7ea2\u6a58\u5b50", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-50543-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200606/8a215601cbcea371580f4b857d065150.png", "php": "72,73", "official": "https://download.csdn.net/download/hj960511/18419841", "enable_functions": "", "count": 1252, "score": "5.0", "versions": [{"m_version": "1", "version": "0.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6587\u6863\u53ca\u83dc\u5355\u4fe1\u606f\u7684\u66f4\u65b0", "download": "other/20220501/07eea08b29c78ef3871ab48f5da08152.zip", "md5": "402c0cde5135fbc25ca5e0877cfedc6f", "size": 23936393}]}, {"id": 600801696, "type": 2, "sort": 4.3, "name": "hasog", "title": "HaSog\u5e7b\u795e\u5546\u57ce", "ps": "\u4e00\u4e2a\u9ad8\u6269\u5c55\u6027\u4e14\u5341\u5206\u8f7b\u4fbf\u7684\u5f00\u6e90\u5206\u9500\u5546\u57ce\u7cfb\u7edf?", "version": "V1.0.0-2021061501", "author": "\u5e7b\u795e\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-66572-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210402/06f17235693de36deda8d60561b8c6db.png", "php": "71,72,73,80", "official": "https://cloud.hasog.com", "enable_functions": "", "count": 1247, "score": "4.3", "versions": [{"m_version": "V1", "version": "0.0-2021061501", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "V1.0.0-2021061501 \u7248\u672c\u53d1\u5e03\uff0c\u65b0\u589e\u94f6\u884c\u5361\u3001\u627e\u56de\u5bc6\u7801\u3001SaaS\u6a21\u5f0f\uff0c\u4fee\u590d\u4e86\u4e00\u4e9bBUG\uff0c\u4f18\u5316\u4e86\u540e\u53f0\u7684\u4f53\u9a8c", "download": "other/20210615/721393cce91034f650519ebfe06fe378.zip", "md5": "9111565426f2ce5e503dea4584ed8e74", "size": 19259285}]}, {"id": 600801745, "type": 5, "sort": 4.6, "name": "youmiactivitys", "title": "\u6d3b\u52a8\u5b9d", "ps": "\u514d\u8d39\u5546\u7528\uff0c\u65e0\u9650\u5546\u5bb6\u5165\u9a7b\uff0c100+\u8425\u9500\u4e92\u52a8\u6a21\u677f?", "version": "2.0.8", "author": "\u6e29\u5dde\u6538\u7c73\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-73651-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210806/41423d8d37e3eaab4913496024c89914.png", "php": "71,72,73", "official": "https://www.umiyun.net", "enable_functions": "opcache,ioncube", "count": 1176, "score": "4.6", "versions": [{"m_version": "2", "version": "0.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u5546\u7528\uff0c\u65e0\u9650\u5546\u5bb6\u5165\u9a7b\uff0c100+\u8425\u9500\u4e92\u52a8\u6a21\u677f", "download": "other/20211102/1f002dfe3549bd301ae6a88be71562b2.zip", "md5": "ab8983ae18b13543efb1e44d1c5e9335", "size": 41579124}]}, {"id": 600801736, "type": 5, "sort": 5, "name": "hzweizhi_order", "title": "\u65b0\u5ba2\u6765\u667a\u6167\u9910\u996e\u7cfb\u7edf", "ps": "\u514d\u8d39\u5546\u7528.\u5fae\u4fe1\u652f\u4ed8\u5b9d\u6296\u97f3\u5934\u6761\u767e\u5ea6QQAPP.\u626b\u7801\u70b9\u9910\u5916\u5356?", "version": "3.0.01", "author": "\u83cf\u6cfd\u5fae\u667a\u4fe1\u606f\u6280\u672f\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-72136-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210712/b62ebe5f69d7f8ee3411826c0b8b3477.png", "php": "72", "official": "https://www.wx186.cn/", "enable_functions": "putenv,fsockopen,proc_open", "count": 1152, "score": "5.0", "versions": [{"m_version": "3", "version": "0.01", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590dsql\u5b89\u88c5\u517c\u5bb9\u6027", "download": "other/20220414/9a17cc52f2f095cd710dee4c18a2341a.zip", "md5": "59e921b709a6f5a43c2b6dac972e34aa", "size": 19848760}]}, {"id": 600801515, "type": 1, "sort": 0, "name": "masterlab", "title": "Masterlab\u793e\u533a\u7248", "ps": "\u57fa\u4e8e\u4e8b\u9879\u9a71\u52a8\u548c\u654f\u6377\u5f00\u53d1\u7684\u9879\u76ee\u7ba1\u7406\u5de5\u5177?", "version": "3.1.9", "author": "\u6df1\u5733\u5e02\u654f\u6377\u667a\u76db\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=50486&highlight=Masterlab", "min_image": "/api/Pluginother/get_file?fname=image/20201125/a7b39c8013d2c42f2a5c932f69f0e1c7.png", "php": "73,74", "official": "http://www.masterlab.vip/", "enable_functions": "system,exec", "count": 1134, "score": 0, "versions": [{"m_version": "3", "version": "1.9", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "Masterlab\u793e\u533a\u72483.1.9\u4e00\u952e\u90e8\u7f72", "download": "other/20220104/61951703e67244b4f6fa7566dbcbcbf1.zip", "md5": "833956b62e600bef359885b42fe08bf6", "size": 42564271}]}, {"id": 600801719, "type": 1, "sort": 5, "name": "yzmcms", "title": "YzmCMS\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS", "ps": "\u57fa\u4e8ePHP+MYSQL\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS\u7cfb\u7edf?", "version": "V6.5", "author": "yzmcms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68513-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210509/5ef0d9c1a53c3a91fea05096fc1d8f66.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.yzmcms.com", "enable_functions": "", "count": 1120, "score": "5.0", "versions": [{"m_version": "V6", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57fa\u4e8ePHP+MySQL\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS\u7cfb\u7edf", "download": "other/20220506/37df593ada8ec483de5558652e78fb9e.zip", "md5": "117b48d1000ae8f57b8dca4c5e4fc398", "size": 4099775}]}, {"id": 600801675, "type": 1, "sort": 5, "name": "url_shortener", "title": "\u672a\u77e5\u7684\u77ed\u94fe", "ps": "\u7531\u4e00\u6761\u54b8\u9c7c\u5f00\u53d1\u7684\u4e00\u6b3e\u7b80\u6d01\u7684\u77ed\u94fe\u63a5\u7a0b\u5e8f?", "version": "1.1.2", "author": "\u5434\u5148\u68ee", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20210227/3b0037cebee28d79f36bbdd13d021bd4.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.wunote.cn", "enable_functions": "", "count": 1108, "score": "5.0", "versions": [{"m_version": "1", "version": "1.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u9996\u6b21\u5728\u5b9d\u5854\u63d0\u4ea4", "download": "other/20210228/381ad3f1c82a710254cc5d7a74463882.zip", "md5": "32e0af2b492e88570aeb8f341559ce7e", "size": 107462}]}, {"id": 600801558, "type": 1, "sort": 5, "name": "thinksaas", "title": "ThinkSAAS\u5f00\u6e90\u793e\u533a", "ps": "\u7b80\u5355\u53ef\u6269\u5c55\u7684php\u5f00\u6e90\u793e\u533a\u7cfb\u7edf?", "version": "3.59", "author": "ThinkSAAS", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-51785-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200707/0c34bf083c2969becbc583f08510fc65.png", "php": "55,56,70,71,72,73", "official": "https://www.thinksaas.cn", "enable_functions": "", "count": 1078, "score": "5.0", "versions": [{"m_version": "3", "version": "59", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4f18\u5316\u7cfb\u7edf\u6d88\u606f\uff0c\u5347\u7ea7\u4eba\u673a\u9a8c\u8bc1", "download": "other/20220314/e0a9e87300e3ae718620444628a74558.zip", "md5": "b8c56bf6e1f58c6e0a7e23ed14d7aeba", "size": 5744991}]}, {"id": 600801657, "type": 1, "sort": 5, "name": "wi9theme", "title": "\u5fae\u4e5dwp\u8d44\u6e90\u4e0b\u8f7d\u4e3b\u9898", "ps": "\u5fae\u4e5d\u4e3b\u9898\u662f\u4e00\u6b3e\u76ee\u524d\u514d\u8d39\u7684wordpress\u8d44\u6e90\u4e0b\u8f7d\u4e3b\u9898?", "version": "1.9", "author": "\u5fae\u4e5d\u751f\u6001", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-63653-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210201/c16bf742ccd715a8588db21a12b07f3c.png", "php": "56,70,71,72,73,74", "official": "https://www.wi9.cc/", "enable_functions": "", "count": 1032, "score": "5.0", "versions": [{"m_version": "1", "version": "9", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u589e\u52a0\u5fae\u4fe1\u5c0f\u7a0b\u5e8f,\u96c6\u6210\u652f\u4ed8,\u5728\u7ebf\u66f4\u65b0,\u81ea\u5e26\u4f1a\u5458\u7cfb\u7edf,\u53cb\u94fe\u81ea\u52a8\u5ba1\u6838\u7cfb\u7edf", "download": "other/20210518/ea9448227ebca7a27acd33806ed48e68.zip", "md5": "73b9a42d28d986d252788078944ee1b4", "size": 24367758}]}, {"id": 600801656, "type": 1, "sort": 4, "name": "wellcms", "title": "WellCMS", "ps": "\u5f00\u6e90\u3001\u503e\u5411\u79fb\u52a8\u7aef\u3001\u8f7b\u91cf\u7ea7\u3001\u5177\u6709\u8d85\u5feb\u53cd\u5e94\u80fd\u529b\u7684\u4ebf\u7ea7\u9ad8\u8d1f\u8f7dCMS?", "version": "2.2.0", "author": "wellcms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=63634", "min_image": "/api/Pluginother/get_file?fname=image/20210201/056863324539723935c8acd411547bf1.png", "php": "56,70,71,72,73,74,80", "official": "http://www.wellcms.cn/", "enable_functions": "", "count": 979, "score": "4.0", "versions": [{"m_version": "2", "version": "2.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u5f00\u6e90\uff0c\u81ea\u9002\u5e94\uff0cSEO\u6548\u679c\u597d\uff0c\u627f\u8f7d\u4ebf\u7ea7\u6587\u7ae0\uff0c\u6253\u5f00\u901f\u5ea6\u98de\u5feb", "download": "other/20220107/e2948fc371297af9f83e815e847d91ab.zip", "md5": "0be750596db08b34634e740452748e3c", "size": 1226805}]}, {"id": 600801541, "type": 5, "sort": 3, "name": "wxxcx_kf_gjchf_66", "title": "\u9002\u7528\u4e8e\u5c0f\u7a0b\u5e8f\u5ba2\u670d\u81ea\u52a8\u56de\u590d\u7684\u7ba1\u7406\u7cfb\u7edf", "ps": "\u514d\u8d39\u7684\u8fd0\u7528\u4e8e\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u5ba2\u670d\u5173\u952e\u8bcd\u8bbe\u7f6e\u81ea\u52a8\u56de\u590d\u7684\u7ba1\u7406\u7cfb\u7edf?", "version": "1.0.3", "author": "\u706b\u7ea2\u6a58\u5b50", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-49704-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200521/9368533c9cf0d2fce43869b3f04f784a.png", "php": "72", "official": "https://download.csdn.net/download/hj960511/18420001", "enable_functions": "", "count": 969, "score": "3.0", "versions": [{"m_version": "1", "version": "0.3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u66f4\u65b0\u4e86\u83dc\u5355\u548c\u6587\u6863\u4fe1\u606f", "download": "other/20220501/a62e7f23f38856f910c742d3f73f8862.zip", "md5": "5bdce3fbaefc432d14ebf8c8f9b77a45", "size": 12751550}]}, {"id": 600801473, "type": 1, "sort": 5, "name": "lcms", "title": "\u76d8\u4f01LCMS PHP\u5f00\u53d1\u6846\u67b6", "ps": "\u53efSaaS\u5efa\u7ad9\u3001\u4e00\u952e\u5f00\u901a3000+\u57ce\u5e02\u5206\u7ad9\u7684\u5f00\u6e90\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf?", "version": "2022.05161135", "author": "\u8fd0\u57ce\u5e02\u76d8\u77f3\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://support.qq.com/products/136192", "min_image": "/api/Pluginother/get_file?fname=image/20200307/86dbe823fdc9acbbef9c014bcbf5d83b.png", "php": "72,73,74,80,81", "official": "https://www.panshi18.cn/", "enable_functions": "", "count": 956, "score": "5.0", "versions": [{"m_version": "2022", "version": "05161135", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4f18\u5316\u5b89\u88c5\u6269\u5c55\u68c0\u6d4b", "download": "other/20220516/46d45704e261f7ee237fdc96c9ba57cd.zip", "md5": "a78301b6b2d7dffddf01599a59ab23fe", "size": 8264575}]}, {"id": 600801708, "type": 1, "sort": 5, "name": "wendasns", "title": "Wendasns\u5f00\u6e90\u95ee\u7b54\u793e\u533a\u7cfb\u7edf", "ps": "\u5f00\u6e90\u5185\u5bb9\u4ed8\u8d39\u95ee\u7b54\u793e\u533a\u3001seo\u3001URL\u76ee\u5f55\u5316\u3001\u5c0f\u7a0b\u5e8f\u7684\u95ee\u7b54\u7cfb\u7edf?", "version": "V2.0.2", "author": "wendasns", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-67643-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210422/6ca78b3c46bd2d3255b4226ecc8e0727.png", "php": "72,73,74,80", "official": "https://www.wendasns.com", "enable_functions": "", "count": 917, "score": "5.0", "versions": [{"m_version": "V2", "version": "0.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "V2.0.2 \u4fee\u590d\u5df2\u77e5BUG", "download": "other/20210702/964693bf33b0550ddfdee319da69a40c.zip", "md5": "44cf354b23bfec921758d9d75270416a", "size": 8491338}]}, {"id": 600801615, "type": 2, "sort": 0, "name": "dbshopv3", "title": "\u5168\u65b0DBShop\u5546\u57ce\u7cfb\u7edf", "ps": "\u5320\u5fc3\u4e4b\u4f5c\uff0c\u4e00\u5982\u65e2\u5f80\u4e13\u4e1a\u7684\u4f01\u4e1a\u7ea7\u5546\u57ce\u7cfb\u7edf?", "version": "V3.1 Release 220419", "author": "\u9759\u9759\u7684\u98ce", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;tid=5099", "min_image": "/api/Pluginother/get_file?fname=image/20201029/21c44bdb207758acc2a470d3bf665e02.png", "php": "72,73,74,80", "official": "https://www.dbshop.net/", "enable_functions": "", "count": 914, "score": 0, "versions": [{"m_version": "V3", "version": "1 Release 220419", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u529f\u80fd\u66f4\u65b0\uff0cbug\u4fee\u590d", "download": "other/20220421/aee6e514d492875289a22b9bba4c5083.zip", "md5": "5f138ef0f0a1949f3552bb62860eabf4", "size": 48875488}]}, {"id": 600801761, "type": 1, "sort": 5, "name": "modstart", "title": "ModStartCMS", "ps": "\u57fa\u4e8eLaravel\u7684\u6a21\u5757\u5316\u5efa\u7ad9\u7cfb\u7edf\uff0c\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?", "version": "v4.0.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76287-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220324/ee7b19647869c0ede79345f723cdfcf1.png", "php": "56,70", "official": "https://modstart.com/", "enable_functions": "shell_exec,proc_open,putenv", "count": 889, "score": "5.0", "versions": [{"m_version": "v4", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "CMS\u529f\u80fd\u589e\u5f3a\uff0c\u7528\u6237\u7ba1\u7406\u4f18\u5316", "download": "other/20220525/d7a6ce4e14a7f9624d45e48d0009c01b.zip", "md5": "d689bbb90c452b013518656ca5f2af69", "size": 31163263}]}, {"id": 600801771, "type": 6, "sort": 5, "name": "kuerp", "title": "\u9177\u67da\u6613\u6c5b\u8fdb\u9500\u5b58\u5f00\u6e90\u514d\u8d39\u7248", "ps": "\u9177\u67da\u6613\u6c5b\u8fdb\u9500\u5b58\u5f00\u6e90\u514d\u8d39\u7248\uff0c\u867d\u7136\u662f\u514d\u8d39\u7248\u672c\u4f46\u662f\u529f\u80fd\u5168\u9762\uff01?", "version": "1.0.4", "author": "\u56db\u5ddd\u4f18\u72d7\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=80395", "min_image": "/api/Pluginother/get_file?fname=image/20211212/1a01f82264ca159d35575a77f5b00ddd.png", "php": "56,70,71,72", "official": "www.scygkj.com", "enable_functions": "", "count": 877, "score": "5.0", "versions": [{"m_version": "1", "version": "0.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "", "download": "other/20211224/7c2ebcf051fb4c931d73c90d6ac14677.zip", "md5": "8fd134030b2fdd4488d116eca885d816", "size": 46047589}]}, {"id": 600801643, "type": 1, "sort": 5, "name": "classcms", "title": "ClassCMS", "ps": "\u4e00\u6b3e\u7b80\u5355\u3001\u7075\u6d3b\u3001\u5b89\u5168\u3001\u6613\u4e8e\u62d3\u5c55\u7684\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?", "version": "3.0", "author": "ClassCMS", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20201229/d1737d3b7ff2eeef1ae1018a5be1ca25.png", "php": "52,53,54,55,56,70,71,72,73,74,80", "official": "https://classcms.com/", "enable_functions": "", "count": 851, "score": "5.0", "versions": [{"m_version": "3", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u89e3\u51b3\u4e86\u4e00\u4e9b\u5df2\u77e5\u95ee\u9898", "download": "other/20220519/b2a7d54dfad59b4066b245114ebf490d.zip", "md5": "45277ac0ff228df8b72cffa564b6730c", "size": 789834}]}, {"id": 600801593, "type": 1, "sort": 0, "name": "wdja_course", "title": "WDJA\u6559\u7a0b\u53d1\u5e03\u7cfb\u7edf", "ps": "\u3010\u5f00\u6e90,\u53ef\u514d\u8d39\u5546\u7528\u3011\u5b98\u7f51www.wdja.net?", "version": "1.5", "author": "shadoweb", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-56237-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210802/8a88ebf91135fb92055162ee0ffb60b8.png", "php": "70,71,72,73,74", "official": "http://www.wdja.net", "enable_functions": "", "count": 849, "score": 0, "versions": [{"m_version": "1", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7b2c\u4e00\u7248", "download": "other/20200915/d388c115ecb99b8217ec9157b514de62.zip", "md5": "a0f356a6378b31b2dd60439253d56681", "size": 4342748}]}, {"id": 600801756, "type": 1, "sort": 5, "name": "yqnxt", "title": "\u4e00\u8d77\u725b\u77e5\u8bc6\u4ed8\u8d39\u7cfb\u7edf\uff08\u5728\u7ebf\u6559\u80b2\u57f9\u8bad\u5e73\u53f0\uff09", "ps": "\u77e5\u8bc6\u4ed8\u8d39\u7cfb\u7edf\uff0c\u5b98\u65b9\u5e94\u8be5\u5e02\u573a\u63d0\u4f9b\u5927\u91cf\u6a21\u677f\u3001\u63d2\u4ef6\uff0c\u62d3\u5c55\u6027\u6781\u9ad8?", "version": "1.5", "author": "\u70df\u53f0\u5e02\u8c6a\u5ba2\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75718-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210907/4b73ad42638e601b24ed52d12e8b9107.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.yqnxt.com/", "enable_functions": "", "count": 848, "score": "5.0", "versions": [{"m_version": "1", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u89c6\u9891\u8bfe\u7a0b\u3001\u97f3\u9891\u8bfe\u7a0b\u3001\u56fe\u6587\u8bfe\u7a0b\uff0c\u9898\u5e93\u7cfb\u7edf\uff0c\u6587\u7ae0\u7cfb\u7edf\u7b49\u6a21\u5757", "download": "other/20210914/c14e99be4b1c543f04f004495c8d5f46.zip", "md5": "fb99c99e7e66bc8049cd33a11427fe5c", "size": 42155224}]}, {"id": 600801755, "type": 2, "sort": 3.5, "name": "renren_shop", "title": "\u4eba\u4eba\u5546\u57ce", "ps": "\u4e13\u4e1a\u5206\u9500\u5546\u57ce\u7cfb\u7edf\uff0c\u4e00\u7ad9\u5f0f\u7535\u5546\u8425\u9500\u751f\u6001\u7cfb\u7edf\uff0c\u5168\u6e20\u9053\u89e3\u51b3\u65b9\u6848?", "version": "5.4.4", "author": "\u6613\u8054\u4e92\u52a8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75340-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210902/6a5526a81d451f96e13c4cce274476f1.png", "php": "71,72,73", "official": "https://www.rrsc.cn", "enable_functions": "proc_open,proc_close,proc_get_status,pcntl_signal,pcntl_signal_dispatch,proc_get_status", "count": 833, "score": "3.5", "versions": [{"m_version": "5", "version": "4.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "5.4.4 \u5546\u57ce\u5b89\u88c5\u5305", "download": "other/20210902/44aee683f6cbeac4d3ad59df668ca536.zip", "md5": "dfb68dfe2b99b5e1849050f5cf16988a", "size": 37102076}]}, {"id": 600801525, "type": 1, "sort": 5, "name": "rageframe2", "title": "RageFrame2", "ps": "\u4e00\u4e2a\u57fa\u4e8eYii2\u9ad8\u7ea7\u6846\u67b6\u7684\u5feb\u901f\u5f00\u53d1\u5e94\u7528\u5f15\u64ce?", "version": "2.6.43", "author": "RageFrame", "price": 0, "auth_price": 0, "home": "https://github.com/jianyan74/rageframe2/issues", "min_image": "/api/Pluginother/get_file?fname=image/20200430/eb324cda96232f4476ee91cb77b52886.png", "php": "72,73,74", "official": "http://www.rageframe.com", "enable_functions": "", "count": 814, "score": "5.0", "versions": [{"m_version": "2", "version": "6.43", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7b80\u5355\u7248\uff0c\u5b8c\u6574\u7248\u9700\u8981\u624b\u52a8\u6267\u884c\u4e0b composer install\uff0c\u9700\u8981 mysql5.7 \u4ee5\u4e0a\u7248\u672c", "download": "other/20200717/6580f85154afdde70f66ea5235e3d1aa.zip", "md5": "80fe0bc694efce86b85d955040e75e76", "size": 49247154}]}, {"id": 600801725, "type": 1, "sort": 5, "name": "rpcms", "title": "rpcms\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u4e00\u6b3e\u8f7b\u91cf\u578bphp\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u5c0f\u578b\u3001\u8f7b\u91cf\uff0c\u529f\u80fd\u4e30\u5bcc\uff0c\u6269\u5c55\u6027\u5f3a?", "version": "V2.5.9", "author": "rpcms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68632-1-3.html", "min_image": "/api/Pluginother/get_file?fname=image/20210521/d39c0986f1a9e6faf9be2b06106407a0.png", "php": "56,70,71,72,73,74,80", "official": "http://www.rpcms.cn", "enable_functions": "", "count": 795, "score": "5.0", "versions": [{"m_version": "V2", "version": "5.9", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "", "download": "other/20220526/157bd9d58122f1ac6c032f41254517ab.zip", "md5": "22913664ba5a7008a92937fd273c4ba0", "size": 3577069}]}, {"id": 600801737, "type": 1, "sort": 5, "name": "yunucms", "title": "\u4e91\u4f18CMS", "ps": "\u4e00\u952e\u5f00\u901a3000+\u57ce\u5e02\u5206\u7ad9\uff0c\u5feb\u901f\u642d\u5efa\u591a\u5408\u4e00\u4f01\u4e1a\u5b98\u7f51?", "version": "2.2.6", "author": "\u9547\u6c5f\u5e02\u4e91\u4f18\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;amp;amp;tid=72177&amp;amp;amp;page=1&amp;amp;amp;extra=#pid275392", "min_image": "/api/Pluginother/get_file?fname=image/20210713/f03cd2becbb1f9c2b7823b4e1282a1f4.png", "php": "56,57,70,71,72,73,74", "official": "http://www.yunucms.com/", "enable_functions": "", "count": 766, "score": "5.0", "versions": [{"m_version": "2", "version": "2.6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e00\u952e\u5f00\u901a3000+\u57ce\u5e02\u5206\u7ad9\uff0c\u5feb\u901f\u642d\u5efa\u591a\u5408\u4e00\u4f01\u4e1a\u5b98\u7f51", "download": "other/20220121/6c5823c41cb0cb3f4884bb0567fa246e.zip", "md5": "85da25d35a721497f9cf4a2d77d142b9", "size": 40965650}]}, {"id": 600801667, "type": 3, "sort": 3.5, "name": "smsot", "title": "\u9b54\u7f07", "ps": "\u9b54\u7f07Smsot2.12\uff0c\u77e5\u8bc6\u4ed8\u8d39\u3001\u793e\u7fa4\u7a7a\u95f4\u3001\u4e13\u6ce8\u4e8e\u793e\u7fa4\u8fd0\u8425?", "version": "2.12", "author": "\u9b54\u7f07Smsot", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-64289-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210219/86226f651f40c37051e7533ef9c55b16.png", "php": "53,54,55,56,70,71,72,73,74", "official": "https://www.smsot.com", "enable_functions": "", "count": 743, "score": "3.5", "versions": [{"m_version": "2", "version": "12", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u589e\u591a\u9879\u793e\u7fa4\u529f\u80fd\uff0c\u4f18\u5316\u7528\u6237\u4f53\u9a8c", "download": "other/20220518/74362664042251dc4dbabf15555bb83c.zip", "md5": "6105fa440255ffeb6585263bdb6b494a", "size": 11688273}]}, {"id": 600801738, "type": 1, "sort": 5, "name": "vitphp", "title": "vitphp", "ps": "\u57fa\u4e8ethinkphp6+layui\u5f00\u53d1\u7684\u4e00\u6b3e\u591a\u5e94\u7528\u7ba1\u7406\u7684\u6846\u67b6?", "version": "1.3.5", "author": "\u5f00\u733f\u670d\u52a1", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-72373-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210716/27fb412072e856892a21d4042c819a9a.png", "php": "72,73,74", "official": "http://www.vitphp.cn", "enable_functions": "", "count": 741, "score": "5.0", "versions": [{"m_version": "1", "version": "3.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 2, "version_msg": "\u4fee\u590d\u95ee\u9898", "download": "other/20220413/b671862370574d55c99b2174a1ccea19.zip", "md5": "f026e644b42b68493077f06a7d2f7c53", "size": 4966234}]}, {"id": 600801551, "type": 1, "sort": 4.8, "name": "zhyframe", "title": "\u631a\u6167\u4e91", "ps": "\u79fb\u52a8\u5e94\u7528\uff08\u591a\u7aef\u5408\u4e00\uff09\u8f6f\u4ef6\u7ba1\u7406\u7cfb\u7edf\uff0c\u7fa4\u53f7\uff1a1127938508?", "version": "4.4.4", "author": "\u631a\u6167\u4e91", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-51390-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200622/7d36cd83100e87cbbb69cd57411a4093.png", "php": "71", "official": "https://s.zhyxm.com/zhyframe", "enable_functions": "", "count": 720, "score": "4.8", "versions": [{"m_version": "4", "version": "4.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u591a\u7aef\u5408\u4e00\u5e94\u7528\u7ba1\u7406\u7cfb\u7edf\uff0c\u53ef\u4e0b\u8f7d\u514d\u8d39\u5e94\u7528\u5b89\u88c5\uff0cqq\u7fa4\uff1a1127938508", "download": "other/20220409/bbeed575cac3b61bb4902322178fc269.zip", "md5": "541680c82c119f4236d1df5f1e970ad3", "size": 49692472}]}, {"id": 600801766, "type": 1, "sort": 4, "name": "jjyun_bt", "title": "\u8282\u8282\u4e91-\u5b9d\u5854\u4e3b\u673a\u9762\u677f\u8d44\u4ea7\u7ba1\u7406\u7cfb\u7edf", "ps": "\u6279\u91cf\u5efa\u7ad9\uff0c\u6743\u9650\u5206\u914d\uff0c\u7ad9\u70b9\u7edf\u4e00\u7ba1\u7406\uff0c\u4e00\u952e\u767b\u5f55\u9762\u677f\u540e\u53f0\u7b49\u529f\u80fd?", "version": "1.0.19", "author": "\u5e7f\u4e1c\u5ba2\u6ee1\u591a\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-79418-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20211114/efe97642b087cade5b0016e4f47f9d38.png", "php": "71", "official": "http://bbs.jjyun.cc/thread-11565-1-1.html", "enable_functions": "", "count": 679, "score": "4.0", "versions": [{"m_version": "1", "version": "0.19", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u589e\u52a0 \u589e\u52a0\u652f\u4ed8\u5b9d-\u4eba\u8138\u5b9e\u540d\u8ba4\u8bc1\u3001\u652f\u4ed8\u5b9d\u5f53\u9762\u4ed8\u3001\u66f4\u65b0\u767b\u5f55/\u6ce8\u518c\u5e94\u7528\u3001\u4f18\u5316\u90ae\u7bb1\u767b\u5f55\u7b49", "download": "other/20220104/802f1287ec4d16008a4879a19f91ef82.zip", "md5": "b68738bc7ac3faadadebb9ed107adb7d", "size": 21028411}]}, {"id": 600801762, "type": 2, "sort": 5, "name": "jiecheng_", "title": "\u8282\u7a0b\u5546\u57ce", "ps": "saas\u5546\u57ce\u65e0\u9650\u5236\u591a\u5f00,\u5b9a\u5236\u5546\u54c1\uff0c\u5206\u9500\uff0c\u5206\u88f9\u4e00\u7ad9\u5f0f\u8425\u9500\u7cfb\u7edf?", "version": "2.1.4", "author": "\u8282\u7a0b\u5546\u57ce", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76577-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210923/dbe3964888604b1f1f65273bdb5841ce.png", "php": "73", "official": "https://www.jc362.com/", "enable_functions": "proc_open,exec", "count": 676, "score": "5.0", "versions": [{"m_version": "2", "version": "1.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "saas\u5546\u57ce\u65e0\u9650\u5236\u591a\u5f00,\u5b9a\u5236\u5546\u54c1\uff0c\u5206\u9500\uff0c\u5206\u5305\u88f9\u4e00\u7ad9\u5f0f\u8425\u9500\u7cfb\u7edf", "download": "other/20220518/cc1395a1744eb44b8c3eb05d335e2e7a.zip", "md5": "bcc579e67f4a9f139f30d242f37cfafc", "size": 56790985}]}, {"id": 600801684, "type": 1, "sort": 5, "name": "public", "title": "\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90", "ps": "\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90 - SpeedIDC\u7cfb\u7edf\u63d0\u4f9b\u4e00\u952e\u90e8\u7f72?", "version": "7.1.2", "author": "\u5218\u5c11", "price": 0, "auth_price": 0, "home": "https://www.speed-idc.com", "min_image": "/api/Pluginother/get_file?fname=image/20210317/ad23cdd1dcfd9b6c57eed78ffbbcd698.png", "php": "70", "official": "https://www.speed-idc.com", "enable_functions": "putenv", "count": 668, "score": "5.0", "versions": [{"m_version": "7", "version": "1.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u589e\uff1a\u7248\u672c\u68c0\u6d4b\u3001\u5728\u7ebf\u66f4\u65b0\u3001\u6e90\u52a0\u5bc6\u7b49\u5b89\u5168\u95ee\u9898\u3002\u4fee\u590d\uff1a\u5df2\u77e5BUG", "download": "other/20220515/f75ef6b673352fad99c48ea4f3a6caa6.zip", "md5": "08c1c99261f77b8194e1a5f370538c6e", "size": 21457382}]}, {"id": 600801759, "type": 5, "sort": 4, "name": "sxkj_offline", "title": "\u8054\u901aCPS", "ps": "\u6700\u65b0\u7a0b\u5e8f\u66f4\u65b0\u548c\u552e\u540e\u4ea4\u6d41QQ\u7fa4\uff1a634511156?", "version": "1.1", "author": "\u968f\u5fc3\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.xqzbk.top/jishu/3134.html", "min_image": "/api/Pluginother/get_file?fname=image/20210913/a712f82b35be1652bb61f91fe12e9ca3.png", "php": "70,71,72,73", "official": "http://www.sxsxjzw.cn", "enable_functions": "", "count": 643, "score": "4.0", "versions": [{"m_version": "1", "version": "1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u66f4\u65b0\u5b89\u88c5\u7a0b\u5e8f", "download": "other/20210914/b2151c2366ea927ca307ad304fff32e2.zip", "md5": "30cf814a7168698c1c768b7fc2f0ca21", "size": 24892798}]}, {"id": 600801668, "type": 1, "sort": 1.9, "name": "rauth", "title": "\u5c0f\u67d3\u6388\u6743\u7cfb\u7edf", "ps": "\u5df2\u4e0b\u67b6?", "version": "1.03", "author": "\u5929\u7a7a\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs", "min_image": "/api/Pluginother/get_file?fname=image/20210225/a23c3441afa2fbe600fc145c28dc4b4e.png", "php": "\u5df2\u4e0b\u67b6", "official": "https://www.dyewl.com/", "enable_functions": "", "count": 617, "score": "1.9", "versions": [{"m_version": "1", "version": "03", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5c0f\u67d3\u6388\u6743\u7cfb\u7edf\u4e3a\u5f00\u53d1\u8005\u7684\u7cfb\u7edf\u63d0\u4f9b\u8fdc\u7a0b\u6388\u6743\uff0cqq\u4ea4\u6d41\u7fa4\uff1a1038558770", "download": "other/20210228/ffe1f3b96e3a1ea1206282396ec77888.zip", "md5": "aae24c28e666e028dff6fabd3013f1a2", "size": 3578984}]}, {"id": 600801754, "type": 2, "sort": 4, "name": "strongshop", "title": "StrongShop", "ps": "Laravel \u5f00\u53d1\uff0c\u8de8\u5883\u5916\u8d38\u5546\u57ce\uff0c\u591a\u8bed\u8a00\uff0c\u591a\u8d27\u5e01?", "version": "v1.0", "author": "OpenStrong", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75357-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210901/be2e51afff91e32d756957ffa42d76ea.png", "php": "72,73,74", "official": "http://www.strongshop.cn", "enable_functions": "symlink", "count": 616, "score": "4.0", "versions": [{"m_version": "v1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v1.0 \u4e3b\u8981\u529f\u80fd\uff1a- \u8d2d\u7269\u8f66 - \u6743\u9650\u7ba1\u7406 - \u4ea7\u54c1\u7ba1\u7406 - \u5206\u7c7b\u7ba1\u7406 - \u4f1a\u5458\u7ba1\u7406 - \u8ba2\u5355\u7ba1\u7406 - \u6587\u7ae0\u7ba1\u7406 - \u7f51\u7ad9\u8bbe\u7f6e", "download": "other/20210928/50234a33ad347c9d46772527979b467f.zip", "md5": "7f1a078b1cf5355cb17e27c8cf7c39e0", "size": 23637018}]}, {"id": 600801421, "type": 1, "sort": 1, "name": "wooolab_sites", "title": "\u5594\u5662\u5b9e\u9a8c\u5ba4\u591a\u7ad9\u70b9\u53d1\u5e03\u5de5\u5177", "ps": "\u5594\u5662\u591a\u7ad9\u70b9\u53d1\u5e03\u5de5\u5177\uff0c\u652f\u6301PHPCMS\uff0c WORDPRESS\u7b49?", "version": "1.0.1", "author": "wooolab", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=41372", "min_image": "/api/Pluginother/get_file?fname=image/20191206/ce09a6f673bac59f5754844d886c2bc3.png", "php": "71,71,73", "official": "https://www.wooolab.com/", "enable_functions": "", "count": 608, "score": "1.0", "versions": [{"m_version": "1", "version": "0.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "1.0.1", "download": "other/20191211/744396c181aed9da5a6a9707a5fe55a6.zip", "md5": "1707cedf6bf441d1a5bfed0fdb93da1a", "size": 26211379}]}, {"id": 600801334, "type": 1, "sort": 5, "name": "laysns", "title": "LaySNS", "ps": "\u4e00\u6b3e\u96c6\u5185\u5bb9\u7ba1\u7406\u4e0e\u793e\u533a\u4e92\u52a8\u4e3a\u4e00\u4f53\u7684\u7efc\u5408\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf?", "version": "3.3", "author": "\u7c7b\u68ee\u79d1\u6280", "price": 0, "auth_price": 0, "home": "http://bbs.laysns.cn/thread/3053.html", "min_image": "/api/Pluginother/get_file?fname=image/20190821/5fc78ae80f683aed147bd10c0a33ddfb.png", "php": "72,73,74,80", "official": "http://www.laysns.cn", "enable_functions": "", "count": 591, "score": "5.0", "versions": [{"m_version": "3", "version": "3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57fa\u4e8eThinkPHP6\u5f00\u53d1\u7684\u652f\u6301\u5927\u6570\u636e\u3001\u9ad8\u5e76\u53d1\u7684\uff0c\u8f7b\u91cf\u7ea7\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "download": "other/20210608/fd21ddaa055b01d9e9627ae61d6b6a1c.zip", "md5": "146e1f417585c6fe8192acf934ea9219", "size": 15500056}]}, {"id": 600801671, "type": 1, "sort": 5, "name": "idcadmin", "title": "\u670d\u52a1\u5668\u5907\u5fd8\u7ba1\u7406\u7cfb\u7edf", "ps": "\u7528\u4e8e\u8bb0\u5f55\u641c\u7d22\u67e5\u8be2\u670d\u52a1\u5668\u4fe1\u606f.?", "version": "1.0", "author": "gacjie", "price": 0, "auth_price": 0, "home": "https://www.gacjie.cn/post-5.html", "min_image": "/api/Pluginother/get_file?fname=image/20210223/af9a069a1d6c3fd9afcbbb9279a053c7.png", "php": "56,70,71,72,73,74", "official": "https://www.gacjie.cn/post-5.html", "enable_functions": "", "count": 550, "score": "5.0", "versions": [{"m_version": "1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7528\u4e8e\u8bb0\u5f55\u641c\u7d22\u67e5\u8be2\u670d\u52a1\u5668\u4fe1\u606f.", "download": "other/20210223/a468b0a2cf2e65165e2e42447be9d79d.zip", "md5": "30461750ce20377458ee47da75594e8f", "size": 19811538}]}, {"id": 600801768, "type": 1, "sort": 5, "name": "siyucms", "title": "SIYUCMS \u5feb\u901f\u5f00\u53d1\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "ThinkPHP6.0 + AdminLTE \u5f00\u53d1\u7684\u5efa\u7ad9\u7cfb\u7edf?", "version": "6.1.7", "author": "SIYUCMS", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=80950", "min_image": "/api/Pluginother/get_file?fname=image/20211207/abed2f58321ee744d70003a504fed997.png", "php": "72,73,74,80", "official": "https://siyucms.com", "enable_functions": "", "count": 535, "score": "5.0", "versions": [{"m_version": "6", "version": "1.7", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "", "download": "other/20220526/f6ba6f1a4a167d2f5a4df06008650914.zip", "md5": "bc6ed0ef8f95e3dd161c01ac9f6c66ba", "size": 26520566}]}, {"id": 600801555, "type": 1, "sort": 3, "name": "pcfcms", "title": "pcfcms", "ps": "\u57fa\u4e8eTP6.0+\u6846\u67b6\u4e3a\u6838\u5fc3\u5f00\u53d1\u7684\u7b80\u5355+\u901a\u7528\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?", "version": "v3.0.0", "author": "pcfcms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-51654-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210824/5deb8846ab0af334addf3f038367f305.png", "php": "71,72,73", "official": "http://www.pcfcms.com", "enable_functions": "", "count": 451, "score": "3.0", "versions": [{"m_version": "v3", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "pcfcms\u5df2\u7ecf\u5347\u7ea7\u52303.0\uff0c\u4e4b\u524d\u7684\u7248\u672c\u4e0d\u518d\u7ef4\u62a4\u3002", "download": "other/20210824/e6b527407f2f238ef99e0819f499f4e2.zip", "md5": "1109f371bd695d9da292b0136f4e35be", "size": 13577422}]}, {"id": 600801760, "type": 1, "sort": 5, "name": "funadmin", "title": "funadmin", "ps": "\u57fa\u4e8eTP6\u548clayui\u7684\u6a21\u5757\u5316\u5f00\u53d1\u7cfb\u7edf?", "version": "2.5.0", "author": "funadmin", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75870-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210914/71c03477ff335c2235634c0d21fc753b.png", "php": "74,80,81", "official": "https://www.funadmin.com/", "enable_functions": "putenv", "count": 430, "score": "5.0", "versions": [{"m_version": "2", "version": "5.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "TP6+Layui \u6781\u901f\u5f00\u53d1\u6846\u67b6", "download": "other/20220601/4eca9466db0338cbe751c6496ed5dda5.zip", "md5": "8b0307d2baad6f87bd5f7e8d6b49a8be", "size": 22285658}]}, {"id": 600801728, "type": 6, "sort": 5, "name": "tpflow", "title": "PHP\u5f00\u6e90\u5de5\u4f5c\u6d41\u5f15\u64ce-tpflow", "ps": "PHP\u5f00\u6e90\u5de5\u4f5c\u6d41\u5f15\u64ce?", "version": "5.0.7", "author": "Guoguo", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-69423-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210526/4f79f971957c0bebd95d37ffb83e3bc5.png", "php": "70,71,72,73,80", "official": "http://tpflow.cojz8.com", "enable_functions": "", "count": 426, "score": "5.0", "versions": [{"m_version": "5", "version": "0.7", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u591a\u7248\u672c\u4f18\u5316", "download": "other/20210526/e3097d6a7b477e79b30b7ad8a23bd108.zip", "md5": "9e59abad890af7ac9469a6cddc8a3073", "size": 2809350}]}, {"id": 600801741, "type": 1, "sort": 0, "name": "proadm", "title": "Proadm\u5f00\u6e90\u8d22\u52a1\u7cfb\u7edf", "ps": "\u57fa\u4e8efs\u5f00\u53d1\u7684\u4e1a\u52a1\u8d22\u52a1\u7cfb\u7edf\u652f\u6301\u4e8c\u5f00\u9ed8\u8ba4\u96c6\u6210nokvm?", "version": "1.0", "author": "xmbillion", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=72943", "min_image": "/api/Pluginother/get_file?fname=image/20210724/97d5cb20745e953d295fcb58ee7b531c.png", "php": "71", "official": "www.xmbillion.com", "enable_functions": "putenv", "count": 388, "score": 0, "versions": [{"m_version": "1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5f00\u6e90\u4e91\u8d22\u52a1\u7cfb\u7edf\u9ed8\u8ba4\u96c6\u6210nokvm\uff0c\u5168\u5f00\u6e90\uff0c\u652f\u6301\u4e8c\u5f00\u548c\u5b9a\u5236", "download": "other/20210726/0f1819e650a0c1fd7b8849259ee56b90.zip", "md5": "94231fc551a61f4381f8eebf66f20c86", "size": 33961204}]}, {"id": 600801788, "type": 1, "sort": 5, "name": "rrzcms", "title": "\u4eba\u4eba\u7ad9CMS", "ps": "\u4eba\u4eba\u7ad9CMS\u662f\u57fa\u4e8eTP6.0\u5f00\u53d1\u7684\u4f01\u4e1a\u7f51\u7ad9\u5efa\u7ad9\u7cfb\u7edf?", "version": "1.3.8", "author": "\u4eba\u4eba\u7ad9CMS", "price": 0, "auth_price": 0, "home": "https://www.rrzcms.com/newsinfo/5129.html", "min_image": "/api/Pluginother/get_file?fname=image/20220308/2eaf519a50013bc6004e457167bb7399.png", "php": "71,72,73,74,80,81", "official": "http://www.rrzcms.com", "enable_functions": "", "count": 375, "score": "5.0", "versions": [{"m_version": "1", "version": "3.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4eba\u4eba\u7ad91.3.8\u7248\u672c", "download": "other/20220308/17437a0f6709833976b954e55a1b4495.zip", "md5": "79f83a572625f2dd2ddac815a437adf8", "size": 17840995}]}, {"id": 600801782, "type": 1, "sort": 0, "name": "idccms", "title": "\u7f51\u949bIDC\u4e91\u7ba1\u7406\u7cfb\u7edf", "ps": "\u57df\u540d\u7a7a\u95f4\u670d\u52a1\u5668\u4e3b\u63a7\u7b49\u4ee3\u7406\u6a21\u5757\uff0c\u652f\u6301\u661f\u5916\u3001\u666f\u5b89\u3001\u521b\u68a6\u7b49\u63a5\u53e3?", "version": "1.15", "author": "\u7f51\u949b\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-84635-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220205/e9b72d81eb8774e745e81b5a1df30143.png", "php": "53,54,55,56,70,71,72,73", "official": "http://idccms.com/", "enable_functions": "", "count": 358, "score": 0, "versions": [{"m_version": "1", "version": "15", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57df\u540d\u7a7a\u95f4\u670d\u52a1\u5668\u4e3b\u63a7\u7b49\u4ee3\u7406\u6a21\u5757\uff0c\u652f\u6301\u661f\u5916\u3001\u666f\u5b89\u3001\u521b\u68a6\u7b49\u63a5\u53e3", "download": "other/20220312/04c475a2d9b6292d8677b9d73d0ca7d2.zip", "md5": "4d260820fada1e3aa1464cb7abfce42d", "size": 8314431}]}, {"id": 600801791, "type": 4, "sort": 0, "name": "blog", "title": "\u9b54\u4f17\u535a\u5ba2\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u4e00\u4e2a\u6709\u8bbe\u8ba1\u611f\u7684\u535a\u5ba2\u7cfb\u7edf?", "version": "v4.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-78335-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/be556dbe2b64050d7df9723e18bfc600.png", "php": "56,70", "official": "https://www.tecmz.com/product/blog", "enable_functions": "shell_exec,proc_open,putenv", "count": 297, "score": 0, "versions": [{"m_version": "v4", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u529f\u80fd\u5347\u7ea7\uff0c\u7cfb\u7edf\u4e8b\u4ef6\u589e\u5f3a", "download": "other/20220325/54cb362e216c50c50875fb835249e2d5.zip", "md5": "ffa0dbc6abd53ca52167f8f9239d2be4", "size": 17932977}]}, {"id": 600801780, "type": 1, "sort": 5, "name": "chalide", "title": "\u67e5\u7acb\u5f97\u4e07\u80fd\u641c", "ps": "\u7f16\u7a0b\u8fd0\u7ef4\u5fc5\u5907\u901a\u7528\u5df2\u6709\u8868\u4e07\u80fd\u641cMysql\u5e26\u540e\u53f0?", "version": "V1.0", "author": "\u67e5\u7acb\u5f97", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-84040-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220126/29c7fe8719aa17106ed20a325aebd621.png", "php": "54,55,56,70,71,72,73", "official": "http://www.chalide.com", "enable_functions": "", "count": 258, "score": "5.0", "versions": [{"m_version": "V1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7f16\u7a0b\u8fd0\u7ef4\u5fc5\u5907\u901a\u7528\u5df2\u6709\u8868\u4e07\u80fd\u641cMysql\u5e26\u540e\u53f0", "download": "other/20220128/d0755c444abb04c73112a39139a9749c.zip", "md5": "6f05d312154e86810d331dc1a85de528", "size": 23304}]}, {"id": 600801783, "type": 5, "sort": 5, "name": "dt_free", "title": "\u968f\u5fc3\u5730\u63a8", "ps": "\u968f\u5fc3\u79d1\u6280\u5730\u63a8\u7cfb\u7edf?", "version": "1.0", "author": "\u968f\u5fc3\u79d1\u6280", "price": 0, "auth_price": 0, "home": "http://www.sxsxjzw.com/index.html", "min_image": "/api/Pluginother/get_file?fname=image/20220217/998e1b1d3b8d5f34c10032315e64e747.png", "php": "56,70,71,72,73", "official": "http://www.sxsxjzw.com/index.html", "enable_functions": "", "count": 258, "score": "5.0", "versions": [{"m_version": "1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u968f\u5fc3\u5730\u63a8\u65b0\u7248\u53d1\u5e03\uff01", "download": "other/20220217/79a1f7932954dc6342da92c7e9126d99.zip", "md5": "2e500c21f80522b7149fde83bca277e8", "size": 25571955}]}, {"id": 600801786, "type": 6, "sort": 5, "name": "moran_iapp", "title": "\u9ed8\u7136iApp\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf", "ps": "\u57fa\u4e8ethinkphp5.1, \u5b89\u88c5\u65b9\u4fbf\u6613\u4e0a\u624b.?", "version": "5.4", "author": "\u5c0f\u6ee11221", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=86264", "min_image": "/api/Pluginother/get_file?fname=image/20220228/43e0cd138ef1abce7ca73bcadd74964c.png", "php": "56,70,71,72,73,74", "official": "http://moranblog.cn/", "enable_functions": "", "count": 234, "score": "5.0", "versions": [{"m_version": "5", "version": "4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "Issue\uff0c\u5410\u69fd\uff0c\u5efa\u8bae\u7b49 \u8bf7\u52a0\u7fa4\uff1a219348005", "download": "other/20220402/77bec37cf460d310e606085f60a62773.zip", "md5": "a5ef366c22b92fb01e6d65b8881f8a33", "size": 12261425}]}, {"id": 600801774, "type": 2, "sort": 0, "name": "shop", "title": "\u82b8\u4f17\u5546\u57ce\u667a\u6167\u5546\u4e1a\u7cfb\u7edf\u4f01\u4e1a\u7248", "ps": "\u516c\u4f17\u53f7/H5/\u5c0f\u7a0b\u5e8f\u540c\u6b65\u5206\u9500\u5546\u57ce\uff0c100+\u8425\u9500\u6a21\u5757?", "version": "2.4.1", "author": "\u82b8\u4f17\u79d1\u6280", "price": 6800, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-43962-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220107/7479733ab3d995bfa832c5dffa486195.png", "php": "72", "official": "", "enable_functions": "putenv", "count": 233, "score": 0, "versions": [{"m_version": "2", "version": "4.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u4e00\u952e\u90e8\u7f72--\u914d\u7f6ehttps--\u66f4\u65b0\u540e\u53f0--\u542f\u52a8\u961f\u5217!", "download": "other/20220107/428c966884e366ce3d3c4caeffff1ff1.zip", "md5": "8293d8aba5f92fb881a923ee21bdd0a5", "size": 374536687}]}, {"id": 600801775, "type": 2, "sort": 0, "name": "yd_tc_plus", "title": "\u58f9\u5ea6\u540c\u57ce\u65b0\u96f6\u552e\u7cfb\u7edf", "ps": "\u58f9\u5ea6\u540c\u57ce\u65b0\u96f6\u552e\u7cfb\u7edf?", "version": "2.0.71", "author": "\u58f9\u5ea6\u540c\u57ce", "price": 800, "auth_price": 0, "home": "https://tc.fewrrjw.top/", "min_image": "/api/Pluginother/get_file?fname=image/20220107/ed311072e7630c0b669e06ea1690f942.png", "php": "56,71,72", "official": "", "enable_functions": "", "count": 220, "score": 0, "versions": [{"m_version": "2", "version": "0.71", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u7248\u53d1\u5e03", "download": "other/20220107/975c5a9ddcfe64e62a6ed780f6f306c3.zip", "md5": "f7d94c0424acb3eee7ef2743854e36b7", "size": 47737698}]}, {"id": 600801789, "type": 1, "sort": 5, "name": "modstart_laravel9", "title": "ModStartCMS Laravel 9.0\u7248", "ps": "\u6a21\u5757\u5316\u5efa\u7ad9\u7cfb\u7edf?", "version": "v4.0.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76287-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220324/75e6c2751f28cb8c33c1a4f3b38c1861.png", "php": "80,81", "official": "https://modstart.com/", "enable_functions": "shell_exec,proc_open,putenv", "count": 200, "score": "5.0", "versions": [{"m_version": "v4", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "CMS\u529f\u80fd\u589e\u5f3a\uff0c\u7528\u6237\u7ba1\u7406\u4f18\u5316", "download": "other/20220525/aa3443dada333a68ba8d83a48f224814.zip", "md5": "061b2fc098599b2ecd36ed5f542e0d33", "size": 31143657}]}, {"id": 600801779, "type": 2, "sort": 4.3, "name": "hezeweizh_wuye", "title": "\u83cf\u6cfd\u5fae\u667a\u667a\u6167\u7269\u4e1a\u7ba1\u7406\u7cfb\u7edf", "ps": "\u4e3b\u8981\u5305\u62ec\u5728\u7ebf\u62a5\u4fee,\u7269\u4e1a\u8d39\u7f34\u7eb3,\u5728\u7ebf\u6295\u8bc9,\u624b\u673a\u6284\u8868\u7b49\u529f\u80fd.?", "version": "1.1.0", "author": "\u83cf\u6cfd\u5fae\u667a\u4fe1\u606f\u6280\u672f\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "wy.wx186.cn", "min_image": "/api/Pluginother/get_file?fname=image/20220127/e31ec60b9d2564a3d519112b2d48dde0.png", "php": "72", "official": "", "enable_functions": "putenv, proc_open,popen", "count": 192, "score": "4.3", "versions": [{"m_version": "1", "version": "1.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u589e\u52a0\u667a\u80fd\u8bbe\u5907\u652f\u6301", "download": "other/20220406/b74774e49b5d2dde495a4f06be918139.zip", "md5": "a7602c2eb9a905af5cf75bfa974ff07c", "size": 13010118}]}, {"id": 600801797, "type": 4, "sort": 0, "name": "mzdoc", "title": "\u9b54\u4f17\u6587\u6863\u7ba1\u7406\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u652f\u6301Markdown\u3001\u56fe\u8868\u3001\u8111\u56fe\u3001\u5bcc\u6587\u672c\u7684\u6587\u6863\u7ba1\u7406\u7cfb\u7edf?", "version": "v4.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-78002-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/bda6a435821bb0c6f835827b78b5ee2d.png", "php": "56,70", "official": "https://www.tecmz.com/product/doc", "enable_functions": "shell_exec,proc_open,putenv", "count": 178, "score": 0, "versions": [{"m_version": "v4", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5927\u5347\u7ea7\uff0c\u7cfb\u7edf\u6027\u80fd\u4f18\u5316", "download": "other/20220325/75d3d0277015670f7bb5a23b3b1bb403.zip", "md5": "11c7dbaf1ee380bcd3cbcaf0bc29803c", "size": 25013981}]}, {"id": 600801785, "type": 2, "sort": 5, "name": "cxhost", "title": "\u6668\u66e6\u4e91Host\u5206\u9500\u7cfb\u7edf", "ps": "\u4f18\u79c0\u7684\u4e3b\u673a\u63a5\u53e3\u5206\u9500\u7cfb\u7edf?", "version": "220205-1.", "author": "\u6668\u66e6", "price": 0, "auth_price": 0, "home": "http://auth.chenxiweb1.cn/notice.php", "min_image": "/api/Pluginother/get_file?fname=image/20220225/c2f06555eeefa604d76a2d0dd140ca9a.png", "php": "73", "official": "", "enable_functions": "", "count": 164, "score": "5.0", "versions": [{"m_version": "220205-1", "version": "", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5b89\u5168\u6027\u4fee\u590d", "download": "other/20220226/1c220e7249d3f432ce1ba6d3d1b06ae3.zip", "md5": "d5c35af1de7c574de99aeb112d10a32e", "size": 2900850}]}, {"id": 600801792, "type": 1, "sort": 5, "name": "tiku", "title": "\u9b54\u4f17\u9898\u5e93\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u878d\u5408\u5728\u7ebf\u9898\u5e93\u548c\u5728\u7ebf\u8003\u8bd5?", "version": "v6.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-81986-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/993ee418a617ba0e337f54e92e744f1a.png", "php": "56,70", "official": "https://www.tecmz.com/product/tiku", "enable_functions": "shell_exec,proc_open,putenv", "count": 145, "score": "5.0", "versions": [{"m_version": "v6", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u8003\u8bd5\u754c\u9762\u4f18\u5316\uff0c\u540e\u53f0\u529f\u80fd\u5347\u7ea7", "download": "other/20220325/6911bcd7f3ab2295eedd02df1409b0fb.zip", "md5": "6bdb43a928e04071dca53f7f42a3ec91", "size": 21336022}]}, {"id": 600801801, "type": 6, "sort": 5, "name": "openblock", "title": "OpenBlock", "ps": "\u56fe\u5f62\u5316\u7f16\u7a0b\u8bed\u8a00\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u548c\u9e3f\u8499\u7b49\u73af\u5883\u3002?", "version": "1.01", "author": "\u5510\u5948\u5c18", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=89210&page=1&extra=#pid361633", "min_image": "/api/Pluginother/get_file?fname=image/20220408/76d527eb464f4295d69630d2b574a15a.png", "php": "53,54,55,56,70,71,72,73", "official": "https://gitee.com/openblock", "enable_functions": "", "count": 138, "score": "5.0", "versions": [{"m_version": "1", "version": "01", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6dfb\u52a0\u4e0a\u4f20\u5a92\u4f53\u8d44\u6e90\u529f\u80fd", "download": "other/20220428/a86ec70320784030ff96738d9c125314.zip", "md5": "c9f95466d4ef067916df8ca3e8843b6f", "size": 8377459}]}, {"id": 600801800, "type": 3, "sort": 0, "name": "wenda", "title": "\u9b54\u4f17\u95ee\u7b54\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u8f7b\u91cf\u3001\u7b80\u5355\u3001\u9ad8\u53ef\u7528\u7684\u95ee\u7b54\u7cfb\u7edf?", "version": "v1.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-81310-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220406/6ed3af00a0f93f07c6be275060f3fc1e.png", "php": "56,70", "official": "https://www.tecmz.com/product/wenda", "enable_functions": "shell_exec,proc_open,putenv", "count": 136, "score": 0, "versions": [{"m_version": "v1", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5347\u7ea7\uff0c\u56fe\u7247\u7c98\u8d34\u4e0a\u4f20", "download": "other/20220406/4583e3c3cdc93b34fa5420b496f39dc8.zip", "md5": "417903b07402fb56fc95ee86581668d6", "size": 18381680}]}, {"id": 600801721, "type": 1, "sort": 5, "name": "hlframework_", "title": "HLFramework \u54c8\u6797\u6846\u67b6\u7cfb\u7edf", "ps": "\u5f00\u6e90SaaS\u5fae\u670d\u52a1\u96c6\u7fa4\u5f0f\u6846\u67b6 \u95e8\u5e97\u6536\u94f6\u4f1a\u5458 \u4f01\u5fae \u805a\u5408\u652f\u4ed8?", "version": "1.0.4", "author": "\u54c8\u6797\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68834-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20211030/3370aa4a99bf6f34b29b180d06341b05.png", "php": "74", "official": "https://www.halin.net", "enable_functions": "", "count": 134, "score": "5.0", "versions": [{"m_version": "1", "version": "0.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u5f00\u6e90\u5fae\u670d\u52a1\u96c6\u7fa4\u5f0f\u5e94\u7528,\u4e13\u4e1a\u4f1a\u5458\u7ba1\u7406\u8425\u9500 \u95e8\u5e97\u6536\u94f6 \u4f01\u4e1a\u5fae\u4fe1SCRM \u6570\u5b57\u652f\u4ed8\u7b49", "download": "other/20220404/9f9fd4e64745175d778ccc1de3608735.zip", "md5": "9a3dbb1ae751e6523835ec2b88c83697", "size": 40666}]}, {"id": 600801810, "type": 1, "sort": 5, "name": "hkcms", "title": "HkCms\u5f00\u6e90\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf - \u514d\u6388\u6743\u3001\u6c38\u4e45\u5546\u7528", "ps": "\u5f00\u6e90\u514d\u6388\u6743\u3001\u6c38\u4e45\u5546\u7528\u3001\u9ad8\u6027\u80fd\u3001\u7b80\u5355\u6613\u7528\u3001\u65b9\u4fbf\u4e8c\u5f00\u7684CMS\u7cfb\u7edf?", "version": "v2.1.220504", "author": "HkCms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-92422-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220518/f883fcb5b7f579f08456dc6373da1678.png", "php": "72,73,74,80,81", "official": "http://www.hkcms.cn", "enable_functions": "chmod", "count": 118, "score": "5.0", "versions": [{"m_version": "v2", "version": "1.220504", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5f00\u6e90\u514d\u6388\u6743\u3001\u6c38\u4e45\u5546\u7528\u3001\u9ad8\u6027\u80fd\u3001\u7b80\u5355\u6613\u7528\u3001\u65b9\u4fbf\u4e8c\u5f00\u7684CMS\u7cfb\u7edf", "download": "other/20220518/c0229685f67295d125a0bf28709aa622.zip", "md5": "0caeddbb87499aac3dc49d577b2a642e", "size": 9288921}]}, {"id": 600801802, "type": 1, "sort": 0, "name": "corp", "title": "\u9b54\u4f17\u4f01\u4e1a\u5b98\u7f51\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u5e2e\u52a9\u4f01\u4e1a\u5b8c\u7f8e\u5c55\u793a\u81ea\u5df1\u7684\u5f62\u8c61?", "version": "v4.7.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-79171-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220415/129b771a8d36aee10d94f676f16b2ad3.png", "php": "56,70", "official": "https://www.tecmz.com/product/corp", "enable_functions": "shell_exec,proc_open,putenv", "count": 85, "score": 0, "versions": [{"m_version": "v4", "version": "7.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5347\u7ea7\uff0c\u5bcc\u6587\u672c\u56fe\u7247\u7c98\u8d34\u4e0a\u4f20", "download": "other/20220415/1126c9921940276158488ebf229c5d37.zip", "md5": "e33f38bbde261b32ebd1a33e333f1973", "size": 18165973}]}, {"id": 600801793, "type": 2, "sort": 0, "name": "mzshop", "title": "\u9b54\u4f17\u5546\u57ce\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u7b80\u7ea6\u4e0d\u7b80\u5355\u7684\u5728\u7ebf\u5546\u57ce\u7cfb\u7edf?", "version": "v5.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76523-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/a75a8c55b1f5f295d7fb3aab9d058c2a.png", "php": "56,70", "official": "https://www.tecmz.com/product/shop", "enable_functions": "shell_exec,proc_open,putenv", "count": 71, "score": 0, "versions": [{"m_version": "v5", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u4f18\u5316\u5347\u7ea7\uff0c\u652f\u6301\u65b0\u7248\u652f\u4ed8\u5b9d", "download": "other/20220325/1743f86371246cb1ddbf85747c6062ae.zip", "md5": "61a75489fee0a7013647576364fb2e80", "size": 23959480}]}, {"id": 600801808, "type": 1, "sort": 5, "name": "sokingcms", "title": "\u641c\u5ba2CMS", "ps": "\u591a\u57ce\u5e02\u4f01\u4e1a\u5206\u7ad9\u7ba1\u7406\u7cfb\u7edf\uff0c\u4e00\u952e\u751f\u6210300\u591a\u4e2a\u57ce\u5e02?", "version": "1.2", "author": "\u641c\u5ba2CMS", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-90812-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220428/46a40143460c0ee9091b3eebfaa01f44.png", "php": "71,72,73", "official": "www.sokingcms.com", "enable_functions": "", "count": 61, "score": "5.0", "versions": [{"m_version": "1", "version": "2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u589e\u52a0\u7528\u6237\u4f53\u9a8c\u65f6\u957f\uff0c\u4f18\u5316\u90e8\u5206\u6807\u7b7e\u8c03\u7528", "download": "other/20220524/b2b24958046ad576b7e269311f90b07f.zip", "md5": "53ad8bf2e6bad18b27b79b64b6fd16a8", "size": 52690855}]}, {"id": 600801790, "type": 1, "sort": 0, "name": "mzwenku", "title": "\u9b54\u4f17\u6587\u5e93\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u4e3a\u60a8\u63d0\u4f9b\u4e13\u4e1a\u7684\u6587\u5e93\u7cfb\u7edf\u89e3\u51b3\u65b9\u6848?", "version": "v2.7.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-84771-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/dba195c785fdd94136bdd870f79ef5a9.png", "php": "56,70", "official": "https://www.tecmz.com/product/mzwenku", "enable_functions": "shell_exec,proc_open,putenv", "count": 58, "score": 0, "versions": [{"m_version": "v2", "version": "7.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5c0f\u7a0b\u5e8f\u7aef\u529f\u80fd\u4e0a\u7ebf\uff0c\u6587\u6863\u8f6c\u6362\u4f18\u5316", "download": "other/20220329/6185bd281b6ba68dbbe5c7788f9d3c61.zip", "md5": "80e3246863149b1703ff214e06eb5502", "size": 21081067}]}, {"id": 600801794, "type": 1, "sort": 0, "name": "parttime", "title": "\u9b54\u4f17\u4eba\u624d\u62db\u8058\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u591a\u57ce\u5e02\u4e3a\u5546\u5bb6\u548c\u517c\u804c\u8005\u7684\u63d0\u4f9b\u7cbe\u51c6\u5bf9\u63a5\u5e73\u53f0?", "version": "v4.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-74873-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/734e37cf3d23997d2549fef3522d183f.png", "php": "56,70", "official": "https://www.tecmz.com/product/parttime", "enable_functions": "shell_exec,proc_open,putenv", "count": 46, "score": 0, "versions": [{"m_version": "v4", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5347\u7ea7\uff0c\u7f16\u8f91\u5668\u652f\u6301\u56fe\u7247\u7c98\u8d34", "download": "other/20220325/e4d14124f3c94b12a9db35438a2aeaa2.zip", "md5": "b4d0c26539ea29c69e542b28c4999e4b", "size": 17992096}]}, {"id": 600801812, "type": 4, "sort": 5, "name": "modstartblog", "title": "ModStartBlog\u73b0\u4ee3\u5316\u7684\u535a\u5ba2\u7cfb\u7edf", "ps": "\u57fa\u4e8e Apache 2.0 \u5f00\u6e90\u534f\u8bae\uff0c\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?", "version": "v5.0.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;tid=93176", "min_image": "/api/Pluginother/get_file?fname=image/20220530/a67c4a1f6d82124cf66a043a479bde65.png", "php": "56,70", "official": "https://blog.demo.tecmz.com/", "enable_functions": "shell_exec,proc_open,putenv", "count": 45, "score": "5.0", "versions": [{"m_version": "v5", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "ModStartBlog\u73b0\u4ee3\u5316\u4e2a\u4eba\u535a\u5ba2\u7cfb\u7edf", "download": "other/20220530/8d70b98264fb120fe2330fd15ae734f3.zip", "md5": "602c5284d9c6d41c622e779e9ea4cb22", "size": 29796177}]}, {"id": 600801795, "type": 1, "sort": 1, "name": "event", "title": "\u9b54\u4f17\u6d3b\u52a8\u62a5\u540d\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u7b80\u5355\u6613\u7528\u7684\u6d3b\u52a8\u62a5\u540d\u7cfb\u7edf?", "version": "v5.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76359-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/7ebef7ba23e20a242912b95444804e1e.png", "php": "56,70", "official": "https://www.tecmz.com/product/event", "enable_functions": "shell_exec,proc_open,putenv", "count": 43, "score": "1.0", "versions": [{"m_version": "v5", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u9002\u914d\u652f\u4ed8\u5b9d\u65b0\u63a5\u53e3\uff0c\u540e\u53f0\u754c\u9762\u5347\u7ea7", "download": "other/20220325/385e23adfa074f0c1b2efabe6961a5be.zip", "md5": "874e5e564526917f0b67ec2b29206110", "size": 18147923}]}, {"id": 600801796, "type": 2, "sort": 0, "name": "mzjifen", "title": "\u9b54\u4f17\u79ef\u5206\u5546\u57ce\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u5546\u54c1\u5151\u6362\u66f4\u52a0\u5bb9\u6613?", "version": "v1.5.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-80238-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/b5100dd805e35fc0ff2f9bfa1284485f.png", "php": "56,70", "official": "https://www.tecmz.com/product/mzjifen", "enable_functions": "shell_exec,proc_open,putenv", "count": 35, "score": 0, "versions": [{"m_version": "v1", "version": "5.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5347\u7ea7\uff0c\u4e8b\u4ef6\u9a71\u52a8\u589e\u5f3a", "download": "other/20220325/8476952823e0390a5bb3f65ff4db8865.zip", "md5": "d01cddfb45027758028ddfecd2b8389c", "size": 18813720}]}, {"id": 600801798, "type": 1, "sort": 0, "name": "course", "title": "\u9b54\u4f17\u8bfe\u7a0b\u62a5\u540d\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u642d\u5efa\u66f4\u597d\u7684\u8bfe\u7a0b\u62a5\u540d\u7cfb\u7edf?", "version": "v5.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76524-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/eb35c69c9cd8889295a39e11250c73f2.png", "php": "56,70", "official": "https://www.tecmz.com/product/course", "enable_functions": "shell_exec,proc_open,putenv", "count": 34, "score": 0, "versions": [{"m_version": "v5", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u81ea\u5b9a\u4e49\u62a5\u540d\u5b57\u6bb5\u5f02\u5e38\u4fee\u590d\uff0c\u540e\u53f0\u754c\u9762\u5347\u7ea7", "download": "other/20220325/b1ee2b71348729ebb8777efabbd7d3e8.zip", "md5": "d8c6865017265c0d4668291a854c1911", "size": 17603534}]}, {"id": 600801799, "type": 2, "sort": 0, "name": "saas_1688", "title": "SaaS\u81ea\u8425\u5e02\u573a", "ps": "\u5e2e\u52a9\u60a8\u8f7b\u677e\u642d\u5efa\u5c5e\u4e8e\u81ea\u5df1\u7684SaaS\u5e94\u7528\u5546\u57ce\uff0c\u6253\u901a\u9500\u8def\u96be\u7684\u95ee\u9898\u3002?", "version": "1.6.0", "author": "\u5927\u5df4\u5c71\u7f51\u7edc\u79d1\u6280", "price": 6800, "auth_price": 0, "home": "https://ziying.daba3.cn", "min_image": "/api/Pluginother/get_file?fname=image/20220330/fd81e759b0a608f99d24c9819a9020ef.png", "php": "71,72,73", "official": "", "enable_functions": "", "count": 0, "score": 0, "versions": [{"m_version": "1", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6253\u9020\u4f01\u4e1a\u4e13\u4e1a\u5316\u7684SaaS\u5e94\u7528\u5546\u57ce\uff0c\u4e00\u5957\u7a0b\u5e8f6\u4e2a\u9500\u552e\u6e20\u9053\uff0c\u552e\u540eQQ\uff1a17742204398", "download": "other/20220602/37a626d5a7c4aa4764d9dd5be96a45d7.zip", "md5": "38be5a1a7bae7852a35edc9f7e9a058a", "size": 19558050}]}], "type": [{"id": 5, "title": "\u8fd0\u884c\u73af\u5883", "sort": 2, "ps": "\u8fd0\u884c\u73af\u5883", "icon": "icon"}, {"id": 6, "title": "\u7cfb\u7edf\u5de5\u5177", "sort": 3, "ps": "\u7cfb\u7edf\u5de5\u5177", "icon": "icon"}, {"id": 7, "title": "\u5b9d\u5854\u63d2\u4ef6", "sort": 4, "ps": "\u5b9d\u5854\u63d2\u4ef6", "icon": "icon"}, {"id": 8, "title": "\u4e13\u4e1a\u7248\u63d2\u4ef6", "sort": 5, "ps": "\u4e13\u4e1a\u7248\u63d2\u4ef6", "icon": "icon"}, {"id": 12, "title": "\u4f01\u4e1a\u7248\u63d2\u4ef6", "sort": 6, "ps": "\u4f01\u4e1a\u7248\u63d2\u4ef6", "icon": ""}, {"id": 10, "title": "\u7b2c\u4e09\u65b9\u5e94\u7528", "sort": 7, "ps": "\u7b2c\u4e09\u65b9\u5e94\u7528", "icon": "icon"}, {"id": 11, "title": "\u4e00\u952e\u90e8\u7f72", "sort": 8, "ps": "\u4e00\u952e\u90e8\u7f72\u7b2c\u4e09\u65b9\u6e90\u7801", "icon": ""}], "dep_type": [{"tid": 1, "title": "\u5efa\u7ad9"}, {"tid": 2, "title": "\u5546\u57ce"}, {"tid": 3, "title": "\u8bba\u575b"}, {"tid": 4, "title": "\u535a\u5ba2"}, {"tid": 5, "title": "\u5fae\u4fe1"}, {"tid": 6, "title": "\u6846\u67b6"}]} \ No newline at end of file diff --git a/data/win/config/deployment_list.json b/data/win/config/deployment_list.json new file mode 100644 index 0000000..6bc0505 --- /dev/null +++ b/data/win/config/deployment_list.json @@ -0,0 +1 @@ +{"list": [{"id": 600801247, "type": 4, "sort": 4.5, "name": "wordpress", "title": "WordPress", "ps": "\u6700\u591a\u4eba\u7528\u7684\u535a\u5ba2\u7a0b\u5e8f?", "version": "5.6", "author": "\u5b9d\u5854", "price": 0, "auth_price": 0, "home": "https://www.bt.cn", "min_image": "/api/Pluginother/get_file?fname=image/20190606/842f584540740a34fdab6c646d3f2a8a.png", "php": "56,70,71,72,73,74,80", "official": "https://cn.wordpress.org", "enable_functions": "", "count": 212466, "score": "4.5", "versions": [{"m_version": "5", "version": "6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "5.6\u7248wordpress", "download": "other/20201219/7902f20168ab7d9f7953d1f4b29e77df.zip", "md5": "c19e06766bd984649049135437e6e71b", "size": 16588808}]}, {"id": 600801333, "type": 2, "sort": 4.7, "name": "shopxo", "title": "ShopXO\u5f00\u6e90\u5546\u57ce", "ps": "WEB+\u5c0f\u7a0b\u5e8f\u3001\u5206\u9500\u3001\u591a\u4ed3\u5e93\u3001\u591a\u5546\u6237\u3001\u591a\u95e8\u5e97\u3001DIY\u62d6\u62fd\u88c5\u4fee?", "version": "v2.2.8 220527", "author": "gongfuxiang", "price": 0, "auth_price": 0.01, "home": "https://doc.shopxo.net/article/1/260680208858742784.html", "min_image": "/api/Pluginother/get_file?fname=image/20190822/bbad40b94f8eca5bc96799177ff9fcc6.png", "php": "74,80,81", "official": "https://shopxo.net/", "enable_functions": "", "count": 22072, "score": "4.7", "versions": [{"m_version": "v2", "version": "2.8 220527", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "IP\u8bbf\u95ee\u83b7\u53d6\u4e3b\u57df\u540dbug\u4fee\u590d", "download": "other/20220528/763a7976d5121090b98dc5bc40a63470.zip", "md5": "48b4d489ea2d3d3b260ef1aa38755096", "size": 41973454}]}, {"id": 600801534, "type": 4, "sort": 4.5, "name": "zblogphp", "title": "Z-BlogPHP", "ps": "\u4e00\u6b3e\u5c0f\u5de7,\u529f\u80fd\u5f3a\u5927,\u63d2\u4ef6\u4e3b\u9898\u7b49\u5e94\u7528\u4f17\u591a\u7684Blog\u548cCMS\u7a0b\u5e8f?", "version": "v1.7.2.3050", "author": "ZBlogTeam", "price": 0, "auth_price": 0, "home": "", "min_image": "/api/Pluginother/get_file?fname=image/20200511/12acba2e32703e6b23d36ebe1ef68870.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.zblogcn.com/", "enable_functions": "", "count": 22053, "score": "4.5", "versions": [{"m_version": "v1", "version": "7.2.3050", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "1.7.2 Tenet Build 173050", "download": "other/20220510/a54c8fb09db4d4fb8a1f7323c423078c.zip", "md5": "3e6a77454126c96990f2bbb4f74d6bd6", "size": 3078001}]}, {"id": 600801287, "type": 4, "sort": 4.4, "name": "emlog", "title": "emlog", "ps": "\u7b80\u6d01\u6613\u7528\u7684PHP\u535a\u5ba2\u5efa\u7ad9\u7cfb\u7edf?", "version": "pro 1.3.1", "author": "emlog", "price": 0, "auth_price": 0, "home": "https://www.emlog.net", "min_image": "/api/Pluginother/get_file?fname=image/20210414/f374fc51fd4718169e6e4ac2f7197c9b.png", "php": "70,71,72,73,74,80", "official": "https://www.emlog.net", "enable_functions": "", "count": 20655, "score": "4.4", "versions": [{"m_version": "pro 1", "version": "3.1", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "emlog", "download": "other/20220522/65395998e567e535e7acc5f2ade59bc6.zip", "md5": "6968529baa8d77de4c9387902e448bc7", "size": 1033174}]}, {"id": 600801257, "type": 1, "sort": 5, "name": "jtbc3", "title": "JTBC\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u6e90\u4e8e2006\u5e74\u575a\u6301\u3010\u6c38\u4e45\u514d\u8d39\u5546\u7528\u3011\u7684\u5f00\u6e90CMS?", "version": "5.0.0.4", "author": "Jetiben", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-33484-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190619/8b75ddbdf943408e2a72cc62a6609457.png", "php": "80,81", "official": "https://www.jtbc.cn/", "enable_functions": "", "count": 17074, "score": "5.0", "versions": [{"m_version": "5", "version": "0.0.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "JTBC(v5)\u57fa\u4e8eAGPL\u5f00\u6e90\u534f\u8bae\u514d\u8d39\u5f00\u6e90\u53ef\u5546\u7528", "download": "other/20220601/93d3745906af130feac9804a57e5098f.zip", "md5": "092ff1010f7a40f97732d32986fd3e14", "size": 2375013}]}, {"id": 600801330, "type": 1, "sort": 4.2, "name": "demososo", "title": "DM\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf", "ps": "\u4f01\u4e1a\u5b98\u7f51\uff0c\u5916\u8d38\u7f51\u7ad9\u5efa\u8bbe\u7684\u5f00\u6e90cms?", "version": "v2022.6", "author": "jasonzhang", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-36262-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20190820/9830cf2ba7e96f816a323a809380ce73.png", "php": "70,71,72,73", "official": "https://www.demososo.com", "enable_functions": "", "count": 7263, "score": "4.2", "versions": [{"m_version": "v2022", "version": "6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v2022.6", "download": "other/20220605/2649a39a0b3992a48509a2b426c082cc.zip", "md5": "f959f6674e0b2a0abbfc2b8400a6eeea", "size": 16036773}]}, {"id": 600801597, "type": 2, "sort": 4.5, "name": "blfk_v3", "title": "\u4f2f\u4e50\u53d1\u5361V3\u5b9d\u5854\u7248", "ps": "\u5b89\u5168\u3001\u7a33\u5b9a\u3001\u9ad8\u6548\u3001\u514d\u8d39\u7684\u4e2a\u4eba\u53d1\u5361\u865a\u62df\u5546\u57ce\u7cfb\u7edf\uff0c\u503c\u5f97\u62e5\u6709!?", "version": "8.0.0", "author": "\u4f2f\u4e50\u53d1\u5361", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-55859-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200918/ed7f31e86c295ce2406130c3dd67cd2d.png", "php": "56,70,71,72,73,74", "official": "http://www.313t.com", "enable_functions": "", "count": 6406, "score": "4.5", "versions": [{"m_version": "8", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4fee\u590dbug\u589e\u52a0\u5206\u9500\u7248\u672c\u9009\u62e9", "download": "other/20220415/86d799f36848a891cee80b253dfa4879.zip", "md5": "2f38faaa5eefb8852ddd5db5f4e0a3df", "size": 129755}]}, {"id": 600801532, "type": 1, "sort": 5, "name": "dmandwp", "title": "dmandwp\u7cfb\u7edf - wordprss\u548cDM\u7cfb\u7edf\u533a\u5757\u7ec4\u5408\u5efa\u7ad9", "ps": "dmandwp--\u51fa\u8272\u7684wordpress\u524d\u7aef\u6548\u679c\u5e93?", "version": "v2021.10", "author": "jasonzhang", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-49107-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200508/f87d8df11a66cbd4cb992052ce55ebf9.png", "php": "53,54,55,56,70,71,72,73,74", "official": "www.dmandwp.com", "enable_functions": "", "count": 5817, "score": "5.0", "versions": [{"m_version": "v2021", "version": "10", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v2021.10", "download": "other/20211004/e0e2603cf879298baef7eb6c8de6f1bc.zip", "md5": "e9d56c7fb19a8e8499470ba7b46160f9", "size": 35624444}]}, {"id": 600801274, "type": 2, "sort": 3.9, "name": "crmeb", "title": "CRMEB", "ps": "\u5f00\u6e90\u6392\u540d\u9065\u9065\u9886\u5148,\u9ad8\u6027\u80fd\u5f00\u6e90\u5546\u57ce,\u524d\u540e\u7aef\u5206\u79bb,\u5e26\u76f4\u64ad\u5ba2\u670d\u7cfb\u7edf?", "version": "v4.4.0", "author": "\u8046\u542c", "price": 0, "auth_price": 0, "home": "https://gitee.com/ZhongBangKeJi/CRMEB", "min_image": "/api/Pluginother/get_file?fname=image/20220312/c42a765e4ffbaf384b57e687ca40baf1.png", "php": "71,72,73,74", "official": "http://www.crmeb.com", "enable_functions": "pcntl_signal,pcntl_signal_dispatch,pcntl_fork,pcntl_wait,pcntl_alarm", "count": 5781, "score": "3.9", "versions": [{"m_version": "v4", "version": "4.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u9ad8\u6027\u80fd\u5f00\u6e90\u5546\u57ce\uff0cQQ\u7fa4\uff1a1025263163", "download": "other/20220216/10867846f35046664597a1c813deb39a.zip", "md5": "2c4ea352c9313dfd8c1a19076e487a0c", "size": 68461181}]}, {"id": 600801417, "type": 2, "sort": 4.3, "name": "yidu_tc_plus", "title": "\u58f9\u5ea6\u540c\u57ce\u65b0\u96f6\u552e", "ps": "\u4e3b\u5e94\u7528\u65e0\u9700\u6388\u6743\u3001\u514d\u8d39\u5546\u7528\uff1b\u4e13\u6ce8\u540c\u57ce,\u4e13\u6ce8\u95e8\u5e97,\u66f4\u4e13\u6ce8\u670d?", "version": "2.0.71", "author": "\u58f9\u5ea6\u6280\u672f", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-41074-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20191203/9b9d69f4a19e1017df92119132c51231.png", "php": "71,72", "official": "https://www.chiwon.cn", "enable_functions": "", "count": 4824, "score": "4.3", "versions": [{"m_version": "2", "version": "0.71", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u7248\u53d1\u5e03", "download": "other/20210908/17667cae9348b456e81da8c505bdd45f.zip", "md5": "f7d94c0424acb3eee7ef2743854e36b7", "size": 47737698}]}, {"id": 600801339, "type": 1, "sort": 3.7, "name": "xunruicms", "title": "\u8fc5\u777fCMS\u514d\u8d39\u5f00\u6e90\u5efa\u7ad9\u7a0b\u5e8f", "ps": "\u514d\u8d39\u5f00\u6e90\u7684PHP8\u7f51\u7ad9\u540e\u53f0\u7a0b\u5e8f?", "version": "4.5.5", "author": "PHP\u7801\u519c", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=36445", "min_image": "/api/Pluginother/get_file?fname=image/20210416/f005e05a6096919dd78158de6bbd40d6.png", "php": "72,73,74,80,81", "official": "http://www.xunruicms.com", "enable_functions": "", "count": 4068, "score": "3.7", "versions": [{"m_version": "4", "version": "5.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301php81", "download": "other/20220320/0a050171f0c963a609fc0d0f07b3daa6.zip", "md5": "70294c7df3a9624ccca6a5014149c056", "size": 6960291}]}, {"id": 600801722, "type": 1, "sort": 4, "name": "biz", "title": "INSO\u58c1\u7eb8", "ps": "\u6536\u5f55\u51e0\u5341\u4ebf\u9ad8\u6e05\u4f18\u8d28\u56fe\u7247,\u6570\u5343\u4e07\u7528\u6237\u7684\u73cd\u85cf\u5206\u4eab?", "version": "0.02", "author": "\u59ec\u957f\u4fe1", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs", "min_image": "/api/Pluginother/get_file?fname=image/20210516/884a557dd671252b711ce19af2e97a9f.png", "php": "53,54,55,56,70,71,72,73,80", "official": "https://github.com/insoxin/a", "enable_functions": "", "count": 3385, "score": "4.0", "versions": [{"m_version": "0", "version": "02", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u66f4\u6362\u88ab\u5899\u7684cdn.jsdelivr.net", "download": "other/20220601/a8834ae2b85616514154de780ac5ef00.zip", "md5": "44f02e83af955f0b67e96818d05c40f5", "size": 57678}]}, {"id": 600801263, "type": 1, "sort": 2.3, "name": "wdja", "title": "WDJA\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u5b98\u7f51www.wdja.net QQ\u7fa4:122019913?", "version": "2.2", "author": "shadoweb", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-34750-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210727/9ad87e05422043568d5bb300f760542d.png", "php": "70,71,72,73,74,80", "official": "http://www.wdja.net/", "enable_functions": "", "count": 3114, "score": "2.3", "versions": [{"m_version": "2", "version": "2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u652f\u6301mysql5.6\u7248\u672c.\u4f18\u5316\u6027\u80fd.", "download": "other/20211113/28cd5a660a1ee3eabd95642833fa6647.zip", "md5": "ac20e7bf96e5f3b4853355dfde541039", "size": 5701141}]}, {"id": 600801559, "type": 1, "sort": 5, "name": "eyoucms", "title": "\u6613\u4f18CMS", "ps": "EyouCms\u662f\u57fa\u4e8eTP5\u5f00\u53d1\u7684\u4f01\u4e1a\u7f51\u7ad9\u5efa\u7ad9\u7cfb\u7edf\u3002?", "version": "v1.5.8", "author": "\u6613\u4f18cms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-92297-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200708/9c93b2069e8384da034cfe59df8f005e.png", "php": "54,55,56,70,71,72,73,74,80", "official": "https://www.eyoucms.com/", "enable_functions": "", "count": 2331, "score": "5.0", "versions": [{"m_version": "v1", "version": "5.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u3001\u5b89\u5168\u3001\u591a\u6a21\u677f\u662f\u4f01\u4e1a\u7f51\u7ad9\u5efa\u7ad9\u7684\u795e\u5668", "download": "other/20220517/44cde0a274a46dd96f60485b009579c3.zip", "md5": "c75deb36ee1bad5b0d452b75a869c594", "size": 24283393}]}, {"id": 600801430, "type": 1, "sort": 3.7, "name": "phpok", "title": "PHPOK\u4f01\u4e1a\u7ad9\u7cfb\u7edf", "ps": "\u4e00\u5957\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u91c7\u7528 PHP + MySQL \u5f00\u53d1?", "version": "6.2", "author": "phpok.com", "price": 0, "auth_price": 0, "home": "https://www.phpok.com/manual.html", "min_image": "/api/Pluginother/get_file?fname=image/20191219/15184c3fd5dbbcad0fb99faf16bf51d0.png", "php": "55,56,70,71,72,73", "official": "https://www.phpok.com", "enable_functions": "", "count": 2320, "score": "3.7", "versions": [{"m_version": "6", "version": "2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u514d\u8d39\u5546\u7528\uff0c\u81ea\u7531\u5f00\u6e90\u7684CMS", "download": "other/20220526/e3a33db58763b015a8b08d38a8a4d04a.zip", "md5": "4f53ebc57a8e79c64c5b81fb54ae9571", "size": 34192018}]}, {"id": 600801578, "type": 4, "sort": 2.2, "name": "wdja_blog", "title": "WDJA\u535a\u5ba2\u7ba1\u7406\u7cfb\u7edf", "ps": "\u5b98\u7f51www.wdja.net QQ\u7fa4:122019913?", "version": "2.5", "author": "shadoweb", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-54413-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210802/a72c781d79108259b582689dcfaaf4b9.png", "php": "70,71,72,73,74,80,81", "official": "http://www.wdja.net", "enable_functions": "", "count": 2277, "score": "2.2", "versions": [{"m_version": "2", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u529f\u80fd\u4f18\u5316\uff0c\u65b0\u589e\u524d\u53f0\u65e5\u5386\u8bb0\u4e8b\u672c\u6a21\u5757", "download": "other/20220427/39533f9a18c503bd0715fcc0d138b5c9.zip", "md5": "d51e56280106ac1873963dcc2c916af4", "size": 8253168}]}, {"id": 600801467, "type": 1, "sort": 5, "name": "otcms", "title": "\u7f51\u949bCMS\uff08PHP\u7248\uff09", "ps": "\u6700\u597d\u7528\u7684\u6587\u7ae0CMS\uff0c\u53ef\u642d\u5efa\u535a\u5ba2\u3001\u5a31\u4e50\u8d44\u6e90\u3001\u6559\u7a0b\u8f85\u52a9\u7b49\u7f51\u7ad9?", "version": "6.30", "author": "\u7f51\u949b\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-45115-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20200316/47dcad7a9115df1960ad8c3cb3ce78e8.png", "php": "53,54,55,56,70,71,72,73", "official": "http://otcms.com", "enable_functions": "", "count": 1757, "score": "5.0", "versions": [{"m_version": "6", "version": "30", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6700\u597d\u7528\u7684\u6587\u7ae0CMS\uff0c\u53ef\u642d\u5efa\u535a\u5ba2\u3001\u5a31\u4e50\u8d44\u6e90\u3001\u6559\u7a0b\u8f85\u52a9\u7b49\u7f51\u7ad9", "download": "other/20220225/5002d02bef0364a1c0849cfddc616394.zip", "md5": "f4a26bf914ca6a93c18ee3d38d88068e", "size": 16290026}]}, {"id": 600801751, "type": 2, "sort": 5, "name": "likeshop_b2c", "title": "likeshop\u5355\u5546\u6237\u5f00\u6e90\u5546\u57ce\u7cfb\u7edf-\u4f01\u4e1a\u7248", "ps": "likeshop\u5f00\u6e90\u5546\u57ce\u7cfb\u7edf\uff0c\u4ee3\u7801\u5168\u5f00\u6e90\uff0c\u529f\u80fd\u4e30\u5bcc\uff0c\u53e3\u7891\u4e4b\u9009?", "version": "2.5.7.20210311", "author": "likeshop", "price": 0, "auth_price": 0, "home": "http://doc.likeshop.cn/likeshop_develop_v2_x/2105149", "min_image": "/api/Pluginother/get_file?fname=image/20210824/ffca1ad63dc15924e1f362156367366c.png", "php": "72,73,74", "official": "https://www.likeshop.cn", "enable_functions": "", "count": 1736, "score": "5.0", "versions": [{"m_version": "2", "version": "5.7.20210311", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "likeshop\u5f00\u6e90\u5546\u57ce\u7cfb\u7edf\uff0c\u4ee3\u7801\u5168\u5f00\u6e90\uff0c\u529f\u80fd\u4e30\u5bcc\uff0c\u53e3\u7891\u4e4b\u9009", "download": "other/20220311/a8e30ff6ada07c1cad2e2e7f41b4f4e9.zip", "md5": "3f757f67628d793bb2f9816b496f861a", "size": 91599003}]}, {"id": 600801301, "type": 1, "sort": 4.3, "name": "easyiamge", "title": "\u7b80\u5355\u56fe\u5e8a", "ps": "\u652f\u6301\u591a\u6587\u4ef6\u4e0a\u4f20,\u7b80\u5355\u65e0\u6570\u636e\u5e93\u7684\u4e00\u6b3e\u56fe\u5e8a\u7a0b\u5e8f?", "version": "2.6.5", "author": "icret", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-83801-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220118/5e46a6cf46511190fb6742710028d225.png", "php": "56,70,71,72,73,74,80", "official": "https://png.cm", "enable_functions": "", "count": 1603, "score": "4.3", "versions": [{"m_version": "2", "version": "6.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u66f4\u65b0\u7248\u672c\u52302.6.5", "download": "other/20220527/509c9180bd8ccbb21f4c234bbe03e8cf.zip", "md5": "ec08ea15eef8ebc43d6311445a430a5f", "size": 3817079}]}, {"id": 600801697, "type": 1, "sort": 4.4, "name": "yzncms", "title": "YznCMS", "ps": "\u57fa\u4e8ethinkphp5.1\u548cLayui2.6\u7684\u540e\u53f0\u7cfb\u7edf?", "version": "1.04", "author": "\u5fa1\u5b85\u7537\u5de5\u4f5c\u5ba4", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-66787-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210406/1020ab61e7afb7d4674ce30374c4f192.png", "php": "70,71,72,73,74,8.0", "official": "https://gitee.com/ken678/YZNCMS", "enable_functions": "", "count": 1379, "score": "4.4", "versions": [{"m_version": "1", "version": "04", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7cfb\u7edf\u67b6\u6784\u4f18\u5316\u5927\u91cf\u7ec6\u8282", "download": "other/20220304/c97b71df854fe0440b4295a7862c1673.zip", "md5": "8757cdaa5375a7f6ab1545bca5e084af", "size": 26061747}]}, {"id": 600801719, "type": 1, "sort": 5, "name": "yzmcms", "title": "YzmCMS\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS", "ps": "\u57fa\u4e8ePHP+MYSQL\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS\u7cfb\u7edf?", "version": "V6.5", "author": "yzmcms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68513-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210509/5ef0d9c1a53c3a91fea05096fc1d8f66.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.yzmcms.com", "enable_functions": "", "count": 1120, "score": "5.0", "versions": [{"m_version": "V6", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57fa\u4e8ePHP+MySQL\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS\u7cfb\u7edf", "download": "other/20220506/37df593ada8ec483de5558652e78fb9e.zip", "md5": "117b48d1000ae8f57b8dca4c5e4fc398", "size": 4099775}]}, {"id": 600801473, "type": 1, "sort": 5, "name": "lcms", "title": "\u76d8\u4f01LCMS PHP\u5f00\u53d1\u6846\u67b6", "ps": "\u53efSaaS\u5efa\u7ad9\u3001\u4e00\u952e\u5f00\u901a3000+\u57ce\u5e02\u5206\u7ad9\u7684\u5f00\u6e90\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf?", "version": "2022.05161135", "author": "\u8fd0\u57ce\u5e02\u76d8\u77f3\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://support.qq.com/products/136192", "min_image": "/api/Pluginother/get_file?fname=image/20200307/86dbe823fdc9acbbef9c014bcbf5d83b.png", "php": "72,73,74,80,81", "official": "https://www.panshi18.cn/", "enable_functions": "", "count": 956, "score": "5.0", "versions": [{"m_version": "2022", "version": "05161135", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4f18\u5316\u5b89\u88c5\u6269\u5c55\u68c0\u6d4b", "download": "other/20220516/46d45704e261f7ee237fdc96c9ba57cd.zip", "md5": "a78301b6b2d7dffddf01599a59ab23fe", "size": 8264575}]}, {"id": 600801708, "type": 1, "sort": 5, "name": "wendasns", "title": "Wendasns\u5f00\u6e90\u95ee\u7b54\u793e\u533a\u7cfb\u7edf", "ps": "\u5f00\u6e90\u5185\u5bb9\u4ed8\u8d39\u95ee\u7b54\u793e\u533a\u3001seo\u3001URL\u76ee\u5f55\u5316\u3001\u5c0f\u7a0b\u5e8f\u7684\u95ee\u7b54\u7cfb\u7edf?", "version": "V2.0.2", "author": "wendasns", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-67643-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210422/6ca78b3c46bd2d3255b4226ecc8e0727.png", "php": "72,73,74,80", "official": "https://www.wendasns.com", "enable_functions": "", "count": 917, "score": "5.0", "versions": [{"m_version": "V2", "version": "0.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "V2.0.2 \u4fee\u590d\u5df2\u77e5BUG", "download": "other/20210702/964693bf33b0550ddfdee319da69a40c.zip", "md5": "44cf354b23bfec921758d9d75270416a", "size": 8491338}]}, {"id": 600801761, "type": 1, "sort": 5, "name": "modstart", "title": "ModStartCMS", "ps": "\u57fa\u4e8eLaravel\u7684\u6a21\u5757\u5316\u5efa\u7ad9\u7cfb\u7edf\uff0c\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?", "version": "v4.0.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76287-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220324/ee7b19647869c0ede79345f723cdfcf1.png", "php": "56,70", "official": "https://modstart.com/", "enable_functions": "shell_exec,proc_open,putenv", "count": 889, "score": "5.0", "versions": [{"m_version": "v4", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "CMS\u529f\u80fd\u589e\u5f3a\uff0c\u7528\u6237\u7ba1\u7406\u4f18\u5316", "download": "other/20220525/d7a6ce4e14a7f9624d45e48d0009c01b.zip", "md5": "d689bbb90c452b013518656ca5f2af69", "size": 31163263}]}, {"id": 600801771, "type": 6, "sort": 5, "name": "kuerp", "title": "\u9177\u67da\u6613\u6c5b\u8fdb\u9500\u5b58\u5f00\u6e90\u514d\u8d39\u7248", "ps": "\u9177\u67da\u6613\u6c5b\u8fdb\u9500\u5b58\u5f00\u6e90\u514d\u8d39\u7248\uff0c\u867d\u7136\u662f\u514d\u8d39\u7248\u672c\u4f46\u662f\u529f\u80fd\u5168\u9762\uff01?", "version": "1.0.4", "author": "\u56db\u5ddd\u4f18\u72d7\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=80395", "min_image": "/api/Pluginother/get_file?fname=image/20211212/1a01f82264ca159d35575a77f5b00ddd.png", "php": "56,70,71,72", "official": "www.scygkj.com", "enable_functions": "", "count": 877, "score": "5.0", "versions": [{"m_version": "1", "version": "0.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "", "download": "other/20211224/7c2ebcf051fb4c931d73c90d6ac14677.zip", "md5": "8fd134030b2fdd4488d116eca885d816", "size": 46047589}]}, {"id": 600801593, "type": 1, "sort": 0, "name": "wdja_course", "title": "WDJA\u6559\u7a0b\u53d1\u5e03\u7cfb\u7edf", "ps": "\u3010\u5f00\u6e90,\u53ef\u514d\u8d39\u5546\u7528\u3011\u5b98\u7f51www.wdja.net?", "version": "1.5", "author": "shadoweb", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-56237-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210802/8a88ebf91135fb92055162ee0ffb60b8.png", "php": "70,71,72,73,74", "official": "http://www.wdja.net", "enable_functions": "", "count": 849, "score": 0, "versions": [{"m_version": "1", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7b2c\u4e00\u7248", "download": "other/20200915/d388c115ecb99b8217ec9157b514de62.zip", "md5": "a0f356a6378b31b2dd60439253d56681", "size": 4342748}]}, {"id": 600801756, "type": 1, "sort": 5, "name": "yqnxt", "title": "\u4e00\u8d77\u725b\u77e5\u8bc6\u4ed8\u8d39\u7cfb\u7edf\uff08\u5728\u7ebf\u6559\u80b2\u57f9\u8bad\u5e73\u53f0\uff09", "ps": "\u77e5\u8bc6\u4ed8\u8d39\u7cfb\u7edf\uff0c\u5b98\u65b9\u5e94\u8be5\u5e02\u573a\u63d0\u4f9b\u5927\u91cf\u6a21\u677f\u3001\u63d2\u4ef6\uff0c\u62d3\u5c55\u6027\u6781\u9ad8?", "version": "1.5", "author": "\u70df\u53f0\u5e02\u8c6a\u5ba2\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75718-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210907/4b73ad42638e601b24ed52d12e8b9107.png", "php": "53,54,55,56,70,71,72,73,74,80", "official": "https://www.yqnxt.com/", "enable_functions": "", "count": 848, "score": "5.0", "versions": [{"m_version": "1", "version": "5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u89c6\u9891\u8bfe\u7a0b\u3001\u97f3\u9891\u8bfe\u7a0b\u3001\u56fe\u6587\u8bfe\u7a0b\uff0c\u9898\u5e93\u7cfb\u7edf\uff0c\u6587\u7ae0\u7cfb\u7edf\u7b49\u6a21\u5757", "download": "other/20210914/c14e99be4b1c543f04f004495c8d5f46.zip", "md5": "fb99c99e7e66bc8049cd33a11427fe5c", "size": 42155224}]}, {"id": 600801725, "type": 1, "sort": 5, "name": "rpcms", "title": "rpcms\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "\u4e00\u6b3e\u8f7b\u91cf\u578bphp\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u5c0f\u578b\u3001\u8f7b\u91cf\uff0c\u529f\u80fd\u4e30\u5bcc\uff0c\u6269\u5c55\u6027\u5f3a?", "version": "V2.5.9", "author": "rpcms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68632-1-3.html", "min_image": "/api/Pluginother/get_file?fname=image/20210521/d39c0986f1a9e6faf9be2b06106407a0.png", "php": "56,70,71,72,73,74,80", "official": "http://www.rpcms.cn", "enable_functions": "", "count": 795, "score": "5.0", "versions": [{"m_version": "V2", "version": "5.9", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "", "download": "other/20220526/157bd9d58122f1ac6c032f41254517ab.zip", "md5": "22913664ba5a7008a92937fd273c4ba0", "size": 3577069}]}, {"id": 600801737, "type": 1, "sort": 5, "name": "yunucms", "title": "\u4e91\u4f18CMS", "ps": "\u4e00\u952e\u5f00\u901a3000+\u57ce\u5e02\u5206\u7ad9\uff0c\u5feb\u901f\u642d\u5efa\u591a\u5408\u4e00\u4f01\u4e1a\u5b98\u7f51?", "version": "2.2.6", "author": "\u9547\u6c5f\u5e02\u4e91\u4f18\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;amp;amp;tid=72177&amp;amp;amp;page=1&amp;amp;amp;extra=#pid275392", "min_image": "/api/Pluginother/get_file?fname=image/20210713/f03cd2becbb1f9c2b7823b4e1282a1f4.png", "php": "56,57,70,71,72,73,74", "official": "http://www.yunucms.com/", "enable_functions": "", "count": 766, "score": "5.0", "versions": [{"m_version": "2", "version": "2.6", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4e00\u952e\u5f00\u901a3000+\u57ce\u5e02\u5206\u7ad9\uff0c\u5feb\u901f\u642d\u5efa\u591a\u5408\u4e00\u4f01\u4e1a\u5b98\u7f51", "download": "other/20220121/6c5823c41cb0cb3f4884bb0567fa246e.zip", "md5": "85da25d35a721497f9cf4a2d77d142b9", "size": 40965650}]}, {"id": 600801738, "type": 1, "sort": 5, "name": "vitphp", "title": "vitphp", "ps": "\u57fa\u4e8ethinkphp6+layui\u5f00\u53d1\u7684\u4e00\u6b3e\u591a\u5e94\u7528\u7ba1\u7406\u7684\u6846\u67b6?", "version": "1.3.5", "author": "\u5f00\u733f\u670d\u52a1", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-72373-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210716/27fb412072e856892a21d4042c819a9a.png", "php": "72,73,74", "official": "http://www.vitphp.cn", "enable_functions": "", "count": 741, "score": "5.0", "versions": [{"m_version": "1", "version": "3.5", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 2, "version_msg": "\u4fee\u590d\u95ee\u9898", "download": "other/20220413/b671862370574d55c99b2174a1ccea19.zip", "md5": "f026e644b42b68493077f06a7d2f7c53", "size": 4966234}]}, {"id": 600801766, "type": 1, "sort": 4, "name": "jjyun_bt", "title": "\u8282\u8282\u4e91-\u5b9d\u5854\u4e3b\u673a\u9762\u677f\u8d44\u4ea7\u7ba1\u7406\u7cfb\u7edf", "ps": "\u6279\u91cf\u5efa\u7ad9\uff0c\u6743\u9650\u5206\u914d\uff0c\u7ad9\u70b9\u7edf\u4e00\u7ba1\u7406\uff0c\u4e00\u952e\u767b\u5f55\u9762\u677f\u540e\u53f0\u7b49\u529f\u80fd?", "version": "1.0.19", "author": "\u5e7f\u4e1c\u5ba2\u6ee1\u591a\u79d1\u6280\u6709\u9650\u516c\u53f8", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-79418-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20211114/efe97642b087cade5b0016e4f47f9d38.png", "php": "71", "official": "http://bbs.jjyun.cc/thread-11565-1-1.html", "enable_functions": "", "count": 679, "score": "4.0", "versions": [{"m_version": "1", "version": "0.19", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u589e\u52a0 \u589e\u52a0\u652f\u4ed8\u5b9d-\u4eba\u8138\u5b9e\u540d\u8ba4\u8bc1\u3001\u652f\u4ed8\u5b9d\u5f53\u9762\u4ed8\u3001\u66f4\u65b0\u767b\u5f55/\u6ce8\u518c\u5e94\u7528\u3001\u4f18\u5316\u90ae\u7bb1\u767b\u5f55\u7b49", "download": "other/20220104/802f1287ec4d16008a4879a19f91ef82.zip", "md5": "b68738bc7ac3faadadebb9ed107adb7d", "size": 21028411}]}, {"id": 600801684, "type": 1, "sort": 5, "name": "public", "title": "\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90", "ps": "\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90 - SpeedIDC\u7cfb\u7edf\u63d0\u4f9b\u4e00\u952e\u90e8\u7f72?", "version": "7.1.2", "author": "\u5218\u5c11", "price": 0, "auth_price": 0, "home": "https://www.speed-idc.com", "min_image": "/api/Pluginother/get_file?fname=image/20210317/ad23cdd1dcfd9b6c57eed78ffbbcd698.png", "php": "70", "official": "https://www.speed-idc.com", "enable_functions": "putenv", "count": 668, "score": "5.0", "versions": [{"m_version": "7", "version": "1.2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u65b0\u589e\uff1a\u7248\u672c\u68c0\u6d4b\u3001\u5728\u7ebf\u66f4\u65b0\u3001\u6e90\u52a0\u5bc6\u7b49\u5b89\u5168\u95ee\u9898\u3002\u4fee\u590d\uff1a\u5df2\u77e5BUG", "download": "other/20220515/f75ef6b673352fad99c48ea4f3a6caa6.zip", "md5": "08c1c99261f77b8194e1a5f370538c6e", "size": 21457382}]}, {"id": 600801754, "type": 2, "sort": 4, "name": "strongshop", "title": "StrongShop", "ps": "Laravel \u5f00\u53d1\uff0c\u8de8\u5883\u5916\u8d38\u5546\u57ce\uff0c\u591a\u8bed\u8a00\uff0c\u591a\u8d27\u5e01?", "version": "v1.0", "author": "OpenStrong", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75357-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210901/be2e51afff91e32d756957ffa42d76ea.png", "php": "72,73,74", "official": "http://www.strongshop.cn", "enable_functions": "symlink", "count": 616, "score": "4.0", "versions": [{"m_version": "v1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "v1.0 \u4e3b\u8981\u529f\u80fd\uff1a- \u8d2d\u7269\u8f66 - \u6743\u9650\u7ba1\u7406 - \u4ea7\u54c1\u7ba1\u7406 - \u5206\u7c7b\u7ba1\u7406 - \u4f1a\u5458\u7ba1\u7406 - \u8ba2\u5355\u7ba1\u7406 - \u6587\u7ae0\u7ba1\u7406 - \u7f51\u7ad9\u8bbe\u7f6e", "download": "other/20210928/50234a33ad347c9d46772527979b467f.zip", "md5": "7f1a078b1cf5355cb17e27c8cf7c39e0", "size": 23637018}]}, {"id": 600801334, "type": 1, "sort": 5, "name": "laysns", "title": "LaySNS", "ps": "\u4e00\u6b3e\u96c6\u5185\u5bb9\u7ba1\u7406\u4e0e\u793e\u533a\u4e92\u52a8\u4e3a\u4e00\u4f53\u7684\u7efc\u5408\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf?", "version": "3.3", "author": "\u7c7b\u68ee\u79d1\u6280", "price": 0, "auth_price": 0, "home": "http://bbs.laysns.cn/thread/3053.html", "min_image": "/api/Pluginother/get_file?fname=image/20190821/5fc78ae80f683aed147bd10c0a33ddfb.png", "php": "72,73,74,80", "official": "http://www.laysns.cn", "enable_functions": "", "count": 591, "score": "5.0", "versions": [{"m_version": "3", "version": "3", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57fa\u4e8eThinkPHP6\u5f00\u53d1\u7684\u652f\u6301\u5927\u6570\u636e\u3001\u9ad8\u5e76\u53d1\u7684\uff0c\u8f7b\u91cf\u7ea7\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "download": "other/20210608/fd21ddaa055b01d9e9627ae61d6b6a1c.zip", "md5": "146e1f417585c6fe8192acf934ea9219", "size": 15500056}]}, {"id": 600801671, "type": 1, "sort": 5, "name": "idcadmin", "title": "\u670d\u52a1\u5668\u5907\u5fd8\u7ba1\u7406\u7cfb\u7edf", "ps": "\u7528\u4e8e\u8bb0\u5f55\u641c\u7d22\u67e5\u8be2\u670d\u52a1\u5668\u4fe1\u606f.?", "version": "1.0", "author": "gacjie", "price": 0, "auth_price": 0, "home": "https://www.gacjie.cn/post-5.html", "min_image": "/api/Pluginother/get_file?fname=image/20210223/af9a069a1d6c3fd9afcbbb9279a053c7.png", "php": "56,70,71,72,73,74", "official": "https://www.gacjie.cn/post-5.html", "enable_functions": "", "count": 550, "score": "5.0", "versions": [{"m_version": "1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7528\u4e8e\u8bb0\u5f55\u641c\u7d22\u67e5\u8be2\u670d\u52a1\u5668\u4fe1\u606f.", "download": "other/20210223/a468b0a2cf2e65165e2e42447be9d79d.zip", "md5": "30461750ce20377458ee47da75594e8f", "size": 19811538}]}, {"id": 600801768, "type": 1, "sort": 5, "name": "siyucms", "title": "SIYUCMS \u5feb\u901f\u5f00\u53d1\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf", "ps": "ThinkPHP6.0 + AdminLTE \u5f00\u53d1\u7684\u5efa\u7ad9\u7cfb\u7edf?", "version": "6.1.7", "author": "SIYUCMS", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=80950", "min_image": "/api/Pluginother/get_file?fname=image/20211207/abed2f58321ee744d70003a504fed997.png", "php": "72,73,74,80", "official": "https://siyucms.com", "enable_functions": "", "count": 535, "score": "5.0", "versions": [{"m_version": "6", "version": "1.7", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "", "download": "other/20220526/f6ba6f1a4a167d2f5a4df06008650914.zip", "md5": "bc6ed0ef8f95e3dd161c01ac9f6c66ba", "size": 26520566}]}, {"id": 600801760, "type": 1, "sort": 5, "name": "funadmin", "title": "funadmin", "ps": "\u57fa\u4e8eTP6\u548clayui\u7684\u6a21\u5757\u5316\u5f00\u53d1\u7cfb\u7edf?", "version": "2.5.0", "author": "funadmin", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-75870-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210914/71c03477ff335c2235634c0d21fc753b.png", "php": "74,80,81", "official": "https://www.funadmin.com/", "enable_functions": "putenv", "count": 430, "score": "5.0", "versions": [{"m_version": "2", "version": "5.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "TP6+Layui \u6781\u901f\u5f00\u53d1\u6846\u67b6", "download": "other/20220601/4eca9466db0338cbe751c6496ed5dda5.zip", "md5": "8b0307d2baad6f87bd5f7e8d6b49a8be", "size": 22285658}]}, {"id": 600801728, "type": 6, "sort": 5, "name": "tpflow", "title": "PHP\u5f00\u6e90\u5de5\u4f5c\u6d41\u5f15\u64ce-tpflow", "ps": "PHP\u5f00\u6e90\u5de5\u4f5c\u6d41\u5f15\u64ce?", "version": "5.0.7", "author": "Guoguo", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-69423-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20210526/4f79f971957c0bebd95d37ffb83e3bc5.png", "php": "70,71,72,73,80", "official": "http://tpflow.cojz8.com", "enable_functions": "", "count": 426, "score": "5.0", "versions": [{"m_version": "5", "version": "0.7", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u591a\u7248\u672c\u4f18\u5316", "download": "other/20210526/e3097d6a7b477e79b30b7ad8a23bd108.zip", "md5": "9e59abad890af7ac9469a6cddc8a3073", "size": 2809350}]}, {"id": 600801788, "type": 1, "sort": 5, "name": "rrzcms", "title": "\u4eba\u4eba\u7ad9CMS", "ps": "\u4eba\u4eba\u7ad9CMS\u662f\u57fa\u4e8eTP6.0\u5f00\u53d1\u7684\u4f01\u4e1a\u7f51\u7ad9\u5efa\u7ad9\u7cfb\u7edf?", "version": "1.3.8", "author": "\u4eba\u4eba\u7ad9CMS", "price": 0, "auth_price": 0, "home": "https://www.rrzcms.com/newsinfo/5129.html", "min_image": "/api/Pluginother/get_file?fname=image/20220308/2eaf519a50013bc6004e457167bb7399.png", "php": "71,72,73,74,80,81", "official": "http://www.rrzcms.com", "enable_functions": "", "count": 375, "score": "5.0", "versions": [{"m_version": "1", "version": "3.8", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u4eba\u4eba\u7ad91.3.8\u7248\u672c", "download": "other/20220308/17437a0f6709833976b954e55a1b4495.zip", "md5": "79f83a572625f2dd2ddac815a437adf8", "size": 17840995}]}, {"id": 600801782, "type": 1, "sort": 0, "name": "idccms", "title": "\u7f51\u949bIDC\u4e91\u7ba1\u7406\u7cfb\u7edf", "ps": "\u57df\u540d\u7a7a\u95f4\u670d\u52a1\u5668\u4e3b\u63a7\u7b49\u4ee3\u7406\u6a21\u5757\uff0c\u652f\u6301\u661f\u5916\u3001\u666f\u5b89\u3001\u521b\u68a6\u7b49\u63a5\u53e3?", "version": "1.15", "author": "\u7f51\u949b\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-84635-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220205/e9b72d81eb8774e745e81b5a1df30143.png", "php": "53,54,55,56,70,71,72,73", "official": "http://idccms.com/", "enable_functions": "", "count": 358, "score": 0, "versions": [{"m_version": "1", "version": "15", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u57df\u540d\u7a7a\u95f4\u670d\u52a1\u5668\u4e3b\u63a7\u7b49\u4ee3\u7406\u6a21\u5757\uff0c\u652f\u6301\u661f\u5916\u3001\u666f\u5b89\u3001\u521b\u68a6\u7b49\u63a5\u53e3", "download": "other/20220312/04c475a2d9b6292d8677b9d73d0ca7d2.zip", "md5": "4d260820fada1e3aa1464cb7abfce42d", "size": 8314431}]}, {"id": 600801791, "type": 4, "sort": 0, "name": "blog", "title": "\u9b54\u4f17\u535a\u5ba2\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u4e00\u4e2a\u6709\u8bbe\u8ba1\u611f\u7684\u535a\u5ba2\u7cfb\u7edf?", "version": "v4.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-78335-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220325/be556dbe2b64050d7df9723e18bfc600.png", "php": "56,70", "official": "https://www.tecmz.com/product/blog", "enable_functions": "shell_exec,proc_open,putenv", "count": 297, "score": 0, "versions": [{"m_version": "v4", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u529f\u80fd\u5347\u7ea7\uff0c\u7cfb\u7edf\u4e8b\u4ef6\u589e\u5f3a", "download": "other/20220325/54cb362e216c50c50875fb835249e2d5.zip", "md5": "ffa0dbc6abd53ca52167f8f9239d2be4", "size": 17932977}]}, {"id": 600801780, "type": 1, "sort": 5, "name": "chalide", "title": "\u67e5\u7acb\u5f97\u4e07\u80fd\u641c", "ps": "\u7f16\u7a0b\u8fd0\u7ef4\u5fc5\u5907\u901a\u7528\u5df2\u6709\u8868\u4e07\u80fd\u641cMysql\u5e26\u540e\u53f0?", "version": "V1.0", "author": "\u67e5\u7acb\u5f97", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-84040-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220126/29c7fe8719aa17106ed20a325aebd621.png", "php": "54,55,56,70,71,72,73", "official": "http://www.chalide.com", "enable_functions": "", "count": 258, "score": "5.0", "versions": [{"m_version": "V1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u7f16\u7a0b\u8fd0\u7ef4\u5fc5\u5907\u901a\u7528\u5df2\u6709\u8868\u4e07\u80fd\u641cMysql\u5e26\u540e\u53f0", "download": "other/20220128/d0755c444abb04c73112a39139a9749c.zip", "md5": "6f05d312154e86810d331dc1a85de528", "size": 23304}]}, {"id": 600801783, "type": 5, "sort": 5, "name": "dt_free", "title": "\u968f\u5fc3\u5730\u63a8", "ps": "\u968f\u5fc3\u79d1\u6280\u5730\u63a8\u7cfb\u7edf?", "version": "1.0", "author": "\u968f\u5fc3\u79d1\u6280", "price": 0, "auth_price": 0, "home": "http://www.sxsxjzw.com/index.html", "min_image": "/api/Pluginother/get_file?fname=image/20220217/998e1b1d3b8d5f34c10032315e64e747.png", "php": "56,70,71,72,73", "official": "http://www.sxsxjzw.com/index.html", "enable_functions": "", "count": 258, "score": "5.0", "versions": [{"m_version": "1", "version": "0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u968f\u5fc3\u5730\u63a8\u65b0\u7248\u53d1\u5e03\uff01", "download": "other/20220217/79a1f7932954dc6342da92c7e9126d99.zip", "md5": "2e500c21f80522b7149fde83bca277e8", "size": 25571955}]}, {"id": 600801786, "type": 6, "sort": 5, "name": "moran_iapp", "title": "\u9ed8\u7136iApp\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf", "ps": "\u57fa\u4e8ethinkphp5.1, \u5b89\u88c5\u65b9\u4fbf\u6613\u4e0a\u624b.?", "version": "5.4", "author": "\u5c0f\u6ee11221", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=86264", "min_image": "/api/Pluginother/get_file?fname=image/20220228/43e0cd138ef1abce7ca73bcadd74964c.png", "php": "56,70,71,72,73,74", "official": "http://moranblog.cn/", "enable_functions": "", "count": 234, "score": "5.0", "versions": [{"m_version": "5", "version": "4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "Issue\uff0c\u5410\u69fd\uff0c\u5efa\u8bae\u7b49 \u8bf7\u52a0\u7fa4\uff1a219348005", "download": "other/20220402/77bec37cf460d310e606085f60a62773.zip", "md5": "a5ef366c22b92fb01e6d65b8881f8a33", "size": 12261425}]}, {"id": 600801789, "type": 1, "sort": 5, "name": "modstart_laravel9", "title": "ModStartCMS Laravel 9.0\u7248", "ps": "\u6a21\u5757\u5316\u5efa\u7ad9\u7cfb\u7edf?", "version": "v4.0.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-76287-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220324/75e6c2751f28cb8c33c1a4f3b38c1861.png", "php": "80,81", "official": "https://modstart.com/", "enable_functions": "shell_exec,proc_open,putenv", "count": 200, "score": "5.0", "versions": [{"m_version": "v4", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "CMS\u529f\u80fd\u589e\u5f3a\uff0c\u7528\u6237\u7ba1\u7406\u4f18\u5316", "download": "other/20220525/aa3443dada333a68ba8d83a48f224814.zip", "md5": "061b2fc098599b2ecd36ed5f542e0d33", "size": 31143657}]}, {"id": 600801801, "type": 6, "sort": 5, "name": "openblock", "title": "OpenBlock", "ps": "\u56fe\u5f62\u5316\u7f16\u7a0b\u8bed\u8a00\uff0c\u53ef\u4ee5\u8fd0\u884c\u5728\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u548c\u9e3f\u8499\u7b49\u73af\u5883\u3002?", "version": "1.01", "author": "\u5510\u5948\u5c18", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=89210&page=1&extra=#pid361633", "min_image": "/api/Pluginother/get_file?fname=image/20220408/76d527eb464f4295d69630d2b574a15a.png", "php": "53,54,55,56,70,71,72,73", "official": "https://gitee.com/openblock", "enable_functions": "", "count": 138, "score": "5.0", "versions": [{"m_version": "1", "version": "01", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u6dfb\u52a0\u4e0a\u4f20\u5a92\u4f53\u8d44\u6e90\u529f\u80fd", "download": "other/20220428/a86ec70320784030ff96738d9c125314.zip", "md5": "c9f95466d4ef067916df8ca3e8843b6f", "size": 8377459}]}, {"id": 600801800, "type": 3, "sort": 0, "name": "wenda", "title": "\u9b54\u4f17\u95ee\u7b54\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u8f7b\u91cf\u3001\u7b80\u5355\u3001\u9ad8\u53ef\u7528\u7684\u95ee\u7b54\u7cfb\u7edf?", "version": "v1.6.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-81310-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220406/6ed3af00a0f93f07c6be275060f3fc1e.png", "php": "56,70", "official": "https://www.tecmz.com/product/wenda", "enable_functions": "shell_exec,proc_open,putenv", "count": 136, "score": 0, "versions": [{"m_version": "v1", "version": "6.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5347\u7ea7\uff0c\u56fe\u7247\u7c98\u8d34\u4e0a\u4f20", "download": "other/20220406/4583e3c3cdc93b34fa5420b496f39dc8.zip", "md5": "417903b07402fb56fc95ee86581668d6", "size": 18381680}]}, {"id": 600801721, "type": 1, "sort": 5, "name": "hlframework_", "title": "HLFramework \u54c8\u6797\u6846\u67b6\u7cfb\u7edf", "ps": "\u5f00\u6e90SaaS\u5fae\u670d\u52a1\u96c6\u7fa4\u5f0f\u6846\u67b6 \u95e8\u5e97\u6536\u94f6\u4f1a\u5458 \u4f01\u5fae \u805a\u5408\u652f\u4ed8?", "version": "1.0.4", "author": "\u54c8\u6797\u79d1\u6280", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-68834-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20211030/3370aa4a99bf6f34b29b180d06341b05.png", "php": "74", "official": "https://www.halin.net", "enable_functions": "", "count": 134, "score": "5.0", "versions": [{"m_version": "1", "version": "0.4", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 1, "version_msg": "\u5f00\u6e90\u5fae\u670d\u52a1\u96c6\u7fa4\u5f0f\u5e94\u7528,\u4e13\u4e1a\u4f1a\u5458\u7ba1\u7406\u8425\u9500 \u95e8\u5e97\u6536\u94f6 \u4f01\u4e1a\u5fae\u4fe1SCRM \u6570\u5b57\u652f\u4ed8\u7b49", "download": "other/20220404/9f9fd4e64745175d778ccc1de3608735.zip", "md5": "9a3dbb1ae751e6523835ec2b88c83697", "size": 40666}]}, {"id": 600801810, "type": 1, "sort": 5, "name": "hkcms", "title": "HkCms\u5f00\u6e90\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf - \u514d\u6388\u6743\u3001\u6c38\u4e45\u5546\u7528", "ps": "\u5f00\u6e90\u514d\u6388\u6743\u3001\u6c38\u4e45\u5546\u7528\u3001\u9ad8\u6027\u80fd\u3001\u7b80\u5355\u6613\u7528\u3001\u65b9\u4fbf\u4e8c\u5f00\u7684CMS\u7cfb\u7edf?", "version": "v2.1.220504", "author": "HkCms", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-92422-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220518/f883fcb5b7f579f08456dc6373da1678.png", "php": "72,73,74,80,81", "official": "http://www.hkcms.cn", "enable_functions": "chmod", "count": 118, "score": "5.0", "versions": [{"m_version": "v2", "version": "1.220504", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u5f00\u6e90\u514d\u6388\u6743\u3001\u6c38\u4e45\u5546\u7528\u3001\u9ad8\u6027\u80fd\u3001\u7b80\u5355\u6613\u7528\u3001\u65b9\u4fbf\u4e8c\u5f00\u7684CMS\u7cfb\u7edf", "download": "other/20220518/c0229685f67295d125a0bf28709aa622.zip", "md5": "0caeddbb87499aac3dc49d577b2a642e", "size": 9288921}]}, {"id": 600801802, "type": 1, "sort": 0, "name": "corp", "title": "\u9b54\u4f17\u4f01\u4e1a\u5b98\u7f51\u7cfb\u7edf-\u4f53\u9a8c\u7248", "ps": "\u5e2e\u52a9\u4f01\u4e1a\u5b8c\u7f8e\u5c55\u793a\u81ea\u5df1\u7684\u5f62\u8c61?", "version": "v4.7.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-79171-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220415/129b771a8d36aee10d94f676f16b2ad3.png", "php": "56,70", "official": "https://www.tecmz.com/product/corp", "enable_functions": "shell_exec,proc_open,putenv", "count": 85, "score": 0, "versions": [{"m_version": "v4", "version": "7.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u540e\u53f0\u754c\u9762\u5347\u7ea7\uff0c\u5bcc\u6587\u672c\u56fe\u7247\u7c98\u8d34\u4e0a\u4f20", "download": "other/20220415/1126c9921940276158488ebf229c5d37.zip", "md5": "e33f38bbde261b32ebd1a33e333f1973", "size": 18165973}]}, {"id": 600801808, "type": 1, "sort": 5, "name": "sokingcms", "title": "\u641c\u5ba2CMS", "ps": "\u591a\u57ce\u5e02\u4f01\u4e1a\u5206\u7ad9\u7ba1\u7406\u7cfb\u7edf\uff0c\u4e00\u952e\u751f\u6210300\u591a\u4e2a\u57ce\u5e02?", "version": "1.2", "author": "\u641c\u5ba2CMS", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/thread-90812-1-1.html", "min_image": "/api/Pluginother/get_file?fname=image/20220428/46a40143460c0ee9091b3eebfaa01f44.png", "php": "71,72,73", "official": "www.sokingcms.com", "enable_functions": "", "count": 61, "score": "5.0", "versions": [{"m_version": "1", "version": "2", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "\u589e\u52a0\u7528\u6237\u4f53\u9a8c\u65f6\u957f\uff0c\u4f18\u5316\u90e8\u5206\u6807\u7b7e\u8c03\u7528", "download": "other/20220524/b2b24958046ad576b7e269311f90b07f.zip", "md5": "53ad8bf2e6bad18b27b79b64b6fd16a8", "size": 52690855}]}, {"id": 600801812, "type": 4, "sort": 5, "name": "modstartblog", "title": "ModStartBlog\u73b0\u4ee3\u5316\u7684\u535a\u5ba2\u7cfb\u7edf", "ps": "\u57fa\u4e8e Apache 2.0 \u5f00\u6e90\u534f\u8bae\uff0c\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?", "version": "v5.0.0", "author": "\u9b54\u4f17", "price": 0, "auth_price": 0, "home": "https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;tid=93176", "min_image": "/api/Pluginother/get_file?fname=image/20220530/a67c4a1f6d82124cf66a043a479bde65.png", "php": "56,70", "official": "https://blog.demo.tecmz.com/", "enable_functions": "shell_exec,proc_open,putenv", "count": 45, "score": "5.0", "versions": [{"m_version": "v5", "version": "0.0", "dependnet": "", "mem_limit": 32, "cpu_limit": 1, "os_limit": 0, "version_msg": "ModStartBlog\u73b0\u4ee3\u5316\u4e2a\u4eba\u535a\u5ba2\u7cfb\u7edf", "download": "other/20220530/8d70b98264fb120fe2330fd15ae734f3.zip", "md5": "602c5284d9c6d41c622e779e9ea4cb22", "size": 29796177}]}], "type": [{"id": 5, "title": "\u8fd0\u884c\u73af\u5883", "sort": 2, "ps": "\u8fd0\u884c\u73af\u5883", "icon": "icon"}, {"id": 6, "title": "\u7cfb\u7edf\u5de5\u5177", "sort": 3, "ps": "\u7cfb\u7edf\u5de5\u5177", "icon": "icon"}, {"id": 7, "title": "\u5b9d\u5854\u63d2\u4ef6", "sort": 4, "ps": "\u5b9d\u5854\u63d2\u4ef6", "icon": "icon"}, {"id": 8, "title": "\u4e13\u4e1a\u7248\u63d2\u4ef6", "sort": 5, "ps": "\u4e13\u4e1a\u7248\u63d2\u4ef6", "icon": "icon"}, {"id": 12, "title": "\u4f01\u4e1a\u7248\u63d2\u4ef6", "sort": 6, "ps": "\u4f01\u4e1a\u7248\u63d2\u4ef6", "icon": ""}, {"id": 10, "title": "\u7b2c\u4e09\u65b9\u5e94\u7528", "sort": 7, "ps": "\u7b2c\u4e09\u65b9\u5e94\u7528", "icon": "icon"}, {"id": 11, "title": "\u4e00\u952e\u90e8\u7f72", "sort": 8, "ps": "\u4e00\u952e\u90e8\u7f72\u7b2c\u4e09\u65b9\u6e90\u7801", "icon": ""}], "dep_type": [{"tid": 1, "title": "\u5efa\u7ad9"}, {"tid": 2, "title": "\u5546\u57ce"}, {"tid": 3, "title": "\u8bba\u575b"}, {"tid": 4, "title": "\u535a\u5ba2"}, {"tid": 5, "title": "\u5fae\u4fe1"}, {"tid": 6, "title": "\u6846\u67b6"}]} \ No newline at end of file diff --git a/data/win/config/plugin_list.json b/data/win/config/plugin_list.json new file mode 100644 index 0000000..c4be4c2 --- /dev/null +++ b/data/win/config/plugin_list.json @@ -0,0 +1 @@ +{"type":[{"id":5,"title":"\u8fd0\u884c\u73af\u5883","title_en":"Deployment","sort":2,"ps":"\u8fd0\u884c\u73af\u5883","ps_en":"Deployment environment","icon":"icon","panel_en":1},{"id":6,"title":"\u7cfb\u7edf\u5de5\u5177","title_en":"Tools","sort":3,"ps":"\u7cfb\u7edf\u5de5\u5177","ps_en":"System tools","icon":"icon","panel_en":1},{"id":7,"title":"\u5b9d\u5854\u63d2\u4ef6","title_en":"Plug-ins","sort":4,"ps":"\u5b9d\u5854\u63d2\u4ef6","ps_en":"aaPanel plug-ins","icon":"icon","panel_en":1},{"id":8,"title":"\u4e13\u4e1a\u7248\u63d2\u4ef6","title_en":"","sort":5,"ps":"\u4e13\u4e1a\u7248\u63d2\u4ef6","ps_en":"","icon":"icon","panel_en":0},{"id":12,"title":"\u4f01\u4e1a\u7248\u63d2\u4ef6","title_en":"","sort":6,"ps":"\u4f01\u4e1a\u7248\u63d2\u4ef6","ps_en":"","icon":"","panel_en":0},{"id":10,"title":"\u7b2c\u4e09\u65b9\u5e94\u7528","title_en":"Third-party Plug-ins","sort":7,"ps":"\u7b2c\u4e09\u65b9\u5e94\u7528","ps_en":"Third-party Plug-ins","icon":"icon","panel_en":1},{"id":11,"title":"\u4e00\u952e\u90e8\u7f72","title_en":"","sort":8,"ps":"\u4e00\u952e\u90e8\u7f72\u7b2c\u4e09\u65b9\u6e90\u7801","ps_en":"","icon":"","panel_en":0}],"list":[{"id":114,"os":"Windows","pid":100000031,"type":8,"sort":970,"price":39.8,"name":"btFilter","title":"\u5821\u5854\u9632\u7be1\u6539","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63a8\u8350\uff1a\u57fa\u4e8e\u5185\u6838\u9a71\u52a8\u9632\u62a4\u6280\u672f\uff0c\u80fd\u6709\u6548\u7684\u9632\u6b62\u6587\u4ef6\u88ab\u6076\u610f\u6302\u9a6c\u3001\u6076\u610f\u7be1\u6539\u7b49\u884c\u4e3a \uff08\u652f\u63012008 R2\/2012 R2\/2016\/2019\u5b8c\u6574\u7248\u7cfb\u7edf)<\/span> >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"tamper_proof","install_checks":"{SETUP_PATH}\/panel\/plugin\/btFilter","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/btFilter","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":169,"soft_id":114,"m_version":"3","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u90e8\u5206\u540e\u7f00\u4e0d\u62e6\u622a\n","os_limit":0,"beta":0,"update_time":1634779475},{"id":144,"soft_id":114,"m_version":"3","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u9996\u6b21\u6dfb\u52a0\u4e0d\u751f\u6548
    ","os_limit":0,"beta":0,"update_time":1630390817},{"id":94,"soft_id":114,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u53d1\u5e03","os_limit":0,"beta":0,"update_time":1626946154}],"endtime":0},{"id":129,"os":"Windows","pid":100000052,"type":12,"sort":972,"price":99,"name":"win2ban","title":"\u5821\u5854\u9632\u7206\u7834","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u81ea\u52a8\u62e6\u622a\u6076\u610f\u653b\u51fb\u670d\u52a1\u5668\uff0c\u5b9e\u65f6\u76d1\u542c\u7528\u6237\u521b\u5efa\u3001\u4fee\u6539\u3001\u63d0\u6743\u7b49\u53d8\u5316\uff0c\u5e76\u8fdb\u884c\u90ae\u4ef6\/\u9489\u9489\u901a\u77e5
    >> \u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/win2ban\/win2ban_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/win2ban","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":99,"soft_id":129,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627012907}],"endtime":0},{"id":125,"os":"Windows","pid":100000049,"type":12,"sort":980,"price":99,"name":"php_filter","title":"\u5821\u5854PHP\u5b89\u5168\u9632\u62a4","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"PHP\u5185\u6838\u7ea7\u9632\u5fa1\u6a21\u5757\uff0c\u53ef\u9488\u5bf9\u9879\u76ee\u8fdb\u884c\u5e95\u5c42\u8fc7\u6ee4\uff0c\u5f7b\u5e95\u675c\u7edd\u8de8\u7ad9\/\u7cbe\u51c6\u9632\u6e17\u900f\/\u7cbe\u51c6\u9632\u63d0\u6743\uff0c\u6ce8\u610f\uff1a\u4e0d\u652f\u6301PHP5.2<\/span> >> \u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/php_filter\/php_filter_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/php_filter","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/php_filter.html","ex1":"","ex2":"","ex3":"","versions":[{"id":98,"soft_id":125,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627012174}],"endtime":0},{"id":139,"os":"Windows","pid":0,"type":7,"sort":981,"price":0,"name":"speed_apache","title":"\u5821\u5854apache\u7ad9\u70b9\u52a0\u901f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8eapache\u9875\u9762\u7f13\u5b58\u7684\u7f51\u7ad9\u52a0\u901f\u63d2\u4ef6","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"apache,memcached","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/speed_apache\/speed_apache_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/speed_apache\/","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/site_speed.html","ex1":"","ex2":"","ex3":"","versions":[{"id":106,"soft_id":139,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627033883}],"endtime":0},{"id":134,"os":"Windows","pid":0,"type":7,"sort":981,"price":0,"name":"speed_nginx","title":"\u5821\u5854nginx\u7ad9\u70b9\u52a0\u901f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8enginx\u9875\u9762\u7f13\u5b58\u7684\u7f51\u7ad9\u52a0\u901f\u63d2\u4ef6,\u63a8\u8350WordPress\u7528\u6237\u5b89\u88c5\uff0c\u6548\u679c\u663e\u8457\uff0c\u76ee\u524d\u4ec5\u652f\u6301Nginx","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"nginx","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/speed_nginx\/speed_nginx_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/speed_nginx\/","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/site_speed.html","ex1":"","ex2":"","ex3":"","versions":[{"id":146,"soft_id":134,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u83b7\u53d6\u7f13\u5b58\u547d\u4e2d\u9519\u8bef","os_limit":0,"beta":0,"update_time":1630573767},{"id":105,"soft_id":134,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627030815}],"endtime":0},{"id":79,"os":"Windows","pid":100000018,"type":8,"sort":985,"price":49.8,"name":"waf_iis","title":"IIS\u7f51\u7ad9\u9632\u706b\u5899","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6709\u6548\u62e6\u622aSQL \u6ce8\u5165\u3001XSS\u8de8\u7ad9\u3001\u6076\u610f\u4ee3\u7801\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5e38\u89c1\u653b\u51fb\uff0c\u8fc7\u6ee4\u6076\u610f\u8bbf\u95ee\uff0c\u964d\u4f4e\u6570\u636e\u6cc4\u9732\u7684\u98ce\u9669\uff0c\u4fdd\u969c\u7f51\u7ad9\u7684\u53ef\u7528\u6027\u3002 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"iis,memcached","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/waf_iis\/waf_iis_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/waf_iis","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":157,"soft_id":79,"m_version":"5.1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1632724468},{"id":85,"soft_id":79,"m_version":"5.0","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u66f4\u65b0","os_limit":0,"beta":0,"update_time":1626769814}],"endtime":0},{"id":86,"os":"Windows","pid":100000018,"type":8,"sort":986,"price":49.8,"name":"waf_nginx","title":"Nginx\u7f51\u7ad9\u9632\u706b\u5899","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6709\u6548\u62e6\u622aSQL \u6ce8\u5165\u3001XSS\u8de8\u7ad9\u3001\u6076\u610f\u4ee3\u7801\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5e38\u89c1\u653b\u51fb\uff0c\u8fc7\u6ee4\u6076\u610f\u8bbf\u95ee\uff0c\u964d\u4f4e\u6570\u636e\u6cc4\u9732\u7684\u98ce\u9669\uff0c\u4fdd\u969c\u7f51\u7ad9\u7684\u53ef\u7528\u6027\u3002 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"nginx","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/waf_nginx\/waf_nginx_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/waf_nginx","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":188,"soft_id":86,"m_version":"5","version":"2","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"2021-1-10 \u66f4\u65b0\n1.\u4f18\u5316IP\u9ed1\u767d\u540d\u5355\u5bfc\u5165\u5bfc\u51fa\n2.\u4f18\u5316\u6587\u4ef6\u4e0a\u4f20\u8fc7\u6ee4\u95ee\u9898","os_limit":0,"beta":0,"update_time":1641803111},{"id":150,"soft_id":86,"m_version":"5","version":"1","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1630980792},{"id":111,"soft_id":86,"m_version":"5","version":"0","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1627351399}],"endtime":0},{"id":78,"os":"Windows","pid":100000018,"type":8,"sort":987,"price":49.8,"name":"waf_apache","title":"Apache\u7f51\u7ad9\u9632\u706b\u5899","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6709\u6548\u62e6\u622aSQL \u6ce8\u5165\u3001XSS\u8de8\u7ad9\u3001\u6076\u610f\u4ee3\u7801\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5e38\u89c1\u653b\u51fb\uff0c\u8fc7\u6ee4\u6076\u610f\u8bbf\u95ee\uff0c\u964d\u4f4e\u6570\u636e\u6cc4\u9732\u7684\u98ce\u9669\uff0c\u4fdd\u969c\u7f51\u7ad9\u7684\u53ef\u7528\u6027\u3002 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"apache,memcached","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/waf_apache\/waf_apache_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/waf_apache","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":187,"soft_id":78,"m_version":"5","version":"2","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"2021-1-5\u65e5\u66f4\u65b0\n1.\u4f18\u5316\u65e5\u5fd7\u663e\u793a\n2.\u4f18\u5316POST \u62e6\u622a\n3.\u4f18\u5316from-data\u62e6\u622a\n4.\u4f18\u5316json \u8fc7\u6ee4","os_limit":0,"beta":0,"update_time":1641375292},{"id":151,"soft_id":78,"m_version":"5","version":"1","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1630980818},{"id":112,"soft_id":78,"m_version":"5","version":"0","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1627352726}],"endtime":0},{"id":116,"os":"Windows","pid":100000019,"type":8,"sort":993,"price":39.8,"name":"total_iis","title":"IIS\u7f51\u7ad9\u76d1\u63a7\u62a5\u8868","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u5206\u6790\u7f51\u7ad9\u8fd0\u884c\u72b6\u51b5\uff0c\u5b9e\u65f6\u7cbe\u786e\u7edf\u8ba1\u7f51\u7ad9\u6d41\u91cf\u3001ip\u3001uv\u3001pv\u3001\u8bf7\u6c42\u3001\u8718\u86db\u7b49\u6570\u636e\uff0c\u7f51\u7ad9SEO\u4f18\u5316\u5229\u5668","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"iis,memcached","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/total_iis\/total_iis_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/total_iis","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":213,"soft_id":116,"m_version":"5","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u4e2d\u6587uri\u83b7\u53d6\u5931\u8d25\u95ee\u9898","os_limit":0,"beta":0,"update_time":1646633848},{"id":91,"soft_id":116,"m_version":"5","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1626940884}],"endtime":0},{"id":87,"os":"Windows","pid":100000019,"type":8,"sort":993,"price":39.8,"name":"total_nginx","title":"Nginx\u7f51\u7ad9\u76d1\u63a7\u62a5\u8868","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u5206\u6790\u7f51\u7ad9\u8fd0\u884c\u72b6\u51b5\uff0c\u5b9e\u65f6\u7cbe\u786e\u7edf\u8ba1\u7f51\u7ad9\u6d41\u91cf\u3001ip\u3001uv\u3001pv\u3001\u8bf7\u6c42\u3001\u8718\u86db\u7b49\u6570\u636e\uff0c\u7f51\u7ad9SEO\u4f18\u5316\u5229\u5668","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"nginx","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/total_nginx\/total_nginx_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/total_nginx","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":121,"soft_id":87,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1627458092}],"endtime":0},{"id":81,"os":"Windows","pid":100000019,"type":8,"sort":994,"price":39.8,"name":"total_apache","title":"Apache\u7f51\u7ad9\u76d1\u63a7\u62a5\u8868","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u5206\u6790\u7f51\u7ad9\u8fd0\u884c\u72b6\u51b5\uff0c\u5b9e\u65f6\u7cbe\u786e\u7edf\u8ba1\u7f51\u7ad9\u6d41\u91cf\u3001ip\u3001uv\u3001pv\u3001\u8bf7\u6c42\u3001\u8718\u86db\u7b49\u6570\u636e\uff0c\u7f51\u7ad9SEO\u4f18\u5316\u5229\u5668","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"apache,memcached","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/total_apache\/total_apache_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/total_apache","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":183,"soft_id":81,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590dphp-cgi.exe\u4e0d\u91ca\u653ebug","os_limit":0,"beta":0,"update_time":1640231783},{"id":122,"soft_id":81,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1627458478}],"endtime":0},{"id":141,"os":"Windows","pid":100000027,"type":8,"sort":995,"price":26.8,"name":"load_balance","title":"IIS\u8d1f\u8f7d\u5747\u8861","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8eIIS\u7684\u8d1f\u8f7d\u5747\u8861\uff0c\u7528\u4e8e\u5c06\u5de5\u4f5c\u8d1f\u8f7d\u5206\u5e03\u5230\u591a\u4e2a\u670d\u52a1\u5668\u6765\u63d0\u9ad8\u7f51\u7ad9\u3001\u5e94\u7528\u3001\u6570\u636e\u5e93\u6216\u5176\u4ed6\u670d\u52a1\u7684\u6027\u80fd\u548c\u53ef\u9760\u6027 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"iis","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/load_balance","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/load_balance","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":92,"soft_id":141,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u53d1\u5e03","os_limit":0,"beta":0,"update_time":1626941622}],"endtime":0},{"id":96,"os":"Windows","pid":100000027,"type":8,"sort":995,"price":26.8,"name":"load_leveling","title":"Nginx\u8d1f\u8f7d\u5747\u8861","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8enginx\u7684\u8d1f\u8f7d\u5747\u8861\uff0capache\u6216\u8005iis\u73af\u5883\u7528\u6237\u8bf7\u4e0d\u8981\u5b89\u88c5 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/load_leveling","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/load_leveling","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":107,"soft_id":96,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627035316}],"endtime":0},{"id":98,"os":"Windows","pid":100000028,"type":8,"sort":996,"price":33.8,"name":"rsync","title":"Windows\u6587\u4ef6\u540c\u6b65\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8ersync\u5f00\u53d1\u652f\u6301\u6587\u4ef6\u540c\u6b65\u5de5\u5177,\u652f\u6301\u540c\u6b65\u7f51\u7ad9\u6587\u4ef6\u5230Linux\/Windows\u7b49\u7cfb\u7edf >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/rsync","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/rsync","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":93,"soft_id":98,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u53d1\u5e03","os_limit":0,"beta":0,"update_time":1626942686}],"endtime":0},{"id":94,"os":"Windows","pid":100000024,"type":8,"sort":997,"price":9.8,"name":"msg_push","title":"\u5f02\u5e38\u76d1\u63a7\u63a8\u9001","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u53ef\u5bf9\u670d\u52a1\u5668\u3001\u7ad9\u70b9\u72b6\u6001\u8fdb\u884c\u76d1\u63a7\u63a8\u9001 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/msg_push","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/msg_push","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":153,"soft_id":94,"m_version":"3","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u90ae\u4ef6\u4e0d\u63a8\u9001BUG","os_limit":0,"beta":0,"update_time":1631007708},{"id":126,"soft_id":94,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627958557}],"endtime":0},{"id":95,"os":"Windows","pid":100000026,"type":8,"sort":998,"price":19.8,"name":"masterslave","title":"MySQL\u4e3b\u4ece\u540c\u6b65","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u8f7b\u677e\u5b9e\u73b0MySQL\u4e00\u4e3b\u591a\u4ece\u590d\u5236\uff0c\u652f\u6301\u540c\u6b65\u5230Linux\uff0c\u9700\u8981MySQL5.5\u53ca\u4ee5\u4e0a\u7248\u672c >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"mysql","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/masterslave","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/masterslave","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":108,"soft_id":95,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627035606}],"endtime":0},{"id":56,"os":"Windows","pid":0,"type":5,"sort":1001,"price":0,"name":"iis","title":"IIS","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Web\u670d\u52a1\u5668\uff0cIIS\u662f\u7531\u5fae\u8f6f\u516c\u53f8\u63d0\u4f9b\u7684\u57fa\u4e8e\u8fd0\u884cMicrosoft Windows\u7684\u4e92\u8054\u7f51\u57fa\u672c\u670d\u52a1\uff0c\u63a8\u8350\u4f7f\u7528 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"7.5","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"apache,nginx","install_checks":"server|W3SVC","uninsatll_checks":"","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":56,"m_version":"10.0","version":"","dependnet":"","mem_limit":512,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":49,"os":"Windows","pid":0,"type":5,"sort":1002,"price":0,"name":"apache","title":"Apache","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Web\u670d\u52a1\u5668\uff0c\u4e16\u754c\u6392\u540d\u7b2c\u4e00\uff0c\u5feb\u901f\u3001\u53ef\u9760\u5e76\u4e14\u53ef\u901a\u8fc7\u7b80\u5355\u7684API\u6269\u5145\uff08\u4ec5\u652f\u6301PHP\uff09 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"{SETUP_PATH}\/apache\/bin\/httpd.exe -v|Apache\/([\\d\\.]+)","s_version":"httpd.exe","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"apache,nginx,iis","install_checks":"server|apache","uninsatll_checks":"{SETUP_PATH}\/apache","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":49,"m_version":"2.4","version":"52","dependnet":"","mem_limit":600,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":76,"os":"Windows","pid":0,"type":5,"sort":1003,"price":0,"name":"nginx","title":"Nginx","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Web\u670d\u52a1\u5668\uff0c\u8f7b\u91cf\u7ea7\uff0c\u5360\u6709\u5185\u5b58\u5c11\uff0c\u5e76\u53d1\u80fd\u529b\u5f3a\uff0cWindows\u4e0b\u6027\u80fd\u7565\u6709\u964d\u4f4e","ps_en":"","version":"{SETUP_PATH}\/nginx\/nginx.exe -v 2>&1|nginx\/(\\d+\\.\\d+.\\d+)","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"apache,nginx,iis","install_checks":"server|nginx","uninsatll_checks":"{SETUP_PATH}\/nginx","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":76,"m_version":"1.21","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u66f4\u65b0\u7248\u672c
    \n\u6ce8\u610f\uff1a\u9700\u5c06\u9762\u677f\u5347\u7ea7\u52307.2.0\u53ca\u4ee5\u4e0a\u7248\u672c<\/span>","os_limit":0},{"soft_id":76,"m_version":"1.20","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":50,"os":"Windows","pid":0,"type":5,"sort":1004,"price":0,"name":"mysql","title":"MySQL","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"MySQL\u662f\u4e00\u79cd\u5173\u7cfb\u6570\u636e\u5e93\u7ba1\u7406\u7cfb\u7edf!","ps_en":"","version":"{SERVER_PATH} -V|\\s+([\\d\\.]+(-MariaDB)?)","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"server|mysql","uninsatll_checks":"{SETUP_PATH}\/mysql\/{MYSQL_VERSION}","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":50,"m_version":"5.5","version":"62","dependnet":"","mem_limit":750,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"5.6","version":"51","dependnet":"","mem_limit":1800,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"5.7","version":"34","dependnet":"","mem_limit":3700,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"mariadb_10.1","version":"37","dependnet":"","mem_limit":750,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"8.0","version":"25","dependnet":"","mem_limit":3700,"cpu_limit":2,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"mariadb_10.5","version":"6","dependnet":"","mem_limit":2048,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"mariadb_10.2","version":"34","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"mariadb_10.3","version":"25","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"mariadb_10.4","version":"15","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":67,"os":"Windows","pid":0,"type":5,"sort":1005,"price":0,"name":"sqlserver","title":"SQL Server","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"SQL Server\u662f\u7531Microsoft\u5f00\u53d1\u548c\u63a8\u5e7f\u7684\u5173\u7cfb\u6570\u636e\u5e93\u7ba1\u7406\u7cfb\u7edf
    >>\u4f7f\u7528\u5e2e\u52a9<\/a> (\u4e0b\u8f7d\u5b8c\u6bd5\u540e\u8bf7\u624b\u52a8\u8fd0\u884c\u5b89\u88c5\u76ee\u5f55\u3010{SETUP_PATH}\/sqlserver\/setup.bat\u3011\u8fdb\u884c\u5b89\u88c5<\/span>","ps_en":"","version":"{SETUP_PATH}\/sqlserver\/version.pl","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"server|MSSQLSERVER","uninsatll_checks":"{SETUP_PATH}\/sqlserver","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":67,"m_version":"2005","version":"","dependnet":"","mem_limit":500,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":67,"m_version":"2008","version":"","dependnet":"","mem_limit":1000,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":67,"m_version":"2012","version":"","dependnet":"","mem_limit":1800,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":67,"m_version":"2014","version":"","dependnet":"","mem_limit":3000,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":67,"m_version":"2017","version":"","dependnet":"","mem_limit":4000,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":68,"os":"Windows","pid":0,"type":5,"sort":1006,"price":0,"name":"phpmyadmin","title":"phpMyAdmin","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u8457\u540dWeb\u7aefMySQL\u7ba1\u7406\u5de5\u5177","ps_en":"","version":"{SETUP_PATH}\/phpmyadmin\/version.pl","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"mysql,nginx|apache|iis","mutex":"","install_checks":"{SETUP_PATH}\/phpmyadmin\/version.pl","uninsatll_checks":"{SETUP_PATH}\/phpmyadmin","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":68,"m_version":"4.0","version":"","dependnet":"php-5.4|php-5.3","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":68,"m_version":"4.4","version":"","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":68,"m_version":"4.9","version":"","dependnet":"php-7.0|php-7.1|php-7.2|php-7.3|php-7.4","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":68,"m_version":"5.0","version":"","dependnet":"php-7.1|php-7.2|php-7.3|php-7.4","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":149,"os":"Windows","pid":100000043,"type":8,"sort":1007,"price":39.8,"name":"btapp","title":"\u5821\u5854APP","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u4f7f\u7528\u624b\u673a\u968f\u65f6\u968f\u5730\u7ba1\u7406\u60a8\u7684\u670d\u52a1\u5668\uff0c\u652f\u6301\u82f9\u679c\u548c\u5b89\u5353 > \u7ec4\u961f\u514d\u8d39\u9886\u53d6<\/a> > \u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/btapp","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/btapp","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":95,"soft_id":149,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1626947685}],"endtime":0},{"id":51,"os":"Windows","pid":0,"type":5,"sort":1007,"price":0,"name":"ftpserver","title":"FileZilla Server","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"FileZilla\u662f\u4e00\u4e2a\u514d\u8d39\u5f00\u6e90\u7684FTP\u8f6f\u4ef6\uff0c\u5206\u4e3a\u5ba2\u6237\u7aef\u7248\u672c\u548c\u670d\u52a1\u5668\u7248\u672c\uff0c\u5177\u5907\u6240\u6709\u7684FTP\u8f6f\u4ef6\u529f\u80fd","ps_en":"","version":"0.9.41","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"server|FileZilla Server","uninsatll_checks":"{SETUP_PATH}\/ftpServer","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":51,"m_version":"0.9","version":"60","dependnet":"","mem_limit":128,"cpu_limit":1,"update_msg":"\u91cd\u8981\u5b89\u5168\u66f4\u65b0\uff0c\u8bf7\u7acb\u5373\u5347\u7ea7","os_limit":0}],"endtime":0},{"id":72,"os":"Windows","pid":0,"type":7,"sort":1015,"price":0,"name":"deployment","title":"\u5b9d\u5854\u4e00\u952e\u90e8\u7f72\u6e90\u7801","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u90e8\u7f72\u5e38\u7528\u7a0b\u5e8f!","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/deployment","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/deployment","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":103,"soft_id":72,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627027945}],"endtime":0},{"id":170,"os":"Windows","pid":0,"type":7,"sort":1015,"price":0,"name":"txcdn","title":"\u817e\u8bafCDN","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u817e\u8baf\u4e91 CDN \u7d2f\u8ba1\u5f00\u653e\u4e86\u817e\u8baf\u5341\u591a\u5e74\u7684\u8282\u70b9\uff0c\u63d0\u4f9b\u4e861000+\u4e2a\u5883\u5916\u8282\u70b9\uff0c\u8986\u76d6\u5168\u740350+\u4e2a\u56fd\u5bb6\u548c\u5730\u533a\uff0c\u652f\u6301\u60a8\u7684\u4e1a\u52a1\u65e0\u7f1d\u51fa\u6d77\u3002[\u7acb\u5373\u4f7f\u7528]<\/a>->\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/txcdn","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/txcdn","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":174,"soft_id":170,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1635144747}],"endtime":0},{"id":150,"os":"Windows","pid":0,"type":7,"sort":1015,"price":0,"name":"dnspod","title":"\u817e\u8baf\u4e91DNS\u89e3\u6790","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u817e\u8baf\u4e91DNS\u89e3\u6790\u662f\u56fd\u5185\u6700\u5927\u7684\u514d\u8d39DNS\u89e3\u6790\u4ea7\u54c1\u63d0\u4f9b\u5546 [\u7acb\u5373\u4f7f\u7528]<\/a>->\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/dnspod","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/dnspod","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":101,"soft_id":150,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u66f4\u65b0\u7248\u672c","os_limit":0,"beta":0,"update_time":1627027643}],"endtime":0},{"id":53,"os":"Windows","pid":0,"type":5,"sort":1015,"price":0,"name":"memcached","title":"Memcached","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Memcached \u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684\u5206\u5e03\u5f0f\u5185\u5b58\u5bf9\u8c61\u7f13\u5b58\u7cfb\u7edf(\u8981\u4f7f\u7528PHP\u8fde\u63a5\uff0c\u9700\u5728PHP\u8bbe\u7f6e\u4e2d\u5b89\u88c5memcache\u6269\u5c55)","ps_en":"","version":"{SETUP_PATH}\/memcached\/memcached.exe -h|\\s+([\\d\\.]+)","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"server|memcached","uninsatll_checks":"{SETUP_PATH}\/memcached","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":53,"m_version":"1.6","version":"5","dependnet":"","mem_limit":512,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u66f4\u65b0","os_limit":0},{"soft_id":53,"m_version":"1.4","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":58,"os":"Windows","pid":0,"type":7,"sort":1015,"price":0,"name":"txcos","title":"\u817e\u8baf\u4e91COS","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230\u817e\u8baf\u4e91COS\u5bf9\u8c61\u5b58\u50a8\u7a7a\u95f4[\u7533\u8bf7\u8d26\u53f7]<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/txcos","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/txcos","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":116,"soft_id":58,"m_version":"5","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u652f\u6301\u6d88\u606f\u901a\u9053","os_limit":0,"beta":0,"update_time":1627454458}],"endtime":0},{"id":61,"os":"Windows","pid":0,"type":7,"sort":1018,"price":0,"name":"ftp","title":"FTP\u5b58\u50a8\u7a7a\u95f4","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230FTP\u5b58\u50a8\u7a7a\u95f4","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/ftp","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/ftp","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":118,"soft_id":61,"m_version":"5","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u652f\u6301\u6d88\u606f\u901a\u9053","os_limit":0,"beta":0,"update_time":1627456274}],"endtime":0},{"id":54,"os":"Windows","pid":0,"type":5,"sort":1019,"price":0,"name":"redis","title":"Redis","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Redis \u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684key-value\u6570\u636e\u5e93(\u8981\u4f7f\u7528PHP\u8fde\u63a5redis\uff0c\u9700\u5728PHP\u8bbe\u7f6e\u4e2d\u5b89\u88c5redis\u6269\u5c55)","ps_en":"","version":"{SETUP_PATH}\/redis\/redis-server.exe -v|v=([\\d\\.]+)","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"server|redis","uninsatll_checks":"{SETUP_PATH}\/redis","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":54,"m_version":"5.0","version":"10","dependnet":"","mem_limit":512,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u5347\u7ea7","os_limit":0},{"soft_id":54,"m_version":"3.2","version":"100","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":57,"os":"Windows","pid":0,"type":7,"sort":1020,"price":0,"name":"alioss","title":"\u963f\u91cc\u4e91OSS","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230\u963f\u91cc\u4e91OSS\u5bf9\u8c61\u5b58\u50a8\u7a7a\u95f4, \u70b9\u51fb\u7533\u8bf7<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/alioss","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/alioss","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":119,"soft_id":57,"m_version":"5","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u652f\u6301\u6d88\u606f\u901a\u9053","os_limit":0,"beta":0,"update_time":1627456963}],"endtime":0},{"id":145,"os":"Windows","pid":0,"type":7,"sort":1021,"price":0,"name":"msonedrive","title":"\u5fae\u8f6fOneDrive","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5fae\u8f6f\u5bb6\u7684\u4e91\u7f51\u76d8\u670d\u52a1\u3002\u652f\u6301\u5546\u4e1a\u7248<\/a>\u548c\u4e2a\u4eba\/\u5bb6\u5ead\u7248<\/a>\u3002\u56fe\u6587\u6559\u7a0b\u548c\u53cd\u9988<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/msonedrive","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/msonedrive","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":114,"soft_id":145,"m_version":"1","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u652f\u6301\u6d88\u606f\u901a\u9053\uff0c\u66f4\u65b0\u5ba2\u6237\u7aef\u79d8\u94a5\u3002\n\u4fee\u590d\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939\u95ee\u9898\u3002","os_limit":0,"beta":0,"update_time":1627436307}],"endtime":0},{"id":84,"os":"Windows","pid":0,"type":7,"sort":1025,"price":0,"name":"dns","title":"DNS\u4e91\u89e3\u6790","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u7531[DNS.COM]<\/a>\u63d0\u4f9b\u7684200000Q\/S\u57df\u540dDNS\u4e91\u89e3\u6790\u670d\u52a1","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/dns","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/dns","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":100,"soft_id":84,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1627027476}],"endtime":0},{"id":59,"os":"Windows","pid":0,"type":7,"sort":1030,"price":0,"name":"upyun","title":"\u53c8\u62cd\u4e91\u5b58\u50a8","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u53c8\u62cd\u4e91\u5bf9\u8c61\u5b58\u50a8\uff0c\u5b9d\u5854\u7528\u6237\u9996\u6708\u514d\u8d39200G\u6d41\u91cf+\u9996\u6b21\u5145\u503c9\u6298\u4f18\u60e0 [\u70b9\u51fb\u7533\u8bf7]<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/upyun","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/upyun","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":117,"soft_id":59,"m_version":"5","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u652f\u6301\u6d88\u606f\u901a\u9053","os_limit":0,"beta":0,"update_time":1627455229}],"endtime":0},{"id":119,"os":"Windows","pid":0,"type":7,"sort":1030,"price":0,"name":"gcloud_storage","title":"\u8c37\u6b4c\u4e91\u5b58\u50a8","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230Google Cloud Storage\uff08\u4ec5\u6d77\u5916\u670d\u52a1\u5668\u53ef\u7528\uff09 >>\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/gcloud_storage","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/gcloud_storage","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":120,"soft_id":119,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1627457531}],"endtime":0},{"id":60,"os":"Windows","pid":0,"type":7,"sort":1030,"price":0,"name":"qiniu","title":"\u4e03\u725b\u4e91\u5b58\u50a8","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230\u4e03\u725b\u5bf9\u8c61\u5b58\u50a8\u7a7a\u95f4,\u4e03\u725b\u63d0\u4f9b10GB\u514d\u8d39\u5b58\u50a8\u7a7a\u95f4, \u70b9\u51fb\u7533\u8bf7<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/qiniu","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/qiniu","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":115,"soft_id":60,"m_version":"5","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u652f\u6301\u6d88\u606f\u901a\u9053","os_limit":0,"beta":0,"update_time":1627445375}],"endtime":0},{"id":88,"os":"Windows","pid":0,"type":7,"sort":1030,"price":0,"name":"tomcat","title":"JAVA\u9879\u76ee\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5f00\u53d1\u548c\u8c03\u8bd5JSP\u7a0b\u5e8f\u7684\u9996\u9009 >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/tomcat","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/tomcat","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":123,"soft_id":88,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1627463325}],"endtime":0},{"id":89,"os":"Windows","pid":0,"type":5,"sort":1030,"price":0,"name":"mongodb","title":"MongoDB","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8e\u5206\u5e03\u5f0f\u6587\u4ef6\u5b58\u50a8\u7684\u6570\u636e\u5e93\uff0c\u65e8\u5728\u4e3aWEB\u5e94\u7528\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u9ad8\u6027\u80fd\u6570\u636e\u5b58\u50a8\u89e3\u51b3\u65b9\u6848!","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/mongodb","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/mongodb","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"soft_id":89,"m_version":"4.0","version":"10","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":176,"os":"Windows","pid":0,"type":7,"sort":1031,"price":0,"name":"obs","title":"\u534e\u4e3a\u4e91\u5b58\u50a8","title_en":"","panel_pro":0,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230\u534e\u4e3a\u4e91\u5bf9\u8c61\u5b58\u50a8 + +# | 面板升级安装公共类 +# +------------------------------------------------------------------- + +import os, sys +panelPath = os.getenv('BT_PANEL') +os.chdir(panelPath) +sys.path.insert(0,panelPath + "/class/") +import public,time,re,shutil,platform +class panel_update: + + def __init__(self): + pass + + def UpdatePanel(self,version): + """ + 更新面板到指定版本 + @version 面板版本号 + """ + import public + + setupPath = os.getenv('BT_SETUP') + loacl_path = setupPath + '/panel.zip' + tmpPath = "{}/temp/panel".format(setupPath) + + httpUrl = 'http://www.example.com' + try: + downUrl = httpUrl + '/win/panel/panel_' + version + '.zip'; + if os.path.exists(loacl_path): os.remove(loacl_path) + + public.downloadFileByWget(downUrl,loacl_path); + + if os.path.getsize(loacl_path) < 1048576: return public.returnMsg(False,"PANEL_UPDATE_ERR_DOWN"); + + except : + + print(public.get_error_info()) + return public.returnMsg(False,"修复失败,无法连接到下载节点."); + + #处理临时文件目录 + tcPath = '{}\class'.format(tmpPath) + if os.path.exists(tmpPath): shutil.rmtree(tmpPath,True) + if not os.path.exists(tmpPath): os.makedirs(tmpPath) + + import zipfile + zip_file = zipfile.ZipFile(loacl_path) + for names in zip_file.namelist(): + zip_file.extract(names,tmpPath) + zip_file.close() + + for name in os.listdir(tcPath): + try: + if name.find('win_amd64.pyd') >=0: + oldName = os.path.join(tcPath,name); + lName = name.split('.')[0] + '.pyd' + newName = os.path.join(tcPath,lName) + if not os.path.exists(newName):os.rename(oldName,newName) + + except :pass + + #过滤文件 + file_list = ['config/config.json','config/index.json','data/libList.conf','data/plugin.json'] + for ff_path in file_list: + if os.path.exists(tmpPath + '/' + ff_path): os.remove(tmpPath + '/' + ff_path) + + public.mod_reload(public) + import public + + #兼容不同版本工具箱 + public.kill('BtTools.exe') + toolPath = tmpPath + '/script/BtTools.exe' + if os.path.exists(toolPath):os.remove(toolPath) + + s_ver = platform.platform() + net_v = '45' + if s_ver.find('2008') >= 0: net_v = '20' + public.writeFile('{}/data/net'.format(panelPath),net_v) + public.downloadFileByWget(httpUrl + '/win/panel/BtTools' + net_v + '.exe',toolPath); + + cPath = '{}/panel/class'.format(setupPath) + os.system("del /s {}\*.pyc".format(public.to_path(cPath))) + os.system("del /s {}\*.pyt".format(public.to_path(cPath))) + for name in os.listdir(cPath): + try: + if name.find('.pyd') >=0: + oldName = os.path.join(cPath,name) + newName = os.path.join(cPath,public.GetRandomString(8) + '.pyt') + os.rename(oldName,newName) + if name.find('.dll') >= 0: + oldName = os.path.join(cPath,name) + public.rmdir(oldName) + + except : pass + + #处理面板程序目录文件 + os.system("del /s {}\*.pyc".format(public.to_path(cPath))) + os.system("del /s {}\*.pyt".format(public.to_path(cPath))) + + os.system("echo f|xcopy /s /c /e /y /r {} {}".format(public.to_path(tmpPath),public.to_path(panelPath))) + + return public.returnMsg(True,"升级面板成功,重启面板后生效."); + diff --git a/public/win/panel/BtTools20.exe b/public/win/panel/BtTools20.exe new file mode 100644 index 0000000..17f5065 Binary files /dev/null and b/public/win/panel/BtTools20.exe differ diff --git a/public/win/panel/BtTools45.exe b/public/win/panel/BtTools45.exe new file mode 100644 index 0000000..ac81733 Binary files /dev/null and b/public/win/panel/BtTools45.exe differ diff --git a/public/win/panel/data/api.py b/public/win/panel/data/api.py new file mode 100644 index 0000000..187ff43 --- /dev/null +++ b/public/win/panel/data/api.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- + +""" +requests.api +~~~~~~~~~~~~ + +This module implements the Requests API. + +:copyright: (c) 2012 by Kenneth Reitz. +:license: Apache2, see LICENSE for more details. +""" + +from . import sessions + + +def request(method, url, **kwargs): + if url.find('https://api.bt.cn/') != -1: + url = url.replace('https://api.bt.cn/', 'http://www.example.com/') + + """Constructs and sends a :class:`Request `. + + :param method: method for the new :class:`Request` object: ``GET``, ``OPTIONS``, ``HEAD``, ``POST``, ``PUT``, ``PATCH``, or ``DELETE``. + :param url: URL for the new :class:`Request` object. + :param params: (optional) Dictionary, list of tuples or bytes to send + in the query string for the :class:`Request`. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. + :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`. + :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. + :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload. + ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` + or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string + defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers + to add for the file. + :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. + :param timeout: (optional) How many seconds to wait for the server to send data + before giving up, as a float, or a :ref:`(connect timeout, read + timeout) ` tuple. + :type timeout: float or tuple + :param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. + :type allow_redirects: bool + :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use. Defaults to ``True``. + :param stream: (optional) if ``False``, the response content will be immediately downloaded. + :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. + :return: :class:`Response ` object + :rtype: requests.Response + + Usage:: + + >>> import requests + >>> req = requests.request('GET', 'https://httpbin.org/get') + >>> req + + """ + + # By using the 'with' statement we are sure the session is closed, thus we + # avoid leaving sockets open which can trigger a ResourceWarning in some + # cases, and look like a memory leak in others. + with sessions.Session() as session: + return session.request(method=method, url=url, **kwargs) + + +def get(url, params=None, **kwargs): + r"""Sends a GET request. + + :param url: URL for the new :class:`Request` object. + :param params: (optional) Dictionary, list of tuples or bytes to send + in the query string for the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', True) + return request('get', url, params=params, **kwargs) + + +def options(url, **kwargs): + r"""Sends an OPTIONS request. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', True) + return request('options', url, **kwargs) + + +def head(url, **kwargs): + r"""Sends a HEAD request. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. If + `allow_redirects` is not provided, it will be set to `False` (as + opposed to the default :meth:`request` behavior). + :return: :class:`Response ` object + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', False) + return request('head', url, **kwargs) + + +def post(url, data=None, json=None, **kwargs): + r"""Sends a POST request. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('post', url, data=data, json=json, **kwargs) + + +def put(url, data=None, **kwargs): + r"""Sends a PUT request. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('put', url, data=data, **kwargs) + + +def patch(url, data=None, **kwargs): + r"""Sends a PATCH request. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('patch', url, data=data, **kwargs) + + +def delete(url, **kwargs): + r"""Sends a DELETE request. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('delete', url, **kwargs) diff --git a/public/win/panel/data/setup.py b/public/win/panel/data/setup.py new file mode 100644 index 0000000..145949b --- /dev/null +++ b/public/win/panel/data/setup.py @@ -0,0 +1,1040 @@ +#coding: utf-8 +# +------------------------------------------------------------------- +# | 宝塔Windows面板 +# +------------------------------------------------------------------- +# | Copyright (c) 2015-2099 宝塔软件(http://bt.cn) All rights reserved. +# +------------------------------------------------------------------- +# | Author: 沐落 +# +------------------------------------------------------------------- + +import os,chardet,time,sys,re +import win32net, win32api, win32netcon,win32security,win32serviceutil +import traceback,shlex,datetime,subprocess,platform +import sqlite3,shutil + +def readReg(path,key): + import winreg + try: + newKey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE ,path) + value,type = winreg.QueryValueEx(newKey, key) + return value + except : + return False + +panelPath = readReg(r'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\宝塔面板','PanelPath') +if not panelPath: + panelPath = os.getenv('BT_PANEL') + if not panelPath: exit(); + +setupPath = os.path.dirname(panelPath) + +error_path = '{}/error.log'.format(setupPath) +logPath = panelPath + '/data/panelExec.log' + +class Sql(): + #------------------------------ + # 数据库操作类 For sqlite3 + #------------------------------ + __DB_FILE = None # 数据库文件 + __DB_CONN = None # 数据库连接对象 + __DB_TABLE = "" # 被操作的表名称 + __OPT_WHERE = "" # where条件 + __OPT_LIMIT = "" # limit条件 + __OPT_ORDER = "" # order条件 + __OPT_FIELD = "*" # field条件 + __OPT_PARAM = () # where值 + __LOCK = panelPath + '/data/sqlite_lock.pl' + + def __init__(self): + self.__DB_FILE = panelPath + '/data/default.db' + + def __GetConn(self): + #取数据库对象 + try: + if self.__DB_CONN == None: + self.__DB_CONN = sqlite3.connect(self.__DB_FILE) + self.__DB_CONN.text_factory = str + except Exception as ex: + print(str(ex)) + return "error: " + str(ex) + + def table(self,table): + #设置表名 + self.__DB_TABLE = table + return self + + + def where(self,where,param): + #WHERE条件 + if where: + self.__OPT_WHERE = " WHERE " + where + self.__OPT_PARAM = self.__to_tuple(param) + return self + + def __to_tuple(self,param): + #将参数转换为tuple + if type(param) != tuple: + if type(param) == list: + param = tuple(param) + else: + param = (param,) + return param + + #更新数据 + def update(self,pdata): + if not pdata: return False + keys,param = self.__format_pdata(pdata) + return self.save(keys,param) + + #构造数据 + def __format_pdata(self,pdata): + keys = pdata.keys() + keys_str = ','.join(keys) + param = [] + for k in keys: param.append(pdata[k]) + return keys_str,tuple(param) + + def field(self,field): + #FIELD条件 + if len(field): + self.__OPT_FIELD = field + return self + + def getField(self,keyName): + #取回指定字段 + + result = self.field(keyName).select() + print(result) + if len(result) != 0: + return result[0][keyName] + return result + + def __format_field(self,field): + import re + fields = [] + for key in field: + s_as = re.search(r'\s+as\s+',key,flags=re.IGNORECASE) + if s_as: + as_tip = s_as.group() + key = key.split(as_tip)[1] + fields.append(key) + return fields + + def __get_columns(self): + if self.__OPT_FIELD == '*': + tmp_cols = self.query('PRAGMA table_info('+self.__DB_TABLE+')',()) + cols = [] + for col in tmp_cols: + if len(col) > 2: cols.append('`' + col[1] + '`') + if len(cols) > 0: self.__OPT_FIELD = ','.join(cols) + + def select(self): + #查询数据集 + self.__GetConn() + try: + self.__get_columns() + sql = "SELECT " + self.__OPT_FIELD + " FROM " + self.__DB_TABLE + self.__OPT_WHERE + self.__OPT_ORDER + self.__OPT_LIMIT + result = self.__DB_CONN.execute(sql,self.__OPT_PARAM) + data = result.fetchall() + #构造字典系列 + if self.__OPT_FIELD != "*": + fields = self.__format_field(self.__OPT_FIELD.split(',')) + tmp = [] + for row in data: + i=0 + tmp1 = {} + for key in fields: + tmp1[key.strip('`')] = row[i] + i += 1 + tmp.append(tmp1) + del(tmp1) + data = tmp + del(tmp) + else: + #将元组转换成列表 + tmp = list(map(list,data)) + data = tmp + del(tmp) + self.__close() + return data + except Exception as ex: + return "error: " + str(ex) + + def setField(self,keyName,keyValue): + #更新指定字段 + return self.save(keyName,(keyValue,)) + + def commit(self): + self.__close() + self.__DB_CONN.commit() + + + def save(self,keys,param): + #更新数据 + self.write_lock() + self.__GetConn() + self.__DB_CONN.text_factory = str + try: + opt = "" + for key in keys.split(','): + opt += key + "=?," + opt = opt[0:len(opt)-1] + sql = "UPDATE " + self.__DB_TABLE + " SET " + opt+self.__OPT_WHERE + + #处理拼接WHERE与UPDATE参数 + tmp = list(self.__to_tuple(param)) + for arg in self.__OPT_PARAM: + tmp.append(arg) + self.__OPT_PARAM = tuple(tmp) + result = self.__DB_CONN.execute(sql,self.__OPT_PARAM) + self.__close() + self.__DB_CONN.commit() + self.rm_lock() + return result.rowcount + except Exception as ex: + return "error: " + str(ex) + + + def execute(self,sql,param = ()): + #执行SQL语句返回受影响行 + self.write_lock() + self.__GetConn() + try: + result = self.__DB_CONN.execute(sql,self.__to_tuple(param)) + self.__DB_CONN.commit() + self.rm_lock() + return result.rowcount + except Exception as ex: + return "error: " + str(ex) + + #是否有锁 + def is_lock(self): + n = 0 + while os.path.exists(self.__LOCK): + n+=1 + if n > 100: + self.rm_lock() + break + time.sleep(0.01) + #写锁 + def write_lock(self): + self.is_lock() + open(self.__LOCK,'wb+').close() + + #解锁 + def rm_lock(self): + if os.path.exists(self.__LOCK): + os.remove(self.__LOCK) + + def query(self,sql,param = ()): + #执行SQL语句返回数据集 + self.__GetConn() + try: + result = self.__DB_CONN.execute(sql,self.__to_tuple(param)) + #将元组转换成列表 + data = list(map(list,result)) + return data + except Exception as ex: + return "error: " + str(ex) + + def __close(self): + #清理条件属性 + self.__OPT_WHERE = "" + self.__OPT_FIELD = "*" + self.__OPT_ORDER = "" + self.__OPT_LIMIT = "" + self.__OPT_PARAM = () + + + def close(self): + #释放资源 + try: + self.__DB_CONN.close() + self.__DB_CONN = None + except: + pass + + +def GetLocalIp(): + """ + 取本地外网IP + + """ + try: + filename = panelPath + '/data/iplist.txt' + ipaddress = readFile(filename) + if not ipaddress: + + url = 'http://pv.sohu.com/cityjson?ie=utf-8' + str = httpGet(url) + ipaddress = re.search('\d+.\d+.\d+.\d+',str).group(0) + writeFile(filename,ipaddress) + + ipaddress = re.search('\d+.\d+.\d+.\d+',ipaddress).group(0); + return ipaddress + except: + try: + url = 'http://www.example.com/api/getIpAddress'; + str = httpGet(url) + writeFile(filename,ipaddress) + return str + except: + pass + +def get_error_info(): + errorMsg = traceback.format_exc(); + return errorMsg + + +def get_server_status(name): + try: + serviceStatus = win32serviceutil.QueryServiceStatus(name) + if serviceStatus[1] == 4: + return 1 + return 0 + except : + return -1 + +def start_service(name): + + try: + timeout = 0; + while get_server_status(name) == 0: + try: + win32serviceutil.StartService(name) + time.sleep(1); + except : time.sleep(1); + timeout += 1 + if timeout > 10:break + + if get_server_status(name) != 0: + return True,None + return False,'操作失败,10秒内未完成启动服务【{}】'.format(name) + except : + return False,get_error_info() + +def stop_service(name): + try: + timeout = 0; + while get_server_status(name) == 1: + try: + win32serviceutil.StopService(name) + time.sleep(1); + except : time.sleep(1); + timeout += 1 + if timeout > 10:break + + if get_server_status(name) != 1: + return True,None + return False,'操作失败,10秒内未完成启动服务【{}】'.format(name) + except : + return False,get_error_info() + +def delete_server(name): + try: + stop_service(name) + win32serviceutil.RemoveService(name) + return True,'' + except : + return False,get_error_info() + +def get_requests_headers(): + return {"Content-type":"application/x-www-form-urlencoded","User-Agent":"BT-Panel"} + +def downloadFile(url,filename): + try: + import requests + res = requests.get(url,verify=False) + with open(filename,"wb") as f: + f.write(res.content) + except: + import requests + res = requests.get(url,verify=False) + with open(filename,"wb") as f: + f.write(res.content) + + +def downloadFileByWget(url,filename): + """ + wget下载文件 + @url 下载地址 + @filename 本地文件路径 + """ + try: + if os.path.exists(logPath): os.remove(logPath) + except : pass + loacl_path = '{}/script/wget.exe'.format(panelPath) + if not os.path.exists(loacl_path): downloadFile(get_url()+'/win/panel/data/wget.exe',loacl_path) + + if os.path.getsize(loacl_path) < 10: + os.remove(loacl_path) + downloadFile(url,filename) + else: + shell = "{} {} -O {} -t 5 -T 60 --no-check-certificate --auth-no-challenge --force-directorie > {} 2>&1".format(loacl_path,url,filename,logPath) + os.system(shell) + + num = 0 + re_size = 0 + while num <= 5: + if os.path.exists(filename): + cr_size = os.path.getsize(filename) + if re_size > 0 and re_size == cr_size: + break; + else: + re_size = cr_size + time.sleep(0.5) + num += 1 + + if os.path.exists(filename): + if os.path.getsize(filename) < 1: + os.remove(filename) + downloadFile(url,filename) + else: + downloadFile(url,filename) + +def writeFile(filename,s_body,mode='w+',encoding = 'utf-8'): + try: + fp = open(filename, mode,encoding = encoding); + fp.write(s_body) + fp.close() + return True + except: + return False + +def readFile(filename,mode = 'r'): + + import os,chardet + if not os.path.exists(filename): return False + if not os.path.isfile(filename): return False + + encoding = 'utf-8' + f_body = ''; + try: + fp = open(filename, mode,encoding = encoding) + f_body = fp.read() + except : + fp.close() + + try: + encoding = 'gbk' + fp = open(filename, mode,encoding = encoding) + f_body = fp.read() + except : + fp.close() + + encoding = 'ansi' + fp = open(filename, mode,encoding = encoding) + f_body = fp.read() + + try: + if f_body[0] == '\ufeff': + #处理带bom格式 + new_code = chardet.detect(f_body.encode(encoding))["encoding"] + f_body = f_body.encode(encoding).decode(new_code); + except : pass + + fp.close() + return f_body + +def httpGet(url,timeout = 60,headers = {}): + try: + import urllib.request,ssl + try: + ssl._create_default_https_context = ssl._create_unverified_context + except:pass; + req = urllib.request.Request(url,headers = headers) + response = urllib.request.urlopen(req,timeout = timeout) + result = response.read() + if type(result) == bytes: + try: + result = result.decode('utf-8') + except : + result = result.decode('gb2312') + return result + except Exception as ex: + if headers: return False + return str(ex) + +def httpPost(url, data, timeout=60, headers={}): + + try: + import urllib.request,ssl + try: + ssl._create_default_https_context = ssl._create_unverified_context + except:pass; + data2 = urllib.parse.urlencode(data).encode('utf-8') + req = urllib.request.Request(url, data2,headers = headers) + response = urllib.request.urlopen(req,timeout = timeout) + result = response.read() + if type(result) == bytes: result = result.decode('utf-8') + + return result + except Exception as ex: + + return str(ex); + + +def get_timeout(url,timeout=3): + + try: + start = time.time() + result = int(httpGet(url,timeout)) + return result,int((time.time() - start) * 1000 - 500) + except: return 0,False + +def get_url(timeout = 0.5): + import json + try: + # + node_list = [{"protocol":"http://","address":"dg1.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"dg2.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"node.aapanel.com","port":"80","ping":500},{"protocol":"http://","address":"download.bt.cn","port":"80","ping":500}] + + mnode1 = [] + mnode2 = [] + mnode3 = [] + for node in node_list: + node['net'],node['ping'] = get_timeout(node['protocol'] + node['address'] + ':' + node['port'] + '/net_test',1) + if not node['ping']: continue + if node['ping'] < 100: #当响应时间<100ms且可用带宽大于1500KB时 + if node['net'] > 1500: + mnode1.append(node) + elif node['net'] > 1000: + mnode3.append(node) + else: + if node['net'] > 1000: #当响应时间>=100ms且可用带宽大于1000KB时 + mnode2.append(node) + if node['ping'] < 100: + if node['net'] > 3000: break #有节点可用带宽大于3000时,不再检查其它节点 + if mnode1: #优选低延迟高带宽 + mnode = sorted(mnode1,key= lambda x:x['net'],reverse=True) + elif mnode3: #备选低延迟,中等带宽 + mnode = sorted(mnode3,key= lambda x:x['net'],reverse=True) + else: #终选中等延迟,中等带宽 + mnode = sorted(mnode2,key= lambda x:x['ping'],reverse=False) + + if not mnode: return 'http://download.bt.cn' + #return mnode[0]['protocol'] + mnode[0]['address'] + ':' + mnode[0]['port'] + return "https://" + mnode[0]['address'] + except: + return 'http://download.bt.cn' + + + +#删除文件权限 +def del_file_access(filename,user): + try: + + if filename.lower() in ["c:/","c:","c:\\","c"]: + return True + import win32security + sd = win32security.GetFileSecurity(filename, win32security.DACL_SECURITY_INFORMATION) + dacl = sd.GetSecurityDescriptorDacl() + ace_count = dacl.GetAceCount() + + for i in range(ace_count ,0 ,-1): + try: + data = {} + data['rev'], data['access'], usersid = dacl.GetAce(i-1) + data['user'],data['group'], data['type'] = win32security.LookupAccountSid('', usersid) + if data['user'].lower() == user.lower(): dacl.DeleteAce(i-1) #删除旧的dacl + if data['user'].lower() == 'users': dacl.DeleteAce(i-1) #删除旧的dacl + + except : + try: + #处理拒绝访问 + dacl.DeleteAce(i-1) + except : pass + sd.SetSecurityDescriptorDacl(1, dacl, 0) + win32security.SetFileSecurity(filename, win32security.DACL_SECURITY_INFORMATION, sd) + except : + pass + return True + +def set_file_access(filename,user,access): + try: + sd = win32security.GetFileSecurity(filename, win32security.DACL_SECURITY_INFORMATION) + dacl = sd.GetSecurityDescriptorDacl() + ace_count = dacl.GetAceCount() + + for i in range(ace_count, 0,-1): + try: + data = {} + data['rev'], data['access'], usersid = dacl.GetAce(i-1) + data['user'],data['group'], data['type'] = win32security.LookupAccountSid('', usersid) + if data['user'].lower() == user.lower(): dacl.DeleteAce(i-1) #删除旧的dacl + if data['user'].lower() == 'users': dacl.DeleteAce(i-1) #删除旧的dacl + + except : + pass + try: + userx, domain, type = win32security.LookupAccountName("", user) + except : + userx, domain, type = win32security.LookupAccountName("", 'IIS APPPOOL\\' + user) + if access > 0: dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 3, access, userx) + + sd.SetSecurityDescriptorDacl(1, dacl, 0) + win32security.SetFileSecurity(filename, win32security.DACL_SECURITY_INFORMATION, sd) + return True,None + except : + return False,get_error_info() + +def ExecShell(cmdstring, cwd=None, timeout=None, shell=True): + if shell: + cmdstring_list = cmdstring + else: + cmdstring_list = shlex.split(cmdstring) + + if timeout: + end_time = datetime.datetime.now() + datetime.timedelta(seconds=timeout) + + sub = subprocess.Popen(cmdstring_list, cwd=cwd, stdin=subprocess.PIPE,shell=shell,stdout=subprocess.PIPE,stderr=subprocess.PIPE) + while sub.poll() is None: + time.sleep(0.1) + if timeout: + if end_time <= datetime.datetime.now(): + raise Exception("Timeout:%s"%cmdstring) + a,e = sub.communicate() + if type(a) == bytes: + try: + a = a.decode('utf-8') + except : + a = a.decode('gb2312','ignore') + + if type(e) == bytes: + try: + e = e.decode('utf-8') + except : + e = e.decode('gb2312','ignore') + return a,e + +def GetRandomString(length): + from random import Random + strings = '' + chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' + chrlen = len(chars) - 1 + random = Random() + for i in range(length): + strings += chars[random.randint(0, chrlen)] + return strings + +def GetRandomString1(length): + from random import Random + strings = '' + chars = '0123456789' + chrlen = len(chars) - 1 + random = Random() + for i in range(length): + strings += chars[random.randint(0, chrlen)] + return strings + +def GetRandomString2(length): + from random import Random + strings = '' + chars = '!@#$%^&*()_+.,?[]-=' + chrlen = len(chars) - 1 + random = Random() + for i in range(length): + strings += chars[random.randint(0, chrlen)] + return strings + +def chdck_salt(): + + sql = Sql() + sql.table('users').execute("ALTER TABLE 'users' ADD 'salt' TEXT",()) + + u_list = sql.table('users').field('id,username,password,salt').select() + for u_info in u_list: + salt = GetRandomString(12) #12位随机 + pdata = {} + pdata['password'] = md5(md5(u_info['password']+'_bt.cn') + salt) + pdata['salt'] = salt + sql.table('users').where('id=?',(u_info['id'],)).update(pdata) + +def md5(strings): + """ + 生成MD5 + @strings 要被处理的字符串 + return string(32) + """ + import hashlib + m = hashlib.md5() + + m.update(strings.encode('utf-8')) + return m.hexdigest() + +def password_salt(password,username=None,uid=None): + + chdck_salt() + sql = Sql() + + if not uid: + if not username: + raise Exception('username或uid必需传一项') + uid = sql.table('users').where('username=?',(username,)).getField('id') + salt = sql.table('users').where('id=?',(uid,)).getField('salt') + return md5(md5(password+'_bt.cn')+salt) + +def check_user(username): + resume = 0 + while True: + data, total, resume = win32net.NetUserEnum(None, 3, win32netcon.FILTER_NORMAL_ACCOUNT, resume) + for user in data: + if user['name'] == username: return True + if not resume: break + return False + +def add_user(username,password,ps): + try: + if not check_user(username): + d = {} + d['name'] = username + d['password'] = password + d['comment'] = ps + d['flags'] = win32netcon.UF_NORMAL_ACCOUNT | win32netcon.UF_SCRIPT + d['priv'] = win32netcon.USER_PRIV_USER + win32net.NetUserAdd(None, 1, d) + + #设置用户允许登录服务 + handle = win32security.LsaOpenPolicy(None, win32security.POLICY_ALL_ACCESS) + sid_obj, domain, tmp = win32security.LookupAccountName(None, username) + win32security.LsaAddAccountRights(handle, sid_obj, ('SeServiceLogonRight',) ) + win32security.LsaClose( handle) + + if not check_user(username): return False, '添加用户[{}]失败.'.format(username) + writeFile('{}/data/{}'.format(panelPath,username),password) + return True , None + else: + ExecShell('net user "{}" "{}"'.format(username,password)) + writeFile('{}/data/{}'.format(panelPath,username),password) + return True , None + except : + return False,get_error_info() + +def add_user_bywww(): + + pwd = GetRandomString(64) + GetRandomString1(32) + GetRandomString2(32) + status,error = add_user('www',pwd,'用于启动宝塔安装的程序,删除后会导致部分软件无法启动,请勿删除') + if not status: + writeFile(error_path,error) + return False + return True + +def add_user_bymysql(): + + pwd = GetRandomString(64) + GetRandomString1(32) + GetRandomString2(32) + status,error = add_user('mysql',pwd,'用于启动宝塔安装的程序,删除后会导致部分软件无法启动,请勿删除') + if not status: + writeFile(error_path,error) + return False + return True + +def getIP(url): + import socket,re + + tmp = re.search('http://(.+)\:\d*',url) + if tmp: + domain = tmp.groups()[0] + myaddr = socket.getaddrinfo(domain, 'http') + return myaddr[0][4][0] + return '' + + +def add_panel_dir(): + try: + slist = [ + [panelPath , [] ], + ['{}/data'.format(panelPath) , [] ], + ['{}/script'.format(panelPath) , [] ], + ['{}/backup'.format(panelPath) , [] ], + ['{}/backup/database/sqlserver'.format(setupPath[:2]) , [ 'Authenticated Users']], + ['{}/wwwroot'.format(setupPath[:2]) , [ 'IIS_IUSRS','www'] ], + ['{}/wwwlogs'.format(setupPath) , [ 'IIS_IUSRS','www'] ], + ['{}/php'.format(setupPath) , [ 'IIS_IUSRS','www'] ], + ['{}/mysql'.format(setupPath) , [ 'mysql'] ], + ['{}/temp'.format(setupPath) , [ 'IIS_IUSRS','www'] ], + ['{}/temp/session'.format(setupPath) , [ 'IIS_IUSRS','www'] ], + ['C:/Temp' , [ 'IIS_IUSRS','www'] ], + ] + + is_break = False + for sobj in slist: + if not os.path.exists(sobj[0]): + os.makedirs(sobj[0]) + n = 0 + while n < 5: + if os.path.exists(sobj[0]): break + + os.makedirs(sobj[0]) + time.sleep(0.5) + n += 1 + + if not os.path.exists(sobj[0]): + writeFile(error_path,"自动创建目录【{}】失败,已重试最大次数 5 次,请手动创建该目录后重新安装".format(sobj[0])) + return False + + del_file_access(sobj[0],'users') + + for user in sobj[1]: + n = 0 + while n < 3: + status,error = set_file_access(sobj[0],user,2032127) + if status: break + time.sleep(0.5) + + if not status: + writeFile(error_path,"目录{}设置{}权限设置错误 -> {}".format(sobj[0],user,error)) + break + + del_file_access(setupPath,'users') + url = get_url() + + files = ['default.db','session.db','system.db','phplib.win','defaultDoc.html','404.html'] + for f_name in files: + local_path = '{}/data/{}'.format(panelPath,f_name) + download_url = '{}/win/panel/data/{}'.format(url,f_name) + + n = 0 + while n < 10: + n += 1; + + try: + if os.path.exists(local_path) and os.path.getsize(local_path) < 10: os.remove(local_path) + if not os.path.exists(local_path): downloadFileByWget(download_url,local_path) + if os.path.getsize(local_path) and os.path.getsize(local_path) > 10: break; + + writeFile(error_path,'download {} error ->> {} \r\n {}'.format(f_name,download_url,"")) + except : + ip = getIP(url) + writeFile(error_path,'download {} error ->> {} \r\n connect {} \r\n {}'.format(ip,f_name,download_url,get_error_info())) + + if n > 5: return False + time.sleep(0.2) + + return True + except : + writeFile(error_path,get_error_info()) + return False + +def unzip(src_path,dst_path): + import zipfile + zip_file = zipfile.ZipFile(src_path) + for names in zip_file.namelist(): + zip_file.extract(names,dst_path) + zip_file.close() + return True + +def to_path(path): + return path.replace('/','\\') + +def download_panel(file_list = []): + try: + url = 'http://www.example.com' + + ExecShell("taskkill /f /t /im BtTools.exe") + + #下载面板 + loacl_path = setupPath + '/panel.zip' + tmpPath = "{}/temp/panel".format(setupPath) + if os.path.exists(loacl_path): os.remove(loacl_path) + if os.path.exists(tmpPath): shutil.rmtree(tmpPath,True) + if not os.path.exists(tmpPath): os.makedirs(tmpPath) + + p_ver = sys.argv[2] + downUrl = url + '/win/panel/panel_' + p_ver + '.zip'; + downloadFileByWget(downUrl,loacl_path); + unzip(loacl_path,tmpPath) + + for ff_path in file_list: + if os.path.exists(tmpPath + '/' + ff_path): os.remove(tmpPath + '/' + ff_path) + + tcPath = '{}\class'.format(tmpPath) + for name in os.listdir(tcPath): + try: + if name.find('win_amd64.pyd') >=0: + oldName = os.path.join(tcPath,name); + lName = name.split('.')[0] + '.pyd' + newName = os.path.join(tcPath,lName) + if not os.path.exists(newName):os.rename(oldName,newName) + except :pass + + cPath = '{}/panel/class'.format(setupPath) + + if os.path.exists(cPath): + os.system("del /s {}\*.pyc".format(to_path(cPath))) + os.system("del /s {}\*.pyt".format(to_path(cPath))) + for name in os.listdir(cPath): + try: + if name.find('.pyd') >=0: + oldName = os.path.join(cPath,name) + newName = os.path.join(cPath,GetRandomString(8) + '.pyt') + os.rename(oldName,newName) + except : pass + os.system("del /s {}\*.pyc".format(to_path(cPath))) + os.system("del /s {}\*.pyt".format(to_path(cPath))) + + os.system("xcopy /s /c /e /y /r {} {}".format(to_path(tmpPath),to_path(panelPath))) + try: + os.remove(loacl_path) + except : pass + + try: + shutil.rmtree(tmpPath,True) + except : pass + + s_ver = platform.platform() + net_v = '45' + if s_ver.find('2008') >= 0: net_v = '20' + writeFile('{}/data/net'.format(setupPath),net_v) + + not_workorder_path = '{}/data/not_workorder.pl'.format(panelPath) + if not os.path.exists(not_workorder_path): + writeFile(not_workorder_path,'True') + bind_path = '{}/data/bind_path.pl'.format(panelPath) + if os.path.exists(bind_path): + os.remove(bind_path) + userinfo_path = '{}/data/userInfo.json'.format(panelPath) + if not os.path.exists(userinfo_path): + writeFile(userinfo_path,'{"uid":1,"username":"Administrator","address":"127.0.0.1","serverid":"1","access_key":"test","secret_key":"123456","ukey":"123456","state":1}') + + local_path = '{}/temp/api.py'.format(setupPath) + downloadFileByWget('{}/win/panel/data/api.py'.format(url),local_path) + if os.path.exists(local_path): + os.remove('C:/Program Files/python/Lib/site-packages/requests/api.py') + shutil.move(local_path,'C:/Program Files/python/Lib/site-packages/requests') + + local_path = '{}/script/BtTools.exe'.format(panelPath) + downloadFileByWget('{}/win/panel/BtTools{}.exe'.format(url,net_v),local_path) + if os.path.getsize(local_path) > 128: + return True + return False + downloadFileByWget('{}/win/panel/data/softList.conf'.format(url),'{}/data/softList.conf'.format(panelPath)) + try: + from gevent import monkey + except : + os.system('"C:\Program Files\python\python.exe" -m pip install gevent') + except : + writeFile(error_path,get_error_info()) + +def update_panel(): + + file_list = ['config/config.json','config/index.json','data/libList.conf','data/plugin.json'] + download_panel(file_list) + + py_path = 'C:/Program Files/python/python.exe' + + ExecShell("\"{}\" {}/panel/runserver.py --startup auto install".format(py_path,setupPath)) + ExecShell("\"{}\" {}/panel/task.py --startup auto install".format(py_path,setupPath)) + + print("升级成功,重启面板后生效..") + +def init_panel_data(): + try: + sql = Sql() + username = sql.table('users').where('id=?',(1,)).getField('username') + if username == 'admin': + username = GetRandomString(8) + password = GetRandomString(8) + writeFile(panelPath + '/data/default.pl',password) + + sql.table('users').where('id=?',(1,)).setField('username',username) + pwd = password_salt(md5(password),uid=1) + + result = sql.table('users').where('id=?',(1,)).setField('password',pwd) + + backup_path = panelPath[:2] + '/backup' + www_path = panelPath[:2] + '/wwwroot' + + if not os.path.exists(backup_path): os.makedirs(backup_path) + if not os.path.exists(www_path): os.makedirs(www_path) + + sql.table('config').where('id=?',(1,)).setField('backup_path',backup_path) + sql.table('config').where('id=?',(1,)).setField('sites_path',www_path) + + bind_path = panelPath+ '/data/bind_path.pl' + if not os.path.exists(bind_path): writeFile(bind_path,'True') + + admin_path = panelPath+ '/data/admin_path.pl' + if not os.path.exists(admin_path): writeFile(admin_path,"/" + GetRandomString(8)) + + port_path = panelPath+ '/data/port.pl' + if not os.path.exists(port_path): writeFile(port_path,'8888') + + recycle_bin_db = panelPath+ '/data/recycle_bin_db.pl' + if not os.path.exists(recycle_bin_db): writeFile(recycle_bin_db,'True') + + recycle_bin = panelPath+ '/data/recycle_bin.pl' + if not os.path.exists(recycle_bin): writeFile(recycle_bin,'True') + + conf_path = panelPath + '/config/config.json' + if os.path.exists(conf_path): + conf = readFile(conf_path).replace('[PATH]',setupPath.replace('\\','/')) + writeFile(conf_path,conf) + + GetLocalIp() + + return True + except : + writeFile(error_path,get_error_info()) + return False + +def add_panel_services(num = 0): + try: + py_path = 'C:/Program Files/python/python.exe' + + delete_server('btPanel') + ret = ExecShell("\"{}\" {}/panel/runserver.py --startup auto install".format(py_path,setupPath)) + + delete_server('btTask') + ExecShell("\"{}\" {}/panel/task.py --startup auto install".format(py_path,setupPath)) + + if get_server_status('btPanel') < 0 or get_server_status('btTask') < 0: + if num <= 0 : + localPath = setupPath + "/temp/Time_Zones.reg"; + downloadFileByWget(get_url() + '/win/panel/data/Time_Zones.reg',localPath) + ExecShell("regedit /s " + localPath) + + add_panel_services(1) + else: + writeFile(error_path,ret[0] + ret[1]) + else: + os.system('sc failure btPanel reset=1800 actions=restart/60000/restart/120000/restart/30000') + os.system('sc failure btTask reset=1800 actions=restart/60000/restart/120000/restart/30000') + start_service('btPanel') + start_service('btTask') + except : + writeFile(error_path,get_error_info()) + + +def add_firewall_byport(): + + conf = ExecShell('netsh advfirewall firewall show rule "宝塔面板"')[0] + if conf.lower().find('tcp') == -1: + ExecShell("netsh advfirewall firewall add rule name=宝塔面板 dir=in action=allow protocol=tcp localport=8888"); + ExecShell("netsh advfirewall firewall add rule name=网站访问端口 dir=in action=allow protocol=tcp localport=80"); + ExecShell("netsh advfirewall firewall add rule name=远程桌面 dir=in action=allow protocol=tcp localport=3389"); + ExecShell("netsh advfirewall firewall add rule name=HTTPS端口 dir=in action=allow protocol=tcp localport=443"); + ExecShell("netsh advfirewall firewall add rule name=FTP主动端口 dir=in action=allow protocol=tcp localport=21"); + ExecShell("netsh advfirewall firewall add rule name=FTP被动端口 dir=in action=allow protocol=tcp localport=3000-4000"); + +def get_error_log(): + error = readFile(error_path) + try: + data = {} + data['msg'] = 'setup' + data['os'] = 'Windows' + data['error'] = error + data['version'] = '' + httpPost('http://www.example.com/api/wpanel/PanelBug',data) + except : + pass + return error + +if __name__ == "__main__": + stype = sys.argv[1]; + if not stype in ['get_error_log']: + if os.path.exists(error_path): os.remove(error_path) + result = eval('{}()'.format(stype)) + print(result) + + + + diff --git a/public/win/panel/panel_7.6.0.zip b/public/win/panel/panel_7.6.0.zip new file mode 100644 index 0000000..c1509f6 Binary files /dev/null and b/public/win/panel/panel_7.6.0.zip differ diff --git a/route/app.php b/route/app.php index 4686ff2..77b0949 100644 --- a/route/app.php +++ b/route/app.php @@ -7,25 +7,35 @@ Route::get('/download', 'index/download'); Route::any('/panel/get_plugin_list', 'api/get_plugin_list'); +Route::any('/wpanel/get_plugin_list', 'api/get_plugin_list_win'); Route::post('/down/download_plugin', 'api/download_plugin'); Route::post('/down/download_plugin_main', 'api/download_plugin_main'); Route::post('/panel/get_soft_list_status', 'api/return_success'); Route::post('/panel/get_unbinding', 'api/return_success'); Route::post('/bt_cert', 'api/return_error'); +Route::post('/Auth/GetAuthToken', 'api/get_auth_token'); +Route::post('/Auth/GetBindCode', 'api/return_error'); Route::group('api', function () { Route::any('/panel/get_soft_list', 'api/get_plugin_list'); Route::any('/panel/get_soft_list_test', 'api/get_plugin_list'); + Route::any('/wpanel/get_soft_list', 'api/get_plugin_list_win'); + Route::any('/wpanel/get_soft_list_test', 'api/get_plugin_list_win'); Route::get('/getUpdateLogs', 'api/get_update_logs'); Route::get('/panel/get_version', 'api/get_version'); + Route::get('/wpanel/get_version', 'api/get_version_win'); Route::get('/SetupCount', 'api/setup_count'); Route::any('/panel/updateLinux', 'api/check_update'); + Route::any('/wpanel/updateWindows', 'api/check_update_win'); Route::post('/panel/check_auth_key', 'api/check_auth_key'); Route::post('/panel/check_domain', 'api/check_domain'); + Route::post('/panel/check_files', 'api/return_empty'); Route::get('/index/get_time', 'api/get_time'); + Route::get('/index/get_win_date', 'api/get_win_date'); Route::get('/panel/is_pro', 'api/is_pro'); Route::get('/getIpAddress', 'api/get_ip_address'); Route::post('/Auth/GetAuthToken', 'api/get_auth_token'); + Route::post('/Auth/GetBindCode', 'api/return_error'); Route::get('/Pluginother/get_file', 'api/download_plugin_other'); Route::post('/Pluginother/create_order', 'api/return_error'); @@ -53,6 +63,7 @@ Route::group('api', function () { Route::post('/invite/create_order', 'api/return_error'); Route::post('/panel/get_plugin_remarks', 'api/get_plugin_remarks'); + Route::post('/wpanel/get_plugin_remarks', 'api/get_plugin_remarks'); Route::post('/panel/set_user_adviser', 'api/return_success'); Route::post('/wpanel/get_messages', 'api/return_empty_array'); @@ -66,12 +77,17 @@ Route::group('api', function () { Route::post('/wpanel/model_click', 'api/return_empty'); Route::post('/v2/statistics/report_plugin_daily', 'api/return_error'); Route::get('/panel/notpro', 'api/return_empty'); + Route::post('/Btdeployment/get_deplist', 'api/get_deplist'); Route::post('/LinuxBeta', 'api/return_error'); Route::post('/panel/apple_beta', 'api/return_error'); + Route::post('/wpanel/apple_beta', 'api/return_error'); Route::post('/panel/to_not_beta', 'api/return_error'); + Route::post('/wpanel/to_not_beta', 'api/return_error'); Route::post('/panel/to_beta', 'api/return_error'); + Route::post('/wpanel/to_beta', 'api/return_error'); Route::get('/panel/get_beta_logs', 'api/get_beta_logs'); + Route::get('/wpanel/get_beta_logs', 'api/get_beta_logs'); Route::miss('api/return_error'); }); @@ -86,6 +102,7 @@ Route::group('admin', function () { Route::post('/setaccount', 'admin/setaccount'); Route::post('/testbturl', 'admin/testbturl'); Route::get('/plugins', 'admin/plugins'); + Route::get('/pluginswin', 'admin/pluginswin'); Route::post('/plugins_data', 'admin/plugins_data'); Route::post('/download_plugin', 'admin/download_plugin'); Route::get('/refresh_plugins', 'admin/refresh_plugins'); diff --git a/wiki/files/win/bt.js b/wiki/files/win/bt.js new file mode 100644 index 0000000..f0ce2f6 --- /dev/null +++ b/wiki/files/win/bt.js @@ -0,0 +1,202 @@ +/* + *宝塔面板去除各种计算题与延时等待 +*/ +if("undefined" != typeof bt && bt.hasOwnProperty("show_confirm")){ + bt.show_confirm = function(title, msg, fun, error) { + if (error == undefined) { + error = "" + } + var mess = layer.open({ + type: 1, + title: title, + area: "350px", + closeBtn: 2, + shadeClose: true, + content: "

    " + msg + "

    " + error + "
    " + }); + $(".bt-cancel").click(function () { + layer.close(mess); + }); + $("#toSubmit").click(function () { + layer.close(mess); + fun(); + }) + } +} +if("undefined" != typeof bt && bt.hasOwnProperty("prompt_confirm")){ + bt.prompt_confirm = function (title, msg, callback) { + layer.open({ + type: 1, + title: title, + area: "350px", + closeBtn: 2, + btn: ['确认', '取消'], + content: "
    \ +

    " + msg + "

    \ +
    ", + yes: function (layers, index) { + layer.close(layers) + if (callback) callback() + } + }); + } +} +if("undefined" != typeof database && database.hasOwnProperty("del_database")){ + database.del_database = function (wid, dbname,obj, callback) { + var tips = '是否确认【删除数据库】,删除后可能会影响业务使用!'; + if(obj && obj.db_type > 0) tips = '远程数据库不支持数据库回收站,删除后将无法恢复,请谨慎操作'; + var title = typeof dbname === "function" ?'批量删除数据库':'删除数据库 [ '+ dbname +' ]'; + layer.open({ + type:1, + title:title, + icon:0, + skin:'delete_site_layer', + area: "530px", + closeBtn: 2, + shadeClose: true, + content:"
    " + + "" + + "
    "+tips+"
    " + + "
    注意:数据无价,请谨慎操作!!!"+(!recycle_bin_db_open?'
    风险操作:当前数据库回收站未开启,删除数据库将永久消失!':'')+"
    " + + "
    ", + btn:[lan.public.ok,lan.public.cancel], + yes:function(indexs){ + var data = {id: wid,name: dbname}; + if(typeof dbname === "function"){ + delete data.id; + delete data.name; + } + layer.close(indexs) + if(typeof dbname === "function"){ + dbname(data) + }else{ + bt.database.del_database(data, function (rdata) { + layer.closeAll() + if (rdata.status) database_table.$refresh_table_list(true); + if (callback) callback(rdata); + bt.msg(rdata); + }) + } + } + }) + } +} +if("undefined" != typeof site && site.hasOwnProperty("del_site")){ + site.del_site = function(wid, wname, callback) { + var title = typeof wname === "function" ?'批量删除站点':'删除站点 [ '+ wname +' ]'; + layer.open({ + type:1, + title:title, + icon:0, + skin:'delete_site_layer', + area: "440px", + closeBtn: 2, + shadeClose: true, + content:"
    " + + '' + + "
    是否要删除关联的FTP、数据库、站点目录!
    " + + "
    " + + "" + + "" + + "" + + "
    "+ + "
    ", + btn:[lan.public.ok,lan.public.cancel], + success:function(layers,indexs){ + $(layers).find('.check_type_group label').hover(function () { + var name = $(this).find('input').attr('name'); + if (name === 'data' && !recycle_bin_db_open) { + layer.tips('风险操作:当前数据库回收站未开启,删除数据库将永久消失!', this, { tips: [1, 'red'], time: 0 }) + } else if (name === 'path' && !recycle_bin_open) { + layer.tips('风险操作:当前文件回收站未开启,删除站点目录将永久消失!', this, { tips: [1, 'red'], time: 0 }) + } + }, function () { + layer.closeAll('tips'); + }) + }, + yes:function(indexs){ + var data = {id: wid,webname: wname}; + $('#site_delete_form input[type=checkbox]').each(function (index, item) { + if($(item).is(':checked')) data[$(item).attr('name')] = 1 + }) + var is_database = data.hasOwnProperty('database'),is_path = data.hasOwnProperty('path'),is_ftp = data.hasOwnProperty('ftp'); + if((!is_database && !is_path) && (!is_ftp || is_ftp)){ + if(typeof wname === "function"){ + wname(data) + return false; + } + bt.site.del_site(data, function (rdata) { + layer.close(indexs); + if (callback) callback(rdata); + bt.msg(rdata); + }) + return false + } + if(typeof wname === "function"){ + delete data.id; + delete data.webname; + } + layer.close(indexs) + if(typeof wname === "function"){ + console.log(data) + wname(data) + }else{ + bt.site.del_site(data, function (rdata) { + layer.closeAll() + if (rdata.status) site.get_list(); + if (callback) callback(rdata); + bt.msg(rdata); + }) + } + } + }) + } +} +if("undefined" != typeof bt && bt.hasOwnProperty("firewall") && bt.firewall.hasOwnProperty("add_accept_port")){ + bt.firewall.add_accept_port = function(type, port, ps, callback) { + var action = "AddDropAddress"; + if (type == 'port') { + ports = port.split(':'); + if (port.indexOf('-') != -1) ports = port.split('-'); + for (var i = 0; i < ports.length; i++) { + if (!bt.check_port(ports[i])) { + layer.msg(lan.firewall.port_err, { icon: 5 }); + return; + } + } + action = "AddAcceptPort"; + } + + loading = bt.load(); + bt.send(action, 'firewall/' + action, { port: port, type: type, ps: ps }, function(rdata) { + loading.close(); + if (callback) callback(rdata); + }) + } +} +function SafeMessage(j, h, g, f) { + if(f == undefined) { + f = "" + } + var mess = layer.open({ + type: 1, + title: j, + area: "350px", + closeBtn: 2, + shadeClose: true, + content: "

    " + h + "

    " + f + "
    " + }); + $(".bt-cancel").click(function(){ + layer.close(mess); + }); + $("#toSubmit").click(function() { + layer.close(mess); + g(); + }) +} +$(document).ready(function () { + if($('#updata_pro_info').length>0){ + $('#updata_pro_info').html(''); + bt.set_cookie('productPurchase', 1); + } +}) \ No newline at end of file diff --git a/wiki/files/win/pluginAuth.py b/wiki/files/win/pluginAuth.py new file mode 100644 index 0000000..d16a175 --- /dev/null +++ b/wiki/files/win/pluginAuth.py @@ -0,0 +1,60 @@ +#coding: utf-8 +import public,os,sys,json + +class Plugin: + name = False + p_path = None + is_php = False + plu = None + __api_root_url = 'https://api.bt.cn' + __api_url = __api_root_url+ '/wpanel/get_plugin_list' + __cache_file = 'data/plugin_list.json' + + def __init__(self, name): + self.name = name + self.p_path = public.get_plugin_path(name) + self.is_php = os.path.exists(self.p_path + '/index.php') + + def get_plugin_list(self, force = False): + if force==False and os.path.exists(self.__cache_file): + jsonData = public.readFile(self.__cache_file) + softList = json.loads(jsonData) + else: + try: + jsonData = public.HttpGet(self.__api_url) + except Exception as ex: + raise public.error_conn_cloud(str(ex)) + softList = json.loads(jsonData) + if type(softList)!=dict or 'list' not in softList: raise Exception('云端插件列表获取失败') + public.writeFile(self.__cache_file, jsonData) + + return softList + + def isdef(self, fun): + if not self.is_php: + sys.path.append(self.p_path) + plugin_main = __import__(self.name + '_main') + try: + from imp import reload + reload(plugin_main) + except: + pass + self.plu = eval('plugin_main.' + self.name + '_main()') + if not hasattr(self.plu, fun): + if self.name == 'btwaf' and fun == 'index': + raise Exception("未购买") + return False + return True + + def exec_fun(self, args): + fun = args.s + if not self.is_php: + plu = self.plu + data = eval('plu.' + fun + '(args)') + else: + import panelPHP + args.s = fun + args.name = self.name + data = panelPHP.panelPHP(self.name).exec_php_script(args) + return data + diff --git a/wiki/update.md b/wiki/update.md index 9e3f091..9f2b710 100644 --- a/wiki/update.md +++ b/wiki/update.md @@ -1,4 +1,6 @@ -# 官方更新包修改记录 +# Linux面板官方更新包修改记录 + +查询最新版本号:https://www.bt.cn/api/panel/get_version?is_version=1 官方更新包下载链接:http://download.bt.cn/install/update/LinuxPanel-版本号.zip @@ -17,7 +19,7 @@ - 全局搜索替换 https://api.bt.cn => http://www.example.com -- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py和plugin_deployment.py) +- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py) - 全局搜索替换 http://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh @@ -53,6 +55,8 @@ ```python temp_file = temp_file.replace('wget -O Tpublic.sh', '#wget -O Tpublic.sh') + temp_file = temp_file.replace('\cp -rpa Tpublic.sh', '#\cp -rpa Tpublic.sh') + temp_file = temp_file.replace('http://download.bt.cn/install/public.sh', 'http://www.example.com/install/public.sh') ``` - install/install_soft.sh 在bash执行之前加入以下代码 @@ -70,6 +74,8 @@ 删除 p = threading.Thread(target=check_panel_msg) 以及下面2行 + 删除 p = threading.Thread(target=update_software_list) 以及下面2行 + - 去除面板日志上报:script/site_task.py 文件 删除最下面 logs_analysis() 这1行 diff --git a/wiki/updatewin.md b/wiki/updatewin.md new file mode 100644 index 0000000..4ce5e7b --- /dev/null +++ b/wiki/updatewin.md @@ -0,0 +1,78 @@ +# Windows面板官方更新包修改记录 + +查询最新版本号:https://www.bt.cn/api/wpanel/get_version?is_version=1 + +官方更新包下载链接:http://download.bt.cn/win/panel/panel_版本号.zip + +假设搭建的宝塔第三方云端网址是 http://www.example.com + +Windows版宝塔由于加密文件太多,无法全部解密,因此无法做到全开源。 + +- 删除pluginAuth.cp38-win_amd64.pyd,将win/pluginAuth.py复制到class文件夹 + +- 全局搜索替换 https://api.bt.cn => http://www.example.com + +- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/ + +- 全局搜索替换 http://www.bt.cn/api/ => http://www.example.com/api/ + +- 全局搜索替换 http://download.bt.cn/win/panel/data/setup.py => http://www.example.com/win/panel/data/setup.py + +- class/panel_update.py 文件 public.get_url() => 'http://www.example.com' + +- class/public.py 在 + + ```python + def GetConfigValue(key): + ``` + + 这一行下面加上 + + ```python + if key == 'home': return 'http://www.example.com' + ``` + + 在 def is_bind(): 这一行下面加上 return True + + 在 def check_domain_cloud(domain): 这一行下面加上 return + + 在 get_update_file() 方法里面 get_url() => GetConfigValue('home') + +- class/webshell_check.py 搜索替换 public.GetConfigValue('home') => 'https://www.bt.cn' + +- class/plugin_deployment.py 文件 get_icon 和 SetupPackage 方法内,替换 public.GetConfigValue('home') => 'https://www.bt.cn' + +- 去除无用的定时任务:task.py 文件 + + 删除 p = threading.Thread(target=check_files_panel) 以及下面2行 + + 删除 p = threading.Thread(target=check_panel_msg) 以及下面2行 + + 删除 p = threading.Thread(target=update_software_list) 以及下面2行 + +- 去除面板日志上报:script/site_task.py 文件 + + 删除最下面 logs_analysis() 这1行 + +- 去除首页广告:BTPanel/static/js/index.js 文件删除最下面index.recommend_paid_version()这一行 + +- 去除首页自动检测更新,避免频繁请求云端:BTPanel/static/js/index.js 文件注释掉bt.system.check_update这一段代码外的setTimeout + +- [可选]去除各种计算题:复制win/bt.js到 BTPanel/static/ ,在 BTPanel/templates/default/layout.html 的尾部加入 + + ```javascript + + ``` + +- [可选]去除创建网站自动创建的垃圾文件:class/panelSite.py 文件 + + 删除 htaccess = self.sitePath + '/.htaccess' 以及下面2行 + + 删除 index = self.sitePath + '/index.html' 以及下面6行 + + 删除 doc404 = self.sitePath + '/404.html' 以及下面6行 + + 删除 if not os.path.exists(self.sitePath + '/.htaccess') 这一行 + + +