#!/bin/sh -e
#
#    ip_address: report a host's ip address
#
#    Copyright (C) 2008-2011 Canonical Ltd.
#    Copyright (C) 2011 Dustin Kirkland
#
#    Authors: Dustin Kirkland <kirkland@ubuntu.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

__ip_address_detail() {
	[ -x /sbin/ifconfig ] && /sbin/ifconfig
	/sbin/ip -4 addr list
	/sbin/ip -6 addr list
}

__ip_address() {
	local interface ipaddr
	# Allow interface overrides in $BYOBU_CONFIG_DIR/statusrc
	if [ -n "$MONITORED_NETWORK" ]; then
		interface="$MONITORED_NETWORK"
	else
		case "$IPV6" in
			1|true|yes) interface=$(awk '$10 != "lo" { iface=$10 ; }; END { print iface; }' /proc/net/ipv6_route);;
			*) get_network_interface; interface="$_RET";;
		esac
	fi
	case "$IPV6" in
		1|true|yes)
			ipaddr=$(LC_ALL=C /sbin/ip -6 addr list dev "$interface" scope global)
			# Print 'None' if we have no global address
			[ -z "$ipaddr" ] && ipaddr="None"
			ipaddr=${ipaddr#* inet6 }
			ipaddr=${ipaddr%%/*}
		;;
		*)
			if metadata_available; then
				# We're in EC2, so get our public IP address
				ipaddr=$(wget -q -O- http://169.254.169.254/latest/meta-data/public-ipv4)
			else
				ipaddr=$(LC_ALL=C /sbin/ip -4 addr list dev "$interface" scope global)
				ipaddr=${ipaddr#* inet }
				ipaddr=${ipaddr%%/*}
			fi
		;;
	esac
	if [ -n "$ipaddr" ]; then
		color bold2; printf "%s" "$ipaddr"; color --
	fi
}

# vi: syntax=sh ts=4 noexpandtab
