mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-10 19:12:33 +08:00
Merge Lean's source
This commit is contained in:
parent
9937361a53
commit
99b30dcf94
@ -1,13 +0,0 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-dnspod
|
||||
PKG_VERSION=1.0
|
||||
PKG_RELEASE:=1
|
||||
LUCI_TITLE:=Auto DNS for dnspod
|
||||
LUCI_DEPENDS:=+curl +libcurl
|
||||
LUCI_PKGARCH:=all
|
||||
LUCI_DESCRIPTION=auto get pub ip,dnspod ddns,must include curl with ssl
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
@ -1,5 +0,0 @@
|
||||
module("luci.controller.dnspod", package.seeall)
|
||||
|
||||
function index()
|
||||
entry({"admin", "network", "dnspod"}, cbi("dnspod"), _("动态DNSPOD"), 100)
|
||||
end
|
@ -1,32 +0,0 @@
|
||||
--[[
|
||||
LuCI - Lua Configuration Interface
|
||||
|
||||
Copyright 2010 Jo-Philipp Wich <xm@subsignal.org>
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
]]--
|
||||
|
||||
require("luci.sys")
|
||||
|
||||
m = Map("dnspod", translate("动态DNSPOD"), translate("配置动态DNSPOD"))
|
||||
|
||||
s = m:section(TypedSection, "base_arg", "")
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
email = s:option(Value, "login_token", translate("DNSPOD Token"), "格式: ID,Token")
|
||||
main = s:option(Value, "main_domain", translate("主域名"), "想要解析的主域名,例如:baidu.com")
|
||||
sub = s:option(Value, "sub_domain", translate("子域名"), "想要解析的子域名,只允许填写一个。如果想解析*子域名,请填写 \\*")
|
||||
wait = s:option(Value, "wait_second", translate("更新周期(s)"), "请填写数字,默认为300s")
|
||||
command = s:option(Value, "command_to_get_ip", translate("外网ip获取命令"), "默认为 curl -s whatismyip.akamai.com")
|
||||
|
||||
local apply = luci.http.formvalue("cbi.apply")
|
||||
if apply then
|
||||
io.popen("/etc/init.d/dnspod restart &")
|
||||
end
|
||||
|
||||
return m
|
@ -1,7 +0,0 @@
|
||||
config base_arg "base_arg"
|
||||
option main_domain ''
|
||||
option sub_domain ''
|
||||
option login_token ''
|
||||
option wait_second ''
|
||||
option command_to_get_ip 'curl -s whatismyip.akamai.com'
|
||||
|
@ -1,18 +0,0 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
START=80
|
||||
|
||||
start()
|
||||
{
|
||||
/usr/sbin/dnspod.sh --svc &
|
||||
}
|
||||
|
||||
stop()
|
||||
{
|
||||
ps | grep dnspod.sh | grep -v 'grep' | awk '{print $1}' | xargs kill
|
||||
}
|
||||
|
||||
run_reboot()
|
||||
{
|
||||
stop
|
||||
start
|
||||
}
|
@ -1,169 +0,0 @@
|
||||
#!/bin/bash
|
||||
#written by Michael Qu
|
||||
#greennyreborn@gmail.com
|
||||
|
||||
#dnspod api token
|
||||
token=`uci get dnspod.base_arg.login_token`
|
||||
|
||||
#域名
|
||||
domain=`uci get dnspod.base_arg.main_domain 2>/dev/null`
|
||||
|
||||
|
||||
#需要更新的子域名,只允许一个
|
||||
#由于*linux会被脚本解析为当前目录下的所有文件,所以请填写\*
|
||||
# sub_domain='\*'
|
||||
sub_domain=`uci get dnspod.base_arg.sub_domain 2>/dev/null`
|
||||
if [ $sub_domain = "\*" ]; then
|
||||
sub_domain="*"
|
||||
fi
|
||||
|
||||
#check for changed ip every 300 seconds
|
||||
wait=300
|
||||
wait_second=`uci get dnspod.base_arg.wait_second 2>/dev/null`
|
||||
if [[ $wait_second =~ ^[1-9][0-9]*$ ]]; then
|
||||
wait=$wait_second
|
||||
fi
|
||||
|
||||
#外网ip获取命令
|
||||
command=`uci get dnspod.base_arg.command_to_get_ip 2>/dev/null`
|
||||
if [ -z "$command" ]; then
|
||||
command='curl -s whatismyip.akamai.com'
|
||||
fi
|
||||
|
||||
#检查curl是否安装
|
||||
curl_status=`which curl 2>/dev/null`
|
||||
[ -n "$curl_status" ] || { echo "curl is not installed";exit 3; }
|
||||
|
||||
os=$(uname -a | egrep -io 'openwrt' | tr [A-Z] [a-z])
|
||||
|
||||
API_url="https://dnsapi.cn"
|
||||
LOG_FILE="/tmp/dnspod.log"
|
||||
MAX_LOG_SIZE=`expr 1 * 1024 * 1024` # 默认最大限制1M
|
||||
PROGRAM=$(basename $0)
|
||||
|
||||
format='json'
|
||||
lang='en'
|
||||
record_type='A'
|
||||
common_options="login_token=$token&format=${format}&lang=${lang}"
|
||||
|
||||
is_svc=0
|
||||
last_modified_ip=
|
||||
|
||||
getFileSize() {
|
||||
local file=$1
|
||||
wc -c $file | awk '{print $1}'
|
||||
}
|
||||
|
||||
clearLog() {
|
||||
local file_size=$(getFileSize $LOG_FILE)
|
||||
if [ $file_size -gt $MAX_LOG_SIZE ]; then
|
||||
echo "" > $LOG_FILE
|
||||
printMsg "Log file [$LOG_FILE], size: [$file_size bytes]."
|
||||
printMsg "Exceeds max log size [$MAX_LOG_SIZE]. Clear the log."
|
||||
fi
|
||||
}
|
||||
|
||||
printMsg() {
|
||||
local time=$(date "+%Y-%m-%d %H:%M:%S")
|
||||
local msg="$1"
|
||||
if [ $is_svc -eq 1 ]; then
|
||||
echo "$time: $msg" >> $LOG_FILE
|
||||
# logger -t ${PROGRAM} "${msg}"
|
||||
else
|
||||
echo "$time: $msg"
|
||||
fi
|
||||
}
|
||||
|
||||
getIp() {
|
||||
# curl -s http://checkip.dyndns.com | sed -n 's/.*: \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*/\1/p'
|
||||
eval $command
|
||||
}
|
||||
|
||||
execAPI() {
|
||||
local action="$1"
|
||||
local extra_options="$2"
|
||||
|
||||
eval "curl -k -X POST \"${API_url}/${action}\" -d \"${common_options}&${extra_options}\""
|
||||
}
|
||||
|
||||
getRecordList() {
|
||||
local extra_options="domain=$domain"
|
||||
echo $(execAPI "Record.List" "$extra_options")
|
||||
exit
|
||||
}
|
||||
|
||||
updateRecord() {
|
||||
local ip=$1
|
||||
local record_list=`getRecordList`
|
||||
local old_ip=`jsonfilter -s "$record_list" -e "@.records[@.name='$sub_domain'].value"`
|
||||
local id=`jsonfilter -s "$record_list" -e "@.records[@.name='$sub_domain'].id"`
|
||||
printMsg "Change record: $sub_domain.$domain from $old_ip to $ip"
|
||||
|
||||
local extra_options="domain=$domain&record_id=$id&value=$ip&record_type=A&record_line_id=0&sub_domain=$sub_domain"
|
||||
local response=$(execAPI "Record.Modify" "$extra_options")
|
||||
|
||||
local code=`jsonfilter -s "$response" -e "@.status.code"`
|
||||
if [ "$code" == "1" ]; then
|
||||
last_modified_ip=$ip
|
||||
fi
|
||||
local message=`jsonfilter -s "$response" -e "@.status.message"`
|
||||
printMsg "response: $message"
|
||||
|
||||
}
|
||||
|
||||
checkip() {
|
||||
local wan_ip=$1
|
||||
printMsg "old ip: [$last_modified_ip], new ip: [$wan_ip]"
|
||||
if [ "$wan_ip" != "$last_modified_ip" ]; then
|
||||
return 8
|
||||
else
|
||||
return 3
|
||||
fi
|
||||
}
|
||||
|
||||
execSvc() {
|
||||
local ip
|
||||
#check that whether the network is ok
|
||||
while [ 1 ];do
|
||||
ip=$(getIp)
|
||||
if [ -n "$ip" ]; then
|
||||
printMsg "WAN IP: ${ip}"
|
||||
break;
|
||||
else
|
||||
printMsg "Can't get wan ip"
|
||||
sleep 30
|
||||
fi
|
||||
done
|
||||
|
||||
while [ 1 ];do
|
||||
clearLog
|
||||
ip=$(getIp)
|
||||
checkip $ip
|
||||
if [ $? -eq 8 ]; then
|
||||
updateRecord $ip
|
||||
#updateTunnelBroker
|
||||
fi
|
||||
sleep $wait
|
||||
done
|
||||
}
|
||||
|
||||
execUpdate() {
|
||||
local ip=`getIp`
|
||||
printMsg "WAN IP: ${ip}"
|
||||
updateRecord $ip
|
||||
}
|
||||
|
||||
case $1 in
|
||||
--svc)
|
||||
is_svc=1;
|
||||
clearLog;
|
||||
printMsg "Start in Service mode, check in every $wait seconds";
|
||||
printMsg "domain: ${domain}, sub_domain: ${sub_domain}";
|
||||
printMsg "Use command: [$command] to get wan ip";
|
||||
execSvc;;
|
||||
*)
|
||||
is_svc=0;
|
||||
printMsg "Start update record, domain: ${domain}, sub_domain: ${sub_domain}";
|
||||
printMsg "Use command: [$command] to get wan ip";
|
||||
execUpdate;;
|
||||
esac
|
@ -47,7 +47,7 @@ msgid "Server Address"
|
||||
msgstr "服务器地址"
|
||||
|
||||
msgid "Server Port"
|
||||
msgstr "服务器端口"
|
||||
msgstr "端口"
|
||||
|
||||
msgid "Local Port"
|
||||
msgstr "本地端口"
|
||||
|
Loading…
x
Reference in New Issue
Block a user