diff --git a/filebrowser/Makefile b/filebrowser/Makefile
index 4478c31b5..51bde4c89 100644
--- a/filebrowser/Makefile
+++ b/filebrowser/Makefile
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=filebrowser
-PKG_VERSION:=2.24.0
-PKG_RELEASE:=58
+PKG_VERSION:=2.24.1
+PKG_RELEASE:=59
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/filebrowser/filebrowser/tar.gz/v$(PKG_VERSION)?
diff --git a/luci-app-passwall/root/usr/share/passwall/0_default_config b/luci-app-passwall/root/usr/share/passwall/0_default_config
index cadfb634e..51d9eda59 100644
--- a/luci-app-passwall/root/usr/share/passwall/0_default_config
+++ b/luci-app-passwall/root/usr/share/passwall/0_default_config
@@ -169,6 +169,10 @@ config shunt_rules 'BT'
option remarks 'BT'
option protocol 'bittorrent'
+config shunt_rules 'OpenAI'
+ option remarks 'OpenAI'
+ option domain_list 'geosite:openai'
+
config shunt_rules 'Proxy'
option remarks 'Proxy'
option domain_list 'geosite:geolocation-!cn'
@@ -199,10 +203,6 @@ config shunt_rules 'Proxy'
config shunt_rules 'Netflix'
option remarks 'Netflix'
option domain_list 'geosite:netflix'
-
-config shunt_rules 'OpenAI'
- option remarks 'OpenAI'
- option domain_list 'geosite:openai'
config shunt_rules 'Direct'
option remarks 'Direct'
diff --git a/luci-app-store/Makefile b/luci-app-store/Makefile
index 4d9c46b5c..d1ad071f9 100644
--- a/luci-app-store/Makefile
+++ b/luci-app-store/Makefile
@@ -11,12 +11,12 @@ LUCI_DEPENDS:=@(x86_64||aarch64) +curl +opkg +luci-lib-ipkg +tar +coreutils +cor
LUCI_EXTRA_DEPENDS:=luci-lib-taskd (>=1.0.17)
LUCI_PKGARCH:=all
-PKG_VERSION:=0.1.13-3
+PKG_VERSION:=0.1.14-1
# PKG_RELEASE MUST be empty for luci.mk
-PKG_RELEASE:=65
+PKG_RELEASE:=66
-ISTORE_UI_VERSION:=0.1.13
-ISTORE_UI_RELEASE:=3
+ISTORE_UI_VERSION:=0.1.14
+ISTORE_UI_RELEASE:=1
PKG_HASH:=skip
PKG_SOURCE_URL_FILE:=v$(ISTORE_UI_VERSION)-$(ISTORE_UI_RELEASE).tar.gz
@@ -30,6 +30,7 @@ TARGET_CONFIGURE_OPTS+= SED="$(SED)"
define Package/luci-app-store/conffiles
/etc/.app_store.id
+/etc/config/istore
endef
include $(TOPDIR)/feeds/luci/luci.mk
diff --git a/luci-app-store/luasrc/controller/store.lua b/luci-app-store/luasrc/controller/store.lua
index e0879f0d1..297fdfa67 100644
--- a/luci-app-store/luasrc/controller/store.lua
+++ b/luci-app-store/luasrc/controller/store.lua
@@ -24,6 +24,7 @@ function index()
entry({"admin", "store", "upload"}, post("store_upload"))
entry({"admin", "store", "check_self_upgrade"}, call("check_self_upgrade"))
entry({"admin", "store", "do_self_upgrade"}, post("do_self_upgrade"))
+ entry({"admin", "store", "toggle_docker"}, post("toggle_docker"))
for _, action in ipairs({"update", "install", "upgrade", "remove"}) do
store_api(action, true)
@@ -67,6 +68,16 @@ local function user_id()
return id
end
+local function user_config()
+ local uci = require "luci.model.uci".cursor()
+
+ local data = {
+ hide_docker = uci:get("istore", "istore", "hide_docker") == "1",
+ channel = uci:get("istore", "istore", "channel")
+ }
+ return data
+end
+
local function vue_lang()
local i18n = require("luci.i18n")
local lang = i18n.translate("istore_vue_lang")
@@ -131,11 +142,14 @@ function store_index()
if luci.sys.call("[ -d /ext_overlay ] >/dev/null 2>&1") == 0 then
features[#features+1] = "sandbox"
end
- luci.template.render("store/main", {prefix=luci.dispatcher.build_url(unpack(page_index)),id=user_id(),lang=vue_lang(),features=features})
+ if luci.sys.call("[ -f /www/luci-static/resources/luci.js ] >/dev/null 2>&1") == 0 then
+ features[#features+1] = "luci-js"
+ end
+ luci.template.render("store/main", {prefix=luci.dispatcher.build_url(unpack(page_index)),id=user_id(),lang=vue_lang(),user_config=user_config(),features=features})
end
function store_dev()
- luci.template.render("store/main_dev", {prefix=luci.dispatcher.build_url(unpack({"admin", "store", "dev"})),id=user_id(),lang=vue_lang()})
+ luci.template.render("store/main_dev", {prefix=luci.dispatcher.build_url(unpack({"admin", "store", "dev"})),id=user_id(),lang=vue_lang(),user_config=user_config()})
end
function store_log()
@@ -259,7 +273,7 @@ function store_action(param)
code, out, err = _action(myopkg, action, unpack(pkgs))
else -- remove
for _, dep in ipairs(meta.depends) do
- if dep ~= "docker-deps" then
+ if dep ~= "docker-deps" and dep ~= "luci-js-deps" then
pkgs[#pkgs+1] = dep
end
end
@@ -437,7 +451,7 @@ local function update_local_backup_path(path)
if path ~= local_backup_path then
-- set uci config
x:set("istore","istore","local_backup_path",path)
- x:commit("istore")
+ x:commit("istore")
end
end
@@ -612,7 +626,7 @@ end
-- post set_local_backup_dir_path
function set_local_backup_dir_path()
local path = luci.http.formvalue("path")
- local success_ret = {code = 200,msg = "Success"}
+ local success_ret = {code = 200, msg = "Success"}
local error_ret = {code = 500, msg = "Unknown"}
if path ~= "" then
@@ -715,3 +729,12 @@ function get_block_devices()
luci.http.write_json(error_ret)
end
end
+
+function toggle_docker()
+ local uci = require "luci.model.uci".cursor()
+ local hide = luci.http.formvalue("hide")
+ uci:set("istore", "istore", "hide_docker", hide == "true" and "1" or "0")
+ uci:commit("istore")
+ luci.http.prepare_content("application/json")
+ luci.http.write_json({code = 200, msg = "Success"})
+end
diff --git a/luci-app-store/luasrc/view/store/main.htm b/luci-app-store/luasrc/view/store/main.htm
index 16ff68b76..161ca3df1 100644
--- a/luci-app-store/luasrc/view/store/main.htm
+++ b/luci-app-store/luasrc/view/store/main.htm
@@ -20,6 +20,7 @@
window.token = "<%=token%>";
window.device_id = {arch:"<%=id.arch%>",uid:"<%=id.uid%>",version:"<%=id.version%>"};
window.istore_features = <%=jsonc.stringify(features)%>.filter(f => f !== '_lua_force_array_');
+ window.istore_config = <%=jsonc.stringify(user_config or {})%>;
})();
<%:iStore%>
diff --git a/luci-app-store/root/etc/config/istore b/luci-app-store/root/etc/config/istore
new file mode 100644
index 000000000..f04d42d16
--- /dev/null
+++ b/luci-app-store/root/etc/config/istore
@@ -0,0 +1,3 @@
+config istore 'istore'
+ option hide_docker '0'
+# option channel 'istore'
diff --git a/luci-app-store/root/usr/share/rpcd/acl.d/luci-app-store.json b/luci-app-store/root/usr/share/rpcd/acl.d/luci-app-store.json
new file mode 100644
index 000000000..4be4f3fb9
--- /dev/null
+++ b/luci-app-store/root/usr/share/rpcd/acl.d/luci-app-store.json
@@ -0,0 +1,11 @@
+{
+ "luci-app-store": {
+ "description": "Grant UCI access for luci-app-store",
+ "read": {
+ "uci": [ "istore" ]
+ },
+ "write": {
+ "uci": [ "istore" ]
+ }
+ }
+}
diff --git a/luci-proto-xmm/htdocs/luci-static/resources/protocol/xmm.js b/luci-proto-xmm/htdocs/luci-static/resources/protocol/xmm.js
index 10d88e110..ade5af4d0 100644
--- a/luci-proto-xmm/htdocs/luci-static/resources/protocol/xmm.js
+++ b/luci-proto-xmm/htdocs/luci-static/resources/protocol/xmm.js
@@ -73,6 +73,16 @@ return network.registerProtocol('xmm', {
return true;
};
+ s.taboption('general', form.Value, 'username', _('PAP/CHAP username'));
+
+ o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password'));
+
+ o = s.taboption('general', form.ListValue, 'auth', _('Auth Type'));
+ o.value('auto', 'Auto');
+ o.value('pap', 'PAP');
+ o.value('chap', 'CHAP');
+ o.default = 'auto';
+
o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'), _('Maximum amount of seconds to wait for the modem to become ready'));
o.placeholder = '10';
o.datatype = 'min(1)';
diff --git a/lucky/Makefile b/lucky/Makefile
index fccc10875..e6f23bc9e 100644
--- a/lucky/Makefile
+++ b/lucky/Makefile
@@ -8,8 +8,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=lucky
-PKG_VERSION:=1.10.8
-PKG_RELEASE:=16
+PKG_VERSION:=2.1.1
+PKG_RELEASE:=17
ifeq ($(ARCH),mipsel)
LUCKY_ARCH:=mipsle_softfloat
diff --git a/quickstart/Makefile b/quickstart/Makefile
index f78a999d5..522a10ab9 100644
--- a/quickstart/Makefile
+++ b/quickstart/Makefile
@@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk
PKG_ARCH_quickstart:=$(ARCH)
PKG_NAME:=quickstart
-PKG_VERSION:=0.7.10
-PKG_RELEASE:=59
+PKG_VERSION:=0.7.12
+PKG_RELEASE:=60
PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/linkease/istore-packages/releases/download/prebuilt/
PKG_HASH:=skip
diff --git a/xmm-modem/Makefile b/xmm-modem/Makefile
index fbdb49fd8..85323d674 100644
--- a/xmm-modem/Makefile
+++ b/xmm-modem/Makefile
@@ -1,8 +1,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=xmm-modem
-PKG_VERSION:=0.1.1
-PKG_RELEASE:=20
+PKG_VERSION:=0.1.2
+PKG_RELEASE:=21
PKG_MAINTAINER:=Konstantine Shevlakov
include $(INCLUDE_DIR)/package.mk
diff --git a/xmm-modem/README.md b/xmm-modem/README.md
index 8847a5c86..aef67feac 100644
--- a/xmm-modem/README.md
+++ b/xmm-modem/README.md
@@ -9,7 +9,10 @@ config interface 'wwan'
option proto 'xmm'
option pdp 'ip' # Connect method IPV4/6 version
option apn 'internet' # APN Cellular
- option delay '10' # Delay configure interface after connect
+ option delay '10' # Delay interface to connect
+ optiom auth 'auto' # Auth type (auto, pap or chap)
+ option username 'username' # username
+ option password 'password' # password
```
# How-to configure interface via LuCi
diff --git a/xmm-modem/root/etc/gcom/xmm-auth.gcom b/xmm-modem/root/etc/gcom/xmm-auth.gcom
new file mode 100644
index 000000000..060598f8c
--- /dev/null
+++ b/xmm-modem/root/etc/gcom/xmm-auth.gcom
@@ -0,0 +1,13 @@
+opengt
+ set com 115200n81
+ set comecho off
+ set senddelay 0.02
+ waitquiet 0.2 0.2
+
+ send "AT+XGAUTH=1,"
+ send $env("AUTH")
+ send ",\""
+ send $env("USER")
+ send "\",\""
+ send $env("PASS")
+ send "\"^m"
diff --git a/xmm-modem/root/lib/netifd/proto/xmm.sh b/xmm-modem/root/lib/netifd/proto/xmm.sh
index 52922c20d..8390d14ae 100755
--- a/xmm-modem/root/lib/netifd/proto/xmm.sh
+++ b/xmm-modem/root/lib/netifd/proto/xmm.sh
@@ -13,15 +13,18 @@ proto_xmm_init_config() {
proto_config_add_string "apn"
proto_config_add_string "pdp"
proto_config_add_string "delay"
+ proto_config_add_string "username"
+ proto_config_add_string "password"
+ proto_config_add_string "auth"
proto_config_add_defaults
}
proto_xmm_setup() {
local interface="$1"
local devname devpath hwaddr ip4addr ip4mask dns1 dns2 defroute lladdr
- local name ifname proto extendprefix
- local device ifname apn pdp pincode delay $PROTO_DEFAULT_OPTIONS
- json_get_vars device ifname apn pdp pincode delay $PROTO_DEFAULT_OPTIONS
+ local name ifname proto extendprefix auth username password
+ local device ifname auth username password apn pdp pincode delay $PROTO_DEFAULT_OPTIONS
+ json_get_vars device ifname auth username password apn pdp pincode delay $PROTO_DEFAULT_OPTIONS
[ "$metric" = "" ] && metric="0"
[ -z $ifname ] && {
devname=$(basename $device)
@@ -52,13 +55,22 @@ proto_xmm_setup() {
[ "$pdp" = "IP" -o "$pdp" = "IPV6" -o "$pdp" = "IPV4V6" ] || pdp="IP"
echo "Setting up $ifname"
[ -n "$delay" ] && sleep "$delay" || sleep 5
- APN=$apn PDP=$pdp gcom -d $device -s /etc/gcom/xmm-connect.gcom >/dev/null 2&>1
+ [ -n "$username" ] && [ -n "$password" ] && {
+ echo "Using auth type is: $auth"
+ case $auth in
+ pap) AUTH=1 ;;
+ chap) AUTH=2 ;;
+ *) AUTH=0 ;;
+ esac
+ AUTH=$AUTH USER=$username PASS=$password gcom -d "$device" -s /etc/gcom/xmm-auth.gcom >/dev/null 2>&1
+ }
+ APN=$apn PDP=$pdp gcom -d $device -s /etc/gcom/xmm-connect.gcom >/dev/null 2>&1
proto_init_update "$ifname" 1
proto_add_data
proto_close_data
DATA=$(gcom -d $device -s /etc/gcom/xmm-config.gcom)
- ip4addr=$(echo "$DATA" | awk -F [,] '/^\+CGPADDR/{gsub("\r|\"", ""); print $2}') >/dev/null 2&>1
- lladdr=$(echo "$DATA" | awk -F [,] '/^\+CGPADDR/{gsub("\r|\"", ""); print $3}') >/dev/null 2&>1
+ ip4addr=$(echo "$DATA" | awk -F [,] '/^\+CGPADDR/{gsub("\r|\"", ""); print $2}') >/dev/null 2>&1
+ lladdr=$(echo "$DATA" | awk -F [,] '/^\+CGPADDR/{gsub("\r|\"", ""); print $3}') >/dev/null 2>&1
ns=$(echo "$DATA" | awk -F [,] '/^\+XDNS: /{gsub("\r|\"",""); print $2" "$3}' | sed 's/^[[:space:]]//g')
dns1=$(echo "$ns" | grep -v "0.0.0.0" | tail -1)
if ! [ $ip4addr ]; then
@@ -83,7 +95,7 @@ proto_xmm_setup() {
if ! [ "$(echo $ip4addr | grep 0.0.0.0)" ]; then
echo "Set IPv4 address: ${ip4addr}/${ip4mask}"
proto_add_ipv4_address $ip4addr $ip4mask
- proto_add_ipv4_route "0.0.0.0" 0 $defroute
+ proto_add_ipv4_route "0.0.0.0" 0 $defroute $ip4addr
else
echo "Failed to configure interface"
proto_notify_error "$interface" CONFIGURE_FAILED
@@ -99,7 +111,7 @@ proto_xmm_setup() {
}
[ "$pdp" = "IPV6" -o "$pdp" = "IPV4V6" ] && {
- ip -6 address add ${lladdr}/64 dev $ifname >/dev/null 2&>1
+ ip -6 address add ${lladdr}/64 dev $ifname >/dev/null 2>&1
json_init
json_add_string name "${interface}_6"
json_add_string ifname "@$interface"
@@ -115,7 +127,7 @@ proto_xmm_teardown() {
local interface="$1"
local device
device=$(uci -q get network.$interface.device)
- gcom -d $device -s /etc/gcom/xmm-disconnect.gcom >/dev/null 2&>1
+ gcom -d $device -s /etc/gcom/xmm-disconnect.gcom >/dev/null 2>&1
echo "Modem $device disconnected"
proto_kill_command "$interface"
}