commit aa293b66a9f8718f6aaa2d70d402d852ef145364 Author: flucont Date: Fri Jul 21 17:46:50 2023 +0800 update diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..037c165 --- /dev/null +++ b/.env.example @@ -0,0 +1,18 @@ +APP_DEBUG = false + +[APP] +DEFAULT_TIMEZONE = Asia/Shanghai + +[DATABASE] +TYPE = mysql +HOSTNAME = {dbhost} +DATABASE = {dbname} +USERNAME = {dbuser} +PASSWORD = {dbpwd} +HOSTPORT = {dbport} +CHARSET = utf8mb4 +PREFIX = {dbprefix} +DEBUG = false + +[LANG] +default_lang = zh-cn \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8f8d09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/.idea +/.vscode +/vendor +*.log \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..91937eb --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Flucont + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..b9960a5 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# 宝塔面板第三方云端 +这是一个用php开发的宝塔面板第三方云端站点程序。 + +你可以使用此程序搭建属于自己的宝塔面板第三方云端,实现最新版宝塔面板私有化部署,不与宝塔官方接口通信,满足隐私安全合规需求。同时还可以去除面板强制绑定账号,DIY面板功能等。 + +网站后台管理可一键同步宝塔官方的插件列表与增量更新插件包,还有云端使用记录、IP黑白名单、操作日志、定时任务等功能。 + +本项目自带的宝塔安装包和更新包是7.9.8最新版,已修改适配此第三方云端,并且全开源,无so等加密文件。 + +觉得该项目不错的可以给个Star~ + +## 声明 + +1.此项目只能以自用为目的,不得侵犯堡塔公司及其他第三方的知识产权和其他合法权利。 + +2.搭建使用此项目必须有一定的编程和Linux运维基础,纯小白不建议使用。 + +## 环境要求 + +* `PHP` >= 7.4 +* `MySQL` >= 5.6 +* `fileinfo`扩展 +* `ZipArchive`扩展 + +## 部署方法 + +- [下载最新版的Release包](https://github.com/flucont/btcloud/releases) +- 如果是下载的源码包,需要执行 `composer install --no-dev` 安装依赖,如果是下载的Release包,则不需要 +- 设置网站运行目录为`public` +- 设置伪静态为`ThinkPHP` +- 访问网站,会自动跳转到安装页面,根据提示安装完成 + +## 使用方法 + +- 在`批量替换工具`,执行页面显示的命令,可将bt安装包、更新包和脚本文件里面的`http://www.example.com`批量替换成当前网站的网址。 +- 在`系统基本设置`修改宝塔面板接口设置。你需要准备一个使用官方最新脚本安装并绑定账号的宝塔面板,用于获取最新插件列表及插件包。并根据界面提示安装好专用插件。 +- 在`定时任务设置`执行所显示的命令从宝塔官方获取最新的插件列表并批量下载插件包(增量更新)。当然你也可以去插件列表,一个一个点击下载。 +- 访问网站`/download`查看使用此第三方云端的一键安装脚本。 + +## 其他 + +- [Linux面板官方更新包修改记录](./wiki/update.md) + +- [Windows面板官方更新包修改记录](./wiki/updatewin.md) + +- 宝塔面板官方版与此第三方云端版对比: + + | | 官方版 | 此第三方云端版 | + | ---------- | ------------------------------------------------------------ | -------------------------------------------------- | + | 版本更新 | 支持 | 支持 | + | 面板广告 | 有广告 | 无广告 | + | 是否全开源 | 没有全开源 | 全开源 | + | 资源占用 | 各种统计上报等任务,资源占用略高 | 去除了很多无用的定时任务,资源占较少 | + | 兼容性 | 由于编译的so文件有系统架构限制,兼容的系统仅限已编译的so对应的系统架构 | 由于全开源,没有已编译的so文件,因此无系统架构限制 | + + diff --git a/app/.htaccess b/app/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/app/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/app/AppService.php b/app/AppService.php new file mode 100644 index 0000000..96556e8 --- /dev/null +++ b/app/AppService.php @@ -0,0 +1,22 @@ +app = $app; + $this->request = $this->app->request; + + // 控制器初始化 + $this->initialize(); + } + + // 初始化 + protected function initialize() + { + $this->clientip = real_ip(); + } + + /** + * 验证数据 + * @access protected + * @param array $data 数据 + * @param string|array $validate 验证器名或者验证规则数组 + * @param array $message 提示信息 + * @param bool $batch 是否批量验证 + * @return array|string|true + * @throws ValidateException + */ + protected function validate(array $data, $validate, array $message = [], bool $batch = false) + { + if (is_array($validate)) { + $v = new Validate(); + $v->rule($validate); + } else { + if (strpos($validate, '.')) { + // 支持场景 + [$validate, $scene] = explode('.', $validate); + } + $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate); + $v = new $class(); + if (!empty($scene)) { + $v->scene($scene); + } + } + + $v->message($message); + + // 是否批量验证 + if ($batch || $this->batchValidate) { + $v->batch(true); + } + + return $v->failException(true)->check($data); + } + + protected function alert($code, $msg = '', $url = null, $wait = 3) + { + if ($url) { + $url = (strpos($url, '://') || 0 === strpos($url, '/')) ? $url : (string)$this->app->route->buildUrl($url); + } + if(empty($msg)) $msg = '未知错误'; + + View::assign([ + 'code' => $code, + 'msg' => $msg, + 'url' => $url, + 'wait' => $wait, + ]); + return View::fetch(app()->getAppPath().'view/dispatch_jump.html'); + } + +} diff --git a/app/ExceptionHandle.php b/app/ExceptionHandle.php new file mode 100644 index 0000000..453d126 --- /dev/null +++ b/app/ExceptionHandle.php @@ -0,0 +1,58 @@ +setName('decrypt') + ->addArgument('type', Argument::REQUIRED, '文件类型,plugin:插件文件,module:模块文件,classdir:宝塔class目录,all:所有py文件') + ->addArgument('file', Argument::REQUIRED, '文件路径') + ->addArgument('os', Argument::OPTIONAL, '操作系统:Windows/Linux') + ->setDescription('解密宝塔面板python文件'); + } + + protected function execute(Input $input, Output $output) + { + $type = trim($input->getArgument('type')); + $file = trim($input->getArgument('file')); + + if(!file_exists($file)){ + $output->writeln('文件不存在'); + return; + } + + if($type == 'plugin'){ + $os = trim($input->getArgument('os')); + try{ + if(Plugins::decode_plugin_main_local($file, $os)){ + $output->writeln('文件解密成功!'); + }else{ + $output->writeln('文件解密失败!'); + } + }catch(\Exception $e){ + $output->writeln($e->getMessage()); + } + }elseif($type == 'module'){ + try{ + $res = Plugins::decode_module_file($file); + if($res == 2){ + $output->writeln('文件解密失败!'); + }elseif($res == 1){ + $output->writeln('文件解密成功!'); + } + }catch(\Exception $e){ + $output->writeln($e->getMessage()); + } + }elseif($type == 'classdir'){ + $file = rtrim($file, '/'); + if(!file_exists($file.'/common.py')){ + $output->writeln('当前路径非宝塔面板class目录'); + return; + } + $dirs = glob($file.'/*Model'); + foreach($dirs as $dir){ + if(!is_dir($dir))continue; + $files = glob($dir.'/*Model.py'); + foreach($files as $file){ + try{ + $res = Plugins::decode_module_file($file); + if($res == 2){ + $output->writeln('文件解密失败:'.$file); + }elseif($res == 1){ + $output->writeln('文件解密成功:'.$file); + } + }catch(\Exception $e){ + $output->writeln($e->getMessage().':'.$file); + } + } + } + }elseif($type == 'all'){ + $file = rtrim($file, '/'); + $this->scan_all_file($input, $output, $file); + }else{ + $output->writeln('未知文件类型'); + } + } + + private function scan_all_file(Input $input, Output $output, $path) { + $dir = opendir($path); + while(false !== ( $file = readdir($dir)) ) { + if (( $file != '.' ) && ( $file != '..' )) { + $filepath = $path . '/' . $file; + if ( is_dir($filepath) ) { + $this->scan_all_file($input, $output, $filepath); + } + elseif(substr($filepath, -3) == '.py') { + try{ + $res = Plugins::decode_module_file($filepath); + if($res == 2){ + $output->writeln('文件解密失败:'.$filepath); + }elseif($res == 1){ + $output->writeln('文件解密成功:'.$filepath); + } + }catch(\Exception $e){ + $output->writeln($e->getMessage().':'.$filepath); + } + } + } + } + closedir($dir); + } + + +} diff --git a/app/command/UpdateAll.php b/app/command/UpdateAll.php new file mode 100644 index 0000000..f6df2f1 --- /dev/null +++ b/app/command/UpdateAll.php @@ -0,0 +1,118 @@ +setName('updateall') + ->setDescription('the updateall command'); + } + + protected function execute(Input $input, Output $output) + { + $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, $os)){ + return; + } + + $count = 0; + + $type = intval(config_get($os=='Windows'?'updateall_type_win':'updateall_type')); + + $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; + + foreach($plugin['versions'] as $version){ + $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, $os)){ + sleep(1); + $this->download_plugin($input, $output, $plugin['name'], $ver, $os); + } + sleep(1); + $count++; + } + }else{ + 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, $os); + } + sleep(1); + $count++; + } + } + } + } + + $output->writeln($os.'本次成功下载'.$count.'个插件'); + } + + private function refresh_plugin_list(Input $input, Output $output, $os){ + try{ + 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()); + errorlog($e->getMessage()); + return false; + } + } + + private function download_plugin(Input $input, Output $output, $plugin_name, $version, $os){ + $fullname = $plugin_name.'-'.$version; + try{ + 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()); + errorlog($fullname.' '.$e->getMessage()); + return false; + } + } + + private function download_plugin_image(Input $input, Output $output, $fname){ + try{ + Plugins::download_plugin_other($fname); + $output->writeln('下载图片: '.$fname.' 成功'); + return true; + }catch(\Exception $e){ + $output->writeln($fname.' '.$e->getMessage()); + errorlog($fname.' '.$e->getMessage()); + return false; + } + } +} diff --git a/app/common.php b/app/common.php new file mode 100644 index 0000000..65d4024 --- /dev/null +++ b/app/common.php @@ -0,0 +1,187 @@ +getRootPath().'data/'.($os == 'Windows' ? 'win/' : ''); +} + + +function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { + $ckey_length = 4; + $key = md5($key); + $keya = md5(substr($key, 0, 16)); + $keyb = md5(substr($key, 16, 16)); + $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; + $cryptkey = $keya.md5($keya.$keyc); + $key_length = strlen($cryptkey); + $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string; + $string_length = strlen($string); + $result = ''; + $box = range(0, 255); + $rndkey = array(); + for($i = 0; $i <= 255; $i++) { + $rndkey[$i] = ord($cryptkey[$i % $key_length]); + } + for($j = $i = 0; $i < 256; $i++) { + $j = ($j + $box[$i] + $rndkey[$i]) % 256; + $tmp = $box[$i]; + $box[$i] = $box[$j]; + $box[$j] = $tmp; + } + for($a = $j = $i = 0; $i < $string_length; $i++) { + $a = ($a + 1) % 256; + $j = ($j + $box[$a]) % 256; + $tmp = $box[$a]; + $box[$a] = $box[$j]; + $box[$j] = $tmp; + $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256])); + } + if($operation == 'DECODE') { + if(((int)substr($result, 0, 10) == 0 || (int)substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) { + return substr($result, 26); + } else { + return ''; + } + } else { + return $keyc.str_replace('=', '', base64_encode($result)); + } +} + +function random($length, $numeric = 0) { + $seed = base_convert(md5(microtime().$_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35); + $seed = $numeric ? (str_replace('0', '', $seed).'012340567890') : ($seed.'zZ'.strtoupper($seed)); + $hash = ''; + $max = strlen($seed) - 1; + for($i = 0; $i < $length; $i++) { + $hash .= $seed[mt_rand(0, $max)]; + } + return $hash; +} + +function get_curl($url, $post=0, $referer=0, $cookie=0, $header=0, $ua=0, $nobody=0, $addheader=0) +{ + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + $httpheader[] = "Accept: */*"; + $httpheader[] = "Accept-Encoding: gzip,deflate,sdch"; + $httpheader[] = "Accept-Language: zh-CN,zh;q=0.8"; + $httpheader[] = "Connection: close"; + if($addheader){ + $httpheader = array_merge($httpheader, $addheader); + } + curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader); + if ($post) { + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $post); + } + if ($header) { + curl_setopt($ch, CURLOPT_HEADER, true); + } + if ($cookie) { + curl_setopt($ch, CURLOPT_COOKIE, $cookie); + } + if($referer){ + curl_setopt($ch, CURLOPT_REFERER, $referer); + } + if ($ua) { + curl_setopt($ch, CURLOPT_USERAGENT, $ua); + } + else { + curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"); + } + if ($nobody) { + curl_setopt($ch, CURLOPT_NOBODY, 1); + } + curl_setopt($ch, CURLOPT_ENCODING, "gzip"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $ret = curl_exec($ch); + curl_close($ch); + return $ret; +} + +function jsonp_decode($jsonp, $assoc = false) +{ + $jsonp = trim($jsonp); + if(isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') { + $begin = strpos($jsonp, '('); + if(false !== $begin) + { + $end = strrpos($jsonp, ')'); + if(false !== $end) + { + $jsonp = substr($jsonp, $begin + 1, $end - $begin - 1); + } + } + } + return json_decode($jsonp, $assoc); +} + +function config_get($key, $default = null) +{ + $value = config('sys.'.$key); + return $value!==null ? $value : $default; +} + +function config_set($key, $value) +{ + $res = Db::name('config')->replace()->insert(['key'=>$key, 'value'=>$value]); + return $res!==false; +} + +function real_ip($type=0){ + $ip = $_SERVER['REMOTE_ADDR']; + if($type<=0 && isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { + foreach ($matches[0] AS $xip) { + if (filter_var($xip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $xip; + break; + } + } + } elseif ($type<=0 && isset($_SERVER['HTTP_CLIENT_IP']) && filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } elseif ($type<=1 && isset($_SERVER['HTTP_CF_CONNECTING_IP']) && filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_CF_CONNECTING_IP']; + } elseif ($type<=1 && isset($_SERVER['HTTP_X_REAL_IP']) && filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { + $ip = $_SERVER['HTTP_X_REAL_IP']; + } + return $ip; +} + +function getSubstr($str, $leftStr, $rightStr) +{ + $left = strpos($str, $leftStr); + $start = $left+strlen($leftStr); + $right = strpos($str, $rightStr, $start); + if($left < 0) return ''; + if($right>0){ + return substr($str, $start, $right-$start); + }else{ + return substr($str, $start); + } +} + +function checkRefererHost(){ + if(!request()->header('referer'))return false; + $url_arr = parse_url(request()->header('referer')); + $http_host = request()->header('host'); + if(strpos($http_host,':'))$http_host = substr($http_host, 0, strpos($http_host, ':')); + return $url_arr['host'] === $http_host; +} + +function checkIfActive($string) { + $array=explode(',',$string); + $action = request()->action(); + if (in_array($action,$array)){ + return 'active'; + }else + return null; +} + +function errorlog($msg){ + $handle = fopen(app()->getRootPath()."record.txt", 'a'); + fwrite($handle, date('Y-m-d H:i:s')."\t".$msg."\r\n"); + fclose($handle); +} \ No newline at end of file diff --git a/app/controller/Admin.php b/app/controller/Admin.php new file mode 100644 index 0000000..1474da9 --- /dev/null +++ b/app/controller/Admin.php @@ -0,0 +1,388 @@ +islogin){ + return redirect('/admin'); + } + if(request()->isAjax()){ + $username = input('post.username',null,'trim'); + $password = input('post.password',null,'trim'); + $code = input('post.code',null,'trim'); + + if(empty($username) || empty($password)){ + return json(['code'=>-1, 'msg'=>'用户名或密码不能为空']); + } + if(!captcha_check($code)){ + return json(['code'=>-1, 'msg'=>'验证码错误']); + } + if($username == config_get('admin_username') && $password == config_get('admin_password')){ + Db::name('log')->insert(['uid' => 0, 'action' => '登录后台', 'data' => 'IP:'.$this->clientip, 'addtime' => date("Y-m-d H:i:s")]); + $session = md5($username.config_get('admin_password')); + $expiretime = time()+2562000; + $token = authcode("{$username}\t{$session}\t{$expiretime}", 'ENCODE', config_get('syskey')); + cookie('admin_token', $token, ['expire' => $expiretime, 'httponly' => true]); + config_set('admin_lastlogin', date('Y-m-d H:i:s')); + return json(['code'=>0]); + }else{ + return json(['code'=>-1, 'msg'=>'用户名或密码错误']); + } + } + return view(); + } + + public function logout() + { + cookie('admin_token', null); + return redirect('/admin/login'); + } + + public function index() + { + $stat = ['total'=>0, 'free'=>0, 'pro'=>0, 'ltd'=>0, 'third'=>0]; + $json_arr = Plugins::get_plugin_list(); + if($json_arr){ + foreach($json_arr['list'] as $plugin){ + $stat['total']++; + if($plugin['type']==10) $stat['third']++; + elseif($plugin['type']==12) $stat['ltd']++; + elseif($plugin['type']==8) $stat['pro']++; + elseif($plugin['type']==5 || $plugin['type']==6 || $plugin['type']==7) $stat['free']++; + } + } + $stat['runtime'] = Db::name('config')->where('key','runtime')->value('value') ?? '未运行'; + $stat['record_total'] = Db::name('record')->count(); + $stat['record_isuse'] = Db::name('record')->whereTime('usetime', '>=', strtotime('-7 days'))->count(); + View::assign('stat', $stat); + + $tmp = 'version()'; + $mysqlVersion = Db::query("select version()")[0][$tmp]; + $info = [ + 'framework_version' => app()::VERSION, + 'php_version' => PHP_VERSION, + 'mysql_version' => $mysqlVersion, + 'software' => $_SERVER['SERVER_SOFTWARE'], + 'os' => php_uname(), + 'date' => date("Y-m-d H:i:s"), + ]; + View::assign('info', $info); + return view(); + } + + public function set(){ + if(request()->isAjax()){ + $params = Request::param(); + + foreach ($params as $key => $value) { + config_set($key, $value); + } + cache('configs', NULL); + return json(['code'=>0]); + } + $mod = input('param.mod', 'sys'); + View::assign('mod', $mod); + View::assign('conf', config('sys')); + $runtime = Db::name('config')->where('key','runtime')->value('value') ?? '未运行'; + View::assign('runtime', $runtime); + return view(); + } + + public function setaccount(){ + $params = Request::param(); + if(isset($params['username']))$params['username']=trim($params['username']); + if(isset($params['oldpwd']))$params['oldpwd']=trim($params['oldpwd']); + if(isset($params['newpwd']))$params['newpwd']=trim($params['newpwd']); + if(isset($params['newpwd2']))$params['newpwd2']=trim($params['newpwd2']); + + if(empty($params['username'])) return json(['code'=>-1, 'msg'=>'用户名不能为空']); + + config_set('admin_username', $params['username']); + + if(!empty($params['oldpwd']) && !empty($params['newpwd']) && !empty($params['newpwd2'])){ + if(config_get('admin_password') != $params['oldpwd']){ + return json(['code'=>-1, 'msg'=>'旧密码不正确']); + } + if($params['newpwd'] != $params['newpwd2']){ + return json(['code'=>-1, 'msg'=>'两次新密码输入不一致']); + } + config_set('admin_password', $params['newpwd']); + } + cache('configs', NULL); + cookie('admin_token', null); + return json(['code'=>0]); + } + + public function testbturl(){ + $bt_url = input('post.bt_url'); + $bt_key = input('post.bt_key'); + 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 || isset($result['sites_path']))){ + $result = $btapi->get_user_info(); + if($result && isset($result['username'])){ + return json(['code'=>0, 'msg'=>'面板连接测试成功!']); + }else{ + return json(['code'=>-1, 'msg'=>'面板连接测试成功,但未安装专用插件']); + } + }else{ + return json(['code'=>-1, 'msg'=>isset($result['msg'])?$result['msg']:'面板地址无法连接']); + } + } + + public function plugins(){ + $typelist = []; + $json_arr = Plugins::get_plugin_list(); + if($json_arr){ + foreach($json_arr['type'] as $type){ + $typelist[$type['id']] = $type['title']; + } + } + View::assign('typelist', $typelist); + 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($os); + if(!$json_arr) return json([]); + + $typelist = []; + foreach($json_arr['type'] as $row){ + $typelist[$row['id']] = $row['title']; + } + + $list = []; + foreach($json_arr['list'] as $plugin){ + if($type > 0 && $plugin['type']!=$type) continue; + if(!empty($keyword) && $keyword != $plugin['name'] && stripos($plugin['title'], $keyword)===false) continue; + $versions = []; + foreach($plugin['versions'] as $version){ + $ver = $version['m_version'].'.'.$version['version']; + if(isset($version['download'])){ + $status = false; + if(file_exists(get_data_dir().'plugins/other/'.$version['download'])){ + $status = true; + } + $versions[] = ['status'=>$status, 'type'=>1, 'version'=>$ver, 'download'=>$version['download'], 'md5'=>$version['md5']]; + }else{ + $status = false; + if(file_exists(get_data_dir($os).'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ + $status = true; + } + $versions[] = ['status'=>$status, 'type'=>0, 'version'=>$ver]; + } + } + if($plugin['name'] == 'obs') $plugin['ps'] = substr($plugin['ps'],0,strpos($plugin['ps'],' $plugin['id'], + 'name' => $plugin['name'], + 'title' => $plugin['title'], + 'type' => $plugin['type'], + 'typename' => $typelist[$plugin['type']], + 'desc' => str_replace('target="_blank"','target="_blank" rel="noopener noreferrer"',$plugin['ps']), + 'price' => $plugin['price'], + 'author' => isset($plugin['author']) ? $plugin['author'] : '官方', + 'versions' => $versions + ]; + } + return json($list); + } + + 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, $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()]); + } + } + + public function refresh_plugins(){ + $os = input('get.os'); + if(!$os) $os = 'Linux'; + try{ + 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()]); + } + } + + public function record(){ + return view(); + } + + public function record_data(){ + $ip = input('post.ip', null, 'trim'); + $offset = input('post.offset/d'); + $limit = input('post.limit/d'); + + $select = Db::name('record'); + if(!empty($ip)){ + $select->where('ip', $ip); + } + $total = $select->count(); + $rows = $select->order('id','desc')->limit($offset, $limit)->select(); + + return json(['total'=>$total, 'rows'=>$rows]); + } + + public function log(){ + return view(); + } + + public function log_data(){ + $action = input('post.action', null, 'trim'); + $offset = input('post.offset/d'); + $limit = input('post.limit/d'); + + $select = Db::name('log'); + if(!empty($action)){ + $select->where('action', $action); + } + $total = $select->count(); + $rows = $select->order('id','desc')->limit($offset, $limit)->select(); + + return json(['total'=>$total, 'rows'=>$rows]); + } + + public function list(){ + $type = input('param.type', 'black'); + View::assign('type', $type); + View::assign('typename', $type=='white'?'白名单':'黑名单'); + return view(); + } + + public function list_data(){ + $type = input('param.type', 'black'); + $ip = input('post.ip', null, 'trim'); + $offset = input('post.offset/d'); + $limit = input('post.limit/d'); + + $tablename = $type == 'black' ? 'black' : 'white'; + $select = Db::name($tablename); + if(!empty($ip)){ + $select->where('ip', $ip); + } + $total = $select->count(); + $rows = $select->order('id','desc')->limit($offset, $limit)->select(); + + return json(['total'=>$total, 'rows'=>$rows]); + } + + public function list_op(){ + $type = input('param.type', 'black'); + $tablename = $type == 'black' ? 'black' : 'white'; + $act = input('post.act', null); + if($act == 'get'){ + $id = input('post.id/d'); + if(!$id) return json(['code'=>-1, 'msg'=>'no id']); + $data = Db::name($tablename)->where('id', $id)->find(); + return json(['code'=>0, 'data'=>$data]); + }elseif($act == 'add'){ + $ip = input('post.ip', null, 'trim'); + if(!$ip) return json(['code'=>-1, 'msg'=>'IP不能为空']); + if(Db::name($tablename)->where('ip', $ip)->find()){ + return json(['code'=>-1, 'msg'=>'该IP已存在']); + } + Db::name($tablename)->insert([ + 'ip' => $ip, + 'enable' => 1, + 'addtime' => date("Y-m-d H:i:s") + ]); + return json(['code'=>0, 'msg'=>'succ']); + }elseif($act == 'edit'){ + $id = input('post.id/d'); + $ip = input('post.ip', null, 'trim'); + if(!$id || !$ip) return json(['code'=>-1, 'msg'=>'IP不能为空']); + if(Db::name($tablename)->where('ip', $ip)->where('id', '<>', $id)->find()){ + return json(['code'=>-1, 'msg'=>'该IP已存在']); + } + Db::name($tablename)->where('id', $id)->update([ + 'ip' => $ip + ]); + return json(['code'=>0, 'msg'=>'succ']); + }elseif($act == 'enable'){ + $id = input('post.id/d'); + $enable = input('post.enable/d'); + if(!$id) return json(['code'=>-1, 'msg'=>'no id']); + Db::name($tablename)->where('id', $id)->update([ + 'enable' => $enable + ]); + return json(['code'=>0, 'msg'=>'succ']); + }elseif($act == 'del'){ + $id = input('post.id/d'); + if(!$id) return json(['code'=>-1, 'msg'=>'no id']); + Db::name($tablename)->where('id', $id)->delete(); + return json(['code'=>0, 'msg'=>'succ']); + } + return json(['code'=>-1, 'msg'=>'no act']); + } + + public function deplist(){ + $deplist_linux = get_data_dir().'config/deployment_list.json'; + $deplist_win = get_data_dir('Windows').'config/deployment_list.json'; + $deplist_linux_time = file_exists($deplist_linux) ? date("Y-m-d H:i:s", filemtime($deplist_linux)) : '不存在'; + $deplist_win_time = file_exists($deplist_win) ? date("Y-m-d H:i:s", filemtime($deplist_win)) : '不存在'; + View::assign('deplist_linux_time', $deplist_linux_time); + View::assign('deplist_win_time', $deplist_win_time); + return view(); + } + + public function refresh_deplist(){ + $os = input('get.os'); + if(!$os) $os = 'Linux'; + try{ + Plugins::refresh_deplist($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()]); + } + } + + public function cleancache(){ + Cache::clear(); + return json(['code'=>0,'msg'=>'succ']); + } +} \ No newline at end of file diff --git a/app/controller/Api.php b/app/controller/Api.php new file mode 100644 index 0000000..1044606 --- /dev/null +++ b/app/controller/Api.php @@ -0,0 +1,387 @@ +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_arr = Plugins::get_plugin_list(); + if(!$json_arr) return json((object)[]); + 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($os).'plugins/package/'.$plugin_name.'-'.$version.'.zip'; + if(file_exists($filepath)){ + $filename = $plugin_name.'.zip'; + $this->output_file($filepath, $filename); + }else{ + return '云端不存在该插件包'; + } + } + + //下载插件主文件 + 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($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($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); + }else{ + return '云端不存在该插件主文件'; + } + } + } + + //下载插件其他文件 + public function download_plugin_other(){ + $fname = input('get.fname'); + if(!$fname){ + return json(['status'=>false, 'msg'=>'参数不能为空']); + } + if(strpos(dirname($fname),'.')!==false)return json(['status'=>false, 'msg'=>'参数不正确']); + if(!$this->checklist()) return json(['status'=>false, 'msg'=>'你的服务器被禁止使用此云端']); + $filepath = get_data_dir().'plugins/other/'.$fname; + if(file_exists($filepath)){ + $filename = basename($fname); + $this->output_file($filepath, $filename); + }else{ + return json(['status'=>false, 'msg'=>'云端不存在该插件文件']); + } + } + + public function get_update_logs(){ + $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); + } + + public function get_version(){ + $version = config_get('new_version'); + return $version; + } + + public function get_version_win(){ + $version = config_get('new_version_win'); + return $version; + } + + //安装统计 + public function setup_count(){ + return 'ok'; + } + + //检测更新 + public function check_update(){ + $version = config_get('new_version'); + $down_url = request()->root(true).'/install/update/LinuxPanel-'.$version.'.zip'; + $data = [ + 'force' => false, + 'version' => $version, + 'downUrl' => $down_url, + 'updateMsg' => config_get('update_msg'), + 'uptime' => config_get('update_date'), + 'is_beta' => 0, + 'adviser' => -1, + 'btb' => '', + 'beta' => [ + 'version' => $version, + 'downUrl' => $down_url, + 'updateMsg' => config_get('update_msg'), + 'uptime' => config_get('update_date'), + ] + ]; + 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 btm_latest_version(){ + $data = [ + 'version' => config_get('new_version_btm'), + 'description' => config_get('update_msg_btm'), + 'create_time' => config_get('update_date_btm') + ]; + return json($data); + } + + //宝塔云监控更新日志 + public function btm_update_history(){ + $data = [ + [ + 'version' => config_get('new_version_btm'), + 'description' => config_get('update_msg_btm'), + 'create_time' => config_get('update_date_btm') + ] + ]; + return json($data); + } + + //获取内测版更新日志 + public function get_beta_logs(){ + return json(['beta_ps'=>'当前暂无内测版', 'list'=>[]]); + } + + //检查用户绑定是否正确 + public function check_auth_key(){ + return '1'; + } + + //从云端验证域名是否可访问 + public function check_domain(){ + $domain = input('post.domain',null,'trim'); + $ssl = input('post.ssl/d'); + if(!$domain) return json(['status'=>false, 'msg'=>'域名不能为空']); + if(!strpos($domain,'.')) return json(['status'=>false, 'msg'=>'域名格式不正确']); + $domain = str_replace('*.','',$domain); + $ip = gethostbyname($domain); + if(!$ip || $ip == $domain){ + return json(['status'=>false, 'msg'=>'无法访问']); + }else{ + return json(['status'=>true, 'msg'=>'访问正常']); + } + } + + //同步时间 + public function get_time(){ + 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]); + } + + //获取产品推荐信息 + public function get_plugin_remarks(){ + return json(['list'=>[], 'pro_list'=>[], 'kfqq'=>'', 'kf'=>'', 'qun'=>'']); + } + + //获取指定插件评分 + public function get_plugin_socre(){ + return json(['total'=>0, 'split'=>[0,0,0,0,0],'page'=>"
1共计0条数据
",'data'=>[]]); + } + + //提交插件评分 + public function plugin_score(){ + return json(['status'=>true, 'msg'=>'您的评分已成功提交,感谢您的支持!']); + } + + //获取IP地址 + public function get_ip_address(){ + return $this->clientip; + } + + //绑定账号 + public function get_auth_token(){ + if(!$_POST['data']) return json(['status'=>false, 'msg'=>'参数不能为空']); + $reqData = hex2bin($_POST['data']); + parse_str($reqData, $arr); + $serverid = $arr['serverid']; + $userinfo = ['uid'=>1, 'username'=>'Administrator', 'address'=>'127.0.0.1', 'serverid'=>$serverid, 'access_key'=>random(32), 'secret_key'=>random(48), 'ukey'=>md5(time()), 'state'=>1]; + $data = bin2hex(urlencode(json_encode($userinfo))); + return json(['status'=>true, 'msg'=>'登录成功!', 'data'=>$data]); + } + + //绑定账号新 + public function authorization_login(){ + if(!$_POST['data']) return json(['status'=>false, 'msg'=>'参数不能为空']); + $reqData = hex2bin($_POST['data']); + parse_str($reqData, $arr); + $serverid = $arr['serverid']; + $userinfo = ['uid'=>1, 'username'=>'Administrator', 'ip'=>'127.0.0.1', 'server_id'=>$serverid, 'access_key'=>random(32), 'secret_key'=>random(48)]; + $data = bin2hex(urlencode(json_encode($userinfo))); + return json(['status'=>true, 'msg'=>'登录成功!', 'data'=>$data]); + } + + //刷新授权信息 + public function authorization_info(){ + if(!$_POST['data']) return json(['status'=>false, 'msg'=>'参数不能为空']); + $reqData = hex2bin($_POST['data']); + parse_str($reqData, $arr); + $id = isset($arr['id'])&&$arr['id']>0?$arr['id']:1; + $userinfo = ['id'=>$id, 'product'=>$arr['product'], 'status'=>2, 'clients'=>9999, 'durations'=>0, 'end_time'=>strtotime('+10 year')]; + $data = bin2hex(urlencode(json_encode($userinfo))); + return json(['status'=>true, 'data'=>$data]); + } + + //一键部署列表 + public function get_deplist(){ + $os = input('post.os'); + $json_arr = Plugins::get_deplist($os); + if(!$json_arr) return json([]); + return json($json_arr); + } + + //获取宝塔SSL列表 + public function get_ssl_list(){ + $data = bin2hex('[]'); + return json(['status'=>true, 'msg'=>'', 'data'=>$data]); + } + + public function return_success(){ + return json(['status'=>true, 'msg'=>1, 'data'=>(object)[]]); + } + + public function return_error(){ + return json(['status'=>false, 'msg'=>'不支持当前操作']); + } + + public function return_empty(){ + return ''; + } + + public function return_empty_array(){ + return json([]); + } + + public function return_page_data(){ + return json(['page'=>"
11/0从1-1000条共计0条数据
", 'data'=>[]]); + } + + //检查黑白名单 + private function checklist(){ + if(config_get('whitelist') == 1){ + if(Db::name('white')->where('ip', $this->clientip)->where('enable', 1)->find()){ + return true; + } + return false; + }else{ + if(Db::name('black')->where('ip', $this->clientip)->where('enable', 1)->find()){ + return false; + } + return true; + } + } + + //下载大文件 + private function output_file($filepath, $filename){ + $filesize = filesize($filepath); + $filemd5 = md5_file($filepath); + + ob_clean(); + header("Content-Type: application/octet-stream"); + header("Content-Disposition: attachment; filename={$filename}.zip"); + header("Content-Length: {$filesize}"); + header("File-size: {$filesize}"); + header("Content-md5: {$filemd5}"); + + $read_buffer = 1024 * 100; + $handle = fopen($filepath, 'rb'); + $sum_buffer = 0; + while(!feof($handle) && $sum_buffer<$filesize) { + echo fread($handle, min($read_buffer, ($filesize - $sum_buffer) + 1)); + $sum_buffer += $read_buffer; + flush(); + } + fclose($handle); + exit; + } +} \ No newline at end of file diff --git a/app/controller/Index.php b/app/controller/Index.php new file mode 100644 index 0000000..3fb6a73 --- /dev/null +++ b/app/controller/Index.php @@ -0,0 +1,24 @@ +islogin){ + return redirect('/admin/login'); + } + View::assign('siteurl', request()->root(true)); + return view(); + } + + +} diff --git a/app/controller/Install.php b/app/controller/Install.php new file mode 100644 index 0000000..a8469f4 --- /dev/null +++ b/app/controller/Install.php @@ -0,0 +1,83 @@ +getRootPath().'.env')){ + return '当前已经安装成功,如果需要重新安装,请手动删除根目录.env文件'; + } + if(request()->isPost()){ + $mysql_host = input('post.mysql_host', null, 'trim'); + $mysql_port = intval(input('post.mysql_port', '3306')); + $mysql_user = input('post.mysql_user', null, 'trim'); + $mysql_pwd = input('post.mysql_pwd', null, 'trim'); + $mysql_name = input('post.mysql_name', null, 'trim'); + $mysql_prefix = input('post.mysql_prefix', 'cloud_', 'trim'); + $admin_username = input('post.admin_username', null, 'trim'); + $admin_password = input('post.admin_password', null, 'trim'); + + if(!$mysql_host || !$mysql_user || !$mysql_pwd || !$mysql_name || !$admin_username || !$admin_password){ + return json(['code'=>0, 'msg'=>'必填项不能为空']); + } + + $configdata = file_get_contents(app()->getRootPath().'.env.example'); + $configdata = str_replace(['{dbhost}','{dbname}','{dbuser}','{dbpwd}','{dbport}','{dbprefix}'], [$mysql_host, $mysql_name, $mysql_user, $mysql_pwd, $mysql_port, $mysql_prefix], $configdata); + + try{ + $DB=new PDO("mysql:host=".$mysql_host.";dbname=".$mysql_name.";port=".$mysql_port,$mysql_user,$mysql_pwd); + }catch(Exception $e){ + if($e->getCode() == 2002){ + $errorMsg='连接数据库失败:数据库地址填写错误!'; + }elseif($e->getCode() == 1045){ + $errorMsg='连接数据库失败:数据库用户名或密码填写错误!'; + }elseif($e->getCode() == 1049){ + $errorMsg='连接数据库失败:数据库名不存在!'; + }else{ + $errorMsg='连接数据库失败:'.$e->getMessage(); + } + return json(['code'=>0, 'msg'=>$errorMsg]); + } + $DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); + $DB->exec("set sql_mode = ''"); + $DB->exec("set names utf8"); + + $sqls=file_get_contents(app()->getRootPath().'install.sql'); + $sqls=explode(';', $sqls); + $sqls[]="REPLACE INTO `".$mysql_prefix."config` VALUES ('syskey', '".random(16)."')"; + $sqls[]="REPLACE INTO `".$mysql_prefix."config` VALUES ('admin_username', '".addslashes($admin_username)."')"; + $sqls[]="REPLACE INTO `".$mysql_prefix."config` VALUES ('admin_password', '".addslashes($admin_password)."')"; + $success=0;$error=0;$errorMsg=null; + foreach ($sqls as $value) { + $value=trim($value); + if(empty($value))continue; + $value = str_replace('cloud_',$mysql_prefix,$value); + if($DB->exec($value)===false){ + $error++; + $dberror=$DB->errorInfo(); + $errorMsg.=$dberror[2]."\n"; + }else{ + $success++; + } + } + if(empty($errorMsg)){ + if(!file_put_contents(app()->getRootPath().'.env', $configdata)){ + return json(['code'=>0, 'msg'=>'保存失败,请确保网站根目录有写入权限']); + } + Cache::clear(); + return json(['code'=>1, 'msg'=>'安装完成!成功执行SQL语句'.$success.'条']); + }else{ + return json(['code'=>0, 'msg'=>$errorMsg]); + } + } + return view(); + } + +} diff --git a/app/event.php b/app/event.php new file mode 100644 index 0000000..e9851bb --- /dev/null +++ b/app/event.php @@ -0,0 +1,17 @@ + [ + ], + + 'listen' => [ + 'AppInit' => [], + 'HttpRun' => [], + 'HttpEnd' => [], + 'LogLevel' => [], + 'LogWrite' => [], + ], + + 'subscribe' => [ + ], +]; diff --git a/app/lib/Btapi.php b/app/lib/Btapi.php new file mode 100644 index 0000000..691f493 --- /dev/null +++ b/app/lib/Btapi.php @@ -0,0 +1,230 @@ +BT_PANEL = $bt_panel; + $this->BT_KEY = $bt_key; + } + + //获取面板配置信息 + public function get_config(){ + $url = $this->BT_PANEL.'/config?action=get_config'; + + $p_data = $this->GetKeyData(); + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //获取已登录用户信息 + public function get_user_info(){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=get_user_info'; + + $p_data = $this->GetKeyData(); + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //从云端获取插件列表 + public function get_plugin_list(){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=get_plugin_list'; + + $p_data = $this->GetKeyData(); + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //下载插件包,返回文件路径 + public function get_plugin_filename($plugin_name, $version){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=download_plugin'; + + $p_data = $this->GetKeyData(); + $p_data['plugin_name'] = $plugin_name; + $p_data['version'] = $version; + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //下载插件主程序文件,返回文件路径 + public function get_plugin_main_filename($plugin_name, $version){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=download_plugin_main'; + + $p_data = $this->GetKeyData(); + $p_data['plugin_name'] = $plugin_name; + $p_data['version'] = $version; + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //解密插件主程序py代码,返回文件路径 + public function get_decode_plugin_main($plugin_name, $version){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=decode_plugin_main'; + + $p_data = $this->GetKeyData(); + $p_data['plugin_name'] = $plugin_name; + $p_data['version'] = $version; + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //下载插件其他文件,返回文件路径 + public function get_plugin_other_filename($fname){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=download_plugin_other'; + + $p_data = $this->GetKeyData(); + $p_data['fname'] = $fname; + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //下载文件 + public function download($filename, $localpath){ + $url = $this->BT_PANEL.'/download'; + + $p_data = $this->GetKeyData(); + $p_data['filename'] = $filename; + + $result = $this->curl_download($url.'?'.http_build_query($p_data), $localpath); + + return $result; + } + + //获取文件base64 + public function get_file($filename){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=get_file'; + + $p_data = $this->GetKeyData(); + $p_data['filename'] = $filename; + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //购买第三方插件 + public function create_plugin_other_order($pid){ + $url = $this->BT_PANEL.'/auth?action=create_plugin_other_order'; + + $p_data = $this->GetKeyData(); + $p_data['pid'] = $pid; + $p_data['cycle'] = '999'; + $p_data['type'] = '0'; + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + //获取一键部署列表 + public function get_deplist(){ + $url = $this->BT_PANEL.'/plugin?action=a&name=kaixin&s=get_deplist'; + + $p_data = $this->GetKeyData(); + + $result = $this->curl($url,$p_data); + + $data = json_decode($result,true); + return $data; + } + + + private function GetKeyData(){ + $now_time = time(); + $p_data = array( + 'request_token' => md5($now_time.''.md5($this->BT_KEY)), + 'request_time' => $now_time + ); + return $p_data; + } + + + private function curl($url, $data = null, $timeout = 60) + { + //定义cookie保存位置 + $cookie_file=app()->getRuntimePath().md5($this->BT_PANEL).'.cookie'; + if(!file_exists($cookie_file)){ + touch($cookie_file); + } + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + if($data){ + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + } + curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); + curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + $output = curl_exec($ch); + curl_close($ch); + return $output; + } + + private function curl_download($url, $localpath, $timeout = 300) + { + //定义cookie保存位置 + $cookie_file=app()->getRuntimePath().md5($this->BT_PANEL).'.cookie'; + if(!file_exists($cookie_file)){ + touch($cookie_file); + } + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); + curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); + $fp = fopen($localpath, 'w+'); + curl_setopt($ch, CURLOPT_FILE, $fp); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_exec($ch); + if (curl_errno($ch)) { + $message = curl_error($ch); + curl_close($ch); + fclose($fp); + throw new Exception('下载文件失败:'.$message); + } + $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if($httpcode>299){ + curl_close($ch); + fclose($fp); + throw new Exception('下载文件失败:HTTPCODE-'.$httpcode); + } + curl_close($ch); + fclose($fp); + return true; + } +} \ No newline at end of file diff --git a/app/lib/Plugins.php b/app/lib/Plugins.php new file mode 100644 index 0000000..b698e85 --- /dev/null +++ b/app/lib/Plugins.php @@ -0,0 +1,347 @@ +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, $os); + }else{ + throw new Exception('获取插件列表失败:'.(isset($result['msg'])?$result['msg']:'面板连接失败')); + } + } + + //保存插件列表 + private static function save_plugin_list($data, $os){ + $data['ip'] = '127.0.0.1'; + $data['serverid'] = ''; + $data['beta'] = 0; + $data['uid'] = 1; + $data['skey'] = ''; + $list = []; + foreach($data['list'] as $plugin){ + if(isset($plugin['endtime'])) $plugin['endtime'] = 0; + $list[] = $plugin; + } + $data['list'] = $list; + $data['ltd'] = strtotime('+10 year'); + $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($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); + if($json_arr){ + return $json_arr; + } + } + return false; + } + + //获取一个插件信息 + 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){ + return $plugin; + } + } + return null; + } + + //下载插件(自动判断是否第三方) + 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($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, $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, null, $os); + } + }else{ + Plugins::download_plugin_package($plugin_name, $version, $os); + } + } + + //下载插件包 + 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){ + $filename = $result['filename']; + self::download_file($btapi, $filename, $filepath); + if(file_exists($filepath)){ + $zip = new ZipArchive; + if ($zip->open($filepath) === true) + { + $zip->extractTo(get_data_dir($os).'plugins/folder/'.$plugin_name.'-'.$version); + $zip->close(); + $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, $os); + self::noauth_plugin_main($main_filepath); + $zip->open($filepath, ZipArchive::CREATE); + $zip->addFile($main_filepath, $plugin_name.'/'.$plugin_name.'_main.py'); + $zip->close(); + } + } + }else{ + throw new Exception('插件包解压缩失败'); + } + return true; + }else{ + throw new Exception('下载插件包失败,本地文件不存在'); + } + }else{ + throw new Exception('下载插件包失败:'.($result['msg']?$result['msg']:'未知错误')); + } + }else{ + throw new Exception('下载插件包失败,接口返回错误'); + } + } + + //下载插件主程序文件 + 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){ + $filename = $result['filename']; + self::download_file($btapi, $filename, $filepath); + if(file_exists($filepath)){ + return true; + }else{ + throw new Exception('下载插件主程序文件失败,本地文件不存在'); + } + }else{ + throw new Exception('下载插件主程序文件失败:'.($result['msg']?$result['msg']:'未知错误')); + } + }else{ + throw new Exception('下载插件主程序文件失败,接口返回错误'); + } + } + + //解密并下载插件主程序文件 + public static function decode_plugin_main($plugin_name, $version, $main_filepath, $os = 'Linux'){ + if(self::decode_plugin_main_local($main_filepath, $os)) return true; + $btapi = self::get_btapi($os); + $result = $btapi->get_decode_plugin_main($plugin_name, $version); + if($result && isset($result['status'])){ + if($result['status'] == true){ + $filename = $result['filename']; + self::download_file($btapi, $filename, $main_filepath); + return true; + }else{ + throw new Exception('解密插件主程序文件失败:'.($result['msg']?$result['msg']:'未知错误')); + } + }else{ + throw new Exception('解密插件主程序文件失败,接口返回错误'); + } + } + + //本地解密插件主程序文件 + public static function decode_plugin_main_local($main_filepath, $os = 'Linux'){ + $btapi = self::get_btapi($os); + $userinfo = $btapi->get_user_info(); + if(isset($userinfo['uid'])){ + $src = file_get_contents($main_filepath); + if($src===false)throw new Exception('文件打开失败'); + if(!$src || strpos($src, 'import ')!==false)return true; + $uid = $userinfo['uid']; + $serverid = $userinfo['serverid']; + $key = md5(substr($serverid, 10, 16).$uid.$serverid); + $iv = md5($key.$serverid); + $key = substr($key, 8, 16); + $iv = substr($iv, 8, 16); + $data_arr = explode("\n", $src); + $de_text = ''; + foreach($data_arr as $data){ + $data = trim($data); + if(!empty($data) && strlen($data)!=24){ + $tmp = openssl_decrypt($data, 'aes-128-cbc', $key, 0, $iv); + if($tmp) $de_text .= $tmp; + } + } + if(!empty($de_text) && strpos($de_text, 'import ')!==false){ + file_put_contents($main_filepath, $de_text); + return true; + } + return false; + }else{ + throw new Exception('解密插件主程序文件失败,获取用户信息失败'); + } + } + + public static function decode_module_file($filepath){ + $src = file_get_contents($filepath); + if($src===false)throw new Exception('文件打开失败'); + if(!$src || strpos($src, 'import ')!==false)return 0; + $key = 'Z2B87NEAS2BkxTrh'; + $iv = 'WwadH66EGWpeeTT6'; + $data_arr = explode("\n", $src); + $de_text = ''; + foreach($data_arr as $data){ + $data = trim($data); + if(!empty($data)){ + $tmp = openssl_decrypt($data, 'aes-128-cbc', $key, 0, $iv); + if($tmp) $de_text .= $tmp; + } + } + if(!empty($de_text) && strpos($de_text, 'import ')!==false){ + file_put_contents($filepath, $de_text); + return 1; + } + return 2; + } + + //去除插件主程序文件授权校验 + 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, $os = 'Linux'){ + $filepath = get_data_dir().'plugins/other/'.$fname; + @mkdir(dirname($filepath), 0777, true); + $btapi = self::get_btapi($os); + $result = $btapi->get_plugin_other_filename($fname); + if($result && isset($result['status'])){ + if($result['status'] == true){ + $filename = $result['filename']; + self::download_file($btapi, $filename, $filepath); + if(file_exists($filepath)){ + if($filemd5 && md5_file($filepath) != $filemd5){ + $msg = filesize($filepath) < 300 ? file_get_contents($filepath) : '插件文件MD5校验失败'; + @unlink($filepath); + throw new Exception($msg); + } + return true; + }else{ + throw new Exception('下载插件文件失败,本地文件不存在'); + } + }else{ + throw new Exception('下载插件文件失败:'.($result['msg']?$result['msg']:'未知错误')); + } + }else{ + throw new Exception('下载插件文件失败,接口返回错误'); + } + } + + //下载文件 + private static function download_file($btapi, $filename, $filepath){ + try{ + $btapi->download($filename, $filepath); + }catch(Exception $e){ + @unlink($filepath); + //宝塔bug小文件下载失败,改用base64下载 + $result = $btapi->get_file($filename); + if($result && isset($result['status']) && $result['status']==true){ + $filedata = base64_decode($result['data']); + if(strlen($filedata) < 4096 && substr($filedata,0,1)=='{' && substr($filedata,-1,1)=='}'){ + $arr = json_decode($filedata, true); + if($arr){ + throw new Exception('获取文件失败:'.($arr['msg']?$arr['msg']:'未知错误')); + } + } + if(!$filedata){ + throw new Exception('获取文件失败:文件内容为空'); + } + file_put_contents($filepath, $filedata); + }elseif($result){ + throw new Exception('获取文件失败:'.($result['msg']?$result['msg']:'未知错误')); + }else{ + throw new Exception('获取文件失败:未知错误'); + } + } + } + + //刷新一键部署列表 + public static function refresh_deplist($os = 'Linux'){ + $btapi = self::get_btapi($os); + $result = $btapi->get_deplist(); + if($result && isset($result['list']) && isset($result['type'])){ + if(empty($result['list']) || empty($result['type'])){ + throw new Exception('获取一键部署列表失败:一键部署列表为空'); + } + $json_file = get_data_dir($os).'config/deployment_list.json'; + if(!file_put_contents($json_file, json_encode($result))){ + throw new Exception('保存一键部署列表失败,文件无写入权限'); + } + }else{ + throw new Exception('获取一键部署列表失败:'.(isset($result['msg'])?$result['msg']:'面板连接失败')); + } + } + + //获取一键部署列表 + 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/middleware.php b/app/middleware.php new file mode 100644 index 0000000..d49df65 --- /dev/null +++ b/app/middleware.php @@ -0,0 +1,12 @@ +time()) { + $islogin = true; + } + } + } + request()->islogin = $islogin; + return $next($request); + } +} diff --git a/app/middleware/CheckAdmin.php b/app/middleware/CheckAdmin.php new file mode 100644 index 0000000..6240ad5 --- /dev/null +++ b/app/middleware/CheckAdmin.php @@ -0,0 +1,19 @@ +islogin) { + if ($request->isAjax() || !$request->isGet()) { + return json(['code'=>-1, 'msg'=>'未登录'])->code(401); + } + return redirect((string)url('/admin/login')); + } + return $next($request); + } +} diff --git a/app/middleware/LoadConfig.php b/app/middleware/LoadConfig.php new file mode 100644 index 0000000..37e3712 --- /dev/null +++ b/app/middleware/LoadConfig.php @@ -0,0 +1,39 @@ +getRootPath().'.env')){ + if(strpos(request()->url(),'/installapp')===false){ + return redirect((string)url('/installapp'))->header([ + 'Cache-Control' => 'no-store, no-cache, must-revalidate', + 'Pragma' => 'no-cache', + ]); + }else{ + return $next($request); + } + } + + $res = Db::name('config')->cache('configs',0)->column('value','key'); + Config::set($res, 'sys'); + + return $next($request)->header([ + 'Cache-Control' => 'no-store, no-cache, must-revalidate', + 'Pragma' => 'no-cache', + ]); + } +} diff --git a/app/middleware/RefererCheck.php b/app/middleware/RefererCheck.php new file mode 100644 index 0000000..056a4d0 --- /dev/null +++ b/app/middleware/RefererCheck.php @@ -0,0 +1,24 @@ + Request::class, + 'think\exception\Handle' => ExceptionHandle::class, +]; diff --git a/app/script/convert.sh b/app/script/convert.sh new file mode 100644 index 0000000..c0e030f --- /dev/null +++ b/app/script/convert.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +Linux_Version="8.0.1" +Windows_Version="7.9.0" +Btm_Version="2.2.5" + +FILES=( +public/install/src/panel6.zip +public/install/update/LinuxPanel-${Linux_Version}.zip +public/install/install_6.0.sh +public/install/update_panel.sh +public/install/update6.sh +public/win/install/panel_update.py +public/win/panel/panel_${Windows_Version}.zip +public/win/panel/data/api.py +public/win/panel/data/setup.py +public/install/src/bt-monitor-${Btm_Version}.zip +public/install/install_btmonitor.sh +public/install/update_btmonitor.sh +) + +DIR=$1 +SITEURL=$2 + +if [ ! -d "$DIR" ]; then + echo "网站目录不存在" + exit 1 +fi +if [ "$SITEURL" = "" ]; then + echo "网站URL不正确" + exit 1 +fi + +function handleFile() +{ + Filename=$1 + if [ "${Filename##*.}" = "zip" ]; then + handleZipFile $Filename + else + handleTextFile $Filename + fi +} + +function handleZipFile() +{ + Filename=$1 + mkdir -p /tmp/package + unzip -o -q $Filename -d /tmp/package + grep -rl --include=\*.py --include=\*.sh --include=index.js 'http://www.example.com' /tmp/package | xargs -I @ sed -i "s|http://www.example.com|${SITEURL}|g" @ + Sprit_SITEURK=${SITEURL//\//\\\\\/} + grep -rl --include=\*.sh 'http:\\\/\\\/www.example.com' /tmp/package | xargs -I @ sed -i "s|http:\\\/\\\/www.example.com|${Sprit_SITEURK}|g" @ + rm -f $Filename + cd /tmp/package && zip -9 -q -r $Filename * && cd - + rm -rf /tmp/package +} + +function handleTextFile() +{ + sed -i "s|http://www.example.com|${SITEURL}|g" $1 +} + + +echo "==========================" +echo "正在处理中..." +echo "==========================" + +for File in ${FILES[@]} +do + Filename="${DIR}${File}" + if [ -f "$Filename" ]; then + handleFile $Filename + echo -e "成功处理文件:\033[32m${Filename}\033[0m" + else + echo -e "文件不存在:\033[33m${Filename}\033[0m" + fi +done + +echo "==========================" +echo "处理完成" +echo "==========================" diff --git a/app/service.php b/app/service.php new file mode 100644 index 0000000..db1ee6a --- /dev/null +++ b/app/service.php @@ -0,0 +1,9 @@ + +
+ + + +{/block} \ No newline at end of file diff --git a/app/view/admin/index.html b/app/view/admin/index.html new file mode 100644 index 0000000..d986196 --- /dev/null +++ b/app/view/admin/index.html @@ -0,0 +1,60 @@ +{extend name="admin/layout" /} +{block name="title"}宝塔第三方云端管理中心{/block} +{block name="main"} + +
+
+
+

后台管理首页

+
+
宝塔插件统计:共有 {$stat.total} 个,其中免费插件 {$stat.free} 个,专业版插件 {$stat.pro} 个,企业版插件 {$stat.ltd} 个,第三方插件 {$stat.third} 个
+
使用记录统计:历史总共数量:{$stat.record_total},正在使用数量:{$stat.record_isuse}
+
任务运行情况:上次运行时间:{$stat.runtime|raw}  查看详情
+ +
+
+
+
+

服务器信息

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
框架版本{$info.framework_version}
PHP版本{$info.php_version}
MySQL版本{$info.mysql_version}
WEB软件{$info.software}
操作系统{$info.os}
服务器时间{$info.date}
+
+
+
+{/block} \ No newline at end of file diff --git a/app/view/admin/layout.html b/app/view/admin/layout.html new file mode 100644 index 0000000..b5a3c09 --- /dev/null +++ b/app/view/admin/layout.html @@ -0,0 +1,73 @@ + + + + + + + {block name="title"}标题{/block} + + + + + + + + + + + {block name="main"}主内容{/block} + + \ No newline at end of file diff --git a/app/view/admin/list.html b/app/view/admin/list.html new file mode 100644 index 0000000..4fe2cd1 --- /dev/null +++ b/app/view/admin/list.html @@ -0,0 +1,209 @@ +{extend name="admin/layout" /} +{block name="title"}黑白名单{/block} +{block name="main"} + +
+
+ + + +{if $type=='black' && config_get('whitelist')=='1'} +
提示:当前为白名单模式,黑名单列表里面的记录不会生效。
+{/if} +{if $type=='white' && config_get('whitelist')=='0'} +
提示:当前未开启白名单模式,白名单列表里面的记录不会生效。
+{/if} +{if $type=='black'} +
添加到黑名单列表中的服务器IP将无法使用此云端
+{/if} +{if $type=='white'} +
只有添加到白名单列表中的服务器IP才可以使用此云端
+{/if} + +
+
+
+ + +
+
+   + 重置  + 添加  +
+
+
+ + +
+
+
+ + + + + +{/block} \ No newline at end of file diff --git a/app/view/admin/log.html b/app/view/admin/log.html new file mode 100644 index 0000000..509e5ee --- /dev/null +++ b/app/view/admin/log.html @@ -0,0 +1,74 @@ +{extend name="admin/layout" /} +{block name="title"}操作日志{/block} +{block name="main"} + +
+
+ +
+
+
+ + +
+
+   + 重置  +
+
+
+ + +
+
+
+ + + + + +{/block} \ No newline at end of file diff --git a/app/view/admin/login.html b/app/view/admin/login.html new file mode 100644 index 0000000..3620d74 --- /dev/null +++ b/app/view/admin/login.html @@ -0,0 +1,100 @@ + + + + + + + 管理员登录 + + + + + + + +
+
+
+

管理员登录

+
+
+
+ + +

+
+ + +

+
+ + + + + +

+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/app/view/admin/plugins.html b/app/view/admin/plugins.html new file mode 100644 index 0000000..8d67fa9 --- /dev/null +++ b/app/view/admin/plugins.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/pluginswin.html b/app/view/admin/pluginswin.html new file mode 100644 index 0000000..351347e --- /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/record.html b/app/view/admin/record.html new file mode 100644 index 0000000..ac963c5 --- /dev/null +++ b/app/view/admin/record.html @@ -0,0 +1,67 @@ +{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 new file mode 100644 index 0000000..96ee497 --- /dev/null +++ b/app/view/admin/set.html @@ -0,0 +1,335 @@ +{extend name="admin/layout" /} +{block name="title"}系统设置{/block} +{block name="main"} +
+{if $mod=='sys'} +
+
+

系统基本设置

+
+
+
+
+ + 开启白名单模式后,只有在白名单列表中的服务器IP才能使用此云端 +
+
+ + + 页面地址:/download,开启后可以公开访问,否则只能管理员访问 +
+
+ + + 用于一键更新脚本获取最新版本号,以及检测更新接口。并确保已在/public/install/update/放置对应版本更新包 +
+
+ + + 用于检测更新接口返回 +
+
+ + + 用于检测更新接口返回 +
+
+ + + 用于一键更新脚本获取最新版本号,以及检测更新接口。并确保已在/public/win/panel/放置对应版本更新包 +
+
+ + + 用于检测更新接口返回 +
+
+ + + 用于检测更新接口返回 +
+
+ + + 用于一键更新脚本获取最新版本号,以及检测更新接口。并确保已在/public/install/src/放置对应版本更新包 +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+

宝塔Linux面板接口设置

+
+
+

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

+

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

+
+
+ + 填写规则如:http://192.168.1.1:8888 ,不要带其他后缀 +
+
+ + +
+
+ + +
+
+
+
+
+

宝塔Windows面板接口设置

+
+
+

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

+

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

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

定时任务说明

+
+
+
使用以下命令可以从宝塔官方获取最新的插件列表并批量下载插件包(增量更新)。
你也可以将此命令添加到crontab以使此云端的插件保持最新,建议1天执行1次。
+
使用命令执行之后,可能会导致 /data 目录下文件权限不对,后台插件列表下载插件覆盖会报错,需要手动循环设置 /data 目录权限。
+
上次运行时间:{$runtime|raw}
+
php {:app()->getRootPath()}think updateall

+
+
+
+
+
+
+

定时任务设置

+
+
+
+
+ (批量下载不包含所有第三方插件,第三方插件需要去手动下载。) +
+
+
+ (批量下载不包含所有第三方插件,第三方插件需要去手动下载。) +
+
+ +
+
+
+
+
+{elseif $mod=='account'} +
+
+

管理账号设置

+
+
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ 清理缓存 +
+
+
+{elseif $mod=='tools'} +
+
+

批量替换工具

+
+
+
使用以下命令可以将bt安装包、更新包和脚本文件里面的http://www.example.com批量替换成当前网址{:request()->root(true)},每次更新版本后只需要执行一次即可。
+
cd {:app()->getRootPath()}app/script && chmod +x convert.sh && ./convert.sh {:app()->getRootPath()} {:request()->root(true)}

+
+
+
+{/if} + + +{/block} \ No newline at end of file diff --git a/app/view/dispatch_jump.html b/app/view/dispatch_jump.html new file mode 100644 index 0000000..69d6246 --- /dev/null +++ b/app/view/dispatch_jump.html @@ -0,0 +1,60 @@ + + + + + 温馨提示 + + + + + +
+
+ +
+

{$msg}

+ {if $url} +

+ 页面将在 {$wait} 秒后自动跳转 +

+ {/if} +

+ 返回上一页 + {if $url} + 立即跳转 + {/if} +

+
+ + + \ No newline at end of file diff --git a/app/view/index/download.html b/app/view/index/download.html new file mode 100644 index 0000000..0995a6f --- /dev/null +++ b/app/view/index/download.html @@ -0,0 +1,261 @@ + + + + + + + + 宝塔面板安装脚本 + + + + + +
+
+
+
+

宝塔面板安装脚本

+
+

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/2022,64位系统
+
+ 操作简单 + 使用方便 +
+
+ +
+
+
+ {if config_get('new_version_btm')}
+
+
+ +
+
+
+
堡塔云监控
+
多服务监控和异常告警通知
+
+ +
+
+
{/if} +
+
+
+
+
+
+
Linux面板{:config_get('new_version')}安装脚本
+
+
+ 使用 SSH 连接工具,如 + PUTTY + 连接到您的 Linux 服务器后, + 挂载磁盘 + ,根据系统执行相应命令开始安装: +
+
+ Centos安装脚本 +
+
yum install -y wget && wget -O install.sh {$siteurl}/install/install_6.0.sh && sh install.sh
+ 复制 +
+
+
+ Ubuntu/Debian安装脚本 +
+
wget -O install.sh {$siteurl}/install/install_6.0.sh && bash install.sh
+ 复制 +
+
+
+ 一键更新脚本 +
+
curl {$siteurl}/install/update6.sh|bash
+ 复制 +
+
+
+

注意:必须为没装过其它环境如Apache/Nginx/php/MySQL的新系统,推荐使用centos 7.X的系统安装宝塔面板

+

推荐使用Chrome、火狐、edge浏览器,国产浏览器请使用极速模式访问面板登录地址

+

如果使用过官方版或其他第三方云端的版本,使用一键更新脚本即可切换到此云端

+
+
+
+
+
+
+
Windows面板{:config_get('new_version_win')}安装方法
+
+
+

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/2022,64位系统(中文简体),且未安装其它环境

+
+
+
+ {if config_get('new_version_btm')} +
+
+
+
堡塔云监控{:config_get('new_version_btm')}安装脚本
+
+
+ 使用 SSH 连接工具,如 + PUTTY + 连接到您的 Linux 服务器后,根据系统执行相应命令开始安装: +
+
+ 堡塔云监控安装脚本 +
+
curl -sS {$siteurl}/install/install_btmonitor.sh -o /tmp/install_btmonitor.sh && bash /tmp/install_btmonitor.sh
+ 复制 +
+
+
+ 堡塔云监控更新脚本 +
+
curl {$siteurl}/install/update_btmonitor.sh|bash
+ 复制 +
+
+
+

注意:推荐使用Chrome、火狐、edge浏览器,国产浏览器(极速模式)

+
+
+
{/if} +
+
+ +
+
+
+ +
+

+ Copyright © {:date('Y')} 宝塔面板安装脚本 +

+
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/app/view/install/index.html b/app/view/install/index.html new file mode 100644 index 0000000..05b5311 --- /dev/null +++ b/app/view/install/index.html @@ -0,0 +1,268 @@ + + + + + + 宝塔第三方云端 - 安装程序 + + + + + + +
+

+ + + +

+

宝塔第三方云端 - 安装程序

+
+ +
+ + + + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..4576d53 --- /dev/null +++ b/composer.json @@ -0,0 +1,41 @@ +{ + "name": "btpanel/cloud", + "description": "BTPanel third cloud site", + "type": "project", + "keywords": [ + "btpanel", + "baota", + "aapanel" + ], + "homepage": "https://www.bt.cn/", + "license": "Apache-2.0", + "authors": [], + "require": { + "php": ">=7.2.5", + "topthink/framework": "^6.0.0", + "topthink/think-orm": "^2.0", + "topthink/think-view": "^1.0", + "topthink/think-captcha": "^3.0" + }, + "require-dev": { + "symfony/var-dumper": "^4.2", + "topthink/think-trace":"^1.0" + }, + "autoload": { + "psr-4": { + "app\\": "app" + }, + "psr-0": { + "": "extend/" + } + }, + "config": { + "preferred-install": "dist" + }, + "scripts": { + "post-autoload-dump": [ + "@php think service:discover", + "@php think vendor:publish" + ] + } +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..8c15313 --- /dev/null +++ b/config/app.php @@ -0,0 +1,32 @@ + env('app.host', ''), + // 应用的命名空间 + 'app_namespace' => '', + // 是否启用路由 + 'with_route' => true, + // 默认应用 + 'default_app' => 'index', + // 默认时区 + 'default_timezone' => 'Asia/Shanghai', + + // 应用映射(自动多应用模式有效) + 'app_map' => [], + // 域名绑定(自动多应用模式有效) + 'domain_bind' => [], + // 禁止URL访问的应用列表(自动多应用模式有效) + 'deny_app_list' => [], + + // 异常页面的模板文件 + 'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl', + + // 错误显示信息,非调试模式有效 + 'error_message' => '页面错误!请稍后再试~', + // 显示错误信息 + 'show_error_msg' => true, +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..d396410 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,40 @@ + env('cache.driver', 'file'), + + // 缓存连接方式配置 + 'stores' => [ + 'file' => [ + // 驱动方式 + 'type' => 'File', + // 缓存保存目录 + 'path' => '', + // 缓存前缀 + 'prefix' => '', + // 缓存有效期 0表示永久缓存 + 'expire' => 0, + // 缓存标签前缀 + 'tag_prefix' => 'tag:', + // 序列化机制 例如 ['serialize', 'unserialize'] + 'serialize' => [], + ], + 'redis' => [ + // 驱动方式 + 'type' => 'Redis', + 'host' => '127.0.0.1', + 'port' => 6379, + 'password' => '', + 'select' => 0, + // 缓存有效期 0表示永久缓存 + 'expire' => 3600, + 'prefix' => '', + ], + // 更多的缓存连接 + ], +]; diff --git a/config/captcha.php b/config/captcha.php new file mode 100644 index 0000000..6ec80f6 --- /dev/null +++ b/config/captcha.php @@ -0,0 +1,39 @@ + 4, + // 验证码字符集合 + 'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY', + // 验证码过期时间 + 'expire' => 1800, + // 是否使用中文验证码 + 'useZh' => false, + // 是否使用算术验证码 + 'math' => false, + // 是否使用背景图 + 'useImgBg' => false, + //验证码字符大小 + 'fontSize' => 25, + // 是否使用混淆曲线 + 'useCurve' => true, + //是否添加杂点 + 'useNoise' => true, + // 验证码字体 不设置则随机 + 'fontttf' => '', + //背景颜色 + 'bg' => [243, 251, 254], + // 验证码图片高度 + 'imageH' => 0, + // 验证码图片宽度 + 'imageW' => 0, + + // 添加额外的验证码设置 + // verify => [ + // 'length'=>4, + // ... + //], +]; diff --git a/config/console.php b/config/console.php new file mode 100644 index 0000000..e20f57a --- /dev/null +++ b/config/console.php @@ -0,0 +1,11 @@ + [ + 'updateall' => 'app\command\UpdateAll', + 'decrypt' => 'app\command\DecryptFile', + ], +]; diff --git a/config/cookie.php b/config/cookie.php new file mode 100644 index 0000000..d3b3aab --- /dev/null +++ b/config/cookie.php @@ -0,0 +1,20 @@ + 0, + // cookie 保存路径 + 'path' => '/', + // cookie 有效域名 + 'domain' => '', + // cookie 启用安全传输 + 'secure' => false, + // httponly设置 + 'httponly' => false, + // 是否使用 setcookie + 'setcookie' => true, + // samesite 设置,支持 'strict' 'lax' + 'samesite' => '', +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..f081075 --- /dev/null +++ b/config/database.php @@ -0,0 +1,63 @@ + env('database.driver', 'mysql'), + + // 自定义时间查询规则 + 'time_query_rule' => [], + + // 自动写入时间戳字段 + // true为自动识别类型 false关闭 + // 字符串则明确指定时间字段类型 支持 int timestamp datetime date + 'auto_timestamp' => true, + + // 时间字段取出后的默认时间格式 + 'datetime_format' => 'Y-m-d H:i:s', + + // 时间字段配置 配置格式:create_time,update_time + 'datetime_field' => '', + + // 数据库连接配置信息 + 'connections' => [ + 'mysql' => [ + // 数据库类型 + 'type' => env('database.type', 'mysql'), + // 服务器地址 + 'hostname' => env('database.hostname', '127.0.0.1'), + // 数据库名 + 'database' => env('database.database', ''), + // 用户名 + 'username' => env('database.username', 'root'), + // 密码 + 'password' => env('database.password', ''), + // 端口 + 'hostport' => env('database.hostport', '3306'), + // 数据库连接参数 + 'params' => [], + // 数据库编码默认采用utf8 + 'charset' => env('database.charset', 'utf8mb4'), + // 数据库表前缀 + 'prefix' => env('database.prefix', ''), + + // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) + 'deploy' => 0, + // 数据库读写是否分离 主从式有效 + 'rw_separate' => false, + // 读写分离后 主服务器数量 + 'master_num' => 1, + // 指定从服务器序号 + 'slave_no' => '', + // 是否严格检查字段是否存在 + 'fields_strict' => true, + // 是否需要断线重连 + 'break_reconnect' => false, + // 监听SQL + 'trigger_sql' => env('app_debug', true), + // 开启字段缓存 + 'fields_cache' => false, + ], + + // 更多的数据库配置信息 + ], +]; diff --git a/config/filesystem.php b/config/filesystem.php new file mode 100644 index 0000000..965297e --- /dev/null +++ b/config/filesystem.php @@ -0,0 +1,24 @@ + env('filesystem.driver', 'local'), + // 磁盘列表 + 'disks' => [ + 'local' => [ + 'type' => 'local', + 'root' => app()->getRuntimePath() . 'storage', + ], + 'public' => [ + // 磁盘类型 + 'type' => 'local', + // 磁盘路径 + 'root' => app()->getRootPath() . 'public/storage', + // 磁盘路径对应的外部URL路径 + 'url' => '/storage', + // 可见性 + 'visibility' => 'public', + ], + // 更多的磁盘配置信息 + ], +]; diff --git a/config/lang.php b/config/lang.php new file mode 100644 index 0000000..59f320f --- /dev/null +++ b/config/lang.php @@ -0,0 +1,27 @@ + env('lang.default_lang', 'zh-cn'), + // 允许的语言列表 + 'allow_lang_list' => [], + // 多语言自动侦测变量名 + 'detect_var' => 'lang', + // 是否使用Cookie记录 + 'use_cookie' => true, + // 多语言cookie变量 + 'cookie_var' => 'think_lang', + // 多语言header变量 + 'header_var' => 'think-lang', + // 扩展语言包 + 'extend_list' => [], + // Accept-Language转义为对应语言包名称 + 'accept_language' => [ + 'zh-hans-cn' => 'zh-cn', + ], + // 是否支持语言分组 + 'allow_group' => false, +]; diff --git a/config/log.php b/config/log.php new file mode 100644 index 0000000..ea24ff9 --- /dev/null +++ b/config/log.php @@ -0,0 +1,45 @@ + env('log.channel', 'file'), + // 日志记录级别 + 'level' => [], + // 日志类型记录的通道 ['error'=>'email',...] + 'type_channel' => [], + // 关闭全局日志写入 + 'close' => false, + // 全局日志处理 支持闭包 + 'processor' => null, + + // 日志通道列表 + 'channels' => [ + 'file' => [ + // 日志记录方式 + 'type' => 'File', + // 日志保存目录 + 'path' => '', + // 单文件日志写入 + 'single' => false, + // 独立日志级别 + 'apart_level' => [], + // 最大日志文件数量 + 'max_files' => 0, + // 使用JSON格式记录 + 'json' => false, + // 日志处理 + 'processor' => null, + // 关闭通道日志写入 + 'close' => false, + // 日志输出格式化 + 'format' => '[%s][%s] %s', + // 是否实时写入 + 'realtime_write' => false, + ], + // 其它日志通道配置 + ], + +]; diff --git a/config/middleware.php b/config/middleware.php new file mode 100644 index 0000000..7e1972f --- /dev/null +++ b/config/middleware.php @@ -0,0 +1,8 @@ + [], + // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行 + 'priority' => [], +]; diff --git a/config/route.php b/config/route.php new file mode 100644 index 0000000..929e2b7 --- /dev/null +++ b/config/route.php @@ -0,0 +1,45 @@ + '/', + // URL伪静态后缀 + 'url_html_suffix' => '', + // URL普通方式参数 用于自动生成 + 'url_common_param' => true, + // 是否开启路由延迟解析 + 'url_lazy_route' => false, + // 是否强制使用路由 + 'url_route_must' => true, + // 合并路由规则 + 'route_rule_merge' => false, + // 路由是否完全匹配 + 'route_complete_match' => false, + // 访问控制器层名称 + 'controller_layer' => 'controller', + // 空控制器名 + 'empty_controller' => 'Error', + // 是否使用控制器后缀 + 'controller_suffix' => false, + // 默认的路由变量规则 + 'default_route_pattern' => '[\w\.]+', + // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则 + 'request_cache_key' => false, + // 请求缓存有效期 + 'request_cache_expire' => null, + // 全局请求缓存排除规则 + 'request_cache_except' => [], + // 默认控制器名 + 'default_controller' => 'Index', + // 默认操作名 + 'default_action' => 'index', + // 操作方法后缀 + 'action_suffix' => '', + // 默认JSONP格式返回的处理方法 + 'default_jsonp_handler' => 'jsonpReturn', + // 默认JSONP处理方法 + 'var_jsonp_handler' => 'callback', +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..c1ef6e1 --- /dev/null +++ b/config/session.php @@ -0,0 +1,19 @@ + 'PHPSESSID', + // SESSION_ID的提交变量,解决flash上传跨域 + 'var_session_id' => '', + // 驱动方式 支持file cache + 'type' => 'file', + // 存储连接标识 当type使用cache的时候有效 + 'store' => null, + // 过期时间 + 'expire' => 1440, + // 前缀 + 'prefix' => '', +]; diff --git a/config/trace.php b/config/trace.php new file mode 100644 index 0000000..fad2392 --- /dev/null +++ b/config/trace.php @@ -0,0 +1,10 @@ + 'Html', + // 读取的日志通道名 + 'channel' => '', +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..01259a0 --- /dev/null +++ b/config/view.php @@ -0,0 +1,25 @@ + 'Think', + // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 + 'auto_rule' => 1, + // 模板目录名 + 'view_dir_name' => 'view', + // 模板后缀 + 'view_suffix' => 'html', + // 模板文件名分隔符 + 'view_depr' => DIRECTORY_SEPARATOR, + // 模板引擎普通标签开始标记 + 'tpl_begin' => '{', + // 模板引擎普通标签结束标记 + 'tpl_end' => '}', + // 标签库标签开始标记 + 'taglib_begin' => '{', + // 标签库标签结束标记 + 'taglib_end' => '}', +]; diff --git a/data/config/deployment_list.json b/data/config/deployment_list.json new file mode 100644 index 0000000..ce84bca --- /dev/null +++ b/data/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?<\/a>","version":"6.0.2","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":278804,"score":"4.5","is_site_show":2,"versions":[{"m_version":"6","version":"0.2","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"6.0.2","download":"other\/20220902\/2e33579b712e9f2f1d4b1ab7f058e141.zip","md5":"cf0a33310609664c47f1745b3c773799","size":22773190}]},{"id":600801590,"type":1,"sort":4.6,"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?<\/a>","version":"v1.36","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":46490,"score":"4.6","is_site_show":0,"versions":[{"m_version":"v1","version":"36","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4e3b\u8981\u65b0\u589e: \u534f\u4f5c\u5206\u4eab\u8ba8\u8bba\u4f18\u5316;\u6587\u6863\u5ba1\u6279\u6a21\u5757; \u6587\u6863\u5bc6\u7ea7\u7ba1\u7406... \u53d1\u5e03\u4e8e: 2022.12.6","download":"other\/20221216\/b60f9b5d0f4bb8a4b26f9a517a81b71b.zip","md5":"52dfcd4786cf7fbfefcb29ad622013bb","size":33279632}]},{"id":600801418,"type":3,"sort":4.6,"name":"discuz-X3.4","title":"discuz-X3.4","ps":"\u56fd\u5185\u77e5\u540d\u8bba\u575b\u7a0b\u5e8f?<\/a>","version":"20220811.","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":40072,"score":"4.6","is_site_show":1001,"versions":[{"m_version":"20220811","version":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"UFT8","download":"other\/20220903\/5ce39903aaf925f84e36f463054801b2.zip","md5":"4c528db86e728b9e42fc150e260acb53","size":12065820}]},{"id":600801280,"type":5,"sort":3.9,"name":"wee7","title":"\u5fae\u64ce","ps":"\u5fae\u4fe1\u7b2c\u4e09\u65b9\u7ba1\u7406\u5f15\u64ce?<\/a>","version":"2.7.85","author":"\u5b9d\u5854","price":0,"auth_price":0,"home":"https:\/\/www.w7.cc","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220712\/3380e0d8072956799e061d600c665745.png","php":"53,54,55,56,70,71,72","official":"https:\/\/www.w7.cc\/","enable_functions":"","count":37094,"score":"3.9","is_site_show":1009,"versions":[{"m_version":"2","version":"7.85","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5fae\u64ce2.7.85","download":"other\/20220712\/8f90b6132778e4f566a371eeba616d7c.zip","md5":"bdba9e0e60a912ba944df02511a3dc01","size":36971}]},{"id":600801534,"type":4,"sort":4.2,"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?<\/a>","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":33475,"score":"4.2","is_site_show":1003,"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":600801262,"type":2,"sort":4.1,"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!?<\/a>","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":26915,"score":"4.1","is_site_show":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":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\u3001\u8fdb\u9500\u5b58\u3001DIY?<\/a>","version":"v2.3.2 221206","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":26588,"score":"4.7","is_site_show":0,"versions":[{"m_version":"v2","version":"3.2 221206","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u7ec6\u8282\u4f18\u5316\uff0cBUG\u4fee\u590d\uff0cUI\u4f18\u5316\uff0c\u65b0\u589e\u8d26\u53f7\u6ce8\u9500","download":"other\/20221206\/ca134fe7a91ec4efc3456881227064b2.zip","md5":"99fdb731c74fe8fa276b0903a420ef73","size":44673056}]},{"id":600801287,"type":4,"sort":4.1,"name":"emlog","title":"emlog","ps":"\u7b80\u6d01\u6613\u7528\u7684PHP\u535a\u5ba2\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"pro 2.0.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":"56,70,71,72,73,74,80,81","official":"https:\/\/www.emlog.net","enable_functions":"","count":24747,"score":"4.1","is_site_show":0,"versions":[{"m_version":"pro 2","version":"0.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"emlog","download":"other\/20230301\/7840ef37567fc0630efb79811f01507d.zip","md5":"d02a363fcf6cc28ff76f0fef7c27cbcd","size":1103578}]},{"id":600801257,"type":1,"sort":4.9,"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?<\/a>","version":"5.0.1.0","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":18982,"score":"4.9","is_site_show":0,"versions":[{"m_version":"5","version":"0.1.0","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\/20230301\/b505dc9d0bbc382679addc59231841db.zip","md5":"bd20a8614f7d4e13f5e86a9fdb380521","size":2936879}]},{"id":600801461,"type":2,"sort":4.7,"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?<\/a>","version":"2.4.5","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":"74","official":"https:\/\/www.yunzmall.com","enable_functions":"putenv","count":17812,"score":"4.7","is_site_show":0,"versions":[{"m_version":"2","version":"4.5","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\/20230130\/60744658b80691bffe88a875c3317866.zip","md5":"d07ab5f490c1842488401ad972b8b95e","size":2065}]},{"id":600801278,"type":6,"sort":4.2,"name":"ThinkPHP-5.0","title":"ThinkPHP-5.0","ps":"\u56fd\u5185\u77e5\u540dPHP\u6846\u67b6?<\/a>","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":15556,"score":"4.2","is_site_show":3,"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":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?<\/a>","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":14389,"score":"3.5","is_site_show":0,"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":600801288,"type":1,"sort":4.5,"name":"empirecms","title":"\u5e1d\u56fdCMS","ps":"\u5e1d\u56fd\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?<\/a>","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":13982,"score":"4.5","is_site_show":1006,"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.3,"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?<\/a>","version":"V7.7","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":12636,"score":"3.3","is_site_show":0,"versions":[{"m_version":"V7","version":"7","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\/20221111\/2de44ee2dd6ed86713b6dbfa5f35e70f.zip","md5":"5d865571efca1f4eea440479e4fd0f05","size":14590257}]},{"id":600801476,"type":1,"sort":2.1,"name":"netease_music","title":"\u7f51\u6613MUSIC\u7ad9","ps":"\u4ece\u7f51\u6613\u4e91\u97f3\u4e50\u83b7\u53d6\u6570\u636e\u542c\u6b4c?<\/a>","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":9675,"score":"2.1","is_site_show":0,"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":600801343,"type":1,"sort":3.2,"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?<\/a>","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":9112,"score":"3.2","is_site_show":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":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?<\/a>","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":9050,"score":"5.0","is_site_show":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":600801474,"type":1,"sort":4.9,"name":"jizhicms","title":"jizhicms","ps":"\u529f\u80fd\u5f3a\u5927\uff0c\u65e0\u9700\u6388\u6743\uff0c\u514d\u8d39\u5546\u7528\u7684\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"V2.4.5","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":8932,"score":"4.9","is_site_show":0,"versions":[{"m_version":"V2","version":"4.5","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\/20230220\/a0b6bb66daf01b7e39e0f246923ca078.zip","md5":"7a83f236bd67cb4933e08f5c635a4b52","size":16236346}]},{"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!?<\/a>","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":8697,"score":"4.5","is_site_show":0,"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":600801310,"type":2,"sort":4.3,"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?<\/a>","version":"V3.2 Release 221017","author":"\u9759\u9759\u7684\u98ce","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-5099-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190729\/d3d87c257d62423f2bd7e0b0394eb750.png","php":"72,73,74,80","official":"https:\/\/www.dbshop.net\/","enable_functions":"","count":8437,"score":"4.3","is_site_show":0,"versions":[{"m_version":"V3","version":"2 Release 221017","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e38\u89c4\u66f4\u65b0","download":"other\/20221018\/c423d8b68b3189da9520eb40aa9bdb8a.zip","md5":"cc65397a850be1cc7462ad31a8d56042","size":48907128}]},{"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?<\/a>","version":"v2022.8","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":8408,"score":"4.2","is_site_show":0,"versions":[{"m_version":"v2022","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"v2022.8","download":"other\/20220820\/286c83a8a3600f8278c3c8baf20eaf87.zip","md5":"1d61cad2d4280000686207f2e05bf610","size":16452963}]},{"id":600801274,"type":2,"sort":4,"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?<\/a>","version":"v4.6.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":8217,"score":"4.0","is_site_show":0,"versions":[{"m_version":"v4","version":"6.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\/20221101\/9d618628aa48dcb339f1e9293e32fbce.zip","md5":"8164b6356a1f03d086208a237029ccec","size":87727965}]},{"id":600801704,"type":0,"sort":4.6,"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?<\/a>","version":"2.0.6","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":7606,"score":"4.6","is_site_show":0,"versions":[{"m_version":"2","version":"0.6","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\/20220623\/96059c5841904c285f59f03bce9e8fce.zip","md5":"c0ab90ae5502a0b46d9ba103b1179a17","size":12541284}]},{"id":600801265,"type":1,"sort":2.8,"name":"YoungxjTools","title":"\u6768\u5c0f\u6770\u5de5\u5177\u7bb1","ps":"\u6768\u5c0f\u6770\u5de5\u5177\u7bb1?<\/a>","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":7399,"score":"2.8","is_site_show":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":600801371,"type":3,"sort":3,"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?<\/a>","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":6789,"score":"3.0","is_site_show":0,"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?<\/a>","version":"v2022.9c","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":"70,71,72,73,74,80,81","official":"www.wpjtmb.com","enable_functions":"","count":6588,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v2022","version":"9c","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"v2022.9c","download":"other\/20220915\/1587948cf3d51df44557058cffc4cd47.zip","md5":"517452d4a7b6e7b51672faf37ea785dc","size":43190467}]},{"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?<\/a>","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":6441,"score":"4.7","is_site_show":0,"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?<\/a>","version":"5.2.1","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":6228,"score":"3.0","is_site_show":0,"versions":[{"m_version":"5","version":"2.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e2e\u7ba1\u5ba2CRM\u5ba2\u6237\u7ba1\u7406\u7cfb\u7edfv5.2.1","download":"other\/20230218\/4afff27f37399e04c135a0306a4791e6.zip","md5":"2b69f11979c8bee4c4fa6ec1994501d9","size":16750771}]},{"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?<\/a>","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":6159,"score":"3.7","is_site_show":0,"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":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?<\/a>","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":6059,"score":"4.0","is_site_show":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":600801417,"type":2,"sort":4.4,"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?<\/a>","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":5629,"score":"4.4","is_site_show":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\/20210908\/17667cae9348b456e81da8c505bdd45f.zip","md5":"f7d94c0424acb3eee7ef2743854e36b7","size":47737698}]},{"id":600801294,"type":1,"sort":4,"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?<\/a>","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":5320,"score":"4.0","is_site_show":0,"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":600801286,"type":2,"sort":3.6,"name":"ecshop","title":"ecshop","ps":"B2C\u72ec\u7acb\u7f51\u5e97\u7cfb\u7edf?<\/a>","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":5317,"score":"3.6","is_site_show":0,"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":600801596,"type":1,"sort":4,"name":"bthost","title":"btHost - \u9884\u89c8\u7248","ps":"\u5b9d\u5854\u4e3b\u673a\u72ec\u7acb\u63a7\u5236\u7cfb\u7edf - \u9650\u65f6\u514d\u8d39\u4e2d?<\/a>","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":5228,"score":"4.0","is_site_show":0,"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":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?<\/a>","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":5177,"score":"4.2","is_site_show":0,"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":600801361,"type":2,"sort":4.6,"name":"DSShop","title":"DSShop\u5355\u5e97\u94faB2C\u5546\u57ce","ps":"\u6700\u6709\u7ade\u4e89\u529b\u7684B2C\u5355\u5e97\u94fa\u5546\u57ce\u7cfb\u7edf?<\/a>","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":5069,"score":"4.6","is_site_show":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":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?<\/a>","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":5033,"score":"3.7","is_site_show":0,"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":600801472,"type":1,"sort":4,"name":"postoffice","title":"CX\u90ae\u5c40\u7cfb\u7edf","ps":"\u4e00\u5957\u65b9\u4fbf\u7684\u90ae\u5c40\u7cfb\u7edf?<\/a>","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":4847,"score":"4.0","is_site_show":0,"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":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?<\/a>","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":4804,"score":"4.0","is_site_show":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":600801299,"type":1,"sort":2.2,"name":"chengxuxia","title":"\u7a0b\u5e8f\u4fa0CMS","ps":"\u4e13\u4e1a\u3001\u5b89\u5168\u3001\u7a33\u5b9a\u7684\u6dd8\u5b9d\u5ba2CMS\u7cfb\u7edf?<\/a>","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":4707,"score":"2.2","is_site_show":0,"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":600801566,"type":1,"sort":4.2,"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?<\/a>","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":4611,"score":"4.2","is_site_show":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":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?<\/a>","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":4574,"score":"5.0","is_site_show":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":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?<\/a>","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":4262,"score":"3.0","is_site_show":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":600801301,"type":1,"sort":4.5,"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?<\/a>","version":"2.7.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":4116,"score":"4.5","is_site_show":0,"versions":[{"m_version":"2","version":"7.5","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"* 2023-02-24 v2.7.5 - \u589e\u52a0\u5b9a\u65f6\u5220\u9664\u6587\u4ef6 - \u589e\u52a0API\u4e0a\u4f20\u8fd4\u56deToken ID - \u4fee\u590d\u4e00\u5904bug - \u4fee\u590d\u5c40\u57df\u7f51\u65e0\u6cd5\u83b7\u53d6\u65b0\u7248\u672c\u65f6\u5bfc\u81f4\u7684\u9875\u9762\u6df7\u4e71[#91](https:\/\/github.com\/icret\/EasyImages2.0\/issues\/91#issue-1585360193) - \u517c\u5bb9\u975e\u5b89\u5168\u57df\u540d\u4e0b\u7684\u590d\u5236[#92](https:\/\/github.com\/icret\/EasyImages2.0\/issues\/92) - \u66f4\u6362\u68c0\u6d4b\u65b0\u7248\u672c\u65b9\u5f0f - \u4f18\u5316\u663e\u793a","download":"other\/20230228\/8bc703900a802ced7da64578353715c5.zip","md5":"697d7e7584e54bc489ded79a53fd0a98","size":8923126}]},{"id":600801616,"type":3,"sort":4.5,"name":"mdclub","title":"MDClub","ps":"Material Design \u6837\u5f0f\u7684\u8f7b\u91cf\u7ea7\u8bba\u575b\u7cfb\u7edf?<\/a>","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":4030,"score":"4.5","is_site_show":0,"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":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?<\/a>","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":4000,"score":"5.0","is_site_show":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":600801470,"type":1,"sort":5,"name":"short_url","title":"\u7f51\u5740\u7f29\u77ed","ps":"\u4e00\u6b3e\u65b9\u4fbf\u7684\u7f51\u5740\u7f29\u77ed?<\/a>","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":3937,"score":"5.0","is_site_show":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":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?<\/a>","version":"0.9.29","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":3849,"score":"4.3","is_site_show":0,"versions":[{"m_version":"0","version":"9.29","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"OneNav 0.9.29\u7248\u672c","download":"other\/20221223\/d2c01a6806b20e47e02a41e9bdf6acfa.zip","md5":"47d2335785c8c81ed2980cadd0ed0cbf","size":5243034}]},{"id":600801255,"type":1,"sort":3,"name":"sentcms","title":"sentcms\u7f51\u7ad9\u7ba1\u7406\u7cfb\u7edf","ps":"\u4f01\u4e1a\u7f51\u7ad9\u5efa\u8bbe?<\/a>","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":3829,"score":"3.0","is_site_show":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":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?<\/a>","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":3780,"score":"2.8","is_site_show":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\/2cb15514635204f6cb42d0d35a0d9f7a.zip","md5":"f2fd89779cdc9cb7e254c52031a38656","size":16194304}]},{"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?<\/a>","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":3741,"score":"1.0","is_site_show":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":600801284,"type":1,"sort":5,"name":"phpcms","title":"phpcms","ps":"PHPCMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?<\/a>","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":3626,"score":"5.0","is_site_show":4,"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":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?<\/a>","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":3487,"score":"5.0","is_site_show":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":600801751,"type":2,"sort":4.8,"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?<\/a>","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":3405,"score":"4.8","is_site_show":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":600801263,"type":1,"sort":2.3,"name":"wdja","title":"WDJA\u7f51\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf","ps":"\u5f00\u6e90+\u5546\u7528\u514d\u8d39. QQ\u7fa4:122019913?<\/a>","version":"2.7","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,81","official":"http:\/\/www.wdja.net\/","enable_functions":"","count":3383,"score":"2.3","is_site_show":0,"versions":[{"m_version":"2","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u529f\u80fd\u4ee3\u7801\u4f18\u5316\u3002","download":"other\/20230224\/2e694c5d83ac432a4ac8b369d9e10f57.zip","md5":"fc47d25e877ab0c421d6b65c9ed0e36f","size":6471458}]},{"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?<\/a>","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":3293,"score":"5.0","is_site_show":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":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?<\/a>","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":3147,"score":"5.0","is_site_show":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":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?<\/a>","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","is_site_show":0,"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":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?<\/a>","version":"2.0.6","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":3040,"score":"4.4","is_site_show":0,"versions":[{"m_version":"2","version":"0.6","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\/20220623\/6fd254316a59ee45a05dff616c0ddece.zip","md5":"c0ab90ae5502a0b46d9ba103b1179a17","size":12541284}]},{"id":600801578,"type":4,"sort":1.9,"name":"wdja_blog","title":"WDJA\u535a\u5ba2\u7ba1\u7406\u7cfb\u7edf","ps":"\u5f00\u6e90+\u5546\u7528\u514d\u8d39. QQ\u7fa4:122019913?<\/a>","version":"2.7","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":2971,"score":"1.9","is_site_show":0,"versions":[{"m_version":"2","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u65b0\u589e\u8bfe\u7a0b\u8868\u6a21\u5757\uff0c\u529f\u80fd\u4ee3\u7801\u4f18\u5316\u3002","download":"other\/20230224\/2bbcae0e31f61d98d1273b634372aab7.zip","md5":"9b96b22b55eb437758c2a6d932993de4","size":7941517}]},{"id":600801577,"type":2,"sort":3.4,"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?<\/a>","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":2927,"score":"3.4","is_site_show":0,"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":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?<\/a>","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":2925,"score":"3.3","is_site_show":0,"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":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?<\/a>","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":2893,"score":"2.0","is_site_show":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":600801329,"type":1,"sort":5,"name":"qibosoft","title":"\u9f50\u535aCMS","ps":"\u57fa\u4e8ethinkphp\u7684\u514d\u8d39\u5f00\u6e90CMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?<\/a>","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":2617,"score":"5.0","is_site_show":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":600801703,"type":2,"sort":4,"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?<\/a>","version":"1.4.18","author":"\u79be\u6210\u4e91","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-67594-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210414\/a3351d7c9222155eb65652e76709fed0.png","php":"74","official":"https:\/\/www.leadshop.vip\/","enable_functions":"symlink","count":2608,"score":"4.0","is_site_show":0,"versions":[{"m_version":"1","version":"4.18","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4f18\u5316\uff1a\u5206\u9500\u5546\u9080\u8bf7\u903b\u8f91\uff1b \u4fee\u590d\uff1a\u516c\u4f17\u53f7\u767b\u5f55\u5934\u50cf\u6635\u79f0\u6d88\u5931\u95ee\u9898\uff1b","download":"other\/20230303\/699f7f787bf659007348bf59626af239.zip","md5":"d454ed7c2253f6549924948ca0d43c23","size":57413407}]},{"id":600801618,"type":1,"sort":3.4,"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?<\/a>","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":2525,"score":"3.4","is_site_show":0,"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":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?<\/a>","version":"6.72","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":2519,"score":"5.0","is_site_show":0,"versions":[{"m_version":"6","version":"72","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\/20230129\/df657ba2509d248fb741929cc9fed371.zip","md5":"9e6e5fb044d7113290e63da2e6aa5288","size":17740686}]},{"id":600801733,"type":1,"sort":3.6,"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?<\/a>","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":2495,"score":"3.6","is_site_show":0,"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":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?<\/a>","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":2408,"score":"4.5","is_site_show":0,"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":600801509,"type":6,"sort":4.5,"name":"omocms","title":"OmoCms","ps":"\u72c2\u56e2KtAdmin-\u514d\u8d39\u5f00\u6e90\u7684SAAS\u7cfb\u7edf\u5feb\u901f\u5f00\u53d1\u6846\u67b6?<\/a>","version":"1.0.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\/20221012\/613e0be95f4d01ba6ce1bce700cccb94.png","php":"74","official":"http:\/\/www.ktadmin.cn","enable_functions":"fileinfo,redis,sg11","count":2383,"score":"4.5","is_site_show":0,"versions":[{"m_version":"1","version":"0.4","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"\u65b0\u7248\u672c\u66f4\u65b0","download":"other\/20221014\/2f6311ef65bb60a10135de23fe4949f5.zip","md5":"53dd78f628248a961e246ea7f3223cd4","size":10413017}]},{"id":600801661,"type":1,"sort":4.8,"name":"openbi","title":"openbi","ps":"\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5c06\u6570\u636e\u66f4\u53cb\u597d\u7684\u5c55\u793a\uff0cqq\u7fa4\uff1a328601229?<\/a>","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":2381,"score":"4.8","is_site_show":0,"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":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?<\/a>","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":2377,"score":"3.0","is_site_show":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":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?<\/a>","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":2322,"score":"3.7","is_site_show":0,"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":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?<\/a>","version":"v1.7 Release 20221019","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,74,80,81","official":"https:\/\/www.douphp.com","enable_functions":"","count":2285,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v1","version":"7 Release 20221019","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\/20221020\/3bb69335f856c87bfca908c35080bec6.zip","md5":"83fedd6b8f1c6cd6a6b1af9edd54291c","size":5949638}]},{"id":600801683,"type":2,"sort":4.3,"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?<\/a>","version":"V3.4.4","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":"72,73,74","official":"https:\/\/www.shopwind.net","enable_functions":"","count":2241,"score":"4.3","is_site_show":0,"versions":[{"m_version":"V3","version":"4.4","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\/20230104\/10e0ad646f2874fcf0111b9a231a5772.zip","md5":"0d2b9173d2a578d8fb059ae4de756681","size":44750352}]},{"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?<\/a>","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":2193,"score":"5.0","is_site_show":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":600801323,"type":1,"sort":4,"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?<\/a>","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":2175,"score":"4.0","is_site_show":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":600801591,"type":1,"sort":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?<\/a>","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":2078,"score":"3.0","is_site_show":0,"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":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?<\/a>","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":1944,"score":"5.0","is_site_show":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":600801697,"type":1,"sort":4.4,"name":"yzncms","title":"YznCMS","ps":"\u57fa\u4e8ethinkphp5.1\u548cLayui2.6\u7684\u540e\u53f0\u7cfb\u7edf?<\/a>","version":"1.1.0.20221118","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":1880,"score":"4.4","is_site_show":0,"versions":[{"m_version":"1","version":"1.0.20221118","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u53bb\u9664\u6a21\u5757\u6a21\u5f0f\uff0c\u4f7f\u7528\u5168\u65b0\u7684\u63d2\u4ef6\u6a21\u578b","download":"other\/20221118\/e0557185dd4f9212ee23ce4428138246.zip","md5":"87943cf8a748c93b3ce0907072e23daa","size":31512747}]},{"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?<\/a>","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":1780,"score":"3.0","is_site_show":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":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?<\/a>","version":"2.0.6","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":1715,"score":"4.4","is_site_show":0,"versions":[{"m_version":"2","version":"0.6","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\/20220623\/7bfb331c0ed7f47d97f40da919ad4a0f.zip","md5":"c0ab90ae5502a0b46d9ba103b1179a17","size":12541284}]},{"id":600801719,"type":1,"sort":4.3,"name":"yzmcms","title":"YzmCMS\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS","ps":"\u57fa\u4e8ePHP+MYSQL\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS\u7cfb\u7edf?<\/a>","version":"V6.7","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,81","official":"https:\/\/www.yzmcms.com","enable_functions":"","count":1674,"score":"4.3","is_site_show":0,"versions":[{"m_version":"V6","version":"7","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\/20230105\/8ff5fd1880b03079f07790b180e20c52.zip","md5":"7e24a75d700cea288d2539864ff029d2","size":4165089}]},{"id":600801745,"type":5,"sort":4.7,"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?<\/a>","version":"2.4.4","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":1654,"score":"4.7","is_site_show":0,"versions":[{"m_version":"2","version":"4.4","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\/20220714\/688bebd43c9c6943c6815a2c9dd154a8.zip","md5":"3fce0f6d94114d2fa32006486a1ff71a","size":29721240}]},{"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?<\/a>","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":1651,"score":"5.0","is_site_show":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":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?<\/a>","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":1636,"score":"4.0","is_site_show":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":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?<\/a>","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":1607,"score":"5.0","is_site_show":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":600801601,"type":5,"sort":3.1,"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?<\/a>","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":1604,"score":"3.1","is_site_show":0,"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":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?<\/a>","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":1604,"score":"5.0","is_site_show":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":600801402,"type":1,"sort":5,"name":"zhicms","title":"ZhiCms","ps":"ZhiCms\u662f\u4e00\u6b3e\u4e13\u4e1a\u7684\u503c\u5f97\u4e70\u7cfb\u7edf\u3002?<\/a>","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":1596,"score":"5.0","is_site_show":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":600801696,"type":2,"sort":4.4,"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?<\/a>","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":1543,"score":"4.4","is_site_show":0,"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":600801684,"type":1,"sort":4.4,"name":"public","title":"\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90","ps":"\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90 - \u6781\u901f\u7f51\u7edc\u63d0\u4f9b\u4e00\u952e\u90e8\u7f72?<\/a>","version":"7.1.2","author":"\u5218\u5c11","price":0,"auth_price":0,"home":"https:\/\/www.v-team.cn","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210317\/ad23cdd1dcfd9b6c57eed78ffbbcd698.png","php":"70","official":"https:\/\/www.v-team.cn","enable_functions":"putenv","count":1507,"score":"4.4","is_site_show":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":600801804,"type":2,"sort":4.3,"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?<\/a>","version":"1.1.10","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":1505,"score":"4.3","is_site_show":0,"versions":[{"m_version":"1","version":"1.10","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4fee\u590d\u5df2\u77e5bug","download":"other\/20230109\/c44ac0e9d30e209a0f1b63f4d98d9280.zip","md5":"2f113be6be271c00466e75b93cec0545","size":76036213}]},{"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?<\/a>","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":1487,"score":"5.0","is_site_show":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":600801667,"type":3,"sort":4.1,"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?<\/a>","version":"2.12","author":"\u9b54\u7f07Smsot","price":0,"auth_price":0,"home":"https:\/\/www.smsot.com","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":1478,"score":"4.1","is_site_show":0,"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":600801289,"type":6,"sort":5,"name":"codeigniter","title":"codeigniter","ps":"\u5c0f\u5de7\u4f46\u529f\u80fd\u5f3a\u5927\u7684 PHP \u6846\u67b6?<\/a>","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":1435,"score":"5.0","is_site_show":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":600801832,"type":4,"sort":4.4,"name":"inis","title":"inis\u535a\u5ba2\u7cfb\u7edf","ps":"\u65b0\u4e00\u4ee3\u535a\u5ba2\u7cfb\u7edf\uff0c\u5185\u7f6e 150 \u4e2aAPI?<\/a>","version":"2.0.1","author":"inis","price":0,"auth_price":0,"home":"https:\/\/docs.inis.cc","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221010\/73e59a27c0e4411f772ab0c0f8cc8550.png","php":"80,81","official":"https:\/\/inis.cc","enable_functions":"","count":1412,"score":"4.4","is_site_show":0,"versions":[{"m_version":"2","version":"0.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4f5c\u8005QQ\uff1a97783391\uff1bQQ\u7fa4\uff1a632274746","download":"other\/20230213\/879642fe876433afe3f093800622a35d.zip","md5":"3be2462b39a4db189680f2bd4aa2cf9b","size":7809469}]},{"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?<\/a>","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":1343,"score":0,"is_site_show":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":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?<\/a>","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":1314,"score":"5.0","is_site_show":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":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?<\/a>","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":1297,"score":"5.0","is_site_show":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":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?<\/a>","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":1282,"score":"5.0","is_site_show":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":600801756,"type":1,"sort":3,"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?<\/a>","version":"3.1","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":"72","official":"https:\/\/www.yqnxt.com\/","enable_functions":"","count":1255,"score":"3.0","is_site_show":0,"versions":[{"m_version":"3","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"\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","download":"other\/20230130\/bdf856480da810228eefb1f28408272d.zip","md5":"8f76a0c30e89c5584b2c400610bcd240","size":42151378}]},{"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?<\/a>","version":"2023.02131500","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":1250,"score":"5.0","is_site_show":0,"versions":[{"m_version":"2023","version":"02131500","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4fee\u590d\u5b89\u88c5BUG","download":"other\/20230213\/2c95da9de6f5df612d46792f236c094d.zip","md5":"eb6e5465c8dcce71cabcd1b849d176ba","size":6069355}]},{"id":600801755,"type":2,"sort":3.7,"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?<\/a>","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":1231,"score":"3.7","is_site_show":0,"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":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?<\/a>","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":1228,"score":"4.0","is_site_show":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":600801837,"type":5,"sort":3.7,"name":"zzzy_idcard_v1","title":"\u8bc1\u4ef6\u7167\u5236\u4f5c\u514d\u8d39\u7248","ps":"\u8bc1\u4ef6\u7167\u5236\u4f5c,\u4e00\u952e\u5236\u4f5c\u8bc1\u4ef6\u7167\uff0c\u652f\u6301700\u591a\u79cd\u8bc1\u4ef6\u7167\u89c4\u683c?<\/a>","version":"1.2.6","author":"\u9e67\u5e94\u79d1\u6280","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-102856-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221025\/564d7fd0c19c60aeb8a4194b25458522.png","php":"56,70,71,72,73,74","official":"https:\/\/www.zjzapi.com\/","enable_functions":"","count":1194,"score":"3.7","is_site_show":0,"versions":[{"m_version":"1","version":"2.6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4f18\u5316\u5b89\u88c5ssl\u8bc1\u4e66\u68c0\u6d4b","download":"other\/20221129\/e2aa746110f87a39483b1ac3f1aa767e.zip","md5":"dde83e6101ac73172e5c675abe166f90","size":5496838}]},{"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?<\/a>","version":"V 3.4","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":1159,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V 3","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"","download":"other\/20230222\/423b0eb41e3e71eb8f97fd3624f77d91.zip","md5":"12e195441630265095d56f588a0e4701","size":3643809}]},{"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?<\/a>","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":1137,"score":"5.0","is_site_show":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":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?<\/a>","version":"V3.2 Release 221017","author":"\u9759\u9759\u7684\u98ce","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-5099-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201029\/21c44bdb207758acc2a470d3bf665e02.png","php":"72,73,74,80","official":"https:\/\/www.dbshop.net\/","enable_functions":"","count":1110,"score":0,"is_site_show":0,"versions":[{"m_version":"V3","version":"2 Release 221017","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e38\u89c4\u66f4\u65b0","download":"other\/20221018\/11e5a5bd1b2a23abfe9578b4379e267a.zip","md5":"cc65397a850be1cc7462ad31a8d56042","size":48907128}]},{"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?<\/a>","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":1104,"score":"3.0","is_site_show":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":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?<\/a>","version":"3.9","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":1102,"score":"5.0","is_site_show":0,"versions":[{"m_version":"3","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u89e3\u51b3\u4e86\u4e00\u4e9b\u5df2\u77e5\u95ee\u9898","download":"other\/20230228\/cab2994f6ea9de3a34029caba0dcd25c.zip","md5":"b23b546095a87aac020311aadf14c9e7","size":793159}]},{"id":600801766,"type":1,"sort":4.3,"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?<\/a>","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":1096,"score":"4.3","is_site_show":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":600801754,"type":2,"sort":4.3,"name":"strongshop","title":"StrongShop","ps":"Laravel \u5f00\u53d1\uff0c\u8de8\u5883\u5916\u8d38\u5546\u57ce\uff0c\u591a\u8bed\u8a00\uff0c\u591a\u8d27\u5e01?<\/a>","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":1094,"score":"4.3","is_site_show":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":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?<\/a>","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":1005,"score":"5.0","is_site_show":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":600801593,"type":1,"sort":0,"name":"wdja_course","title":"WDJA\u6559\u7a0b\u53d1\u5e03\u7cfb\u7edf","ps":"\u5f00\u6e90+\u5546\u7528\u514d\u8d39. QQ\u7fa4:122019913?<\/a>","version":"2.7","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,80,81","official":"http:\/\/www.wdja.net","enable_functions":"","count":976,"score":0,"is_site_show":0,"versions":[{"m_version":"2","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u529f\u80fd\u4ee3\u7801\u4f18\u5316\u3002","download":"other\/20230224\/58e21518286d703548fbd9da0bc81e3d.zip","md5":"75712ee6d781eea9945e49fb9c673dc5","size":6210595}]},{"id":600801762,"type":2,"sort":4,"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?<\/a>","version":"2.2.7","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":951,"score":"4.0","is_site_show":0,"versions":[{"m_version":"2","version":"2.7","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\/20220720\/bb623d0b99110e939f710751984d697a.zip","md5":"90a8eb464fd8612b5a9e0073620dcf2e","size":62776566}]},{"id":600801810,"type":1,"sort":4,"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?<\/a>","version":"v2.2.3.221021","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","official":"http:\/\/www.hkcms.cn","enable_functions":"chmod","count":943,"score":"4.0","is_site_show":0,"versions":[{"m_version":"v2","version":"2.3.221021","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\/20221022\/f41af70ec51eb41ff0e09330703d901d.zip","md5":"db70895d23b3d0e52fdd223919a1ee23","size":12617077}]},{"id":600801816,"type":6,"sort":5,"name":"dberp","title":"DBERP \u8fdb\u9500\u5b58","ps":"\u521d\u5fc3\u4f9d\u65e7\uff0c\u53ef\u514d\u8d39\u5546\u7528\u7684\u8fdb\u9500\u5b58\u7cfb\u7edf\u3002?<\/a>","version":"V1.1 RC 230302","author":"\u5317\u4eac\u73d1\u5927\u949c\u5546\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/bbs.dbshop.net\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220706\/32afd833b67a0de6be5d946f9c54590a.png","php":"74,80","official":"https:\/\/www.dberp.com.cn","enable_functions":"","count":931,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V1","version":"1 RC 230302","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e38\u89c4\u66f4\u65b0","download":"other\/20230302\/9cfec277d33ac9ebcc6024fa5e7cdc56.zip","md5":"d85b148139fce0bde2de54be59fbc48f","size":14865196}]},{"id":600801801,"type":6,"sort":5,"name":"openblock","title":"OpenBlock","ps":"\u56fe\u5f62\u5316\u7f16\u7a0b\u8bed\u8a00\uff0c\u53ef\u4ee5\u5236\u4f5c\u6e38\u620f\u3001\u52a8\u753b\u3001\u9e3f\u8499\u5e94\u7528\u7b49\u3002?<\/a>","version":"1.03","author":"\u5510\u5948\u5c18","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&amp;tid=89210&amp;page=1&amp;extra=#pid361633","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220408\/76d527eb464f4295d69630d2b574a15a.png","php":"53,54,55,56,70,71,72,73,74,80,81","official":"https:\/\/gitee.com\/openblock","enable_functions":"","count":906,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"03","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u6dfb\u52a0\u65b0\u529f\u80fd","download":"other\/20220915\/84af08873a891059d86f904b418ad732.zip","md5":"52d6166567947c465d75e61323f1357e","size":8378671}]},{"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?<\/a>","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":886,"score":"5.0","is_site_show":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":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?<\/a>","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":878,"score":"5.0","is_site_show":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":600801768,"type":1,"sort":5,"name":"siyucms","title":"SIYUCMS \u5feb\u901f\u5f00\u53d1\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf","ps":"ThinkPHP6.1 + AdminLTE \u5f00\u53d1\u7684\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"6.1.8","author":"SIYUCMS","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&amp;tid=80950","min_image":"\/api\/Pluginother\/get_file?fname=image\/20211207\/abed2f58321ee744d70003a504fed997.png","php":"72,73,74,80,81","official":"https:\/\/siyucms.com","enable_functions":"","count":874,"score":"5.0","is_site_show":0,"versions":[{"m_version":"6","version":"1.8","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"V 6.1.8","download":"other\/20221201\/414c8c485a52eb048d439f57c7f66eb1.zip","md5":"58dc0969241818393ae213c5601303e5","size":26786827}]},{"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?<\/a>","version":"4.4.6","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":830,"score":"4.8","is_site_show":0,"versions":[{"m_version":"4","version":"4.6","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\/20220816\/5ca1a684bbd4b0b4ac1735a596080ce7.zip","md5":"333f0f5436d8e3ff18528fa19d1b7ff1","size":49695546}]},{"id":600801786,"type":6,"sort":5,"name":"moran_iapp","title":"\u9ed8\u7136iApp\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf","ps":"\u4ea4\u6d41\u7fa4\uff1a219348005?<\/a>","version":"2.8.7","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":"70,71,72,73,74,80,81","official":"http:\/\/ht.moranblog.cn\/","enable_functions":"","count":822,"score":"5.0","is_site_show":0,"versions":[{"m_version":"2","version":"8.7","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"Issue\uff0c\u5410\u69fd\uff0c\u5efa\u8bae\u7b49\u8bf7\u52a0\u7fa4\u4e86\u89e3\uff1a219348005","download":"other\/20220810\/667465576a75991f0c7025bccfdac2a4.zip","md5":"64e61be6960c1c078ee8741e4bd378fc","size":14320500}]},{"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?<\/a>","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":818,"score":"5.0","is_site_show":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":600801759,"type":5,"sort":4.2,"name":"sxkj_offline","title":"\u8054\u901aCPS","ps":"\u6700\u65b0\u7a0b\u5e8f\u66f4\u65b0\u548c\u552e\u540e\u4ea4\u6d41QQ\u7fa4\uff1a634511156?<\/a>","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":771,"score":"4.2","is_site_show":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":600801782,"type":1,"sort":5,"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?<\/a>","version":"1.20","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":747,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"20","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u57df\u540d\u7a7a\u95f4VPS\u670d\u52a1\u5668\u7b49IDC\u8d22\u52a1\u7cfb\u7edf\u4ee3\u7406\u7cfb\u7edf\u4e3b\u63a7\u7cfb\u7edf","download":"other\/20220829\/007a16d18663d3b9f1e1f3034f732c1e.zip","md5":"4097d5aa1c575df7a12d83709c2cb88f","size":9147871}]},{"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.?<\/a>","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":744,"score":"5.0","is_site_show":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":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?<\/a>","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":685,"score":"5.0","is_site_show":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":600801668,"type":1,"sort":1.8,"name":"rauth","title":"\u5c0f\u67d3\u6388\u6743\u7cfb\u7edf","ps":"\u5c0f\u67d3\u6388\u6743\u7cfb\u7edfV2 \u591a\u5e94\u7528\u6388\u6743\u5b98\u7f51 \u4f5c\u8005QQ732279717?<\/a>","version":"2.1.0","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":"81","official":"https:\/\/2m9.cn\/","enable_functions":"","count":676,"score":"1.8","is_site_show":0,"versions":[{"m_version":"2","version":"1.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5c0f\u67d3\u6388\u6743\u7cfb\u7edfV2 \u591a\u5e94\u7528\u6388\u6743\u5b98\u7f51 \u4f5c\u8005QQ732279717","download":"other\/20230115\/aecfdb08993f004ec351fc1c443d06a0.zip","md5":"7b441f90365c8035477b2f156c98e9ab","size":19682607}]},{"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?<\/a>","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":664,"score":"1.0","is_site_show":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":600801820,"type":1,"sort":5,"name":"nodcloud","title":"\u5f00\u6e90ERP\u7cfb\u7edf\uff0c\u70b9\u53ef\u4e91\u8fdb\u9500\u5b58\u7cfb\u7edf","ps":"\u70b9\u53ef\u4e91\u8fdb\u9500\u5b58\u7cfb\u7edf\uff0c\u57fa\u4e8ethinkphp+layui\u5f00\u53d1.?<\/a>","version":"V6.0.1","author":"\u4e00\u79d2\u5f00\u6e90","price":1,"auth_price":0,"home":"https:\/\/gitee.com\/yimiaoOpen\/nodcloud","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220802\/1ba59d96563269c753959e9506c4f68f.png","php":"56,70,71,72,73","official":"","enable_functions":"","count":650,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V6","version":"0.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5f00\u6e90\u514d\u8d39\u7248\u672c","download":"other\/20220811\/53048222baa480cbacf0522e6fa7c585.zip","md5":"db1278a70915f3c8da716dd83684d681","size":17602541}]},{"id":600801760,"type":1,"sort":5,"name":"funadmin","title":"funadmin","ps":"\u57fa\u4e8eTP6\u548clayui\u7684\u6a21\u5757\u5316\u5f00\u53d1\u7cfb\u7edf?<\/a>","version":"3.2.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":620,"score":"5.0","is_site_show":0,"versions":[{"m_version":"3","version":"2.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"FunAdmin\u57fa\u4e8eTP6+Layui\u7684\u6781\u901f\u5f00\u53d1\u6846\u67b6","download":"other\/20230118\/3c55c18312e4daba746f86a46825e26f.zip","md5":"91731a103e85c9bf6eb755b473173134","size":24820520}]},{"id":600801783,"type":5,"sort":2.3,"name":"dt_free","title":"\u968f\u5fc3\u5730\u63a8","ps":"\u968f\u5fc3\u79d1\u6280\u5730\u63a8\u7cfb\u7edf?<\/a>","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":612,"score":"2.3","is_site_show":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":600801741,"type":1,"sort":5,"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?<\/a>","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":540,"score":"5.0","is_site_show":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":600801836,"type":6,"sort":5,"name":"ktadmin","title":"\u72c2\u56e2KtAdmin\u5f00\u6e90\u6846\u67b6","ps":"\u72c2\u56e2KtAdmin-\u514d\u8d39\u5f00\u6e90\u7684SAAS\u7cfb\u7edf\u5feb\u901f\u5f00\u53d1\u6846\u67b6?<\/a>","version":"1.1.6","author":"DOXCX","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-101801-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221013\/fd7dd839b34176184719539faf524193.png","php":"74","official":"http:\/\/www.ktadmin.cn","enable_functions":"fileinfo,redis,sg11","count":512,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"1.6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u65b0\u529f\u80fd\u5347\u7ea7","download":"other\/20221208\/bc46b6d6156332c603e9d628a826748a.zip","md5":"cf60ddd74af0441f657bfc20b68bfb53","size":9365003}]},{"id":600801833,"type":2,"sort":4,"name":"fahuo100","title":"\u53d1\u8d27100\u865a\u62df\u5546\u54c1\u81ea\u52a8\u53d1\u8d27\u7cfb\u7edf","ps":"\u65e0\u9700\u4eba\u5de5\u503c\u5b88\uff0c\u589e\u52a0\u60a8\u7684\u88ab\u52a8\u6536\u5165?<\/a>","version":"v1.1","author":"\u95ea\u7075\u7f51\u7edc","price":598,"auth_price":0,"home":"https:\/\/fhdemo.s-cms.cn\/t1\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221010\/ab9a4d648770dc435897ab31da8df667.png","php":"55,56,70,71,72,73","official":"","enable_functions":"","count":511,"score":"4.0","is_site_show":0,"versions":[{"m_version":"v1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4fee\u590d\u4e86\u5df2\u77e5bug","download":"other\/20221011\/883d0886fc64e8b848bcceaf8feae86c.zip","md5":"baa979b8e9f0a4389f45d91ae9db183c","size":16280472}]},{"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?<\/a>","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":504,"score":"5.0","is_site_show":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":600801774,"type":2,"sort":0,"name":"shop","title":"\u82b8\u4f17\u5546\u57ce\u667a\u6167\u5546\u4e1a\u7cfb\u7edf\u4f01\u4e1a\u7248","ps":"\u3010\u8fd9\u4e2a\u7248\u672c\u5148\u4e0b\u67b6\u3011\u5206\u9500\u5546\u57ce\uff0c100+\u8425\u9500\u6a21\u5757?<\/a>","version":"2.4.2","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":468,"score":0,"is_site_show":0,"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\/20220622\/ca03d742bfdf5eefcb4786c6fe281928.zip","md5":"7a4ec0cffc4516e64b11b98ee627a378","size":374536787}]},{"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?<\/a>","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","is_site_show":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":600801823,"type":1,"sort":3.7,"name":"wxwhgjx","title":"\u4e07\u76f8\u6587\u5316\u5de5\u5177\u7bb1","ps":"\u5f15\u6d41\u7f51\u9875\u5de5\u5177\u7bb1?<\/a>","version":"1.0.0","author":"\u4e07\u76f8\u6587\u5316","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&tid=99295","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220829\/ad2a29a1d89821213ba23d4a91de1dec.png","php":"53,54,55,56,70,71,72,73","official":"http:\/\/gjxwx.zhouyi186.com","enable_functions":"","count":420,"score":"3.7","is_site_show":0,"versions":[{"m_version":"1","version":"0.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"\u7b2c\u4e00\u7248","download":"other\/20220829\/522b27bb73167d510bc06edf6197542c.zip","md5":"14d9810b83d001c92be646144ee21689","size":14360561}]},{"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?<\/a>","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":410,"score":0,"is_site_show":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":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?<\/a>","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":399,"score":"5.0","is_site_show":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":600801779,"type":2,"sort":4.1,"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.?<\/a>","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":361,"score":"4.1","is_site_show":0,"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":600801821,"type":2,"sort":5,"name":"dbcart","title":"DBCart \u591a\u8bed\u8a00\u5546\u57ce\u7cfb\u7edf","ps":"\u591a\u8bed\u8a00\u3001\u591a\u8d27\u5e01\u5b9e\u65f6\u5207\u6362\uff0c\u667a\u80fd\u7ffb\u8bd1\uff0c\u53ef\u514d\u8d39\u5546\u7528\u7684\u8de8\u5883\u7535\u5546\u7cfb\u7edf\u3002?<\/a>","version":"V3.1 RC 221030","author":"\u5317\u4eac\u73d1\u5927\u949c\u5546\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/bbs.loongdom.cn\/forum.php?gid=90","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220819\/13f2aa02d6d01a8e7bd2b0e4dc7dc695.png","php":"74,80,81,82","official":"https:\/\/dbcart.loongdom.cn\/","enable_functions":"","count":358,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V3","version":"1 RC 221030","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e38\u89c4\u66f4\u65b0","download":"other\/20221101\/0b5b759932c0c07dabbaefcf88e906e8.zip","md5":"5070d662a8fd506e9c2813446d183870","size":51238866}]},{"id":600801818,"type":1,"sort":5,"name":"74cms","title":"\u9a91\u58eb\u4eba\u624d\u7cfb\u7edf-\u514d\u8d39\u7248","ps":"\u9a91\u58ebCMS\u4eba\u624d\u62db\u8058\u7cfb\u7edf\u63d0\u4f9b\u5b8c\u5584\u7684\u4eba\u624d\u62db\u8058\u7f51\u89e3\u51b3\u65b9\u6848?<\/a>","version":"V3.9.0","author":"\u9a91\u58eb\u4eba\u624d\u7cfb\u7edf","price":0,"auth_price":0,"home":"https:\/\/74cmsse.tywangcai.com\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220712\/ecb40c928dee86ebf94c5c9b5f322528.png","php":"71,72","official":"https:\/\/www.74cms.com","enable_functions":"","count":265,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V3","version":"9.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u9a91\u58ebCMS\u4eba\u624d\u62db\u8058\u7cfb\u7edf\u63d0\u4f9b\u5b8c\u5584\u7684\u4eba\u624d\u62db\u8058\u7f51\u89e3\u51b3\u65b9\u6848","download":"other\/20220712\/fd689810d4ef679b6e09d974802615a8.zip","md5":"ad48fdbc3c463ab1f88b07177a349b01","size":80843430}]},{"id":600801834,"type":1,"sort":0,"name":"scms","title":"S-CMS\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf","ps":"\u8ba9\u7528\u6237\u5728\u77ed\u65f6\u95f4\u5185\u8fc5\u901f\u67b6\u8bbe\u5c5e\u4e8e\u81ea\u5df1\u516c\u53f8\u7684\u4f01\u4e1a\u7f51\u7ad9?<\/a>","version":"v5.0 build20221021","author":"\u95ea\u7075\u7f51\u7edc","price":598,"auth_price":0,"home":"https:\/\/demos.s-cms.cn\/s146\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221010\/f437bd8dc213dcaa557d65dad9ac30a7.png","php":"54,55,56,70,71,72,73","official":"","enable_functions":"","count":255,"score":0,"is_site_show":0,"versions":[{"m_version":"v5","version":"0 build20221021","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u9996\u4e2a\u7248\u672c","download":"other\/20221021\/dad0d6cd1a64305689567c41eabbb18f.zip","md5":"8fca4619c723094ec01ca33241600e55","size":13595368}]},{"id":600801838,"type":1,"sort":5,"name":"xyhcms","title":"XYHCMS","ps":"XYHCMS\u662f\u5f00\u6e90\u7684\u5efa\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u7b80\u6d01\uff0c\u6613\u7528\uff0c\u5b89\u5168\uff0c\u7a33\u5b9a?<\/a>","version":"3.6_20220617","author":"\u884c\u4e91\u6d77","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-102486-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221025\/7cc7e97f33da26ed2d751313b2edb2d6.png","php":"53,54,55,56,70,71,72,73,74","official":"http:\/\/www.xyhcms.com","enable_functions":"","count":219,"score":"5.0","is_site_show":0,"versions":[{"m_version":"3","version":"6_20220617","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"xyhcms3.6 (20220617)","download":"other\/20221025\/1f23145ef9dde07d34f27c23b7e10140.zip","md5":"eefc9fc4630eeaa21b6aa05591c3af26","size":9016880}]},{"id":600801850,"type":5,"sort":0,"name":"crmuucn","title":"CRMUU-\u514d\u8d39\u4f01\u5faeSCRM\u6e90\u7801\u7cfb\u7edf","ps":"CRMUU\u662f\u4e00\u6b3e\u514d\u8d39\u5f00\u6e90\u7684\u4f01\u4e1a\u5fae\u4fe1SCRM\u6e90\u7801\u7cfb\u7edf\uff01?<\/a>","version":"1.0.6","author":"DOXCX","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-106294-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221229\/df90605c3a6c5ed691f25a5b1b4fb854.png","php":"74","official":"http:\/\/crmuu.qvmh.cn\/","enable_functions":"fileinfo,redis,sg11","count":208,"score":0,"is_site_show":0,"versions":[{"m_version":"1","version":"0.6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u7a33\u5b9a\u7248","download":"other\/20221229\/521841a877d90f975fafcaaab17ebcab.zip","md5":"ef4c2f27f5019c307ff0f9ea32bf06aa","size":13751346}]},{"id":600801854,"type":2,"sort":0,"name":"fakabao","title":"\u53d1\u5361\u5b9d","ps":"\u5361\u5bc6\u5bc4\u552e\u7cfb\u7edf\uff0c\u4e3a\u5546\u6237\u53ca\u4e70\u5bb6\u63d0\u4f9b\u4fbf\u6377\u7eff\u8272\u5b89\u5168\u7684\u9500\u552e\u548c\u8d2d\u4e70\u4f53\u9a8c?<\/a>","version":"v1.0 build20230203","author":"\u95ea\u7075\u7f51\u7edc","price":88,"auth_price":0,"home":"https:\/\/51faka.vip\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230115\/fc6f067a83c1c4ab4ebefbf3dcdf2c2f.png","php":"55,56,70,71,72,73","official":"","enable_functions":"","count":184,"score":0,"is_site_show":0,"versions":[{"m_version":"v1","version":"0 build20230203","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4fee\u590d\u4e86\u5df2\u77e5bug","download":"other\/20230206\/b7f12feb618b77928928ad8804801b7c.zip","md5":"03cf244683b8fd167a7e1054eb7160d9","size":8516338}]},{"id":600801847,"type":1,"sort":5,"name":"malltodo_php_bt","title":"MALLTODO\u96f6\u4ee3\u7801\u4f01\u4e1a\u5efa\u7ad9\u7cfb\u7edf","ps":"\u201c\u4f1a\u6253\u5b57\u5c31\u80fd\u5efa\u7f51\u7ad9\u201d\uff0c\u4e14\u6240\u751f\u6210\u7684\u7f51\u7ad9\u5747\u4e3a\u54cd\u5e94\u5f0f\u3002?<\/a>","version":"1.1","author":"\u90d1\u5dde\u638c\u52fa\u4fe1\u606f\u6280\u672f\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-105959-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221222\/731550f5f93e157afbbd163668347449.png","php":"56,70,71,72,73","official":"","enable_functions":"","count":163,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u201c\u4f1a\u6253\u5b57\u5c31\u80fd\u5efa\u7f51\u7ad9\u201d\uff0c\u4e14\u6240\u751f\u6210\u7684\u7f51\u7ad9\u5747\u4e3a\u54cd\u5e94\u5f0f\u3002","download":"other\/20230104\/fea7e66a3a03d886421820edcbf6e4d5.zip","md5":"f3113526e72d8ed3e2529782d8a2a26b","size":21187102}]},{"id":600801808,"type":1,"sort":5,"name":"sokingcms","title":"\u641c\u5ba2CMS","ps":"\u591a\u57ce\u5e02\u5206\u7ad9\u7ba1\u7406\u7cfb\u7edf\uff0c\u4e00\u952e\u751f\u6210300\u591a\u4e2a\u57ce\u5e02\u3002?<\/a>","version":"1.5.4.1","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\/20221024\/904b45429dc07b9affd0cf90c1530650.png","php":"71,72,73","official":"https:\/\/www.sokingcms.com","enable_functions":"","count":156,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"5.4.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"1\u3001\u4fee\u590d\u591a\u57ce\u5e02\u767e\u5ea6\u63a8\u9001\u9519\u8bef\u95ee\u9898\u30022\u3001\u589e\u52a0\u514d\u8d39\u7248\u672c","download":"other\/20221104\/3ac1f07cfcf2e25e703569820b5cabbe.zip","md5":"1c4582e0c079ae1d459fa85b7e51d55c","size":79188800}]},{"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?<\/a>","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":135,"score":"5.0","is_site_show":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":600801859,"type":4,"sort":5,"name":"modstartblog9","title":"ModStartBlog Laravel9 \u7248","ps":"\u57fa\u4e8eLaravel\u7684\u6a21\u5757\u5316\u5feb\u901f\u5f00\u53d1\u6846\u67b6,\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?<\/a>","version":"v6.8.0","author":"\u9b54\u4f17","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-104189-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230207\/18dcb817217ed26beb549b1410c7d6f7.png","php":"80,81","official":"https:\/\/modstart.com\/","enable_functions":"shell_exec,proc_open,putenv","count":134,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v6","version":"8.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u535a\u5ba2\u7f6e\u9876\u529f\u80fd\uff0c\u754c\u9762\u6837\u5f0f\u4f18\u5316","download":"other\/20230228\/dc59db17cb1227b419baf7ef5df838c8.zip","md5":"78d9eb54745f4430a66dec55c8b08ca0","size":31770377}]},{"id":600801858,"type":4,"sort":5,"name":"modstartblog","title":"ModStartBlog \u7a33\u5b9a\u7248","ps":"\u57fa\u4e8eLaravel\u7684\u6a21\u5757\u5316\u5feb\u901f\u5f00\u53d1\u6846\u67b6,\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?<\/a>","version":"v6.8.0","author":"\u9b54\u4f17","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-104189-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230207\/f35ea7d0f9965f38af49c4795eaea5e1.png","php":"56,70","official":"https:\/\/modstart.com\/","enable_functions":"shell_exec,proc_open,putenv","count":116,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v6","version":"8.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u535a\u5ba2\u7f6e\u9876\u529f\u80fd\uff0c\u754c\u9762\u6837\u5f0f\u4f18\u5316","download":"other\/20230228\/77da3a55c0d73c82a5cf51ed80641591.zip","md5":"f563e461bd831a89230442a0d4adf205","size":31223710}]},{"id":600801851,"type":1,"sort":0,"name":"ourphpv7","title":"OurPHP\u4f01\u4e1a+\u5546\u57ce+\u5c0f\u7a0b\u5e8f+\u591a\u8bed\u8a00CMS\u5f00\u6e90\u5efa\u7ad9\u7cfb\u7edf","ps":"\u5f00\u6e90\u7684\u4f01\u4e1a+\u5546\u57ceCMS\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"7.2.0","author":"\u54c8\u5c14\u6ee8\u4f1f\u6210\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-106485-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230103\/7b5ee98106117617243206168d16360d.png","php":"53,54,55,56,70,71,72,73","official":"www.ourphp.net","enable_functions":"","count":100,"score":0,"is_site_show":0,"versions":[{"m_version":"7","version":"2.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"bulid20230301","download":"other\/20230301\/c8d0b96e1314050ddca49ef83d17ba9d.zip","md5":"2b4f22635426bb633c6360ae554004ae","size":8199854}]},{"id":600801829,"type":6,"sort":5,"name":"ectool1997","title":"ECT\u5feb\u901f\u5f00\u53d1\u6846\u67b6","ps":"\u57fa\u4e8eTp6 \u670d\u52a1\u7aef\u5f00\u53d1\u6846\u67b6 \u524d\u7aef\u79d2\u53d8\u5168\u6808?<\/a>","version":"2.0.0","author":"dpp","price":0,"auth_price":0,"home":"https:\/\/www.kaiyuantong.cn\/ect\/#\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220920\/ccce31949a1d74c81e8589a748a9a70f.png","php":"70,71,72,73,74,80","official":"https:\/\/www.kaiyuantong.cn\/webapp\/Index\/index","enable_functions":"chown,mkdir,rename","count":88,"score":"5.0","is_site_show":0,"versions":[{"m_version":"2","version":"0.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"2.0.0 \u6b63\u5f0f\u7248\u53d1\u5e03","download":"other\/20221201\/6f54bf061602b676666517bf869d9f8f.zip","md5":"3170afbe3b5801ade1038bcea5fccdb4","size":17265642}]},{"id":600801856,"type":1,"sort":5,"name":"modstartcms","title":"ModStartCMS \u7a33\u5b9a\u7248","ps":"\u57fa\u4e8eApache2.0\u5f00\u6e90\u534f\u8bae\uff0c\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?<\/a>","version":"v5.8.0","author":"\u9b54\u4f17","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-105704-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230207\/ca714e3d4e31a69421fddb8925a66f5c.png","php":"56,70","official":"https:\/\/modstart.com\/","enable_functions":"shell_exec,proc_open,putenv","count":88,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v5","version":"8.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u524d\u7aef\u6837\u5f0f\u7f8e\u5316\uff0c\u540e\u53f0\u767b\u5f55\u5347\u7ea7","download":"other\/20230222\/50a60fa957204289ec3a14fb823d783f.zip","md5":"1fd129cf46963e5cc595ded686cf591f","size":31990259}]},{"id":600801857,"type":1,"sort":5,"name":"modstartcms9","title":"ModStartCMS Laravel9 \u7248","ps":"\u57fa\u4e8eApache2.0\u5f00\u6e90\u534f\u8bae\uff0c\u514d\u8d39\u4e14\u4e0d\u9650\u5236\u5546\u4e1a\u4f7f\u7528?<\/a>","version":"v5.8.0","author":"\u9b54\u4f17","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-105704-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230207\/60698ec968fdd3e6a9630f8b17d340b8.png","php":"80,81","official":"https:\/\/modstart.com\/","enable_functions":"shell_exec,proc_open,putenv","count":71,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v5","version":"8.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u524d\u7aef\u6837\u5f0f\u7f8e\u5316\uff0c\u540e\u53f0\u767b\u5f55\u5347\u7ea7","download":"other\/20230222\/01537f545e806f9693f42994e4ddaa8c.zip","md5":"fe1b12d2aeb271adc787df1075730b72","size":32341460}]},{"id":600801841,"type":1,"sort":0,"name":"yunqian_cms","title":"\u82b8\u7b7ecms\u7cfb\u7edf","ps":"\u57fa\u4e8eApache2.0\u534f\u8bae\u5f00\u6e90\uff0c\u53ef\u4e8c\u6b21\u5f00\u53d1\u6a21\u7248\u53ca\u4f01\u4e1a\u5e94\u7528?<\/a>","version":"1.0.11","author":"\u5e7f\u5dde\u82b8\u7b7e\u4fe1\u606f\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/www.yunqiancms.com","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221102\/c219201017294989a5b4096a102ad554.png","php":"74","official":"","enable_functions":"proc_xxx,putenv,pcntl_signal,pcntl_fork,pcntl_wait,pcntl_alarm,pcntl_signal_dispatch,stream_socket_server","count":57,"score":0,"is_site_show":0,"versions":[{"m_version":"1","version":"0.11","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"1.0.11\u7248","download":"other\/20221106\/2d0e285070951e9c846e1c18eade1142.zip","md5":"3a798d2f9b5e8bc6b593c1c81047039d","size":21373340}]},{"id":600801817,"type":6,"sort":0,"name":"saphp","title":"swiftadmin\u6781\u901f\u540e\u53f0\u5f00\u53d1","ps":"\u57fa\u4e8eTP6\u7684\u4e00\u6b3e\u4f18\u79c0\u4e2d\u540e\u53f0\u6781\u901f\u5f00\u53d1\u89e3\u51b3\u65b9\u6848\u3002?<\/a>","version":"Think\u7248\u672c.","author":"meystack","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&tid=95877","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220711\/11dbe3fafc7d4d0243019918e817e1ce.png","php":"73,74,80","official":"https:\/\/www.swiftadmin.net","enable_functions":"","count":52,"score":0,"is_site_show":0,"versions":[{"m_version":"Think\u7248\u672c","version":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4f18\u79c0\u4e2d\u540e\u53f0\u6846\u67b6QQ\u7fa468221484","download":"other\/20230213\/3f75485089cfdb2b953ec2f28f27a430.zip","md5":"5fd2285738a3f42628c183235b4aedb8","size":50819892}]},{"id":600801848,"type":1,"sort":1,"name":"lauth123","title":"\u521b\u9886\u4e91\u6388\u6743\u7cfb\u7edf","ps":"\u521b\u9886\u4e91\u6388\u6743\u7cfb\u7edf-\u591a\u5e94\u7528\u6388\u6743\u5b98\u7f51 \u4f5c\u8005QQ732279717?<\/a>","version":"2.2.2","author":"\u521b\u9886\u4e91\u79d1\u6280","price":0,"auth_price":0,"home":"http:\/\/sq.azat.cn","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221223\/e6342e421a70fc5f3a40f8f6ece4e808.png","php":"81","official":"","enable_functions":"","count":36,"score":"1.0","is_site_show":0,"versions":[{"m_version":"2","version":"2.2","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u521b\u9886\u4e91\u6388\u6743\u7cfb\u7edf - \u591a\u5e94\u7528\u6388\u6743\u5b98\u7f51 \u4f5c\u8005QQ732279717","download":"other\/20230131\/c525e78868c43cc21a4279033b7318ed.zip","md5":"913836a7e6093806b27a1a7fb361ea22","size":21312881}]},{"id":600801809,"type":6,"sort":5,"name":"qingwork","title":"\u8f7b\u5982\u4e91\u5fae\u670d\u52a1\u5f00\u53d1\u6846\u67b6","ps":"\u57fa\u4e8eLaravel\u7684\u5fae\u670d\u52a1\u6a21\u5757\u5316\u5feb\u901f\u5f00\u53d1\u6846\u67b6?<\/a>","version":"1.8.62","author":"\u5e7f\u897f\u795e\u86d9\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/beta.whotalk.com.cn\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221107\/e1224a291272d7fc7c2041869499b42c.png","php":"72,73","official":"","enable_functions":"putenv,proc_open,symlink","count":21,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"8.62","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"\u66f4\u65b0\u5e94\u7528\u6a21\u5757\u5b89\u88c5\u3001\u66f4\u65b0\u65b9\u5f0f\u548c\u89c4\u8303","download":"other\/20230214\/1bc83fb91d67cddca95d2795f7dc84da.zip","md5":"f827007ed66210c047a963eee096e741","size":26520740}]}],"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/config/plugin_list.json b/data/config/plugin_list.json new file mode 100644 index 0000000..5e47574 --- /dev/null +++ b/data/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":"\u5b89\u5168\u5e94\u7528","title_en":"Tools","sort":3,"ps":"\u5b89\u5168\u5e94\u7528","ps_en":"System tools","icon":"icon","panel_en":1},{"id":7,"title":"\u514d\u8d39\u5e94\u7528","title_en":"Plug-ins","sort":4,"ps":"\u514d\u8d39\u5e94\u7528","ps_en":"aaPanel plug-ins","icon":"icon","panel_en":1},{"id":8,"title":"\u4e13\u4e1a\u7248\u5e94\u7528","title_en":"","sort":5,"ps":"\u4e13\u4e1a\u7248\u5e94\u7528","ps_en":"","icon":"icon","panel_en":0},{"id":12,"title":"\u4f01\u4e1a\u7248\u5e94\u7528","title_en":"","sort":6,"ps":"\u4f01\u4e1a\u7248\u5e94\u7528","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":36,"os":"Linux","pid":100000010,"type":8,"sort":1,"price":69.8,"name":"btwaf","title":"Nginx\u9632\u706b\u5899","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6709\u6548\u9632\u6b62sql\u6ce8\u5165\/xss\/\u4e00\u53e5\u8bdd\u6728\u9a6c\/\u9632\u91c7\u96c6\u7b49\u5e38\u89c1\u6e17\u900f\u653b\u51fb\uff0c\u5efa\u8bae\u548cPHP\u7f51\u7ad9\u5b89\u5168\u544a\u8b66\u914d\u5408\u4f7f\u7528\uff0c\u7b26\u5408GB\/T 32917-2016\u6807\u51c6\uff0c\u516c\u5b89\u4e09\u6240\u5b89\u5168\u8ba4\u8bc1\u3002 >\u6559\u7a0b<\/a> >\u7533\u8bf7\u5546\u4e1a\u6388\u6743<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"nginx","mutex":"btwaf_httpd","install_checks":"\/www\/server\/panel\/plugin\/btwaf","uninsatll_checks":"\/www\/server\/panel\/plugin\/btwaf","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product_nginx_firewall.html","ex1":"\u4ec5\u652f\u6301Nginx|\u62b5\u5fa1CC\u653b\u51fb|\u5173\u952e\u8bcd\u62e6\u622a|\u62e6\u622a\u6076\u610f\u626b\u63cf|\u963b\u6b62\u9ed1\u5ba2\u5165\u4fb5|\u7b26\u5408\u7b49\u4fdd\u8981\u6c42","ex2":"6","ex3":"","keyword":"","versions":[{"id":329,"soft_id":36,"m_version":"9","version":"0.9","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4f18\u5316\u5bfc\u5165\u5bfc\u51fa\u529f\u80fd\n2.\u4f18\u5316\u591a\u6587\u4ef6\u4e0a\u4f20\u7684\u95ee\u9898\n3.\u4f18\u5316\u9519\u8bef\u63d0\u9192\n4.\u4f18\u5316\u62e6\u622a\u7684\u4fe1\u606f","os_limit":0,"beta":0,"update_time":1670408261},{"id":317,"soft_id":36,"m_version":"9","version":"0.8","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u91cd\u88c5\u95ee\u9898","os_limit":0,"beta":0,"update_time":1669184454},{"id":296,"soft_id":36,"m_version":"9","version":"0.7","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1666002856}],"endtime":0},{"id":189,"os":"Linux","pid":100000077,"type":12,"sort":1,"price":59.9,"name":"security_notice","title":"PHP\u7f51\u7ad9\u5b89\u5168\u544a\u8b66","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8ePHP\u5185\u6838\u7684\u76d1\u63a7\u5de5\u5177\uff0c\u5b9e\u65f6\u76d1\u63a7\u7f51\u7ad9\u6728\u9a6c\u3001\u6f0f\u6d1e\u7b49\u5176\u4ed6\u5165\u4fb5\u884c\u4e3a\uff0c\u53d1\u73b0\u6728\u9a6c\u652f\u6301\u81ea\u52a8\u9694\u79bb\u6ce8\u610f\uff1a\u4e0d\u652f\u630132\u4f4d\u7cfb\u7edf\u548carm\u5e73\u53f0\u548cPHP5.2<\/span> > \u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/security_notice","uninsatll_checks":"\/www\/server\/panel\/plugin\/security_notice","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":367,"soft_id":189,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2023-3-27 16:38\n1.\u65b0\u589e\u68c0\u6d4b\u54e5\u65af\u62c9webshell \u8fde\u63a5\u5de5\u5177\u7684\u6587\u4ef6\u4e0a\u4f20\u3001\u6587\u4ef6\u4e0b\u8f7d\u3001\u547d\u4ee4\u6267\u884c\u3001\u7ed5\u8fc7\u547d\u4ee4\u6267\u884c\u68c0\u6d4b\n2.\u65b0\u589e\u68c0\u6d4b\u51b0\u874ewebshell \u8fde\u63a5\u5de5\u5177\u7684\u8fde\u63a5\n3.\u65b0\u589e\u68c0\u6d4b\u8681\u5251\u7ed5\u8fc7\u547d\u4ee4\u6267\u884c\u68c0\u6d4b\n4.\u5982\u6709\u8bef\u62a5\u3002\u8bf7\u5728\u8bba\u575b\u7559\u8a00\n5.\u66f4\u65b0\u8be6\u60c5 https:\/\/www.bt.cn\/bbs\/thread-110592-1-1.html","os_limit":0,"beta":0,"update_time":1679906291},{"id":358,"soft_id":189,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u670d\u52a1\u7ecf\u5e38\u6302\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1678436660},{"id":356,"soft_id":189,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u589e\u52a0\u8ba1\u5212\u4efb\u52a1\u5b88\u62a4\u8fdb\u7a0b","os_limit":0,"beta":1,"update_time":1678353799}],"endtime":0},{"id":35,"os":"Linux","pid":100000012,"type":8,"sort":1,"price":69.8,"name":"btwaf_httpd","title":"Apache\u9632\u706b\u5899","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6709\u6548\u9632\u6b62sql\u6ce8\u5165\/xss\/\u4e00\u53e5\u8bdd\u6728\u9a6c\u7b49\u5e38\u89c1\u6e17\u900f\u653b\u51fb,\u5f53\u524d\u4ec5\u652f\u6301Apache2.4,\u5efa\u8bae\u548cPHP\u7f51\u7ad9\u5b89\u5168\u544a\u8b66\u914d\u5408\u4f7f\u7528 >\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"apache","mutex":"btwaf","install_checks":"\/www\/server\/panel\/plugin\/btwaf_httpd\/info.json","uninsatll_checks":"\/www\/server\/panel\/plugin\/btwaf_httpd","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/btwaf_httpd.html","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":306,"soft_id":35,"m_version":"9","version":"2","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1667440281},{"id":273,"soft_id":35,"m_version":"9","version":"1","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1663145232},{"id":223,"soft_id":35,"m_version":"9","version":"0","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1650870911}],"endtime":0},{"id":121,"os":"Linux","pid":100000044,"type":12,"sort":2,"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\u630132\u4f4d\u7cfb\u7edf\u548carm\u5e73\u53f0\u548cPHP5.2<\/span> > \u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/php_filter","uninsatll_checks":"\/www\/server\/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":"6","ex3":"","keyword":"","versions":[{"id":265,"soft_id":121,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0PHP7.4\/8.0\/8.1\u7684\u517c\u5bb9\n2\u3001\u4fee\u590d\u89c4\u5219\u914d\u7f6e\u7684\u4e00\u4e9b\u9519\u8bef\n3\u3001\u4fee\u590d\u90e8\u5206\u673a\u5668\u65e0\u6cd5\u52a0\u8f7d\u6a21\u5757\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1660699487},{"id":255,"soft_id":121,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1659325449},{"id":17,"soft_id":121,"m_version":"1","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u7f51\u7ad9\u5217\u8868\u540c\u6b65\u95ee\u9898\n2\u3001\u4fee\u590d\u7f51\u7ad9\u6570\u91cf\u8fc7\u591a\u65f6\u6279\u91cf\u6307\u6d3e\u5361\u6b7b\u7684\u95ee\u9898\n3\u3001\u4fee\u590d\u5bf9Pythin2.7\u73af\u5883\u7684\u517c\u5bb9","os_limit":0,"beta":0,"update_time":1625277777}],"endtime":0},{"id":34,"os":"Linux","pid":100000014,"type":8,"sort":2,"price":29.8,"name":"total","title":"\u7f51\u7ad9\u76d1\u63a7\u62a5\u8868","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5b9e\u65f6\u5206\u6790\u7f51\u7ad9\u8fd0\u884c\u3001\u7528\u6237\u8bbf\u95ee\u72b6\u51b5\uff0c\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 >\u56fe\u6587\u8bf4\u660e<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/total","uninsatll_checks":"\/www\/server\/panel\/plugin\/total","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product_website_total.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":344,"soft_id":34,"m_version":"7","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1676104827},{"id":328,"soft_id":34,"m_version":"7","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4f18\u5316Nginx URI\u7edf\u8ba1\u51c6\u786e\u6027\uff0c\u5c24\u5176\u5b58\u5728301\u8df3\u8f6c\u7684\u914d\u7f6e\u60c5\u51b5\u3002\n2. \u4f18\u5316\u7edf\u8ba1\u62a5\u544a\u5730\u533a\u7edf\u8ba1\u6570\u636e\u751f\u6210\uff0c\u89e3\u51b3\u5730\u533a\u4fe1\u606f\u4e3a\u7a7a\u95ee\u9898\u548c\u6027\u80fd\u4f18\u5316\u3002\n3. \u8c03\u6574\u7edf\u8ba1\u62a5\u544aTOP\u7edf\u8ba1\u6570\u636e\u7edf\u4e00\u4e3aTOP 50\u884c\uff0c\u62a5\u544a\u6570\u636e\u884c\u66f4\u591a\u4e86\u3002\n4. \u7f51\u7ad9\u65e5\u5fd7\u65b0\u589e\u8bf7\u6c42\u5ef6\u65f6\u7b5b\u9009\u3002\n5. \u540e\u53f0\u4efb\u52a1\u589e\u52a0\u6e05\u7406\u8d85\u8fc7180\u5929\u4ee5\u524d\u7684\u7edf\u8ba1\u6570\u636e\uff0c\u6e05\u7406\u4e00\u4e2a\u6708\u4ee5\u524d\u7684IP\u7edf\u8ba1\u3001URI\u7edf\u8ba1\u3001\u6765\u6e90\u7edf\u8ba1\u6570\u636e\u3002\n6. \u4fee\u6b63\u8fd130\u5929\u7684\u65e5\u671f\u65f6\u95f4\u8ba1\u7b97\u3002\n7. \u6765\u6e90\u7edf\u8ba1\u8c03\u6574\uff0c\u7ad9\u5185\u6765\u6e90\u4e0d\u518d\u7edf\u8ba1\u3002\n8. \u4fee\u590d\u6982\u89c8\u9875\u65f6\u95f4\u6807\u7b7e\u5207\u6362\u5bfc\u81f4\u7ed8\u56fe\u6570\u636e\u4e0d\u663e\u793abug\u3002","os_limit":0,"beta":0,"update_time":1670212828},{"id":311,"soft_id":34,"m_version":"7","version":"2.2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u65b0\u589e\u8fd11\u5c0f\u65f6\u65f6\u95f4\u6807\u7b7e\u3002\n2. \u7f51\u7ad9\u65e5\u5fd7\u589e\u52a0\u53d6\u53cd\/\u6392\u9664\u641c\u7d22\uff0c\u65b0\u589e\u7a7a\u6765\u6e90\u641c\u7d22\u3002\n3. \u7edf\u8ba1\u62a5\u544a\u65b0\u589e\u5468\u62a5\u3001\u6708\u62a5\u7c7b\u578b\u7b5b\u9009\u3002\n4. \u4fee\u590d\u5df2\u6709\u7684bug\u3002","os_limit":0,"beta":0,"update_time":1668155798}],"endtime":0},{"id":107,"os":"Linux","pid":0,"type":7,"sort":2,"price":0,"name":"site_speed","title":"\u5821\u5854\u7f51\u7ad9\u52a0\u901f","title_en":"WebSite Speed","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u91cd\u6784\u7248\uff0c\u57fa\u4e8e\u9875\u9762\u7f13\u5b58\u7684\u7f51\u7ad9\u52a0\u901f\u63d2\u4ef6\uff0c\u5b89\u88c5\u6216\u5347\u7ea7\u5230\u6b64\u7248\u672c\uff0c\u5c06\u4f1a\u5378\u8f7d\u65e7\u7248\u672c\uff0c\u5982\u679c\u662fApache\u9700\u8981\u5148\u5b89\u88c5Memcached >\u6559\u7a0b<\/a>","ps_en":"Website acceleration, supporting dynamic acceleration of mainstream website projects","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/site_speed","uninsatll_checks":"\/www\/server\/panel\/plugin\/site_speed","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/site_speed.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":368,"soft_id":107,"m_version":"4","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2023-03-28 \u66f4\u65b0\n1.\u4fee\u590duri\u4e3a\u7a7a\u7684\u65f6\u5019\u7684\u62a5\u9519","os_limit":0,"beta":0,"update_time":1679993829},{"id":347,"soft_id":107,"m_version":"4","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u90e8\u5206\u4e0d\u7f13\u5b58\u89c4\u5219\u4e0d\u751f\u6548\u7684\u95ee\u9898\n2\u3001\u8c03\u6574\u4f9d\u8d56\u68c0\u6d4b\u63d0\u793a","os_limit":0,"beta":0,"update_time":1677050000},{"id":319,"soft_id":107,"m_version":"4","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u90e8\u5206\u54cd\u5e94\u5934\u91cd\u590d\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1669275997}],"endtime":0},{"id":178,"os":"Linux","pid":100000067,"type":12,"sort":3,"price":99,"name":"tamper_core","title":"\u5821\u5854\u4f01\u4e1a\u7ea7\u9632\u7be1\u6539 - \u91cd\u6784\u7248","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63a8\u8350\uff1a<\/span>\u5185\u6838\u7248\u9632\u7be1\u6539,\u7528\u4e8e\u4fdd\u62a4\u7ad9\u70b9\u5185\u5bb9\u5b89\u5168\uff0c\u9632\u6b62\u9ed1\u5ba2\u975e\u6cd5\u4fee\u6539\u7f51\u9875\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5165\u4fb5\u884c\u4e3a\uff0c\u652f\u6301Centos\/Debian\/Ubuntu\uff0c\u6ce8\u610f\uff1a\u4e0d\u80fd\u4e0e\u5176\u5b83\u9632\u7be1\u6539\u8f6f\u4ef6\u540c\u65f6\u4f7f\u7528 >>\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"tamper_drive|tamper_proof","install_checks":"\/www\/server\/panel\/plugin\/tamper_core","uninsatll_checks":"\/www\/server\/panel\/plugin\/tamper_core","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"\u4fdd\u62a4\u7ad9\u70b9\u5185\u5bb9\u5b89\u5168|\u963b\u6b62\u9ed1\u5ba2\u975e\u6cd5\u4fee\u6539\u7f51\u9875|\u963b\u6b62\u7f51\u7ad9\u88ab\u6302\u9a6c|\u963b\u6b62\u5176\u4ed6\u5165\u4fb5\u884c\u4e3a|\u5185\u6838\u7ea7\u9632\u62a4\uff0c\u66f4\u5b89\u5168","ex2":"6","ex3":"","keyword":"","versions":[{"id":362,"soft_id":178,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u652f\u6301\u901a\u8fc7\u6587\u4ef6\u7ba1\u7406\u9632\u7be1\u6539","os_limit":0,"beta":0,"update_time":1679361165},{"id":353,"soft_id":178,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4f18\u5316\u975e\u4e3b\u6d41\u7cfb\u7edf\u5185\u6838\u7248\u672c\u7684\u517c\u5bb9\u6027\n2\u3001\u8c03\u6574\u76ee\u5f55\u9012\u5f52\u68c0\u6d4b\u673a\u5236\n3\u3001\u4fee\u590d\u56e0\u7cfb\u7edf\u5185\u6838\u7248\u672c\u5347\u7ea7\u5bfc\u81f4\u7684\u6a21\u5757\u52a0\u8f7d\u5931\u8d25","os_limit":0,"beta":0,"update_time":1678175660},{"id":230,"soft_id":178,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u57fa\u4e8e\u5168\u7248\u672c\u5185\u6838\u91cd\u6784\n2\u3001\u89e3\u51b3Centos8\/9,Debian9\/10\/11,Ubuntu16\/18\/20\/22\u517c\u5bb9\u6027\u95ee\u9898\n3\u3001\u89e3\u51b3\u90e8\u5206\u673a\u5668\u6b7b\u673a\u3001\u5185\u5b58\u8dd1\u9ad8\u3001CPU\u8dd1\u9ad8\u7684\u95ee\u9898\n4\u3001\u589e\u52a0\u8fdb\u7a0b\u767d\u540d\u5355\n5\u3001\u589e\u52a0UID\u3001GID\u767d\u540d\u5355\n","os_limit":0,"beta":0,"update_time":1655698305}],"endtime":0},{"id":41,"os":"Linux","pid":100000005,"type":8,"sort":3,"price":19.8,"name":"rsync","title":"\u6587\u4ef6\u540c\u6b65\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u539f\u6570\u636e\u540c\u6b65\u5de5\u5177\uff0c\u57fa\u4e8ersync\u5f00\u53d1\u7684\u6587\u4ef6\u540c\u6b65\u5de5\u5177\uff0c\u53ef\u5b9a\u65f6\u6216\u5b9e\u65f6\u7684\u53d1\u9001\u6587\u4ef6\u548c\u66f4\u65b0\u6587\u4ef6\uff0c\u4e5f\u53ef\u7528\u4e8e\u914d\u7f6e\u8d1f\u8f7d\u5747\u8861\u3001\u96c6\u7fa4\u3001\u5f02\u5730\u5907\u4efd\u7b49\u573a\u666f >>\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/rsync","uninsatll_checks":"\/www\/server\/panel\/plugin\/rsync","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"\u591a\u673a\u6587\u4ef6\u540c\u6b65|\u5b9a\u65f6\/\u5b9e\u65f6\u5907\u4efd|\u9002\u7528\u8d1f\u8f7d\u5747\u8861\/\u96c6\u7fa4|\u6570\u636e\u5f02\u5730\u707e\u5907|\u6587\u4ef6\u5f02\u5730\u591a\u6d3b|\u552e\u540e\u7fa4\uff1a620695507","ex2":"","ex3":"","keyword":"","versions":[{"id":366,"soft_id":41,"m_version":"3","version":"8.3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u65b0\u589e\u540c\u6b65\u72b6\u6001\uff08\u540c\u6b65\u5f02\u5e38\u53ef\u67e5\u770b\u5f02\u5e38\u65e5\u5fd7\uff09\n2.\u65b0\u589e\u5b9e\u65f6\u540c\u6b65\u7a0b\u5e8f\u5b88\u62a4\u4efb\u52a1\n3.\u4fee\u590d\u65b0\u589e\u672c\u5730\u540c\u6b65\u5931\u8d25\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1679638099},{"id":354,"soft_id":41,"m_version":"3","version":"8.2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u8c03\u6574\u6700\u540e\u540c\u6b65\u65f6\u95f4\u65b9\u6cd5\u7684\u5c55\u793a\u65b9\u5f0f\u53ca\u903b\u8f91\n2.\u8c03\u6574\u521b\u5efa\u3001\u4fee\u6539\u63a5\u6536\u4efb\u52a1\u76ee\u5f55\u68c0\u67e5\u65b9\u6cd5\u7684\u903b\u8f91\n3.\u4fee\u590d\u4fee\u6539\u63a5\u6536\u4efb\u52a1\u65f6\u7528\u6237\u540d\u4e5f\u4f1a\u81ea\u52a8\u968f\u673a\u751f\u6210\u7684\u95ee\u9898\n4.\u8c03\u6574\u5df2\u5b58\u5728\u63a5\u6536\u4efb\u52a1\u65f6\u7981\u6b62\u4fee\u6539rsync\u7aef\u53e3\n5.\u8c03\u6574\u67e5\u770b\u65e5\u5fd7\u65f6\u533a\u5206\u5b9e\u65f6\u65e5\u5fd7\u548c\u5b9a\u65f6\u65e5\u5fd7","os_limit":0,"beta":0,"update_time":1678237519},{"id":352,"soft_id":41,"m_version":"3","version":"8.1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u5b9a\u65f6\u4efb\u52a1\u8bbe\u7f6e\u540c\u6b65\u5f00\u5173\u65e0\u6548\u7684\u95ee\u9898\n2.\u4fee\u590d\u4fee\u6539\u5168\u5c40\u914d\u7f6e\u65f6\u6982\u7387\u6027\u542f\u52a8\u4e0d\u4e86\u670d\u52a1\u7684\u95ee\u9898\n3.\u4f18\u5316\u4fee\u6539\u5168\u5c40\u914d\u7f6e\u3001\u521b\u5efa\u53d1\u9001\u4efb\u52a1\u7684\u54cd\u5e94\u901f\u5ea6","os_limit":0,"beta":0,"update_time":1677813447}],"endtime":0},{"id":43,"os":"Linux","pid":100000015,"type":8,"sort":3,"price":39.8,"name":"tamper_proof","title":"\u7f51\u7ad9\u9632\u7be1\u6539\u7a0b\u5e8f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u4e8b\u4ef6\u578b\u9632\u7be1\u6539\uff0c\u7528\u4e8e\u4fdd\u62a4\u7ad9\u70b9\u5185\u5bb9\u5b89\u5168\uff0c\u9632\u6b62\u9ed1\u5ba2\u975e\u6cd5\u4fee\u6539\u7f51\u9875\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5165\u4fb5\u884c\u4e3a\uff0c\u63a8\u8350\u4f7f\u7528 \u4f01\u4e1a\u7ea7\u9632\u7be1\u6539 <\/span>\uff0c\u4fdd\u62a4\u6548\u679c\u66f4\u4f73","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"tamper_drive","install_checks":"\/www\/server\/panel\/plugin\/tamper_proof","uninsatll_checks":"\/www\/server\/panel\/plugin\/tamper_proof","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/tamper_proof.html","ex1":"\u4fdd\u62a4\u7ad9\u70b9\u5185\u5bb9\u5b89\u5168|\u963b\u6b62\u9ed1\u5ba2\u975e\u6cd5\u4fee\u6539\u7f51\u9875|\u963b\u6b62\u7f51\u7ad9\u88ab\u6302\u9a6c|\u963b\u6b62\u5176\u4ed6\u5165\u4fb5\u884c\u4e3a","ex2":"6","ex3":"","keyword":"","versions":[{"id":345,"soft_id":43,"m_version":"3","version":"6.3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1676104924},{"id":343,"soft_id":43,"m_version":"3","version":"6.2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u4e86\u5e26\u7a7a\u683c\u76ee\u5f55\u7684\u9632\u7be1\u6539\u529f\u80fd\n2.\u4fee\u590d\u4e86\u76ee\u5f55\u540d\u63a5\u8fd1\u65f6\u65e0\u6cd5\u6b63\u5e38\u9632\u7be1\u6539\u7684\u95ee\u9898\n3.\u4fee\u590d\u4e86\u6392\u9664\u76ee\u5f55\u3001\u6269\u5c55\u540d\u65e0\u6548\u7684\u95ee\u9898\n4.\u65b0\u589e\u6e05\u7406\u5f53\u65e5\u65e5\u5fd7\u65f6\uff0c\u5f53\u65e5\u62e6\u622a\u6b21\u6570\u4e5f\u6e05\u7a7a\n5.\u6a21\u62df\u6d4b\u8bd5\u5f02\u5e38\u65f6\u5c06\u5177\u4f53\u539f\u56e0\u5199\u5165\u9762\u677f\u65e5\u5fd7","os_limit":0,"beta":0,"update_time":1676099697},{"id":340,"soft_id":43,"m_version":"3","version":"6.1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u6dfb\u52a0\u4fdd\u62a4\u540e\u7f00\u5185\u5bb9\u4e3a\u7a7a\u65f6\u62a5\u9519\n2.\u4fee\u590dphp\u7248\u672c\u4e3a\u7a7a\u65f6\u70b9\u51fb\u6a21\u62df\u653b\u51fb\u62a5\u9519\u7684\u95ee\u9898\n3.\u4fee\u590d\u5f00\u542f\u548c\u5173\u95ed\u9632\u7be1\u6539\u76ee\u5f55\u4e0d\u5b58\u5728\u65f6\u65e0\u6cd5\u7ee7\u7eed\u4e0b\u4e00\u4e2a\u7f51\u7ad9\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1675065151}],"endtime":0},{"id":131,"os":"Linux","pid":100000054,"type":12,"sort":4,"price":99,"name":"bt_security","title":"\u5821\u5854\u9632\u5165\u4fb5","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u539f\u9632\u63d0\u6743, \u9632\u5fa1\u5927\u591a\u6570\u7684\u5165\u4fb5\u63d0\u6743\u653b\u51fb\u9020\u6210\u7684\u6302\u9a6c\u548c\u88ab\u6316\u77ff,\u6709\u6548\u62e6\u622awebshell\u6267\u884c\u63d0\u6743,\u5e76\u53ca\u65f6\u544a\u8b66\u901a\u77e5 >\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/bt_security","uninsatll_checks":"\/www\/server\/panel\/plugin\/bt_security","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/bt_security.html","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":271,"soft_id":131,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1662429350},{"id":203,"soft_id":131,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2022-2-17\u66f4\u65b0\n\u4fee\u590d\u5df2\u77e5bug","os_limit":0,"beta":0,"update_time":1645080944},{"id":198,"soft_id":131,"m_version":"1","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2022-1-17\u66f4\u65b0\n1.\u4fee\u590d\u767d\u540d\u5355\u8fdb\u7a0b\u95ee\u9898","os_limit":0,"beta":0,"update_time":1642400309}],"endtime":0},{"id":46,"os":"Linux","pid":100000016,"type":8,"sort":4,"price":39.8,"name":"syssafe","title":"\u5b9d\u5854\u7cfb\u7edf\u52a0\u56fa","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63d0\u4f9b\u7075\u6d3b\u7684\u7cfb\u7edf\u52a0\u56fa\u529f\u80fd\uff0c\u9632\u6b62\u7cfb\u7edf\u88ab\u690d\u5165\u6728\u9a6c\uff0c\u652f\u6301\u670d\u52a1\u5668\u65e5\u5fd7\u5ba1\u8ba1\u529f\u80fd","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/syssafe","uninsatll_checks":"\/www\/server\/panel\/plugin\/syssafe","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/syssafe.html","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":334,"soft_id":46,"m_version":"3","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590dbug","os_limit":0,"beta":0,"update_time":1671102212},{"id":303,"soft_id":46,"m_version":"3","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u589e\u52a0\u5bf9\u8c61\u5b58\u50a8\u8fdb\u7a0b\u5230\u8fdb\u7a0b\u767d\u540d\u5355","os_limit":0,"beta":0,"update_time":1666856151},{"id":299,"soft_id":46,"m_version":"3","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u589e\u52a0\u5fae\u6b65\u3001docker\u3001\u4e91\u76d1\u63a7\u8fdb\u7a0b\u5230\u8fdb\u7a0b\u767d\u540d\u5355","os_limit":0,"beta":0,"update_time":1666322517}],"endtime":0},{"id":99,"os":"Linux","pid":0,"type":7,"sort":4,"price":0,"name":"coll_admin","title":"\u5821\u5854\u4e91\u63a7\u5e73\u53f0","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u53ef\u514d\u8d39\u9ad8\u6548\u7ba1\u7406\u591a\u53f0\u670d\u52a1\u5668\u9762\u677f\uff0c\u5b98\u65b9\u81ea\u7528\u63a8\u8350\uff0c\u4ee5\u53ca\u5176\u4ed6\u591a\u673a\u7ba1\u7406\u529f\u80fd [\u4e86\u89e3\u8be6\u60c5]<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"memcached","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/coll_admin","uninsatll_checks":"\/www\/server\/panel\/plugin\/coll_admin","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":307,"soft_id":99,"m_version":"2","version":"5.9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4f18\u5316\u53cd\u5411\u4ee3\u7406\u88ab\u63a7\u9762\u677f\u7f13\u5b58\u673a\u5236\u3002\n2. \u89e3\u51b3\u88ab\u63a7\u9762\u677f\u5916\u94fe\u5206\u4eab\u94fe\u63a5\u751f\u6210bug\u3002\n3. \u89e3\u51b3\u88ab\u63a7\u9762\u677fphpmyadmin\u9762\u677f\u8bbf\u95ee\u8df3\u8f6c\u95ee\u9898\u3002\n4. \u670d\u52a1\u5668\u5217\u8868\u6570\u636e\u53ca\u65f6\u66f4\u65b0\u3002","os_limit":0,"beta":0,"update_time":1667445983},{"id":70,"soft_id":99,"m_version":"2","version":"5.6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u65b0\u589e\u670d\u52a1\u5668\u5217\u8868\u5206\u7ec4\u663e\u793a\u3002\n2. \u4fee\u590d\u5fae\u88ab\u63a7\u548cSSH\u5173\u8054\u3002\n3. \u8c03\u6574\u670d\u52a1\u5668\u4fe1\u606f\u9762\u677f\u663e\u793a\u6837\u5f0f\uff0c\u7a81\u51fa\u957f\u6587\u5b57\u5907\u6ce8\u670d\u52a1\u5668\u6807\u9898\uff0c\u65b0\u589e\u7f51\u7ad9\u6570\u91cf\u3001\u64cd\u4f5c\u7cfb\u7edf\u3001CPU\u6838\u6570\u3001\u5185\u5b58\u6570\u663e\u793a\u3002","os_limit":0,"beta":0,"update_time":1625556713}],"endtime":0},{"id":159,"os":"Linux","pid":100000059,"type":8,"sort":5,"price":39.8,"name":"mysql_replicate","title":"MySQL\u4e3b\u4ece\u590d\u5236(\u91cd\u6784\u7248)","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u4f7f\u7528GTID\u65b9\u5f0f\u8f7b\u677e\u5b9e\u73b0MySQL\u4e3b\u4ece\u590d\u5236(\u4ec5\u652f\u6301Mysql5.7\/8.0)","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/mysql_replicate","uninsatll_checks":"\/www\/server\/panel\/plugin\/mysql_replicate","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/mysql_replicate.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":313,"soft_id":159,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4f18\u5316\u3011\u4f18\u5316\u5927\u6570\u636e\u5e93\u540c\u6b65\u6d41\u7a0b\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u4ea4\u4e92\u63d0\u793a\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u6dfb\u52a0\u5355\u4e2a\u6570\u636e\u5e93\u65f6\u7684\u68c0\u6d4b\u65b9\u6cd5\n\u3010\u4fee\u590d\u3011\u4fee\u590dmysql8.x\u65e0\u6cd5\u540c\u6b65\u7684\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u4fee\u590d\u7279\u5b9a\u573a\u666f\u4e0b\u7684\u201c\u4fee\u590d\u201d\u529f\u80fd\u62a5\u9519\u95ee\u9898\n\u3010\u589e\u52a0\u3011\u589e\u52a0\u4ece\u5e93\u9762\u677fAPI\u4fee\u6539\u540e\u540c\u6b65\u4efb\u52a1\u5f02\u5e38\u7684\u76f8\u5173\u4fee\u590d\u65b9\u6cd5","os_limit":0,"beta":0,"update_time":1668561643},{"id":209,"soft_id":159,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4f18\u5316\u5168\u9009\u6570\u636e\u5e93\u65f6\u7684\u540c\u6b65\u903b\u8f91","os_limit":0,"beta":0,"update_time":1645500785},{"id":137,"soft_id":159,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u5220\u9664\u4e3b\u4ece\u7684\u540c\u65f6\u4e3b\u5e93\u5220\u9664\u5bf9\u5e94\u4ece\u5e93\u653e\u884c\u7684\u7aef\u53e3\u3002\n2\u3001\u4fee\u590d\u4e86\u5df2\u77e5BUG\u3002","os_limit":0,"beta":0,"update_time":1630047672}],"endtime":0},{"id":105,"os":"Linux","pid":100000035,"type":12,"sort":6,"price":99,"name":"san_security","title":"\u670d\u52a1\u5668\u5b89\u5168\u626b\u63cf","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u626b\u63cf\u670d\u52a1\u5668\u7cfb\u7edf\u7684\u6f0f\u6d1e\uff0c\u5f02\u5e38\u7528\u6237\uff0c\u5df2\u5b89\u88c5\u8f6f\u4ef6\u7684\u5b89\u5168\u95ee\u9898\u5e76\u63d0\u4f9b\u4fee\u590d\u65b9\u6848.","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/san_security","uninsatll_checks":"\/www\/server\/panel\/plugin\/san_security","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":254,"soft_id":105,"m_version":"2","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u7cfb\u7edf\u7528\u6237\u5bc6\u7801\u8fc7\u671f\u98ce\u9669\u68c0\u6d4b\n\u3010\u589e\u52a0\u3011nginx1.21\u6f0f\u6d1e\u7248\u672c\u68c0\u6d4b\n\u3010\u4f18\u5316\u7ad9\u70b9ssl\u68c0\u6d4b\u3011\n","os_limit":0,"beta":0,"update_time":1659320978}],"endtime":0},{"id":39,"os":"Linux","pid":100000007,"type":8,"sort":6,"price":19.8,"name":"task_manager","title":"\u5b9d\u5854\u4efb\u52a1\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u8f7b\u677e\u7ba1\u7406\u8fdb\u7a0b\u3001\u6d41\u91cf\u76d1\u63a7\u3001\u542f\u52a8\u9879\u3001\u7528\u6237\u3001\u670d\u52a1\u3001\u8ba1\u5212\u4efb\u52a1\u3001\u4f1a\u8bdd >\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/task_manager","uninsatll_checks":"\/www\/server\/panel\/plugin\/task_manager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/task_manager.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":297,"soft_id":39,"m_version":"2","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4f18\u5316\u8fdb\u7a0b\u5217\u8868\u9ed8\u8ba4\u6392\u5e8f\u673a\u5236","os_limit":0,"beta":0,"update_time":1666161268},{"id":156,"soft_id":39,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4f18\u5316\u8fdb\u7a0b\u5217\u8868\u8f6e\u8be2\u673a\u5236\n2\u3001\u4fee\u590d\u90e8\u5206\u673a\u5668\u4e0a\u884c\u3001\u4e0b\u884c\u6d41\u91cf\u663e\u793a\u4e0d\u6b63\u786e\u7684\u95ee\u9898\n3\u3001\u4fee\u590d\u670d\u52a1\u6587\u4ef6\u8f6f\u94fe\u5931\u6548\u5bfc\u81f4\u7684\u9519\u8bef","os_limit":0,"beta":0,"update_time":1631669922},{"id":155,"soft_id":39,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0\u8fdb\u7a0b\u6d41\u91cf\u663e\u793a\n2\u3001\u589e\u52a0\u8fdb\u7a0b\u5217\u8868\u81ea\u52a8\u5237\u65b0\u6570\u636e\n3\u3001\u4f18\u5316\u8fdb\u7a0b\u5217\u8868\u6392\u5e8f\u529f\u80fd\n4\u3001\u4f18\u5316\u8fdb\u7a0b\u5217\u8868\u83b7\u53d6\u5f00\u9500\n5\u3001\u5bf9\u5927\u90e8\u5206\u8fdb\u7a0b\u540d\u79f0\u663e\u793a\u4e2d\u6587\u63cf\u8ff0","os_limit":0,"beta":0,"update_time":1631602586}],"endtime":0},{"id":182,"os":"Linux","pid":100000070,"type":12,"sort":6,"price":99,"name":"file_hash_check","title":"\u6587\u4ef6\u76d1\u63a7","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u76d1\u63a7\u6587\u4ef6\u53d8\u5316\u5e76\u8bb0\u5f55\u65e5\u5fd7\uff0c\u542b\u81ea\u52a8\u5907\u4efd\u3001\u81ea\u52a8\u67e5\u6740\u6728\u9a6c\u7b49\u529f\u80fd>>\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/file_hash_check","uninsatll_checks":"\/www\/server\/panel\/plugin\/file_hash_check","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":336,"soft_id":182,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u6392\u9664\u76ee\u5f55\u4e0d\u751f\u6548\u7684\u95ee\u9898\n2\u3001\u544a\u8b66\u901a\u77e5\u589e\u52a0\u5bf9\u5fae\u4fe1\u516c\u4f17\u53f7\u7684\u652f\u6301\n3\u3001\u53bb\u9664md\u683c\u5f0f\u7684\u52a0\u7c97\u6807\u8bb0","os_limit":0,"beta":0,"update_time":1672890343},{"id":245,"soft_id":182,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u5907\u4efd\u548c\u6740\u6bd2\u7edf\u8ba1\u4e0d\u51c6\u786e\u7684\u95ee\u9898\n2\u3001\u4fee\u590d\u79fb\u52a8\u6587\u4ef6\u5931\u8d25\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1658373439},{"id":244,"soft_id":182,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u521d\u59cb\u7248\u672c","os_limit":0,"beta":0,"update_time":1658312590}],"endtime":0},{"id":118,"os":"Linux","pid":100000043,"type":8,"sort":7,"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":"\/www\/server\/panel\/plugin\/btapp","uninsatll_checks":"\/www\/server\/panel\/plugin\/btapp","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/btapp.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":35,"soft_id":118,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u5220\u9664\u548c\u7ed1\u5b9a\u65f6\u4f1a\u5173\u95ed\u7a97\u53e3\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1625477361}],"endtime":0},{"id":183,"os":"Linux","pid":0,"type":7,"sort":101,"price":0,"name":"cosfs","title":"\u817e\u8baf\u4e91COSFS","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8ecosfs,\u5c06\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8\u6876\u6302\u8f7d\u5230\u672c\u5730\uff0c\u50cf\u7ba1\u7406\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e00\u6837\u7ba1\u7406\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8\u6587\u4ef6","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/cosfs","uninsatll_checks":"\/www\/server\/panel\/plugin\/cosfs","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":258,"soft_id":183,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1659506979},{"id":333,"soft_id":183,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u91cd\u590d\u6302\u8f7d\u95ee\u9898","os_limit":0,"beta":0,"update_time":1671072985},{"id":259,"soft_id":183,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1659507000}],"endtime":0},{"id":157,"os":"Linux","pid":100000058,"type":8,"sort":101,"price":29.9,"name":"bt_ssh_auth","title":"\u5821\u5854SSH\u4e8c\u6b21\u8ba4\u8bc1","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u901a\u8fc7SSH\u767b\u5f55\u4e8c\u6b21\u8ba4\u8bc1\u4fdd\u8bc1SSH\u767b\u5f55\u5b89\u5168 >\u4f7f\u7528\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/bt_ssh_auth","uninsatll_checks":"\/www\/server\/panel\/plugin\/bt_ssh_auth","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":143,"soft_id":157,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1630377259},{"id":132,"soft_id":157,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1629183605}],"endtime":0},{"id":173,"os":"Linux","pid":0,"type":7,"sort":101,"price":0,"name":"ip_configuration","title":"IP\u914d\u7f6e\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u7f51\u5361\u7ed1\u5b9aIP\u3001SSH\u6388\u6743IP\u3001FTP\u914d\u7f6eIP\u7b49IP\u4e00\u952e\u914d\u7f6e\u5de5\u5177,\u652f\u6301centos7\u3001debian10\u3001ubuntu18\u3001ubuntu20","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/ip_configuration","uninsatll_checks":"\/www\/server\/panel\/plugin\/ip_configuration","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":298,"soft_id":173,"m_version":"1","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4f18\u5316\u3011\u4f18\u5316IP\u83b7\u53d6","os_limit":0,"beta":0,"update_time":1666322442},{"id":252,"soft_id":173,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u589e\u52a0\u591a\u7f51\u5361\u652f\u6301\n\u517c\u5bb9python3.10.x\u73af\u5883\n\u4f18\u5316ssh\u914d\u7f6e","os_limit":0,"beta":0,"update_time":1658903135}],"endtime":0},{"id":185,"os":"Linux","pid":0,"type":6,"sort":101,"price":0,"name":"oneav","title":"\u5fae\u6b65\u6728\u9a6c\u68c0\u6d4b","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u80fd\u68c0\u6d4b\u5e02\u9762\u4e0a99%\u7684\u5e38\u89c1\u6d41\u884c\u6728\u9a6c\u75c5\u6bd2\u6587\u4ef6\uff0c\u7cbe\u786e\u68c0\u6d4b\u6728\u9a6c\u5a01\u80c1","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/oneav","uninsatll_checks":"\/www\/server\/panel\/plugin\/oneav","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":293,"soft_id":185,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d1\u5e03\u7248\u672c","os_limit":0,"beta":0,"update_time":1665280013}],"endtime":0},{"id":8,"os":"Linux","pid":0,"type":5,"sort":101,"price":0,"name":"nginx","title":"Nginx","title_en":"Nginx","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u8f7b\u91cf\u7ea7\uff0c\u5360\u6709\u5185\u5b58\u5c11\uff0c\u5e76\u53d1\u80fd\u529b\u5f3a","ps_en":"Lightweight, less memory, concurrent ability","version":"\/www\/server\/nginx\/sbin\/nginx -v 2>&1|grep version|awk '{print $3}'|cut -f2 -d'\/'","s_version":"nginx","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"apache,openlitespeed","install_checks":"\/www\/server\/nginx\/sbin\/nginx","uninsatll_checks":"\/www\/server\/nginx","compile_args":1,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":8,"m_version":"1.22","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.20","version":"2","dependnet":"","mem_limit":32,"cpu_limit":0,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.21","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.23","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.19","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.18","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.14","version":"4","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.15","version":"10","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.16","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.17","version":"10","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"-Tengine2.2","version":"4","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.12","version":"2","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.18.gmssl","version":"0","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"openresty","version":"1.19","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.8","version":"1","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":9,"os":"Linux","pid":0,"type":5,"sort":102,"price":0,"name":"apache","title":"Apache","title_en":"Apache","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u4e16\u754c\u6392\u540d\u7b2c\u4e00\uff0c\u5feb\u901f\u3001\u53ef\u9760\u5e76\u4e14\u53ef\u901a\u8fc7\u7b80\u5355\u7684API\u6269\u5145","ps_en":"World No. 1, fast, reliable and scalable through simple APIs","version":"\/www\/server\/apache\/bin\/httpd -v|grep version|awk '{print $3}'|cut -f2 -d'\/'","s_version":"httpd","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"nginx,openlitespeed","install_checks":"\/www\/server\/apache\/bin\/httpd","uninsatll_checks":"\/www\/server\/apache","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":9,"m_version":"2.4","version":"56","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":9,"m_version":"2.2","version":"34","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":188,"os":"Linux","pid":100000076,"type":12,"sort":102,"price":148,"name":"disk_analysis","title":"\u5821\u5854\u786c\u76d8\u5206\u6790\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6025\u901f\u5206\u6790\u78c1\u76d8\/\u786c\u76d8\u5360\u7528\u60c5\u51b5","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/disk_analysis","uninsatll_checks":"\/www\/server\/panel\/plugin\/disk_analysis","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":364,"soft_id":188,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u8fc7\u6ee4proc\u76ee\u5f55","os_limit":0,"beta":0,"update_time":1679368108},{"id":361,"soft_id":188,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u8fc1\u79fb\u626b\u63cf\u7ed3\u679c\u4fdd\u5b58\u8def\u5f84","os_limit":0,"beta":0,"update_time":1679042582},{"id":360,"soft_id":188,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u53d6\u6d88\u78c1\u76d8\u5206\u6790\u5360\u6bd4\u663e\u793a","os_limit":0,"beta":0,"update_time":1679021249}],"endtime":0},{"id":10,"os":"Linux","pid":0,"type":5,"sort":103,"price":0,"name":"mysql","title":"MySQL","title_en":"MySQL","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"MySQL\u662f\u4e00\u79cd\u5173\u7cfb\u6570\u636e\u5e93\u7ba1\u7406\u7cfb\u7edf!(\u652f\u6301alisql\/greatsql\/mariadb)","ps_en":"MySQL is a relational database management system!","version":"\/www\/server\/mysql\/bin\/mysql -V|grep Ver|awk '{print $5}'|cut -f1 -d','","s_version":"mysqld","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/mysql\/bin\/mysql","uninsatll_checks":"\/www\/server\/mysql","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":10,"m_version":"5.5","version":"62","dependnet":"","mem_limit":256,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"5.6","version":"50","dependnet":"","mem_limit":768,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"5.7","version":"41","dependnet":"","mem_limit":1560,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"5.1","version":"73","dependnet":"","mem_limit":128,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"8.0","version":"32","dependnet":"","mem_limit":3700,"cpu_limit":2,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"AliSQL","version":"5.6.32","dependnet":"","mem_limit":768,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"greatsql_5.7","version":"36","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.0","version":"38","dependnet":"","mem_limit":768,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.1","version":"44","dependnet":"","mem_limit":1024,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.2","version":"31","dependnet":"","mem_limit":1024,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.3","version":"22","dependnet":"","mem_limit":1500,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"greatsql_8.0","version":"25","dependnet":"","mem_limit":3700,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.4","version":"12","dependnet":"","mem_limit":2048,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.5","version":"6","dependnet":"","mem_limit":2000,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.6","version":"7","dependnet":"","mem_limit":3700,"cpu_limit":2,"update_msg":"","os_limit":0},{"soft_id":10,"m_version":"mariadb_10.7","version":"3","dependnet":"","mem_limit":3700,"cpu_limit":2,"update_msg":"","os_limit":0}],"endtime":0},{"id":11,"os":"Linux","pid":0,"type":5,"sort":104,"price":0,"name":"php","title":"PHP","title_en":"PHP","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"PHP\u662f\u4e16\u754c\u4e0a\u6700\u597d\u7684\u7f16\u7a0b\u8bed\u8a00","ps_en":"PHP is the best programming language in the world","version":"\/www\/server\/php\/{VERSION}\/bin\/php -v|grep cli|awk '{print $2}'","s_version":"php-fpm","manager_version":"\/www\/server\/php\/{VERSION}\/sbin\/php-fpm","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/php\/{VERSION}\/bin\/php","uninsatll_checks":"\/www\/server\/php\/{VERSION}","compile_args":0,"version_coexist":1,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"{\"sg11\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->sg11\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"fileinfo\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->fileinfo\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"redis\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->redis\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"memcache\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->memcache\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"memcached\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->memcached\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"opcache\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->opcache<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"apcu\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->apcu<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"imagemagick\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->imagemagick<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"swoole\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->swoole<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"mongodb\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->mongodb<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"pdo_pgsql\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->pdo_pgsql<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\"}","versions":[{"soft_id":11,"m_version":"8.1","version":"17","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"8.0","version":"26","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"7.4","version":"33","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"8.2","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"7.3","version":"32","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"7.2","version":"33","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"7.1","version":"33","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"7.0","version":"33","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"5.6","version":"40","dependnet":"","mem_limit":64,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"5.5","version":"38","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"5.4","version":"45","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"5.3","version":"29","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"5.2","version":"17","dependnet":"mysql","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":12,"os":"Linux","pid":0,"type":5,"sort":105,"price":0,"name":"pureftpd","title":"Pure-Ftpd","title_en":"Pure-Ftpd","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"PureFTPd\u662f\u4e00\u6b3e\u4e13\u6ce8\u4e8e\u7a0b\u5e8f\u5065\u58ee\u548c\u8f6f\u4ef6\u5b89\u5168\u7684\u514d\u8d39FTP\u670d\u52a1\u5668\u8f6f\u4ef6","ps_en":"PureFTPd is a free FTP server software focused on program robustness and software security.","version":"cat \/www\/server\/pure-ftpd\/version.pl","s_version":"pure-ftpd","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/pure-ftpd\/bin\/pure-pw","uninsatll_checks":"\/www\/server\/pure-ftpd","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":12,"m_version":"1.0","version":"49","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":156,"os":"Linux","pid":0,"type":7,"sort":105,"price":0,"name":"nodejs","title":"Node.js\u7248\u672c\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5b89\u88c5\u3001\u5378\u8f7d\u3001\u914d\u7f6enode.js\u7248\u672c\uff0c\u4e0ePM2\u7ba1\u7406\u5668\u4e92\u65a5","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/nodejs","uninsatll_checks":"\/www\/server\/panel\/plugin\/nodejs","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":320,"soft_id":156,"m_version":"1","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u90e8\u5206\u673a\u5668\u65e0\u6cd5\u8fde\u63a5node\u6e90\u7684\u95ee\u9898\n2\u3001\u4f18\u5316Node\u7248\u672c\u5217\u8868\uff0c\u4e0d\u663e\u793a\u5f53\u524dglib\u73af\u5883\u4e0d\u652f\u6301\u7684\u7248\u672c\n3\u3001\u4fee\u590dregistry\u6e90\u9996\u6b21\u672a\u8bbe\u7f6e\u7a7a\u767d\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1669431570},{"id":318,"soft_id":156,"m_version":"1","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0npmmirror\u955c\u50cf\u6e90\n2\u3001\u5c06npmmirror\u4f5c\u4e3a\u9ed8\u8ba4\u6e90","os_limit":0,"beta":0,"update_time":1669193639},{"id":234,"soft_id":156,"m_version":"1","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u66f4\u65b0\u6dd8\u5b9d\u6e90","os_limit":0,"beta":0,"update_time":1656472139},{"id":129,"soft_id":156,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0v4.x\/v6.x\u7248\u672cnpm\u5347\u7ea7\u9650\u5236\n2\u3001\u4fee\u590dv4.x-v8.x\u7248\u672c\u547d\u4ee4\u884c\u8bbe\u7f6enpm\u8def\u5f84\u9519\u8bef\u7684\u95ee\u9898\n3\u3001\u589e\u5f3a\u5bf9ARM\u5e73\u53f0\u7684\u517c\u5bb9\u6027","os_limit":0,"beta":1,"update_time":1628064175}],"endtime":0},{"id":13,"os":"Linux","pid":0,"type":5,"sort":106,"price":0,"name":"phpmyadmin","title":"phpMyAdmin","title_en":"phpMyAdmin","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u8457\u540dWeb\u7aefMySQL\u7ba1\u7406\u5de5\u5177","ps_en":"Famous Web-side MySQL Management Tool","version":"cat \/www\/server\/phpmyadmin\/version.pl","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"mysql,nginx|apache|openlitespeed","mutex":"","install_checks":"\/www\/server\/phpmyadmin\/version.pl","uninsatll_checks":"\/www\/server\/phpmyadmin","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":13,"m_version":"5.0","version":"0","dependnet":"php-7.4|php-8.0|php-8.1","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":13,"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":13,"m_version":"4.4","version":"0","dependnet":"php-5.3|php-5.4|php-5.5|php-5.6|php-7.0|php-7.1|php-7.2","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":13,"m_version":"4.0","version":"0","dependnet":"php-5.4|php-5.2|php-5.3","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":13,"m_version":"5.1","version":"0","dependnet":"php-7.1|php-7.2|php-7.3|php-7.4|php-8.0|php-8.1","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":13,"m_version":"5.2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":140,"os":"Linux","pid":0,"type":7,"sort":107,"price":0,"name":"java_manager","title":"Java\u9879\u76ee\u4e00\u952e\u90e8\u7f72","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Java\u9879\u76ee\u4e00\u952e\u90e8\u7f72\uff0c\u5305\u62ectomcat\uff0cspring boot","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/java_manager","uninsatll_checks":"\/www\/server\/panel\/plugin\/java_manager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"{\"jdk\":\"\uff08\u8bbe\u7f6e->\u5bb9\u5668\u7ba1\u7406->\u5b89\u88c5jdk->\u5305\u542b\u9ed8\u8ba4jdk1.7\uff0cjdk1.8 \u6216 \u5230\u7f51\u7ad9->JAVA\u9879\u76ee->jdk\u7ba1\u7406\uff09<\/span>\"}","versions":[{"id":247,"soft_id":140,"m_version":"3","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u517c\u5bb9loongarch64\n2.\u66f4\u65b0tomcat10(\u90e8\u5206\u7528\u6237\u5347\u7ea7\u540e\u9700\u624b\u52a8\u91cd\u542f\u9762\u677f)","os_limit":0,"beta":0,"update_time":1658538915},{"id":21,"soft_id":140,"m_version":"3","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625283967}],"endtime":0},{"id":14,"os":"Linux","pid":0,"type":5,"sort":107,"price":0,"name":"tomcat","title":"Tomcat","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","ps_en":"","version":"\/www\/server\/tomcat\/bin\/version.sh|grep version|awk '{print $4}'|cut -f2 -d'\/'","s_version":"jsvc,java","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/tomcat\/bin\/catalina.sh","uninsatll_checks":"\/www\/server\/tomcat","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":14,"m_version":"7","version":"0.76","dependnet":"","mem_limit":256,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":14,"m_version":"8","version":"5.69","dependnet":"","mem_limit":256,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":14,"m_version":"9","version":"0.0.M18","dependnet":"","mem_limit":512,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":15,"os":"Linux","pid":0,"type":5,"sort":108,"price":0,"name":"pm2","title":"PM2\u7ba1\u7406\u5668","title_en":"PM2 Manager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"node.js\u7ba1\u7406\u5668\uff0c\u5185\u7f6e node.js + npm + nvm + pm2.!","ps_en":"Node.js Manager\uff0cBuilt-in node.js + npm + nvm + pm2.","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/pm2\/pm2_main.py","uninsatll_checks":"\/www\/server\/panel\/plugin\/pm2","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":46,"soft_id":15,"m_version":"5","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625537866}],"endtime":0},{"id":65,"os":"Linux","pid":0,"type":7,"sort":108,"price":0,"name":"tomcat2","title":"Java\u9879\u76ee\u7ba1\u7406\u5668","title_en":"Java Project Manager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5f00\u53d1\u548c\u8c03\u8bd5JSP\u7a0b\u5e8f\u7684\u9996\u9009","ps_en":"The first choice for developing and debugging JSP programs","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/tomcat2","uninsatll_checks":"\/www\/server\/panel\/plugin\/tomcat2","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":22,"soft_id":65,"m_version":"2","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625284075}],"endtime":0},{"id":16,"os":"Linux","pid":0,"type":5,"sort":109,"price":0,"name":"docker","title":"Docker\u7ba1\u7406\u5668","title_en":"Docker Manager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"Docker \u662f\u4e00\u4e2a\u5f00\u6e90\u7684\u5e94\u7528\u5bb9\u5668\u5f15\u64ce","ps_en":"Docker Is an open source application container engine","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/docker","uninsatll_checks":"\/www\/server\/panel\/plugin\/docker","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":339,"soft_id":16,"m_version":"3","version":"9.2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u5bb9\u5668\u591a\u865a\u62df\u7f51\u7edc\u60c5\u51b5\u4e0b\u65e0\u6cd5\u663e\u793aip\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1674893463},{"id":228,"soft_id":16,"m_version":"3","version":"9.1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u4e86\u5df2\u77e5\u7684BUG","os_limit":0,"beta":0,"update_time":1653621374},{"id":190,"soft_id":16,"m_version":"3","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1641885133}],"endtime":0},{"id":17,"os":"Linux","pid":0,"type":5,"sort":110,"price":0,"name":"mongodb","title":"MongoDB","title_en":"MongoDB","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"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":"Database Based on Distributed File Storage","version":"0","s_version":"mongod","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/mongodb","uninsatll_checks":"\/www\/server\/panel\/plugin\/mongodb","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":17,"m_version":"4.4","version":"6","dependnet":"","mem_limit":384,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":110,"os":"Linux","pid":0,"type":7,"sort":111,"price":0,"name":"static_cdn","title":"\u5821\u5854\u9762\u677f\u9759\u6001\u6587\u4ef6\u52a0\u901f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5bf9\u9762\u677f\u9759\u6001\u6587\u4ef6\u8fdb\u884cCDN\u52a0\u901f\uff0c\u52a0\u5feb\u9762\u677f\u52a0\u8f7d\u901f\u5ea6\uff0c\u63d0\u5347\u5bf9\u5c0f\u5e26\u5bbd\u548c\u6d77\u5916\u670d\u52a1\u5668\u7684\u9762\u677f\u4f7f\u7528\u4f53\u9a8c!","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/static_cdn","uninsatll_checks":"\/www\/server\/panel\/plugin\/static_cdn","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":47,"soft_id":110,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625538175}],"endtime":0},{"id":18,"os":"Linux","pid":0,"type":5,"sort":111,"price":0,"name":"memcached","title":"Memcached","title_en":"Memcached","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"Memcached \u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684\u5206\u5e03\u5f0f\u5185\u5b58\u5bf9\u8c61\u7f13\u5b58\u7cfb\u7edf","ps_en":"Memcached is a high performance distributed memory object caching system","version":"\/usr\/local\/memcached\/bin\/memcached -V|awk '{print $2}'","s_version":"memcached","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/usr\/local\/memcached\/bin\/memcached","uninsatll_checks":"\/usr\/local\/memcached","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":18,"m_version":"1.6","version":"17","dependnet":"","mem_limit":256,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":19,"os":"Linux","pid":0,"type":5,"sort":112,"price":0,"name":"redis","title":"Redis","title_en":"Redis","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"Redis\u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684key-value\u6570\u636e\u5e93(PHP\u8fde\u63a5redis\uff0c\u9700PHP\u8bbe\u7f6e\u4e2d\u5b89\u88c5redis\u6269\u5c55) \u90e8\u5206Centos7\u7cfb\u7edf\u4ec5\u652f\u6301\u5b89\u88c55.x\u7248\u672c","ps_en":"Redis is a high performance key-value database","version":"\/www\/server\/redis\/src\/redis-server -v|awk '{print $3}'|cut -f2 -d'='","s_version":"redis-server","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/redis\/runtest","uninsatll_checks":"\/www\/server\/redis","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"{\"redis\":\"\uff08\u7ba1\u7406\u5de5\u5177\u8bf7\u524d\u5f80\uff1a\u5de6\u4fa7\u83dc\u5355->\u6570\u636e\u5e93->redis\u6a21\u578b\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\"}","versions":[{"soft_id":19,"m_version":"7.0","version":"5","dependnet":"","mem_limit":256,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":19,"m_version":"6.2","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":144,"os":"Linux","pid":0,"type":7,"sort":112,"price":0,"name":"btappmanager","title":"\u5821\u5854\u5e94\u7528\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u56e0\u8bbe\u8ba1\u7f3a\u9677\u5c06\u4e8e2023\u5e743\u670822\u65e5\u4e0b\u67b6\uff0c\u8bf7\u4f7f\u7528\u3010\u8fdb\u7a0b\u5b88\u62a4\u7ba1\u7406\u5668\u3011<\/span>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/btappmanager","uninsatll_checks":"\/www\/server\/panel\/plugin\/btappmanager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":292,"soft_id":144,"m_version":"1","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590dLaravel\u9879\u76ee\u542f\u52a8\u95ee\u9898\u3002\n2. \u4fee\u590d\u91cd\u542f\u542f\u52a8\u95ee\u9898\u3002","os_limit":0,"beta":0,"update_time":1665218341},{"id":286,"soft_id":144,"m_version":"1","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4fee\u590d\u5e94\u7528\u56e0\u5f02\u5e38\u65e0\u6cd5\u81ea\u6062\u590d\u542f\u52a8\uff0c\u7cfb\u7edf\u91cd\u542f\u65f6\u65e0\u6cd5\u81ea\u542f\u52a8\u95ee\u9898\u3002","os_limit":0,"beta":0,"update_time":1664242719},{"id":48,"soft_id":144,"m_version":"1","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4fee\u590d\u6dfb\u52a0\u5e94\u7528\u73af\u5883\u5217\u8868\u663e\u793a\u4e0d\u5168\u95ee\u9898\u3002","os_limit":0,"beta":0,"update_time":1625538407}],"endtime":0},{"id":136,"os":"Linux","pid":0,"type":5,"sort":113,"price":0,"name":"openlitespeed","title":"OpenLiteSpeed","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"OpenLiteSpeed\u662fLiteSpeed Web Server Enterprise\u7684\u5f00\u6e90\u7248\u672c\u3002","ps_en":"","version":"cat \/usr\/local\/lsws\/VERSION","s_version":"openlitespeed","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"nginx,apache","install_checks":"\/usr\/local\/lsws\/bin\/lswsctrl","uninsatll_checks":"\/usr\/local\/lsws\/bin\/lswsctrl","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":136,"m_version":"1.7","version":"16","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":20,"os":"Linux","pid":0,"type":5,"sort":113,"price":0,"name":"gitlab","title":"GitLab\u4e2d\u6587\u793e\u533a\u7248","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5f53\u524d\u4ec5\u652f\u6301Centos6\/7 64\u4f4d\u7cfb\u7edf\uff0c\u5185\u5b58\u5c0f\u4e8e2GB\u7684\u673a\u5668\u8bf7\u52ff\u5b89\u88c5!","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/gitlab","uninsatll_checks":"\/www\/server\/panel\/plugin\/gitlab","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":20,"m_version":"8.8","version":"5","dependnet":"","mem_limit":1560,"cpu_limit":1,"update_msg":"","os_limit":1}],"endtime":0},{"id":108,"os":"Linux","pid":0,"type":5,"sort":113,"price":0,"name":"new_gitlab","title":"GitLab\u6700\u65b0\u793e\u533a\u7248","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u652f\u6301Centos6-8\/ubuntu TLS\/debian 64\u4f4d\u7cfb\u7edf,\u5185\u5b58\u5c0f\u4e8e4GB\u7684\u673a\u5668\u8bf7\u52ff\u5b89\u88c5!","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/new_gitlab","uninsatll_checks":"\/www\/server\/panel\/plugin\/new_gitlab","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"soft_id":108,"m_version":"12.8","version":"1","dependnet":"","mem_limit":3560,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":85,"os":"Linux","pid":0,"type":7,"sort":114,"price":0,"name":"dns_manager","title":"DNS\u7ba1\u7406\u5668","title_en":"Dns Manager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u7ba1\u7406\u591a\u4e2a\u57df\u540d\u89e3\u6790\uff0c\u6682\u65f6\u53ea\u652f\u6301\u6b63\u5411\u89e3\u6790\u548clinux centos7.x\u7248\u672c\u7cfb\u7edf","ps_en":"Temporarily only supports centos7 and above","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/dns_manager","uninsatll_checks":"\/www\/server\/panel\/plugin\/dns_manager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":72,"soft_id":85,"m_version":"3","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625560650}],"endtime":0},{"id":82,"os":"Linux","pid":0,"type":7,"sort":114,"price":0,"name":"mail_sys","title":"\u5b9d\u5854\u90ae\u5c40\u7ba1\u7406\u5668","title_en":"Mail Server","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u591a\u57df\uff0c\u591a\u7528\u6237\u90ae\u5c40\uff0c\u652f\u6301SMTP\/IMAP\/POP3\/HTTP\u63a5\u53e3\uff0c\u9700\u898125\u7aef\u53e3 [\u4f7f\u7528\u5e2e\u52a9]<\/a>","ps_en":"Build Mail Server for yourself, Supports centos7+ and ubuntu 16+","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/mail_sys","uninsatll_checks":"\/www\/server\/panel\/plugin\/mail_sys","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":348,"soft_id":82,"m_version":"4","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u4fee\u590d\u65e0\u6cd5\u767b\u5f55\u65e0\u6cd5\u53d1\u9001\u90ae\u4ef6\u95ee\u9898","os_limit":0,"beta":0,"update_time":1677289353},{"id":308,"soft_id":82,"m_version":"4","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u53cd\u5783\u573e(rspamd)\u7ba1\u7406\u9875\u9762\u62a5\u9519\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u4e3b\u673a\u540d\u4e0d\u53ef\u4fee\u6539\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u5907\u4efd\u6587\u4ef6\u4e0a\u4f20\u95ee\u9898","os_limit":0,"beta":0,"update_time":1668134884},{"id":235,"soft_id":82,"m_version":"4","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4f18\u5316\u672c\u5730IP\u83b7\u53d6\u65b9\u6cd5\n2. \u4f18\u5316\u524d\u7aef\u5c55\u793a","os_limit":0,"beta":0,"update_time":1656488666}],"endtime":0},{"id":101,"os":"Linux","pid":0,"type":6,"sort":114,"price":0,"name":"fail2ban","title":"Fail2ban\u9632\u7206\u7834","title_en":"Fail2ban Manager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u9632\u6b62\u6076\u610f\u4e3b\u673a\u7206\u7834\u670d\u52a1\u3001\u7ad9\u70b9\uff0c\u7981\u6b62\u5bfc\u81f4\u591a\u4e2a\u8eab\u4efd\u9a8c\u8bc1\u9519\u8bef\u7684\u4e3b\u673a","ps_en":"ban hosts that cause multiple authentication errors","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/fail2ban","uninsatll_checks":"\/www\/server\/panel\/plugin\/fail2ban","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":68,"soft_id":101,"m_version":"1","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625556029}],"endtime":0},{"id":69,"os":"Linux","pid":0,"type":7,"sort":115,"price":0,"name":"pythonmamager","title":"Python\u9879\u76ee\u7ba1\u7406\u5668","title_en":"Python Mamager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5feb\u901f\u90e8\u7f72Python\u9879\u76ee\uff0c\u5f53\u524d\u4ec5\u652f\u6301Centos7.x\uff0c\u53ef\u90e8\u7f72\u6846\u67b6\u6709flask,django,sanic >\u6559\u7a0b<\/a>","ps_en":"Manage multi-version Python and projects","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/pythonmamager","uninsatll_checks":"\/www\/server\/panel\/plugin\/pythonmamager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":325,"soft_id":69,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u4fee\u590d\u914d\u7f6e\u6587\u4ef6\u65e0\u6cd5\u4fdd\u5b58\u7684\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u4fee\u590d\u9879\u76ee\u8fd0\u884c\u4e00\u6bb5\u65f6\u95f4\u540e\u65e0\u6cd5\u5f00\u542f\u548c\u6682\u505c\u7684\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u4fee\u590d\u7279\u5b9a\u573a\u666f\u83b7\u53d6\u9879\u76ee\u72b6\u6001\u5f02\u5e38\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u4fee\u590d\u7279\u5b9a\u573a\u666f\u9519\u4e71\u5173\u95ed\u9879\u76ee\u95ee\u9898\n\u3010\u8c03\u6574\u3011\u8c03\u6574\u5f53\u9879\u76ee\u8fd0\u884c\u65f6\u5220\u9664\u9879\u76ee\u53ea\u80fd\u624b\u52a8\u505c\u6b62\u9879\u76ee\u540e\u624d\u80fd\u5220\u9664\u4ea4\u4e92\u903b\u8f91\u95ee\u9898\n\u3010\u8c03\u6574\u3011\u8c03\u6574python\u3001gunicorn\u3001uwsgi\u542f\u52a8\u6784\u5efa\u65b9\u6cd5\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u6dfb\u52a0\u9879\u76ee\u4ea4\u4e92\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u5f00\u542f\u3001\u6682\u505c\u3001\u5220\u9664\u9879\u76ee\u548c\u5f00\u673a\u542f\u52a8\u4ea4\u4e92\u903b\u8f91\u4ee5\u53ca\u63d0\u793a\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u6a21\u5757\u5b89\u88c5\n\u3010\u589e\u52a0\u3011\u589e\u52a0\u65e5\u5fd7\u5206\u5272\n\u3010\u589e\u52a0\u3011\u589e\u52a0\u81ea\u5b9a\u4e49\u65e5\u5fd7\u8def\u5f84\n\u3010\u589e\u52a0\u3011\u589e\u52a0\u5b88\u62a4\u8fdb\u7a0b\n","os_limit":0,"beta":0,"update_time":1669887903},{"id":176,"soft_id":69,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1635322268},{"id":45,"soft_id":69,"m_version":"1","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625537129}],"endtime":0},{"id":147,"os":"Linux","pid":100000056,"type":12,"sort":115,"price":99,"name":"node_admin","title":"\u8282\u70b9\u540c\u6b65\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63d0\u4f9b\u540c\u6b65\u7f51\u7ad9\u914d\u7f6e\uff0cSSL\u8bc1\u4e66\uff0c\u7f51\u7ad9\u6587\u4ef6\uff0cRewrite\u7b49\u529f\u80fd>>\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/node_admin","uninsatll_checks":"\/www\/server\/panel\/plugin\/node_admin","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":351,"soft_id":147,"m_version":"1","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u65b0\u589e\u6279\u91cf\u7ba1\u7406\u529f\u80fd","os_limit":0,"beta":0,"update_time":1677637699},{"id":51,"soft_id":147,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625542445}],"endtime":0},{"id":83,"os":"Linux","pid":0,"type":7,"sort":115,"price":0,"name":"psync_api","title":"\u5b9d\u5854\u4e00\u952e\u8fc1\u79fbAPI\u7248\u672c","title_en":"One-click migration beta","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5feb\u901f\u8fc1\u79fb\u9762\u677f\u6570\u636e\uff0c\u6b64\u7248\u672c\u4ec5\u5728\u8fc1\u51fa\u673a\u5668\uff08\u53d1\u9001\u6570\u636e\u7aef\uff09\u5b89\u88c5\u5373\u53ef>>\u6559\u7a0b<\/a>","ps_en":"Quickly migrate panel data!","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/psync_api","uninsatll_checks":"\/www\/server\/panel\/plugin\/psync_api","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":357,"soft_id":83,"m_version":"3","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590dapi\u4e00\u952e\u8fc1\u79fb\u6709\u53cd\u5411\u4ee3\u7406\u65f6\u8fc1\u79fb\u5931\u8d25\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1678435111},{"id":316,"soft_id":83,"m_version":"3","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1669111701},{"id":263,"soft_id":83,"m_version":"3","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u5bf9PHP7.4\u53ca\u4ee5\u4e0a\u7248\u672c\u7684\u517c\u5bb9\n2\u3001\u4fee\u590dnginx\/apache\/ols\u73af\u5883\u8bc6\u522b\u9519\u8bef\u95ee\u9898\n3\u3001\u4fee\u590d\u51e0\u5904\u9519\u8bef","os_limit":0,"beta":0,"update_time":1660276609}],"endtime":0},{"id":75,"os":"Linux","pid":0,"type":7,"sort":116,"price":0,"name":"pgsql_manager","title":"PostgreSQL\u7ba1\u7406\u5668","title_en":"PostgreSQL Manager","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u7528\u4e8e\u5b89\u88c5\u5e76\u7ba1\u7406 PostgreSQL\u6570\u636e\u5e93","ps_en":"Used to install and manage PostgreSQL databases","version":"0","s_version":"postgres","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/pgsql_manager","uninsatll_checks":"\/www\/server\/panel\/plugin\/pgsql_manager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":248,"soft_id":75,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u83b7\u53d6\u3001\u91cd\u7f6e\u7ba1\u7406\u5458\u5bc6\u7801\u65b9\u6cd5\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u6392\u7248\u3001\u754c\u9762","os_limit":0,"beta":0,"update_time":1658744914},{"id":212,"soft_id":75,"m_version":"1","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"*\u4fee\u590d\u4e86\u505c\u6b62\u670d\u52a1\u5931\u8d25\u8bb0\u5f55\u4e0d\u5230\u5931\u8d25\u539f\u56e0\u7684bug\n*\u65b0\u589e\u9f99\u82af\u67b6\u6784\u517c\u5bb9\uff0810+\u7248\u672c\uff09\n*\u4fee\u590d\u4e0a\u4f20\u5bfc\u5165\u6587\u4ef6\u62a5\u9519\u95ee\u9898","os_limit":0,"beta":0,"update_time":1646120470},{"id":210,"soft_id":75,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u6dfb\u52a0PostgreSql 14\n2. \u4f18\u5316\u5b89\u88c5\u811a\u672c","os_limit":0,"beta":0,"update_time":1645518132}],"endtime":0},{"id":23,"os":"Linux","pid":0,"type":7,"sort":117,"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":"\/www\/server\/panel\/plugin\/upyun","uninsatll_checks":"\/www\/server\/panel\/plugin\/upyun","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":285,"soft_id":23,"m_version":"4","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u53bb\u9664\u3011\u53bb\u9664\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1664241387},{"id":261,"soft_id":23,"m_version":"4","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u6587\u4ef6\u7ba1\u7406\u4e0a\u4f20\u5230\u53c8\u62cd\u4e91\u5b58\u50a8\u63a5\u53e3","os_limit":0,"beta":0,"update_time":1659923796},{"id":41,"soft_id":23,"m_version":"4","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625535258}],"endtime":0},{"id":24,"os":"Linux","pid":0,"type":7,"sort":118,"price":0,"name":"ftp","title":"FTP\u5b58\u50a8\u7a7a\u95f4","title_en":"FTP Storage","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230FTP\u5b58\u50a8\u7a7a\u95f4","ps_en":"Package the website or database back to the FTP storage space.","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/ftp","uninsatll_checks":"\/www\/server\/panel\/plugin\/ftp","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":284,"soft_id":24,"m_version":"5","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u53bb\u9664\u3011\u53bb\u9664\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1664241313},{"id":277,"soft_id":24,"m_version":"5","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u4f7f\u7528\u57df\u540d\u8fde\u63a5","os_limit":0,"beta":0,"update_time":1663645342},{"id":39,"soft_id":24,"m_version":"5","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625535117}],"endtime":0},{"id":25,"os":"Linux","pid":0,"type":7,"sort":119,"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":"\/www\/server\/panel\/plugin\/alioss","uninsatll_checks":"\/www\/server\/panel\/plugin\/alioss","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":279,"soft_id":25,"m_version":"6","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1663906018},{"id":38,"soft_id":25,"m_version":"6","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u6587\u4ef6\u7ba1\u7406\u4e0a\u4f20\u5230\u963f\u91cc\u4e91\u5b58\u50a8\u63a5\u53e3","os_limit":0,"beta":0,"update_time":1625534537}],"endtime":0},{"id":154,"os":"Linux","pid":0,"type":7,"sort":120,"price":0,"name":"txcdn","title":"\u817e\u8baf\u4e91CDN","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->\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/txcdn","uninsatll_checks":"\/www\/server\/panel\/plugin\/txcdn","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":59,"soft_id":154,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625553722}],"endtime":0},{"id":151,"os":"Linux","pid":0,"type":7,"sort":120,"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\u4e91\u5c06\u4e8e2023-01-01\u505c\u7528\u8001\u63a5\u53e3\uff0c\u8bf7\u5c3d\u5feb\u5347\u7ea7\u63d2\u4ef6\u52303.0+\u3002<\/span>\u817e\u8baf\u4e91DNS\u89e3\u6790\u662f\u56fd\u5185\u6700\u5927\u7684\u514d\u8d39DNS\u89e3\u6790\u4ea7\u54c1\u63d0\u4f9b\u5546->\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/dnspod","uninsatll_checks":"\/www\/server\/panel\/plugin\/dnspod","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":323,"soft_id":151,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u517c\u5bb9dnspod3.0\u7248\u672c","os_limit":0,"beta":0,"update_time":1669794543},{"id":58,"soft_id":151,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625553268}],"endtime":0},{"id":115,"os":"Linux","pid":100000041,"type":12,"sort":120,"price":99,"name":"oos","title":"\u5821\u5854\u8fd0\u7ef4\u5e73\u53f0","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63d0\u4f9b\u8fd0\u7ef4\u4efb\u52a1\u7f16\u6392\u3001\u811a\u672c\u5e93\u3001\u591a\u53f0\u670d\u52a1\u5668\u6279\u91cf\u8fd0\u7ef4\u3001\u547d\u4ee4\u7fa4\u53d1\u7b49\uff0c\u9002\u7528\u4e8e\u6709\u591a\u53f0\u670d\u52a1\u5668\u7684\u7528\u6237","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/oos","uninsatll_checks":"\/www\/server\/panel\/plugin\/oos","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/oos.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":55,"soft_id":115,"m_version":"1","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625552253}],"endtime":0},{"id":26,"os":"Linux","pid":0,"type":7,"sort":120,"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":"\/www\/server\/panel\/plugin\/qiniu","uninsatll_checks":"\/www\/server\/panel\/plugin\/qiniu","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":281,"soft_id":26,"m_version":"5","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1663906230},{"id":40,"soft_id":26,"m_version":"5","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u66f4\u65b0\u5206\u7247\u4e0a\u4f20\u65b9\u5f0f\u3002","os_limit":0,"beta":0,"update_time":1625535194}],"endtime":0},{"id":97,"os":"Linux","pid":0,"type":7,"sort":120,"price":0,"name":"gdrive","title":"\u8c37\u6b4c\u4e91\u7f51\u76d8","title_en":"Google Drive","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6216\u6307\u5b9a\u76ee\u5f55\u6570\u636e\u6253\u5305\u5907\u4efd\u5230\u8c37\u6b4c\u4e91\u7f51\u76d8","ps_en":"Help you back up your site data to Google Drive","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/gdrive","uninsatll_checks":"\/www\/server\/panel\/plugin\/gdrive","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":291,"soft_id":97,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u8c37\u6b4c\u4e91\u7f51\u76d8 \uff1a\n\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5bfc\u51fa\u5bc6\u94a5\u529f\u80fd","os_limit":0,"beta":0,"update_time":1664502021},{"id":217,"soft_id":97,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u91cd\u6784\u7248\u672c\n1 \u89e3\u51b3\u8c37\u6b4c\u8ba4\u8bc1\u66f4\u6539\u540e\u65e0\u6cd5\u4f7f\u7528\u7684\u95ee\u9898\n2 \u5904\u7406\u4e86\u8ba1\u5212\u4efb\u52a1\u52fe\u9009\u540c\u65f6\u4fdd\u7559\u672c\u5730\u5907\u4efd\u4e0d\u751f\u6548\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1648523383}],"endtime":0},{"id":90,"os":"Linux","pid":0,"type":7,"sort":120,"price":0,"name":"gcloud_storage","title":"\u8c37\u6b4c\u4e91\u5b58\u50a8","title_en":"Google Cloud Storage","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5c06\u7f51\u7ad9\u6216\u6570\u636e\u5e93\u6253\u5305\u5907\u4efd\u5230Google Cloud Storage","ps_en":"Back up your website or database to a package Google Cloud Storage","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/gcloud_storage","uninsatll_checks":"\/www\/server\/panel\/plugin\/gcloud_storage","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":290,"soft_id":90,"m_version":"1","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u4ea4\u4e92","os_limit":0,"beta":0,"update_time":1664501961},{"id":53,"soft_id":90,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625543829}],"endtime":0},{"id":128,"os":"Linux","pid":0,"type":7,"sort":120,"price":0,"name":"aws_s3","title":"\u4e9a\u9a6c\u900aS3\u4e91\u5b58\u50a8","title_en":"AWS S3","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u8ba9\u4f60\u7684\u6570\u636e\u5907\u4efd\u5230\u4e9a\u9a6c\u900a\u5bf9\u8c61\u5b58\u50a8","ps_en":"Package and backup website or database to AWS S3","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/aws_s3","uninsatll_checks":"\/www\/server\/panel\/plugin\/aws_s3","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":304,"soft_id":128,"m_version":"1","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u4fee\u590d\u8ba1\u5212\u4efb\u52a1\u65e0\u6cd5\u5907\u4efd\u95ee\u9898","os_limit":0,"beta":0,"update_time":1666856207},{"id":288,"soft_id":128,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1664269651},{"id":56,"soft_id":128,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u540c\u65f6\u52fe\u9009\u672c\u5730\u5907\u4efd\u4e0d\u751f\u6548\u95ee\u9898","os_limit":0,"beta":0,"update_time":1625552732}],"endtime":0},{"id":127,"os":"Linux","pid":0,"type":6,"sort":121,"price":0,"name":"firewall","title":"\u7cfb\u7edf\u9632\u706b\u5899","title_en":"SYS Firewall","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u63d0\u4f9b\u7cfb\u7edf\u9632\u706b\u5899(iptables\/firewall\/ufw)\u7684\u53ef\u89c6\u5316\u7ba1\u7406\u529f\u80fd","ps_en":"Provide GUI management function of system firewall (iptables \/ firewall \/ ufw)","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/firewall","uninsatll_checks":"\/www\/server\/panel\/plugin\/firewall","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":301,"soft_id":127,"m_version":"3","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u89c4\u5219\u5bfc\u51fa\u4e0b\u8f7d\u62a5\u9519\u95ee\u9898","os_limit":0,"beta":0,"update_time":1666597896},{"id":168,"soft_id":127,"m_version":"3","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"Debian\/Ubuntu\u7684\u4f18\u5316\u7aef\u53e3\u8f6c\u53d1","os_limit":0,"beta":0,"update_time":1634714268},{"id":44,"soft_id":127,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625535921}],"endtime":0},{"id":28,"os":"Linux","pid":0,"type":7,"sort":122,"price":0,"name":"webhook","title":"\u5b9d\u5854WebHook","title_en":"WebHook","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"WebHook\uff0c\u53ef\u8bbe\u7f6e\u56de\u8c03\u811a\u672c\uff0c\u901a\u5e38\u7528\u4e8e\u7b2c\u4e09\u65b9\u56de\u8c03\u901a\u77e5!","ps_en":"WebHook, which can set callback scripts, is usually used for third-party callback notifications!","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/webhook","uninsatll_checks":"\/www\/server\/panel\/plugin\/webhook","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":266,"soft_id":28,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u56de\u8c03\u811a\u672c\u65e0\u6cd5\u7f16\u8f91\u7684\u95ee\u9898\n2\u3001\u4f18\u5316\u6267\u884c\u65e5\u5fd7\u663e\u793a\u6837\u5f0f\n3\u3001\u4fee\u590d\u66f4\u65b0\u65f6\u4f1a\u8986\u76d6\u914d\u7f6e\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1660725183},{"id":224,"soft_id":28,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1651028305},{"id":61,"soft_id":28,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625554279}],"endtime":0},{"id":135,"os":"Linux","pid":0,"type":7,"sort":122,"price":0,"name":"boot","title":"\u7cfb\u7edf\u542f\u52a8\u9879","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63d0\u4f9b\u7cfb\u7edf\u542f\u52a8\u9879\u7684\u53ef\u89c6\u5316\u7ba1\u7406\u529f\u80fd","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/boot","uninsatll_checks":"\/www\/server\/panel\/plugin\/boot","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":178,"soft_id":135,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1636447321},{"id":62,"soft_id":135,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625554402}],"endtime":0},{"id":32,"os":"Linux","pid":0,"type":7,"sort":126,"price":0,"name":"linuxsys","title":"Linux\u5de5\u5177\u7bb1","title_en":"Linux Tools","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"Linux\u7cfb\u7edf\u5de5\u5177\uff0c\u914d\u7f6eDNS\u3001Swap\u3001\u65f6\u533a\u3001\u5185\u5b58\u76d8!","ps_en":"Linux system tools, configuration DNS, Swap, time zone, IP configuration, memory disk!","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/linuxsys","uninsatll_checks":"\/www\/server\/panel\/plugin\/linuxsys","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":350,"soft_id":32,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u65f6\u533a\u8bbe\u7f6e\u65f6\u95f4\u4e0d\u51c6\u786e\u7684\u95ee\u9898\n2.\u4fee\u590d\u8bbe\u7f6e\u5176\u4ed6\u65f6\u533a\u540e\u518d\u6253\u5f00linux\u5de5\u5177\u7bb1\u9ed8\u8ba4\u4e9a\u6d32\u5730\u533a\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1677575569},{"id":272,"soft_id":32,"m_version":"1","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u6dfb\u52a0\u65f6\u95f4\u540c\u6b65\u529f\u80fd","os_limit":0,"beta":0,"update_time":1663125938},{"id":264,"soft_id":32,"m_version":"1","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u83dc\u5355\u65e0\u54cd\u5e94\u95ee\u9898","os_limit":0,"beta":0,"update_time":1660618179}],"endtime":0},{"id":33,"os":"Linux","pid":0,"type":7,"sort":127,"price":0,"name":"phpguard","title":"PHP\u5b88\u62a4","title_en":" PHP Guardian","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u76d1\u63a7PHP-FPM\u8fd0\u884c\u72b6\u6001\uff0c\u9632\u6b62\u5927\u6279\u91cf\u51fa\u73b0502\u9519\u8bef!","ps_en":"Monitor the running status of PHP-FPM to prevent a large number of 502 errors!","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/phpguard","uninsatll_checks":"\/www\/server\/panel\/plugin\/phpguard","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":79,"soft_id":33,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u521d\u59cb\u7248\u672c","os_limit":0,"beta":0,"update_time":1626169668}],"endtime":0},{"id":42,"os":"Linux","pid":0,"type":7,"sort":127,"price":0,"name":"score","title":"\u5b9d\u5854\u8dd1\u5206","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6d4b\u8bd5\u670d\u52a1\u5668\u57fa\u7840\u6027\u80fd","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/score","uninsatll_checks":"\/www\/server\/panel\/plugin\/score","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":63,"soft_id":42,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625554634}],"endtime":0},{"id":167,"os":"Linux","pid":0,"type":6,"sort":128,"price":0,"name":"webshell_check","title":"\u6728\u9a6c\u67e5\u6740\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5b9d\u5854\u96c6\u6210\u957f\u4ead\u7267\u4e91\u7684\u6728\u9a6c\u67e5\u6740\u80fd\u529b\u3002\u6709\u6548\u7684\u67e5\u6740webshell \u3002\u6740\u6bd2\u5fc5\u5907\u3002\u626b\u63cf\u6728\u9a6c\u7684\u9996\u9009","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/webshell_check","uninsatll_checks":"\/www\/server\/panel\/plugin\/webshell_check","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":241,"soft_id":167,"m_version":"4","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1657708266},{"id":221,"soft_id":167,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2022-4-18\u66f4\u65b0\n1.\u4f18\u5316\u8bef\u62a5\u548c\u4f18\u5316\u767d\u540d\u5355\u903b\u8f91","os_limit":0,"beta":0,"update_time":1650264705},{"id":219,"soft_id":167,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2022-4.11 \u4f18\u5316\u626b\u63cf\u903b\u8f91","os_limit":0,"beta":0,"update_time":1649668170}],"endtime":0},{"id":148,"os":"Linux","pid":100000009,"type":8,"sort":128,"price":39.8,"name":"load_balance","title":"\u5b9d\u5854\u8d1f\u8f7d\u5747\u8861-\u91cd\u6784\u7248","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, \u4f7f\u7528\u4e4b\u524d\u8bf7\u5148\u5b89\u88c5nginx >>\u4f7f\u7528\u5e2e\u52a9<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"nginx","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/load_balance","uninsatll_checks":"\/www\/server\/panel\/plugin\/load_balance","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/load_balance.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":257,"soft_id":148,"m_version":"2","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u56e0\u7f51\u7edc\u95ee\u9898\u5bfc\u81f4\u7684\u62a5\u9519\n2\u3001\u589e\u52a0UDP\u534f\u8bae\u7684\u8d1f\u8f7d\u5747\u8861","os_limit":0,"beta":0,"update_time":1659493677},{"id":140,"soft_id":148,"m_version":"2","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u521b\u5efa\u8d1f\u8f7d\u5747\u8861\u65f6\u672a\u6dfb\u52a0\u8282\u70b9\u76f4\u63a5\u62a5\u9519\u7684\u95ee\u9898\n2\u3001\u4fee\u590d\u521b\u5efa\u8d1f\u8f7d\u5747\u8861\u65f6\u672a\u6dfb\u52a0\u666e\u901a\u8282\u70b9\u4e5f\u80fd\u6210\u529f\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1630373566},{"id":15,"soft_id":148,"m_version":"2","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0\u8d1f\u8f7d\u72b6\u6001\u76d1\u63a7\n2\u3001\u589e\u52a0TCP\u8d1f\u8f7d\u5747\u8861\u529f\u80fd\n3\u3001\u4fee\u590d\u5df2\u77e5Bug","os_limit":0,"beta":0,"update_time":1625275779}],"endtime":0},{"id":91,"os":"Linux","pid":0,"type":7,"sort":128,"price":0,"name":"supervisor","title":"\u8fdb\u7a0b\u5b88\u62a4\u7ba1\u7406\u5668","title_en":"Supervisor","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u57fa\u4e8eSupervisor\u5f00\u53d1\u7684\u8fdb\u7a0b\u5b88\u62a4\u5de5\u5177\uff0c\u53ef\u4ee5\u8ba9\u8fdb\u7a0b\u5f00\u673a\u542f\u52a8\uff0c\u5f02\u5e38\u5173\u95ed\u81ea\u52a8\u91cd\u542f","ps_en":"A general process management program developed by Python","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/supervisor","uninsatll_checks":"\/www\/server\/panel\/plugin\/supervisor","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":365,"soft_id":91,"m_version":"3","version":"0.1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u65b0\u589e\u8fdb\u7a0b\u5b88\u62a4\u7ba1\u7406\u5668\u64cd\u4f5c\u5217\u91cd\u542f\u6309\u94ae\n2.\u8c03\u6574\u670d\u52a1\u542f\u52a8\/\u91cd\u542f\u5f02\u5e38\u65f6\u7684\u5f15\u5bfc\n3.\u4f18\u5316supervisord\u7684\u7a33\u5b9a\u6027","os_limit":0,"beta":0,"update_time":1679553982},{"id":359,"soft_id":91,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u72b6\u6001\u4f7f\u7528\u8bf4\u660e\u79fb\u52a8\u5230\u72b6\u6001\u95ee\u53f7\u540e\u9762\n2.\u8fdb\u7a0b\u7ba1\u7406\u65b0\u589e\u8bf4\u660e\uff0c\u4f4d\u7f6e\u5728\u8fdb\u7a0b\u7ba1\u7406\u95ee\u53f7\u540e\u9762\n3.\u79fb\u9664\u5b50\u914d\u7f6e\u6587\u4ef6\u83dc\u5355\uff0c\u653e\u5230\u6bcf\u4e2a\u4efb\u52a1\u540e\u9762\n4.\u65b0\u589e\u670d\u52a1\u7ba1\u7406\u83dc\u5355\uff1asupervisord\u670d\u52a1\u505c\u6b62\u3001\u542f\u52a8\u3001\u91cd\u542f\n5.\u65b0\u589e\u65e5\u5fd7\u83dc\u5355\uff1asupervisord\u8fd0\u884c\u65e5\u5fd7\u3001systemd\u670d\u52a1\u65e5\u5fd7\n6.\u4fee\u590d\u8fdb\u7a0b\u6570\u91cf\u8bbe\u7f6e\u4e3a\u7a7a\u62160\u65f6\u5bfc\u81f4supervisord\u65e0\u6cd5\u542f\u52a8\u7684\u95ee\u9898\n7.\u4fee\u590d\u8fdb\u7a0b\u542f\u52a8\u7ea7\u522b\u8bbe\u7f6e\u4e3a\u7a7a\u62160\u65f6\u5bfc\u81f4supervisord\u65e0\u6cd5\u542f\u52a8\u7684\u95ee\u9898\n8.\u5220\u9664\u64cd\u4f5c\u5217\u4e2d\u7684\u542f\u52a8\u6309\u94ae\uff0c\u6539\u4e3a\u70b9\u51fb\u72b6\u6001\u542f\u52a8\u6216\u505c\u6b62","os_limit":0,"beta":0,"update_time":1678439984},{"id":315,"soft_id":91,"m_version":"2","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u8c03\u6574\u591a\u8fdb\u7a0b\u5e94\u7528\u5217\u8868\u663e\u793a\uff0c\u591a\u4e2a\u8fdb\u7a0b\u53ea\u663e\u793a\u4e00\u6761\u4fe1\u606f\u3002\n2. \u79fb\u52a8\u65e5\u5fd7\u67e5\u770b\u5230\u8868\u683c\u53f3\u8fb9\uff0c\u589e\u52a0\u9519\u8bef\u65e5\u5fd7\u67e5\u770b\u3002\n3. \u914d\u7f6e\u6587\u4ef6\u4fee\u6539\u7acb\u5373\u91cd\u8f7d\u751f\u6548\u3002\n4. \u6362\u56de\u539f\u56fe\u6807\u3002","os_limit":0,"beta":0,"update_time":1669002016}],"endtime":0},{"id":44,"os":"Linux","pid":0,"type":7,"sort":129,"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":"\/www\/server\/panel\/plugin\/txcos","uninsatll_checks":"\/www\/server\/panel\/plugin\/txcos","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":280,"soft_id":44,"m_version":"5","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1663906069},{"id":42,"soft_id":44,"m_version":"5","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u6587\u4ef6\u7ba1\u7406\u4e0a\u4f20\u5230\u817e\u8baf\u4e91COS\u63a5\u53e3","os_limit":0,"beta":0,"update_time":1625535336}],"endtime":0},{"id":70,"os":"Linux","pid":100000017,"type":8,"sort":129,"price":19.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":"\u76d1\u63a7\u670d\u52a1\u5668\u3001\u7f51\u7ad9\u3001SSL\u8bc1\u4e66\u3001\u5e38\u7528\u670d\u52a1\u7b49\u8d44\u6e90\u5f02\u5e38\u5e76\u53d1\u9001\u544a\u8b66>>\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/msg_push","uninsatll_checks":"\/www\/server\/panel\/plugin\/msg_push","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/msg_push.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":231,"soft_id":70,"m_version":"3","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4f18\u5316SSL\u76d1\u63a7\u3010\u6682\u505c\u7684\u7f51\u7ad9\u4e0d\u76d1\u63a7SSL\u5230\u671f\u65f6\u95f4\u3011","os_limit":0,"beta":0,"update_time":1656139085},{"id":222,"soft_id":70,"m_version":"3","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u6dfb\u52a0\u77ed\u4fe1\u901a\u77e5\u529f\u80fd","os_limit":0,"beta":0,"update_time":1650794640},{"id":208,"soft_id":70,"m_version":"3","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u6dfb\u52a0PHP8.1\u76d1\u63a7\n\u4f18\u5316\u53d1\u4ef6\u9519\u8bef\u65e5\u5fd7","os_limit":0,"beta":0,"update_time":1645424808}],"endtime":0},{"id":161,"os":"Linux","pid":0,"type":7,"sort":130,"price":0,"name":"bos","title":"\u767e\u5ea6\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\u767e\u5ea6\u4e91\u5bf9\u8c61\u5b58\u50a8,\u4f01\u4e1a\u514d\u8d39\u4f53\u9a8c6\u4e2a\u6708500G\/\u4e2a\u4eba\u514d\u8d39\u4f53\u9a8c\u4e00\u4e2a\u6708100GB\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":"\/www\/server\/panel\/plugin\/bos","uninsatll_checks":"\/www\/server\/panel\/plugin\/bos","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":287,"soft_id":161,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1664269567},{"id":154,"soft_id":161,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u6587\u4ef6\u4e0a\u4f20\u9009\u62e9\u5907\u4efd\u5230\u767e\u5ea6\u4e91\u5b58\u50a8\u63a5\u53e3","os_limit":0,"beta":0,"update_time":1631517935}],"endtime":0},{"id":45,"os":"Linux","pid":0,"type":7,"sort":130,"price":0,"name":"webssh","title":"\u5b9d\u5854SSH\u7ec8\u7aef","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5b8c\u6574\u529f\u80fd\u7684SSH\u5ba2\u6237\u7aef\uff0c\u4ec5\u7528\u4e8e\u8fde\u63a5\u672c\u670d\u52a1\u5668","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/webssh","uninsatll_checks":"\/www\/server\/panel\/plugin\/webssh","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":64,"soft_id":45,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625554777}],"endtime":0},{"id":163,"os":"Linux","pid":0,"type":7,"sort":131,"price":0,"name":"obs","title":"\u534e\u4e3a\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\u534e\u4e3a\u4e91\u5bf9\u8c61\u5b58\u50a8","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/obs","uninsatll_checks":"\/www\/server\/panel\/plugin\/obs","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":282,"soft_id":163,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1663923455},{"id":162,"soft_id":163,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u6587\u4ef6\u4e0a\u4f20\u9009\u62e9\u5907\u4efd\u5230\u534e\u4e3a\u4e91\u5b58\u50a8\u63a5\u53e3","os_limit":0,"beta":0,"update_time":1634013792}],"endtime":0},{"id":47,"os":"Linux","pid":0,"type":7,"sort":131,"price":0,"name":"clear","title":"\u65e5\u5fd7\u6e05\u7406\u5de5\u5177","title_en":"Log cleanup","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u4e00\u952e\u6e05\u7406\u6307\u5b9a\u65e5\u5fd7\u548c\u7cfb\u7edf\u5783\u573e","ps_en":"One click to clear logs and system trash","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/clear","uninsatll_checks":"\/www\/server\/panel\/plugin\/clear","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":314,"soft_id":47,"m_version":"2","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u81ea\u5b9a\u4e49\u914d\u7f6e\u626b\u63cf\u65e0\u6cd5\u663e\u793a\u7ed3\u679c","os_limit":0,"beta":0,"update_time":1668672055},{"id":294,"soft_id":47,"m_version":"2","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u517c\u5bb9\u6700\u65b0\u7f51\u7ad9\u76d1\u63a7\u65e5\u5fd7\u6e05\u7406\u3002","os_limit":0,"beta":0,"update_time":1665646189},{"id":237,"soft_id":47,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u65b0\u589e\u9650\u5236\u90e8\u5206\u5173\u952e\u76ee\u5f55\u4e0d\u5141\u8bb8\u9009\u62e9\u5220\u9664\n2.\u4f18\u5316\u5904\u7406\u54cd\u5e94\u901f\u5ea6","os_limit":0,"beta":0,"update_time":1657371424}],"endtime":0},{"id":132,"os":"Linux","pid":0,"type":7,"sort":132,"price":0,"name":"anti_spam","title":"\u53cd\u5783\u573e\u90ae\u4ef6\u7f51\u5173","title_en":"Anti-Spam Gateway","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5141\u8bb8\u4f60\u5c06\u90ae\u4ef6\u670d\u52a1\u5668\u63a5\u5165\u8fc7\u6ee4\u5783\u573e\/\u75c5\u6bd2\u90ae\u4ef6","ps_en":"Allow mail server to access and filter spam\/virus mail","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/anti_spam","uninsatll_checks":"\/www\/server\/panel\/plugin\/anti_spam","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":74,"soft_id":132,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625562180}],"endtime":0},{"id":55,"os":"Linux","pid":0,"type":7,"sort":132,"price":0,"name":"backup","title":"\u5b9d\u5854\u914d\u7f6e\u5907\u4efd","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u5907\u4efd\u8ba1\u5212\u4efb\u52a1\u548c\u5b9d\u5854\u76f8\u5173\u914d\u7f6e\u6570\u636e","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/backup","uninsatll_checks":"\/www\/server\/panel\/plugin\/backup","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":341,"soft_id":55,"m_version":"2","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u65b0\u589e\u3011\u91cd\u5b9a\u5411\u3001\u53cd\u5411\u4ee3\u7406\u914d\u7f6e\u5907\u4efd","os_limit":0,"beta":0,"update_time":1675151291},{"id":232,"soft_id":55,"m_version":"2","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u8ba1\u5212\u4efb\u52a1\u5907\u4efd\u8fd8\u539f\n\u3010\u589e\u52a0\u3011java\u3001php\u9879\u76ee\u5907\u4efd\u8fd8\u539f\n\u3010\u589e\u52a0\u3011\u8bc1\u4e66\u5939\u5907\u4efd\u8fd8\u539f\n\u3010\u4fee\u590d\u3011\u65e0\u6570\u636e\u8fd8\u539f\u65f6\u663e\u793a\u95ee\u9898\n\u3010\u4fee\u590d\u3011SSL\u6587\u4ef6\u65e0\u6cd5\u6062\u590d\u7684\u95ee\u9898\n\u3010\u4fee\u590d\u3011\u9700\u8981\u91cd\u542f\u9762\u677f\u624d\u80fd\u5907\u4efd\u7b2c\u4e8c\u6b21\u7684\u95ee\u9898\n\u3010\u8c03\u6574\u3011\u517c\u5bb9python3.10","os_limit":0,"beta":0,"update_time":1656312092},{"id":26,"soft_id":55,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4fee\u590d\u3011\u5907\u4efd\u7f51\u7ad9\u8bc1\u4e66\u4e3a\u7a7a\u95ee\u9898\n\u3010\u8c03\u6574\u3011\u6062\u590d\u7f51\u7ad9\u8bc1\u4e66","os_limit":0,"beta":0,"update_time":1625295616}],"endtime":0},{"id":181,"os":"Linux","pid":100000069,"type":8,"sort":140,"price":19.8,"name":"ossfs","title":"\u5bf9\u8c61\u5b58\u50a8\u81ea\u52a8\u6302\u8f7d","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u652f\u6301\u963f\u91cc\u4e91\u3001\u817e\u8baf\u4e91(cosfs)\u3001\u534e\u4e3a\u4e91\u3001\u4eac\u4e1c\u4e91\u3001\u91d1\u5c71\u4e91\u3001\u767e\u5ea6\u4e91\u5bf9\u8c61\u5b58\u50a8\uff0c\u5c06\u5bf9\u8c61\u5b58\u50a8\u6876\u6302\u8f7d\u5230\u672c\u5730\uff0c\u50cf\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e00\u6837\u76f4\u63a5\u64cd\u4f5c\u5bf9\u8c61\u5b58\u50a8\u6587\u4ef6","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/ossfs","uninsatll_checks":"\/www\/server\/panel\/plugin\/ossfs","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":300,"soft_id":181,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u4f18\u5316\u3011\u4f18\u5316bosfs\u5b89\u88c5\n\u3010\u4f18\u5316\u3011\u4f18\u5316\u8f93\u5165\u68c0\u6d4b\n\u3010\u8c03\u6574\u3011\u8c03\u6574\u767e\u5ea6\u4e91\u6302\u8f7d\u6743\u9650\u53c2\u6570","os_limit":0,"beta":0,"update_time":1666322595},{"id":253,"soft_id":181,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u589e\u52a0\u3011\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8app_id\u914d\u7f6e\u9879\n\u3010\u4f18\u5316\u3011\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8\u6dfb\u52a0\u5b58\u50a8\u6876","os_limit":0,"beta":0,"update_time":1658980950}],"endtime":0},{"id":104,"os":"Linux","pid":100000034,"type":12,"sort":150,"price":99,"name":"users","title":"\u9762\u677f\u591a\u7528\u6237\u7ba1\u7406","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u652f\u6301\u7ba1\u7406\u9762\u677f\u591a\u7528\u6237\uff0c\u53ef\u67e5\u770b\u5404\u4e2a\u7528\u6237\u65e5\u5fd7\uff0c\u4f46\u4e0d\u652f\u6301\u6743\u9650\u5206\u914d","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/users","uninsatll_checks":"\/www\/server\/panel\/plugin\/users","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":66,"soft_id":104,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625555262}],"endtime":0},{"id":106,"os":"Linux","pid":100000036,"type":12,"sort":153,"price":99,"name":"bt_boce","title":"\u5821\u5854\u7f51\u7ad9\u6d4b\u901f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6d4b\u8bd5\u7f51\u7ad9\u5728\u5168\u7403\u5404\u5730\u7684\u6253\u5f00\u901f\u5ea6\u5e76\u53ca\u65f6\u544a\u8b66","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/bt_boce","uninsatll_checks":"\/www\/server\/panel\/plugin\/bt_boce","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":215,"soft_id":106,"m_version":"2","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1647594676},{"id":29,"soft_id":106,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625297586}],"endtime":0},{"id":155,"os":"Linux","pid":100000057,"type":8,"sort":155,"price":19.8,"name":"nfs_tools","title":"NFS\u6587\u4ef6\u5171\u4eab\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u57fa\u4e8eNFS\u7684\u6587\u4ef6\u5171\u4eab\uff0c\u5305\u542b\u521b\u5efa\u5171\u4eab\u548c\u6302\u8f7d\u8fdc\u7a0bNFS","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/nfs_tools","uninsatll_checks":"\/www\/server\/panel\/plugin\/nfs_tools","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":88,"soft_id":155,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u653e\u884c\u7aef\u53e3\u63d0\u793a\u4e0d\u5b8c\u6574\u7684\u95ee\u9898\n2\u3001\u8c03\u6574\u9ed8\u8ba4\u8bfb\u5199\u6a21\u5f0f\u4e3a\u3010\u8bfb\u5199\u3011","os_limit":0,"beta":0,"update_time":1626851070},{"id":8,"soft_id":155,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u6b63\u5f0f\u72482","os_limit":0,"beta":0,"update_time":1625046023}],"endtime":0},{"id":112,"os":"Linux","pid":100000039,"type":12,"sort":156,"price":99,"name":"database_mater","title":"\u6570\u636e\u5e93\u8fd0\u7ef4\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6570\u636e\u5e93\u8fd0\u7ef4\u7ba1\u7406\u5de5\u5177,\u4e00\u952e\u4f18\u5316\u6570\u636e\u5e93","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/database_mater","uninsatll_checks":"\/www\/server\/panel\/plugin\/database_mater","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/database_mater.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":251,"soft_id":112,"m_version":"5","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1658828143},{"id":28,"soft_id":112,"m_version":"4","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625296071}],"endtime":0},{"id":143,"os":"Linux","pid":0,"type":7,"sort":156,"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":"\/www\/server\/panel\/plugin\/msonedrive","uninsatll_checks":"\/www\/server\/panel\/plugin\/msonedrive","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":43,"soft_id":143,"m_version":"1","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u8ba1\u5212\u4efb\u52a1\u5907\u4efd\u901a\u77e5\u548c\u4fdd\u7559\u672c\u5730\u5907\u4efd\u3002","os_limit":0,"beta":0,"update_time":1625535434}],"endtime":0},{"id":113,"os":"Linux","pid":100000040,"type":12,"sort":157,"price":99,"name":"site_optimization","title":"\u5821\u5854\u7ad9\u70b9\u4f18\u5316","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6309\u7167\u7ad9\u70b9\u7c7b\u578b\u4f18\u5316\u7ad9\u70b9\u4ee5\u83b7\u53d6\u66f4\u9ad8\u7684\u6027\u80fd\u3010\u76ee\u524d\u4ec5\u652f\u6301\u5fae\u64ce\u3011","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/site_optimization","uninsatll_checks":"\/www\/server\/panel\/plugin\/site_optimization","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/site_optimization.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":75,"soft_id":113,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625563601}],"endtime":0},{"id":130,"os":"Linux","pid":100000053,"type":12,"sort":158,"price":99,"name":"resource_manager","title":"\u5821\u5854\u8d44\u6e90\u76d1\u89c6\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5bf9\u7f51\u7ad9\u6bcf\u79d2\u8bf7\u6c42\u6570\u548c\u8fdb\u7a0b\u5360\u7528\u7684\u8d44\u6e90\u8fdb\u884c\u76d1\u89c6","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/resource_manager","uninsatll_checks":"\/www\/server\/panel\/plugin\/resource_manager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/resource_manager.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":295,"soft_id":130,"m_version":"1","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u7f51\u7ad9\u5217\u8868\u8bf7\u6c42\u6570\u548c\u5b9e\u65f6\u8bf7\u6c42\u6570\u663e\u793a\u3002","os_limit":0,"beta":0,"update_time":1665709577},{"id":69,"soft_id":130,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625556097}],"endtime":0},{"id":179,"os":"Linux","pid":0,"type":7,"sort":180,"price":0,"name":"jdcloud","title":"\u4eac\u4e1c\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\u4eac\u4e1c\u4e91\u5bf9\u8c61\u5b58\u50a8 [\u7533\u8bf7\u8d26\u53f7]<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/jdcloud","uninsatll_checks":"\/www\/server\/panel\/plugin\/jdcloud","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":283,"soft_id":179,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u3010\u8c03\u6574\u3011key\u4fe1\u606f\u52a0\u5bc6\u5b58\u50a8\n\u3010\u8c03\u6574\u3011\u53d6\u6d88\u5220\u9664\u529f\u80fd","os_limit":0,"beta":0,"update_time":1663923509},{"id":233,"soft_id":179,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1656320669}],"endtime":0},{"id":174,"os":"Linux","pid":100000063,"type":12,"sort":200,"price":88,"name":"btiplibrary","title":"IP\u7cbe\u51c6\u6570\u636e\u5305","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u94fe\u63a5\u5546\u4e1aIP\u6570\u636e\u5e93\uff0c\u7cbe\u51c6\u663e\u793a\u7f51\u7ad9\u7528\u6237\u5f52\u5c5e\u5730\u4fe1\u606f\u3002\u6682\u65f6\u53ea\u96c6\u6210\u7f51\u7ad9\u76d1\u63a7\u62a5\u8868\u63d2\u4ef6(v6.7\u4ee5\u4e0a)\uff0c\u4f01\u4e1a\u7248\u7528\u6237\u514d\u8d39\u3002","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"0","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/btiplibrary","uninsatll_checks":"\/www\/server\/panel\/plugin\/btiplibrary","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":186,"soft_id":174,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":1,"update_time":1640937193}],"endtime":0},{"id":165,"os":"Linux","pid":100000062,"type":12,"sort":200,"price":99,"name":"ssl_verify","title":"\u5821\u5854\u9650\u5236\u8bbf\u95ee\u578b\u8bc1\u4e66-Linux\u7248","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u53cc\u5411\u8ba4\u8bc1\u8bc1\u4e66\uff0c\u53ef\u7528\u4e8e\u9650\u5236\u6307\u5b9a\u4eba\u5458\u8bbf\u95ee\uff08\u91cd\u8981\u4e1a\u52a1\u63a8\u8350\uff09\uff0c\u63d0\u4f9b\u8f83\u9ad8\u5b89\u5168\u7684\u8bbf\u95ee\u73af\u5883\uff0c\u4e5f\u53ef\u7528\u4e8e\u5185\u7f51\u8bc1\u4e66\uff0c\u81ea\u7b7eSSL\u7b49\u3002 > \u4f7f\u7528\u8bf4\u660e<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/ssl_verify","uninsatll_checks":"\/www\/server\/panel\/plugin\/ssl_verify","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":207,"soft_id":165,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1645416569},{"id":202,"soft_id":165,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1644887730},{"id":167,"soft_id":165,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u65b0\u589e\u81ea\u52a8\u540c\u6b65\u5230\u9762\u677fSSL","os_limit":0,"beta":0,"update_time":1634695266}],"endtime":0},{"id":22,"os":"Linux","pid":0,"type":7,"sort":916,"price":0,"name":"dns","title":"DNS\u4e91\u89e3\u6790","title_en":"","panel_pro":0,"panel_ltd":1,"panel_free":0,"panel_test":0,"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":"\/www\/server\/panel\/plugin\/dns","uninsatll_checks":"\/www\/server\/panel\/plugin\/dns","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":4,"soft_id":22,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u7248\u672c\u66f4\u65b0","os_limit":0,"beta":0,"update_time":1625046023}],"endtime":0},{"id":63,"os":"Linux","pid":100000008,"type":8,"sort":1311,"price":29.8,"name":"masterslave","title":"MySQL\u4e3b\u4ece\u590d\u5236","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u56e0\u8bbe\u8ba1\u7f3a\u9677\uff0c\u5df2\u4e0b\u67b6\uff0c\u8bf7\u4f7f\u7528\u3010MySQL\u4e3b\u4ece\u590d\u5236(\u91cd\u6784\u7248)\u3011<\/span>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"mysql","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/masterslave","uninsatll_checks":"\/www\/server\/panel\/plugin\/masterslave","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/mysql_replicate.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":32,"soft_id":63,"m_version":"2","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625467425}],"endtime":0},{"id":117,"os":"Linux","pid":100000042,"type":12,"sort":1998,"price":99,"name":"enterprise_backup","title":"\u4f01\u4e1a\u7ea7\u5907\u4efd","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u56e0\u8bbe\u8ba1\u7f3a\u9677\uff0c\u5df2\u4e0b\u67b6\uff0c\u8bf7\u4f7f\u7528\u3010\u6570\u636e\u5e93\u9875\u9762 --> \u4f01\u4e1a\u589e\u91cf\u5907\u4efd\u3011<\/span>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/enterprise_backup","uninsatll_checks":"\/www\/server\/panel\/plugin\/enterprise_backup","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/enterprise_backup.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":312,"soft_id":117,"m_version":"5","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u5b8c\u5584\u548c\u65b0\u589e\u652f\u6301Ubuntu22\/Debian11\u7cfb\u7edf\u5907\u4efd\u3002\n2.\u91cd\u6784\u9002\u5e94\u9762\u677f\u673a\u5236\u3002","os_limit":0,"beta":0,"update_time":1668482925},{"id":73,"soft_id":117,"m_version":"5","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u5728\u65b0\u7248\u672c\u65e0\u6cd5\u5907\u4efd\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1625561544}],"endtime":0},{"id":122,"os":"Linux","pid":100000045,"type":12,"sort":1999,"price":99,"name":"tamper_drive","title":"\u5821\u5854\u4f01\u4e1a\u7ea7\u9632\u7be1\u6539","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u56e0\u8bbe\u8ba1\u7f3a\u9677\uff0c\u5df2\u4e0b\u67b6\uff0c\u8bf7\u4f7f\u7528\u3010\u5821\u5854\u4f01\u4e1a\u7ea7\u9632\u7be1\u6539 - \u91cd\u6784\u7248\u3011<\/span>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"tamper_proof","install_checks":"\/www\/server\/panel\/plugin\/tamper_drive","uninsatll_checks":"\/www\/server\/panel\/plugin\/tamper_drive","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"https:\/\/www.bt.cn\/new\/product\/tamper_drive.html","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":249,"soft_id":122,"m_version":"2","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1658821693}],"endtime":0},{"num":"4.9","id":600801398,"uid":228015,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Nginx\u514d\u8d39\u9632\u706b\u5899","p_index":"free_waf","ps":"Nginx\u514d\u8d39\u9632\u706b\u5899\uff0c\u548c\u73b0\u6709\u7684Nginx\u7684\u9632\u706b\u5899\u53ea\u80fd\u5b89\u88c5\u4e00\u4e2a,\u5efa\u8bae\u548cPHP\u7f51\u7ad9\u5b89\u5168\u544a\u8b66\u914d\u5408\u4f7f\u7528\u3002?<\/a>","author":"\u660e\u56fd\u4e09\u5e74\u4e00\u573a\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-39649-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191107\/065808e927f4c37052049b56561fe1cd.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1573107241,"state":0,"sort":4.9,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801398,"version":"7.2","version_msg":"nginx\u514d\u8d39\u9632\u706b\u5899","f_path":"other\/20230306\/56110a120ccf794794363c50175ea6a6.zip","f_md5":"3869dc932d97d399bc08a0198a7e8b74","f_size":264870,"type":10,"endtime":0,"score":"4.9","name":"free_waf","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/free_waf","uninsatll_checks":"\/www\/server\/panel\/plugin\/free_waf","compile_args":0,"version_coexist":0,"manager_version":"7","c_manager_version":"2","versions":[{"m_version":"7","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"nginx\u514d\u8d39\u9632\u706b\u5899","download":"other\/20230306\/56110a120ccf794794363c50175ea6a6.zip","md5":"3869dc932d97d399bc08a0198a7e8b74","size":264870}],"count":243330},{"num":"4.7","id":600801254,"uid":172099,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"\u6587\u4ef6\u641c\u7d22\u53ca\u6279\u91cf\u4fee\u6539","p_index":"mfsearch","ps":"\u6587\u4ef6\u5185\u5bb9\u641c\u7d22\u53ca\u6279\u91cf\u4fee\u6539(\u53ef\u6574\u7ad9\u4fee\u6539\u53ca\u81ea\u52a8\u5907\u4efd)?<\/a>","author":"\u7267\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-33237-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190615\/e7372086b3e573497e612e1003bbe5b3.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1560579139,"state":0,"sort":4.7,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801254,"version":"1.1.2","version_msg":"1)\u4fee\u590dwin\u7cfb\u7edf\u5b89\u88c5Bug,2)\u4fee\u590d\u90e8\u5206\u7f16\u7801Bug","f_path":"other\/20200118\/db7aaf79ccb5b4d71a40b90a53879953.zip","f_md5":"f40125b5b8c3b0836e6459639a8c96f5","f_size":225019,"type":10,"endtime":0,"score":"4.7","name":"mfsearch","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mfsearch","uninsatll_checks":"\/www\/server\/panel\/plugin\/mfsearch","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1.2","versions":[{"m_version":"1","version":"1.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1)\u4fee\u590dwin\u7cfb\u7edf\u5b89\u88c5Bug,2)\u4fee\u590d\u90e8\u5206\u7f16\u7801Bug","download":"other\/20200118\/db7aaf79ccb5b4d71a40b90a53879953.zip","md5":"f40125b5b8c3b0836e6459639a8c96f5","size":225019}],"count":132356},{"num":"4.7","id":600801212,"uid":30069,"app_type":1,"p_type":4,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u6cb3\u9a6cwebshell\u67e5\u6740","p_index":"hm_shell_san","ps":"\u6cb3\u9a6cwebshell\u67e5\u6740?<\/a>","author":"print("")","home":"https:\/\/www.bt.cn\/bbs\/thread-39381-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191101\/ffb9085b6c30168308e289be27f11486.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1551346414,"state":0,"sort":4.7,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801212,"version":"2.0","version_msg":"\u6cb3\u9a6cwebshell\u67e5\u6740\u5de5\u5177","f_path":"other\/20220117\/287fe84a9cc0b463ff0458079a0b813a.zip","f_md5":"4d223a9b0caad5226212a526c516b873","f_size":8796,"type":10,"endtime":0,"score":"4.7","name":"hm_shell_san","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/hm_shell_san","uninsatll_checks":"\/www\/server\/panel\/plugin\/hm_shell_san","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"0","versions":[{"m_version":"2","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u6cb3\u9a6cwebshell\u67e5\u6740\u5de5\u5177","download":"other\/20220117\/287fe84a9cc0b463ff0458079a0b813a.zip","md5":"4d223a9b0caad5226212a526c516b873","size":8796}],"count":39879},{"num":"4.1","id":600801267,"uid":16402,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"404\u516c\u76ca","p_index":"publicwelfare404","ps":"\u54cd\u5e94\u5f0f404\u516c\u76ca\u4ee3\u7801\uff0c\u7f8e\u5316\u4f60\u7684404\u9875\u9762\u540c\u65f6\u53c2\u4e0e\u516c\u76ca\u3002?<\/a>","author":"\u57df\u540d\u516c\u76ca\u7f51","home":"https:\/\/www.bt.cn\/bbs\/thread-33666-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190624\/c6bfbb27b99058e14e9e424a4b66104b.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1561346414,"state":0,"sort":4.1,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801267,"version":"1.2","version_msg":"\u5b8c\u5584\u9519\u8bef\u53cb\u597d\u63d0\u793a\uff1b","f_path":"other\/20191216\/e3949a53c6832ad5f75cdbac65b34d54.zip","f_md5":"51a301c6ce3f28bcbd5e89c586196a7e","f_size":14470,"type":10,"endtime":0,"score":"4.1","name":"publicwelfare404","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/publicwelfare404","uninsatll_checks":"\/www\/server\/panel\/plugin\/publicwelfare404","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5b8c\u5584\u9519\u8bef\u53cb\u597d\u63d0\u793a\uff1b","download":"other\/20191216\/e3949a53c6832ad5f75cdbac65b34d54.zip","md5":"51a301c6ce3f28bcbd5e89c586196a7e","size":14470}],"count":33141},{"num":"3.7","id":600801443,"uid":24102,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u63a8\u9001","p_index":"baidu_push","ps":"\u652f\u6301\u767e\u5ea6\u666e\u901a\u6536\u5f55\u8ddf\u5feb\u901f\u6536\u5f55\u4e24\u4e2a\u63a8\u9001\u63a5\u53e3\uff01?<\/a>","author":"\u5929\u4e00\u6570\u636e","home":"https:\/\/www.bt.cn\/bbs\/thread-42287-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200106\/d67109fd986b85ae6291515a7d6b0a61.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1578320699,"state":0,"sort":3.7,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801443,"version":"v1.8","version_msg":"\u767e\u5ea6\u63a5\u53e3\u8c03\u6574","f_path":"other\/20200602\/ff57e2db9e3b3c1c8ef2141d52e1e942.zip","f_md5":"ec9cbe636a1ee0bf9d07ab54719a3884","f_size":11445,"type":10,"endtime":0,"score":"3.7","name":"baidu_push","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/baidu_push","uninsatll_checks":"\/www\/server\/panel\/plugin\/baidu_push","compile_args":0,"version_coexist":0,"manager_version":"v1","c_manager_version":"8","versions":[{"m_version":"v1","version":"8","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u767e\u5ea6\u63a5\u53e3\u8c03\u6574","download":"other\/20200602\/ff57e2db9e3b3c1c8ef2141d52e1e942.zip","md5":"ec9cbe636a1ee0bf9d07ab54719a3884","size":11445}],"count":32210},{"num":"5.0","id":600801564,"uid":303537,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u6211\u7684\u5de5\u5177\u7bb1","p_index":"my_toolbox","ps":"\u96c6\u5408\u7aef\u53e3\u626b\u63cf\u3001HOSTS\u7f16\u8f91\u3001\u7f51\u7ad9\u538b\u6d4b\u3001\u78c1\u76d8\u5de5\u5177\u7b49\u529f\u80fd?<\/a>","author":"\u5434\u5148\u68ee","home":"https:\/\/www.bt.cn\/bbs\/thread-52772-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200720\/036bfca9c81b272d09c32984ba3b7aea.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1595148982,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801564,"version":"1.9.2","version_msg":"1.\u7531\u4e8e\u5b58\u5728bug\uff0c\u4e0b\u67b6\u7f51\u7ad9\u5730\u56fe\u751f\u6210\u529f\u80fd 2.\u78c1\u76d8\u5de5\u5177\u5728\u4e0d\u652f\u6301\u7684\u7cfb\u7edf\u4e2d\u4e0d\u518d\u76f4\u63a5\u62a5\u9519","f_path":"other\/20220711\/65d0a11f30c50a656a66f5c168c26367.zip","f_md5":"eeae22fd9339f3b169a55a2f72a69a7a","f_size":590852,"type":10,"endtime":0,"score":"5.0","name":"my_toolbox","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/my_toolbox","uninsatll_checks":"\/www\/server\/panel\/plugin\/my_toolbox","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"9.2","versions":[{"m_version":"1","version":"9.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1.\u7531\u4e8e\u5b58\u5728bug\uff0c\u4e0b\u67b6\u7f51\u7ad9\u5730\u56fe\u751f\u6210\u529f\u80fd 2.\u78c1\u76d8\u5de5\u5177\u5728\u4e0d\u652f\u6301\u7684\u7cfb\u7edf\u4e2d\u4e0d\u518d\u76f4\u63a5\u62a5\u9519","download":"other\/20220711\/65d0a11f30c50a656a66f5c168c26367.zip","md5":"eeae22fd9339f3b169a55a2f72a69a7a","size":590852}],"count":29362},{"num":"5.0","id":600801805,"uid":904054,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SRS\u97f3\u89c6\u9891\u670d\u52a1\u5668","p_index":"srs_cloud","ps":"SRS\u662f\u5f00\u6e90\u7684\u97f3\u89c6\u9891\u670d\u52a1\u5668\uff0c\u4e3b\u8981\u5e94\u7528\u5728\u76f4\u64ad\u548cWebRTC\u3002?<\/a>","author":"Winlin","home":"https:\/\/www.bt.cn\/bbs\/thread-90890-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220424\/dff76f8daeb6dec5c8294f7702e7f079.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1650800538,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801805,"version":"4.6.13","version_msg":"\u652f\u6301amd64\uff0carmv7\u548caarch64\u7b49\u5e73\u53f0\u3002","f_path":"other\/20230209\/8129b7ed0afed6f6f3b7cc51211371f3.zip","f_md5":"dff7a681d815c62f055e52dacfe90b17","f_size":5937922,"type":10,"endtime":0,"score":"5.0","name":"srs_cloud","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/srs_cloud","uninsatll_checks":"\/www\/server\/panel\/plugin\/srs_cloud","compile_args":0,"version_coexist":0,"manager_version":"4","c_manager_version":"6.13","versions":[{"m_version":"4","version":"6.13","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u652f\u6301amd64\uff0carmv7\u548caarch64\u7b49\u5e73\u53f0\u3002","download":"other\/20230209\/8129b7ed0afed6f6f3b7cc51211371f3.zip","md5":"dff7a681d815c62f055e52dacfe90b17","size":5937922}],"count":21800},{"num":"4.3","id":600801213,"uid":31398,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SSH\u79d8\u94a5\u7ba1\u7406\u5668","p_index":"sshkey","ps":"\u4e3a\u89e3\u51b3ssh\u79d8\u94a5\u767b\u9646\u800c\u9ebb\u70e6\u914d\u7f6e?<\/a>","author":"\u5e26\u5934\u5927\u54e5","home":"https:\/\/www.bt.cn\/bbs\/thread-20943-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190401\/169f9ef390f68c134c4b8b003ec1a412.png","price":0,"auth_price":0,"discount":0,"commission":0.8,"p_cycle":1,"addtime":1554082722,"state":0,"sort":4.3,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801213,"version":"1.1","version_msg":"\u4e3a\u89e3\u51b3ssh\u79d8\u94a5\u767b\u9646\u800c\u9ebb\u70e6\u914d\u7f6e","f_path":"other\/20190419\/080c4f8b6a00055c4510c6b305365deb.zip","f_md5":"e6baacff85a33be40c32bb526b5fdb03","f_size":8679,"type":10,"endtime":0,"score":"4.3","name":"sshkey","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/sshkey","uninsatll_checks":"\/www\/server\/panel\/plugin\/sshkey","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4e3a\u89e3\u51b3ssh\u79d8\u94a5\u767b\u9646\u800c\u9ebb\u70e6\u914d\u7f6e","download":"other\/20190419\/080c4f8b6a00055c4510c6b305365deb.zip","md5":"e6baacff85a33be40c32bb526b5fdb03","size":8679}],"count":21158},{"num":"3.3","id":600801599,"uid":51989,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u4e91\u52a0\u901f","p_index":"su_baidu","ps":"\u514d\u8d39\u63d0\u4f9b\u9ad8\u9632CDN\u52a0\u901f\/DDoS\u9632\u62a4\/CC\u4e91\u9632\u62a4\u7684CDN\u670d\u52a1?<\/a>","author":"\u8da3\u57df\u7f51","home":"https:\/\/www.bt.cn\/bbs\/thread-56551-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200921\/f2010eeb06bcb63f44a82af418c3f0a5.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1600682141,"state":0,"sort":3.3,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801599,"version":"1.11","version_msg":"\u4fee\u590d\u517c\u5bb9\u65b0\u7248\u672c\u7684\u5b9d\u5854\uff0c\u5efa\u8bae\u5347\u7ea7\uff01","f_path":"other\/20220927\/272e9cf7c1f08ef7f3a21f75f14d8421.zip","f_md5":"a17f5d4841fb16c2d5bc677971cb9463","f_size":56249,"type":10,"endtime":0,"score":"3.3","name":"su_baidu","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/su_baidu","uninsatll_checks":"\/www\/server\/panel\/plugin\/su_baidu","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"11","versions":[{"m_version":"1","version":"11","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u517c\u5bb9\u65b0\u7248\u672c\u7684\u5b9d\u5854\uff0c\u5efa\u8bae\u5347\u7ea7\uff01","download":"other\/20220927\/272e9cf7c1f08ef7f3a21f75f14d8421.zip","md5":"a17f5d4841fb16c2d5bc677971cb9463","size":56249}],"count":20945},{"num":"3.7","id":600801740,"uid":697771,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"FAST OS DOCKER","p_index":"fastosdocker","ps":"FASTOSDOCKER\u662fDocker\u7684\u56fe\u5f62\u5316\u7ba1\u7406\u5de5\u5177?<\/a>","author":"\u738b\u658c","home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&tid=72848&highlight=FAST%2BOS%2BDOCKER","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210723\/e77e884a991dfee022cc95e15c0d831e.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1627020665,"state":0,"sort":3.7,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801740,"version":"1.3.3","version_msg":"\u66f4\u65b0\u4e86docker\u5e94\u7528\u7ba1\u7406","f_path":"other\/20220712\/0b80aba0549f3431fccf192d50cd32e0.zip","f_md5":"0e1e0b0770fb1f225acaa42a9db3d18e","f_size":285363,"type":10,"endtime":0,"score":"3.7","name":"fastosdocker","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/fastosdocker","uninsatll_checks":"\/www\/server\/panel\/plugin\/fastosdocker","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3.3","versions":[{"m_version":"1","version":"3.3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u4e86docker\u5e94\u7528\u7ba1\u7406","download":"other\/20220712\/0b80aba0549f3431fccf192d50cd32e0.zip","md5":"0e1e0b0770fb1f225acaa42a9db3d18e","size":285363}],"count":19012},{"num":"2.6","id":600801550,"uid":301187,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SEO\u6536\u5f55\u76d1\u63a7","p_index":"616seo","ps":"SEO\u76d1\u63a7,\u6536\u5f55\u589e\u52a0\u5fae\u4fe1\u5b9e\u65f6\u63a8\u9001?<\/a>","author":"\u91cd\u5e86\u6838\u679c\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8","home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&tid=48297&highlight=seo","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200619\/8292b2d55445856f3531648825f13be5.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1592556462,"state":0,"sort":2.6,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801550,"version":"3.0","version_msg":"SEO\u76d1\u63a7,\u6536\u5f55\u589e\u52a0\u5fae\u4fe1\u5b9e\u65f6\u63a8\u9001","f_path":"other\/20200716\/be21725262a40a995c5108dbb8215357.zip","f_md5":"00a3e760ce7b1c5dc6235fee5cec8d29","f_size":11362,"type":10,"endtime":0,"score":"2.6","name":"616seo","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/616seo","uninsatll_checks":"\/www\/server\/panel\/plugin\/616seo","compile_args":0,"version_coexist":0,"manager_version":"3","c_manager_version":"0","versions":[{"m_version":"3","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"SEO\u76d1\u63a7,\u6536\u5f55\u589e\u52a0\u5fae\u4fe1\u5b9e\u65f6\u63a8\u9001","download":"other\/20200716\/be21725262a40a995c5108dbb8215357.zip","md5":"00a3e760ce7b1c5dc6235fee5cec8d29","size":11362}],"count":18642},{"num":"2.3","id":600801320,"uid":3671,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7aef\u53e3\u626b\u63cf\u5668","p_index":"portblast","ps":"\u7279\u70b9\uff1a\u626b\u63cf\u901f\u5ea6\u5feb\uff0c\u6548\u7387\u9ad8\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u591a\u7aef\u53e3\u626b\u63cf\u3002?<\/a>","author":"Youngxj","home":"https:\/\/www.bt.cn\/bbs\/thread-35824-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190808\/17e9b99a0a3649deb219968a9172688a.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1565257023,"state":0,"sort":2.3,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801320,"version":"1.0","version_msg":"\u7279\u70b9\uff1a\u626b\u63cf\u901f\u5ea6\u5feb\uff0c\u6548\u7387\u9ad8\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u591a\u7aef\u53e3\u626b\u63cf\u3002","f_path":"other\/20190808\/e1b844b74eabd979bed57ec4ae9be634.zip","f_md5":"38431d55fa40ef9609eaa05bc735df89","f_size":11736,"type":10,"endtime":0,"score":"2.3","name":"portblast","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/portblast","uninsatll_checks":"\/www\/server\/panel\/plugin\/portblast","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u7279\u70b9\uff1a\u626b\u63cf\u901f\u5ea6\u5feb\uff0c\u6548\u7387\u9ad8\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u591a\u7aef\u53e3\u626b\u63cf\u3002","download":"other\/20190808\/e1b844b74eabd979bed57ec4ae9be634.zip","md5":"38431d55fa40ef9609eaa05bc735df89","size":11736}],"count":18446},{"num":"4.7","id":600801441,"uid":30069,"app_type":1,"p_type":4,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"openrasp\u7ba1\u7406\u5668","p_index":"openrasp","ps":"\u5f00\u6e90\u5e94\u7528\u8fd0\u884c\u65f6\u81ea\u6211\u4fdd\u62a4\u89e3\u51b3\u65b9\u6848 - OpenRASP?<\/a>","author":"print("")","home":"https:\/\/www.bt.cn\/bbs\/thread-42487-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200106\/00e5f4d74d5e8acb10a5b4b279c0bad0.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1578282364,"state":0,"sort":4.7,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801441,"version":"6.0","version_msg":"\u5f00\u6e90\u5e94\u7528\u8fd0\u884c\u65f6\u81ea\u6211\u4fdd\u62a4\u89e3\u51b3\u65b9\u6848 - OpenRASP","f_path":"other\/20220312\/9495302092e8aa962fb10690137267a7.zip","f_md5":"5470167602a14479b66f5b38c298bc3a","f_size":37677,"type":10,"endtime":0,"score":"4.7","name":"openrasp","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/openrasp","uninsatll_checks":"\/www\/server\/panel\/plugin\/openrasp","compile_args":0,"version_coexist":0,"manager_version":"6","c_manager_version":"0","versions":[{"m_version":"6","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5f00\u6e90\u5e94\u7528\u8fd0\u884c\u65f6\u81ea\u6211\u4fdd\u62a4\u89e3\u51b3\u65b9\u6848 - OpenRASP","download":"other\/20220312\/9495302092e8aa962fb10690137267a7.zip","md5":"5470167602a14479b66f5b38c298bc3a","size":37677}],"count":16480},{"num":"4.5","id":600801340,"uid":13379,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"53,54,55,56,70,71,72,73","official":"http:\/\/dbcha.com","enable_functions":"","title":"\u57df\u540d\u89e3\u6790\u751f\u6548\u67e5\u8be2","p_index":"yichaxin","ps":"\u5b9d\u5854\u63d2\u4ef6\u7248\uff1a\u57df\u540dA\u3001CNAME\u3001MX\u7b49\u89e3\u6790\u8bb0\u5f55\u751f\u6548\u60c5\u51b5\u3002?<\/a>","author":"\u6613\u67e5\u85aa","home":"https:\/\/www.bt.cn\/bbs\/thread-36652-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190829\/36a4514dda9ebfde9b6fa1c7277c67e8.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1567045591,"state":0,"sort":4.5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801340,"version":"V2.2","version_msg":"\u517c\u5bb9php8.1,\u89e3\u51b3\u67e5\u8be2\u9ed8\u8ba4\u503c\u83b7\u53d6\u51fa\u9519\u53ca\u67e5\u8be2\u62a5\u9519\u9000\u51fa\u95ee\u9898","f_path":"other\/20220207\/8937401226d0da12327ff6702926c429.zip","f_md5":"8299fa484191834a17503849ca6421d4","f_size":10315,"type":10,"endtime":0,"score":"4.5","name":"yichaxin","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/yichaxin","uninsatll_checks":"\/www\/server\/panel\/plugin\/yichaxin","compile_args":0,"version_coexist":0,"manager_version":"V2","c_manager_version":"2","versions":[{"m_version":"V2","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u517c\u5bb9php8.1,\u89e3\u51b3\u67e5\u8be2\u9ed8\u8ba4\u503c\u83b7\u53d6\u51fa\u9519\u53ca\u67e5\u8be2\u62a5\u9519\u9000\u51fa\u95ee\u9898","download":"other\/20220207\/8937401226d0da12327ff6702926c429.zip","md5":"8299fa484191834a17503849ca6421d4","size":10315}],"count":15567},{"num":"4.4","id":600801232,"uid":18074,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5fae\u64ce\u52a9\u624b","p_index":"w7assistant","ps":"\u9488\u5bf9\u5fae\u64ce\u7cfb\u7edf\u63d0\u4f9b\u5b89\u5168\u52a0\u56fa\u3001\u91cd\u7f6e\u7ba1\u7406\u5458\u5bc6\u7801\u7b49\u5e38\u7528\u64cd\u4f5c\u3002?<\/a>","author":"\u8d85\u4eba","home":"https:\/\/www.bt.cn\/bbs\/thread-31865-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190529\/b7e5b51c52bc2ead12b338197456916e.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1557538700,"state":0,"sort":4.4,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801232,"version":"3.7","version_msg":"\u4fee\u590d\u5b9d\u5854\u65b0\u7248\u672c\u517c\u5bb9\u95ee\u9898\uff1b\u4f18\u5316\u9009\u62e9\u7ad9\u70b9\u4e0b\u62c9\u6846\u6837\u5f0f\uff1b","f_path":"other\/20210618\/3a42d45b9245fcf596ad5a14ba589e47.zip","f_md5":"76b509764fef48efe9709460191b3724","f_size":13765,"type":10,"endtime":0,"score":"4.4","name":"w7assistant","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/w7assistant","uninsatll_checks":"\/www\/server\/panel\/plugin\/w7assistant","compile_args":0,"version_coexist":0,"manager_version":"3","c_manager_version":"7","versions":[{"m_version":"3","version":"7","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u5b9d\u5854\u65b0\u7248\u672c\u517c\u5bb9\u95ee\u9898\uff1b\u4f18\u5316\u9009\u62e9\u7ad9\u70b9\u4e0b\u62c9\u6846\u6837\u5f0f\uff1b","download":"other\/20210618\/3a42d45b9245fcf596ad5a14ba589e47.zip","md5":"76b509764fef48efe9709460191b3724","size":13765}],"count":15302},{"num":"2.7","id":600801365,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u4e8c\u7ef4\u7801\u751f\u6210\u5668","p_index":"qrcode","ps":"(\u5df2\u66f4\u65b0\u53ef\u6b63\u5e38\u4f7f\u7528)\u65e0\u9700\u6253\u5f00\u7b2c\u4e09\u65b9\u7f51\u7ad9,\u4e00\u952e\u751f\u6210\u4e8c\u7ef4\u7801?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-38178-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191005\/2366e9d746b8e52bfb7f00498dd88d41.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1570209057,"state":0,"sort":2.7,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801365,"version":"1.1","version_msg":"\u517c\u5bb9\u65b0\u7248,bug\u4fee\u590d","f_path":"other\/20210217\/2e64759776ce5c7ce9a54a301257923e.zip","f_md5":"d266b6d95cb29115481a938aca008340","f_size":100927,"type":10,"endtime":0,"score":"2.7","name":"qrcode","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/qrcode","uninsatll_checks":"\/www\/server\/panel\/plugin\/qrcode","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u517c\u5bb9\u65b0\u7248,bug\u4fee\u590d","download":"other\/20210217\/2e64759776ce5c7ce9a54a301257923e.zip","md5":"d266b6d95cb29115481a938aca008340","size":100927}],"count":14224},{"num":"3.0","id":600801522,"uid":172099,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5f00\u542f\u542f\u52a8\u7ba1\u7406","p_index":"mfboot","ps":"\u5f00\u673a\u542f\u52a8\u7ba1\u7406?<\/a>","author":"\u7267\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-48660-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200427\/c053de465ca87c22cb8b4518d5a0425c.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1587971366,"state":0,"sort":3,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801522,"version":"1.0","version_msg":"\u81ea\u6d4bcentos7\u901a\u8fc7","f_path":"other\/20200428\/407a57e75869a68ef9add68c419e9f6d.zip","f_md5":"66f56713059d2041740b8f6a57fa1651","f_size":224708,"type":10,"endtime":0,"score":"3.0","name":"mfboot","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mfboot","uninsatll_checks":"\/www\/server\/panel\/plugin\/mfboot","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u81ea\u6d4bcentos7\u901a\u8fc7","download":"other\/20200428\/407a57e75869a68ef9add68c419e9f6d.zip","md5":"66f56713059d2041740b8f6a57fa1651","size":224708}],"count":9520},{"num":"3.4","id":600801709,"uid":351620,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u514d\u8d39\u7f51\u7ad9\u5916\u94fe\u63a8\u5e7f","p_index":"free_promotion","ps":"\u63d0\u4f9b\u514d\u8d39\u63d0\u4f9b\u7f51\u7ad9\u6536\u5f55,\u7f51\u7ad9\u5206\u7c7b\u76ee\u5f55\u63d0\u4ea4,?<\/a>","author":"\u65e0\u4f9d","home":"\u514d\u8d39\u7f51\u7ad9\u5916\u94fe\u63a8\u5e7f","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210430\/b6c3c33c90b8cbc80b6142a0231dac98.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1619355914,"state":0,"sort":3.4,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801709,"version":"1.1","version_msg":"\u4fee\u590d\u63d0\u4ea4\u529f\u80fd\u5f02\u5e38","f_path":"other\/20210510\/7dbd1b41850ed50ad7614247286a798a.zip","f_md5":"323eab1ac72a5d58c0ac545efe65264d","f_size":11411,"type":10,"endtime":0,"score":"3.4","name":"free_promotion","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/free_promotion","uninsatll_checks":"\/www\/server\/panel\/plugin\/free_promotion","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u63d0\u4ea4\u529f\u80fd\u5f02\u5e38","download":"other\/20210510\/7dbd1b41850ed50ad7614247286a798a.zip","md5":"323eab1ac72a5d58c0ac545efe65264d","size":11411}],"count":8645},{"num":"4.5","id":600801452,"uid":147599,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"fecmall","p_index":"fecmall","ps":"\u57fa\u4e8ephp Yii2\u6846\u67b6\u4e4b\u4e0a\u5f00\u53d1\u7684\u4e00\u6b3e\u4f18\u79c0\u7684\u5f00\u6e90\u7535\u5546\u7cfb\u7edf?<\/a>","author":"Terry","home":"http:\/\/www.fecmall.com\/topic","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200120\/b388d6ebc2fe5dc1b568663db38b2d49.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1579509894,"state":0,"sort":4.5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801452,"version":"2.5.2","version_msg":"fecmall.domain_appserver\uff0c\u9519\u8bef\u7ea0\u6b63","f_path":"other\/20210406\/34ca15837a26fec5cdc767d8bfdf9d48.zip","f_md5":"6156e3db345aba5c63628aad0d156131","f_size":7069,"type":10,"endtime":0,"score":"4.5","name":"fecmall","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/fecmall","uninsatll_checks":"\/www\/server\/panel\/plugin\/fecmall","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"5.2","versions":[{"m_version":"2","version":"5.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"fecmall.domain_appserver\uff0c\u9519\u8bef\u7ea0\u6b63","download":"other\/20210406\/34ca15837a26fec5cdc767d8bfdf9d48.zip","md5":"6156e3db345aba5c63628aad0d156131","size":7069}],"count":7179},{"num":"4.1","id":600801221,"uid":65067,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u78c1\u76d8\u6302\u8f7d\u5de5\u5177","p_index":"disk","ps":"\u4e00\u952e\u6302\u8f7d\u78c1\u76d8\uff0c\u8fc1\u79fb\u6570\u636e?<\/a>","author":"\u62cd\u62cd\u718axf","home":"https:\/\/www.bt.cn\/bbs\/thread-21204-1-2.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190420\/0237badbc85457149fc8772e11c39070.png","price":4.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1555742795,"state":0,"sort":4.1,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801221,"version":"3.1","version_msg":"\u6dfb\u52a0\u8fc1\u79fb\u63d0\u793a","f_path":"other\/20210203\/37594792252ad39eec078d389b8bba46.zip","f_md5":"e170986fc36d2e13200155af013583fd","f_size":2521058,"type":10,"endtime":0,"score":"4.1","name":"disk","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/disk","uninsatll_checks":"\/www\/server\/panel\/plugin\/disk","compile_args":0,"version_coexist":0,"manager_version":"3","c_manager_version":"1","versions":[{"m_version":"3","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u6dfb\u52a0\u8fc1\u79fb\u63d0\u793a","download":"other\/20210203\/37594792252ad39eec078d389b8bba46.zip","md5":"e170986fc36d2e13200155af013583fd","size":2521058}],"count":7032},{"num":"5.0","id":600801744,"uid":705558,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u9632\u7ea2\u77ed\u7f51\u5740\u751f\u6210\u5de5\u5177","p_index":"lzfhdwz","ps":"\u652f\u6301\u57df\u540d\u9632\u7ea2\uff0c\u5fae\u4fe1QQ\u9632\u62e6\u622a\u7684\u77ed\u7f51\u5740\u3002?<\/a>","author":"\u94f6\u6148\u79d1\u6280","home":"https:\/\/www.bt.cn\/bbs\/thread-73359-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210802\/f5e8fe928a70e6c2ef6aca56c7bf5689.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1627880646,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801744,"version":"1.5","version_msg":"\u66f4\u65b0\u79fb\u9664\u5931\u6548\u57df\u540d","f_path":"other\/20230111\/d74e2487704bf678419a7d0ab6a9f05c.zip","f_md5":"bc44f2ff4ddf7615dd46b8da895d0a35","f_size":10025,"type":10,"endtime":0,"score":"5.0","name":"lzfhdwz","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/lzfhdwz","uninsatll_checks":"\/www\/server\/panel\/plugin\/lzfhdwz","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"5","versions":[{"m_version":"1","version":"5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u79fb\u9664\u5931\u6548\u57df\u540d","download":"other\/20230111\/d74e2487704bf678419a7d0ab6a9f05c.zip","md5":"bc44f2ff4ddf7615dd46b8da895d0a35","size":10025}],"count":6913},{"num":"4.3","id":600801358,"uid":80776,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u7f51\u76d8","p_index":"baidu_netdisk","ps":"\u5907\u4efd\u4f60\u7684\u6570\u636e\u5230\u767e\u5ea6\u7f51\u76d8\uff0c\u6ce8\uff1a\u670d\u52a1\u5668\u5e26\u5bbd\u9700\u4e0d\u5c0f\u4e8e2M?<\/a>","author":"\u6280\u672f\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-37544-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190921\/1b28d8321def8455207b6482d78d6534.png","price":6.66,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1569000024,"state":0,"sort":4.3,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801358,"version":"3.9.5","version_msg":"\u65b0\u589e\u65e5\u671f\u5907\u4efd\u76ee\u5f55\u89c4\u5219\u5b57\u7b26\u4e32\u8bbe\u7f6e","f_path":"other\/20230120\/a594a2e1a9d76fe5e9f9a3f70e11437c.zip","f_md5":"19755a2dc20185e4b8bff1b89ce676c6","f_size":46571,"type":10,"endtime":0,"score":"4.3","name":"baidu_netdisk","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/baidu_netdisk","uninsatll_checks":"\/www\/server\/panel\/plugin\/baidu_netdisk","compile_args":0,"version_coexist":0,"manager_version":"3","c_manager_version":"9.5","versions":[{"m_version":"3","version":"9.5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u65b0\u589e\u65e5\u671f\u5907\u4efd\u76ee\u5f55\u89c4\u5219\u5b57\u7b26\u4e32\u8bbe\u7f6e","download":"other\/20230120\/a594a2e1a9d76fe5e9f9a3f70e11437c.zip","md5":"19755a2dc20185e4b8bff1b89ce676c6","size":46571}],"count":4381},{"num":"4.5","id":600801427,"uid":13379,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7a7a\u95f4\u57df\u540d\u72b6\u6001\u67e5\u8be2","p_index":"chafenba","ps":"\u67e5\u8be2\u7ad9\u70b9\u4e0b\u5404\u57df\u540d\u662f\u5426\u89e3\u6790\u5230\u5bf9\u5e94\u7a7a\u95f4\u7b49?<\/a>","author":"\u6613\u67e5\u85aa","home":"https:\/\/www.bt.cn\/bbs\/thread-41655-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191217\/e651e53602b61836185802ba6ea261ab.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1576513534,"state":0,"sort":4.5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801427,"version":"V2.0","version_msg":"\u67e5\u8be2\u7ad9\u70b9\u4e0b\u7ed1\u5b9a\u57df\u540d\u662f\u5426\u89e3\u6790\u5230\u5bf9\u5e94\u7a7a\u95f4\u7b49","f_path":"other\/20191225\/732c8ad0c9299ae430f389384afd526a.zip","f_md5":"7cbdb7057790fd1cf403e5d35746f758","f_size":9535,"type":10,"endtime":0,"score":"4.5","name":"chafenba","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/chafenba","uninsatll_checks":"\/www\/server\/panel\/plugin\/chafenba","compile_args":0,"version_coexist":0,"manager_version":"V2","c_manager_version":"0","versions":[{"m_version":"V2","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u67e5\u8be2\u7ad9\u70b9\u4e0b\u7ed1\u5b9a\u57df\u540d\u662f\u5426\u89e3\u6790\u5230\u5bf9\u5e94\u7a7a\u95f4\u7b49","download":"other\/20191225\/732c8ad0c9299ae430f389384afd526a.zip","md5":"7cbdb7057790fd1cf403e5d35746f758","size":9535}],"count":3797},{"num":"5.0","id":600801698,"uid":144133,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5fae\u4fe1\u57df\u540d\u88ab\u5c01\u68c0\u6d4b","p_index":"wxapijnoocom","ps":"\u68c0\u6d4b\u670d\u52a1\u5668\u4e0a\u6240\u6709\u57df\u540d\u5728\u5fae\u4fe1\u73af\u5883\u4e0b\u662f\u5426\u5b58\u5728\u88ab\u5c01\u6740\u3002?<\/a>","author":"\u666f\u8bfa\u79d1\u6280","home":"https:\/\/www.bt.cn\/bbs\/thread-66765-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210408\/83c3fa5c1626ec7c649cb6ddf73c2aa0.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1617843717,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801698,"version":"1.1","version_msg":"\u66f4\u65b0\u63a5\u53e3","f_path":"other\/20220130\/1ce6234d1d83e361582471eb82a3428b.zip","f_md5":"7b3ba60b3d656982195d1c7934ad58da","f_size":72305,"type":10,"endtime":0,"score":"5.0","name":"wxapijnoocom","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/wxapijnoocom","uninsatll_checks":"\/www\/server\/panel\/plugin\/wxapijnoocom","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u63a5\u53e3","download":"other\/20220130\/1ce6234d1d83e361582471eb82a3428b.zip","md5":"7b3ba60b3d656982195d1c7934ad58da","size":72305}],"count":3535},{"num":"1.8","id":600801313,"uid":167448,"app_type":1,"p_type":2,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"\u7f51\u901f\u6d4b\u8bd5","p_index":"y6w_speedtest","ps":"\u56fd\u5185\u670d\u52a1\u5668\u95f4\u6b47\u6027\u597d\u4f7f\uff0c\u95ee\u9898\u5f85\u4fee\u590d?<\/a>","author":"\u732a\u5728\u5929\u4e0a\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-35477-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190802\/cd56d03b758b930a85e127ae24a467ca.png","price":1,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1564723782,"state":0,"sort":1.8,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801313,"version":"1.5","version_msg":"\u4fee\u590d\u6d4b\u901f\uff0c\u66f4\u65b0\u6d4b\u901f\u63d2\u4ef6","f_path":"other\/20221020\/585a38a0ba98aefdd282d387c499a97d.zip","f_md5":"ce7354b3ad8d6a393f7ef4530825b8dd","f_size":137746,"type":10,"endtime":0,"score":"1.8","name":"y6w_speedtest","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/y6w_speedtest","uninsatll_checks":"\/www\/server\/panel\/plugin\/y6w_speedtest","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"5","versions":[{"m_version":"1","version":"5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u6d4b\u901f\uff0c\u66f4\u65b0\u6d4b\u901f\u63d2\u4ef6","download":"other\/20221020\/585a38a0ba98aefdd282d387c499a97d.zip","md5":"ce7354b3ad8d6a393f7ef4530825b8dd","size":137746}],"count":3526},{"num":"3.0","id":600801360,"uid":27006,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5b89\u5168\u793e\u533a\u62a5\u8b66\u5de5\u5177","p_index":"swn","ps":"\u5b9a\u671f\u722c\u53d6\u963f\u91cc\u4e91\u5b89\u5168\u793e\u533a\u7684\u4fe1\u606f,\u901a\u8fc7STMP\u90ae\u4ef6\u53d1\u9001\u9884\u8b66\u4fe1\u606f?<\/a>","author":"IW3C","home":"https:\/\/www.bt.cn\/bbs\/thread-37738-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190925\/797ff13c9157f656c08a27a1674cbb86.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1569175892,"state":0,"sort":3,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801360,"version":"2.3","version_msg":"\u517c\u5bb9\u5b9d\u58547.2\u65b0\u67b6\u6784\uff0c\u4f18\u5316\u517c\u5bb9IW3C \u4e09\u4ee3\u901a\u8baf\u6807\u51c6","f_path":"other\/20200411\/3f9cbb683ee599582582939276f20afc.zip","f_md5":"7e4ee606ec65839397f4e2714f122ddd","f_size":77244,"type":10,"endtime":0,"score":"3.0","name":"swn","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/swn","uninsatll_checks":"\/www\/server\/panel\/plugin\/swn","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"3","versions":[{"m_version":"2","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u517c\u5bb9\u5b9d\u58547.2\u65b0\u67b6\u6784\uff0c\u4f18\u5316\u517c\u5bb9IW3C \u4e09\u4ee3\u901a\u8baf\u6807\u51c6","download":"other\/20200411\/3f9cbb683ee599582582939276f20afc.zip","md5":"7e4ee606ec65839397f4e2714f122ddd","size":77244}],"count":3444},{"num":"2.5","id":600801372,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"sitemap\u751f\u6210\u5668","p_index":"sitemap","ps":"\u5b9a\u65f6\u6279\u91cf\u751f\u6210\u7f51\u7ad9\u5730\u56fe+\u63a8\u9001\u767e\u5ea6\u3001\u795e\u9a6c\u3010v5.0\u52a0\u5165\u5206\u9875\u6293\u53d6\u3011?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-39780-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191010\/12ae100cb6da09c45ebb64c383f17daa.png","price":9.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1570672961,"state":0,"sort":2.5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801372,"version":"5.3","version_msg":"\u4fee\u590d\u7ad9\u70b9\u8fc7\u591a\u65f6\u7684\u6837\u5f0f\u95ee\u9898","f_path":"other\/20220829\/d9fd4535df60f3c57be6c8f59d9154fa.zip","f_md5":"2aa87ddcfbe2feb37a45c0224760024f","f_size":3166867,"type":10,"endtime":0,"score":"2.5","name":"sitemap","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/sitemap","uninsatll_checks":"\/www\/server\/panel\/plugin\/sitemap","compile_args":0,"version_coexist":0,"manager_version":"5","c_manager_version":"3","versions":[{"m_version":"5","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u7ad9\u70b9\u8fc7\u591a\u65f6\u7684\u6837\u5f0f\u95ee\u9898","download":"other\/20220829\/d9fd4535df60f3c57be6c8f59d9154fa.zip","md5":"2aa87ddcfbe2feb37a45c0224760024f","size":3166867}],"count":3080},{"num":"3.0","id":600801436,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7f51\u5740\u63a8\u9001","p_index":"urlpush","ps":"\u81ea\u52a8\u6293\u53d6\u7f51\u5740\u4e0e\u5730\u56fe\u5e76\u81ea\u52a8\u63a8\u9001\uff0c\u652f\u6301\u767e\u5ea6\/\u5934\u6761\/\u5fc5\u5e94\/\u795e\u9a6c?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-47424-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210722\/717d299cc12586b1ceddc0f26591fdb2.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1577637443,"state":0,"sort":3,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801436,"version":"5.2","version_msg":"\u7d27\u6025\u4fee\u590d\u5355\u7ad9\u4efb\u52a1\u4e0d\u751f\u6548\u95ee\u9898\uff0c\u671b\u65e9\u65e5\u5ba1\u6838","f_path":"other\/20230211\/b910583a7ec3b0dc33a3c37d9d964f04.zip","f_md5":"ad1e1fab7602d952ac952c911b4e943e","f_size":2262849,"type":10,"endtime":0,"score":"3.0","name":"urlpush","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/urlpush","uninsatll_checks":"\/www\/server\/panel\/plugin\/urlpush","compile_args":0,"version_coexist":0,"manager_version":"5","c_manager_version":"2","versions":[{"m_version":"5","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u7d27\u6025\u4fee\u590d\u5355\u7ad9\u4efb\u52a1\u4e0d\u751f\u6548\u95ee\u9898\uff0c\u671b\u65e9\u65e5\u5ba1\u6838","download":"other\/20230211\/b910583a7ec3b0dc33a3c37d9d964f04.zip","md5":"ad1e1fab7602d952ac952c911b4e943e","size":2262849}],"count":2747},{"num":"3.0","id":600801459,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u78c1\u76d8\u5b89\u5168\u6302\u8f7d","p_index":"disktool","ps":"\u4e00\u952e\u78c1\u76d8\u6302\u8f7d\uff0c\u66f4\u4e13\u4e1a\u66f4\u5b89\u5168\uff0c\u652f\u6301\u5f00\u673a\u6302\u8f7d?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-43836-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200210\/50e8a3b77777038f72a3b1467ddca264.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1581311083,"state":0,"sort":3,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801459,"version":"2.0","version_msg":"\u4fee\u590d\u4e00\u5904\u9519\u8bef\u63d0\u9192","f_path":"other\/20220804\/6afb894077aab37b99b1e6ed9cf5b0da.zip","f_md5":"8a26e105600a1af074f2d22af6fd84ae","f_size":17254,"type":10,"endtime":0,"score":"3.0","name":"disktool","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/disktool","uninsatll_checks":"\/www\/server\/panel\/plugin\/disktool","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"0","versions":[{"m_version":"2","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u4e00\u5904\u9519\u8bef\u63d0\u9192","download":"other\/20220804\/6afb894077aab37b99b1e6ed9cf5b0da.zip","md5":"8a26e105600a1af074f2d22af6fd84ae","size":17254}],"count":2571},{"num":"4.3","id":600801433,"uid":14729,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"GiteaForBt","p_index":"btgitea","ps":"\u4e00\u6b3e\u975e\u5e38\u8f7b\u91cf\u5e76\u4e14\u529f\u80fd\u5f3a\u5927\u7684GIT\u793e\u533a\u8f6f\u4ef6\u3002?<\/a>","author":"\u507b\u5138\u5c0f\u5352","home":"https:\/\/blog.liushuai.cq.cn\/article\/detail\/2","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201013\/58a8eb4d0c850534ed00e5a2123d53d7.png","price":0.68,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1576840932,"state":0,"sort":4.3,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801433,"version":"0.7.3","version_msg":"1\u3001\u7d27\u6025\u4fee\u590dwindows\u7248\u65e0\u6cd5\u6b63\u5e38\u505c\u6b62\u670d\u52a1bug 2\u3001windows\u7248\u672c\u83b7\u53d6gitea\u72b6\u6001\u6709\u5ef6\u8fdf\uff0c\u5c06windows\u7248\u672c\u6682\u65f6\u53bb\u6389\u91cd\u542f\u6309\u94ae\uff0c\u53ea\u4fdd\u7559\u542f\u52a8\u548c\u505c\u6b62\u6309\u94ae","f_path":"other\/20221205\/1be6cbcec43a2d0b5a88ee08ae780cbd.zip","f_md5":"7a7038cef878b5e1bf480083304b6218","f_size":1213055,"type":10,"endtime":0,"score":"4.3","name":"btgitea","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/btgitea","uninsatll_checks":"\/www\/server\/panel\/plugin\/btgitea","compile_args":0,"version_coexist":0,"manager_version":"0","c_manager_version":"7.3","versions":[{"m_version":"0","version":"7.3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1\u3001\u7d27\u6025\u4fee\u590dwindows\u7248\u65e0\u6cd5\u6b63\u5e38\u505c\u6b62\u670d\u52a1bug 2\u3001windows\u7248\u672c\u83b7\u53d6gitea\u72b6\u6001\u6709\u5ef6\u8fdf\uff0c\u5c06windows\u7248\u672c\u6682\u65f6\u53bb\u6389\u91cd\u542f\u6309\u94ae\uff0c\u53ea\u4fdd\u7559\u542f\u52a8\u548c\u505c\u6b62\u6309\u94ae","download":"other\/20221205\/1be6cbcec43a2d0b5a88ee08ae780cbd.zip","md5":"7a7038cef878b5e1bf480083304b6218","size":1213055}],"count":1732},{"num":"5.0","id":600801658,"uid":351620,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5b9d\u5854west_fss","p_index":"west_fss","ps":"\u6302\u8f7d\u897f\u90e8\u6570\u7801fss,\u652f\u6301davfs2\u6302\u8f7d\u7684\u5bf9\u8c61\u5b58\u50a8\u53ef\u4ee5\u4f7f\u7528?<\/a>","author":"\u65e0\u4f9d","home":"#","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210203\/553219c79074bc827f5011b1faa2189b.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1612323165,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801658,"version":"1.1","version_msg":"\u4f18\u5316\u4e86\u754c\u9762\uff0c\u8c03\u6574\u4e86\u53cb\u597d\u62a5\u9519\uff0c\u4fee\u590d\u4e86\u5378\u8f7d\u4e0d\u4f1a\u5220\u9664\u81ea\u52a8\u6302\u8f7d","f_path":"other\/20210203\/c286e7562a567b6b5ea5f695926ee9d7.zip","f_md5":"06124d90d35d0ba6da22292e36625315","f_size":10062,"type":10,"endtime":0,"score":"5.0","name":"west_fss","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/west_fss","uninsatll_checks":"\/www\/server\/panel\/plugin\/west_fss","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u4e86\u754c\u9762\uff0c\u8c03\u6574\u4e86\u53cb\u597d\u62a5\u9519\uff0c\u4fee\u590d\u4e86\u5378\u8f7d\u4e0d\u4f1a\u5220\u9664\u81ea\u52a8\u6302\u8f7d","download":"other\/20210203\/c286e7562a567b6b5ea5f695926ee9d7.zip","md5":"06124d90d35d0ba6da22292e36625315","size":10062}],"count":1707},{"num":"1.0","id":600801492,"uid":112472,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u9762\u677fJSBridge\u5b89\u88c5\u5668","p_index":"panel_jsbridge_installer","ps":"\u672c\u5b89\u88c5\u5668\u63d2\u4ef6\u4e3a\u67d0\u4e9b\u63d2\u4ef6\u7684\u524d\u7f6e\u63d2\u4ef6?<\/a>","author":"xieyi1393","home":"","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200326\/6f437e4f013b783cac17842f2b79478b.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585186048,"state":0,"sort":1,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801492,"version":"1.1","version_msg":"\u5bf9Py3\u652f\u6301(Tab\u7f29\u8fdb\u4fee\u590d)","f_path":"other\/20200330\/a38f5b9771ce321be9703a98e2e53909.zip","f_md5":"eabed272d4af6547f1d059527ad51771","f_size":9896,"type":10,"endtime":0,"score":"1.0","name":"panel_jsbridge_installer","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/panel_jsbridge_installer","uninsatll_checks":"\/www\/server\/panel\/plugin\/panel_jsbridge_installer","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5bf9Py3\u652f\u6301(Tab\u7f29\u8fdb\u4fee\u590d)","download":"other\/20200330\/a38f5b9771ce321be9703a98e2e53909.zip","md5":"eabed272d4af6547f1d059527ad51771","size":9896}],"count":1631},{"num":null,"id":600801730,"uid":466205,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u57df\u540dwhois\u67e5\u8be2","p_index":"whois","ps":"\u67e5\u8be2\u57df\u540dwhois\u4fe1\u606f?<\/a>","author":"\u7231\u540d\u7f51","home":"https:\/\/www.bt.cn\/bbs\/thread-70133-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210609\/bcca34b16e61b603e04b3c64039b1f5e.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1623060833,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801730,"version":"1.0.1","version_msg":"\u67e5\u8be2\u57df\u540dwhois\u4fe1\u606f1.0.1\u7248\u672c","f_path":"other\/20210609\/e2699581be38d4042832dff24e8f6c70.zip","f_md5":"5a934dcb8af895a85ecc904e4431cbdb","f_size":27038,"type":10,"endtime":0,"score":null,"name":"whois","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/whois","uninsatll_checks":"\/www\/server\/panel\/plugin\/whois","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0.1","versions":[{"m_version":"1","version":"0.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u67e5\u8be2\u57df\u540dwhois\u4fe1\u606f1.0.1\u7248\u672c","download":"other\/20210609\/e2699581be38d4042832dff24e8f6c70.zip","md5":"5a934dcb8af895a85ecc904e4431cbdb","size":27038}],"count":1605},{"num":null,"id":600801438,"uid":80776,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Git\u8fdc\u7a0b\u4ed3\u5e93\u90e8\u7f72\u5de5\u5177","p_index":"git_repository_deploy","ps":"\u81ea\u52a8\u90e8\u7f72\u8fdc\u7a0bGit\u4ed3\u5e93\uff08github\u7b49\uff09\u4ee3\u7801\u81f3\u670d\u52a1\u5668\u7f51\u7ad9\u76ee\u5f55?<\/a>","author":"\u6280\u672f\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-42294-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191230\/0596328af186e6272f09889cfcca5843.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1577718627,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801438,"version":"2.7","version_msg":"\u4fee\u590d\u63d2\u4ef6\u5b89\u88c5\u95ee\u9898","f_path":"other\/20210804\/9ec9483f760f50883d8ba54ff2ef6703.zip","f_md5":"9760c137f4872bc610732285f1a712fe","f_size":43507,"type":10,"endtime":0,"score":null,"name":"git_repository_deploy","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/git_repository_deploy","uninsatll_checks":"\/www\/server\/panel\/plugin\/git_repository_deploy","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"7","versions":[{"m_version":"2","version":"7","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u63d2\u4ef6\u5b89\u88c5\u95ee\u9898","download":"other\/20210804\/9ec9483f760f50883d8ba54ff2ef6703.zip","md5":"9760c137f4872bc610732285f1a712fe","size":43507}],"count":1387},{"num":null,"id":600801602,"uid":24933,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Jexus Http Web Server","p_index":"jexus","ps":"Jexus Http Web Server?<\/a>","author":"githall","home":"https:\/\/www.bt.cn\/bbs\/thread-56405-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210127\/a93b54e07f853332b6a402c8cd154ad9.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1601615814,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801602,"version":"1.0","version_msg":"Jexus Http Web Server","f_path":"other\/20230207\/b6fc4fd4029526d99639c03e75b47ba1.zip","f_md5":"10df2704176de13755a29ef0a5f4a795","f_size":40990526,"type":10,"endtime":0,"score":null,"name":"jexus","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/jexus","uninsatll_checks":"\/www\/server\/panel\/plugin\/jexus","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"Jexus Http Web Server","download":"other\/20230207\/b6fc4fd4029526d99639c03e75b47ba1.zip","md5":"10df2704176de13755a29ef0a5f4a795","size":40990526}],"count":1302},{"num":"4.0","id":600801369,"uid":80776,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SVN\u9879\u76ee\u90e8\u7f72\u5de5\u5177","p_index":"svn_deploy","ps":"\u81ea\u52a8\u90e8\u7f72\u672c\u5730SVN\u4ed3\u5e93\u4ee3\u7801\u81f3\u670d\u52a1\u5668\u7f51\u7ad9\u76ee\u5f55?<\/a>","author":"\u6280\u672f\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-38166-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191008\/2c48dbb3f2e21fc2eb19d68e0826d162.png","price":6.66,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1570500992,"state":0,"sort":4,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801369,"version":"2.2","version_msg":"\u4f18\u5316\u63d2\u4ef6\u517c\u5bb9\u6027","f_path":"other\/20220618\/dbbda3e88634024ee13800d047003431.zip","f_md5":"4bb56532e8c7445be5b19fbbf3fc1cf1","f_size":28892,"type":10,"endtime":0,"score":"4.0","name":"svn_deploy","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/svn_deploy","uninsatll_checks":"\/www\/server\/panel\/plugin\/svn_deploy","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"2","versions":[{"m_version":"2","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u63d2\u4ef6\u517c\u5bb9\u6027","download":"other\/20220618\/dbbda3e88634024ee13800d047003431.zip","md5":"4bb56532e8c7445be5b19fbbf3fc1cf1","size":28892}],"count":1098},{"num":"5.0","id":600801846,"uid":312058,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"BOCE.COM\u68c0\u6d4b\u5de5\u5177","p_index":"bocecom","ps":"\u7f51\u7ad9\u6d4b\u901f,PING\u68c0\u6d4b,DNS\u67e5\u8be2,\u52ab\u6301\/\u88ab\u5899\/\u6c61\u67d3\u68c0\u6d4b?<\/a>","author":"DNS.COM\u57df\u540d\u89e3\u6790\u4e13\u5bb6","home":"https:\/\/www.bt.cn\/bbs\/thread-105418-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221213\/9c566b4cf1bc1c56f637d288747abda9.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1670901838,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801846,"version":"1.0.5","version_msg":"BOCE.COM\u7f51\u7ad9\u6d4b\u901f","f_path":"other\/20221214\/04113db7e6256826405bb3044a7dc722.zip","f_md5":"af231e8b6971666b7ad8ba6cbefdeeee","f_size":14356,"type":10,"endtime":0,"score":"5.0","name":"bocecom","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/bocecom","uninsatll_checks":"\/www\/server\/panel\/plugin\/bocecom","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0.5","versions":[{"m_version":"1","version":"0.5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"BOCE.COM\u7f51\u7ad9\u6d4b\u901f","download":"other\/20221214\/04113db7e6256826405bb3044a7dc722.zip","md5":"af231e8b6971666b7ad8ba6cbefdeeee","size":14356}],"count":1087},{"num":null,"id":600801381,"uid":80776,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SVN\u7ba1\u7406\u5668","p_index":"svn","ps":"\u672c\u5730SVN\u4ed3\u5e93\u3001\u8d26\u53f7\u3001\u6743\u9650\u3001\u94a9\u5b50\u7ba1\u7406\u5de5\u5177\uff0c\u53ef\u81ea\u5b9a\u4e49\u94a9\u5b50?<\/a>","author":"\u6280\u672f\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-38535-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191014\/a5a91d5b7503ac6fc40b587c18f884cb.png","price":6.66,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1571048327,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801381,"version":"2.2","version_msg":"\u4f18\u5316\u63d2\u4ef6\u517c\u5bb9\u6027","f_path":"other\/20220618\/d5841964fde703d6e37831feba8a86ea.zip","f_md5":"0c8d87029250ee827f040b6673cc022d","f_size":29755,"type":10,"endtime":0,"score":null,"name":"svn","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/svn","uninsatll_checks":"\/www\/server\/panel\/plugin\/svn","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"2","versions":[{"m_version":"2","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u63d2\u4ef6\u517c\u5bb9\u6027","download":"other\/20220618\/d5841964fde703d6e37831feba8a86ea.zip","md5":"0c8d87029250ee827f040b6673cc022d","size":29755}],"count":1038},{"num":"3.0","id":600801384,"uid":172099,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5927\u65e5\u5fd7\u6587\u4ef6\u67e5\u770b\u5668","p_index":"mflogview","ps":"\u5927\u65e5\u5fd7\u6587\u4ef6\u67e5\u770b\u5668\uff0c\u542bnginx\u65e5\u5fd7\u5206\u6790?<\/a>","author":"\u7267\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-38777-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191019\/57f47dfa77ad9b958fdb0682c44dd2dd.png","price":6,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1571491200,"state":0,"sort":3,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801384,"version":"1.1.4","version_msg":"\u4fee\u6539\u9ed8\u8ba4\u641c\u7d22\u8def\u5f84","f_path":"other\/20200110\/91e414426a580e4ef83fd3087c5b7a49.zip","f_md5":"8cd2522773a6120271705b3cc596a8a6","f_size":226952,"type":10,"endtime":0,"score":"3.0","name":"mflogview","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mflogview","uninsatll_checks":"\/www\/server\/panel\/plugin\/mflogview","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1.4","versions":[{"m_version":"1","version":"1.4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u6539\u9ed8\u8ba4\u641c\u7d22\u8def\u5f84","download":"other\/20200110\/91e414426a580e4ef83fd3087c5b7a49.zip","md5":"8cd2522773a6120271705b3cc596a8a6","size":226952}],"count":888},{"num":"4.9","id":600801404,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u4e03\u725b\u4e91\u5b58\u50a8\u5bf9\u8c61\u591a\u70b9\u6302\u8f7d\u5de5\u5177\u517c\u5bb9\u963f\u91cc\u4e91\u3001\u4eac\u4e1c\u4e91","p_index":"qnoss","ps":"\u5b58\u50a8\u5bf9\u8c61\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u517c\u5bb9\u4e03\u725b\u3001\u963f\u91cc\u3001\u4eac\u4e1c\u3001\u817e\u8baf\u3001\u767e\u5ea6\u4e91\u3002?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-40067-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191115\/a6f31569f41a4a331d0a7d778b3972ab.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1573788032,"state":0,"sort":4.9,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801404,"version":"2.10","version_msg":"\u4e03\u725b\u4e91\u7b49\u5b58\u50a8\u5bf9\u8c61\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u76ee\u524d\u517c\u5bb9\u963f\u91cc\u4e91\u3001\u767e\u5ea6\u4e91\u3001\u4eac\u4e1c\u4e91\u3001\u817e\u8baf\u4e91\uff0c\u5b58\u50a8\u5bf9\u8c61\u5f53\u4f5c\u672c\u5730\u76d8\u4f7f\u7528","f_path":"other\/20200216\/47bd29243bc2ae1dd0c20cc74ff9cd30.zip","f_md5":"276efa84c20aff9ae1d98099be6a257d","f_size":8202,"type":10,"endtime":0,"score":"4.9","name":"qnoss","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/qnoss","uninsatll_checks":"\/www\/server\/panel\/plugin\/qnoss","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"10","versions":[{"m_version":"2","version":"10","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4e03\u725b\u4e91\u7b49\u5b58\u50a8\u5bf9\u8c61\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u76ee\u524d\u517c\u5bb9\u963f\u91cc\u4e91\u3001\u767e\u5ea6\u4e91\u3001\u4eac\u4e1c\u4e91\u3001\u817e\u8baf\u4e91\uff0c\u5b58\u50a8\u5bf9\u8c61\u5f53\u4f5c\u672c\u5730\u76d8\u4f7f\u7528","download":"other\/20200216\/47bd29243bc2ae1dd0c20cc74ff9cd30.zip","md5":"276efa84c20aff9ae1d98099be6a257d","size":8202}],"count":836},{"num":"4.8","id":600801527,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u963f\u91cc\u4e91\u5bf9\u8c61\u5b58\u50a8OSS\u81ea\u52a8\u6302\u8f7d\u5de5\u5177","p_index":"aloss","ps":"\u963f\u91cc\u4e91\u5bf9\u8c61\u5b58\u50a8OSS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-48829-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200502\/e23e5d4fef12606e3ce935f00eaf3dbe.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1588393567,"state":0,"sort":4.8,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801527,"version":"1.0","version_msg":"\u963f\u91cc\u4e91\u5bf9\u8c61\u5b58\u50a8OSS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d","f_path":"other\/20200502\/dc8e4cf2c3228022843f77264a91feaa.zip","f_md5":"9281cb434229e53f48b58549f41e76b2","f_size":29813,"type":10,"endtime":0,"score":"4.8","name":"aloss","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/aloss","uninsatll_checks":"\/www\/server\/panel\/plugin\/aloss","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u963f\u91cc\u4e91\u5bf9\u8c61\u5b58\u50a8OSS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d","download":"other\/20200502\/dc8e4cf2c3228022843f77264a91feaa.zip","md5":"9281cb434229e53f48b58549f41e76b2","size":29813}],"count":775},{"num":"1.8","id":600801302,"uid":4048,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SEO\u5de5\u5177\u7bb1","p_index":"seos","ps":"robots\/\u767e\u5ea6\u63a8\u9001\u7b49\u3010\u6682\u505c\u66f4\u65b0\uff0c\u65e7\u529f\u80fd\u6b63\u5e38\u53ef\u7528\u3011?<\/a>","author":"Licoy","home":"https:\/\/www.bt.cn\/bbs\/thread-34772-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200315\/d92c6611e3678db4bf3f85e0cc9d37cf.png","price":4.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1563521356,"state":0,"sort":1.8,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801302,"version":"2.1","version_msg":"\u79fb\u9664\u8fc7\u671f\u63a5\u53e3\u529f\u80fd\uff0c\u5b8c\u5584\u7a33\u5b9a\u6027\uff01","f_path":"other\/20200329\/012f3686f87767d37b50853868530769.zip","f_md5":"ff03833a448b38d4e06a1639d7e0cc75","f_size":11788,"type":10,"endtime":0,"score":"1.8","name":"seos","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/seos","uninsatll_checks":"\/www\/server\/panel\/plugin\/seos","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"1","versions":[{"m_version":"2","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u79fb\u9664\u8fc7\u671f\u63a5\u53e3\u529f\u80fd\uff0c\u5b8c\u5584\u7a33\u5b9a\u6027\uff01","download":"other\/20200329\/012f3686f87767d37b50853868530769.zip","md5":"ff03833a448b38d4e06a1639d7e0cc75","size":11788}],"count":773},{"num":"5.0","id":600801803,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u718a\u732b\u7f51\u7ad9\u65e5\u5fd7\u5206\u6790","p_index":"lotusweblog","ps":"\u66f4\u4e13\u4e1a\u66f4\u5b9e\u7528\u7684\u65e5\u5fd7\u5206\u6790\u63d2\u4ef6\uff0c\u652f\u6301Apache\/Nginx?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-90125-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220416\/3201116e1083d36b2d433d1530913731.png","price":9.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1650088893,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801803,"version":"2.6","version_msg":"\u8be6\u7ec6\u8bb0\u5f55\u52a0\u5165\u3010\u62c9\u9ed1\u3011\u64cd\u4f5c,\u52a0\u5165\u3010\u5b9e\u65f6\u76d1\u63a7\u3011\u65b0\u529f\u80fd","f_path":"other\/20230310\/9c0b7df4c4fd8d9807216178860edf9e.zip","f_md5":"ec14538b35c58b3d79bcb1871e76c167","f_size":8545963,"type":10,"endtime":0,"score":"5.0","name":"lotusweblog","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/lotusweblog","uninsatll_checks":"\/www\/server\/panel\/plugin\/lotusweblog","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"6","versions":[{"m_version":"2","version":"6","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u8be6\u7ec6\u8bb0\u5f55\u52a0\u5165\u3010\u62c9\u9ed1\u3011\u64cd\u4f5c,\u52a0\u5165\u3010\u5b9e\u65f6\u76d1\u63a7\u3011\u65b0\u529f\u80fd","download":"other\/20230310\/9c0b7df4c4fd8d9807216178860edf9e.zip","md5":"ec14538b35c58b3d79bcb1871e76c167","size":8545963}],"count":768},{"num":null,"id":600801845,"uid":312058,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"DNS.COM\u667a\u80fd\u89e3\u6790","p_index":"dnscom","ps":"\u5e1d\u6069\u601dDNS.COM\u667a\u80fd\u57df\u540d\u89e3\u6790\u670d\u52a1\u3002?<\/a>","author":"DNS.COM\u57df\u540d\u89e3\u6790\u4e13\u5bb6","home":"https:\/\/www.bt.cn\/bbs\/thread-104447-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221128\/e1ce6cfd922c54301f4e360c1743a02e.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1669604954,"state":0,"sort":0,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801845,"version":"1.0.4","version_msg":"DNS.COM\u667a\u80fd\u89e3\u67901.0.4","f_path":"other\/20221207\/1331c9a9c1079b0c44bb85e619b48dac.zip","f_md5":"861d83e84c3963dd1e24fb6ed2d68fb1","f_size":29325,"type":10,"endtime":0,"score":null,"name":"dnscom","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/dnscom","uninsatll_checks":"\/www\/server\/panel\/plugin\/dnscom","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0.4","versions":[{"m_version":"1","version":"0.4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"DNS.COM\u667a\u80fd\u89e3\u67901.0.4","download":"other\/20221207\/1331c9a9c1079b0c44bb85e619b48dac.zip","md5":"861d83e84c3963dd1e24fb6ed2d68fb1","size":29325}],"count":742},{"num":"5.0","id":600801321,"uid":167448,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u6279\u91cf\u5efa\u7ad9","p_index":"y6w_createwebs","ps":"\u518d\u65e0\u66f4\u65b0\uff0c\u5982\u9700\u8981QQ:1057916173?<\/a>","author":"\u732a\u5728\u5929\u4e0a\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-35844-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190809\/3f8f90fde77213080143e63b668d8c77.png","price":1,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1565286060,"state":0,"sort":5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801321,"version":"1.0","version_msg":"\u521d\u59cb\u7248\u672c","f_path":"other\/20190809\/896a75a8f551c4ef5a135ae84ee767ff.zip","f_md5":"fe4a78f5822e0229803366e714ee8333","f_size":9792,"type":10,"endtime":0,"score":"5.0","name":"y6w_createwebs","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/y6w_createwebs","uninsatll_checks":"\/www\/server\/panel\/plugin\/y6w_createwebs","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u521d\u59cb\u7248\u672c","download":"other\/20190809\/896a75a8f551c4ef5a135ae84ee767ff.zip","md5":"fe4a78f5822e0229803366e714ee8333","size":9792}],"count":668},{"num":"5.0","id":600801489,"uid":48984,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u6570\u636e\u7ed3\u6784\u6bd4\u5bf9\u5de5\u5177","p_index":"cloud_db_diff","ps":"\u4f7f\u7528\u6b64\u5de5\u5177\u53ef\u5c06Mysql\u6570\u636e\u5e93AB\u4e24\u8868\u7684\u6570\u636e\u7ed3\u6784\u8fdb\u884c\u4e00\u952e\u540c\u6b65?<\/a>","author":"\u725b\u90fd\u6559\u9192\u4e86","home":"https:\/\/www.bt.cn\/bbs\/thread-46480-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200325\/4f20682fd226e85ea0e7e8618a4697f6.png","price":8.88,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585072830,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801489,"version":"1.2","version_msg":"\u4fee\u590d\u81ea\u52a8\u62c9\u53d6\u6570\u636e\u5e93\u5217\u8868\u65f6\uff0c\u8d85\u8fc720\u4e2a\u4e0d\u663e\u793a\u7684\u95ee\u9898","f_path":"other\/20201020\/af76a7f1d09a993a4256637aafc0b693.zip","f_md5":"b500f622be896913908a41f1a1eba032","f_size":10215,"type":10,"endtime":0,"score":"5.0","name":"cloud_db_diff","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/cloud_db_diff","uninsatll_checks":"\/www\/server\/panel\/plugin\/cloud_db_diff","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u81ea\u52a8\u62c9\u53d6\u6570\u636e\u5e93\u5217\u8868\u65f6\uff0c\u8d85\u8fc720\u4e2a\u4e0d\u663e\u793a\u7684\u95ee\u9898","download":"other\/20201020\/af76a7f1d09a993a4256637aafc0b693.zip","md5":"b500f622be896913908a41f1a1eba032","size":10215}],"count":647},{"num":null,"id":600801363,"uid":80776,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Git\u9879\u76ee\u90e8\u7f72\u5de5\u5177","p_index":"git_deploy","ps":"\u81ea\u52a8\u90e8\u7f72\u672c\u5730Git\u4ed3\u5e93\u6307\u5b9a\u5206\u652f\u7684\u4ee3\u7801\u81f3\u670d\u52a1\u5668\u7f51\u7ad9\u76ee\u5f55?<\/a>","author":"\u6280\u672f\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-37793-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190925\/987b50979ba8c2781c62d1ddbe773cef.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1569427610,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801363,"version":"2.2","version_msg":"\u4f18\u5316\u516c\u94a5\u6307\u7eb9\u83b7\u53d6\u903b\u8f91","f_path":"other\/20220827\/7e5318e4896d4eef34778b0cc3cb68c7.zip","f_md5":"b89323cb860e89dc66e639b65897eb0f","f_size":38989,"type":10,"endtime":0,"score":null,"name":"git_deploy","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/git_deploy","uninsatll_checks":"\/www\/server\/panel\/plugin\/git_deploy","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"2","versions":[{"m_version":"2","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u516c\u94a5\u6307\u7eb9\u83b7\u53d6\u903b\u8f91","download":"other\/20220827\/7e5318e4896d4eef34778b0cc3cb68c7.zip","md5":"b89323cb860e89dc66e639b65897eb0f","size":38989}],"count":622},{"num":null,"id":600801463,"uid":27006,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"vsftpd \u7ba1\u7406\u5668","p_index":"bt_vsftpd","ps":"\u57fa\u4e8evsftpd\u5f00\u53d1\u7684\u63d2\u4ef6,\u652f\u6301\u591a\u7528\u6237\u3001\u9650\u901f\u3001\u9650\u5bb9\u91cf\u7b49\u64cd\u4f5c?<\/a>","author":"IW3C","home":"https:\/\/www.bt.cn\/bbs\/thread-44233-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200218\/ba006d057f070951a7b1cbe75e50ec65.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1581994931,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801463,"version":"1.5","version_msg":"\u652f\u6301TLS\/SSL \u548c \u6a21\u677f\u53c2\u6570","f_path":"other\/20220805\/47e4042a0cee15656d150d4138df432f.zip","f_md5":"7b8322a644247e044bf8e6b348be66d8","f_size":35052,"type":10,"endtime":0,"score":null,"name":"bt_vsftpd","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/bt_vsftpd","uninsatll_checks":"\/www\/server\/panel\/plugin\/bt_vsftpd","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"5","versions":[{"m_version":"1","version":"5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u652f\u6301TLS\/SSL \u548c \u6a21\u677f\u53c2\u6570","download":"other\/20220805\/47e4042a0cee15656d150d4138df432f.zip","md5":"7b8322a644247e044bf8e6b348be66d8","size":35052}],"count":552},{"num":"3.0","id":600801383,"uid":172099,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"\u56fe\u7247\u6279\u91cf\u6c34\u5370","p_index":"mfwatermark","ps":"\u56fe\u7247\u6279\u91cf\u6c34\u5370\u53ca\u5404\u79cd\u538b\u7f29?<\/a>","author":"\u7267\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-38586-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191015\/3739007955dbad246abd1bc51a3ce9cc.png","price":10,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1571131328,"state":0,"sort":3,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801383,"version":"1.4.3","version_msg":"1)\u4f18\u5316png,gif\u538b\u7f29 2)\u589e\u52a0\u5904\u7406\u65e5\u5fd7","f_path":"other\/20210716\/2a9dd5936148dfbb1b290c249f4a5a1b.zip","f_md5":"b11ebef41844f378a2001aee49a0b18b","f_size":15712692,"type":10,"endtime":0,"score":"3.0","name":"mfwatermark","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mfwatermark","uninsatll_checks":"\/www\/server\/panel\/plugin\/mfwatermark","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"4.3","versions":[{"m_version":"1","version":"4.3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1)\u4f18\u5316png,gif\u538b\u7f29 2)\u589e\u52a0\u5904\u7406\u65e5\u5fd7","download":"other\/20210716\/2a9dd5936148dfbb1b290c249f4a5a1b.zip","md5":"b11ebef41844f378a2001aee49a0b18b","size":15712692}],"count":501},{"num":"3.7","id":600801685,"uid":171736,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u571f\u62e8\u9f20\u7f51\u7ad9\u65e5\u8bb0\u5206\u6790","p_index":"tuboshufenxi","ps":"\u7ad9\u70b9\u65e5\u8bb0,\u9632\u91c7\u96c6,\u6574\u7ad9URL\u81ea\u52a8,\u641c\u72d7\u63a8\u9001,\u5206\u6790\u63a8\u9001\u4e8c\u5408\u4e00?<\/a>","author":"\u571f\u62e8\u9f20","home":"https:\/\/www.bt.cn\/bbs\/thread-65678-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210317\/a1e7c8ef4e94babe22b6972f7453ed34.png","price":13,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1615971459,"state":0,"sort":3.7,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801685,"version":"9.0","version_msg":"\u66f4\u65b0\u7248\u672c\u4fee\u590d\u95ee\u9898","f_path":"other\/20220825\/5250867dacb0f4c833029b7e882dc229.zip","f_md5":"4207167ad91590a004872d84cb8916ae","f_size":102913,"type":10,"endtime":0,"score":"3.7","name":"tuboshufenxi","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/tuboshufenxi","uninsatll_checks":"\/www\/server\/panel\/plugin\/tuboshufenxi","compile_args":0,"version_coexist":0,"manager_version":"9","c_manager_version":"0","versions":[{"m_version":"9","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u7248\u672c\u4fee\u590d\u95ee\u9898","download":"other\/20220825\/5250867dacb0f4c833029b7e882dc229.zip","md5":"4207167ad91590a004872d84cb8916ae","size":102913}],"count":486},{"num":"5.0","id":600801453,"uid":79972,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u963f\u91cc\u57df\u540d\u52a8\u6001\u89e3\u6790","p_index":"aliddns","ps":"\u963f\u91cc\u4e91\u57df\u540d\u52a8\u6001\u89e3\u6790\uff0c\u9002\u5408\u6709\u516c\u7f51\u4f46IP\u4e0d\u56fa\u5b9a\u7684\u7528\u6237?<\/a>","author":"\u609f\u7a7a\u6570\u7801","home":"https:\/\/www.bt.cn\/bbs\/thread-43367-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200129\/2588534a9f75e23127bd0e882ae1690f.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1580266851,"state":0,"sort":5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801453,"version":"3.1","version_msg":"\u4fee\u590d\u63d2\u4ef6\u4e0d\u80fd\u6253\u5f00\u7684\u95ee\u9898","f_path":"other\/20200806\/0359a00c4c43f07b5868b7929268e5be.zip","f_md5":"821cda42bdc9083f1a5c1ea7ecfbd554","f_size":929252,"type":10,"endtime":0,"score":"5.0","name":"aliddns","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/aliddns","uninsatll_checks":"\/www\/server\/panel\/plugin\/aliddns","compile_args":0,"version_coexist":0,"manager_version":"3","c_manager_version":"1","versions":[{"m_version":"3","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u63d2\u4ef6\u4e0d\u80fd\u6253\u5f00\u7684\u95ee\u9898","download":"other\/20200806\/0359a00c4c43f07b5868b7929268e5be.zip","md5":"821cda42bdc9083f1a5c1ea7ecfbd554","size":929252}],"count":432},{"num":"3.7","id":600801729,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5b9a\u65f6\u6587\u4ef6\u6e05\u7406","p_index":"autoclear","ps":"\u5b9a\u65f6\u81ea\u52a8\u6e05\u7406\u6587\u4ef6,\u5c0f\u78c1\u76d8\u7684\u798f\u97f3,\u652f\u6301\u591a\u5c42\u6587\u4ef6\u5939\u3001\u81ea\u5b9a\u683c\u5f0f?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-70189-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210603\/4cc55911f65dab0d146352dabbb59053.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1622707120,"state":0,"sort":3.7,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801729,"version":"1.9","version_msg":"\u52a0\u5165\u6e05\u7406\u7edf\u8ba1\uff0c\u4f18\u5316\u8bb0\u5f55\u663e\u793a\uff0c\u6574\u4f53\u754c\u9762\u4f18\u5316","f_path":"other\/20220713\/5e7e289130519d1e17fc670c70f2dc5a.zip","f_md5":"74954c0d6d5913d5269d16fd9a0a4410","f_size":1614601,"type":10,"endtime":0,"score":"3.7","name":"autoclear","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/autoclear","uninsatll_checks":"\/www\/server\/panel\/plugin\/autoclear","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"9","versions":[{"m_version":"1","version":"9","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u52a0\u5165\u6e05\u7406\u7edf\u8ba1\uff0c\u4f18\u5316\u8bb0\u5f55\u663e\u793a\uff0c\u6574\u4f53\u754c\u9762\u4f18\u5316","download":"other\/20220713\/5e7e289130519d1e17fc670c70f2dc5a.zip","md5":"74954c0d6d5913d5269d16fd9a0a4410","size":1614601}],"count":381},{"num":null,"id":600801352,"uid":3671,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5c0f\u6770\u5de5\u5177\u7bb1","p_index":"xjTools","ps":"\u96c6\u6210\u7aef\u53e3\u626b\u63cf\u3001\u7f51\u7ad9\u72b6\u6001\u7801\u68c0\u6d4b\u2026\u2026\u2026\u2026\u4e00\u4e2a\u5c0f\u5de5\u5177?<\/a>","author":"Youngxj","home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&tid=37427","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190918\/85b94a174957d8c2d078f6e58fef02b8.png","price":0.5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1568782508,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801352,"version":"1.0","version_msg":"\u96c6\u6210\u7aef\u53e3\u626b\u63cf\u3001\u7f51\u7ad9\u72b6\u6001\u7801\u68c0\u6d4b\u3001\u7f51\u7ad9\u6e90\u7801\u83b7\u53d6\u3001\u7f51\u7ad9\u6536\u5f55\u6570\u3001\u5173\u952e\u8bcd\u6392\u884c\u3001\u6536\u5f55\u67e5\u8be2\u7684\u4e00\u4e2a\u5c0f\u5de5\u5177","f_path":"other\/20190918\/8d9d72042fbb7a3d64c2b81379620b94.zip","f_md5":"4dda39539dc9074ec3266d411afb0fc3","f_size":658581,"type":10,"endtime":0,"score":null,"name":"xjTools","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/xjTools","uninsatll_checks":"\/www\/server\/panel\/plugin\/xjTools","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u96c6\u6210\u7aef\u53e3\u626b\u63cf\u3001\u7f51\u7ad9\u72b6\u6001\u7801\u68c0\u6d4b\u3001\u7f51\u7ad9\u6e90\u7801\u83b7\u53d6\u3001\u7f51\u7ad9\u6536\u5f55\u6570\u3001\u5173\u952e\u8bcd\u6392\u884c\u3001\u6536\u5f55\u67e5\u8be2\u7684\u4e00\u4e2a\u5c0f\u5de5\u5177","download":"other\/20190918\/8d9d72042fbb7a3d64c2b81379620b94.zip","md5":"4dda39539dc9074ec3266d411afb0fc3","size":658581}],"count":369},{"num":"3.4","id":600801496,"uid":51225,"app_type":1,"p_type":4,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"cloudflare\u81ea\u52a8\u5f00\u76fe","p_index":"autoshield","ps":"\u670d\u52a1\u5668\u906d\u53d7\u653b\u51fb\u65f6\uff0c\u81ea\u52a8\u5f00\u76fe\uff0c\u9632\u6b62\u670d\u52a1\u4e2d\u65ad?<\/a>","author":"xcsoft","home":"https:\/\/www.bt.cn\/bbs\/thread-46825-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200330\/a558018b235958e380eb27385d296672.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585536391,"state":0,"sort":3.4,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801496,"version":"2.0.1","version_msg":"\u4fee\u590d \u8d1f\u8f7d\u83b7\u53d6 \u5b58\u5728\u7684\u95ee\u9898","f_path":"other\/20220128\/6e3cd5c3f95aeeb21298d71d7e2ea93c.zip","f_md5":"027bd50bb3f338acfae4f394bcfb2372","f_size":12666,"type":10,"endtime":0,"score":"3.4","name":"autoshield","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/autoshield","uninsatll_checks":"\/www\/server\/panel\/plugin\/autoshield","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"0.1","versions":[{"m_version":"2","version":"0.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d \u8d1f\u8f7d\u83b7\u53d6 \u5b58\u5728\u7684\u95ee\u9898","download":"other\/20220128\/6e3cd5c3f95aeeb21298d71d7e2ea93c.zip","md5":"027bd50bb3f338acfae4f394bcfb2372","size":12666}],"count":356},{"num":"5.0","id":600801830,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u7f51\u76d8\u81ea\u52a8\u5907\u4efd","p_index":"netdisk","ps":"\u4e00\u952e\u81ea\u52a8\u6279\u91cf\u5907\u4efd\u81f3\u767e\u5ea6\u7f51\u76d8\uff0c\u652f\u6301\u7f51\u7ad9\/\u6570\u636e\u5e93\/\u6587\u4ef6\u5939?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-100873-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220924\/93d91990832155ea602a56e7e6e765c2.png","price":6.5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1663772437,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801830,"version":"1.3","version_msg":"\u517c\u5bb97.9.8\u5bfc\u81f4\u7684mysql\u540c\u6b65\u95ee\u9898","f_path":"other\/20230212\/1b76bcffaeafc1e0899f42e50e998cfa.zip","f_md5":"f994979bafec53d00dceb9ce81bb85de","f_size":1637004,"type":10,"endtime":0,"score":"5.0","name":"netdisk","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/netdisk","uninsatll_checks":"\/www\/server\/panel\/plugin\/netdisk","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3","versions":[{"m_version":"1","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u517c\u5bb97.9.8\u5bfc\u81f4\u7684mysql\u540c\u6b65\u95ee\u9898","download":"other\/20230212\/1b76bcffaeafc1e0899f42e50e998cfa.zip","md5":"f994979bafec53d00dceb9ce81bb85de","size":1637004}],"count":333},{"num":"5.0","id":600801528,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8COS\u81ea\u52a8\u6302\u8f7d\u5de5\u5177","p_index":"txoss","ps":"\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8COS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-48857-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200502\/b5f71be748935aedb7d2211ead1da3d6.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1588406630,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801528,"version":"1.0","version_msg":"\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8COS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d","f_path":"other\/20200502\/2ce65a5eef3ca67e9be8192c3d1aabd5.zip","f_md5":"2dc80b7844fedd62c8c75727faf11dff","f_size":11645,"type":10,"endtime":0,"score":"5.0","name":"txoss","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/txoss","uninsatll_checks":"\/www\/server\/panel\/plugin\/txoss","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8COS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d","download":"other\/20200502\/2ce65a5eef3ca67e9be8192c3d1aabd5.zip","md5":"2dc80b7844fedd62c8c75727faf11dff","size":11645}],"count":323},{"num":"5.0","id":600801641,"uid":109295,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"PHP\u6e90\u7801\u52a0\u5bc6","p_index":"jimjiami","ps":"PHP\u6e90\u7801\u52a0\u5bc6\uff0cPHP\u4ee3\u7801\u52a0\u5bc6\uff0cphp\u52a0\u5bc6?<\/a>","author":"\u8001\u4fca","home":"https:\/\/www.bt.cn\/bbs\/thread-61598-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201225\/282592b4fafdfad2d6725fab79741a01.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1608909915,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801641,"version":"2.1.1","version_msg":"\u66f4\u65b0\u652f\u6301\u5230php8.0\u548cphp8.1","f_path":"other\/20230222\/865f779c91794040c36f3ac4680c2c9d.zip","f_md5":"144a0b1a58c91774cde623d21005b82e","f_size":677362,"type":10,"endtime":0,"score":"5.0","name":"jimjiami","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/jimjiami","uninsatll_checks":"\/www\/server\/panel\/plugin\/jimjiami","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"1.1","versions":[{"m_version":"2","version":"1.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u652f\u6301\u5230php8.0\u548cphp8.1","download":"other\/20230222\/865f779c91794040c36f3ac4680c2c9d.zip","md5":"144a0b1a58c91774cde623d21005b82e","size":677362}],"count":323},{"num":"5.0","id":600801659,"uid":65067,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"HA\u8d1f\u8f7d\u5747\u8861","p_index":"myhaproxy","ps":"\u4e13\u4e1a\u8d1f\u8f7d\u5747\u8861\u5668,\u7b80\u5355\u597d\u7528\uff0c\u4e00\u952e\u8bbe\u7f6e?<\/a>","author":"\u62cd\u62cd\u718axf","home":"https:\/\/www.bt.cn\/bbs\/thread-63801-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210204\/aff2c76fff3dd2fa0e1e3ba6368639d6.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1612415308,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801659,"version":"1.0","version_msg":"\u521d\u59cb\u7248\u672c","f_path":"other\/20210207\/18d4bb660f3f2bf480859e1c867508b6.zip","f_md5":"ec7d45c12c746513470d0764162d56ec","f_size":35673,"type":10,"endtime":0,"score":"5.0","name":"myhaproxy","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/myhaproxy","uninsatll_checks":"\/www\/server\/panel\/plugin\/myhaproxy","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u521d\u59cb\u7248\u672c","download":"other\/20210207\/18d4bb660f3f2bf480859e1c867508b6.zip","md5":"ec7d45c12c746513470d0764162d56ec","size":35673}],"count":322},{"num":"5.0","id":600801625,"uid":14729,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u8ba1\u5212\u4efb\u52a1\u5907\u4efd\u63d2\u4ef6","p_index":"btrenwubeifen","ps":"\u5b9d\u5854\u8ba1\u5212\u4efb\u52a1\u5907\u4efd\u8fd8\u539f\u63d2\u4ef6?<\/a>","author":"\u507b\u5138\u5c0f\u5352","home":"https:\/\/www.bt.cn\/bbs\/thread-61341-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201122\/c7678bdcfde93b622befb7c089465ae3.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1606037870,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801625,"version":"0.2.3","version_msg":"1\u3001\u7d27\u6025\u4fee\u590d\u5168\u91cf\u5907\u4efd\u65f6\u5927\u90e8\u5206\u8ba1\u5212\u4efb\u52a1\u4e22\u5931bug","f_path":"other\/20221204\/711b5148c38077b0d5a4cf306e4cf0ee.zip","f_md5":"5f6516c57c3b120d70b863a2028ee9f9","f_size":561508,"type":10,"endtime":0,"score":"5.0","name":"btrenwubeifen","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/btrenwubeifen","uninsatll_checks":"\/www\/server\/panel\/plugin\/btrenwubeifen","compile_args":0,"version_coexist":0,"manager_version":"0","c_manager_version":"2.3","versions":[{"m_version":"0","version":"2.3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1\u3001\u7d27\u6025\u4fee\u590d\u5168\u91cf\u5907\u4efd\u65f6\u5927\u90e8\u5206\u8ba1\u5212\u4efb\u52a1\u4e22\u5931bug","download":"other\/20221204\/711b5148c38077b0d5a4cf306e4cf0ee.zip","md5":"5f6516c57c3b120d70b863a2028ee9f9","size":561508}],"count":309},{"num":"2.3","id":600801735,"uid":219184,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u56fe\u7247\u6279\u91cf\u5904\u7406\u5de5\u5177","p_index":"imgtools","ps":"\u53ef\u7075\u6d3b\u5904\u7406\u5404\u9879\u590d\u6742\u7684\u56fe\u7247\u538b\u7f29\u4efb\u52a1\uff0c\u4efb\u52a1\u5f0f\u7ba1\u7406?<\/a>","author":"\u98de\u68a6\u4fe1\u606f","home":"https:\/\/www.bt.cn\/bbs\/thread-71558-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210702\/c451a7ba3c2431f4a699614585bbafe2.png","price":16,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1625207738,"state":0,"sort":2.3,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801735,"version":"2.3","version_msg":"\u4fee\u590d\u51fa\u9519\u540e\u505c\u6b62\u7684BUG;\u964d\u4f4ephp\u7248\u672c\u8981\u6c42\uff0c\u76ee\u524d\u53ea\u9700\u8981php7.1\u4ee5\u4e0a\u7248\u672c\u5373\u53ef","f_path":"other\/20211003\/5e0293a26e2b014c38c14f95ece57ed4.zip","f_md5":"18cea91bec7a008c980cf62255759b66","f_size":1399092,"type":10,"endtime":0,"score":"2.3","name":"imgtools","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/imgtools","uninsatll_checks":"\/www\/server\/panel\/plugin\/imgtools","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"3","versions":[{"m_version":"2","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u51fa\u9519\u540e\u505c\u6b62\u7684BUG;\u964d\u4f4ephp\u7248\u672c\u8981\u6c42\uff0c\u76ee\u524d\u53ea\u9700\u8981php7.1\u4ee5\u4e0a\u7248\u672c\u5373\u53ef","download":"other\/20211003\/5e0293a26e2b014c38c14f95ece57ed4.zip","md5":"18cea91bec7a008c980cf62255759b66","size":1399092}],"count":303},{"num":"5.0","id":600801406,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u4e91\u6587\u4ef6\u5b58\u50a8\uff08NFS\/CFS\/NAS\uff09\u6302\u8f7d\u5de5\u5177","p_index":"nfsgo","ps":"\u628a\u4e91\u6587\u4ef6\u670d\u52a1\uff08NFS\/CFS\/NAS\uff09\uff0c\u6302\u8f7d\u5230\u670d\u52a1\u5668\u4f7f\u7528?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-40186-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191118\/331aa690f39edc9f15f64045294e853e.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1574063383,"state":0,"sort":5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801406,"version":"2.0","version_msg":"\u628a\u4e91\u6587\u4ef6\u670d\u52a1\uff08NFS\/CFS\/NAS\uff09\uff0c\u6302\u8f7d\u5230\u670d\u52a1\u5668\u4f7f\u7528,\u589e\u52a0\u4e86\u517c\u5bb9\u6027","f_path":"other\/20200502\/6227d4af43e9d63eebafae555673e212.zip","f_md5":"8c9c192011bbf5ad090cf0957e3668bb","f_size":28546,"type":10,"endtime":0,"score":"5.0","name":"nfsgo","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/nfsgo","uninsatll_checks":"\/www\/server\/panel\/plugin\/nfsgo","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"0","versions":[{"m_version":"2","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u628a\u4e91\u6587\u4ef6\u670d\u52a1\uff08NFS\/CFS\/NAS\uff09\uff0c\u6302\u8f7d\u5230\u670d\u52a1\u5668\u4f7f\u7528,\u589e\u52a0\u4e86\u517c\u5bb9\u6027","download":"other\/20200502\/6227d4af43e9d63eebafae555673e212.zip","md5":"8c9c192011bbf5ad090cf0957e3668bb","size":28546}],"count":279},{"num":"2.5","id":600801510,"uid":303537,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u817e\u8baf\u4e91CDN\u81ea\u52a8\u4e0a\u7ebf","p_index":"tencent_cdn","ps":"\u81ea\u52a8\u4e0b\u7ebf\u8d85\u6d41IP\/\u94fe\u63a5\uff0c\u51cf\u5c11CDN\u88abCC\/DDoS\u653b\u51fb\u7684\u635f\u5931?<\/a>","author":"\u5434\u5148\u68ee","home":"https:\/\/www.bt.cn\/bbs\/thread-47625-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20211124\/d64410f1d4f44a0696056c099d504eb3.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1586691784,"state":0,"sort":2.5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801510,"version":"1.7.0","version_msg":"\u91cd\u5199\u63d2\u4ef6\uff0c\u65b0\u589e\u66f4\u591a\u529f\u80fd\u3002\u5982\u4e0d\u9700\u8981\u65b0\u7248\u529f\u80fd\u53ef\u4e0d\u7528\u5347\u7ea7\uff01","f_path":"other\/20211124\/ad3b3e82a5e60592cad4fd78589b8230.zip","f_md5":"cc1292f33cc012071d1ad14a71d535b4","f_size":1596863,"type":10,"endtime":0,"score":"2.5","name":"tencent_cdn","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/tencent_cdn","uninsatll_checks":"\/www\/server\/panel\/plugin\/tencent_cdn","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"7.0","versions":[{"m_version":"1","version":"7.0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u91cd\u5199\u63d2\u4ef6\uff0c\u65b0\u589e\u66f4\u591a\u529f\u80fd\u3002\u5982\u4e0d\u9700\u8981\u65b0\u7248\u529f\u80fd\u53ef\u4e0d\u7528\u5347\u7ea7\uff01","download":"other\/20211124\/ad3b3e82a5e60592cad4fd78589b8230.zip","md5":"cc1292f33cc012071d1ad14a71d535b4","size":1596863}],"count":253},{"num":"1.0","id":600801478,"uid":65067,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7ad9\u957f\u7ba1\u7406\u5de5\u5177","p_index":"a_site_click","ps":"\u4e00\u952e\u7ba1\u7406\u7f51\u7ad9\uff0c\u591a\u6e90seo\u4f18\u5316\uff0c?<\/a>","author":"\u62cd\u62cd\u718axf","home":"https:\/\/www.bt.cn\/bbs\/thread-46919-1-2.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200315\/eea7e9c23a22857b685ac7a0302a542e.png","price":19.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1584275909,"state":0,"sort":1,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801478,"version":"1.6","version_msg":"\u5220\u9664\u4e2a\u4eba\u6570\u636e","f_path":"other\/20210518\/71b5d5e53eee1b28e0afdc7a67df5716.zip","f_md5":"141696fa664a39069a27e0e7a34105aa","f_size":125394,"type":10,"endtime":0,"score":"1.0","name":"a_site_click","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/a_site_click","uninsatll_checks":"\/www\/server\/panel\/plugin\/a_site_click","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"6","versions":[{"m_version":"1","version":"6","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5220\u9664\u4e2a\u4eba\u6570\u636e","download":"other\/20210518\/71b5d5e53eee1b28e0afdc7a67df5716.zip","md5":"141696fa664a39069a27e0e7a34105aa","size":125394}],"count":245},{"num":"5.0","id":600801742,"uid":697521,"app_type":1,"p_type":4,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"PHP Encoder","p_index":"php_encoder","ps":"php\u4ee3\u7801\u52a0\u5bc6\u4fdd\u62a4,\u9632\u6b62\u6728\u9a6c\u6ce8\u5165?<\/a>","author":"\u9ea6\u4e50","home":"https:\/\/www.bt.cn\/bbs\/thread-73149-1-4.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210807\/49ee4171a20de74dfd69a7728b20b12d.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1627441931,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801742,"version":"1.3.9","version_msg":"-\u66f4\u65b0\uff1a\u52a0\u5f3a\u52a0\u5bc6\u7b97\u6cd5\uff0c\u754c\u9762\u63d0\u793a\u4f18\u5316\uff1b","f_path":"other\/20220524\/4832482fee093afd2001d9490637f893.zip","f_md5":"e0b2c2ec0b6ece346a428d93898f49b1","f_size":5774093,"type":10,"endtime":0,"score":"5.0","name":"php_encoder","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/php_encoder","uninsatll_checks":"\/www\/server\/panel\/plugin\/php_encoder","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3.9","versions":[{"m_version":"1","version":"3.9","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"-\u66f4\u65b0\uff1a\u52a0\u5f3a\u52a0\u5bc6\u7b97\u6cd5\uff0c\u754c\u9762\u63d0\u793a\u4f18\u5316\uff1b","download":"other\/20220524\/4832482fee093afd2001d9490637f893.zip","md5":"e0b2c2ec0b6ece346a428d93898f49b1","size":5774093}],"count":220},{"num":null,"id":600801218,"uid":146379,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7ad9\u70b9\u78c1\u76d8\u914d\u989d\u7ba1\u7406","p_index":"diskquota","ps":"\u53ef\u5bf9\u7ad9\u70b9\u76ee\u5f55\u6216\u81ea\u5b9a\u4e49\u76ee\u5f55\u505a\u4f7f\u7528\u91cf\u914d\u989d,\u5f53\u524d\u4ec5\u652f\u6301XFS\u6587\u4ef6\u7cfb\u7edf?<\/a>","author":"\u5c71\u6c34\u6709\u76f8\u9022","home":"https:\/\/www.bt.cn\/bbs\/thread-30486-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190416\/ac0d8aa620c481be425ea5a008e33480.png","price":4.88,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1555395703,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801218,"version":"1.0","version_msg":"\u53ef\u5bf9\u7ad9\u70b9\u76ee\u5f55\u6216\u81ea\u5b9a\u4e49\u76ee\u5f55\u505a\u4f7f\u7528\u91cf\u914d\u989d,\u5f53\u524d\u4ec5\u652f\u6301XFS\u6587\u4ef6\u7cfb\u7edf","f_path":"other\/20190416\/08003afd16e878db94dce73586b57af1.zip","f_md5":"96a6d7d41f3cf4770cdfd47e6e3ed400","f_size":13988,"type":10,"endtime":0,"score":null,"name":"diskquota","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/diskquota","uninsatll_checks":"\/www\/server\/panel\/plugin\/diskquota","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u53ef\u5bf9\u7ad9\u70b9\u76ee\u5f55\u6216\u81ea\u5b9a\u4e49\u76ee\u5f55\u505a\u4f7f\u7528\u91cf\u914d\u989d,\u5f53\u524d\u4ec5\u652f\u6301XFS\u6587\u4ef6\u7cfb\u7edf","download":"other\/20190416\/08003afd16e878db94dce73586b57af1.zip","md5":"96a6d7d41f3cf4770cdfd47e6e3ed400","size":13988}],"count":210},{"num":"1.0","id":600801389,"uid":172099,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"SSH\/FTP\u78c1\u76d8\u6302\u8f7d","p_index":"mfftpdev","ps":"SSH\/FTP\u78c1\u76d8\u6302\u8f7d(\u6587\u4ef6\u5939\u53ef\u4ee5\u589e\u91cf\u5907\u4efd)?<\/a>","author":"\u7267\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-39350-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191031\/3044f0e8898553b27a3f8e3f39b49829.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1572532464,"state":0,"sort":1,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801389,"version":"1.0","version_msg":"\u517c\u5bb9python27+, centos\u7b49","f_path":"other\/20191031\/688860809fb686e0a7bf1885dba2aaf3.zip","f_md5":"0a0ec426e75ae567ac4428bf0a0b7312","f_size":18255,"type":10,"endtime":0,"score":"1.0","name":"mfftpdev","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mfftpdev","uninsatll_checks":"\/www\/server\/panel\/plugin\/mfftpdev","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u517c\u5bb9python27+, centos\u7b49","download":"other\/20191031\/688860809fb686e0a7bf1885dba2aaf3.zip","md5":"0a0ec426e75ae567ac4428bf0a0b7312","size":18255}],"count":187},{"num":"5.0","id":600801401,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u4e91\u5b58\u50a8\u5bf9\u8c61BOS\u6302\u8f7d\u5de5\u5177","p_index":"bdbos","ps":"\u628a\u767e\u5ea6\u4e91BOS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f53\u4f5c\u672c\u5730\u76d8\u4f7f\u7528\u3002?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-39953-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191113\/087f6342714ae5d298e8a75b87a9cd1f.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1573633058,"state":0,"sort":5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801401,"version":"2.0","version_msg":"\u628a\u767e\u5ea6\u4e91BOS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u53ef\u6302\u8f7d\u591a\u4e2aBOS\uff0c\u5f00\u673a\u81ea\u52a8\u542f\u52a8\uff0c\u52a0\u5f3a\u4e86py3\u7684\u517c\u5bb9\u6027","f_path":"other\/20200503\/0253851756619ad8fc141f0786c57e05.zip","f_md5":"93e4f51e15e2d8e84b21fb54bf5e3851","f_size":28884,"type":10,"endtime":0,"score":"5.0","name":"bdbos","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/bdbos","uninsatll_checks":"\/www\/server\/panel\/plugin\/bdbos","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"0","versions":[{"m_version":"2","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u628a\u767e\u5ea6\u4e91BOS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u53ef\u6302\u8f7d\u591a\u4e2aBOS\uff0c\u5f00\u673a\u81ea\u52a8\u542f\u52a8\uff0c\u52a0\u5f3a\u4e86py3\u7684\u517c\u5bb9\u6027","download":"other\/20200503\/0253851756619ad8fc141f0786c57e05.zip","md5":"93e4f51e15e2d8e84b21fb54bf5e3851","size":28884}],"count":157},{"num":"3.0","id":600801562,"uid":65067,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7ad9\u7fa4\u7ba1\u7406\u5de5\u5177","p_index":"site_cluster","ps":"\u4e00\u952e\u7ba1\u7406\u591a\u4e2a\u7f51\u7ad9seo\u4f18\u5316?<\/a>","author":"\u62cd\u62cd\u718axf","home":"https:\/\/www.bt.cn\/bbs\/thread-52655-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200717\/41ab963f3179ebc75d81b158c4ca4433.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1594990515,"state":0,"sort":3,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801562,"version":"1.3","version_msg":"\u53bb\u6389\u6743\u9650\u8ba4\u8bc1","f_path":"other\/20221111\/9ba82f56193b9e28e70c2557064c4e22.zip","f_md5":"ba0d6a6141f891a772f68a203573bc06","f_size":35982,"type":10,"endtime":0,"score":"3.0","name":"site_cluster","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/site_cluster","uninsatll_checks":"\/www\/server\/panel\/plugin\/site_cluster","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3","versions":[{"m_version":"1","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u53bb\u6389\u6743\u9650\u8ba4\u8bc1","download":"other\/20221111\/9ba82f56193b9e28e70c2557064c4e22.zip","md5":"ba0d6a6141f891a772f68a203573bc06","size":35982}],"count":155},{"num":"1.0","id":600801622,"uid":153914,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"MySQL\u5185\u5bb9\u5168\u5c40\u641c\u7d22","p_index":"mysqlfind","ps":"\u5728mysql\u6570\u636e\u5e93\u4e2d\u5168\u5c40\u67e5\u627e\u5185\u5bb9\uff0c\u5305\u542b\u3001\u7b49\u4e8e\u3001\u524d\u7f003\u79cd\u6a21\u5f0f?<\/a>","author":"\u82af\u6e56","home":"https:\/\/www.bt.cn\/bbs\/thread-58675-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201103\/4958efe935147ae5933c8da5a84f63ab.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1604387576,"state":0,"sort":1,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801622,"version":"1.1","version_msg":"mysql\u6570\u636e\u5e93\u4e2d\u5168\u5c40\u67e5\u627e\u5185\u5bb9\uff0c\u5305\u542b\u3001\u7b49\u4e8e\u3001\u524d\u7f003\u79cd\u6a21\u5f0f\uff0c\u6027\u80fd\u4f18\u5316","f_path":"other\/20210316\/939e1779f3f3a7036adea85194827893.zip","f_md5":"d13b5236d78bd7a24c28f3482e71359e","f_size":850591,"type":10,"endtime":0,"score":"1.0","name":"mysqlfind","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mysqlfind","uninsatll_checks":"\/www\/server\/panel\/plugin\/mysqlfind","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"mysql\u6570\u636e\u5e93\u4e2d\u5168\u5c40\u67e5\u627e\u5185\u5bb9\uff0c\u5305\u542b\u3001\u7b49\u4e8e\u3001\u524d\u7f003\u79cd\u6a21\u5f0f\uff0c\u6027\u80fd\u4f18\u5316","download":"other\/20210316\/939e1779f3f3a7036adea85194827893.zip","md5":"d13b5236d78bd7a24c28f3482e71359e","size":850591}],"count":147},{"num":"5.0","id":600801495,"uid":186911,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Cloudflare\u89e3\u6790","p_index":"cloudflare","ps":"\u8fde\u63a5cloudflare\u6dfb\u52a0\u3001\u5220\u9664\u3001\u67e5\u770bDNS\u89e3\u6790?<\/a>","author":"cxbsoft","home":"https:\/\/www.bt.cn\/bbs\/thread-46727-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200329\/40d01d19b0c2bff6acd5b2c02931d39a.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585443528,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801495,"version":"2.1.2","version_msg":"Cloudflare\u89e3\u6790\u3001\u8d1f\u8f7d\u9632\u706b\u5899\u3001CC\\DDOS\u76fe\u3001\u8fdc\u7a0b\u7ba1\u7406,\u4f18\u5316\u4e86UI\uff0c\u4fee\u590d\u4e86Bug","f_path":"other\/20200723\/9bfd902bdfe0250bfb98c97899a010d4.zip","f_md5":"05a08a1ff898f2883430b433c0bfae83","f_size":23747,"type":10,"endtime":0,"score":"5.0","name":"cloudflare","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/cloudflare","uninsatll_checks":"\/www\/server\/panel\/plugin\/cloudflare","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"1.2","versions":[{"m_version":"2","version":"1.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"Cloudflare\u89e3\u6790\u3001\u8d1f\u8f7d\u9632\u706b\u5899\u3001CC\\DDOS\u76fe\u3001\u8fdc\u7a0b\u7ba1\u7406,\u4f18\u5316\u4e86UI\uff0c\u4fee\u590d\u4e86Bug","download":"other\/20200723\/9bfd902bdfe0250bfb98c97899a010d4.zip","md5":"05a08a1ff898f2883430b433c0bfae83","size":23747}],"count":142},{"num":"5.0","id":600801583,"uid":27006,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5929\u7ffc\u7f51\u76d8\u52a9\u624b","p_index":"cloud189","ps":"\u57fa\u4e8e\u5929\u7ffc\u7f51\u76d8\u7684API\u6784\u5efa\u7684\u81ea\u52a8\u5316\u7ba1\u7406\uff0c\u89e3\u6790\u63d2\u4ef6?<\/a>","author":"IW3C","home":"https:\/\/www.bt.cn\/bbs\/thread-53988-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200820\/97f49f5b4f2f21a03b01ec2eb0599ec5.png","price":19.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1597935864,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801583,"version":"1.2.i","version_msg":"\u8c03\u6574\u90e8\u5206\u63a5\u53e3\u7528\u4ee5\u9002\u914d\u6700\u65b0\u5929\u7ffc\u4e91\uff08\u89c1update.txt\uff09","f_path":"other\/20220307\/15a323c8e0eba0f71abcfe708b22c771.zip","f_md5":"1480adb34f8757b20725143bc9349787","f_size":78941,"type":10,"endtime":0,"score":"5.0","name":"cloud189","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/cloud189","uninsatll_checks":"\/www\/server\/panel\/plugin\/cloud189","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2.i","versions":[{"m_version":"1","version":"2.i","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u8c03\u6574\u90e8\u5206\u63a5\u53e3\u7528\u4ee5\u9002\u914d\u6700\u65b0\u5929\u7ffc\u4e91\uff08\u89c1update.txt\uff09","download":"other\/20220307\/15a323c8e0eba0f71abcfe708b22c771.zip","md5":"1480adb34f8757b20725143bc9349787","size":78941}],"count":140},{"num":"5.0","id":600801508,"uid":303537,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u817e\u8baf\u4e91\u57df\u540d\u52a8\u6001\u89e3\u6790","p_index":"dnspod_ddns","ps":"\u817e\u8baf\u4e91\u57df\u540d\u52a8\u6001\u89e3\u6790\uff0c\u8bf7\u5148\u70b9\u51fb\u95ee\u53f7\u770b\u8bf4\u660e?<\/a>","author":"\u5434\u5148\u68ee","home":"https:\/\/www.bt.cn\/bbs\/thread-47587-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200410\/891111b223fb30cb065d6a29410c6d70.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1586480150,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801508,"version":"1.7.6","version_msg":"1.\u652f\u6301Tencent API 3.0\u63a5\u53e3 2.\u65b0\u589e\u68c0\u6d4b\u5230IP\u53d1\u9001\u53d8\u66f4\u65f6\uff0c\u53d1\u9001WebHook\u8bf7\u6c42\u7684\u529f\u80fd","f_path":"other\/20220205\/6e7a4673d1aeb56647c8fdedaa350025.zip","f_md5":"4af2df141b9788cca423f2fe2938e93c","f_size":289364,"type":10,"endtime":0,"score":"5.0","name":"dnspod_ddns","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/dnspod_ddns","uninsatll_checks":"\/www\/server\/panel\/plugin\/dnspod_ddns","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"7.6","versions":[{"m_version":"1","version":"7.6","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1.\u652f\u6301Tencent API 3.0\u63a5\u53e3 2.\u65b0\u589e\u68c0\u6d4b\u5230IP\u53d1\u9001\u53d8\u66f4\u65f6\uff0c\u53d1\u9001WebHook\u8bf7\u6c42\u7684\u529f\u80fd","download":"other\/20220205\/6e7a4673d1aeb56647c8fdedaa350025.zip","md5":"4af2df141b9788cca423f2fe2938e93c","size":289364}],"count":112},{"num":"1.0","id":600801491,"uid":167448,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5b9d\u5854\u540e\u53f0\u76ae\u80a4-\u900f\u660e","p_index":"tpl_hyaline","ps":"\u540e\u53f0\u76ae\u80a4?<\/a>","author":"\u732a\u5728\u5929\u4e0a\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-46527-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200325\/06a8123060338addc6804259a2de83cf.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585120465,"state":0,"sort":1,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801491,"version":"1.5","version_msg":"\u6dfb\u52a0\u4e8c\u6b21\u5143\u770b\u677f\u5a18","f_path":"other\/20210505\/4b8a834922d9ac915bdd86bde6818a0f.zip","f_md5":"762ed7ae0252bb081b835007a7618c14","f_size":3655247,"type":10,"endtime":0,"score":"1.0","name":"tpl_hyaline","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/tpl_hyaline","uninsatll_checks":"\/www\/server\/panel\/plugin\/tpl_hyaline","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"5","versions":[{"m_version":"1","version":"5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u6dfb\u52a0\u4e8c\u6b21\u5143\u770b\u677f\u5a18","download":"other\/20210505\/4b8a834922d9ac915bdd86bde6818a0f.zip","md5":"762ed7ae0252bb081b835007a7618c14","size":3655247}],"count":110},{"num":"5.0","id":600801543,"uid":218594,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"CloudFlare \u6279\u91cf\u8bbe\u7f6eip","p_index":"cf_ipchange","ps":"\u9488\u5bf9\u540c\u4e00\u8d26\u53f7\u4e0b\u7684\u591a\u4e2a\u57df\u540d\uff0c\u6279\u91cf\u8bbe\u7f6e\u89e3\u6790ip\u3002?<\/a>","author":"\u6fee\u9633\u5e02\u5e38\u4ead\u7535\u5b50\u79d1\u6280\u6709\u9650\u516c\u53f8","home":"https:\/\/www.bt.cn\/bbs\/thread-50337-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200523\/4681b7928072a567b7dfabf162d4108a.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1590197059,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801543,"version":"v1.0.0","version_msg":"\u4e0a\u7ebf\u7a33\u5b9a\u7248\u672c","f_path":"other\/20200605\/6037d53b3831bbf078f67b5fb00e248a.zip","f_md5":"981e881adda7d1cadda4904ec535147b","f_size":36299,"type":10,"endtime":0,"score":"5.0","name":"cf_ipchange","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/cf_ipchange","uninsatll_checks":"\/www\/server\/panel\/plugin\/cf_ipchange","compile_args":0,"version_coexist":0,"manager_version":"v1","c_manager_version":"0.0","versions":[{"m_version":"v1","version":"0.0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4e0a\u7ebf\u7a33\u5b9a\u7248\u672c","download":"other\/20200605\/6037d53b3831bbf078f67b5fb00e248a.zip","md5":"981e881adda7d1cadda4904ec535147b","size":36299}],"count":104},{"num":null,"id":600801395,"uid":167448,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SSH\u7ba1\u7406\u5668","p_index":"ssh_manager","ps":"\u9ed1\u767d\u540d\u5355\u3001\u767b\u9646\u90ae\u4ef6\u63d0\u9192\u3001\u767b\u9646\u65e5\u5fd7\u7b49\u7ba1\u7406?<\/a>","author":"\u732a\u5728\u5929\u4e0a\u98de","home":"","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191106\/1989b486726cdea6a62954fe3b345e3d.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1573027441,"state":0,"sort":0,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801395,"version":"1.3","version_msg":"\u4fee\u590dssh\u6587\u4ef6\u4e0d\u80fd\u4fdd\u5b58","f_path":"other\/20200221\/6800f457ef99aa17caae9085f058659e.zip","f_md5":"e4f83629e9c86251ee75ffd7b2510075","f_size":23372,"type":10,"endtime":0,"score":null,"name":"ssh_manager","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/ssh_manager","uninsatll_checks":"\/www\/server\/panel\/plugin\/ssh_manager","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3","versions":[{"m_version":"1","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590dssh\u6587\u4ef6\u4e0d\u80fd\u4fdd\u5b58","download":"other\/20200221\/6800f457ef99aa17caae9085f058659e.zip","md5":"e4f83629e9c86251ee75ffd7b2510075","size":23372}],"count":100},{"num":null,"id":600801843,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7f51\u7ad9\u56fe\u7247\u81ea\u52a8\u538b\u7f29\u6c34\u5370","p_index":"imgtool","ps":"\u7f51\u7ad9\u56fe\u7247\u81ea\u52a8\u538b\u7f29\u53ca\u6c34\u5370\uff0c\u6781\u5927\u63d0\u5347\u7f51\u7ad9\u52a0\u8f7d\u901f\u5ea6\uff0c1\u5206\u949f\u5373\u53ef\u914d\u7f6e?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-104078-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221118\/a6e94fb316bb90e687c969f5c9addc8b.png","price":9.98,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1668766079,"state":0,"sort":0,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801843,"version":"1.2","version_msg":"\u4f18\u5316\u538b\u7f29\u89c4\u5219","f_path":"other\/20221225\/1f3ce346b7eeddf00570bec6fb07eba8.zip","f_md5":"d15a696fe241aaf30b9f1e9cb9b73ce8","f_size":13172528,"type":10,"endtime":0,"score":null,"name":"imgtool","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/imgtool","uninsatll_checks":"\/www\/server\/panel\/plugin\/imgtool","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u538b\u7f29\u89c4\u5219","download":"other\/20221225\/1f3ce346b7eeddf00570bec6fb07eba8.zip","md5":"d15a696fe241aaf30b9f1e9cb9b73ce8","size":13172528}],"count":100},{"num":"4.0","id":600801520,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7f51\u7ad9\u91c7\u96c6\u5668","p_index":"colscript","ps":"\u7f51\u7ad9\u91c7\u96c6,\u76ee\u524d\u652f\u6301typecho\u7a0b\u5e8f\u91c7\u96c6?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.waytomilky.com\/archives\/2084.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200427\/44047cab050e6d1a4df7ee1c935cd8a2.png","price":19.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1587665495,"state":0,"sort":4,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801520,"version":"1.1","version_msg":"\u4f18\u5316UI\u548c\u4fee\u6539\u63d2\u4ef6\u4f5c\u8005\uff0c\u8fdb\u4e00\u6b65\u4f18\u5316\u7ec6\u8282","f_path":"other\/20200427\/5ebd8f6f7169e57343b4ecc45f82cdaf.zip","f_md5":"ea5ee9ce0f514892d583b7ddf2df568d","f_size":595867,"type":10,"endtime":0,"score":"4.0","name":"colscript","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/colscript","uninsatll_checks":"\/www\/server\/panel\/plugin\/colscript","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316UI\u548c\u4fee\u6539\u63d2\u4ef6\u4f5c\u8005\uff0c\u8fdb\u4e00\u6b65\u4f18\u5316\u7ec6\u8282","download":"other\/20200427\/5ebd8f6f7169e57343b4ecc45f82cdaf.zip","md5":"ea5ee9ce0f514892d583b7ddf2df568d","size":595867}],"count":96},{"num":"5.0","id":600801746,"uid":697521,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u670d\u52a1\u5668\u7aef\u53e3\u76d1\u6d4b","p_index":"server_port_watcher","ps":"\u76d1\u6d4b\u670d\u52a1\u5668\u7aef\u53e3\uff0c\u5f02\u5e38\u90ae\u4ef6\u901a\u77e5?<\/a>","author":"\u9ea6\u4e50","home":"https:\/\/www.bt.cn\/bbs\/thread-74227-1-4.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210809\/72011b5393b2458cf0ea4cce65b49d97.png","price":2.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1628498573,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801746,"version":"1.2","version_msg":"* \u589e\u52a0\u76d1\u542c\u9891\u7387\u53ef\u914d\u7f6e * \u589e\u52a0\u76d1\u542c\u51fa\u73b0\u9519\u8bef\u5bb9\u9519\u6b21\u6570\u914d\u7f6e\uff0c\u4ee5\u514d\u8bef\u62a5,\u76d1\u542c\u5916\u7f51\u6709\u7f51\u7edc\u6ce2\u52a8\u65f6\u53ef\u9002\u5f53\u589e\u52a0\u5bb9\u9519\u9891\u6b21 * \u589e\u52a0\u51fa\u73b0\u9519\u8bef\u540e\u53ef\u6267\u884c\u547d\u4ee4\uff0c\u8bbf\u95eeURL\uff0c\u5b9e\u73b0\u4e1a\u52a1\u81ea\u6062\u590d","f_path":"other\/20211128\/5d78816b8ea08777644013e1b2534b6d.zip","f_md5":"69e66c6a5d5914ec35f962a5dbd0f839","f_size":29358623,"type":10,"endtime":0,"score":"5.0","name":"server_port_watcher","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/server_port_watcher","uninsatll_checks":"\/www\/server\/panel\/plugin\/server_port_watcher","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"* \u589e\u52a0\u76d1\u542c\u9891\u7387\u53ef\u914d\u7f6e * \u589e\u52a0\u76d1\u542c\u51fa\u73b0\u9519\u8bef\u5bb9\u9519\u6b21\u6570\u914d\u7f6e\uff0c\u4ee5\u514d\u8bef\u62a5,\u76d1\u542c\u5916\u7f51\u6709\u7f51\u7edc\u6ce2\u52a8\u65f6\u53ef\u9002\u5f53\u589e\u52a0\u5bb9\u9519\u9891\u6b21 * \u589e\u52a0\u51fa\u73b0\u9519\u8bef\u540e\u53ef\u6267\u884c\u547d\u4ee4\uff0c\u8bbf\u95eeURL\uff0c\u5b9e\u73b0\u4e1a\u52a1\u81ea\u6062\u590d","download":"other\/20211128\/5d78816b8ea08777644013e1b2534b6d.zip","md5":"69e66c6a5d5914ec35f962a5dbd0f839","size":29358623}],"count":80},{"num":null,"id":600801604,"uid":153914,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u538b\u7f29\u5907\u4efd\u5230\u90ae\u7bb1","p_index":"baktomail","ps":"\u538b\u7f29\u6587\u4ef6\u5939\u53d1\u9644\u4ef6\u5230\u90ae\u7bb1\uff0c\u53ef\u8d85\u5927\u9644\u4ef6\u591a\u6587\u4ef6\u5939?<\/a>","author":"\u82af\u6e56","home":"https:\/\/www.bt.cn\/bbs\/thread-57404-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201010\/8e7ed2907eec45d8928201c43a94b119.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1602313276,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801604,"version":"1.2","version_msg":"\u538b\u7f29\u6587\u4ef6\u5939\u6216\u6587\u4ef6\u53d1\u9001\u9644\u4ef6\u5907\u4efd\u5230\u90ae\u7bb1\uff0c\u652f\u6301\u8d85\u5927\u9644\u4ef6\u548c\u591a\u6587\u4ef6\u5939","f_path":"other\/20201026\/fde326bccf9e7da990d1e77f6a78c919.zip","f_md5":"56f2eeef281a9b0b018a1d77066934db","f_size":939622,"type":10,"endtime":0,"score":null,"name":"baktomail","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/baktomail","uninsatll_checks":"\/www\/server\/panel\/plugin\/baktomail","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u538b\u7f29\u6587\u4ef6\u5939\u6216\u6587\u4ef6\u53d1\u9001\u9644\u4ef6\u5907\u4efd\u5230\u90ae\u7bb1\uff0c\u652f\u6301\u8d85\u5927\u9644\u4ef6\u548c\u591a\u6587\u4ef6\u5939","download":"other\/20201026\/fde326bccf9e7da990d1e77f6a78c919.zip","md5":"56f2eeef281a9b0b018a1d77066934db","size":939622}],"count":79},{"num":null,"id":600801539,"uid":186911,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Typecho\u7ba1\u7406","p_index":"typechomg","ps":"\u65b9\u4fbf\u7684typecho\u7ba1\u7406\uff0c\u4e00\u952e\u5b89\u88c5\u63d2\u4ef6?<\/a>","author":"cxbsoft","home":"http:\/\/blog.bsot.cn\/index.php\/archives\/116\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200520\/7667104cd890b06a74bc0d336d4f7dbd.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1589904137,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801539,"version":"v1.0","version_msg":"\u5b9e\u73b0\u4e00\u952e\u5b89\u88c5\u63d2\u4ef6\u3001\u63d2\u4ef6\u7ba1\u7406\u3001\u8bc4\u8bba\u5b89\u5168\u68c0\u6d4b\u3001\u8bc4\u8bba\u7ba1\u7406\u3001\u53cb\u94fe\u7ba1\u7406\u4e0e\u53cb\u94fe\u65e0\u6548url\u5220\u9664","f_path":"other\/20200527\/8155b53a9f5e9e2d55aff02776d4146f.zip","f_md5":"d08e076b7a371115f41b5686afeb8a83","f_size":18238,"type":10,"endtime":0,"score":null,"name":"typechomg","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/typechomg","uninsatll_checks":"\/www\/server\/panel\/plugin\/typechomg","compile_args":0,"version_coexist":0,"manager_version":"v1","c_manager_version":"0","versions":[{"m_version":"v1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5b9e\u73b0\u4e00\u952e\u5b89\u88c5\u63d2\u4ef6\u3001\u63d2\u4ef6\u7ba1\u7406\u3001\u8bc4\u8bba\u5b89\u5168\u68c0\u6d4b\u3001\u8bc4\u8bba\u7ba1\u7406\u3001\u53cb\u94fe\u7ba1\u7406\u4e0e\u53cb\u94fe\u65e0\u6548url\u5220\u9664","download":"other\/20200527\/8155b53a9f5e9e2d55aff02776d4146f.zip","md5":"d08e076b7a371115f41b5686afeb8a83","size":18238}],"count":73},{"num":"1.0","id":600801499,"uid":186911,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"S3\u76d8\u78c1\u76d8\u6302\u8f7d\u5668","p_index":"mounter","ps":"\u65b9\u4fbf\u5730\u6302\u8f7dS3\u6876\u4e0e\u78c1\u76d8?<\/a>","author":"cxbsoft","home":"https:\/\/www.bt.cn\/bbs\/thread-46890-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200401\/5ab52b348d46d2fd21fd6af5bd987955.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585686902,"state":0,"sort":1,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801499,"version":"1.0","version_msg":"\u65b9\u4fbf\u5730\u6302\u8f7d\u5bf9\u8c61\u50a8\u5b58\u4e0e\u78c1\u76d8,\u5e76\u5b9e\u73b0\u6587\u4ef6\u7ba1\u7406(\u5305\u62ec\u4e0a\u4f20\uff08\u6587\u4ef6\u5939\uff09\u3001\u4e0b\u8f7d)","f_path":"other\/20200407\/f0c9a6f6f70080ea497662ae862b2565.zip","f_md5":"f972a0b316cee23aa6abced1cf4a4397","f_size":56540,"type":10,"endtime":0,"score":"1.0","name":"mounter","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/mounter","uninsatll_checks":"\/www\/server\/panel\/plugin\/mounter","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u65b9\u4fbf\u5730\u6302\u8f7d\u5bf9\u8c61\u50a8\u5b58\u4e0e\u78c1\u76d8,\u5e76\u5b9e\u73b0\u6587\u4ef6\u7ba1\u7406(\u5305\u62ec\u4e0a\u4f20\uff08\u6587\u4ef6\u5939\uff09\u3001\u4e0b\u8f7d)","download":"other\/20200407\/f0c9a6f6f70080ea497662ae862b2565.zip","md5":"f972a0b316cee23aa6abced1cf4a4397","size":56540}],"count":72},{"num":"5.0","id":600801764,"uid":761752,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u78c1\u76d8\u914d\u989d","p_index":"hxsquota","ps":"\u5bf9\u6302\u8f7d\u7684xfs\u78c1\u76d8\u6587\u4ef6\u5939\u9650\u5b9a\u4f7f\u7528\u5927\u5c0f\u3010\u7ad9\u70b9\u78c1\u76d8\u914d\u989d\u3011\u7684\u6539\u8fdb\u7248?<\/a>","author":"\u8def\u9014\u6709\u5751","home":"https:\/\/www.bt.cn\/bbs\/thread-76829-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210928\/e054ee81a23bf594c9ba48c9c40b11d9.png","price":4,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1632818438,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801764,"version":"1.0","version_msg":"\u5bf9\u6302\u8f7d\u7684xfs\u78c1\u76d8\u6587\u4ef6\u5939\u9650\u5b9a\u4f7f\u7528\u5927\u5c0f\u3010\u7ad9\u70b9\u78c1\u76d8\u914d\u989d\u3011\u7684\u6539\u8fdb\u7248","f_path":"other\/20210928\/3742ec1c436387307ac3689c76fcb6ae.zip","f_md5":"bc05e8cc52cb9d7a7344cc714919f8dd","f_size":19349,"type":10,"endtime":0,"score":"5.0","name":"hxsquota","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/hxsquota","uninsatll_checks":"\/www\/server\/panel\/plugin\/hxsquota","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5bf9\u6302\u8f7d\u7684xfs\u78c1\u76d8\u6587\u4ef6\u5939\u9650\u5b9a\u4f7f\u7528\u5927\u5c0f\u3010\u7ad9\u70b9\u78c1\u76d8\u914d\u989d\u3011\u7684\u6539\u8fdb\u7248","download":"other\/20210928\/3742ec1c436387307ac3689c76fcb6ae.zip","md5":"bc05e8cc52cb9d7a7344cc714919f8dd","size":19349}],"count":69},{"num":"3.0","id":600801576,"uid":303537,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Dnspod\u89e3\u6790\u81ea\u52a8\u5207\u6362","p_index":"dnspod_parsing_switch","ps":"\u5f53\u7f51\u7ad9\u65e0\u6cd5\u8bbf\u95ee\u65f6\u81ea\u52a8\u5207\u6362\u5230\u5907\u7528\u670d\u52a1\u5668\u5e76\u81ea\u52a8\u901a\u77e5\u7ba1\u7406\u5458?<\/a>","author":"\u5434\u5148\u68ee","home":"https:\/\/www.bt.cn\/bbs\/thread-53672-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200809\/e0972606bba6b951b3e3abaf02bee292.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1596964302,"state":0,"sort":3,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801576,"version":"1.8.9","version_msg":"\u4f18\u5316\u63d2\u4ef6\u4f7f\u7528\u4f53\u9a8c\uff0c\u4fee\u590d\u5df2\u77e5\u63d2\u4ef6\u95ee\u9898","f_path":"other\/20221207\/1418623d0aff08b85897614c620d039a.zip","f_md5":"7a6ccb326a8e7aed35bab65fb8265d14","f_size":202239,"type":10,"endtime":0,"score":"3.0","name":"dnspod_parsing_switch","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/dnspod_parsing_switch","uninsatll_checks":"\/www\/server\/panel\/plugin\/dnspod_parsing_switch","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"8.9","versions":[{"m_version":"1","version":"8.9","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u63d2\u4ef6\u4f7f\u7528\u4f53\u9a8c\uff0c\u4fee\u590d\u5df2\u77e5\u63d2\u4ef6\u95ee\u9898","download":"other\/20221207\/1418623d0aff08b85897614c620d039a.zip","md5":"7a6ccb326a8e7aed35bab65fb8265d14","size":202239}],"count":67},{"num":"5.0","id":600801399,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u4eac\u4e1c\u4e91\u5b58\u50a8\u5bf9\u8c61\u6302\u8f7d\u5de5\u5177","p_index":"jdoss","ps":"\u628a\u4eac\u4e1c\u4e91OSS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5b8c\u5168\u5ab2\u7f8e\u672c\u5730\u76d8\u3002?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-39670-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191108\/d74b2c5e165c729f76ca94923835350c.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1573175600,"state":0,"sort":5,"os":"Linux","win":0,"a_ps":"","is_site_show":0,"pid":600801399,"version":"2.0","version_msg":"\u628a\u4eac\u4e1c\u4e91OSS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u89e3\u51b3\u4e86\u5bf9\u8c61\u5b58\u50a8\u53ef\u89c6\u5316\u64cd\u4f5c\u7684\u5404\u79cd\u95ee\u9898,\u5b8c\u5168\u5ab2\u7f8e\u672c\u5730\u76d8\uff0c\u517c\u5bb9py3","f_path":"other\/20200503\/540dc47bb91e9d95934d6875d8424712.zip","f_md5":"e56ade54e5d96e6cc7afa77a707de63f","f_size":33564,"type":10,"endtime":0,"score":"5.0","name":"jdoss","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/jdoss","uninsatll_checks":"\/www\/server\/panel\/plugin\/jdoss","compile_args":0,"version_coexist":0,"manager_version":"2","c_manager_version":"0","versions":[{"m_version":"2","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u628a\u4eac\u4e1c\u4e91OSS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u89e3\u51b3\u4e86\u5bf9\u8c61\u5b58\u50a8\u53ef\u89c6\u5316\u64cd\u4f5c\u7684\u5404\u79cd\u95ee\u9898,\u5b8c\u5168\u5ab2\u7f8e\u672c\u5730\u76d8\uff0c\u517c\u5bb9py3","download":"other\/20200503\/540dc47bb91e9d95934d6875d8424712.zip","md5":"e56ade54e5d96e6cc7afa77a707de63f","size":33564}],"count":65},{"num":"1.0","id":600801445,"uid":14729,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"php\u6d4b\u8bd5\u865a\u62df\u65f6\u95f4","p_index":"customtime","ps":"\u4f1a\u6539\u53d8\u8f6f\u4ef6\u7cfb\u7edf\u65f6\u95f4\uff0c\u751f\u4ea7\u73af\u5883\u8bf7\u8c28\u614e\u4f7f\u7528\uff0c\u4ee5\u514d\u9020\u6210\u4e0d\u5fc5\u8981\u7684\u9ebb\u70e6?<\/a>","author":"\u507b\u5138\u5c0f\u5352","home":"https:\/\/blog.csdn.net\/qq_38883889\/article\/details\/106731520","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200108\/fcfe197c6ddf9cc3f36629f72c1285d7.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1578451670,"state":0,"sort":1,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801445,"version":"1.3.4","version_msg":"1.\u4fee\u590d\u67d0\u4e9b\u7279\u5b9a\u60c5\u51b5\u4e0b\u4e0d\u8d70\u65f6\u95ee\u9898\uff08\u6bd4\u5982docker\u4e2d\u8fd0\u884c\u5b9d\u5854\u65f6\uff09","f_path":"other\/20220329\/3dd78eb8ca41e6c60e0121eb044cbdfd.zip","f_md5":"955734e445f1c525ebda74b5818d210f","f_size":364886,"type":10,"endtime":0,"score":"1.0","name":"customtime","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/customtime","uninsatll_checks":"\/www\/server\/panel\/plugin\/customtime","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3.4","versions":[{"m_version":"1","version":"3.4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1.\u4fee\u590d\u67d0\u4e9b\u7279\u5b9a\u60c5\u51b5\u4e0b\u4e0d\u8d70\u65f6\u95ee\u9898\uff08\u6bd4\u5982docker\u4e2d\u8fd0\u884c\u5b9d\u5854\u65f6\uff09","download":"other\/20220329\/3dd78eb8ca41e6c60e0121eb044cbdfd.zip","md5":"955734e445f1c525ebda74b5818d210f","size":364886}],"count":56},{"num":null,"id":600801765,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SEO\u6536\u5f55\u901a\u77e5","p_index":"seotip","ps":"SEO\u6536\u5f55\u65b0\u6761\u76ee\u90ae\u4ef6\u901a\u77e5,\u9002\u5408\u65b0\u7ad9\u524d\u671fSEO\u7528\u3010\u91cd\u6784\u4e2d\u3011?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs","min_image":"\/api\/Pluginother\/get_file?fname=image\/20211101\/e4c27dc88f376da272cc3529880d4eeb.png","price":5.98,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1635745000,"state":0,"sort":0,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801765,"version":"1.0","version_msg":"SEO\u6536\u5f55\u901a\u77e5,\u5b9e\u65f6\u67e5\u8be2\u6536\u5f55\u6570\u636e\uff0c\u90ae\u4ef6\u81ea\u52a8\u901a\u77e5\u65b0\u589e\u6536\u5f55\u3002","f_path":"other\/20211101\/3445f4559fbf4dd27f23e3ab83053c14.zip","f_md5":"e45ecdb5acac6aa1296f647ac5ec8384","f_size":891693,"type":10,"endtime":0,"score":null,"name":"seotip","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/seotip","uninsatll_checks":"\/www\/server\/panel\/plugin\/seotip","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"SEO\u6536\u5f55\u901a\u77e5,\u5b9e\u65f6\u67e5\u8be2\u6536\u5f55\u6570\u636e\uff0c\u90ae\u4ef6\u81ea\u52a8\u901a\u77e5\u65b0\u589e\u6536\u5f55\u3002","download":"other\/20211101\/3445f4559fbf4dd27f23e3ab83053c14.zip","md5":"e45ecdb5acac6aa1296f647ac5ec8384","size":891693}],"count":50},{"num":null,"id":600801594,"uid":180217,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"FTP\u76ee\u5f55\u63a7\u5236","p_index":"ftplimit","ps":"\u57fa\u4e8e\u5b98\u65b9pureftp\u5b9e\u73b0\u7684\u76ee\u5f55\u5bb9\u91cf\u63a7\u5236\u63d2\u4ef6?<\/a>","author":"\u5fae\u95ea\u95ea","home":"https:\/\/www.bt.cn\/bbs\/thread-56245-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200915\/28ff3da91aefe2ddf22962094c3180ab.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1600141759,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801594,"version":"1.1","version_msg":"\u4fee\u590dpython3\u90e8\u5206\u4ee3\u7801\u4e0d\u517c\u5bb9\u95ee\u9898","f_path":"other\/20200921\/5bc6671562865689f60c289fd1d93178.zip","f_md5":"e07740e718fa6d70da8577ccdeea911f","f_size":10578,"type":10,"endtime":0,"score":null,"name":"ftplimit","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/ftplimit","uninsatll_checks":"\/www\/server\/panel\/plugin\/ftplimit","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590dpython3\u90e8\u5206\u4ee3\u7801\u4e0d\u517c\u5bb9\u95ee\u9898","download":"other\/20200921\/5bc6671562865689f60c289fd1d93178.zip","md5":"e07740e718fa6d70da8577ccdeea911f","size":10578}],"count":40},{"num":null,"id":600801813,"uid":1063199,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Godaddy\u57df\u540dDNS\u89e3\u6790","p_index":"godaddydns","ps":"Godaddy DNS\u57df\u540d\u6279\u91cf\u89e3\u6790\u7ba1\u7406\u7cfb\u7edf!?<\/a>","author":"\u5c0f\u742a","home":"https:\/\/www.bt.cn\/bbs\/thread-93672-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220608\/c3ee3849df6b0da2603a8cdb6d4f61a5.png","price":19.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1654680663,"state":0,"sort":0,"os":"Linux","win":1,"a_ps":"","is_site_show":0,"pid":600801813,"version":"1.2","version_msg":"\u4fee\u590d\u57df\u540d\u5217\u8868\u8fc7\u591a\u6837\u5f0f\u663e\u793a\u95ee\u9898","f_path":"other\/20220922\/e22ef1333942af30930e3f8e5aca4c38.zip","f_md5":"c518f9fded2f9dfbc8a44850dcfd4adf","f_size":197057,"type":10,"endtime":0,"score":null,"name":"godaddydns","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/godaddydns","uninsatll_checks":"\/www\/server\/panel\/plugin\/godaddydns","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u57df\u540d\u5217\u8868\u8fc7\u591a\u6837\u5f0f\u663e\u793a\u95ee\u9898","download":"other\/20220922\/e22ef1333942af30930e3f8e5aca4c38.zip","md5":"c518f9fded2f9dfbc8a44850dcfd4adf","size":197057}],"count":40},{"num":null,"id":600801666,"uid":20302,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u534e\u4e3a\u4e91\u5bf9\u8c61\u5b58\u50a8OBS\u81ea\u52a8\u6302\u8f7d\u5de5\u5177","p_index":"hwobs","ps":"\u534e\u4e3a\u4e91\u5bf9\u8c61\u5b58\u50a8OBS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d?<\/a>","author":"linuxxp","home":"https:\/\/www.bt.cn\/bbs\/thread-64317-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210219\/32fccecd49f18c4f5154a6d33766a93d.png","price":9.99,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1613715480,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801666,"version":"1.1","version_msg":"\u534e\u4e3a\u4e91\u5bf9\u8c61\u5b58\u50a8OBS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d","f_path":"other\/20210221\/46768e0f7ec1e86f14f031d292de097d.zip","f_md5":"783f4f026ba646a8733fc785065c6eb2","f_size":35319,"type":10,"endtime":0,"score":null,"name":"hwobs","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/hwobs","uninsatll_checks":"\/www\/server\/panel\/plugin\/hwobs","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u534e\u4e3a\u4e91\u5bf9\u8c61\u5b58\u50a8OBS\u6302\u8f7d\u5230\u670d\u52a1\u5668\uff0c\u5f00\u673a\u81ea\u52a8\u6302\u8f7d","download":"other\/20210221\/46768e0f7ec1e86f14f031d292de097d.zip","md5":"783f4f026ba646a8733fc785065c6eb2","size":35319}],"count":31},{"num":"5.0","id":600801506,"uid":303537,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"DnsPod\u89e3\u6790\u8bbe\u7f6e","p_index":"dnspod_record","ps":"\u901a\u8fc7\u672c\u63d2\u4ef6\uff0c\u60a8\u53ef\u4ee5\u5728\u5b9d\u5854\u9762\u677f\u4e2d\u7ba1\u7406\u817e\u8baf\u4e91\u7684\u57df\u540d\u89e3\u6790?<\/a>","author":"\u5434\u5148\u68ee","home":"https:\/\/www.bt.cn\/bbs\/thread-47377-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200407\/fea4f518a447cde5cbc5c6df1e1f434d.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1586240430,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801506,"version":"1.2.1","version_msg":"\u4fee\u590d\u4e86\u672a\u9009\u62e9\u57df\u540d\u5bfc\u81f4\u62a5\u9519","f_path":"other\/20200411\/3c0dfc945a429653ce6414006c929a2c.zip","f_md5":"03954a3ed556069d82a67e9bfa5996eb","f_size":51308,"type":10,"endtime":0,"score":"5.0","name":"dnspod_record","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/dnspod_record","uninsatll_checks":"\/www\/server\/panel\/plugin\/dnspod_record","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"2.1","versions":[{"m_version":"1","version":"2.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u4e86\u672a\u9009\u62e9\u57df\u540d\u5bfc\u81f4\u62a5\u9519","download":"other\/20200411\/3c0dfc945a429653ce6414006c929a2c.zip","md5":"03954a3ed556069d82a67e9bfa5996eb","size":51308}],"count":28},{"num":"5.0","id":600801853,"uid":697521,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"dbcache","p_index":"dbcache","ps":"\u5feb\u901f\u89e3\u51b3\u9ad8\u5e76\u53d1\uff0c\u53ca\u590d\u6742SQL\u8bed\u53e5\u67e5\u8be2\u6765\u6765\u7684\u6570\u636e\u5e93\u5c42\u9762\u538b\u529b?<\/a>","author":"\u9ea6\u4e50","home":"https:\/\/www.bt.cn\/bbs\/thread-106555-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230105\/006a5a1057fd18b34527c8c9ae42cfeb.png","price":18,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1672887585,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801853,"version":"1.0.1","version_msg":"\u4f18\u5316\u8fde\u63a5\u6570\u91cf\uff0c\u63d0\u9ad8\u7f13\u5b58\u6027\u80fd\uff0c\u589e\u52a0\u5bf9LUA\u811a\u672c\u652f\u6301","f_path":"other\/20230112\/930b08bb4d17662c16e3773e6243e9be.zip","f_md5":"c6bde06041055b84143f3c21b3a0be7a","f_size":8058512,"type":10,"endtime":0,"score":"5.0","name":"dbcache","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/dbcache","uninsatll_checks":"\/www\/server\/panel\/plugin\/dbcache","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0.1","versions":[{"m_version":"1","version":"0.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4f18\u5316\u8fde\u63a5\u6570\u91cf\uff0c\u63d0\u9ad8\u7f13\u5b58\u6027\u80fd\uff0c\u589e\u52a0\u5bf9LUA\u811a\u672c\u652f\u6301","download":"other\/20230112\/930b08bb4d17662c16e3773e6243e9be.zip","md5":"c6bde06041055b84143f3c21b3a0be7a","size":8058512}],"count":27},{"num":"5.0","id":600801860,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u963f\u91cc\u4e91\u76d8\u81ea\u52a8\u5907\u4efd","p_index":"alipan","ps":"\u6570\u636e\u81ea\u52a8\u6279\u91cf\u5907\u4efd\u81f3\u963f\u91cc\u4e91\u76d8\uff0c1\u5206\u949f\u5373\u53ef\u914d\u7f6e\uff0c\u4e00\u952e\u5907\u4efd\u6570\u636e\u65e0\u5fe7?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-109275-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230302\/7a24820869758457a6afc2abeb2188be.png","price":9.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1677767866,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801860,"version":"1.3","version_msg":"\u4e34\u65f6\u4fee\u590d\u4e00\u5904bug","f_path":"other\/20230311\/d39222797c25fbf67cf319138499eec9.zip","f_md5":"9a46678c789a4b464c3eac0fbe8f3d86","f_size":1016802,"type":10,"endtime":0,"score":"5.0","name":"alipan","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/alipan","uninsatll_checks":"\/www\/server\/panel\/plugin\/alipan","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"3","versions":[{"m_version":"1","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4e34\u65f6\u4fee\u590d\u4e00\u5904bug","download":"other\/20230311\/d39222797c25fbf67cf319138499eec9.zip","md5":"9a46678c789a4b464c3eac0fbe8f3d86","size":1016802}],"count":25},{"num":null,"id":600801629,"uid":14729,"app_type":1,"p_type":1,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"gogs\u5b9d\u5854\u63d2\u4ef6","p_index":"btgogs","ps":"\u57fa\u4e8egogs\u7684\u5b9d\u5854\u7b2c\u4e09\u65b9\u63d2\u4ef6?<\/a>","author":"\u507b\u5138\u5c0f\u5352","home":"https:\/\/blog.liushuai.cq.cn\/article\/detail\/29","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201213\/ada0d5433c4d484f22e4811dfddd1f94.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1607842465,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801629,"version":"0.4.1","version_msg":"1.\u4ecegiteaforBt\u4e2d\u5206\u79bb\u51fa\u6765\uff0c2.\u4e3a\u540e\u671f\u517c\u5bb9\u4f7f\u7528\u6307\u5b9a\u7528\u6237\u8fd0\u884c\u6253\u4e0b\u57fa\u7840\uff0c3.\u4e3awindows\u5e73\u53f0\u8fd0\u884c\u6253\u4e0b\u57fa\u7840","f_path":"other\/20210116\/f9f92107b94376bbb72a966297f2a537.zip","f_md5":"745ed27e370e06fa763fbfe79f4cb40c","f_size":382075,"type":10,"endtime":0,"score":null,"name":"btgogs","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/btgogs","uninsatll_checks":"\/www\/server\/panel\/plugin\/btgogs","compile_args":0,"version_coexist":0,"manager_version":"0","c_manager_version":"4.1","versions":[{"m_version":"0","version":"4.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1.\u4ecegiteaforBt\u4e2d\u5206\u79bb\u51fa\u6765\uff0c2.\u4e3a\u540e\u671f\u517c\u5bb9\u4f7f\u7528\u6307\u5b9a\u7528\u6237\u8fd0\u884c\u6253\u4e0b\u57fa\u7840\uff0c3.\u4e3awindows\u5e73\u53f0\u8fd0\u884c\u6253\u4e0b\u57fa\u7840","download":"other\/20210116\/f9f92107b94376bbb72a966297f2a537.zip","md5":"745ed27e370e06fa763fbfe79f4cb40c","size":382075}],"count":24},{"num":"5.0","id":600801750,"uid":697521,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u8fdc\u7a0b\u8d44\u6e90\u7f13\u5b58\u670d\u52a1","p_index":"server_proxy_res","ps":"\u8fdc\u7a0b\u8d44\u6e90\u7f13\u5b58\uff0c\u652f\u6301\u8de8\u57df\u3001\u9632\u76d7\u94fe\u9650\u5236?<\/a>","author":"\u9ea6\u4e50","home":"https:\/\/www.bt.cn\/bbs\/thread-74355-1-4.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210817\/1bbc79b0173702705a1138ae2a0c04ad.png","price":19.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1629166284,"state":0,"sort":5,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801750,"version":"1.0","version_msg":"\u8fdc\u7a0b\u8d44\u6e90\u7f13\u5b58\uff0c\u652f\u6301\u8de8\u57df\u3001\u9632\u76d7\u94fe\u9650\u5236","f_path":"other\/20210826\/b4b958690a19863b87b24800914d1e9f.zip","f_md5":"a13e4b89ecebfcf65cf0cd8a4f806eab","f_size":14611625,"type":10,"endtime":0,"score":"5.0","name":"server_proxy_res","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/server_proxy_res","uninsatll_checks":"\/www\/server\/panel\/plugin\/server_proxy_res","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u8fdc\u7a0b\u8d44\u6e90\u7f13\u5b58\uff0c\u652f\u6301\u8de8\u57df\u3001\u9632\u76d7\u94fe\u9650\u5236","download":"other\/20210826\/b4b958690a19863b87b24800914d1e9f.zip","md5":"a13e4b89ecebfcf65cf0cd8a4f806eab","size":14611625}],"count":13},{"num":null,"id":600801651,"uid":190652,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"UCloud\u5bf9\u8c61\u5b58\u50a8US3\u81ea\u52a8\u6302\u8f7d\u5de5\u5177","p_index":"us3","ps":"UCloud\u5bf9\u8c61\u5b58\u50a8US3\u81ea\u52a8\u6302\u8f7d\u5230\u7cfb\u7edf,\u5f53\u4f5c\u672c\u5730\u78c1\u76d8\u4f7f\u7528?<\/a>","author":"\u7ffc\u4e0b\u4e4b\u98ce","home":"https:\/\/www.bt.cn\/bbs\/thread-63016-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210121\/9f106b6e8aed899e01f1c056a4b13a8f.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1611243738,"state":0,"sort":0,"os":"Linux","win":-1,"a_ps":"","is_site_show":0,"pid":600801651,"version":"1.0","version_msg":"UCloud\u5bf9\u8c61\u5b58\u50a8US3\u81ea\u52a8\u6302\u8f7d\u5230\u7cfb\u7edf,\u5f53\u4f5c\u672c\u5730\u78c1\u76d8\u4f7f\u7528","f_path":"other\/20210121\/494382fc7b85264f8ef4ffbd839329fa.zip","f_md5":"507aefb64f4303a58dd2b087582be239","f_size":17189,"type":10,"endtime":0,"score":null,"name":"us3","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/us3","uninsatll_checks":"\/www\/server\/panel\/plugin\/us3","compile_args":0,"version_coexist":0,"manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"UCloud\u5bf9\u8c61\u5b58\u50a8US3\u81ea\u52a8\u6302\u8f7d\u5230\u7cfb\u7edf,\u5f53\u4f5c\u672c\u5730\u78c1\u76d8\u4f7f\u7528","download":"other\/20210121\/494382fc7b85264f8ef4ffbd839329fa.zip","md5":"507aefb64f4303a58dd2b087582be239","size":17189}],"count":7}],"ip":"127.0.0.1","serverid":"","beta":0,"uid":1,"skey":"","is_user_status":false,"pro":-1,"ltd":1995634805,"remarks":{"list":["\u66f4\u6362\u6388\u6743IP","5\u5206\u949f\u6781\u901f\u54cd\u5e94","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","30+\u6b3e\u4ed8\u8d39\u63d2\u4ef6","20+\u4f01\u4e1a\u7248\u4e13\u4eab\u529f\u80fd","1000\u6761\u514d\u8d39\u77ed\u4fe1\uff08\u5e74\u4ed8\uff09","2\u5f20SSL\u5546\u7528\u8bc1\u4e66\uff08\u5e74\u4ed8\uff09","\u4e13\u4eab\u4f01\u4e1a\u670d\u52a1\u7fa4\uff08\u5e74\u4ed8\uff09"],"pro_list":["\u66f4\u6362\u6388\u6743IP","\u5ba2\u670d\u4f18\u5148\u54cd\u5e94","15+\u6b3e\u4ed8\u8d39\u63d2\u4ef6","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","\u5546\u7528\u9632\u706b\u5899\u6388\u6743"],"kfqq":"3007255432","kf":"http:\/\/q.url.cn\/CDfQPS?_type=wpa&qidian=true","qun":"","kf_list":[{"qq":"3007255432","kf":"http:\/\/q.url.cn\/CDfQPS?_type=wpa&qidian=true"},{"qq":"2927440070","kf":"http:\/\/wpa.qq.com\/msgrd?v=3&uin=2927440070&site=qq&menu=yes&from=message&isappinstalled=0"}],"wx_list":[{"ps":"\u5728\u7ebf\u5ba2\u670d","kf":"https:\/\/www.bt.cn\/new\/wechat_customer"}],"vips_list":{"\u591a\u5bf9\u4e00\u6280\u672f\u652f\u6301":{"pro":0,"ltd":0,"vltd":1},"\u5168\u5e745\u6b21\u5b89\u5168\u6392\u67e5":{"pro":0,"ltd":0,"vltd":1},"5\u5206\u949f\u6025\u901f\u54cd\u5e94":{"pro":0,"ltd":1,"vltd":1},"30+\u6b3e\u4ed8\u8d39\u63d2\u4ef6":{"pro":0,"ltd":1,"vltd":1},"20+\u4f01\u4e1a\u7248\u4e13\u4eab\u529f\u80fd":{"pro":0,"ltd":1,"vltd":1},"1000\u6761\u514d\u8d39\u77ed\u4fe1(\u5e74\u4ed8)":{"pro":0,"ltd":1,"vltd":1},"2\u5f20SSL\u5546\u7528\u8bc1\u4e66(\u5e74\u4ed8)":{"pro":0,"ltd":1,"vltd":1},"\u4e13\u4eab\u4f01\u4e1a\u670d\u52a1\u7fa4(\u5e74\u4ed8)":{"pro":0,"ltd":1,"vltd":1},"WAF\u9632\u706b\u5899":{"pro":1,"ltd":1,"vltd":1},"\u66f4\u6362\u6388\u6743IP":{"pro":1,"ltd":1,"vltd":1},"\u5ba2\u670d\u4f18\u5148\u54cd\u5e94":{"pro":1,"ltd":1,"vltd":1},"15+\u6b3e\u4ed8\u8d39\u63d2\u4ef6":{"pro":1,"ltd":1,"vltd":1},"15\u5929\u65e0\u7406\u7531\u9000\u6b3e":{"pro":1,"ltd":1,"vltd":1}}},"recommend":[{"title":"\u5821\u5854\u8fd0\u7ef4\u76f4\u64ad\u7b54\u7591","image":"\/static\/img\/recom_icon\/1.png","type":"link","sort":2,"data":"https:\/\/live.bilibili.com\/22312524"},{"title":"\u4f01\u4e1a\u72481399\u5143\/\u5e74","image":"\/static\/img\/recom_icon\/2.png","type":"link","sort":1,"data":"https:\/\/www.bt.cn\/download\/linuxent.html"},{"title":"\u7cbe\u54c1\u8f6f\u4ef6\u63a8\u8350","image":"\/static\/img\/recom_icon\/3.png","type":"soft","sort":0,"data":[{"name":"static_cdn","pid":0,"title":"\u5821\u5854\u9762\u677f\u9759\u6001\u6587\u4ef6\u52a0\u901f","ps":"\u5bf9\u9762\u677f\u9759\u6001\u6587\u4ef6\u8fdb\u884cCDN\u52a0\u901f\uff0c\u52a0\u5feb\u9762\u677f\u52a0\u8f7d\u901f\u5ea6\uff0c\u63d0\u5347\u5bf9\u5c0f\u5e26\u5bbd\u548c\u6d77\u5916\u670d\u52a1\u5668\u7684\u9762\u677f\u4f7f\u7528\u4f53\u9a8c!","price":0,"version":"1.2","endtime":-1,"sort":1,"setup":false},{"name":"fail2ban","pid":0,"title":"Fail2ban\u9632\u7206\u7834","ps":"\u9632\u6b62\u6076\u610f\u4e3b\u673a\u7206\u7834\u670d\u52a1\u3001\u7ad9\u70b9\uff0c\u7981\u6b62\u5bfc\u81f4\u591a\u4e2a\u8eab\u4efd\u9a8c\u8bc1\u9519\u8bef\u7684\u4e3b\u673a","price":0,"version":"1.7","endtime":-1,"sort":2,"setup":false},{"name":"mail_sys","pid":0,"title":"\u5b9d\u5854\u90ae\u5c40\u7ba1\u7406\u5668","ps":"\u591a\u57df\uff0c\u591a\u7528\u6237\u90ae\u5c40\uff0c\u652f\u6301SMTP\/IMAP\/POP3\/HTTP\u63a5\u53e3\uff0c\u9700\u898125\u7aef\u53e3 [\u4f7f\u7528\u5e2e\u52a9]<\/a>","price":0,"version":"4.9","endtime":-1,"sort":3,"setup":false},{"name":"psync_api","pid":0,"title":"\u5b9d\u5854\u4e00\u952e\u8fc1\u79fbAPI\u7248\u672c","ps":"\u5feb\u901f\u8fc1\u79fb\u9762\u677f\u6570\u636e\uff0c\u6b64\u7248\u672c\u4ec5\u5728\u8fc1\u51fa\u673a\u5668\uff08\u53d1\u9001\u6570\u636e\u7aef\uff09\u5b89\u88c5\u5373\u53ef>>\u6559\u7a0b<\/a>","price":0,"version":"3.5","endtime":-1,"sort":4,"setup":false},{"name":"firewall","pid":0,"title":"\u7cfb\u7edf\u9632\u706b\u5899","ps":"\u63d0\u4f9b\u7cfb\u7edf\u9632\u706b\u5899(iptables\/firewall\/ufw)\u7684\u53ef\u89c6\u5316\u7ba1\u7406\u529f\u80fd","price":0,"version":"3.3","endtime":-1,"sort":5,"setup":false},{"name":"coll_admin","pid":0,"title":"\u5821\u5854\u4e91\u63a7\u5e73\u53f0","ps":"\u53ef\u514d\u8d39\u9ad8\u6548\u7ba1\u7406\u591a\u53f0\u670d\u52a1\u5668\u9762\u677f\uff0c\u5b98\u65b9\u81ea\u7528\u63a8\u8350\uff0c\u4ee5\u53ca\u5176\u4ed6\u591a\u673a\u7ba1\u7406\u529f\u80fd [\u4e86\u89e3\u8be6\u60c5]<\/a>","price":0,"version":"2.5.9","endtime":-1,"sort":6,"setup":false}]}]} \ No newline at end of file diff --git a/data/plugins/folder/.gitkeep b/data/plugins/folder/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/plugins/main/.gitkeep b/data/plugins/main/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/plugins/other/other/.gitkeep b/data/plugins/other/other/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/plugins/package/.gitkeep b/data/plugins/package/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/win/config/deployment_list.json b/data/win/config/deployment_list.json new file mode 100644 index 0000000..9e36258 --- /dev/null +++ b/data/win/config/deployment_list.json @@ -0,0 +1 @@ +{"list":[{"id":600801247,"type":4,"sort":4.4,"name":"wordpress","title":"WordPress","ps":"\u6700\u591a\u4eba\u7528\u7684\u535a\u5ba2\u7a0b\u5e8f?<\/a>","version":"6.0.2","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":267194,"score":"4.4","is_site_show":2,"versions":[{"m_version":"6","version":"0.2","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"6.0.2","download":"other\/20220902\/2e33579b712e9f2f1d4b1ab7f058e141.zip","md5":"cf0a33310609664c47f1745b3c773799","size":22773190}]},{"id":600801418,"type":3,"sort":4.6,"name":"discuz-X3.4","title":"discuz-X3.4","ps":"\u56fd\u5185\u77e5\u540d\u8bba\u575b\u7a0b\u5e8f?<\/a>","version":"20220811.","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":38663,"score":"4.6","is_site_show":1001,"versions":[{"m_version":"20220811","version":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"UFT8","download":"other\/20220903\/5ce39903aaf925f84e36f463054801b2.zip","md5":"4c528db86e728b9e42fc150e260acb53","size":12065820}]},{"id":600801534,"type":4,"sort":4.2,"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?<\/a>","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":31447,"score":"4.2","is_site_show":1003,"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":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\u3001\u8fdb\u9500\u5b58\u3001DIY?<\/a>","version":"v2.3.2 221206","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":25910,"score":"4.7","is_site_show":0,"versions":[{"m_version":"v2","version":"3.2 221206","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u7ec6\u8282\u4f18\u5316\uff0cBUG\u4fee\u590d\uff0cUI\u4f18\u5316\uff0c\u65b0\u589e\u8d26\u53f7\u6ce8\u9500","download":"other\/20221206\/ca134fe7a91ec4efc3456881227064b2.zip","md5":"99fdb731c74fe8fa276b0903a420ef73","size":44673056}]},{"id":600801287,"type":4,"sort":4.1,"name":"emlog","title":"emlog","ps":"\u7b80\u6d01\u6613\u7528\u7684PHP\u535a\u5ba2\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"pro 1.9.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":"56,70,71,72,73,74,80,81","official":"https:\/\/www.emlog.net","enable_functions":"","count":24167,"score":"4.1","is_site_show":0,"versions":[{"m_version":"pro 1","version":"9.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"emlog","download":"other\/20221229\/d34823a0523c80e389829a984b914d23.zip","md5":"628cb8b0e8c5458495c535c8025f08c3","size":1061885}]},{"id":600801257,"type":1,"sort":4.9,"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?<\/a>","version":"5.0.0.9","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":18723,"score":"4.9","is_site_show":0,"versions":[{"m_version":"5","version":"0.0.9","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\/20221201\/fcbf0c883ebbf9e89377af2a5ce9c19c.zip","md5":"a51538f715974ec5375001020baab898","size":2919285}]},{"id":600801278,"type":6,"sort":4.2,"name":"ThinkPHP-5.0","title":"ThinkPHP-5.0","ps":"\u56fd\u5185\u77e5\u540dPHP\u6846\u67b6?<\/a>","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":14842,"score":"4.2","is_site_show":3,"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.4,"name":"empirecms","title":"\u5e1d\u56fdCMS","ps":"\u5e1d\u56fd\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?<\/a>","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":13589,"score":"4.4","is_site_show":1006,"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":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!?<\/a>","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":8327,"score":"4.5","is_site_show":0,"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":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?<\/a>","version":"v2022.8","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":8224,"score":"4.2","is_site_show":0,"versions":[{"m_version":"v2022","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"v2022.8","download":"other\/20220820\/286c83a8a3600f8278c3c8baf20eaf87.zip","md5":"1d61cad2d4280000686207f2e05bf610","size":16452963}]},{"id":600801274,"type":2,"sort":4,"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?<\/a>","version":"v4.6.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":7637,"score":"4.0","is_site_show":0,"versions":[{"m_version":"v4","version":"6.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\/20221101\/9d618628aa48dcb339f1e9293e32fbce.zip","md5":"8164b6356a1f03d086208a237029ccec","size":87727965}]},{"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?<\/a>","version":"v2022.9c","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":"70,71,72,73,74,80,81","official":"www.wpjtmb.com","enable_functions":"","count":6490,"score":"5.0","is_site_show":0,"versions":[{"m_version":"v2022","version":"9c","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"v2022.9c","download":"other\/20220915\/1587948cf3d51df44557058cffc4cd47.zip","md5":"517452d4a7b6e7b51672faf37ea785dc","size":43190467}]},{"id":600801417,"type":2,"sort":4.4,"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?<\/a>","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":5516,"score":"4.4","is_site_show":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\/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?<\/a>","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":4907,"score":"3.7","is_site_show":0,"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?<\/a>","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":4637,"score":"4.0","is_site_show":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":600801301,"type":1,"sort":4.5,"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?<\/a>","version":"2.6.7","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":3746,"score":"4.5","is_site_show":0,"versions":[{"m_version":"2","version":"6.7","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"* 2022-09-20 v2.6.7 - \u4f18\u5316\u540e\u53f0\u663e\u793a - \u589e\u52a0\u63a7\u5236\u7f29\u7565\u56fe\u5c3a\u5bf8 - \u4fee\u590d\u542f\u7528Opcache\u5e26\u6765\u7684\u95ee\u9898","download":"other\/20220920\/1189cdbf7181862d781e6ea3f95ee264.zip","md5":"a14c593f34ba9fc4d25c29e54080143a","size":3832866}]},{"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?<\/a>","version":"2.5","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,81","official":"http:\/\/www.wdja.net\/","enable_functions":"","count":3337,"score":"2.3","is_site_show":0,"versions":[{"m_version":"2","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u529f\u80fd\u4f18\u5316","download":"other\/20220709\/6043e62b141d2464965e5f1e96a64193.zip","md5":"98810edff9363f60973f9885187d50b0","size":6826493}]},{"id":600801284,"type":1,"sort":5,"name":"phpcms","title":"phpcms","ps":"PHPCMS\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf?<\/a>","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":3309,"score":"5.0","is_site_show":4,"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":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?<\/a>","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":3277,"score":"5.0","is_site_show":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":600801751,"type":2,"sort":4.8,"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?<\/a>","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":3212,"score":"4.8","is_site_show":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":600801578,"type":4,"sort":1.9,"name":"wdja_blog","title":"WDJA\u535a\u5ba2\u7ba1\u7406\u7cfb\u7edf","ps":"\u5b98\u7f51www.wdja.net QQ\u7fa4:122019913?<\/a>","version":"2.6","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":2878,"score":"1.9","is_site_show":0,"versions":[{"m_version":"2","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u529f\u80fd\u4f18\u5316","download":"other\/20220708\/e4d70a713504b560e0e84b0970523942.zip","md5":"216227a548147a4644f174d4cfb3331d","size":8276398}]},{"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?<\/a>","version":"6.71","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":2408,"score":"5.0","is_site_show":0,"versions":[{"m_version":"6","version":"71","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\/20230107\/bd5ebbcb3321a8034b3708920199c57a.zip","md5":"59e26222f3e10eb69357aa7f86dfa8d9","size":17734305}]},{"id":600801509,"type":6,"sort":4.5,"name":"omocms","title":"OmoCms","ps":"\u72c2\u56e2KtAdmin-\u514d\u8d39\u5f00\u6e90\u7684SAAS\u7cfb\u7edf\u5feb\u901f\u5f00\u53d1\u6846\u67b6?<\/a>","version":"1.0.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\/20221012\/613e0be95f4d01ba6ce1bce700cccb94.png","php":"74","official":"http:\/\/www.ktadmin.cn","enable_functions":"fileinfo,redis,sg11","count":2348,"score":"4.5","is_site_show":0,"versions":[{"m_version":"1","version":"0.4","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"\u65b0\u7248\u672c\u66f4\u65b0","download":"other\/20221014\/2f6311ef65bb60a10135de23fe4949f5.zip","md5":"53dd78f628248a961e246ea7f3223cd4","size":10413017}]},{"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?<\/a>","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":2322,"score":"3.7","is_site_show":0,"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":600801697,"type":1,"sort":4.4,"name":"yzncms","title":"YznCMS","ps":"\u57fa\u4e8ethinkphp5.1\u548cLayui2.6\u7684\u540e\u53f0\u7cfb\u7edf?<\/a>","version":"1.1.0.20221118","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":1800,"score":"4.4","is_site_show":0,"versions":[{"m_version":"1","version":"1.0.20221118","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u53bb\u9664\u6a21\u5757\u6a21\u5f0f\uff0c\u4f7f\u7528\u5168\u65b0\u7684\u63d2\u4ef6\u6a21\u578b","download":"other\/20221118\/e0557185dd4f9212ee23ce4428138246.zip","md5":"87943cf8a748c93b3ce0907072e23daa","size":31512747}]},{"id":600801719,"type":1,"sort":4.3,"name":"yzmcms","title":"YzmCMS\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS","ps":"\u57fa\u4e8ePHP+MYSQL\u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5f00\u6e90CMS\u7cfb\u7edf?<\/a>","version":"V6.7","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,81","official":"https:\/\/www.yzmcms.com","enable_functions":"","count":1595,"score":"4.3","is_site_show":0,"versions":[{"m_version":"V6","version":"7","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\/20230105\/8ff5fd1880b03079f07790b180e20c52.zip","md5":"7e24a75d700cea288d2539864ff029d2","size":4165089}]},{"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?<\/a>","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":1535,"score":"5.0","is_site_show":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":600801761,"type":1,"sort":3.7,"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?<\/a>","version":"v5.5.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":1488,"score":"3.7","is_site_show":0,"versions":[{"m_version":"v5","version":"5.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u9875\u9762\u6807\u7b7e\u652f\u6301\uff0c\u7528\u6237\u903b\u8f91\u4f18\u5316","download":"other\/20221227\/a44cd97e655bcb50ee0b803238b20c94.zip","md5":"24ff7e4506c2a795eba1abe61cbe1b2e","size":31986052}]},{"id":600801684,"type":1,"sort":4.4,"name":"public","title":"\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90","ps":"\u8bfa\u601d\u5ba2\u5168\u80fd\u7b7e\u8f6f\u4ef6\u6e90 - \u6781\u901f\u7f51\u7edc\u63d0\u4f9b\u4e00\u952e\u90e8\u7f72?<\/a>","version":"7.1.2","author":"\u5218\u5c11","price":0,"auth_price":0,"home":"https:\/\/www.v-team.cn","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210317\/ad23cdd1dcfd9b6c57eed78ffbbcd698.png","php":"70","official":"https:\/\/www.v-team.cn","enable_functions":"putenv","count":1384,"score":"4.4","is_site_show":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":600801812,"type":4,"sort":3,"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?<\/a>","version":"v6.5.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":1250,"score":"3.0","is_site_show":0,"versions":[{"m_version":"v6","version":"5.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u540e\u53f0\u591a\u9875\u9762\u5347\u7ea7\uff0c\u6a21\u5757\u5e02\u573a\u4f18\u5316","download":"other\/20230104\/958cbf748f4c8696bfff5ae6f48a55bc.zip","md5":"3368769fcda3f14d6715c0f877634315","size":31132644}]},{"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?<\/a>","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":1225,"score":"5.0","is_site_show":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":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?<\/a>","version":"2022.10201353","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":1204,"score":"5.0","is_site_show":0,"versions":[{"m_version":"2022","version":"10201353","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"BUG\u4fee\u590d\u3001\u529f\u80fd\u66f4\u65b0","download":"other\/20221020\/b17a0f53160a522b4c0e52805174e3d3.zip","md5":"56fd393ffea9038c2c26ff56b3462bf3","size":7118844}]},{"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?<\/a>","version":"V3.3.3","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":1106,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V3","version":"3.3","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"","download":"other\/20221109\/04f093ea9a6daea9b37518ac1494d0e5.zip","md5":"1f9fb691cdc71953ca06dc9b3bd77326","size":3608992}]},{"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?<\/a>","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":1077,"score":"5.0","is_site_show":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":600801766,"type":1,"sort":4.3,"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?<\/a>","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":1038,"score":"4.3","is_site_show":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":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?<\/a>","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":1013,"score":"4.0","is_site_show":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":600801832,"type":4,"sort":4.6,"name":"inis","title":"inis\u535a\u5ba2\u7cfb\u7edf","ps":"\u65b0\u4e00\u4ee3\u535a\u5ba2\u7cfb\u7edf\uff0c\u5185\u7f6e 150 \u4e2aAPI?<\/a>","version":"2.0.0","author":"inis","price":0,"auth_price":0,"home":"https:\/\/docs.inis.cc","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221010\/73e59a27c0e4411f772ab0c0f8cc8550.png","php":"80,81","official":"https:\/\/inis.cc","enable_functions":"","count":993,"score":"4.6","is_site_show":0,"versions":[{"m_version":"2","version":"0.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4f5c\u8005QQ\uff1a97783391\uff1bQQ\u7fa4\uff1a632274746","download":"other\/20221231\/acfb1555f639e102ec1c0f21bebb4eb0.zip","md5":"f51395572743b94bf6f2ef3d25082f45","size":7768894}]},{"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?<\/a>","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":968,"score":"5.0","is_site_show":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":600801593,"type":1,"sort":0,"name":"wdja_course","title":"WDJA\u6559\u7a0b\u53d1\u5e03\u7cfb\u7edf","ps":"\u5b98\u7f51www.wdja.net QQ\u7fa4:122019913?<\/a>","version":"2.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,80,81","official":"http:\/\/www.wdja.net","enable_functions":"","count":955,"score":0,"is_site_show":0,"versions":[{"m_version":"2","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u624b\u673a\u7248\u9002\u914d\uff0c\u529f\u80fd\u4f18\u5316","download":"other\/20220716\/e607c45d12bde182f55c49a1bdf4ef63.zip","md5":"d4176db7f7032c9410ba8223172a89d1","size":6539740}]},{"id":600801837,"type":5,"sort":3.7,"name":"zzzy_idcard_v1","title":"\u8bc1\u4ef6\u7167\u5236\u4f5c\u514d\u8d39\u7248","ps":"\u8bc1\u4ef6\u7167\u5236\u4f5c,\u4e00\u952e\u5236\u4f5c\u8bc1\u4ef6\u7167\uff0c\u652f\u6301700\u591a\u79cd\u8bc1\u4ef6\u7167\u89c4\u683c?<\/a>","version":"1.2.6","author":"\u9e67\u5e94\u79d1\u6280","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-102856-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221025\/564d7fd0c19c60aeb8a4194b25458522.png","php":"56,70,71,72,73,74","official":"https:\/\/www.zjzapi.com\/","enable_functions":"","count":882,"score":"3.7","is_site_show":0,"versions":[{"m_version":"1","version":"2.6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u4f18\u5316\u5b89\u88c5ssl\u8bc1\u4e66\u68c0\u6d4b","download":"other\/20221129\/e2aa746110f87a39483b1ac3f1aa767e.zip","md5":"dde83e6101ac73172e5c675abe166f90","size":5496838}]},{"id":600801801,"type":6,"sort":5,"name":"openblock","title":"OpenBlock","ps":"\u56fe\u5f62\u5316\u7f16\u7a0b\u8bed\u8a00\uff0c\u53ef\u4ee5\u5236\u4f5c\u6e38\u620f\u3001\u52a8\u753b\u3001\u9e3f\u8499\u5e94\u7528\u7b49\u3002?<\/a>","version":"1.03","author":"\u5510\u5948\u5c18","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&amp;tid=89210&amp;page=1&amp;extra=#pid361633","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220408\/76d527eb464f4295d69630d2b574a15a.png","php":"53,54,55,56,70,71,72,73,74,80,81","official":"https:\/\/gitee.com\/openblock","enable_functions":"","count":827,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"03","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u6dfb\u52a0\u65b0\u529f\u80fd","download":"other\/20220915\/84af08873a891059d86f904b418ad732.zip","md5":"52d6166567947c465d75e61323f1357e","size":8378671}]},{"id":600801810,"type":1,"sort":4,"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?<\/a>","version":"v2.2.3.221021","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","official":"http:\/\/www.hkcms.cn","enable_functions":"chmod","count":824,"score":"4.0","is_site_show":0,"versions":[{"m_version":"v2","version":"2.3.221021","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\/20221022\/f41af70ec51eb41ff0e09330703d901d.zip","md5":"db70895d23b3d0e52fdd223919a1ee23","size":12617077}]},{"id":600801768,"type":1,"sort":5,"name":"siyucms","title":"SIYUCMS \u5feb\u901f\u5f00\u53d1\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf","ps":"ThinkPHP6.1 + AdminLTE \u5f00\u53d1\u7684\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"6.1.8","author":"SIYUCMS","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&amp;tid=80950","min_image":"\/api\/Pluginother\/get_file?fname=image\/20211207\/abed2f58321ee744d70003a504fed997.png","php":"72,73,74,80,81","official":"https:\/\/siyucms.com","enable_functions":"","count":815,"score":"5.0","is_site_show":0,"versions":[{"m_version":"6","version":"1.8","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"V 6.1.8","download":"other\/20221201\/414c8c485a52eb048d439f57c7f66eb1.zip","md5":"58dc0969241818393ae213c5601303e5","size":26786827}]},{"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?<\/a>","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":800,"score":"5.0","is_site_show":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":600801816,"type":6,"sort":5,"name":"dberp","title":"DBERP \u8fdb\u9500\u5b58","ps":"\u521d\u5fc3\u4f9d\u65e7\uff0c\u53ef\u514d\u8d39\u5546\u7528\u7684\u8fdb\u9500\u5b58\u7cfb\u7edf\u3002?<\/a>","version":"V1.1 RC 221102","author":"\u5317\u4eac\u73d1\u5927\u949c\u5546\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/bbs.dbshop.net\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220706\/32afd833b67a0de6be5d946f9c54590a.png","php":"74,80","official":"https:\/\/www.dberp.com.cn","enable_functions":"","count":799,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V1","version":"1 RC 221102","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e38\u89c4\u66f4\u65b0\uff0c\u672c\u5730\u6d4b\u8bd5\u4e00\u952e\u90e8\u7f72\u662f\u6ca1\u6709\u95ee\u9898\u7684","download":"other\/20221109\/cab0bb8372f7f460b107016016cf5580.zip","md5":"df9e13180f0312cb1b4ddd9ee6ecb57f","size":14804694}]},{"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?<\/a>","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":789,"score":"5.0","is_site_show":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":600801791,"type":4,"sort":1.3,"name":"blog","title":"\u9b54\u4f17\u535a\u5ba2\u7cfb\u7edf-\u4f53\u9a8c\u7248","ps":"\u4e00\u4e2a\u6709\u8bbe\u8ba1\u611f\u7684\u535a\u5ba2\u7cfb\u7edf?<\/a>","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":752,"score":"1.3","is_site_show":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":600801786,"type":6,"sort":5,"name":"moran_iapp","title":"\u9ed8\u7136iApp\u540e\u53f0\u7ba1\u7406\u7cfb\u7edf","ps":"\u4ea4\u6d41\u7fa4\uff1a219348005?<\/a>","version":"2.8.7","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":"70,71,72,73,74,80,81","official":"http:\/\/ht.moranblog.cn\/","enable_functions":"","count":734,"score":"5.0","is_site_show":0,"versions":[{"m_version":"2","version":"8.7","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"Issue\uff0c\u5410\u69fd\uff0c\u5efa\u8bae\u7b49\u8bf7\u52a0\u7fa4\u4e86\u89e3\uff1a219348005","download":"other\/20220810\/667465576a75991f0c7025bccfdac2a4.zip","md5":"64e61be6960c1c078ee8741e4bd378fc","size":14320500}]},{"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.?<\/a>","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":712,"score":"5.0","is_site_show":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":600801782,"type":1,"sort":5,"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?<\/a>","version":"1.20","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":703,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"20","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u57df\u540d\u7a7a\u95f4VPS\u670d\u52a1\u5668\u7b49IDC\u8d22\u52a1\u7cfb\u7edf\u4ee3\u7406\u7cfb\u7edf\u4e3b\u63a7\u7cfb\u7edf","download":"other\/20220829\/007a16d18663d3b9f1e1f3034f732c1e.zip","md5":"4097d5aa1c575df7a12d83709c2cb88f","size":9147871}]},{"id":600801789,"type":1,"sort":3,"name":"modstart_laravel9","title":"ModStartCMS Laravel 9.0\u7248","ps":"\u6a21\u5757\u5316\u5efa\u7ad9\u7cfb\u7edf?<\/a>","version":"v5.5.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":657,"score":"3.0","is_site_show":0,"versions":[{"m_version":"v5","version":"5.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u9875\u9762\u6807\u7b7e\u652f\u6301\uff0c\u7528\u6237\u903b\u8f91\u4f18\u5316","download":"other\/20221227\/e4a1186fa153e029cf61d2808cc2638c.zip","md5":"f38c5de94653eedff627b1a8c548c6b7","size":32853020}]},{"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?<\/a>","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":648,"score":"5.0","is_site_show":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":600801760,"type":1,"sort":5,"name":"funadmin","title":"funadmin","ps":"\u57fa\u4e8eTP6\u548clayui\u7684\u6a21\u5757\u5316\u5f00\u53d1\u7cfb\u7edf?<\/a>","version":"3.1.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":620,"score":"5.0","is_site_show":0,"versions":[{"m_version":"3","version":"1.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"FunAdmin\u57fa\u4e8eTP6+Layui\u7684\u6781\u901f\u5f00\u53d1\u6846\u67b6","download":"other\/20221121\/1b25480337b196ac36b9310a5680c996.zip","md5":"0c8b4310a669082922f7da106b15f52f","size":24990819}]},{"id":600801783,"type":5,"sort":2.3,"name":"dt_free","title":"\u968f\u5fc3\u5730\u63a8","ps":"\u968f\u5fc3\u79d1\u6280\u5730\u63a8\u7cfb\u7edf?<\/a>","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":575,"score":"2.3","is_site_show":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":600801800,"type":3,"sort":5,"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?<\/a>","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":546,"score":"5.0","is_site_show":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":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?<\/a>","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":475,"score":"5.0","is_site_show":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":600801836,"type":6,"sort":5,"name":"ktadmin","title":"\u72c2\u56e2KtAdmin\u5f00\u6e90\u6846\u67b6","ps":"\u72c2\u56e2KtAdmin-\u514d\u8d39\u5f00\u6e90\u7684SAAS\u7cfb\u7edf\u5feb\u901f\u5f00\u53d1\u6846\u67b6?<\/a>","version":"1.1.6","author":"DOXCX","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-101801-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221013\/fd7dd839b34176184719539faf524193.png","php":"74","official":"http:\/\/www.ktadmin.cn","enable_functions":"fileinfo,redis,sg11","count":383,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"1.6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u65b0\u529f\u80fd\u5347\u7ea7","download":"other\/20221208\/bc46b6d6156332c603e9d628a826748a.zip","md5":"cf60ddd74af0441f657bfc20b68bfb53","size":9365003}]},{"id":600801823,"type":1,"sort":3.7,"name":"wxwhgjx","title":"\u4e07\u76f8\u6587\u5316\u5de5\u5177\u7bb1","ps":"\u5f15\u6d41\u7f51\u9875\u5de5\u5177\u7bb1?<\/a>","version":"1.0.0","author":"\u4e07\u76f8\u6587\u5316","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&tid=99295","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220829\/ad2a29a1d89821213ba23d4a91de1dec.png","php":"53,54,55,56,70,71,72,73","official":"http:\/\/gjxwx.zhouyi186.com","enable_functions":"","count":348,"score":"3.7","is_site_show":0,"versions":[{"m_version":"1","version":"0.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":1,"version_msg":"\u7b2c\u4e00\u7248","download":"other\/20220829\/522b27bb73167d510bc06edf6197542c.zip","md5":"14d9810b83d001c92be646144ee21689","size":14360561}]},{"id":600801821,"type":2,"sort":5,"name":"dbcart","title":"DBCart \u591a\u8bed\u8a00\u5546\u57ce\u7cfb\u7edf","ps":"\u591a\u8bed\u8a00\u3001\u591a\u8d27\u5e01\u5b9e\u65f6\u5207\u6362\uff0c\u667a\u80fd\u7ffb\u8bd1\uff0c\u53ef\u514d\u8d39\u5546\u7528\u7684\u8de8\u5883\u7535\u5546\u7cfb\u7edf\u3002?<\/a>","version":"V3.1 RC 221030","author":"\u5317\u4eac\u73d1\u5927\u949c\u5546\u79d1\u6280\u6709\u9650\u516c\u53f8","price":0,"auth_price":0,"home":"https:\/\/bbs.loongdom.cn\/forum.php?gid=90","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220819\/13f2aa02d6d01a8e7bd2b0e4dc7dc695.png","php":"74,80","official":"https:\/\/dbcart.loongdom.cn\/","enable_functions":"","count":278,"score":"5.0","is_site_show":0,"versions":[{"m_version":"V3","version":"1 RC 221030","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u5e38\u89c4\u66f4\u65b0","download":"other\/20221101\/0b5b759932c0c07dabbaefcf88e906e8.zip","md5":"5070d662a8fd506e9c2813446d183870","size":51238866}]},{"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?<\/a>","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":277,"score":0,"is_site_show":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":600801838,"type":1,"sort":5,"name":"xyhcms","title":"XYHCMS","ps":"XYHCMS\u662f\u5f00\u6e90\u7684\u5efa\u7ad9\u5185\u5bb9\u7ba1\u7406\u7cfb\u7edf\uff0c\u7b80\u6d01\uff0c\u6613\u7528\uff0c\u5b89\u5168\uff0c\u7a33\u5b9a?<\/a>","version":"3.6_20220617","author":"\u884c\u4e91\u6d77","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-102486-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221025\/7cc7e97f33da26ed2d751313b2edb2d6.png","php":"53,54,55,56,70,71,72,73,74","official":"http:\/\/www.xyhcms.com","enable_functions":"","count":166,"score":"5.0","is_site_show":0,"versions":[{"m_version":"3","version":"6_20220617","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"xyhcms3.6 (20220617)","download":"other\/20221025\/1f23145ef9dde07d34f27c23b7e10140.zip","md5":"eefc9fc4630eeaa21b6aa05591c3af26","size":9016880}]},{"id":600801808,"type":1,"sort":5,"name":"sokingcms","title":"\u641c\u5ba2CMS","ps":"\u591a\u57ce\u5e02\u5206\u7ad9\u7ba1\u7406\u7cfb\u7edf\uff0c\u4e00\u952e\u751f\u6210300\u591a\u4e2a\u57ce\u5e02\u3002?<\/a>","version":"1.5.4.1","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\/20221024\/904b45429dc07b9affd0cf90c1530650.png","php":"71,72,73","official":"https:\/\/www.sokingcms.com","enable_functions":"","count":156,"score":"5.0","is_site_show":0,"versions":[{"m_version":"1","version":"5.4.1","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"1\u3001\u4fee\u590d\u591a\u57ce\u5e02\u767e\u5ea6\u63a8\u9001\u9519\u8bef\u95ee\u9898\u30022\u3001\u589e\u52a0\u514d\u8d39\u7248\u672c","download":"other\/20221104\/3ac1f07cfcf2e25e703569820b5cabbe.zip","md5":"1c4582e0c079ae1d459fa85b7e51d55c","size":79188800}]},{"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?<\/a>","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":135,"score":"5.0","is_site_show":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":600801829,"type":6,"sort":5,"name":"ectool1997","title":"ECT\u5feb\u901f\u5f00\u53d1\u6846\u67b6","ps":"\u57fa\u4e8eTp6 \u670d\u52a1\u7aef\u5f00\u53d1\u6846\u67b6 \u524d\u7aef\u79d2\u53d8\u5168\u6808?<\/a>","version":"2.0.0","author":"dpp","price":0,"auth_price":0,"home":"https:\/\/www.kaiyuantong.cn\/ect\/#\/","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220920\/ccce31949a1d74c81e8589a748a9a70f.png","php":"70,71,72,73,74,80","official":"https:\/\/www.kaiyuantong.cn\/webapp\/Index\/index","enable_functions":"chown,mkdir,rename","count":77,"score":"5.0","is_site_show":0,"versions":[{"m_version":"2","version":"0.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"2.0.0 \u6b63\u5f0f\u7248\u53d1\u5e03","download":"other\/20221201\/6f54bf061602b676666517bf869d9f8f.zip","md5":"3170afbe3b5801ade1038bcea5fccdb4","size":17265642}]},{"id":600801850,"type":5,"sort":0,"name":"crmuucn","title":"CRMUU-\u514d\u8d39\u4f01\u5faeSCRM\u6e90\u7801\u7cfb\u7edf","ps":"CRMUU\u662f\u4e00\u6b3e\u514d\u8d39\u5f00\u6e90\u7684\u4f01\u4e1a\u5fae\u4fe1SCRM\u6e90\u7801\u7cfb\u7edf\uff01?<\/a>","version":"1.0.6","author":"DOXCX","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/thread-106294-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221229\/df90605c3a6c5ed691f25a5b1b4fb854.png","php":"74","official":"http:\/\/crmuu.qvmh.cn\/","enable_functions":"fileinfo,redis,sg11","count":62,"score":0,"is_site_show":0,"versions":[{"m_version":"1","version":"0.6","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u7a33\u5b9a\u7248","download":"other\/20221229\/521841a877d90f975fafcaaab17ebcab.zip","md5":"ef4c2f27f5019c307ff0f9ea32bf06aa","size":13751346}]},{"id":600801852,"type":4,"sort":0,"name":"modstartblog9","title":"ModStartBlog\u535a\u5ba2\u7cfb\u7edf Laravel9","ps":"\u7cfb\u7edf\u5b8c\u5168\u5f00\u6e90\uff0c\u57fa\u4e8e Apache 2.0 \u5f00\u6e90\u534f\u8bae\u3002?<\/a>","version":"v6.5.0","author":"\u9b54\u4f17","price":0,"auth_price":0,"home":"https:\/\/www.bt.cn\/bbs\/forum.php?mod=viewthread&amp;amp;tid=93176","min_image":"\/api\/Pluginother\/get_file?fname=image\/20230104\/0fbafbb211a10e13e9104c78016e572c.png","php":"8.1","official":"https:\/\/modstart.com\/","enable_functions":"shell_exec,proc_open,putenv","count":2,"score":0,"is_site_show":0,"versions":[{"m_version":"v6","version":"5.0","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":0,"version_msg":"\u540e\u53f0\u591a\u9875\u9762\u5347\u7ea7\uff0c\u652f\u6301Laravel9","download":"other\/20230104\/0d9e791423d3236aea2c12c98be186cd.zip","md5":"895f4e9751bbbbfb293ded751141d485","size":31750940}]}],"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..1cb2978 --- /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":"\u5b89\u5168\u5e94\u7528","title_en":"Tools","sort":3,"ps":"\u5b89\u5168\u5e94\u7528","ps_en":"System tools","icon":"icon","panel_en":1},{"id":7,"title":"\u514d\u8d39\u5e94\u7528","title_en":"Plug-ins","sort":4,"ps":"\u514d\u8d39\u5e94\u7528","ps_en":"aaPanel plug-ins","icon":"icon","panel_en":1},{"id":8,"title":"\u4e13\u4e1a\u7248\u5e94\u7528","title_en":"","sort":5,"ps":"\u4e13\u4e1a\u7248\u5e94\u7528","ps_en":"","icon":"icon","panel_en":0},{"id":12,"title":"\u4f01\u4e1a\u7248\u5e94\u7528","title_en":"","sort":6,"ps":"\u4f01\u4e1a\u7248\u5e94\u7528","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":187,"os":"Windows","pid":100000075,"type":12,"sort":101,"price":99,"name":"disk_analysis","title":"\u5821\u5854\u78c1\u76d8\u5360\u7528\u5206\u6790","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u5206\u6790\u78c1\u76d8\u5360\u7528\u60c5\u51b5","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/disk_analysis","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/disk_analysis","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":332,"soft_id":187,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1671068076}],"endtime":0},{"id":184,"os":"Windows","pid":0,"type":7,"sort":101,"price":0,"name":"conf_backup","title":"\u5b9d\u5854\u914d\u7f6e\u5907\u4efd","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u5907\u4efd\u8ba1\u5212\u4efb\u52a1\u548c\u5b9d\u5854\u76f8\u5173\u914d\u7f6e\u6570\u636e","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/conf_backup\/conf_backup_main.py","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/conf_backup\/","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":335,"soft_id":184,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590dssl\u4e0d\u5b58\u5728\u65f6\u5907\u4efd\u51fa\u9519\u7684\u95ee\u9898\n2.\u4f18\u5316\u4ee3\u7801\u903b\u8f91","os_limit":0,"beta":0,"update_time":1671157936},{"id":268,"soft_id":184,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u652f\u6301\u8ba1\u5212\u4efb\u52a1\u3001FTP\u7528\u6237\u5bc6\u7801\u3001\u7f51\u7ad9\u914d\u7f6e\u76f8\u5173\u4fe1\u606f\u3001\u9632\u706b\u5899\u914d\u7f6e\u4fe1\u606f\u3001\u9762\u677f\u65e5\u5fd7\u4fe1\u606f","os_limit":0,"beta":0,"update_time":1661332130}],"endtime":0},{"id":114,"os":"Windows","pid":100000031,"type":12,"sort":970,"price":79.8,"name":"btFilter","title":"\u5821\u5854\u4f01\u4e1a\u7ea7\u9632\u7be1\u6539 - \u91cd\u6784\u7248","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63a8\u8350\uff1a<\/span>\u5185\u6838\u7248\u9632\u7be1\u6539,\u7528\u4e8e\u4fdd\u62a4\u7ad9\u70b9\u5185\u5bb9\u5b89\u5168\uff0c\u9632\u6b62\u9ed1\u5ba2\u975e\u6cd5\u4fee\u6539\u7f51\u9875\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5165\u4fb5\u884c\u4e3a\uff0c\u652f\u63012012\u30012016\u30012019\u7b49\u7cfb\u7edf","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":"6","ex3":"","keyword":"","versions":[{"id":330,"soft_id":114,"m_version":"4","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1670465060},{"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}],"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":"6","ex3":"","keyword":"","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":"6","ex3":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":"6","ex3":"","keyword":"","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":"6","ex3":"","keyword":"","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":"6","ex3":"","keyword":"","versions":[{"id":276,"soft_id":78,"m_version":"5","version":"3","dependnet":"apache","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1663383442},{"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}],"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":"","keyword":"","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":"","keyword":"","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":102,"os":"Windows","pid":100000031,"type":8,"sort":994,"price":39.8,"name":"tamper_proof","title":"\u5821\u5854\u9632\u7be1\u6539","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u4e8b\u4ef6\u578b\u9632\u7be1\u6539\uff08\u4e0d\u652f\u6301asa,asax\u7b49\u540e\u7f00\uff09\uff0c\u7528\u4e8e\u4fdd\u62a4\u7ad9\u70b9\u5185\u5bb9\u5b89\u5168\uff0c\u9632\u6b62\u9ed1\u5ba2\u975e\u6cd5\u4fee\u6539\u7f51\u9875\u3001\u7f51\u7ad9\u6302\u9a6c\u7b49\u5165\u4fb5\u884c\u4e3a\uff0c\u63a8\u8350\u4f7f\u7528 \u4f01\u4e1a\u7ea7\u9632\u7be1\u6539 <\/span>\uff0c\u4fdd\u62a4\u6548\u679c\u66f4\u4f73","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"btFilter","install_checks":"{SETUP_PATH}\/panel\/plugin\/tamper_proof","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/tamper_proof","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":327,"soft_id":102,"m_version":"3","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1669959623}],"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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","versions":[{"soft_id":49,"m_version":"2.4","version":"54","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":"","keyword":"","versions":[{"soft_id":76,"m_version":"1.22","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"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":"","keyword":"","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":"38","dependnet":"","mem_limit":3700,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":50,"m_version":"8.0","version":"29","dependnet":"","mem_limit":3700,"cpu_limit":2,"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":"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":"","keyword":"","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":"","keyword":"","versions":[{"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":"","keyword":"","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":"","keyword":"","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":"","keyword":"","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":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":"","keyword":"","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":"","keyword":"","versions":[{"id":116,"soft_id":58,"m_version":"5","version":"5","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":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\u4e91\u5c06\u4e8e2023-01-01\u505c\u7528\u8001\u63a5\u53e3\uff0c\u8bf7\u5c3d\u5feb\u5347\u7ea7\u63d2\u4ef6\u52303.0+\u3002<\/span>\u817e\u8baf\u4e91DNS\u89e3\u6790\u662f\u56fd\u5185\u6700\u5927\u7684\u514d\u8d39DNS\u89e3\u6790\u4ea7\u54c1\u63d0\u4f9b\u5546->\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":"","keyword":"","versions":[{"id":324,"soft_id":150,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u517c\u5bb9dnspod3.0","os_limit":0,"beta":0,"update_time":1669794572},{"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":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":"","keyword":"","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":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":"","keyword":"","versions":[{"id":118,"soft_id":61,"m_version":"5","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4fee\u590d\u7f51\u7ad9\u5907\u4efd\u5931\u8d25\u95ee\u9898\u3002\n2.\u4fee\u590d\u65e0\u6cd5\u83b7\u53d6\u6392\u9664\u8def\u5f84\u95ee\u9898\u3002","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":"","keyword":"","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":"","keyword":"","versions":[{"id":119,"soft_id":57,"m_version":"5","version":"7","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":"","keyword":"","versions":[{"id":114,"soft_id":145,"m_version":"1","version":"9","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":"","keyword":"","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":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":"","keyword":"","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":"","keyword":"","versions":[{"id":115,"soft_id":60,"m_version":"5","version":"5","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":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":"","keyword":"","versions":[{"id":117,"soft_id":59,"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":1627455229}],"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":"","keyword":"","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":"","keyword":"","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 \uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->sg11\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"fileinfo\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->fileinfo\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"redis\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->redis\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"memcache\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->memcache\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"memcached\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->memcached\uff09<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"opcache\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->opcache<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"apcu\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->apcu<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"imagemagick\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->imagemagick<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"swoole\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->swoole<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"mongodb\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->mongodb<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\",\"pdo_pgsql\":\"\uff08PHP\u8bbe\u7f6e->\u5b89\u88c5\u6269\u5c55->pdo_pgsql<\/span>|>>\u7acb\u5373\u524d\u5f80<\/a>\"}","versions":[{"soft_id":52,"m_version":"5.2","version":"17","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"5.3","version":"29","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"5.4","version":"45","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"5.5","version":"38","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"5.6","version":"40","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"7.0","version":"33","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"7.1","version":"33","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"7.2","version":"34","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"7.3","version":"33","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"7.4","version":"33","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"8.0","version":"28","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":52,"m_version":"8.1","version":"16","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0}],"endtime":0},{"id":93,"os":"Windows","pid":0,"type":7,"sort":1070,"price":0,"name":"psync_api","title":"\u5b9d\u5854\u4e00\u952e\u8fc1\u79fb","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u8fc1\u79fb\u7f51\u7ad9\u6570\u636e\uff0c\u4ec5\u652f\u6301Windows\u9762\u677f6.0\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":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/psync_api","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/psync_api","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":109,"soft_id":93,"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":1627092054}],"endtime":0},{"id":120,"os":"Windows","pid":0,"type":7,"sort":1070,"price":0,"name":"static_cdn","title":"\u5821\u5854\u9762\u677f\u9759\u6001\u6587\u4ef6\u52a0\u901f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5bf9\u9762\u677f\u9759\u6001\u6587\u4ef6\u8fdb\u884cCDN\u52a0\u901f\uff0c\u52a0\u5feb\u9762\u677f\u52a0\u8f7d\u901f\u5ea6\uff0c\u63d0\u5347\u5bf9\u5c0f\u5e26\u5bbd\u548c\u6d77\u5916\u670d\u52a1\u5668\u7684\u9762\u677f\u4f7f\u7528\u4f53\u9a8c!","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/static_cdn","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/static_cdn","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":87,"soft_id":120,"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":1626829784}],"endtime":0},{"id":168,"os":"Windows","pid":0,"type":6,"sort":1079,"price":0,"name":"webshell_check","title":"Webshell\u67e5\u6740\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5b9d\u5854\u96c6\u6210\u957f\u4ead\u7267\u4e91webshell\u67e5\u6740\u529f\u80fd\u3002\u6709\u6548\u7684\u67e5\u6740webshell","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/webshell_check","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/webshell_check","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"6","ex3":"","keyword":"","versions":[{"id":171,"soft_id":168,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1634885357}],"endtime":0},{"id":133,"os":"Windows","pid":0,"type":6,"sort":1080,"price":0,"name":"win_firewalls","title":"Windows\u7cfb\u7edf\u9632\u706b\u5899","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Windows\u7cfb\u7edf\u9632\u706b\u5899Web\u7ba1\u7406\u754c\u9762\uff0c\u652f\u6301\u653e\u884c\u7aef\u53e3\/\u7aef\u53e3\u8f6c\u53d1\/\u5c4f\u853dIP >>\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\/win_firewalls","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/win_firewalls","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":84,"soft_id":133,"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":1626764243}],"endtime":0},{"id":172,"os":"Windows","pid":0,"type":6,"sort":1080,"price":0,"name":"win_event","title":"Windows\u4e8b\u4ef6\u67e5\u770b\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"Windows\u4e8b\u4ef6\u67e5\u770b\u5668","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/win_event","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/win_event","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":177,"soft_id":172,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1635494092}],"endtime":0},{"id":175,"os":"Windows","pid":100000064,"type":12,"sort":1080,"price":99,"name":"file_backup","title":"\u5821\u5854\u81ea\u52a8\u5907\u4efd\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u76d1\u542c\u6307\u5b9a\u76ee\u5f55\u7684\u6240\u6709\u6587\u4ef6\u53d8\u5316\uff0c\u53d1\u751f\u6539\u53d8\u540e\u81ea\u52a8\u5907\u4efd\u6587\u4ef6.","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/file_backup","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/file_backup","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":189,"soft_id":175,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u63d2\u4ef6\u4e0a\u7ebf","os_limit":0,"beta":0,"update_time":1641871007}],"endtime":0},{"id":169,"os":"Windows","pid":0,"type":6,"sort":1083,"price":0,"name":"clear","title":"\u65e5\u5fd7\u6e05\u7406\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u4e00\u952e\u6e05\u7406\u6307\u5b9a\u65e5\u5fd7\u548c\u7cfb\u7edf\u5783\u573e","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/clear","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/clear","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":172,"soft_id":169,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1634891339}],"endtime":0},{"id":137,"os":"Windows","pid":0,"type":6,"sort":1085,"price":0,"name":"win_system","title":"Windows\u5de5\u5177\u7bb1","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u914d\u7f6eHosts,\u68c0\u67e5\u7aef\u53e3\u5360\u7528\uff0c\u4fee\u6539\u7528\u6237\u5bc6\u7801.","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/win_system","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/win_system","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":82,"soft_id":137,"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":1626764152}],"endtime":0},{"id":138,"os":"Windows","pid":0,"type":6,"sort":1090,"price":0,"name":"win_services","title":"Windows\u670d\u52a1\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u5feb\u901f\u7ba1\u7406\u7cfb\u7edf\u670d\u52a1\uff0c\u521b\u5efa\u3001\u5220\u9664\u3001\u4fee\u6539\u548c\u81ea\u52a8\u542f\u52a8IIS\/Nginx\/Apache\u7b49\u670d\u52a1","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/win_services","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/win_services","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":83,"soft_id":138,"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":1626764202}],"endtime":0},{"id":164,"os":"Windows","pid":100000061,"type":12,"sort":1099,"price":99,"name":"ssl_verify","title":"\u5821\u5854\u9650\u5236\u8bbf\u95ee\u578b\u8bc1\u4e66-Windows\u7248","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u63d0\u4f9b\u53cc\u5411\u8ba4\u8bc1\u8bc1\u4e66\uff0c\u53ef\u7528\u4e8e\u9650\u5236\u6307\u5b9a\u4eba\u5458\u8bbf\u95ee\uff08\u91cd\u8981\u4e1a\u52a1\u63a8\u8350\u4f7f\u7528\uff09\uff0c\u63d0\u4f9b\u8f83\u9ad8\u5b89\u5168\u7684\u8bbf\u95ee\u73af\u5883\uff0c\u4e5f\u53ef\u7528\u4e8e\u81ea\u7b7eSSL(\u6b63\u5f0f\u72487.3.0+\u53ef\u7528)<\/span>\u3002 > \u4f7f\u7528\u8bf4\u660e<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/ssl_verify","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/ssl_verify","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":166,"soft_id":164,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u65b0\u589e\u81ea\u52a8\u540c\u6b65\u5230\u9762\u677fSSL","os_limit":0,"beta":0,"update_time":1634695240},{"id":163,"soft_id":164,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1634108909}],"endtime":0},{"id":123,"os":"Windows","pid":100000047,"type":12,"sort":1100,"price":99,"name":"users","title":"\u9762\u677f\u591a\u7528\u6237\u7ba1\u7406","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u652f\u6301\u7ba1\u7406\u9762\u677f\u591a\u7528\u6237\uff0c\u53ef\u67e5\u770b\u5404\u4e2a\u7528\u6237\u65e5\u5fd7\uff0c\u4f46\u4e0d\u652f\u6301\u6743\u9650\u5206\u914d","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/users\/users_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/users","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":96,"soft_id":123,"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":1627011493}],"endtime":0},{"id":160,"os":"Windows","pid":100000060,"type":12,"sort":1160,"price":99,"name":"task_manager","title":"\u5b9d\u5854\u4efb\u52a1\u7ba1\u7406\u5668","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u8f7b\u677e\u7ba1\u7406\u8fdb\u7a0b","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/task_manager","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/task_manager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":145,"soft_id":160,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1630397804}],"endtime":0},{"id":126,"os":"Windows","pid":100000051,"type":12,"sort":1170,"price":99,"name":"bt_boce","title":"\u5821\u5854\u7f51\u7ad9\u6d4b\u901f","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6d4b\u8bd5\u7f51\u7ad9\u5728\u5168\u7403\u5404\u5730\u7684\u6253\u5f00\u901f\u5ea6\u5e76\u53ca\u65f6\u544a\u8b66","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/bt_boce\/bt_boce_main.pyd","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/bt_boce","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":216,"soft_id":126,"m_version":"2","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1647594707},{"id":152,"soft_id":126,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u4e0d\u53d1\u9001\u90ae\u4ef6BUG","os_limit":0,"beta":0,"update_time":1631004924},{"id":97,"soft_id":126,"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":1627011705}],"endtime":0},{"id":171,"os":"Windows","pid":100000039,"type":12,"sort":1180,"price":99,"name":"database_mater","title":"\u6570\u636e\u5e93\u8fd0\u7ef4\u5de5\u5177","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u6570\u636e\u5e93\u8fd0\u7ef4\u7ba1\u7406\u5de5\u5177,\u4e00\u952e\u4f18\u5316MySQL\u6570\u636e\u5e93","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"{SETUP_PATH}\/panel\/plugin\/database_mater","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/database_mater","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","keyword":"","versions":[{"id":175,"soft_id":171,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1635150887}],"endtime":0},{"num":"4.7","id":600801254,"uid":172099,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"\u6587\u4ef6\u641c\u7d22\u53ca\u6279\u91cf\u4fee\u6539","p_index":"mfsearch","ps":"\u6587\u4ef6\u5185\u5bb9\u641c\u7d22\u53ca\u6279\u91cf\u4fee\u6539(\u53ef\u6574\u7ad9\u4fee\u6539\u53ca\u81ea\u52a8\u5907\u4efd)?<\/a>","author":"\u7267\u98de","home":"https:\/\/www.bt.cn\/bbs\/thread-33237-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190615\/e7372086b3e573497e612e1003bbe5b3.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1560579139,"state":0,"sort":4.7,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801254,"version":"1.1.2","version_msg":"1)\u4fee\u590dwin\u7cfb\u7edf\u5b89\u88c5Bug,2)\u4fee\u590d\u90e8\u5206\u7f16\u7801Bug","f_path":"other\/20200118\/db7aaf79ccb5b4d71a40b90a53879953.zip","f_md5":"f40125b5b8c3b0836e6459639a8c96f5","f_size":225019,"type":10,"endtime":0,"score":"4.7","name":"mfsearch","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/mfsearch","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/mfsearch","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"1.2","versions":[{"m_version":"1","version":"1.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"1)\u4fee\u590dwin\u7cfb\u7edf\u5b89\u88c5Bug,2)\u4fee\u590d\u90e8\u5206\u7f16\u7801Bug","download":"other\/20200118\/db7aaf79ccb5b4d71a40b90a53879953.zip","md5":"f40125b5b8c3b0836e6459639a8c96f5","size":225019}],"count":132356},{"num":"3.4","id":600801709,"uid":351620,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u514d\u8d39\u7f51\u7ad9\u5916\u94fe\u63a8\u5e7f","p_index":"free_promotion","ps":"\u63d0\u4f9b\u514d\u8d39\u63d0\u4f9b\u7f51\u7ad9\u6536\u5f55,\u7f51\u7ad9\u5206\u7c7b\u76ee\u5f55\u63d0\u4ea4,?<\/a>","author":"\u65e0\u4f9d","home":"\u514d\u8d39\u7f51\u7ad9\u5916\u94fe\u63a8\u5e7f","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210430\/b6c3c33c90b8cbc80b6142a0231dac98.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1619355914,"state":0,"sort":3.4,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801709,"version":"1.1","version_msg":"\u4fee\u590d\u63d0\u4ea4\u529f\u80fd\u5f02\u5e38","f_path":"other\/20210510\/7dbd1b41850ed50ad7614247286a798a.zip","f_md5":"323eab1ac72a5d58c0ac545efe65264d","f_size":11411,"type":10,"endtime":0,"score":"3.4","name":"free_promotion","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/free_promotion","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/free_promotion","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"1","versions":[{"m_version":"1","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u4fee\u590d\u63d0\u4ea4\u529f\u80fd\u5f02\u5e38","download":"other\/20210510\/7dbd1b41850ed50ad7614247286a798a.zip","md5":"323eab1ac72a5d58c0ac545efe65264d","size":11411}],"count":8645},{"num":"5.0","id":600801744,"uid":705558,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u9632\u7ea2\u77ed\u7f51\u5740\u751f\u6210\u5de5\u5177","p_index":"lzfhdwz","ps":"\u652f\u6301\u57df\u540d\u9632\u7ea2\uff0c\u5fae\u4fe1QQ\u9632\u62e6\u622a\u7684\u77ed\u7f51\u5740\u3002?<\/a>","author":"\u94f6\u6148\u79d1\u6280","home":"https:\/\/www.bt.cn\/bbs\/thread-73359-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210802\/f5e8fe928a70e6c2ef6aca56c7bf5689.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1627880646,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801744,"version":"1.5","version_msg":"\u66f4\u65b0\u79fb\u9664\u5931\u6548\u57df\u540d","f_path":"other\/20230111\/d74e2487704bf678419a7d0ab6a9f05c.zip","f_md5":"bc44f2ff4ddf7615dd46b8da895d0a35","f_size":10025,"type":10,"endtime":0,"score":"5.0","name":"lzfhdwz","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/lzfhdwz","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/lzfhdwz","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"5","versions":[{"m_version":"1","version":"5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u66f4\u65b0\u79fb\u9664\u5931\u6548\u57df\u540d","download":"other\/20230111\/d74e2487704bf678419a7d0ab6a9f05c.zip","md5":"bc44f2ff4ddf7615dd46b8da895d0a35","size":10025}],"count":6913},{"num":"4.3","id":600801358,"uid":80776,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u7f51\u76d8","p_index":"baidu_netdisk","ps":"\u5907\u4efd\u4f60\u7684\u6570\u636e\u5230\u767e\u5ea6\u7f51\u76d8\uff0c\u6ce8\uff1a\u670d\u52a1\u5668\u5e26\u5bbd\u9700\u4e0d\u5c0f\u4e8e2M?<\/a>","author":"\u6280\u672f\u96e8","home":"https:\/\/www.bt.cn\/bbs\/thread-37544-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20190921\/1b28d8321def8455207b6482d78d6534.png","price":6.66,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1569000024,"state":0,"sort":4.3,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801358,"version":"3.9.5","version_msg":"\u65b0\u589e\u65e5\u671f\u5907\u4efd\u76ee\u5f55\u89c4\u5219\u5b57\u7b26\u4e32\u8bbe\u7f6e","f_path":"other\/20230120\/a594a2e1a9d76fe5e9f9a3f70e11437c.zip","f_md5":"19755a2dc20185e4b8bff1b89ce676c6","f_size":46571,"type":10,"endtime":0,"score":"4.3","name":"baidu_netdisk","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/baidu_netdisk","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/baidu_netdisk","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"3","c_manager_version":"9.5","versions":[{"m_version":"3","version":"9.5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u65b0\u589e\u65e5\u671f\u5907\u4efd\u76ee\u5f55\u89c4\u5219\u5b57\u7b26\u4e32\u8bbe\u7f6e","download":"other\/20230120\/a594a2e1a9d76fe5e9f9a3f70e11437c.zip","md5":"19755a2dc20185e4b8bff1b89ce676c6","size":46571}],"count":4381},{"num":"2.5","id":600801372,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"sitemap\u751f\u6210\u5668","p_index":"sitemap","ps":"\u5b9a\u65f6\u6279\u91cf\u751f\u6210\u7f51\u7ad9\u5730\u56fe+\u63a8\u9001\u767e\u5ea6\u3001\u795e\u9a6c\u3010v5.0\u52a0\u5165\u5206\u9875\u6293\u53d6\u3011?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-39780-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20191010\/12ae100cb6da09c45ebb64c383f17daa.png","price":9.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1570672961,"state":0,"sort":2.5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801372,"version":"5.3","version_msg":"\u4fee\u590d\u7ad9\u70b9\u8fc7\u591a\u65f6\u7684\u6837\u5f0f\u95ee\u9898","f_path":"other\/20220829\/d9fd4535df60f3c57be6c8f59d9154fa.zip","f_md5":"2aa87ddcfbe2feb37a45c0224760024f","f_size":3166867,"type":10,"endtime":0,"score":"2.5","name":"sitemap","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/sitemap","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/sitemap","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"5","c_manager_version":"3","versions":[{"m_version":"5","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u4fee\u590d\u7ad9\u70b9\u8fc7\u591a\u65f6\u7684\u6837\u5f0f\u95ee\u9898","download":"other\/20220829\/d9fd4535df60f3c57be6c8f59d9154fa.zip","md5":"2aa87ddcfbe2feb37a45c0224760024f","size":3166867}],"count":3080},{"num":"3.0","id":600801436,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7f51\u5740\u63a8\u9001","p_index":"urlpush","ps":"\u81ea\u52a8\u6293\u53d6\u7f51\u5740\u4e0e\u5730\u56fe\u5e76\u81ea\u52a8\u63a8\u9001\uff0c\u652f\u6301\u767e\u5ea6\/\u5934\u6761\/\u5fc5\u5e94\/\u795e\u9a6c?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-47424-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210722\/717d299cc12586b1ceddc0f26591fdb2.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1577637443,"state":0,"sort":3,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801436,"version":"5.2","version_msg":"\u7d27\u6025\u4fee\u590d\u5355\u7ad9\u4efb\u52a1\u4e0d\u751f\u6548\u95ee\u9898\uff0c\u671b\u65e9\u65e5\u5ba1\u6838","f_path":"other\/20230211\/b910583a7ec3b0dc33a3c37d9d964f04.zip","f_md5":"ad1e1fab7602d952ac952c911b4e943e","f_size":2262849,"type":10,"endtime":0,"score":"3.0","name":"urlpush","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/urlpush","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/urlpush","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"5","c_manager_version":"2","versions":[{"m_version":"5","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u7d27\u6025\u4fee\u590d\u5355\u7ad9\u4efb\u52a1\u4e0d\u751f\u6548\u95ee\u9898\uff0c\u671b\u65e9\u65e5\u5ba1\u6838","download":"other\/20230211\/b910583a7ec3b0dc33a3c37d9d964f04.zip","md5":"ad1e1fab7602d952ac952c911b4e943e","size":2262849}],"count":2747},{"num":"4.3","id":600801433,"uid":14729,"app_type":1,"p_type":5,"tid":0,"install_opt":1,"php_vs":"","official":"","enable_functions":"","title":"GiteaForBt","p_index":"btgitea","ps":"\u4e00\u6b3e\u975e\u5e38\u8f7b\u91cf\u5e76\u4e14\u529f\u80fd\u5f3a\u5927\u7684GIT\u793e\u533a\u8f6f\u4ef6\u3002?<\/a>","author":"\u507b\u5138\u5c0f\u5352","home":"https:\/\/blog.liushuai.cq.cn\/article\/detail\/2","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201013\/58a8eb4d0c850534ed00e5a2123d53d7.png","price":0.68,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1576840932,"state":0,"sort":4.3,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801433,"version":"0.7.3","version_msg":"1\u3001\u7d27\u6025\u4fee\u590dwindows\u7248\u65e0\u6cd5\u6b63\u5e38\u505c\u6b62\u670d\u52a1bug 2\u3001windows\u7248\u672c\u83b7\u53d6gitea\u72b6\u6001\u6709\u5ef6\u8fdf\uff0c\u5c06windows\u7248\u672c\u6682\u65f6\u53bb\u6389\u91cd\u542f\u6309\u94ae\uff0c\u53ea\u4fdd\u7559\u542f\u52a8\u548c\u505c\u6b62\u6309\u94ae","f_path":"other\/20221205\/1be6cbcec43a2d0b5a88ee08ae780cbd.zip","f_md5":"7a7038cef878b5e1bf480083304b6218","f_size":1213055,"type":10,"endtime":0,"score":"4.3","name":"btgitea","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/btgitea","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/btgitea","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"0","c_manager_version":"7.3","versions":[{"m_version":"0","version":"7.3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"1\u3001\u7d27\u6025\u4fee\u590dwindows\u7248\u65e0\u6cd5\u6b63\u5e38\u505c\u6b62\u670d\u52a1bug 2\u3001windows\u7248\u672c\u83b7\u53d6gitea\u72b6\u6001\u6709\u5ef6\u8fdf\uff0c\u5c06windows\u7248\u672c\u6682\u65f6\u53bb\u6389\u91cd\u542f\u6309\u94ae\uff0c\u53ea\u4fdd\u7559\u542f\u52a8\u548c\u505c\u6b62\u6309\u94ae","download":"other\/20221205\/1be6cbcec43a2d0b5a88ee08ae780cbd.zip","md5":"7a7038cef878b5e1bf480083304b6218","size":1213055}],"count":1732},{"num":"5.0","id":600801846,"uid":312058,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"BOCE.COM\u68c0\u6d4b\u5de5\u5177","p_index":"bocecom","ps":"\u7f51\u7ad9\u6d4b\u901f,PING\u68c0\u6d4b,DNS\u67e5\u8be2,\u52ab\u6301\/\u88ab\u5899\/\u6c61\u67d3\u68c0\u6d4b?<\/a>","author":"DNS.COM\u57df\u540d\u89e3\u6790\u4e13\u5bb6","home":"https:\/\/www.bt.cn\/bbs\/thread-105418-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221213\/9c566b4cf1bc1c56f637d288747abda9.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1670901838,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801846,"version":"1.0.5","version_msg":"BOCE.COM\u7f51\u7ad9\u6d4b\u901f","f_path":"other\/20221214\/04113db7e6256826405bb3044a7dc722.zip","f_md5":"af231e8b6971666b7ad8ba6cbefdeeee","f_size":14356,"type":10,"endtime":0,"score":"5.0","name":"bocecom","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/bocecom","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/bocecom","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"0.5","versions":[{"m_version":"1","version":"0.5","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"BOCE.COM\u7f51\u7ad9\u6d4b\u901f","download":"other\/20221214\/04113db7e6256826405bb3044a7dc722.zip","md5":"af231e8b6971666b7ad8ba6cbefdeeee","size":14356}],"count":1087},{"num":"5.0","id":600801803,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u718a\u732b\u7f51\u7ad9\u65e5\u5fd7\u5206\u6790","p_index":"lotusweblog","ps":"\u66f4\u4e13\u4e1a\u66f4\u5b9e\u7528\u7684\u65e5\u5fd7\u5206\u6790\u63d2\u4ef6\uff0c\u652f\u6301Apache\/Nginx?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-90125-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220416\/3201116e1083d36b2d433d1530913731.png","price":9.8,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1650088893,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801803,"version":"2.6","version_msg":"\u8be6\u7ec6\u8bb0\u5f55\u52a0\u5165\u3010\u62c9\u9ed1\u3011\u64cd\u4f5c,\u52a0\u5165\u3010\u5b9e\u65f6\u76d1\u63a7\u3011\u65b0\u529f\u80fd","f_path":"other\/20230310\/9c0b7df4c4fd8d9807216178860edf9e.zip","f_md5":"ec14538b35c58b3d79bcb1871e76c167","f_size":8545963,"type":10,"endtime":0,"score":"5.0","name":"lotusweblog","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/lotusweblog","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/lotusweblog","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"2","c_manager_version":"6","versions":[{"m_version":"2","version":"6","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u8be6\u7ec6\u8bb0\u5f55\u52a0\u5165\u3010\u62c9\u9ed1\u3011\u64cd\u4f5c,\u52a0\u5165\u3010\u5b9e\u65f6\u76d1\u63a7\u3011\u65b0\u529f\u80fd","download":"other\/20230310\/9c0b7df4c4fd8d9807216178860edf9e.zip","md5":"ec14538b35c58b3d79bcb1871e76c167","size":8545963}],"count":768},{"num":null,"id":600801845,"uid":312058,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"DNS.COM\u667a\u80fd\u89e3\u6790","p_index":"dnscom","ps":"\u5e1d\u6069\u601dDNS.COM\u667a\u80fd\u57df\u540d\u89e3\u6790\u670d\u52a1\u3002?<\/a>","author":"DNS.COM\u57df\u540d\u89e3\u6790\u4e13\u5bb6","home":"https:\/\/www.bt.cn\/bbs\/thread-104447-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221128\/e1ce6cfd922c54301f4e360c1743a02e.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1669604954,"state":0,"sort":0,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801845,"version":"1.0.4","version_msg":"DNS.COM\u667a\u80fd\u89e3\u67901.0.4","f_path":"other\/20221207\/1331c9a9c1079b0c44bb85e619b48dac.zip","f_md5":"861d83e84c3963dd1e24fb6ed2d68fb1","f_size":29325,"type":10,"endtime":0,"score":null,"name":"dnscom","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/dnscom","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/dnscom","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"0.4","versions":[{"m_version":"1","version":"0.4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"DNS.COM\u667a\u80fd\u89e3\u67901.0.4","download":"other\/20221207\/1331c9a9c1079b0c44bb85e619b48dac.zip","md5":"861d83e84c3963dd1e24fb6ed2d68fb1","size":29325}],"count":742},{"num":"5.0","id":600801489,"uid":48984,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u6570\u636e\u7ed3\u6784\u6bd4\u5bf9\u5de5\u5177","p_index":"cloud_db_diff","ps":"\u4f7f\u7528\u6b64\u5de5\u5177\u53ef\u5c06Mysql\u6570\u636e\u5e93AB\u4e24\u8868\u7684\u6570\u636e\u7ed3\u6784\u8fdb\u884c\u4e00\u952e\u540c\u6b65?<\/a>","author":"\u725b\u90fd\u6559\u9192\u4e86","home":"https:\/\/www.bt.cn\/bbs\/thread-46480-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200325\/4f20682fd226e85ea0e7e8618a4697f6.png","price":8.88,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1585072830,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801489,"version":"1.2","version_msg":"\u4fee\u590d\u81ea\u52a8\u62c9\u53d6\u6570\u636e\u5e93\u5217\u8868\u65f6\uff0c\u8d85\u8fc720\u4e2a\u4e0d\u663e\u793a\u7684\u95ee\u9898","f_path":"other\/20201020\/af76a7f1d09a993a4256637aafc0b693.zip","f_md5":"b500f622be896913908a41f1a1eba032","f_size":10215,"type":10,"endtime":0,"score":"5.0","name":"cloud_db_diff","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/cloud_db_diff","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/cloud_db_diff","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u4fee\u590d\u81ea\u52a8\u62c9\u53d6\u6570\u636e\u5e93\u5217\u8868\u65f6\uff0c\u8d85\u8fc720\u4e2a\u4e0d\u663e\u793a\u7684\u95ee\u9898","download":"other\/20201020\/af76a7f1d09a993a4256637aafc0b693.zip","md5":"b500f622be896913908a41f1a1eba032","size":10215}],"count":647},{"num":"3.7","id":600801685,"uid":171736,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u571f\u62e8\u9f20\u7f51\u7ad9\u65e5\u8bb0\u5206\u6790","p_index":"tuboshufenxi","ps":"\u7ad9\u70b9\u65e5\u8bb0,\u9632\u91c7\u96c6,\u6574\u7ad9URL\u81ea\u52a8,\u641c\u72d7\u63a8\u9001,\u5206\u6790\u63a8\u9001\u4e8c\u5408\u4e00?<\/a>","author":"\u571f\u62e8\u9f20","home":"https:\/\/www.bt.cn\/bbs\/thread-65678-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210317\/a1e7c8ef4e94babe22b6972f7453ed34.png","price":13,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1615971459,"state":0,"sort":3.7,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801685,"version":"9.0","version_msg":"\u66f4\u65b0\u7248\u672c\u4fee\u590d\u95ee\u9898","f_path":"other\/20220825\/5250867dacb0f4c833029b7e882dc229.zip","f_md5":"4207167ad91590a004872d84cb8916ae","f_size":102913,"type":10,"endtime":0,"score":"3.7","name":"tuboshufenxi","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/tuboshufenxi","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/tuboshufenxi","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"9","c_manager_version":"0","versions":[{"m_version":"9","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u66f4\u65b0\u7248\u672c\u4fee\u590d\u95ee\u9898","download":"other\/20220825\/5250867dacb0f4c833029b7e882dc229.zip","md5":"4207167ad91590a004872d84cb8916ae","size":102913}],"count":486},{"num":"3.7","id":600801729,"uid":529,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u5b9a\u65f6\u6587\u4ef6\u6e05\u7406","p_index":"autoclear","ps":"\u5b9a\u65f6\u81ea\u52a8\u6e05\u7406\u6587\u4ef6,\u5c0f\u78c1\u76d8\u7684\u798f\u97f3,\u652f\u6301\u591a\u5c42\u6587\u4ef6\u5939\u3001\u81ea\u5b9a\u683c\u5f0f?<\/a>","author":"\u963f\u4fee\u7f57","home":"https:\/\/www.bt.cn\/bbs\/thread-70189-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210603\/4cc55911f65dab0d146352dabbb59053.png","price":5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1622707120,"state":0,"sort":3.7,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801729,"version":"1.9","version_msg":"\u52a0\u5165\u6e05\u7406\u7edf\u8ba1\uff0c\u4f18\u5316\u8bb0\u5f55\u663e\u793a\uff0c\u6574\u4f53\u754c\u9762\u4f18\u5316","f_path":"other\/20220713\/5e7e289130519d1e17fc670c70f2dc5a.zip","f_md5":"74954c0d6d5913d5269d16fd9a0a4410","f_size":1614601,"type":10,"endtime":0,"score":"3.7","name":"autoclear","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/autoclear","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/autoclear","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"9","versions":[{"m_version":"1","version":"9","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u52a0\u5165\u6e05\u7406\u7edf\u8ba1\uff0c\u4f18\u5316\u8bb0\u5f55\u663e\u793a\uff0c\u6574\u4f53\u754c\u9762\u4f18\u5316","download":"other\/20220713\/5e7e289130519d1e17fc670c70f2dc5a.zip","md5":"74954c0d6d5913d5269d16fd9a0a4410","size":1614601}],"count":381},{"num":"5.0","id":600801830,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u767e\u5ea6\u7f51\u76d8\u81ea\u52a8\u5907\u4efd","p_index":"netdisk","ps":"\u4e00\u952e\u81ea\u52a8\u6279\u91cf\u5907\u4efd\u81f3\u767e\u5ea6\u7f51\u76d8\uff0c\u652f\u6301\u7f51\u7ad9\/\u6570\u636e\u5e93\/\u6587\u4ef6\u5939?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-100873-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220924\/93d91990832155ea602a56e7e6e765c2.png","price":6.5,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1663772437,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801830,"version":"1.3","version_msg":"\u517c\u5bb97.9.8\u5bfc\u81f4\u7684mysql\u540c\u6b65\u95ee\u9898","f_path":"other\/20230212\/1b76bcffaeafc1e0899f42e50e998cfa.zip","f_md5":"f994979bafec53d00dceb9ce81bb85de","f_size":1637004,"type":10,"endtime":0,"score":"5.0","name":"netdisk","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/netdisk","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/netdisk","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"3","versions":[{"m_version":"1","version":"3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u517c\u5bb97.9.8\u5bfc\u81f4\u7684mysql\u540c\u6b65\u95ee\u9898","download":"other\/20230212\/1b76bcffaeafc1e0899f42e50e998cfa.zip","md5":"f994979bafec53d00dceb9ce81bb85de","size":1637004}],"count":333},{"num":"5.0","id":600801625,"uid":14729,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u8ba1\u5212\u4efb\u52a1\u5907\u4efd\u63d2\u4ef6","p_index":"btrenwubeifen","ps":"\u5b9d\u5854\u8ba1\u5212\u4efb\u52a1\u5907\u4efd\u8fd8\u539f\u63d2\u4ef6?<\/a>","author":"\u507b\u5138\u5c0f\u5352","home":"https:\/\/www.bt.cn\/bbs\/thread-61341-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20201122\/c7678bdcfde93b622befb7c089465ae3.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1606037870,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801625,"version":"0.2.3","version_msg":"1\u3001\u7d27\u6025\u4fee\u590d\u5168\u91cf\u5907\u4efd\u65f6\u5927\u90e8\u5206\u8ba1\u5212\u4efb\u52a1\u4e22\u5931bug","f_path":"other\/20221204\/711b5148c38077b0d5a4cf306e4cf0ee.zip","f_md5":"5f6516c57c3b120d70b863a2028ee9f9","f_size":561508,"type":10,"endtime":0,"score":"5.0","name":"btrenwubeifen","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/btrenwubeifen","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/btrenwubeifen","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"0","c_manager_version":"2.3","versions":[{"m_version":"0","version":"2.3","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"1\u3001\u7d27\u6025\u4fee\u590d\u5168\u91cf\u5907\u4efd\u65f6\u5927\u90e8\u5206\u8ba1\u5212\u4efb\u52a1\u4e22\u5931bug","download":"other\/20221204\/711b5148c38077b0d5a4cf306e4cf0ee.zip","md5":"5f6516c57c3b120d70b863a2028ee9f9","size":561508}],"count":309},{"num":"5.0","id":600801543,"uid":218594,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"CloudFlare \u6279\u91cf\u8bbe\u7f6eip","p_index":"cf_ipchange","ps":"\u9488\u5bf9\u540c\u4e00\u8d26\u53f7\u4e0b\u7684\u591a\u4e2a\u57df\u540d\uff0c\u6279\u91cf\u8bbe\u7f6e\u89e3\u6790ip\u3002?<\/a>","author":"\u6fee\u9633\u5e02\u5e38\u4ead\u7535\u5b50\u79d1\u6280\u6709\u9650\u516c\u53f8","home":"https:\/\/www.bt.cn\/bbs\/thread-50337-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20200523\/4681b7928072a567b7dfabf162d4108a.png","price":9.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1590197059,"state":0,"sort":5,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801543,"version":"v1.0.0","version_msg":"\u4e0a\u7ebf\u7a33\u5b9a\u7248\u672c","f_path":"other\/20200605\/6037d53b3831bbf078f67b5fb00e248a.zip","f_md5":"981e881adda7d1cadda4904ec535147b","f_size":36299,"type":10,"endtime":0,"score":"5.0","name":"cf_ipchange","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/cf_ipchange","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/cf_ipchange","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"v1","c_manager_version":"0.0","versions":[{"m_version":"v1","version":"0.0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u4e0a\u7ebf\u7a33\u5b9a\u7248\u672c","download":"other\/20200605\/6037d53b3831bbf078f67b5fb00e248a.zip","md5":"981e881adda7d1cadda4904ec535147b","size":36299}],"count":104},{"num":null,"id":600801843,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u7f51\u7ad9\u56fe\u7247\u81ea\u52a8\u538b\u7f29\u6c34\u5370","p_index":"imgtool","ps":"\u7f51\u7ad9\u56fe\u7247\u81ea\u52a8\u538b\u7f29\u53ca\u6c34\u5370\uff0c\u6781\u5927\u63d0\u5347\u7f51\u7ad9\u52a0\u8f7d\u901f\u5ea6\uff0c1\u5206\u949f\u5373\u53ef\u914d\u7f6e?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs\/thread-104078-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20221118\/a6e94fb316bb90e687c969f5c9addc8b.png","price":9.98,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1668766079,"state":0,"sort":0,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801843,"version":"1.2","version_msg":"\u4f18\u5316\u538b\u7f29\u89c4\u5219","f_path":"other\/20221225\/1f3ce346b7eeddf00570bec6fb07eba8.zip","f_md5":"d15a696fe241aaf30b9f1e9cb9b73ce8","f_size":13172528,"type":10,"endtime":0,"score":null,"name":"imgtool","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/imgtool","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/imgtool","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u4f18\u5316\u538b\u7f29\u89c4\u5219","download":"other\/20221225\/1f3ce346b7eeddf00570bec6fb07eba8.zip","md5":"d15a696fe241aaf30b9f1e9cb9b73ce8","size":13172528}],"count":100},{"num":null,"id":600801765,"uid":222800,"app_type":1,"p_type":3,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"SEO\u6536\u5f55\u901a\u77e5","p_index":"seotip","ps":"SEO\u6536\u5f55\u65b0\u6761\u76ee\u90ae\u4ef6\u901a\u77e5,\u9002\u5408\u65b0\u7ad9\u524d\u671fSEO\u7528\u3010\u91cd\u6784\u4e2d\u3011?<\/a>","author":"\u65e7\u96e8\u697c","home":"https:\/\/www.bt.cn\/bbs","min_image":"\/api\/Pluginother\/get_file?fname=image\/20211101\/e4c27dc88f376da272cc3529880d4eeb.png","price":5.98,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1635745000,"state":0,"sort":0,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801765,"version":"1.0","version_msg":"SEO\u6536\u5f55\u901a\u77e5,\u5b9e\u65f6\u67e5\u8be2\u6536\u5f55\u6570\u636e\uff0c\u90ae\u4ef6\u81ea\u52a8\u901a\u77e5\u65b0\u589e\u6536\u5f55\u3002","f_path":"other\/20211101\/3445f4559fbf4dd27f23e3ab83053c14.zip","f_md5":"e45ecdb5acac6aa1296f647ac5ec8384","f_size":891693,"type":10,"endtime":0,"score":null,"name":"seotip","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/seotip","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/seotip","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"0","versions":[{"m_version":"1","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"SEO\u6536\u5f55\u901a\u77e5,\u5b9e\u65f6\u67e5\u8be2\u6536\u5f55\u6570\u636e\uff0c\u90ae\u4ef6\u81ea\u52a8\u901a\u77e5\u65b0\u589e\u6536\u5f55\u3002","download":"other\/20211101\/3445f4559fbf4dd27f23e3ab83053c14.zip","md5":"e45ecdb5acac6aa1296f647ac5ec8384","size":891693}],"count":50},{"num":null,"id":600801813,"uid":1063199,"app_type":1,"p_type":2,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"Godaddy\u57df\u540dDNS\u89e3\u6790","p_index":"godaddydns","ps":"Godaddy DNS\u57df\u540d\u6279\u91cf\u89e3\u6790\u7ba1\u7406\u7cfb\u7edf!?<\/a>","author":"\u5c0f\u742a","home":"https:\/\/www.bt.cn\/bbs\/thread-93672-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20220608\/c3ee3849df6b0da2603a8cdb6d4f61a5.png","price":19.9,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1654680663,"state":0,"sort":0,"os":"Windows","win":1,"a_ps":"","is_site_show":0,"pid":600801813,"version":"1.2","version_msg":"\u4fee\u590d\u57df\u540d\u5217\u8868\u8fc7\u591a\u6837\u5f0f\u663e\u793a\u95ee\u9898","f_path":"other\/20220922\/e22ef1333942af30930e3f8e5aca4c38.zip","f_md5":"c518f9fded2f9dfbc8a44850dcfd4adf","f_size":197057,"type":10,"endtime":0,"score":null,"name":"godaddydns","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"{SETUP_PATH}\/panel\/plugin\/godaddydns","uninsatll_checks":"{SETUP_PATH}\/panel\/plugin\/godaddydns","compile_args":0,"version_coexist":0,"preview_url":"","manager_version":"1","c_manager_version":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Windows","version_msg":"\u4fee\u590d\u57df\u540d\u5217\u8868\u8fc7\u591a\u6837\u5f0f\u663e\u793a\u95ee\u9898","download":"other\/20220922\/e22ef1333942af30930e3f8e5aca4c38.zip","md5":"c518f9fded2f9dfbc8a44850dcfd4adf","size":197057}],"count":40}],"uid":1,"ip":"127.0.0.1","serverid":"","beta":0,"skey":"","is_user_status":false,"pro":-1,"ltd":1995634849,"remarks":{"list":["\u5ba2\u670d\u4f18\u5148\u54cd\u5e94","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","15+\u6b3e\u4ed8\u8d39\u63d2\u4ef6","500\u6761\u514d\u8d39\u77ed\u4fe1\uff08\u5e74\u4ed8\uff09","1\u5f20SSL\u5546\u7528\u8bc1\u4e66\uff08\u5e74\u4ed8\uff09","\u4e13\u4eab\u4e13\u4e1a\u7248\u670d\u52a1\u7fa4\uff08\u5e74\u4ed8\uff09"],"ltd_list":["\u66f4\u6362\u6388\u6743IP","5\u5206\u949f\u6781\u901f\u54cd\u5e94","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","30+\u6b3e\u4ed8\u8d39\u63d2\u4ef6","20+\u4f01\u4e1a\u7248\u4e13\u4eab\u529f\u80fd","1000\u6761\u514d\u8d39\u77ed\u4fe1\uff08\u5e74\u4ed8\uff09","2\u5f20SSL\u5546\u7528\u8bc1\u4e66\uff08\u5e74\u4ed8\uff09","\u4e13\u4eab\u4f01\u4e1a\u670d\u52a1\u7fa4\uff08\u5e74\u4ed8\uff09"],"kfqq":"3007255432","kf":"http:\/\/q.url.cn\/CDfQPS?_type=wpa&qidian=true","qun":"1","kf_list":[{"qq":"3007255432","kf":"http:\/\/q.url.cn\/CDfQPS?_type=wpa&qidian=true"},{"qq":"2927440070","kf":"http:\/\/wpa.qq.com\/msgrd?v=3&uin=2927440070&site=qq&menu=yes&from=message&isappinstalled=0"}],"wx_list":[{"ps":"\u5728\u7ebf\u5ba2\u670d","kf":"https:\/\/www.bt.cn\/new\/wechat_customer"}]},"test":{"list":["\u5ba2\u670d\u4f18\u5148\u54cd\u5e94","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","15+\u6b3e\u4ed8\u8d39\u63d2\u4ef6","500\u6761\u514d\u8d39\u77ed\u4fe1\uff08\u5e74\u4ed8\uff09","1\u5f20SSL\u5546\u7528\u8bc1\u4e66\uff08\u5e74\u4ed8\uff09","\u4e13\u4eab\u4e13\u4e1a\u7248\u670d\u52a1\u7fa4\uff08\u5e74\u4ed8\uff09"],"ltd_list":["\u66f4\u6362\u6388\u6743IP","5\u5206\u949f\u6781\u901f\u54cd\u5e94","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","30+\u6b3e\u4ed8\u8d39\u63d2\u4ef6","20+\u4f01\u4e1a\u7248\u4e13\u4eab\u529f\u80fd","1000\u6761\u514d\u8d39\u77ed\u4fe1\uff08\u5e74\u4ed8\uff09","2\u5f20SSL\u5546\u7528\u8bc1\u4e66\uff08\u5e74\u4ed8\uff09","\u4e13\u4eab\u4f01\u4e1a\u670d\u52a1\u7fa4\uff08\u5e74\u4ed8\uff09"],"kfqq":"3007255432","kf":"http:\/\/q.url.cn\/CDfQPS?_type=wpa&qidian=true","qun":"1","kf_list":[{"qq":"3007255432","kf":"http:\/\/q.url.cn\/CDfQPS?_type=wpa&qidian=true"},{"qq":"2927440070","kf":"http:\/\/wpa.qq.com\/msgrd?v=3&uin=2927440070&site=qq&menu=yes&from=message&isappinstalled=0"}],"wx_list":[{"ps":"\u5728\u7ebf\u5ba2\u670d","kf":"https:\/\/www.bt.cn\/new\/wechat_customer"}]}} \ No newline at end of file diff --git a/data/win/plugins/folder/.gitkeep b/data/win/plugins/folder/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/win/plugins/main/.gitkeep b/data/win/plugins/main/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/data/win/plugins/package/.gitkeep b/data/win/plugins/package/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/install.sql b/install.sql new file mode 100644 index 0000000..bfc252f --- /dev/null +++ b/install.sql @@ -0,0 +1,66 @@ +DROP TABLE IF EXISTS `cloud_config`; +CREATE TABLE `cloud_config` ( + `key` varchar(32) NOT NULL, + `value` varchar(255) DEFAULT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO `cloud_config` (`key`, `value`) VALUES +('admin_username', 'admin'), +('admin_password', '123456'), +('bt_url', ''), +('bt_key', ''), +('whitelist', '0'), +('download_page', '1'), +('new_version', '8.0.1'), +('update_msg', '暂无更新日志'), +('update_date', '2023-07-20'), +('new_version_win', '7.9.0'), +('update_msg_win', '暂无更新日志'), +('update_date_win', '2023-07-20'), +('new_version_btm', '2.2.5'), +('update_msg_btm', '暂无更新日志'), +('update_date_btm', '2023-07-06'), +('updateall_type', '0'), +('syskey', 'UqP94LtI8eWAIgCP'); + + +DROP TABLE IF EXISTS `cloud_black`; +CREATE TABLE `cloud_black` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ip` varchar(20) NOT NULL, + `enable` tinyint(1) NOT NULL DEFAULT '1', + `addtime` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ip`(`ip`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +DROP TABLE IF EXISTS `cloud_white`; +CREATE TABLE `cloud_white` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ip` varchar(20) NOT NULL, + `enable` tinyint(1) NOT NULL DEFAULT '1', + `addtime` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ip`(`ip`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +DROP TABLE IF EXISTS `cloud_record`; +CREATE TABLE `cloud_record` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ip` varchar(20) NOT NULL, + `addtime` datetime NOT NULL, + `usetime` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `ip`(`ip`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +DROP TABLE IF EXISTS `cloud_log`; +CREATE TABLE `cloud_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uid` tinyint(4) NOT NULL DEFAULT '1', + `action` varchar(40) NOT NULL, + `data` varchar(150) DEFAULT NULL, + `addtime` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..cbc7868 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,8 @@ + + Options +FollowSymlinks -Multiviews + RewriteEngine On + + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] + diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..e3c0fe9 --- /dev/null +++ b/public/index.php @@ -0,0 +1,24 @@ + +// +---------------------------------------------------------------------- + +// [ 应用入口文件 ] +namespace think; + +require __DIR__ . '/../vendor/autoload.php'; + +// 执行HTTP应用并响应 +$http = (new App())->http; + +$response = $http->run(); + +$response->send(); + +$http->end($response); diff --git a/public/install/install_6.0.sh b/public/install/install_6.0.sh new file mode 100644 index 0000000..566783b --- /dev/null +++ b/public/install/install_6.0.sh @@ -0,0 +1,1024 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +LANG=en_US.UTF-8 + +Btapi_Url='http://www.example.com' +Check_Api=$(curl -Ss --connect-timeout 5 -m 2 $Btapi_Url/api/SetupCount) +if [ "$Check_Api" != 'ok' ];then + Red_Error "此宝塔第三方云端无法连接,因此安装过程已中止!"; +fi + +if [ $(whoami) != "root" ];then + echo "请使用root权限执行宝塔安装命令!" + exit 1; +fi + +is64bit=$(getconf LONG_BIT) +if [ "${is64bit}" != '64' ];then + Red_Error "抱歉, 当前面板版本不支持32位系统, 请使用64位系统或安装宝塔5.9!"; +fi + +Centos6Check=$(cat /etc/redhat-release | grep ' 6.' | grep -iE 'centos|Red Hat') +if [ "${Centos6Check}" ];then + echo "Centos6不支持安装宝塔面板,请更换Centos7/8安装宝塔面板" + exit 1 +fi + +UbuntuCheck=$(cat /etc/issue|grep Ubuntu|awk '{print $2}'|cut -f 1 -d '.') +if [ "${UbuntuCheck}" ] && [ "${UbuntuCheck}" -lt "16" ];then + echo "Ubuntu ${UbuntuCheck}不支持安装宝塔面板,建议更换Ubuntu18/20安装宝塔面板" + exit 1 +fi + +cd ~ +setup_path="/www" +python_bin=$setup_path/server/panel/pyenv/bin/python +cpu_cpunt=$(cat /proc/cpuinfo|grep processor|wc -l) + +# if [ "$1" ];then +# IDC_CODE=$1 +# fi + +GetSysInfo(){ + if [ -s "/etc/redhat-release" ];then + SYS_VERSION=$(cat /etc/redhat-release) + elif [ -s "/etc/issue" ]; then + SYS_VERSION=$(cat /etc/issue) + fi + SYS_INFO=$(uname -a) + SYS_BIT=$(getconf LONG_BIT) + MEM_TOTAL=$(free -m|grep Mem|awk '{print $2}') + CPU_INFO=$(getconf _NPROCESSORS_ONLN) + + echo -e ${SYS_VERSION} + echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO} + echo -e ${SYS_INFO} + + if [ -z "${os_version}" ];then + echo -e "============================================" + echo -e "检测到为非常用系统安装,建议更换至Centos-7或Debian-10+或Ubuntu-20+系统安装宝塔面板" + echo -e "详情请查看系统兼容表:https://docs.qq.com/sheet/DUm54VUtyTVNlc21H?tab=BB08J2" + echo -e "特殊情况可通过以下联系方式寻求安装协助情况" + fi + + is64bit=$(getconf LONG_BIT) + if [ "${is64bit}" == '32' ];then + echo -e "宝塔面板不支持32位系统进行安装,请使用64位系统/服务器架构进行安装宝塔" + exit 1 + fi + + S390X_CHECK=$(uname -a|grep s390x) + if [ "${S390X_CHECK}" ];then + echo -e "宝塔面板不支持s390x架构进行安装,请使用64位系统/服务器架构进行安装宝塔" + exit 1 + fi + + echo -e "============================================" + echo -e "请截图以上报错信息发帖至论坛www.bt.cn/bbs求助" +} +Red_Error(){ + echo '================================================='; + printf '\033[1;31;40m%b\033[0m\n' "$@"; + GetSysInfo + exit 1; +} +Lock_Clear(){ + if [ -f "/etc/bt_crack.pl" ];then + chattr -R -ia /www + chattr -ia /etc/init.d/bt + \cp -rpa /www/backup/panel/vhost/* /www/server/panel/vhost/ + mv /www/server/panel/BTPanel/__init__.bak /www/server/panel/BTPanel/__init__.py + rm -f /etc/bt_crack.pl + fi +} +Install_Check(){ + if [ "${INSTALL_FORCE}" ];then + return + fi + echo -e "----------------------------------------------------" + echo -e "检查已有其他Web/mysql环境,安装宝塔可能影响现有站点及数据" + echo -e "Web/mysql service is alreday installed,Can't install panel" + echo -e "----------------------------------------------------" + echo -e "已知风险/Enter yes to force installation" + read -p "输入yes强制安装: " yes; + if [ "$yes" != "yes" ];then + echo -e "------------" + echo "取消安装" + exit; + fi + INSTALL_FORCE="true" +} +System_Check(){ + MYSQLD_CHECK=$(ps -ef |grep mysqld|grep -v grep|grep -v /www/server/mysql) + PHP_CHECK=$(ps -ef|grep php-fpm|grep master|grep -v /www/server/php) + NGINX_CHECK=$(ps -ef|grep nginx|grep master|grep -v /www/server/nginx) + HTTPD_CHECK=$(ps -ef |grep -E 'httpd|apache'|grep -v /www/server/apache|grep -v grep) + if [ "${PHP_CHECK}" ] || [ "${MYSQLD_CHECK}" ] || [ "${NGINX_CHECK}" ] || [ "${HTTPD_CHECK}" ];then + Install_Check + fi +} +Set_Ssl(){ + echo -e "" + echo -e "----------------------------------------------------------------------" + echo -e "为了您的面板使用安全,建议您开启面板SSL,开启后请使用https访问宝塔面板" + echo -e "输入y回车即开启面板SSL并进行下一步安装" + echo -e "输入n回车跳过面板SSL配置,直接进行安装" + echo -e "10秒后将跳过SSL配置,直接进行面板安装" + echo -e "----------------------------------------------------------------------" + echo -e "" + read -t 10 -p "是否确定开启面板SSL ? (y/n): " yes + + if [ $? != 0 ];then + SET_SSL=false + else + case "$yes" in + y) + SET_SSL=true + ;; + n) + SET_SSL=false + rm -f /www/server/panel/data/ssl.pl + ;; + *) + Set_Ssl + esac + fi +} +Get_Pack_Manager(){ + if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then + PM="yum" + elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then + PM="apt-get" + fi +} +Auto_Swap() +{ + swap=$(free |grep Swap|awk '{print $2}') + if [ "${swap}" -gt 1 ];then + echo "Swap total sizse: $swap"; + return; + fi + if [ ! -d /www ];then + mkdir /www + fi + swapFile="/www/swap" + dd if=/dev/zero of=$swapFile bs=1M count=1025 + mkswap -f $swapFile + swapon $swapFile + echo "$swapFile swap swap defaults 0 0" >> /etc/fstab + swap=`free |grep Swap|awk '{print $2}'` + if [ $swap -gt 1 ];then + echo "Swap total sizse: $swap"; + return; + fi + + sed -i "/\/www\/swap/d" /etc/fstab + rm -f $swapFile +} +Service_Add(){ + if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then + chkconfig --add bt + chkconfig --level 2345 bt on + Centos9Check=$(cat /etc/redhat-release |grep ' 9') + if [ "${Centos9Check}" ];then + wget -O /usr/lib/systemd/system/btpanel.service ${download_Url}/init/systemd/btpanel.service + systemctl enable btpanel + fi + elif [ "${PM}" == "apt-get" ]; then + update-rc.d bt defaults + fi +} +Set_Centos_Repo(){ + HUAWEI_CHECK=$(cat /etc/motd |grep "Huawei Cloud") + if [ "${HUAWEI_CHECK}" ] && [ "${is64bit}" == "64" ];then + \cp -rpa /etc/yum.repos.d/ /etc/yumBak + sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-*.repo + rm -f /etc/yum.repos.d/epel.repo + rm -f /etc/yum.repos.d/epel-* + fi + ALIYUN_CHECK=$(cat /etc/motd|grep "Alibaba Cloud ") + if [ "${ALIYUN_CHECK}" ] && [ "${is64bit}" == "64" ] && [ ! -f "/etc/yum.repos.d/Centos-vault-8.5.2111.repo" ];then + rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo + wget https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo -O /etc/yum.repos.d/Centos-vault-8.5.2111.repo + wget https://mirrors.aliyun.com/repo/epel-archive-8.repo -O /etc/yum.repos.d/epel-archive-8.repo + sed -i 's/mirrors.cloud.aliyuncs.com/url_tmp/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo && sed -i 's/url_tmp/mirrors.aliyun.com/g' /etc/yum.repos.d/Centos-vault-8.5.2111.repo + sed -i 's/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g' /etc/yum.repos.d/epel-archive-8.repo + fi + MIRROR_CHECK=$(cat /etc/yum.repos.d/CentOS-Linux-AppStream.repo |grep "[^#]mirror.centos.org") + if [ "${MIRROR_CHECK}" ] && [ "${is64bit}" == "64" ];then + \cp -rpa /etc/yum.repos.d/ /etc/yumBak + sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo + sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-*.repo + fi +} +get_node_url(){ + if [ ! -f /bin/curl ];then + if [ "${PM}" = "yum" ]; then + yum install curl -y + elif [ "${PM}" = "apt-get" ]; then + apt-get install curl -y + fi + fi + + if [ -f "/www/node.pl" ];then + download_Url=$(cat /www/node.pl) + echo "Download node: $download_Url"; + echo '---------------------------------------------'; + return + fi + + echo '---------------------------------------------'; + echo "Selected download node..."; + nodes=(https://dg2.bt.cn https://download.bt.cn https://ctcc1-node.bt.cn https://cmcc1-node.bt.cn https://ctcc2-node.bt.cn https://hk1-node.bt.cn https://na1-node.bt.cn https://jp1-node.bt.cn); + + if [ "$1" ];then + nodes=($(echo ${nodes[*]}|sed "s#${1}##")) + fi + + tmp_file1=/dev/shm/net_test1.pl + tmp_file2=/dev/shm/net_test2.pl + [ -f "${tmp_file1}" ] && rm -f ${tmp_file1} + [ -f "${tmp_file2}" ] && rm -f ${tmp_file2} + touch $tmp_file1 + touch $tmp_file2 + for node in ${nodes[@]}; + do + NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${node}/net_test|xargs) + RES=$(echo ${NODE_CHECK}|awk '{print $1}') + NODE_STATUS=$(echo ${NODE_CHECK}|awk '{print $2}') + TIME_TOTAL=$(echo ${NODE_CHECK}|awk '{print $3 * 1000 - 500 }'|cut -d '.' -f 1) + if [ "${NODE_STATUS}" == "200" ];then + if [ $TIME_TOTAL -lt 100 ];then + if [ $RES -ge 1500 ];then + echo "$RES $node" >> $tmp_file1 + fi + else + if [ $RES -ge 1500 ];then + echo "$TIME_TOTAL $node" >> $tmp_file2 + fi + fi + + i=$(($i+1)) + if [ $TIME_TOTAL -lt 100 ];then + if [ $RES -ge 3000 ];then + break; + fi + fi + fi + done + + NODE_URL=$(cat $tmp_file1|sort -r -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL=$(cat $tmp_file2|sort -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL='https://download.bt.cn'; + fi + fi + rm -f $tmp_file1 + rm -f $tmp_file2 + download_Url=$NODE_URL + echo "Download node: $download_Url"; + echo '---------------------------------------------'; +} +Remove_Package(){ + local PackageNmae=$1 + if [ "${PM}" == "yum" ];then + isPackage=$(rpm -q ${PackageNmae}|grep "not installed") + if [ -z "${isPackage}" ];then + yum remove ${PackageNmae} -y + fi + elif [ "${PM}" == "apt-get" ];then + isPackage=$(dpkg -l|grep ${PackageNmae}) + if [ "${PackageNmae}" ];then + apt-get remove ${PackageNmae} -y + fi + fi +} +Install_RPM_Pack(){ + yumPath=/etc/yum.conf + Centos8Check=$(cat /etc/redhat-release | grep ' 8.' | grep -iE 'centos|Red Hat') + if [ "${Centos8Check}" ];then + Set_Centos_Repo + fi + isExc=$(cat $yumPath|grep httpd) + if [ "$isExc" = "" ];then + echo "exclude=httpd nginx php mysql mairadb python-psutil python2-psutil" >> $yumPath + fi + + if [ -f "/etc/redhat-release" ] && [ $(cat /etc/os-release|grep PLATFORM_ID|grep -oE "el8") ];then + yum config-manager --set-enabled powertools + yum config-manager --set-enabled PowerTools + fi + + if [ -f "/etc/redhat-release" ] && [ $(cat /etc/os-release|grep PLATFORM_ID|grep -oE "el9") ];then + dnf config-manager --set-enabled crb -y + fi + + #SYS_TYPE=$(uname -a|grep x86_64) + #yumBaseUrl=$(cat /etc/yum.repos.d/CentOS-Base.repo|grep baseurl=http|cut -d '=' -f 2|cut -d '$' -f 1|head -n 1) + #[ "${yumBaseUrl}" ] && checkYumRepo=$(curl --connect-timeout 5 --head -s -o /dev/null -w %{http_code} ${yumBaseUrl}) + #if [ "${checkYumRepo}" != "200" ] && [ "${SYS_TYPE}" ];then + # curl -Ss --connect-timeout 3 -m 60 http://download.bt.cn/install/yumRepo_select.sh|bash + #fi + + #尝试同步时间(从bt.cn) + echo 'Synchronizing system time...' + getBtTime=$(curl -sS --connect-timeout 3 -m 60 http://www.bt.cn/api/index/get_time) + if [ "${getBtTime}" ];then + date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")" + fi + + if [ -z "${Centos8Check}" ]; then + yum install ntp -y + rm -rf /etc/localtime + ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + + #尝试同步国际时间(从ntp服务器) + ntpdate 0.asia.pool.ntp.org + setenforce 0 + fi + + startTime=`date +%s` + + sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config + #yum remove -y python-requests python3-requests python-greenlet python3-greenlet + yumPacks="libcurl-devel wget tar gcc make zip unzip openssl openssl-devel gcc libxml2 libxml2-devel libxslt* zlib zlib-devel libjpeg-devel libpng-devel libwebp libwebp-devel freetype freetype-devel lsof pcre pcre-devel vixie-cron crontabs icu libicu-devel c-ares libffi-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel qrencode" + yum install -y ${yumPacks} + + for yumPack in ${yumPacks} + do + rpmPack=$(rpm -q ${yumPack}) + packCheck=$(echo ${rpmPack}|grep not) + if [ "${packCheck}" ]; then + yum install ${yumPack} -y + fi + done + if [ -f "/usr/bin/dnf" ]; then + dnf install -y redhat-rpm-config + fi + + ALI_OS=$(cat /etc/redhat-release |grep "Alibaba Cloud Linux release 3") + if [ -z "${ALI_OS}" ];then + yum install epel-release -y + fi +} +Install_Deb_Pack(){ + ln -sf bash /bin/sh + UBUNTU_22=$(cat /etc/issue|grep "Ubuntu 22") + if [ "${UBUNTU_22}" ];then + apt-get remove needrestart -y + fi + ALIYUN_CHECK=$(cat /etc/motd|grep "Alibaba Cloud ") + if [ "${ALIYUN_CHECK}" ] && [ "${UBUNTU_22}" ];then + apt-get remove libicu70 -y + fi + apt-get update -y + apt-get install bash -y + if [ -f "/usr/bin/bash" ];then + ln -sf /usr/bin/bash /bin/sh + fi + apt-get install ruby -y + apt-get install lsb-release -y + #apt-get install ntp ntpdate -y + #/etc/init.d/ntp stop + #update-rc.d ntp remove + #cat >>~/.profile< /var/spool/cron/crontabs/root + chmod 600 /var/spool/cron/crontabs/root + fi + fi +} +Get_Versions(){ + redhat_version_file="/etc/redhat-release" + deb_version_file="/etc/issue" + if [ -f $redhat_version_file ];then + os_type='el' + is_aliyunos=$(cat $redhat_version_file|grep Aliyun) + if [ "$is_aliyunos" != "" ];then + return + fi + os_version=$(cat $redhat_version_file|grep CentOS|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]') + if [ "${os_version}" = "5" ];then + os_version="" + fi + if [ -z "${os_version}" ];then + os_version=$(cat /etc/redhat-release |grep Stream|grep -oE 8) + fi + else + os_type='ubuntu' + os_version=$(cat $deb_version_file|grep Ubuntu|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]+') + if [ "${os_version}" = "" ];then + os_type='debian' + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '[0-9]+') + if [ "${os_version}" = "" ];then + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '[0-9]+') + fi + if [ "${os_version}" = "8" ];then + os_version="" + fi + if [ "${is64bit}" = '32' ];then + os_version="" + fi + else + if [ "$os_version" = "14" ];then + os_version="" + fi + if [ "$os_version" = "12" ];then + os_version="" + fi + if [ "$os_version" = "19" ];then + os_version="" + fi + if [ "$os_version" = "21" ];then + os_version="" + fi + if [ "$os_version" = "20" ];then + os_version2004=$(cat /etc/issue|grep 20.04) + if [ -z "${os_version2004}" ];then + os_version="" + fi + fi + fi + fi +} +Install_Python_Lib(){ + curl -Ss --connect-timeout 3 -m 60 $download_Url/install/pip_select.sh|bash + pyenv_path="/www/server/panel" + if [ -f $pyenv_path/pyenv/bin/python ];then + is_ssl=$($python_bin -c "import ssl" 2>&1|grep cannot) + $pyenv_path/pyenv/bin/python3.7 -V + if [ $? -eq 0 ] && [ -z "${is_ssl}" ];then + chmod -R 700 $pyenv_path/pyenv/bin + is_package=$($python_bin -m psutil 2>&1|grep package) + if [ "$is_package" = "" ];then + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip.txt -T 5 + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools==65.5.0 + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + fi + source $pyenv_path/pyenv/bin/activate + chmod -R 700 $pyenv_path/pyenv/bin + return + else + rm -rf $pyenv_path/pyenv + fi + fi + + is_loongarch64=$(uname -a|grep loongarch64) + if [ "$is_loongarch64" != "" ] && [ -f "/usr/bin/yum" ];then + yumPacks="python3-devel python3-pip python3-psutil python3-gevent python3-pyOpenSSL python3-paramiko python3-flask python3-rsa python3-requests python3-six python3-websocket-client" + yum install -y ${yumPacks} + for yumPack in ${yumPacks} + do + rpmPack=$(rpm -q ${yumPack}) + packCheck=$(echo ${rpmPack}|grep not) + if [ "${packCheck}" ]; then + yum install ${yumPack} -y + fi + done + + pip3 install -U pip + pip3 install Pillow psutil pyinotify pycryptodome upyun oss2 pymysql qrcode qiniu redis pymongo Cython configparser cos-python-sdk-v5 supervisor gevent-websocket pyopenssl + pip3 install flask==1.1.4 + pip3 install Pillow -U + + pyenv_bin=/www/server/panel/pyenv/bin + mkdir -p $pyenv_bin + ln -sf /usr/local/bin/pip3 $pyenv_bin/pip + ln -sf /usr/local/bin/pip3 $pyenv_bin/pip3 + ln -sf /usr/local/bin/pip3 $pyenv_bin/pip3.7 + + if [ -f "/usr/bin/python3.7" ];then + ln -sf /usr/bin/python3.7 $pyenv_bin/python + ln -sf /usr/bin/python3.7 $pyenv_bin/python3 + ln -sf /usr/bin/python3.7 $pyenv_bin/python3.7 + elif [ -f "/usr/bin/python3.6" ]; then + ln -sf /usr/bin/python3.6 $pyenv_bin/python + ln -sf /usr/bin/python3.6 $pyenv_bin/python3 + ln -sf /usr/bin/python3.6 $pyenv_bin/python3.7 + fi + + echo > $pyenv_bin/activate + + return + fi + + py_version="3.7.16" + mkdir -p $pyenv_path + echo "True" > /www/disk.pl + if [ ! -w /www/disk.pl ];then + Red_Error "ERROR: Install python env fielded." "ERROR: /www目录无法写入,请检查目录/用户/磁盘权限!" + fi + os_type='el' + os_version='7' + is_export_openssl=0 + Get_Versions + + echo "OS: $os_type - $os_version" + is_aarch64=$(uname -a|grep aarch64) + if [ "$is_aarch64" != "" ];then + is64bit="aarch64" + fi + + if [ -f "/www/server/panel/pymake.pl" ];then + os_version="" + rm -f /www/server/panel/pymake.pl + fi + + if [ "${os_version}" != "" ];then + pyenv_file="/www/pyenv.tar.gz" + wget -O $pyenv_file $download_Url/install/pyenv/pyenv-${os_type}${os_version}-x${is64bit}.tar.gz -T 10 + if [ "$?" != "0" ];then + get_node_url $download_Url + wget -O $pyenv_file $download_Url/install/pyenv/pyenv-${os_type}${os_version}-x${is64bit}.tar.gz -T 10 + fi + tmp_size=$(du -b $pyenv_file|awk '{print $1}') + if [ $tmp_size -lt 703460 ];then + rm -f $pyenv_file + echo "ERROR: Download python env fielded." + else + echo "Install python env..." + tar zxvf $pyenv_file -C $pyenv_path/ > /dev/null + chmod -R 700 $pyenv_path/pyenv/bin + if [ ! -f $pyenv_path/pyenv/bin/python ];then + rm -f $pyenv_file + Red_Error "ERROR: Install python env fielded." "ERROR: 下载宝塔运行环境失败,请尝试重新安装!" + fi + $pyenv_path/pyenv/bin/python3.7 -V + if [ $? -eq 0 ];then + rm -f $pyenv_file + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btpython + source $pyenv_path/pyenv/bin/activate + return + else + rm -f $pyenv_file + rm -rf $pyenv_path/pyenv + fi + fi + fi + + cd /www + python_src='/www/python_src.tar.xz' + python_src_path="/www/Python-${py_version}" + wget -O $python_src $download_Url/src/Python-${py_version}.tar.xz -T 5 + tmp_size=$(du -b $python_src|awk '{print $1}') + if [ $tmp_size -lt 10703460 ];then + rm -f $python_src + Red_Error "ERROR: Download python source code fielded." "ERROR: 下载宝塔运行环境失败,请尝试重新安装!" + fi + tar xvf $python_src + rm -f $python_src + cd $python_src_path + ./configure --prefix=$pyenv_path/pyenv + make -j$cpu_cpunt + make install + if [ ! -f $pyenv_path/pyenv/bin/python3.7 ];then + rm -rf $python_src_path + Red_Error "ERROR: Make python env fielded." "ERROR: 编译宝塔运行环境失败!" + fi + cd ~ + rm -rf $python_src_path + wget -O $pyenv_path/pyenv/bin/activate $download_Url/install/pyenv/activate.panel -T 5 + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip-3.7.16.txt -T 5 + ln -sf $pyenv_path/pyenv/bin/pip3.7 $pyenv_path/pyenv/bin/pip + ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btpython + chmod -R 700 $pyenv_path/pyenv/bin + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools==65.5.0 + $pyenv_path/pyenv/bin/pip install -U wheel==0.34.2 + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + + wget -O pip-packs.txt $download_Url/install/pyenv/pip-packs.txt + PIP_PACKS=$(cat pip-packs.txt) + for P_PACK in ${PIP_PACKS}; + do + btpip show ${P_PACK} > /dev/null 2>&1 + if [ "$?" == "1" ];then + btpip install ${P_PACK} + fi + done + + rm -f pip-packs.txt + + source $pyenv_path/pyenv/bin/activate + + btpip install psutil + btpip install gevent + + is_gevent=$($python_bin -m gevent 2>&1|grep -oE package) + is_psutil=$($python_bin -m psutil 2>&1|grep -oE package) + if [ "${is_gevent}" != "${is_psutil}" ];then + Red_Error "ERROR: psutil/gevent install failed!" + fi +} +Install_Bt(){ + panelPort="8888" + if [ -f ${setup_path}/server/panel/data/port.pl ];then + panelPort=$(cat ${setup_path}/server/panel/data/port.pl) + else + panelPort=$(expr $RANDOM % 55535 + 10000) + fi + if [ "${PANEL_PORT}" ];then + panelPort=$PANEL_PORT + fi + mkdir -p ${setup_path}/server/panel/logs + mkdir -p ${setup_path}/server/panel/vhost/apache + mkdir -p ${setup_path}/server/panel/vhost/nginx + mkdir -p ${setup_path}/server/panel/vhost/rewrite + mkdir -p ${setup_path}/server/panel/install + mkdir -p /www/server + mkdir -p /www/wwwroot + mkdir -p /www/wwwlogs + mkdir -p /www/backup/database + mkdir -p /www/backup/site + + if [ ! -d "/etc/init.d" ];then + mkdir -p /etc/init.d + fi + + if [ -f "/etc/init.d/bt" ]; then + /etc/init.d/bt stop + sleep 1 + fi + + wget -O /etc/init.d/bt ${download_Url}/install/src/bt6.init -T 10 + wget -O /www/server/panel/install/public.sh ${Btapi_Url}/install/public.sh -T 10 + wget -O panel.zip ${Btapi_Url}/install/src/panel6.zip -T 10 + + if [ -f "${setup_path}/server/panel/data/default.db" ];then + if [ -d "/${setup_path}/server/panel/old_data" ];then + rm -rf ${setup_path}/server/panel/old_data + fi + mkdir -p ${setup_path}/server/panel/old_data + d_format=$(date +"%Y%m%d_%H%M%S") + \cp -arf ${setup_path}/server/panel/data/default.db ${setup_path}/server/panel/data/default_backup_${d_format}.db + mv -f ${setup_path}/server/panel/data/default.db ${setup_path}/server/panel/old_data/default.db + mv -f ${setup_path}/server/panel/data/system.db ${setup_path}/server/panel/old_data/system.db + mv -f ${setup_path}/server/panel/data/port.pl ${setup_path}/server/panel/old_data/port.pl + mv -f ${setup_path}/server/panel/data/admin_path.pl ${setup_path}/server/panel/old_data/admin_path.pl + fi + + if [ ! -f "/usr/bin/unzip" ]; then + if [ "${PM}" = "yum" ]; then + yum install unzip -y + elif [ "${PM}" = "apt-get" ]; then + apt-get update + apt-get install unzip -y + fi + fi + + unzip -o panel.zip -d ${setup_path}/server/ > /dev/null + + if [ -d "${setup_path}/server/panel/old_data" ];then + mv -f ${setup_path}/server/panel/old_data/default.db ${setup_path}/server/panel/data/default.db + mv -f ${setup_path}/server/panel/old_data/system.db ${setup_path}/server/panel/data/system.db + mv -f ${setup_path}/server/panel/old_data/port.pl ${setup_path}/server/panel/data/port.pl + mv -f ${setup_path}/server/panel/old_data/admin_path.pl ${setup_path}/server/panel/data/admin_path.pl + if [ -d "/${setup_path}/server/panel/old_data" ];then + rm -rf ${setup_path}/server/panel/old_data + fi + fi + + if [ ! -f ${setup_path}/server/panel/tools.py ] || [ ! -f ${setup_path}/server/panel/BT-Panel ];then + ls -lh panel.zip + Red_Error "ERROR: Failed to download, please try install again!" "ERROR: 下载宝塔失败,请尝试重新安装!" + fi + + rm -f panel.zip + rm -f ${setup_path}/server/panel/class/*.pyc + rm -f ${setup_path}/server/panel/*.pyc + + chmod +x /etc/init.d/bt + chmod -R 600 ${setup_path}/server/panel + chmod -R +x ${setup_path}/server/panel/script + ln -sf /etc/init.d/bt /usr/bin/bt + echo "${panelPort}" > ${setup_path}/server/panel/data/port.pl + wget -O /etc/init.d/bt ${download_Url}/install/src/bt7.init -T 10 + wget -O /www/server/panel/init.sh ${download_Url}/install/src/bt7.init -T 10 + wget -O /www/server/panel/data/softList.conf ${download_Url}/install/conf/softList.conf + + rm -f /www/server/panel/class/*.so + if [ ! -f /www/server/panel/data/not_workorder.pl ]; then + echo "True" > /www/server/panel/data/not_workorder.pl + fi + if [ ! -f /www/server/panel/data/userInfo.json ]; then + echo "{\"uid\":1,\"username\":\"Administrator\",\"address\":\"127.0.0.1\",\"serverid\":\"1\",\"access_key\":\"test\",\"secret_key\":\"123456\",\"ukey\":\"123456\",\"state\":1}" > /www/server/panel/data/userInfo.json + fi +} +Set_Bt_Panel(){ + Run_User="www" + wwwUser=$(cat /etc/passwd|cut -d ":" -f 1|grep ^www$) + if [ "${wwwUser}" != "www" ];then + groupadd ${Run_User} + useradd -s /sbin/nologin -g ${Run_User} ${Run_User} + fi + + password=$(cat /dev/urandom | head -n 16 | md5sum | head -c 8) + if [ "$PANEL_PASSWORD" ];then + password=$PANEL_PASSWORD + fi + sleep 1 + admin_auth="/www/server/panel/data/admin_path.pl" + if [ "${SAFE_PATH}" ];then + auth_path=$SAFE_PATH + echo "/${auth_path}" > ${admin_auth} + fi + if [ ! -f ${admin_auth} ];then + auth_path=$(cat /dev/urandom | head -n 16 | md5sum | head -c 8) + echo "/${auth_path}" > ${admin_auth} + fi + auth_path=$(cat /dev/urandom | head -n 16 | md5sum | head -c 8) + echo "/${auth_path}" > ${admin_auth} + chmod -R 700 $pyenv_path/pyenv/bin + /www/server/panel/pyenv/bin/pip3 install pymongo + /www/server/panel/pyenv/bin/pip3 install psycopg2-binary + /www/server/panel/pyenv/bin/pip3 install flask -U + /www/server/panel/pyenv/bin/pip3 install flask-sock + auth_path=$(cat ${admin_auth}) + cd ${setup_path}/server/panel/ + if [ "$SET_SSL" == true ]; then + btpip install -I pyOpenSSl + btpython /www/server/panel/tools.py ssl + fi + /etc/init.d/bt start + $python_bin -m py_compile tools.py + $python_bin tools.py username + username=$($python_bin tools.py panel ${password}) + if [ "$PANEL_USER" ];then + username=$PANEL_USER + fi + cd ~ + echo "${password}" > ${setup_path}/server/panel/default.pl + chmod 600 ${setup_path}/server/panel/default.pl + sleep 3 + /etc/init.d/bt restart + sleep 3 + isStart=$(ps aux |grep 'BT-Panel'|grep -v grep|awk '{print $2}') + LOCAL_CURL=$(curl 127.0.0.1:${panelPort}/login 2>&1 |grep -i html) + if [ -z "${isStart}" ] && [ -z "${LOCAL_CURL}" ];then + /etc/init.d/bt 22 + cd /www/server/panel/pyenv/bin + touch t.pl + ls -al python3.7 python + lsattr python3.7 python + Red_Error "ERROR: The BT-Panel service startup failed." "ERROR: 宝塔启动失败" + fi + + if [ "$PANEL_USER" ];then + cd ${setup_path}/server/panel/ + btpython -c 'import tools;tools.set_panel_username("'$PANEL_USER'")' + cd ~ + fi +} +Set_Firewall(){ + sshPort=$(cat /etc/ssh/sshd_config | grep 'Port '|awk '{print $2}') + if [ "${PM}" = "apt-get" ]; then + apt-get install -y ufw + if [ -f "/usr/sbin/ufw" ];then + ufw allow 20/tcp + ufw allow 21/tcp + ufw allow 22/tcp + ufw allow 80/tcp + ufw allow 443/tcp + ufw allow 888/tcp + ufw allow ${panelPort}/tcp + ufw allow ${sshPort}/tcp + ufw allow 39000:40000/tcp + ufw_status=`ufw status` + echo y|ufw enable + ufw default deny + ufw reload + fi + else + if [ -f "/etc/init.d/iptables" ];then + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${panelPort} -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${sshPort} -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 39000:40000 -j ACCEPT + #iptables -I INPUT -p tcp -m state --state NEW -m udp --dport 39000:40000 -j ACCEPT + iptables -A INPUT -p icmp --icmp-type any -j ACCEPT + iptables -A INPUT -s localhost -d localhost -j ACCEPT + iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + iptables -P INPUT DROP + service iptables save + sed -i "s#IPTABLES_MODULES=\"\"#IPTABLES_MODULES=\"ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp\"#" /etc/sysconfig/iptables-config + iptables_status=$(service iptables status | grep 'not running') + if [ "${iptables_status}" == '' ];then + service iptables restart + fi + else + AliyunCheck=$(cat /etc/redhat-release|grep "Aliyun Linux") + [ "${AliyunCheck}" ] && return + yum install firewalld -y + [ "${Centos8Check}" ] && yum reinstall python3-six -y + systemctl enable firewalld + systemctl start firewalld + firewall-cmd --set-default-zone=public > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=20/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=21/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=22/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=80/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=443/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=${panelPort}/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=${sshPort}/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=39000-40000/tcp > /dev/null 2>&1 + #firewall-cmd --permanent --zone=public --add-port=39000-40000/udp > /dev/null 2>&1 + firewall-cmd --reload + fi + fi +} +Get_Ip_Address(){ + getIpAddress="" + getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) + if [ -z "${getIpAddress}" ] || [ "${getIpAddress}" = "0.0.0.0" ]; then + isHosts=$(cat /etc/hosts|grep 'www.bt.cn') + if [ -z "${isHosts}" ];then + echo "" >> /etc/hosts + getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) + if [ -z "${getIpAddress}" ];then + sed -i "/bt.cn/d" /etc/hosts + fi + fi + fi + + ipv4Check=$($python_bin -c "import re; print(re.match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$','${getIpAddress}'))") + if [ "${ipv4Check}" == "None" ];then + ipv6Address=$(echo ${getIpAddress}|tr -d "[]") + ipv6Check=$($python_bin -c "import re; print(re.match('^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$','${ipv6Address}'))") + if [ "${ipv6Check}" == "None" ]; then + getIpAddress="SERVER_IP" + else + echo "True" > ${setup_path}/server/panel/data/ipv6.pl + sleep 1 + /etc/init.d/bt restart + fi + fi + + if [ "${getIpAddress}" != "SERVER_IP" ];then + echo "${getIpAddress}" > ${setup_path}/server/panel/data/iplist.txt + fi + LOCAL_IP=$(ip addr | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -E -v "^127\.|^255\.|^0\." | head -n 1) +} +Setup_Count(){ + curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/SetupCount?type=Linux\&o=$1 > /dev/null 2>&1 + if [ "$1" != "" ];then + echo $1 > /www/server/panel/data/o.pl + cd /www/server/panel + $python_bin tools.py o + fi + echo /www > /var/bt_setupPath.conf +} +Install_Main(){ + #Set_Ssl + startTime=`date +%s` + Lock_Clear + System_Check + Get_Pack_Manager + get_node_url + + MEM_TOTAL=$(free -g|grep Mem|awk '{print $2}') + if [ "${MEM_TOTAL}" -le "1" ];then + Auto_Swap + fi + + if [ "${PM}" = "yum" ]; then + Install_RPM_Pack + elif [ "${PM}" = "apt-get" ]; then + Install_Deb_Pack + fi + + Install_Python_Lib + Install_Bt + + + Set_Bt_Panel + Service_Add + Set_Firewall + + Get_Ip_Address + Setup_Count ${IDC_CODE} +} + +echo " ++---------------------------------------------------------------------- +| Bt-WebPanel FOR CentOS/Ubuntu/Debian ++---------------------------------------------------------------------- +| Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved. ++---------------------------------------------------------------------- +| The WebPanel URL will be http://SERVER_IP:8888 when installed. ++---------------------------------------------------------------------- +| 为了您的正常使用,请确保使用全新或纯净的系统安装宝塔面板,不支持已部署项目/环境的系统安装 ++---------------------------------------------------------------------- +" + +while [ ${#} -gt 0 ]; do + case $1 in + -u|--user) + PANEL_USER=$2 + shift 1 + ;; + -p|--password) + PANEL_PASSWORD=$2 + shift 1 + ;; + -P|--port) + PANEL_PORT=$2 + shift 1 + ;; + --safe-path) + SAFE_PATH=$2 + shift 1 + ;; + -y) + go="y" + ;; + *) + IDC_CODE=$1 + ;; + esac + shift 1 +done + +while [ "$go" != 'y' ] && [ "$go" != 'n' ] +do + read -p "Do you want to install Bt-Panel to the $setup_path directory now?(y/n): " go; +done + +if [ "$go" == 'n' ];then + exit; +fi + +ARCH_LINUX=$(cat /etc/os-release |grep "Arch Linux") +if [ "${ARCH_LINUX}" ] && [ -f "/usr/bin/pacman" ];then + pacman -Sy + pacman -S curl wget unzip firewalld openssl pkg-config make gcc cmake libxml2 libxslt libvpx gd libsodium oniguruma sqlite libzip autoconf inetutils sudo --noconfirm +fi + +Install_Main + +PANEL_SSL=$(cat /www/server/panel/data/ssl.pl 2> /dev/null) +if [ "${PANEL_SSL}" == "True" ];then + HTTP_S="https" +else + HTTP_S="http" +fi + +echo > /www/server/panel/data/bind.pl +echo -e "==================================================================" +echo -e "\033[32mCongratulations! Installed successfully!\033[0m" +echo -e "==================================================================" +echo "外网面板地址: ${HTTP_S}://${getIpAddress}:${panelPort}${auth_path}" +echo "内网面板地址: ${HTTP_S}://${LOCAL_IP}:${panelPort}${auth_path}" +echo -e "username: $username" +echo -e "password: $password" +echo -e "\033[33mIf you cannot access the panel,\033[0m" +echo -e "\033[33mrelease the following panel port [${panelPort}] in the security group\033[0m" +echo -e "\033[33m若无法访问面板,请检查防火墙/安全组是否有放行面板[${panelPort}]端口\033[0m" +if [ "${HTTP_S}" == "https" ];then + echo -e "\033[33m因已开启面板自签证书,访问面板会提示不匹配证书,请参考以下链接配置证书\033[0m" + echo -e "\033[33mhttps://www.bt.cn/bbs/thread-105443-1-1.html\033[0m" +fi +echo -e "==================================================================" + +endTime=`date +%s` +((outTime=($endTime-$startTime)/60)) +echo -e "Time consumed:\033[32m $outTime \033[0mMinute!" + + diff --git a/public/install/install_btmonitor.sh b/public/install/install_btmonitor.sh new file mode 100644 index 0000000..778c8a8 --- /dev/null +++ b/public/install/install_btmonitor.sh @@ -0,0 +1,880 @@ +#!/bin/bash +######################### + +# 广东堡塔安全技术有限公司 +# author: 赤井秀一 +# mail: 1021266737@qq.com + +######################### +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +LANG=en_US.UTF-8 + +Btapi_Url='http://www.example.com' + +is64bit=$(getconf LONG_BIT) +if [ "${is64bit}" != '64' ];then + echo -e "\033[31m 抱歉, 堡塔云监控系统不支持32位系统, 请使用64位系统! \033[0m" + exit 1 +fi + +S390X_CHECK=$(uname -a|grep s390x) +if [ "${S390X_CHECK}" ];then + echo -e "\033[31m 抱歉, 堡塔云监控系统不支持s390x架构进行安装,请使用x86_64服务器架构 \033[0m" + exit 1 +fi + +is_aarch64=$(uname -a|grep aarch64) +if [ "${is_aarch64}" != "" ];then + echo -e "\033[31m 抱歉, 堡塔云监控系统暂不支持aarch64架构进行安装,请使用x86_64服务器架构 \033[0m" + exit 1 +fi + +Command_Exists() { + command -v "$@" >/dev/null 2>&1 +} + + +GetSysInfo(){ + if [ -s "/etc/redhat-release" ];then + SYS_VERSION=$(cat /etc/redhat-release) + elif [ -s "/etc/issue" ]; then + SYS_VERSION=$(cat /etc/issue) + fi + SYS_INFO=$(uname -a) + SYS_BIT=$(getconf LONG_BIT) + MEM_TOTAL=$(free -m|grep Mem|awk '{print $2}') + CPU_INFO=$(getconf _NPROCESSORS_ONLN) + + echo -e ${SYS_VERSION} + echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO} + echo -e ${SYS_INFO} + echo -e "请截图以上报错信息发帖至论坛www.bt.cn/bbs求助" + +} + +Red_Error(){ + echo '================================================='; + printf '\033[1;31;40m%b\033[0m\n' "$@"; + GetSysInfo + exit 1; +} + + +monitor_path="/www/server/bt-monitor" +run_bin="/www/server/bt-monitor/BT-MONITOR" +if [ ! -d "/www/server" ];then + mkdir -p /www/server +fi +old_dir="/www/server/old_btmonitor" + +cd ~ +setup_path="/www" +python_bin=$setup_path/server/bt-monitor/pyenv/bin/python +cpu_cpunt=$(cat /proc/cpuinfo|grep processor|wc -l) + +get_node_url(){ + if [ ! -f /bin/curl ];then + if [ "${PM}" = "yum" ]; then + yum install curl -y + elif [ "${PM}" = "apt-get" ]; then + apt-get install curl -y + fi + fi + + if [ -f "/www/node.pl" ];then + download_Url=$(cat /www/node.pl) + echo "Download node: $download_Url"; + echo '---------------------------------------------'; + return + fi + + echo '---------------------------------------------'; + echo "Selected download node..."; + # nodes=(http://dg2.bt.cn http://dg1.bt.cn http://125.90.93.52:5880 http://36.133.1.8:5880 http://123.129.198.197 http://38.34.185.130 http://116.213.43.206:5880 http://128.1.164.196); + #nodes=(http://dg2.bt.cn http://dg1.bt.cn http://125.90.93.52:5880 http://36.133.1.8:5880 http://123.129.198.197 http://116.213.43.206:5880 http://128.1.164.196); + nodes=(https://dg2.bt.cn https://dg1.bt.cn https://download.bt.cn); + tmp_file1=/dev/shm/net_test1.pl + tmp_file2=/dev/shm/net_test2.pl + [ -f "${tmp_file1}" ] && rm -f ${tmp_file1} + [ -f "${tmp_file2}" ] && rm -f ${tmp_file2} + touch $tmp_file1 + touch $tmp_file2 + for node in ${nodes[@]}; + do + NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${node}/net_test|xargs) + RES=$(echo ${NODE_CHECK}|awk '{print $1}') + NODE_STATUS=$(echo ${NODE_CHECK}|awk '{print $2}') + TIME_TOTAL=$(echo ${NODE_CHECK}|awk '{print $3 * 1000 - 500 }'|cut -d '.' -f 1) + if [ "${NODE_STATUS}" == "200" ];then + if [ $TIME_TOTAL -lt 100 ];then + if [ $RES -ge 1500 ];then + echo "$RES $node" >> $tmp_file1 + fi + else + if [ $RES -ge 1500 ];then + echo "$TIME_TOTAL $node" >> $tmp_file2 + fi + fi + + i=$(($i+1)) + if [ $TIME_TOTAL -lt 100 ];then + if [ $RES -ge 3000 ];then + break; + fi + fi + fi + done + + NODE_URL=$(cat $tmp_file1|sort -r -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL=$(cat $tmp_file2|sort -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL='https://download.bt.cn'; + fi + fi + rm -f $tmp_file1 + rm -f $tmp_file2 + download_Url=$NODE_URL + echo "Download node: $download_Url"; + echo '---------------------------------------------'; +} + +Get_Versions(){ + redhat_version_file="/etc/redhat-release" + deb_version_file="/etc/issue" + if [ -f $redhat_version_file ];then + os_type='el' + is_aliyunos=$(cat $redhat_version_file|grep Aliyun) + if [ "$is_aliyunos" != "" ];then + return + fi + os_version=$(cat $redhat_version_file|grep CentOS|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]') + if [ "${os_version}" = "5" ];then + os_version="" + fi + if [ -z "${os_version}" ];then + os_version=$(cat /etc/redhat-release |grep Stream|grep -oE 8) + fi + else + os_type='ubuntu' + os_version=$(cat $deb_version_file|grep Ubuntu|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]+') + if [ "${os_version}" = "" ];then + os_type='debian' + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '[0-9]+') + if [ "${os_version}" = "" ];then + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '[0-9]+') + fi + if [ "${os_version}" = "8" ];then + os_version="" + fi + if [ "${is64bit}" = '32' ];then + os_version="" + fi + else + if [ "$os_version" = "14" ];then + os_version="" + fi + if [ "$os_version" = "12" ];then + os_version="" + fi + if [ "$os_version" = "19" ];then + os_version="" + fi + if [ "$os_version" = "21" ];then + os_version="" + fi + if [ "$os_version" = "20" ];then + os_version2004=$(cat /etc/issue|grep 20.04) + if [ -z "${os_version2004}" ];then + os_version="" + fi + fi + fi + fi +} + +Install_Python_Lib(){ + curl -Ss --connect-timeout 3 -m 60 $download_Url/install/pip_select.sh|bash + pyenv_path="/www/server/bt-monitor" + if [ -f $pyenv_path/pyenv/bin/python ];then + is_ssl=$($python_bin -c "import ssl" 2>&1|grep cannot) + $pyenv_path/pyenv/bin/python3.7 -V + if [ $? -eq 0 ] && [ -z "${is_ssl}" ];then + chmod -R 700 $pyenv_path/pyenv/bin + is_package=$($python_bin -m psutil 2>&1|grep package) + if [ "$is_package" = "" ];then + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip.txt -t 5 -T 10 + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + $pyenv_path/pyenv/bin/pip install -U flask==2.2.0 + $pyenv_path/pyenv/bin/pip install flask_sock + $pyenv_path/pyenv/bin/pip install cachelib + $pyenv_path/pyenv/bin/pip install py7zr + $pyenv_path/pyenv/bin/pip install backports.lzma + $pyenv_path/pyenv/bin/pip install pandas + $pyenv_path/pyenv/bin/pip install msgpack + fi + source $pyenv_path/pyenv/bin/activate + chmod -R 700 $pyenv_path/pyenv/bin + return + else + rm -rf $pyenv_path/pyenv + fi + fi + + py_version="3.7.9" + if [ ! -d "$pyenv_path" ]; then + mkdir -p $pyenv_path + fi + echo "True" > /www/disk.pl + if [ ! -w /www/disk.pl ];then + Red_Error "ERROR: Install python env fielded." "ERROR: /www目录无法写入,请检查目录/用户/磁盘权限!" + fi + os_type='el' + os_version='7' + is_export_openssl=0 + Get_Versions + + echo "OS: $os_type - $os_version" + is_aarch64=$(uname -a|grep aarch64) + if [ "$is_aarch64" != "" ];then + is64bit="aarch64" + fi + + if [ -f "/www/server/bt-monitor/pymake.pl" ];then + os_version="" + rm -f /www/server/bt-monitor/pymake.pl + fi + + if [[ $os_type =~ "debian" ]] || [[ $os_type =~ "ubuntu" ]]; then + isbtm="-btm" + fi + + if [ "${os_version}" != "" ];then + pyenv_file="/www/pyenv.tar.gz" + wget -O $pyenv_file $download_Url/install/pyenv/pyenv-${os_type}${os_version}-x${is64bit}${isbtm}.tar.gz -t 5 -T 10 + + tmp_size=$(du -b $pyenv_file|awk '{print $1}') + if [ $tmp_size -lt 703460 ];then + rm -f $pyenv_file + echo "ERROR: Download python env fielded." + else + echo "Install python env..." + tar zxvf $pyenv_file -C $pyenv_path/ > /dev/null + chmod -R 700 $pyenv_path/pyenv/bin + rm -rf $pyenv_path/pyenv/bin/python + ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python + $pyenv_path/pyenv/bin/python -m pip install --upgrade --force-reinstall pip + $pyenv_path/pyenv/bin/pip install -U flask==2.2.0 + $pyenv_path/pyenv/bin/pip install flask_sock + $pyenv_path/pyenv/bin/pip install cachelib + $pyenv_path/pyenv/bin/pip install py7zr + $pyenv_path/pyenv/bin/pip install backports.lzma + $pyenv_path/pyenv/bin/pip install pandas + $pyenv_path/pyenv/bin/pip install msgpack + if [ ! -f $pyenv_path/pyenv/bin/python ];then + rm -f $pyenv_file + Red_Error "ERROR: Install python env fielded." "ERROR: 下载堡塔云监控主控端运行环境失败,请尝试重新安装!" + fi + $pyenv_path/pyenv/bin/python3.7 -V + if [ $? -eq 0 ];then + rm -f $pyenv_file + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btmpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btmpython + source $pyenv_path/pyenv/bin/activate + return + else + rm -f $pyenv_file + rm -rf $pyenv_path/pyenv + fi + fi + fi + + cd /www + python_src='/www/python_src.tar.xz' + python_src_path="/www/Python-${py_version}" + wget -O $python_src $download_Url/src/Python-${py_version}.tar.xz -t 5 -T 10 + tmp_size=$(du -b $python_src|awk '{print $1}') + if [ $tmp_size -lt 10703460 ];then + rm -f $python_src + Red_Error "ERROR: Download python source code fielded." "ERROR: 下载堡塔云监控主控端运行环境失败,请尝试重新安装!" + fi + tar xvf $python_src + rm -f $python_src + cd $python_src_path + ./configure --prefix=$pyenv_path/pyenv + make -j$cpu_cpunt + make install + if [ ! -f $pyenv_path/pyenv/bin/python3.7 ];then + rm -rf $python_src_path + Red_Error "ERROR: Make python env fielded." "ERROR: 编译堡塔云监控主控端运行环境失败!" + fi + cd ~ + rm -rf $python_src_path + wget -O $pyenv_path/pyenv/bin/activate $download_Url/install/pyenv/activate.panel -t 5 -T 10 + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip-3.7.8.txt -t 5 -T 10 + ln -sf $pyenv_path/pyenv/bin/pip3.7 $pyenv_path/pyenv/bin/pip + ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btmpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btmpython + chmod -R 700 $pyenv_path/pyenv/bin + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools + $pyenv_path/pyenv/bin/pip install -U wheel==0.34.2 + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + $pyenv_path/pyenv/bin/pip install -U flask==2.2.0 + $pyenv_path/pyenv/bin/pip install flask_sock + $pyenv_path/pyenv/bin/pip install cachelib + $pyenv_path/pyenv/bin/pip install py7zr + $pyenv_path/pyenv/bin/pip install backports.lzma + $pyenv_path/pyenv/bin/pip install pandas + $pyenv_path/pyenv/bin/pip install msgpack + source $pyenv_path/pyenv/bin/activate + + is_gevent=$($python_bin -m gevent 2>&1|grep -oE package) + is_psutil=$($python_bin -m psutil 2>&1|grep -oE package) + if [ "${is_gevent}" != "${is_psutil}" ];then + Red_Error "ERROR: psutil/gevent install failed!" + fi +} + +Install_Monitor(){ + ulimit -n 1000001 + tee -a /etc/security/limits.conf << EOF +* hard nofile 1000001 +* soft nofile 1000001 +root hard nofile 1000001 +root soft nofile 1000001 +EOF + sysctl -p + panelPort="806" + + if [ ! -d "/etc/init.d" ];then + mkdir -p /etc/init.d + fi + + if [ -f "/etc/init.d/btm" ]; then + /etc/init.d/btm stop + sleep 1 + fi + + if [ -f "/www/server/bt-monitor/sqlite-server.sh" ]; then + chmod +x /www/server/bt-monitor/sqlite-server.sh + /www/server/bt-monitor/sqlite-server.sh stop + sleep 1 + fi + + version="2.1.7" + file_name="bt-monitor" + agent_src="bt-monitor.zip" + + cd ~ + version=`curl -sf ${Btapi_Url}/bt_monitor/latest_version |awk -F '\"version\"' '{print $2}'|awk -F ':' '{print $2}'|awk -F '"' '{print $2}'` + if [ -z $version ]; then + version="2.0.6" + fi + if [ "$re_install" == "1" ]; then + new_dir="/www/server/new_btmonitor" + if [ ! -d "$new_dir" ];then + mkdir -p $new_dir + fi + wget -O $agent_src ${Btapi_Url}/install/src/$file_name-$version.zip -t 5 -T 10 + unzip -o $agent_src -d $new_dir/ > /dev/null + if [ ! -f $new_dir/BT-MONITOR ];then + ls -lh $agent_src + Red_Error "ERROR: Failed to download, please try install again!" "ERROR: 下载堡塔云监控主控端失败,请尝试重新安装!" + fi + + rm -rf $new_dir/config + rm -rf $new_dir/data + rm -rf $new_dir/ssl + \cp -r $new_dir/* $monitor_path/ + rm -rf $new_dir + else + wget -O $agent_src ${Btapi_Url}/install/src/$file_name-$version.zip -t 5 -T 10 + if [ ! -d "$monitor_path" ]; then + mkdir -p $monitor_path + fi + unzip -o $agent_src -d $monitor_path/ > /dev/null + if [ ! -f $run_bin ];then + ls -lh $agent_src + Red_Error "ERROR: Failed to download, please try install again!" "ERROR: 下载堡塔云监控主控端失败,请尝试重新安装!" + fi + fi + rm -rf $agent_src + chmod +x $monitor_path/BT-MONITOR + chmod +x $monitor_path/tools.py + wget -O /etc/init.d/btm ${download_Url}/init/btmonitor.init -t 5 -T 10 + # \cp -r $monitor_path/init.sh /etc/init.d/btm + + chmod +x /etc/init.d/btm + ln -sf /etc/init.d/btm /usr/bin/btm + + if [ ! -f $monitor_path/data/user.json ]; then + echo "{\"uid\":1,\"username\":\"Administrator\",\"ip\":\"127.0.0.1\",\"server_id\":\"1\",\"access_key\":\"test\",\"secret_key\":\"123456\"}" > $monitor_path/data/user.json + fi + if [ -f $monitor_path/core/include/c_loader/PluginLoader.so ]; then + rm -f $monitor_path/core/include/c_loader/PluginLoader.so + fi +} + +Start_Monitor(){ + /etc/init.d/btm start + if [ "$?" != "0" ]; then + #echo "堡塔云监控主控端启动失败!" + tail $monitor_path/logs/error.log + Red_Error "堡塔云监控主控端启动失败!" + fi + + echo "正在初始化云监控主控端..." + if [ "$re_install" == "1" ] || [ "$re_install" == "2" ]; then + user_pass=`$setup_path/server/bt-monitor/tools.py reset_pwd` + password=`echo $user_pass |awk '{print $3}'` + else + user_pass=`$monitor_path/tools.py create_admin` + password=`echo $user_pass |awk -F " " '{print $5}'` + for ((i=1; i<=5; i++));do + if [ -z "$password" ]; then + sleep 7 + user_pass=`$monitor_path/tools.py create_admin` + password=`echo $user_pass |awk -F " " '{print $5}'` + else + i=5 + fi + done + fi + if [[ "$password" == "" ]];then + Red_Error "ERROR: 初始化云监控主控端失败,请尝试重新安装!" + fi + + c_path=$(cat /www/server/bt-monitor/config/config.json |awk -F '\"admin_path\"' '{print $2}'|awk -F ":" '{print $2}'|awk -F '"' '{print $2}') + adminpath=$(echo $c_path|awk -F ',' '{print $1}') + + if [ -d "/usr/bin/btmonitoragent" ];then + rm -rf /usr/bin/btmonitoragent + fi + + date_f=`date '+%Y%m%d_%H%M%S'` + md5_pl=`echo $date_f | md5sum | head -c 32` + token_pl=`cat $monitor_path/config/token.pl 2>&1` + if [ "$token_pl" == ' ' ] || [ ! -f $monitor_path/config/token.pl ]; then + echo "$md5_pl" > $monitor_path/config/token.pl + fi + + echo "正在给本机安装云监控被控端,请等待..." + sleep 15 + curl -sSO ${download_Url}/install/btmonitoragent.sh && bash btmonitoragent.sh https://127.0.0.1:806 $md5_pl + target_dir="/usr/local/btmonitoragent" + if [ ! -f "$target_dir/BT-MonitorAgent" ];then + tail -n 10 ${monitor_path}/logs/error.log + echo "" + ps aux|grep -v grep|grep ${monitor_path} + netstat -tulnp|grep ${panelPort} + /etc/init.d/btm restart + if [ "$?" -eq 0 ]; then + echo -e "\033[31m安装云监控被控端失败,正在尝试重新安装!\033[0m" + sleep 15 + curl -sSO ${download_Url}/install/btmonitoragent.sh && bash btmonitoragent.sh https://127.0.0.1:806 $md5_pl + if [ ! -f "$target_dir/BT-MonitorAgent" ];then + Red_Error "ERROR: 安装云监控被控端失败,请尝试重新安装!" + fi + else + Red_Error "ERROR: 安装云监控被控端失败,请尝试重新安装!" + fi + fi + /etc/init.d/btm restart > /dev/null 2>&1 + +} + +Set_Firewall(){ + sshPort=$(cat /etc/ssh/sshd_config | grep 'Port '|awk '{print $2}') + if [ "${PM}" = "apt-get" ]; then + apt-get install -y ufw + if [ -f "/usr/sbin/ufw" ];then + ufw allow 22/tcp + ufw allow ${panelPort}/tcp + ufw allow ${sshPort}/tcp + ufw_status=`ufw status` + echo y|ufw enable + ufw default deny + ufw reload + fi + else + if [ -f "/etc/init.d/iptables" ];then + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${panelPort} -j ACCEPT + iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport ${sshPort} -j ACCEPT + iptables -A INPUT -p icmp --icmp-type any -j ACCEPT + iptables -A INPUT -s localhost -d localhost -j ACCEPT + iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + iptables -P INPUT DROP + service iptables save + sed -i "s#IPTABLES_MODULES=\"\"#IPTABLES_MODULES=\"ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_ftp\"#" /etc/sysconfig/iptables-config + iptables_status=$(service iptables status | grep 'not running') + if [ "${iptables_status}" == '' ];then + service iptables restart + fi + else + AliyunCheck=$(cat /etc/redhat-release|grep "Aliyun Linux") + [ "${AliyunCheck}" ] && return + yum install firewalld -y + [ "${Centos8Check}" ] && yum reinstall python3-six -y + systemctl enable firewalld + systemctl start firewalld + firewall-cmd --set-default-zone=public > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=22/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=${panelPort}/tcp > /dev/null 2>&1 + firewall-cmd --permanent --zone=public --add-port=${sshPort}/tcp > /dev/null 2>&1 + firewall-cmd --reload + fi + fi +} + +Service_Add(){ + if [ $Command_Exists systemctl ]; then + wget -O /usr/lib/systemd/system/btm.service ${download_Url}/init/systemd/btmonitor.service -t 5 -T 10 + systemctl daemon-reload + systemctl enable btm + else + if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then + chkconfig --add btm + chkconfig --level 2345 btm on + elif [ "${PM}" == "apt-get" ]; then + update-rc.d btm defaults + fi + fi +} + +Service_Del(){ + if [ $Command_Exists systemctl ]; then + rm -rf /usr/lib/systemd/system/btm.service + systemctl disable btm + else + if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then + chkconfig --del btm + chkconfig --level 2345 btm off + elif [ "${PM}" == "apt-get" ]; then + update-rc.d btm remove + fi + fi +} + +Get_Ip_Address(){ + getIpAddress="" + getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) + if [ -z "${getIpAddress}" ] || [ "${getIpAddress}" = "0.0.0.0" ]; then + isHosts=$(cat /etc/hosts|grep 'www.bt.cn') + if [ -z "${isHosts}" ];then + echo "" >> /etc/hosts + echo "116.213.43.206 www.bt.cn" >> /etc/hosts + getIpAddress=$(curl -sS --connect-timeout 10 -m 60 https://www.bt.cn/Api/getIpAddress) + if [ -z "${getIpAddress}" ];then + sed -i "/bt.cn/d" /etc/hosts + fi + fi + fi + + ipv4Check=$($python_bin -c "import re; print(re.match('^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$','${getIpAddress}'))") + if [ "${ipv4Check}" == "None" ];then + ipv6Address=$(echo ${getIpAddress}|tr -d "[]") + ipv6Check=$($python_bin -c "import re; print(re.match('^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$','${ipv6Address}'))") + if [ "${ipv6Check}" == "None" ]; then + getIpAddress="SERVER_IP" + else + echo "True" > ${setup_path}/server/bt-monitor/data/ipv6.pl + sleep 1 + /etc/init.d/btm restart + fi + fi + + if [ "${getIpAddress}" != "SERVER_IP" ];then + echo "${getIpAddress}" > ${setup_path}/server/bt-monitor/data/iplist.txt + fi + LOCAL_IP=$(ip addr | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -E -v "^127\.|^255\.|^0\." | head -n 1) +} + +System_Check(){ + if [ -f "$monitor_path/BT-MONITOR" ] || [ -f "$monitor_path/tools.py" ] || [ -f "/etc/init.d/btm" ];then + Install_Check + elif [ -d "$old_dir" ];then + Rev_Install_Check + fi +} + +Install_Check(){ + echo -e "----------------------------------------------------" + echo -e "检测到已存在堡塔云监控系统,请按照选项选择安装方式!" + echo -e "1) 覆盖安装:保存原有监控配置及数据并安装堡塔云监控" + echo -e "\033[33m2) 全新安装:清空原有监控配置及数据并安装堡塔云监控\033[0m" + echo -e "----------------------------------------------------" + read -p "请输入对应选项[1|2]进行安装或输入任意内容退出安装: " yes; + if [ "$yes" == "1" ]; then + re_install="1" + echo "即将卸载并重装本机的堡塔云监控被控端..." + Uninstall_agent + elif [ "$yes" == "2" ]; then + Backup_Monitor + echo "即将卸载并重装本机的堡塔云监控被控端..." + Uninstall_agent + else + echo -e "------------" + echo "取消安装" + exit; + fi +} + +Rev_Install_Check(){ + echo -e "----------------------------------------------------" + echo -e "\033[33m检测到上一次卸载云监控时保留的旧数据,请按照选项选择安装方式!\033[0m" + echo -e "1) 还原以前的备份并安装堡塔云监控系统!" + echo -e "2) 不使用原有备份,全新安装堡塔云监控系统!" + echo -e "----------------------------------------------------" + read -p "请输入对应选项[1|2]进行安装或输入任意内容退出安装: " yes; + if [ "$yes" == "1" ]; then + re_install="2" + echo "开始安装堡塔云监控系统并还原数据..." + elif [ "$yes" == "2" ]; then + echo "开始全新安装堡塔云监控系统..." + else + echo -e "------------" + echo "取消安装" + exit; + fi +} + +Backup_Monitor(){ + if [ -f "/etc/init.d/btm" ]; then + /etc/init.d/btm stop + sleep 1 + fi + if [ ! -d "${old_dir}" ];then + mkdir -p ${old_dir} + else + mv ${old_dir} ${old_dir}_$(date +%Y_%m_%d_%H_%M_%S) + mkdir -p ${old_dir} + fi + + mv ${monitor_path}/data ${old_dir}/data + mv ${monitor_path}/config ${old_dir}/config + mv ${monitor_path}/ssl ${old_dir}/ssl +} + +Reinstall_Monitor(){ + rm -rf $monitor_path/data + rm -rf $monitor_path/config + rm -rf $monitor_path/ssl + mv $old_dir/data $monitor_path/data + mv $old_dir/config $monitor_path/config + mv $old_dir/ssl $monitor_path/ssl + rm -rf $old_dir +} + +Get_Pack_Manager(){ + if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then + PM="yum" + elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then + PM="apt-get" + fi +} + +Install_RPM_Pack(){ + yumPacks="wget curl unzip gcc gcc-c++ make libcurl-devel openssl-devel xz-devel python-backports-lzma xz crontabs zlib zlib-devel sqlite-devel libffi-devel bzip2-devel lsof net-tools" + yum install -y ${yumPacks} + + for yumPack in ${yumPacks} + do + rpmPack=$(rpm -q ${yumPack}) + packCheck=$(echo ${rpmPack}|grep not) + if [ "${packCheck}" ]; then + yum install ${yumPack} -y + fi + done +} + +Install_Deb_Pack(){ + debPacks="wget curl unzip gcc g++ make cron libcurl4-openssl-dev libssl-dev liblzma-dev xz-utils libffi-dev libbz2-dev libsqlite3-dev libreadline-dev libgdbm-dev python3-bsddb3 tk-dev ncurses-dev uuid-dev zlib1g zlib1g-dev lsof net-tools"; + apt-get update -y + apt-get install -y $debPacks --force-yes + + for debPack in ${debPacks} + do + packCheck=$(dpkg -l ${debPack}) + if [ "$?" -ne "0" ] ;then + apt-get install -y $debPack + fi + done +} + +Check_Sys_Write(){ + echo "正在检测系统关键目录是否可写" + if [ ! -d "/etc/init.d" ];then + mkdir -p /etc/init.d + fi + if [ -f /usr/bin/which ];then + Get_Pack_Manager + if [ "$PM" == "yum" ]; then + read_dir="/usr/lib/systemd/system/ /etc/init.d/ /var/spool/cron/" + else + read_dir="/usr/lib/systemd/system/ /etc/init.d/ /var/spool/cron/crontabs/" + fi + + for dir in ${read_dir[@]} + do + if [[ -d "$dir" ]]; then + touch $dir/btm_install_test_111.pl + state=$(echo $?) + if [[ "$state" != "0" ]];then + echo -e "\033[31m错误:检测到系统关键目录不可写! $read_dir \033[0m" + echo "1、如果安装了[宝塔系统加固],请先临时关闭" + echo "2、如果安装了云锁,请临时关闭[系统加固]功能" + echo "3、如果安装了安全狗,请临时关闭[系统防护]功能" + echo "4、如果使用了其它安全软件,请先卸载 " + echo -e "5、如果使用了禁止写入命令,请执行命令取消禁止写入:\n chattr -iaR $read_dir " + echo "" + echo -e "\033[31m解决以上问题后,请尝试重新安装! \033[0m" + echo -e "如果无法解决请截图以上报错信息发帖至论坛www.bt.cn/bbs求助" + exit 1 + else + rm -f $dir/btm_install_test_111.pl + fi + fi + done + fi +} + +Check_Sys_Packs(){ + echo "正在检查系统中是否存在必备的依赖包" + Packs="wget curl unzip gcc make" + for pack in ${Packs[@]} + do + check_pack=$(which $pack) + #echo $check_pack + if [[ "$check_pack" == "" ]]; then + echo -e "\033[31mERROR: $pack 命令不存在,尝试以下解决方法:\033[0m" + if [ "$PM" == "yum" ]; then + echo 1、使用命令重新安装依赖包:yum reinstall -y ${Packs} + else + echo 1、使用命令重新安装依赖包:apt-get reinstall -y ${Packs} + fi + echo -e "2、检查系统源是否可用?尝试更换可用的源参考教程:\n https://www.bt.cn/bbs/thread-58005-1-1.html " + echo "" + echo -e "\033[31m解决以上问题后,请尝试重新安装! \033[0m" + echo -e "如果无法解决请截图以上报错信息发帖至论坛www.bt.cn/bbs求助" + exit 1 + fi + done +} + +Install_Main(){ + startTime=`date +%s` + Check_Sys_Write + System_Check + Get_Pack_Manager + get_node_url + + if [ "$PM" == "yum" ]; then + Install_RPM_Pack + else + Install_Deb_Pack + fi + Check_Sys_Packs + Install_Python_Lib + Install_Monitor + Set_Firewall + Get_Ip_Address + Service_Add + if [ "$re_install" == "2" ]; then + Reinstall_Monitor + fi + Start_Monitor +} + +Uninstall_Monitor(){ + pkill BT-MONITOR + /etc/init.d/btm stop + + if [ -f "/www/server/bt-monitor/sqlite-server.sh" ]; then + chmod +x /www/server/bt-monitor/sqlite-server.sh + /www/server/bt-monitor/sqlite-server.sh stop + sleep 1 + fi + + Service_Del + + rm -rf $monitor_path + rm -rf /usr/bin/btm + rm -rf /etc/init.d/btm + + echo -e "堡塔云监控主控端卸载成功!" +} + +Uninstall_agent(){ + get_node_url + if [ -f "/tmp/btmonitoragent.sh" ];then + rm -rf /tmp/btmonitoragent.sh + fi + curl -o /tmp/btmonitoragent.sh -sSO ${download_Url}/install/btmonitoragent.sh && bash /tmp/btmonitoragent.sh uninstall +} + +action="${1}" +if [ "$action" == "uninstall" ];then + echo -e "----------------------------------------------------" + echo -e "\033[33m检测到您正在卸载堡塔云监控系统,请按照选项选择卸载方式!\033[0m" + echo -e "1) 备份数据后卸载:保存原有监控配置及数据并卸载堡塔云监控系统" + echo -e "2) 完全卸载:清空原有监控配置及数据并卸载堡塔云监控系统" + echo -e "----------------------------------------------------" + read -p "请输入对应选项[1|2]进行卸载或输入任意内容退出卸载: " yes; + if [ "$yes" == "1" ]; then + Backup_Monitor + echo -e "----------------------------------------------------" + echo -e "\033[33m已备份原有监控数据至: ${old_dir}\033[0m" + elif [ "$yes" == "2" ]; then + echo "正在清空堡塔云监控系统数据..." + else + echo -e "------------" + echo "取消卸载" + exit; + fi + Uninstall_agent + Uninstall_Monitor + exit 0 +else +echo " ++---------------------------------------------------------------------- +| Bt-Monitor FOR CentOS/Ubuntu/Debian ++---------------------------------------------------------------------- +| Copyright © 2015-2099 BT-SOFT(https://www.bt.cn) All rights reserved. ++---------------------------------------------------------------------- +| The Monitor URL will be https://SERVER_IP:806 when installed. ++---------------------------------------------------------------------- +" +while [ "$go" != 'y' ] && [ "$go" != 'n' ] +do + read -p "Do you want to install Bt-Monitor to the $setup_path directory now?(y/n): " go; +done + +if [ "$go" == 'n' ];then + exit; +fi + Install_Main + #curl -o /dev/null -fsSL --connect-time 10 "https://api.bt.cn/bt_monitor/setup_count?cloud_type=1&token=$md5_pl&src_code=$1" + #curl -o /dev/null -fsSL --connect-time 10 "https://api.bt.cn/bt_monitor/setup_count?cloud_type=1&token=$md5_pl&src_code=$1&status=1" + +fi +echo -e "==================================================================" +echo -e "\033[32m堡塔云监控主控端安装完成! Installed successfully!\033[0m" +echo -e "==================================================================" +echo "外网访问地址: https://${getIpAddress}:${panelPort}${adminpath}" +echo "内网访问地址: https://${LOCAL_IP}:${panelPort}${adminpath}" +echo -e "username: admin" +echo -e "password: $password" +echo -e "\033[33mIf you cannot access the Monitor,\033[0m" +echo -e "\033[33mrelease the following Monitor port [${panelPort}] in the security group\033[0m" +echo -e "\033[33m若无法访问堡塔云监控主控端,请检查防火墙/安全组是否有放行[${panelPort}]端口\033[0m" +echo -e "==================================================================" + +endTime=`date +%s` +((outTime=($endTime-$startTime)/60)) +echo -e "Time consumed:\033[32m $outTime \033[0mMinute!" diff --git a/public/install/public.sh b/public/install/public.sh new file mode 100644 index 0000000..0c9e95d --- /dev/null +++ b/public/install/public.sh @@ -0,0 +1,150 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +pyenv_bin=/www/server/panel/pyenv/bin +rep_path=${pyenv_bin}:$PATH +if [ -d "$pyenv_bin" ];then + PATH=$rep_path +fi +export PATH +export LANG=en_US.UTF-8 +export LANGUAGE=en_US:en + +get_node_url(){ + nodes=(https://dg2.bt.cn https://download.bt.cn https://ctcc1-node.bt.cn https://cmcc1-node.bt.cn https://ctcc2-node.bt.cn https://hk1-node.bt.cn https://na1-node.bt.cn https://jp1-node.bt.cn); + + if [ "$1" ];then + nodes=($(echo ${nodes[*]}|sed "s#${1}##")) + fi + + tmp_file1=/dev/shm/net_test1.pl + tmp_file2=/dev/shm/net_test2.pl + [ -f "${tmp_file1}" ] && rm -f ${tmp_file1} + [ -f "${tmp_file2}" ] && rm -f ${tmp_file2} + touch $tmp_file1 + touch $tmp_file2 + for node in ${nodes[@]}; + do + NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${node}/net_test|xargs) + RES=$(echo ${NODE_CHECK}|awk '{print $1}') + NODE_STATUS=$(echo ${NODE_CHECK}|awk '{print $2}') + TIME_TOTAL=$(echo ${NODE_CHECK}|awk '{print $3 * 1000 - 500 }'|cut -d '.' -f 1) + if [ "${NODE_STATUS}" == "200" ];then + if [ $TIME_TOTAL -lt 300 ];then + if [ $RES -ge 1500 ];then + echo "$RES $node" >> $tmp_file1 + fi + else + if [ $RES -ge 1500 ];then + echo "$TIME_TOTAL $node" >> $tmp_file2 + fi + fi + + i=$(($i+1)) + if [ $TIME_TOTAL -lt 200 ];then + if [ $RES -ge 3000 ];then + break; + fi + fi + fi + done + + NODE_URL=$(cat $tmp_file1|sort -r -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL=$(cat $tmp_file2|sort -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL='https://download.bt.cn'; + fi + fi + rm -f $tmp_file1 + rm -f $tmp_file2 +} + +GetCpuStat(){ + time1=$(cat /proc/stat |grep 'cpu ') + sleep 1 + time2=$(cat /proc/stat |grep 'cpu ') + cpuTime1=$(echo ${time1}|awk '{print $2+$3+$4+$5+$6+$7+$8}') + cpuTime2=$(echo ${time2}|awk '{print $2+$3+$4+$5+$6+$7+$8}') + runTime=$((${cpuTime2}-${cpuTime1})) + idelTime1=$(echo ${time1}|awk '{print $5}') + idelTime2=$(echo ${time2}|awk '{print $5}') + idelTime=$((${idelTime2}-${idelTime1})) + useTime=$(((${runTime}-${idelTime})*3)) + [ ${useTime} -gt ${runTime} ] && cpuBusy="true" + if [ "${cpuBusy}" == "true" ]; then + cpuCore=$((${cpuInfo}/2)) + else + cpuCore=$((${cpuInfo}-1)) + fi +} +GetPackManager(){ + if [ -f "/usr/bin/yum" ] && [ -f "/etc/yum.conf" ]; then + PM="yum" + elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then + PM="apt-get" + fi +} + +bt_check(){ + p_path=/www/server/panel/class/panelPlugin.py + if [ -f $p_path ];then + is_ext=$(cat $p_path|grep btwaf) + if [ "$is_ext" != "" ];then + send_check + fi + fi + + p_path=/www/server/panel/BTPanel/templates/default/index.html + if [ -f $p_path ];then + is_ext=$(cat $p_path|grep fbi) + if [ "$is_ext" != "" ];then + send_check + fi + fi +} + +send_check(){ + chattr -i /etc/init.d/bt + chmod +x /etc/init.d/bt + p_path2=/www/server/panel/class/common.py + p_version=$(cat $p_path2|grep "version = "|awk '{print $3}'|tr -cd [0-9.]) + curl -sS --connect-timeout 3 -m 60 https://www.bt.cn/api/panel/notpro?version=$p_version + NODE_URL="" + exit 0; +} +GetSysInfo(){ + if [ "${PM}" = "yum" ]; then + SYS_VERSION=$(cat /etc/redhat-release) + elif [ "${PM}" = "apt-get" ]; then + SYS_VERSION=$(cat /etc/issue) + fi + SYS_INFO=$(uname -msr) + SYS_BIT=$(getconf LONG_BIT) + MEM_TOTAL=$(free -m|grep Mem|awk '{print $2}') + CPU_INFO=$(getconf _NPROCESSORS_ONLN) + GCC_VER=$(gcc -v 2>&1|grep "gcc version"|awk '{print $3}') + CMAKE_VER=$(cmake --version|grep version|awk '{print $3}') + + echo -e ${SYS_VERSION} + echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO} gcc:${GCC_VER} cmake:${CMAKE_VER} + echo -e ${SYS_INFO} +} +cpuInfo=$(getconf _NPROCESSORS_ONLN) +if [ "${cpuInfo}" -ge "4" ];then + GetCpuStat +else + cpuCore="1" +fi +GetPackManager + +if [ ! $NODE_URL ];then + EN_CHECK=$(cat /www/server/panel/config/config.json |grep English) + if [ -z "${EN_CHECK}" ];then + echo '正在选择下载节点...'; + else + echo "selecting download node..."; + fi + get_node_url +fi + + diff --git a/public/install/src/bt-monitor-2.2.5.zip b/public/install/src/bt-monitor-2.2.5.zip new file mode 100644 index 0000000..81b7997 Binary files /dev/null and b/public/install/src/bt-monitor-2.2.5.zip differ diff --git a/public/install/src/panel6.zip b/public/install/src/panel6.zip new file mode 100644 index 0000000..93c6d37 Binary files /dev/null and b/public/install/src/panel6.zip differ diff --git a/public/install/update/LinuxPanel-8.0.1.zip b/public/install/update/LinuxPanel-8.0.1.zip new file mode 100644 index 0000000..7ae22e1 Binary files /dev/null and b/public/install/update/LinuxPanel-8.0.1.zip differ diff --git a/public/install/update6.sh b/public/install/update6.sh new file mode 100644 index 0000000..fa488cd --- /dev/null +++ b/public/install/update6.sh @@ -0,0 +1,127 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +LANG=en_US.UTF-8 + +Btapi_Url='http://www.example.com' + +if [ ! -d /www/server/panel/BTPanel ];then + echo "=============================================" + echo "错误, 5.x不可以使用此命令升级!" + echo "5.9平滑升级到6.0的命令:curl http://download.bt.cn/install/update_to_6.sh|bash" + exit 0; +fi + +if [ ! -f "/www/server/panel/pyenv/bin/python3" ];then + echo "=============================================" + echo "错误, 当前面板过旧/py-2.7/无pyenv环境,无法升级至最新版面板" + echo "请截图发帖至论坛www.bt.cn/bbs求助" + exit 0; +fi + +public_file=/www/server/panel/install/public.sh +if [ ! -f $public_file ];then + wget -O Tpublic.sh $Btapi_Url/install/public.sh -T 20; +fi +. $public_file + +Centos8Check=$(cat /etc/redhat-release | grep ' 8.' | grep -iE 'centos|Red Hat') +if [ "${Centos8Check}" ];then + if [ ! -f "/usr/bin/python" ] && [ -f "/usr/bin/python3" ] && [ ! -d "/www/server/panel/pyenv" ]; then + ln -sf /usr/bin/python3 /usr/bin/python + fi +fi + +mypip="pip" +env_path=/www/server/panel/pyenv/bin/activate +if [ -f $env_path ];then + mypip="/www/server/panel/pyenv/bin/pip" +fi + +download_Url=$NODE_URL +setup_path=/www +version=$(curl -Ss --connect-timeout 5 -m 2 $Btapi_Url/api/panel/get_version) +if [ "$version" = '' ];then + version='7.9.9' +fi +armCheck=$(uname -m|grep arm) +if [ "${armCheck}" ];then + version='7.7.0' +fi + +if [ "$1" ];then + version=$1 +fi +wget -T 5 -O /tmp/panel.zip $Btapi_Url/install/update/LinuxPanel-${version}.zip +dsize=$(du -b /tmp/panel.zip|awk '{print $1}') +if [ $dsize -lt 10240 ];then + echo "获取更新包失败,请稍后更新或联系宝塔运维" + exit; +fi +unzip -o /tmp/panel.zip -d $setup_path/server/ > /dev/null +rm -f /tmp/panel.zip +cd $setup_path/server/panel/ +check_bt=`cat /etc/init.d/bt` +if [ "${check_bt}" = "" ];then + rm -f /etc/init.d/bt + wget -O /etc/init.d/bt $download_Url/install/src/bt7.init -T 20 + chmod +x /etc/init.d/bt +fi +rm -f /www/server/panel/*.pyc +rm -f /www/server/panel/class/*.pyc +#pip install flask_sqlalchemy +#pip install itsdangerous==0.24 + +pip_list=$($mypip list) +request_v=$(btpip list 2>/dev/null|grep "requests "|awk '{print $2}'|cut -d '.' -f 2) +if [ "$request_v" = "" ] || [ "${request_v}" -gt "28" ];then + $mypip install requests==2.27.1 +fi + +openssl_v=$(echo "$pip_list"|grep pyOpenSSL) +if [ "$openssl_v" = "" ];then + $mypip install pyOpenSSL +fi + +#cffi_v=$(echo "$pip_list"|grep cffi|grep 1.12.) +#if [ "$cffi_v" = "" ];then +# $mypip install cffi==1.12.3 +#fi + +pymysql=$(echo "$pip_list"|grep pymysql) +if [ "$pymysql" = "" ];then + $mypip install pymysql +fi + +pymysql=$(echo "$pip_list"|grep pycryptodome) +if [ "$pymysql" = "" ];then + $mypip install pycryptodome +fi + +#psutil=$(echo "$pip_list"|grep psutil|awk '{print $2}'|grep '5.7.') +#if [ "$psutil" = "" ];then +# $mypip install -U psutil +#fi + +if [ -d /www/server/panel/class/BTPanel ];then + rm -rf /www/server/panel/class/BTPanel +fi +rm -f /www/server/panel/class/*.so +if [ ! -f /www/server/panel/data/not_workorder.pl ]; then + echo "True" > /www/server/panel/data/not_workorder.pl +fi +if [ ! -f /www/server/panel/data/userInfo.json ]; then + echo "{\"uid\":1,\"username\":\"Administrator\",\"address\":\"127.0.0.1\",\"serverid\":\"1\",\"access_key\":\"test\",\"secret_key\":\"123456\",\"ukey\":\"123456\",\"state\":1}" > /www/server/panel/data/userInfo.json +fi + +chattr -i /etc/init.d/bt +chmod +x /etc/init.d/bt +echo "=====================================" +rm -f /dev/shm/bt_sql_tips.pl +kill $(ps aux|grep -E "task.pyc|main.py"|grep -v grep|awk '{print $2}') +/etc/init.d/bt restart +echo 'True' > /www/server/panel/data/restart.pl +pkill -9 gunicorn & +echo "已成功升级到[$version]${Ver}"; + + diff --git a/public/install/update_btmonitor.sh b/public/install/update_btmonitor.sh new file mode 100644 index 0000000..9e7e562 --- /dev/null +++ b/public/install/update_btmonitor.sh @@ -0,0 +1,446 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH +LANG=en_US.UTF-8 + +Btapi_Url='http://www.example.com' + +monitor_path="/www/server/bt-monitor" +run_bin="/www/server/bt-monitor/BT-MONITOR" +is64bit=$(getconf LONG_BIT) + +if [ ! -d $monitor_path ]; then + echo "没有安装云监控,请执行下面的命令安装堡塔云监控!" + echo "curl -sSO ${Btapi_Url}/install/install_btmonitor.sh && bash install_btmonitor.sh" + exit 1 +fi + +cd ~ +setup_path="/www" + +if [ -f "/etc/init.d/btm" ]; then + /etc/init.d/btm stop + sleep 1 +fi + +if [ -f "/www/server/bt-monitor/sqlite-server.sh" ]; then + chmod +x /www/server/bt-monitor/sqlite-server.sh + /www/server/bt-monitor/sqlite-server.sh stop + sleep 1 +fi + +get_node_url(){ + if [ ! -f /bin/curl ];then + if [ "${PM}" = "yum" ]; then + yum install curl -y + elif [ "${PM}" = "apt-get" ]; then + apt-get install curl -y + fi + fi + + if [ -f "/www/node.pl" ];then + download_Url=$(cat /www/node.pl) + echo "Download node: $download_Url"; + echo '---------------------------------------------'; + return + fi + + echo '---------------------------------------------'; + echo "Selected download node..."; + # nodes=(http://dg2.bt.cn http://dg1.bt.cn http://125.90.93.52:5880 http://36.133.1.8:5880 http://123.129.198.197 http://38.34.185.130 http://116.213.43.206:5880 http://128.1.164.196); + #nodes=(http://dg2.bt.cn http://dg1.bt.cn http://125.90.93.52:5880 http://36.133.1.8:5880 http://123.129.198.197 http://116.213.43.206:5880); + nodes=(https://dg2.bt.cn https://dg1.bt.cn https://download.bt.cn); + tmp_file1=/dev/shm/net_test1.pl + tmp_file2=/dev/shm/net_test2.pl + [ -f "${tmp_file1}" ] && rm -f ${tmp_file1} + [ -f "${tmp_file2}" ] && rm -f ${tmp_file2} + touch $tmp_file1 + touch $tmp_file2 + for node in ${nodes[@]}; + do + NODE_CHECK=$(curl --connect-timeout 3 -m 3 2>/dev/null -w "%{http_code} %{time_total}" ${node}/net_test|xargs) + RES=$(echo ${NODE_CHECK}|awk '{print $1}') + NODE_STATUS=$(echo ${NODE_CHECK}|awk '{print $2}') + TIME_TOTAL=$(echo ${NODE_CHECK}|awk '{print $3 * 1000 - 500 }'|cut -d '.' -f 1) + if [ "${NODE_STATUS}" == "200" ];then + if [ $TIME_TOTAL -lt 100 ];then + if [ $RES -ge 1500 ];then + echo "$RES $node" >> $tmp_file1 + fi + else + if [ $RES -ge 1500 ];then + echo "$TIME_TOTAL $node" >> $tmp_file2 + fi + fi + + i=$(($i+1)) + if [ $TIME_TOTAL -lt 100 ];then + if [ $RES -ge 3000 ];then + break; + fi + fi + fi + done + + NODE_URL=$(cat $tmp_file1|sort -r -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL=$(cat $tmp_file2|sort -g -t " " -k 1|head -n 1|awk '{print $2}') + if [ -z "$NODE_URL" ];then + NODE_URL='https://download.bt.cn'; + fi + fi + rm -f $tmp_file1 + rm -f $tmp_file2 + download_Url=$NODE_URL + echo "Download node: $download_Url"; + echo '---------------------------------------------'; +} + +Get_Versions(){ + redhat_version_file="/etc/redhat-release" + deb_version_file="/etc/issue" + if [ -f $redhat_version_file ];then + os_type='el' + is_aliyunos=$(cat $redhat_version_file|grep Aliyun) + if [ "$is_aliyunos" != "" ];then + return + fi + os_version=$(cat $redhat_version_file|grep CentOS|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]') + if [ "${os_version}" = "5" ];then + os_version="" + fi + if [ -z "${os_version}" ];then + os_version=$(cat /etc/redhat-release |grep Stream|grep -oE 8) + fi + else + os_type='ubuntu' + os_version=$(cat $deb_version_file|grep Ubuntu|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]+') + if [ "${os_version}" = "" ];then + os_type='debian' + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '[0-9]+') + if [ "${os_version}" = "" ];then + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '[0-9]+') + fi + if [ "${os_version}" = "8" ];then + os_version="" + fi + if [ "${is64bit}" = '32' ];then + os_version="" + fi + else + if [ "$os_version" = "14" ];then + os_version="" + fi + if [ "$os_version" = "12" ];then + os_version="" + fi + if [ "$os_version" = "19" ];then + os_version="" + fi + if [ "$os_version" = "21" ];then + os_version="" + fi + if [ "$os_version" = "20" ];then + os_version2004=$(cat /etc/issue|grep 20.04) + if [ -z "${os_version2004}" ];then + os_version="" + fi + fi + fi + fi +} + +Install_Python_Lib(){ + curl -Ss --connect-timeout 3 -m 60 $download_Url/install/pip_select.sh|bash + pyenv_path="/www/server/bt-monitor" + if [ -f $pyenv_path/pyenv/bin/python ];then + is_ssl=$($python_bin -c "import ssl" 2>&1|grep cannot) + $pyenv_path/pyenv/bin/python3.7 -V + if [ $? -eq 0 ] && [ -z "${is_ssl}" ];then + chmod -R 700 $pyenv_path/pyenv/bin + is_package=$($python_bin -m psutil 2>&1|grep package) + if [ "$is_package" = "" ];then + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip.txt -t 5 -T 10 + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + $pyenv_path/pyenv/bin/pip install -U flask==2.2.0 + $pyenv_path/pyenv/bin/pip install flask_sock + $pyenv_path/pyenv/bin/pip install cachelib + $pyenv_path/pyenv/bin/pip install py7zr + $pyenv_path/pyenv/bin/pip install backports.lzma + fi + source $pyenv_path/pyenv/bin/activate + chmod -R 700 $pyenv_path/pyenv/bin + return + else + rm -rf $pyenv_path/pyenv + fi + fi + + py_version="3.7.9" + if [ ! -d "$pyenv_path" ]; then + mkdir -p $pyenv_path + fi + echo "True" > /www/disk.pl + if [ ! -w /www/disk.pl ];then + Red_Error "ERROR: Install python env fielded." "ERROR: /www目录无法写入,请检查目录/用户/磁盘权限!" + fi + os_type='el' + os_version='7' + is_export_openssl=0 + Get_Versions + + echo "OS: $os_type - $os_version" + is_aarch64=$(uname -a|grep aarch64) + if [ "$is_aarch64" != "" ];then + is64bit="aarch64" + fi + + if [ -f "/www/server/bt-monitor/pymake.pl" ];then + os_version="" + rm -f /www/server/bt-monitor/pymake.pl + fi + + if [[ $os_type =~ "debian" ]] || [[ $os_type =~ "ubuntu" ]]; then + isbtm="-btm" + fi + + if [ "${os_version}" != "" ];then + pyenv_file="/www/pyenv.tar.gz" + wget -O $pyenv_file $download_Url/install/pyenv/pyenv-${os_type}${os_version}-x${is64bit}${isbtm}.tar.gz -t 5 -T 10 + tmp_size=$(du -b $pyenv_file|awk '{print $1}') + if [ $tmp_size -lt 703460 ];then + rm -f $pyenv_file + echo "ERROR: Download python env fielded." + else + echo "Install python env..." + tar zxvf $pyenv_file -C $pyenv_path/ > /dev/null + chmod -R 700 $pyenv_path/pyenv/bin + rm -rf $pyenv_path/pyenv/bin/python + ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python + $pyenv_path/pyenv/bin/python -m pip install --upgrade --force-reinstall pip + $pyenv_path/pyenv/bin/pip install -U flask==2.2.0 + $pyenv_path/pyenv/bin/pip install flask_sock + $pyenv_path/pyenv/bin/pip install cachelib + $pyenv_path/pyenv/bin/pip install py7zr + $pyenv_path/pyenv/bin/pip install backports.lzma + if [ ! -f $pyenv_path/pyenv/bin/python ];then + rm -f $pyenv_file + Red_Error "ERROR: Install python env fielded." "ERROR: 下载堡塔云监控运行环境失败,请尝试重新安装!" + fi + $pyenv_path/pyenv/bin/python3.7 -V + if [ $? -eq 0 ];then + rm -f $pyenv_file + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btmpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btmpython + source $pyenv_path/pyenv/bin/activate + return + else + rm -f $pyenv_file + rm -rf $pyenv_path/pyenv + fi + fi + fi + + cd /www + python_src='/www/python_src.tar.xz' + python_src_path="/www/Python-${py_version}" + wget -O $python_src $download_Url/src/Python-${py_version}.tar.xz -t 5 -T 10 + tmp_size=$(du -b $python_src|awk '{print $1}') + if [ $tmp_size -lt 10703460 ];then + rm -f $python_src + Red_Error "ERROR: Download python source code fielded." "ERROR: 下载堡塔云监控运行环境失败,请尝试重新安装!" + fi + tar xvf $python_src + rm -f $python_src + cd $python_src_path + ./configure --prefix=$pyenv_path/pyenv + make -j$cpu_cpunt + make install + if [ ! -f $pyenv_path/pyenv/bin/python3.7 ];then + rm -rf $python_src_path + Red_Error "ERROR: Make python env fielded." "ERROR: 编译堡塔云监控运行环境失败!" + fi + cd ~ + rm -rf $python_src_path + wget -O $pyenv_path/pyenv/bin/activate $download_Url/install/pyenv/activate.panel -t 5 -T 10 + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip-3.7.8.txt -t 5 -T 10 + ln -sf $pyenv_path/pyenv/bin/pip3.7 $pyenv_path/pyenv/bin/pip + ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btmpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btmpython + chmod -R 700 $pyenv_path/pyenv/bin + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools + $pyenv_path/pyenv/bin/pip install -U wheel==0.34.2 + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + $pyenv_path/pyenv/bin/pip install -U flask==2.2.0 + $pyenv_path/pyenv/bin/pip install flask_sock + $pyenv_path/pyenv/bin/pip install cachelib + $pyenv_path/pyenv/bin/pip install py7zr + $pyenv_path/pyenv/bin/pip install backports.lzma + source $pyenv_path/pyenv/bin/activate + + is_gevent=$($python_bin -m gevent 2>&1|grep -oE package) + is_psutil=$($python_bin -m psutil 2>&1|grep -oE package) + if [ "${is_gevent}" != "${is_psutil}" ];then + Red_Error "ERROR: psutil/gevent install failed!" + fi +} + +Install_Monitor(){ + version="1.0.2" + file_name="bt-monitor" + agent_src="bt-monitor.zip" + + cd ~ + version=`curl -sf ${Btapi_Url}/bt_monitor/latest_version |awk -F '\"version\"' '{print $2}'|awk -F ':' '{print $2}'|awk -F '"' '{print $2}'` + if [ -z $version ]; then + version="1.0.2" + fi + new_dir="/www/server/new_btmonitor" + if [ ! -d "$new_dir" ];then + mkdir -p $new_dir + fi + if [ ! -z "$action" ]; then + # 例如:sh update_btmonitor.sh /root/demo.zip + if [[ "$action" =~ "zip" ]]; then + version="指定版本" + unzip -o $action -d $new_dir/ + else + wget -O $agent_src ${Btapi_Url}/install/src/$file_name-$version.zip -t 5 -T 10 + unzip -o $agent_src -d $new_dir/ > /dev/null + fi + else + wget -O $agent_src ${Btapi_Url}/install/src/$file_name-$version.zip -t 5 -T 10 + unzip -o $agent_src -d $new_dir/ > /dev/null + fi + if [ ! -f $new_dir/BT-MONITOR ];then + ls -lh $agent_src + Red_Error "ERROR: Failed to download, please try install again!" "ERROR: 下载堡塔云监控失败,请尝试重新安装!" + fi + + rm -rf $new_dir/config + rm -rf $new_dir/data + rm -rf $new_dir/ssl + \cp -r $new_dir/* $monitor_path/ + rm -rf $agent_src + rm -rf $new_dir + chmod +x $monitor_path/BT-MONITOR + chmod +x $monitor_path/tools.py + wget -O /etc/init.d/btm ${download_Url}/init/btmonitor.init -t 5 -T 10 + chmod +x /etc/init.d/btm + ln -sf /etc/init.d/btm /usr/bin/btm + + if [ ! -f $monitor_path/data/user.json ]; then + echo "{\"uid\":1,\"username\":\"Administrator\",\"ip\":\"127.0.0.1\",\"server_id\":\"1\",\"access_key\":\"test\",\"secret_key\":\"123456\"}" > $monitor_path/data/user.json + fi + if [ -f $monitor_path/core/include/c_loader/PluginLoader.so ]; then + rm -f $monitor_path/core/include/c_loader/PluginLoader.so + fi +} + +Service_Add(){ + if [ $Command_Exists systemctl ]; then + wget -O /usr/lib/systemd/system/btm.service ${download_Url}/init/systemd/btmonitor.service -t 5 -T 10 + systemctl daemon-reload + systemctl enable btm + else + if [ "${PM}" == "yum" ] || [ "${PM}" == "dnf" ]; then + chkconfig --add btm + chkconfig --level 2345 btm on + elif [ "${PM}" == "apt-get" ]; then + update-rc.d btm defaults + fi + fi +} + +Start_Monitor(){ + /etc/init.d/btm start + if [ "$?" != "0" ]; then + echo "堡塔云监控启动失败!" + tail $monitor_path/logs/error.log + exit 1 + fi + echo "已成功升级到[$version]${Ver}"; +} + +GetSysInfo(){ + if [ -s "/etc/redhat-release" ];then + SYS_VERSION=$(cat /etc/redhat-release) + elif [ -s "/etc/issue" ]; then + SYS_VERSION=$(cat /etc/issue) + fi + SYS_INFO=$(uname -a) + SYS_BIT=$(getconf LONG_BIT) + MEM_TOTAL=$(free -m|grep Mem|awk '{print $2}') + CPU_INFO=$(getconf _NPROCESSORS_ONLN) + + echo -e ${SYS_VERSION} + echo -e Bit:${SYS_BIT} Mem:${MEM_TOTAL}M Core:${CPU_INFO} + echo -e ${SYS_INFO} + echo -e "请截图以上报错信息发帖至论坛www.bt.cn/bbs求助" +} + +Red_Error(){ + echo '================================================='; + printf '\033[1;31;40m%b\033[0m\n' "$@"; + GetSysInfo + exit 1; +} + +Install_RPM_Pack(){ + yumPacks="wget curl unzip gcc gcc-c++ make libcurl-devel openssl-devel xz-devel python-backports-lzma xz" + yum install -y ${yumPacks} + + for yumPack in ${yumPacks} + do + rpmPack=$(rpm -q ${yumPack}) + packCheck=$(echo ${rpmPack}|grep not) + if [ "${packCheck}" ]; then + yum install ${yumPack} -y + fi + done +} + +Install_Deb_Pack(){ + apt-get update -y + debPacks="wget curl unzip gcc g++ make libcurl4-openssl-dev libssl-dev liblzma-dev xz-utils libffi-dev libbz2-dev libsqlite3-dev libreadline-dev libgdbm-dev python3-bsddb3 tk-dev ncurses-dev uuid-dev"; + apt-get install -y $debPacks --force-yes + + for debPack in ${debPacks} + do + packCheck=$(dpkg -l ${debPack}) + if [ "$?" -ne "0" ] ;then + apt-get install -y $debPack + fi + done +} + +Get_Pack_Manager(){ + if [ -f "/usr/bin/yum" ] && [ -d "/etc/yum.repos.d" ]; then + PM="yum" + elif [ -f "/usr/bin/apt-get" ] && [ -f "/usr/bin/dpkg" ]; then + PM="apt-get" + fi +} + +Update_Monitor(){ + Get_Pack_Manager + get_node_url + if [ $PM = "yum" ]; then + Install_RPM_Pack + else + Install_Deb_Pack + fi + if [ "$action" == "update_py" ]; then + Install_Python_Lib + fi + Install_Monitor + Service_Add + Start_Monitor +} + +action=${1} +Update_Monitor \ No newline at end of file diff --git a/public/install/update_panel.sh b/public/install/update_panel.sh new file mode 100644 index 0000000..8bc494b --- /dev/null +++ b/public/install/update_panel.sh @@ -0,0 +1,367 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +pyenv_bin=/www/server/panel/pyenv/bin +rep_path=${pyenv_bin}:$PATH +if [ -d "$pyenv_bin" ];then + PATH=$rep_path +fi +export PATH +LANG=en_US.UTF-8 +setup_path=/www +is64bit=$(getconf LONG_BIT) +if [ "${is64bit}" != '64' ];then + echo "抱歉, 面板新版本不再支持32位系统, 无法进行升级"; + echo "退出、不做任何操作" + exit 1 +fi + +Btapi_Url='http://www.example.com' + + +up_plugin=0 + +download_file(){ + dst_file=$1 + tmp_file=/tmp/bt_tmp_file.temp + if [ -f $tmp_file ];then + rm -f $tmp_file + fi + wget -O ${tmp_file} $2 -T 20 + tmp_size=$(du -b $tmp_file|awk '{print $1}') + if [ $tmp_size -lt 10 ];then + echo "|-文件下载失败 $dst_file" + return + fi + + if [ -f $dst_file ];then + rm -f $dst_file + fi + + mv -f $tmp_file $dst_file + + if [ -f $tmp_file ];then + rm -f $tmp_file + fi +} + +Red_Error(){ + echo '================================================='; + printf '\033[1;31;40m%b\033[0m\n' "$1"; + exit 0; +} + +check_panel(){ + if [ ! -d /www/server/panel/BTPanel ];then + up_plugin=1 + fi +} + +select_node(){ + public_file=/www/server/panel/install/public.sh + if [ ! -f $public_file ];then + download_file $public_file $Btapi_Url/install/public.sh + fi + + . $public_file + + download_Url=$NODE_URL +} + +get_version(){ + version=$(curl -Ss --connect-timeout 5 -m 2 $Btapi_Url/api/panel/get_version) + if [ "$version" = '' ];then + version='7.9.9' + fi +} + +install_pack(){ + if [ -f /usr/bin/yum ];then + yum install libcurl-devel libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y + else + apt install libcurl4-openssl-dev net-tools swig build-essential libffi-dev zlib1g.dev libbz2-dev libssl-dev libncurses-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libdb++-dev libpcap-dev xz-utils -y + fi +} + +install_python(){ + curl -Ss --connect-timeout 3 -m 60 $download_Url/install/pip_select.sh|bash + pyenv_path="/www/server/panel" + python_bin=$pyenv_path/pyenv/bin/python + if [ -f $pyenv_path/pyenv/bin/python ];then + is_err=$($pyenv_path/pyenv/bin/python3.7 -V 2>&1|grep 'Could not find platform') + if [ "$is_err" = "" ];then + chmod -R 700 $pyenv_path/pyenv/bin + is_package=$($python_bin -m psutil 2>&1|grep package) + if [ "$is_package" = "" ];then + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip.txt -T 5 + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + fi + source $pyenv_path/pyenv/bin/activate + return + else + rm -rf $pyenv_path/pyenv + fi + fi + install_pack + py_version="3.7.9" + mkdir -p $pyenv_path + os_type='el' + os_version='7' + is_export_openssl=0 + Get_Versions + Centos6_Openssl + Other_Openssl + echo "OS: $os_type - $os_version" + is_aarch64=$(uname -a|grep aarch64) + if [ "$is_aarch64" != "" ];then + os_version="aarch64" + fi + up_plugin=1 + + if [ -f "/www/server/panel/pymake.pl" ];then + os_version="" + rm -f /www/server/panel/pymake.pl + fi + + if [ "${os_version}" != "" ];then + pyenv_file="/www/pyenv.tar.gz" + wget -O $pyenv_file $download_Url/install/pyenv/pyenv-${os_type}${os_version}-x${is64bit}.tar.gz -T 10 + tmp_size=$(du -b $pyenv_file|awk '{print $1}') + if [ $tmp_size -lt 703460 ];then + rm -f $pyenv_file + echo "ERROR: Download python env fielded." + else + echo "Install python env..." + tar zxvf $pyenv_file -C $pyenv_path/ &> /dev/null + chmod -R 700 $pyenv_path/pyenv/bin + if [ ! -f $pyenv_path/pyenv/bin/python ];then + rm -f $pyenv_file + Red_Error "ERROR: Install python env fielded." + fi + is_err=$($pyenv_path/pyenv/bin/python3.7 -V 2>&1|grep 'Could not find platform') + if [ "$is_err" = "" ];then + rm -f $pyenv_file + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btpython + sync_python_lib + source $pyenv_path/pyenv/bin/activate + return + else + rm -rf $pyenv_path/pyenv + fi + fi + fi + if [ -f /usr/local/openssl/lib/libssl.so ];then + export LDFLAGS="-L/usr/local/openssl/lib" + export CPPFLAGS="-I/usr/local/openssl/include" + export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig" + echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >> /etc/profile + source /etc/profile + fi + cd /www + python_src='/www/python_src.tar.xz' + python_src_path="/www/Python-${py_version}" + wget -O $python_src $download_Url/src/Python-${py_version}.tar.xz -T 5 + tmp_size=$(du -b $python_src|awk '{print $1}') + if [ $tmp_size -lt 10703460 ];then + rm -f $python_src + Red_Error "ERROR: Download python source code fielded." + fi + tar xvf $python_src + rm -f $python_src + cd $python_src_path + ./configure --prefix=$pyenv_path/pyenv + make -j$cpu_cpunt + make install + if [ ! -f $pyenv_path/pyenv/bin/python3.7 ];then + rm -rf $python_src_path + Red_Error "ERROR: Make python env fielded." + fi + cd ~ + rm -rf $python_src_path + wget -O $pyenv_path/pyenv/bin/activate $download_Url/install/pyenv/activate.panel -T 5 + wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip.txt -T 5 + ln -sf $pyenv_path/pyenv/bin/pip3.7 $pyenv_path/pyenv/bin/pip + ln -sf $pyenv_path/pyenv/bin/python3.7 $pyenv_path/pyenv/bin/python + ln -sf $pyenv_path/pyenv/bin/pip3.7 /usr/bin/btpip + ln -sf $pyenv_path/pyenv/bin/python3.7 /usr/bin/btpython + chmod -R 700 $pyenv_path/pyenv/bin + $pyenv_path/pyenv/bin/pip install -U pip + $pyenv_path/pyenv/bin/pip install -U setuptools + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + sync_python_lib + source $pyenv_path/pyenv/bin/activate +} + +sync_python_lib(){ + pip_list=$(pip list 2>/dev/null|grep -v Package|grep -v '\-\-\-\-\-\-'|awk '{print $1}'|xargs) + $pyenv_path/pyenv/bin/pip install -U pip setuptools + $pyenv_path/pyenv/bin/pip install $pip_list +} + +Other_Openssl(){ + openssl_version=$(openssl version|grep -Eo '[0-9]\.[0-9]\.[0-9]') + if [ "$openssl_version" = '1.0.1' ] || [ "$openssl_version" = '1.0.0' ];then + opensslVersion="1.0.2r" + if [ ! -f "/usr/local/openssl/lib/libssl.so" ];then + cd /www + openssl_src_file=/www/openssl.tar.gz + wget -O $openssl_src_file ${download_Url}/src/openssl-${opensslVersion}.tar.gz + tmp_size=$(du -b $openssl_src_file|awk '{print $1}') + if [ $tmp_size -lt 703460 ];then + rm -f $openssl_src_file + Red_Error "ERROR: Download openssl-1.0.2 source code fielded." + fi + tar -zxf $openssl_src_file + rm -f $openssl_src_file + cd openssl-${opensslVersion} + ./config --openssldir=/usr/local/openssl zlib-dynamic shared + make -j${cpuCore} + make install + echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/zopenssl.conf + ldconfig + cd .. + rm -rf openssl-${opensslVersion} + is_export_openssl=1 + cd ~ + fi + fi +} + +Insatll_Libressl(){ + openssl_version=$(openssl version|grep -Eo '[0-9]\.[0-9]\.[0-9]') + if [ "$openssl_version" = '1.0.1' ] || [ "$openssl_version" = '1.0.0' ];then + opensslVersion="3.0.2" + cd /www + openssl_src_file=/www/openssl.tar.gz + wget -O $openssl_src_file ${download_Url}/install/pyenv/libressl-${opensslVersion}.tar.gz + tmp_size=$(du -b $openssl_src_file|awk '{print $1}') + if [ $tmp_size -lt 703460 ];then + rm -f $openssl_src_file + Red_Error "ERROR: Download libressl-$opensslVersion source code fielded." + fi + tar -zxf $openssl_src_file + rm -f $openssl_src_file + cd libressl-${opensslVersion} + ./config –prefix=/usr/local/lib + make -j${cpuCore} + make install + ldconfig + ldconfig -v + cd .. + rm -rf libressl-${opensslVersion} + is_export_openssl=1 + cd ~ + fi +} + +Centos6_Openssl(){ + if [ "$os_type" != 'el' ];then + return + fi + if [ "$os_version" != '6' ];then + return + fi + echo 'Centos6 install openssl-1.0.2...' + openssl_rpm_file="/www/openssl.rpm" + wget -O $openssl_rpm_file $download_Url/rpm/centos6/${is64bit}/bt-openssl102.rpm -T 10 + tmp_size=$(du -b $openssl_rpm_file|awk '{print $1}') + if [ $tmp_size -lt 102400 ];then + rm -f $openssl_rpm_file + Red_Error "ERROR: Download python env fielded." + fi + rpm -ivh $openssl_rpm_file + rm -f $openssl_rpm_file + is_export_openssl=1 +} + +Get_Versions(){ + redhat_version_file="/etc/redhat-release" + deb_version_file="/etc/issue" + if [ -f $redhat_version_file ];then + os_type='el' + is_aliyunos=$(cat $redhat_version_file|grep Aliyun) + if [ "$is_aliyunos" != "" ];then + return + fi + os_version=$(cat $redhat_version_file|grep CentOS|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]') + if [ "${os_version}" = "5" ];then + os_version="" + fi + else + os_type='ubuntu' + os_version=$(cat $deb_version_file|grep Ubuntu|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '^[0-9]+') + if [ "${os_version}" = "" ];then + os_type='debian' + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '([0-9]+\.)+[0-9]+'|grep -Eo '[0-9]+') + if [ "${os_version}" = "" ];then + os_version=$(cat $deb_version_file|grep Debian|grep -Eo '[0-9]+') + fi + if [ "${os_version}" = "8" ];then + os_version="" + fi + if [ "${is64bit}" = '32' ];then + os_version="" + fi + fi + fi +} + +update_panel(){ + wget -T 5 -O /tmp/panel.zip $Btapi_Url/install/update/LinuxPanel-${version}.zip + dsize=$(du -b /tmp/panel.zip|awk '{print $1}') + if [ $dsize -lt 10240 ];then + echo "获取更新包失败,请稍后更新或联系宝塔运维" + exit; + fi + unzip -o /tmp/panel.zip -d $setup_path/server/ > /dev/null + rm -f /tmp/panel.zip + cd $setup_path/server/panel/ + check_bt=`cat /etc/init.d/bt|grep BT-Task` + if [ "${check_bt}" = "" ];then + rm -f /etc/init.d/bt + wget -O /etc/init.d/bt $download_Url/install/src/bt7.init -T 20 + chmod +x /etc/init.d/bt + fi + rm -f /www/server/panel/*.pyc + rm -f /www/server/panel/class/*.pyc + if [ ! -f $setup_path/server/panel/config/config.json ];then + wget -T 5 -O $setup_path/server/panel/config/config.json $download_Url/install/pyenv/config/config.json + wget -T 5 -O $setup_path/server/panel/config/dns_api.json $download_Url/install/pyenv/config/dns_api.json + fi + + chattr -i /etc/init.d/bt + chmod +x /etc/init.d/bt + # if [ $up_plugin = 1 ];then + # $pyenv_bin/python /www/server/panel/tools.py update_to6 + # fi +} + +update_start(){ + echo "=====================================" + echo "开始升级宝塔Linux面板,请稍候..." + echo "=====================================" +} + + +update_end(){ + echo "=====================================" + rm -f /dev/shm/bt_sql_tips.pl + kill $(ps aux|grep -E "task.py|main.py"|grep -v grep|awk '{print $2}') &>/dev/null + bash /www/server/panel/init.sh start + echo 'True' > /www/server/panel/data/restart.pl + pkill -9 gunicorn &>/dev/null & + echo "已成功升级到[$version]${Ver}"; +} +rm -rf /www/server/phpmyadmin/pma + +update_start +check_panel +select_node +install_python +get_version +update_panel +update_end + + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..1f53798 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / diff --git a/public/router.php b/public/router.php new file mode 100644 index 0000000..9b39a62 --- /dev/null +++ b/public/router.php @@ -0,0 +1,19 @@ + +// +---------------------------------------------------------------------- +// $Id$ + +if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { + return false; +} else { + $_SERVER["SCRIPT_FILENAME"] = __DIR__ . '/index.php'; + + require __DIR__ . "/index.php"; +} diff --git a/public/static/css/bootstrap-table.css b/public/static/css/bootstrap-table.css new file mode 100644 index 0000000..84fb323 --- /dev/null +++ b/public/static/css/bootstrap-table.css @@ -0,0 +1,6 @@ +.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==")}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ")}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"\2B05"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"\27A1"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}to{opacity:0}} +.table-bottom-border{border-bottom: 2px solid #ddd;} +@media screen and (max-width:767px){.fixed-table-body{border:1px solid #ddd}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{white-space:nowrap}.columns-right{display:none;}} +.bootstrap-table.bootstrap3 .fixed-table-pagination>.pagination .page-jump-to{display:inline-block}.bootstrap-table.bootstrap3 .fixed-table-pagination>.pagination .input-group-btn{width:auto}.bootstrap-table .fixed-table-pagination>.pagination .page-jump-to input{width:70px;margin-left:5px;text-align:center;float:left} +.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle} +.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle} diff --git a/public/static/css/download.css b/public/static/css/download.css new file mode 100644 index 0000000..f6fd84a --- /dev/null +++ b/public/static/css/download.css @@ -0,0 +1,716 @@ +.nav .new, +.wapnava .new, +.nava.bbs { + display: flex; + align-items: center; +} +.nava.bbs .icon { + width: 20px; + height: 20px; + margin-right: 6px; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAg1JREFUWEftlz9IG1Ecx7+/d63dOwqV6GhXm1i6mM1SyB+sYCfzZ5WCg1BxMF26OHQodGoucXATw6WC2eKYswiC6NAqdhBxFLpU7L1fueKFmF4uL3eSZMiDW+5+fz7v+37v/d4Rejyox/nRfwDPtjNj2o0cCarMb+DgIFm8ahenrkDEyM6B+TUIM+2cFL//AiFvxvRFL/s6QNjI7BAwrRhc2YykjNaSxd1WDg0KZFg5ageGDOT24vr7AYBfBU5AfK6sOFMIgP3Uh/8lIN43Y4UJ5eQAJkupEAtx5gYQLqffCIseWUOy8u1V8dKx8SxCBjYA/FCFEMBTBmbdACLldBVMUwB+gmjNjOU/23Zd2wXPK9nHfM0vJfCRiI/MWCHaVQBHFUcJM67/m7yHAnRELLO1RMF0W4Lb9a42F12zbXMRdgAAEOEtLHnoBsCaNg7mFQDDXjUSCEC1+AYAAwU8FLgC8wszUTj2sQ2DlSATfRUWb9WSerExkvI2ZKBkSWtpP7l+GgzlrrcSgFsHsw8eKcS8HxgBnNTiut1X0BqgnK4yiydgXtpL6KXmRGEjs0pAzg/Arc+m9vDBO+vPzRe7Kf13FKsEniyl7G7W8WBNzIORAnAB4u++ATrO3OAQMdIfAFp2XvlSIAiA7Rs2sgsE/mTfCcy4PnqnGwYNrurvLKNzVe+/XzPVmdyXXc8V+Av1tCwwyQQB+wAAAABJRU5ErkJggg=='); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + border-radius: 2px; + image-rendering: -webkit-optimize-contrast; + display: none; +} +.wapnava .new .icon, +.nav .new .icon { + width: 28px; + height: 28px; + margin-right: 4px; + image-rendering: -webkit-optimize-contrast; +} + + +.head_pc { + background-color: #fff; + position: relative; + z-index: 2; +} +canvas { + height: 100%; + width: 100%; + position: absolute; + top: 0; + z-index: 0; + opacity: 0.5; +} +.top-tips { + z-index: 1; +} +.wrap { + padding: 0; +} +.d1 { + background: linear-gradient(0deg, #fff, #d8efdb, #edf7ef); + padding-bottom: 60px; + position: relative; +} +.d1 .wrap { + padding-top: 60px; + position: relative; + z-index: 1; +} + +.d2 .wrap, +.d3 .wrap, +.d4 .wrap { + padding: 70px 0; +} + +.install-box { + position: relative; + top: 0; + display: flex; + align-items: center; + width: 24%; + padding: 30px 10px 16px 20px; + border-radius: 8px; + background-color: #fff; + box-shadow: 0 4px 8px 0 rgb(0 0 0 / 30%); + transition: all 0.3s; +} +.install-box:hover { + box-shadow: 0 6px 16px 0 rgb(0 0 0 / 50%); + top: -10px; +} +.install-box.linux, +.install-box.windows { + align-items: center; + width: 41.5%; +} + +.install-box + .install-box { + margin-left: 2%; +} + +.install-box::before { + content: ''; + position: absolute; + top: 20px; + right: 0; + bottom: 0; + width: 100%; + background-repeat: no-repeat; + background-position: right bottom; + background-size: auto 100%; + z-index: 10; + transition: all 0.25s; + opacity: 0.3; +} + +.install-box.linux::before { + background-image: url(../images/downico1_01.png); +} + +.install-box.windows::before { + background-image: url(../images/downico2_01.png); +} + +.install-box.cloud::before { + background-image: url(../images/downico3_01.png); +} + +.install-box.ssh::before { + background-image: url(../images/downico4_01.png); +} + +.install-box.app::before { + background-image: url(../images/downico5_01.png); +} + +.install-box .img { + position: relative; + flex: 0 0 44%; + z-index: 12; +} +.install-box .img img { + display: block; + width: 100%; +} + +.install-box .cont { + flex: 1; + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + margin-left: 5%; + padding-bottom: 12px; + z-index: 12; +} + +.install-box.linux .cont, +.install-box.windows .cont { + padding-bottom: 10px; +} + +.install-box .bottom { + display: flex; + margin: 0 auto; +} + +.install-box .title { + margin-bottom: 14px; + line-height: 1; + font-size: 20px; + font-weight: bold; + transition: color 0.25s; +} + +.install-box.linux .title, +.install-box.windows .title { + font-size: 28px; +} + +.install-box .desc { + margin-bottom: 14px; + font-size: 12px; + color: #777; + transition: color 0.25s; +} + +.install-box.linux .desc, +.install-box.windows .desc { + font-size: 14px; +} + +.install-box .mark { + margin-bottom: 20px; + height: 22px; + overflow: hidden; +} +.install-box .mark span { + margin-right: 10px; + line-height: 22px; + height: 22px; + padding: 0 6px; + font-size: 12px; + border-radius: 2px; + display: inline-block; +} +.install-box .mark span:nth-child(1) { + border: #6bdc6b 1px solid; + color: #fff; + background-color: #6bdc6b; +} +.install-box .mark span:nth-child(2) { + border: #ffa565 1px solid; + color: #fff; + background-color: #ffa565; +} +.install-box .mark span:nth-child(3) { + border: #65a7ff 1px solid; + color: #fff; + background-color: #65a7ff; +} +.install-box .mark span:last-child { + margin-right: 0; +} + +.install-box .btn { + display: flex; + align-items: center; + justify-content: center; + height: 34px; + padding: 0 16px; + background-image: linear-gradient(#54b891, #22a53d); + border-radius: 6px; + color: #fff; + font-size: 14px; + font-weight: 700; + line-height: 1; + border: none; +} + +.install-box .btn.default { + margin-left: 10px; + background: none; + border: 1px solid #777; + color: #777; +} +.install-box .btn:hover { + filter: brightness(120%); + -webkit-filter: brightness(120%); +} + +.install-box:hover { + background-image: linear-gradient(#e5f5e5, #fff); +} + + +.wrap-title { + display: flex; + flex-wrap: wrap; + align-items: center; + margin-bottom: 50px; +} + +.wrap-title::before { + content: ''; + display: block; + width: 6px; + height: 36px; + margin-right: 20px; + background-color: #20a53a; +} + +.wrap-title .text { + margin-right: 20px; + line-height: 36px; + font-size: 36px; + font-weight: bold; +} + +.wrap-title a { + font-size: 16px; +} + +.d2 .desc, +.d2 .tips, +.d4 .tips { + line-height: 30px; +} + +.d2 .desc { + margin-bottom: 16px; +} + +.d2 .tips, +.d4 .tips { + margin-top: 16px; + /* color: #20a53a; */ +} + +.install-code { + display: flex; + flex-wrap: wrap; + align-items: center; + line-height: 30px; +} +.install-code .osname { + display: inline-block; + width: 160px; + font-weight: 700; +} + +.install-code + .install-code { + margin-top: 16px; +} +.install-code .code-cont { + display: flex; + align-items: center; +} +.install-code .command { + position: relative; + display: flex; + margin-left: 12px; + margin-right: 15px; + padding: 7px 10px; + border-radius: 3px; + background-color: #20202f; + box-shadow: 0 0 5px #ececec; + font-size: 16px; + color: #fff; + font-family: SimSun; + width: 950px; +} + +.install-code .ico-copy { + display: block; + width: 26px; + height: 30px; + background: url(../images/ico-copy.png) no-repeat left center; + cursor: pointer; + width: 65px; + text-indent: 2.4em; + font-weight: bold; + color: #20a53a; +} + +.d4 .desc { + margin-bottom: 16px; + line-height: 30px; +} + +.bird { + width: 25px; + height: 5px; + display: inline-block; + position: absolute; + transform: skew(20deg, 20deg); + animation: wave 2.5s ease-in-out infinite; + z-index: 0; +} + +.bird:before, +.bird:after { + content: ''; + width: 100%; + height: 100%; + background-color: #1aa837; + position: absolute; + border-radius: 20%; + opacity: 0.1; +} + +.bird:before { + right: 49%; + transform-origin: right; + transform: rotate(-40deg); + animation: flap-left 0.75s ease-in-out infinite; +} + +.bird:after { + left: 49%; + transform-origin: left; + transform: rotate(40deg); + animation: flap-right 0.75s linear infinite; +} + +/* ��װ�ű� */ +.layui-layer .install-code { + display: flex; + flex-wrap: wrap; + line-height: 30px; +} +.layui-layer .install-code .osname { + display: inline-block; + width: 160px; + font-weight: 700; + margin: 20px auto; + font-size: 18px; +} + +.layui-layer .install-code + .install-code { + margin-top: 16px; +} +.layui-layer .install-code .code-cont { + display: flex; + align-items: center; +} +.layui-layer .install-code .command { + position: relative; + display: flex; + margin-right: 15px; + padding: 7px 10px; + border-radius: 3px; + background-color: #20202f; + box-shadow: 0 0 5px #ececec; + color: #fff; + font-family: SimSun; + width: 950px; +} + +.layui-layer .install-code .ico-copy { + display: block; + width: 26px; + height: 30px; + background: url(../images/ico-copy.png) no-repeat left center; + cursor: pointer; + width: 65px; + text-indent: 2.4em; + font-weight: bold; + color: #20a53a; +} +.layui-layer .install-code { + flex-direction: column; + align-items: flex-start; +} +.layui-layer .install-code .code-cont { + width: 100%; +} +.layui-layer .install-code .command { + flex: 1; + width: 0; + margin-left: 0; + line-height: 30px; + font-size: 12px; + word-break: break-all; +} + +@keyframes wave { + 40% { + transform: translateY(40px) skew(20deg, 20deg); + } + 50% { + transform: translateY(50px) skew(20deg, 20deg); + } + 60% { + transform: translateY(40px) skew(20deg, 20deg); + } + 100% { + transform: translateY(0) skew(20deg, 20deg); + } +} + +@keyframes flap-left { + 60% { + transform: rotate(10deg); + } + 75% { + transform: rotate(20deg); + } + 100% { + transform: rotate(-40deg); + } +} + +@keyframes flap-right { + 60% { + transform: rotate(-10deg); + } + 75% { + transform: rotate(-20deg); + } + 100% { + transform: rotate(40deg); + } +} + +@media screen and (max-width: 1440px) { + .wrap { + width: 97%; + } +} + +@media only screen and (max-width: 1299px) { + .d2 .wrap, + .d3 .wrap, + .d4 .wrap { + padding: 60px 0; + } + +} +@media only screen and (max-width: 980px) { + .install-code { + flex-direction: column; + align-items: flex-start; + } + .install-code .code-cont { + width: 100%; + } + .install-code .command { + flex: 1; + width: 0; + margin-left: 0; + line-height: 18px; + font-size: 12px; + word-break: break-all; + } + .d2 .desc, + .d2 .tips { + line-height: 24px; + } +} + +@media only screen and (max-width: 768px) { + .d2 .wrap, + .d3 .wrap, + .d4 .wrap { + padding: 40px 0; + } + .d1 .wrap { + padding-top: 40px; + } + .wrap-title { + margin-bottom: 20px; + } + .wrap-title::before { + width: 3px; + height: 20px; + margin-right: 10px; + } + .wrap-title .text { + font-size: 20px; + margin-right: 10px; + } + .wrap-title a { + font-size: 12px; + } +} + +@media screen and (max-width: 1440px) { + .wrap { + width: 97%; + } +} + +@media only screen and (max-width: 1299px) { + .d2 .wrap, + .d3 .wrap, + .d4 .wrap { + padding: 60px 0; + } + + .install-box { + padding: 24px 20px 10px; + padding-right: 0; + } + + .install-box.linux .title, + .install-box.windows .title, + .install-box .title { + margin-bottom: 10px; + font-size: 20px; + } + + .install-box .img { + flex: 0 0 40%; + } + + .install-box.linux .title, + .install-box.windows .title { + margin-bottom: 16px; + } + + .install-box .desc { + font-size: 13px; + } + .install-box .btn { + padding: 0 12px; + height: 30px; + border-radius: 8px; + font-size: 12px; + } +} +@media only screen and (max-width: 1200px) { + .install-box .title { + font-size: 16px; + } + .install-box .desc { + font-size: 12px; + } +} +@media only screen and (max-width: 980px) { + .install-list { + justify-content: flex-start; + flex-wrap: wrap; + } + .install-box, + .install-box.linux, + .install-box.windows { + width: 48%; + padding: 15px; + align-items: center; + } + .install-box:nth-child(2n) { + margin-left: 4%; + } + .install-box.app { + margin-top: 30px; + margin-left: 0; + } + .install-box.monitor { + margin-top: 30px; + } + .install-box.linux .title, + .install-box.windows .title, + .install-box .title { + font-size: 16px; + } + .install-box .btn { + height: 24px; + padding: 0 10px; + border-radius: 6px; + font-weight: normal; + } + .install-box .btn + .btn { + margin-left: 5px; + } + + .install-code { + flex-direction: column; + align-items: flex-start; + } + .install-code .code-cont { + width: 100%; + } + .install-code .command { + flex: 1; + width: 0; + margin-left: 0; + line-height: 18px; + font-size: 12px; + word-break: break-all; + } + .online-install-cont { + flex-direction: column; + } + .online-install-cont .form { + margin-bottom: 20px; + } + .online-install-cont .pr-70 { + padding-right: 0; + } + .online-install-cont .pl-10 { + padding-left: 0; + } + .online-install-cont .first-line { + flex-wrap: wrap; + } + .online-install-cont .server-line { + width: 100%; + flex: none; + } + .online-install-cont .port-line { + flex: none; + margin-top: 20px; + width: 100%; + } + + .d2 .desc, + .d2 .tips { + line-height: 24px; + } +} + +@media only screen and (max-width: 768px) { + .d2 .wrap, + .d3 .wrap, + .d4 .wrap { + padding: 40px 0; + } + .d1 .wrap { + padding-top: 40px; + } + .install-box { + flex-wrap: wrap; + } + .install-box .img, + .install-box .cont { + flex: 0 0 100%; + } + .install-box .cont { + margin-top: 10px; + margin-left: 0; + padding: 0; + } + .install-box .title, + .install-box.linux .title, + .install-box.windows .title { + margin-bottom: 10px; + } + .install-box .desc { + margin-bottom: 10px; + } + + .wrap-title { + margin-bottom: 20px; + } + .wrap-title::before { + width: 3px; + height: 20px; + margin-right: 10px; + } + .wrap-title .text { + font-size: 20px; + margin-right: 10px; + } + .wrap-title a { + font-size: 12px; + } +} diff --git a/public/static/css/sanren.css b/public/static/css/sanren.css new file mode 100644 index 0000000..13eac36 --- /dev/null +++ b/public/static/css/sanren.css @@ -0,0 +1,1057 @@ +@charset "utf-8"; +/*sanren*/ + *{ + margin: 0; + padding: 0; + border: 0; + outline: none; + font-size-adjust: none; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + -ms-text-size-adjust: none; + border-radius: 0px; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + transform: none; + -webkit-transform: none; + -moz-transform: none; + transition: none; + -webkit-transition: none; + -moz-transition: none; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; +} +body { + font-family: Helvetica,Arial,"Hiragino Sans GB","Microsoft Yahei","微软雅黑",STHeiti,"华文细黑",sans-serif; + padding: 0; + margin: 0; + font-size: 14px; + color: #333; + background: #fff; + overflow-x: hidden; +} +body, +div, +dl, +dt, +dd, +ul, +ol, +li, +h1, +h2, +h3, +h4, +h5, +h6, +pre, +code, +form, +fieldset, +legend, +input, +textarea, +p, +blockquote, +th, +td,a { + margin: 0; + padding: 0; +} +input,button,textarea{outline:none; font-family: "microsoft yahei";-webkit-appearance:none;} +select {outline:none;font-family: "microsoft yahei";} +ul, +li { + list-style: none; + padding: 0; + margin: 0; +} +input[type="password"]::-ms-reveal{ + display:none +} +a { + text-decoration: none; + color: #333; + transition: all 0.25s; +} +a.link { + color: #20a53a; +} +/*a:hover{ + color: inherit; + text-decoration: inherit; +}*/ +img { + border: none; + display: inline-block; + image-rendering: -moz-crisp-edges; + image-rendering: -o-crisp-edges; + image-rendering: -webkit-optimize-contrast; + image-rendering: crisp-edges; + -ms-interpolation-mode: nearest-neighbor; + -webkit-font-smooting: antialiased; +} +em,i{ + font-style: normal; + display: inline-block; +} +.dx{ + text-transform: uppercase; +} +.bgsz{ + background-size: cover !important; +} +.ovhd{ + overflow: hidden; +} +.posrelative{ + position: relative; +} +.clear { + height: 0; + clear: both; + zoom: 1; +} +.clearfix:before, .clearfix:after { + content:""; + display:table +} +.clearfix:after { + clear:both; +} +.fl{ + float: left; +} +.fr{ + float: right; +} +.w-full { + width: 100%; +} +.pl-10{ + padding-left: 10px; +} +.pr-70 { + padding-right: 70px; +} +.mt_5{ + margin-top: 5px; +} +.mt_10{ + margin-top: 10px; +} +.mt_15{ + margin-top: 15px; +} +.mt_20{ + margin-top: 20px; +} +.mt_25{ + margin-top: 25px; +} +.mt_30{ + margin-top: 30px; +} +.mt_35{ + margin-top: 35px; +} +.mt_40{ + margin-top: 40px; +} +.mt_50{ + margin-top: 50px; +} +.mt_60{ + margin-top: 60px; +} +.mt_70{ + margin-top: 70px; +} +.mt_80{ + margin-top: 80px; +} +.mt_100{ + margin-top: 100px; +} +.box_tab{ + display: table; + width: 100%; + height: 100%; +} +.tab_cell{ + display: table-cell; + vertical-align: middle; +} +.bgwhite{ + background: #FFFFFF; +} +.padding30{ + padding: 30px; +} +.padding20{ + padding: 20px; +} +.padding15{ + padding: 15px; +} +.padding10{ + padding: 10px; +} +.padding5{ + padding: 5px; +} +.lrpadd20{ + padding: 0 20px; +} +.tbpadd20{ + padding: 20px 0; +} +.bordetrbl{ + border: 1px solid #e6e6e6; +} +.borderright{ + border-right: 1px solid #e6e6e6; +} +.borderleft{ + border-left: 1px solid #e6e6e6; +} +.bordertop{ + border-top: 1px solid #e6e6e6; +} +.borderbot{ + border-bottom: 1px solid #e6e6e6; +} +.wrap{ + width: 1400px; + margin: 0 auto; +} +.wrap_1400{ + width: 1400px; + margin: 0 auto; +} +.wrap_1200{ + width: 1200px; + margin: 0 auto; +} +.hvimg{ + display: block; + width: 100%; + height: 100%; + background-size: cover !important; + transition: 1s; +} +.hvimghover:hover .hvimg{ + transform: scale(1.1); +} +.hvimghover img.img{ + transition: 1s; +} +.hvimghover:hover img.img{ + transform: scale(1.1); +} +.marl20{ + margin-left: 20px; +} +.marr20{ + margin-right: 20px; +} +.block{ + display: block; +} +.posrelative{ + position: relative; +} +.hoverop:hover{ + opacity: .85; +} +.distab{ + display: table; +} +.tbcell{ + display: table-cell; + width: 100%; + height: 100%; + vertical-align: middle; + text-align: center; +} +.tbcellimg{ + display: block; + max-width: 100%; + max-height: 100%; + margin: 0 auto; +} +.bggray{ + background: #f8f8f8; +} +.bgwhite{ + background: #fff; +} +.colorred{ + color: #ff5d5d; +} +.colorblue{ + color: #17A7DC; +} +.colorgreen{ + color: #55d679; +} +.coloryellow{ + color: #e3c103; +} +.color999{ + color: #999; +} +.color666{ + color: #666; +} +.color333{ + color: #333; +} +.color000{ + color: #000; +} +.colorfff{ + color: #fff; +} +.textright, +.text-right{ + text-align: right; +} +.textcenter{ + text-align: center; +} +.disblock{ + display: block; +} +.middle{ + vertical-align: middle; + margin-top: -3px; +} +.fullwidth{ + width: 100%; +} +.datatable th{ + padding: 10px; + border-bottom: 1px solid #ddd; + background: #F5F5F5; +} +.datatable td{ + padding: 10px; + border-bottom: 1px dashed #ddd; +} +.datatable td.tdl{ + color: #999; +} +.datatables td{ + text-align: center; + line-height: 24px; + border-bottom: none; +} +.datatable td img{ + display: inline-block; + vertical-align: middle; +} +.datatable td.lvtd{ + border-bottom: 1px solid #ddd; +} +.datatablel th{ + text-align: left; +} +.datatablel td{ + text-align: left; +} +.tablecell{ + display: table-cell; + vertical-align: middle; + background: #F5F5F5; + overflow: hidden; + text-align: center; +} +.tbcell_img{ + display: block; + margin: 0 auto; + max-width: 100%; + max-height: 100%; +} +.font18{ + font-size: 18px; +} +.font16{ + font-size: 16px; +} +.font14{ + font-size: 14px; +} +.hidden, +.disnone{ + display: none; +} +.cl9{ + color: #999; +} +.cl8{ + color: #888; +} +.cl6{ + color: #666; +} +.tab_content li.tab_content_li{ + display: none; +} +.tab_content li.active{ + display: block; +} +.tab_content1 li.tab_content_li{ + display: none; +} +.tab_content1 li.active{ + display: block; +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} + +.btn.focus, .btn:focus, .btn:hover { + color: #333; + text-decoration: none; +} + +.btn-default { + color: #555; + background-color: #fff; + border-color: #ccc; +} + +.btn-default:hover { + color: #fff; + background-color: #10952a; + border-color: #398439; +} + +.btn-default.focus, .btn-default:focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} + +.btn-success { + color: #fff; + background-color: #20a53a; + border-color: #20a53a; +} + +.btn-success:focus, .btn-success.focus, .btn-success:hover { + color: #fff; + background-color: #10952a; + border-color: #398439; +} + +/*swiper-container*/ +.swiper-container{margin:0 auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:100%;height:100%;position:relative;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;-o-transition-property:transform;transition-property:transform;transition-property:transform,-webkit-transform}.swiper-slide-invisible-blank{visibility:hidden}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-transition-property:height,-webkit-transform;transition-property:height,-webkit-transform;-o-transition-property:transform,height;transition-property:transform,height;transition-property:transform,height,-webkit-transform}.swiper-container-3d{-webkit-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-wp8-horizontal,.swiper-container-wp8-horizontal>.swiper-wrapper{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-container-wp8-vertical,.swiper-container-wp8-vertical>.swiper-wrapper{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s opacity;-o-transition:.3s opacity;transition:.3s opacity;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{-webkit-transform:scale(.66);-ms-transform:scale(.66);transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{-webkit-transform:scale(.66);-ms-transform:scale(.66);transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{-webkit-transform:scale(.33);-ms-transform:scale(.33);transform:scale(.33)}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:6px 0;display:block}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:8px}.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;-webkit-transition:.2s top,.2s -webkit-transform;transition:.2s top,.2s -webkit-transform;-o-transition:.2s transform,.2s top;transition:.2s transform,.2s top;transition:.2s transform,.2s top,.2s -webkit-transform}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 4px}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);white-space:nowrap}.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:.2s left,.2s -webkit-transform;transition:.2s left,.2s -webkit-transform;-o-transition:.2s transform,.2s left;transition:.2s transform,.2s left;transition:.2s transform,.2s left,.2s -webkit-transform}.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{-webkit-transition:.2s right,.2s -webkit-transform;transition:.2s right,.2s -webkit-transform;-o-transition:.2s transform,.2s right;transition:.2s transform,.2s right;transition:.2s transform,.2s right,.2s -webkit-transform}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-ms-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{-webkit-transform-origin:right top;-ms-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progressbar,.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:4px;left:0;top:0}.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-container-vertical>.swiper-pagination-progressbar{width:4px;height:100%;left:0;top:0}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-progressbar.swiper-pagination-white{background:rgba(255,255,255,.25)}.swiper-pagination-progressbar.swiper-pagination-white .swiper-pagination-progressbar-fill{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-pagination-progressbar.swiper-pagination-black{background:rgba(0,0,0,.25)}.swiper-pagination-progressbar.swiper-pagination-black .swiper-pagination-progressbar-fill{background:#000}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:'';width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-flip{overflow:visible}.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-coverflow .swiper-wrapper{-ms-perspective:1200px} + +.w100{ + width: 100%; +} +.h100{ + height: 100%; +} +.w48{ + width: 48%; +} +.w49{ + width: 49%; +} +.w50{ + width: 50%; +} +.w32{ + width: 32%; +} +.ml5{ + margin-left: 5px; +} +.mr5{ + margin-right: 5px; +} +.ml10{ + margin-left: 10px; +} +.mr10{ + margin-right: 10px; +} +.pt0{ + padding-top: 0 !important; +} +.pb0{ + padding-bottom: 0 !important; +} +.pl0{ + padding-left: 0 !important; +} +.pr0{ + padding-right: 0 !important; +} +.disflex{ + display: flex; +} +.flex1{ + flex: 0; + flex-grow: 1; +} +.flex-1{ + flex:1; +} +.flex-2{ + flex:2; +} +.flex-3{ + flex:3; +} +.flex-4{ + flex:4; +} +.flex-5{ + flex:5; +} +.flex_column{ + flex-direction: column; +} +.flex_center{ + align-items: center; +} +.flex_lrcenter{ + justify-content: center; +} +.flex_lmr{ + justify-content: space-between; +} +.flex_wrap{ + flex-wrap: wrap; +} +.bdrls{ + border-radius: 4px; +} +.line_1{ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; +} +.line_2{ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; +} +.line_3{ + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + overflow: hidden; +} + +/*public*/ +.head_pc{ + display: block; + height: 90px; +} +.head_wap{ + display: none; +} +.pc_demo{ + display: block; +} +.wap_demo{ + display: none; +} +.swiper-container-bn{ + width: 100%; +} +.swiper-container-bn .bnimg{ + display: block; + width: 100%; + height: 581px; + display: block; + background-size: cover !important; + background-repeat:no-repeat !important; + background-position:center !important; +} +.swiper-container-bn .swiper-pagination-bullet{ + background: rgba(255,255,255,.7); + opacity: 1; + margin: 0 5px !important; + width: 12px; + height: 12px; + border-radius: 100%; + margin: 0 10px !important; + +} +.swiper-container-bn .swiper-pagination-bullet-active{ + background: #fff; +} +.swiper-container-bn .swiper-pagination { + bottom: 4%; +} +.text12{ + font-size: 12px; + line-height: 22px; +} +.text14{ + font-size: 14px; + line-height: 28px; +} +.text16{ + font-size: 16px; + line-height: 30px; +} +.text18{ + font-size: 18px; + line-height: 32px; +} +.text20{ + font-size: 20px; + line-height: 35px; +} +.ftwt_none{ + font-weight: normal; +} +.titleh1{ + font-size: 32px; +} +.titleh2{ + font-size: 28px; +} +.titleh3{ + font-size: 24px; +} +.tr25s{ + transition: .25s; +} +.en_br{ + word-break:break-all; +} +.hide { + display: none; +} +.btlink { + color: #20A53A; +} + +.layui-layer-shade { + z-index: 998 !important; +} + +@media only screen and (max-width:1399px) { + .wrap_1400,.wrap{ + width: 100%; + padding: 0 20px; + } + .titleh1{ + font-size: 28px; + } + .titleh2{ + font-size: 24px; + } + .titleh3{ + font-size: 20px; + } +} +@media only screen and (min-width:768px) and (max-width:1290px) { + .wrap,.wrap_1200{ + width: 100%; + padding: 0 20px; + } + .text14{ + font-size: 14px; + line-height: 28px; + } + .text16,.text18,.text20{ + font-size: 15px; + line-height: 30px; + } + .ftwt_none{ + font-weight: normal; + } + .titleh1{ + font-size: 20px; + } + .titleh2{ + font-size: 18px; + } + .titleh3{ + font-size: 16px; + } +} +@media only screen and (max-width:950px) { + .flex_wap_wrap{ + flex-wrap: wrap; + } + .waplogin { + font-size: 15px; + } + .waplogin img{ + vertical-align: middle; + margin-top: -3px; + margin-right: 5px; + } + .whead{ + height: 60px; + background: #fff; + position: fixed; + left: 0; + top: 0; + width: 100%; + z-index: 9999; + box-shadow: 0 0 15px rgba(0,0,0,.15); + display: flex; + align-items: center; + padding: 0 15px; + } + .waphd_height{ + width: 100%; + height: 60px; + } + .wlogo{ + display: inline-block; + } + .wlogo img{ + display: block; + border: 0; + height: 36px; + } + .waphdlg{ + display: inline-block; + } + .waphdlg img{ + display: block; + height: 30px; + } + .whead i{ + display: block; + width: 60px; + height: 60px; + background: url(../images/navicon.png) no-repeat center; + background-size: 40%; + color: #fff; + text-align: center; + line-height: 60px; + font-size: 18px; + position: absolute; + right: 0; + top: 0; + z-index: 99999999; + } + .whead i img{ + vertical-align: middle; + margin-top: -3px; + display: none; + } + .wapnav{ + width: 240px; + height: 100%; + position: fixed; + right: 0; + top: 0; + background: #fff; + z-index: 9999; + margin-right: -240px; + transition: .5s; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + } + .wapnava { + padding: 0 0 15px 0; + } + .wapnavtop{ + color: #fff; + height: 60px; + line-height: 60px; + padding: 0 15px; + border-bottom: 1px solid #eee; + display: flex; + align-items: center; + } + .wapnavtop i{ + display: block; + width: 60px; + height: 60px; + background: none; + color: #222; + text-align: center; + line-height: 50px; + font-size: 18px; + position: absolute; + background: url(../images/close.png) no-repeat center; + background-size: 30%; + right: 0; + top: 0; + z-index: 99999999; + } + .wapprda i, .wapprda1 i { + display: block; + position: absolute; + right: 15px; + top: 0; + height: 44px; + line-height: 44px; + transition: .25s; + } + .wapprda_active i,.wapprda1_active i{ + transform:rotate(90deg); + } + .wapnavtop i img{ + vertical-align: middle; + margin-top: -3px; + } + .wapnava p{ + display: block; + } + .wapnava span{ + width: 100%; + } + .wapnava a.wapprda{ + display: block; + height: 50px; + line-height: 48px; + padding: 0 25px; + color: #666; + width: 100%; + border-bottom: 1px solid #eee; + font-size: 15px; + } + .wpheadhide a{ + display: block; + height: 48px; + line-height: 46px; + padding: 0 25px; + color: #444; + width: 100%; + border-bottom: 1px solid #eee; + } + .wapnava1{ + background: url(../images/navabg_06.png) no-repeat center; + color: #E60012; + text-align: center; + border-bottom: 0 !important; + margin-top: 10px; + margin-bottom: 10px; + } + .wapnavp1{ + text-align: center; + font-weight: bold; + } + .head_wap{ + display: block; + } + .top-tips, + .head_pc{ + display: none; + } + .waphide{ + display: none; + } + .wapprda,.wapprda1{ + position: relative; + } + .wapprda i,.wapprda1 i{ + display: block; + position: absolute; + right: 15px; + top: 0; + } + .wapprda i img,.wapprda1 i img{ + height: 10px; + } + .wpheadhide{ + display: none; + } + .wpheadhide em{ + display: block; + } + .wpheadhide a{ + font-size: 14px; + padding-left: 30px; + color: #666; + } + .wpheadhide1{ + display: none; + } + .wpheadhide1 a{ + padding-left: 50px !important; + background: #fff !important; + color: #999; + } + .waphides{ + display: none; + } + .waphides a{ + font-size: 12px; + color: #666; + display: block; + height: 37px; + line-height: 37px; + border-bottom: 1px solid #aaa; + padding: 0 30px; + } + .wapclicka { + background: url(../images/sj.jpg) no-repeat right center; + } + .swiper-container-bn .swiper-button-next-bn,.swiper-container-bn .swiper-button-prev-bn{ + display: none; + } + .wpnvbg{ + width: 100%; + height: 100%; + position: fixed; + left: 0; + top: 0; + z-index: 9999; + background: rgba(0,0,0,.7); + opacity: 0; + visibility: hidden; + transition: .25s; + } + .wpnvbg_active{ + opacity: 1; + visibility: inherit; + } + .wapnav_active{ + right: 0; + top: 0; + height: 100%; + margin-right: 0; + overflow-x: hidden; + overflow-y: auto; + } + .waplga{ + padding: 0 15px; + } + .waplga a{ + display: inline-block; + width: 47%; + height: 34px; + background: #fff; + color: #20A53A; + line-height: 32px; + font-size: 13px; + border: 1px solid #20A53A; + } + .waplga a.active{ + background: #20A53A; + color: #fff; + } + .waplga a.waplga_ac{ + display: block; + margin: 0 auto; + float: none; + background: #fff; + color: #20A53A; + } + .wrap,.wrap_1400,.wrap_1200{ + width: 100%; + padding: 0 15px; + } + .swiper-container-bn .bnimg{ + height: 200px; + } + .head_wap_wt .whead{ + background: rgba(0,0,0,.7); + } + .head_wap_wt .waphd_height{ + display: none; + } + .head_wap_wt .whead i,.head_wap_wt .wapnavtop i{ + filter: grayscale(100%) brightness(500%); + } + .head_wap_wt .wapnav{ + background: rgba(0,0,0,.5); + } + .head_wap_wt .wpheadhide1 a{ + background: none !important; + } + .head_wap_wt .wapnava a.wapprda,.head_wap_wt .wpheadhide a,.head_wap_wt .wapnavtop{ + color: #fff; + border-bottom: 1px solid rgba(255,255,255,.2); + } + .head_wap_wt .wapprda i img, .head_wap_wt .wapprda1 i img{ + filter: grayscale(100%) brightness(500%); + } + .text14{ + font-size: 14px; + line-height: 27px; + } + .text16,.text18,.text20{ + font-size: 14px; + line-height: 27px; + } + .ftwt_none{ + font-weight: normal; + } +} +@media only screen and (max-width:768px) { + .swiper-container-bn .swiper-pagination-bullet{ + width: 8px; + height: 8px; + margin: 0 7px !important; + } + .flex_lmr_wap{ + justify-content: space-between; + width: 100%; + } + .wap_w100{ + width: 100% !important; + } + .wap_disblock{ + display: block !important; + } + .wap_w48{ + width: 48% !important; + } + .wap_mr0{ + margin-right: 0 !important; + } + .wap_ml0{ + margin-left: 0 !important; + } + .wap_mt15{ + margin-top: 15px !important; + } + .wap_mb15{ + margin-bottom: 15px !important; + } + .titleh1{ + font-size: 18px; + } + .titleh2{ + font-size: 17px; + } + .titleh3{ + font-size: 16px; + } + .pc_demo{ + display: none; + } + .wap_demo{ + display: block; + } +} \ No newline at end of file diff --git a/public/static/css/style.css b/public/static/css/style.css new file mode 100644 index 0000000..28b0c23 --- /dev/null +++ b/public/static/css/style.css @@ -0,0 +1,1491 @@ +@charset "utf-8"; +img { + image-rendering: -webkit-optimize-contrast; +} + + +.head { + height: 90px; + position: fixed; + left: 0; + top: 40px; + z-index: 99; + width: 100%; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); +} +.head-box { + transition: 0.25s; +} +.head_active .head-box, +.head_list .head-box { + background: #fff; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); +} +.logo { + display: inline-block; + height: 56px; + margin-right: 75px; +} +.nav > span { + position: relative; + display: flex; + align-items: center; + height: 90px; + margin-right: 50px; + box-sizing: border-box; +} +.nav span:last-child { + margin-right: 0; +} +.nava { + display: block; + line-height: 48px; + border-bottom: 2px solid rgba(0, 0, 0, 0); + font-size: 18px; +} +.nava.prod::after { + content: ''; + position: relative; + top: -2px; + display: inline-block; + width: 0; + height: 0; + margin-left: 10px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #333; + transition: all 0.25s; +} +.nav span.active .nava { + color: #20a53a; + border-bottom: 2px solid #20a53a; + font-weight: 600; +} +.nav span.active .nava.prod::after, +.nava.prod:hover::after { + border-top-color: #20a53a; +} +.nav span:hover .nava { + color: #20a53a; +} +.navhide { + z-index: 9; + position: absolute; + left: 50%; + top: 100%; + margin-top: 20px; + background: #fff; + padding: 0; + overflow: hidden; + width: 170px; + margin-left: -85px; + opacity: 0; + visibility: hidden; + transition: 0.25s; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + /* padding: 5px; */ +} +.nav span:hover .navhide { + opacity: 1; + visibility: inherit; + margin-top: 0; + padding: 8px 0; +} +.navhide a { + display: flex; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; + line-height: 38px; + text-align: center; + padding: 0 10px; + color: #666; + font-size: 14px; +} +.navhide a.active { + background-color: #efefef; + color: #20a53a; +} +.navhide a:hover { + color: #20a53a; +} +.hdr a { + line-height: 38px; + width: 120px; + font-size: 18px; + font-weight: bold; + color: #20a53a; + display: inline-block; + border: 1px solid #20a53a; + border-radius: 4px; + margin-left: 12px; + text-align: center; +} +.hdr a.active, +.hdr a:hover { + background: #20a53a; + color: #fff; +} +.hdr a.user { + width: 140px; +} +.hdr a.user .icon { + display: inline-block; + width: 14px; + height: 14px; + margin-right: 4px; + background: url(../images/account.png) no-repeat; + background-position: 0 0; + vertical-align: middle; +} + +.i1 { + background: url(../images/11bg_01.jpg) no-repeat top center #fff; + background-size: 100%; + padding: 80px 0 125px; +} +.i1, +.i2 { + position: relative; + z-index: 10; +} +.i1.i1-wave { + background: none; +} +.i1t h1 { + font-weight: bold; + font-size: 56px; + color: #162016; +} +.i1ta a { + line-height: 65px; + /* background: url(../images/i1abg_03.png) repeat; */ + background: linear-gradient(#36bd89, #20a53a); + color: #fff; + display: inline-block; + border-radius: 20px; + width: 240px; + box-shadow: 0 6px 10px rgba(0, 110, 21, 0.3); + font-size: 22px; +} +.i1ta a:hover { + -webkit-filter: brightness(130%); +} +.i1ta a + a { + margin-left: 50px; +} +.i1timg img { + max-width: 90%; + image-rendering: -webkit-optimize-contrast; +} +.i1ba { + height: 120px; + border-radius: 8px; + background: #f7f7f7; +} +.i1ba img { + max-width: 90%; + max-height: 70%; +} +.swiper-pagination-i1 { + position: relative; + margin-top: 22px; + text-align: center; +} +.swiper-pagination-i1 .swiper-pagination-bullet { + width: 3px; + height: 3px; + background: #cacaca; + margin: 0 5px; + opacity: 1; + border: 3px solid #fff; + padding: 3px; + transition: 0.25s; +} +.swiper-pagination-i1 .swiper-pagination-bullet-active { + border: 3px solid #20a53a; + background: #fff; +} +.i2a { + margin-top: 0; + padding-top: 100px; +} +.i2a:first-child { + margin-top: -100px; + padding-top: 100px; +} +.i2a:nth-child(even) { + flex-flow: row-reverse; +} +.i2atxt { + width: 30%; + padding-bottom: 50px; +} +.i2aimg { + width: 67%; +} +.i2atxt img { + width: 36%; +} +.i2atxt h1 { + line-height: 45px; + margin-top: -50px; +} +.ititle { + font-size: 38px; +} +.i2aline { + background: #20a53a; + height: 3px; + width: 45px; + display: block; + margin: 25px 0; +} +.i3ocean { + height: 200px; + width: 100%; + position: relative; + bottom: -50px; + z-index: 0; + overflow: hidden; +} + +.i3wave { + background: url(../images/wave.svg) repeat-x; + position: absolute; + top: 0px; + width: 6400px; + height: 198px; + -webkit-animation: i3wave 7s cubic-bezier(0.36, 0.45, 0.63, 0.53) infinite; + animation: i3wave 7s cubic-bezier(0.36, 0.45, 0.63, 0.53) infinite; + transform: translate3d(0, 0, 0); + opacity: 0.7; +} + +.i3wave:nth-of-type(2) { + top: 20px; + -webkit-animation: i3wave 7s cubic-bezier(0.36, 0.45, 0.63, 0.53) -0.125s infinite, swell 7s ease -1.25s infinite; + animation: i3wave 7s cubic-bezier(0.36, 0.45, 0.63, 0.53) -0.125s infinite, swell 7s ease -1.25s infinite; + opacity: 0.7; +} + +@-webkit-keyframes i3wave { + 0% { + margin-left: 0; + } + + 100% { + margin-left: -1600px; + } +} + +@keyframes i3wave { + 0% { + margin-left: 0; + } + + 100% { + margin-left: -1600px; + } +} + +@-webkit-keyframes swell { + 0%, + 100% { + transform: translate3d(0, -25px, 0); + } + + 50% { + transform: translate3d(0, 5px, 0); + } +} + +@keyframes swell { + 0%, + 100% { + transform: translate3d(0, -25px, 0); + } + + 50% { + transform: translate3d(0, 5px, 0); + } +} +.i3 { + background: #edf6ef; + padding: 0 0 140px 0; + position: relative; +} +.i31a { + width: 23%; +} +.textcolor { + color: #20a53a; +} +.md { + padding: 80px 0; +} +.i4t { + padding: 15px; + background: #fff; + color: #fff; + position: relative; + margin-top: -90px; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.07); +} +.i4tw { + background: #20a53a; + padding: 30px 5%; + border-radius: 7px; +} +.i4tatop h1 { + font-size: 60px; + padding-right: 20px; + margin-right: 15px; + line-height: 60px; +} +.i4tatop h1 span { + font-size: 16px; + line-height: 30px; + position: absolute; + right: 0; + top: 0; +} +.i4tatop h1 span.unit { + right: -5px; + font-size: 18px; +} +.i4taline { + width: 1px; + height: 55px; + background: rgba(0, 0, 0, 0.3); +} +.i4ba { + height: 130px; + margin: 10px; + border-radius: 8px; + /* filter: grayscale(100%); */ + filter: gray; +} +.i4ba.honor { + height: 220px; +} +.i4ba:hover { + background: #fff; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + filter: inherit; +} +.i4ba img { + max-width: 85%; + max-height: 85%; +} +.swiper-button-next-i4, +.swiper-button-prev-i4, +.swiper-button-next-i5, +.swiper-button-prev-i5 { + width: 42px; + height: 42px; + display: flex; + justify-content: center; + align-items: center; + margin-top: -21px; + font-size: 42px; + color: #999; + cursor: pointer; + background: none; +} +.swiper-button-next-i4:hover, +.swiper-button-prev-i4:hover, +.swiper-button-next-i5:hover, +.swiper-button-prev-i5:hover { + color: #20a53a; +} +.swiper-button-next-i4, +.swiper-button-next-i5 { + right: -50px; +} +.swiper-button-prev-i4, +.swiper-button-prev-i5 { + left: -50px; +} + +.flex { + display: flex; +} +.justify-center { + justify-content: center; +} +.overview-iframe { + background-image: url(../images/pc_bg.png); + background-repeat: no-repeat; + height: 850px; + position: relative; + background-repeat: no-repeat; + height: 850px; + width: 1210px; + margin: 0 auto; +} +.overview-button-group .button { + height: 60px; + line-height: 58px; + font-size: 22px; + text-align: center; + font-weight: 700; + border-radius: 10px; + margin: 0 20px; + width: 240px; +} + +.overview-iframe iframe { + position: absolute; + left: 15px; + top: 61px; + width: 1170px; + height: 766px; + margin-top: -12px; + margin-left: 4px; + border: 1px solid #bbb; +} + +.button { + border: #20a53a 1px solid; + border-radius: 4px; + cursor: pointer; + background-color: #20a53a; + color: #fff; + text-decoration: none; +} + +.foot { + background: url(../images/footbg_02.jpg) no-repeat bottom center #e7f0e9; + padding: 80px 0 30px 0; +} +.foot a:hover { + color: #20a53a; +} +.fta p, +.fta p a { + color: #666; +} +.fb2, +.fb2 a { + color: #777; +} +.fb { + line-height: 24px; +} + +/*产品*/ +.zindex { + z-index: 9; + position: relative; +} +.prdbnr { + width: 53%; + margin-left: 5%; +} +.prdbnl { + margin-top: -50px; +} +.i1ta_1 a { + border-radius: 8px; + width: 240px; +} +.pd1 { + position: relative; + z-index: 9; + margin-top: -75px; +} +.pd1 .swiper-container { + z-index: 9; + width: 100%; +} +.pd1a { + background: #fff; + box-shadow: 0 0 10px rgba(0, 68, 12, 0.1); + margin: 10px; + border-radius: 8px; + padding: 35px 20px; + z-index: 9; + cursor: pointer; +} +.swiper-slide-thumb-active .pd1a { + background: url(../images/pd1bg_03.jpg) no-repeat center; + background-size: cover; +} +.swiper-slide-thumb-active .pd1a * { + color: #fff; +} +.pdbimg { + cursor: pointer; +} +.pdbimg img { + width: 100%; +} +.pdbimg img.img1 { + display: block; +} +.pdbimg img.img2 { + display: none; +} +.swiper-slide-thumb-active .pdbimg img.img1 { + display: none; +} +.swiper-slide-thumb-active .pdbimg img.img2 { + display: block; +} +.pd1ai { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} +.swiper-slide-thumb-active .pd1a .pd1ai { + filter: grayscale(100%) brightness(300%); +} +.swiper-slide-thumb-active .pd1a { + box-shadow: 0 0 10px rgba(0, 68, 12, 0.5); +} +.pd2 { + background: url(../images/pd2bg_02.png) no-repeat bottom center; + background-size: auto 60.5%; +} +.pdbox .i2aimg { + width: 55%; +} +.pdbox .i2atxt { + width: 40%; + background-size: 100% !important; +} +.pdbox .i2atxt h1 { + margin-top: 0; +} +.i2atxt1 p { + margin-top: 5px; +} +.i2atxt1 p i { + width: 6px; + height: 6px; + background: #20a53a; + border-radius: 100%; +} +.prd_more { + width: 160px; + border-radius: 50px; + display: inline-block; + /* background: url(../images/i1abg_03.png) repeat; */ + background: linear-gradient(#36bd89, #20a53a); + background-size: 100% 100%; + color: #fff; + text-align: center; + line-height: 50px; + box-shadow: 0 4px 15px rgba(0, 68, 12, 0.2); +} +.prd_more:hover { + -webkit-filter: brightness(110%); +} + +.pi1 { + margin-top: -30px; +} +.pi1top { + width: 100%; + padding-bottom: 0; +} +.pi1top .i2aline { + margin: 15px auto; +} +.pi1top h1 { + margin: 0; +} + +.pil { + width: 15%; + margin-right: 3%; + border-left: 1px solid #def2e2; +} +.pil li { + padding-left: 23px; + border-left: 4px solid rgba(0, 0, 0, 0); + line-height: 42px; + cursor: pointer; + transition: 0.25s; +} +.pil li.active { + border-left: 4px solid #20a53a; + color: #20a53a; + font-size: 26px; + margin: 5px 0; +} +.pia { + background-size: 100% !important; +} +.pia:first-child { + margin-top: 0; +} +.pia:nth-of-type(even) .piw { + flex-flow: row-reverse; +} +.pia:nth-of-type(even) .pil { + margin-left: 5%; + margin-right: 0; +} +.pibox { + /* background: url(../images/pd2bg_02.png) no-repeat bottom center; */ + /* background-size: auto 56%; */ +} + +/*活动*/ +.hdbn { + height: 350px; +} +.hdnav { + box-shadow: 0 8px 25px rgba(0, 68, 12, 0.1); + margin-top: -35px; +} +.hdnav a, +.hdnav li { + position: relative; + display: block; + line-height: 70px; + width: 25%; + text-align: center; + cursor: pointer; + transition: 0.25s; +} +.hdnav a.active, +.hdnav li.active { + background-image: linear-gradient(#e7f5e6, #fff); +} +.hdnav li::before { + content: ''; + position: absolute; + display: block; + left: 0; + top: 0; + width: 100%; +} +.hdnav li.active::before { + border-top: 4px solid #20a53a; +} +.hdnav a:hover, +.hdnav li:hover { + color: #20a53a; +} +.hdw { + width: 102%; +} +.hda { + width: 31.33%; + margin: 17px 0; + margin-right: 2%; + border-radius: 8px; + box-shadow: 0 5px 15px rgba(0, 68, 12, 0.1); +} +.hdat { + padding-left: 20px; + color: #fff; + border-radius: 8px 8px 0 0; +} +.hdab { + background: #fff; + transition: 0.25s; + border-radius: 0 0 8px 8px; +} +.hdab p { + line-height: 30px; + height: 60px; +} +.hdab span { + display: inline-block; + line-height: 45px; + width: 140px; + border-radius: 48px; + text-align: center; + transition: 0.25s; +} +.hda:hover { + transform: translateY(-10px); +} +.hdab_green span { + border: 1px solid #20a53a; + color: #20a53a; +} +.hda:hover .hdab_green { + box-shadow: 0 0 65px rgba(25, 172, 54, 0.3) inset; +} +.hda:hover .hdab_green span { + background-image: linear-gradient(#55b991, #22a63d); + color: #fff; +} +.hdab_yellow span { + border: 1px solid #ff8134; + color: #ff8134; +} +.hda:hover .hdab_yellow { + box-shadow: 0 0 65px rgba(255, 129, 52, 0.3) inset; +} +.hda:hover .hdab_yellow span { + background-image: linear-gradient(#ff8134, #ef7428); + color: #fff; +} +.hdab_blue span { + border: 1px solid #4b78ff; + color: #4b78ff; +} +.hda:hover .hdab_blue { + box-shadow: 0 0 65px rgba(72, 120, 255, 0.3) inset; +} +.hda:hover .hdab_blue span { + background-image: linear-gradient(#4b78ff, #3d6af0); + color: #fff; +} +.hda { + position: relative; +} +.hot { + width: 100px; + height: 100px; + background: url(../images/hot_03.png) no-repeat center; + background-size: 100% 100%; + position: absolute; + right: -5px; + top: -5px; + z-index: 9; +} + +/* 友情链接 */ +.flink { + color: #666; + font-size: 12px; +} + +.flink a { + color: #666; +} + +.flink a:hover { + color: #20a53a; +} + +/* 波浪效果背景 */ +.bg-wave { + position: absolute; + top: 130px; + left: 0; + width: 100%; + height: 800px; + background: linear-gradient(0deg, #d8efdb, #edf7ef); + z-index: 8; +} +.bg-wave.top { + top: 90px; +} +.bg-wave.transparent { + opacity: 0; + z-index: 9; +} +.bg-wave canvas { + width: 100%; + height: 100%; +} +.swiper-pagination { + position: static; +} +.swiper-pagination-i1 .swiper-pagination-bullet { + width: 18px; + height: 18px; +} +.swiper-slide .title { + min-height: 24px; + line-height: 1; + margin-bottom: 15px; + font-size: 22px; + text-align: center; +} +/* end */ + +@media only screen and (max-width: 1399px) { + .pil li.active { + font-size: 24px; + } + .hdat img { + height: 80px; + } + .hot { + width: 80px; + height: 80px; + } + .hdab span { + line-height: 40px; + width: 130px; + font-size: 15px; + } + + .dja { + width: 380px; + } + .djbox_active .djat .prod-head { + width: 378px; + } + .djat .prod-head, + .djab { + padding: 20px; + } + .djat .mt_20 { + margin-top: 12px; + } + .djab { + height: 170px; + } + .xzat, + .xzahidea, + .djabb a { + line-height: 40px; + font-size: 16px; + } + .djtopa a { + font-size: 15px; + width: 150px; + line-height: 46px; + } + .pd1a { + padding: 25px 15px; + } + .pd1ar h3 { + font-size: 16px; + } + .pd1ar p { + margin-top: 8px; + font-size: 12px; + } + + .pay-price .pay-price-item { + height: 70px; + } + + .pay-price .pay-price-num { + font-size: 16px; + } + + .pay-price .pay-price-name { + font-size: 12px; + } + + .enterprise_qualification .box { + justify-content: space-between; + } + .enterprise_qualification .box .item { + margin-right: 0; + margin-bottom: 40px; + } +} +@media only screen and (min-width: 768px) and (max-width: 1299px) { + .videohidebox { + width: 80%; + } + .i1t h1 { + font-size: 40px; + } + .hdl .logo { + margin-right: 60px; + } + .hdr a { + line-height: 32px; + width: 80px; + font-size: 14px; + } + .hdr a.user { + width: 110px; + } + .nava { + font-size: 16px; + } + .i1ta a { + line-height: 50px; + width: 220px; + font-size: 18px; + } + .i1ta a img { + height: 20px; + } + .i1 { + background-size: 100% 60%; + } + .i1ba { + height: 100px; + } + .ititle { + font-size: 26px; + } + .i2atxt h1 { + line-height: 33px; + } + .i3 { + padding: 0 0 130px 0; + } + .i31a img { + width: 70px; + } + .i31a .txt { + font-size: 13px; + } + .i4tatop h1 { + font-size: 40px; + line-height: 40px; + } + .i4tatop h1 span { + font-size: 14px; + } + .i4tw { + padding: 20px 3%; + } + .i4t { + margin-top: -75px; + } + .swiper-button-next-i4 { + right: 0; + } + .swiper-button-prev-i4 { + left: 0; + } + .i4ba { + height: 100px; + } + .foot { + padding: 40px 0 20px 0; + } + .ftlogo img { + width: 100px; + } + .fta .text16 { + line-height: 28px; + font-size: 13px; + } + .fta h3 { + font-size: 16px; + } + .ftr img { + width: 100px; + } + .fb { + line-height: 24px; + margin-top: 35px; + font-size: 13px; + } + + .pd1 { + margin-top: -54px; + } + .pd1a { + padding: 15px; + } + .pd1ai { + background-size: 80% !important; + } + .prd_more { + line-height: 40px; + width: 130px; + } + + .pil li { + line-height: 36px; + padding: 0 15px; + } + .pil li.active { + font-size: 20px; + } + + .hda { + margin: 10px 0; + margin-right: 2%; + } + .hdat img { + height: 70px; + } + .hot { + width: 70px; + height: 70px; + } + .hdab span { + line-height: 35px; + width: 100px; + font-size: 14px; + } + .hdbn { + height: 300px; + } + + .dja { + width: 32%; + } + .djbox_active .djat .prod-head { + width: 30.8%; + } + .djab_null { + width: 100%; + } + .djat .prod-head, + .djab { + padding: 15px; + } + .djat .mt_20 { + margin-top: 8px; + } + .djab { + height: 154px; + } + .xzat, + .xzahidea, + .djabb a { + line-height: 35px; + font-size: 14px; + } + .djtopa a { + font-size: 14px; + width: 130px; + line-height: 38px; + } + .djtop h1 { + font-size: 36px; + } + + .enterprise_qualification .box { + justify-content: flex-start; + } + .enterprise_qualification .box .item { + width: 33.33%; + } +} +@media only screen and (max-width: 1120px) { + .hdl .logo { + margin-right: 40px; + } + .nav span { + margin-right: 30px; + } + .install-box .title { + margin-bottom: 6px; + font-size: 16px; + } +} +@media only screen and (max-width: 950px) { + .mt_100 { + margin-top: 35px; + } + .mt_35, + .mt_40, + .mt_45, + .mt_50, + .mt_60, + .mt_70, + .mt_80 { + margin-top: 45px; + } + /*视频*/ + .videohidebox { + width: 90%; + margin-left: 0; + padding-bottom: 0; + } + .videohidebox_1 p { + height: 30px; + line-height: 30px; + font-size: 14px; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; + overflow: hidden; + } + .i1 { + padding-top: 50px; + padding-bottom: 50px; + } + + .prdbn { + padding: 70px 0 50px 0; + height: auto !important; + } + + .hdbn { + margin-top: 0; + height: 260px; + } + .hda { + width: 48%; + } + .bg-wave, + .bg-wave.top { + top: 60px; + } + .bg-wave { + height: 600px; + } +} +@media only screen and (max-width: 768px) { + /* 邀请大使 */ + .bt_invite_tips { + height: auto; + padding: 15px 0; + flex-direction: column; + } + .tips_username, + .tips_package, + .tips_btn { + margin-bottom: 10px; + font-size: 14px !important; + margin-right: 0 !important; + } + .tips_btn { + margin-bottom: 0; + } + .tips_btn span { + width: 110px !important; + font-size: 13px !important; + padding: 7px !important; + } + /* end */ + + .flex_lmr_wap { + justify-content: space-between; + width: 100%; + } + .wap_disblock { + display: block; + } + .swiper-button-next-i4, + .swiper-button-prev-i4 { + display: none; + } + .i1 { + background-size: 100% 60%; + } + .i1, + .md { + padding: 25px 0; + } + .i1t h1 { + font-size: 24px; + } + .i1t h1 img { + height: 20px; + } + .i1ta a { + line-height: 40px; + width: 150px; + font-size: 15px; + margin: 0 5px; + } + .i1ta a:nth-child(1) { + margin-right: 0 !important; + margin-bottom: 10px; + } + .i1ta a img { + height: 18px; + } + .i1ba { + height: 80px; + } + .i2a { + padding-top: 45px; + margin-top: 0; + } + .i2a:first-child { + margin-top: -45px; + padding-top: 45px; + } + .i2atxt { + padding-bottom: 10px; + } + .i2atxt img { + width: 70px; + display: block; + margin: 0 auto; + } + .i2atxt h1 { + line-height: 30px; + margin-top: -30px; + text-align: center; + } + .ititle { + font-size: 22px; + } + .i2aline { + width: 30px; + margin: 15px 0; + margin: 15px auto; + } + .i3 { + padding: 0 0 25px 0; + margin-top: 15px; + } + .i31 { + margin-top: 0; + margin-top: 12px; + } + .i31a { + width: 100%; + padding: 18px 0; + } + .i31a img { + width: 60px; + } + .i4taline { + width: 100%; + height: 1px; + margin: 15px 0; + } + .i4tatop h1 { + font-size: 30px; + line-height: 30px; + } + .i4tatop h1 span { + font-size: 13px; + line-height: 20px; + } + .i4t { + margin-top: 15px; + } + .i4ba { + height: 80px; + } + .foot { + padding: 25px 0 15px 0; + } + .ftlogo { + width: 100%; + } + .ftlogo img { + display: block; + width: 100px; + margin: 0 auto; + } + .fta1 { + max-width: 33.33%; + text-align: center; + margin-top: 15px; + } + .fta .text16 { + font-size: 12px; + line-height: 22px; + margin-top: 5px; + } + .fta2 { + margin-top: 15px; + } + .ftr { + margin-top: 15px; + text-align: center; + width: 100%; + } + .fb { + font-size: 12px; + line-height: 22px; + } + + .prdbn { + padding-bottom: 0px; + } + .pd1 { + margin-top: -18px; + } + .pd1al { + width: 100%; + } + .pd1ar { + margin-top: 10px; + width: 100%; + } + .pd1ar h3 { + font-size: 14px; + line-height: 22px; + } + .pd1ar p { + margin-top: 5px; + } + .pd1a { + padding: 10px 8px; + width: 100%; + margin-top: 15px; + width: 100%; + margin: 0; + display: block; + text-align: center; + } + /*.gallery-thumbs .swiper-slide{ + padding: 10px; + }*/ + .pd1ai { + background-size: 60% !important; + } + .prd_more { + font-size: 12px; + line-height: 36px; + width: 110px; + } + .pd2 { + background-size: 200% 60.5%; + } + + .piw { + display: flex !important; + } + .pil { + width: auto !important; + max-height: 300px; + overflow: hidden; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } + /*.pil{ + border: 0; + margin-bottom: 15px; + }*/ + /*.pil ul{ + display: flex; + flex-wrap: wrap; + }*/ + .pia:first-child { + margin-top: 25px; + } + .pia:nth-child(even) .pil { + margin-left: 8px !important; + } + .pil li { + line-height: 26px; + padding: 0 8px; + font-size: 12px; + } + .pil li.active { + line-height: 26px; + font-size: 14px; + border-left: 2px solid #20a53a; + margin: 0; + } + .piw { + margin-top: 20px; + } + + .hdbn { + margin-top: 0; + height: 150px; + } + .hdnav { + margin-top: 15px; + } + .hdnav a, + .hdnav li { + line-height: 40px; + border-top-width: 1px !important; + } + .hdbn .prdbnl { + flex: inherit; + flex-grow: inherit; + margin-top: 0 !important; + width: 70% !important; + } + .hda { + margin: 0; + margin-top: 15px; + width: 100%; + } + .hdat img { + height: 70px; + } + .hot { + width: 70px; + height: 70px; + } + .hdab span { + line-height: 35px; + width: 100px; + font-size: 14px; + } + .hdmd { + padding-top: 0; + } + + .djtop { + padding: 25px 0; + } + .djbox { + padding-bottom: 25px; + } + .dja { + width: 100%; + margin: 10px 0; + } + .djab_null { + width: 100%; + } + .djat .prod-head, + .djab { + padding: 15px; + position: static; + width: 100% !important; + } + .djat .mt_20 { + margin-top: 8px; + } + .djab { + height: 160px; + } + .xzat, + .xzahidea, + .djabb a { + line-height: 35px; + } + .djtopa a { + font-size: 14px; + width: 120px; + line-height: 30px; + margin: 0 5px; + } + .djtop h1 { + font-size: 24px; + } + .dja_a { + height: 28px; + font-size: 12px; + } + .dja_a img { + height: 10px; + } + .djam { + padding: 15px; + } + .bg-wave { + height: 460px; + } + .swiper-slide .title { + min-height: 16px; + margin-bottom: 10px; + font-size: 16px; + } + + .enterprise_qualification .box .item { + width: 50%; + margin-bottom: 20px; + } + .enterprise_qualification .item-title .text { + font-size: 13px; + } + .enterprise_qualification .box .img { + width: 160px; + } + .i1ta a + a { + margin-left: 12px; + } +} + +@media only screen and (max-width: 400px) { + .tcw { + display: block; + padding: 10px 15px; + } + .tca { + width: 100%; + margin: 10px 0; + } +} diff --git a/public/static/file/kaixin.zip b/public/static/file/kaixin.zip new file mode 100644 index 0000000..5e0f213 Binary files /dev/null and b/public/static/file/kaixin.zip differ diff --git a/public/static/file/win/kaixin.zip b/public/static/file/win/kaixin.zip new file mode 100644 index 0000000..052559a Binary files /dev/null and b/public/static/file/win/kaixin.zip differ diff --git a/public/static/images/account.png b/public/static/images/account.png new file mode 100644 index 0000000..1edd182 Binary files /dev/null and b/public/static/images/account.png differ diff --git a/public/static/images/addc.png b/public/static/images/addc.png new file mode 100644 index 0000000..03ba4e8 Binary files /dev/null and b/public/static/images/addc.png differ diff --git a/public/static/images/bt.png b/public/static/images/bt.png new file mode 100644 index 0000000..1a55697 Binary files /dev/null and b/public/static/images/bt.png differ diff --git a/public/static/images/bt_monitor.png b/public/static/images/bt_monitor.png new file mode 100644 index 0000000..c608621 Binary files /dev/null and b/public/static/images/bt_monitor.png differ diff --git a/public/static/images/bto_copy.png b/public/static/images/bto_copy.png new file mode 100644 index 0000000..bdb8164 Binary files /dev/null and b/public/static/images/bto_copy.png differ diff --git a/public/static/images/close.png b/public/static/images/close.png new file mode 100644 index 0000000..1071da2 Binary files /dev/null and b/public/static/images/close.png differ diff --git a/public/static/images/downico1_01.png b/public/static/images/downico1_01.png new file mode 100644 index 0000000..f54d59b Binary files /dev/null and b/public/static/images/downico1_01.png differ diff --git a/public/static/images/downico2_01.png b/public/static/images/downico2_01.png new file mode 100644 index 0000000..8ba580c Binary files /dev/null and b/public/static/images/downico2_01.png differ diff --git a/public/static/images/eye.png b/public/static/images/eye.png new file mode 100644 index 0000000..bf12d71 Binary files /dev/null and b/public/static/images/eye.png differ diff --git a/public/static/images/eye_close.png b/public/static/images/eye_close.png new file mode 100644 index 0000000..425753e Binary files /dev/null and b/public/static/images/eye_close.png differ diff --git a/public/static/images/footbg_02.jpg b/public/static/images/footbg_02.jpg new file mode 100644 index 0000000..8f10b22 Binary files /dev/null and b/public/static/images/footbg_02.jpg differ diff --git a/public/static/images/hot_03.png b/public/static/images/hot_03.png new file mode 100644 index 0000000..435c34f Binary files /dev/null and b/public/static/images/hot_03.png differ diff --git a/public/static/images/i1abg_03.png b/public/static/images/i1abg_03.png new file mode 100644 index 0000000..634a6ad Binary files /dev/null and b/public/static/images/i1abg_03.png differ diff --git a/public/static/images/i1aico_03.png b/public/static/images/i1aico_03.png new file mode 100644 index 0000000..38deeee Binary files /dev/null and b/public/static/images/i1aico_03.png differ diff --git a/public/static/images/i1ico_03.png b/public/static/images/i1ico_03.png new file mode 100644 index 0000000..1fcb2da Binary files /dev/null and b/public/static/images/i1ico_03.png differ diff --git a/public/static/images/ico-copy.png b/public/static/images/ico-copy.png new file mode 100644 index 0000000..fc7458c Binary files /dev/null and b/public/static/images/ico-copy.png differ diff --git a/public/static/images/install_type_select.png b/public/static/images/install_type_select.png new file mode 100644 index 0000000..24b8ec8 Binary files /dev/null and b/public/static/images/install_type_select.png differ diff --git a/public/static/images/logo.svg b/public/static/images/logo.svg new file mode 100644 index 0000000..71a6655 --- /dev/null +++ b/public/static/images/logo.svg @@ -0,0 +1,114 @@ + + + diff --git a/public/static/images/navicon.png b/public/static/images/navicon.png new file mode 100644 index 0000000..23f0686 Binary files /dev/null and b/public/static/images/navicon.png differ diff --git a/public/static/images/prd_1_03.png b/public/static/images/prd_1_03.png new file mode 100644 index 0000000..58d2118 Binary files /dev/null and b/public/static/images/prd_1_03.png differ diff --git a/public/static/images/prd_2_03.png b/public/static/images/prd_2_03.png new file mode 100644 index 0000000..c32bcf5 Binary files /dev/null and b/public/static/images/prd_2_03.png differ diff --git a/public/static/images/wave.svg b/public/static/images/wave.svg new file mode 100644 index 0000000..b84e2f1 --- /dev/null +++ b/public/static/images/wave.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/static/js/custom.js b/public/static/js/custom.js new file mode 100644 index 0000000..b59309e --- /dev/null +++ b/public/static/js/custom.js @@ -0,0 +1,133 @@ +var location_url = window.location.href; +var parameter_str = location_url.split('?')[1]; +if (parameter_str !== undefined) { + parameter_str = parameter_str.split('#')[0]; + var $_GET = {}; + var parameter_arr = parameter_str.split('&'); + var tmp_arr; + for (var i = 0, len = parameter_arr.length; i <= len - 1; i++) { + tmp_arr = parameter_arr[i].split('='); + $_GET[tmp_arr[0]] = decodeURIComponent(tmp_arr[1]); + } + window.$_GET = $_GET; +} else { + window.$_GET = []; +} + +function searchSubmit(){ + $('#listTable').bootstrapTable('refresh'); + return false; +} +function searchClear(){ + $('#searchToolbar').find('input[name]').each(function() { + $(this).val(''); + }); + $('#searchToolbar').find('select[name]').each(function() { + $(this).find('option:first').prop("selected", 'selected'); + }); + $('#listTable').bootstrapTable('refresh'); +} +function updateToolbar(){ + $('#searchToolbar').find(':input[name]').each(function() { + var name = $(this).attr('name'); + if(typeof window.$_GET[name] != 'undefined') + $(this).val(window.$_GET[name]); + }) +} +function updateQueryStr(obj){ + var arr = []; + for (var p in obj){ + if (obj.hasOwnProperty(p) && typeof obj[p] != 'undefined' && obj[p] != '') { + arr.push(p + "=" + encodeURIComponent(obj[p])); + } + } + history.replaceState({}, null, '?'+arr.join("&")); +} + +if (typeof $.fn.bootstrapTable !== "undefined") { + $.fn.bootstrapTable.custom = { + method: 'post', + contentType: "application/x-www-form-urlencoded", + sortable: true, + pagination: true, + sidePagination: 'server', + pageNumber: 1, + pageSize: 20, + pageList: [10, 15, 20, 30, 50, 100], + loadingFontSize: '18px', + toolbar: '#searchToolbar', + showColumns: true, + minimumCountColumns: 2, + showToggle: true, + showFullscreen: true, + paginationPreText: '前页', + paginationNextText: '后页', + showJumpTo: true, + paginationLoop: false, + queryParamsType: '', + queryParams: function(params) { + $('#searchToolbar').find(':input[name]').each(function() { + params[$(this).attr('name')] = $(this).val() + }) + updateQueryStr(params); + params.offset = params.pageSize * (params.pageNumber-1); + params.limit = params.pageSize; + return params; + }, + formatLoadingMessage: function(){ + return ''; + }, + formatShowingRows: function(t,n,r,e){ + return '显示第 '+t+' 到第 '+n+' 条, 总共 '+r+' 条'; + }, + formatRecordsPerPage: function(t){ + return '每页显示 '+t+' 条'; + }, + formatNoMatches: function(){ + return '没有找到匹配的记录'; + } + }; + $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.custom); +} + +function httpGet(url, callback){ + $.ajax({ + url: url, + type: 'get', + dataType: 'json', + success: function (res) { + callback(res) + }, + error: function () { + if (typeof layer !== "undefined") { + layer.closeAll(); + layer.msg('服务器错误'); + } + } + }); +} + +function httpPost(url, data, callback){ + $.ajax({ + url: url, + type: 'post', + data: data, + dataType: 'json', + success: function (res) { + callback(res) + }, + error: function () { + if (typeof layer !== "undefined") { + layer.closeAll(); + layer.msg('服务器错误'); + } + } + }); +} + +var isMobile = function(){ + if( /Android|SymbianOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Windows Phone|Midp/i.test(navigator.userAgent)) { + return true; + } + return false; +} \ No newline at end of file diff --git a/public/static/js/dx.js b/public/static/js/dx.js new file mode 100644 index 0000000..4cacc27 --- /dev/null +++ b/public/static/js/dx.js @@ -0,0 +1,101 @@ +// JS is for dynamically creating and moving the birds across the screen. +// The actual bird flapping and flight wave is CSS animation. + +// Adjust these options here to customize the scene. +let options = { + delay: 500, + speedRange: [2, 5], + angleRange: [-30, 30], + sizeRange: [15, 30], +}; + +let bird = document.createElement('span'); +bird.className = 'bird'; +let particles = []; +let length = 12; +let isLeave = false; + +init(); + +function init() { + for (let i = 0; i < length; i++) { + let particle = initParticle(); + particle.move(); + particles.push(particle); + } +} + +function initPos() { + var top = $('.d1').offset().top + 50; + var bottom = $('.d1').height() / 1.8 + top; + return [rand(50, window.innerWidth / 2), rand(top, bottom)]; +} + +function initParticle() { + let newBird = bird.cloneNode(); + const size = rand(options.sizeRange[0], options.sizeRange[1]); + newBird.style.width = size + 'px'; + newBird.style.height = size / 5 + 'px'; + + document.querySelector('.animate-bg').appendChild(newBird); + + let pos = initPos(); + + return new Particle(newBird, { + speed: rand(options.speedRange[0], options.speedRange[1]), + angle: rand(options.angleRange[0], options.angleRange[1]), + pos: pos, + }); +} + +window.requestAnimationFrame(draw); + +function draw() { + particles.forEach((particle, i, arr) => { + if (particle.element.style.display == 'none') { + particle.element.style.display = 'inline-block'; + particle.pos = initPos(); + } + + if (particle.pos[0] > window.innerWidth || particle.pos[1] > window.innerHeight || particle.pos[0] < 0 - window.innerWidth || particle.pos[1] < 0 - window.innerHeight) { + particle.element.style.display = 'none'; + } else { + particle.move(); + } + }); + + window.requestAnimationFrame(draw); +} + +function Particle(element, options) { + this.size = 1; + this.speed = 1; + this.angle = 90; + this.pos = [0, 0]; + this.element = element; + + this.constructor = function (options) { + for (let i in options) { + this[i] = options[i]; + } + }; + + this.move = function () { + var radians = (this.angle * Math.PI) / 180; + this.pos[0] += Math.cos(radians) * this.speed; + this.pos[1] += Math.sin(radians) * this.speed; + // console.log(this.pos) + this.draw(); + }; + + this.draw = function () { + this.element.style.left = this.pos[0] + 'px'; + this.element.style.top = this.pos[1] + 'px'; + }; + + this.constructor(options); +} + +function rand(min, max) { + return Math.random() * (max - min) + min; +} diff --git a/public/win/install/panel_update.py b/public/win/install/panel_update.py new file mode 100644 index 0000000..242e4ec --- /dev/null +++ b/public/win/install/panel_update.py @@ -0,0 +1,112 @@ +#coding: utf-8 +# +------------------------------------------------------------------- +# | 宝塔Windows面板 +# +------------------------------------------------------------------- +# | Copyright (c) 2015-2020 宝塔软件(http://www.bt.cn) All rights reserved. +# +------------------------------------------------------------------- +# | Author: 沐落 + +# | 面板升级安装公共类 +# +------------------------------------------------------------------- + +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))) + + if os.path.exists('C:/update.py'): os.remove('C:/update.py') + os.system('bt restart') + + 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..7f2988f --- /dev/null +++ b/public/win/panel/data/setup.py @@ -0,0 +1,1039 @@ +#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://www.example.com/api/getIpAddress'; + str = httpGet(url) + writeFile(filename,ipaddress) + + ipaddress = re.search('\d+.\d+.\d+.\d+',ipaddress).group(0); + return ipaddress + except: + try: + url = 'https://www.bt.cn/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":"dg2.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"dg1.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"download.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"hk1-node.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"na1-node.bt.cn","port":"80","ping":500},{"protocol":"http://","address":"jp1-node.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 'https://download.bt.cn' + #return mnode[0]['protocol'] + mnode[0]['address'] + ':' + mnode[0]['port'] + return "https://" + mnode[0]['address'] + except: + return 'https://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') + ret1 = 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] + ret1[0] + ret1[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.9.0.zip b/public/win/panel/panel_7.9.0.zip new file mode 100644 index 0000000..91160c1 Binary files /dev/null and b/public/win/panel/panel_7.9.0.zip differ diff --git a/route/app.php b/route/app.php new file mode 100644 index 0000000..f51b2a0 --- /dev/null +++ b/route/app.php @@ -0,0 +1,138 @@ +middleware(\think\middleware\SessionInit::class); +Route::any('/admin/login', 'admin/login')->middleware(\think\middleware\SessionInit::class); +Route::get('/admin/logout', 'admin/logout'); + +Route::group('admin', function () { + Route::get('/', 'admin/index'); + Route::any('/set', 'admin/set'); + 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'); + Route::get('/record', 'admin/record'); + Route::post('/record_data', 'admin/record_data'); + Route::get('/log', 'admin/log'); + Route::post('/log_data', 'admin/log_data'); + Route::get('/list', 'admin/list'); + Route::post('/list_data', 'admin/list_data'); + Route::post('/list_op', 'admin/list_op'); + Route::get('/deplist', 'admin/deplist'); + Route::get('/refresh_deplist', 'admin/refresh_deplist'); + Route::get('/cleancache', 'admin/cleancache'); + +})->middleware(\app\middleware\CheckAdmin::class); + +Route::any('/installapp', 'install/index'); + +Route::miss(function() { + return response('404 Not Found')->code(404); +}); diff --git a/runtime/.gitignore b/runtime/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/runtime/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/think b/think new file mode 100644 index 0000000..2429d22 --- /dev/null +++ b/think @@ -0,0 +1,10 @@ +#!/usr/bin/env php +console->run(); \ No newline at end of file diff --git a/wiki/btmonitor.md b/wiki/btmonitor.md new file mode 100644 index 0000000..d930f2a --- /dev/null +++ b/wiki/btmonitor.md @@ -0,0 +1,53 @@ +# 宝塔云监控安装包修改记录 + +查询最新版本号:https://api.bt.cn/bt_monitor/latest_version + +安装包下载链接:http://download.bt.cn/install/src/bt-monitor-版本号.zip + +- 删除core/include/c_loader/PluginLoader.so,sqlite_server/PluginLoader.so,将btmonitor/PluginLoader.py复制到这个文件夹 + +- 批量解密源码:执行 php think decrypt all <源码根目录> + + 极少数文件解密失败是正常现象可无视 + +- 全局搜索替换 https://api.bt.cn => http://www.example.com(需排除/bt_monitor/latest_agent_version) + +- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除/panel/get_ip_info) + +- core/include/public.py 在 + + ```python + def GetConfigValue(key): + ``` + + 这一行下面加上 + + ```python + if key == 'home': return 'http://www.example.com' + ``` + + def write_request_log(reques = None): 这一行下面加上 return + +- core/include/basic_monitor.py + + 在 def report_module_logs(self, force=False): 这一行下面加上 return + +- modules/configModule/main.py + + https://download.bt.cn => http://www.example.com + +- update/update_btmonitor.sh 修改Install_Monitor方法内的download_Url变量 + +- init.sh https://download.bt.cn => http://www.example.com + +- BT-MONITOR 在 + + ```python + def CreateSSL(): + ``` + + 这一行下面加上 + + ```python + return CreateSSL_offline() + ``` diff --git a/wiki/files/btmonitor/PluginLoader.py b/wiki/files/btmonitor/PluginLoader.py new file mode 100644 index 0000000..2b1840e --- /dev/null +++ b/wiki/files/btmonitor/PluginLoader.py @@ -0,0 +1,64 @@ +#coding: utf-8 +import os,sys,json +import core.include.public as public + +#执行模块方法(模块名,方法名,参数) +def module_run(module_name, def_name, def_args): + if not module_name or not def_name: return public.returnMsg(False,'模块名称和模块方法名称不能为空!') + if not path_check(module_name) or not path_check(def_name): return public.returnMsg(False,'模块名或方法名不能包含特殊符号!') + + panel_path = public.get_panel_path() + filename = "{}/modules/{}Module/{}Module.py".format(panel_path,module_name,module_name) + if not os.path.exists(filename): + filename = "{}/modules/{}Module/main.py".format(panel_path,module_name) + if not os.path.exists(filename): + filename = "{}/plugin/{}/main.py".format(panel_path,module_name) + if not os.path.exists(filename): + filename = "{}/plugin/{}Module/{}Plugin.py".format(panel_path,module_name,module_name) + if not os.path.exists(filename): + return public.returnMsg(False,'指定模块或插件不存在') + + _obj = public.get_script_object(filename) + if not _obj: return public.returnMsg(False,'模块加载失败: %s' % module_name) + if hasattr(_obj, "items") and hasattr(_obj, "setdefault"): + return _obj + + class_name = "main" + if not hasattr(_obj, class_name): + return public.returnMsg(False,'找不到入口类: %s' % class_name) + + class_obj = getattr(_obj,class_name, None) + if not class_obj: + return public.returnMsg(False,'获取入口类失败' % module_name) + + try: + class_func = class_obj() + except: + return public.returnMsg(False,'模块入口实例化失败' % module_name) + + if not hasattr(class_func, def_name): + return public.returnMsg(False,'在[%s]模块中找不到[%s]方法' % (class_name,def_name)) + + def_func = getattr(class_func, def_name, None) + if not def_func: + return public.returnMsg(False,'获取方法失败') + + if 'module_get_object' in def_args: + return def_func + + result = def_func(def_args) + return result + +#获取指定模块对象(文件全路径) +def get_module(filename): + if not filename: return public.returnMsg(False,'模块路径不能为空!') + if "./" in filename: return public.returnMsg(False,'模块路径不能为相对路径') + return public.get_script_object(filename) + +#检查路径是否合法 +def path_check(path): + list = ["./","..",",",";",":","?","'","\"","<",">","|","\\","\n","\r","\t","\b","\a","\f","\v","*","%","&","$","#","@","!","~","`","^","(",")","+","=","{","}","[","]"] + for i in path: + if i in list: + return False + return True diff --git a/wiki/files/linux/PluginLoader.py b/wiki/files/linux/PluginLoader.py new file mode 100644 index 0000000..06d50fc --- /dev/null +++ b/wiki/files/linux/PluginLoader.py @@ -0,0 +1,213 @@ +#coding: utf-8 +import public,os,sys,json + +#获取插件列表(0/1) +def get_plugin_list(force = 0): + api_root_url = 'https://api.bt.cn' + api_url = api_root_url+ '/panel/get_plugin_list' + cache_file = 'data/plugin_list.json' + + if force==0 and os.path.exists(cache_file): + jsonData = public.readFile(cache_file) + softList = json.loads(jsonData) + else: + try: + jsonData = public.HttpGet(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(cache_file, jsonData) + return softList + +#获取授权状态() 返回:0.免费版 1.专业版 2.企业版 -1.获取失败 +def get_auth_state(): + try: + softList = get_plugin_list() + if softList['ltd'] > -1: + return 2 + elif softList['pro'] > -1: + return 1 + else: + return 0 + except: + return -1 + +#执行插件方法(插件名,方法名,参数) +def plugin_run(plugin_name, def_name, args): + if not plugin_name or not def_name: return public.returnMsg(False,'插件名称和插件方法名称不能为空!') + if not path_check(plugin_name) or not path_check(def_name): return public.returnMsg(False,'插件名或方法名不能包含特殊符号!') + p_path = public.get_plugin_path(plugin_name) + if not os.path.exists(p_path + '/index.php') and not os.path.exists(p_path + '/%s_main.py' % plugin_name): return public.returnMsg(False,'插件不存在!') + + is_php = os.path.exists(p_path + '/index.php') + if not is_php: + public.package_path_append(p_path) + plugin_main = __import__(plugin_name + '_main') + try: + if sys.version_info[0] == 2: + reload(plugin_main) + else: + from imp import reload + reload(plugin_main) + except: + pass + plu = eval('plugin_main.' + plugin_name + '_main()') + if not hasattr(plu, def_name): + return public.returnMsg(False,'在[%s]插件中找不到[%s]方法' % (plugin_name,def_name)) + + if 'plugin_get_object' in args and args.plugin_get_object == 1: + if not is_php: + return getattr(plu, def_name) + else: + return None + else: + if not is_php: + data = eval('plu.' + def_name + '(args)') + else: + import panelPHP + args.s = def_name + args.name = plugin_name + data = panelPHP.panelPHP(plugin_name).exec_php_script(args) + return data + +#执行模块方法(模块名,方法名,参数) +def module_run(mod_name, def_name, args): + if not mod_name or not def_name: return public.returnMsg(False,'模块名称和模块方法名称不能为空!') + if not path_check(mod_name) or not path_check(def_name): return public.returnMsg(False,'模块名或方法名不能包含特殊符号!') + + if 'model_index' in args: + if args.model_index: + mod_file = "{}/{}Model/{}Model.py".format(public.get_class_path(),args.model_index,mod_name) + else: + mod_file = "{}/projectModel/{}Model.py".format(public.get_class_path(),mod_name) + else: + module_list = get_module_list() + for module_dir in module_list: + mod_file = "{}/{}/{}Model.py".format(public.get_class_path(),module_dir,mod_name) + if os.path.exists(mod_file): break + + if not os.path.exists(mod_file): + return public.returnMsg(False,'模块[%s]不存在' % mod_name) + + def_object = public.get_script_object(mod_file) + if not def_object: return public.returnMsg(False,'模块[%s]不存在!' % mod_name) + try: + run_object = getattr(def_object.main(),def_name,None) + except: + return public.returnMsg(False,'模块入口实例化失败' % mod_name) + if not run_object: return public.returnMsg(False,'在[%s]模块中找不到[%s]方法' % (mod_name,def_name)) + if 'module_get_object' in args and args.module_get_object == 1: + return run_object + result = run_object(args) + return result + +#获取模块文件夹列表 +def get_module_list(): + list = [] + class_path = public.get_class_path() + f_list = os.listdir(class_path) + for fname in f_list: + f_path = class_path+'/'+fname + if os.path.isdir(f_path) and len(fname) > 6 and fname.find('.') == -1 and fname.find('Model') != -1: + list.append(fname) + return list + +#检查路径是否合法 +def path_check(path): + list = ["./","..",",",";",":","?","'","\"","<",">","|","\\","\n","\r","\t","\b","\a","\f","\v","*","%","&","$","#","@","!","~","`","^","(",")","+","=","{","}","[","]"] + for i in path: + if i in list: + return False + return True + +#数据加密 +def db_encrypt(data): + try: + key = __get_db_sgin() + iv = __get_db_iv() + str_arr = data.split('\n') + res_str = '' + for data in str_arr: + if not data: continue + res_str += __aes_encrypt(data, key, iv) + except: + res_str = data + result = { + 'status' : True, + 'msg' : res_str + } + return result + +#数据解密 +def db_decrypt(data): + try: + key = __get_db_sgin() + iv = __get_db_iv() + str_arr = data.split('\n') + res_str = '' + for data in str_arr: + if not data: continue + res_str += __aes_decrypt(data, key, iv) + except: + res_str = data + result = { + 'status' : True, + 'msg' : res_str + } + return result + +def __get_db_sgin(): + keystr = '3gP7+k_7lSNg3$+Fj!PKW+6$KYgHtw#R' + key = '' + for i in range(31): + if i & 1 == 0: + key += keystr[i] + return key + +def __get_db_iv(): + div_file = "{}/data/div.pl".format(public.get_panel_path()) + if not os.path.exists(div_file): + str = public.GetRandomString(16) + str = __aes_encrypt_module(str) + div = public.get_div(str) + public.WriteFile(div_file, div) + if os.path.exists(div_file): + div = public.ReadFile(div_file) + div = __aes_decrypt_module(div) + else: + keystr = '4jHCpBOFzL4*piTn^-4IHBhj-OL!fGlB' + div = '' + for i in range(31): + if i & 1 == 0: + div += keystr[i] + return div + +def __aes_encrypt_module(data): + key = 'Z2B87NEAS2BkxTrh' + iv = 'WwadH66EGWpeeTT6' + return __aes_encrypt(data, key, iv) + +def __aes_decrypt_module(data): + key = 'Z2B87NEAS2BkxTrh' + iv = 'WwadH66EGWpeeTT6' + return __aes_decrypt(data, key, iv) + +def __aes_decrypt(data, key, iv): + from Crypto.Cipher import AES + import base64 + encodebytes = base64.decodebytes(data.encode('utf-8')) + aes = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8')) + de_text = aes.decrypt(encodebytes) + unpad = lambda s: s[0:-s[-1]] + de_text = unpad(de_text) + return de_text.decode('utf-8') + +def __aes_encrypt(data, key, iv): + from Crypto.Cipher import AES + import base64 + data = (lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16).encode('utf-8'))(data.encode('utf-8')) + aes = AES.new(key.encode('utf8'), AES.MODE_CBC, iv.encode('utf8')) + encryptedbytes = aes.encrypt(data) + en_text = base64.b64encode(encryptedbytes) + return en_text.decode('utf-8') diff --git a/wiki/files/linux/bt.js b/wiki/files/linux/bt.js new file mode 100644 index 0000000..45dc444 --- /dev/null +++ b/wiki/files/linux/bt.js @@ -0,0 +1,433 @@ +/* + *宝塔面板去除各种计算题与延时等待 +*/ +if("undefined" != typeof bt && bt.hasOwnProperty("show_confirm")){ + bt.show_confirm = function(title, msg, callback, error) { + layer.open({ + type: 1, + title: title, + area: "365px", + closeBtn: 2, + shadeClose: true, + btn: [lan['public'].ok, lan['public'].cancel], + content: "
\ +

" + msg + "

" + (error || '') + "\ +
", + yes: function (index, layero) { + layer.close(index); + if (callback) callback(); + } + }); + } +} +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 is_db_type = false, del_data = [] + if (typeof wid === 'object') { + del_data = wid + is_db_type = wid.some(function (item) { + return item.db_type > 0 + }) + var ids = []; + for (var i = 0; i < wid.length; i++) { + ids.push(wid[i].id); + } + wid = ids + } + var type = $('.database-pos .tabs-item.active').data('type'), + title = '', + tips = ''; + title = typeof dbname === "function" ? '批量删除数据库' : '删除数据库 - [ ' + dbname + ' ]'; + tips = is_db_type || !recycle_bin_db_open || type !== 'mysql' ? '当前列表存在彻底删除后无法恢复的数据库,请仔细查看列表,以防误删,是否继续操作?' : '当前列表数据库将迁移至数据库回收站,如需彻底删除请前往数据库回收站,是否继续操作?' + var arrs = wid instanceof Array ? wid : [wid] + var ids = JSON.stringify(arrs), + countDown = 9; + if (arrs.length == 1) countDown = 4 + var loadT = bt.load('正在检测数据库数据信息,请稍候...'), + param = { url: 'database/' + bt.data.db_tab_name + '/check_del_data', data: { data: JSON.stringify({ ids: ids }) } } + if (bt.data.db_tab_name == 'mysql') param = { url: 'database?action=check_del_data', data: { ids: ids } } + bt_tools.send(param, function (res) { + loadT.close() + layer.open({ + type: 1, + title: title, + area: '740px', + skin: 'verify_site_layer_info', + closeBtn: 2, + shadeClose: true, + content: '
' + + "
\ + \ +
"+ tips + "
\ +
"+ + '
' + + '
' + + '
' + + (is_db_type ? '注意:远程数据库暂不支持数据库回收站,选中的数据库将彻底删除
' : '') + + (!recycle_bin_db_open ? '风险操作:当前数据库回收站未开启,删除数据库将永久消失
' : '') + + '请仔细阅读以上要删除信息,防止数据库被误删
' + + '
', + btn: ['下一步', lan.public.cancel], + success: function (layers) { + setTimeout(function () { $(layers).css('top', ($(window).height() - $(layers).height()) / 2); }, 50) + var rdata = res.data, + newTime = parseInt(new Date().getTime() / 1000), + t_icon = ' '; + for (var j = 0; j < rdata.length; j++) { + for (var i = 0; i < del_data.length; i++) { + if (rdata[j].id == del_data[i].id) { + var is_time_rule = (newTime - rdata[j].st_time) > (86400 * 30) && (rdata[j].total > 1024 * 10), + is_database_rule = res.db_size <= rdata[j].total, + database_time = bt.format_data(rdata[j].st_time, 'yyyy-MM-dd'), + database_size = bt.format_size(rdata[j].total); + var f_size = database_size + var t_size = '注意:此数据库较大,可能为重要数据,请谨慎操作.\n数据库:' + database_size; + if (rdata[j].total < 2048) t_size = '注意事项:当前数据库不为空,可能为重要数据,请谨慎操作.\n数据库:' + database_size; + if (rdata[j].total === 0) t_size = ''; + rdata[j]['t_size'] = t_size + rdata[j]['f_size'] = f_size + rdata[j]['database_time'] = database_time + rdata[j]['is_time_rule'] = is_time_rule + rdata[j]['is_database_rule'] = is_database_rule + rdata[j]['db_type'] = del_data[i].db_type + rdata[j]['conn_config'] = del_data[i].conn_config + } + } + } + var filterData = rdata.filter(function (el) { + return ids.indexOf(el.id) != -1 + }) + bt_tools.table({ + el: '#check_layer_content', + data: filterData, + height: '300px', + column: [ + { fid: 'name', title: '数据库名称' }, + { + title: '数据库大小', template: function (row) { + return '' + row.f_size + (row.is_database_rule ? t_icon : '') + '' + } + }, + { + title: '数据库位置', template: function (row) { + var type_column = '-' + switch (row.db_type) { + case 0: + type_column = '本地数据库' + break; + case 1: + case 2: + type_column = '远程数据库' + break; + } + return '' + type_column + '' + } + }, + { + title: '创建时间', template: function (row) { + return '' + row.database_time + '' + } + }, + { + title: '删除结果', align: 'right', template: function (row, index, ev, _that) { + var _html = '' + switch (row.db_type) { + case 0: + _html = type !== 'mysql' ? '彻底删除' : (!recycle_bin_db_open ? '彻底删除' : '移至回收站') + break; + case 1: + case 2: + _html = '彻底删除' + break; + } + return '' + _html + '' + } + } + ], + success: function () { + $('#check_layer_content').find('.glyphicon-info-sign').click(function (e) { + var msg = $(this).parent().prop('title') + msg = msg.replace('数据库:','
数据库:') + layer.tips(msg, $(this).parent(), { tips: [1, 'red'], time: 3000 }) + $(document).click(function (ev) { + layer.closeAll('tips'); + $(this).unbind('click'); + ev.stopPropagation(); + ev.preventDefault(); + }); + e.stopPropagation(); + e.preventDefault(); + }); + if ($('.remote_database').length) { + $('.remote_database').each(function (index, el) { + var id = $(el).parent().parent().parent().index() + $('#check_layer_content tbody tr').eq(id).css('background-color', '#ff00000a') + }) + } + } + }) + }, + yes: function (indes, layers) { + title = typeof dbname === "function" ? '二次验证信息,批量删除数据库' : '二次验证信息,删除数据库 - [ ' + dbname + ' ]'; + if (type !== 'mysql') { + tips = '当前数据库暂不支持数据库回收站,删除后将无法恢复,此操作不可逆,是否继续操作?'; + } else { + tips = is_db_type ? '远程数据库不支持数据库回收站,删除后将无法恢复,此操作不可逆,是否继续操作?' : recycle_bin_db_open ? '删除后如需彻底删除请前往数据库回收站,是否继续操作?' : '删除后可能会影响业务使用,此操作不可逆,是否继续操作?' + } + layer.open({ + type: 1, + title: title, + icon: 0, + skin: 'delete_site_layer', + area: "530px", + closeBtn: 2, + shadeClose: true, + content: "
" + + "
\ + \ +
"+ tips + "
\ +
"+ + "
注意:数据无价,请谨慎操作!!!" + (type === 'mysql' && !recycle_bin_db_open ? '
风险操作:当前数据库回收站未开启,删除数据库将永久消失!' : '') + "
"+ + "
", + btn: ['确认删除', '取消删除'], + yes: function (indexs) { + var data = { + id: wid, + name: dbname + }; + if (typeof dbname === "function") { + delete data.id; + delete data.name; + } + layer.close(indexs) + layer.close(indes) + if (typeof dbname === "function") { + dbname(data) + } else { + data.id = data.id[0] + bt.database.del_database(data, function (rdata) { + layer.closeAll() + if (callback) callback(rdata); + bt.msg(rdata); + }) + } + } + }) + } + }) + }) + } +} +if("undefined" != typeof site && site.hasOwnProperty("del_site")){ + site.del_site = function (wid, wname, callback) { + 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 === 'database' && !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) + var ids = JSON.stringify(wid instanceof Array ? wid : [wid]), countDown = typeof wname === 'string' ? 4 : 9; + title = typeof wname === "function" ? '二次验证信息,批量删除站点' : '二次验证信息,删除站点 [ ' + wname + ' ]'; + var loadT = bt.load('正在检测站点数据信息,请稍候...') + bt.send('check_del_data', 'site/check_del_data', { ids: ids }, function (res) { + loadT.close() + layer.open({ + type: 1, + title: title, + closeBtn: 2, + skin: 'verify_site_layer_info', + area: '740px', + content: '
' + + '' + + '
堡塔温馨提示您,请冷静几秒钟,确认以下要删除的数据。
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
风险事项:当前未开启数据库回收站功能,删除数据库后,数据库将永久消失!
' + + '
风险事项:当前未开启文件回收站功能,删除站点目录后,站点目录将永久消失!
' + + '
注意:请仔细阅读以上要删除信息,防止网站数据被误删
' + + '
', + // recycle_bin_db_open && + // recycle_bin_open && + btn: ['确认删除', '取消删除'], + success: function (layers) { + var html = '', rdata = res.data; + for (var i = 0; i < rdata.length; i++) { + var item = rdata[i], newTime = parseInt(new Date().getTime() / 1000), + t_icon = ''; + + site_html = (function (item) { + if (!is_path) return '' + var is_time_rule = (newTime - item.st_time) > (86400 * 30) && (item.total > 1024 * 10), + is_path_rule = res.file_size <= item.total, + dir_time = bt.format_data(item.st_time, 'yyyy-MM-dd'), + dir_size = bt.format_size(item.total); + + var f_html = ' ' + (item.limit ? '大于50MB' : dir_size) + ' ' + (is_path_rule ? t_icon : ''); + var f_title = (is_path_rule ? '注意:此目录较大,可能为重要数据,请谨慎操作.\n' : '') + '目录:' + item.path + '(' + (item.limit ? '大于' : '') + dir_size + ')'; + + return '
' + + '站点名:' + item.name + '' + + '目录:' + item.path + ' (' + f_html + ')' + + '创建时间:' + dir_time + '' + + '
' + }(item)), + database_html = (function (item) { + if (!is_database || !item.database) return ''; + var is_time_rule = (newTime - item.st_time) > (86400 * 30) && (item.total > 1024 * 10), + is_database_rule = res.db_size <= item.database.total, + database_time = bt.format_data(item.database.st_time, 'yyyy-MM-dd'), + database_size = bt.format_size(item.database.total); + + var f_size = ' ' + database_size + ' ' + (is_database_rule ? t_icon : ''); + var t_size = '注意:此数据库较大,可能为重要数据,请谨慎操作.\n数据库:' + database_size; + + return '
' + + '数据库:' + item.database.name + '' + + '大小:' + f_size + '' + + '创建时间:' + database_time + '' + + '
' + }(item)) + if ((site_html + database_html) !== '') html += '
' + site_html + database_html + '
'; + } + if (html === '') html = '
无数据
' + $('.check_layer_content').html(html) + }, + yes: function (indes, layers) { + if (typeof wname === "function") { + 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('可用端口范围:1-65535', { icon: 2 }); + // 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/PluginLoader.py b/wiki/files/win/PluginLoader.py new file mode 100644 index 0000000..e7ffd52 --- /dev/null +++ b/wiki/files/win/PluginLoader.py @@ -0,0 +1,122 @@ +#coding: utf-8 +import public,os,sys,json + +#获取插件列表(0/1) +def get_plugin_list(force = 0): + api_root_url = 'https://api.bt.cn' + api_url = api_root_url+ '/wpanel/get_plugin_list' + cache_file = 'data/plugin_list.json' + + if force==0 and os.path.exists(cache_file): + jsonData = public.readFile(cache_file) + softList = json.loads(jsonData) + else: + try: + jsonData = public.HttpGet(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(cache_file, jsonData) + return softList + +#获取授权状态() 返回:0.免费版 1.专业版 2.企业版 -1.获取失败 +def get_auth_state(): + try: + softList = get_plugin_list() + if softList['ltd'] > -1: + return 2 + elif softList['pro'] > -1: + return 1 + else: + return 0 + except: + return -1 + +#执行插件方法(插件名,方法名,参数) +def plugin_run(plugin_name, def_name, args): + if not plugin_name or not def_name: return public.returnMsg(False,'插件名称和插件方法名称不能为空!') + if not path_check(plugin_name) or not path_check(def_name): return public.returnMsg(False,'插件名或方法名不能包含特殊符号!') + p_path = public.get_plugin_path(plugin_name) + if not os.path.exists(p_path + '/index.php') and not os.path.exists(p_path + '/%s_main.py' % plugin_name): return public.returnMsg(False,'插件不存在!') + + is_php = os.path.exists(p_path + '/index.php') + if not is_php: + sys.path.append(p_path) + plugin_main = __import__(plugin_name + '_main') + try: + if sys.version_info[0] == 2: + reload(plugin_main) + else: + from imp import reload + reload(plugin_main) + except: + pass + plu = eval('plugin_main.' + plugin_name + '_main()') + if not hasattr(plu, def_name): + return public.returnMsg(False,'在[%s]插件中找不到[%s]方法' % (plugin_name,def_name)) + + if 'plugin_get_object' in args and args.plugin_get_object == 1: + if not is_php: + return getattr(plu, def_name) + else: + return None + else: + if not is_php: + data = eval('plu.' + def_name + '(args)') + else: + import panelPHP + args.s = def_name + args.name = plugin_name + data = panelPHP.panelPHP(plugin_name).exec_php_script(args) + return data + +#执行模块方法(模块名,方法名,参数) +def module_run(mod_name, def_name, args): + if not mod_name or not def_name: return public.returnMsg(False,'模块名称和模块方法名称不能为空!') + if not path_check(mod_name) or not path_check(def_name): return public.returnMsg(False,'模块名或方法名不能包含特殊符号!') + + if 'model_index' in args: + if args.model_index: + mod_file = "{}/{}Model/{}Model.py".format(public.get_class_path(),args.model_index,mod_name) + else: + mod_file = "{}/projectModel/{}Model.py".format(public.get_class_path(),mod_name) + else: + module_list = get_module_list() + for module_dir in module_list: + mod_file = "{}/{}/{}Model.py".format(public.get_class_path(),module_dir,mod_name) + if os.path.exists(mod_file): break + + if not os.path.exists(mod_file): + return public.returnMsg(False,'模块[%s]不存在' % mod_name) + + def_object = public.get_script_object(mod_file) + if not def_object: return public.returnMsg(False,'模块[%s]不存在!' % mod_name) + try: + run_object = getattr(def_object.main(),def_name,None) + except: + return public.returnMsg(False,'模块入口实例化失败' % mod_name) + if not run_object: return public.returnMsg(False,'在[%s]模块中找不到[%s]方法' % (mod_name,def_name)) + if 'module_get_object' in args and args.module_get_object == 1: + return run_object + result = run_object(args) + return result + +#获取模块文件夹列表 +def get_module_list(): + list = [] + class_path = public.get_class_path() + f_list = os.listdir(class_path) + for fname in f_list: + f_path = class_path+'/'+fname + if os.path.isdir(f_path) and len(fname) > 6 and fname.find('.') == -1 and fname.find('Model') != -1: + list.append(fname) + return list + +#检查路径是否合法 +def path_check(path): + list = ["./","..",",",";",":","?","'","\"","<",">","|","\\","\n","\r","\t","\b","\a","\f","\v","*","%","&","$","#","@","!","~","`","^","(",")","+","=","{","}","[","]"] + for i in path: + if i in list: + return False + return True diff --git a/wiki/files/win/bt.js b/wiki/files/win/bt.js new file mode 100644 index 0000000..9b353b8 --- /dev/null +++ b/wiki/files/win/bt.js @@ -0,0 +1,344 @@ +/* + *宝塔面板去除各种计算题与延时等待 +*/ +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 title = '', + tips = '是否确认【删除数据库】,删除后可能会影响业务使用!'; + if(obj && obj.db_type > 0) tips = '远程数据库不支持数据库回收站,删除后将无法恢复,请谨慎操作'; + 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) + var arrs = wid instanceof Array ? wid : [wid] + var ids = JSON.stringify(arrs), countDown = 9; + if (arrs.length == 1) countDown = 4 + title = typeof dbname === "function" ?'二次验证信息,批量删除数据库':'二次验证信息,删除数据库 [ ' + dbname + ' ]'; + var loadT = bt.load('正在检测数据库数据信息,请稍后...') + + bt_tools.send({url:'database/'+bt.data.db_tab_name+'/check_del_data',data:{data:JSON.stringify({ids: ids})}},function(res){ + loadT.close() + layer.open({ + type:1, + title:title, + closeBtn: 2, + skin: 'verify_site_layer_info', + area: '740px', + content: '
' + + '' + + '
堡塔温馨提示您,请冷静几秒钟,确认是否要删除以下数据。
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
风险事项:当前未开启数据库回收站功能,删除数据库后,数据库将永久消失!
' + + '
注意:请仔细阅读以上要删除信息,防止数据库被误删
' + + '
', + btn: ['确认删除', '取消删除'], + success: function (layers) { + var html = '', rdata = res.data; + var filterData = rdata.filter(function(el){ + return ids.indexOf(el.id) != -1 + }) + for (var i = 0; i < filterData.length; i++) { + var item = filterData[i], newTime = parseInt(new Date().getTime() / 1000), + t_icon = ''; + + database_html = (function(item){ + var is_time_rule = (newTime - item.st_time) > (86400 * 30) && (item.total > 1024 * 10), + is_database_rule = res.db_size <= item.total, + database_time = bt.format_data(item.st_time, 'yyyy-MM-dd'), + database_size = bt.format_size(item.total); + + var f_size = ' ' + database_size + ' ' + (is_database_rule ? t_icon : ''); + var t_size = '注意:此数据库较大,可能为重要数据,请谨慎操作.\n数据库:' + database_size; + + return '
' + + '数据库:' + item.name + '' + + '大小:' + f_size +'' + + '创建时间:' + database_time + '' + + '
' + }(item)) + if(database_html !== '') html += '
' + database_html +'
'; + } + if(html === '') html = '
无数据
' + $('.check_layer_content').html(html) + }, + yes:function(indes,layers){ + 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 + ' ]'; + recycle_bin_open = bt.get_cookie("is_recycle") || bt.get_cookie("is_recycle") == null ? true : false + 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) + var arrs = wid instanceof Array ? wid : [wid] + var ids = JSON.stringify(arrs), countDown = 9; + if (arrs.length == 1) countDown = 4 + title = typeof wname === "function" ? '二次验证信息,批量删除站点' : '二次验证信息,删除站点 [ ' + wname + ' ]'; + var loadT = bt.load('正在检测站点数据信息,请稍后...') + bt.send('check_del_data', 'site/check_del_data', { ids: ids }, function (res) { + loadT.close() + layer.open({ + type: 1, + title: title, + closeBtn: 2, + skin: 'verify_site_layer_info', + area: '740px', + content: '
' + + '' + + '
堡塔温馨提示您,请冷静几秒钟,确认以下要删除的数据。
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
风险事项:当前未开启数据库回收站功能,删除数据库后,数据库将永久消失!
' + + '
风险事项:当前未开启文件回收站功能,删除站点目录后,站点目录将永久消失!
' + + '
注意:请仔细阅读以上要删除信息,防止网站数据被误删
' + + '
', + // recycle_bin_db_open && + // recycle_bin_open && + btn: ['确认删除', '取消删除'], + success: function (layers) { + var html = '', rdata = res.data; + for (var i = 0; i < rdata.length; i++) { + var item = rdata[i], newTime = parseInt(new Date().getTime() / 1000), + t_icon = ''; + + site_html = (function (item) { + if (!is_path) return '' + var is_time_rule = (newTime - item.st_time) > (86400 * 30) && (item.total > 1024 * 10), + is_path_rule = res.file_size <= item.total, + dir_time = bt.format_data(item.st_time, 'yyyy-MM-dd'), + dir_size = bt.format_size(item.total); + + var f_html = ' ' + dir_size + ' ' + (is_path_rule ? t_icon : ''); + var f_title = (is_path_rule ? '注意:此目录较大,可能为重要数据,请谨慎操作.\n' : '') + '目录:' + item.path + '(' + (item.limit ? '大于' : '') + dir_size + ')'; + + return '
' + + '站点名:' + item.name + '' + + '目录:' + item.path + ' (' + f_html + ')' + + '创建时间:' + dir_time + '' + + '
' + }(item)), + database_html = (function (item) { + if (!is_database || !item.database) return ''; + var is_time_rule = (newTime - item.st_time) > (86400 * 30) && (item.total > 1024 * 10), + is_database_rule = res.db_size <= item.database.total, + database_time = bt.format_data(item.database.st_time, 'yyyy-MM-dd'), + database_size = bt.format_size(item.database.total); + + var f_size = ' ' + database_size + ' ' + (is_database_rule ? t_icon : ''); + var t_size = '注意:此数据库较大,可能为重要数据,请谨慎操作.\n数据库:' + database_size; + + return '
' + + '数据库:' + item.database.name + '' + + '大小:' + f_size + '' + + '创建时间:' + database_time + '' + + '
' + }(item)) + if ((site_html + database_html) !== '') html += '
' + site_html + database_html + '
'; + } + if (html === '') html = '
无数据
' + $('.check_layer_content').html(html) + }, + yes: function (indes, layers) { + if (typeof wname === "function") { + 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(bt.get_cookie("is_recycle") || bt.get_cookie("is_recycle")==null){ + $('[name="path"]').attr('checked',true) + }else{ + $('[name="path"]').removeProp('checked'); + } + } +} +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/update.md b/wiki/update.md new file mode 100644 index 0000000..0e5fd77 --- /dev/null +++ b/wiki/update.md @@ -0,0 +1,112 @@ +# Linux面板官方更新包修改记录 + +查询最新版本号:https://www.bt.cn/api/panel/get_version?is_version=1 + +官方更新包下载链接:http://download.bt.cn/install/update/LinuxPanel-版本号.zip + +假设搭建的宝塔第三方云端网址是 http://www.example.com + +- 将class文件夹里面所有的.so文件删除 + +- 将linux/PluginLoader.py复制到class文件夹 + +- 批量解密模块文件:执行 php think decrypt classdir <面板class文件夹路径> + +- 全局搜索替换 https://api.bt.cn => http://www.example.com + +- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py、scanningModel.py、ipsModel.py) + +- 全局搜索替换 https://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh + +- class/ajax.py 文件 \#是否执行升级程序 下面的 public.get_url() 改成 public.GetConfigValue('home') + + class/jobs.py 文件 \#尝试升级到独立环境 下面的 public.get_url() 改成 public.GetConfigValue('home') + + class/system.py 文件 RepPanel和UpdatePro方法内的 public.get_url() 改成 public.GetConfigValue('home') + +- 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 + + 在 def get_improvement(): 这一行下面加上 return False + + 在free_login_area方法内get_free_ips_area替换成get_ips_area + +- class/panelPlugin.py 文件,download_icon方法内替换 public.GetConfigValue('home') => 'https://www.bt.cn' + + 删除public.total_keyword(get.query)这一行 + + set_pyenv方法内,temp_file = public.readFile(filename)这行代码下面加上 + + ```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') + temp_file = temp_file.replace('https://download.bt.cn/install/public.sh', 'http://www.example.com/install/public.sh') + ``` + +- class/plugin_deployment.py 文件,SetupPackage方法内替换 public.GetConfigValue('home') => 'https://www.bt.cn' + +- install/install_soft.sh 在bash执行之前加入以下代码 + + ```shell + sed -i "s/http:\/\/download.bt.cn\/install\/public.sh/http:\/\/www.example.com\/install\/public.sh/" lib.sh + sed -i "s/https:\/\/download.bt.cn\/install\/public.sh/http:\/\/www.example.com\/install\/public.sh/" lib.sh + sed -i "/wget -O Tpublic.sh/d" $name.sh + ``` + +- install/public.sh 用官网最新版的[public.sh](http://download.bt.cn/install/public.sh)替换,并去除最下面bt_check一行 + +- 去除无用的定时任务:task.py 文件 删除以下几行 + + "check_panel_msg": check_panel_msg, + +- 去除WebRTC连接:BTPanel/static/js/public.js 删除stun.start();这一行 + +- 去除首页广告:BTPanel/static/js/index.js 文件删除最下面index.recommend_paid_version()这一行 + +- 去除首页自动检测更新,避免频繁请求云端:BTPanel/static/js/index.js 文件注释掉bt.system.check_update这一段代码外的setTimeout + +- 去除内页广告:BTPanel/templates/default/layout.html 删除getPaymentStatus();这一行 + +- 删除问卷调查:BTPanel/templates/default/layout.html 删除if(window.localStorage.getItem('panelNPS') == null)以及下面的行 + +- [可选]去除各种计算题:复制bt.js到 BTPanel/static/ ,在 BTPanel/templates/default/layout.html 的\前面加入 + + ```javascript + + ``` + +- [可选]去除创建网站自动创建的垃圾文件:在class/panelSite.py,分别删除 + + htaccess = self.sitePath+'/.htaccess' + + index = self.sitePath+'/index.html' + + doc404 = self.sitePath+'/404.html' + + 这3行及分别接下来的4行代码 + +- [可选]关闭未绑定域名提示页面:在class/panelSite.py,root /www/server/nginx/html改成return 400 + +- [可选]关闭自动生成访问日志:在 BTPanel/\_\_init\_\_.py 删除public.write_request_log()这一行 + +- [可选]删除小图标广告:在BTPanel/static/js/site.js,删除“WAF防火墙,保护网站安全”对应的html标签,files.js,删除“开启保护,文件无法编辑”对应的html标签 + + +解压安装包panel6.zip,将更新包改好的文件覆盖到里面,然后重新打包,即可更新安装包。( + +别忘了删除class文件夹里面所有的.so文件) + diff --git a/wiki/updatewin.md b/wiki/updatewin.md new file mode 100644 index 0000000..95f4ca3 --- /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版宝塔由于加密文件太多,无法全部解密,因此无法做到全开源。 + +- 删除PluginLoader.pyd,将win/PluginLoader.py复制到class文件夹 + +- 全局搜索替换 https://api.bt.cn => http://www.example.com + +- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除ipsModel.py) + +- 全局搜索替换 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/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()这一行以及index.consultancy_services()这一行 + +- 去除首页自动检测更新,避免频繁请求云端:BTPanel/static/js/index.js 文件注释掉bt.system.check_update这一段代码外的setTimeout + +- 去除内页广告:BTPanel/templates/default/layout.html 删除getPaymentStatus();这一行 + +- [可选]去除各种计算题:复制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') 这一行 + +- [可选]关闭自动生成访问日志:在 BTPanel/\_\_init\_\_.py 删除public.write_request_log()这一行 +