diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:51:31 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:51:31 +0000 |
commit | 25adbdabb47499fe641c7bd9595024ff82667058 (patch) | |
tree | 4200bb5e746bc1c0606de615ec99f0a247d4d9ba /src/webhttrack | |
parent | ad5b7acc19290ff91e0f42a0de448a26760fcf99 (diff) |
httrack 3.30.1
Diffstat (limited to 'src/webhttrack')
-rwxr-xr-x | src/webhttrack | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/webhttrack b/src/webhttrack new file mode 100755 index 0000000..3b433bb --- /dev/null +++ b/src/webhttrack @@ -0,0 +1,101 @@ +#!/bin/bash +# +# WebHTTrack launcher script +# Initializes the htsserver GUI frontend and launch the default browser +BROWSEREXE= +SRCHBROWSEREXE="x-www-browser www-browser mozilla galeon konqueror opera netscape" +if test -n "${BROWSER}"; then +# sensible-browser will f up if BROWSER is not set +SRCHBROWSEREXE="sensible-browser ${SRCHBROWSEREXE}" +fi +SRCHPATH="/usr/local/bin /usr/share/bin /usr/bin /usr/lib/httrack /usr/local/lib/httrack /usr/local/share/httrack ${HOME}/usr/bin ${HOME}/bin" +SRCHDISTPATH="/usr/share /usr/local /usr /local /usr/local/share ${HOME}/usr ${HOME}/usr/share ${HOME}/usr/local ${HOME}/usr/share" + +### +# And now some famous cuisine + +function log { +echo "$0($$): $@" >&2 +return 0 +} + +# First ensure that we can launch the server +BINPATH= +for i in ${SRCHPATH}; do + ! test -n "${BINPATH}" && test -x ${i}/htsserver && BINPATH=${i} +done +for i in ${SRCHDISTPATH}; do + ! test -n "${DISTPATH}" && test -f "${i}/httrack/lang.def" && DISTPATH="${i}/httrack" +done +test -n "${BINPATH}" || ! log "could not find htsserver" || exit 1 +test -n "${DISTPATH}" || ! log "could not find httrack directory" || exit 1 +test -f ${DISTPATH}/lang.def || ! log "could not find ${DISTPATH}/lang.def" || exit 1 +test -f ${DISTPATH}/lang.indexes || ! log "could not find ${DISTPATH}/lang.indexes" || exit 1 +test -d ${DISTPATH}/lang || ! log "could not find ${DISTPATH}/lang" || exit 1 +test -d ${DISTPATH}/html || ! log "could not find ${DISTPATH}/html" || exit 1 + +# Locale +HTSLANG="${LC_MESSAGES}" +! test -n "${HTSLANG}" && HTSLANG="${LC_ALL}" +! test -n "${HTSLANG}" && HTSLANG="${LANG}" +test -n "${HTSLANG}" && HTSLANG="`echo ${HTSLANG} | cut -c1-2` | tr 'A-Z' 'a-z'" +LANGN=`grep "${HTSLANG}:" ${DISTPATH}/lang.indexes | cut -f2 -d':'` +! test -n "${LANGN}" && LANGN=1 + +# Find the browser +# note: not all systems have sensible-browser or www-browser alternative +# thefeore, we have to find a bit more if sensible-browser could not be found +for i in ${SRCHBROWSEREXE}; do +for j in ${SRCHPATH}; do +if test -x ${j}/${i}; then +BROWSEREXE=${j}/${i} +fi +test -n "$BROWSEREXE" && break +done +test -n "$BROWSEREXE" && break +done +test -n "$BROWSEREXE" || ! log "cound not find any suitable browser" || exit 1 + +# "browse" command +if test "$1" = "browse"; then +${BROWSEREXE} "file://${HOME}/websites/index.html" +exit $? +fi + +# Create a temporary filename +TMPSRVFILE="/tmp/.webhttrack.$$.`/usr/bin/head -c16 /dev/random | /usr/bin/md5sum | /usr/bin/cut -f1 -d' '`" +>${TMPSRVFILE} || ! log "cound not create the temporary file ${TMPSRVFILE}" || exit 1 +# Launch htsserver binary and setup the server +(${BINPATH}/htsserver "${DISTPATH}/" path "${HOME}/websites" lang "${LANGN}" $@; echo SRVURL=error) > ${TMPSRVFILE}& +# Find the generated SRVURL +SRVURL= +MAXCOUNT=60 +while ! test -n "$SRVURL"; do +MAXCOUNT=$[$MAXCOUNT - 1] +test $MAXCOUNT -gt 0 || exit 1 +test $MAXCOUNT -lt 50 && echo "waiting for server to reply.." +SRVURL=`/bin/grep -E URL= ${TMPSRVFILE} | /usr/bin/cut -f2- -d=` +test ! "$SRVURL" = "error" || ! log "could not spawn htsserver" || exit 1 +test -n "$SRVURL" || /bin/sleep 1 +done + +# Cleanup function +function cleanup { +test -n "$1" && log "nasty signal caught, cleaning up.." +test -f ${TMPSRVFILE} && SRVPID=`/bin/grep -E PID= ${TMPSRVFILE} | /usr/bin/cut -f2- -d=` +test -n "${SRVPID}" && kill -9 ${SRVPID} +test -f ${TMPSRVFILE} && rm ${TMPSRVFILE} +test -n "$1" && log "..done" +return 0 +} + +# Cleanup in case of emergency +trap "cleanup now; exit" 1 2 3 4 5 6 7 8 9 11 13 14 15 16 19 24 25 + +# Got SRVURL, launch browser +${BROWSEREXE} "${SRVURL}" + +# That's all, folks! +trap "" 1 2 3 4 5 6 7 8 9 11 13 14 15 16 19 24 25 +cleanup +exit 0 |