Current File : //proc/thread-self/root/proc/self/root/proc/self/root/usr/local/lsws/admin/misc/lsup.sh
CURDIR=`dirname "$0"`
cd $CURDIR
CURDIR=`pwd`
LSWSHOME=`dirname $CURDIR`
LSWSHOME=`dirname $LSWSHOME`

display_usage()
{
    cat <<EOF
Usage: lsup.sh [-s] [-f] [-v VERSION] [-b BUILD_NUMBER]
  
  -f 
     Force reinstall. If -f is not given and same version already installed, this upgrade command is aborted. With -f option, latest build will be downloaded and installed even within same release version.

  -v VERSION
     If VERSION is given, this command will try to install specified VERSION. Otherwise, it will get the latest version from $LSWSHOME/autoupdate/release.

  -b BUILD_NUMBER
     Explicitily set the build number, it can be used to downgrade to an older build.

  -s
     Comunicate with server using HTTPS instead of HTTP.

  -w
     Do not run wswatch.sh

  --help     display this help and exit

EOF
    exit 1
}

FORCED=N
VERSION=x
BUILD=
DEBUG=0
HTTPS=s
NO_WSWATCH=0
while [ "x$1" != "x" ] 
do
    if [ "x$1" = "x-d" ] ; then
        DEBUG=1
    elif [ "x$1" = "x-f" ] ; then
        FORCED=Y
    elif [ "x$1" = "x-s" ] ; then
        HTTPS=s
    elif [ "x$1" = "x-w" ] ; then
        NO_WSWATCH=1
    elif [ "x$1" = "--help" ] ; then
        display_usage
    elif [ "x$1" = "x-v" ] ; then
        shift
        VERSION=$1
        if [ "x$VERSION" = "x" ] ; then
            display_usage
        fi
    elif [ "x$1" = "x-b" ] ; then
        shift
        BUILD="$1"
        if [ "x$BUILD" = "x" ] ; then
            display_usage
        fi
    else
        display_usage
    fi
    shift;
done


# detect download method
OS=`uname -s`
DLCMD=x
if [ "x$OS" = "xFreeBSD" ] ; then
    DL=`which fetch`
    if [ $? -eq 0 ] ; then
    DLCMD="$DL -o"
    fi
fi
if [ "$DLCMD" = "x" ] ; then
    DL=`which wget`
    if [ $? -eq 0 ] ; then
    DLCMD="$DL -nv -O"
    fi
fi
if [ "$DLCMD" = "x" ] ; then
    DL=`which curl`
    if [ $? -eq 0 ] ; then
    DLCMD="$DL -L -o"
    fi
fi
if [ "$DLCMD" = "x" ] ; then
    echo "[ERROR] Fail to detect proper download method"
    exit 1
fi

CURVERSION=`cat $LSWSHOME/VERSION`
CURBUILD=`cat $LSWSHOME/BUILD.$CURVERSION`
echo "Installed '$CURVERSION build $CURBUILD'"

# check stable release
LATEST_URL="http$HTTPS://update.litespeedtech.com/ws/latest.php"
$DLCMD "$LSWSHOME/autoupdate/latest" $LATEST_URL
LSWS_STABLE_LINE=`cat "$LSWSHOME/autoupdate/latest" | grep LSWS_STABLE`
LSWS_STABLE_VER=`expr "$LSWS_STABLE_LINE" : '.*LSWS_STABLE=\(.*\) BUILD .*'`
LSWS_STABLE_BUILD=`expr "$LSWS_STABLE_LINE" : '.*LSWS_STABLE=.* BUILD \(.*\)'`

if [ "x$CURVERSION" = "x$LSWS_STABLE_VER" ] && [ "x$CURBUILD" = "x$LSWS_STABLE_BUILD" ]; then
    touch "$LSWSHOME/autoupdate/follow_stable"
fi
if [ $VERSION = "x" ] && [ "$FORCED" = "N" ] ; then
    if [ "x$CURVERSION" = "x$LSWS_STABLE_VER" ] && [ "x$CURBUILD" = "x$LSWS_STABLE_BUILD" ]; then
        echo "Latest STABLE release has been installed. No update."
        exit 0
    fi

    if [ -f "$LSWSHOME/autoupdate/follow_stable" ]; then
        VERSION=$LSWS_STABLE_VER
        BUILD=$LSWS_STABLE_BUILD
        echo "Follow STABLE release '$LSWS_STABLE_VER build $LSWS_STABLE_BUILD'"
    else
        echo "Was not following STABLE releases, abort."
        echo "To start following STABLE release, run"
        echo "  lsup.sh -f -v $LSWS_STABLE_VER -b $LSWS_STABLE_BUILD"
        exit 2
    fi
fi

# check latest release
$LSWSHOME/bin/lshttpd -U

if [ ! -f "$LSWSHOME/autoupdate/release" ] ; then
    echo "[ERROR] Fail to locate file $LSWSHOME/autoupdate/release"
    exit 1
fi

if [ ! -f "$LSWSHOME/autoupdate/platform" ] ; then
    echo "[ERROR] Fail to locate file $LSWSHOME/autoupdate/platform"
    exit 1
fi

RELEASE=`cat $LSWSHOME/autoupdate/release`
PLATFORM=`cat $LSWSHOME/autoupdate/platform`
EDITION=`expr $RELEASE : '.*-\(.*\)'`
if [ $VERSION = "x" ] ; then
    VERSION=`expr $RELEASE : '\(.*\)-'`
else
    RELEASE="$VERSION-$EDITION"
fi

FILENAME="lsws-$RELEASE-$PLATFORM.tar.gz"
if [ -e "$LSWSHOME/autoupdate/$FILENAME" ] ; then
    /bin/rm -f "$LSWSHOME/autoupdate/$FILENAME"
fi

MAJOR_VERSION=`expr $VERSION : '\([0-9]*\)\..*'`
 
if [ $DEBUG =  '1' ]; then
    DOWNLOAD_URL="http$HTTPS://www.litespeedtech.com/packages/dbg/lsws-$RELEASE-$PLATFORM-dbg.tar.gz"
else
    DOWNLOAD_URL="http$HTTPS://www.litespeedtech.com/packages/$MAJOR_VERSION.0/$FILENAME"

    if [ "x$BUILD" =  'x' ]; then
        echo "Query latest build of $FILENAME"
        BUILD_URL=$DOWNLOAD_URL.lastbuild
        $DLCMD "$LSWSHOME/autoupdate/build" $BUILD_URL
        BUILD=`cat "$LSWSHOME/autoupdate/build"`
    fi
    if [ "x$BUILD" != 'x' ]; then
        if [ "$VERSION" = "$CURVERSION" ] && [ "x$CURBUILD" = "x$BUILD" ] && [ "$FORCED" = "N" ] ; then
            echo "Package $VERSION BUILD $CURBUILD already installed. If need to do force reinstall, please use option -f"
            exit 1
        fi
        echo "Download Build [$BUILD]."
    fi
    DOWNLOAD_URL="$DOWNLOAD_URL.$BUILD"
fi 

echo "$DLCMD $LSWSHOME/autoupdate/$FILENAME $DOWNLOAD_URL"

$DLCMD "$LSWSHOME/autoupdate/$FILENAME" $DOWNLOAD_URL

if [ $? != 0 ]; then
    echo "[ERROR] Failed to download $DOWNLOAD_URL"
    exit 2
fi

if [ "x$VERSION" = "x$LSWS_STABLE_VER" ] && [ "x$BUILD" = "x$LSWS_STABLE_BUILD" ]; then
    if [ ! -f "$LSWSHOME/autoupdate/follow_stable" ]; then
        echo "Start to follow STABLE releases."
        touch "$LSWSHOME/autoupdate/follow_stable"
    fi
elif [ -f "$LSWSHOME/autoupdate/follow_stable" ]; then
    echo "Diverted from STABLE releases."
    rm "$LSWSHOME/autoupdate/follow_stable"
fi

echo "$LSWSHOME/admin/misc/update.sh $VERSION $EDITION $PLATFORM"
$LSWSHOME/admin/misc/update.sh $VERSION $EDITION $PLATFORM
if [ $? != 0 ]; then
    echo "[ERROR] Failed to update to '$CURVERSION build $CURBUILD'"
    exit 3
fi

echo "Restarting LSWS"
$LSWSHOME/bin/lswsctrl fullrestart
echo "Done"