mirror of
https://github.com/tsingui/softcenter-1.git
synced 2024-12-26 20:05:18 +00:00
add aliddns
This commit is contained in:
parent
ad5002403f
commit
5ed4de9284
22
aliddns/Changelog.txt
Normal file
22
aliddns/Changelog.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Koolshare Asuswrt-Merlin aliddns Changelog
|
||||||
|
===========================================
|
||||||
|
1.2
|
||||||
|
- fix fix interval time scale
|
||||||
|
1.1
|
||||||
|
- fix fix won't work in X7.9.1 fw
|
||||||
|
|
||||||
|
0.7
|
||||||
|
- fix add * and @ support
|
||||||
|
|
||||||
|
0.6
|
||||||
|
- fix fix some column won't hide when toggle switch off
|
||||||
|
|
||||||
|
0.5
|
||||||
|
- update default use interface ppp0 to update ip
|
||||||
|
- fix fix the exclamation point prompt in the network map
|
||||||
|
|
||||||
|
0.4
|
||||||
|
- update sync aliddns
|
||||||
|
|
||||||
|
0.2
|
||||||
|
- add add aliddns
|
14
aliddns/README.md
Normal file
14
aliddns/README.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# merlin_thunder
|
||||||
|
this is a standalone aliddns Repository for merlin xiaobao firmware software center
|
||||||
|
|
||||||
|
#### how to build
|
||||||
|
|
||||||
|
1. change code in aliddns folder
|
||||||
|
2. update version in config.json.js
|
||||||
|
3. run build.py to package
|
||||||
|
4. commit your change
|
||||||
|
|
||||||
|
* the merlin software center sync server always use the code to packet a new tar file when detect version change.
|
||||||
|
* so, when change version number, make sure the code is workable.
|
||||||
|
|
||||||
|
|
BIN
aliddns/aliddns.tar.gz
Normal file
BIN
aliddns/aliddns.tar.gz
Normal file
Binary file not shown.
11
aliddns/aliddns/install.sh
Normal file
11
aliddns/aliddns/install.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
cp -r /tmp/aliddns/* /jffs/softcenter/
|
||||||
|
chmod a+x /jffs/softcenter/scripts/aliddns_*
|
||||||
|
|
||||||
|
rm -rf /jffs/softcenter/install.sh
|
||||||
|
|
||||||
|
# add icon into softerware center
|
||||||
|
# dbus set softcenter_module_aliddns_install=1
|
||||||
|
# dbus set softcenter_module_aliddns_version=0.4
|
||||||
|
# dbus set softcenter_module_aliddns_description="阿里云解析自动更新IP"
|
BIN
aliddns/aliddns/res/icon-aliddns.png
Normal file
BIN
aliddns/aliddns/res/icon-aliddns.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
46
aliddns/aliddns/scripts/aliddns_config.sh
Normal file
46
aliddns/aliddns/scripts/aliddns_config.sh
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
source /jffs/softcenter/scripts/base.sh
|
||||||
|
eval `dbus export aliddns`
|
||||||
|
|
||||||
|
start_aliddns(){
|
||||||
|
aliddns_interval=$(($aliddns_interval / 60))
|
||||||
|
cru a aliddns_checker "*/$aliddns_interval * * * * /jffs/softcenter/scripts/aliddns_update.sh"
|
||||||
|
sh /jffs/softcenter/scripts/aliddns_update.sh
|
||||||
|
|
||||||
|
if [ ! -L "/jffs/softcenter/init.d/S98Aliddns.sh" ]; then
|
||||||
|
ln -sf /jffs/softcenter/scripts/aliddns_config.sh /jffs/jffs/softcenter/init.d/S98Aliddns.sh
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_aliddns(){
|
||||||
|
jobexist=`cru l|grep aliddns_checker`
|
||||||
|
# kill crontab job
|
||||||
|
if [ -n "$jobexist" ];then
|
||||||
|
sed -i '/aliddns_checker/d' /var/spool/cron/crontabs/* >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
nvram set ddns_hostname_x=`nvram get ddns_hostname_old`
|
||||||
|
}
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
start)
|
||||||
|
if [ "$aliddns_enable" == "1" ];then
|
||||||
|
logger "[软件中心]: 启动阿里DDNS!"
|
||||||
|
start_aliddns
|
||||||
|
else
|
||||||
|
logger "[软件中心]: 阿里DDNS未设置开机启动,跳过!"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop_aliddns
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ "$aliddns_enable" == "1" ];then
|
||||||
|
start_aliddns
|
||||||
|
else
|
||||||
|
stop_aliddns
|
||||||
|
fi
|
||||||
|
http_response "$1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
136
aliddns/aliddns/scripts/aliddns_update.sh
Normal file
136
aliddns/aliddns/scripts/aliddns_update.sh
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
source /jffs/softcenter/scripts/base.sh
|
||||||
|
eval `dbus export aliddns_`
|
||||||
|
alias echo_date='echo 【$(TZ=UTC-8 date -R +%Y年%m月%d日\ %X)】'
|
||||||
|
https_lanport=`nvram get https_lanport`
|
||||||
|
if [ "$aliddns_enable" != "1" ]; then
|
||||||
|
nvram set ddns_hostname_x=`nvram get ddns_hostname_old`
|
||||||
|
echo "not enable"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
now=`echo_date`
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo $1
|
||||||
|
dbus set aliddns_last_act="$now: failed($1)"
|
||||||
|
}
|
||||||
|
|
||||||
|
[ "$aliddns_curl" = "" ] && aliddns_curl="curl -s --interface ppp0 whatismyip.akamai.com"
|
||||||
|
[ "$aliddns_dns" = "" ] && aliddns_dns="223.5.5.5"
|
||||||
|
[ "$aliddns_ttl" = "" ] && aliddns_ttl="600"
|
||||||
|
|
||||||
|
ip=`$aliddns_curl 2>&1` || die "$ip"
|
||||||
|
|
||||||
|
#support @ record nslookup
|
||||||
|
if [ "$aliddns_name" = "@" ];then
|
||||||
|
current_ip=`nslookup $aliddns_domain $aliddns_dns 2>&1`
|
||||||
|
else
|
||||||
|
current_ip=`nslookup $aliddns_name.$aliddns_domain $aliddns_dns 2>&1`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$?" -eq "0" ];then
|
||||||
|
current_ip=`echo "$current_ip" | grep 'Address 1' | tail -n1 | awk '{print $NF}'`
|
||||||
|
if [ "$ip" = "$current_ip" ]
|
||||||
|
then
|
||||||
|
echo "skipping"
|
||||||
|
dbus set aliddns_last_act="$now: skipped($ip)"
|
||||||
|
nvram set ddns_enable_x=1
|
||||||
|
#web ui show without @.
|
||||||
|
if [ "$aliddns_name" = "@" ] ;then
|
||||||
|
nvram set ddns_hostname_x="$aliddns_domain"
|
||||||
|
else
|
||||||
|
nvram set ddns_hostname_x="$aliddns_name"."$aliddns_domain"
|
||||||
|
ddns_custom_updated 1
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# fix when A record removed by manual dns is always update error
|
||||||
|
unset aliddns_record_id
|
||||||
|
fi
|
||||||
|
|
||||||
|
timestamp=`date -u "+%Y-%m-%dT%H%%3A%M%%3A%SZ"`
|
||||||
|
urlencode() {
|
||||||
|
# urlencode <string>
|
||||||
|
out=""
|
||||||
|
while read -n1 c
|
||||||
|
do
|
||||||
|
case $c in
|
||||||
|
[a-zA-Z0-9._-]) out="$out$c" ;;
|
||||||
|
*) out="$out`printf '%%%02X' "'$c"`" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo -n $out
|
||||||
|
}
|
||||||
|
|
||||||
|
enc() {
|
||||||
|
echo -n "$1" | urlencode
|
||||||
|
}
|
||||||
|
|
||||||
|
send_request() {
|
||||||
|
local args="AccessKeyId=$aliddns_ak&Action=$1&Format=json&$2&Version=2015-01-09"
|
||||||
|
local hash=$(echo -n "GET&%2F&$(enc "$args")" | openssl dgst -sha1 -hmac "$aliddns_sk&" -binary | openssl base64)
|
||||||
|
curl -s "http://alidns.aliyuncs.com/?$args&Signature=$(enc "$hash")"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_recordid() {
|
||||||
|
grep -Eo '"RecordId":"[0-9]+"' | cut -d':' -f2 | tr -d '"'
|
||||||
|
}
|
||||||
|
|
||||||
|
query_recordid() {
|
||||||
|
send_request "DescribeSubDomainRecords" "SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&SubDomain=$aliddns_name1.$aliddns_domain&Timestamp=$timestamp"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_record() {
|
||||||
|
send_request "UpdateDomainRecord" "RR=$aliddns_name1&RecordId=$1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"
|
||||||
|
}
|
||||||
|
|
||||||
|
add_record() {
|
||||||
|
send_request "AddDomainRecord&DomainName=$aliddns_domain" "RR=$aliddns_name1&SignatureMethod=HMAC-SHA1&SignatureNonce=$timestamp&SignatureVersion=1.0&TTL=$aliddns_ttl&Timestamp=$timestamp&Type=A&Value=$ip"
|
||||||
|
}
|
||||||
|
|
||||||
|
#add support */%2A and @/%40 record
|
||||||
|
case "$aliddns_name" in
|
||||||
|
\*)
|
||||||
|
aliddns_name1=%2A
|
||||||
|
;;
|
||||||
|
\@)
|
||||||
|
aliddns_name1=%40
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
aliddns_name1="$aliddns_name"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$aliddns_record_id" ];then
|
||||||
|
aliddns_record_id=`query_recordid | get_recordid`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$aliddns_record_id" ];then
|
||||||
|
aliddns_record_id=`add_record | get_recordid`
|
||||||
|
echo "added record $aliddns_record_id"
|
||||||
|
else
|
||||||
|
update_record "$aliddns_record_id"
|
||||||
|
echo "updated record $aliddns_record_id"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# save to file
|
||||||
|
if [ -z "$aliddns_record_id" ]; then
|
||||||
|
# failed
|
||||||
|
dbus set aliddns_last_act="$now: failed"
|
||||||
|
nvram set ddns_hostname_x=`nvram get ddns_hostname_old`
|
||||||
|
else
|
||||||
|
dbus set aliddns_record_id="$aliddns_record_id"
|
||||||
|
dbus set aliddns_last_act="$now: success($ip)"
|
||||||
|
nvram set ddns_enable_x=1
|
||||||
|
#web ui show without @.
|
||||||
|
if [ "$aliddns_name" = "@" ] ;then
|
||||||
|
nvram set ddns_hostname_x="$aliddns_domain"
|
||||||
|
ddns_custom_updated 1
|
||||||
|
else
|
||||||
|
nvram set ddns_hostname_x="$aliddns_name"."$aliddns_domain"
|
||||||
|
ddns_custom_updated 1
|
||||||
|
fi
|
||||||
|
fi
|
216
aliddns/aliddns/webs/Module_aliddns.asp
Normal file
216
aliddns/aliddns/webs/Module_aliddns.asp
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache"/>
|
||||||
|
<meta HTTP-EQUIV="Expires" CONTENT="-1"/>
|
||||||
|
<link rel="shortcut icon" href="images/favicon.png"/>
|
||||||
|
<link rel="icon" href="images/favicon.png"/>
|
||||||
|
<title>Aliddns</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="index_style.css"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="form_style.css"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="usp_style.css"/>
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/element.css">
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script src="/state.js"></script>
|
||||||
|
<script src="/help.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="TopBanner"></div>
|
||||||
|
<div id="Loading" class="popup_bg"></div>
|
||||||
|
<table class="content" align="center" cellpadding="0" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td width="17"> </td>
|
||||||
|
<td valign="top" width="202">
|
||||||
|
<div id="mainMenu"></div>
|
||||||
|
<div id="subMenu"></div>
|
||||||
|
</td>
|
||||||
|
<td valign="top">
|
||||||
|
<div id="tabMenu" class="submenuBlock"></div>
|
||||||
|
<!--=====Beginning of Main Content=====-->
|
||||||
|
<table width="98%" border="0" align="left" cellpadding="0" cellspacing="0" style="display: block;">
|
||||||
|
<tr>
|
||||||
|
<td align="left" valign="top">
|
||||||
|
<div>
|
||||||
|
<table width="760px" border="0" cellpadding="5" cellspacing="0" bordercolor="#6b8fa3" class="FormTitle" id="FormTitle">
|
||||||
|
<tr>
|
||||||
|
<td bgcolor="#4D595D" colspan="3" valign="top">
|
||||||
|
<div> </div>
|
||||||
|
<div style="float:left;" class="formfonttitle" style="padding-top: 12px">Aliddns - 设置</div>
|
||||||
|
<div style="float:right; width:15px; height:25px;margin-top:10px"><img id="return_btn" onclick="reload_Soft_Center();" align="right" style="cursor:pointer;position:absolute;margin-left:-30px;margin-top:-25px;" title="返回软件中心" src="/images/backprev.png" onMouseOver="this.src='/images/backprevclick.png'" onMouseOut="this.src='/images/backprev.png'"></img></div>
|
||||||
|
<div style="margin-left:5px;margin-top:10px;margin-bottom:10px"><img src="/images/New_ui/export/line_export.png"></div>
|
||||||
|
<div class="SimpleNote" id="head_illustrate"><i></i><em>Aliddns</em>是一款基于阿里云解析的私人ddns解决方案。<a href='http://koolshare.cn/thread-64703-1-1.html' target='_blank'><i> <u>点击查看插件详情</u></i></a></div>
|
||||||
|
<table style="margin:20px 0px 0px 0px;" width="100%" border="1" align="center" cellpadding="4" cellspacing="0" bordercolor="#6b8fa3" class="FormTable">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">Aliddns - 设置面板</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tr id="switch_tr">
|
||||||
|
<th>
|
||||||
|
<label>开启Aliddns</label>
|
||||||
|
</th>
|
||||||
|
<td colspan="2">
|
||||||
|
<div class="switch_field" style="display:table-cell">
|
||||||
|
<label for="switch">
|
||||||
|
<input id="switch" class="switch" type="checkbox" style="display: none;">
|
||||||
|
<div class="switch_container" >
|
||||||
|
<div class="switch_bar"></div>
|
||||||
|
<div class="switch_circle transition_style">
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div id="koolproxy_install_show" style="padding-top:5px;margin-left:80px;margin-top:-30px;float: left;"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="last_act_tr">
|
||||||
|
<th>上次运行</th>
|
||||||
|
<td>
|
||||||
|
<% dbus_get_def("aliddns_last_act", "--"); %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="ak_tr">
|
||||||
|
<th>app key</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" id="aliddns_ak" value="<% dbus_get_def("aliddns_ak", ""); %>" class="input_ss_table">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="sk_tr">
|
||||||
|
<th>app secret</th>
|
||||||
|
<td><input type="password" id="aliddns_sk" value="<% dbus_get_def("aliddns_sk", ""); %>" class="input_ss_table"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="interval_tr">
|
||||||
|
<th>检查周期</th>
|
||||||
|
<td><input type="text" style="width: 2.5em" id="aliddns_interval" value="<% dbus_get_def("aliddns_interval", "120"); %>" class="input_ss_table">s</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="name_tr">
|
||||||
|
<th>域名</th>
|
||||||
|
<td>
|
||||||
|
<input type="text" style="width: 4em" id="aliddns_name" placeholder="子域名" value="<% dbus_get_def("aliddns_name", "home"); %>" class="input_ss_table"
|
||||||
|
>.<input type="text" id="aliddns_domain" placeholder="主域名" value="<% dbus_get_def("aliddns_domain", "example.com"); %>" class="input_ss_table">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr id="dns_tr">
|
||||||
|
<th title="查询域名当前IP时使用的DNS解析服务器,默认为阿里云DNS">DNS服务器(?)</th>
|
||||||
|
<td><input id="aliddns_dns" class="input_ss_table" value="<% dbus_get_def("aliddns_dns", "223.5.5.5"); %>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="curl_tr">
|
||||||
|
<th title="可自行修改命令行,以获得正确的公网IP。如添加 '--interface vlan2' 以指定多播情况下的端口支持">获得IP命令(?)</th>
|
||||||
|
<td><textarea id="aliddns_curl" class="input_ss_table" style="width: 94%; height: 2.4em"><% dbus_get_def("aliddns_curl", "curl -s --interface ppp0 whatismyip.akamai.com"); %></textarea></td>
|
||||||
|
</tr>
|
||||||
|
<tr id="ttl_tr">
|
||||||
|
<th title="设置解析TTL,默认10分钟,免费版的范围是600-86400">TTL(?)</th>
|
||||||
|
<td><input id="aliddns_ttl" style="width: 4.5em" class="input_ss_table" value="<% dbus_get_def("aliddns_ttl", "600"); %>">s (1~86400)</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="apply_gen">
|
||||||
|
<input class="button_gen" type="button" value="提交">
|
||||||
|
</div>
|
||||||
|
<div style="margin-left:5px;margin-top:10px;margin-bottom:10px"><img src="/images/New_ui/export/line_export.png"/></div>
|
||||||
|
<div class="KoolshareBottom" style="margin-top:540px;">
|
||||||
|
论坛技术支持: <a href="http://www.koolshare.cn" target="_blank"> <i><u>www.koolshare.cn</u></i> </a> <br/>
|
||||||
|
Github项目: <a href="https://github.com/koolshare/koolshare.github.io/tree/acelan_softcenter_ui" target="_blank"> <i><u>github.com/koolshare</u></i> </a> <br/>
|
||||||
|
Shell by: <i>kyrios</i> , Web by: <i>kyrios</i>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<!--=====end of Main Content=====-->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div id="footer"></div>
|
||||||
|
<script>
|
||||||
|
$(function () {
|
||||||
|
show_menu(menu_hook);
|
||||||
|
var enable = "<% dbus_get_def("aliddns_enable", "0"); %>";
|
||||||
|
$('#switch').prop('checked', enable === "1");
|
||||||
|
buildswitch();
|
||||||
|
update_visibility();
|
||||||
|
var posting = false;
|
||||||
|
var inputs = ['ak', 'sk', 'name', 'domain', 'interval', 'dns', 'curl', 'ttl'];
|
||||||
|
$('.button_gen').click(function () {
|
||||||
|
if(posting) return;
|
||||||
|
posting = true; // save
|
||||||
|
var data = {
|
||||||
|
aliddns_enable: $('#switch').prop('checked') | 0,
|
||||||
|
action_mode: ' Refresh ',
|
||||||
|
current_page: 'Module_aliddns.asp',
|
||||||
|
next_page: 'Module_aliddns.asp',
|
||||||
|
SystemCmd: 'aliddns_config.sh'
|
||||||
|
};
|
||||||
|
for(var i = 0; i< inputs.length; i++) {
|
||||||
|
var key = 'aliddns_' + inputs[i];
|
||||||
|
data['aliddns_' + inputs[i]] = $('#aliddns_' + inputs[i]).val()
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: 'applydb.cgi?p=aliddns_',
|
||||||
|
data: $.param(data)
|
||||||
|
}).then(function () {
|
||||||
|
posting = false;
|
||||||
|
alert('saved');
|
||||||
|
}, function () {
|
||||||
|
posting = false;
|
||||||
|
alert('failed');
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
var enable_ss = "<% nvram_get("enable_ss"); %>";
|
||||||
|
var enable_soft = "<% nvram_get("enable_soft"); %>";
|
||||||
|
function menu_hook(title, tab) {
|
||||||
|
if(enable_ss == "1" && enable_soft == "1"){
|
||||||
|
tabtitle[17] = new Array("", "Aliddns");
|
||||||
|
tablink[17] = new Array("", "Module_aliddns.asp");
|
||||||
|
}else{
|
||||||
|
tabtitle[16] = new Array("", "Aliddns");
|
||||||
|
tablink[16] = new Array("", "Module_aliddns.asp");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function reload_Soft_Center(){
|
||||||
|
location.href = "/Main_Soft_center.asp";
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildswitch(){
|
||||||
|
$("#switch").click(
|
||||||
|
function(){
|
||||||
|
update_visibility();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_visibility(){
|
||||||
|
if(document.getElementById('switch').checked){
|
||||||
|
document.getElementById("last_act_tr").style.display = "";
|
||||||
|
document.getElementById("ak_tr").style.display = "";
|
||||||
|
document.getElementById("sk_tr").style.display = "";
|
||||||
|
document.getElementById("interval_tr").style.display = "";
|
||||||
|
document.getElementById("name_tr").style.display = "";
|
||||||
|
document.getElementById("dns_tr").style.display = "";
|
||||||
|
document.getElementById("curl_tr").style.display = "";
|
||||||
|
document.getElementById("ttl_tr").style.display = "";
|
||||||
|
|
||||||
|
}else{
|
||||||
|
document.getElementById("last_act_tr").style.display = "none";
|
||||||
|
document.getElementById("ak_tr").style.display = "none";
|
||||||
|
document.getElementById("sk_tr").style.display = "none";
|
||||||
|
document.getElementById("interval_tr").style.display = "none";
|
||||||
|
document.getElementById("name_tr").style.display = "none";
|
||||||
|
document.getElementById("dns_tr").style.display = "none";
|
||||||
|
document.getElementById("curl_tr").style.display = "none";
|
||||||
|
document.getElementById("ttl_tr").style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
25
aliddns/backup.sh
Executable file
25
aliddns/backup.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# you can do something here
|
||||||
|
# this shell scripts will run at the end of build.py scripts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mkdir -p history
|
||||||
|
if [ ! -f ./history/version ];then
|
||||||
|
touch ./history/version
|
||||||
|
fi
|
||||||
|
|
||||||
|
version_old=`cat history/version | awk '{print $1}' | sort -rn |sed -n 1p`
|
||||||
|
version_new=`cat config.json.js |grep "version"|cut -d"\"" -f 4`
|
||||||
|
md5_old=`cat history/version | sort -nk1 | awk '{print $1}' |sed -n 1p`
|
||||||
|
md5_new=` md5sum aliddns.tar.gz | awk '{print $1}'`
|
||||||
|
|
||||||
|
if [ -f ./aliddns.tar.gz ];then
|
||||||
|
if [ "$version_old" != "$version_new" ];then
|
||||||
|
mkdir ./history/$version_new/
|
||||||
|
cp ./aliddns.tar.gz ./history/$version_new/
|
||||||
|
echo $version_new $md5_new >> ./history/version
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
32
aliddns/build.sh
Executable file
32
aliddns/build.sh
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
MODULE=aliddns
|
||||||
|
VERSION=1.2
|
||||||
|
TITLE=aliddns
|
||||||
|
DESCRIPTION=阿里云解析自动更新IP
|
||||||
|
HOME_URL=Module_aliddns.asp
|
||||||
|
|
||||||
|
# Check and include base
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
if [ "$MODULE" == "" ]; then
|
||||||
|
echo "module not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$DIR/$MODULE/$MODULE/install.sh" ]; then
|
||||||
|
echo "install script not found"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# now include build_base.sh
|
||||||
|
. $DIR/../softcenter/build_base.sh
|
||||||
|
|
||||||
|
# change to module directory
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
# do something here
|
||||||
|
|
||||||
|
do_build_result
|
||||||
|
|
||||||
|
sh backup.sh $MODULE
|
8
aliddns/config.json.js
Normal file
8
aliddns/config.json.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"version":"1.2",
|
||||||
|
"md5":"1224296f69904c8073e9de60fe23cac5",
|
||||||
|
"home_url":"Module_aliddns.asp",
|
||||||
|
"title":"aliddns",
|
||||||
|
"description":"阿里云解析自动更新IP",
|
||||||
|
"build_date":"2019-01-12_22:09:07"
|
||||||
|
}
|
BIN
aliddns/history/1.0/aliddns.tar.gz
Normal file
BIN
aliddns/history/1.0/aliddns.tar.gz
Normal file
Binary file not shown.
BIN
aliddns/history/1.2/aliddns.tar.gz
Normal file
BIN
aliddns/history/1.2/aliddns.tar.gz
Normal file
Binary file not shown.
2
aliddns/history/version
Normal file
2
aliddns/history/version
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
1.0 c3f3e869f271f51aba85951ec57aacf4
|
||||||
|
1.2 4e1007c77e98486bcc5e83a80c697139
|
2
aliddns/version
Normal file
2
aliddns/version
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
1.2
|
||||||
|
1224296f69904c8073e9de60fe23cac5
|
@ -72,15 +72,14 @@
|
|||||||
"version": "1.5"
|
"version": "1.5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"build_date": "2016-09-27_18:43:33",
|
"build_date": "2019-01-12_22:09:07",
|
||||||
"description": "阿里云解析自动更新IP",
|
"description": "阿里云解析自动更新IP",
|
||||||
"home_url": "Module_aliddns.asp",
|
"home_url": "Module_aliddns.asp",
|
||||||
"md5": "00c97793e5b7195dd1d1def15f506883",
|
"md5": "1224296f69904c8073e9de60fe23cac5",
|
||||||
"module": "aliddns",
|
|
||||||
"name": "aliddns",
|
"name": "aliddns",
|
||||||
"tar_url": "aliddns/aliddns.tar.gz",
|
"tar_url": "aliddns/aliddns.tar.gz",
|
||||||
"title": "aliddns",
|
"title": "aliddns",
|
||||||
"version": "1.0"
|
"version": "1.2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"build_date": "2016-09-01_17:20:40",
|
"build_date": "2016-09-01_17:20:40",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>
|
||||||
@ -24,43 +24,18 @@
|
|||||||
<script type="text/javascript" src="/dbconf?p=adm_&v=<% uptime(); %>"></script>
|
<script type="text/javascript" src="/dbconf?p=adm_&v=<% uptime(); %>"></script>
|
||||||
<script type="text/javascript" src="/res/softcenter.js"></script>
|
<script type="text/javascript" src="/res/softcenter.js"></script>
|
||||||
<script language="JavaScript" type="text/javascript" src="/client_function.js"></script>
|
<script language="JavaScript" type="text/javascript" src="/client_function.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function init(menu_hook) {
|
function init(menu_hook) {
|
||||||
show_menu();
|
show_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSubmitCtrl(o, s) {
|
function onSubmitCtrl(o, s) {
|
||||||
document.form.action_mode.value = s;
|
document.form.action_mode.value = s;
|
||||||
showLoading(7);
|
showLoading(7);
|
||||||
document.form.submit();
|
document.form.submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
function conf2obj(){
|
|
||||||
$j.ajax({
|
|
||||||
type: "get",
|
|
||||||
url: "dbconf?p=adm_",
|
|
||||||
dataType: "script",
|
|
||||||
success: function(xhr) {
|
|
||||||
var p = "adm_";
|
|
||||||
var params = ["user_txt"];
|
|
||||||
for (var i = 0; i < params.length; i++) {
|
|
||||||
if (typeof db_adm_[p + params[i]] !== "undefined") {
|
|
||||||
$j("#adm_"+params[i]).val(db_adm_[p + params[i]]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function reload_Soft_Center(){
|
function reload_Soft_Center(){
|
||||||
location.href = "/Main_Soft_center.asp";
|
location.href = "/Main_Soft_center.asp";
|
||||||
}
|
}
|
||||||
|
|
||||||
var enable_ss = "<% nvram_get("enable_ss"); %>";
|
|
||||||
var enable_soft = "<% nvram_get("enable_soft"); %>";
|
|
||||||
function menu_hook(title, tab) {
|
function menu_hook(title, tab) {
|
||||||
tabtitle[tabtitle.length -1] = new Array("", "软件中心", "离线安装");
|
tabtitle[tabtitle.length -1] = new Array("", "软件中心", "离线安装");
|
||||||
tablink[tablink.length -1] = new Array("", "Main_Soft_center.asp", "Main_Soft_setting.asp");
|
tablink[tablink.length -1] = new Array("", "Main_Soft_center.asp", "Main_Soft_setting.asp");
|
||||||
@ -70,35 +45,46 @@ function upload_software() {
|
|||||||
if(!fullPath) {
|
if(!fullPath) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
document.getElementById('file_info').style.display = "none";
|
|
||||||
document.getElementById('loadingicon').style.display = "block";
|
|
||||||
var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
|
var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
|
||||||
var filename = fullPath.substring(startIndex);
|
var filename = fullPath.substring(startIndex);
|
||||||
if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
|
if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
|
||||||
filename = filename.substring(1);
|
filename = filename.substring(1);
|
||||||
}
|
}
|
||||||
document.form.soft_name.value = filename;
|
if (/.*[\u0391-\uffe5]+.*$/.test(filename)) {
|
||||||
document.form.enctype = "multipart/form-data";
|
alert("错误:文件名中包含中文字符或符号!\n请更改文件名后重试!!");
|
||||||
document.form.encoding = "multipart/form-data";
|
isok=0;
|
||||||
document.form.action="ssupload.cgi?a=/tmp/"+filename;
|
return false;
|
||||||
document.form.submit();
|
}else{
|
||||||
|
if(filename.indexOf('tar.gz') != -1 ){
|
||||||
|
document.getElementById('file_info').style.display = "none";
|
||||||
|
document.getElementById('loadingicon').style.display = "block";
|
||||||
|
document.form.soft_name.value = filename;
|
||||||
|
document.form.enctype = "multipart/form-data";
|
||||||
|
document.form.encoding = "multipart/form-data";
|
||||||
|
document.form.action="ssupload.cgi?a=/tmp/"+filename;
|
||||||
|
console.log(filename);
|
||||||
|
document.form.submit();
|
||||||
|
}else{
|
||||||
|
console.log(filename);
|
||||||
|
alert("错误:离线安装包后缀错误!需要.tar.gz后缀!\n\n如果你是mac os x系统,safari浏览器下载tar.gz文件后被自动解压导致无法安装的,请关闭此项设置:safari的偏好设置-通用-下载后打开安全的文件。或者换用chrome浏览器,重新下载离线安装包文件!");
|
||||||
|
isok=0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function upload_ok(isok) {
|
function upload_ok(isok) {
|
||||||
var info = $G('file_info');
|
var info = $G('file_info');
|
||||||
if(isok==1){
|
if(isok==1){
|
||||||
info.innerHTML="上传完成";
|
info.innerHTML="上传完成";
|
||||||
checkCmdRet();
|
checkCmdRet();
|
||||||
setTimeout("start_install();", 1000);
|
setTimeout("start_install();", 100);
|
||||||
|
setTimeout("checkCmdRet();", 600);
|
||||||
} else {
|
} else {
|
||||||
info.innerHTML="上传失败";
|
info.innerHTML="上传失败";
|
||||||
}
|
}
|
||||||
info.style.display = "block";
|
info.style.display = "block";
|
||||||
$G('loadingicon').style.display = "none";
|
$G('loadingicon').style.display = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function start_install() {
|
function start_install() {
|
||||||
document.form.action_mode.value = ' Refresh ';
|
document.form.action_mode.value = ' Refresh ';
|
||||||
document.form.action = "/applydb.cgi?p=soft";
|
document.form.action = "/applydb.cgi?p=soft";
|
||||||
@ -107,12 +93,9 @@ function start_install() {
|
|||||||
document.form.encoding = "";
|
document.form.encoding = "";
|
||||||
document.form.submit();
|
document.form.submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var _responseLen;
|
var _responseLen;
|
||||||
var noChange = 0;
|
var noChange = 0;
|
||||||
function checkCmdRet(){
|
function checkCmdRet(){
|
||||||
|
|
||||||
$j.ajax({
|
$j.ajax({
|
||||||
url: '/cmdRet_check.htm',
|
url: '/cmdRet_check.htm',
|
||||||
dataType: 'html',
|
dataType: 'html',
|
||||||
@ -124,9 +107,8 @@ function checkCmdRet(){
|
|||||||
var retArea = $G("log_content1");
|
var retArea = $G("log_content1");
|
||||||
if(response.search("XU6J03M6") != -1){
|
if(response.search("XU6J03M6") != -1){
|
||||||
retArea.value = response.replace("XU6J03M6", " ");
|
retArea.value = response.replace("XU6J03M6", " ");
|
||||||
//retArea.scrollTop = retArea.scrollHeight - retArea.clientHeight;
|
|
||||||
retArea.scrollTop = retArea.scrollHeight;
|
retArea.scrollTop = retArea.scrollHeight;
|
||||||
//return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_responseLen == response.length){
|
if(_responseLen == response.length){
|
||||||
@ -134,32 +116,27 @@ function checkCmdRet(){
|
|||||||
}else{
|
}else{
|
||||||
noChange = 0;
|
noChange = 0;
|
||||||
}
|
}
|
||||||
|
if(noChange > 500){
|
||||||
if(noChange > 20){
|
|
||||||
//retArea.scrollTop = retArea.scrollHeight;
|
|
||||||
//setTimeout("checkCmdRet();", 2000);
|
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
setTimeout("checkCmdRet();", 500);
|
setTimeout("checkCmdRet();", 250);
|
||||||
}
|
}
|
||||||
|
|
||||||
retArea.value = response;
|
retArea.value = response;
|
||||||
//retArea.scrollTop = retArea.scrollHeight - retArea.clientHeight;
|
|
||||||
retArea.scrollTop = retArea.scrollHeight;
|
retArea.scrollTop = retArea.scrollHeight;
|
||||||
_responseLen = response.length;
|
_responseLen = response.length;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body onload="init();">
|
<body onload="init();">
|
||||||
<div id="TopBanner"></div>
|
<div id="TopBanner"></div>
|
||||||
<div id="Loading" class="popup_bg"></div>
|
<div id="Loading" class="popup_bg"></div>
|
||||||
<iframe name="hidden_frame" id="hidden_frame" src="" width="0" height="0" frameborder="0"></iframe>
|
<iframe name="hidden_frame" id="hidden_frame" src="" width="0" height="0" frameborder="0"></iframe>
|
||||||
<form method="POST" name="form" action="/applydb.cgi?p=adm_" target="hidden_frame">
|
<form method="POST" name="form" action="" target="hidden_frame">
|
||||||
<input type="hidden" name="current_page" value="Module_adm_.asp"/>
|
<input type="hidden" name="current_page" value="Main_Soft_setting.asp"/>
|
||||||
<input type="hidden" name="next_page" value="Module_adm_.asp"/>
|
<input type="hidden" name="next_page" value="Main_Soft_setting.asp"/>
|
||||||
<input type="hidden" name="group_id" value=""/>
|
<input type="hidden" name="group_id" value=""/>
|
||||||
<input type="hidden" name="modified" value="0"/>
|
<input type="hidden" name="modified" value="0"/>
|
||||||
<input type="hidden" name="action_mode" value=""/>
|
<input type="hidden" name="action_mode" value=""/>
|
||||||
@ -191,41 +168,28 @@ function checkCmdRet(){
|
|||||||
<div style="margin-left:5px;margin-top:10px;margin-bottom:10px"><img src="/images/New_ui/export/line_export.png"></div>
|
<div style="margin-left:5px;margin-top:10px;margin-bottom:10px"><img src="/images/New_ui/export/line_export.png"></div>
|
||||||
<div class="formfontdesc" style="padding-top:5px;margin-top:0px;float: left;" id="cmdDesc"></div>
|
<div class="formfontdesc" style="padding-top:5px;margin-top:0px;float: left;" id="cmdDesc"></div>
|
||||||
<div style="padding-top:5px;margin-top:0px;float: left;" id="NoteBox" >
|
<div style="padding-top:5px;margin-top:0px;float: left;" id="NoteBox" >
|
||||||
<li>此页面功能需要在7.0及其以上的固件才能使用。 </li>
|
<li>通过本页面,你可以上传插件的离线安装包来安装插件,此功能需要在7.0及以上的固件才能使用; </li>
|
||||||
<li>通过本页面,你可以上传插件的离线安装包来安装插件; </li>
|
|
||||||
<li>离线安装会自动解压tar.gz后缀的压缩包,识别压缩包一级目录下的install.sh文件并执行; </li>
|
<li>离线安装会自动解压tar.gz后缀的压缩包,识别压缩包一级目录下的install.sh文件并执行; </li>
|
||||||
<li>建议开发者将插件版本号,md5等信息在install.sh文件内进行写入; </li>
|
<li>建议开发者将插件版本号,md5等信息在install.sh文件内进行写入; </li>
|
||||||
<li>此页面也能用来安装SS离线安装包,方便用户进行回滚操作,上传前需要将历史文件包改名为shadowsocks.tar.gz,建议安装时关闭SS,安装后需要重新提交才能看到安装的版本号; </li>
|
<li>此页面也能用来安装SS离线安装包,方便用户进行回滚操作,上传前需要将历史文件包改名为shadowsocks.tar.gz,建议安装时关闭SS,安装后需要重新提交才能看到安装的版本号; </li>
|
||||||
|
<li>此功能暂时不可能,待修复; </li>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="formfontdesc" id="cmdDesc"></div>
|
<div class="formfontdesc" id="cmdDesc"></div>
|
||||||
<table style="margin:10px 0px 0px 0px;" width="100%" border="1" align="center" cellpadding="4" cellspacing="0" bordercolor="#6b8fa3" class="FormTable" id="routing_table">
|
<table style="margin:10px 0px 0px 0px;" width="100%" border="1" align="center" cellpadding="4" cellspacing="0" bordercolor="#6b8fa3" class="FormTable" id="routing_table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2">软件中心 - 高级设置</td>
|
<td colspan="2">软件中心 - 高级设置</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tr>
|
||||||
<tr>
|
<th><a class="hintstyle" href="javascript:void(0);" onclick="openssHint(24)">离线安装插件</a></th>
|
||||||
<th>安装包版本号</th>
|
<td>
|
||||||
<td>
|
<input type="button" id="upload_btn" class="button_gen" onclick="upload_software();" value="上传并安装"/>
|
||||||
<input type="text" maxlength="64" id="soft_install_version" name="soft_install_version" value="" class="input_ss_table" style="width:160px;float:left;" autocomplete="off" autocorrect="off" autocapitalize="off"></input>
|
<input style="color:#FFCC00;*color:#000;width: 200px;" id="ss_file" type="file" name="file"/>
|
||||||
</td>
|
<img id="loadingicon" style="margin-left:5px;margin-right:5px;display:none;" src="/images/InternetScan.gif">
|
||||||
</tr>
|
<span id="file_info" style="display:none;">完成</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
|
||||||
<th><a class="hintstyle" href="javascript:void(0);" onclick="openssHint(24)">离线安装插件</a></th>
|
|
||||||
<td>
|
|
||||||
<input type="button" id="upload_btn" class="button_gen" onclick="upload_software();" value="上传并安装">
|
|
||||||
|
|
||||||
<input style="color:#FFCC00;*color:#000;width: 200px;" id="ss_file" type="file" name="file">
|
|
||||||
<img id="loadingicon" style="margin-left:5px;margin-right:5px;display:none;" src="/images/InternetScan.gif">
|
|
||||||
<span id="file_info" style="display:none;">完成</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
<div id="log_content" style="margin-top:10px;display: block;">
|
<div id="log_content" style="margin-top:10px;display: block;">
|
||||||
<textarea cols="63" rows="15" wrap="off" readonly="readonly" id="log_content1" style="width:99%; font-family:'Courier New', Courier, mono; font-size:11px;background:#475A5F;color:#FFFFFF;"></textarea>
|
<textarea cols="63" rows="15" wrap="off" readonly="readonly" id="log_content1" style="width:99%; font-family:'Courier New', Courier, mono; font-size:11px;background:#475A5F;color:#FFFFFF;"></textarea>
|
||||||
@ -235,8 +199,8 @@ function checkCmdRet(){
|
|||||||
<br/>论坛技术支持: <a href="http://www.koolshare.cn" target="_blank"> <i><u>www.koolshare.cn</u></i> </a> <br/>
|
<br/>论坛技术支持: <a href="http://www.koolshare.cn" target="_blank"> <i><u>www.koolshare.cn</u></i> </a> <br/>
|
||||||
后台技术支持: <i>Xiaobao</i> <br/>
|
后台技术支持: <i>Xiaobao</i> <br/>
|
||||||
Shell, Web by: <i>Sadoneli</i><br/>
|
Shell, Web by: <i>Sadoneli</i><br/>
|
||||||
|
<br/>修改版 by: <i>paldier</i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@ -252,6 +216,3 @@ function checkCmdRet(){
|
|||||||
<div id="footer"></div>
|
<div id="footer"></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user