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

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

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

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

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

Laravel 操作寶塔面板 API

不一樣的地方根據(jù)自身業(yè)務(wù)修改!!!

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

代碼如下:

<?php namespace AppHttpControllersCustom; use AppHttpControllersController; use IlluminateSupportFacadesHttp; /**  * 除了 AddSite GetSSL GetFileBody 外  其他都有返回 "msg"  * 返回狀態(tài) "status" => true/false  "msg" => "申請(qǐng)成功!"  * 官方API文檔  https://www.bt.cn/api-doc.pdf  */ class BtPanel extends Controller {     /**      * 發(fā)送請(qǐng)求      * @param string $path /data?action=getData&table=sites 請(qǐng)求路徑      * @param array $query 請(qǐng)求參數(shù)      */     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) // !!!這里時(shí)間不適用于 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;     }     /**      * 查詢網(wǎng)站      * @param string|null $search 需要搜索的關(guān)鍵詞      * @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;         // 不允許出現(xiàn)相似的網(wǎng)站名         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'])         ];     }     /**      * 創(chuàng)建網(wǎng)站      * !!!PS: 使用API創(chuàng)建網(wǎng)站時(shí)  最好 不要?jiǎng)?chuàng)建相似網(wǎng)站名的網(wǎng)站  不然查詢時(shí)有些麻煩      * @param string $domain 網(wǎng)站域名      * @param [type] json webname        網(wǎng)站域名      * @param [type] string path         網(wǎng)站路徑 /www/wwwroot/www.baidu.com      * @param [type] integer type_id     網(wǎng)站分類ID      * @param [type] string type         網(wǎng)站類型 PHP/JAVA      * @param [type] string version      PHP版本 73/74      * @param [type] string port         網(wǎng)站端口      * @param [type] string ps           網(wǎng)站備注      * @param [type] bool ftp            是否創(chuàng)建FTP      * @param [type] string ftp_username  FTP用戶名 // ftp為true必傳      * @param [type] string ftp_password  FTP密碼  // ftp為true必傳      * @param [type] bool sql            是否創(chuàng)建數(shù)據(jù)庫      * @param [type] string codeing      數(shù)據(jù)庫編碼類型 utf8|utf8mb4|gbk|big5  // sql為true必傳      * @param [type] string datauser     數(shù)據(jù)庫賬號(hào) // sql為true必傳      * @param [type] string datapassword 數(shù)據(jù)庫密碼 // 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;     }     /**      * 刪除網(wǎng)站      * @param string $siteName 網(wǎng)站名稱 一般是網(wǎng)站域名      * @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;     }     /**      * 開啟網(wǎng)站      * @param string $siteName 網(wǎng)站名稱 一般是網(wǎng)站域名      * @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;     }     /**      * 關(guān)閉網(wǎng)站      * @param string $siteName 網(wǎng)站名稱 一般是網(wǎng)站域名      * @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;     }     /**      * 為網(wǎng)站綁定域名      * @param string $siteName 網(wǎng)站名稱 一般是網(wǎng)站域名      * @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         // 不好區(qū)分 失敗 還是 域名已綁定         return isset($response['status']);     }     /**      * 刪除網(wǎng)站綁定的域名      * @param string $siteName 網(wǎng)站名稱 一般是網(wǎng)站域名      * @param string $domain 需要?jiǎng)h除的域名      * @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;     }     /**      * 網(wǎng)站設(shè)置SSL證書      * @param string $domain 站點(diǎn)域名      * @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狀態(tài)及證書詳情      * @param string $domain 站點(diǎn)域名      * @return string|false 成功則返回證書到期時(shí)間      */     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;     }     /**      * 設(shè)置網(wǎng)站運(yùn)行目錄      * @param int $siteId 站點(diǎn)域名      * @param string $runPath 運(yùn)行目錄路徑      * @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;     }     /**      * 獲取網(wǎng)站預(yù)置偽靜態(tài)規(guī)則內(nèi)容(文件內(nèi)容)      * @param string $domain 網(wǎng)站域名      * @param [type] $type 0->獲取內(nèi)置偽靜態(tài)規(guī)則 /www/server/panel/rewrite/nginx/xxxxx.conf;1->獲取當(dāng)前站點(diǎn)偽靜態(tài)規(guī)則 /www/server/panel/vhost/rewrite/www.baidu.com.conf      * @return string|false 成功則返回偽靜態(tài)規(guī)則內(nèi)容      */     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;     }     /**      * 保存網(wǎng)站偽靜態(tài)規(guī)則內(nèi)容(保存文件內(nèi)容)      * 0->系統(tǒng)默認(rèn)路徑;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", // 偽靜態(tài)文件路徑             'data' => $htaccess, // 偽靜態(tài)規(guī)則內(nèi)容 ==> 字符串             'encoding' => 'utf-8'         ];         $response = $this->sendRequest('/files?action=SaveFileBody', $data);         return isset($response['status']) && $response['status'] === true;     }     /**      * 網(wǎng)站申請(qǐng)并設(shè)置SSL證書      * !!!PS:當(dāng)前請(qǐng)求比較耗時(shí)間 20s-60s不等  最好單獨(dú)使用      * @param int $id 站點(diǎn)ID      * @param string $domain 需要申請(qǐng)的域名      * @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;     } }
登錄后復(fù)制

推薦學(xué)習(xí):《laravel視頻教程》《寶塔使用教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
可以在线看黄的网站| 色乱码一区二区三区熟女 | 三级一区二区三区| www.夜夜爱| 天堂中文av在线| 国产a级片免费观看| a级片一区二区| 激情黄色小视频| 精品久久久久久久免费人妻| 亚洲黄色网址在线观看| 激情成人在线观看| 久久久精品在线视频| 青青草视频国产| 爽爽爽在线观看| 国产喷水theporn| 欧美日韩国产精品激情在线播放| www.亚洲天堂网| 欧美v在线观看| 国产免费裸体视频| 国产又粗又爽又黄的视频| 性刺激的欧美三级视频| 99久久久无码国产精品6| 人人妻人人澡人人爽欧美一区双| 久久手机在线视频| 欧美精品色视频| 自拍一级黄色片| 成人av毛片在线观看| 成人综合久久网| 手机av在线免费| 国产原创精品在线| 日韩不卡的av| 91午夜在线观看| 一级片黄色免费| 夜夜添无码一区二区三区| 999久久久精品视频| 中文字幕国内自拍| 亚洲色图 在线视频| 在线看的黄色网址| 成人精品视频在线播放| 国模杨依粉嫩蝴蝶150p| 亚洲一区在线不卡| 亚洲天堂av免费在线观看| 最近免费观看高清韩国日本大全| 天堂av8在线| 特级毛片在线免费观看| 黄色影视在线观看| 男人插女人下面免费视频| 欧美xxxxx在线视频| 亚洲国产午夜精品| 日本xxxxx18| av免费在线播放网站| 91视频免费版污| 特级毛片在线免费观看| 一二三四视频社区在线| 亚州精品一二三区| 18视频在线观看娇喘| 精品www久久久久奶水| www.四虎成人| 伊人成人222| 久久久久亚洲av无码专区喷水| 精品这里只有精品| 日av中文字幕| 小早川怜子一区二区三区| 特级西西人体www高清大胆| 青青草精品视频在线| 热这里只有精品| 欧美日韩黄色一级片| 999久久欧美人妻一区二区| 妓院一钑片免看黄大片| 在线免费观看视频黄| 尤物网站在线看| 999一区二区三区| 香蕉视频xxxx| 妺妺窝人体色www在线小说| 91xxx视频| 冲田杏梨av在线| 黄色免费视频大全| a级免费在线观看| 久久久久久综合网| 国产又大又黄又粗的视频| 国产九九九九九| 成人性做爰片免费视频| 免费涩涩18网站入口| 免费不卡av在线| 91午夜在线观看| 一本大道东京热无码aⅴ| 天天干天天操天天玩| 男人日女人逼逼| 精品久久久久久久免费人妻| 亚洲人成色77777| 天天做天天干天天操| www.五月天色| 国内精品视频一区二区三区| 精品久久久噜噜噜噜久久图片| 好色先生视频污| 黄色特一级视频| 中文字幕第一页亚洲| 国产成人av影视| 999在线免费视频| 九色自拍视频在线观看| 69堂免费视频| 欧美在线一区视频| 草草久久久无码国产专区| 亚洲精品乱码久久久久久自慰| 大香煮伊手机一区| 成人黄色av片| 男人天堂999| 成年人视频观看| 熟女少妇精品一区二区| 一级黄色香蕉视频| 青青草久久伊人| 8x8ⅹ国产精品一区二区二区| 国产91沈先生在线播放| av久久久久久| 可以在线看的av网站| 白嫩少妇丰满一区二区| 99色精品视频| 无码少妇一区二区三区芒果| 欧美少妇一区二区三区| 欧美成人精品免费| 国产免费一区二区三区视频| 欧美一级黄色影院| 极品粉嫩美女露脸啪啪| 日韩 国产 一区| 欧美人与动牲交xxxxbbbb| 免费在线激情视频| 在线看的黄色网址| 91免费视频网站在线观看| www.夜夜爽| 久久综合久久久久| 成年网站在线播放| 9191国产视频| 激情五月五月婷婷| 久草精品在线播放| 亚洲综合伊人久久| 国产极品在线视频| 麻豆三级在线观看| 亚洲中文字幕无码专区| 免费黄色一级网站| 91蝌蚪视频在线观看| 成人免费观看cn| 国产熟人av一二三区| 又色又爽又高潮免费视频国产| www.色.com| 欧美三级午夜理伦三级富婆| www.-级毛片线天内射视视| 国产第一页视频| 丰满少妇久久久| 狠狠干 狠狠操| 青草网在线观看| 免费cad大片在线观看| 冲田杏梨av在线| 青青草原国产在线视频| 天天综合网久久| 992kp免费看片| 欧美精品卡一卡二| 免费av不卡在线| 日本a在线天堂| caopor在线视频| 国产自产在线视频| 一卡二卡三卡视频| 欧美三级在线观看视频| 国产三区在线视频| 午夜剧场在线免费观看| 国产又粗又爽又黄的视频| 欧美综合在线观看视频| 欧美精品色视频| 国产情侣第一页| 亚洲一区二区图片| 冲田杏梨av在线| 天天操天天爱天天爽| 美女福利视频在线| 中文字幕第88页| 日韩毛片在线免费看| 中文字幕第21页| 黑人糟蹋人妻hd中文字幕| 久章草在线视频| 一级做a免费视频| 精品999在线| 天天综合天天添夜夜添狠狠添| 性生活免费在线观看| 男人靠女人免费视频网站| 国产黄色一级网站| 小早川怜子一区二区三区| 中文字幕66页| 精品国产三级a∨在线| 9久久9毛片又大又硬又粗| 91专区在线观看| 成年人网站大全| 国产三级生活片| 人体内射精一区二区三区 | 国产日本在线播放| 国产无遮挡猛进猛出免费软件| 成人免费看片视频在线观看| www.com黄色片| 国产成人三级视频| 国产中文字幕乱人伦在线观看| 日韩av影视大全| 男女视频网站在线观看| 欧美伦理片在线看|