diff --git a/fastnet/Makefile b/fastnet/Makefile index 8523f57b..f19ec71a 100644 --- a/fastnet/Makefile +++ b/fastnet/Makefile @@ -1,4 +1,6 @@ # +# Copyright (C) 2015-2016 OpenWrt.org +# # This is free software, licensed under the GNU General Public License v3. # @@ -7,14 +9,15 @@ include $(TOPDIR)/rules.mk PKG_ARCH_FASTNET:=$(ARCH) PKG_NAME:=fastnet -PKG_VERSION:=0.7.5 -PKG_RELEASE:=1 +# use PKG_SOURCE_DATE instead of PKG_VERSION for compatible +PKG_SOURCE_DATE:=0.7.2 +PKG_RELEASE:=2 -PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz +PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_SOURCE_DATE).tar.gz PKG_SOURCE_URL:=http://dl.istoreos.com/binary/fastnet/ PKG_HASH:=skip -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-binary-$(PKG_VERSION) +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-binary-$(PKG_SOURCE_DATE) PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 @@ -27,6 +30,7 @@ define Package/$(PKG_NAME) SUBMENU:=Web Servers/Proxies TITLE:=FastNet - network test Web UI DEPENDS:=@(arm||x86_64||aarch64) + PKGARCH:=all endef define Package/$(PKG_NAME)/description @@ -53,7 +57,7 @@ endef define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/config $(1)/etc/init.d $(1)/etc/uci-defaults - $(INSTALL_BIN) $(PKG_BUILD_DIR)/fastnet.$(PKG_ARCH_FASTNET) $(1)/usr/sbin/FastNet + $(INSTALL_BIN) $(PKG_BUILD_DIR)/fastnet.$(PKG_ARCH_FASTNET) $(1)/usr/sbin/fastnet $(INSTALL_CONF) ./files/fastnet.config $(1)/etc/config/fastnet $(INSTALL_BIN) ./files/fastnet.init $(1)/etc/init.d/fastnet $(INSTALL_BIN) ./files/fastnet.uci-default $(1)/etc/uci-defaults/fastnet diff --git a/fastnet/files/fastnet.config b/fastnet/files/fastnet.config index 25fdfdbd..e1c3ee3c 100644 --- a/fastnet/files/fastnet.config +++ b/fastnet/files/fastnet.config @@ -1,5 +1,6 @@ config fastnet option enabled '1' + option host '0.0.0.0' option port '3200' option token '' option logger '0' diff --git a/fastnet/files/fastnet.init b/fastnet/files/fastnet.init old mode 100644 new mode 100755 index a37e93b6..cde52640 --- a/fastnet/files/fastnet.init +++ b/fastnet/files/fastnet.init @@ -5,6 +5,7 @@ USE_PROCD=1 get_config() { config_get_bool enabled "$1" enabled 1 + config_get host "$1" host "0.0.0.0" config_get port "$1" port 3200 config_get token "$1" token "" config_get_bool logger "$1" logger 0 @@ -15,11 +16,11 @@ start_service() { config_foreach get_config fastnet [ "$enabled" != 1 ] && return 1 - addr="0.0.0.0:${port}" + addr="${host}:${port}" procd_open_instance procd_set_param limits nofile="65535 65535" - procd_set_param command /usr/sbin/FastNet web --addr "$addr" --no-open + procd_set_param command /usr/sbin/fastnet web --addr "$addr" --no-open [ -n "$token" ] && procd_append_param command --token "$token" [ "$logger" = 1 ] && procd_set_param stderr 1 procd_set_param respawn diff --git a/fastnet/files/fastnet.uci-default b/fastnet/files/fastnet.uci-default index d82b9cbb..73335a25 100644 --- a/fastnet/files/fastnet.uci-default +++ b/fastnet/files/fastnet.uci-default @@ -14,6 +14,14 @@ uci -q batch <<-EOF_UCI >/dev/null set ucitrack.@fastnet[-1].init=fastnet commit ucitrack + delete firewall.fastnet + set firewall.fastnet=rule + set firewall.fastnet.name="fastnet" + set firewall.fastnet.target="ACCEPT" + set firewall.fastnet.src="wan" + set firewall.fastnet.proto="tcp" + set firewall.fastnet.dest_port="3200" + commit firewall EOF_UCI /etc/init.d/fastnet enable diff --git a/kai/Makefile b/kai/Makefile index 7604ed1f..2650ae1b 100644 --- a/kai/Makefile +++ b/kai/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk PKG_ARCH_kai:=$(ARCH) PKG_NAME:=kai -PKG_VERSION:=0.0.3 -PKG_RELEASE:=1 +PKG_VERSION:=0.0.5 +PKG_RELEASE:=2 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/kai/files/kai.config b/kai/files/kai.config index 9bcd0805..38b8756a 100644 --- a/kai/files/kai.config +++ b/kai/files/kai.config @@ -1,3 +1,4 @@ config kai option 'enabled' '0' - option 'cwd' '/tmp/kai' + option 'data_dir' '' + option 'port' '8197' diff --git a/kai/files/kai.init b/kai/files/kai.init index c11b5e70..f6ba508f 100755 --- a/kai/files/kai.init +++ b/kai/files/kai.init @@ -5,24 +5,95 @@ USE_PROCD=1 get_config() { config_get_bool enabled $1 enabled 1 - config_get cwd $1 cwd "/tmp/kai" + config_get data_dir $1 data_dir "" + config_get port $1 port "8197" +} + +http_get() { + local url="$1" + if command -v uclient-fetch >/dev/null 2>&1; then + uclient-fetch -O /dev/stdout "$url" 2>/dev/null + return $? + fi + if command -v wget >/dev/null 2>&1; then + wget -qO- "$url" 2>/dev/null + return $? + fi + if command -v curl >/dev/null 2>&1; then + curl -fsL "$url" 2>/dev/null + return $? + fi + return 1 +} + +maybe_refresh_opencode_skills_cache() { + [ -n "$data_dir" ] || return 0 + [ -n "$port" ] || return 0 + command -v jsonfilter >/dev/null 2>&1 || return 0 + + local cache_root="${data_dir}/cache/opencode/skills" + local state_root="${data_dir}/state/opencode" + local version_file="${state_root}/skills.manifest.version" + local managed_file="${state_root}/skills.managed.list" + local manifest_url="http://127.0.0.1:${port}/agentconf/skills/manifest.json" + + [ -d "$cache_root" ] || mkdir -p "$cache_root" + [ -d "$state_root" ] || mkdir -p "$state_root" + + local manifest version prev_version skills + manifest="$(http_get "$manifest_url")" || return 0 + version="$(printf '%s' "$manifest" | jsonfilter -e '@.version' 2>/dev/null)" + [ -n "$version" ] || return 0 + + prev_version="" + [ -f "$version_file" ] && prev_version="$(cat "$version_file" 2>/dev/null)" + [ "$version" = "$prev_version" ] && return 0 + + logger -t kai "opencode skills manifest changed; refreshing managed skill cache" + + if [ -f "$managed_file" ]; then + while IFS= read -r s; do + [ -n "$s" ] || continue + rm -rf "${cache_root}/${s}" + done <"$managed_file" + fi + + skills="$(printf '%s' "$manifest" | jsonfilter -e '@.skills[*]' 2>/dev/null)" + if [ -n "$skills" ]; then + printf '%s\n' "$skills" >"$managed_file" + printf '%s\n' "$skills" | while IFS= read -r s; do + [ -n "$s" ] || continue + rm -rf "${cache_root}/${s}" + done + else + : >"$managed_file" + fi + + printf '%s\n' "$version" >"$version_file" + return 0 } start_kai_bin(){ procd_open_instance kai_bin - procd_set_param command /usr/sbin/kai_bin + procd_set_param command /usr/sbin/kai_bin -a 0.0.0.0 -p "$port" procd_set_param stderr 1 procd_set_param respawn procd_close_instance } mkdir_cwd(){ - if [ ! -d $1 ]; then - mkdir -p $1 - fi + [ -d "$1" ] || mkdir -p "$1" } start_kai_session(){ procd_open_instance kai_session - procd_set_param env OPENCODE_CWD=$1 OPENCODE_CONFIG=http://127.0.0.1:8197/config/opencode/opencode.json + local root="${data_dir}" + local cwd="${data_dir}/cwd" + procd_set_param env \ + OPENCODE_CWD="${cwd}" \ + OPENCODE_CONFIG="http://127.0.0.1:${port}/agentconf/opencode.json" \ + XDG_CACHE_HOME="${root}/cache" \ + XDG_DATA_HOME="${root}/data" \ + XDG_CONFIG_HOME="${root}/config" \ + XDG_STATE_HOME="${root}/state" procd_set_param command /usr/sbin/kai_session procd_append_param command serve --port "8196" --hostname "127.0.0.1" procd_set_param stderr 1 @@ -35,14 +106,24 @@ start_service() { if [ $enabled != 1 ]; then return 1 fi + if [ -z "${data_dir}" ]; then + logger -t kai "data_dir is empty; please set option data_dir in /etc/config/kai" + return 1 + fi logger -t kai "Starting KAI Service" start_kai_bin sleep 1 - mkdir_cwd $cwd - start_kai_session $cwd + mkdir_cwd "${data_dir}" + mkdir_cwd "${data_dir}/cwd" + mkdir_cwd "${data_dir}/cache" + mkdir_cwd "${data_dir}/data" + mkdir_cwd "${data_dir}/config" + mkdir_cwd "${data_dir}/state" + maybe_refresh_opencode_skills_cache + start_kai_session logger -t kai "Starting KAI Service Completed" } service_triggers() { procd_add_reload_trigger "kai" -} \ No newline at end of file +} diff --git a/kai_session/Makefile b/kai_session/Makefile index c83f8a5f..b07044c8 100644 --- a/kai_session/Makefile +++ b/kai_session/Makefile @@ -10,8 +10,8 @@ include $(TOPDIR)/rules.mk PKG_ARCH_kai_session:=$(ARCH) PKG_NAME:=kai_session -PKG_VERSION:=0.0.3 -PKG_RELEASE:=1 +PKG_VERSION:=0.0.5 +PKG_RELEASE:=2 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/luci-app-bandix/Makefile b/luci-app-bandix/Makefile index c7ee2848..6c95f804 100644 --- a/luci-app-bandix/Makefile +++ b/luci-app-bandix/Makefile @@ -11,7 +11,7 @@ LUCI_DEPENDS:=+luci-base +luci-lib-jsonc +curl +bandix PKG_MAINTAINER:=timsaya PKG_VERSION:=0.12.6 -PKG_RELEASE:=2 +PKG_RELEASE:=3 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js index 22c33540..1478cad5 100644 --- a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js +++ b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js @@ -1059,8 +1059,14 @@ return view.extend({ var stateSelect = E('select', { 'class': 'cbi-input-select', 'id': 'flows-state' }, [ E('option', { 'value': '' }, _('All')), E('option', { 'value': 'ESTABLISHED' }, 'ESTABLISHED'), + E('option', { 'value': 'SYN_SENT' }, 'SYN_SENT'), + E('option', { 'value': 'SYN_RECV' }, 'SYN_RECV'), + E('option', { 'value': 'FIN_WAIT' }, 'FIN_WAIT'), + E('option', { 'value': 'FIN_WAIT2' }, 'FIN_WAIT2'), E('option', { 'value': 'TIME_WAIT' }, 'TIME_WAIT'), - E('option', { 'value': 'CLOSE_WAIT' }, 'CLOSE_WAIT') + E('option', { 'value': 'CLOSE_WAIT' }, 'CLOSE_WAIT'), + E('option', { 'value': 'LAST_ACK' }, 'LAST_ACK'), + E('option', { 'value': 'CLOSE' }, 'CLOSE') ]); var tableBody = E('tbody', { 'class': 'flows-table-body' }); var tableWrap = E('div', { 'class': 'flows-table-wrap' }, [ diff --git a/luci-app-kai/Makefile b/luci-app-kai/Makefile index d74dbf6a..887cd874 100755 --- a/luci-app-kai/Makefile +++ b/luci-app-kai/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=kai PKG_VERSION:=1.0.0 -PKG_RELEASE:=1 -LUCI_DEPENDS:=+kai +kai_session +PKG_RELEASE:=2 +LUCI_DEPENDS:=+kai +kai_session +luci-compat LUCI_MINIFY_CSS:=0 LUCI_MINIFY_JS:=0 @@ -25,4 +25,4 @@ endef include $(TOPDIR)/feeds/luci/luci.mk -# call BuildPackage - OpenWrt buildroot signature \ No newline at end of file +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-kai/luasrc/model/cbi/kai.lua b/luci-app-kai/luasrc/model/cbi/kai.lua index f3505fac..3d36e212 100644 --- a/luci-app-kai/luasrc/model/cbi/kai.lua +++ b/luci-app-kai/luasrc/model/cbi/kai.lua @@ -8,6 +8,16 @@ s.addremove=false s.anonymous=true s:option(Flag, "enabled", translate("Enable")).rmempty=false + +local data_dir = s:option(Value, "data_dir", translate("Data directory")) +data_dir.placeholder = "" +data_dir.rmempty = false +data_dir.description = translate("Required. KAI session will store cwd/cache/data/config/state under this directory (subfolders: cwd, cache, data, config, state).") + +local port = s:option(Value, "port", translate("API port")) +port.default = "8197" +port.rmempty = false +port.datatype = "port" +port.description = translate("Port for KAI HTTP server (kai_bin). kai_session will read OPENCODE_CONFIG via 127.0.0.1:.") + return m - -