简介本文由Laravel教程栏目给大家介绍laravel+宝塔面板的相关知识,主要给大家分享Laravel是怎么操作宝塔面板API,下面就带大家一起来看看,希望对需要的朋友有所帮助!Laravel操作宝塔面板API不一样的地方根据自身业务修改!!!其他的接口请查看官方文档:https://www.bt.cn/api-doc.pdf。代码如下:
本文由Laravel教程栏目给大家介绍laravel+宝塔面板的相关知识,主要给大家分享Laravel是怎么操作宝塔面板API,下面就带大家一起来看看,希望对需要的朋友有所帮助!
Laravel 操作宝塔面板 API
不一样的地方根据自身业务修改!!!
其他的接口请查看官方文档:https://www.bt.cn/api-doc.pdf。
代码如下:
<?phpnamespaceAppHttpControllersCustom;useAppHttpControllersController;useIlluminateSupportFacadesHttp;/***除了AddSiteGetSSLGetFileBody外其他都有返回"msg"*返回状态"status"=>true/false"msg"=>"申请成功!"*官方API文档https://www.bt.cn/api-doc.pdf*/classBtPanelextendsController{/***发送请求*@paramstring$path/data?action=getData&table=sites请求路径*@paramarray$query请求参数*/privatefunctionsendRequest(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;}/***查询网站*@paramstring|null$search需要搜索的关键词*@returnarray|false*/publicfunctionSiteSearch(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']))returnfalse;//不允许出现相似的网站名if(count($response['data'])!=1)returnfalse;$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创建网站时最好不要创建相似网站名的网站不然查询时有些麻烦*@paramstring$domain网站域名*@param[type]jsonwebname网站域名*@param[type]stringpath网站路径/www/wwwroot/www.baidu.com*@param[type]integertype_id网站分类ID*@param[type]stringtype网站类型PHP/JAVA*@param[type]stringversionPHP版本73/74*@param[type]stringport网站端口*@param[type]stringps网站备注*@param[type]boolftp是否创建FTP*@param[type]stringftp_usernameFTP用户名//ftp为true必传*@param[type]stringftp_passwordFTP密码//ftp为true必传*@param[type]boolsql是否创建数据库*@param[type]stringcodeing数据库编码类型utf8|utf8mb4|gbk|big5//sql为true必传*@param[type]stringdatauser数据库账号//sql为true必传*@param[type]stringdatapassword数据库密码//sql为true必传*@returnfalse|int*/publicfunctionAddSite(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;}/***删除网站*@paramstring$siteName网站名称一般是网站域名*@returnbool*/publicfunctionDeleteSite(string$siteName):bool{$site=$this->SiteSearch($siteName);$response=$this->sendRequest('/site?action=DeleteSite',['id'=>$site['id'],'webname'=>$site['name']]);returnisset($response['status'])&&$response['status']===true;}/***开启网站*@paramstring$siteName网站名称一般是网站域名*@returnbool*/publicfunctionSiteStart(string$siteName):bool{$site=$this->SiteSearch($siteName);$response=$this->sendRequest('/site?action=SiteStart',['id'=>$site['id'],'name'=>$site['name']]);returnisset($response['status'])&&$response['status']===true;}/***关闭网站*@paramstring$siteName网站名称一般是网站域名*@returnbool*/publicfunctionSiteStop(string$siteName):bool{$site=$this->SiteSearch($siteName);$response=$this->sendRequest('/site?action=SiteStop',['id'=>$site['id'],'name'=>$site['name']]);returnisset($response['status'])&&$response['status']===true;}/***为网站绑定域名*@paramstring$siteName网站名称一般是网站域名*@paramstring$domain需要绑定的域名*@returnbool*/publicfunctionAddDomain(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//不好区分失败还是域名已绑定returnisset($response['status']);}/***删除网站绑定的域名*@paramstring$siteName网站名称一般是网站域名*@paramstring$domain需要删除的域名*@returnbool*/publicfunctionDelDomain(string$siteName,string$domain){$site=$this->SiteSearch($siteName);$response=$this->sendRequest('/site?action=DelDomain',['id'=>$site['id'],'webname'=>$site['name'],'port'=>'80','domain'=>$domain]);returnisset($response['status'])&&$response['status']===true;}/***网站设置SSL证书*@paramstring$domain站点域名*@paramstring$key*@paramstring$csr*@returnbool*/publicfunctionSetSSL(string$domain,string$key,string$csr):bool{$data=['type'=>1,'siteName'=>$domain,'key'=>'','csr'=>''];$response=$this->sendRequest('/site?action=SetSSL',$data);returnisset($response['status'])&&$response['status']===true;}/***获取SSL状态及证书详情*@paramstring$domain站点域名*@returnstring|false成功则返回证书到期时间*/publicfunctionGetSSL(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;}/***设置网站运行目录*@paramint$siteId站点域名*@paramstring$runPath运行目录路径*@returnbool*/publicfunctionSetSiteRunPath(int$siteId,string$runPath='/public'):bool{$data=['id'=>$siteId,'runPath'=>$runPath];$response=$this->sendRequest('/site?action=SetSiteRunPath',$data);returnisset($response['status'])&&$response['status']===true;}/***获取网站预置伪静态规则内容(文件内容)*@paramstring$domain网站域名*@param[type]$type0->获取内置伪静态规则/www/server/panel/rewrite/nginx/xxxxx.conf;1->获取当前站点伪静态规则/www/server/panel/vhost/rewrite/www.baidu.com.conf*@returnstring|false成功则返回伪静态规则内容*/publicfunctionGetFileBody(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->自定义全路径*@paramstring$domain*@paramstring|null$htaccess*@returnbool*/publicfunctionSaveFileBody(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);returnisset($response['status'])&&$response['status']===true;}/***网站申请并设置SSL证书*!!!PS:当前请求比较耗时间20s-60s不等最好单独使用*@paramint$id站点ID*@paramstring$domain需要申请的域名*@returnbool|integer*/publicfunctionGetApplyCert(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;}returnfalse;}}
下载链接:网站源码/小程序源码/网站模板下载