mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-18 17:33:31 +00:00
luci-app-xlnetacc: update to 1.0.5 (#6622)
This commit is contained in:
parent
52d0aed849
commit
0bfe0bbf80
@ -1,8 +1,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-xlnetacc
|
||||
PKG_VERSION:=1.0.3
|
||||
PKG_RELEASE:=9
|
||||
PKG_VERSION:=1.0.5
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_LICENSE:=GPLv2
|
||||
PKG_MAINTAINER:=Sense <sensec@gmail.com>
|
||||
|
@ -28,6 +28,21 @@ uci:foreach("network", "interface", function(section)
|
||||
end
|
||||
end)
|
||||
|
||||
o = s:option(Value, "keepalive", translate("Keepalive interval"), "5-60 " .. translate("minutes"))
|
||||
for _, v in ipairs({5, 10, 20, 30, 60}) do
|
||||
o:value(v, v .. " " .. translate("minutes"))
|
||||
end
|
||||
o.datatype = "range(5, 60)"
|
||||
o.default = 10
|
||||
|
||||
o = s:option(Value, "relogin", translate("Account relogin"), "1-48 " .. translate("hours"))
|
||||
o:value(0, translate("Not enabled"))
|
||||
for _, v in ipairs({3, 12, 18, 24, 30}) do
|
||||
o:value(v, v .. " " .. translate("hours"))
|
||||
end
|
||||
o.datatype = "max(48)"
|
||||
o.default = 0
|
||||
|
||||
o = s:option(Value, "account", translate("XLNetAcc account"))
|
||||
|
||||
o = s:option(Value, "password", translate("XLNetAcc password"))
|
||||
|
@ -55,6 +55,21 @@ msgstr "启用详细日志"
|
||||
msgid "Upgrade interface"
|
||||
msgstr "指定提速接口"
|
||||
|
||||
msgid "Keepalive interval"
|
||||
msgstr "保持连接周期"
|
||||
|
||||
msgid "Account relogin"
|
||||
msgstr "帐号重新登录"
|
||||
|
||||
msgid "Not enabled"
|
||||
msgstr "未启用"
|
||||
|
||||
msgid "minutes"
|
||||
msgstr "分钟"
|
||||
|
||||
msgid "hours"
|
||||
msgstr "小时"
|
||||
|
||||
msgid "XLNetAcc account"
|
||||
msgstr "迅雷快鸟帐号"
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
# 声明常量
|
||||
readonly packageName='com.xunlei.vip.swjsq'
|
||||
readonly protocolVersion=200
|
||||
readonly protocolVersion=300
|
||||
readonly businessType=68
|
||||
readonly sdkVersion='2.1.1.177662'
|
||||
readonly clientVersion='2.4.1.3'
|
||||
readonly agent_xl="android-async-http/xl-acc-sdk/version-$sdkVersion"
|
||||
readonly agent_down='okhttp/3.4.1'
|
||||
readonly sdkVersion='3.1.2.185150'
|
||||
readonly clientVersion='2.7.2.0'
|
||||
readonly agent_xl="android-ok-http-client/xl-acc-sdk/version-$sdkVersion"
|
||||
readonly agent_down='okhttp/3.9.1'
|
||||
readonly agent_up='android-async-http/xl-acc-sdk/version-1.0.0.1'
|
||||
readonly client_type_down='android-swjsq'
|
||||
readonly client_type_up='android-uplink'
|
||||
@ -53,11 +53,9 @@ uci_get_by_bool() {
|
||||
|
||||
# 日志和状态栏输出。1 日志文件, 2 系统日志, 4 详细模式, 8 下行状态栏, 16 上行状态栏, 32 失败状态
|
||||
_log() {
|
||||
local msg=$1
|
||||
local flag=$2
|
||||
local msg=$1 flag=$2 timestamp=$(date +'%Y/%m/%d %H:%M:%S')
|
||||
[ -z "$msg" ] && return
|
||||
[ -z "$flag" ] && flag=1
|
||||
local timestamp=$(date +'%Y/%m/%d %H:%M:%S')
|
||||
|
||||
[ $logging -eq 0 -a $(( $flag & 1 )) -ne 0 ] && flag=$(( $flag ^ 1 ))
|
||||
if [ $verbose -eq 0 -a $(( $flag & 4 )) -ne 0 ]; then
|
||||
@ -145,14 +143,16 @@ swjsq_json() {
|
||||
json_init
|
||||
json_add_string protocolVersion "$protocolVersion"
|
||||
json_add_string sequenceNo "$sequence_xl"
|
||||
json_add_string platformVersion '2'
|
||||
json_add_string platformVersion '10'
|
||||
json_add_string isCompressed '0'
|
||||
json_add_string businessType "$businessType"
|
||||
json_add_string appid "$businessType"
|
||||
json_add_string clientVersion "$clientVersion"
|
||||
json_add_string peerID "$_peerid"
|
||||
json_add_string appName "ANDROID-$packageName"
|
||||
json_add_string sdkVersion "${sdkVersion##*.}"
|
||||
json_add_string devicesign "$_devicesign"
|
||||
json_add_string netWorkType 'WIFI'
|
||||
json_add_string providerName 'OTHER'
|
||||
json_add_string deviceModel 'MI'
|
||||
json_add_string deviceName 'Xiaomi Mi'
|
||||
json_add_string OSVersion "7.1.1"
|
||||
@ -167,6 +167,7 @@ swjsq_login() {
|
||||
json_add_string passWord "$password"
|
||||
json_add_string verifyKey
|
||||
json_add_string verifyCode
|
||||
json_add_string isMd5Pwd '0'
|
||||
else
|
||||
access_url='https://mobile-login.xunlei.com/loginkey'
|
||||
json_add_string userName "$_userid"
|
||||
@ -240,7 +241,8 @@ swjsq_logout() {
|
||||
|
||||
# 获取用户信息
|
||||
swjsq_getuserinfo() {
|
||||
[ $1 -eq 1 ] && local _vasid=14 || local _vasid=33
|
||||
local _vasid vasid_down=14 vasid_up=33 outmsg
|
||||
[ $down_acc -ne 0 ] && _vasid="${_vasid}${vasid_down},"; [ $up_acc -ne 0 ] && _vasid="${_vasid}${vasid_up},"
|
||||
swjsq_json
|
||||
json_add_string userID "$_userid"
|
||||
json_add_string sessionID "$_sessionid"
|
||||
@ -248,17 +250,16 @@ swjsq_getuserinfo() {
|
||||
json_close_object
|
||||
|
||||
local ret=$($_http_cmd --user-agent="$agent_xl" 'https://mobile-login.xunlei.com/getuserinfo' --post-data="$(json_dump)")
|
||||
_log "getuserinfo $1 is $ret" $(( 1 | 4 ))
|
||||
_log "getuserinfo is $ret" $(( 1 | 4 ))
|
||||
json_cleanup; json_load "$ret" >/dev/null 2>&1
|
||||
json_get_var lasterr "errorCode"
|
||||
|
||||
[ $1 -eq 1 ] && local outmsg="下行提速会员" || local outmsg="上行提速会员"
|
||||
case ${lasterr:=-1} in
|
||||
0)
|
||||
local index vasid isVip isYear expireDate can_upgrade
|
||||
local index=1 can_down=0 vasid isVip isYear expireDate
|
||||
json_select "vipList" >/dev/null 2>&1
|
||||
while : ; do
|
||||
json_select ${index:=1} >/dev/null 2>&1
|
||||
json_select $index >/dev/null 2>&1
|
||||
[ $? -ne 0 ] && break
|
||||
json_get_var vasid "vasid"
|
||||
json_get_var isVip "isVip"
|
||||
@ -266,28 +267,59 @@ swjsq_getuserinfo() {
|
||||
json_get_var expireDate "expireDate"
|
||||
json_select ".." >/dev/null 2>&1
|
||||
let index++
|
||||
([ $1 -eq 1 -a ${vasid:-0} -eq 2 ] || [ ${vasid:-0} -eq $_vasid ]) && \
|
||||
[ ${isVip:-0} -eq 1 -o ${isYear:-0} -eq 1 ] && { can_upgrade=1; break; }
|
||||
done
|
||||
if [ ${can_upgrade:-0} -eq 1 ]; then
|
||||
outmsg="获取${outmsg}信息成功。会员到期时间:${expireDate:0:4}-${expireDate:4:2}-${expireDate:6:2}"; \
|
||||
_log "$outmsg" $(( 1 | $1 * 8 ))
|
||||
else
|
||||
if [ ${#expireDate} -ge 8 ]; then
|
||||
outmsg="${outmsg}已到期。会员到期时间:${expireDate:0:4}-${expireDate:4:2}-${expireDate:6:2}"
|
||||
case ${vasid:-0} in
|
||||
2) [ $down_acc -ne 0 ] && outmsg="迅雷超级会员" || continue;;
|
||||
$vasid_down) outmsg="迅雷快鸟会员";;
|
||||
$vasid_up) outmsg="上行提速会员";;
|
||||
*) continue;;
|
||||
esac
|
||||
if [ ${isVip:-0} -eq 1 -o ${isYear:-0} -eq 1 ]; then
|
||||
outmsg="${outmsg}有效。会员到期时间:${expireDate:0:4}-${expireDate:4:2}-${expireDate:6:2}"
|
||||
[ $vasid -eq $vasid_up ] && _log "$outmsg" $(( 1 | 16 )) || _log "$outmsg" $(( 1 | 8 ))
|
||||
[ $vasid -ne $vasid_up ] && can_down=$(( $can_down | 1 ))
|
||||
else
|
||||
outmsg="${outmsg}无效"
|
||||
if [ ${#expireDate} -ge 8 ]; then
|
||||
outmsg="${outmsg}已到期。会员到期时间:${expireDate:0:4}-${expireDate:4:2}-${expireDate:6:2}"
|
||||
else
|
||||
outmsg="${outmsg}无效"
|
||||
fi
|
||||
[ $vasid -eq $vasid_up ] && _log "$outmsg" $(( 1 | 16 | 32 )) || _log "$outmsg" $(( 1 | 8 | 32 ))
|
||||
[ $vasid -eq $vasid_up ] && up_acc=0
|
||||
fi
|
||||
_log "$outmsg" $(( 1 | $1 * 8 | 32 ))
|
||||
[ $1 -eq 1 ] && down_acc=0 || up_acc=0
|
||||
fi
|
||||
done
|
||||
[ $can_down -eq 0 ] && down_acc=0
|
||||
;;
|
||||
-1)
|
||||
outmsg="获取${outmsg}信息失败。迅雷服务器未响应,请稍候"; _log "$outmsg";;
|
||||
outmsg="获取迅雷会员信息失败。迅雷服务器未响应,请稍候"; _log "$outmsg";;
|
||||
*)
|
||||
local errorDesc; json_get_var errorDesc "errorDesc"
|
||||
outmsg="获取${outmsg}信息失败。错误代码: ${lasterr}"; \
|
||||
[ -n "$errorDesc" ] && outmsg="${outmsg},原因: $errorDesc"; _log "$outmsg" $(( 1 | $1 * 8 | 32 ));;
|
||||
outmsg="获取迅雷会员信息失败。错误代码: ${lasterr}"; \
|
||||
[ -n "$errorDesc" ] && outmsg="${outmsg},原因: $errorDesc"; _log "$outmsg" $(( 1 | 8 | 32 ));;
|
||||
esac
|
||||
|
||||
[ $lasterr -eq 0 ] && return 0 || return 1
|
||||
}
|
||||
|
||||
# 登录时间更新
|
||||
swjsq_renewal() {
|
||||
xlnetacc_var 1
|
||||
local limitdate=$(date +%Y%m%d -d "1970.01.01-00:00:$(( $(date +%s) + 30 * 24 * 60 * 60 ))")
|
||||
|
||||
access_url='http://api.ext.swjsq.vip.xunlei.com'
|
||||
local ret=$($_http_cmd --user-agent="$user_agent" "$access_url/renewal?${http_args%&dial_account=*}&limitdate=$limitdate")
|
||||
_log "renewal is $ret" $(( 1 | 4 ))
|
||||
json_cleanup; json_load "$ret" >/dev/null 2>&1
|
||||
json_get_var lasterr "errno"
|
||||
|
||||
case ${lasterr:=-1} in
|
||||
0)
|
||||
local outmsg="更新登录时间成功。帐号登录展期:${limitdate:0:4}-${limitdate:4:2}-${limitdate:6:2}"; _log "$outmsg";;
|
||||
-1)
|
||||
local outmsg="更新登录时间失败。迅雷服务器未响应,请稍候"; _log "$outmsg";;
|
||||
*)
|
||||
local message; json_get_var message "richmessage"
|
||||
local outmsg="更新登录时间失败。错误代码: ${lasterr}"; \
|
||||
[ -n "$message" ] && outmsg="${outmsg},原因: $message"; _log "$outmsg" $(( 1 | 8 | 32 ));;
|
||||
esac
|
||||
|
||||
[ $lasterr -eq 0 ] && return 0 || return 1
|
||||
@ -354,8 +386,8 @@ isp_bandwidth() {
|
||||
json_select; json_select "max_bandwidth" >/dev/null 2>&1
|
||||
json_get_var max_bandwidth "$stream"
|
||||
json_select
|
||||
cur_bandwidth=$(expr ${cur_bandwidth:-0} / 1024)
|
||||
max_bandwidth=$(expr ${max_bandwidth:-0} / 1024)
|
||||
cur_bandwidth=$(( ${cur_bandwidth:-0} / 1024 ))
|
||||
max_bandwidth=$(( ${max_bandwidth:-0} / 1024 ))
|
||||
|
||||
if [ -n "$bind_dial_account" -a "$bind_dial_account" != "$dial_account" ]; then
|
||||
local outmsg="绑定宽带账号 $bind_dial_account 与当前宽带账号 $dial_account 不一致,请联系迅雷客服解绑(每月仅一次)"; \
|
||||
@ -510,7 +542,7 @@ xlnetacc_var() {
|
||||
let sequence_up++
|
||||
access_url=$_portal_up
|
||||
http_args="sequence=${sequence_up}&client_type=${client_type_up}-${clientVersion}&client_version=${client_type_up//-/}-${clientVersion}"
|
||||
user_agent=$agent_up
|
||||
user_agent=$agent_down
|
||||
link_cn="上行"
|
||||
fi
|
||||
http_args="${http_args}&peerid=${_peerid}&userid=${_userid}&sessionid=${_sessionid}&user_type=1&os=android-7.1.1"
|
||||
@ -581,10 +613,16 @@ xlnetacc_init() {
|
||||
readonly logging=$(uci_get_by_bool "general" "logging" 1)
|
||||
readonly verbose=$(uci_get_by_bool "general" "verbose" 0)
|
||||
network=$(uci_get_by_name "general" "network" "wan")
|
||||
keepalive=$(uci_get_by_name "general" "keepalive" 10)
|
||||
relogin=$(uci_get_by_name "general" "relogin" 0)
|
||||
readonly username=$(uci_get_by_name "general" "account")
|
||||
readonly password=$(uci_get_by_name "general" "password")
|
||||
local enabled=$(uci_get_by_bool "general" "enabled" 0)
|
||||
([ $enabled -eq 0 ] || [ $down_acc -eq 0 -a $up_acc -eq 0 ] || [ -z "$username" -o -z "$password" -o -z "$network" ]) && return 2
|
||||
([ -z "$keepalive" -o -n "${keepalive//[0-9]/}" ] || [ $keepalive -lt 5 -o $keepalive -gt 60 ]) && keepalive=10
|
||||
readonly keepalive=$(( $keepalive ))
|
||||
([ -z "$relogin" -o -n "${relogin//[0-9]/}" ] || [ $relogin -gt 48 ]) && relogin=0
|
||||
readonly relogin=$(( $relogin * 60 * 60 ))
|
||||
|
||||
[ $logging -eq 1 ] && [ ! -d /var/log ] && mkdir -p /var/log
|
||||
[ -f "$LOGFILE" ] && _log "------------------------------"
|
||||
@ -606,6 +644,7 @@ xlnetacc_init() {
|
||||
|
||||
clean_log
|
||||
[ -d /var/state ] || mkdir -p /var/state
|
||||
rm -f "$down_state_file" "$up_state_file"
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -636,9 +675,10 @@ xlnetacc_main() {
|
||||
done
|
||||
|
||||
# 获取用户信息
|
||||
xlnetacc_retry 'swjsq_getuserinfo' 1 1
|
||||
xlnetacc_retry 'swjsq_getuserinfo' 2 1
|
||||
xlnetacc_retry 'swjsq_getuserinfo'
|
||||
[ $down_acc -eq 0 -a $up_acc -eq 0 ] && break
|
||||
# 登录时间更新
|
||||
xlnetacc_retry 'swjsq_renewal'
|
||||
# 获取提速入口
|
||||
xlnetacc_retry 'swjsq_portal' 1 1
|
||||
xlnetacc_retry 'swjsq_portal' 2 1
|
||||
@ -651,11 +691,11 @@ xlnetacc_main() {
|
||||
xlnetacc_retry 'isp_upgrade' 2 1 10 || { sleep 3m; continue; }
|
||||
|
||||
# 心跳保持
|
||||
# local retry=1
|
||||
local timer=$(date +%s)
|
||||
while : ; do
|
||||
clean_log # 清理日志
|
||||
sleep 10m
|
||||
# [ $retry -ge 144 ] && break || let retry++ # 心跳最多保持24小时,144=24*60/10
|
||||
sleep ${keepalive}m
|
||||
[ $relogin -ne 0 -a $(( $(date +%s) - $timer )) -ge $relogin ] && break # 登录超时
|
||||
xlnetacc_retry 'isp_keepalive' 1 2 5 || break
|
||||
xlnetacc_retry 'isp_keepalive' 2 2 5 || break
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user