/** * @fileoverview WHOIS 查询页面逻辑 * @description 提供域名 WHOIS 信息查询功能,复用现有 API 和样式 */ import { queryWhois } from "@api/landing"; // 安全的jQuery访问函数 function safe$() { return (window as any).$ as any; } // 页面状态管理 let currentDomain = ''; let isInitialized = false; /** * 初始化页面 */ function init() { if (isInitialized) { return; } bindEvents(); handleUrlParams(); isInitialized = true; } /** * 绑定事件 */ function bindEvents() { const $ = safe$(); if (!$) return; // 搜索按钮点击事件 $(document).on('click', '#whois-search-btn', handleSearch); // 输入框回车事件 $(document).on('keypress', '#whois-domain-input', (e: any) => { if (e.which === 13) { handleSearch(); } }); // 清空输入按钮 $(document).on('click', '#whois-clear-input', () => { $('#whois-domain-input').val('').trigger('input'); }); // 输入框变化事件 $(document).on('input', '#whois-domain-input', (e: any) => { const value = $(e.target).val() as string; const $clearBtn = $('#whois-clear-input'); if (value && value.trim()) { $clearBtn.addClass('visible'); } else { $clearBtn.removeClass('visible'); } }); } /** * 处理 URL 参数 */ function handleUrlParams() { const urlParams = new URLSearchParams(window.location.search); const domain = urlParams.get('domain'); const $ = safe$(); if (!$) return; if (domain) { $('#whois-domain-input').val(domain).trigger('input'); performSearch(domain); } } /** * 验证域名格式 */ function isValidDomain(domain: string): boolean { const domainRegex = /^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*$/; return domainRegex.test(domain.trim()); } /** * 处理搜索操作 */ function handleSearch() { const $ = safe$(); if (!$) return; const domain = ($('#whois-domain-input').val() as string).trim(); if (!domain) { alert('请输入要查询的域名'); return; } if (!isValidDomain(domain)) { alert('请输入正确的域名格式'); return; } performSearch(domain); } /** * 执行 WHOIS 查询 */ async function performSearch(domain: string) { currentDomain = domain; showLoading(); try { const response = await queryWhois(domain); // const response = { // code: 0, // status: true, // msg: "查询成功", // data: { // address: [ // "3th Floor, BangNing Technology Park, 2 YuHua Avenue", // "Yuhuatai District", // "Nanjing Jiangsu", // "China", // "3th Floor, BangNing Technology Park, 2 YuHua Avenue", // "Yuhuatai District", // "Nanjing Jiangsu", // "China", // "3th Floor, BangNing Technology Park, 2 YuHua Avenue", // "Yuhuatai District", // "Nanjing Jiangsu", // "China", // ], // city: "", // country: "CN", // creation_date: "2014-07-24 10:45:35", // dnssec: "signed", // domain_name: "top", // emails: ["support@nic.top", "tech@nic.top"], // expiration_date: "", // name: "Sven Chen", // name_servers: [ // "A.ZDNSCLOUD.CN 203.99.24.1", // "B.ZDNSCLOUD.CN 203.99.25.1", // "C.ZDNSCLOUD.COM 203.99.26.1", // "D.ZDNSCLOUD.COM 203.99.27.1", // "F.ZDNSCLOUD.CN 116.169.54.111", // "G.ZDNSCLOUD.COM 223.72.199.37", // "I.ZDNSCLOUD.CN 2401:8d00:1:0:0:0:0:1", // "J.ZDNSCLOUD.COM 2401:8d00:2:0:0:0:0:1", // ], // org: "Jiangsu Bangning Science & technology Co.,Ltd.", // phone: [ // "+86 18936016161", // "Fax: +86 2586883476", // "+86 15895978960", // "Fax: +86 02586883476", // ], // referral_url: "whois.nic.top", // registrant_postal_code: "", // registrar: "", // registrar_url: "", // reseller: null, // state: "", // status: "ACTIVE", // updated_date: "2025-07-29 10:45:35", // whois_server: "whois.nic.top", // rawData: // "% IANA WHOIS server\n% for more information on IANA, visit http://www.iana.org\n% This query returned 1 object\n\nrefer: whois.nic.top\n\ndomain: TOP\n\norganisation: .TOP Registry\naddress: 3th Floor, BangNing Technology Park, 2 YuHua Avenue\naddress: Yuhuatai District\naddress: Nanjing Jiangsu\naddress: China\n\ncontact: administrative\nname: Sven Chen\norganisation: Jiangsu Bangning Science & technology Co.,Ltd.\naddress: 3th Floor, BangNing Technology Park, 2 YuHua Avenue\naddress: Yuhuatai District\naddress: Nanjing Jiangsu\naddress: China\nphone: +86 18936016161\nfax-no: +86 2586883476\ne-mail: support@nic.top\n\ncontact: technical\nname: YiFeng Shen\norganisation: Jiangsu Bangning Science & technology Co.,Ltd.\naddress: 3th Floor, BangNing Technology Park, 2 YuHua Avenue\naddress: Yuhuatai District\naddress: Nanjing Jiangsu\naddress: China\nphone: +86 15895978960\nfax-no: +86 02586883476\ne-mail: tech@nic.top\n\nnserver: A.ZDNSCLOUD.CN 203.99.24.1\nnserver: B.ZDNSCLOUD.CN 203.99.25.1\nnserver: C.ZDNSCLOUD.COM 203.99.26.1\nnserver: D.ZDNSCLOUD.COM 203.99.27.1\nnserver: F.ZDNSCLOUD.CN 116.169.54.111\nnserver: G.ZDNSCLOUD.COM 223.72.199.37\nnserver: I.ZDNSCLOUD.CN 2401:8d00:1:0:0:0:0:1\nnserver: J.ZDNSCLOUD.COM 2401:8d00:2:0:0:0:0:1\nds-rdata: 26780 8 2 5d6e7869ee8e3b536a617de89482ddd1dcb9db9dbb1ac33d6ed351e2ca095b1b\n\nwhois: whois.nic.top\n\nstatus: ACTIVE\nremarks: Registration information: http://www.nic.top\n\ncreated: 2014-07-24\nchanged: 2025-07-29\nsource: IANA", // }, // }; if (response.status && response.data) { renderResults(domain, response.data); showResults(); updatePageState(domain); } else { throw new Error('查询失败'); } } catch (error: any) { console.error('WHOIS查询失败:', error); showError(error.message || '查询失败,请稍后重试'); } } /** * 渲染查询结果 */ function renderResults(domain: string, data: any) { console.log(domain,'-21212'); const $ = safe$(); if (!$) return; const currentTime = new Date().toLocaleString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }); const resultsHtml = generateSimpleLayout(domain, data, currentTime); $('#whois-content-area').html(resultsHtml); } /** * 生成简洁表格式布局 */ function generateSimpleLayout(domain: string, data: any, currentTime: string): string { const domainName = domain; return `