mirror of
https://github.com/JamesonHuang/OpenWrt_Luci_Lua.git
synced 2024-11-24 14:20:10 +00:00
410 lines
11 KiB
HTML
410 lines
11 KiB
HTML
|
<%
|
|||
|
--[[
|
|||
|
Info DDNS
|
|||
|
]]--
|
|||
|
|
|||
|
local ver = require("xiaoqiang.XQVersion").webVersion
|
|||
|
local request_uri = luci.http.getenv("REQUEST_URI")
|
|||
|
%>
|
|||
|
<%include('web/inc/head')%>
|
|||
|
<title>小米路由器</title>
|
|||
|
<link rel="stylesheet" href="<%=resource%>/web/css/page.set.ddns.css?v=<%=ver%>"/>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<!-- upgread -->
|
|||
|
<div class="mod-setting-panel">
|
|||
|
<div class="hd">
|
|||
|
<h3>DDNS</h3>
|
|||
|
<a href="#" class="btn-offon btn-off" id="btnddns"></a>
|
|||
|
</div>
|
|||
|
<div class="bd">
|
|||
|
<div class="mod-set-ddns">
|
|||
|
<div class="section" style="display:none;">
|
|||
|
<form action="<%=luci.dispatcher.build_url("api", "xqnetwork", "add_server")%>" class="form form-horizontal" method="post" name="ddns" id="ddns">
|
|||
|
<div class="item">
|
|||
|
<label for="ddnsservice" class="k">服务提供商:</label>
|
|||
|
<span class="v">
|
|||
|
<select id="ddnsservice" name="ddnsservice" class="beautify vpntype" style="width:185px;">
|
|||
|
<option value="2" selected="selected">花生壳(oray.com)</option>
|
|||
|
<option value="3">公云(3322.org)</option>
|
|||
|
<option value="4">Dyndns.com</option>
|
|||
|
<option value="1">No-ip.com</option>
|
|||
|
</select>
|
|||
|
</span>
|
|||
|
<em class="t"></em>
|
|||
|
</div>
|
|||
|
<div class="item">
|
|||
|
<label for="username" class="k">用户名:</label>
|
|||
|
<span class="v"><input type="text" name="username" id="username" class="text input-large"></span>
|
|||
|
<em class="t"></em>
|
|||
|
</div>
|
|||
|
<div class="item">
|
|||
|
<label for="password" class="k">密码:</label>
|
|||
|
<span class="v"><input type="text" name="password" id="password" class="text input-large"></span>
|
|||
|
<em class="t"></em>
|
|||
|
</div>
|
|||
|
<div class="item">
|
|||
|
<label for="domain" class="k">主机名称:</label>
|
|||
|
<span class="v"><input type="text" name="domain" id="domain" class="text input-large"></span>
|
|||
|
<em class="t"></em>
|
|||
|
</div>
|
|||
|
<div class="item">
|
|||
|
<label for="statuscheck" class="k">状态检查:</label>
|
|||
|
<span class="v"><input type="text" name="statuscheck" id="statuscheck" class="text input-large"></span>
|
|||
|
<em class="t" id="tipminute">分钟</em>
|
|||
|
</div>
|
|||
|
<div class="item">
|
|||
|
<label for="forceupdate" class="k">强制更新:</label>
|
|||
|
<span class="v"><input type="text" name="forceupdate" id="forceupdate" class="text input-large"></span>
|
|||
|
<em class="t" id="tiphour">小时</em>
|
|||
|
</div>
|
|||
|
<div class="item item-control">
|
|||
|
<button type="submit" id="btnAdd" class="btn btn-primary btn-large"><span>添加</span></button>
|
|||
|
</div>
|
|||
|
</form>
|
|||
|
</div>
|
|||
|
<div class="section" style="display:none;">
|
|||
|
<h4>服务列表:</h4>
|
|||
|
<table class="table">
|
|||
|
<thead>
|
|||
|
<tr>
|
|||
|
<th>主机名称</th>
|
|||
|
<th width="128">最近更新</th>
|
|||
|
<th width="46">状态</th>
|
|||
|
<th width="150">操作</th>
|
|||
|
</tr>
|
|||
|
</thead>
|
|||
|
<tbody id="serviceTbody">
|
|||
|
</tbody>
|
|||
|
</table>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<%include('web/inc/g.js.base')%>
|
|||
|
<script type="tmpl/html" id="tmplService">
|
|||
|
<tr data-service-id="{$id}" {if($enabled == 1)}data-enabled = "1"{/if}>
|
|||
|
<td>{$domain}</td>
|
|||
|
<td class="con">{$lastupdate}</td>
|
|||
|
<td class="con">{if($enabled == 1)}已启用{else}未启用{/if}</td>
|
|||
|
<td>{if($enabled == 1)}<a href="#" class="close">关闭</a>{else}<a href="#" class="open">启用</a>{/if}<a href="#" class="forceupdate">强制更新</a><a href="#" class="del">删除</a></td>
|
|||
|
</tr>
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
var modelDDNS = (function(){
|
|||
|
function ddnsSwitch(){
|
|||
|
var btnddns = $('#btnddns');
|
|||
|
btnddns.on('click', function(e){
|
|||
|
e.preventDefault();
|
|||
|
var st = $(this).hasClass('btn-on');
|
|||
|
var self = this;
|
|||
|
if( st ){
|
|||
|
//close
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "ddns_switch")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
data: {
|
|||
|
on: 0
|
|||
|
},
|
|||
|
success: function(res){
|
|||
|
if(res.code == 0){
|
|||
|
self.className = 'btn-offon btn-off';
|
|||
|
// disableUI();
|
|||
|
$('.mod-set-ddns .section').hide();
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': res.msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}else{
|
|||
|
//open
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "ddns_switch")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
data: {
|
|||
|
on: 1
|
|||
|
},
|
|||
|
success: function(res){
|
|||
|
if(res.code == 0){
|
|||
|
self.className = 'btn-offon btn-on';
|
|||
|
// enableUI();
|
|||
|
$('.mod-set-ddns .section').show();
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': res.msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
function addDdns(e){
|
|||
|
e.preventDefault();
|
|||
|
if( $('#btnAdd').hasClass('btn-danger') ){
|
|||
|
return;
|
|||
|
}
|
|||
|
var formName = 'ddns';
|
|||
|
var validator = FormValidator.checkAll(formName, [
|
|||
|
{
|
|||
|
name: 'username',
|
|||
|
display: '用户名',
|
|||
|
rules: 'required'
|
|||
|
},{
|
|||
|
name: 'password',
|
|||
|
display: '密码',
|
|||
|
rules: 'required'
|
|||
|
},{
|
|||
|
name: 'domain',
|
|||
|
display: '主机名称',
|
|||
|
rules: 'required'
|
|||
|
},{
|
|||
|
name: 'statuscheck',
|
|||
|
display: '状态检查的时间间隔',
|
|||
|
rules: 'required|is_natural_no_zero'
|
|||
|
},{
|
|||
|
name: 'forceupdate',
|
|||
|
display: '强制更新的时间间隔',
|
|||
|
rules: 'required|is_natural_no_zero'
|
|||
|
}
|
|||
|
]);
|
|||
|
if( validator ){
|
|||
|
//
|
|||
|
$('#btnAdd').removeClass('btn-primary').prop('disabled', true).find('span').text('保存中...');
|
|||
|
var usernamevalue = $('#username').val(),
|
|||
|
passwordvalue = $('#password').val(),
|
|||
|
checkintervalvalue = $('#statuscheck').val(),
|
|||
|
forceintervalvalue = $('#forceupdate').val(),
|
|||
|
domainvalue = $('#domain').val(),
|
|||
|
idvalue = $('#ddnsservice').val();
|
|||
|
$.ajax({
|
|||
|
url: $('#'+formName).attr('action'),
|
|||
|
type: 'GET',
|
|||
|
data: {username: usernamevalue, password: passwordvalue, checkinterval: checkintervalvalue, forceinterval: forceintervalvalue, domain: domainvalue, enable: 1, id: idvalue},
|
|||
|
dataType: 'json',
|
|||
|
success: function(res){
|
|||
|
var msg;
|
|||
|
if(res.code == 0){
|
|||
|
msg = '添加成功';
|
|||
|
$('#tipminute').html('分钟').show();
|
|||
|
$('#tiphour').html('小时').show();
|
|||
|
$('#ddns .item input.text').val('');
|
|||
|
//成功后去掉验证表单插件添加的blur事件,点击提交时会自动再次绑定
|
|||
|
$('#ddns').find('input:not(".dummy")').off('blur');
|
|||
|
getDDNS();
|
|||
|
}else{
|
|||
|
msg = res.msg;
|
|||
|
}
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
$('#btnAdd').addClass('btn-primary').prop('disabled', false).find('span').text('添加');
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
function doClose(e){
|
|||
|
e.preventDefault();
|
|||
|
var tr = $(this).closest('tr');
|
|||
|
var id = tr.attr('data-service-id');
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "server_switch")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
data: {
|
|||
|
id: id,
|
|||
|
on: 0
|
|||
|
},
|
|||
|
success: function(res){
|
|||
|
if(res.code == 0){
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': '关闭成功',
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
getDDNS();
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': res.msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
function doOpen(e){
|
|||
|
e.preventDefault();
|
|||
|
var tr = $(this).closest('tr');
|
|||
|
var id = tr.attr('data-service-id');
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "server_switch")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
data: {
|
|||
|
id: id,
|
|||
|
on: 1
|
|||
|
},
|
|||
|
success: function(res){
|
|||
|
if(res.code == 0){
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': '启用成功',
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
setTimeout(function(){
|
|||
|
getDDNS();
|
|||
|
}, 1000);
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': res.msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
function doForceUpdate(e){
|
|||
|
e.preventDefault();
|
|||
|
var tr = $(this).closest('tr');
|
|||
|
if( tr.attr('data-enabled') == 1 ){
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "ddns_reload")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
success: function(res){
|
|||
|
if(res.code == 0){
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': '更新成功',
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
getDDNS();
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': res.msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': '未启动无法强制更新',
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
function doDel(e){
|
|||
|
e.preventDefault();
|
|||
|
var tr = $(this).closest('tr');
|
|||
|
var id = tr.attr('data-service-id');
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "del_server")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
data: {id: id},
|
|||
|
success: function(res){
|
|||
|
if(res.code == 0){
|
|||
|
getDDNS();
|
|||
|
// tr.remove();
|
|||
|
}else{
|
|||
|
window.top.$.dialog({
|
|||
|
'title': false,
|
|||
|
'content': res.msg,
|
|||
|
'fixed': true
|
|||
|
}).time(3 * 1000);
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
// 20140618150929 ==> 06/18/2014 15:09
|
|||
|
function formatTime(str){
|
|||
|
if(!str){
|
|||
|
return '暂无更新';
|
|||
|
}
|
|||
|
var format = "";
|
|||
|
var year = str.substr(0, 4);
|
|||
|
var month = str.substr(4, 2);
|
|||
|
var date = str.substr(6, 2);
|
|||
|
var hour = str.substr(8, 2);
|
|||
|
var minute = str.substr(10, 2);
|
|||
|
var second = str.substr(12, 2);
|
|||
|
format = month + '/' + date + '/' + year + ' ' + hour + ':' + minute;
|
|||
|
return format;
|
|||
|
}
|
|||
|
// function disableUI(){
|
|||
|
// $('#btnAdd').removeClass('btn-primary').addClass('btn-danger');
|
|||
|
// }
|
|||
|
// function enableUI(){
|
|||
|
// $('#btnAdd').removeClass('btn-danger').addClass('btn-primary');
|
|||
|
// }
|
|||
|
function getDDNS(){
|
|||
|
$.ajax({
|
|||
|
url: '<%=luci.dispatcher.build_url("api", "xqnetwork", "ddns")%>',
|
|||
|
type: 'GET',
|
|||
|
dataType: 'json',
|
|||
|
success: function(res){
|
|||
|
console.log(res);
|
|||
|
var tpl = $('#tmplService').html();
|
|||
|
if(res.code == 0){
|
|||
|
var list = res.list;
|
|||
|
var trarr = [];
|
|||
|
if($.isArray(list) && list.length > 0){
|
|||
|
for(var i = 0, len = list.length; i < len; i++){
|
|||
|
var tr = StringH.tmpl(tpl, {
|
|||
|
domain:StringH.encode4Html(list[i].domain),
|
|||
|
enabled: list[i].enabled,
|
|||
|
id: list[i].id,
|
|||
|
lastupdate: formatTime(list[i].lastupdate)
|
|||
|
});
|
|||
|
trarr.push(tr);
|
|||
|
}
|
|||
|
$('#serviceTbody').html(trarr.join(''));
|
|||
|
}else{
|
|||
|
$('#serviceTbody').html('<tr><td colspan="4">还没有服务添加进来</td></tr>');
|
|||
|
}
|
|||
|
}
|
|||
|
if(res.on == 0){
|
|||
|
$('#btnddns')[0].className = 'btn-offon btn-off';
|
|||
|
$('.mod-set-ddns .section').hide();
|
|||
|
}
|
|||
|
if(res.on == 1){
|
|||
|
$('#btnddns')[0].className = 'btn-offon btn-on';
|
|||
|
$('.mod-set-ddns .section').show();
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
return {
|
|||
|
init:function(){
|
|||
|
getDDNS();
|
|||
|
ddnsSwitch();
|
|||
|
|
|||
|
$('#btnAdd').on('click', addDdns);
|
|||
|
$('#ddns').on('submit', addDdns);
|
|||
|
$('body').delegate('.close', 'click', doClose);
|
|||
|
$('body').delegate('.open', 'click', doOpen);
|
|||
|
$('body').delegate('.forceupdate', 'click', doForceUpdate);
|
|||
|
$('body').delegate('.del', 'click', doDel);
|
|||
|
}
|
|||
|
};
|
|||
|
})();
|
|||
|
$(function(){
|
|||
|
modelDDNS.init();
|
|||
|
});
|
|||
|
</script>
|