gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

分享Laravel是怎么操作寶塔面板API

本文由Laravel教程欄目給大家介紹laravel+寶塔面板的相關知識,主要給大家分享Laravel是怎么操作寶塔面板API,下面就帶大家一起來看看,希望對需要的朋友有所幫助!

分享Laravel是怎么操作寶塔面板API

Laravel 操作寶塔面板 API

不一樣的地方根據自身業務修改!!!

其他的接口請查看官方文檔:https://www.bt.cn/api-doc.pdf。

代碼如下:

<?php namespace AppHttpControllersCustom; use AppHttpControllersController; use IlluminateSupportFacadesHttp; /**  * 除了 AddSite GetSSL GetFileBody 外  其他都有返回 "msg"  * 返回狀態 "status" => true/false  "msg" => "申請成功!"  * 官方API文檔  https://www.bt.cn/api-doc.pdf  */ class BtPanel extends Controller {     /**      * 發送請求      * @param string $path /data?action=getData&table=sites 請求路徑      * @param array $query 請求參數      */     private function sendRequest(string $path, array $query)     {         // 寶塔面板秘鑰         $secretKey = config('custom.bt.key');         // 寶塔面板地址 http://xxx.xxx.xxx:2222 填寫至端口即可         $panelPath = config('custom.bt.panel_path');         $time = time();         $response = Http::withOptions(['verify' => false])             ->retry(2, 5000) // !!!這里時間不適用于 GetApplyCert 接口             ->attach('cookie', $secretKey, 'bt.cookie') // 隨便傳東西就行             ->post($panelPath . $path, array_merge([                 'request_token' => md5($time . '' . md5($secretKey)),                 'request_time' => $time             ], $query))             ->json();         return $response ?: false;     }     /**      * 查詢網站      * @param string|null $search 需要搜索的關鍵詞      * @return array|false      */     public function SiteSearch(string $search = null)     {         $search = $search ?: config('custom.bt.domain');         $response = $this->sendRequest('/data?action=getData&table=sites', [             'limit' => 5,             'search' => $search         ]);         // 獲取失敗         if (!isset($response['data'])) return false;         // 不允許出現相似的網站名         if (count($response['data']) != 1) return false;         $site = $response['data'][0];         return [             'id' => $site['id'],             'name' => $site['name'],             'path' => $site['path'],             'ps' => $site['ps'],             'php' => str_replace('.', '', $site['php_version'])         ];     }     /**      * 創建網站      * !!!PS: 使用API創建網站時  最好 不要創建相似網站名的網站  不然查詢時有些麻煩      * @param string $domain 網站域名      * @param [type] json webname        網站域名      * @param [type] string path         網站路徑 /www/wwwroot/www.baidu.com      * @param [type] integer type_id     網站分類ID      * @param [type] string type         網站類型 PHP/JAVA      * @param [type] string version      PHP版本 73/74      * @param [type] string port         網站端口      * @param [type] string ps           網站備注      * @param [type] bool ftp            是否創建FTP      * @param [type] string ftp_username  FTP用戶名 // ftp為true必傳      * @param [type] string ftp_password  FTP密碼  // ftp為true必傳      * @param [type] bool sql            是否創建數據庫      * @param [type] string codeing      數據庫編碼類型 utf8|utf8mb4|gbk|big5  // sql為true必傳      * @param [type] string datauser     數據庫賬號 // sql為true必傳      * @param [type] string datapassword 數據庫密碼 // sql為true必傳      * @return false|int      */     public function AddSite(string $domain)     {         $data = [             'webname' => json_encode([                 'domain' => $domain,                 'domainlist' => [],                 'count' => 0             ]),             'path' => config('custom.bt.site_path'),             'type_id' => '0',             'type' => 'PHP',             'version' => '74',             'port' => '80',             'ps' => $domain,             'ftp' => 'false',             'sql' => 'false'         ];         $response = $this->sendRequest('/site?action=AddSite', $data);         return (isset($response['siteStatus']) && $response['siteStatus'] === true) ? (int)$response['siteId'] : false;     }     /**      * 刪除網站      * @param string $siteName 網站名稱 一般是網站域名      * @return bool      */     public function DeleteSite(string $siteName): bool     {         $site = $this->SiteSearch($siteName);         $response = $this->sendRequest('/site?action=DeleteSite', [             'id' => $site['id'],             'webname' => $site['name']         ]);         return isset($response['status']) && $response['status'] === true;     }     /**      * 開啟網站      * @param string $siteName 網站名稱 一般是網站域名      * @return bool      */     public function SiteStart(string $siteName): bool     {         $site = $this->SiteSearch($siteName);         $response = $this->sendRequest('/site?action=SiteStart', [             'id' => $site['id'],             'name' => $site['name']         ]);         return isset($response['status']) && $response['status'] === true;     }     /**      * 關閉網站      * @param string $siteName 網站名稱 一般是網站域名      * @return bool      */     public function SiteStop(string $siteName): bool     {         $site = $this->SiteSearch($siteName);         $response = $this->sendRequest('/site?action=SiteStop', [             'id' => $site['id'],             'name' => $site['name']         ]);         return isset($response['status']) && $response['status'] === true;     }     /**      * 為網站綁定域名      * @param string $siteName 網站名稱 一般是網站域名      * @param string $domain 需要綁定的域名      * @return bool      */     public function AddDomain(string $siteName, string $domain)     {         $site = $this->SiteSearch($siteName);         $response = $this->sendRequest('/site?action=AddDomain', [             'id' => $site['id'],             'webname' => $site['name'],             'domain' => $domain         ]);         // 綁定成功 status === true         // 綁定失敗 和 指定域名已綁定過  都返回 status === false         // 不好區分 失敗 還是 域名已綁定         return isset($response['status']);     }     /**      * 刪除網站綁定的域名      * @param string $siteName 網站名稱 一般是網站域名      * @param string $domain 需要刪除的域名      * @return bool      */     public function DelDomain(string $siteName, string $domain)     {         $site = $this->SiteSearch($siteName);         $response = $this->sendRequest('/site?action=DelDomain', [             'id' => $site['id'],             'webname' => $site['name'],             'port' => '80',             'domain' => $domain         ]);         return isset($response['status']) && $response['status'] === true;     }     /**      * 網站設置SSL證書      * @param string $domain 站點域名      * @param string $key      * @param string $csr      * @return bool      */     public function SetSSL(string $domain, string $key, string $csr): bool     {         $data = [             'type' => 1,             'siteName' => $domain,             'key' => '',             'csr' => ''         ];         $response = $this->sendRequest('/site?action=SetSSL', $data);         return isset($response['status']) && $response['status'] === true;     }     /**      * 獲取SSL狀態及證書詳情      * @param string $domain 站點域名      * @return string|false 成功則返回證書到期時間      */     public function GetSSL(string $domain)     {         $data = [             'siteName' => $domain         ];         $response = $this->sendRequest('/site?action=GetSSL', $data);         return (isset($response['status']) && $response['status'] === true && $response['cert_data']) ? $response['cert_data']['notAfter'] : false;     }     /**      * 設置網站運行目錄      * @param int $siteId 站點域名      * @param string $runPath 運行目錄路徑      * @return bool      */     public function SetSiteRunPath(int $siteId, string $runPath = '/public'): bool     {         $data = [             'id' => $siteId,             'runPath' => $runPath         ];         $response = $this->sendRequest('/site?action=SetSiteRunPath', $data);         return isset($response['status']) && $response['status'] === true;     }     /**      * 獲取網站預置偽靜態規則內容(文件內容)      * @param string $domain 網站域名      * @param [type] $type 0->獲取內置偽靜態規則 /www/server/panel/rewrite/nginx/xxxxx.conf;1->獲取當前站點偽靜態規則 /www/server/panel/vhost/rewrite/www.baidu.com.conf      * @return string|false 成功則返回偽靜態規則內容      */     public function GetFileBody(string $domain)     {         $data = [             'path' => "/www/server/panel/vhost/rewrite/$domain.conf"         ];         $response = $this->sendRequest('/files?action=GetFileBody', $data);         return (isset($response['status']) && $response['status'] === true) ? $response['data'] : false;     }     /**      * 保存網站偽靜態規則內容(保存文件內容)      * 0->系統默認路徑;1->自定義全路徑      * @param string $domain      * @param string|null $htaccess      * @return bool      */     public function SaveFileBody(string $domain, string $htaccess = null): bool     {         $htaccess = $htaccess ?: config('custom.bt.htaccess');         $data = [             'path' => "/www/server/panel/vhost/rewrite/$domain.conf", // 偽靜態文件路徑             'data' => $htaccess, // 偽靜態規則內容 ==> 字符串             'encoding' => 'utf-8'         ];         $response = $this->sendRequest('/files?action=SaveFileBody', $data);         return isset($response['status']) && $response['status'] === true;     }     /**      * 網站申請并設置SSL證書      * !!!PS:當前請求比較耗時間 20s-60s不等  最好單獨使用      * @param int $id 站點ID      * @param string $domain 需要申請的域名      * @return bool|integer      */     public function GetApplyCert(int $id, string $domain)     {         $data = [             "domains" => json_encode([$domain]),             "auth_type" => "http",             "auto_wildcard" => 0,             "auth_to" => $id,             "id" => $id,             "siteName" => $domain         ];         $response = $this->sendRequest('/acme?action=apply_cert_api', $data); //        $response = [ //            'cert' => '', //            'root' => '', //            'private_key' => '', //            'cert_timeout' => 1679184499, //            'status' => true //        ];         if (isset($response['status']) && $response['status'] === true) {             Storage::put("ssl/$domain.txt", json_encode($response));             $res = $this->SetSSL($domain, $response['private_key'], $response['cert'] . $response['root']);             return $res ? $response['cert_timeout'] : false;         }         return false;     } }
登錄后復制

推薦學習:《laravel視頻教程》《寶塔使用教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
九九九久久久久久久| 欧美精品色婷婷五月综合| 夜夜添无码一区二区三区| 黄色免费视频大全| 400部精品国偷自产在线观看| 日本中文字幕亚洲| 中文字幕资源在线观看| 亚洲午夜精品久久久久久人妖| 久草综合在线观看| 日韩a级黄色片| 久久久久久久高清| 国产小视频精品| 美女福利视频在线| 僵尸世界大战2 在线播放| 中文字幕天天干| 妺妺窝人体色www在线观看| 无码人妻丰满熟妇区96| 色欲色香天天天综合网www| av磁力番号网| 天堂а√在线中文在线| av久久久久久| 亚洲最大成人在线观看| 可以看毛片的网址| av无码久久久久久不卡网站| 国产91porn| 久久人妻无码一区二区| 女同性恋一区二区| 国产高清不卡无码视频| 菠萝蜜视频在线观看入口| 日韩中文字幕亚洲精品欧美| 国产一二三四区在线观看| 国产免费内射又粗又爽密桃视频| 日本一道在线观看| 久久人人爽av| 91极品视频在线观看| 国产3p在线播放| 五月天激情图片| 青草视频在线观看视频| cao在线观看| 男人天堂成人在线| 日本高清久久久| 青青青青在线视频| 免费高清在线观看免费| 中文字幕成人在线视频| 国内外成人激情免费视频| 一二三四视频社区在线| 亚洲成人天堂网| 九九久久久久久| 热这里只有精品| 玩弄中年熟妇正在播放| 粉色视频免费看| 妺妺窝人体色www看人体| 国产极品美女高潮无套久久久| 岛国av在线免费| 精品久久久久久久久久中文字幕| 污网站免费在线| 久久成人福利视频| 久久精品一卡二卡| 韩国日本在线视频| 免费高清一区二区三区| 国产小视频精品| 成年人黄色在线观看| 毛片毛片毛片毛片毛| 99久久国产宗和精品1上映| 97在线免费视频观看| 午夜两性免费视频| 黄在线观看网站| 久久久久久久9| 亚洲人视频在线| 久久久久久久久久久免费视频| 在线a免费观看| 亚洲第一狼人区| 成人性生生活性生交12| 成人午夜视频在线观看免费| www.四虎成人| 中文字幕12页| 亚洲精品第三页| 国产三级国产精品国产专区50| 美女扒开大腿让男人桶| 潘金莲一级淫片aaaaa免费看| 国产高潮免费视频| 亚洲成色www.777999| 各处沟厕大尺度偷拍女厕嘘嘘| 国产 欧美 日本| av在线网址导航| 青青草视频国产| 青草全福视在线| 日韩小视频网站| 99蜜桃臀久久久欧美精品网站| 9色porny| 69sex久久精品国产麻豆| 欧美丰满熟妇bbbbbb百度| 日韩欧美国产综合在线| 青青青在线观看视频| 黄黄视频在线观看| 波多野结衣网页| 亚洲色婷婷久久精品av蜜桃| 麻豆md0077饥渴少妇| 久久久天堂国产精品| 久久久久99精品成人片| 免费在线黄网站| 超碰影院在线观看| 99日在线视频| 台湾无码一区二区| 精品一区二区成人免费视频 | 天天综合天天添夜夜添狠狠添| 国产精品亚洲αv天堂无码| www日韩在线观看| 亚洲女人在线观看| 成人在线观看你懂的| 妺妺窝人体色www在线小说| 三级a在线观看| a级片一区二区| 亚洲精品视频导航| 毛毛毛毛毛毛毛片123| 国产在线观看欧美| 国产视频一区二区三区在线播放| 免费国产黄色网址| 日本中文字幕观看| 国产一区二区四区| 亚洲美女性囗交| 精品无码国模私拍视频| 在线播放免费视频| 免费无码av片在线观看| 强伦女教师2:伦理在线观看| 免费在线观看毛片网站| 999久久欧美人妻一区二区| 成人毛片100部免费看| 污污的视频免费| 18禁免费无码无遮挡不卡网站| 国产三级精品三级在线| 色诱视频在线观看| 亚洲国产一二三精品无码| 黄色永久免费网站| 欧美 日韩 激情| 亚洲成人动漫在线| 日本va中文字幕| 免费毛片小视频| 97超碰免费观看| 中文字幕一区二区在线观看视频| 鲁一鲁一鲁一鲁一澡| 国产一级黄色录像片| 男生操女生视频在线观看| 亚洲乱码中文字幕久久孕妇黑人| 制服丝袜中文字幕第一页| 黑人粗进入欧美aaaaa| 日韩有码免费视频| 日韩一级在线免费观看| 成年网站在线免费观看| 国产免费毛卡片| 久在线观看视频| 日韩第一页在线观看| 黄色一级片免费的| 91丝袜超薄交口足| 黄色www在线观看| 欧美性潮喷xxxxx免费视频看| 成品人视频ww入口| 国产熟女高潮视频| 免费黄频在线观看| 成人免费毛片在线观看| 国内自拍视频一区| 做爰高潮hd色即是空| 国产成人无码a区在线观看视频| 久久精品免费一区二区| 一级做a免费视频| 久久久久久久9| 亚洲激情在线观看视频| 麻豆传媒网站在线观看| 久久久噜噜噜www成人网| 欧美精品久久久久久久久25p| 亚洲成人动漫在线| 丰满少妇在线观看| 日韩精品一区二区在线视频| 九色porny91| 欧美黑人在线观看| 中文字幕网av| 怡红院av亚洲一区二区三区h| 69久久久久久| 成人免费观看cn| 亚洲成人动漫在线| 超碰在线播放91| 99精品在线免费视频| 午夜久久久久久久久久久| 99精品免费在线观看| 国产av熟女一区二区三区| 91制片厂毛片| 无码aⅴ精品一区二区三区浪潮| 99热一区二区三区| 欧美一级视频在线| mm1313亚洲国产精品无码试看| 8x8ⅹ国产精品一区二区二区| 色啦啦av综合| 中文字幕一区二区三区四区在线视频| 日韩精品一区二区在线视频| 特级毛片在线免费观看| 午夜免费高清视频| 视色视频在线观看| 一路向西2在线观看| 91日韩视频在线观看| 8x8x最新地址|