From 3fd6c1f75525e9178b7da66faf8c803356f3201e Mon Sep 17 00:00:00 2001 From: jingrow Date: Mon, 4 Aug 2025 13:42:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9dns?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=9A=84api=E7=AB=AF=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jcloud/api/domain_west.py | 117 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/jcloud/api/domain_west.py b/jcloud/api/domain_west.py index 45787d9..76832ca 100644 --- a/jcloud/api/domain_west.py +++ b/jcloud/api/domain_west.py @@ -579,6 +579,43 @@ class WestDomain: jingrow.log_error("西部数码实名上传请求失败", error=str(e), url=upload_url) return {"status": "error", "message": f"API请求失败: {str(e)}"} + def modify_dns_server(self, domain: str, dns1: str, dns2: str, + dns3: Optional[str] = None, dns4: Optional[str] = None, + dns5: Optional[str] = None, dns6: Optional[str] = None) -> Dict[str, Any]: + """ + 修改域名DNS服务器 + + Args: + domain: 要修改DNS的域名 + dns1: 主DNS服务器 + dns2: 辅DNS服务器 + dns3: 第三个DNS服务器(可选) + dns4: 第四个DNS服务器(可选) + dns5: 第五个DNS服务器(可选) + dns6: 第六个DNS服务器(可选) + + Returns: + API响应结果 + """ + body_params = { + 'act': 'moddns', + 'domain': domain, + 'dns1': dns1, + 'dns2': dns2, + } + + # 添加可选的DNS服务器 + if dns3: + body_params['dns3'] = dns3 + if dns4: + body_params['dns4'] = dns4 + if dns5: + body_params['dns5'] = dns5 + if dns6: + body_params['dns6'] = dns6 + + return self._make_request('/domain/', 'POST', body_params=body_params) + def format_date(date): """格式化域名到期时间""" @@ -2299,3 +2336,83 @@ def test_dns_record_management(): return {"status": "error", "message": f"DNS记录管理功能测试失败: {str(e)}"} +@jingrow.whitelist() +def west_domain_modify_dns_server(**data): + """修改域名DNS服务器""" + client = get_west_client() + if not client: + return {"status": "error", "message": "API客户端初始化失败"} + + domain = data.get('domain') + dns1 = data.get('dns1') + dns2 = data.get('dns2') + dns3 = data.get('dns3') + dns4 = data.get('dns4') + dns5 = data.get('dns5') + dns6 = data.get('dns6') + + if not domain: + return {"status": "error", "message": "缺少域名参数"} + if not dns1: + return {"status": "error", "message": "缺少主DNS服务器参数"} + if not dns2: + return {"status": "error", "message": "缺少辅DNS服务器参数"} + + # 验证DNS服务器格式 + dns_servers = [dns1, dns2] + if dns3: + dns_servers.append(dns3) + if dns4: + dns_servers.append(dns4) + if dns5: + dns_servers.append(dns5) + if dns6: + dns_servers.append(dns6) + + # 验证DNS服务器格式(简单验证) + for dns in dns_servers: + if dns and not ('.' in dns and len(dns) > 3): + return {"status": "error", "message": f"DNS服务器格式不正确: {dns}"} + + response = client.modify_dns_server( + domain=domain, + dns1=dns1, + dns2=dns2, + dns3=dns3, + dns4=dns4, + dns5=dns5, + dns6=dns6 + ) + + if response.get("status") == "error": + return response + + try: + # 检查响应格式 + if response.get("result") != 200: + error_msg = response.get('msg', response.get('message', '未知错误')) + return {"status": "error", "message": f"修改DNS服务器失败: {error_msg}"} + + # 返回成功结果 + return { + "status": "success", + "message": "DNS服务器修改成功", + "data": { + "domain": domain, + "dns_servers": { + "dns1": dns1, + "dns2": dns2, + "dns3": dns3, + "dns4": dns4, + "dns5": dns5, + "dns6": dns6 + }, + "clientid": response.get("clientid") + } + } + + except Exception as e: + jingrow.log_error("修改DNS服务器响应解析失败", error=str(e)) + return {"status": "error", "message": "修改DNS服务器响应解析失败"} + +