function apaPost(method, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
var req_data = {};
req_data['name'] = 'acme_pandominassl_apply';
req_data['func'] = method;
req_data['version'] = $('.plugin_version').attr('version');
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(toArrayObject(args));
} else {
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/run', req_data, function(data) {
layer.close(loadT);
if (!data.status){
//错误展示10S
layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function apaPostN(method, args,callback){
var req_data = {};
req_data['name'] = 'acme_pandominassl_apply';
req_data['func'] = method;
req_data['version'] = $('.plugin_version').attr('version');
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(toArrayObject(args));
} else {
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/run', req_data, function(data) {
if (!data.status){
//错误展示10S
layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function apaPostCallbak(method, version, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
var req_data = {};
req_data['name'] = 'acme_pandominassl_apply';
req_data['func'] = method;
args['version'] = version;
if (typeof(args) == 'string'){
req_data['args'] = JSON.stringify(toArrayObject(args));
} else {
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/callback', req_data, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function apaReadme(){
var readme = '
';
readme += '- ACME泛域名SSL申请/管理/HOOK
';
readme += '- 通过DNS验证获取SSL证书!
';
readme += '- HOOK: ssl发生变动时调用!
';
readme += '- 暂时仅支持1000个域名管理!
';
readme += '- DNSAPI文档: https://github.com/acmesh-official/acme.sh/wiki/dnsapi
';
readme += '
';
$('.soft-man-con').html(readme);
}
function emailDel(id, name){
safeMessage('删除['+name+']','您真的要删除['+name+']吗?',function(){
var data='id='+id+'&name='+name;
apaPost('email_del', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
emailList();
},{icon: rdata.status ? 1 : 2}, 600);
});
});
}
function emailAdd(type){
layer.open({
type: 1,
area: '500px',
title: '添加邮件地址',
closeBtn: 1,
shift: 5,
shadeClose: true,
btn:["提交","关闭"],
content: "",
success:function(){
$("input[name='addr']").keyup(function(){
var v = $(this).val();
$("input[name='remark']").val(v);
});
},
yes:function(index) {
var data = $("#email_add").serialize();
data = decodeURIComponent(data);
// data = toArrayObject(data);
apaPost('email_add', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
if (rdata.status){
layer.close(index);
emailList();
}
},{icon: rdata.status ? 1 : 2}, 2000);
});
}
});
}
function emailList(page, search){
var _data = {};
if (typeof(page) =='undefined'){
var page = 1;
}
_data['page'] = page;
_data['page_size'] = 10;
if(typeof(search) != 'undefined'){
_data['search'] = search;
}
apaPost('email_list', _data, function(data){
var rdata = $.parseJSON(data.data);
var list = '';
for(i in rdata.data){
list += '';
list +=' | ';
list += '' + rdata.data[i]['addr'] +' | ';
list += '' + rdata.data[i]['remark'] +' | ';
list += '';
list += '删除' +
' | ';
list += '
';
}
var con = '';
$(".soft-man-con").html(con);
$('.dataTables_paginate').html(rdata.page);
readerTableChecked();
});
}
function dnsapiDel(id, name){
safeMessage('删除['+name+']','您真的要删除['+name+']吗?',function(){
var data='id='+id+'&name='+name;
apaPost('dnsapi_del', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
dnsapiList();
},{icon: rdata.status ? 1 : 2}, 600);
});
});
}
var dnsapi_option = [
{"name":"dns_cf", "title":'cloudflare', 'key':'CF_Key:CF_Email'},
{"name":"dns_dp", "title":'dnspod/国内', 'key':'DP_Id:DP_Key'},
{"name":"dns_dpi", "title":'dnspod/国际', 'key':'DPI_Id:DPI_Key'},
{"name":"dns_gd", "title":'GoDaddy', 'key':'GD_Key:GD_Secret'},
{"name":"dns_pdns", "title":'PowerDNS', 'key':'PDNS_Url:PDNS_ServerId:PDNS_Token:PDNS_Ttl'},
{"name":"dns_lua", "title":'LuaDNS', 'key':'LUA_Key:LUA_Email'},
{"name":"dns_me", "title":'DNSMadeEasy', 'key':'ME_Key:ME_Secret'},
{"name":"dns_aws", "title":'Amazon Route53', 'key':'AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY'},
{"name":"dns_ali", "title":'Aliyun', 'key':'Ali_Key:Ali_Secret'},
{"name":"dns_ispconfig", "title":'ISPConfig', 'key':'ISPC_User:ISPC_Password:ISPC_Api:ISPC_Api_Insecure'},
{"name":"dns_ad", "title":'Alwaysdata', 'key':'AD_API_KEY'},
{"name":"dns_linode_v4", "title":'Linode', 'key':'LINODE_V4_API_KEY'},
{"name":"dns_freedns", "title":'FreeDNS', 'key':'FREEDNS_User:FREEDNS_Password'},
{"name":"dns_cyon", "title":'cyon.ch', 'key':'CY_Username:CY_Password:CY_OTP_Secret'},
{"name":"dns_gandi_livedns", "title":'LiveDNS', 'key':'GANDI_LIVEDNS_TOKEN'},
{"name":"dns_knot", "title":'Knot', 'key':'KNOT_SERVER:KNOT_KEY'},
{"name":"dns_dgon", "title":'DigitalOcean', 'key':'DO_API_KEY'},
{"name":"dns_cloudns", "title":'ClouDNS.net', 'key':'CLOUDNS_SUB_AUTH_ID:CLOUDNS_AUTH_PASSWORD'},
{"name":"dns_namesilo", "title":'Namesilo', 'key':'Namesilo_Key'},
{"name":"dns_azure", "title":'Azure', 'key':'AZUREDNS_SUBSCRIPTIONID:AZUREDNS_TENANTID:AZUREDNS_APPID:AZUREDNS_CLIENTSECRET'},
{"name":"dns_selectel", "title":'selectel.com', 'key':'SL_Key'},
{"name":"dns_zonomi", "title":'zonomi.com', 'key':'ZM_Key'},
{"name":"dns_kinghost", "title":'KingHost', 'key':'KINGHOST_Username:KINGHOST_Password'},
{"name":"dns_zilore", "title":'Zilore', 'key':'Zilore_Key'},
{"name":"dns_gcloud", "title":'Google Cloud DNS', 'key':'CLOUDSDK_ACTIVE_CONFIG_NAME'},
{"name":"dns_mydnsjp", "title":'MyDNS.JP', 'key':'MYDNSJP_MasterID:MYDNSJP_Password'},
{"name":"dns_doapi", "title":'do.de', 'key':'DO_LETOKEN'},
{"name":"dns_online", "title":'Online', 'key':'ONLINE_API_KEY'},
{"name":"dns_cn", "title":'Core-Networks', 'key':'CN_User:CN_Password'},
{"name":"dns_ultra", "title":'UltraDNS', 'key':'ULTRA_USR:ULTRA_PWD'},
{"name":"dns_hetzner", "title":'Hetzner', 'key':'HETZNER_Token'},
{"name":"dns_ddnss", "title":'DDNSS.de', 'key':'DDNSS_Token'},
];
function getDnsapiKey(name){
for (var i = 0; i < dnsapi_option.length; i++) {
if (dnsapi_option[i]['name'] == name){
return dnsapi_option[i]['key'];
}
}
return '';
}
function getDnsapiTitle(name){
for (var i = 0; i < dnsapi_option.length; i++) {
if (dnsapi_option[i]['name'] == name){
return dnsapi_option[i]['title'];
}
}
return '其他';
}
function dnsapiAdd(row){
// console.log(row);
var option_name = '';
var option_remark = '';
var option_type = 'cf';
var option_val = '';
var option_id = 0;
if (typeof(row) != 'undefined'){
option_name = row['name'];
option_remark = row['remark'];
option_type = row['type'];
option_val = row['val'];
option_id = row['id'];
}
// console.log(option_name);
function renderDnsapiOption(name, val){
var vlist = {};
if (val != ''){
var t = val.split('~');
for (var i = 0; i < t.length; i++) {
var kv = t[i].split('|');
if (kv.length == 2){
vlist[kv[0]] = kv[1];
} else {
vlist[kv[0]] = '';
}
}
// console.log(vlist);
}
var key = getDnsapiKey(name);
var klist = key.split(':');
// console.log(klist);
var option_html = '';
for (var i = 0; i < klist.length; i++) {
var klist_val = '';
if (klist[i] in vlist){
klist_val = vlist[klist[i]];
}
option_html += "\
"+klist[i]+"\
\
\
";
}
$('#dnsapi_option').html(option_html);
}
layer.open({
type: 1,
area: '500px',
title: '添加DNSAPI',
closeBtn: 1,
shift: 5,
shadeClose: true,
btn:["提交","关闭"],
content: "",
success:function(){
$("input[name='name']").keyup(function(){
var v = $(this).val();
$("input[name='remark']").val(v);
});
var option = '';
for (var i = 0; i"+dnsapi_option[i]['title']+"";
} else {
option += "";
}
}
renderDnsapiOption(option_type, option_val);
$('select[name="type"]').html(option);
$('select[name="type"]').change(function(){
var name = $(this).val();
if (option_type == name){
renderDnsapiOption(name, option_val);
} else {
renderDnsapiOption(name,'');
}
});
},
yes:function(index) {
var data = $("#dnsapi_add").serialize();
data = decodeURIComponent(data);
data = toArrayObject(data);
var key = getDnsapiKey(data['type']);
var klist = key.split(':');
var val = '';
for (var i = 0; i < klist.length; i++) {
var k = klist[i];
if (k in data){
if (klist.length - 1 == i){
val += k + '|' + data[k];
} else {
val += k + '|' + data[k]+'~';
}
}
}
data['val'] = val;
apaPost('dnsapi_add', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
if (rdata.status){
layer.close(index);
dnsapiList();
}
},{icon: rdata.status ? 1 : 2}, 2000);
});
}
});
}
function dnsapiList(page, search){
var _data = {};
if (typeof(page) =='undefined'){
var page = 1;
}
_data['page'] = page;
_data['page_size'] = 10;
if(typeof(search) != 'undefined'){
_data['search'] = search;
}
apaPost('dnsapi_list', _data, function(data){
var rdata = $.parseJSON(data.data);
var list = '';
for(i in rdata.data){
list += '';
list +=' | ';
list += '' + rdata.data[i]['name'] +' | ';
list += '' + getDnsapiTitle(rdata.data[i]['type']) +' | ';
list += '' + rdata.data[i]['val'].split('~').join(" ") +' | ';
list += '' + rdata.data[i]['remark'] +' | ';
list += '';
list += '编辑 | ';
list += '删除';
list += ' |
';
}
var con = '';
$(".soft-man-con").html(con);
$('.dataTables_paginate').html(rdata.page);
$('.edit').click(function(){
var idx = $(this).attr('index');
var row = rdata.data[idx];
// console.log(row);
dnsapiAdd(row);
})
readerTableChecked();
});
}
function domainDel(id, name){
safeMessage('删除['+name+']','您真的要删除['+name+']吗?',function(){
var data='id='+id+'&name='+name;
apaPost('domain_del', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
domainList();
},{icon: rdata.status ? 1 : 2}, 600);
});
});
}
function domainStatusToggle(id){
var data='id='+id;
apaPost('domain_status_toggle', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
domainList();
},{icon: rdata.status ? 1 : 2}, 600);
});
}
function domainIdCmd(id){
var data='id='+id;
apaPost('get_run_hook_id_cmd', data, function(data){
var rdata = $.parseJSON(data.data);
// console.log(rdata);
layer.open({
title: "手动同步命令",
area: ['600px', '180px'],
type:1,
closeBtn: 1,
shadeClose: false,
btn:["复制","取消"],
content: '',
success:function(){
copyText(rdata.data);
},
yes:function(){
copyText(rdata.data);
}
});
});
}
function domainHookCmd(){
apaPost('run_hook_cmd', {}, function(data){
var rdata = $.parseJSON(data.data);
layer.open({
title: "手动同步全部命令",
area: ['600px', '180px'],
type:1,
closeBtn: 1,
shadeClose: false,
btn:["复制","取消"],
content: '',
success:function(){
copyText(rdata.data);
},
yes:function(){
copyText(rdata.data);
}
});
});
}
function domainAdd(row){
var option_domian = '';
var option_remark = '备注';
var option_email = '';
var option_id = 0;
var option_dnsapi_id = 0;
if (typeof(row) != 'undefined'){
option_domian = row['domain'];
option_remark = row['remark'];
option_email = row['email'];
option_id = row['id'];
option_dnsapi_id = row['dnsapi_id'];
}
layer.open({
type: 1,
area: '500px',
title: '添加顶级域名',
closeBtn: 1,
shift: 5,
shadeClose: true,
btn:["提交","关闭"],
content: "",
success:function(){
// $("input[name='domain']").keyup(function(){
// var v = $(this).val();
// $("input[name='remark']").val(v);
// });
var dnsapi_id_html = "";
apaPostN('dnsapi_list_all', {}, function(data){
var rdata = $.parseJSON(data.data);
for (var i = 0; i < rdata.length; i++) {
if (option_dnsapi_id == rdata[i]['id']){
dnsapi_id_html += "";
} else {
dnsapi_id_html += "";
}
}
$('select[name="dnsapi_id"]').html(dnsapi_id_html);
});
},
yes:function(index) {
var data = $("#domain_add").serialize();
data = decodeURIComponent(data);
apaPost('domain_add', data, function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.msg,function(){
if (rdata.status){
layer.close(index);
domainList();
}
},{icon: rdata.status ? 1 : 2}, 2000);
});
}
});
}
function domainList(page, search){
var _data = {};
if (typeof(page) =='undefined'){
var page = 1;
}
_data['page'] = page;
_data['page_size'] = 10;
if(typeof(search) != 'undefined'){
_data['search'] = search;
}
apaPost('domain_list', _data, function(data){
var rdata = $.parseJSON(data.data);
// console.log(rdata);
var list = '';
for(i in rdata.data){
list += '';
list +=' | ';
list += '' + rdata.data[i]['domain'] +' | ';
list += '' + rdata.data[i]['dnsapi_id_alias'] +' | ';
list += '' + rdata.data[i]['email'] +' | ';
list += '' + rdata.data[i]['remark'] +' | ';
if (rdata.data[i]['effective_date'] == ''){
list += '空/未申请 | ';
} else {
list += ''+getFormatTime(rdata.data[i]['effective_date'],'yyyy/MM/dd')+' | ';
}
if (rdata.data[i]['expiration_date'] == ''){
list += '空/未申请 | ';
} else {
list += ''+getFormatTime(rdata.data[i]['expiration_date'],'yyyy/MM/dd')+' | ';
}
if (rdata.data[i]['status'] == '0'){
list += '否 | ';
} else {
list += '是 | ';
}
list += '';
list += '命令 | ';
list += '编辑 | ';
list += '删除';
list += ' |
';
}
var con = '';
$(".soft-man-con").html(con);
$('.dataTables_paginate').html(rdata.page);
$('.edit').click(function(){
var idx = $(this).attr('index');
var row = rdata.data[idx];
domainAdd(row);
});
$('.status').click(function(){
var idx = $(this).attr('index');
var row = rdata.data[idx];
domainStatusToggle(row['id']);
});
$('.cmd').click(function(){
var idx = $(this).attr('index');
var row = rdata.data[idx];
domainIdCmd(row['id']);
});
readerTableChecked();
});
}