#!/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 < Ex: `basename $0` https://shibsp.mysite.com/Shibboleth.sso/Metadata `basename $0` https://shibidp.mysite.com/idp/profile/Metadata/SAML `basename $0` some-downloaded-metadata.xml EOF exit 1 fi if echo "$metadataurl" | grep -qE '^http://|^https://' ; then metadata=`curl -s -k -f $metadataurl` else metadata=`cat $metadataurl` fi [ -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