commit 23b52ec3f789d22e80f6aef68cce7bf7a87440fe Author: flucont Date: Sat Jun 4 23:22:19 2022 +0800 update diff --git a/.env b/.env new file mode 100644 index 0000000..f0ccd37 --- /dev/null +++ b/.env @@ -0,0 +1,18 @@ +APP_DEBUG = false + +[APP] +DEFAULT_TIMEZONE = Asia/Shanghai + +[DATABASE] +TYPE = mysql +HOSTNAME = localhost +DATABASE = btcloud +USERNAME = btcloud +PASSWORD = 123456 +HOSTPORT = 3306 +CHARSET = utf8mb4 +PREFIX = cloud_ +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..a65b172 --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +# 宝塔面板第三方云端 +这是一个用php开发的宝塔面板第三方云端站点程序。 + +你可以使用此程序搭建属于自己的宝塔面板第三方云端,实现最新版宝塔面板私有化部署,不与宝塔官方接口通信,满足隐私安全合规需求。同时还可以去除面板强制绑定账号,DIY面板功能等。 + +网站后台管理可一键同步宝塔官方的插件列表与增量更新插件包,还有云端使用记录、IP黑白名单、操作日志、定时任务等功能。 + +本项目自带的宝塔安装包和更新包是7.9.2最新版,已修改适配此第三方云端,并且全开源,无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` +- 导入`install.sql`到数据库 +- 在`.env`里面修改数据库信息,包括数据库地址(HOSTNAME)、数据库名(DATABASE)、用户名(USERNAME)、密码(PASSWORD) +- 访问`/admin`进入网站后台,默认管理员用户名密码:admin/123456 + +## 使用方法 + +- 在`系统基本设置`修改宝塔面板接口设置。你需要一个官方最新脚本安装并绑定账号的宝塔面板,用于获取最新插件列表及插件包。并根据界面提示安装好专用插件。 +- 在`定时任务设置`执行所显示的命令从宝塔官方获取最新的插件列表并批量下载插件包(增量更新)。当然你也可以去插件列表,一个一个点击下载。 +- 在public/install/src和update文件夹里面分别是bt安装包和更新包,解压后源码里面全部的 www.example.com 替换成你自己搭建的云端域名,然后重新打包。可使用VSCode等支持批量替换的软件。 +- 将bt安装脚本public/install/install_6.0.sh和更新脚本update6.sh里面的 www.example.com 替换成你自己搭建的云端域名。 +- 访问网站`/download`查看使用此第三方云端的一键安装脚本 + +## 其他 + +- [bt官方更新包修改记录](./wiki/update.md) + + + 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('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(!$this->refresh_plugin_list($input, $output)){ + return; + } + + $count = 0; + + $type = intval(config_get('updateall_type')); + + $json_arr = Plugins::get_plugin_list(); + //循环下载缺少的插件 + 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'])){ + $this->download_plugin($input, $output, $plugin['name'], $ver); + sleep(1); + $count++; + } + }else{ + if(!file_exists(get_data_dir().'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ + $this->download_plugin($input, $output, $plugin['name'], $ver); + sleep(1); + $count++; + } + } + } + } + + $imgcount = 0; + //循环下载缺少的插件图片 + foreach($json_arr['list'] as $plugin){ + if(isset($plugin['min_image']) && strpos($plugin['min_image'], 'fname=')){ + $fname = substr($plugin['min_image'], strpos($plugin['min_image'], '?fname=')+7); + if(!file_exists(get_data_dir().'plugins/other/'.$fname)){ + $this->download_plugin_image($input, $output, $fname); + sleep(1); + $imgcount++; + } + } + } + + $output->writeln('本次成功下载'.$count.'个插件'.($imgcount>0?','.$imgcount.'个图片':'')); + config_set('runtime', date('Y-m-d H:i:s')); + } + + private function refresh_plugin_list(Input $input, Output $output){ + try{ + Plugins::refresh_plugin_list(); + Db::name('log')->insert(['uid' => 1, 'action' => '刷新插件列表', 'data' => '刷新插件列表成功', 'addtime' => date("Y-m-d H:i:s")]); + $output->writeln('刷新插件列表成功'); + 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){ + $fullname = $plugin_name.'-'.$version; + try{ + Plugins::download_plugin($plugin_name, $version); + Db::name('log')->insert(['uid' => 1, 'action' => '下载插件', 'data' => $fullname, 'addtime' => date("Y-m-d H:i:s")]); + $output->writeln('下载插件: '.$fullname.' 成功'); + 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..58499cd --- /dev/null +++ b/app/common.php @@ -0,0 +1,176 @@ +getRootPath().'data/'; +} + + +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 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..fa70c16 --- /dev/null +++ b/app/controller/Admin.php @@ -0,0 +1,341 @@ +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){ + $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 plugins_data(){ + $type = input('post.type/d'); + $keyword = input('post.keyword', null, 'trim'); + + $json_arr = Plugins::get_plugin_list(); + 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().'plugins/package/'.$plugin['name'].'-'.$ver.'.zip')){ + $status = true; + } + $versions[] = ['status'=>$status, 'type'=>0, 'version'=>$ver]; + } + } + $list[] = [ + 'id' => $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'); + if(!$name || !$version) return json(['code'=>-1, 'msg'=>'参数不能为空']); + try{ + Plugins::download_plugin($name, $version); + Db::name('log')->insert(['uid' => 0, 'action' => '下载插件', 'data' => $name.'-'.$version, 'addtime' => date("Y-m-d H:i:s")]); + return json(['code'=>0,'msg'=>'下载成功']); + }catch(\Exception $e){ + return json(['code'=>-1, 'msg'=>$e->getMessage()]); + } + } + + public function refresh_plugins(){ + try{ + Plugins::refresh_plugin_list(); + Db::name('log')->insert(['uid' => 0, 'action' => '刷新插件列表', 'data' => '刷新插件列表成功', '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']); + } +} \ No newline at end of file diff --git a/app/controller/Api.php b/app/controller/Api.php new file mode 100644 index 0000000..180205d --- /dev/null +++ b/app/controller/Api.php @@ -0,0 +1,251 @@ +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); + } + + //下载插件包 + public function download_plugin(){ + $plugin_name = input('post.name'); + $version = input('post.version'); + if(!$plugin_name || !$version){ + return '参数不能为空'; + } + if(!preg_match('/^[a-zA-Z0-9_]+$/', $plugin_name) || !preg_match('/^[0-9.]+$/', $version)){ + return '参数不正确'; + } + if(!$this->checklist()) '你的服务器被禁止使用此云端'; + $filepath = get_data_dir().'plugins/package/'.$plugin_name.'-'.$version.'.zip'; + 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'); + if(!$plugin_name || !$version){ + return '参数不能为空'; + } + if(!preg_match('/^[a-zA-Z0-9_]+$/', $plugin_name) || !preg_match('/^[0-9.]+$/', $version)){ + return '参数不正确'; + } + if(!$this->checklist()) '你的服务器被禁止使用此云端'; + $filepath = get_data_dir().'plugins/main/'.$plugin_name.'-'.$version.'.dat'; + if(file_exists($filepath)){ + $filename = $plugin_name.'_main.py'; + $this->output_file($filepath, $filename); + }else{ + $filepath = get_data_dir().'plugins/folder/'.$plugin_name.'-'.$version.'/'.$plugin_name.'/'.$plugin_name.'_main.py'; + 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(){ + $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 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); + } + + //获取内测版更新日志 + 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 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(){ + return json(['status'=>false, 'msg'=>'不支持绑定宝塔官网账号', 'data'=>'5b5d']); + } + + 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/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..b429d58 --- /dev/null +++ b/app/lib/Btapi.php @@ -0,0 +1,203 @@ +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; + } + + + 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 = 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); + 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..1775695 --- /dev/null +++ b/app/lib/Plugins.php @@ -0,0 +1,229 @@ +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); + }else{ + throw new Exception('获取插件列表失败:'.($result['msg']?$result['msg']:'面板连接失败')); + } + } + + //保存插件列表 + private static function save_plugin_list($data){ + $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; + if($data['pro']>-1) $data['pro'] = 0; + if($data['ltd']>-1) $data['ltd'] = strtotime('+1 year'); + $json_file = get_data_dir().'config/plugin_list.json'; + if(!file_put_contents($json_file, json_encode($data))){ + throw new Exception('保存插件列表失败,文件无写入权限'); + } + } + + //获取插件列表 + public static function get_plugin_list(){ + $json_file = get_data_dir().'config/plugin_list.json'; + 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){ + $json_arr = self::get_plugin_list(); + 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){ + $plugin_info = Plugins::get_plugin_info($plugin_name); + if(!$plugin_info) throw new Exception('未找到该插件信息'); + if($plugin_info['type'] == 10 && isset($plugin_info['versions'][0]['download'])){ + $fname = $plugin_info['versions'][0]['download']; + $filemd5 = $plugin_info['versions'][0]['md5']; + Plugins::download_plugin_other($fname, $filemd5); + 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); + } + }else{ + Plugins::download_plugin_package($plugin_name, $version); + } + } + + //下载插件包 + public static function download_plugin_package($plugin_name, $version){ + $filepath = get_data_dir().'plugins/package/'.$plugin_name.'-'.$version.'.zip'; + $btapi = self::get_btapi(); + $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().'plugins/folder/'.$plugin_name.'-'.$version); + $zip->close(); + $main_filepath = get_data_dir().'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); + $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){ + $filepath = get_data_dir().'plugins/main/'.$plugin_name.'-'.$version.'.dat'; + $btapi = self::get_btapi(); + $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){ + $btapi = self::get_btapi(); + $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 download_plugin_other($fname, $filemd5 = null){ + $filepath = get_data_dir().'plugins/other/'.$fname; + @mkdir(dirname($filepath), 0777, true); + $btapi = self::get_btapi(); + $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){ + unlink($filepath); + throw new Exception('插件文件MD5校验失败'); + } + 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('获取文件失败:未知错误'); + } + } + } + +} \ 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..82e520b --- /dev/null +++ b/app/middleware/LoadConfig.php @@ -0,0 +1,29 @@ +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/service.php b/app/service.php new file mode 100644 index 0000000..db1ee6a --- /dev/null +++ b/app/service.php @@ -0,0 +1,9 @@ + +.query-title { + background-color:#f5fafe; + word-break: keep-all; +} +.query-result{ + word-break: break-all; +} + +
+
+
+

后台管理首页

+
+
宝塔插件统计:共有 {$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..74f3baf --- /dev/null +++ b/app/view/admin/layout.html @@ -0,0 +1,67 @@ + + + + + + + {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..67c113e --- /dev/null +++ b/app/view/admin/login.html @@ -0,0 +1,97 @@ + + + + + + + 管理员登录 + + + + + + + +
+
+
+

管理员登录

+
+
+
+ + +

+
+ + +

+
+ + + + + +

+
+
+
+
+
+
+
+
+ + + + \ 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..c0899ae --- /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/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..e5c6ef0 --- /dev/null +++ b/app/view/admin/set.html @@ -0,0 +1,211 @@ +{extend name="admin/layout" /} +{block name="title"}系统设置{/block} +{block name="main"} +
+
+{if $mod=='sys'} +
+

系统基本设置

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

宝塔面板接口设置

+
+
+

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

+

下载专用插件,在面板【软件商店】->【第三方应用】,点击【导入插件】,导入该专用插件,然后重启一次面板

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

定时任务说明

+
+
+
使用以下命令可以从宝塔官方获取最新的插件列表并批量下载插件包(增量更新)。
你也可以将此命令添加到crontab以使此云端的插件保持最新,建议1天执行1次。
+
上次运行时间:{$runtime|raw}
+
php {:app()->getRootPath()}think updateall

+
+
+
+
+

定时任务设置

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

管理账号设置

+
+
+
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+{/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..4463b9f --- /dev/null +++ b/app/view/index/download.html @@ -0,0 +1,159 @@ + + + + + + + + 宝塔面板安装脚本 + + + + + +
+
+
+
+

宝塔面板安装脚本

+
+

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

+

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

+
+ +
+
+
+
+
+
+
使用此云端的宝塔面板(版本:{:config_get('new_version')})
+
+
+ 使用 SSH 连接工具,如 + PUTTY + 连接到您的 Linux 服务器后, + 挂载磁盘 + ,根据系统执行相应命令开始安装: +
+
+ 一键安装脚本 +
+
wget -O install.sh {$siteurl}/install/install_6.0.sh && sh install.sh
+ 复制 +
+
+
+ 一键更新脚本 +
+
curl {$siteurl}/install/update6.sh|bash
+ 复制 +
+
+
+

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

+

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

+

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

+
+
+
+
+
+
+
更新日志
+
+
+

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

+
+
+
+
+
+ +
+
+
+ +
+

+ Copyright © 2022 宝塔面板安装脚本 +

+
+
+
+
+ + + + + + + + + + \ 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..ed1aa26 --- /dev/null +++ b/config/console.php @@ -0,0 +1,10 @@ + [ + 'updateall' => 'app\command\UpdateAll', + ], +]; 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/plugin_list.json b/data/config/plugin_list.json new file mode 100644 index 0000000..b454041 --- /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":"\u7cfb\u7edf\u5de5\u5177","title_en":"Tools","sort":3,"ps":"\u7cfb\u7edf\u5de5\u5177","ps_en":"System tools","icon":"icon","panel_en":1},{"id":7,"title":"\u5b9d\u5854\u63d2\u4ef6","title_en":"Plug-ins","sort":4,"ps":"\u5b9d\u5854\u63d2\u4ef6","ps_en":"aaPanel plug-ins","icon":"icon","panel_en":1},{"id":8,"title":"\u4e13\u4e1a\u7248\u63d2\u4ef6","title_en":"","sort":5,"ps":"\u4e13\u4e1a\u7248\u63d2\u4ef6","ps_en":"","icon":"icon","panel_en":0},{"id":12,"title":"\u4f01\u4e1a\u7248\u63d2\u4ef6","title_en":"","sort":6,"ps":"\u4f01\u4e1a\u7248\u63d2\u4ef6","ps_en":"","icon":"","panel_en":0},{"id":10,"title":"\u7b2c\u4e09\u65b9\u5e94\u7528","title_en":"Third-party Plug-ins","sort":7,"ps":"\u7b2c\u4e09\u65b9\u5e94\u7528","ps_en":"Third-party Plug-ins","icon":"icon","panel_en":1},{"id":11,"title":"\u4e00\u952e\u90e8\u7f72","title_en":"","sort":8,"ps":"\u4e00\u952e\u90e8\u7f72\u7b2c\u4e09\u65b9\u6e90\u7801","ps_en":"","icon":"","panel_en":0}],"list":[{"id":36,"os":"Linux","pid":100000010,"type":8,"sort":1,"price":39.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\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":"","ex2":"","ex3":"","versions":[{"id":227,"soft_id":36,"m_version":"9","version":"0.2","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"2022\u5e745-24 16:40 \u66f4\u65b0\n1.\u4f18\u5316\u6027\u80fd\u63d0\u5347100%\n2.\u4f18\u5316\u5f02\u5e38\u5904\u7406\n3.\u4f18\u5316CC \u5904\u7406\u903b\u8f91","os_limit":0,"beta":0,"update_time":1653273599},{"id":226,"soft_id":36,"m_version":"9","version":"0.1","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"2022-5-12\n1.\u4f18\u5316\u5b89\u88c5\u6210\u529f\u7387\n2.\u4fee\u590d\u5df2\u77e5\u9519\u8bef","os_limit":0,"beta":0,"update_time":1652323826},{"id":199,"soft_id":36,"m_version":"9","version":"0","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"2022-1-21 \u66f4\u65b0\n1.\u66f4\u65b0\u8718\u86db\u6c60\u5728\u7ebf\u66f4\u65b0\n2.\u4f18\u5316\u8718\u86db\u6c60\n3.\u589e\u52a0\u8718\u86db\u62e6\u622a","os_limit":0,"beta":0,"update_time":1642477281},{"id":173,"soft_id":36,"m_version":"8","version":"9.9","dependnet":"nginx","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1634981478}],"endtime":0},{"id":34,"os":"Linux","pid":100000014,"type":8,"sort":1,"price":19.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":"","versions":[{"id":225,"soft_id":34,"m_version":"6","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u65b0\u589e\u771f\u5047\u8718\u86db\u8bf7\u6c42\u533a\u5206\u3002\n2. \u4fee\u590d\u548c\u8c03\u6574\u5386\u53f2\u65e5\u5fd7\u8fc1\u79fb\u51fa\u73b0\u7684\u95ee\u9898\u3002","os_limit":0,"beta":0,"update_time":1652322170},{"id":201,"soft_id":34,"m_version":"6","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u65b0\u589e\u5386\u53f2\u7f51\u7ad9\u65e5\u5fd7\u66f4\u6362\u76ee\u5f55\uff0c\u4e3a\/www\/server\/total\/logs\u76ee\u5f55\u5360\u7528\u8fc7\u5927\u95ee\u9898\u63d0\u4f9b\u4e00\u79cd\u89e3\u51b3\u65b9\u6848\u3002\n2. \u8c03\u6574\u5b9a\u65f6\u4efb\u52a1\u8c03\u7528\u63d2\u4ef6\u673a\u5236\uff0c\u4fee\u590d\u63d0\u793a\u63d2\u4ef6\u672a\u6388\u6743\u95ee\u9898\u3002\n3. IP\u7edf\u8ba1\u7f16\u53f7\u4e71\u5e8f\u3002\n4. \u7f51\u7ad9\u65e5\u5fd7\u65b0\u589eIPv6\u5730\u5740\u3001\u5ba2\u6237\u7aef\u8bf7\u6c42\u7aef\u53e3\uff08\u7b49\u4fdd\u5fc5\u5907\uff09\u663e\u793a\u3002\n5. \u91cd\u6784\u7edf\u8ba1\u62a5\u544a\u751f\u6210\u903b\u8f91\uff0c\u89e3\u51b3\u7edf\u8ba1\u62a5\u544a\u751f\u6210\u9057\u6f0f\u95ee\u9898\u3002\n6. \u91cd\u6784\u6392\u9664IP\u9a8c\u8bc1\u65b9\u5f0f\uff0c\u89e3\u51b3\u90e8\u5206\u7ad9\u70b9\u6392\u9664IP\u65e0\u6548\u95ee\u9898\u3002\n7. \u4fee\u590d\u65e5\u5fd7\u6e05\u7406\u76f8\u5173bug\u3002","os_limit":0,"beta":0,"update_time":1644811619},{"id":14,"soft_id":34,"m_version":"6","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u96c6\u6210IP\u7cbe\u51c6\u6570\u636e\u5305\u3002\n2. \u4fee\u590dIP\u7edf\u8ba1\u5386\u53f2\u6570\u636e\u62a5\u9519\u3002\n3. \u7edf\u8ba1\u62a5\u544a\u65b0\u589e\u4e0a\u5e74\u5ea6\u67e5\u8be2\u3002\n4. \u4fee\u590d\u672a\u7ed1\u5b9a\u57df\u540d\u8bbf\u95ee\u7edf\u8ba1\u3002\n5. \u5176\u4ed6\u5df2\u77e5bug\u3002","os_limit":0,"beta":0,"update_time":1625046023}],"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":"","ex3":"","versions":[{"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":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":"","versions":[{"id":206,"soft_id":107,"m_version":"4","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u56e0\u7f51\u7ad9\u540d\u79f0\u8fc7\u957f\u5bfc\u81f4\u9519\u8bef\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1645083683},{"id":131,"soft_id":107,"m_version":"4","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u9ed8\u8ba4\u4e0d\u7f13\u5b58\u54cd\u5e94\u5934\u4e2d\u5305\u542bCache-Control:no-cache\u7684\u54cd\u5e94","os_limit":0,"beta":0,"update_time":1628911186},{"id":113,"soft_id":107,"m_version":"4","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u5b89\u88c5nginx\u9632\u706b\u5899\u540e\u7f51\u7ad9\u52a0\u901f\u65e0\u6548\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1627354351},{"id":80,"soft_id":107,"m_version":"3","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u4e0enginx\u9632\u706b\u5899\u540c\u65f6\u5b89\u88c5\u65f6\u5bfc\u81f4\u7684500\u9519\u8bef","os_limit":0,"beta":0,"update_time":1626227162}],"endtime":0},{"id":35,"os":"Linux","pid":100000012,"type":8,"sort":2,"price":19.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 >\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":"","ex3":"","versions":[{"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},{"id":214,"soft_id":35,"m_version":"8","version":"9","dependnet":"memcached","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1647591032},{"id":184,"soft_id":35,"m_version":"8","version":"8","dependnet":"memcached","mem_limit":32,"cpu_limit":1,"update_msg":"1.\u4f18\u5316POST\u5904\u7406\u903b\u8f91\n2.\u4f18\u5316from-data\u5904\u7406\u903b\u8f91\n3.\u4f18\u5316\u4e8c\u8fdb\u5236\u6d41\u7a0b\u5904\u7406\n4.\u4f18\u5316\u9519\u8bef\u62a5\u9519\u673a\u5236\n5.\u4f18\u5316\u8bed\u4e49\u5206\u6790\u6d41\u7a0b","os_limit":0,"beta":0,"update_time":1640765099},{"id":20,"soft_id":35,"m_version":"8","version":"7","dependnet":"memcached","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625282317}],"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":"","versions":[{"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":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":"","versions":[{"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},{"id":33,"soft_id":39,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u6b63\u5bf9\u9762\u677f7.0.3\u7684\u517c\u5bb9","os_limit":0,"beta":0,"update_time":1625470033}],"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":"","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":41,"os":"Linux","pid":100000005,"type":8,"sort":8,"price":9.8,"name":"rsync","title":"\u5b9d\u5854\u6570\u636e\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\u7684\u6570\u636e\u540c\u6b65\u5de5\u5177\uff0c\u53ef\u7528\u4e8e\u5f02\u5730\u5907\u4efd\u3001\u591a\u53f0\u4e3b\u673a\u4e4b\u95f4\u7684\u6587\u4ef6\u5b9e\u65f6\u6216\u589e\u91cf\u540c\u6b65 >>\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":"","ex2":"","ex3":"","versions":[{"id":218,"soft_id":41,"m_version":"3","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1648604760},{"id":36,"soft_id":41,"m_version":"2","version":"9","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0\u538b\u7f29\u4f20\u8f93\u9009\u9879\n2\u3001\u79fb\u9664rsync\u5168\u5c40\u914d\u7f6e\u4e2d\u7aef\u53e3\u4fee\u6539\u53ea\u8bfb\u9009\u9879","os_limit":0,"beta":0,"update_time":1625480057}],"endtime":0},{"id":131,"os":"Linux","pid":100000054,"type":12,"sort":101,"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":"","ex3":"","versions":[{"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},{"id":23,"soft_id":131,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625294200}],"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":"","versions":[{"soft_id":8,"m_version":"1.22","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":8,"m_version":"1.20","version":"3","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.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":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":"","ex3":"","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":6,"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":"","versions":[{"id":180,"soft_id":173,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u589e\u52a0\u591a\u7f51\u5361\u652f\u6301\n\u517c\u5bb9python3.10.x\u73af\u5883","os_limit":0,"beta":0,"update_time":1638166836}],"endtime":0},{"id":174,"os":"Linux","pid":100000063,"type":12,"sort":101,"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":"","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":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":"","versions":[{"soft_id":9,"m_version":"2.4","version":"52","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":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!","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":"","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":"37","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":"24","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":"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":"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":"","versions":[{"soft_id":11,"m_version":"8.1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"8.0","version":"18","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0},{"soft_id":11,"m_version":"7.4","version":"28","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":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":"","versions":[{"id":139,"soft_id":156,"m_version":"1","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u6b63\u4e0b\u8f7d\u8fc7\u7a0b\u4e2d\u65ad\u5bfc\u81f4\u7684\u62a5\u9519\n2\u3001\u8bbe\u7f6e\u547d\u4ee4\u884c\u7248\u672c\u65f6\u81ea\u52a8\u6dfb\u52a0node\/bin\u5230PATH","os_limit":0,"beta":0,"update_time":1630313952},{"id":138,"soft_id":156,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u8c03\u6574\u6a21\u5757\u5b89\u88c5\u987a\u5e8f\uff0c\u589e\u52a0\u6210\u529f\u7387\n2\u3001\u6709yarn\u65f6\u9ed8\u8ba4\u4f7f\u7528yarn\u5b89\u88c5\u6a21\u5757","os_limit":0,"beta":0,"update_time":1630133543},{"id":135,"soft_id":156,"m_version":"1","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0\u9ed8\u8ba4\u5b89\u88c5PM2\/YARN\u6a21\u5757\n2\u3001\u4fee\u590d\u672a\u8bbe\u7f6e\u547d\u4ee4\u884c\u7248\u672c\u65f6\u65e0\u6cd5\u5b89\u88c5\u6a21\u5757\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1629861516},{"id":134,"soft_id":156,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u589e\u52a0\u9ed8\u8ba4\u5b89\u88c5PM2\u6a21\u5757\n2\u3001\u4fee\u590d\u5728\u6ca1\u6709\u8bbe\u7f6e\u547d\u4ee4\u884c\u7248\u672c\u65f6\u65e0\u6cd5\u5b89\u88c5\u6a21\u5757\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1629859008}],"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":"","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":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":"","versions":[{"soft_id":13,"m_version":"5.0","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":"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}],"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":"","versions":[{"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":"","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":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":"","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":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":"","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":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":"","versions":[{"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},{"id":182,"soft_id":16,"m_version":"3","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1638952248}],"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":"","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":"","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":"","versions":[{"soft_id":18,"m_version":"1.6","version":"9","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":"","versions":[{"soft_id":19,"m_version":"6.2","version":"6","dependnet":"","mem_limit":256,"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":"PHP\u3001Python\u3001Java\u3001Go\u5e94\u7528\u6301\u4e45\u5316\u8fd0\u884c\u548c\u7ba1\u7406\u3002\u53ef\u66ff\u4ee3Supervisor\u3002\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\/btappmanager","uninsatll_checks":"\/www\/server\/panel\/plugin\/btappmanager","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":48,"soft_id":144,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4fee\u590d\u542f\u52a8\u65f6\u5e94\u7528\u5217\u8868\u4e22\u5931\u95ee\u9898\u3002\n2. \u4fee\u590d\u5e94\u7528\u65e5\u5fd7\u65e0\u9650\u589e\u957f\u95ee\u9898\u3002","os_limit":0,"beta":0,"update_time":1625538407}],"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":"","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":"","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":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":"","versions":[{"soft_id":136,"m_version":"1.7","version":"14","dependnet":"","mem_limit":32,"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":"","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":"","versions":[{"id":211,"soft_id":82,"m_version":"4","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1645668192},{"id":185,"soft_id":82,"m_version":"4","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u6dfb\u52a0\u521d\u59cb\u5316\u65e5\u5fd7","os_limit":0,"beta":0,"update_time":1640765616},{"id":130,"soft_id":82,"m_version":"4","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u6dfb\u52a0rspamd\u53cd\u5783\u573e\u670d\u52a1\n2\u3001\u4f18\u5316\u90ae\u7bb1\u5217\u8868\u663e\u793a\n3\u3001\u4f18\u5316\u90ae\u4ef6\u5217\u8868\u663e\u793a\n4\u3001\u5176\u4ed6bug\u4fee\u590d","os_limit":0,"beta":0,"update_time":1628758546},{"id":57,"soft_id":82,"m_version":"4","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625552785}],"endtime":0},{"id":101,"os":"Linux","pid":0,"type":7,"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":"","ex3":"","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":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":"","versions":[{"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":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","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":"","versions":[{"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":21,"os":"Linux","pid":0,"type":7,"sort":115,"price":0,"name":"deployment","title":"\u5b9d\u5854\u4e00\u952e\u90e8\u7f72\u6e90\u7801","title_en":"one-click deployment","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u5feb\u901f\u90e8\u7f72\u5e38\u7528\u7a0b\u5e8f!","ps_en":"Quickly deploy common programs","version":"0","s_version":"0","manager_version":"1","c_manager_version":"1","dependnet":"","mutex":"","install_checks":"\/www\/server\/panel\/plugin\/deployment","uninsatll_checks":"\/www\/server\/panel\/plugin\/deployment","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":49,"soft_id":21,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625540595}],"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":"","versions":[{"id":50,"soft_id":83,"m_version":"3","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625541764}],"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":"0","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":"","versions":[{"id":212,"soft_id":75,"m_version":"1","version":"6","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","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},{"id":52,"soft_id":75,"m_version":"1","version":"4","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4fee\u590d\u5df2\u77e5bug","os_limit":0,"beta":0,"update_time":1625543637}],"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":"","versions":[{"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":"","versions":[{"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":"","versions":[{"id":38,"soft_id":25,"m_version":"5","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625534537}],"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":"","versions":[{"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":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\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":"","versions":[{"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":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":"","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":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":"","versions":[{"id":56,"soft_id":128,"m_version":"1","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625552732}],"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":"","versions":[{"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":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":"","versions":[{"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":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":"","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":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":"","versions":[{"id":168,"soft_id":127,"m_version":"3","version":"1","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":153,"os":"Linux","pid":0,"type":7,"sort":121,"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":"COSFS \u5de5\u5177\u652f\u6301\u5c06 COS \u5b58\u50a8\u6876\u6302\u8f7d\u5230\u672c\u5730\uff0c\u50cf\u4f7f\u7528\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u4e00\u6837\u76f4\u63a5\u64cd\u4f5c\u817e\u8baf\u4e91\u5bf9\u8c61\u5b58\u50a8->\u6559\u7a0b<\/a>","ps_en":"","version":"0","s_version":"0","manager_version":"1","c_manager_version":"2","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":"","versions":[{"id":110,"soft_id":153,"m_version":"2","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1\u3001\u4fee\u590d\u5378\u8f7d\u540e\u672a\u6e05\u7406\u81ea\u52a8\u6302\u8f7d\u7684\u95ee\u9898","os_limit":0,"beta":0,"update_time":1627268394},{"id":60,"soft_id":153,"m_version":"1","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625554040}],"endtime":0},{"id":105,"os":"Linux","pid":100000035,"type":12,"sort":122,"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":"","ex3":"","versions":[{"id":160,"soft_id":105,"m_version":"2","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1 \u4f18\u5316\u4e86redis\u68c0\u6d4b\u90e8\u5206\n2 ftp\u68c0\u6d4b\u589e\u52a0\u8fd4\u56de\u663e\u793a\u5177\u4f53\u8d26\u6237\u95ee\u9898\n3 \u4f18\u5316\u4e86NGINX\u7248\u672c\u68c0\u6d4b\n4 \u4f18\u5316\u52a0\u56fa\u5efa\u8bae\u91cd\u590d\u663e\u793a\u95ee\u9898\n5 \u589e\u52a0apche2.4.49 2.4.50\u6f0f\u6d1e\u7248\u672c\u68c0\u6d4b\n6 \u589e\u52a0\u91cd\u590d\u626b\u63cf\u6309\u94ae\n7 \u4f18\u5316\u4e86mysql\u68c0\u6d4b\n8 \u4f18\u5316\u4fee\u590d\u68c0\u6d4b\u663e\u793a\n9 \u4f18\u5316ftp\u68c0\u6d4b","os_limit":0,"beta":0,"update_time":1632735078},{"id":24,"soft_id":105,"m_version":"1","version":"3","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625294864}],"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":"","versions":[{"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":6,"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":"","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":6,"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":"","versions":[{"id":13,"soft_id":32,"m_version":"1","version":"7","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u517c\u5bb9\u65b0\u67b6\u6784","os_limit":0,"beta":0,"update_time":1625046023}],"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":"","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":6,"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":"","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":91,"os":"Linux","pid":0,"type":6,"sort":128,"price":0,"name":"supervisor","title":"Supervisor\u7ba1\u7406\u5668","title_en":"Supervisor","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":1,"ps":"\u4e00\u4e2aPython\u5f00\u53d1\u7684\u901a\u7528\u7684\u8fdb\u7a0b\u7ba1\u7406\u7a0b\u5e8f","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":"","versions":[{"id":25,"soft_id":91,"m_version":"2","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625295451}],"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":"","ex3":"","versions":[{"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},{"id":170,"soft_id":167,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2021-10-17 \n1.\u4e0a\u7ebfwebshell\u626b\u63cf","os_limit":0,"beta":0,"update_time":1634788846}],"endtime":0},{"id":148,"os":"Linux","pid":100000009,"type":8,"sort":128,"price":29.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":"","versions":[{"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":70,"os":"Linux","pid":100000017,"type":8,"sort":129,"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\uff0c\u5f53\u524d\u4ec5\u652f\u6301Centos7.x>>\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":"","versions":[{"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},{"id":197,"soft_id":70,"m_version":"3","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"1. \u4f18\u5316\u4e3b\u68c0\u67e5\u7a0b\u5e8f\n2. \u4fee\u590ddocker\u68c0\u67e5\u5931\u8d25","os_limit":0,"beta":0,"update_time":1642218880},{"id":179,"soft_id":70,"m_version":"3","version":"1","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"\u4f18\u5316\u63a8\u9001\u903b\u8f91\n\u4fee\u590d\u5df2\u77e5BUG","os_limit":0,"beta":0,"update_time":1637812129}],"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":"","versions":[{"id":42,"soft_id":44,"m_version":"4","version":"8","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625535336}],"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":"","versions":[{"id":154,"soft_id":161,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1631517935}],"endtime":0},{"id":159,"os":"Linux","pid":100000059,"type":8,"sort":130,"price":29.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":"","versions":[{"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},{"id":136,"soft_id":159,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1629875333}],"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":"","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 2020\/05\/14\u524d\u4e70\u4e13\u4e1a\u7248\u6216\u9632\u7be1\u6539\u53ef\u5bf9\u5e94\u514d\u8d39\u7528<\/span> >\u6559\u7a0b<\/a>","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":"","versions":[{"id":192,"soft_id":122,"m_version":"2","version":"6","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"2021-1-11\u66f4\u65b0\n1.\u4fee\u590d\u65e5\u5fd7\u95ee\u9898\n2.\u4f18\u5316\u6d4b\u8bd5\u6a21\u5f0f","os_limit":0,"beta":0,"update_time":1641896296},{"id":71,"soft_id":122,"m_version":"2","version":"5","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625558947}],"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 >\u8282\u70b9\u8d5e\u52a9<\/a> ","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":"","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":"","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":111,"os":"Linux","pid":100000038,"type":12,"sort":155,"price":99,"name":"jumpserver","title":"\u5821\u5792\u673a","title_en":"","panel_pro":1,"panel_ltd":1,"panel_free":1,"panel_test":1,"panel_en":0,"ps":"\u76ee\u524d\u53ea\u5b9e\u73b0\u4e86\u8df3\u677f\u673a\u529f\u80fd\uff0c\u901a\u8fc7\u4ee3\u7406\u65b9\u5f0f\u8fde\u63a5\u5185\u7f51\u670d\u52a1\u5668 >\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\/jumpserver","uninsatll_checks":"\/www\/server\/panel\/plugin\/jumpserver","compile_args":0,"version_coexist":0,"icon":"icon","preview_url":"","ex1":"","ex2":"","ex3":"","versions":[{"id":67,"soft_id":111,"m_version":"1","version":"2","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1625555645}],"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":"","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":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":"","versions":[{"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":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":"","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":"","versions":[{"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":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":"\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\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":"","ex3":"","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},{"id":164,"soft_id":165,"m_version":"1","version":"0","dependnet":"","mem_limit":32,"cpu_limit":1,"update_msg":"","os_limit":0,"beta":0,"update_time":1634109398}],"endtime":0},{"id":117,"os":"Linux","pid":100000042,"type":12,"sort":200,"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":"\u5bf9Mysql\u6570\u636e\u5e93\u4ee5\u53ca\u76ee\u5f55\u8fdb\u884c\u5168\u91cf\u548c\u589e\u91cf\u5907\u4efd,\u5907\u4efd\u52a0\u5bc6\u538b\u7f29\u5e76\u53ef\u9009\u4e0a\u4f20\u5230ftp,\u963f\u91cc\u4e91\u548c\u817e\u8baf\u4e91(\u4ec5innodb\u652f\u6301\u589e\u91cf\u5907\u4efd)<\/font> >\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\/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":"","versions":[{"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},{"num":"4.8","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?<\/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.8,"os":"Linux","win":0,"a_ps":"","pid":600801398,"version":"6.6","version_msg":"Nginx\u514d\u8d39\u9632\u706b\u5899","f_path":"other\/20220428\/1fd15c3fd7d1511158ceff9717ee5a49.zip","f_md5":"e4e5029a9728fa01c4d9522f23d5f38d","f_size":264580,"type":10,"endtime":0,"score":"4.8","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":"6","c_manager_version":"6","versions":[{"m_version":"6","version":"6","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"Nginx\u514d\u8d39\u9632\u706b\u5899","download":"other\/20220428\/1fd15c3fd7d1511158ceff9717ee5a49.zip","md5":"e4e5029a9728fa01c4d9522f23d5f38d","size":264580}],"count":169437},{"num":"4.6","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.6,"os":"Linux","win":1,"a_ps":"","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.6","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":96347},{"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":"","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":33502},{"num":"3.9","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":3.9,"os":"Linux","win":0,"a_ps":"","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":"3.9","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":27947},{"num":"3.6","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.6,"os":"Linux","win":-1,"a_ps":"","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.6","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":26893},{"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":"","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":17747},{"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":"","pid":600801599,"version":"1.10","version_msg":"\u589e\u52a0\u8bbf\u95ee\u56de\u6e90\/\u5b89\u5168\u52a0\u901f\u5207\u6362\u529f\u80fd\uff0c\u5efa\u8bae\u5347\u7ea7","f_path":"other\/20210824\/6961b80cedc326c8470ed4d4140fe006.zip","f_md5":"b518e2b6ded63d2e2e191602bc039d83","f_size":56415,"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":"10","versions":[{"m_version":"1","version":"10","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u589e\u52a0\u8bbf\u95ee\u56de\u6e90\/\u5b89\u5168\u52a0\u901f\u5207\u6362\u529f\u80fd\uff0c\u5efa\u8bae\u5347\u7ea7","download":"other\/20210824\/6961b80cedc326c8470ed4d4140fe006.zip","md5":"b518e2b6ded63d2e2e191602bc039d83","size":56415}],"count":15451},{"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":"","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":15274},{"num":"5.0","id":600801565,"uid":361711,"app_type":1,"p_type":5,"tid":0,"install_opt":0,"php_vs":"","official":"","enable_functions":"","title":"\u82b1\u751f\u58f3","p_index":"Phddns","ps":"\u91c7\u7528PHTunnel\u6838\u5fc3\u7ec4\u4ef6\uff0c\u5b9e\u73b0\u9ad8\u6027\u80fd\u53cd\u5411\u4ee3\u7406?<\/a>","author":"\u8d1d\u9510\u79d1\u6280","home":"https:\/\/www.bt.cn\/bbs\/thread-63799-1-1.html","min_image":"\/api\/Pluginother\/get_file?fname=image\/20210126\/d5c0c0e6f75a932bd33b999df1b02744.png","price":0,"auth_price":0,"discount":1,"commission":0.8,"p_cycle":1,"addtime":1595383490,"state":0,"sort":5,"os":"Linux","win":1,"a_ps":"","pid":600801565,"version":"5.0.7","version_msg":"\u4fee\u590dUbuntu\u65e0\u6cd5\u6b63\u5e38\u8fd0\u884c\u82b1\u751f\u58f3\u95ee\u9898","f_path":"other\/20210319\/04d265cd446a0e2cad4a8ebaf42ad00f.zip","f_md5":"9393c353bb66402a0d79ad1f502eac8a","f_size":739992,"type":10,"endtime":0,"score":"5.0","name":"Phddns","panel_pro":1,"panel_free":1,"panel_test":1,"panel_ltd":1,"dependnet":"","mutex":-1,"install_checks":"\/www\/server\/panel\/plugin\/Phddns","uninsatll_checks":"\/www\/server\/panel\/plugin\/Phddns","compile_args":0,"version_coexist":0,"manager_version":"5","c_manager_version":"0.7","versions":[{"m_version":"5","version":"0.7","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590dUbuntu\u65e0\u6cd5\u6b63\u5e38\u8fd0\u884c\u82b1\u751f\u58f3\u95ee\u9898","download":"other\/20210319\/04d265cd446a0e2cad4a8ebaf42ad00f.zip","md5":"9393c353bb66402a0d79ad1f502eac8a","size":739992}],"count":14563},{"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":"","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":14553},{"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\u5730\u56fe\u751f\u6210\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":"","pid":600801564,"version":"1.9.1","version_msg":"\u5305\u542b\u591a\u9879\u529f\u80fd\u66f4\u65b0\uff0c\u5efa\u8bae\u5347\u7ea7","f_path":"other\/20220319\/7dc2c0acd5f87f6f2d80c15f6dfea849.zip","f_md5":"17eba15028a24536fcf1791bbb901fa3","f_size":590715,"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.1","versions":[{"m_version":"1","version":"9.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u5305\u542b\u591a\u9879\u529f\u80fd\u66f4\u65b0\uff0c\u5efa\u8bae\u5347\u7ea7","download":"other\/20220319\/7dc2c0acd5f87f6f2d80c15f6dfea849.zip","md5":"17eba15028a24536fcf1791bbb901fa3","size":590715}],"count":13930},{"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":"","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":13781},{"num":"4.9","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.9,"os":"Linux","win":0,"a_ps":"","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.9","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":13065},{"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":"","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":12861},{"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":"","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":11973},{"num":"1.0","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","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":1,"os":"Linux","win":-1,"a_ps":"","pid":600801740,"version":"1.0.2","version_msg":"\u589e\u52a0\u4e86\u7aef\u53e3\u663e\u793a","f_path":"other\/20210727\/040ed37dac1a0b070751688ab8c2536e.zip","f_md5":"1d4213059574d550ac572974ecf14ca5","f_size":285293,"type":10,"endtime":0,"score":"1.0","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":"0.2","versions":[{"m_version":"1","version":"0.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u589e\u52a0\u4e86\u7aef\u53e3\u663e\u793a","download":"other\/20210727\/040ed37dac1a0b070751688ab8c2536e.zip","md5":"1d4213059574d550ac572974ecf14ca5","size":285293}],"count":10217},{"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":"","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":6835},{"num":"4.0","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,"os":"Linux","win":0,"a_ps":"","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.0","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":6100},{"num":"3.7","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.7,"os":"Linux","win":1,"a_ps":"","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.7","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":6004},{"num":"4.4","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.4,"os":"Linux","win":0,"a_ps":"","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.4","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":5481},{"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\u6301t.cn\/suo.nz\/\u7eff\u6807\u7b49\u5341\u591a\u79cd\u57df\u540d\uff0c\u9632\u5fae\u4fe1QQ\u62e6\u622a?<\/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":"","pid":600801744,"version":"1.2","version_msg":"\u66f4\u65b04xl.cn\/t.cn\/\u7eff\u6807\u7b49\u591a\u79cd\u57df\u540d\uff0c\u9632\u5fae\u4fe1QQ\u62e6\u622a","f_path":"other\/20211225\/aa630d84cdfdc96618bcefe9c525444d.zip","f_md5":"64d4b4a482f2c585a3b22e6932d29172","f_size":9910,"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":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b04xl.cn\/t.cn\/\u7eff\u6807\u7b49\u591a\u79cd\u57df\u540d\uff0c\u9632\u5fae\u4fe1QQ\u62e6\u622a","download":"other\/20211225\/aa630d84cdfdc96618bcefe9c525444d.zip","md5":"64d4b4a482f2c585a3b22e6932d29172","size":9910}],"count":4151},{"num":"4.2","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.2,"os":"Linux","win":1,"a_ps":"","pid":600801358,"version":"3.9.1","version_msg":"\u4fee\u590d\u767b\u9646\u6388\u6743\u5931\u8d25\u7684\u95ee\u9898","f_path":"other\/20220409\/95c5607a76367fb68707530320021db5.zip","f_md5":"ccd56d149acc940a5316af86fd1657e4","f_size":45034,"type":10,"endtime":0,"score":"4.2","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.1","versions":[{"m_version":"3","version":"9.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u767b\u9646\u6388\u6743\u5931\u8d25\u7684\u95ee\u9898","download":"other\/20220409\/95c5607a76367fb68707530320021db5.zip","md5":"ccd56d149acc940a5316af86fd1657e4","size":45034}],"count":3511},{"num":"4.0","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,"os":"Linux","win":0,"a_ps":"","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.0","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":3264},{"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":"","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":3026},{"num":"1.2","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.2,"os":"Linux","win":0,"a_ps":"","pid":600801313,"version":"1.4","version_msg":"\u4fee\u590d\u4eea\u8868\u76d8","f_path":"other\/20210413\/d31102e577f9351f2fc4ee9f3e8cc8e5.zip","f_md5":"9e9249480f9672faf6675dcd1fae4bcd","f_size":137586,"type":10,"endtime":0,"score":"1.2","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":"4","versions":[{"m_version":"1","version":"4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u4eea\u8868\u76d8","download":"other\/20210413\/d31102e577f9351f2fc4ee9f3e8cc8e5.zip","md5":"9e9249480f9672faf6675dcd1fae4bcd","size":137586}],"count":2987},{"num":"2.1","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.1,"os":"Linux","win":1,"a_ps":"","pid":600801372,"version":"5.0","version_msg":"\u52a0\u5165\u6279\u91cf\u4efb\u52a1\u3001\u5206\u9875\u63a8\u9001\uff0c\u63d0\u5347\u4f53\u9a8c\uff0c\u5f3a\u70c8\u5efa\u8bae\u66f4\u65b0","f_path":"other\/20220507\/8ed73264a438d96de548a06a5c25498d.zip","f_md5":"9df334ed63e309eef9560979f482386b","f_size":3256729,"type":10,"endtime":0,"score":"2.1","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":"0","versions":[{"m_version":"5","version":"0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u52a0\u5165\u6279\u91cf\u4efb\u52a1\u3001\u5206\u9875\u63a8\u9001\uff0c\u63d0\u5347\u4f53\u9a8c\uff0c\u5f3a\u70c8\u5efa\u8bae\u66f4\u65b0","download":"other\/20220507\/8ed73264a438d96de548a06a5c25498d.zip","md5":"9df334ed63e309eef9560979f482386b","size":3256729}],"count":2655},{"num":null,"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":0,"os":"Linux","win":-1,"a_ps":"","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":null,"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":2216},{"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":"\u5b9a\u65f6\u63a8\u9001\/\u7ad9\u70b9\u62a5\u8868,\u767e\u5ea6\/\u795e\u9a6c\/\u5fc5\u5e94\/\u5730\u56fe\u63a8\u9001-\u65b0\u589e\u5fc5\u5e94\u63a8\u9001?<\/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":"","pid":600801436,"version":"3.9","version_msg":"\u4fee\u590d\u7f51\u7ad9\u65e5\u5fd7\u5f02\u5e38","f_path":"other\/20220108\/b91627fad335a8a21c914dcb3a4df864.zip","f_md5":"cdbc22edab13142dc9a23d3c1f7f3330","f_size":2595376,"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":"3","c_manager_version":"9","versions":[{"m_version":"3","version":"9","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u7f51\u7ad9\u65e5\u5fd7\u5f02\u5e38","download":"other\/20220108\/b91627fad335a8a21c914dcb3a4df864.zip","md5":"cdbc22edab13142dc9a23d3c1f7f3330","size":2595376}],"count":2109},{"num":"3.4","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.4,"os":"Linux","win":-1,"a_ps":"","pid":600801459,"version":"1.9","version_msg":"\u4fee\u590d\u5728\u67d0\u4e9b\u8bbe\u5907\u4e0b\u7684\u517c\u5bb9\u6027","f_path":"other\/20220524\/a28da7f846454e3564c175db56defbfb.zip","f_md5":"5ed31a5874435b9382b4a1f9b20fbdde","f_size":17367,"type":10,"endtime":0,"score":"3.4","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":"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":"\u4fee\u590d\u5728\u67d0\u4e9b\u8bbe\u5907\u4e0b\u7684\u517c\u5bb9\u6027","download":"other\/20220524\/a28da7f846454e3564c175db56defbfb.zip","md5":"5ed31a5874435b9382b4a1f9b20fbdde","size":17367}],"count":1760},{"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":"","pid":600801433,"version":"0.4.2","version_msg":"1\u3001\u7d27\u6025\u4fee\u590d\u5347\u7ea70.4.1\u7248\u672c\u540e\u7531\u4e8e\u76ee\u5f55\u6743\u9650\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8gitea\u95ee\u9898bug 2\u3001\u6dfb\u52a0\u540e\u53f0\u914d\u7f6e\u662f\u5426\u5141\u8bb8\u6ce8\u518c\u529f\u80fd","f_path":"other\/20210407\/296fe67302a559485dad164232f9db3e.zip","f_md5":"ddc0d7fae7417be42635315beaed2e5b","f_size":2087566,"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":"4.2","versions":[{"m_version":"0","version":"4.2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1\u3001\u7d27\u6025\u4fee\u590d\u5347\u7ea70.4.1\u7248\u672c\u540e\u7531\u4e8e\u76ee\u5f55\u6743\u9650\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8gitea\u95ee\u9898bug 2\u3001\u6dfb\u52a0\u540e\u53f0\u914d\u7f6e\u662f\u5426\u5141\u8bb8\u6ce8\u518c\u529f\u80fd","download":"other\/20210407\/296fe67302a559485dad164232f9db3e.zip","md5":"ddc0d7fae7417be42635315beaed2e5b","size":2087566}],"count":1576},{"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":"","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":1329},{"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":"","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":1062},{"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":"","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":981},{"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":"","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":965},{"num":"5.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":5,"os":"Linux","win":0,"a_ps":"","pid":600801369,"version":"2.1","version_msg":"\u66f4\u65b0\u8054\u7cfb\u65b9\u5f0f","f_path":"other\/20210623\/26066436035150f00e11378a9ade50b5.zip","f_md5":"e6a9d89d7045c21ff3b7621fe86a5f87","f_size":28774,"type":10,"endtime":0,"score":"5.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":"1","versions":[{"m_version":"2","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u8054\u7cfb\u65b9\u5f0f","download":"other\/20210623\/26066436035150f00e11378a9ade50b5.zip","md5":"e6a9d89d7045c21ff3b7621fe86a5f87","size":28774}],"count":876},{"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":"","pid":600801381,"version":"2.1","version_msg":"\u66f4\u65b0\u8054\u7cfb\u65b9\u5f0f","f_path":"other\/20210623\/b58efcfc84e50a701532847490ee28ac.zip","f_md5":"a171a5a794cff55c8a676dfd4c682485","f_size":29613,"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":"1","versions":[{"m_version":"2","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u66f4\u65b0\u8054\u7cfb\u65b9\u5f0f","download":"other\/20210623\/b58efcfc84e50a701532847490ee28ac.zip","md5":"a171a5a794cff55c8a676dfd4c682485","size":29613}],"count":797},{"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":"","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":750},{"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":"","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":737},{"num":"2.0","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":2,"os":"Linux","win":-1,"a_ps":"","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":"2.0","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":716},{"num":"4.9","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.9,"os":"Linux","win":-1,"a_ps":"","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.9","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":618},{"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":"","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":612},{"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":"","pid":600801805,"version":"4.4","version_msg":"\u652f\u6301RTMP\u3001WebRTC\u3001HLS\u3001HTTP- FLV\u548cSRT\u7b49\u5e38\u7528\u534f\u8bae","f_path":"other\/20220426\/6f12f4a340e8de2406cdc4f40e969512.zip","f_md5":"d055d83149420833034955d06659b3b0","f_size":4327104,"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":"4","versions":[{"m_version":"4","version":"4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u652f\u6301RTMP\u3001WebRTC\u3001HLS\u3001HTTP- FLV\u548cSRT\u7b49\u5e38\u7528\u534f\u8bae","download":"other\/20220426\/6f12f4a340e8de2406cdc4f40e969512.zip","md5":"d055d83149420833034955d06659b3b0","size":4327104}],"count":557},{"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":"","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":529},{"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":"","pid":600801363,"version":"2.1","version_msg":"\u4fee\u590dSSH\u6307\u7eb9\u83b7\u53d6\u95ee\u9898","f_path":"other\/20210912\/abfe988e121f0a1a1cba51af12d39d29.zip","f_md5":"18a68c81642bf69173d189420e616ff7","f_size":38831,"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":"1","versions":[{"m_version":"2","version":"1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590dSSH\u6307\u7eb9\u83b7\u53d6\u95ee\u9898","download":"other\/20210912\/abfe988e121f0a1a1cba51af12d39d29.zip","md5":"18a68c81642bf69173d189420e616ff7","size":38831}],"count":516},{"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":"","pid":600801463,"version":"1.4.1","version_msg":"\u4fee\u590d\u56fe\u6807\u4e0d\u663e\u793a\u7684\u95ee\u9898\uff0c\u4fee\u590d\u67d0\u4e9b\u8bbe\u5907\u4e0a\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898","f_path":"other\/20220120\/4035598120c035325937f3b1a927a4e6.zip","f_md5":"1bea517077aafe85a55f3812a5968f50","f_size":35102,"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":"4.1","versions":[{"m_version":"1","version":"4.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u56fe\u6807\u4e0d\u663e\u793a\u7684\u95ee\u9898\uff0c\u4fee\u590d\u67d0\u4e9b\u8bbe\u5907\u4e0a\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898","download":"other\/20220120\/4035598120c035325937f3b1a927a4e6.zip","md5":"1bea517077aafe85a55f3812a5968f50","size":35102}],"count":453},{"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":"","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":397},{"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":"","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":339},{"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":"","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":321},{"num":"4.0","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":4,"os":"Linux","win":-1,"a_ps":"","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":"4.0","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":295},{"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":"","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":271},{"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":"","pid":600801625,"version":"0.2.1","version_msg":"1\u3001\u589e\u52a0\u5907\u4efd\u8fd8\u539f\u8fdb\u5ea6\u663e\u793a\u3002 2\u3001\u589e\u52a0\u8fd8\u539f\u6587\u4ef6\u5927\u5c0f\u7ec6\u81f42M\uff0c\u9632\u6b62\u6076\u610f\u4e0a\u4f20\u3002 3\u3001\u89e3\u51b3\u90e8\u5206\u8fd8\u539f\u6587\u4ef6\u4e0a\u4f20\u540e\u65e0\u6cd5\u89e3\u6790\u8fd8\u539f\u5305\u95ee\u9898 4\u3001\u89e3\u51b3\u4efb\u52a1\u592a\u591a\u65f6\u65e0\u6cd5\u5b8c\u5168\u5bfc\u5165bug\u4fee\u590d","f_path":"other\/20211216\/e525f27aa5667aad99d6beb7b730bd27.zip","f_md5":"1e3e49e0784f93f427582f4d1e911775","f_size":560280,"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.1","versions":[{"m_version":"0","version":"2.1","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"1\u3001\u589e\u52a0\u5907\u4efd\u8fd8\u539f\u8fdb\u5ea6\u663e\u793a\u3002 2\u3001\u589e\u52a0\u8fd8\u539f\u6587\u4ef6\u5927\u5c0f\u7ec6\u81f42M\uff0c\u9632\u6b62\u6076\u610f\u4e0a\u4f20\u3002 3\u3001\u89e3\u51b3\u90e8\u5206\u8fd8\u539f\u6587\u4ef6\u4e0a\u4f20\u540e\u65e0\u6cd5\u89e3\u6790\u8fd8\u539f\u5305\u95ee\u9898 4\u3001\u89e3\u51b3\u4efb\u52a1\u592a\u591a\u65f6\u65e0\u6cd5\u5b8c\u5168\u5bfc\u5165bug\u4fee\u590d","download":"other\/20211216\/e525f27aa5667aad99d6beb7b730bd27.zip","md5":"1e3e49e0784f93f427582f4d1e911775","size":560280}],"count":256},{"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":"","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":227},{"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":"","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":213},{"num":null,"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":0,"os":"Linux","win":-1,"a_ps":"","pid":600801641,"version":"2.0.0","version_msg":"\u65b0\u589e\u8fd8\u539f\u5bc6\u7801\uff0c\u65b0\u589e\u4e91\u7aef\u529f\u80fd\uff0c\u675c\u7edd\u52a0\u5bc6\u524d\u7684\u6e90\u4ee3\u7801\u88ab\u4ed6\u4eba\u627e\u5230\u5e76\u6062\u590d","f_path":"other\/20210920\/6c1f09d3c456459526a349c363af04cf.zip","f_md5":"4cd5a3a53e8df28e6689ee24c3683316","f_size":687598,"type":10,"endtime":0,"score":null,"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":"0.0","versions":[{"m_version":"2","version":"0.0","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u65b0\u589e\u8fd8\u539f\u5bc6\u7801\uff0c\u65b0\u589e\u4e91\u7aef\u529f\u80fd\uff0c\u675c\u7edd\u52a0\u5bc6\u524d\u7684\u6e90\u4ee3\u7801\u88ab\u4ed6\u4eba\u627e\u5230\u5e76\u6062\u590d","download":"other\/20210920\/6c1f09d3c456459526a349c363af04cf.zip","md5":"4cd5a3a53e8df28e6689ee24c3683316","size":687598}],"count":212},{"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":"","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":212},{"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":"","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":200},{"num":"5.0","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":5,"os":"Linux","win":1,"a_ps":"","pid":600801729,"version":"1.8","version_msg":"\u4fee\u590d\u82e5\u5e72bug\uff0c\u53bb\u6389\u5197\u4f59\u4ee3\u7801\uff0c\u63d0\u5347\u7a33\u5b9a\u6027","f_path":"other\/20220213\/cb0ea1a6196737384774f316bc6297dd.zip","f_md5":"7cc7ecd6df53454645eab60b13054ddd","f_size":399213,"type":10,"endtime":0,"score":"5.0","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":"8","versions":[{"m_version":"1","version":"8","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u4fee\u590d\u82e5\u5e72bug\uff0c\u53bb\u6389\u5197\u4f59\u4ee3\u7801\uff0c\u63d0\u5347\u7a33\u5b9a\u6027","download":"other\/20220213\/cb0ea1a6196737384774f316bc6297dd.zip","md5":"7cc7ecd6df53454645eab60b13054ddd","size":399213}],"count":198},{"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":"","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":184},{"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":"","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":157},{"num":"4.0","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":4,"os":"Linux","win":-1,"a_ps":"","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":"4.0","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":157},{"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":"","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":140},{"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":"","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":133},{"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":"","pid":600801562,"version":"1.2","version_msg":"\u7ec6\u8282\u4f18\u5316","f_path":"other\/20210329\/16ed0e4adbff77ea13b25ee2baadf080.zip","f_md5":"5300de59093cd681a5499c80d3b4220b","f_size":39799,"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":"2","versions":[{"m_version":"1","version":"2","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u7ec6\u8282\u4f18\u5316","download":"other\/20210329\/16ed0e4adbff77ea13b25ee2baadf080.zip","md5":"5300de59093cd681a5499c80d3b4220b","size":39799}],"count":122},{"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":"","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":116},{"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\/forum.php?mod=viewthread&tid=73149","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":"","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":113},{"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":"","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":88},{"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":"","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":87},{"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\u7684\u7f51\u7ad9\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":"","pid":600801803,"version":"1.4","version_msg":"\u65b0\u589eIP\u5206\u6790\u4e0e\u5730\u533a\u5206\u6790\uff0c\u5efa\u8bae\u6240\u6709\u7528\u6237\u66f4\u65b0","f_path":"other\/20220523\/794985abf6c1291409b8345910eb70fc.zip","f_md5":"b0fd38a4c810e5b3a4f20410c703d55c","f_size":7616879,"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":"1","c_manager_version":"4","versions":[{"m_version":"1","version":"4","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u65b0\u589eIP\u5206\u6790\u4e0e\u5730\u533a\u5206\u6790\uff0c\u5efa\u8bae\u6240\u6709\u7528\u6237\u66f4\u65b0","download":"other\/20220523\/794985abf6c1291409b8345910eb70fc.zip","md5":"b0fd38a4c810e5b3a4f20410c703d55c","size":7616879}],"count":86},{"num":null,"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":0,"os":"Linux","win":1,"a_ps":"","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":null,"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":85},{"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":"","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":85},{"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":"","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":75},{"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":"","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":75},{"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":"","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":61},{"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":"","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":60},{"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":"","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":53},{"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\u4e00\u4e2a\u89e3\u6790\u51fa\u73b0\u5f02\u5e38\u65f6\u81ea\u52a8\u5207\u6362\u5230\u53e6\u4e00\u4e2a\u89e3\u6790?<\/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":"","pid":600801576,"version":"1.8.6","version_msg":"\u65b0\u589eWebHook\u8bf7\u6c42\u53d1\u9001\u4ee5\u53caTencentAPI3.0\u652f\u6301\uff0c\u5982\u4e0d\u9700\u8981\u53ef\u4e0d\u5347\u7ea7","f_path":"other\/20220205\/3da3bb0578193a8099843bcfdc4bf196.zip","f_md5":"5a545351efee9dd5339d8777af06476a","f_size":202659,"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.6","versions":[{"m_version":"1","version":"8.6","update_msg":"","dependnet":"","mem_limit":32,"cpu_limit":1,"os_limit":"Linux","version_msg":"\u65b0\u589eWebHook\u8bf7\u6c42\u53d1\u9001\u4ee5\u53caTencentAPI3.0\u652f\u6301\uff0c\u5982\u4e0d\u9700\u8981\u53ef\u4e0d\u5347\u7ea7","download":"other\/20220205\/3da3bb0578193a8099843bcfdc4bf196.zip","md5":"5a545351efee9dd5339d8777af06476a","size":202659}],"count":52},{"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":"","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":45},{"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\/forum.php?mod=viewthread&tid=74227","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":"","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":45},{"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":"","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":44},{"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":"","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":35},{"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,\u8bf7\u77e5\u6653.?<\/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":"","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":34},{"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":"","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":28},{"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":"","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":22},{"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":"","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":22},{"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":"","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":17},{"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":"","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":6},{"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\/forum.php?mod=viewthread&tid=74355","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":"","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":5}],"ip":"127.0.0.1","serverid":"","beta":0,"uid":1,"skey":"","is_user_status":false,"pro":-1,"ltd":-1,"remarks":{"list":["\u4f01\u4e1a\u7248\u3001\u4e13\u4e1a\u7248\u63d2\u4ef6","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","\u53ef\u66f4\u6362IP","\u8d60\u90012\u5f20\u5546\u7528\u8bc1\u4e66","\u8d60\u90011000\u6761\u77ed\u4fe1","\u4f4e\u81f32.43\u5143\/\u5929","\u5546\u7528\u9632\u706b\u5899\u6388\u6743","\u5e74\u4ed8\u4f01\u4e1a\u7248\u670d\u52a1\u7fa4","\u4ea7\u54c1\u6388\u6743\u8bc1\u4e66"],"pro_list":["\u4e13\u4e1a\u7248\u63d2\u4ef6","15\u5929\u65e0\u7406\u7531\u9000\u6b3e","\u53ef\u66f4\u6362IP","\u4f4e\u81f31.18\u5143\/\u5929","\u5546\u7528\u9632\u706b\u5899\u6388\u6743","\u4ea7\u54c1\u6388\u6743\u8bc1\u4e66"],"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":"\u552e\u524d\u54a8\u8be2","kf":"https:\/\/work.weixin.qq.com\/kfid\/kfc72fcbde93e26a6f3"}]},"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\u7248999\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.6","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.2","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.1","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.6","endtime":-1,"sort":6,"setup":false}]}]} \ No newline at end of file diff --git a/data/plugins/other/image/20190401/169f9ef390f68c134c4b8b003ec1a412.png b/data/plugins/other/image/20190401/169f9ef390f68c134c4b8b003ec1a412.png new file mode 100644 index 0000000..50ceb87 Binary files /dev/null and b/data/plugins/other/image/20190401/169f9ef390f68c134c4b8b003ec1a412.png differ diff --git a/data/plugins/other/image/20190416/ac0d8aa620c481be425ea5a008e33480.png b/data/plugins/other/image/20190416/ac0d8aa620c481be425ea5a008e33480.png new file mode 100644 index 0000000..61bcabd Binary files /dev/null and b/data/plugins/other/image/20190416/ac0d8aa620c481be425ea5a008e33480.png differ diff --git a/data/plugins/other/image/20190420/0237badbc85457149fc8772e11c39070.png b/data/plugins/other/image/20190420/0237badbc85457149fc8772e11c39070.png new file mode 100644 index 0000000..9665ba2 Binary files /dev/null and b/data/plugins/other/image/20190420/0237badbc85457149fc8772e11c39070.png differ diff --git a/data/plugins/other/image/20190529/b7e5b51c52bc2ead12b338197456916e.png b/data/plugins/other/image/20190529/b7e5b51c52bc2ead12b338197456916e.png new file mode 100644 index 0000000..d541dce Binary files /dev/null and b/data/plugins/other/image/20190529/b7e5b51c52bc2ead12b338197456916e.png differ diff --git a/data/plugins/other/image/20190615/e7372086b3e573497e612e1003bbe5b3.png b/data/plugins/other/image/20190615/e7372086b3e573497e612e1003bbe5b3.png new file mode 100644 index 0000000..33f9a9e Binary files /dev/null and b/data/plugins/other/image/20190615/e7372086b3e573497e612e1003bbe5b3.png differ diff --git a/data/plugins/other/image/20190624/c6bfbb27b99058e14e9e424a4b66104b.png b/data/plugins/other/image/20190624/c6bfbb27b99058e14e9e424a4b66104b.png new file mode 100644 index 0000000..4e2736e Binary files /dev/null and b/data/plugins/other/image/20190624/c6bfbb27b99058e14e9e424a4b66104b.png differ diff --git a/data/plugins/other/image/20190802/cd56d03b758b930a85e127ae24a467ca.png b/data/plugins/other/image/20190802/cd56d03b758b930a85e127ae24a467ca.png new file mode 100644 index 0000000..20fd9f1 Binary files /dev/null and b/data/plugins/other/image/20190802/cd56d03b758b930a85e127ae24a467ca.png differ diff --git a/data/plugins/other/image/20190808/17e9b99a0a3649deb219968a9172688a.png b/data/plugins/other/image/20190808/17e9b99a0a3649deb219968a9172688a.png new file mode 100644 index 0000000..41084e1 Binary files /dev/null and b/data/plugins/other/image/20190808/17e9b99a0a3649deb219968a9172688a.png differ diff --git a/data/plugins/other/image/20190809/3f8f90fde77213080143e63b668d8c77.png b/data/plugins/other/image/20190809/3f8f90fde77213080143e63b668d8c77.png new file mode 100644 index 0000000..7a0820f Binary files /dev/null and b/data/plugins/other/image/20190809/3f8f90fde77213080143e63b668d8c77.png differ diff --git a/data/plugins/other/image/20190829/36a4514dda9ebfde9b6fa1c7277c67e8.png b/data/plugins/other/image/20190829/36a4514dda9ebfde9b6fa1c7277c67e8.png new file mode 100644 index 0000000..e516dbb Binary files /dev/null and b/data/plugins/other/image/20190829/36a4514dda9ebfde9b6fa1c7277c67e8.png differ diff --git a/data/plugins/other/image/20190918/85b94a174957d8c2d078f6e58fef02b8.png b/data/plugins/other/image/20190918/85b94a174957d8c2d078f6e58fef02b8.png new file mode 100644 index 0000000..ee6a472 Binary files /dev/null and b/data/plugins/other/image/20190918/85b94a174957d8c2d078f6e58fef02b8.png differ diff --git a/data/plugins/other/image/20190921/1b28d8321def8455207b6482d78d6534.png b/data/plugins/other/image/20190921/1b28d8321def8455207b6482d78d6534.png new file mode 100644 index 0000000..c648c1b Binary files /dev/null and b/data/plugins/other/image/20190921/1b28d8321def8455207b6482d78d6534.png differ diff --git a/data/plugins/other/image/20190925/797ff13c9157f656c08a27a1674cbb86.png b/data/plugins/other/image/20190925/797ff13c9157f656c08a27a1674cbb86.png new file mode 100644 index 0000000..a44cd0e Binary files /dev/null and b/data/plugins/other/image/20190925/797ff13c9157f656c08a27a1674cbb86.png differ diff --git a/data/plugins/other/image/20190925/987b50979ba8c2781c62d1ddbe773cef.png b/data/plugins/other/image/20190925/987b50979ba8c2781c62d1ddbe773cef.png new file mode 100644 index 0000000..6754397 Binary files /dev/null and b/data/plugins/other/image/20190925/987b50979ba8c2781c62d1ddbe773cef.png differ diff --git a/data/plugins/other/image/20191005/2366e9d746b8e52bfb7f00498dd88d41.png b/data/plugins/other/image/20191005/2366e9d746b8e52bfb7f00498dd88d41.png new file mode 100644 index 0000000..e4eee44 Binary files /dev/null and b/data/plugins/other/image/20191005/2366e9d746b8e52bfb7f00498dd88d41.png differ diff --git a/data/plugins/other/image/20191008/2c48dbb3f2e21fc2eb19d68e0826d162.png b/data/plugins/other/image/20191008/2c48dbb3f2e21fc2eb19d68e0826d162.png new file mode 100644 index 0000000..4877e79 Binary files /dev/null and b/data/plugins/other/image/20191008/2c48dbb3f2e21fc2eb19d68e0826d162.png differ diff --git a/data/plugins/other/image/20191010/12ae100cb6da09c45ebb64c383f17daa.png b/data/plugins/other/image/20191010/12ae100cb6da09c45ebb64c383f17daa.png new file mode 100644 index 0000000..3597587 Binary files /dev/null and b/data/plugins/other/image/20191010/12ae100cb6da09c45ebb64c383f17daa.png differ diff --git a/data/plugins/other/image/20191014/a5a91d5b7503ac6fc40b587c18f884cb.png b/data/plugins/other/image/20191014/a5a91d5b7503ac6fc40b587c18f884cb.png new file mode 100644 index 0000000..4877e79 Binary files /dev/null and b/data/plugins/other/image/20191014/a5a91d5b7503ac6fc40b587c18f884cb.png differ diff --git a/data/plugins/other/image/20191015/3739007955dbad246abd1bc51a3ce9cc.png b/data/plugins/other/image/20191015/3739007955dbad246abd1bc51a3ce9cc.png new file mode 100644 index 0000000..33f9a9e Binary files /dev/null and b/data/plugins/other/image/20191015/3739007955dbad246abd1bc51a3ce9cc.png differ diff --git a/data/plugins/other/image/20191019/57f47dfa77ad9b958fdb0682c44dd2dd.png b/data/plugins/other/image/20191019/57f47dfa77ad9b958fdb0682c44dd2dd.png new file mode 100644 index 0000000..33f9a9e Binary files /dev/null and b/data/plugins/other/image/20191019/57f47dfa77ad9b958fdb0682c44dd2dd.png differ diff --git a/data/plugins/other/image/20191031/3044f0e8898553b27a3f8e3f39b49829.png b/data/plugins/other/image/20191031/3044f0e8898553b27a3f8e3f39b49829.png new file mode 100644 index 0000000..33f9a9e Binary files /dev/null and b/data/plugins/other/image/20191031/3044f0e8898553b27a3f8e3f39b49829.png differ diff --git a/data/plugins/other/image/20191101/ffb9085b6c30168308e289be27f11486.png b/data/plugins/other/image/20191101/ffb9085b6c30168308e289be27f11486.png new file mode 100644 index 0000000..fb8e311 Binary files /dev/null and b/data/plugins/other/image/20191101/ffb9085b6c30168308e289be27f11486.png differ diff --git a/data/plugins/other/image/20191106/1989b486726cdea6a62954fe3b345e3d.png b/data/plugins/other/image/20191106/1989b486726cdea6a62954fe3b345e3d.png new file mode 100644 index 0000000..e492ae7 Binary files /dev/null and b/data/plugins/other/image/20191106/1989b486726cdea6a62954fe3b345e3d.png differ diff --git a/data/plugins/other/image/20191107/065808e927f4c37052049b56561fe1cd.png b/data/plugins/other/image/20191107/065808e927f4c37052049b56561fe1cd.png new file mode 100644 index 0000000..55dabc4 Binary files /dev/null and b/data/plugins/other/image/20191107/065808e927f4c37052049b56561fe1cd.png differ diff --git a/data/plugins/other/image/20191108/d74b2c5e165c729f76ca94923835350c.png b/data/plugins/other/image/20191108/d74b2c5e165c729f76ca94923835350c.png new file mode 100644 index 0000000..4c7d80d Binary files /dev/null and b/data/plugins/other/image/20191108/d74b2c5e165c729f76ca94923835350c.png differ diff --git a/data/plugins/other/image/20191113/087f6342714ae5d298e8a75b87a9cd1f.png b/data/plugins/other/image/20191113/087f6342714ae5d298e8a75b87a9cd1f.png new file mode 100644 index 0000000..2dc4271 Binary files /dev/null and b/data/plugins/other/image/20191113/087f6342714ae5d298e8a75b87a9cd1f.png differ diff --git a/data/plugins/other/image/20191115/a6f31569f41a4a331d0a7d778b3972ab.png b/data/plugins/other/image/20191115/a6f31569f41a4a331d0a7d778b3972ab.png new file mode 100644 index 0000000..3c5d262 Binary files /dev/null and b/data/plugins/other/image/20191115/a6f31569f41a4a331d0a7d778b3972ab.png differ diff --git a/data/plugins/other/image/20191118/331aa690f39edc9f15f64045294e853e.png b/data/plugins/other/image/20191118/331aa690f39edc9f15f64045294e853e.png new file mode 100644 index 0000000..fd062e4 Binary files /dev/null and b/data/plugins/other/image/20191118/331aa690f39edc9f15f64045294e853e.png differ diff --git a/data/plugins/other/image/20191217/e651e53602b61836185802ba6ea261ab.png b/data/plugins/other/image/20191217/e651e53602b61836185802ba6ea261ab.png new file mode 100644 index 0000000..8b001ef Binary files /dev/null and b/data/plugins/other/image/20191217/e651e53602b61836185802ba6ea261ab.png differ diff --git a/data/plugins/other/image/20191230/0596328af186e6272f09889cfcca5843.png b/data/plugins/other/image/20191230/0596328af186e6272f09889cfcca5843.png new file mode 100644 index 0000000..6754397 Binary files /dev/null and b/data/plugins/other/image/20191230/0596328af186e6272f09889cfcca5843.png differ diff --git a/data/plugins/other/image/20200106/00e5f4d74d5e8acb10a5b4b279c0bad0.png b/data/plugins/other/image/20200106/00e5f4d74d5e8acb10a5b4b279c0bad0.png new file mode 100644 index 0000000..1eaa1c4 Binary files /dev/null and b/data/plugins/other/image/20200106/00e5f4d74d5e8acb10a5b4b279c0bad0.png differ diff --git a/data/plugins/other/image/20200106/d67109fd986b85ae6291515a7d6b0a61.png b/data/plugins/other/image/20200106/d67109fd986b85ae6291515a7d6b0a61.png new file mode 100644 index 0000000..8a764de Binary files /dev/null and b/data/plugins/other/image/20200106/d67109fd986b85ae6291515a7d6b0a61.png differ diff --git a/data/plugins/other/image/20200108/fcfe197c6ddf9cc3f36629f72c1285d7.png b/data/plugins/other/image/20200108/fcfe197c6ddf9cc3f36629f72c1285d7.png new file mode 100644 index 0000000..0c7f8f7 Binary files /dev/null and b/data/plugins/other/image/20200108/fcfe197c6ddf9cc3f36629f72c1285d7.png differ diff --git a/data/plugins/other/image/20200120/b388d6ebc2fe5dc1b568663db38b2d49.png b/data/plugins/other/image/20200120/b388d6ebc2fe5dc1b568663db38b2d49.png new file mode 100644 index 0000000..bd86a81 Binary files /dev/null and b/data/plugins/other/image/20200120/b388d6ebc2fe5dc1b568663db38b2d49.png differ diff --git a/data/plugins/other/image/20200129/2588534a9f75e23127bd0e882ae1690f.png b/data/plugins/other/image/20200129/2588534a9f75e23127bd0e882ae1690f.png new file mode 100644 index 0000000..6f019e3 Binary files /dev/null and b/data/plugins/other/image/20200129/2588534a9f75e23127bd0e882ae1690f.png differ diff --git a/data/plugins/other/image/20200210/50e8a3b77777038f72a3b1467ddca264.png b/data/plugins/other/image/20200210/50e8a3b77777038f72a3b1467ddca264.png new file mode 100644 index 0000000..bc59ae1 Binary files /dev/null and b/data/plugins/other/image/20200210/50e8a3b77777038f72a3b1467ddca264.png differ diff --git a/data/plugins/other/image/20200218/ba006d057f070951a7b1cbe75e50ec65.png b/data/plugins/other/image/20200218/ba006d057f070951a7b1cbe75e50ec65.png new file mode 100644 index 0000000..3fd747c Binary files /dev/null and b/data/plugins/other/image/20200218/ba006d057f070951a7b1cbe75e50ec65.png differ diff --git a/data/plugins/other/image/20200315/d92c6611e3678db4bf3f85e0cc9d37cf.png b/data/plugins/other/image/20200315/d92c6611e3678db4bf3f85e0cc9d37cf.png new file mode 100644 index 0000000..a748a5f Binary files /dev/null and b/data/plugins/other/image/20200315/d92c6611e3678db4bf3f85e0cc9d37cf.png differ diff --git a/data/plugins/other/image/20200315/eea7e9c23a22857b685ac7a0302a542e.png b/data/plugins/other/image/20200315/eea7e9c23a22857b685ac7a0302a542e.png new file mode 100644 index 0000000..d767e8c Binary files /dev/null and b/data/plugins/other/image/20200315/eea7e9c23a22857b685ac7a0302a542e.png differ diff --git a/data/plugins/other/image/20200325/06a8123060338addc6804259a2de83cf.png b/data/plugins/other/image/20200325/06a8123060338addc6804259a2de83cf.png new file mode 100644 index 0000000..a343217 Binary files /dev/null and b/data/plugins/other/image/20200325/06a8123060338addc6804259a2de83cf.png differ diff --git a/data/plugins/other/image/20200325/4f20682fd226e85ea0e7e8618a4697f6.png b/data/plugins/other/image/20200325/4f20682fd226e85ea0e7e8618a4697f6.png new file mode 100644 index 0000000..85625ed Binary files /dev/null and b/data/plugins/other/image/20200325/4f20682fd226e85ea0e7e8618a4697f6.png differ diff --git a/data/plugins/other/image/20200326/6f437e4f013b783cac17842f2b79478b.png b/data/plugins/other/image/20200326/6f437e4f013b783cac17842f2b79478b.png new file mode 100644 index 0000000..259ece1 Binary files /dev/null and b/data/plugins/other/image/20200326/6f437e4f013b783cac17842f2b79478b.png differ diff --git a/data/plugins/other/image/20200329/40d01d19b0c2bff6acd5b2c02931d39a.png b/data/plugins/other/image/20200329/40d01d19b0c2bff6acd5b2c02931d39a.png new file mode 100644 index 0000000..06734fe Binary files /dev/null and b/data/plugins/other/image/20200329/40d01d19b0c2bff6acd5b2c02931d39a.png differ diff --git a/data/plugins/other/image/20200330/a558018b235958e380eb27385d296672.png b/data/plugins/other/image/20200330/a558018b235958e380eb27385d296672.png new file mode 100644 index 0000000..c787426 Binary files /dev/null and b/data/plugins/other/image/20200330/a558018b235958e380eb27385d296672.png differ diff --git a/data/plugins/other/image/20200401/5ab52b348d46d2fd21fd6af5bd987955.png b/data/plugins/other/image/20200401/5ab52b348d46d2fd21fd6af5bd987955.png new file mode 100644 index 0000000..f10c761 Binary files /dev/null and b/data/plugins/other/image/20200401/5ab52b348d46d2fd21fd6af5bd987955.png differ diff --git a/data/plugins/other/image/20200407/fea4f518a447cde5cbc5c6df1e1f434d.png b/data/plugins/other/image/20200407/fea4f518a447cde5cbc5c6df1e1f434d.png new file mode 100644 index 0000000..362fa8b Binary files /dev/null and b/data/plugins/other/image/20200407/fea4f518a447cde5cbc5c6df1e1f434d.png differ diff --git a/data/plugins/other/image/20200410/891111b223fb30cb065d6a29410c6d70.png b/data/plugins/other/image/20200410/891111b223fb30cb065d6a29410c6d70.png new file mode 100644 index 0000000..362fa8b Binary files /dev/null and b/data/plugins/other/image/20200410/891111b223fb30cb065d6a29410c6d70.png differ diff --git a/data/plugins/other/image/20200427/44047cab050e6d1a4df7ee1c935cd8a2.png b/data/plugins/other/image/20200427/44047cab050e6d1a4df7ee1c935cd8a2.png new file mode 100644 index 0000000..0ca4011 Binary files /dev/null and b/data/plugins/other/image/20200427/44047cab050e6d1a4df7ee1c935cd8a2.png differ diff --git a/data/plugins/other/image/20200427/c053de465ca87c22cb8b4518d5a0425c.png b/data/plugins/other/image/20200427/c053de465ca87c22cb8b4518d5a0425c.png new file mode 100644 index 0000000..4d81a58 Binary files /dev/null and b/data/plugins/other/image/20200427/c053de465ca87c22cb8b4518d5a0425c.png differ diff --git a/data/plugins/other/image/20200502/b5f71be748935aedb7d2211ead1da3d6.png b/data/plugins/other/image/20200502/b5f71be748935aedb7d2211ead1da3d6.png new file mode 100644 index 0000000..0cf8830 Binary files /dev/null and b/data/plugins/other/image/20200502/b5f71be748935aedb7d2211ead1da3d6.png differ diff --git a/data/plugins/other/image/20200502/e23e5d4fef12606e3ce935f00eaf3dbe.png b/data/plugins/other/image/20200502/e23e5d4fef12606e3ce935f00eaf3dbe.png new file mode 100644 index 0000000..84c2698 Binary files /dev/null and b/data/plugins/other/image/20200502/e23e5d4fef12606e3ce935f00eaf3dbe.png differ diff --git a/data/plugins/other/image/20200520/7667104cd890b06a74bc0d336d4f7dbd.png b/data/plugins/other/image/20200520/7667104cd890b06a74bc0d336d4f7dbd.png new file mode 100644 index 0000000..4cbe525 Binary files /dev/null and b/data/plugins/other/image/20200520/7667104cd890b06a74bc0d336d4f7dbd.png differ diff --git a/data/plugins/other/image/20200523/4681b7928072a567b7dfabf162d4108a.png b/data/plugins/other/image/20200523/4681b7928072a567b7dfabf162d4108a.png new file mode 100644 index 0000000..198fd19 Binary files /dev/null and b/data/plugins/other/image/20200523/4681b7928072a567b7dfabf162d4108a.png differ diff --git a/data/plugins/other/image/20200619/8292b2d55445856f3531648825f13be5.png b/data/plugins/other/image/20200619/8292b2d55445856f3531648825f13be5.png new file mode 100644 index 0000000..ecf3bf9 Binary files /dev/null and b/data/plugins/other/image/20200619/8292b2d55445856f3531648825f13be5.png differ diff --git a/data/plugins/other/image/20200717/41ab963f3179ebc75d81b158c4ca4433.png b/data/plugins/other/image/20200717/41ab963f3179ebc75d81b158c4ca4433.png new file mode 100644 index 0000000..fd59014 Binary files /dev/null and b/data/plugins/other/image/20200717/41ab963f3179ebc75d81b158c4ca4433.png differ diff --git a/data/plugins/other/image/20200720/036bfca9c81b272d09c32984ba3b7aea.png b/data/plugins/other/image/20200720/036bfca9c81b272d09c32984ba3b7aea.png new file mode 100644 index 0000000..1b0fa5f Binary files /dev/null and b/data/plugins/other/image/20200720/036bfca9c81b272d09c32984ba3b7aea.png differ diff --git a/data/plugins/other/image/20200809/e0972606bba6b951b3e3abaf02bee292.png b/data/plugins/other/image/20200809/e0972606bba6b951b3e3abaf02bee292.png new file mode 100644 index 0000000..362fa8b Binary files /dev/null and b/data/plugins/other/image/20200809/e0972606bba6b951b3e3abaf02bee292.png differ diff --git a/data/plugins/other/image/20200820/97f49f5b4f2f21a03b01ec2eb0599ec5.png b/data/plugins/other/image/20200820/97f49f5b4f2f21a03b01ec2eb0599ec5.png new file mode 100644 index 0000000..8c42fc8 Binary files /dev/null and b/data/plugins/other/image/20200820/97f49f5b4f2f21a03b01ec2eb0599ec5.png differ diff --git a/data/plugins/other/image/20200915/28ff3da91aefe2ddf22962094c3180ab.png b/data/plugins/other/image/20200915/28ff3da91aefe2ddf22962094c3180ab.png new file mode 100644 index 0000000..e27ff73 Binary files /dev/null and b/data/plugins/other/image/20200915/28ff3da91aefe2ddf22962094c3180ab.png differ diff --git a/data/plugins/other/image/20200921/f2010eeb06bcb63f44a82af418c3f0a5.png b/data/plugins/other/image/20200921/f2010eeb06bcb63f44a82af418c3f0a5.png new file mode 100644 index 0000000..c69d050 Binary files /dev/null and b/data/plugins/other/image/20200921/f2010eeb06bcb63f44a82af418c3f0a5.png differ diff --git a/data/plugins/other/image/20201010/8e7ed2907eec45d8928201c43a94b119.png b/data/plugins/other/image/20201010/8e7ed2907eec45d8928201c43a94b119.png new file mode 100644 index 0000000..13be967 Binary files /dev/null and b/data/plugins/other/image/20201010/8e7ed2907eec45d8928201c43a94b119.png differ diff --git a/data/plugins/other/image/20201013/58a8eb4d0c850534ed00e5a2123d53d7.png b/data/plugins/other/image/20201013/58a8eb4d0c850534ed00e5a2123d53d7.png new file mode 100644 index 0000000..ab08ebc Binary files /dev/null and b/data/plugins/other/image/20201013/58a8eb4d0c850534ed00e5a2123d53d7.png differ diff --git a/data/plugins/other/image/20201103/4958efe935147ae5933c8da5a84f63ab.png b/data/plugins/other/image/20201103/4958efe935147ae5933c8da5a84f63ab.png new file mode 100644 index 0000000..171428e Binary files /dev/null and b/data/plugins/other/image/20201103/4958efe935147ae5933c8da5a84f63ab.png differ diff --git a/data/plugins/other/image/20201122/c7678bdcfde93b622befb7c089465ae3.png b/data/plugins/other/image/20201122/c7678bdcfde93b622befb7c089465ae3.png new file mode 100644 index 0000000..f102d02 Binary files /dev/null and b/data/plugins/other/image/20201122/c7678bdcfde93b622befb7c089465ae3.png differ diff --git a/data/plugins/other/image/20201213/ada0d5433c4d484f22e4811dfddd1f94.png b/data/plugins/other/image/20201213/ada0d5433c4d484f22e4811dfddd1f94.png new file mode 100644 index 0000000..fb77797 Binary files /dev/null and b/data/plugins/other/image/20201213/ada0d5433c4d484f22e4811dfddd1f94.png differ diff --git a/data/plugins/other/image/20201225/282592b4fafdfad2d6725fab79741a01.png b/data/plugins/other/image/20201225/282592b4fafdfad2d6725fab79741a01.png new file mode 100644 index 0000000..e6052b3 Binary files /dev/null and b/data/plugins/other/image/20201225/282592b4fafdfad2d6725fab79741a01.png differ diff --git a/data/plugins/other/image/20210121/9f106b6e8aed899e01f1c056a4b13a8f.png b/data/plugins/other/image/20210121/9f106b6e8aed899e01f1c056a4b13a8f.png new file mode 100644 index 0000000..e48a434 Binary files /dev/null and b/data/plugins/other/image/20210121/9f106b6e8aed899e01f1c056a4b13a8f.png differ diff --git a/data/plugins/other/image/20210126/d5c0c0e6f75a932bd33b999df1b02744.png b/data/plugins/other/image/20210126/d5c0c0e6f75a932bd33b999df1b02744.png new file mode 100644 index 0000000..e836925 Binary files /dev/null and b/data/plugins/other/image/20210126/d5c0c0e6f75a932bd33b999df1b02744.png differ diff --git a/data/plugins/other/image/20210203/553219c79074bc827f5011b1faa2189b.png b/data/plugins/other/image/20210203/553219c79074bc827f5011b1faa2189b.png new file mode 100644 index 0000000..589df08 Binary files /dev/null and b/data/plugins/other/image/20210203/553219c79074bc827f5011b1faa2189b.png differ diff --git a/data/plugins/other/image/20210204/aff2c76fff3dd2fa0e1e3ba6368639d6.png b/data/plugins/other/image/20210204/aff2c76fff3dd2fa0e1e3ba6368639d6.png new file mode 100644 index 0000000..19a32a2 Binary files /dev/null and b/data/plugins/other/image/20210204/aff2c76fff3dd2fa0e1e3ba6368639d6.png differ diff --git a/data/plugins/other/image/20210219/32fccecd49f18c4f5154a6d33766a93d.png b/data/plugins/other/image/20210219/32fccecd49f18c4f5154a6d33766a93d.png new file mode 100644 index 0000000..e2db196 Binary files /dev/null and b/data/plugins/other/image/20210219/32fccecd49f18c4f5154a6d33766a93d.png differ diff --git a/data/plugins/other/image/20210408/83c3fa5c1626ec7c649cb6ddf73c2aa0.png b/data/plugins/other/image/20210408/83c3fa5c1626ec7c649cb6ddf73c2aa0.png new file mode 100644 index 0000000..280dfc8 Binary files /dev/null and b/data/plugins/other/image/20210408/83c3fa5c1626ec7c649cb6ddf73c2aa0.png differ diff --git a/data/plugins/other/image/20210430/b6c3c33c90b8cbc80b6142a0231dac98.png b/data/plugins/other/image/20210430/b6c3c33c90b8cbc80b6142a0231dac98.png new file mode 100644 index 0000000..4a0e13f Binary files /dev/null and b/data/plugins/other/image/20210430/b6c3c33c90b8cbc80b6142a0231dac98.png differ diff --git a/data/plugins/other/image/20210603/4cc55911f65dab0d146352dabbb59053.png b/data/plugins/other/image/20210603/4cc55911f65dab0d146352dabbb59053.png new file mode 100644 index 0000000..81d399b Binary files /dev/null and b/data/plugins/other/image/20210603/4cc55911f65dab0d146352dabbb59053.png differ diff --git a/data/plugins/other/image/20210609/bcca34b16e61b603e04b3c64039b1f5e.png b/data/plugins/other/image/20210609/bcca34b16e61b603e04b3c64039b1f5e.png new file mode 100644 index 0000000..1a60e35 Binary files /dev/null and b/data/plugins/other/image/20210609/bcca34b16e61b603e04b3c64039b1f5e.png differ diff --git a/data/plugins/other/image/20210702/c451a7ba3c2431f4a699614585bbafe2.png b/data/plugins/other/image/20210702/c451a7ba3c2431f4a699614585bbafe2.png new file mode 100644 index 0000000..bf848d2 Binary files /dev/null and b/data/plugins/other/image/20210702/c451a7ba3c2431f4a699614585bbafe2.png differ diff --git a/data/plugins/other/image/20210722/717d299cc12586b1ceddc0f26591fdb2.png b/data/plugins/other/image/20210722/717d299cc12586b1ceddc0f26591fdb2.png new file mode 100644 index 0000000..b09fb9c Binary files /dev/null and b/data/plugins/other/image/20210722/717d299cc12586b1ceddc0f26591fdb2.png differ diff --git a/data/plugins/other/image/20210723/e77e884a991dfee022cc95e15c0d831e.png b/data/plugins/other/image/20210723/e77e884a991dfee022cc95e15c0d831e.png new file mode 100644 index 0000000..a350a8b Binary files /dev/null and b/data/plugins/other/image/20210723/e77e884a991dfee022cc95e15c0d831e.png differ diff --git a/data/plugins/other/image/20210802/f5e8fe928a70e6c2ef6aca56c7bf5689.png b/data/plugins/other/image/20210802/f5e8fe928a70e6c2ef6aca56c7bf5689.png new file mode 100644 index 0000000..d5f3f2b Binary files /dev/null and b/data/plugins/other/image/20210802/f5e8fe928a70e6c2ef6aca56c7bf5689.png differ diff --git a/data/plugins/other/image/20210807/49ee4171a20de74dfd69a7728b20b12d.png b/data/plugins/other/image/20210807/49ee4171a20de74dfd69a7728b20b12d.png new file mode 100644 index 0000000..25377e0 Binary files /dev/null and b/data/plugins/other/image/20210807/49ee4171a20de74dfd69a7728b20b12d.png differ diff --git a/data/plugins/other/image/20210809/72011b5393b2458cf0ea4cce65b49d97.png b/data/plugins/other/image/20210809/72011b5393b2458cf0ea4cce65b49d97.png new file mode 100644 index 0000000..b3b9fb4 Binary files /dev/null and b/data/plugins/other/image/20210809/72011b5393b2458cf0ea4cce65b49d97.png differ diff --git a/data/plugins/other/image/20210817/1bbc79b0173702705a1138ae2a0c04ad.png b/data/plugins/other/image/20210817/1bbc79b0173702705a1138ae2a0c04ad.png new file mode 100644 index 0000000..e8ecea6 Binary files /dev/null and b/data/plugins/other/image/20210817/1bbc79b0173702705a1138ae2a0c04ad.png differ diff --git a/data/plugins/other/image/20210928/e054ee81a23bf594c9ba48c9c40b11d9.png b/data/plugins/other/image/20210928/e054ee81a23bf594c9ba48c9c40b11d9.png new file mode 100644 index 0000000..61bcabd Binary files /dev/null and b/data/plugins/other/image/20210928/e054ee81a23bf594c9ba48c9c40b11d9.png differ diff --git a/data/plugins/other/image/20211101/e4c27dc88f376da272cc3529880d4eeb.png b/data/plugins/other/image/20211101/e4c27dc88f376da272cc3529880d4eeb.png new file mode 100644 index 0000000..7c78a3a Binary files /dev/null and b/data/plugins/other/image/20211101/e4c27dc88f376da272cc3529880d4eeb.png differ diff --git a/data/plugins/other/image/20211124/d64410f1d4f44a0696056c099d504eb3.png b/data/plugins/other/image/20211124/d64410f1d4f44a0696056c099d504eb3.png new file mode 100644 index 0000000..2899457 Binary files /dev/null and b/data/plugins/other/image/20211124/d64410f1d4f44a0696056c099d504eb3.png differ diff --git a/data/plugins/other/image/20220416/3201116e1083d36b2d433d1530913731.png b/data/plugins/other/image/20220416/3201116e1083d36b2d433d1530913731.png new file mode 100644 index 0000000..b688a53 Binary files /dev/null and b/data/plugins/other/image/20220416/3201116e1083d36b2d433d1530913731.png differ diff --git a/data/plugins/other/image/20220424/dff76f8daeb6dec5c8294f7702e7f079.png b/data/plugins/other/image/20220424/dff76f8daeb6dec5c8294f7702e7f079.png new file mode 100644 index 0000000..41c3170 Binary files /dev/null and b/data/plugins/other/image/20220424/dff76f8daeb6dec5c8294f7702e7f079.png differ diff --git a/install.sql b/install.sql new file mode 100644 index 0000000..70e7818 --- /dev/null +++ b/install.sql @@ -0,0 +1,60 @@ +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', '7.9.2'), +('update_msg', '暂无更新日志'), +('update_date', '2022-06-01'), +('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..2ff0f8a --- /dev/null +++ b/public/install/install_6.0.sh @@ -0,0 +1,853 @@ +#!/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}" -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} + 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 +} +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=(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); + 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='http://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 + + #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" + 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 + apt-get update -y + 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 + $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.8" + 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 + 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.8.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 -U wheel==0.34.2 + $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt + 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_Bt(){ + panelPort="8888" + if [ -f ${setup_path}/server/panel/data/port.pl ];then + panelPort=$(cat ${setup_path}/server/panel/data/port.pl) + 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) + sleep 1 + admin_auth="/www/server/panel/data/admin_path.pl" + if [ ! -f ${admin_auth} ];then + auth_path=$(cat /dev/urandom | head -n 16 | md5sum | head -c 8) + echo "/${auth_path}" > ${admin_auth} + fi + chmod -R 700 $pyenv_path/pyenv/bin + /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/ + /etc/init.d/bt start + $python_bin -m py_compile tools.py + $python_bin tools.py username + username=$($python_bin tools.py panel ${password}) + 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:8888/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 +} +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 + 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/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(){ + 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 [ "$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 + +Install_Main +echo > /www/server/panel/data/bind.pl +echo -e "==================================================================" +echo -e "\033[32mCongratulations! Installed successfully!\033[0m" +echo -e "==================================================================" +echo "外网面板地址: http://${getIpAddress}:${panelPort}${auth_path}" +echo "内网面板地址: http://${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" +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..04750de --- /dev/null +++ b/public/install/public.sh @@ -0,0 +1,144 @@ +#!/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=(http://dg2.bt.cn http://dg1.bt.cn 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); + 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='http://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 http://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/panel6.zip b/public/install/src/panel6.zip new file mode 100644 index 0000000..1e15996 Binary files /dev/null and b/public/install/src/panel6.zip differ diff --git a/public/install/update/LinuxPanel-7.9.2.zip b/public/install/update/LinuxPanel-7.9.2.zip new file mode 100644 index 0000000..edda80c Binary files /dev/null and b/public/install/update/LinuxPanel-7.9.2.zip differ diff --git a/public/install/update6.sh b/public/install/update6.sh new file mode 100644 index 0000000..82a3b38 --- /dev/null +++ b/public/install/update6.sh @@ -0,0 +1,122 @@ +#!/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 + +public_file=/www/server/panel/install/public.sh +publicFileMd5=$(md5sum ${public_file} 2>/dev/null|awk '{print $1}') +md5check="f6ccaaec227577b87a22bf162004667b" +if [ "${publicFileMd5}" != "${md5check}" ]; then + wget -O Tpublic.sh $Btapi_Url/install/public.sh -T 20; + publicFileMd5=$(md5sum Tpublic.sh 2>/dev/null|awk '{print $1}') + if [ "${publicFileMd5}" == "${md5check}" ]; then + \cp -rpa Tpublic.sh $public_file + fi + rm -f Tpublic.sh +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.2' +fi +armCheck=$(uname -m|grep arm) +if [ "${armCheck}" ];then + version='7.7.0' +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/bt6.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=$(echo "$pip_list"|grep requests) +if [ "$request_v" = "" ];then + $mypip install requests +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/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..3843867 --- /dev/null +++ b/public/static/css/download.css @@ -0,0 +1,356 @@ +.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; +} + +.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 { + background-color: #edf6ef; +} + +.d4 .desc { + margin-bottom: 16px; +} + +.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; + } +} \ No newline at end of file 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..786cb17 Binary files /dev/null and b/public/static/file/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/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/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/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..d2db568 --- /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); +} + +const 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('服务器错误'); + } + } + }); +} + +const 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('服务器错误'); + } + } + }); +} + +const 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/route/app.php b/route/app.php new file mode 100644 index 0000000..fda85a5 --- /dev/null +++ b/route/app.php @@ -0,0 +1,101 @@ +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::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'); + +})->middleware(\app\middleware\CheckAdmin::class); + +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/files/bt.js b/wiki/files/bt.js new file mode 100644 index 0000000..25ac23a --- /dev/null +++ b/wiki/files/bt.js @@ -0,0 +1,199 @@ +/* + *宝塔面板去除各种计算题与延时等待 +*/ +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) { + title = '', + tips = '是否确认【删除数据库】,删除后可能会影响业务使用!'; + if(obj && obj.db_type > 0) tips = '远程数据库不支持数据库回收站,删除后将无法恢复,请谨慎操作'; + var title = typeof dbname === "function" ?'批量删除数据库':'删除数据库 [ '+ dbname +' ]'; + layer.open({ + type:1, + title:title, + icon:0, + skin:'delete_site_layer', + area: "530px", + closeBtn: 2, + shadeClose: true, + content:"
" + + "" + + "
"+tips+"
" + + "
注意:数据无价,请谨慎操作!!!"+(!recycle_bin_db_open?'
风险操作:当前数据库回收站未开启,删除数据库将永久消失!':'')+"
" + + "
", + btn:[lan.public.ok,lan.public.cancel], + yes:function(indexs){ + var data = {id: wid,name: dbname}; + if(typeof dbname === "function"){ + delete data.id; + delete data.name; + } + layer.close(indexs) + if(typeof dbname === "function"){ + dbname(data) + }else{ + bt.database.del_database(data, function (rdata) { + layer.closeAll() + if (callback) callback(rdata); + bt.msg(rdata); + }) + } + } + }) + } +} +if("undefined" != typeof site && site.hasOwnProperty("del_site")){ + site.del_site = function(wid, wname, callback) { + var title = typeof wname === "function" ?'批量删除站点':'删除站点 [ '+ wname +' ]'; + layer.open({ + type:1, + title:title, + icon:0, + skin:'delete_site_layer', + area: "440px", + closeBtn: 2, + shadeClose: true, + content:"
" + + '' + + "
是否要删除关联的FTP、数据库、站点目录!
" + + "
" + + "" + + "" + + "" + + "
"+ + "
", + btn:[lan.public.ok,lan.public.cancel], + success:function(layers,indexs){ + $(layers).find('.check_type_group label').hover(function(){ + var name = $(this).find('input').attr('name'); + if(name === 'data' && !recycle_bin_db_open){ + layer.tips('风险操作:当前数据库回收站未开启,删除数据库将永久消失!', this, {tips: [1, 'red'],time:0}) + }else if(name === 'path' && !recycle_bin_open){ + layer.tips('风险操作:当前文件回收站未开启,删除站点目录将永久消失!', this, {tips: [1, 'red'],time:0}) + } + },function(){ + layer.closeAll('tips'); + }) + }, + yes:function(indexs){ + var data = {id: wid,webname: wname}; + $('#site_delete_form input[type=checkbox]').each(function (index, item) { + if($(item).is(':checked')) data[$(item).attr('name')] = 1 + }) + var is_database = data.hasOwnProperty('database'),is_path = data.hasOwnProperty('path'),is_ftp = data.hasOwnProperty('ftp'); + if((!is_database && !is_path) && (!is_ftp || is_ftp)){ + if(typeof wname === "function"){ + wname(data) + return false; + } + bt.site.del_site(data, function (rdata) { + layer.close(indexs); + if (callback) callback(rdata); + bt.msg(rdata); + }) + return false + } + if(typeof wname === "function"){ + delete data.id; + delete data.webname; + } + layer.close(indexs) + if(typeof wname === "function"){ + console.log(data) + wname(data) + }else{ + bt.site.del_site(data, function (rdata) { + layer.closeAll() + if (rdata.status) site.get_list(); + if (callback) callback(rdata); + bt.msg(rdata); + }) + } + } + }) + } +} +if("undefined" != typeof bt && bt.hasOwnProperty("firewall") && bt.firewall.hasOwnProperty("add_accept_port")){ + bt.firewall.add_accept_port = function(type, port, ps, callback) { + var action = "AddDropAddress"; + if (type == 'port') { + ports = port.split(':'); + if (port.indexOf('-') != -1) ports = port.split('-'); + for (var i = 0; i < ports.length; i++) { + if (!bt.check_port(ports[i])) { + layer.msg(lan.firewall.port_err, { icon: 5 }); + return; + } + } + action = "AddAcceptPort"; + } + + loading = bt.load(); + bt.send(action, 'firewall/' + action, { port: port, type: type, ps: ps }, function(rdata) { + loading.close(); + if (callback) callback(rdata); + }) + } +} +function SafeMessage(j, h, g, f) { + if(f == undefined) { + f = "" + } + var mess = layer.open({ + type: 1, + title: j, + area: "350px", + closeBtn: 2, + shadeClose: true, + content: "

" + h + "

" + f + "
" + }); + $(".bt-cancel").click(function(){ + layer.close(mess); + }); + $("#toSubmit").click(function() { + layer.close(mess); + g(); + }) +} +$(document).ready(function () { + if($('#updata_pro_info').length>0){ + $('#updata_pro_info').html(''); + bt.set_cookie('productPurchase', 1); + } +}) \ No newline at end of file diff --git a/wiki/files/pluginAuth.py b/wiki/files/pluginAuth.py new file mode 100644 index 0000000..bb75dcd --- /dev/null +++ b/wiki/files/pluginAuth.py @@ -0,0 +1,63 @@ +#coding: utf-8 +import public,os,sys,json + +class Plugin: + name = False + p_path = None + is_php = False + plu = None + __api_root_url = 'https://api.bt.cn' + __api_url = __api_root_url+ '/panel/get_plugin_list' + __cache_file = 'data/plugin_list.json' + + def __init__(self, name): + self.name = name + self.p_path = public.get_plugin_path(name) + self.is_php = os.path.exists(self.p_path + '/index.php') + + def get_plugin_list(self, force = False): + if force==False and os.path.exists(self.__cache_file): + jsonData = public.readFile(self.__cache_file) + softList = json.loads(jsonData) + else: + try: + jsonData = public.HttpGet(self.__api_url) + except Exception as ex: + raise public.error_conn_cloud(str(ex)) + softList = json.loads(jsonData) + if type(softList)!=dict or 'list' not in softList: raise Exception('云端插件列表获取失败') + public.writeFile(self.__cache_file, jsonData) + + return softList + + def isdef(self, fun): + if not self.is_php: + public.package_path_append(self.p_path) + plugin_main = __import__(self.name + '_main') + try: + if sys.version_info[0] == 2: + reload(plugin_main) + else: + from imp import reload + reload(plugin_main) + except: + pass + self.plu = eval('plugin_main.' + self.name + '_main()') + if not hasattr(self.plu, fun): + if self.name == 'btwaf' and fun == 'index': + raise Exception("未购买") + return False + return True + + def exec_fun(self, args): + fun = args.s + if not self.is_php: + plu = self.plu + data = eval('plu.' + fun + '(args)') + else: + import panelPHP + args.s = fun + args.name = self.name + data = panelPHP.panelPHP(self.name).exec_php_script(args) + return data + diff --git a/wiki/update.md b/wiki/update.md new file mode 100644 index 0000000..9e3f091 --- /dev/null +++ b/wiki/update.md @@ -0,0 +1,102 @@ +# 官方更新包修改记录 + +官方更新包下载链接:http://download.bt.cn/install/update/LinuxPanel-版本号.zip + +假设搭建的宝塔第三方云端网址是 http://www.example.com + +- 将class文件夹里面所有的.so文件删除 + +- 将pluginAuth.py复制到class文件夹 + +- 在class/jobs.py,将以下代码删除 + + ```python + if not public.is_debug(): + public.ExecShell("rm -f /www/server/panel/class/pluginAuth.py") + ``` + +- 全局搜索替换 https://api.bt.cn => http://www.example.com + +- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py和plugin_deployment.py) + +- 全局搜索替换 http://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 + +- class/webshell_check.py 搜索替换 public.GetConfigValue('home') => 'https://www.bt.cn' + +- class/plugin_deployment.py 约270行,替换 public.GetConfigValue('home') => 'https://www.bt.cn' + +- class/panelPlugin.py 文件,download_icon方法内替换 public.GetConfigValue('home') => 'https://www.bt.cn' + +- class/panelPlugin.py 文件,set_pyenv方法内,temp_file = public.readFile(filename)这行代码下面加上 + + ```python + temp_file = temp_file.replace('wget -O Tpublic.sh', '#wget -O Tpublic.sh') + ``` + +- 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 "/wget -O Tpublic.sh/d" $name.sh + ``` + +- install/public.sh 用官网最新版的[public.sh](http://download.bt.cn/install/public.sh)替换,并去除最下面bt_check一行 + +- 去除无用的定时任务:task.py 文件 + + 删除 p = threading.Thread(target=check_files_panel) 以及下面2行 + + 删除 p = threading.Thread(target=check_panel_msg) 以及下面2行 + +- 去除面板日志上报:script/site_task.py 文件 + + 删除最下面 logs_analysis() 这1行 + +- 去除首页广告:BTPanel/static/js/index.js 文件删除最下面index.recommend_paid_version()这一行 + +- 去除首页自动检测更新,避免频繁请求云端:BTPanel/static/js/index.js 文件注释掉bt.system.check_update这一段代码外的setTimeout + +- [可选]去除各种计算题:复制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 + +解压安装包panel6.zip,将更新包改好的文件覆盖到里面,然后重新打包,即可更新安装包。( + +别忘了删除class文件夹里面所有的.so文件) +