作者 刘锟

update

... ... @@ -1520,3 +1520,36 @@ function thumbImageByUrl($url, $width = 360)
return $url;
}
if(!function_exists('httpGetSsl')){
/**
* 获取通配符证书
* @param $domain
* @return mixed
* @author Akun
* @date 2025/04/21 16:51
*/
function httpGetSsl($domain){
$header = array(
"Accept:application/json",
"Content-Type:application/json;charset=utf-8",
"X-CmerApi-Host:".env('GET_SSL_HOST'),
"Apikey:".env('GET_SSL_KEY'),
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, env('GET_SSL_URL').'?domain='.$domain);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
$result = json_decode($res, true);
return is_array($result) ? $result : $res;
}
}
... ...
... ... @@ -3,6 +3,7 @@
namespace App\Http\Controllers\Api;
use App\Exceptions\InquiryFilterException;
use App\Models\Domain\DomainInfo;
use App\Models\Mail\Mail;
use App\Models\Project\DeployBuild;
use App\Models\Project\Project;
... ... @@ -69,7 +70,7 @@ class SelfSiteController extends BaseController
$cos = new CosService();
$fileName = uniqid() . rand(10000, 99999) . '.' . $file['ext'];
$file_data = base64_decode($file['data']);
$path = $cos->uploadFile($file_data, '/inquiry/' . date('Ymd'), $fileName,true);
$path = $cos->uploadFile($file_data, '/inquiry/' . date('Ymd'), $fileName, true);
$data[$key] = [
'path' => $path,
'original_name' => $file['name'],
... ... @@ -191,4 +192,50 @@ class SelfSiteController extends BaseController
return $this->success([]);
}
/**
* 自建站获取通配符证书接口
* @param Request $request
* @return false|string
* @author Akun
* @date 2025/09/02 16:55
*/
public function selfSiteSsl(Request $request)
{
$token = $request->header('token');//token
$pid = $request->header('pid');//项目id
if (empty($token) || empty($pid)) {
return $this->error('token无效', 401);
}
//判断token是否有效
$project_model = new Project();
$project_info = $project_model->read(['id' => $pid, 'site_token' => $token]);
if (!$project_info) {
return $this->error('token无效', 401);
}
//获取域名信息
$domain_model = new DomainInfo();
$domain_info = $domain_model->read(['project_id' => $pid]);
if (!$domain_info) {
return $this->error('获取域名失败', 401);
}
//获取通配符证书
$top_domain = getTopDomain($domain_info['domain']);
$ssl_re = httpGetSsl($top_domain);
$return = [
'ssl_key' => '',
'ssl_cert' => ''
];
if (isset($ssl_re['status']) && $ssl_re['status'] == 2) {
//获取成功
$return['ssl_key'] = $ssl_re['ssl_key'];
$return['ssl_cert'] = $ssl_re['ssl_cert'];
}
return $this->success($return);
}
}
... ...
... ... @@ -66,6 +66,7 @@ Route::any('get_monitor_keyword', [\App\Http\Controllers\Api\PrivateController::
Route::post('selfSiteApi', [\App\Http\Controllers\Api\SelfSiteController::class, 'selfSiteApi']);
Route::post('selfSiteNotify', [\App\Http\Controllers\Api\SelfSiteController::class, 'selfSiteNotify']);
Route::post('selfSiteVerify', [\App\Http\Controllers\Api\SelfSiteController::class, 'selfSiteVerify']);
Route::post('selfSiteSsl', [\App\Http\Controllers\Api\SelfSiteController::class, 'selfSiteSsl']);
//创建301跳转任务
Route::any('/addRedirect',[\App\Http\Controllers\Api\NoticeController::class,'addRedirect']);
... ...