#!/bin/sh . /lib/functions.sh intf=$1 timeout="$(uci -q get openmptcprouter.settings.status_vps_timeout)" [ -z "$timeout" ] && timeout="1" [ -z "$intf" ] && return get_mptcp_from_server() { serverport=$(uci -q get openmptcprouter.$1.port) get_mptcp() { serverip=$1 if [ "$(echo $serverip | grep :)" ]; then if [ -f /proc/sys/net/mptcp/enabled ]; then support="$(mptcpize run curl -s -k -6 -m ${timeout} --interface $intf https://[$serverip]:$serverport/mptcpsupport)" else support="$(curl -s -k -6 -m ${timeout} --interface $intf https://[$serverip]:$serverport/mptcpsupport)" fi else if [ -f /proc/sys/net/mptcp/enabled ]; then support="$(mptcpize run curl -s -k -4 -m ${timeout} --interface $intf https://$serverip:$serverport/mptcpsupport)" else support="$(curl -s -k -4 -m ${timeout} --interface $intf https://$serverip:$serverport/mptcpsupport)" fi fi [ -n "$support" ] && { support=$(echo $support | jsonfilter -e '@.mptcp') break } } config_list_foreach $1 ip get_mptcp [ -n "$support" ] && break } get_mptcp_from_website() { multipathip=$(dig +short A multipath-tcp.org | tr -d "\n") ipset add ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1 support="$(curl -s -4 -m ${timeout} --interface $intf http://www.multipath-tcp.org)" ipset del ss_rules_dst_bypass_all $multipathip > /dev/null 2>&1 [ -n "$support" ] && { if [ "$support" = "Yay, you are MPTCP-capable! You can now rest in peace." ]; then support="working" else support="not working" fi } } get_mptcp_from_website6() { multipathip=$(dig +short AAAA multipath-tcp.org | tr -d "\n") ipset add ss_rules6_dst_bypass_all $multipathip > /dev/null 2>&1 support="$(curl -s -6 -m ${timeout} --interface $intf http://www.multipath-tcp.org)" ipset del ss_rules6_dst_bypass_all $multipathip > /dev/null 2>&1 [ -n "$support" ] && { if [ "$support" = "Yay, you are MPTCP-capable! You can now rest in peace." ]; then support="working" else support="not working" fi } } support="" config_load openmptcprouter config_foreach get_mptcp_from_server server if [ ! -f /proc/sys/net/mptcp/enabled ] && [ -z "$support" ]; then [ -n "$(ip -4 a show dev $intf)" ] && get_mptcp_from_website [ -n "$(ip -6 a show dev $intf)" ] && get_mptcp_from_website6 fi if [ "$support" = "working" ]; then echo "MPTCP enabled" elif [ "$support" = "not working" ]; then echo "MPTCP disabled" fi