#!/bin/bash
#
# Fetch Service Provider metadata and save into entityid filename
#

error()
{
	echo "Error: $*" 1>&2
	exit 1
}

metadataurl=$1
if [ -z "$metadataurl" ] ; then
	cat <<EOF
Usage: `basename $0` <metadataurl>
Ex:    `basename $0` https://www.mysp.com/Shibboleth.sso/Metadata
       `basename $0` file://some-downloaded-metadata.xml
EOF
	exit 1
fi

metadata=`curl -s -k -f $metadataurl`
[ -n "$metadata" ] || error "Failed to fetch metadata from $metadataurl"

entityid=`echo "$metadata" | sed -n 's/.*entityID="\([^"]*\)".*/\1/p'`
[ -n "$entityid" ] || error "Failed to find entityID in metadata"
[ "`echo "$entityid" | wc -l`" = "1" ] || error "Multiple entityid:s found: `echo $entityid`"

entityidfn=`echo "$entityid" | sed 's;https*://;;' | tr 'A-Z' 'a-z' | sed 's;/$;;' | sed 's/[^a-z0-9_.-]/-/g' | sed 's/\.xml$//;s/$/.xml/'`
[ -n "$entityidfn" ] || error "Failed to generate filename from entityid $entityid"

echo -n "Save metadata into $entityidfn [Y/n]? "
read x
case $x in
	Y|y|"")
		echo "$metadata" > $entityidfn
		echo $entityidfn
		;;
	*)
		echo "Nothing done"
		;;
esac