当前位置:论坛首页 > BUG提交 > Linux面板

【已解答】宝塔使用的是最新8.0版本,通过api获取端口问题

发表在 BUG提交2023-7-6 07:02 [复制链接] 1 1762

使用api获取端口,想找到指定的端口,然后改为拒绝,可是,不管怎么改,只能获取到第一页的端口,后面改的p,不管用,代码如下:
<?php
/**
* 宝塔API接口示例Demo
* 仅供参考,请根据实际项目需求开发,并做好安全处理
* date 2018/12/12
* author 阿良
*/
class bt_api {
        private $BT_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxx";  //接口密钥
        private $BT_PANEL = "http://133.99.221.39:8888";           //面板地址

        //如果希望多台面板,可以在实例化对象时,将面板地址与密钥传入
        public function __construct($bt_panel = null, $bt_key = null){
                if ($bt_panel) $this->BT_PANEL = $bt_panel;
                if ($bt_key) $this->BT_KEY = $bt_key;
        }

        //示例取面板日志        
        public function GetLogs(){
                //拼接URL地址
                $url = $this->BT_PANEL . '/safe/firewall/get_rules_list';

                //准备POST数据
                $p_data = $this->GetKeyData();                //取签名
                print_r($p_data );
                $p_data['limit'] = 20;
                $p_data['p'] = 2;
                $p_data['query'] = "";
               

                //请求面板接口
                $result = $this->HttpPostCookie($url, $p_data);

                        //解析JSON数据
                        $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;
                }

                /**
                 * 发起POST请求
                 * @param String $url 目标网址,带http://
                 * @param Array|String $data 欲提交的数据
                 * @param int $timeout 请求超时时间,默认为60秒
                 * @return string
                 */
                private function HttpPostCookie($url, $data, $timeout = 60){
                        //定义cookie保存位置
                        $cookie_file = './' . md5($this->BT_PANEL) . '.cookie';
                        if (!file_exists($cookie_file)){
                                $fp = fopen($cookie_file, 'w+');
                                fclose($fp);
                        }

                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, $url);
                        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
                        curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
//                         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_HEADER, 0);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
                        $output = curl_exec($ch);
                        curl_close($ch);
                        return $output;
                }
        }

        //实例化对象
        $api = new bt_api();
        //获取面板日志
        $r_data = $api->GetLogs();
        //输出JSON数据到浏览器
        echo json_encode($r_data);
?>


使用道具 举报 只看该作者 回复
发表于 2023-7-10 09:20:17 | 显示全部楼层
您好,您可以加下我们开发者QQ群,您添加时备注下问题,问题不清晰不然不会同意的
QQ群:471729998  

开发者QQ群是不定时审核
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表