add aliddns

This commit is contained in:
paldier 2019-01-12 22:10:25 +08:00
parent ad5002403f
commit 5ed4de9284
17 changed files with 565 additions and 91 deletions

22
aliddns/Changelog.txt Normal file
View 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
View 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

Binary file not shown.

View 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"

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View 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

View 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

View 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">&nbsp;</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>&nbsp;</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>&nbsp;&nbsp;<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
View 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
View 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
View 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"
}

Binary file not shown.

Binary file not shown.

2
aliddns/history/version Normal file
View File

@ -0,0 +1,2 @@
1.0 c3f3e869f271f51aba85951ec57aacf4
1.2 4e1007c77e98486bcc5e83a80c697139

2
aliddns/version Normal file
View File

@ -0,0 +1,2 @@
1.2
1224296f69904c8073e9de60fe23cac5

View File

@ -72,15 +72,14 @@
"version": "1.5"
},
{
"build_date": "2016-09-27_18:43:33",
"build_date": "2019-01-12_22:09:07",
"description": "阿里云解析自动更新IP",
"home_url": "Module_aliddns.asp",
"md5": "00c97793e5b7195dd1d1def15f506883",
"module": "aliddns",
"md5": "1224296f69904c8073e9de60fe23cac5",
"name": "aliddns",
"tar_url": "aliddns/aliddns.tar.gz",
"title": "aliddns",
"version": "1.0"
"version": "1.2"
},
{
"build_date": "2016-09-01_17:20:40",

View File

@ -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">
<head>
<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="/res/softcenter.js"></script>
<script language="JavaScript" type="text/javascript" src="/client_function.js"></script>
<script>
function init(menu_hook) {
show_menu();
}
function onSubmitCtrl(o, s) {
document.form.action_mode.value = s;
showLoading(7);
document.form.submit();
document.form.action_mode.value = s;
showLoading(7);
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(){
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) {
tabtitle[tabtitle.length -1] = new Array("", "软件中心", "离线安装");
tablink[tablink.length -1] = new Array("", "Main_Soft_center.asp", "Main_Soft_setting.asp");
@ -70,35 +45,46 @@ function upload_software() {
if(!fullPath) {
return;
}
document.getElementById('file_info').style.display = "none";
document.getElementById('loadingicon').style.display = "block";
var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
var filename = fullPath.substring(startIndex);
if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
filename = filename.substring(1);
}
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;
document.form.submit();
if (/.*[\u0391-\uffe5]+.*$/.test(filename)) {
alert("错误:文件名中包含中文字符或符号!\n请更改文件名后重试");
isok=0;
return false;
}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) {
var info = $G('file_info');
if(isok==1){
info.innerHTML="上传完成";
checkCmdRet();
setTimeout("start_install();", 1000);
setTimeout("start_install();", 100);
setTimeout("checkCmdRet();", 600);
} else {
info.innerHTML="上传失败";
}
info.style.display = "block";
$G('loadingicon').style.display = "none";
}
function start_install() {
document.form.action_mode.value = ' Refresh ';
document.form.action = "/applydb.cgi?p=soft";
@ -107,12 +93,9 @@ function start_install() {
document.form.encoding = "";
document.form.submit();
}
var _responseLen;
var noChange = 0;
function checkCmdRet(){
$j.ajax({
url: '/cmdRet_check.htm',
dataType: 'html',
@ -124,9 +107,8 @@ function checkCmdRet(){
var retArea = $G("log_content1");
if(response.search("XU6J03M6") != -1){
retArea.value = response.replace("XU6J03M6", " ");
//retArea.scrollTop = retArea.scrollHeight - retArea.clientHeight;
retArea.scrollTop = retArea.scrollHeight;
//return false;
return false;
}
if(_responseLen == response.length){
@ -134,32 +116,27 @@ function checkCmdRet(){
}else{
noChange = 0;
}
if(noChange > 20){
//retArea.scrollTop = retArea.scrollHeight;
//setTimeout("checkCmdRet();", 2000);
if(noChange > 500){
return false;
}else{
setTimeout("checkCmdRet();", 500);
setTimeout("checkCmdRet();", 250);
}
retArea.value = response;
//retArea.scrollTop = retArea.scrollHeight - retArea.clientHeight;
retArea.scrollTop = retArea.scrollHeight;
_responseLen = response.length;
}
});
}
</script>
</head>
<body onload="init();">
<div id="TopBanner"></div>
<div id="Loading" class="popup_bg"></div>
<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">
<input type="hidden" name="current_page" value="Module_adm_.asp"/>
<input type="hidden" name="next_page" value="Module_adm_.asp"/>
<form method="POST" name="form" action="" target="hidden_frame">
<input type="hidden" name="current_page" value="Main_Soft_setting.asp"/>
<input type="hidden" name="next_page" value="Main_Soft_setting.asp"/>
<input type="hidden" name="group_id" value=""/>
<input type="hidden" name="modified" value="0"/>
<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 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" >
<li>此页面功能需要在7.0及其以上的固件才能使用。 </li>
<li>通过本页面,你可以上传插件的离线安装包来安装插件; </li>
<li>通过本页面,你可以上传插件的离线安装包来安装插件,此功能需要在7.0及以上的固件才能使用; </li>
<li>离线安装会自动解压tar.gz后缀的压缩包识别压缩包一级目录下的install.sh文件并执行 </li>
<li>建议开发者将插件版本号md5等信息在install.sh文件内进行写入 </li>
<li>此页面也能用来安装SS离线安装包方便用户进行回滚操作上传前需要将历史文件包改名为shadowsocks.tar.gz建议安装时关闭SS安装后需要重新提交才能看到安装的版本号 </li>
<li>此功能暂时不可能,待修复; </li>
</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">
<thead>
<tr>
<td colspan="2">软件中心 - 高级设置</td>
</tr>
<tr>
<td colspan="2">软件中心 - 高级设置</td>
</tr>
</thead>
<tr>
<th>安装包版本号</th>
<td>
<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>
</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>
<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>
<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>
@ -235,8 +199,8 @@ function checkCmdRet(){
<br/>论坛技术支持: <a href="http://www.koolshare.cn" target="_blank"> <i><u>www.koolshare.cn</u></i> </a> <br/>
后台技术支持: <i>Xiaobao</i> <br/>
Shell, Web by <i>Sadoneli</i><br/>
<br/>修改版 by <i>paldier</i>
</div>
</td>
</tr>
</table>
@ -252,6 +216,3 @@ function checkCmdRet(){
<div id="footer"></div>
</body>
</html>