owsd: new version improves ipv6 support

Signed-off-by: Denis Osvald <denis.osvald@sartura.hr>
This commit is contained in:
Denis Osvald 2016-06-06 12:29:01 +02:00 committed by Sukru Senli
parent bbd6575748
commit 5ff16a4c44
3 changed files with 43 additions and 17 deletions

View file

@ -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>

View file

@ -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'

View file

@ -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