Files
toolbox/plugin/web/whois/index.html
T

208 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{extend name="common/plugin_layout" /}
{block name="title"}{$plugin.title} - {:config_get('title')}{/block}
{block name="main"}
<style>
.query-title {
text-align: right;
}
.whois-badge {
display: block;
padding: 3px 10px;
margin: 3px 0 3px 0;
background: #f0f4ff;
color: #364a63;
border-radius: 4px;
font-size: 13px;
}
.whois-raw-data {
background: #f5f6fa;
border-radius: 4px;
padding: 15px;
white-space: pre-wrap;
word-break: break-all;
font-size: 13px;
line-height: 1.6;
color: #364a63;
max-height: 400px;
overflow-y: auto;
}
</style>
<div class="container-xl" id="app">
<div class="col-sm-12 col-md-10 col-xl-8 center-block">
<div class="card card-preview">
<div class="card-inner mt-3 mb-3">
<div class="nya-title nk-ibx-action-item progress-rating">
<span class="nk-menu-text font-weight-bold">域名Whois查询</span>
</div>
<div class="form-group">
<label class="form-label">域名或IP</label>
<div class="form-control-wrap">
<div class="input-group">
<input type="text" v-model="input" placeholder="请输入域名或IP地址" class="form-control form-control-lg" @keyup.enter="query" ref="input" autocomplete="off">
<div class="input-group-append"><button class="btn btn-lg btn-dim btn-outline-primary text-large" @click="query" :disabled="query_disabled">查询</button></div>
</div>
</div>
</div>
</div>
</div>
<div class="card card-preview" v-show="showresult" style="display:none">
<div class="card-inner mt-3">
<div class="nya-title nk-ibx-action-item progress-rating">
<span class="nk-menu-text font-weight-bold">查询结果</span>
</div>
<div class="alert alert-warning text-center" v-if="!result_info"><h6><em class="icon ni ni-info"></em> 没有查询到该域名Whois信息</h6></div>
<div class="col-sm-12 col-md-10 col-xl-8 center-block" v-if="result_info">
<div class="table-responsive">
<table class="table table-hover table-bordered">
<tbody>
<tr><td class="query-title">域名</td><td>{{whoisData.domainName}}</td></tr>
<tr><td class="query-title">域名所有者</td><td>{{whoisData.owner || '-'}}</td></tr>
<tr><td class="query-title">注册商</td><td>{{whoisData.registrar}}</td></tr>
<tr><td class="query-title">Whois服务器</td><td>{{whoisData.whoisServer}}</td></tr>
<tr><td class="query-title">注册时间</td><td>{{whoisData.creationDate}}</td></tr>
<tr><td class="query-title">到期时间</td><td>{{whoisData.expirationDate}}</td></tr>
<tr><td class="query-title">更新时间</td><td>{{whoisData.updatedDate}}</td></tr>
<tr><td class="query-title">域名状态</td><td><div v-for="(item, index) in whoisData.states" :key="index">{{item.name}}<span class="text-muted" v-if="item.value">{{item.value}}</span></div></td></tr>
<tr><td class="query-title">DNS服务器</td><td><span class="whois-badge" v-for="(ns, index) in whoisData.nameServers" :key="index">{{ns}}</span></td></tr>
<tr><td class="query-title">原始信息</td><td class="whois-raw-data">{{whoisData.rawData}}</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
{/block}
{block name="script"}
<script src="{$cdn_cdnjs}vue/2.6.14/vue.min.js"></script>
<script src="https://static.geetest.com/v4/gt4.js"></script>
<script>
new Vue({
el: '#app',
data: {
query_disabled: true,
input: '',
showresult: false,
result_info: false,
whoisData: {
cacheTime: '',
domainName: '',
whoisServer: '',
creationDate: '',
expirationDate: '',
updatedDate: '',
nameServers: [],
states: [],
owner: '',
registrar: '',
dnssec: '',
rawData: '',
},
captcha: null
},
mounted() {
this.$refs.input.focus();
var that=this;
initGeetest4({
captchaId: "99b142aaece96330d0f3ffb565ffb3ef",
product: 'bind',
protocol: 'https://',
riskType: 'ai',
},function (captcha) {
captcha.onReady(function(){
that.query_disabled=false;
that.captcha = captcha;
var searchdomain = getQueryString('domain');
if(searchdomain!=null){
that.input = searchdomain;
that.query()
}
}).onSuccess(function(){
var result = captcha.getValidate();
if (!result) {
layer.closeAll();
return alert('请先完成验证');
}
var data = {domain: that.input};
$.ajax({
url: '/api/{$plugin.alias}/query',
type: 'post',
dataType: 'json',
data: Object.assign(data, result),
cache: false,
success: function (data) {
layer.closeAll();
if(data.status=='ok'){
if(data.data == null){
that.result_info = false;
that.showresult = true;
captcha.reset();
return;
}
that.result_info = true;
that.whoisData = {
cacheTime: data.data.cacheTime || '',
domainName: data.data.domainName || '',
whoisServer: data.data.whoisServer || '',
creationDate: data.data.creationDate || '',
expirationDate: data.data.expirationDate || '',
updatedDate: data.data.updatedDate || '',
nameServers: Array.isArray(data.data.nameServers) ? data.data.nameServers : [],
states: Array.isArray(data.data.states) ? data.data.states : [],
owner: data.data.owner !== undefined ? data.data.owner : '',
registrar: data.data.registrar || '',
dnssec: data.data.dnssec || '',
rawData: data.data.rawData || '',
};
that.showresult = true;
captcha.reset();
}else{
alert(data.message);
captcha.reset();
}
},
error: function () {
layer.closeAll();
layer.msg('服务器错误', {icon: 5});
captcha.reset();
}
});
}).onError(function(){
alert('验证码加载失败,请刷新页面重试');
})
});
},
methods: {
checkURL()
{
var url = this.input.trim();
if (url.indexOf(" ")>=0){
url = url.replace(/ /g,"");
}
if (url.toLowerCase().indexOf("http://")==0){
url = url.slice(7);
}
if (url.toLowerCase().indexOf("https://")==0){
url = url.slice(8);
}
if (url.slice(url.length-1)=="/"){
url = url.slice(0,url.length-1);
}
if (url.toLowerCase().indexOf("www.")==0){
url = url.slice(4);
}
this.input = url;
},
query() {
this.checkURL();
if(this.input == ''){
alert('查询内容不能为空');return;
}
layer.load(0, {shade:0.1});
this.captcha.showCaptcha();
}
},
})
</script>
{/block}