From c64a385ffcd23a5588ee3f6ad6d451a54ed86e2a Mon Sep 17 00:00:00 2001 From: luo-bo <603509782@qq.com> Date: Tue, 24 Mar 2026 03:45:22 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(cloudflare):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=BF=AB=E9=80=9F=E6=B7=BB=E5=8A=A0TXT=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在主机名验证对话框中增加快速添加TXT记录按钮 - 实现convertFullHostnameToRecordName函数用于转换完整主机名为记录名 - 添加quickAddTxtRecord函数处理TXT记录的快速添加逻辑 - 在前端页面中集成快速添加功能,支持一键添加证书验证所需的TXT记录 - 移除SSL配置中的bundle_method和certificate_authority字段 ``` --- .codex-tmp/hostnames.page.check.js | 78 ++++++++++++++++++++++++++++++ app/controller/Cloudflare.php | 6 --- app/view/cloudflare/hostnames.html | 78 ++++++++++++++++++++++++++++++ 3 files changed, 156 insertions(+), 6 deletions(-) diff --git a/.codex-tmp/hostnames.page.check.js b/.codex-tmp/hostnames.page.check.js index e6ff357..5499b50 100644 --- a/.codex-tmp/hostnames.page.check.js +++ b/.codex-tmp/hostnames.page.check.js @@ -1,4 +1,5 @@ var currentVerificationHostnameId = ''; +var currentDomainName = '6byj.cn'; $(document).ready(function(){ $("#form-store").bootstrapValidator(); @@ -191,6 +192,7 @@ function renderVerificationDialog(row){ renderCopyInput('记录类型', ownership.type || 'txt', false) + renderCopyInput('TXT 名称', ownership.name || '', true) + renderCopyTextarea('TXT 值', ownership.value || '', true, 3) + + renderQuickAddTxtButton(ownership.name || '', ownership.value || '', '快速添加所有权 TXT') ); } @@ -213,6 +215,7 @@ function renderVerificationDialog(row){ recordsHtml += '
' + htmlEscape(fullName) + '', {title: '提示', icon: 0}, function(){
+ var ii = layer.load(2);
+ $.ajax({
+ type: 'POST',
+ url: '/record/add/1',
+ data: {
+ name: rr,
+ type: 'TXT',
+ value: value,
+ line: '0',
+ ttl: 600,
+ mx: 1,
+ weight: 0,
+ remark: 'Cloudflare证书校验'
+ },
+ dataType: 'json',
+ success: function(res){
+ layer.close(ii);
+ if(res.code === 0){
+ layer.closeAll();
+ $("#modal-verification").modal('show');
+ layer.msg('TXT 记录添加成功', {icon: 1, time: 1200});
+ }else{
+ layer.alert(res.msg, {icon: 2});
+ }
+ },
+ error: function(){
+ layer.close(ii);
+ layer.alert('服务器错误', {icon: 2});
+ }
+ });
+ });
+}
+
+function convertFullHostnameToRecordName(fullName){
+ var name = String(fullName || '').trim().replace(/\.$/, '');
+ var domain = String(currentDomainName || '').trim().replace(/\.$/, '');
+ if(!name || !domain){
+ return null;
+ }
+ var lowerName = name.toLowerCase();
+ var lowerDomain = domain.toLowerCase();
+ if(lowerName === lowerDomain){
+ return '@';
+ }
+ if(lowerName.endsWith('.' + lowerDomain)){
+ return name.slice(0, name.length - domain.length - 1);
+ }
+ if(name === '@'){
+ return '@';
+ }
+ if(name.indexOf('.') === -1){
+ return name;
+ }
+ return null;
+}
+
function deleteHostname(id, hostname){
layer.confirm('确定要删除自定义主机名 ' + hostname + ' 吗?', {title: '提示', icon: 0}, function(){
var ii = layer.load(2);
diff --git a/app/controller/Cloudflare.php b/app/controller/Cloudflare.php
index bb2163c..9d7ae58 100644
--- a/app/controller/Cloudflare.php
+++ b/app/controller/Cloudflare.php
@@ -641,12 +641,6 @@ class Cloudflare extends BaseController
if ($payload['type'] === '') {
$payload['type'] = 'dv';
}
- if (!empty($ssl['bundle_method'])) {
- $payload['bundle_method'] = trim((string)$ssl['bundle_method']);
- }
- if (!empty($ssl['certificate_authority'])) {
- $payload['certificate_authority'] = trim((string)$ssl['certificate_authority']);
- }
return $payload;
}
diff --git a/app/view/cloudflare/hostnames.html b/app/view/cloudflare/hostnames.html
index 0ccbeeb..17016c7 100644
--- a/app/view/cloudflare/hostnames.html
+++ b/app/view/cloudflare/hostnames.html
@@ -100,6 +100,7 @@