mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
owsd: new version improves ipv6 support
Signed-off-by: Denis Osvald <denis.osvald@sartura.hr>
This commit is contained in:
parent
bbd6575748
commit
5ff16a4c44
3 changed files with 43 additions and 17 deletions
|
|
@ -8,12 +8,12 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=owsd
|
||||
PKG_VERSION:=0.98
|
||||
PKG_VERSION:=0.99
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO=git
|
||||
PKG_SOURCE_URL:=git@public.inteno.se:owsd.git
|
||||
PKG_SOURCE_VERSION:=07da8de7d41775fd07eacbad77b2c21963f34f7a
|
||||
PKG_SOURCE_VERSION:=5dae59818c3f903bd6a95f02eda5908fbd34dc0a
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_SOURCE_SUBDIR:=${PKG_NAME}-${PKG_VERSION}
|
||||
PKG_MAINTAINER:=Sartura Support for Inteno <support-inteno@sartura.hr>
|
||||
|
|
|
|||
|
|
@ -4,8 +4,10 @@ config owsd 'global'
|
|||
|
||||
config owsd-listen 'lan'
|
||||
option port '8880'
|
||||
option interface 'br-lan'
|
||||
# option whitelist_interface_as_origin '1'
|
||||
option interface 'lan'
|
||||
option ipv6 'on'
|
||||
# option ipv6only 'off'
|
||||
option whitelist_interface_as_origin '1'
|
||||
|
||||
#config owsd-listen 'lan-https'
|
||||
# option port '4443'
|
||||
|
|
|
|||
|
|
@ -17,6 +17,19 @@ append_origin() {
|
|||
procd_append_param command -o "$1"
|
||||
}
|
||||
|
||||
append_origin_parts() {
|
||||
local proto host port
|
||||
proto="$1"
|
||||
host="$2"
|
||||
port="$3"
|
||||
|
||||
if [ "${proto}" = "https" ] && [ "${port}" -eq 443 ] || [ "${proto}" = "http" ] && [ "${port}" -eq 80 ]; then
|
||||
append_origin "${proto}://${host}"
|
||||
else
|
||||
append_origin "${proto}://${host}:${port}"
|
||||
fi
|
||||
}
|
||||
|
||||
validate_owsd_iface() {
|
||||
uci_validate_section "owsd" "owsd-listen" "$1" \
|
||||
'port:port' \
|
||||
|
|
@ -24,6 +37,7 @@ validate_owsd_iface() {
|
|||
'origin:list(string)' \
|
||||
'whitelist_interface_as_origin:bool' \
|
||||
'ipv6:bool' \
|
||||
'ipv6only:bool' \
|
||||
'cert:file' \
|
||||
'key:file'
|
||||
}
|
||||
|
|
@ -31,7 +45,7 @@ validate_owsd_iface() {
|
|||
. /lib/functions/network.sh
|
||||
|
||||
parse_owsd_iface() {
|
||||
local port interface whitelist_interface_as_origin ipv6 cert key
|
||||
local port interface whitelist_interface_as_origin ipv6 ipv6only cert key
|
||||
|
||||
validate_owsd_iface "$1" || {
|
||||
echo "Validation failed"
|
||||
|
|
@ -39,22 +53,32 @@ parse_owsd_iface() {
|
|||
}
|
||||
|
||||
[ -n "${port}" ] && procd_append_param command -p "${port}"
|
||||
[ -n "${interface}" ] && procd_append_param command -i "${interface}"
|
||||
[ -n "${ipv6}" ] && procd_append_param command -6
|
||||
[ -n "${cert}" ] && procd_append_param command -c "${cert}"
|
||||
[ -n "${key}" ] && procd_append_param command -k "${key}"
|
||||
|
||||
if [ -n "${interface}" ] && [ -n "$whitelist_interface_as_origin" ]; then
|
||||
local ip4addrs ip6addrs
|
||||
[ -n "${ipv6}" ] && procd_append_param command -6
|
||||
[ -n "${ipv6}" ] && [ -n "${ipv6only}" ] && procd_append_param command -6
|
||||
|
||||
if network_get_ipaddrs ip4addrs "${interface}"; then for addr in $ip4addrs; do
|
||||
append_origin "http${cert:+s}://${addr}:${port}"
|
||||
# TODO allow omitting default ports
|
||||
done; fi
|
||||
if [ -n "$ipv6}" ] && network_get_ip6addrs ip6addrs "${interface}"; then for addr in $ip6addrs; do
|
||||
append_origin "http${cert:+s}://[[${addr}]]:${port}"
|
||||
# TODO allow omitting default ports
|
||||
done; fi
|
||||
local interfacedev
|
||||
|
||||
if [ -n "${interface}" ]; then
|
||||
network_get_device interfacedev "${interface}" && procd_append_param command -i "${interfacedev}"
|
||||
fi
|
||||
|
||||
if [ -n "${interface}" ] && [ -n "$whitelist_interface_as_origin" ]; then
|
||||
local ip4addrs ip6addrs addr
|
||||
|
||||
if [ -z "${ipv6}" ] || [ -z "${ipv6only}" ] && network_get_ipaddrs ip4addrs "${interface}"; then
|
||||
for addr in $ip4addrs; do
|
||||
append_origin_parts "http${cert:+s}" "${addr}" "${port}"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -n "$ipv6}" ] && network_get_ipaddrs6 ip6addrs "${interface}"; then
|
||||
for addr in $ip6addrs; do
|
||||
append_origin_parts "http${cert:+s}" "[${addr}]" "${port}"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
config_list_foreach "$1" "origin" append_origin
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue