Skip to content

Commit 6c971f5

Browse files
authored
Merge pull request freifunk-gluon#111 from T0biii/add-headers-ffmuc
ffmuc-mesh-vpn-wireguard: add headers
2 parents 48b8ddf + f5d26f6 commit 6c971f5

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

ffmuc-mesh-vpn-wireguard-vxlan/luasrc/lib/gluon/gluon-mesh-wireguard-vxlan/get-user-agent-infos.lua renamed to ffmuc-mesh-vpn-wireguard-vxlan/luasrc/lib/gluon/gluon-mesh-wireguard-vxlan/get-wget-infos.lua

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,10 @@ local fw_release = assert(infos.firmware_release, "Malformed gluon-info, missing
1919

2020
print(string.format("gluon/%s (%s) OpenWrt/%s (kernel/%s; %s) firmware/%s",
2121
gluon_version, board_name, openwrt_version, kernel, target, fw_release))
22+
23+
print(gluon_version)
24+
print(board_name)
25+
print(openwrt_version)
26+
print(kernel)
27+
print(target)
28+
print(fw_release)

ffmuc-mesh-vpn-wireguard-vxlan/shsrc/lib/gluon/gluon-mesh-wireguard-vxlan/checkuplink

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,15 +137,46 @@ is_loadbalancing_enabled() {
137137
return 0
138138
}
139139

140+
customwget() {
141+
wget_infos=$(lua /lib/gluon/gluon-mesh-wireguard-vxlan/get-wget-infos.lua)
142+
user_agent=$(echo "$wget_infos" | sed -n 1p)
143+
gluon_version=$(echo "$wget_infos" | sed -n 2p)
144+
board_name=$(echo "$wget_infos" | sed -n 3p)
145+
openwrt_version=$(echo "$wget_infos" | sed -n 4p)
146+
kernel=$(echo "$wget_infos" | sed -n 5p)
147+
target=$(echo "$wget_infos" | sed -n 6p)
148+
fw_release=$(echo "$wget_infos" | sed -n 7p)
149+
150+
151+
# This header check is only required for OpenWrt versions <= 23.05,
152+
# as headers are first available in OpenWrt 24.10.
153+
headerret=0
154+
wget -q "http://[::1]" --header="X: X" 2>/dev/null || headerret=$?
155+
# returns Network Failure =4 if headers for wget are available,
156+
# and Generic Error =1 if no headers for wget are available.
157+
if [ "$headerret" -eq 1 ]; then
158+
force_wan_connection wget -q -U "$user_agent" -O- "$@"
159+
160+
else
161+
force_wan_connection wget -q -U "$user_agent" \
162+
--header="X-Gluon-Version: $gluon_version" \
163+
--header="X-Board-Name: $board_name" \
164+
--header="X-Openwrt-Version: $openwrt_version" \
165+
--header="X-Kernel-Version: $kernel" \
166+
--header="X-Target-Name: $target" \
167+
--header="X-Firmware-Version: $fw_release" \
168+
-O- "$@"
169+
fi
170+
}
171+
140172
get_wgkex_data() {
141173
local version user_agent
142174
version="$1"
143175
WGKEX_BROKER="$PROTO://$WGKEX_BROKER_BASE_PATH/api/$version/wg/key/exchange"
144-
user_agent=$(lua /lib/gluon/gluon-mesh-wireguard-vxlan/get-user-agent-infos.lua)
145176

146177
logger -p info -t checkuplink "Contacting wgkex broker $WGKEX_BROKER"
147178

148-
if ! WGKEX_DATA=$(force_wan_connection wget -q -U "$user_agent" -O- --post-data='{"domain": "'"$SEGMENT"'","public_key": "'"$PUBLICKEY"'"}' "$WGKEX_BROKER"); then
179+
if ! WGKEX_DATA=$(customwget --post-data='{"domain": "'"$SEGMENT"'","public_key": "'"$PUBLICKEY"'"}' "$WGKEX_BROKER"); then
149180
logger -p err -t checkuplink "Contacting wgkex broker failed, response: $WGKEX_DATA"
150181
else
151182
logger -p info -t checkuplink "Got data from wgkex broker: $WGKEX_DATA"

0 commit comments

Comments
 (0)