From d3d6c4abe7cce87f3f262b1f309978ff0fa06d97 Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 05:15:59 -0700 Subject: [PATCH 1/7] luci-app-familycloud: add CT Family Cloud Speeder package --- package/lean/luci-app-familycloud/Makefile | 18 +++++++ .../luasrc/controller/familycloud.lua | 23 +++++++++ .../luasrc/model/cbi/familycloud.lua | 22 +++++++++ .../luasrc/model/cbi/familycloudlog.lua | 14 ++++++ .../view/familycloud/familycloud_status.htm | 22 +++++++++ .../root/etc/config/familycloud | 6 +++ .../root/etc/init.d/familycloud | 25 ++++++++++ .../root/etc/ppp/ip-up.d/familycloud.sh | 3 ++ .../root/etc/uci-defaults/familycloud | 11 +++++ .../share/familycloud/CloudDisk/config.ini | 10 ++++ .../share/familycloud/CloudDisk/config.json | 1 + .../share/familycloud/CloudDisk/speedup.sh | 45 +++++++++++++++++ .../familycloud/CloudDisk/speedup_router.sh | 41 ++++++++++++++++ .../usr/share/familycloud/CloudDisk/utils.sh | 43 +++++++++++++++++ .../share/familycloud/FamilyCloud/config.ini | 14 ++++++ .../share/familycloud/FamilyCloud/config.json | 1 + .../share/familycloud/FamilyCloud/speedup.sh | 48 +++++++++++++++++++ .../familycloud/FamilyCloud/speedup_router.sh | 43 +++++++++++++++++ .../share/familycloud/FamilyCloud/utils.sh | 43 +++++++++++++++++ package/network/utils/curl/Config.in | 2 +- 20 files changed, 434 insertions(+), 1 deletion(-) create mode 100644 package/lean/luci-app-familycloud/Makefile create mode 100644 package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua create mode 100644 package/lean/luci-app-familycloud/luasrc/model/cbi/familycloud.lua create mode 100644 package/lean/luci-app-familycloud/luasrc/model/cbi/familycloudlog.lua create mode 100644 package/lean/luci-app-familycloud/luasrc/view/familycloud/familycloud_status.htm create mode 100644 package/lean/luci-app-familycloud/root/etc/config/familycloud create mode 100755 package/lean/luci-app-familycloud/root/etc/init.d/familycloud create mode 100755 package/lean/luci-app-familycloud/root/etc/ppp/ip-up.d/familycloud.sh create mode 100755 package/lean/luci-app-familycloud/root/etc/uci-defaults/familycloud create mode 100644 package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.ini create mode 120000 package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.json create mode 100755 package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup.sh create mode 100644 package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup_router.sh create mode 100755 package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/utils.sh create mode 100644 package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.ini create mode 120000 package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.json create mode 100755 package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup.sh create mode 100644 package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup_router.sh create mode 100755 package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/utils.sh diff --git a/package/lean/luci-app-familycloud/Makefile b/package/lean/luci-app-familycloud/Makefile new file mode 100644 index 0000000000..280d44b4cf --- /dev/null +++ b/package/lean/luci-app-familycloud/Makefile @@ -0,0 +1,18 @@ +# Copyright (C) 2016 Openwrt.org +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI support for FamilyCloudSpeeder +LUCI_DEPENDS:=+coreutils +coreutils-nohup +libreadline +libcurl +libopenssl +bash +curl +wget +openssl-util +ca-certificates +ca-bundle +LUCI_PKGARCH:=all +PKG_NAME:=luci-app-familycloud +PKG_VERSION:=1 +PKG_RELEASE:=3 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature + diff --git a/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua b/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua new file mode 100644 index 0000000000..5cf533b87f --- /dev/null +++ b/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua @@ -0,0 +1,23 @@ + +module("luci.controller.familycloud", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/ipsec") then + return + end + + entry({"admin", "services", "familycloud"},firstchild(), _("天翼家庭云/云盘提速"), 80).dependent = false + + entry({"admin", "services", "familycloud", "general"},cbi("familycloud"), _("Base Setting"), 1) + entry({"admin", "services", "familycloud", "log"},form("familycloudlog"), _("Log"), 2) + + entry({"admin","services","familycloud","status"},call("act_status")).leaf=true +end + +function act_status() + local e={} + e.running=luci.sys.call("ps | grep speedup.sh | grep -v grep >/dev/null")==0 + luci.http.prepare_content("application/json") + luci.http.write_json(e) +end + diff --git a/package/lean/luci-app-familycloud/luasrc/model/cbi/familycloud.lua b/package/lean/luci-app-familycloud/luasrc/model/cbi/familycloud.lua new file mode 100644 index 0000000000..d4a0b64281 --- /dev/null +++ b/package/lean/luci-app-familycloud/luasrc/model/cbi/familycloud.lua @@ -0,0 +1,22 @@ + +mp = Map("familycloud", translate("天翼家庭云/天翼云盘提速")) +mp.description = translate("天翼家庭云/天翼云盘提速 (最高可达500Mbps)") + +mp:section(SimpleSection).template = "familycloud/familycloud_status" + +s = mp:section(TypedSection, "familycloud") +s.anonymous=true +s.addremove=false + +enabled = s:option(Flag, "enabled", translate("启用提速")) +enabled.default = 0 +enabled.rmempty = false + +speedtype = s:option(ListValue, "speedertype", translate("天翼提速包类型")) +speedtype:value("CloudDisk", translate("天翼云盘提速")) +speedtype:value("FamilyCloud", translate("天翼家庭云提速")) + +account = s:option(Value, "token", translate("AccessToken")) +account.datatype = "string" + +return mp diff --git a/package/lean/luci-app-familycloud/luasrc/model/cbi/familycloudlog.lua b/package/lean/luci-app-familycloud/luasrc/model/cbi/familycloudlog.lua new file mode 100644 index 0000000000..9471b410d2 --- /dev/null +++ b/package/lean/luci-app-familycloud/luasrc/model/cbi/familycloudlog.lua @@ -0,0 +1,14 @@ +local fs = require "nixio.fs" +local conffile = "/tmp/familycloud.log" + +f = SimpleForm("logview") + +t = f:field(TextValue, "conf") +t.rmempty = true +t.rows = 15 +function t.cfgvalue() + return fs.readfile(conffile) or "" +end +t.readonly="readonly" + +return f \ No newline at end of file diff --git a/package/lean/luci-app-familycloud/luasrc/view/familycloud/familycloud_status.htm b/package/lean/luci-app-familycloud/luasrc/view/familycloud/familycloud_status.htm new file mode 100644 index 0000000000..002565430a --- /dev/null +++ b/package/lean/luci-app-familycloud/luasrc/view/familycloud/familycloud_status.htm @@ -0,0 +1,22 @@ + + +
+

+ <%:Collecting data...%> +

+
\ No newline at end of file diff --git a/package/lean/luci-app-familycloud/root/etc/config/familycloud b/package/lean/luci-app-familycloud/root/etc/config/familycloud new file mode 100644 index 0000000000..55b9172ee3 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/etc/config/familycloud @@ -0,0 +1,6 @@ + +config familycloud + option token 'f18a1952289c4659b3722ad54d3d92fb' + option speedertype 'CloudDisk' + option enabled '0' + diff --git a/package/lean/luci-app-familycloud/root/etc/init.d/familycloud b/package/lean/luci-app-familycloud/root/etc/init.d/familycloud new file mode 100755 index 0000000000..974a81a240 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/etc/init.d/familycloud @@ -0,0 +1,25 @@ +#!/bin/sh /etc/rc.common + +START=99 +STOP=10 + +TYPE=$(uci get familycloud.@familycloud[0].speedertype) +TOKEN=$(uci get familycloud.@familycloud[0].token) + + +start() +{ + stop + enable=$(uci get familycloud.@familycloud[0].enabled) + [ $enable -eq 0 ] && exit 0 + sed "s/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/$TOKEN/" /usr/share/familycloud/$TYPE/config.ini > /tmp/config.json + bash /usr/share/familycloud/$TYPE/speedup.sh > /tmp/familycloud.log & +} + +stop() +{ + kill -9 $(ps | grep speedup.sh | grep -v grep | awk '{print $1}') >/dev/null 2>&1 +} + + + diff --git a/package/lean/luci-app-familycloud/root/etc/ppp/ip-up.d/familycloud.sh b/package/lean/luci-app-familycloud/root/etc/ppp/ip-up.d/familycloud.sh new file mode 100755 index 0000000000..60074df64b --- /dev/null +++ b/package/lean/luci-app-familycloud/root/etc/ppp/ip-up.d/familycloud.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +sleep 60 && /etc/init.d/familycloud restart diff --git a/package/lean/luci-app-familycloud/root/etc/uci-defaults/familycloud b/package/lean/luci-app-familycloud/root/etc/uci-defaults/familycloud new file mode 100755 index 0000000000..1af3967325 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/etc/uci-defaults/familycloud @@ -0,0 +1,11 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@familycloud[-1] + add ucitrack familycloud + set ucitrack.@familycloud[-1].init=familycloud + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0 diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.ini b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.ini new file mode 100644 index 0000000000..31f0d788a8 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.ini @@ -0,0 +1,10 @@ +{ + "accessToken": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "setting": { + "method": "GET", + "rate": 600 + }, + "extra_header": { + "User-Agent": "Apache-HttpClient/UNAVAILABLE (java 1.4)" + } +} \ No newline at end of file diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.json b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.json new file mode 120000 index 0000000000..35e21f5b3e --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/config.json @@ -0,0 +1 @@ +/tmp/config.json \ No newline at end of file diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup.sh b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup.sh new file mode 100755 index 0000000000..30006574cf --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash + +base_dir=`dirname $0` +source "$base_dir/utils.sh" +config="$base_dir/config.json" + + +accessToken=`getSingleJsonValue "$config" "accessToken"` +method=`getSingleJsonValue "$config" "method"` +rate=`getSingleJsonValue "$config" "rate"` +UA=`getSingleJsonValue "$config" "User-Agent"` +extra_header="User-Agent:$UA" + + +HOST="http://api.cloud.189.cn" +LOGIN_URL="/loginByOpen189AccessToken.action" +ACCESS_URL="/speed/startSpeedV2.action" +count=0 +echo "*******************************************" +while : +do + count=$((count+1)) + echo "Sending heart_beat package <$count>" + split="~" + headers_string="$extra_header" + headers=`formatHeaderString "$split" "$headers_string"` + result=`get "$HOST$LOGIN_URL?accessToken=$accessToken" "$headers"` + session_key=`echo "$result" | grep -Eo "sessionKey>.*//'` + session_secret=`echo "$result" | grep -Eo "sessionSecret>.*//' | sed 's/<\/sessionSecret//'` + date=`env LANG=C.UTF-8 date -u '+%a, %d %b %Y %T GMT'` + data="SessionKey=$session_key&Operate=$method&RequestURI=$ACCESS_URL&Date=$date" + key="$session_secret" + signature=`hashHmac "sha1" "$data" "$key"` + headers_string="SessionKey:$session_key"${split}"Signature:$signature"${split}"Date:$date"${split}"$extra_header" + headers=`formatHeaderString "$split" "$headers_string"` + qosClientSn="$session_key" + result=`get "$HOST$ACCESS_URL?qosClientSn=$qosClientSn" "$headers"` + echo "heart_beat:" + echo "date:<$date>" + echo -e "response:\n$result" + [[ "`echo ${result} | grep dialAcc`" != "" ]] && hint="succeeded" || hint="failed" + echo "Sending heart_beat package <$count> $hint" + echo "*******************************************" + sleep ${rate} +done diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup_router.sh b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup_router.sh new file mode 100644 index 0000000000..769b5a63b5 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/speedup_router.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +base_dir=`dirname $0` +source "$base_dir/utils.sh" +config="$base_dir/config.json" + +echoToLogreader() { + logger -t CloudDisk "${1}" +} + +accessToken=`getSingleJsonValue "$config" "accessToken"` +method=`getSingleJsonValue "$config" "method"` +UA=`getSingleJsonValue "$config" "User-Agent"` +extra_header="User-Agent:$UA" + + +HOST="http://api.cloud.189.cn" +LOGIN_URL="/loginByOpen189AccessToken.action" +ACCESS_URL="/speed/startSpeedV2.action" +echoToLogreader "*******************************************" +echoToLogreader "Sending Heartbeat Package ..." +split="~" +headers_string="$extra_header" +headers=`formatHeaderString "$split" "$headers_string"` +result=`get "$HOST$LOGIN_URL?accessToken=$accessToken" "$headers"` +session_key=`echo "$result" | grep -Eo "sessionKey>.*//'` +session_secret=`echo "$result" | grep -Eo "sessionSecret>.*//' | sed 's/<\/sessionSecret//'` +date=`env LANG=C.UTF-8 date -u '+%a, %d %b %Y %T GMT'` +data="SessionKey=$session_key&Operate=$method&RequestURI=$ACCESS_URL&Date=$date" +key="$session_secret" +signature=`hashHmac "sha1" "$data" "$key"` +headers_string="SessionKey:$session_key"${split}"Signature:$signature"${split}"Date:$date"${split}"$extra_header" +headers=`formatHeaderString "$split" "$headers_string"` +qosClientSn=`cat /proc/sys/kernel/random/uuid` +result=`get "$HOST$ACCESS_URL?qosClientSn=$qosClientSn" "$headers"` +echoToLogreader "Heartbeat Signature: $signature" +echoToLogreader "Date: $date" +echoToLogreader "Response: $result" +[[ "`echo ${result} | grep dialAcc`" != "" ]] && hint="succeeded" || hint="failed" +echoToLogreader "Heartbeating $hint." +echoToLogreader "*******************************************" diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/utils.sh b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/utils.sh new file mode 100755 index 0000000000..d54e1e3a94 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/CloudDisk/utils.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +CONNECTION_TIME="15" +TRANSMISSION_TIME="15" + +formatHeaderString() { + OLD_IFS=$IFS + IFS="$1" + STR="$2" + ARRAY=(${STR}) + for i in "${!ARRAY[@]}" + do + HEADERS="$HEADERS -H '${ARRAY[$i]}'" + done + echo ${HEADERS} | sed 's/^ //' + IFS=${OLD_IFS} +} + +get() { + HEADER="$1" + URL="$2" + eval curl -s --connect-timeout "${CONNECTION_TIME}" -m "${TRANSMISSION_TIME}" "${HEADER}" "${URL}" +} + +post() { + HEADER="$1" + URL="$2" + PAYLOAD="$3" + eval curl -s --connect-timeout "${CONNECTION_TIME}" -m "${TRANSMISSION_TIME}" -X POST "${URL}" "${HEADER}" -w %{http_code} -d "'$PAYLOAD'" +} + +getSingleJsonValue() { + FILE="$1" + KEY="$2" + cat ${FILE} | grep "$KEY" | sed 's/,$//' | awk -F "[:]" '{ print $2 }' | sed 's/ //g' | sed 's/"//g' +} + +hashHmac() { + digest="$1" + data="$2" + key="$3" + echo -n "$data" | openssl dgst "-$digest" -hmac "$key" | sed -e 's/^.* //' | tr 'a-z' 'A-Z' +} diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.ini b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.ini new file mode 100644 index 0000000000..f83cab7d17 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.ini @@ -0,0 +1,14 @@ +{ + "accessToken": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", + "AppKey": "600100885", + "setting": { + "method": "POST", + "rate": 600 +}, + "send_data": { + "prodCode": "76" + }, + "extra_header": { + "User-Agent": "Apache-HttpClient/UNAVAILABLE (java 1.4)" + } +} \ No newline at end of file diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.json b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.json new file mode 120000 index 0000000000..35e21f5b3e --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/config.json @@ -0,0 +1 @@ +/tmp/config.json \ No newline at end of file diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup.sh b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup.sh new file mode 100755 index 0000000000..d7ade60cf6 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +base_dir=`dirname $0` +source "$base_dir/utils.sh" +config="$base_dir/config.json" + + +accessToken=`getSingleJsonValue "$config" "accessToken"` +AppKey=`getSingleJsonValue "$config" "AppKey"` +method=`getSingleJsonValue "$config" "method"` +rate=`getSingleJsonValue "$config" "rate"` +prodCode=`getSingleJsonValue "$config" "prodCode"` +UA=`getSingleJsonValue "$config" "User-Agent"` +extra_header="User-Agent:$UA" + + +HOST="http://api.cloud.189.cn" +LOGIN_URL="/login4MergedClient.action" +ACCESS_URL="/family/qos/startQos.action" +count=0 +echo "*******************************************" +while : +do + count=$((count+1)) + echo "Sending heart_beat package <$count>" + split="~" + headers_string="AppKey:$AppKey"${split}"$extra_header" + headers=`formatHeaderString "$split" "$headers_string"` + result=`post "$headers" "$HOST$LOGIN_URL?accessToken=$accessToken"` + session_key=`echo "$result" | grep -Eo "familySessionKey>.+//' | sed 's/<\/familySessionKey//'` + session_secret=`echo "$result" | grep -Eo "familySessionSecret>.+//' | sed 's/<\/familySessionSecret//'` + date=`env LANG=C.UTF-8 date -u '+%a, %d %b %Y %T GMT'` + data="SessionKey=$session_key&Operate=$method&RequestURI=$ACCESS_URL&Date=$date" + key="$session_secret" + signature=`hashHmac "sha1" "$data" "$key"` + headers_string="SessionKey:$session_key"${split}"Signature:$signature"${split}"Date:$date"${split}"$extra_header" + headers=`formatHeaderString "$split" "$headers_string"` + send_data="prodCode=$prodCode" + result=`post "$headers" "$HOST$ACCESS_URL" "$send_data"` + echo "heart_beat:" + echo "date:<$date>" + echo "status_code:${result: -3}" + echo -e "response:\n`echo ${result} | sed "s^[0-9]\{3\}$^^"`" + [[ "`echo ${result} | grep dialAcc`" != "" ]] && hint="succeeded" || hint="failed" + echo "Sending heart_beat package <$count> $hint" + echo "*******************************************" + sleep ${rate} +done \ No newline at end of file diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup_router.sh b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup_router.sh new file mode 100644 index 0000000000..721023b0cc --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/speedup_router.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +base_dir=`dirname $0` +source "$base_dir/utils.sh" +config="$base_dir/config.json" + +echoToLogreader() { + logger -t FamilyCloud "${1}" +} + +accessToken=`getSingleJsonValue "$config" "accessToken"` +AppKey=`getSingleJsonValue "$config" "AppKey"` +method=`getSingleJsonValue "$config" "method"` +prodCode=`getSingleJsonValue "$config" "prodCode"` +UA=`getSingleJsonValue "$config" "User-Agent"` +extra_header="User-Agent:$UA" + + +HOST="http://api.cloud.189.cn" +LOGIN_URL="/login4MergedClient.action" +ACCESS_URL="/family/qos/startQos.action" +echoToLogreader "*******************************************" +echoToLogreader "Sending Heartbeat Package ..." +split="~" +headers_string="AppKey:$AppKey"${split}"$extra_header" +headers=`formatHeaderString "$split" "$headers_string"` +result=`post "$headers" "$HOST$LOGIN_URL?accessToken=$accessToken"` +session_key=`echo "$result" | grep -Eo "familySessionKey>.+//' | sed 's/<\/familySessionKey//'` +session_secret=`echo "$result" | grep -Eo "familySessionSecret>.+//' | sed 's/<\/familySessionSecret//'` +date=`env LANG=C.UTF-8 date -u '+%a, %d %b %Y %T GMT'` +data="SessionKey=$session_key&Operate=$method&RequestURI=$ACCESS_URL&Date=$date" +key="$session_secret" +signature=`hashHmac "sha1" "$data" "$key"` +headers_string="SessionKey:$session_key"${split}"Signature:$signature"${split}"Date:$date"${split}"$extra_header" +headers=`formatHeaderString "$split" "$headers_string"` +send_data="prodCode=$prodCode" +result=`post "$headers" "$HOST$ACCESS_URL" "$send_data"` +echoToLogreader "Heartbeat Signature: $signature" +echoToLogreader "Date: $date" +echoToLogreader "Response: ${result}" +[[ "`echo ${result} | grep dialAcc`" != "" ]] && hint="succeeded" || hint="failed" +echoToLogreader "Heartbeating $hint." +echoToLogreader "*******************************************" diff --git a/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/utils.sh b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/utils.sh new file mode 100755 index 0000000000..d54e1e3a94 --- /dev/null +++ b/package/lean/luci-app-familycloud/root/usr/share/familycloud/FamilyCloud/utils.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +CONNECTION_TIME="15" +TRANSMISSION_TIME="15" + +formatHeaderString() { + OLD_IFS=$IFS + IFS="$1" + STR="$2" + ARRAY=(${STR}) + for i in "${!ARRAY[@]}" + do + HEADERS="$HEADERS -H '${ARRAY[$i]}'" + done + echo ${HEADERS} | sed 's/^ //' + IFS=${OLD_IFS} +} + +get() { + HEADER="$1" + URL="$2" + eval curl -s --connect-timeout "${CONNECTION_TIME}" -m "${TRANSMISSION_TIME}" "${HEADER}" "${URL}" +} + +post() { + HEADER="$1" + URL="$2" + PAYLOAD="$3" + eval curl -s --connect-timeout "${CONNECTION_TIME}" -m "${TRANSMISSION_TIME}" -X POST "${URL}" "${HEADER}" -w %{http_code} -d "'$PAYLOAD'" +} + +getSingleJsonValue() { + FILE="$1" + KEY="$2" + cat ${FILE} | grep "$KEY" | sed 's/,$//' | awk -F "[:]" '{ print $2 }' | sed 's/ //g' | sed 's/"//g' +} + +hashHmac() { + digest="$1" + data="$2" + key="$3" + echo -n "$data" | openssl dgst "-$digest" -hmac "$key" | sed -e 's/^.* //' | tr 'a-z' 'A-Z' +} diff --git a/package/network/utils/curl/Config.in b/package/network/utils/curl/Config.in index 9afeb00bc7..76ab7edb7a 100644 --- a/package/network/utils/curl/Config.in +++ b/package/network/utils/curl/Config.in @@ -4,7 +4,7 @@ comment "SSL support" choice prompt "Selected SSL library" - default LIBCURL_MBEDTLS + default LIBCURL_OPENSSL config LIBCURL_MBEDTLS bool "mbed TLS" From c3a80af0fbe674e58ff4c9a8b267137ec5491b40 Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 06:26:12 -0700 Subject: [PATCH 2/7] luci-app-familycloud: fix menu display without IPSEC --- package/lean/luci-app-familycloud/Makefile | 2 +- .../lean/luci-app-familycloud/luasrc/controller/familycloud.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/lean/luci-app-familycloud/Makefile b/package/lean/luci-app-familycloud/Makefile index 280d44b4cf..522838a9fd 100644 --- a/package/lean/luci-app-familycloud/Makefile +++ b/package/lean/luci-app-familycloud/Makefile @@ -10,7 +10,7 @@ LUCI_DEPENDS:=+coreutils +coreutils-nohup +libreadline +libcurl +libopenssl +bas LUCI_PKGARCH:=all PKG_NAME:=luci-app-familycloud PKG_VERSION:=1 -PKG_RELEASE:=3 +PKG_RELEASE:=5 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua b/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua index 5cf533b87f..92cf489c49 100644 --- a/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua +++ b/package/lean/luci-app-familycloud/luasrc/controller/familycloud.lua @@ -2,7 +2,7 @@ module("luci.controller.familycloud", package.seeall) function index() - if not nixio.fs.access("/etc/config/ipsec") then + if not nixio.fs.access("/etc/config/familycloud") then return end From 8bef369dff41f73a511a0790c87198ba474bfaed Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 07:00:38 -0700 Subject: [PATCH 3/7] luci-app-accesscontrol: add strict mode support --- package/lean/luci-app-accesscontrol/Makefile | 2 +- .../luasrc/controller/mia.lua | 8 ++++++- .../luasrc/model/cbi/mia.lua | 5 +++++ .../luasrc/view/mia/mia_status.htm | 22 +++++++++++++++++++ .../luci-app-accesscontrol/po/zh-cn/mia.po | 6 +++++ .../root/etc/init.d/mia | 3 +++ 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 package/lean/luci-app-accesscontrol/luasrc/view/mia/mia_status.htm diff --git a/package/lean/luci-app-accesscontrol/Makefile b/package/lean/luci-app-accesscontrol/Makefile index 7c07807ba5..1da4e9dfc9 100644 --- a/package/lean/luci-app-accesscontrol/Makefile +++ b/package/lean/luci-app-accesscontrol/Makefile @@ -11,7 +11,7 @@ LUCI_DEPENDS:= LUCI_PKGARCH:=all PKG_NAME:=luci-app-accesscontrol PKG_VERSION:=1 -PKG_RELEASE:=9 +PKG_RELEASE:=11 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/package/lean/luci-app-accesscontrol/luasrc/controller/mia.lua b/package/lean/luci-app-accesscontrol/luasrc/controller/mia.lua index e066252a12..38dc02a264 100644 --- a/package/lean/luci-app-accesscontrol/luasrc/controller/mia.lua +++ b/package/lean/luci-app-accesscontrol/luasrc/controller/mia.lua @@ -6,7 +6,13 @@ function index() end entry({"admin","services","mia"},cbi("mia"),_("Internet Access Schedule Control"),30).dependent=true + entry({"admin","services","mia","status"},call("act_status")).leaf=true end - +function act_status() + local e={} + e.running=luci.sys.call("iptables -L INPUT |grep MIA >/dev/null")==0 + luci.http.prepare_content("application/json") + luci.http.write_json(e) +end diff --git a/package/lean/luci-app-accesscontrol/luasrc/model/cbi/mia.lua b/package/lean/luci-app-accesscontrol/luasrc/model/cbi/mia.lua index 67e7fe4096..cf850ec0f5 100644 --- a/package/lean/luci-app-accesscontrol/luasrc/model/cbi/mia.lua +++ b/package/lean/luci-app-accesscontrol/luasrc/model/cbi/mia.lua @@ -1,5 +1,6 @@ a=Map("mia",translate("Internet Access Schedule Control"),translate("Access Schedule Control Settins")) +a:section(SimpleSection).template = "mia/mia_status" t=a:section(TypedSection,"basic") t.anonymous=true @@ -7,6 +8,10 @@ t.anonymous=true e=t:option(Flag,"enable",translate("Enabled")) e.rmempty=false +e=t:option(Flag,"strict",translate("Strict Mode")) +e.rmempty=false +e.description = translate("Strict Mode will degrade CPU performance, but it can achieve better results") + t=a:section(TypedSection,"macbind",translate("Client Rules")) t.template="cbi/tblsection" t.anonymous=true diff --git a/package/lean/luci-app-accesscontrol/luasrc/view/mia/mia_status.htm b/package/lean/luci-app-accesscontrol/luasrc/view/mia/mia_status.htm new file mode 100644 index 0000000000..c971ee3c30 --- /dev/null +++ b/package/lean/luci-app-accesscontrol/luasrc/view/mia/mia_status.htm @@ -0,0 +1,22 @@ + + +
+

+ <%:Collecting data...%> +

+
diff --git a/package/lean/luci-app-accesscontrol/po/zh-cn/mia.po b/package/lean/luci-app-accesscontrol/po/zh-cn/mia.po index 4c8f1d1717..cc976522b5 100644 --- a/package/lean/luci-app-accesscontrol/po/zh-cn/mia.po +++ b/package/lean/luci-app-accesscontrol/po/zh-cn/mia.po @@ -7,6 +7,12 @@ msgstr "设置客户端禁止访问互联网的时间" msgid "General switch" msgstr "开启/关闭" +msgid "Strict Mode" +msgstr "严格模式" + +msgid "Strict Mode will degrade CPU performance, but it can achieve better results" +msgstr "严格模式会损耗部分CPU资源,但可以按照时间规则立即拦截数据包,效果更好" + msgid "Client Rules" msgstr "客户端规则" diff --git a/package/lean/luci-app-accesscontrol/root/etc/init.d/mia b/package/lean/luci-app-accesscontrol/root/etc/init.d/mia index c252427504..7a84f51f94 100755 --- a/package/lean/luci-app-accesscontrol/root/etc/init.d/mia +++ b/package/lean/luci-app-accesscontrol/root/etc/init.d/mia @@ -73,9 +73,12 @@ start(){ iptables -I INPUT -p tcp --dport 53 -m comment --comment "Rule For Control" -j MIA iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control" iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control" + strict=$(uci get mia.@basic[0].strict) + [ $strict -eq 1 ] && iptables -t filter -I FORWARD -m comment --comment "Rule For Control" -j MIA add_rule } stop(){ + iptables -t filter -D FORWARD -m comment --comment "Rule For Control" -j MIA 2>/dev/null iptables -D INPUT -p udp --dport 53 -m comment --comment "Rule For Control" -j MIA 2>/dev/null iptables -D INPUT -p tcp --dport 53 -m comment --comment "Rule For Control" -j MIA 2>/dev/null iptables -t nat -D PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 -m comment --comment "Rule For Control" 2>/dev/null From 63bfcf90e16a1c2eea31011524e70f69be9450dd Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 07:23:07 -0700 Subject: [PATCH 4/7] kernel: bump to 4.9.178, 4.14.121 ,4.19.45 --- include/kernel-version.mk | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 37499cd13d..3d05cc8618 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) endif -LINUX_VERSION-4.9 = .177 -LINUX_VERSION-4.14 = .120 -LINUX_VERSION-4.19 = .44 +LINUX_VERSION-4.9 = .178 +LINUX_VERSION-4.14 = .121 +LINUX_VERSION-4.19 = .45 -LINUX_KERNEL_HASH-4.9.177 = c73b1e3ebcc35b653f7b673ca151fc67b814bdb27269799fa7cda251827887ee -LINUX_KERNEL_HASH-4.14.120 = ddb8e86cf65e6f53f782bc46f026823b6b3fc472aa1385b601f22dce2dbccb4c -LINUX_KERNEL_HASH-4.19.44 = 707642e993775618a5afa039b1058fa49f1c0faada46e8cdcb976241bca6b288 +LINUX_KERNEL_HASH-4.9.178 = 13ffd8b0725d9ce9f9e927f4748ef640b049d7c69f21b28ca0d976cc23072566 +LINUX_KERNEL_HASH-4.14.121 = 2eecd6825a0998c8b6dd686cd4cd76e9f0d195bbace89f0b82495cc11ddb2884 +LINUX_KERNEL_HASH-4.19.45 = eb31e62fbb30aaeedb892cecdd8ac9746d42cbbef2ef2356f9ca8e13514b9d2b remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) From 5e1b0154fbb744a2d2250b4283a38070b9f72a01 Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 07:25:47 -0700 Subject: [PATCH 5/7] procd: update to latest git HEAD --- package/system/procd/Makefile | 9 +++--- package/system/procd/files/hotplug.json | 4 +++ package/system/procd/files/procd.sh | 41 +++++++++++++++++++++++-- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile index 814ca748f1..437751aadf 100644 --- a/package/system/procd/Makefile +++ b/package/system/procd/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git -PKG_SOURCE_DATE:=2018-11-23 -PKG_SOURCE_VERSION:=d6673547adc3768ce674799fa35952351866c9d0 -PKG_MIRROR_HASH:=ee11e1f652e9268e21dfd7835d26993c682ed33f6ba474c283cb9ef04f71e626 +PKG_SOURCE_DATE:=2019-05-30 +PKG_SOURCE_VERSION:=ade00ca585a49c8478bf60eb24ce385676be37a4 +PKG_MIRROR_HASH:=1417727ae6fcda01017e1bec3ec66e3e78116f9343cfe0256e40af54c52f2acc CMAKE_INSTALL:=1 PKG_LICENSE:=GPL-2.0 @@ -45,6 +45,7 @@ define Package/procd CATEGORY:=Base system DEPENDS:=+ubusd +ubus +libjson-script +ubox +USE_GLIBC:librt +libubox +libubus TITLE:=OpenWrt system process manager + USERID:=:dialout=20 :audio=29 endef define Package/procd-ujail @@ -57,7 +58,7 @@ endef define Package/procd-seccomp SECTION:=base CATEGORY:=Base system - DEPENDS:=@arm||@armeb||@mips||@mipsel||@i386||@x86_64 @!TARGET_uml @KERNEL_SECCOMP +libubox +libblobmsg-json + DEPENDS:=@arm||@armeb||@mips||@mipsel||@i386||@powerpc||@x86_64 @!TARGET_uml @KERNEL_SECCOMP +libubox +libblobmsg-json TITLE:=OpenWrt process seccomp helper + utrace endef diff --git a/package/system/procd/files/hotplug.json b/package/system/procd/files/hotplug.json index 1c949bbea3..f676bac79e 100644 --- a/package/system/procd/files/hotplug.json +++ b/package/system/procd/files/hotplug.json @@ -20,6 +20,10 @@ [ "regex", "DEVNAME", "^snd" ], [ "makedev", "/dev/%DEVNAME%", "0660", "audio" ] ], + [ "if", + [ "regex", "DEVNAME", "^tty" ], + [ "makedev", "/dev/%DEVNAME%", "0660", "dialout" ] + ], [ "if", [ "has", "DEVNAME" ], [ "makedev", "/dev/%DEVNAME%", "0600" ] diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh index ab87eb2abb..a6a8fc12fc 100644 --- a/package/system/procd/files/procd.sh +++ b/package/system/procd/files/procd.sh @@ -18,14 +18,21 @@ # file: configuration files (array) # netdev: bound network device (detects ifindex changes) # limits: resource limits (passed to the process) -# user info: array with 1 values $username +# user: $username to run service as +# group: $groupname to run service as # pidfile: file name to write pid into +# stdout: boolean whether to redirect commands stdout to syslog (default: 0) +# stderr: boolean whether to redirect commands stderr to syslog (default: 0) +# facility: syslog facility used when logging to syslog (default: daemon) # # No space separation is done for arrays/tables - use one function argument per command line argument # # procd_close_instance(): # Complete the instance being prepared # +# procd_running(service, [instance]): +# Checks if service/instance is currently running +# # procd_kill(service, [instance]): # Kill a service instance (or all instances) # @@ -41,6 +48,7 @@ _PROCD_SERVICE= procd_lock() { local basescript=$(readlink "$initscript") local service_name="$(basename ${basescript:-$initscript})" + } _procd_call() { @@ -240,7 +248,7 @@ _procd_set_param() { reload_signal) json_add_int "$type" $(kill -l "$1") ;; - pidfile|user|seccomp|capabilities) + pidfile|user|group|seccomp|capabilities|facility) json_add_string "$type" "$1" ;; stdout|stderr|no_new_privs) @@ -389,6 +397,18 @@ _procd_add_instance() { _procd_close_instance } +procd_running() { + local service="$1" + local instance="${2:-instance1}" + local running + + json_init + json_add_string name "$service" + running=$(_procd_ubus_call list | jsonfilter -e "@.$service.instances.${instance}.running") + + [ "$running" = "true" ] +} + _procd_kill() { local service="$1" local instance="$2" @@ -477,6 +497,23 @@ uci_validate_section() return $_error } +uci_load_validate() { + local _package="$1" + local _type="$2" + local _name="$3" + local _function="$4" + local _option + local _result + shift; shift; shift; shift + for _option in "$@"; do + eval "local ${_option%%:*}" + done + uci_validate_section "$_package" "$_type" "$_name" "$@" + _result=$? + [ -n "$_function" ] || return $_result + eval "$_function \"\$_name\" \"\$_result\"" +} + _procd_wrapper \ procd_open_service \ procd_close_service \ From 4910870f52a9691c2f304160a6c8beac5d4a18ad Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 07:27:16 -0700 Subject: [PATCH 6/7] netifd: fix missing ip rules after network reload --- package/network/config/netifd/Makefile | 8 ++++---- package/network/config/netifd/files/etc/init.d/network | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/package/network/config/netifd/Makefile b/package/network/config/netifd/Makefile index 5457d88bc8..33df378539 100644 --- a/package/network/config/netifd/Makefile +++ b/package/network/config/netifd/Makefile @@ -1,13 +1,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=netifd -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git -PKG_SOURCE_DATE:=2019-04-15 -PKG_SOURCE_VERSION:=666c14f95d372d8ccee39049e65caa49368aec09 -PKG_MIRROR_HASH:=c075d163bae475022523229997564850e449963940e4fcf196215a1ae85fbd0f +PKG_SOURCE_DATE:=2019-05-28 +PKG_SOURCE_VERSION:=beb810dbccee098add0347d551eb5362e404fbdc +PKG_MIRROR_HASH:=f7c0057e7a7c4741d19027e7b67087e8ce8cb835ff5b34c594a24bf167c7873e PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=GPL-2.0 diff --git a/package/network/config/netifd/files/etc/init.d/network b/package/network/config/netifd/files/etc/init.d/network index 99d9f6582f..2321a309a5 100755 --- a/package/network/config/netifd/files/etc/init.d/network +++ b/package/network/config/netifd/files/etc/init.d/network @@ -115,7 +115,9 @@ validate_switch_section() 'name:string' \ 'enable:bool' \ 'enable_vlan:bool' \ - 'reset:bool' + 'reset:bool' \ + 'ar8xxx_mib_poll_interval:uinteger' \ + 'ar8xxx_mib_type:range(0,1)' } validate_switch_vlan() From c7c961710dd8f72e94bff40e743291a44b336766 Mon Sep 17 00:00:00 2001 From: LEAN-ESX Date: Fri, 31 May 2019 07:29:13 -0700 Subject: [PATCH 7/7] Version update to R9.6.1 --- package/lean/default-settings/Makefile | 2 +- package/lean/default-settings/files/zzz-default-settings | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/lean/default-settings/Makefile b/package/lean/default-settings/Makefile index 8a1d0ab665..4364b38e7c 100644 --- a/package/lean/default-settings/Makefile +++ b/package/lean/default-settings/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=default-settings -PKG_VERSION:=1.0 +PKG_VERSION:=1.1 PKG_RELEASE:=39 PKG_LICENSE:=GPLv3 PKG_LICENSE_FILES:=LICENSE diff --git a/package/lean/default-settings/files/zzz-default-settings b/package/lean/default-settings/files/zzz-default-settings index 7c95ca10ed..5bc80076c7 100755 --- a/package/lean/default-settings/files/zzz-default-settings +++ b/package/lean/default-settings/files/zzz-default-settings @@ -55,7 +55,7 @@ sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh wifi up sed -i '/DISTRIB_REVISION/d' /etc/openwrt_release -echo "DISTRIB_REVISION='R9.5.6'" >> /etc/openwrt_release +echo "DISTRIB_REVISION='R9.6.1'" >> /etc/openwrt_release sed -i '/DISTRIB_DESCRIPTION/d' /etc/openwrt_release echo "DISTRIB_DESCRIPTION='OpenWrt '" >> /etc/openwrt_release