Merge Mainline
This commit is contained in:
commit
a006bbea67
@ -6,14 +6,14 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.9 = .226
|
||||
LINUX_VERSION-4.14 = .183
|
||||
LINUX_VERSION-4.19 = .126
|
||||
LINUX_VERSION-4.9 = .227
|
||||
LINUX_VERSION-4.14 = .184
|
||||
LINUX_VERSION-4.19 = .128
|
||||
LINUX_VERSION-5.4 = .45
|
||||
|
||||
LINUX_KERNEL_HASH-4.9.226 = 460a8c168fe5c60ce5b30015a4e4bf348d93a89f8b949de1f90779567ef345ca
|
||||
LINUX_KERNEL_HASH-4.14.183 = 4265afef56819b04656107a5abecde205c5bc5fb04b2e81447955e7e45db8085
|
||||
LINUX_KERNEL_HASH-4.19.126 = 6e2a7e0adbe31e39cc8f1a3bd7bfa0d92ec0a4ca5360bb25829db831378f3f89
|
||||
LINUX_KERNEL_HASH-4.9.227 = 38c485b411a14e825f8a66a5c2e64f1480397325a5f692b4929f68d228070c5f
|
||||
LINUX_KERNEL_HASH-4.14.184 = 2ff51e278fb3dab918f5014f7966bdfd839b108bc6644d9f9b559d169801d940
|
||||
LINUX_KERNEL_HASH-4.19.128 = 29aba6849c972c0079ddee4aaf476a500ef52d937c7ba02ceec4c7cf4753613c
|
||||
LINUX_KERNEL_HASH-5.4.45 = 103f039f34a9009c42ea643b4f473bda6bb9607d5ad7f63b56b3e2351615fe2e
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
|
||||
@ -10,10 +10,9 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=rclone-ng
|
||||
PKG_VERSION:=0.2.4
|
||||
PKG_VERSION:=0.3.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
|
||||
PKG_LICENSE:=GPLv3
|
||||
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com>
|
||||
|
||||
@ -22,7 +21,7 @@ include $(INCLUDE_DIR)/package.mk
|
||||
PKG_SOURCE:=RcloneNg-v$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/ElonH/RcloneNg/releases/download/v$(PKG_VERSION)/
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_HASH:=3090a713253b17bfbb4d6a69b4b55b81d69e1768cf56d3abca8631e4a35f270b
|
||||
PKG_HASH:=441fdfa577bdda7f58f62f6e75174a4a48e44d7c1361f7123d9699d791c08b5a
|
||||
|
||||
define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
|
||||
@ -10,16 +10,16 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=rclone
|
||||
PKG_VERSION:=1.51.0
|
||||
PKG_VERSION:=1.52.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/rclone/rclone.git
|
||||
PKG_SOURCE_DATE:=2020-02-01
|
||||
PKG_SOURCE_VERSION:=43daecd89b21292b112051340317927b42ccbdd3
|
||||
PKG_SOURCE_DATE:=2020-06-10
|
||||
PKG_SOURCE_VERSION:=31dc78905ea8dfb22c43724527b19e097e05c26a
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_MIRROR_HASH:=aca159c81971a9490a6a6c323b67879dccba3860955b66787d91590f4ba8ba29
|
||||
PKG_MIRROR_HASH:=fa79f62babc2f42691c9ad83ef906e90061d4ca6adcc97150c2906605312db66
|
||||
|
||||
PKG_LICENSE:=GPLv3
|
||||
PKG_MAINTAINER:=ElonH <elonhhuang@gmail.com>
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
##
|
||||
# File: /patches/020-Notice-Access-Control-Allow-Origin-only-once.patch
|
||||
# Project: rclone
|
||||
# File Created: Sunday, 3rd May 2020 1:44:22 pm
|
||||
# Author: ElonH[EH](elonhhuang@gmail.com)
|
||||
# License: GNU General Public License v3.0 or later(http://www.gnu.org/licenses/gpl-3.0-standalone.html)
|
||||
# Copyright (C) 2020 [ElonH]
|
||||
##
|
||||
diff --git a/fs/rc/rcserver/rcserver.go b/fs/rc/rcserver/rcserver.go
|
||||
index 4a2b5c71e..f00994e93 100644
|
||||
--- a/fs/rc/rcserver/rcserver.go
|
||||
+++ b/fs/rc/rcserver/rcserver.go
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
+ "sync"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/rclone/rclone/cmd/serve/httplib"
|
||||
@@ -29,6 +30,8 @@ import (
|
||||
"github.com/skratchdot/open-golang/open"
|
||||
)
|
||||
|
||||
+var onlyOnce sync.Once
|
||||
+
|
||||
// Start the remote control server if configured
|
||||
//
|
||||
// If the server wasn't configured the *Server returned may be nil
|
||||
@@ -172,9 +175,11 @@ func (s *Server) handler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
allowOrigin := rcflags.Opt.AccessControlAllowOrigin
|
||||
if allowOrigin != "" {
|
||||
- if allowOrigin == "*" {
|
||||
- fs.Logf(nil, "Warning: Allow origin set to *. This can cause serious security problems.")
|
||||
- }
|
||||
+ onlyOnce.Do(func() {
|
||||
+ if allowOrigin == "*" {
|
||||
+ fs.Logf(nil, "Warning: Allow origin set to *. This can cause serious security problems.")
|
||||
+ }
|
||||
+ })
|
||||
w.Header().Add("Access-Control-Allow-Origin", allowOrigin)
|
||||
} else {
|
||||
w.Header().Add("Access-Control-Allow-Origin", s.URL())
|
||||
@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=UnblockNeteaseMusic-Go
|
||||
PKG_VERSION:=0.2.0
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/cnsilvan/UnblockNeteaseMusic.git
|
||||
@ -44,7 +44,7 @@ define Build/Prepare
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
|
||||
patch -p1 -d $(BUILD_DIR)/$(PKG_NAME) <./patches/01-fix-endpoint.patch
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
diff --git a/processor/processor.go b/processor/processor.go
|
||||
index a35f8df..a7e3015 100644
|
||||
--- a/processor/processor.go
|
||||
+++ b/processor/processor.go
|
||||
@@ -393,7 +393,7 @@
|
||||
//data["url"] = uri.Scheme + "://" + uri.Host + uri.EscapedPath()
|
||||
//data["url"] = uri.String()
|
||||
if *config.EndPoint {
|
||||
- data["url"] = "http://music.163.com/unblockmusic/" + uri.String()
|
||||
+ data["url"] = "https://music.163.com/unblockmusic/" + uri.String()
|
||||
} else {
|
||||
data["url"] = uri.String()
|
||||
}
|
||||
@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=UnblockNeteaseMusic
|
||||
PKG_VERSION:=0.25.3
|
||||
PKG_RELEASE:=4
|
||||
PKG_RELEASE:=5
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/nondanee/UnblockNeteaseMusic.git
|
||||
PKG_SOURCE_VERSION:=610ff1716aa3698cd2e9391ff808a35a05719586
|
||||
PKG_SOURCE_VERSION:=1193e29a2c8f72c738d2988d5cf5afbb2fee7463
|
||||
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
|
||||
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_VERSION).tar.gz
|
||||
|
||||
@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=default-settings
|
||||
PKG_VERSION:=1.1
|
||||
PKG_RELEASE:=59
|
||||
PKG_RELEASE:=60
|
||||
PKG_LICENSE:=GPLv3
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
|
||||
@ -5,19 +5,19 @@ msgid "Architecture"
|
||||
msgstr "架构"
|
||||
|
||||
msgid "CPU Temperature"
|
||||
msgstr "CPU温度"
|
||||
msgstr "CPU 温度"
|
||||
|
||||
msgid "CPU Info"
|
||||
msgstr "CPU信息"
|
||||
msgstr "CPU 信息"
|
||||
|
||||
msgid "CPU Model"
|
||||
msgstr "处理器型号"
|
||||
|
||||
msgid "CPU frequency"
|
||||
msgstr "CPU频率"
|
||||
msgstr "CPU 频率"
|
||||
|
||||
msgid "RAM frequency"
|
||||
msgstr "RAM频率"
|
||||
msgstr "RAM 频率"
|
||||
|
||||
msgid "Flash Size"
|
||||
msgstr "闪存大小"
|
||||
@ -44,7 +44,7 @@ msgid "ZRam Size"
|
||||
msgstr "ZRam 大小"
|
||||
|
||||
msgid "Size of the ZRam device in megabytes"
|
||||
msgstr "划分给ZRam 分区的内存大小(MB),推荐留空由系统自动管理"
|
||||
msgstr "划分给 ZRam 分区的内存大小(MB),推荐留空由系统自动管理"
|
||||
|
||||
msgid "Number of parallel threads used for compression"
|
||||
msgstr "用于压缩内存数据的CPU并发线程数"
|
||||
@ -59,15 +59,15 @@ msgid "Log"
|
||||
msgstr "日志"
|
||||
|
||||
msgid "Force 40MHz mode"
|
||||
msgstr "强制40MHz频宽"
|
||||
msgstr "强制 40MHz 频宽"
|
||||
|
||||
msgid ""
|
||||
"Always use 40MHz channels even if the secondary channel overlaps. Using this "
|
||||
"option does not comply with IEEE 802.11n-2009!"
|
||||
msgstr "强制启用40MHz频宽并忽略辅助信道重叠。此选项可能不兼容某些无线硬件导致无法启用!"
|
||||
msgstr "强制启用 40MHz 频宽并忽略辅助信道重叠。此选项可能不兼容某些无线硬件导致无法启用!"
|
||||
|
||||
msgid "Disassociate On Low Acknowledgement"
|
||||
msgstr "弱信号剔除"
|
||||
|
||||
msgid "Allow AP mode to disconnect STAs based on low ACK condition"
|
||||
msgstr "允许AP模式基于低ACK条件判断剔除弱信号的客户端"
|
||||
msgstr "允许 AP 模式基于低 ACK 条件判断剔除弱信号的客户端"
|
||||
|
||||
@ -105,6 +105,27 @@ e:depends("type","http")
|
||||
e = t:taboption("other",Value, "host_header_rewrite", translate("Host Header"), translate("The Host header will be rewritten to match the hostname portion of the forwarding address."))
|
||||
e.default = "dev.yourdomain.com"
|
||||
e:depends("enable_host_header_rewrite",1)
|
||||
e=t:taboption("other",Flag,"enable_https_plugin",translate("Use Plugin"))
|
||||
e.default="0"
|
||||
e:depends("type","https")
|
||||
e=t:taboption("other",ListValue,"https_plugin",translate("Choose Plugin"),translate("If plugin is defined, local_ip and local_port is useless, plugin will handle connections got from frps."))
|
||||
e:value("https2http",translate("https2http"))
|
||||
e:depends("enable_https_plugin",1)
|
||||
e=t:taboption("other",Value,"plugin_local_addr",translate("Plugin_Local_Addr"))
|
||||
e.default="127.0.0.1:80"
|
||||
e:depends("https_plugin","https2http")
|
||||
e=t:taboption("other",Value,"plugin_crt_path",translate("plugin_crt_path"))
|
||||
e.default="./server.crt"
|
||||
e:depends("https_plugin","https2http")
|
||||
e=t:taboption("other",Value,"plugin_key_path",translate("plugin_key_path"))
|
||||
e.default="./server.key"
|
||||
e:depends("https_plugin","https2http")
|
||||
e=t:taboption("other",Value,"plugin_host_header_rewrite",translate("plugin_host_header_rewrite"))
|
||||
e.default="127.0.0.1"
|
||||
e:depends("https_plugin","https2http")
|
||||
e=t:taboption("other",Value,"plugin_header_X_From_Where",translate("plugin_header_X-From-Where"))
|
||||
e.default="frp"
|
||||
e:depends("https_plugin","https2http")
|
||||
e = t:taboption("base",ListValue, "proxy_protocol_version", translate("Proxy-Protocol Version"), translate("Proxy Protocol to send user's real IP to local services."))
|
||||
e.default = "disable"
|
||||
e:value("disable",translate("Disable"))
|
||||
|
||||
@ -253,3 +253,18 @@ msgstr "STCP服务器别名"
|
||||
|
||||
msgid "<font color=\"red\">Please ensure the remark name is unique.</font>"
|
||||
msgstr "<font color=\"red\">确保备注名唯一</font>"
|
||||
|
||||
msgid "Plugin_Local_Addr"
|
||||
msgstr "插件本地地址(格式 IP:Port)"
|
||||
|
||||
msgid "plugin_crt_path"
|
||||
msgstr "插件证书路径"
|
||||
|
||||
msgid "plugin_key_path"
|
||||
msgstr "插件私钥路径"
|
||||
|
||||
msgid "plugin_host_header_rewrite"
|
||||
msgstr "插件 Host Header 重写"
|
||||
|
||||
msgid "plugin_header_X-From-Where"
|
||||
msgstr "插件X-From-Where请求头"
|
||||
|
||||
@ -32,10 +32,11 @@ conf_proxy_add() {
|
||||
local enable type domain_type custom_domains remote_port local_ip local_port enable_http_auth enable_host_header_rewrite host_header_rewrite
|
||||
local subdomain proxy_protocol_version use_encryption use_compression http_user http_pwd remark locations
|
||||
local enable_plugin plugin plugin_http_user plugin_http_passwd plugin_unix_path stcp_role stcp_secretkey stcp_servername
|
||||
|
||||
local enable_https_plugin https_plugin plugin_local_addr plugin_crt_path plugin_key_path plugin_host_header_rewrite plugin_header_X_From_Where
|
||||
|
||||
config_get_bool enable "$cfg" enable 1
|
||||
[ "$enable" -gt 0 ] || return 1
|
||||
|
||||
|
||||
config_get type "$cfg" type
|
||||
config_get custom_domains "$cfg" custom_domains
|
||||
config_get subdomain "$cfg" subdomain
|
||||
@ -55,10 +56,16 @@ conf_proxy_add() {
|
||||
config_get stcp_secretkey "$cfg" stcp_secretkey
|
||||
config_get stcp_servername "$cfg" stcp_servername
|
||||
config_get proxy_protocol_version "$cfg" proxy_protocol_version
|
||||
config_get https_plugin "$cfg" https_plugin
|
||||
config_get plugin_local_addr "$cfg" plugin_local_addr
|
||||
config_get plugin_crt_path "$cfg" plugin_crt_path
|
||||
config_get plugin_key_path "$cfg" plugin_key_path
|
||||
config_get plugin_host_header_rewrite "$cfg" plugin_host_header_rewrite
|
||||
config_get plugin_header_X_From_Where "$cfg" plugin_header_X_From_Where
|
||||
|
||||
|
||||
[ -n "$remark" ] && [ -n "$type" ] || return 1
|
||||
|
||||
|
||||
echo "" >>$tmpconf
|
||||
echo "[$remark]" >>$tmpconf
|
||||
echo "type=$type" >>$tmpconf
|
||||
@ -79,7 +86,7 @@ conf_proxy_add() {
|
||||
echo "plugin_http_passwd=$plugin_http_passwd" >>$tmpconf
|
||||
}
|
||||
[ -n "$plugin_unix_path" ] && echo "plugin_unix_path=$plugin_unix_path" >>$tmpconf
|
||||
|
||||
|
||||
[ -n "$stcp_role" ] && {
|
||||
if [ "$stcp_role" == "visitor" ]; then
|
||||
echo "role=$stcp_role" >>$tmpconf
|
||||
@ -92,13 +99,22 @@ conf_proxy_add() {
|
||||
fi
|
||||
[ -n "$stcp_secretkey" ] && echo "sk=$stcp_secretkey" >>$tmpconf || return 1
|
||||
}
|
||||
|
||||
|
||||
[ -n "$proxy_protocol_version" ] && {
|
||||
if [ "$proxy_protocol_version" != "disable" ]; then
|
||||
echo "proxy_protocol_version=$proxy_protocol_version" >>$tmpconf
|
||||
fi
|
||||
}
|
||||
|
||||
[ -n "$https_plugin" ] && echo "plugin=$https_plugin" >>$tmpconf
|
||||
[ -n "$plugin_local_addr" ] && echo "plugin_local_addr=$plugin_local_addr" >>$tmpconf
|
||||
[ -n "$plugin_crt_path" -a -n "$plugin_key_path" ] && {
|
||||
echo "plugin_crt_path=$plugin_crt_path" >>$tmpconf
|
||||
echo "plugin_key_path=$plugin_key_path" >>$tmpconf
|
||||
}
|
||||
[ -n "$plugin_host_header_rewrite" ] && echo "plugin_host_header_rewrite=$plugin_host_header_rewrite" >>$tmpconf
|
||||
[ -n "$plugin_header_X_From_Where" ] && echo "plugin_header_X_From_Where=$plugin_header_X_From_Where" >>$tmpconf
|
||||
|
||||
frp_write_bool use_encryption $cfg 1
|
||||
frp_write_bool use_compression $cfg 1
|
||||
|
||||
@ -121,15 +137,15 @@ frp_write_bool() {
|
||||
frp_add_cru(){
|
||||
time=$1
|
||||
if [ ! -f "/etc/crontabs/root" ] || [ -z "$(cat /etc/crontabs/root | grep frp)" ]; then
|
||||
sed -i '/frp/d' /etc/crontabs/root >/dev/null 2>&1
|
||||
echo "*/$time * * * * /etc/init.d/frp restart" >> /etc/crontabs/root
|
||||
sed -i '/frp/d' /etc/crontabs/root >/dev/null 2>&1
|
||||
echo "*/$time * * * * /etc/init.d/frp restart" >> /etc/crontabs/root
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
frp_del_cru(){
|
||||
if [ ! -f "/etc/crontabs/root" ] || [ -n "$(cat /etc/crontabs/root | grep frp)" ]; then
|
||||
sed -i '/frp/d' /etc/crontabs/root >/dev/null 2>&1
|
||||
sed -i '/frp/d' /etc/crontabs/root >/dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
@ -155,7 +171,7 @@ boot() {
|
||||
start() {
|
||||
|
||||
config_load "frp"
|
||||
local enabled server_addr server_port time privilege_token tcp_mux enable_cpool
|
||||
local enabled server_addr server_port time privilege_token tcp_mux enable_cpool
|
||||
local pool_count log_level log_max_days login_fail_exit http_proxy protocol
|
||||
|
||||
config_get_bool enabled common enabled 1
|
||||
@ -175,10 +191,10 @@ start() {
|
||||
|
||||
mkdir -p /var/etc/frp
|
||||
[ ! -f "$LOGFILE" ] && touch $LOGFILE
|
||||
|
||||
|
||||
[ ! -f "/usr/bin/frpc" ] && download_binary
|
||||
[ ! -f "/usr/bin/frpc" ] && logger -t Frp 'Download frpc failed, please retry.' && exit 0
|
||||
|
||||
|
||||
local tmpconf="/var/etc/frp/frpc.conf"
|
||||
|
||||
echo "[common]" >$tmpconf
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=LuCI support for KodExplorer
|
||||
LUCI_DEPENDS:=+nginx +zoneinfo-asia +php7 +php7-fpm +php7-mod-curl +php7-mod-gd +php7-mod-iconv +php7-mod-json +php7-mod-mbstring +php7-mod-opcache +php7-mod-session +php7-mod-zip
|
||||
LUCI_DEPENDS:=+nginx +zoneinfo-asia +php7 +php7-fpm +php7-mod-curl +php7-mod-gd +php7-mod-iconv +php7-mod-json +php7-mod-mbstring +php7-mod-opcache +php7-mod-session +php7-mod-zip +php7-mod-sqlite3 +php7-mod-pdo +php7-mod-pdo-sqlite +php7-mod-pdo-mysql
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_VERSION:=1.1
|
||||
PKG_RELEASE:=20200210
|
||||
PKG_VERSION:=13
|
||||
PKG_DATE:=20200612
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
|
||||
@ -8,15 +8,11 @@ function index()
|
||||
if not nixio.fs.access("/etc/config/kodexplorer") then return end
|
||||
|
||||
entry({"admin", "nas"}, firstchild(), "NAS", 44).dependent = false
|
||||
entry({"admin", "nas", "kodexplorer"}, cbi("kodexplorer/settings"),
|
||||
_("KodExplorer"), 3).dependent = true
|
||||
entry({"admin", "nas", "kodexplorer"}, cbi("kodexplorer/settings"), _("KodExplorer"), 3).dependent = true
|
||||
|
||||
entry({"admin", "nas", "kodexplorer", "check"}, call("action_check")).leaf =
|
||||
true
|
||||
entry({"admin", "nas", "kodexplorer", "download"}, call("action_download")).leaf =
|
||||
true
|
||||
entry({"admin", "nas", "kodexplorer", "status"}, call("act_status")).leaf =
|
||||
true
|
||||
entry({"admin", "nas", "kodexplorer", "check"}, call("action_check")).leaf = true
|
||||
entry({"admin", "nas", "kodexplorer", "download"}, call("action_download")).leaf = true
|
||||
entry({"admin", "nas", "kodexplorer", "status"}, call("act_status")).leaf = true
|
||||
end
|
||||
|
||||
local function http_write_json(content)
|
||||
@ -26,12 +22,8 @@ end
|
||||
|
||||
function act_status()
|
||||
local e = {}
|
||||
e.nginx_status = luci.sys.call(
|
||||
"ps -w | grep nginx | grep kodexplorer | grep -v grep > /dev/null") ==
|
||||
0
|
||||
e.php_status = luci.sys.call(
|
||||
"ps -w | grep php | grep kodexplorer | grep -v grep > /dev/null") ==
|
||||
0
|
||||
e.nginx_status = luci.sys.call("ps -w | grep nginx | grep kodexplorer | grep -v grep > /dev/null") == 0
|
||||
e.php_status = luci.sys.call("ps -w | grep php | grep kodexplorer | grep -v grep > /dev/null") == 0
|
||||
http_write_json(e)
|
||||
end
|
||||
|
||||
|
||||
@ -7,26 +7,12 @@ local i18n = require "luci.i18n"
|
||||
module("luci.model.cbi.kodexplorer.api", package.seeall)
|
||||
|
||||
local appname = "kodexplorer"
|
||||
local api_url =
|
||||
"https://api.github.com/repos/kalcaddle/KodExplorer/releases/latest"
|
||||
local download_url = "https://github.com/kalcaddle/KodExplorer/archive/"
|
||||
local api_url = "https://api.kodcloud.com/?app/version"
|
||||
|
||||
local wget = "/usr/bin/wget"
|
||||
local wget_args = {
|
||||
"--no-check-certificate", "--quiet", "--timeout=10", "--tries=2"
|
||||
}
|
||||
local wget_args = { "--no-check-certificate", "--quiet", "--timeout=10", "--tries=2" }
|
||||
local command_timeout = 300
|
||||
|
||||
function uci_get_type(type, config, default)
|
||||
value = uci:get(appname, "@" .. type .. "[0]", config) or sys.exec(
|
||||
"echo -n `uci -q get " .. appname .. ".@" .. type .. "[0]." ..
|
||||
config .. "`")
|
||||
if (value == nil or value == "") and (default and default ~= "") then
|
||||
value = default
|
||||
end
|
||||
return value
|
||||
end
|
||||
|
||||
local function _unpack(t, i)
|
||||
i = i or 1
|
||||
if t[i] ~= nil then return t[i], _unpack(t, i + 1) end
|
||||
@ -77,6 +63,15 @@ local function exec(cmd, args, writer, timeout)
|
||||
end
|
||||
end
|
||||
|
||||
function get_project_directory()
|
||||
return uci:get(appname, "@global[0]", "project_directory") or "/tmp/kodcloud"
|
||||
end
|
||||
|
||||
function get_version()
|
||||
local version = get_project_directory() .. "/config/version.php"
|
||||
return sys.exec(string.format("echo -n $(cat %s 2>/dev/null | grep \"'KOD_VERSION'\" | cut -d \"'\" -f 4)", version))
|
||||
end
|
||||
|
||||
local function compare_versions(ver1, comp, ver2)
|
||||
local table = table
|
||||
|
||||
@ -108,42 +103,16 @@ local function get_api_json(url)
|
||||
-- function(chunk) output[#output + 1] = chunk end)
|
||||
-- local json_content = util.trim(table.concat(output))
|
||||
|
||||
local json_content = luci.sys.exec("wget-ssl -q --no-check-certificate -O- " .. url)
|
||||
local json_content = sys.exec(wget .. " --no-check-certificate --timeout=10 -t 1 -O- " .. url)
|
||||
|
||||
if json_content == "" then return {} end
|
||||
|
||||
return jsonc.parse(json_content) or {}
|
||||
end
|
||||
|
||||
function get_project_directory()
|
||||
return uci_get_type("global", "project_directory", "/tmp/kodexplorer")
|
||||
end
|
||||
|
||||
function to_check()
|
||||
local json = get_api_json(api_url)
|
||||
if json.tag_name == nil then
|
||||
return {
|
||||
code = 1,
|
||||
error = i18n.translate("Get remote version info failed.")
|
||||
}
|
||||
end
|
||||
local remote_version = json.tag_name
|
||||
local html_url = json.html_url
|
||||
download_url = download_url .. json.tag_name .. ".tar.gz"
|
||||
if not download_url then
|
||||
return {
|
||||
code = 1,
|
||||
version = remote_version,
|
||||
html_url = html_url,
|
||||
error = i18n.translate(
|
||||
"New version found, but failed to get new version download url.")
|
||||
}
|
||||
end
|
||||
return {
|
||||
code = 0,
|
||||
version = remote_version,
|
||||
url = {html = html_url, download = download_url}
|
||||
}
|
||||
return json
|
||||
end
|
||||
|
||||
function to_download(url)
|
||||
@ -151,13 +120,11 @@ function to_download(url)
|
||||
return {code = 1, error = i18n.translate("Download url is required.")}
|
||||
end
|
||||
|
||||
sys.call("/bin/rm -f /tmp/kodexplorer_download.*")
|
||||
sys.call("/bin/rm -f /tmp/kodcloud_download.*")
|
||||
|
||||
local tmp_file = util.trim(util.exec(
|
||||
"mktemp -u -t kodexplorer_download.XXXXXX"))
|
||||
local tmp_file = util.trim(util.exec("mktemp -u -t kodcloud_download.XXXXXX"))
|
||||
|
||||
local result = exec(wget, {"-O", tmp_file, url, _unpack(wget_args)}, nil,
|
||||
command_timeout) == 0
|
||||
local result = exec(wget, {"-O", tmp_file, url, _unpack(wget_args)}, nil, command_timeout) == 0
|
||||
|
||||
if not result then
|
||||
exec("/bin/rm", {"-f", tmp_file})
|
||||
@ -175,13 +142,11 @@ function to_extract(file)
|
||||
return {code = 1, error = i18n.translate("File path required.")}
|
||||
end
|
||||
|
||||
sys.call("/bin/rm -rf /tmp/kodexplorer_extract.*")
|
||||
local tmp_dir = util.trim(util.exec(
|
||||
"mktemp -d -t kodexplorer_extract.XXXXXX"))
|
||||
sys.call("/bin/rm -rf /tmp/kodcloud_extract.*")
|
||||
local tmp_dir = util.trim(util.exec("mktemp -d -t kodcloud_extract.XXXXXX"))
|
||||
|
||||
local output = {}
|
||||
exec("/bin/tar", {"-C", tmp_dir, "-zxvf", file},
|
||||
function(chunk) output[#output + 1] = chunk end)
|
||||
exec("/usr/bin/unzip", {"-o", file, "-d", tmp_dir}, function(chunk) output[#output + 1] = chunk end)
|
||||
|
||||
local files = util.split(table.concat(output))
|
||||
|
||||
@ -192,14 +157,14 @@ end
|
||||
|
||||
function to_move(file)
|
||||
if not file or file == "" or not fs.access(file) then
|
||||
sys.call("/bin/rm -rf /tmp/kodexplorer_extract.*")
|
||||
sys.call("/bin/rm -rf /tmp/kodcloud_extract.*")
|
||||
return {code = 1, error = i18n.translate("Client file is required.")}
|
||||
end
|
||||
|
||||
local client_file = get_project_directory()
|
||||
sys.call("mkdir -p " .. client_file)
|
||||
sys.call("cp -R " .. file .. "/KodExplorer*/* " .. client_file)
|
||||
sys.call("/bin/rm -rf /tmp/kodexplorer_extract.*")
|
||||
sys.call("cp -R " .. file .. "/* " .. client_file)
|
||||
sys.call("/bin/rm -rf /tmp/kodcloud_extract.*")
|
||||
|
||||
return {code = 0}
|
||||
end
|
||||
|
||||
@ -1,161 +1,163 @@
|
||||
<%
|
||||
local dsp = require "luci.dispatcher"
|
||||
-%>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var msgInfo;
|
||||
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
var msgInfo;
|
||||
var tokenStr = '<%=token%>';
|
||||
var clickToDownloadText = '<%:Click to update%>';
|
||||
var inProgressText = '<%:Updating...%>';
|
||||
var downloadInProgressNotice = '<%:Updating, are you sure to close?%>';
|
||||
var downloadSuccessText = '<%:Update successful%>';
|
||||
var unexpectedErrorText = '<%:Unexpected error%>';
|
||||
var downloadingText = '<%:Downloading...%>';
|
||||
var decompressioningText = '<%:Unpacking...%>';
|
||||
var movingText = '<%:Moving...%>';
|
||||
var latestVersionText = '<%:The latest version:%>';
|
||||
|
||||
var tokenStr = '<%=token%>';
|
||||
var clickToDownloadText = '<%:Click to update%>';
|
||||
var inProgressText = '<%:Updating...%>';
|
||||
var downloadInProgressNotice = '<%:Updating, are you sure to close?%>';
|
||||
var downloadSuccessText = '<%:Update successful%>';
|
||||
var unexpectedErrorText = '<%:Unexpected error%>';
|
||||
var downloadingText = '<%:Downloading...%>';
|
||||
var decompressioningText = '<%:Unpacking...%>';
|
||||
var movingText = '<%:Moving...%>';
|
||||
var latestVersionText = '<%:The latest version:%>';
|
||||
function addPageNotice() {
|
||||
window.onbeforeunload = function (e) {
|
||||
e.returnValue = downloadInProgressNotice;
|
||||
return downloadInProgressNotice;
|
||||
};
|
||||
}
|
||||
|
||||
function addPageNotice() {
|
||||
window.onbeforeunload = function(e) {
|
||||
e.returnValue = downloadInProgressNotice;
|
||||
return downloadInProgressNotice;
|
||||
};
|
||||
}
|
||||
function removePageNotice() {
|
||||
window.onbeforeunload = undefined;
|
||||
}
|
||||
|
||||
function removePageNotice() {
|
||||
window.onbeforeunload = undefined;
|
||||
}
|
||||
function onUpdateSuccess(btn) {
|
||||
alert(downloadSuccessText);
|
||||
|
||||
function onUpdateSuccess(btn) {
|
||||
alert(downloadSuccessText);
|
||||
if (btn) {
|
||||
btn.value = downloadSuccessText;
|
||||
btn.placeholder = downloadSuccessText;
|
||||
btn.disabled = true;
|
||||
}
|
||||
|
||||
if (btn) {
|
||||
btn.value = downloadSuccessText;
|
||||
btn.placeholder = downloadSuccessText;
|
||||
btn.disabled = true;
|
||||
}
|
||||
window.setTimeout(function () {
|
||||
window.location.reload();
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
window.setTimeout(function () {
|
||||
window.location.reload();
|
||||
}, 1000);
|
||||
}
|
||||
function onRequestError(btn, errorMessage) {
|
||||
btn.disabled = false;
|
||||
btn.value = btn.placeholder;
|
||||
|
||||
function onRequestError(btn, errorMessage) {
|
||||
btn.disabled = false;
|
||||
btn.value = btn.placeholder;
|
||||
if (errorMessage) {
|
||||
alert(errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
if (errorMessage) {
|
||||
alert(errorMessage);
|
||||
}
|
||||
}
|
||||
function doAjaxGet(url, data, onResult) {
|
||||
new XHR().get(url, data, function (_, json) {
|
||||
var resultJson = json || {
|
||||
'code': 1,
|
||||
'error': unexpectedErrorText
|
||||
};
|
||||
|
||||
function doAjaxGet(url, data, onResult) {
|
||||
new XHR().get(url, data, function(_, json) {
|
||||
var resultJson = json || {
|
||||
'code': 1,
|
||||
'error': unexpectedErrorText
|
||||
};
|
||||
if (typeof onResult === 'function') {
|
||||
onResult(resultJson);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (typeof onResult === 'function') {
|
||||
onResult(resultJson);
|
||||
}
|
||||
})
|
||||
}
|
||||
function downloadClick(btn) {
|
||||
if (msgInfo === undefined) {
|
||||
checkUpdate(btn);
|
||||
} else {
|
||||
doDownload(btn);
|
||||
}
|
||||
}
|
||||
|
||||
function downloadClick(btn) {
|
||||
if (msgInfo === undefined) {
|
||||
checkUpdate(btn);
|
||||
} else {
|
||||
doDownload(btn);
|
||||
}
|
||||
}
|
||||
function checkUpdate(btn) {
|
||||
var text = btn.value;
|
||||
btn.disabled = true;
|
||||
btn.value = inProgressText;
|
||||
|
||||
function checkUpdate(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = inProgressText;
|
||||
addPageNotice();
|
||||
|
||||
addPageNotice();
|
||||
var ckeckDetailElm = document.getElementById(btn.id + '-detail');
|
||||
|
||||
var ckeckDetailElm = document.getElementById(btn.id + '-detail');
|
||||
doAjaxGet('<%=url([[admin]], [[nas]], [[kodexplorer]], [[check]])%>', {
|
||||
token: tokenStr
|
||||
}, function (json) {
|
||||
removePageNotice();
|
||||
if (json.code && json.data.server) {
|
||||
var server = json.data.server;
|
||||
eval('Info = json');
|
||||
btn.disabled = false;
|
||||
btn.value = clickToDownloadText;
|
||||
btn.placeholder = clickToDownloadText;
|
||||
if (ckeckDetailElm) {
|
||||
var urlNode = '';
|
||||
if (server.version) {
|
||||
urlNode = '<em style="color:red;">' + latestVersionText + server.version + '</em>';
|
||||
var html_url = 'https://kodcloud.com/download/';
|
||||
if (html_url) {
|
||||
urlNode = '<a href="' + html_url + '" target="_blank">' + urlNode + '</a>';
|
||||
}
|
||||
}
|
||||
ckeckDetailElm.innerHTML = urlNode;
|
||||
}
|
||||
msgInfo = server;
|
||||
} else {
|
||||
removePageNotice();
|
||||
btn.disabled = false;
|
||||
btn.value = text;
|
||||
alert(unexpectedErrorText);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
doAjaxGet('<%=dsp.build_url("admin/nas/kodexplorer/check")%>/', {
|
||||
token: tokenStr
|
||||
}, function (json) {
|
||||
removePageNotice();
|
||||
if (json.code) {
|
||||
eval('Info = undefined');
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
eval('Info = json');
|
||||
btn.disabled = false;
|
||||
btn.value = clickToDownloadText;
|
||||
btn.placeholder = clickToDownloadText;
|
||||
}
|
||||
function doDownload(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = downloadingText;
|
||||
|
||||
if (ckeckDetailElm) {
|
||||
var urlNode = '';
|
||||
if (json.version) {
|
||||
urlNode = '<em style="color:red;">' + latestVersionText + json.version + '</em>';
|
||||
if (json.url && json.url.html) {
|
||||
urlNode = '<a href="' + json.url.html + '" target="_blank">' + urlNode + '</a>';
|
||||
}
|
||||
}
|
||||
ckeckDetailElm.innerHTML = urlNode;
|
||||
}
|
||||
msgInfo = json;
|
||||
});
|
||||
}
|
||||
addPageNotice();
|
||||
|
||||
function doDownload(btn) {
|
||||
btn.disabled = true;
|
||||
btn.value = downloadingText;
|
||||
var UpdateUrl = '<%=url([[admin]], [[nas]], [[kodexplorer]], [[download]])%>';
|
||||
// Download file
|
||||
doAjaxGet(UpdateUrl, {
|
||||
token: tokenStr,
|
||||
url: msgInfo ? msgInfo.link : ''
|
||||
}, function (json) {
|
||||
if (json.code) {
|
||||
removePageNotice();
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
btn.value = decompressioningText;
|
||||
|
||||
addPageNotice();
|
||||
// Extract file
|
||||
doAjaxGet(UpdateUrl, {
|
||||
token: tokenStr,
|
||||
task: 'extract',
|
||||
file: json.file
|
||||
}, function (json) {
|
||||
if (json.code) {
|
||||
removePageNotice();
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
btn.value = movingText;
|
||||
|
||||
var UpdateUrl = '<%=dsp.build_url("admin/nas/kodexplorer/download")%>';
|
||||
// Download file
|
||||
doAjaxGet(UpdateUrl, {
|
||||
token: tokenStr,
|
||||
url: msgInfo ? msgInfo.url.download : ''
|
||||
}, function (json) {
|
||||
if (json.code) {
|
||||
removePageNotice();
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
btn.value = decompressioningText;
|
||||
|
||||
// Extract file
|
||||
doAjaxGet(UpdateUrl, {
|
||||
token: tokenStr,
|
||||
task: 'extract',
|
||||
file: json.file
|
||||
}, function (json) {
|
||||
if (json.code) {
|
||||
removePageNotice();
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
btn.value = movingText;
|
||||
|
||||
// Move file to target dir
|
||||
doAjaxGet(UpdateUrl, {
|
||||
token: tokenStr,
|
||||
task: 'move',
|
||||
file: json.file
|
||||
}, function (json) {
|
||||
removePageNotice();
|
||||
if (json.code) {
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
onUpdateSuccess(btn);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
//]]></script>
|
||||
// Move file to target dir
|
||||
doAjaxGet(UpdateUrl, {
|
||||
token: tokenStr,
|
||||
task: 'move',
|
||||
file: json.file
|
||||
}, function (json) {
|
||||
removePageNotice();
|
||||
if (json.code) {
|
||||
onRequestError(btn, json.error);
|
||||
} else {
|
||||
onUpdateSuccess(btn);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
<%+cbi/valueheader%>
|
||||
<% if self:cfgvalue(section) ~= false then %>
|
||||
|
||||
@ -22,10 +22,17 @@ local dsp = require "luci.dispatcher"
|
||||
XHR.poll(3,'<%=dsp.build_url("admin/nas/kodexplorer/status")%>', null,
|
||||
function(x, json) {
|
||||
if (x && x.status == 200) {
|
||||
if (nginx_status)
|
||||
nginx_status.innerHTML = json.nginx_status ? '<font color="green"><%:RUNNING%> ✓</font>' : '<font color="red"><%:NOT RUNNING%> X</font>';
|
||||
if (php_status)
|
||||
if (nginx_status) {
|
||||
nginx_status.innerHTML = json.nginx_status ? '<font color="green"><%:RUNNING%> ✓</font><input type="button" class="cbi-button cbi-input-apply" value="<%:Enter interface%>" onclick="openwebui()" />' : '<font color="red"><%:NOT RUNNING%> X</font>';
|
||||
}
|
||||
if (php_status) {
|
||||
php_status.innerHTML = json.php_status ? '<font color="green"><%:RUNNING%> ✓</font>' : '<font color="red"><%:NOT RUNNING%> X</font>';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
function openwebui(){
|
||||
var url = window.location.host+":<%=luci.sys.exec("uci -q get kodexplorer.@global[0].port"):gsub("^%s*(.-)%s*$", "%1")%>";
|
||||
window.open('http://'+url,'target','');
|
||||
}
|
||||
//]]></script>
|
||||
@ -1,16 +1,16 @@
|
||||
<%
|
||||
local kodexplorer_path = luci.sys.exec("echo -n `uci get kodexplorer.@global[0].project_directory`")
|
||||
local kodexplorer_version = luci.sys.exec("[ -f '" .. kodexplorer_path .. "/ChangeLog.md' ] && echo -n `cat " .. kodexplorer_path .. "/ChangeLog.md | head -1 | awk '{print $2}'`")
|
||||
local api = require "luci.model.cbi.kodexplorer.api"
|
||||
local app_version = api.get_version()
|
||||
-%>
|
||||
|
||||
<% if kodexplorer_version ~= nil and kodexplorer_version~="" then %>
|
||||
<% if app_version and app_version ~= "" then %>
|
||||
<div class="cbi-value">
|
||||
<label class="cbi-value-title">
|
||||
<%:Version%>
|
||||
</label>
|
||||
<div class="cbi-value-field">
|
||||
<div class="cbi-value-description">
|
||||
<span>【 <%=kodexplorer_version%> 】</span>
|
||||
<span>【 <%=app_version%> 】</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -8,5 +8,5 @@ uci -q batch <<-EOF >/dev/null
|
||||
EOF
|
||||
|
||||
/etc/init.d/php7-fpm disable && /etc/init.d/php7-fpm stop
|
||||
rm -f /tmp/luci-indexcache
|
||||
rm -rf /tmp/luci-*cache
|
||||
exit 0
|
||||
|
||||
@ -62,9 +62,7 @@ start_service() {
|
||||
fi
|
||||
}
|
||||
|
||||
reload_service()
|
||||
{
|
||||
stop
|
||||
start
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "nps"
|
||||
}
|
||||
|
||||
|
||||
18
package/lean/luci-app-ps3netsrv/Makefile
Normal file
18
package/lean/luci-app-ps3netsrv/Makefile
Normal file
@ -0,0 +1,18 @@
|
||||
#
|
||||
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
|
||||
#
|
||||
# This is free software, licensed under the Apache License, Version 2.0 .
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
LUCI_TITLE:=Luci for PS3NETSRV
|
||||
LUCI_DEPENDS:=+ps3netsrv
|
||||
LUCI_PKGARCH:=all
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
module("luci.controller.ps3netsrv",package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/ps3netsrv")then
|
||||
return
|
||||
end
|
||||
|
||||
entry({"admin", "nas"}, firstchild(), "NAS", 44).dependent = false
|
||||
|
||||
local page
|
||||
|
||||
entry({"admin", "nas","ps3netsrv"},cbi("ps3netsrv"),_("PS3 NET Server"),40).dependent=true
|
||||
entry({"admin", "nas","ps3netsrv","status"},call("act_status")).leaf=true
|
||||
end
|
||||
|
||||
function act_status()
|
||||
local e={}
|
||||
e.running=luci.sys.call("ps | grep ps3netsrv |grep -v grep >/dev/null") == 0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
@ -0,0 +1,24 @@
|
||||
-- Copyright 2020 Lean <coolsnowwolf@gmail.com>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
m = Map("ps3netsrv", translate("PS3 NET Server"), translate("PS3NETSRV is ISO/PKG server for Sony PlayStation 3 webMAN-MOD plugin"))
|
||||
|
||||
m:section(SimpleSection).template = "ps3netsrv/ps3netsrv_status"
|
||||
|
||||
s = m:section(TypedSection, "ps3netsrv")
|
||||
s.addremove = false
|
||||
s.anonymous = true
|
||||
|
||||
enable=s:option(Flag, "enabled", translate("Enabled"))
|
||||
enable.default = "0"
|
||||
enable.rmempty = false
|
||||
|
||||
db_path=s:option(Value, "dir", translate("Dir Path"))
|
||||
db_path.default = "/root"
|
||||
db_path.rmempty = false
|
||||
|
||||
port=s:option(Value, "port", translate("Port"))
|
||||
port.rmempty = false
|
||||
port.datatype = "port"
|
||||
|
||||
return m
|
||||
@ -0,0 +1,22 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[nas]], [[ps3netsrv]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('ps3netsrv_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
var links = '<em><b><font color=green>PS3NETSRV <%:RUNNING%></font></b></em>';
|
||||
tb.innerHTML = links;
|
||||
} else {
|
||||
tb.innerHTML = '<em><b><font color=red>PS3NETSRV <%:NOT RUNNING%></font></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<p id="ps3netsrv_status">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
</fieldset>
|
||||
26
package/lean/luci-app-ps3netsrv/po/zh-cn/ps3netsrv.po
Normal file
26
package/lean/luci-app-ps3netsrv/po/zh-cn/ps3netsrv.po
Normal file
@ -0,0 +1,26 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-06-23 20:16+0800\n"
|
||||
"PO-Revision-Date: 2015-06-23 20:17+0800\n"
|
||||
"Last-Translator: coolsnowwolf <coolsnowwolf@gmail.com>\n"
|
||||
"Language-Team: PandoraBox Team\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 1.8.1\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
msgid "PS3 NET Server"
|
||||
msgstr "PS3 NET 服务器"
|
||||
|
||||
msgid "PS3NETSRV is ISO/PKG server for Sony PlayStation 3 webMAN-MOD plugin"
|
||||
msgstr "PS3NETSRV 是一个 Sony PlayStation 3 自制系统 webMAN-MOD 插件的服务器端(用于加载蓝光/游戏ISO/PKG)"
|
||||
|
||||
msgid "Dir Path"
|
||||
msgstr "目录路径"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "端口"
|
||||
11
package/lean/luci-app-ps3netsrv/root/etc/uci-defaults/ps3netsrv
Executable file
11
package/lean/luci-app-ps3netsrv/root/etc/uci-defaults/ps3netsrv
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@ps3netsrv[-1]
|
||||
add ucitrack ps3netsrv
|
||||
set ucitrack.@ps3netsrv[-1].init=ps3netsrv
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
||||
@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-unblockmusic
|
||||
PKG_VERSION:=2.3.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=7
|
||||
|
||||
PKG_CONFIG_DEPENDS := \
|
||||
CONFIG_UnblockNeteaseMusic_Go \
|
||||
|
||||
@ -47,20 +47,20 @@ cloudserver.rmempty = true
|
||||
cloudserver:depends("apptype", "cloud")
|
||||
|
||||
flac = s:option(Flag, "flac_enabled", translate("启用无损音质"))
|
||||
flac.default = 1
|
||||
flac.default = "1"
|
||||
flac.rmempty = false
|
||||
flac.description = translate("目前仅支持酷我、QQ、咪咕")
|
||||
flac:depends("apptype", "nodejs")
|
||||
|
||||
force = s:option(Flag, "force_enabled", translate("强制替换为高音质歌曲"))
|
||||
force.default = 1
|
||||
force.default = "1"
|
||||
force.rmempty = false
|
||||
force.description = translate("如果歌曲音质在 320Kbps 以内,则尝试强制替换为高音质版本")
|
||||
force:depends("apptype", "nodejs")
|
||||
|
||||
o = s:option(Flag, "autoupdate")
|
||||
o.title = translate("自动检查更新主程序")
|
||||
o.default = 0
|
||||
o.default = "1"
|
||||
o.rmempty = false
|
||||
o.description = translate("每天自动检测并更新到最新版本")
|
||||
o:depends("apptype", "nodejs")
|
||||
|
||||
@ -176,14 +176,17 @@ start()
|
||||
fi
|
||||
if [ $FORCE -eq 1 ]; then
|
||||
sed -i '/item.code != 200/ { s/item.code != 200 || item.freeTrialInfo/item.br < 320000/g; }' /usr/share/UnblockNeteaseMusic/src/hook.js
|
||||
else
|
||||
sed -i '/item.br < 320000/ { s/item.br < 320000/item.code != 200 || item.freeTrialInfo/g; }' /usr/share/UnblockNeteaseMusic/src/hook.js
|
||||
fi
|
||||
node /usr/share/UnblockNeteaseMusic/app.js -e http://music.163.com -p 5200 $musictype >>/tmp/unblockmusic.log 2>&1 &
|
||||
node /usr/share/UnblockNeteaseMusic/app.js -p 5200 $musictype >>/tmp/unblockmusic.log 2>&1 &
|
||||
node /usr/share/UnblockNeteaseMusic/app.js -e https://music.163.com -p 5203:5201 $musictype >>/tmp/unblockmusic.log 2>&1 &
|
||||
add_cron
|
||||
echo "$(date -R) # UnblockNeteaseMusic Nodejs Version (http:5200, https:5201)" >>/tmp/unblockmusic.log
|
||||
elif [ "$APPTYPE" == "go" ]; then
|
||||
UnblockNeteaseMusic -p 5200 -sp 5201 -c /usr/share/UnblockNeteaseMusicGo/server.crt -k /usr/share/UnblockNeteaseMusicGo/server.key -m 0 -e >>/tmp/unblockmusic.log 2>&1 &
|
||||
UnblockNeteaseMusic -p 5200 -sp 5202 -m 0 -c /usr/share/UnblockNeteaseMusicGo/server.crt -k /usr/share/UnblockNeteaseMusicGo/server.key -m 0 >>/tmp/unblockmusic.log 2>&1 &
|
||||
echo "$(date -R) # UnblockNeteaseMusic Golang Version (http:5200, https:5201)" >>/tmp/unblockmusic.log
|
||||
UnblockNeteaseMusic -p 5203 -sp 5201 -m 0 -c /usr/share/UnblockNeteaseMusicGo/server.crt -k /usr/share/UnblockNeteaseMusicGo/server.key -m 0 -e >>/tmp/unblockmusic.log 2>&1 &
|
||||
else
|
||||
kill -9 $(busybox ps -w | grep 'sleep 60m' | grep -v grep | awk '{print $1}') >/dev/null 2>&1
|
||||
/usr/bin/UnblockNeteaseMusicCloud >/dev/null 2>&1 &
|
||||
|
||||
@ -49,7 +49,7 @@ function update_core(){
|
||||
exit 1
|
||||
else
|
||||
echo -e "${latest_ver}" > /usr/share/UnblockNeteaseMusic/local_ver
|
||||
cat /usr/share/UnblockNeteaseMusic/package-lock.json | grep version |awk -F ':' '{print $2}' | cut -c3-8 > /usr/share/UnblockNeteaseMusic/core_ver
|
||||
cat /usr/share/UnblockNeteaseMusic/package.json | grep version |awk -F ':' '{print $2}' | cut -c3-8 > /usr/share/UnblockNeteaseMusic/core_ver
|
||||
fi
|
||||
|
||||
echo -e "Succeeded in updating core." >/tmp/unblockmusic_update.log
|
||||
|
||||
@ -9,13 +9,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=v2ray
|
||||
PKG_VERSION:=4.23.4
|
||||
PKG_VERSION:=4.24.2
|
||||
PKG_RELEASE:=1
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/v2ray-core-$(PKG_VERSION)
|
||||
|
||||
PKG_SOURCE:=v2ray-core-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=726dd98d674bd73150158b1d4c8bc0d59dbb672ba10096ac61548d6278213c78
|
||||
PKG_HASH:=b58b4477020034b67a7649341fae65ea7bdc81851cad47ae7e4a591c0663e4c9
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
@ -19,24 +19,26 @@ ifeq ($(ARCH),i386)
|
||||
PKG_ARCH_VERYSYNC:=386
|
||||
endif
|
||||
ifeq ($(ARCH),arm)
|
||||
PKG_ARCH_VERYSYNC:=arm7
|
||||
endif
|
||||
ifeq ($(BOARD),bcm53xx)
|
||||
PKG_ARCH_VERYSYNC:=arm6
|
||||
endif
|
||||
ifeq ($(BOARD),kirkwood)
|
||||
PKG_ARCH_VERYSYNC:=arm
|
||||
endif
|
||||
ifeq ($(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))),)
|
||||
PKG_ARCH_VERYSYNC:=arm
|
||||
endif
|
||||
ifeq ($(ARCH),aarch64)
|
||||
PKG_ARCH_VERYSYNC:=arm64
|
||||
endif
|
||||
ifeq ($(ARCH),powerpc64)
|
||||
PKG_ARCH_VERYSYNC:=ppc64
|
||||
endif
|
||||
|
||||
LATEST_VERSION:=$(shell curl http://www.verysync.com/shell/latest)
|
||||
|
||||
PKG_NAME:=verysync
|
||||
PKG_VERSION:=v1.3.1
|
||||
PKG_RELEASE:=4
|
||||
|
||||
ifneq ($(LATEST_VERSION),)
|
||||
PKG_VERSION:=$(LATEST_VERSION)
|
||||
else
|
||||
PKG_VERSION:=v1.4.3
|
||||
endif
|
||||
|
||||
PKG_RELEASE:=1
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE:=$(PKG_NAME)-linux-$(PKG_ARCH_VERYSYNC)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://releases-cdn.verysync.com/releases/$(PKG_VERSION)/
|
||||
@ -48,7 +50,7 @@ define Package/$(PKG_NAME)
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=A efficient data transmission tool
|
||||
DEPENDS:=@(aarch64||arm||i386||mips||mipsel||x86_64)
|
||||
DEPENDS:=
|
||||
URL:=http://www.verysync.com
|
||||
endef
|
||||
|
||||
|
||||
@ -7,13 +7,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=trojan
|
||||
PKG_VERSION:=1.15.1
|
||||
PKG_VERSION:=1.16.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/trojan-gfw/trojan.git
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=0bad2988c60200c15786baf6b9ea42d66ba2109c
|
||||
PKG_SOURCE_VERSION:=8606b7110fe79f8ab02d60c897f87ffb0a9b23f0
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=soloscli
|
||||
PKG_VERSION:=1.04
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=solos-pci-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=@SF/openadsl
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci batch <<__EOF__
|
||||
|
||||
delete network.wan.solos0
|
||||
@ -8,7 +8,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=odhcpd
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/odhcpd.git
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# Make dnsmasq reread hostfile by sending SIGHUP signal
|
||||
|
||||
. $IPKG_INSTROOT/lib/functions/procd.sh
|
||||
. /lib/functions/procd.sh
|
||||
|
||||
procd_send_signal dnsmasq
|
||||
|
||||
@ -233,8 +233,8 @@ proto_pppoe_setup() {
|
||||
|
||||
#By 蝈蝈:并发拨号同步的前期准备
|
||||
syncppp_option=""
|
||||
[ "$(uci get syncdial.config.enabled)" == "1" ] && {
|
||||
ppp_if_cnt=$(cat /etc/config/network | grep -E -c "proto\s+?'pppoe'")
|
||||
[ "$(uci get syncdial.config.enabled)" -eq "1" ] && {
|
||||
ppp_if_cnt=$(uci show network | grep -c "\.proto=\'pppoe\'$")
|
||||
syncppp_option="syncppp $ppp_if_cnt"
|
||||
shellsync $ppp_if_cnt 10
|
||||
}
|
||||
|
||||
@ -12,9 +12,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/mdnsd.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2020-04-25
|
||||
PKG_SOURCE_VERSION:=cdac0460ba50dc45735f0be2e19a5a8efc3dafe1
|
||||
PKG_MIRROR_HASH:=261cb929dfc03c1f293156cfdec8c2cd1541dcdc57ae42a323f9df5d26e6f7d2
|
||||
PKG_SOURCE_DATE:=2020-06-08
|
||||
PKG_SOURCE_VERSION:=d13290b427487bb05581e11875af3bfe74d6da2d
|
||||
PKG_MIRROR_HASH:=6cd38b41b341212359ddc723fc54ea16a2a7009519db015fb51cd2afb7324369
|
||||
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
PKG_LICENSE:=LGPL-2.1
|
||||
|
||||
@ -11,12 +11,12 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=wireguard
|
||||
|
||||
PKG_VERSION:=1.0.20200520
|
||||
PKG_VERSION:=1.0.20200611
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=wireguard-linux-compat-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://git.zx2c4.com/wireguard-linux-compat/snapshot/
|
||||
PKG_HASH:=16e7ae4bef734b243428eea07f3b3c3d4721880c3ea8eb8f98628fd6ae5b77c3
|
||||
PKG_HASH:=9b0478c3b1f3a7b488916e632e2fcbb1383bb1a2ef294489858ce2ba1da3246d
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=iproute2
|
||||
PKG_VERSION:=5.6.0
|
||||
PKG_VERSION:=5.7.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
|
||||
PKG_HASH:=1b5b0e25ce6e23da7526ea1da044e814ad85ba761b10dd29c2b027c056b04692
|
||||
PKG_HASH:=725dc7ba94aae54c6f8d4223ca055d9fb4fe89d6994b1c03bfb4411c4dd10f21
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_DEPENDS:=iptables
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
From 12fafa27c7b306e6c397e858f4d5a8159500f659 Mon Sep 17 00:00:00 2001
|
||||
From: Stephen Hemminger <stephen@networkplumber.org>
|
||||
Date: Thu, 11 Jun 2020 09:46:46 -0700
|
||||
Subject: [PATCH] devlink: update include files
|
||||
|
||||
Use the tool iwyu to get more complete list of includes for
|
||||
all the bits used by devlink.
|
||||
|
||||
This should also fix build with musl libc.
|
||||
|
||||
Fixes: c4dfddccef4e ("fix JSON output of mon command")
|
||||
Reported-off-by: Dan Robertson <dan@dlrobertson.com>
|
||||
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
|
||||
---
|
||||
devlink/devlink.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/devlink/devlink.c
|
||||
+++ b/devlink/devlink.c
|
||||
@@ -19,18 +19,25 @@
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <inttypes.h>
|
||||
+#include <signal.h>
|
||||
+#include <time.h>
|
||||
+#include <netinet/in.h>
|
||||
+#include <arpa/inet.h>
|
||||
#include <sys/sysinfo.h>
|
||||
#define _LINUX_SYSINFO_H /* avoid collision with musl header */
|
||||
#include <linux/genetlink.h>
|
||||
#include <linux/devlink.h>
|
||||
+#include <linux/netlink.h>
|
||||
#include <libmnl/libmnl.h>
|
||||
#include <netinet/ether.h>
|
||||
+#include <sys/select.h>
|
||||
+#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "SNAPSHOT.h"
|
||||
#include "list.h"
|
||||
#include "mnlg.h"
|
||||
-#include "json_writer.h"
|
||||
+#include "json_print.h"
|
||||
#include "utils.h"
|
||||
#include "namespace.h"
|
||||
|
||||
@ -7,14 +7,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ca-certificates
|
||||
PKG_VERSION:=20190110
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=20200601
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/c/ca-certificates
|
||||
PKG_HASH:=ee4bf0f4c6398005f5b5ca4e0b87b82837ac5c3b0280a1cb3a63c47555c3a675
|
||||
|
||||
PKG_HASH:=43766d5a436519503dfd65ab83488ae33ab4d4ca3d0993797b58c92eb9ed4e63
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/work
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -81,7 +81,7 @@ PROFILE_LIST = $(foreach p,$(PROFILE_NAMES), \
|
||||
|
||||
staging_dir/host/.prereq-build: include/prereq-build.mk
|
||||
mkdir -p tmp
|
||||
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \
|
||||
@$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq IB=1 2>/dev/null || { \
|
||||
echo "Prerequisite check failed. Use FORCE=1 to override."; \
|
||||
false; \
|
||||
}
|
||||
@ -162,6 +162,7 @@ prepare_rootfs: FORCE
|
||||
build_image: FORCE
|
||||
@echo
|
||||
@echo Building images...
|
||||
rm -rf $(BUILD_DIR)/json_info_files/
|
||||
$(NO_TRACE_MAKE) -C target/linux/$(BOARD)/image install TARGET_BUILD=1 IB=1 EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
|
||||
$(if $(USER_PROFILE),PROFILE="$(USER_PROFILE)")
|
||||
|
||||
|
||||
@ -160,6 +160,25 @@
|
||||
qca,no-eeprom;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
/* all WNDR3700 variants have four antennae dedicated
|
||||
* to the 2.4GHz radio. Two antennae are available for
|
||||
* each chain. The following configuration is the
|
||||
* default setting which taken from the vendor's wifi
|
||||
* code for that radio.
|
||||
*
|
||||
* All possible options [GPIO6,GPIO7,GPIO8,GPIO9]:
|
||||
* [0,1,0,1], [0,1,1,0], [1,0,0,1], [1,0,1,0]
|
||||
*/
|
||||
antenna-demux {
|
||||
gpio-hog;
|
||||
line-name = "fixed antenna group 1";
|
||||
gpios = <6 GPIO_ACTIVE_LOW>,
|
||||
<7 GPIO_ACTIVE_HIGH>,
|
||||
<8 GPIO_ACTIVE_LOW>,
|
||||
<9 GPIO_ACTIVE_HIGH>;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
|
||||
ath9k1: wifi@0,12 {
|
||||
|
||||
@ -32,3 +32,24 @@
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
|
||||
&ath9k1 {
|
||||
/* The original WNDR3700(v1) variant have four antennae dedicated
|
||||
* to the 5GHz radio as well. Again, two antennae are available for
|
||||
* each chain to switch between. The following configuration is the
|
||||
* default setting which taken from the vendor's wifi
|
||||
* code for that radio.
|
||||
*
|
||||
* All possible options [GPIO6,GPIO7,GPIO8,GPIO9]:
|
||||
* [0,1,0,1], [0,1,1,0], [1,0,0,1], [1,0,1,0]
|
||||
*/
|
||||
antenna-demux {
|
||||
gpio-hog;
|
||||
line-name = "fixed antenna group 2";
|
||||
gpios = <6 GPIO_ACTIVE_LOW>,
|
||||
<7 GPIO_ACTIVE_HIGH>,
|
||||
<8 GPIO_ACTIVE_HIGH>,
|
||||
<9 GPIO_ACTIVE_LOW>;
|
||||
output-high;
|
||||
};
|
||||
};
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Johan Hovold <johan@kernel.org>
|
||||
|
||||
--- a/drivers/usb/serial/option.c
|
||||
+++ b/drivers/usb/serial/option.c
|
||||
@@ -1983,7 +1983,8 @@ static const struct usb_device_id option
|
||||
@@ -1987,7 +1987,8 @@ static const struct usb_device_id option
|
||||
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) }, /* D-Link DWM-156 (variant) */
|
||||
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) },
|
||||
{ USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) },
|
||||
|
||||
@ -48,7 +48,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
#define INADDR_ANY ((unsigned long int) 0x00000000)
|
||||
--- a/net/ipv4/devinet.c
|
||||
+++ b/net/ipv4/devinet.c
|
||||
@@ -934,7 +934,7 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -935,7 +935,7 @@ static int inet_abc_len(__be32 addr)
|
||||
{
|
||||
int rc = -1; /* Something else, probably a multicast. */
|
||||
|
||||
@ -57,7 +57,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
rc = 0;
|
||||
else {
|
||||
__u32 haddr = ntohl(addr);
|
||||
@@ -945,6 +945,8 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -946,6 +946,8 @@ static int inet_abc_len(__be32 addr)
|
||||
rc = 16;
|
||||
else if (IN_CLASSC(haddr))
|
||||
rc = 24;
|
||||
|
||||
@ -48,7 +48,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
#define INADDR_ANY ((unsigned long int) 0x00000000)
|
||||
--- a/net/ipv4/devinet.c
|
||||
+++ b/net/ipv4/devinet.c
|
||||
@@ -954,7 +954,7 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -955,7 +955,7 @@ static int inet_abc_len(__be32 addr)
|
||||
{
|
||||
int rc = -1; /* Something else, probably a multicast. */
|
||||
|
||||
@ -57,7 +57,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
rc = 0;
|
||||
else {
|
||||
__u32 haddr = ntohl(addr);
|
||||
@@ -965,6 +965,8 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -966,6 +966,8 @@ static int inet_abc_len(__be32 addr)
|
||||
rc = 16;
|
||||
else if (IN_CLASSC(haddr))
|
||||
rc = 24;
|
||||
|
||||
@ -657,7 +657,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
gfar_write(®s->rstat, gfargrp->rstat);
|
||||
--- a/drivers/net/ethernet/freescale/ucc_geth.c
|
||||
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
|
||||
@@ -3303,7 +3303,7 @@ static int ucc_geth_poll(struct napi_str
|
||||
@@ -3304,7 +3304,7 @@ static int ucc_geth_poll(struct napi_str
|
||||
howmany += ucc_geth_rx(ugeth, i, budget - howmany);
|
||||
|
||||
if (howmany < budget) {
|
||||
|
||||
@ -48,7 +48,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
#define INADDR_ANY ((unsigned long int) 0x00000000)
|
||||
--- a/net/ipv4/devinet.c
|
||||
+++ b/net/ipv4/devinet.c
|
||||
@@ -911,7 +911,7 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -912,7 +912,7 @@ static int inet_abc_len(__be32 addr)
|
||||
{
|
||||
int rc = -1; /* Something else, probably a multicast. */
|
||||
|
||||
@ -57,7 +57,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
rc = 0;
|
||||
else {
|
||||
__u32 haddr = ntohl(addr);
|
||||
@@ -922,6 +922,8 @@ static int inet_abc_len(__be32 addr)
|
||||
@@ -923,6 +923,8 @@ static int inet_abc_len(__be32 addr)
|
||||
rc = 16;
|
||||
else if (IN_CLASSC(haddr))
|
||||
rc = 24;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
|
||||
;----------------------------------------------------------------
|
||||
--- a/arch/arc/kernel/setup.c
|
||||
+++ b/arch/arc/kernel/setup.c
|
||||
@@ -437,6 +437,8 @@ static inline bool uboot_arg_invalid(uns
|
||||
@@ -438,6 +438,8 @@ static inline bool uboot_arg_invalid(uns
|
||||
/* We always pass 0 as magic from U-boot */
|
||||
#define UBOOT_MAGIC_VALUE 0
|
||||
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
|
||||
void __init handle_uboot_args(void)
|
||||
{
|
||||
bool use_embedded_dtb = true;
|
||||
@@ -477,7 +479,7 @@ ignore_uboot_args:
|
||||
@@ -478,7 +480,7 @@ ignore_uboot_args:
|
||||
#endif
|
||||
|
||||
if (use_embedded_dtb) {
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include <linux/nsproxy.h>
|
||||
#include <net/net_namespace.h>
|
||||
#include <net/netns/generic.h>
|
||||
@@ -978,8 +983,36 @@ static int pppoe_xmit(struct ppp_channel
|
||||
@@ -981,8 +986,36 @@ static int pppoe_xmit(struct ppp_channel
|
||||
return __pppoe_xmit(sk, skb);
|
||||
}
|
||||
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
|
||||
;----------------------------------------------------------------
|
||||
--- a/arch/arc/kernel/setup.c
|
||||
+++ b/arch/arc/kernel/setup.c
|
||||
@@ -526,7 +526,7 @@ void __init handle_uboot_args(void)
|
||||
@@ -527,7 +527,7 @@ void __init handle_uboot_args(void)
|
||||
ignore_uboot_args:
|
||||
|
||||
if (use_embedded_dtb) {
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
|
||||
if (!machine_desc)
|
||||
panic("Embedded DT invalid\n");
|
||||
}
|
||||
@@ -542,6 +542,8 @@ ignore_uboot_args:
|
||||
@@ -543,6 +543,8 @@ ignore_uboot_args:
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||||
;----------------------------------------------------------------
|
||||
--- a/arch/arc/kernel/setup.c
|
||||
+++ b/arch/arc/kernel/setup.c
|
||||
@@ -404,6 +404,8 @@ static inline bool uboot_arg_invalid(uns
|
||||
@@ -405,6 +405,8 @@ static inline bool uboot_arg_invalid(uns
|
||||
/* We always pass 0 as magic from U-boot */
|
||||
#define UBOOT_MAGIC_VALUE 0
|
||||
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||||
void __init handle_uboot_args(void)
|
||||
{
|
||||
bool use_embedded_dtb = true;
|
||||
@@ -444,7 +446,7 @@ ignore_uboot_args:
|
||||
@@ -445,7 +447,7 @@ ignore_uboot_args:
|
||||
#endif
|
||||
|
||||
if (use_embedded_dtb) {
|
||||
|
||||
@ -41,9 +41,7 @@ define Device/UbiFit
|
||||
endef
|
||||
|
||||
define Device/DniImage
|
||||
KERNEL_SUFFIX := -fit-uImage.itb
|
||||
KERNEL = kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb
|
||||
KERNEL_NAME := Image
|
||||
$(call Device/FitzImage)
|
||||
NETGEAR_BOARD_ID :=
|
||||
NETGEAR_HW_ID :=
|
||||
IMAGES := factory.img sysupgrade.bin
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
From: Sven Eckelmann <sven@narfation.org>
|
||||
Date: Tue, 9 Jun 2020 14:08:44 +0200
|
||||
Subject: essedma: Disable TCP segmentation offload for IPv6
|
||||
|
||||
It was noticed that the the whole MAC can hang when transferring data from
|
||||
one ar40xx port (WAN ports) to the CPU and from the CPU back to another
|
||||
ar40xx port (LAN ports). The CPU was doing only NATing in that process.
|
||||
|
||||
Usually, the problem first starts with a simple data corruption:
|
||||
|
||||
$ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.4.0-amd64-netinst.iso -O /dev/null
|
||||
...
|
||||
Connecting to saimei.ftp.acc.umu.se (saimei.ftp.acc.umu.se)|2001:6b0:19::138|:443... connected.
|
||||
...
|
||||
Read error at byte 48807936/352321536 (Decryption has failed.). Retrying.
|
||||
|
||||
But after a short while, the whole MAC will stop to react. No traffic can
|
||||
be transported anymore from the CPU port from/to the AR40xx PHY/switch and
|
||||
the MAC has to be resetted.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
--- a/drivers/net/ethernet/qualcomm/essedma/edma_axi.c
|
||||
+++ b/drivers/net/ethernet/qualcomm/essedma/edma_axi.c
|
||||
@@ -972,17 +972,14 @@ static int edma_axi_probe(struct platfor
|
||||
edma_netdev[i]->features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM
|
||||
| NETIF_F_HW_VLAN_CTAG_TX
|
||||
| NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_SG |
|
||||
- NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_GRO;
|
||||
+ NETIF_F_TSO | NETIF_F_GRO;
|
||||
edma_netdev[i]->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
|
||||
NETIF_F_HW_VLAN_CTAG_RX
|
||||
- | NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 |
|
||||
- NETIF_F_GRO;
|
||||
+ | NETIF_F_SG | NETIF_F_TSO | NETIF_F_GRO;
|
||||
edma_netdev[i]->vlan_features = NETIF_F_HW_CSUM | NETIF_F_SG |
|
||||
- NETIF_F_TSO | NETIF_F_TSO6 |
|
||||
- NETIF_F_GRO;
|
||||
+ NETIF_F_TSO | NETIF_F_GRO;
|
||||
edma_netdev[i]->wanted_features = NETIF_F_HW_CSUM | NETIF_F_SG |
|
||||
- NETIF_F_TSO | NETIF_F_TSO6 |
|
||||
- NETIF_F_GRO;
|
||||
+ NETIF_F_TSO | NETIF_F_GRO;
|
||||
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
edma_netdev[i]->features |= NETIF_F_RXHASH | NETIF_F_NTUPLE;
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/usb/qmi_wwan.c
|
||||
+++ b/drivers/net/usb/qmi_wwan.c
|
||||
@@ -1291,6 +1291,7 @@ static const struct usb_device_id produc
|
||||
@@ -1292,6 +1292,7 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
{QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
From: Sven Eckelmann <sven@narfation.org>
|
||||
Date: Tue, 9 Jun 2020 14:08:44 +0200
|
||||
Subject: essedma: Disable TCP segmentation offload for IPv6
|
||||
|
||||
It was noticed that the the whole MAC can hang when transferring data from
|
||||
one ar40xx port (WAN ports) to the CPU and from the CPU back to another
|
||||
ar40xx port (LAN ports). The CPU was doing only NATing in that process.
|
||||
|
||||
Usually, the problem first starts with a simple data corruption:
|
||||
|
||||
$ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.4.0-amd64-netinst.iso -O /dev/null
|
||||
...
|
||||
Connecting to saimei.ftp.acc.umu.se (saimei.ftp.acc.umu.se)|2001:6b0:19::138|:443... connected.
|
||||
...
|
||||
Read error at byte 48807936/352321536 (Decryption has failed.). Retrying.
|
||||
|
||||
But after a short while, the whole MAC will stop to react. No traffic can
|
||||
be transported anymore from the CPU port from/to the AR40xx PHY/switch and
|
||||
the MAC has to be resetted.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
--- a/drivers/net/ethernet/qualcomm/essedma/edma_axi.c
|
||||
+++ b/drivers/net/ethernet/qualcomm/essedma/edma_axi.c
|
||||
@@ -972,17 +972,14 @@ static int edma_axi_probe(struct platfor
|
||||
edma_netdev[i]->features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM
|
||||
| NETIF_F_HW_VLAN_CTAG_TX
|
||||
| NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_SG |
|
||||
- NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_GRO;
|
||||
+ NETIF_F_TSO | NETIF_F_GRO;
|
||||
edma_netdev[i]->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM |
|
||||
NETIF_F_HW_VLAN_CTAG_RX
|
||||
- | NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 |
|
||||
- NETIF_F_GRO;
|
||||
+ | NETIF_F_SG | NETIF_F_TSO | NETIF_F_GRO;
|
||||
edma_netdev[i]->vlan_features = NETIF_F_HW_CSUM | NETIF_F_SG |
|
||||
- NETIF_F_TSO | NETIF_F_TSO6 |
|
||||
- NETIF_F_GRO;
|
||||
+ NETIF_F_TSO | NETIF_F_GRO;
|
||||
edma_netdev[i]->wanted_features = NETIF_F_HW_CSUM | NETIF_F_SG |
|
||||
- NETIF_F_TSO | NETIF_F_TSO6 |
|
||||
- NETIF_F_GRO;
|
||||
+ NETIF_F_TSO | NETIF_F_GRO;
|
||||
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
edma_netdev[i]->features |= NETIF_F_RXHASH | NETIF_F_NTUPLE;
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/usb/qmi_wwan.c
|
||||
+++ b/drivers/net/usb/qmi_wwan.c
|
||||
@@ -1302,6 +1302,7 @@ static const struct usb_device_id produc
|
||||
@@ -1303,6 +1303,7 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
{QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/usb/qmi_wwan.c
|
||||
+++ b/drivers/net/usb/qmi_wwan.c
|
||||
@@ -1291,6 +1291,7 @@ static const struct usb_device_id produc
|
||||
@@ -1292,6 +1292,7 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
{QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/usb/qmi_wwan.c
|
||||
+++ b/drivers/net/usb/qmi_wwan.c
|
||||
@@ -1302,6 +1302,7 @@ static const struct usb_device_id produc
|
||||
@@ -1303,6 +1303,7 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
{QMI_QUIRK_SET_DTR(0x1e0e, 0x9001, 5)}, /* SIMCom 7100E, 7230E, 7600E ++ */
|
||||
|
||||
@ -11,12 +11,9 @@ PKG_NAME:=musl
|
||||
PKG_VERSION:=1.1.24
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=ea9525c8bcf6170df59364c4bcd616de1acf8703
|
||||
PKG_MIRROR_HASH:=6975c45b9bfe586ac00dbfcd1b1a13ab110af0528028ab3dee03e23e2c0763e5
|
||||
PKG_SOURCE_URL:=https://git.musl-libc.org/git/musl
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://musl.libc.org/releases/
|
||||
PKG_HASH:=1370c9a812b2cf2a7d92802510cca0058cc37e66a7bedd70051f0a34015022a3
|
||||
|
||||
LIBC_SO_VERSION:=$(PKG_VERSION)
|
||||
PATCH_DIR:=$(PATH_PREFIX)/patches
|
||||
|
||||
@ -264,13 +264,8 @@ main (int argc, char * argv[])
|
||||
hdr->magic = htonl (0x2a23245e);
|
||||
hdr->header_len = htonl(header_len);
|
||||
hdr->reserved[0] = (unsigned char)(region & 0xff);
|
||||
hdr->reserved[1] = 1; /* Major */
|
||||
hdr->reserved[2] = 1; /* Minor */
|
||||
hdr->reserved[3] = 99; /* Build */
|
||||
hdr->reserved[4] = 0;
|
||||
hdr->reserved[5] = 0;
|
||||
hdr->reserved[6] = 0;
|
||||
hdr->reserved[7] = 0;
|
||||
memset(&hdr->reserved[1], 99, sizeof(hdr->reserved) - 1);
|
||||
|
||||
message (" Board Id: %s", board_id);
|
||||
message (" Region: %s", region == 1 ? "World Wide (WW)"
|
||||
: (region == 2 ? "North America (NA)" : "Unknown"));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user