多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# :-: 宝塔API全功能接管接口 官方程序中默认使用**封装**的方法,自定义仅供开发参考。 ## 一、封装使用 `bt($sid, $go, $data, $pid, $type)` | 参数 | 说明 | | --- | --- | | $sid | 服务器ID,必须 | | $go | 请求功能,必须 | | $data | 传送数组,必须<br>可参考 系统后台->搭建系统->功能配置->各项中能中的 示范请求 | | $pid | 所操作的站点ID,选填| | $type | 对接模式,默认为官方接口,选填<br> 1:官方接口 2:cmspro接口 需修改__init__.py(可参考 【宝塔通用就接口】) | **1、系统封装使用:采用官方 url** ``` /** * 检查面板更新 */ $data = array( 'check' => 'true' ); $server = bt('10001', '/config?action=get_token', $data, 0); if ($server['token'] != true) { echo '提交失败,请根据提示调整。<br>' . $server["msg"]; var_dump($server); exit; } else { exit('yes'); } ``` 2、系统精简请求 ``` /** * 检查面板更新 */ $data = array( 'check' => 'true' ); $server = bt('10001', 'UpdatePanel', $data, 0); if ($server['token'] != true) { echo '提交失败,请根据提示调整。<br>' . $server["msg"]; var_dump($server); exit; } else { exit('yes'); } ``` 系统已做好**全局**封装直接使用即可,也可以拿去做别的封装参考。 参考封装 ``` /** * 宝塔系统对接 * @param type $sid 服务器ID * @param type $gourl 所操作的URL 格式为 /data?action=getKey 形式 * @param type $data 发送的数据数组形式 * @param type $pid 所操作的站点ID,选填 * @param type $type 对接模式,默认为官方接口 (1:官方接口 2:cmspro接口 需修改__init__.py) * @return Array */ function bt($sid, $gourl, $data, $pid = 0, $type = 1) { $row = DB('setup_panel_bt')->where("id=$sid")->find(); if ($row['id'] > 0) { //配置服务器信息 $bt_data = array( 'bt_panel' => $row['ssl'] . '://' . $row['api'] . ':' . $row['port'], //服务器地址 'bt_key' => $row['pass'], //服务器秘钥 'bt_cookie' => DATA . 'temp/', // COOKIE保存目录 'bt_type' => $type, //对接模式,默认为官方接口 (1:官方接口 2:cmspro接口) 'bt_path' => $row['entry'], //接口路径,仅对cmspro接口有效 'bt_sid' => $row['id'], //对接的服务器ID 'bt_pid' => $pid, //所操作的项目ID ); //链接对应服务器的宝塔 $_bt = new BT_SYS($bt_data); //执行操作命令 return $_bt->Get($gourl, $data); } else { return '服务器不存在或不属于宝塔面板!'; } } ``` ## 二、自定义使用 **初始化** ``` $bt_data = array( 'bt_panel' => $_POST['ssl'] . '://' . $_POST['api'] . ':' . $_POST['port'], //服务器地址 'bt_key' => $_POST['pass'], //服务器秘钥 'bt_cookie' => DATA . 'temp/', // COOKIE保存目录 'bt_type' => 1, //对接模式,默认为官方接口 (1:官方接口 2:cmspro接口) 'bt_path' => null, //接口路径,仅对cmspro接口有效 'bt_sid' => $_POST['id'], //对接的服务器ID ); $bt = new BT_SYS($bt_data); ``` **功能使用** 1、采用官方 url ``` /** * 检查面板更新 */ $data = array( 'check' => 'true' ); $server = $bt->Get('/config?action=get_token', $data); if ($server['token'] != true) { echo '提交失败,请根据提示调整。<br>' . $server["msg"]; var_dump($server); exit; } else { exit('yes'); } ``` 2、系统精简请求 注:下方用的`UpdatePanel`参考 系统后台->搭建系统->功能配置->各项中能中的`值` ``` /** * 检查面板更新 */ $data = array( 'check' => 'true' ); $server = $bt->Get('UpdatePanel', $data); if ($server['token'] != true) { echo '提交失败,请根据提示调整。<br>' . $server["msg"]; var_dump($server); exit; } else { exit('yes'); } ``` ## 三、宝塔通用就接口 这种情况为备用方案,在宝塔接口无法使用的情况下使用。 **!!!!一定要在修改前备份修改的文件!** 此方法,修改后重启面板即可,服务重启面板无法进入面板。 ``` linux登陆ssh 输入bt 选择修复面板,然后尝试重新修改或放弃 win登陆3389覆盖同版本的文件,然后尝试重新修改或放弃 ``` 此方法完成后可实现免密码登录面板,因此切勿泄露url信息给外人。 免登录访问地址为:`http://服务器IP:端口/login?api地址=密钥` **再次提醒:本方法仅支持宝塔6.0以上的面板,每次更新、重置面板一定要重新检查是否有以下代码。** 1.打开面板程序文档 ``` windows 路径 D:\BtSoft\panel\BTPanel\__init__.py linux 路径 /www/server/panel/BTPanel/__init__.py ``` 2.找到 ``` if hasattr(get,'dologin'): ``` 在**上面**增加增加以下代码 建议用 sublime 编辑器下载下来进行编辑。 特别注意:一定要保持缩进,不然面板无法运行。如最下面的图 ``` #宝塔对接接口开始 #设置项开始 cp_api_path = 'cmspro' # cmspro 为api地址,请填写与后台设置的一致 实际地址为/login?cmspro=123456 cp_api_key = '123456' # 123456 为密钥,请填写与后台设置的一致 #设置项结束 if hasattr(get,cp_api_path): api = request.args.get(cp_api_path, '').strip() if api==cp_api_key: session['admin_auth'] = True session['login'] = True login_path = '/' return redirect(login_path) #宝塔对接接口结束​​ ``` **正确的** ![](https://img.kancloud.cn/6d/fa/6dfa090a1361fd676dd4b9e470e144e5_791x362.jpg) **错误的** ![](https://img.kancloud.cn/ac/0f/ac0f75fb24ac41a30047f77d7fae3fbf_831x322.jpg)