This commit is contained in:
DHDAXCW 2024-08-05 14:21:57 +08:00
parent ed1029d103
commit 60a5b065ea
46 changed files with 1681 additions and 3885 deletions

View File

@ -8,12 +8,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=linux-firmware
PKG_VERSION:=20240220
PKG_VERSION:=20240709
PKG_RELEASE:=1
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_HASH:=bf0f239dc0801e9d6bf5d5fb3e2f549575632cf4688f4348184199cb02c2bcd7
PKG_HASH:=719662d2e8644c097f9a0bfb6e4c97280f8b2943e7bd9b47f77cf039412f5b14
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>

View File

@ -1,4 +1,4 @@
Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode,@TARGET_x86)
Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode,,LICENSE.amd-ucode)
define Package/amd64-microcode/install
$(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
$(CP) \
@ -8,7 +8,7 @@ endef
$(eval $(call BuildPackage,amd64-microcode))
Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware)
Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware,,LICENSE.amdgpura)
define Package/amdgpu-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/amdgpu
$(CP) \
@ -18,7 +18,7 @@ endef
$(eval $(call BuildPackage,amdgpu-firmware))
Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware)
Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware,,LICENSE.radeon)
define Package/radeon-firmware/install
$(INSTALL_DIR) $(1)/lib/firmware/radeon
$(CP) \

View File

@ -731,8 +731,7 @@ define KernelPackage/r8169
DEPENDS:=@PCI_SUPPORT +kmod-mii +r8169-firmware +kmod-phy-realtek +!LINUX_5_4:kmod-mdio-devres
KCONFIG:= \
CONFIG_R8169 \
CONFIG_R8169_NAPI=y \
CONFIG_R8169_VLAN=n
CONFIG_R8169_LEDS=y@ge6.6
FILES:=$(LINUX_DIR)/drivers/net/ethernet/realtek/r8169.ko
AUTOLOAD:=$(call AutoProbe,r8169)
endef

View File

@ -5,7 +5,7 @@ MHz=`grep 'MHz' /proc/cpuinfo | cut -c11- |sed -n '1p'`
if [ "$(grep 'AMD' /proc/cpuinfo)" != "" ]; then
TEMP=`sensors 2>/dev/null | grep 'Tctl' | cut -c16-`
else
TEMP=`sensors 2>/dev/null | grep 'Core 0' | cut -c12-`
TEMP=`sensors 2>/dev/null | grep '0:' | awk -F ':' '{print $2}'`
fi
echo "$MHz MHz $TEMP "

View File

@ -51,7 +51,7 @@ sed -i '/option disabled/d' /etc/config/wireless
sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh
sed -i '/DISTRIB_REVISION/d' /etc/openwrt_release
echo "DISTRIB_REVISION='R24.7.22-D'" >> /etc/openwrt_release
echo "DISTRIB_REVISION='R24.8.1'" >> /etc/openwrt_release
sed -i '/DISTRIB_DESCRIPTION/d' /etc/openwrt_release
echo "DISTRIB_DESCRIPTION='OpenWrt '" >> /etc/openwrt_release

View File

@ -0,0 +1,58 @@
#
# Copyright (C) 2015-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v3.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=leigod-acc
PKG_VERSION:=1.3.0.30
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
TITLE:=Powerful Leigod Game Accelerater
DEPENDS:=@(x86_64||arm||mipsel||aarch64)
URL:=https://www.leigod.com/
endef
define Package/$(PKG_NAME)/description
leigod-acc is a powerful game accelerater
endef
ifeq ($(ARCH),x86_64)
acc-arch:=amd64
endif
ifeq ($(ARCH),mipsel)
acc-arch:=mipsle
endif
ifeq ($(ARCH),arm)
acc-arch:=arm
endif
ifeq ($(ARCH),aarch64)
acc-arch:=arm64
endif
define Build/Prepare
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin/leigod
$(INSTALL_BIN) ./files/acc-gw.linux.$(acc-arch) $(1)/usr/sbin/leigod/acc-gw.linux.$(acc-arch)
$(INSTALL_BIN) ./files/leigod_uninstall.sh $(1)/usr/sbin/leigod/leigod_uninstall.sh
$(INSTALL_BIN) ./files/plugin_common.sh $(1)/usr/sbin/leigod/plugin_common.sh
$(INSTALL_BIN) ./files/update_plugin $(1)/usr/sbin/leigod/update_plugin
$(INSTALL_DATA) ./files/version $(1)/usr/sbin/leigod/version
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,51 @@
#!/bin/sh
# https://github.com/isecret/leigod-helper/blob/main/leigod-helper.sh
USERNAME="${USERNAME:-phone}"
PASSWORD="${PASSWORD:-password}"
if ! command -v "jq" > /dev/null; then
echo "缺失 jq 依赖";
exit;
fi
if command -v md5sum > /dev/null; then
password_hash=$(echo -n "$PASSWORD" | md5sum | awk '{print $1}')
elif command -v md5 > /dev/null; then
password_hash=$(echo -n "$PASSWORD" | md5)
else
echo "缺失 md5 或 md5sum 依赖,请手动安装"
exit 1
fi
login=$(curl -Lks -X POST https://webapi.leigod.com/api/auth/login \
-H 'content-type: application/json' \
-d "{
\"account_token\": null,
\"country_code\": 86,
\"lang\": \"zh_CN\",
\"password\": \"$password_hash\",
\"region_code\": 1,
\"src_channel\": \"guanwang\",
\"user_type\": \"0\",
\"username\": \"$USERNAME\"
}")
login_code=$(echo $login | jq -r ".code" 2>&1)
login_msg=$(echo $login | jq -r ".msg" 2>&1)
if [ "$login_code" -eq 0 ]; then
account_token=$(echo $login | jq -r ".data.login_info.account_token" 2>&1)
pause=$(curl -Lks -X POST https://webapi.leigod.com/api/user/pause \
-H 'content-type: application/json' \
-d "{
\"account_token\": \"$account_token\",
\"lang\": \"zh_CN\"
}")
pause_code=$(echo $pause | jq -r ".code" 2>&1)
pause_msg=$(echo $pause | jq -r ".msg" 2>&1)
echo "暂停结果: $pause_msg"
else
echo "登录失败...原因: $login_msg"
fi

View File

@ -0,0 +1,24 @@
#!/bin/sh
# this script is use to install leigod plugin
ver_name="version"
init_file_name="acc"
binary_prefix="acc-gw.linux"
common_file_name="plugin_common.sh"
download_base_url="http://119.3.40.126/router_plugin"
# include common file
. ${common_file_name}
# preinstall_check
# check and set env
preinstall_check
if [ ${is_openwrt} ]; then
echo "remove openwrt config"
remove_openwrt_series_config
remove_openwrt_series_init
fi
# remove_binary remove binary
remove_binary

View File

@ -0,0 +1,502 @@
# this script is use to install leigod plugin
# sbin_dir="/usr/sbin/leigod"
ver_name="version"
init_file_name="acc"
binary_prefix="acc-gw.linux"
common_file_name="plugin_common.sh"
uninstall_file_name="leigod_uninstall.sh"
download_base_url="http://119.3.40.126/router_plugin"
# get_device_os
# current support os: Linux
get_device_os() {
os=$(uname)
if [ $? == "0" ]; then
return 0
fi
echo "os cant be get"
return -1
}
# get_device_arch,
# current support arch: arm64 arm x86_64 mips
get_device_arch() {
arch=$(uname -m)
if [ $? == "0" ]; then
return 0
fi
echo "arch cant be get"
return -1
}
# get_xiaomi_name check if is xiaomi
get_xiaomi_name() {
local name=$(uci get misc.hardware.displayName)
if [[ $? == "0" && ${name} != "" ]]; then
echo "router is xiaomi series, name: ${name}"
sbin_dir="/userdisk/appdata/leigod"
init_dir="/userdisk/appdata/leigod"
is_xiaomi=true
return 0
fi
local name=$(uci get misc.hardware.model)
if [[ $? == "0" && ${name} != "" ]]; then
echo "router is xiaomi series, name: ${name}"
sbin_dir="/userdisk/appdata/leigod"
init_dir="/userdisk/appdata/leigod"
is_xiaomi=true
return 0
fi
local name=$(uci get misc.hardware.model)
if [[ $? == "0" && ${name} != "" ]]; then
echo "router is xiaomi series, name: ${name}"
sbin_dir="/userdisk/appdata/leigod"
init_dir="/userdisk/appdata/leigod"
is_xiaomi=true
return 0
fi
echo "router is not xiaomi, use general openwrt"
sbin_dir="/usr/sbin/leigod"
init_dir="/etc/init.d"
# stop openwrt service first
echo "stop openwrt acc service first, in casue install failed"
/etc/init.d/acc stop
sleep 1
show_openwrt_suggestion
return 0
}
# get_asus_name get asus name
get_merlin_party() {
if [[ -d "/koolshare" ]]; then
echo "router is merlin series, name: $(nvram get build_name)"
nvram set 3rd-party=merlin
is_merlin=true
sbin_dir="/koolshare/leigod/acc"
init_dir="/koolshare/init.d"
echo "message"
return 0
elif [[ -d "/jffs/softcenter" ]]; then
echo "router is swrt series, name: $(nvram get build_name)"
is_swrt=true
nvram set 3rd-party=swrt
sbin_dir="/jffs/softcenter/leigod/acc"
init_dir="/jffs/softcenter/init.d"
return 0
fi
# check merlin
echo "route is not merlin, use general asus"
return 0
}
# get_device_firmware get device firmware
# current support firmware: openwrt merlin
get_device_firmware() {
# openwrt file exist
if [ -f "/etc/openwrt_release" ]; then
echo "firmware is openwrt series"
is_openwrt=true
get_xiaomi_name
elif [[ -f "/etc/image_version" ]] || [[ -d "/koolshare" ]] || [[ -d "/jffs/softcenter" ]]; then
echo "firmware is asus series"
is_asus=true
echo "stop asus acc service first, in casue install failed"
PIDS=$(ps | grep acc | grep -v grep | awk '{print $1}')
# check if process exist
get_merlin_party
fi
}
# install_openwrt_package install openwrt
install_binary() {
# create sbin dir
mkdir -p ${sbin_dir}
# create name
local acc_name=${binary_prefix}.${arch}
local download_bin_url=${download_base_url}/${acc_name}
echo "install ${acc_name} to ${sbin_dir}"
# download file
curl -s -o ${sbin_dir}/${acc_name} ${download_bin_url}
if [ $? != "0" ]; then
echo "download and install binary failed"
return -1
fi
echo "install binary success"
chmod +x ${sbin_dir}/${acc_name}
if [ $? != "0" ]; then
echo "add binary permission failed"
return -1
fi
echo "add acc binary permission success"
# download common file
local download_common_url=${download_base_url}/${common_file_name}
curl -s -o ${sbin_dir}/${common_file_name} ${download_common_url}
if [ $? != "0" ]; then
echo "download and install common file failed"
return -1
fi
# remote uninstall_file_name
local remote_uninstall_file_name=${download_base_url}/"plugin_uninstall.sh"
curl -s -o ${sbin_dir}/${uninstall_file_name} ${remote_uninstall_file_name}
if [ $? != "0" ]; then
echo "download and install uninstall file failed"
return -1
fi
echo "add uninstall permission success"
local ver_file=${sbin_dir}/${ver_name}
touch ${ver_file}
if [ $? != "0" ]; then
echo "create version file failed"
return -1
fi
# add version to file
echo "version=1.3.0.30" > ${ver_file}
echo "add version file success"
}
# remove_binary remove binary
remove_binary() {
rm -r ${sbin_dir}
}
# install xiaomi monitor
install_xiaomi_monitor() {
local cron_path="/etc/crontabs/root"
local monitor_file_name="plugin_monitor.sh"
local download_monitor_url=${download_base_url}/${monitor_file_name}
curl -o ${sbin_dir}/${monitor_file_name} ${download_monitor_url}
if [ $? != "0" ]; then
echo "download monitor file failed"
return -1
fi
chmod +x ${sbin_dir}/${monitor_file_name}
# download
echo "download monitor file success"
echo "*/1 * * * * ${sbin_dir}/${monitor_file_name}" >> ${cron_path}
if [ $? != "0" ]; then
echo "add monitor to cron failed"
return -1
fi
echo "add monitor to cron success"
}
# install_openwrt_series_config save openwrt config
install_openwrt_series_config() {
# create accelerator config
touch /etc/config/accelerator
if [ $? != "0" ]; then
echo "make acc config file failed"
return -1
fi
if [ ${install_env} == "test" ]; then
# use uci to add config
uci set accelerator.base=system
uci set accelerator.bind=bind
uci set accelerator.device=hardware
uci set accelerator.Phone=acceleration
uci set accelerator.PC=acceleration
uci set accelerator.Game=acceleration
uci set accelerator.Unknown=acceleration
uci set accelerator.base.url='https://test-opapi.nn.com/speed/router/plug/check'
uci set accelerator.base.heart='https://test-opapi.nn.com/speed/router/heartbeat'
uci set accelerator.base.base_url='https://test-opapi.nn.com/speed'
uci commit accelerator
elif [ ${install_env} == "test1" ]; then
# use uci to add config
uci set accelerator.base=system
uci set accelerator.bind=bind
uci set accelerator.device=hardware
uci set accelerator.Phone=acceleration
uci set accelerator.PC=acceleration
uci set accelerator.Game=acceleration
uci set accelerator.Unknown=acceleration
uci set accelerator.base.url='https://test1-opapi.nn.com/speed/router/plug/check'
uci set accelerator.base.heart='https://test1-opapi.nn.com/speed/router/heartbeat'
uci set accelerator.base.base_url='https://test1-opapi.nn.com/speed'
uci commit accelerator
else
# use uci to add config
uci set accelerator.base=system
uci set accelerator.bind=bind
uci set accelerator.device=hardware
uci set accelerator.Phone=acceleration
uci set accelerator.PC=acceleration
uci set accelerator.Game=acceleration
uci set accelerator.Unknown=acceleration
uci set accelerator.base.url='https://opapi.nn.com/speed/router/plug/check'
uci set accelerator.base.heart='https://opapi.nn.com/speed/router/heartbeat'
uci set accelerator.base.base_url='https://opapi.nn.com/speed'
uci commit accelerator
fi
if [ $? != "0" ]; then
echo "create openwrt config unit failed"
return -1
fi
echo "create openwrt config unit success"
}
# install_openwrt_series_luasrc install openwrt lua src
install_openwrt_series_luasrc() {
lua_base="/usr/lib/lua/luci"
# download index file
curl --create-dirs -o ${lua_base}/controller/acc.lua ${download_base_url}/openwrt/controller/acc.lua
if [ $? != "0" ]; then
echo "download acc.lua failed"
return -1
fi
# download service view file
curl --create-dirs -o ${lua_base}/model/cbi/leigod/service.lua ${download_base_url}/openwrt/model/cbi/leigod/service.lua
if [ $? != "0" ]; then
echo "download service.lua failed"
return -1
fi
# download device view file
curl --create-dirs -o ${lua_base}/model/cbi/leigod/device.lua ${download_base_url}/openwrt/model/cbi/leigod/device.lua
if [ $? != "0" ]; then
echo "download device.lua failed"
return -1
fi
# download notice view file
curl --create-dirs -o ${lua_base}/model/cbi/leigod/notice.lua ${download_base_url}/openwrt/model/cbi/leigod/notice.lua
if [ $? != "0" ]; then
echo "download notice.lua failed"
return -1
fi
# download service view file
curl --create-dirs -o ${lua_base}/view/leigod/notice.htm ${download_base_url}/openwrt/view/leigod/notice.htm
if [ $? != "0" ]; then
echo "download notice.htm failed"
return -1
fi
# download service view file
curl --create-dirs -o ${lua_base}/view/leigod/service.htm ${download_base_url}/openwrt/view/leigod/service.htm
if [ $? != "0" ]; then
echo "download service.htm failed"
return -1
fi
# download service translate file
curl --create-dirs -o ${lua_base}/i18n/acc.zh-cn.lmo ${download_base_url}/openwrt/po/zh-cn/acc.zh-cn.lmo
if [ $? != "0" ]; then
echo "download acc.zh-cn.lmo failed"
return -1
fi
echo "download lua src success"
}
install_openwrt_series_web() {
local luci_base="/usr/lib/lua/luci"
}
# remove_openwrt_series_config remove openwrt config
remove_openwrt_series_config() {
rm /etc/config/accelerator
}
# install asus series config
install_asus_series_config() {
mkdir -p ${sbin_dir}/config
if [ ${install_env} == "test" ]; then
# install test asus config
echo "
[base]
url="https://test-opapi.nn.com/speed/router/plug/check"
channel="2"
appid="nnMobile_d0k3duup"
heart="https://test-opapi.nn.com/speed/router/heartbeat"
base_url="https://test-opapi.nn.com/speed"
[update]
domain="https://test-opapi.nn.com/nn-version/version/plug/upgrade"
[device]
" > ${sbin_dir}/config/accelerator
elif [ ${install_env} == "test1" ]; then
# install test1 asus config
echo "
[base]
url="https://test1-opapi.nn.com/speed/router/plug/check"
channel="2"
appid="nnMobile_d0k3duup"
heart="https://test1-opapi.nn.com/speed/router/heartbeat"
base_url="https://test1-opapi.nn.com/speed"
[update]
domain="https://test1-opapi.nn.com/nn-version/version/plug/upgrade"
[device]
" > ${sbin_dir}/config/accelerator
else
# install formel asus config
echo "
[base]
url="https://opapi.nn.com/speed/router/plug/check"
channel="2"
appid="nnMobile_d0k3duup"
heart="https://opapi.nn.com/speed/router/heartbeat"
base_url="https://opapi.nn.com/speed"
[update]
domain="https://opapi.nn.com/nn-version/version/plug/upgrade"
[device]
" > ${sbin_dir}/config/accelerator
fi
echo "create asus series config success"
}
# remove_asus_series_config remove asus config
remove_asus_series_config() {
rm -r ${init_dir}
}
# install_openwrt_init install openwrt to init
install_openwrt_series_init() {
local remote_init_name="openwrt_init.sh"
local download_init_url=${download_base_url}/${remote_init_name}
# download init file
curl -o ${init_dir}/${init_file_name} ${download_init_url}
if [ $? != "0" ]; then
echo "download init file failed"
return -1
fi
echo "download init file success"
# add permission to file
chmod +x ${init_dir}/${init_file_name}
if [ $? != "0" ]; then
echo "add init permission failed"
return -1
fi
echo "add init file permission success"
${init_dir}/${init_file_name} enable
echo "set accelerator autostart success"
${init_dir}/${init_file_name} start
if [ $? != "0" ]; then
echo "start accelerator failed"
return -1
fi
echo "start accelerator success"
}
# remove_openwrt_series_init remove openwrt init
remove_openwrt_series_init() {
${init_dir}/${init_file_name} disable
${init_dir}/${init_file_name} stop
rm ${init_dir}/${init_file_name}
}
# install merlin init
install_merlin_init() {
local remote_init_name="asus_init.sh"
local download_init_url=${download_base_url}/${remote_init_name}
# download init file
curl -o ${sbin_dir}/${init_file_name} ${download_init_url}
if [ $? != "0" ]; then
echo "download init file failed"
return -1
fi
# add permission
chmod +x ${sbin_dir}/${init_file_name}
# create link
local link_init_name="S99LeigodAcc.sh"
local link_init_file=${init_dir}/${link_init_name}
ln -sf ${sbin_dir}/${init_file_name} ${link_init_file}
if [ $? != "0" ]; then
echo "create merlin init link failed"
return -1
fi
echo "create merlin link file success"
${link_init_file} start
echo "acc start success"
}
# show_openwrt_suggestion show openwrt install suggest
show_openwrt_suggestion() {
echo "
雷神OpenWrt插件安装建议:
当前雷神路由器支持两种加速模式,
1. tproxy加速模式(速度更快, CPU占用率更低)
2. tun加速模式(需要依赖少, 安装灵活)
需要您根据以上的加速模式, 安装对应的依赖库,
如下列出两种模式对应的安装依赖:
1. TProxy模式: libpcap iptables kmod-ipt-nat iptables-mod-tproxy kmod-ipt-tproxy kmod-netem(可选) tc-full(可选) kmod-ipt-ipset ipset curl
2. Tun模式: libpcap iptables kmod-tun kmod-ipt-nat kmod-ipt-ipset ipset curl
如何安装依赖:
1. 升级依赖: opkg update
2. 安装依赖: opkg install xxx
为了安装方便, 请选择一个模式, 复制以下命令到终端运行:
Tproxy模式:
opkg update
opkg install libpcap iptables kmod-ipt-nat iptables-mod-tproxy kmod-ipt-tproxy kmod-netem tc-full kmod-ipt-ipset ipset
Tun模式:
opkg update
opkg install libpcap iptables kmod-tun kmod-ipt-nat kmod-ipt-ipset ipset curl
关于steamdeck的支持说明
steamdeck设备请选择加速电脑游戏
关于手机设备的支持:
1. 安卓支持说明
当前代理仅支持ipv4代理, 请更改dhcp配置更改完配置请重启路由器
配置路径在 /etc/config/dhcp
config dhcp 'lan'
... 此处是一些其他配置
ra 'disable'
dhcpv6 'disable'
list ra_flags 'none'
... 此处是一些其他配置
2. 关于ios设备的支持说明
ios设备, 安装完插件后, 为了精准识别, 请在ios上选择忘记wifi, 然后重新连接即可
"
}
# preinstall_check check env
preinstall_check() {
# check os
get_device_os
if [ ${os} != "Linux" ]; then
echo "current os not support, os: ${os}"
return -1
fi
# check arch
get_device_arch
if [[ ${arch} != "x86_64" && ${arch} != "aarch64" && ${arch} != "arm" && ${arch} != "mips" && ${arch} != "armv7l" ]];then
echo "current arch not support, arch: ${arch}"
return -1
fi
# fix arch
if [ ${arch} == "x86_64" ]; then
echo "match x86_64 -> amd64"
arch="amd64"
elif [ ${arch} == "aarch64" ]; then
echo "match aarch64 -> arm64"
arch="arm64"
elif [ ${arch} == "mips" ]; then
echo "match mips -> mipsle"
arch="mipsle"
elif [ ${arch} == "armv7l" ]; then
arch="arm"
fi
# support plugin
echo "current system support plugin, system: ${os}-${arch}"
get_device_firmware
return 0
}
# show_install_success show install has been installed
show_install_success() {
echo "install success"
echo "雷神路由器插件安装已完成"
echo "请加群632342113体验"
}

View File

@ -0,0 +1,175 @@
#!/usr/bin/lua
local util = require "luci.util"
local string = require "string"
local io = require "io"
local json = require "luci.jsonc"
local uci = require "luci.model.uci".cursor()
local client = require "luci.httpclient"
local helper = require "luci.helper"
-- get cloud version
function get_cloud_version()
-- get cloud url
local url = uci:get("easyupdate", "main", "domain")
-- get request channel
local channel = uci:get("easyupdate", "main", "channel")
-- appid
local appid = uci:get("easyupdate", "main", "appid")
-- read brand and model from file
local brand, model = helper.get_board_info()
-- platfrom
local platform = 11
-- create http request options
local options = {}
-- create http request method
options.method = "POST"
-- create http request headers
options.headers = {}
options.headers['appId'] = appid
options.headers['reqChannel'] = channel
options.headers['Content-Type'] = 'application/json'
-- create http request body
local body = {
--
['appId'] = 'spRouterPlugin_fhem2shgq9s5',
['brand'] = brand,
['model'] = model,
['platform'] = platform,
}
-- marshal to json
local buf = util.serialize_json(body)
options.body = buf
-- begin to query
local status, _, buffer, _ = client.request_raw(url, options)
-- check if query success
if not status then
io.write("status is nil \n")
return ""
end
-- check if request success
if status ~= 200 and status ~=206 then
io.write("status is not success, status: " .. status .. "\n")
return ""
end
-- begin to parse response
local info = json.parse(buffer)
-- get ret data
local data = info['retData']
-- check if data is nil
if data == nil then
io.write("response ret data is nil \n")
return ""
end
-- store url in config
local fw_url = data['url']
local version = data['versionName']
io.write("fw_url: " .. fw_url .. ", version: " .. version .. "\n")
-- get version success
return version, fw_url
end
-- get local version
function get_local_version()
-- run command to get acc version
local cmd = 'opkg info acc'
local buf = util.exec(cmd)
-- check exec result
if buf == nil then
io.write("exec command failed \n")
return ""
end
io.write("buf: " .. buf .. "\n")
-- read line
for line in string.gmatch(buf, "[^\r\n]+") do
io.write("read line: " .. line .. "\n")
line = string.gsub(line, " ", "")
local valueSl = string.gmatch(line, "[^:]+")
local key = valueSl()
local value = valueSl()
if key == "Version" then
io.write("get local version: " .. value .. "\n")
return value
end
end
io.write("local version cant found \n")
end
-- get file base name
function get_file_base_name(filepath)
local name = string.gmatch(filepath, "([^/]+)$")
io.write("get file base name: " .. name .. "\n")
return name
end
-- download cloud version
function download_cloud_app(url, name)
io.write("download app, url: " .. url .. ", name: " .. name .. "\n")
-- run download
local cmd = 'curl -s -o /tmp/' .. name ..' -w %{http_code}' .. ' ' .. url
-- exec download
local code = util.exec(cmd)
if code ~= "200" then
io.write("download cloud app failed, code: " .. code .. "\n")
return false
end
io.write("download cloud app success \n")
return code
end
-- install package name in tmp dir
function install_package(name)
io.write("install package, package name: " .. name .. "\n")
local cmd = "opkg install " .. "/tmp/" .. name .. " " .. "--force-overwrite"
local code = util.exec(cmd)
io.write("install package finish, package name: " .. name .. "\n")
return code
end
-- remove pkg
function remove_pkg(name)
io.write("remove package, package name: " .. name .. "\n")
local cmd = "rm -rf " .. "/tmp/" .. name
local code = util.exec(cmd)
io.write("remove package finish, package name: " .. name .. "\n")
return code
end
-- check network state
io.write("check network state \n")
while true do
local state_code = helper.get_network_state()
if state_code == 200 then
io.write("network available \n")
break
end
if state_code ~= nil then
io.write("network is not available, code: " .. state_code .. "\n")
end
end
io.write("network success")
-- exec command
local local_version = get_local_version()
local cloud_version, url = get_cloud_version()
-- check if need update
if local_version >= cloud_version then
io.write("local version is new, dont need update, local ver: " .. local_version ..
", cloud version:" .. cloud_version .. "\n")
return
end
-- need update
io.write("local version is lower, need update, local version: " .. local_version ..
", cloud version: " .. cloud_version .. "\n")
-- download url
local name = "acc.ipk"
local result = download_cloud_app(url, name)
if not result then
return
end
-- install package
install_package(name)
remove_pkg(name)

View File

@ -0,0 +1 @@
version=1.3.0.30

View File

@ -13,7 +13,7 @@ PKG_VERSION:=8.5.0
PKG_RELEASE:=1
PKG_SOURCE:=cryptopp$(subst .,,$(PKG_VERSION)).zip
PKG_SOURCE_URL:=https://www.cryptopp.com/
PKG_SOURCE_URL:=https://github.com/weidai11/cryptopp/releases/download/CRYPTOPP_$(subst .,_,$(PKG_VERSION))/
PKG_HASH:=95fc50d59488ebf61a735cce2b2ec2c2561fc682077c7b496273d65a1ed93d9e
PKG_FIXUP:=autoreconf
@ -38,9 +38,19 @@ define Package/libcryptopp/description
use of templates and abstract base classes.
endef
PKG_BUILD_FILE:=cryptopp-autotools$(subst .,,$(PKG_VERSION)).zip
define Download/autotools
URL:=https://github.com/noloader/cryptopp-autotools/releases/download/CRYPTOPP_$(subst .,_,$(PKG_VERSION))/
FILE:=$(PKG_BUILD_FILE)
HASH:=91e06c53b517753f0ba02b92bb259e0ee929ebc6ad4f8b5c190d39ba407d3fbe
endef
$(eval $(call Download,autotools))
define Build/Prepare
$(Build/Prepare/Default)
$(PKG_UNPACK)
unzip -q -d $(PKG_BUILD_DIR) $(DL_DIR)/$(PKG_BUILD_FILE)
cd $(PKG_BUILD_DIR); rm -f GNUmakefile GNUmakefile-cross
$(Build/Patch)
endef
define Build/InstallDev

View File

@ -0,0 +1,24 @@
--- a/Makefile.am
+++ b/Makefile.am
@@ -458,14 +458,13 @@ testvector_FILES = \
TestVectors/lea.txt TestVectors/sosemanuk.txt \
TestVectors/mars.txt TestVectors/speck.txt \
TestVectors/nr.txt TestVectors/tea.txt \
- TestVectors/ocb.txt TestVectors/threefish.txt \
- TestVectors/panama.txt TestVectors/ttmac.txt \
- TestVectors/poly1305aes.txt TestVectors/vmac.txt \
- TestVectors/poly1305_tls.txt TestVectors/wake.txt \
- TestVectors/rabbit.txt TestVectors/whrlpool.txt \
- TestVectors/Readme.txt TestVectors/xchacha.txt \
- TestVectors/rsa_oaep.txt TestVectors/xts.txt \
- TestVectors/rsa_pkcs1_1_5.txt
+ TestVectors/panama.txt TestVectors/threefish.txt \
+ TestVectors/poly1305aes.txt TestVectors/ttmac.txt \
+ TestVectors/poly1305_tls.txt TestVectors/vmac.txt \
+ TestVectors/rabbit.txt TestVectors/wake.txt \
+ TestVectors/Readme.txt TestVectors/whrlpool.txt \
+ TestVectors/rsa_oaep.txt TestVectors/xchacha.txt \
+ TestVectors/rsa_pkcs1_1_5.txt TestVectors/xts.txt
# Create with 'ls TestPrograms/test_*.cxx'. These files do not get installed.
# They exist so the feature tests can be run from the configure directory.

View File

@ -1,592 +0,0 @@
## Makefile.am - Autotools configuration file for Crypto++.
## written and placed in public domain by Jeffrey Walton.
## based on Debian Makefile.am by László Böszörményi.
##
## The GNUmakefile can generate the list of lib headers, lib sources,
## test headers and test sources. Generate the list of files with
## 'make sources'. Remove the SIMD files for libothers_la_SOURCES.
## Thanks to steeldriver on U&L.SE for help with the sed.
##
## make sources | sed 's|cryptlib.cpp cpu.cpp integer.cpp ||g' | \
## sed -e 's|[[:alnum:]]*_simd.cpp ||g' | \
## sed -e 's|[[:alnum:]]*_sse.cpp ||g' | \
## sed -e 's|[[:alnum:]]*_avx.cpp ||g' | \
## sed -e 's|[[:alnum:]]*_armv4.cpp ||g' | \
## sed -e 's|ppc_power[[:alnum:]]*.cpp ||g' | \
## fold -s -w 72
##
## The command `make sources | sed ... | fold` will create the source file
## list that can be used with `libothers_la_SOURCES` below.
##
## The list of header files can be built with 'make sources', too.
##
## make sources | sed -e 's|[[:alnum:]]*_armv4.h ||g' \
## fold -s -w 72
##
## Note: configure.ac deletes GNUmakefile. You can get it back with:
##
## git checkout GNUmakefile
##
## Automake does not support "specific flags for certain source files"
## natively, so we hack it. The hack include building 20 or so
## libraries and then combining them into an archive or shared object.
## Also see https://lists.gnu.org/archive/html/automake/2017-11/msg00000.html
## https://www.gnu.org/software/automake/manual/html_node/Per_002dObject-Flags.html.
##
## Visit the link below for the original Debian Autotools files
## https://sources.debian.net/src/libcrypto++/5.6.4-8/debian/autotools/
##
## TODO:
##
## - Figure out how to include TestPrograms/ in the dist tarball
## TestPrograms/ is unique because it is included in dist tarball but not installed
##
## - Figure out what's going on with DragonFly and dependencies
##
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
AM_DEFAULT_SOURCE_EXT = .cpp
## libcryptopp.la is created from disjoint libraries due to object file
## ordering and per-object file flags requirements. libcryptopp.la is
## named as the primary library, and the object files with special needs
## are listed as EXTRA_LTLIBRARIES. Also see
## https://lists.gnu.org/archive/html/automake/2017-11/msg00000.html.
lib_LTLIBRARIES = \
libcryptopp.la
EXTRA_LTLIBRARIES = \
libcryptlib.la \
libcpu.la \
libinteger.la \
libaria_simd.la \
libblake2s_simd.la \
libblake2b_simd.la \
libchacha_simd.la \
libchacha_avx.la \
libcham_simd.la \
libcrc_simd.la \
libdonna_sse.la \
libgcm_simd.la \
libgf2n_simd.la \
libkeccak_simd.la \
liblea_simd.la \
libneon_simd.la \
libppc_simd.la \
libppc_power7.la \
libppc_power8.la \
libppc_power9.la \
librijndael_simd.la \
libsha_simd.la \
libshacal2_simd.la \
libsimon128_simd.la \
libspeck128_simd.la \
libsm4_simd.la \
libsse_simd.la
## ARMv7-a AES and SHA by Andy Polyakov
if CRYPTOGAMS_ARM_SOURCES
EXTRA_LTLIBRARIES += libaes_armv4.la
EXTRA_LTLIBRARIES += libsha1_armv4.la
EXTRA_LTLIBRARIES += libsha256_armv4.la
EXTRA_LTLIBRARIES += libsha512_armv4.la
endif
## The remainder of the source files
EXTRA_LTLIBRARIES += libothers.la
## libcryptopp_la_SOURCES is empty because we need to create the library
## artifact from disjoint libraries due to object file ordering and
## per-object file flags requriements. Actually, the adhoc.cpp file is
## due to an automake issue of assuming C sources when the list is empty.
## https://lists.gnu.org/archive/html/automake/2017-11/msg00000.html.
libcryptopp_la_SOURCES = \
adhoc.cpp
## Don't use EXTRA_ prefix for libcryptopp_la_LIBADD. It breaks Solaris.
libcryptopp_la_LIBADD = \
$(libcryptlib_la_OBJECTS) \
$(libcpu_la_OBJECTS) \
$(libinteger_la_OBJECTS) \
$(libaria_simd_la_OBJECTS) \
$(libblake2s_simd_la_OBJECTS) \
$(libblake2b_simd_la_OBJECTS) \
$(libchacha_simd_la_OBJECTS) \
$(libchacha_avx_la_OBJECTS) \
$(libcham_simd_la_OBJECTS) \
$(libcrc_simd_la_OBJECTS) \
$(libdonna_sse_la_OBJECTS) \
$(libgcm_simd_la_OBJECTS) \
$(libgf2n_simd_la_OBJECTS) \
$(libkeccak_simd_la_OBJECTS) \
$(liblea_simd_la_OBJECTS) \
$(libneon_simd_la_OBJECTS) \
$(libppc_simd_la_OBJECTS) \
$(libppc_power7_la_OBJECTS) \
$(libppc_power8_la_OBJECTS) \
$(libppc_power9_la_OBJECTS) \
$(librijndael_simd_la_OBJECTS) \
$(libsha_simd_la_OBJECTS) \
$(libshacal2_simd_la_OBJECTS) \
$(libsimon128_simd_la_OBJECTS) \
$(libspeck128_simd_la_OBJECTS) \
$(libsm4_simd_la_OBJECTS) \
$(libsse_simd_la_OBJECTS)
## ARMv7-a AES and SHA by Andy Polyakov
if CRYPTOGAMS_ARM_SOURCES
libcryptopp_la_LIBADD += $(libaes_armv4_la_OBJECTS)
libcryptopp_la_LIBADD += $(libsha1_armv4_la_OBJECTS)
libcryptopp_la_LIBADD += $(libsha256_armv4_la_OBJECTS)
libcryptopp_la_LIBADD += $(libsha512_armv4_la_OBJECTS)
endif
## cpufeatures library on Android
if ANDROID_CPU_FEATURES
libcryptopp_la_LIBADD += $(libcpu_features_la_OBJECTS)
endif
## The remainder of the object files
libcryptopp_la_LIBADD += $(libothers_la_OBJECTS)
## Don't use EXTRA_ prefix for libcryptopp_la_DEPENDENCIES. It breaks Solaris.
libcryptopp_la_DEPENDENCIES = \
$(libcryptlib_la_OBJECTS) \
$(libcpu_la_OBJECTS) \
$(libinteger_la_OBJECTS) \
$(libaria_simd_la_OBJECTS) \
$(libblake2s_simd_la_OBJECTS) \
$(libblake2b_simd_la_OBJECTS) \
$(libchacha_simd_la_OBJECTS) \
$(libchacha_avx_la_OBJECTS) \
$(libcham_simd_la_OBJECTS) \
$(libcrc_simd_la_OBJECTS) \
$(libdonna_sse_la_OBJECTS) \
$(libkeccak_simd_la_OBJECTS) \
$(liblea_simd_la_OBJECTS) \
$(libgcm_simd_la_OBJECTS) \
$(libgf2n_simd_la_OBJECTS) \
$(libneon_simd_la_OBJECTS) \
$(libppc_simd_la_OBJECTS) \
$(libppc_power7_la_OBJECTS) \
$(libppc_power8_la_OBJECTS) \
$(libppc_power9_la_OBJECTS) \
$(librijndael_simd_la_OBJECTS) \
$(libsha_simd_la_OBJECTS) \
$(libshacal2_simd_la_OBJECTS) \
$(libsimon128_simd_la_OBJECTS) \
$(libspeck128_simd_la_OBJECTS) \
$(libsm4_simd_la_OBJECTS) \
$(libsse_simd_la_OBJECTS)
## ARMv7-a AES and SHA by Andy Polyakov
if CRYPTOGAMS_ARM_SOURCES
libcryptopp_la_DEPENDENCIES += $(libaes_armv4_la_OBJECTS)
libcryptopp_la_DEPENDENCIES += $(libsha1_armv4_la_OBJECTS)
libcryptopp_la_DEPENDENCIES += $(libsha256_armv4_la_OBJECTS)
libcryptopp_la_DEPENDENCIES += $(libsha512_armv4_la_OBJECTS)
endif
## cpufeatures library on Android
if ANDROID_CPU_FEATURES
libcryptopp_la_DEPENDENCIES += $(libcpu_features_la_OBJECTS)
endif
## The remainder of the object files
libcryptopp_la_DEPENDENCIES += $(libothers_la_OBJECTS)
## Man, did Autotools fuck this up royally...
## https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
libcryptopp_la_LDFLAGS = $(AM_LDFLAGS) -release 8.5.0 -version-info 8:5
## Source files with special needs
libcryptlib_la_SOURCES = cryptlib.cpp
libcryptlib_la_CXXFLAGS = $(AM_CXXFLAGS)
libcpu_la_SOURCES = cpu.cpp
libcpu_la_CXXFLAGS = $(AM_CXXFLAGS)
libinteger_la_SOURCES = integer.cpp
libinteger_la_CXXFLAGS = $(AM_CXXFLAGS)
libaria_simd_la_SOURCES = aria_simd.cpp
libaria_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_ARIA_FLAG)
libblake2s_simd_la_SOURCES = blake2s_simd.cpp
libblake2s_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_BLAKE2S_FLAG)
libblake2b_simd_la_SOURCES = blake2b_simd.cpp
libblake2b_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_BLAKE2B_FLAG)
libchacha_simd_la_SOURCES = chacha_simd.cpp
libchacha_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CHACHA_FLAG)
libchacha_avx_la_SOURCES = chacha_avx.cpp
libchacha_avx_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CHACHA_AVX2_FLAG)
libcham_simd_la_SOURCES = cham_simd.cpp
libcham_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CHAM_FLAG)
libcrc_simd_la_SOURCES = crc_simd.cpp
libcrc_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_CRC_FLAG)
libdonna_sse_la_SOURCES = donna_sse.cpp
libdonna_sse_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_DONNA_FLAG)
libgcm_simd_la_SOURCES = gcm_simd.cpp
libgcm_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_GCM_FLAG)
libgf2n_simd_la_SOURCES = gf2n_simd.cpp
libgf2n_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_GF2N_FLAG)
libkeccak_simd_la_SOURCES = keccak_simd.cpp
libkeccak_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_KECCAK_FLAG)
liblea_simd_la_SOURCES = lea_simd.cpp
liblea_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_LEA_FLAG)
libneon_simd_la_SOURCES = neon_simd.cpp
libneon_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_NEON_FLAG)
libppc_simd_la_SOURCES = ppc_simd.cpp
libppc_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_ALTIVEC_FLAG)
libppc_power7_la_SOURCES = ppc_power7.cpp
libppc_power7_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER7_FLAG)
libppc_power8_la_SOURCES = ppc_power8.cpp
libppc_power8_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER8_FLAG)
# Do not use CRYPTOPP_POWER9_FLAG. See https://github.com/weidai11/cryptopp/issues/986
libppc_power9_la_SOURCES = ppc_power9.cpp
# libppc_power9_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_POWER9_FLAG)
libppc_power9_la_CXXFLAGS = $(AM_CXXFLAGS)
librijndael_simd_la_SOURCES = rijndael_simd.cpp
librijndael_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_AES_FLAG)
libsha_simd_la_SOURCES = sha_simd.cpp
libsha_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SHA_FLAG)
libshacal2_simd_la_SOURCES = shacal2_simd.cpp
libshacal2_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SHA_FLAG)
libsimon128_simd_la_SOURCES = simon128_simd.cpp
libsimon128_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SIMON128_FLAG)
libspeck128_simd_la_SOURCES = speck128_simd.cpp
libspeck128_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SPECK128_FLAG)
libsm4_simd_la_SOURCES = sm4_simd.cpp
libsm4_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SM4_FLAG)
libsse_simd_la_SOURCES = sse_simd.cpp
libsse_simd_la_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTOPP_SSE2_FLAG)
## ARMv7-a AES and SHA by Andy Polyakov
## Also see https://stackoverflow.com/q/51575580/608639
if CRYPTOGAMS_ARM_SOURCES
libaes_armv4_la_SOURCES = aes_armv4.S
libsha1_armv4_la_SOURCES = sha1_armv4.S
libsha256_armv4_la_SOURCES = sha256_armv4.S
libsha512_armv4_la_SOURCES = sha512_armv4.S
libaes_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_THUMB_FLAG)
libsha1_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_FLAG)
libsha256_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_FLAG)
libsha512_armv4_la_CCASFLAGS = $(AM_CXXFLAGS) $(CRYPTOPGAMS_ARMV4_FLAG)
endif
## cpufeatures library on Android
if ANDROID_CPU_FEATURES
libcpu_features_la_SOURCES = cpu-features.c
endif
# This is the list of remaining sources files that don't need special order
# and don't need special flags. It is formed by removing cryptlib.cpp,
# cpu.cpp, integer.cpp, *_avx.cpp and *_simd.cpp files. It is sorted in
# alphabetical order for deterministic builds.
# To build this list, see the head notes.
libothers_la_SOURCES = \
3way.cpp adler32.cpp algebra.cpp algparam.cpp allocate.cpp arc4.cpp \
aria.cpp ariatab.cpp asn.cpp authenc.cpp base32.cpp base64.cpp \
basecode.cpp bfinit.cpp blake2.cpp blowfish.cpp blumshub.cpp \
camellia.cpp cast.cpp casts.cpp cbcmac.cpp ccm.cpp chacha.cpp \
chachapoly.cpp cham.cpp channels.cpp cmac.cpp crc.cpp darn.cpp \
default.cpp des.cpp dessp.cpp dh.cpp dh2.cpp dll.cpp donna_32.cpp \
donna_64.cpp dsa.cpp eax.cpp ec2n.cpp eccrypto.cpp ecp.cpp elgamal.cpp \
emsa2.cpp eprecomp.cpp esign.cpp files.cpp filters.cpp fips140.cpp \
fipstest.cpp gcm.cpp gf256.cpp gf2_32.cpp gf2n.cpp gfpcrypt.cpp \
gost.cpp gzip.cpp hc128.cpp hc256.cpp hex.cpp hight.cpp hmac.cpp \
hrtimer.cpp ida.cpp idea.cpp iterhash.cpp kalyna.cpp kalynatab.cpp \
keccak.cpp keccak_core.cpp lea.cpp luc.cpp mars.cpp marss.cpp md2.cpp \
md4.cpp md5.cpp misc.cpp modes.cpp mqueue.cpp mqv.cpp nbtheory.cpp \
oaep.cpp osrng.cpp padlkrng.cpp panama.cpp pkcspad.cpp poly1305.cpp \
polynomi.cpp pssr.cpp pubkey.cpp queue.cpp rabbit.cpp rabin.cpp \
randpool.cpp rc2.cpp rc5.cpp rc6.cpp rdrand.cpp rdtables.cpp \
rijndael.cpp ripemd.cpp rng.cpp rsa.cpp rw.cpp safer.cpp salsa.cpp \
scrypt.cpp seal.cpp seed.cpp serpent.cpp sha.cpp sha3.cpp shacal2.cpp \
shake.cpp shark.cpp sharkbox.cpp simeck.cpp simon.cpp skipjack.cpp \
sm3.cpp sm4.cpp sosemanuk.cpp speck.cpp square.cpp squaretb.cpp \
strciphr.cpp tea.cpp tftables.cpp threefish.cpp tiger.cpp tigertab.cpp \
ttmac.cpp tweetnacl.cpp twofish.cpp vmac.cpp wake.cpp whrlpool.cpp \
xed25519.cpp xtr.cpp xtrcrypt.cpp xts.cpp zdeflate.cpp zinflate.cpp \
zlib.cpp
# To build this list, see the head notes.
pkginclude_HEADERS = \
3way.h adler32.h adv_simd.h aes.h algebra.h algparam.h allocate.h \
arc4.h argnames.h aria.h arm_simd.h asn.h authenc.h base32.h base64.h \
basecode.h blake2.h blowfish.h blumshub.h camellia.h cast.h cbcmac.h \
ccm.h chacha.h chachapoly.h cham.h channels.h cmac.h config.h \
config_align.h config_asm.h config_cpu.h config_cxx.h config_dll.h \
config_int.h config_misc.h config_ns.h config_os.h config_ver.h cpu.h \
crc.h cryptlib.h darn.h default.h des.h dh.h dh2.h dll.h dmac.h donna.h \
donna_32.h donna_64.h donna_sse.h drbg.h dsa.h eax.h ec2n.h eccrypto.h \
ecp.h ecpoint.h elgamal.h emsa2.h eprecomp.h esign.h fhmqv.h files.h \
filters.h fips140.h fltrimpl.h gcm.h gf256.h gf2_32.h gf2n.h gfpcrypt.h \
gost.h gzip.h hashfwd.h hc128.h hc256.h hex.h hight.h hkdf.h hmac.h \
hmqv.h hrtimer.h ida.h idea.h integer.h iterhash.h kalyna.h keccak.h \
lea.h local.h lubyrack.h luc.h mars.h md2.h md4.h md5.h mdc.h \
mersenne.h misc.h modarith.h modes.h modexppc.h mqueue.h mqv.h \
naclite.h nbtheory.h nr.h oaep.h oids.h osrng.h ossig.h padlkrng.h \
panama.h pch.h pkcspad.h poly1305.h polynomi.h ppc_simd.h pssr.h \
pubkey.h pwdbased.h queue.h rabbit.h rabin.h randpool.h rc2.h rc5.h \
rc6.h rdrand.h rijndael.h ripemd.h rng.h rsa.h rw.h safer.h salsa.h \
scrypt.h seal.h secblock.h secblockfwd.h seckey.h seed.h serpent.h \
serpentp.h sha.h sha3.h shacal2.h shake.h shark.h simeck.h simon.h \
simple.h siphash.h skipjack.h sm3.h sm4.h smartptr.h sosemanuk.h \
speck.h square.h stdcpp.h strciphr.h tea.h threefish.h tiger.h trap.h \
trunhash.h ttmac.h tweetnacl.h twofish.h vmac.h wake.h whrlpool.h \
words.h xed25519.h xtr.h xtrcrypt.h xts.h zdeflate.h zinflate.h zlib.h
noinst_HEADERS = \
local.h \
bench.h \
factory.h \
resource.h \
validate.h \
aes_armv4.h \
sha1_armv4.h \
sha256_armv4.h \
sha512_armv4.h
bin_PROGRAMS = cryptest$(EXEEXT)
cryptest_CXXFLAGS = $(AM_CXXFLAGS) $(CRYPTEST_CXXFLAGS) -DCRYPTOPP_DATA_DIR='"${pkgdatadir}/"'
cryptest_SOURCES = \
test.cpp bench1.cpp bench2.cpp bench3.cpp datatest.cpp \
dlltest.cpp fipsalgt.cpp validat0.cpp validat1.cpp validat2.cpp \
validat3.cpp validat4.cpp validat5.cpp validat6.cpp validat7.cpp \
validat8.cpp validat9.cpp validat10.cpp regtest1.cpp regtest2.cpp \
regtest3.cpp regtest4.cpp
nodist_cryptest_SOURCES = adhoc.cpp
cryptest_LDADD = $(lib_LTLIBRARIES)
CLEANFILES = adhoc.cpp
## Copy the TestVectors/ and TestData/ to ${pkgdatadir}.
## TestPrograms/ is included in the tarball but not installed.
## https://www.gnu.org/software/automake/manual/html_node/Data.html
# Create with 'ls TestData/*.dat'. These files get installed.
testdata_FILES = \
TestData/3desval.dat TestData/fhmqv160.dat TestData/rc2val.dat \
TestData/3wayval.dat TestData/fhmqv256.dat TestData/rc5val.dat \
TestData/aria.dat TestData/fhmqv384.dat TestData/rc6val.dat \
TestData/camellia.dat TestData/fhmqv512.dat TestData/rijndael.dat \
TestData/cast128v.dat TestData/gostval.dat TestData/rsa1024.dat \
TestData/cast256v.dat TestData/hmqv160.dat TestData/rsa2048a.dat \
TestData/defdmac1.bin TestData/hmqv256.dat TestData/rsa2048.dat \
TestData/defdmac2.bin TestData/hmqv384.dat TestData/rsa400pb.dat \
TestData/descert.dat TestData/hmqv512.dat TestData/rsa400pv.dat \
TestData/dh1024.dat TestData/ideaval.dat TestData/rsa512a.dat \
TestData/dh2048.dat TestData/luc1024.dat TestData/rw1024.dat \
TestData/dlie1024.dat TestData/luc2048.dat TestData/rw2048.dat \
TestData/dlie2048.dat TestData/lucc1024.dat TestData/saferval.dat \
TestData/dsa1024b.dat TestData/lucc512.dat TestData/serpentv.dat \
TestData/dsa1024.dat TestData/lucd1024.dat TestData/shacal2v.dat \
TestData/dsa512.dat TestData/lucd512.dat TestData/sharkval.dat \
TestData/ecies_p160.dat TestData/lucs1024.dat TestData/skipjack.dat \
TestData/ecies_t163.dat TestData/lucs512.dat TestData/squareva.dat \
TestData/ed25519.dat TestData/marsval.dat TestData/twofishv.dat \
TestData/ed25519v0.dat TestData/mqv1024.dat TestData/usage.dat \
TestData/ed25519v1.dat TestData/mqv2048.dat TestData/x25519.dat \
TestData/elgc1024.dat TestData/nr1024.dat TestData/x25519v0.dat \
TestData/esig1023.dat TestData/nr2048.dat TestData/x25519v1.dat \
TestData/esig1536.dat TestData/rabi1024.dat TestData/xtrdh171.dat \
TestData/esig2046.dat TestData/rabi2048.dat TestData/xtrdh342.dat
# Create with 'ls TestVectors/*.txt'. These files get installed.
testvector_FILES = \
TestVectors/aead.txt TestVectors/rsa_pss.txt \
TestVectors/aes.txt TestVectors/rw.txt \
TestVectors/all.txt TestVectors/salsa.txt \
TestVectors/aria.txt TestVectors/seal.txt \
TestVectors/blake2b.txt TestVectors/seed.txt \
TestVectors/blake2s.txt TestVectors/sha1_160_fips_180.txt \
TestVectors/blake2.txt TestVectors/sha1_fips_180.txt \
TestVectors/camellia.txt TestVectors/sha2_224_fips_180.txt \
TestVectors/ccm.txt TestVectors/sha2_256_fips_180.txt \
TestVectors/chacha20poly1305.txt TestVectors/sha2_384_fips_180.txt \
TestVectors/chacha_tls.txt TestVectors/sha2_512_fips_180.txt \
TestVectors/chacha.txt TestVectors/sha2_fips_180.txt \
TestVectors/cham.txt TestVectors/sha2.txt \
TestVectors/cmac.txt TestVectors/sha3_224_fips_202.txt \
TestVectors/dlies.txt TestVectors/sha3_256_fips_202.txt \
TestVectors/dsa_1363.txt TestVectors/sha3_384_fips_202.txt \
TestVectors/dsa_rfc6979.txt TestVectors/sha3_512_fips_202.txt \
TestVectors/dsa.txt TestVectors/sha3_fips_202.txt \
TestVectors/eax.txt TestVectors/sha3.txt \
TestVectors/esign.txt TestVectors/shacal2.txt \
TestVectors/gcm.txt TestVectors/shake.txt \
TestVectors/hc128.txt TestVectors/sha.txt \
TestVectors/hc256.txt TestVectors/simeck.txt \
TestVectors/hight.txt TestVectors/simon.txt \
TestVectors/hkdf.txt TestVectors/siphash.txt \
TestVectors/hmac.txt TestVectors/skipjack.txt \
TestVectors/kalyna.txt TestVectors/sm3.txt \
TestVectors/keccak.txt TestVectors/sm4.txt \
TestVectors/lea.txt TestVectors/sosemanuk.txt \
TestVectors/mars.txt TestVectors/speck.txt \
TestVectors/nr.txt TestVectors/tea.txt \
TestVectors/panama.txt TestVectors/threefish.txt \
TestVectors/poly1305aes.txt TestVectors/ttmac.txt \
TestVectors/poly1305_tls.txt TestVectors/vmac.txt \
TestVectors/rabbit.txt TestVectors/wake.txt \
TestVectors/Readme.txt TestVectors/whrlpool.txt \
TestVectors/rsa_oaep.txt TestVectors/xchacha.txt \
TestVectors/rsa_pkcs1_1_5.txt TestVectors/xts.txt
# Create with 'ls TestPrograms/test_*.cxx'. These files do not get installed.
# They exist so the feature tests can be run from the configure directory.
testprogs_FILES= \
TestPrograms/test_32bit.cxx
TestPrograms/test_64bit.cxx
TestPrograms/test_arm_acle_header.cxx
TestPrograms/test_arm_aes.cxx
TestPrograms/test_arm_asimd.cxx
TestPrograms/test_arm_crc.cxx
TestPrograms/test_arm_neon.cxx
TestPrograms/test_arm_neon_header.cxx
TestPrograms/test_arm_pmull.cxx
TestPrograms/test_arm_sha1.cxx
TestPrograms/test_arm_sha256.cxx
TestPrograms/test_arm_sha3.cxx
TestPrograms/test_arm_sha512.cxx
TestPrograms/test_arm_sm3.cxx
TestPrograms/test_arm_sm4.cxx
TestPrograms/test_asm_mixed.cxx
TestPrograms/test_cxx11_alignas.cxx
TestPrograms/test_cxx11_alignof.cxx
TestPrograms/test_cxx11_assert.cxx
TestPrograms/test_cxx11_atomic.cxx
TestPrograms/test_cxx11_auto.cxx
TestPrograms/test_cxx11_constexpr.cxx
TestPrograms/test_cxx11.cxx
TestPrograms/test_cxx11_deletefn.cxx
TestPrograms/test_cxx11_enumtype.cxx
TestPrograms/test_cxx11_initializer.cxx
TestPrograms/test_cxx11_lambda.cxx
TestPrograms/test_cxx11_noexcept.cxx
TestPrograms/test_cxx11_nullptr.cxx
TestPrograms/test_cxx11_staticinit.cxx
TestPrograms/test_cxx11_sync.cxx
TestPrograms/test_cxx11_vartemplates.cxx
TestPrograms/test_cxx14.cxx
TestPrograms/test_cxx17_assert.cxx
TestPrograms/test_cxx17.cxx
TestPrograms/test_cxx17_exceptions.cxx
TestPrograms/test_cxx98_exception.cxx
TestPrograms/test_cxx.cxx
TestPrograms/test_glibc.cxx
TestPrograms/test_newlib.cxx
TestPrograms/test_ppc_aes.cxx
TestPrograms/test_ppc_altivec.cxx
TestPrograms/test_ppc_power7.cxx
TestPrograms/test_ppc_power8.cxx
TestPrograms/test_ppc_power9.cxx
TestPrograms/test_ppc_sha.cxx
TestPrograms/test_ppc_vmull.cxx
TestPrograms/test_pthreads.cxx
TestPrograms/test_x86_aes.cxx
TestPrograms/test_x86_avx2.cxx
TestPrograms/test_x86_avx512.cxx
TestPrograms/test_x86_avx.cxx
TestPrograms/test_x86_clmul.cxx
TestPrograms/test_x86_cpuid.cxx
TestPrograms/test_x86_rdrand.cxx
TestPrograms/test_x86_rdseed.cxx
TestPrograms/test_x86_sha.cxx
TestPrograms/test_x86_sse2.cxx
TestPrograms/test_x86_sse3.cxx
TestPrograms/test_x86_sse41.cxx
TestPrograms/test_x86_sse42.cxx
TestPrograms/test_x86_ssse3.cxx
TestPrograms/test_x86_via_aes.cxx
TestPrograms/test_x86_via_rng.cxx
TestPrograms/test_x86_via_sha.cxx
nobase_dist_pkgdata_DATA = \
$(testdata_FILES) \
$(testvector_FILES)
# Can't seem to get this to work, despite the fiddling attempts.
# https://www.gnu.org/software/automake/manual/html_node/Uniform.html and
# https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html
#nobase_noinst_data_DATA = \
# $(testprogs_FILES)
# Workaround Automake bug. We can't seem to include the TestProgram/ data
# in the tarball without installation using their Uniform Naming Scheme
# https://www.gnu.org/software/automake/manual/html_node/Uniform.html and
# https://www.gnu.org/software/automake/manual/html_node/Program-and-Library-Variables.html
dist-hook:
chmod -R u+w $(distdir)
cp -r TestPrograms/ $(distdir)
rm -f $(distdir)/TestPrograms/dump2def.cxx
## Automake bug workaround. If libcryptopp_la_SOURCES is an empty list, Automake assumes
## C source files and drives link through the C compiler. We provide the empty adhoc.cpp
## to get things back on course, so adhoc.cpp must always be copied.
adhoc.cpp:
cp adhoc.cpp.proto adhoc.cpp
touch adhoc.cpp
## Remove doc directory if present
distclean-local:
-rm -rf html-docs doxyfile.stamp
## Automake does not properly uninstall the library test data and vectors
uninstall-hook:
-rm -rf ${pkgdatadir}
-rm -rf ${pkghtmldir}
## Doxygen is available but not built by default
## TODO: copy docs to ${pkghtmldir} if built
if CRYPTOPP_DOXYGEN_AVAILABLE
## PHONY targets. Automake can only handle one of them...
.PHONY: doc docs html htmldoc checkout reset
doc docs html htmldoc:
$(DOXYGEN) Doxyfile -d CRYPTOPP_DOXYGEN_PROCESSING
endif
# Restore GNUmakefile
checkout:
git checkout master -f
# Restore GNUmakefile
reset:
git reset --hard HEAD

File diff suppressed because it is too large Load Diff

View File

@ -1,31 +0,0 @@
## libcryptopp.pc.in - Autotools package configuration file for Crypto++.
## written and placed in public domain by Jeffrey Walton.
## based on Debian package configuration by László Böszörményi.
##
## libdir=@libdir@ is not working as expected for Fedora, Solaris,
## and other 64-bit OSes that use library directories like /lib64,
## /usr/lib64, /lib/amd64 and friends. Also see:
## * https://stackoverflow.com/q/47124066/608639
## * https://stackoverflow.com/q/46847939/608639 and
## * https://bugzilla.redhat.com/show_bug.cgi?id=1510073.
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: @PACKAGE_NAME@
Description: free C++ class library of cryptographic schemes
Authors: originally written by Wei Dai
Maintainers: the Crypto++ community
URL: @PACKAGE_URL@
Version: @PACKAGE_VERSION@
Bug-Report: @PACKAGE_BUGREPORT@
Requires:
## These flags are mostly broken. We cannot record user choices,
## and then have user programs use the same flags later.
## https://lists.freedesktop.org/archives/pkg-config/2017-November/001087.html
Cflags: -I${includedir}
Libs: -L${libdir} -lcryptopp

View File

@ -1,22 +0,0 @@
# Copyright (C) 2016 Openwrt.org
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI fan control
LUCI_DEPENDS:=+coreutils-stat
LUCI_PKGARCH:=all
PKG_VERSION:=1.0.0-3
PKG_RELEASE:=
PKG_MAINTAINER:=jjm2473 <jjm2473@gmail.com>
define Package/luci-app-fan/conffiles
/etc/config/luci-fan
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -1,38 +0,0 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2023 jjm2473
]]--
module("luci.controller.admin.luci-fan", package.seeall)
function index()
require "luci.sys"
local appname = "luci-fan"
local defaultpage = nil
if luci.sys.call("/usr/libexec/fan-control get >/dev/null 2>&1") == 0 then
entry({"admin", "system", appname}, cbi("luci-fan"), _("Fan Control"), 60)
else
entry({"admin", "system", appname}).dependent = true
end
entry({"admin", "system", appname, "get_fan_info"}, call("get_fan_info"), nil).leaf = true
end
function get_fan_info(zone, trip)
require "luci.util"
local words
if zone and trip and string.match(zone, "^thermal_zone%d+$") and string.match(trip, "^%d+$") then
local fs = require "nixio.fs"
words = {
luci.util.trim(fs.readfile("/sys/class/thermal/"..zone.."/temp")),
luci.util.trim(fs.readfile("/sys/class/thermal/"..zone.."/trip_point_"..trip.."_temp"))
}
else
local sys = require "luci.sys"
words = luci.util.split(luci.util.trim(sys.exec("/usr/libexec/fan-control temp 2>/dev/null")), " ")
end
local zone_temp = tonumber(words[1]) / 1000; -- ˚C
local fan_on_temp = tonumber(words[2]) / 1000; -- ˚C
luci.http.status(200, "ok")
luci.http.prepare_content("application/json")
luci.http.write_json({zone_temp=zone_temp, fan_on_temp=fan_on_temp})
end

View File

@ -1,93 +0,0 @@
--[[
LuCI - Lua Configuration Interface
Copyright 2023 jjm2473
]]--
local m, s, o
require "luci.util"
local fs = require "nixio.fs"
local sys = require "luci.sys"
local words = luci.util.split(luci.util.trim(sys.exec("/usr/libexec/fan-control get 2>/dev/null")), " ")
if #words < 3 then
return
end
m = Map("luci-fan", translate("Fan Control"), translate("Control fan start and stop temperature. This plugin can only configure the lowest gear, not necessarily applicable to all devices."))
s = m:section(SimpleSection)
s.template = "luci-fan"
s.thermal_zone = words[1]
s.trip_point = words[2]
s.thermal_type = luci.util.trim(fs.readfile("/sys/class/thermal/"..words[1].."/type"))
s = m:section(TypedSection, "luci-fan", translate("Fan Settings"))
s.addremove = false
s.anonymous = true
o = s:option(Flag, "enabled", translate("Enabled"), translate("Whether to apply the settings"))
o.default = 0
local on_temp = s:option(Value, "on_temp", translate("Fan start temperature") .. " (&#8451;)")
on_temp.datatype = "and(uinteger,min(5))"
on_temp.rmempty = false
on_temp.default = math.floor(tonumber(words[3])/1000)
if #words > 3 then
on_temp.datatype = string.format("and(uinteger,range(5,%u))", math.floor(tonumber(words[4])/1000 - 1))
end
o = s:option(Value, "off_temp", translate("Fan stop temperature") .. " (&#8451;)", translate("Optional, MUST be lower than the fan start temperature. Default fan start temperature minus 5 &#8451;"))
o.datatype = "uinteger"
o.rmempty = true
function o.parse(self, section, novld)
local fvalue = self:formvalue(section)
local fexist = ( fvalue and (#fvalue > 0) ) -- not "nil" and "not empty"
local vvalue, errtxt = self:validate(fvalue)
if not vvalue then
if novld then -- and "novld" set
return -- then exit without raising an error
end
if fexist then -- and there is a formvalue
self:add_error(section, "invalid", errtxt or self.title .. ": invalid")
return -- so data are invalid
end
end
local rm_opt = ( self.rmempty or self.optional )
local vexist = ( vvalue and (#vvalue > 0) ) and true or false -- not "nil" and "not empty"
local eq_def = ( vvalue == self.default ) -- equal_default flag
-- (rmempty or optional) and (no data or equal_default)
if rm_opt and (not vexist or eq_def) then
if self:remove(section) then -- remove data from UCI
self.section.changed = true -- and push events
end
return
end
local cvalue = self:cfgvalue(section)
local eq_cfg = ( vvalue == cvalue ) -- update equal_config flag
-- not forcewrite and no changes, so nothing to write
if not self.forcewrite and eq_cfg then
return
end
local onvalue = on_temp:validate(on_temp:formvalue(section))
if onvalue and #onvalue > 0 then
if tonumber(vvalue) >= tonumber(onvalue) then
self:add_error(section, "invalid", translate("Fan stop temperature MUST be lower than fan start temperature"))
return
end
else
return
end
-- write data to UCI; raise event only on changes
if self:write(section, vvalue) and not eq_cfg then
self.section.changed = true
end
end
return m

View File

@ -1,30 +0,0 @@
<div class="cbi-section">
<div class="cbi-section-node">
<h3><%:Status%></h3>
<table class="table">
<tbody>
<tr class="tr"><td class="td"><%:Thermal zone%></td><td class="td"><%=self.thermal_zone%> (<%:type:%> <%=self.thermal_type%>)</td></tr>
<tr class="tr"><td class="td"><%:Trip point%></td><td class="td">trip_point_<%=self.trip_point%></td></tr>
<tr class="tr"><td class="td"><%:Fan start temperature%></td><td class="td" id="fan_on_temp"></td></tr>
<tr class="tr"><td class="td"><%:Current temperature%></td><td class="td" id="zone_temp"></td></tr>
</tbody>
</table>
</div>
</div>
<script type="text/javascript">//<![CDATA[
(function(){
var fan_on_temp = document.getElementById('fan_on_temp');
var zone_temp = document.getElementById('zone_temp');
XHR.poll(3, '<%=url("admin/system/luci-fan/get_fan_info/"..self.thermal_zone.."/"..self.trip_point)%>', null,
function(x, st) {
if (st) {
if (fan_on_temp)
fan_on_temp.innerHTML = st.fan_on_temp + ' &#8451;';
if (zone_temp)
zone_temp.innerHTML = st.zone_temp + ' &#8451;';
}
}
);
})()
//]]></script>

View File

@ -1,64 +0,0 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:19
msgid ""
"Control fan start and stop temperature. This plugin can only configure the "
"lowest gear, not necessarily applicable to all devices."
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:9
msgid "Current temperature"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:31
msgid "Enabled"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/controller/admin/luci-fan.lua:13
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:19
msgid "Fan Control"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:27
msgid "Fan Settings"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:34
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:8
msgid "Fan start temperature"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:42
msgid "Fan stop temperature"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:80
msgid "Fan stop temperature MUST be lower than fan start temperature"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:42
msgid ""
"Optional, MUST be lower than the fan start temperature. Default fan start "
"temperature minus 5 &#8451;"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:3
msgid "Status"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:6
msgid "Thermal zone"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:7
msgid "Trip point"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:31
msgid "Whether to apply the settings"
msgstr ""
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:6
msgid "type:"
msgstr ""

View File

@ -1,68 +0,0 @@
msgid ""
msgstr ""
"Language: zh_Hans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:19
msgid ""
"Control fan start and stop temperature. This plugin can only configure the "
"lowest gear, not necessarily applicable to all devices."
msgstr "控制风扇启停温度。此插件仅配置最低档位触发点,不一定适用于所有设备"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:9
msgid "Current temperature"
msgstr "当前温度"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:31
msgid "Enabled"
msgstr "启用"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/controller/admin/luci-fan.lua:13
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:19
msgid "Fan Control"
msgstr "风扇控制"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:27
msgid "Fan Settings"
msgstr "风扇设置"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:34
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:8
msgid "Fan start temperature"
msgstr "风扇启动温度"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:42
msgid "Fan stop temperature"
msgstr "风扇停止温度"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:80
msgid "Fan stop temperature MUST be lower than fan start temperature"
msgstr "风扇停止温度必须小于风扇启动温度"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:42
msgid ""
"Optional, MUST be lower than the fan start temperature. Default fan start "
"temperature minus 5 &#8451;"
msgstr "可选,必须小于风扇启动温度。默认风扇启动温度减 5 &#8451;"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:3
msgid "Status"
msgstr "状态"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:6
msgid "Thermal zone"
msgstr "温感区"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:7
msgid "Trip point"
msgstr "触发点"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/model/cbi/luci-fan.lua:31
msgid "Whether to apply the settings"
msgstr "是否应用此设置"
#: /Volumes/data/src/nas-packages-luci/luci/luci-app-fan/luasrc/view/luci-fan.htm:6
msgid "type:"
msgstr "类型:"

View File

@ -1,4 +0,0 @@
config luci-fan
option enabled 0
# option on_temp 55
# option off_temp 50

View File

@ -1,28 +0,0 @@
#!/bin/sh /etc/rc.common
START=20
boot() {
/usr/libexec/fan-control init
start
}
start_instance() {
local enabled
config_get_bool enabled $1 enabled 0
[[ "$enabled" = 1 ]] || return 0
config_get on_temp $1 on_temp
config_get off_temp $1 off_temp
[[ -n "$on_temp" ]] && on_temp=${on_temp}000
[[ -n "$off_temp" ]] && off_temp=${off_temp}000
/usr/libexec/fan-control set "$on_temp" $off_temp
}
start() {
config_load luci-fan
config_foreach start_instance luci-fan
return 0
}

View File

@ -1,12 +0,0 @@
#!/bin/sh
/usr/libexec/fan-control init
uci -q batch <<-EOF >/dev/null
delete ucitrack.@luci-fan[-1]
add ucitrack luci-fan
set ucitrack.@luci-fan[-1].init=luci-fan
commit ucitrack
EOF
exit 0

View File

@ -1,145 +0,0 @@
#!/bin/sh
# author: jjm2473
SAVE=/tmp/run/fanTP
ACTION=${1}
shift
# print: zone trip_point current_target_temp [max_target_temp]
# ex. thermal_zone0 0 50000 60000
function getFanTP() {
local zone cdev trip temp mintemp mintrip minzone maxtemp
[[ -d /sys/class/thermal ]] || return 1
cd /sys/class/thermal
for zone in thermal_zone* ; do
cd "$zone"
for cdev in `ls | grep 'cdev[0-9]\+$'`; do
[[ -d "$cdev" ]] || continue
grep -Fiq fan "$cdev/type" || continue
trip=`cat ${cdev}_trip_point`
grep -Fwq active trip_point_${trip}_type || continue
[[ "`stat -c '%#a' trip_point_${trip}_temp || echo 0444`" = "0644" ]] || continue
temp=`cat trip_point_${trip}_temp`
if [[ -z "$mintemp" ]] || [[ "$temp" -lt "$mintemp" ]]; then
if [[ -n "$mintemp" ]]; then
if [[ "$zone" = "$minzone" ]]; then
maxtemp=$mintemp
else
maxtemp=
fi
fi
mintemp=$temp
mintrip=$trip
minzone=$zone
elif [[ -z "$maxtemp" ]] || [[ "$temp" -lt "$maxtemp" ]]; then
maxtemp=$temp
fi
done
cd /sys/class/thermal
done
if [[ -n "$mintemp" ]]; then
echo "$minzone" "$mintrip" "$mintemp" $maxtemp
return 0
else
return 1
fi
}
function getFanTP_C() {
if [[ -f "$SAVE" ]]; then
if [[ -s "$SAVE" ]]; then
cat "$SAVE"
return 0
else
return 1
fi
fi
( getFanTP ) | tee "$SAVE"
[[ -s "$SAVE" ]]
}
function getFanTP_U() {
set $(getFanTP_C)
[[ -n "$1" && -n "$2" ]] || return 1
local onTemp=`cat "/sys/class/thermal/${1}/trip_point_${2}_temp"`
echo "$1" "$2" "$onTemp" $4
return 0
}
function initFanTP() {
[[ -f "$SAVE" ]] || ( getFanTP >"$SAVE" )
}
# param: ON_TEMP [OFF_TEMP]
# OFF_TEMP = ON_TEMP - 5000 if not set
# ex. 60000 55000
function setFanTP() {
local ON_TEMP=$1
local OFF_TEMP=$2
[[ -n "$ON_TEMP" ]] || {
echo "ON_TEMP must be present" >&2
return 1
}
if [[ -z "$OFF_TEMP" ]]; then
[[ "$ON_TEMP" -gt 5000 ]] || {
echo "ON_TEMP must greater than 5000 when OFF_TEMP not present" >&2
return 1
}
OFF_TEMP=$(( $ON_TEMP - 5000 ))
fi
[[ "$ON_TEMP" -gt "$OFF_TEMP" ]] || {
echo "ON_TEMP must greater than OFF_TEMP" >&2
return 1
}
local HYST=$(( $ON_TEMP - $OFF_TEMP ))
set $(getFanTP_C)
[[ -n "$1" && -n "$2" ]] || return 1
[[ -d "/sys/class/thermal/${1}" ]] || return 1
[[ -n "$4" ]] && [[ "$ON_TEMP" -ge "$4" ]] && {
ON_TEMP=$(( $4 - 5000 ))
echo "WARN: ON_TEMP greater than next TP $4, fixed to $ON_TEMP" >&2
}
echo "$ON_TEMP" > "/sys/class/thermal/${1}/trip_point_${2}_temp"
echo "$HYST" > "/sys/class/thermal/${1}/trip_point_${2}_hyst"
}
# print: current thermal sensor value and fan on temp
function getTemp() {
set $(getFanTP_C)
[[ -n "$1" && -n "$2" ]] || return 1
[[ -f "/sys/class/thermal/$1/temp" ]] || return 1
local temp=`cat "/sys/class/thermal/$1/temp"`
local tpt=`cat "/sys/class/thermal/$1/trip_point_${2}_temp"`
echo "$temp $tpt"
}
usage() {
echo "usage: $0 sub-command"
echo "where sub-command is one of:"
echo " get Get Fan setting"
echo " set ON_TEMP [OFF_TEMP] Set Fan setting"
echo " temp Get current thermal temp and Fan on temp"
echo " init init, internal used"
}
case ${ACTION} in
"get")
getFanTP_U
;;
"set")
setFanTP "$@"
;;
"temp")
getTemp
;;
"init")
initFanTP
;;
*)
usage
exit 1
;;
esac

View 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 Leigod Game Accelerater
LUCI_PKGARCH:=all
LUCI_DEPENDS:=+libpcap +iptables +kmod-ipt-nat +iptables-mod-tproxy +kmod-ipt-tproxy +kmod-tun +kmod-netem +tc-full +kmod-ipt-ipset +ipset +curl +miniupnpd +conntrack +conntrackd +leigod-acc
PKG_VERSION:=1
PKG_RELEASE:=3
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -0,0 +1,101 @@
module("luci.controller.acc", package.seeall)
function index()
require("luci.i18n")
entry({ "admin", "services", "acc" }, alias("admin", "services", "acc", "service"), translate("Leigod Acc"), 50)
entry({ "admin", "services", "acc", "service" }, cbi("leigod/service"), translate("Leigod Service"), 30).i18n = "acc"
entry({ "admin", "services", "acc", "device" }, cbi("leigod/device"), translate("Leigod Device"), 50).i18n = "acc"
entry({ "admin", "services", "acc", "app" }, cbi("leigod/app"), translate("Leigod App"), 60).i18n = "acc"
entry({ "admin", "services", "acc", "notice" }, cbi("leigod/notice"), translate("Leigod Notice"), 80).i18n = "acc"
entry({ "admin", "services", "acc", "status" }, call("get_acc_status")).leaf = true
entry({ "admin", "services", "acc", "start_acc_service" }, call("start_acc_service"))
entry({ "admin", "services", "acc", "stop_acc_service" }, call("stop_acc_service"))
end
-- get_acc_status get acc status
function get_acc_status()
-- util module
local util = require "luci.util"
local uci = require "luci.model.uci".cursor()
local translate = luci.i18n.translate
-- init result
local resp = {}
-- init state
resp.service = translate("Acc Service Disabled")
resp.state = {}
-- check if exist
local exist = util.exec("ps | grep acc-gw | grep -v grep")
-- check if program is running
if exist ~= "" then
resp.service = translate("Acc Service Enabled")
end
-- get uci
local results = uci:get_all("accelerator")
for _, typ in pairs({ "Phone", "PC", "Game", "Unknown" }) do
local state = uci:get("accelerator", typ, "state")
-- check state
local state_text = "None"
if state == nil or state == '0' then
elseif state == '1' then
state_text = translate("Acc Catalog Started")
elseif state == '2' then
state_text = translate("Acc Catalog Stopped")
elseif state == '3' then
state_text = translate("Acc Catalog Paused")
end
-- store text
resp.state[translate(typ .. "_Catalog")] = state_text
end
luci.http.prepare_content("application/json")
luci.http.write_json(resp)
end
-- start_acc_service
function start_acc_service()
-- util module
local util = require "luci.util"
util.exec("/etc/init.d/acc enable")
util.exec("/etc/init.d/acc restart")
local resp = {}
resp.result = "OK"
luci.http.prepare_content("application/json")
luci.http.write_json(resp)
end
-- stop_acc_service
function stop_acc_service()
-- util module
local util = require "luci.util"
util.exec("/etc/init.d/acc stop")
util.exec("/etc/init.d/acc disable")
local resp = {}
resp.result = "OK"
luci.http.prepare_content("application/json")
luci.http.write_json(resp)
end
-- schedule_pause
function schedule_pause()
local util = require "luci.util"
local uci = require "luci.model.uci".cursor()
local schedule_enabled = uci:get("accelerator", "system", "schedule_enabled") or "0"
local pause_time = uci:get("accelerator", "system", "pause_time") or "01:00"
local username = uci:get("accelerator", "system", "username") or ""
local password = uci:get("accelerator", "system", "password") or ""
-- Remove existing cron jobs related to leigod_helper.sh
util.exec("sed -i '/usr/sbin/leigod/leigod_helper.sh/d' /etc/crontabs/root")
if schedule_enabled == "1" then
-- Set the new cron job
local hour, minute = pause_time:match("(%d+):(%d+)")
local cron_time = string.format("%d %d * * * USERNAME=%s PASSWORD=%s /usr/sbin/leigod/leigod_helper.sh", tonumber(minute), tonumber(hour), username, password)
util.exec(string.format('echo "%s" >> /etc/crontabs/root', cron_time))
util.exec("/etc/init.d/cron restart")
end
local resp = {}
resp.result = "OK"
luci.http.prepare_content("application/json")
luci.http.write_json(resp)
end

View File

@ -0,0 +1,7 @@
require("luci.util")
mp = Map("accelerator")
mp:section(SimpleSection).template = "leigod/app"
return mp

View File

@ -0,0 +1,157 @@
local uci = require "luci.model.uci".cursor()
local util = require "luci.util"
local fs = require "nixio.fs"
local pairs = pairs
local io = io
-- config
m = Map("accelerator")
m.title = translate("Leigod Device Config")
m.description = translate("Control Device Config")
-- get neigh info
neigh = m:section(NamedSection, "base", "system", translate("Neigh Device"))
neigh_tab = neigh:option(ListValue, "neigh", translate("acc interface"))
local sys_dir = util.exec("ls /sys/class/net")
if sys_dir ~= nil then
neigh_tab:value("br-lan")
for ifc in string.gmatch(sys_dir, "[^\n]+") do
neigh_tab:value(ifc)
end
end
-- range all device
device = m:section(NamedSection, "device", "hardware", translate("Device Info"))
device:tab("none_catalog", translate("None_Catalog"))
device:tab("phone_catalog", translate("Phone_Catalog"))
device:tab("pc_catalog", translate("PC_Catalog"))
device:tab("game_catalog", translate("Game_Catalog"))
device:tab("vr_catalog", translate("VR_Catalog"))
device:tab("unknown_catalog", translate("Unknown_Catalog"))
local dhcp_map = {}
-- check dhcp file
if fs.access("/tmp/dhcp.leases") then
for line in io.lines("/tmp/dhcp.leases") do
-- check if read empty line
if line == "" then
break
end
-- split line
local valueSl = string.gmatch(line, "[^ ]+")
-- read time
valueSl()
-- read mac
local mac = valueSl()
-- get ip
local ip = valueSl()
-- get host name
local hostname = valueSl()
-- key
local key = string.gsub(mac, ":", "")
-- store key
dhcp_map[key] = {
["key"] = key,
["mac"] = mac,
["ip"] = ip,
["name"] = hostname
}
end
end
ifc = uci:get("accelerator", "base", "neigh")
if ifc == nil then
ifc = "br-lan"
end
local arp_map = {}
-- check if arp exist
if fs.access("/proc/net/arp") then
-- read all item from arp
for line in io.lines("/proc/net/arp") do
-- check if line is not exist
if line == "" then
break
end
-- split item
local valueSl = string.gmatch(line, "[^ ]+")
-- get ip
local ip = valueSl()
-- get type
valueSl()
-- get flag
local flag = valueSl()
-- get mac
local mac = valueSl()
-- get mask
valueSl()
-- get device
local dev = valueSl()
-- get key
local key = string.gsub(mac, ":", "")
-- check if device and flag state
if dev == ifc and flag == "0x2" then
-- get current name
local name = mac
if dhcp_map[key] ~= nil and dhcp_map[key] ~= "*" then
name = dhcp_map[key].name
end
arp_map[key] = {
["key"] = key,
["mac"] = mac,
["ip"] = ip,
["name"] = name
}
end
end
end
-- get device config
for key, item in pairs(arp_map) do
local typ = uci:get("accelerator", "device", key)
-- get device catalog from type
local catalog = "none_catalog"
-- default to unknown device
if typ == nil then
typ = 9
else
typ = tonumber(typ)
end
if typ == nil then
catalog = "unknown_catalog"
elseif typ >= 1 and typ <= 3 then
catalog = "game_catalog"
elseif typ >= 4 and typ <= 6 then
catalog = "pc_catalog"
elseif typ >= 7 and typ <= 8 then
catalog = "phone_catalog"
elseif typ >= 20 and typ <= 21 then
catalog = "vr_catalog"
else
catalog = "unknown_catalog"
end
-- device type
device_typ = device:taboption(catalog, ListValue, key, item.name)
device_typ:value("0", "None")
device_typ:value("1", "XBox")
device_typ:value("2", "Switch")
device_typ:value("3", "Play Station")
device_typ:value("4", "Steam Deck")
device_typ:value("5", "Windows")
device_typ:value("6", "MacBook")
device_typ:value("7", "Android")
device_typ:value("8", "iPhone")
device_typ:value("20", "Oculus")
device_typ:value("21", "HTC Vive")
device_typ:value("22", "Pico")
device_typ:value("9", "Unknown")
end
-- set
device.write = function()
util.exec("/etc/init.d/acc restart")
end
return m

View File

@ -0,0 +1,10 @@
local uci = require "luci.model.uci".cursor()
-- config
m = Map("accelerator")
m.title = translate("Leigod Notice")
m.description = translate("Leigod Accelerator Usage")
m:section(SimpleSection).template = "leigod/notice"
return m

View File

@ -0,0 +1,46 @@
local uci = require "luci.model.uci".cursor()
-- config
m = Map("accelerator")
m.title = translate("Leigod Accelerator Config")
m.description = translate("Control Accelerator Config")
s = m:section(TypedSection, "system")
s.addremove = false
s.anonymous = true
enable = s:option(Flag,"enabled" ,translate("Enable"))
enable.rmempty = false
enable.default = 0
tun = s:option(Flag,"tun" ,translate("Tunnel Mode"))
tun.rmempty = false
tun.default = 0
tun.description = translate("Turning Leigod into Tunnel mode can make some proxy plugins available")
schedule_enabled = s:option(Flag, "schedule_enabled", translate("Scheduled Pause"))
schedule_enabled.rmempty = false
schedule_enabled.default = 0
schedule_enabled.description = translate("夜猫子选项")
pause_time = s:option(ListValue, "pause_time", translate("Pause Time"))
pause_time:depends("schedule_enabled", 1)
for i = 0, 23 do
pause_time:value(string.format("%02d:00", i), string.format("%02d:00", i))
end
pause_time.rmempty = false
pause_time.description = translate("选择好时间雷神加速器会定时暂停,请避开你的游戏时间以免影响游戏体验")
username = s:option(Value, "username", translate("Phone Number"))
username:depends("schedule_enabled", 1)
username.rmempty = false
password = s:option(Value, "password", translate("Leigod Password"))
password:depends("schedule_enabled", 1)
password.password = true
password.rmempty = false
m:section(SimpleSection).template = "leigod/service"
return m

View File

@ -0,0 +1,6 @@
<fieldset class="cbi-section">
<p id="leigod_qcode">
<img src="/leigodapp.png" height="300" /><img src="/leigodbind.png" height="300" />
</p>
</fieldset>

View File

@ -0,0 +1,74 @@
<fieldset>
<legend><%:Declare%></legend>
此插件为 LEDE/QWRT 官方合作版插件, 需要配合雷神手机APP使用
</p>
<legend><%:Upgrade Info%></legend>
<p>
2024-8-1 <br>
支持LEDE/QWRT性能优化 <br>
2024-7-25 <br>
支持非桥接模式下的旁路由 <br>
2024-6-5 <br>
扩充ipset容量, 以支持大容量代理ip库 <br>
2024-1-22 <br>
新增自动选择低延迟线路 <br>
新增下载不限速(switch除外) <br>
设备名为*时, 显示mac地址 <br>
<hr/>
2023-11-28 <br>
新增对mips设备的支持 <br>
新增对旁路由的支持 <br>
解决翻译异常的问题 <br>
设备管理页面可以显示未识别设备 <br>
</p>
<legend><%:Install Dependence%></legend>
<p>
插件运行需要借助一些依赖才能运行, 一般第三方固件默认已经集成了大部分的依赖, <br>
如果使用的是openwrt官方的固件, 则需要确保依赖安装好了, 以下列出依赖包和注意事项 <br>
libpcap <br>
iptables <br>
kmod-ipt-nat <br>
iptables-mod-tproxy <br>
kmod-ipt-tproxy <br>
kmod-netem(非必须, 针对于一些icmp测速的游戏使用, 只影响界面显示, 实际游戏效果不影响) <br>
tc-full(非必须, 同kmod-netem) <br>
kmod-ipt-ipset <br>
ipset <br>
curl(谨慎更新, 某些三方固件升级curl, 会导致curl出现问题) <br>
</p>
<legend><%:Bridge Mode%></legend>
<p>
加速插件无法探知当前插件应该使用什么模式, <br>
当前默认使用网桥作为流量转发的设备, <br>
如果使用旁路由模式或者docker时, 此时默认设备不是网桥, <br>
此时需要手动调整接口, <br>
改变接口的地址在 设备管理->路由设备, 选择对应的设备 <br>
</p>
<legend><%:Acc Mode%></legend>
<p>
当前雷神路由器支持两种加速模式, tproxy 和 tun <br>
当前默认采用的是tproxy模式, 原因在于tproxy有更好的性能<br>
tun模式暂时屏蔽, 后续luci会完善一键切换模式
</p>
<legend><%:Acc Usage%></legend>
<p>
当前雷神加速插件是根据设备类型进行加速的, 也就是说, 如果加速了相应的类型后, 理论上只要连接该路由器的设备都将获得加速效果<br>
当前支持的设备类型有以下几种: <br>
手机: Android iPhone <br>
电脑: Windows MacOS SteamDeck <br>
主机: XBox Switch PlayStation <br>
未识别: Others <br>
可以在设备管理中, 插件自己的设备是否被成功识别成对应的设备, 如果不是, 可以选择对应的设备, 这样设备就能成功加速了 <br>
</p>
<p>
一些特殊的说明: <br>
关于ios设备, 最好是在安装插件之前, 先忘记网络, 等安装完插件后, 再重新连接网络 <br>
关于android设备, 需要关闭dhcpv6后, 手机重连网络, 以下给出一个 /etc/config/dhcp 的配置 <br>
config dhcp 'lan' <br>
... 此处是一些其他配置 <br>
ra 'disable' <br>
dhcpv6 'disable' <br>
list ra_flags 'none' <br>
... 此处是一些其他配置 <br>
</p>
</fieldset>

View File

@ -0,0 +1,61 @@
<!-- acc service state
<fieldset class="cbi-section">
<table class="cbi-section-table" id="acc_service_state_table">
<tr class="cbi-section-table-title">
<th class="cbi-section-table-cell"><%:Acc_Service_Name%></th>
<th class="cbi-section-table-cell"><%:Acc_Service_Status%></th>
<th class="cbi-section-table-cell"><%:Acc_Service_Operate%></th>
</tr>
<tr>
<td><%:Acc_Service%></td>
<td id="acc_service_state_cell"><%:Acc_Service_Status%></td>
<td id="acc_service_state_button"><%:Acc_Service_Operate%></td>
</tr>
</table>
</fieldset> -->
<!-- acc catalog state -->
<fieldset class="cbi-section">
<legend><%:Acc Catalog State%></legend>
<table class="cbi-section-table" id="acc_catalog_state_table">
<tr class="cbi-section-table-title">
<th class="cbi-section-table-cell"><%:Acc_Catalog%></th>
<th class="cbi-section-table-cell"><%:Acc_Catalog_Status%></th>
</tr>
</table>
</fieldset>
<script type="text/javascript">//<![CDATA[
// start acc service
function start_acc_service() {
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "acc", "start_acc_service")%>', null, function(x) {});
}
// start acc service
function stop_acc_service() {
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "acc", "stop_acc_service")%>', null, function(x) {});
}
XHR.poll(5, '<%=url('admin/services/acc/status')%>', null, function(x, st) {
var service_cell = document.getElementById("acc_service_state_cell");
var button_cell = document.getElementById("acc_service_state_button");
if (st && service_cell && button_cell) {
service_cell.innerHTML = st["service"];
if (st["service"] == "Acc Service Enabled" || st["service"] == "已启动" || st["service"] == "加速服务已启动")
button_cell.innerHTML = '<input type="button" class="btn cbi-button cbi-button-apply" value="<%:Stop Acc Service%>" onclick="return stop_acc_service()"/>';
else
button_cell.innerHTML = '<input type="button" class="btn cbi-button cbi-button-apply" value="<%:Start Acc Service%>" onclick="return start_acc_service()"/>';
}
var catalog_table = document.getElementById("acc_catalog_state_table");
if (st && catalog_table) {
while(catalog_table.rows.length > 1)
catalog_table.deleteRow(1);
var status_map = st["state"];
for (var typ in status_map) {
var tr = catalog_table.insertRow(-1);
tr.insertCell(-1).innerHTML = typ;
tr.insertCell(-1).innerHTML = status_map[typ];
}
}
});
//]]></script>

View File

@ -0,0 +1,126 @@
msgid "Leigod Acc"
msgstr "雷神加速器"
msgid "Leigod Service"
msgstr "服务控制"
msgid "Leigod Device"
msgstr "设备管理"
msgid "Leigod App"
msgstr "雷神移动端APP"
msgid "Leigod Notice"
msgstr "加速公告"
msgid "Leigod Accelerator Config"
msgstr "雷神加速器 - 专线加速游戏,按分钟计费可暂停,玩多久算多久,时长永久有效"
msgid "Control Accelerator Config"
msgstr "加速时长6端通用 (Windows端 Mac端 NN 手机端 主机端 路由器)"
msgid "Acc_Service_Name"
msgstr "服务名称"
msgid "Acc_Service_Status"
msgstr "启动状态"
msgid "Acc_Service_Operate"
msgstr "加速设置"
msgid "Acc Catalog State"
msgstr "加速状态"
msgid "Acc_Catalog"
msgstr "加速设备"
msgid "Acc_Catalog_Status"
msgstr "加速状态"
msgid "Declare"
msgstr "说明"
msgid "Upgrade Info"
msgstr "更新内容"
msgid "Install Dependence"
msgstr "安装依赖"
msgid "Bridge Mode"
msgstr "旁路由模式"
msgid "Acc Mode"
msgstr "加速模式"
msgid "Acc Usage"
msgstr "使用说明"
msgid "Leigod Accelerator Usage"
msgstr "雷神加速插件使用"
msgid "Leigod Device Config"
msgstr "设备管理配置"
msgid "Control Device Config"
msgstr "控制和改变设备类型"
msgid "Neigh Device"
msgstr "路由设置"
msgid "acc interface"
msgstr "代理接口"
msgid "Device Info"
msgstr "设备信息"
msgid "None_Catalog"
msgstr "未分类设备"
msgid "Phone_Catalog"
msgstr "手机设备"
msgid "None_Catalog"
msgstr "未分类设备"
msgid "Tunnel Mode"
msgstr "TUN 模式"
msgid "PC_Catalog"
msgstr "PC 设备"
msgid "Game_Catalog"
msgstr "游戏机"
msgid "VR_Catalog"
msgstr "VR 设备"
msgid "Unknown_Catalog"
msgstr "未识别设备"
msgid "acc_service"
msgstr "雷神加速器服务"
msgid "Acc_Service"
msgstr "雷神加速器服务"
msgid "Stop Acc Service"
msgstr "停止加速服务"
msgid "Start Acc Service"
msgstr "启动加速服务"
msgid "Acc Service Disabled"
msgstr "加速服务已被禁用"
msgid "Acc Service Enabled"
msgstr "已启动"
msgid "Acc Catalog Started"
msgstr "该设备类别加速已启用"
msgid "Acc Catalog Stopped"
msgstr "该设备类别加速已停止"
msgid "Acc Catalog Paused"
msgstr "该设备类别加速已暂停"

View File

@ -0,0 +1,24 @@
config system 'base'
option url 'https://opapi.nn.com/speed/router/plug/check'
option heart 'https://opapi.nn.com/speed/router/heartbeat'
option base_url 'https://opapi.nn.com/speed'
option enabled '0'
option tun '0'
option schedule_enabled '0'
option pause_time '01:00'
option username ''
option password ''
config bind 'bind'
config hardware 'device'
config acceleration 'Phone'
config acceleration 'PC'
config acceleration 'Game'
config acceleration 'Unknown'

View File

@ -0,0 +1,166 @@
#!/bin/sh /etc/rc.common
# start prio
START=50
# use proc to start service
USE_PROCD=1
# package name
PACKAGE_NAME="acc.ipk"
# binary dir
sbin_dir="/usr/sbin/leigod"
# binary name
binary_prefix="acc-gw.linux"
# download acceleration binary
download_acc_binary() {
echo "begin to download file... ..."
# create download
local url="http://119.3.40.126/${PACKAGE_NAME}"
echo "download path: ${url}"
local path="/tmp/${PACKAGE_NAME}"
local code=$(curl --connect-timeout 2 -L -s -k -o "${path}" -w "%{http_code}" "${url}")
for i in $(seq 1 2)
do
if [ "$?" != "0" -o "${code}" != "200" -o ! -f "${path}" ]; then
echo "download failed: ${code}"
rm -f ${path}
sleep 5
continue
fi
echo "download success"
break
done
echo "download file success... ..."
}
# mkdir acc dir
mk_acc_dir() {
echo "begin to mkdir... ..."
# should make sure dir exist
local cmd="mkdir -p ${BINARY_DIR}"
echo "exec mkdir dir: ${cmd}"
local code=`$cmd`
echo "mkdir success... ..."
}
# decompress file
decompress_file() {
echo "begin to decompress file... ..."
# compress file path
local path="/tmp/${PACKAGE_NAME}"
# decompress command
local cmd="tar -zxvf ${path} -C ${BINARY_DIR}"
local code=`${cmd}`
echo "decompress file success... ..."
}
# install ipk
install_package() {
echo "begin to overwrite package"
# local cmd = "opkg install /tmp/${PACKAGE_NAME} --force-overwrite"
# `$cmd`
echo "overwrite finish, begin to start"
}
# main
prepare_env() {
# mkdir
mk_acc_dir
# download file
download_acc_binary
# decompress file
install_package
}
main() {
prepare_env
}
# get_device_arch,
# current support arch: arm64 arm x86_64 mips
get_device_arch() {
arch=$(uname -m)
if [ $? != "0" ]; then
echo "arch cant be get"
return -1
fi
# fix arch
if [ ${arch} == "x86_64" ]; then
echo "match x86_64 -> amd64"
arch="amd64"
elif [ ${arch} == "aarch64" ]; then
echo "match aarch64 -> arm64"
arch="arm64"
elif [ ${arch} == "mips" ]; then
echo "match mips -> mipsle"
arch="mipsle"
elif [ ${arch} == "armv7l" ]; then
echo "match armv7l -> arm"
arch="arm"
fi
return 0
}
# get_xiaomi_name check if is xiaomi
get_xiaomi_name() {
local name=$(uci get misc.hardware.displayName)
if [[ $? == "0" && ${name} != "" ]]; then
echo "router is xiaomi series, name: ${name}"
sbin_dir="/userdisk/appdata/leigod"
init_dir="/userdisk/appdata/leigod"
args="--mode tun"
is_xiaomi=true
return 0
fi
local name=$(uci get misc.hardware.model)
if [[ $? == "0" && ${name} != "" ]]; then
echo "router is xiaomi series, name: ${name}"
sbin_dir="/userdisk/appdata/leigod"
init_dir="/userdisk/appdata/leigod"
args="--mode tun"
is_xiaomi=true
return 0
fi
echo "router is not xiaomi, use general openwrt"
sbin_dir="/usr/sbin/leigod"
init_dir="/etc/init.d"
return 0
}
# run service as daemon
start_service_daemon() {
# open once instance
procd_open_instance
# run binary
local cmd="${sbin_dir}/${binary_prefix}.${arch} ${args}"
echo "start service: ${cmd}"
procd_set_param command ${cmd}
# auto start when failed
procd_set_param respawn
# close instance
procd_close_instance
# start check update
# update_plugin &
}
# proc start service
start_service() {
config_load "accelerator"
local enabled
config_get_bool enabled base enabled 0
local tun
config_get_bool tun base tun 0
[ "${enabled}" -gt 0 ] || return
[ "${tun}" -eq 1 ] && args="--mode tun"
get_device_arch
start_service_daemon
}

View File

@ -0,0 +1,29 @@
#!/bin/sh
# check if file exist
if [ ! -f /etc/config/accelerator ]; then
echo "file not exist, should create..."
touch /etc/config/accelerator
uci set accelerator.base=system
uci set accelerator.device=hardware
uci set accelerator.Phone=acceleration
uci set accelerator.PC=acceleration
uci set accelerator.Game=acceleration
uci set accelerator.Unknown=acceleration
uci commit accelerator
fi
uci set accelerator.base.url='https://opapi.nn.com/speed/router/plug/check'
uci set accelerator.base.heart='https://opapi.nn.com/speed/router/heartbeat'
uci set accelerator.base.base_url='https://opapi.nn.com/speed'
uci commit accelerator
uci -q batch <<-EOF >/dev/null
delete ucitrack.@accelerator[-1]
add ucitrack accelerator
set ucitrack.@accelerator[-1].init=acc
commit ucitrack
EOF
rm -f /tmp/luci-indexcache
exit 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -17,7 +17,7 @@ KERNELNAME:=bzImage
include $(INCLUDE_DIR)/target.mk
DEFAULT_PACKAGES += partx-utils mkf2fs e2fsprogs kmod-button-hotplug kmod-usb-hid kmod-mmc kmod-sdhci kmod-fs-f2fs intel-microcode cfdisk usbutils pciutils \
DEFAULT_PACKAGES += partx-utils mkf2fs e2fsprogs kmod-button-hotplug kmod-usb-hid kmod-mmc kmod-sdhci kmod-fs-f2fs amd64-microcode intel-microcode cfdisk usbutils pciutils \
kmod-alx kmod-e1000e kmod-igb kmod-igc kmod-igbvf kmod-iavf kmod-bnx2x kmod-pcnet32 kmod-tulip kmod-via-velocity kmod-vmxnet3 kmod-i40e kmod-i40evf \
kmod-sound-hda-core kmod-sound-hda-codec-realtek kmod-sound-hda-codec-via kmod-sound-via82xx kmod-sound-hda-intel kmod-sound-hda-codec-hdmi kmod-sound-i8x0 \
kmod-usb-net kmod-usb-net-asix-ax88179 kmod-usb-net-rtl8150 kmod-usb-net-aqc111 kmod-mlx4-core kmod-mlx5-core kmod-drm-i915 kmod-drm-amdgpu kmod-usb-audio \