e32287e2e50c8dca6b634fb00e472b6eaaabe94f angie Tue Jun 25 13:13:42 2019 -0700 Remove hardcoding of hgwdev-angie, use hostname -f instead. refs #22440 diff --git src/hg/hgSession/sessionDataConvert.sh src/hg/hgSession/sessionDataConvert.sh index d0e9946..8f1d5d0 100755 --- src/hg/hgSession/sessionDataConvert.sh +++ src/hg/hgSession/sessionDataConvert.sh @@ -1,93 +1,85 @@ #!/usr/bin/env bash # Load and re-save a session, so that trash files and/or customTrash tables can be moved # to the locations specified by hg.conf's sessionDataDir and sessionDataDbPrefix. HELP_STR="usage: sessionDataConvert.sh userName sessionName Both userName and sessionName must be %-encoded as they are in namedSessionDb" cgiDir=/usr/local/apache/cgi-bin -cgiUrl=https://hgwdev-angie.gi.ucsc.edu/cgi-bin -cartDumpUrl=$cgiUrl/cartDump -hgSessionUrl=$cgiUrl/hgSession +hgSessionUrl=https://$(hostname -f)/cgi-bin/hgSession cookieJar=./.sessionDataConvert.cookieJar # Look for a setting in hg.conf (and hg.conf.private if not in hg.conf). function getSetting() { local settingName=$1 local settingVal=$(grep ^$settingName $cgiDir/hg.conf | sed -e 's/.*=//;') if [ "$settingVal" == "" -a -f $cgiDir/hg.conf.private ] ; then settingVal=$(grep ^$settingName $cgiDir/hg.conf.private | sed -e 's/.*=//;') fi - if [ "$settingVal" == "" -a -f $cgiDir/../cgi-bin/hg.conf ]; then - settingVal=$(grep ^$settingName $cgiDir/../cgi-bin/hg.conf | sed -e 's/.*=//;') - fi - if [ "$settingVal" == "" -a -f $cgiDir/../cgi-bin/hg.conf.private ]; then - settingVal=$(grep ^$settingName $cgiDir/../cgi-bin/hg.conf.private | sed -e 's/.*=//;') - fi if [ "$settingVal" == "" ]; then echo "Unable to find $settingName setting in cgi-bin hg.conf or hg.conf.private" exit 1 fi echo $settingVal } # Get the hex string md5sum for input without adding a newline at the end. function getMd5Sum() { echo -n "$*" | md5sum | awk '{print $1;}' } # Decode %xx encodings into original characters function urlDecode() { echo -e "$(echo $* | sed 'y/+/ /; s/%/\\x/g')" } # Check args if [[ $# -eq 0 ]] ; then echo "$HELP_STR" exit 0 elif [[ $# -ne 2 ]] ; then echo "Wrong number of arguments ($#; need 2)" echo "$HELP_STR" exit 1 fi encUserName=$1 encSessionName=$2 # We need to forge cookies in order to save session as a particular user. # Find wiki login cookies and login.cookieSalt in hg.conf.private or hg.conf. loginUserName=$(getSetting "wiki.userNameCookie") loginUserId=$(getSetting "wiki.loggedInCookie") cookieSalt=$(getSetting "login.cookieSalt") decUserName=$(urlDecode $encUserName) saltedUserName=$(getMd5Sum "$cookieSalt-"$(getMd5Sum "$decUserName")) loginCookieString="$loginUserName=$encUserName; $loginUserId=$saltedUserName" # Make a random dayOfMonth customData suffix, so all sessions' db tables don't end up # in the same directory because they were all saved by this script on the same day. randomDay=$(printf "%02u" $((($RANDOM % 31) + 1))) # Save the cart for hgsid as the same session. params=( "hgS_doReSaveSession=submit" "hgS_newSessionName=$encSessionName" "hgS_sessionDataDbSuffix=$randomDay" ) cgiString=$(IFS=\& ; echo "${params[*]}") updated=$(curl -k -s -S -c $cookieJar -b $cookieJar -b "$loginCookieString" \ "$hgSessionUrl?$cgiString" \ | grep 'be shared with others' \ | grep "$encSessionName") if [ $? -ne 0 ]; then echo "hgSession request failed to save ($encUserName, $encSessionName)." echo curl -s -S -c $cookieJar -b $cookieJar -b "'$loginCookieString'" "'$hgSessionUrl?$cgiString'" exit 1 fi if [ "$updated" == "" ]; then echo "hgSession response missing session update message" exit 1 fi