1414# hash: Optional, set an hash sum and will compare it against the file.
1515#
1616# Downloads can be defined in code like so:
17- # fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
18- # fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd"
17+ # fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${ local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${hash}"
18+ # fn_fetch_file "http://example.com/file.tar.bz2" "http://example.com/file2.tar.bz2" "file.tar.bz2" "file2.tar.bz2" " /some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd"
1919
2020functionselfname=" $( basename " $( readlink -f " ${BASH_SOURCE[0]} " ) " ) "
2121
@@ -124,7 +124,7 @@ fn_dl_steamcmd() {
124124 echo -en " Please provide content log to LinuxGSM developers https://linuxgsm.com/steamcmd-error"
125125 fn_script_log_error " ${commandaction} ${selfname} : ${remotelocation} : Unknown error occured"
126126 fi
127- elif [ " ${exitcode} " != " 0 " ]; then
127+ elif [ " ${exitcode} " != 0 ]; then
128128 fn_print_error2_nl " ${commandaction} ${selfname} : ${remotelocation} : Exit code: ${exitcode} "
129129 fn_script_log_error " ${commandaction} ${selfname} : ${remotelocation} : Exit code: ${exitcode} "
130130 else
@@ -146,12 +146,12 @@ fn_clear_tmp() {
146146 if [ -d " ${tmpdir} " ]; then
147147 rm -rf " ${tmpdir:? } /" *
148148 local exitcode=$?
149- if [ " ${exitcode} " == 0 ]; then
150- fn_print_ok_eol_nl
151- fn_script_log_pass " clearing LinuxGSM tmp directory"
152- else
149+ if [ " ${exitcode} " != 0 ]; then
153150 fn_print_error_eol_nl
154151 fn_script_log_error " clearing LinuxGSM tmp directory"
152+ else
153+ fn_print_ok_eol_nl
154+ fn_script_log_pass " clearing LinuxGSM tmp directory"
155155 fi
156156 fi
157157}
@@ -202,39 +202,64 @@ fn_dl_hash() {
202202
203203# Extracts bzip2, gzip or zip files.
204204# Extracts can be defined in code like so:
205- # fn_dl_extract "${local_filedir}" "${local_filename}" "${extractdir }"
205+ # fn_dl_extract "${local_filedir}" "${local_filename}" "${extractdest}" "${extractsrc }"
206206# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles"
207207fn_dl_extract () {
208208 local_filedir=" ${1} "
209209 local_filename=" ${2} "
210- extractdir=" ${3} "
210+ extractdest=" ${3} "
211+ extractsrc=" ${4} "
211212 # Extracts archives.
212213 echo -en " extracting ${local_filename} ..."
213- mime=$( file -b --mime-type " ${local_filedir} /${local_filename} " )
214- if [ ! -d " ${extractdir} " ]; then
215- mkdir " ${extractdir} "
214+
215+ if [ ! -d " ${extractdest} " ]; then
216+ mkdir " ${extractdest} "
217+ fi
218+ if [ ! -f " ${local_filedir} /${local_filename} " ]; then
219+ fn_print_fail_eol_nl
220+ echo -en " file ${local_filedir} /${local_filename} not found"
221+ fn_script_log_fatal " Extracting ${local_filename} "
222+ fn_script_log_fatal " File ${local_filedir} /${local_filename} not found"
223+ core_exit.sh
216224 fi
225+ mime=$( file -b --mime-type " ${local_filedir} /${local_filename} " )
217226 if [ " ${mime} " == " application/gzip" ] || [ " ${mime} " == " application/x-gzip" ]; then
218- extractcmd=$( tar -zxf " ${local_filedir} /${local_filename} " -C " ${extractdir} " )
227+ if [ -n " ${extractsrc} " ]; then
228+ extractcmd=$( tar -zxf " ${local_filedir} /${local_filename} " -C " ${extractdest} " --strip-components=1 " ${extractsrc} " )
229+ else
230+ extractcmd=$( tar -zxf " ${local_filedir} /${local_filename} " -C " ${extractdest} " )
231+ fi
219232 elif [ " ${mime} " == " application/x-bzip2" ]; then
220- extractcmd=$( tar -jxf " ${local_filedir} /${local_filename} " -C " ${extractdir} " )
233+ if [ -n " ${extractsrc} " ]; then
234+ extractcmd=$( tar -jxf " ${local_filedir} /${local_filename} " -C " ${extractdest} " --strip-components=1 " ${extractsrc} " )
235+ else
236+ extractcmd=$( tar -jxf " ${local_filedir} /${local_filename} " -C " ${extractdest} " )
237+ fi
221238 elif [ " ${mime} " == " application/x-xz" ]; then
222- extractcmd=$( tar -xf " ${local_filedir} /${local_filename} " -C " ${extractdir} " )
239+ if [ -n " ${extractsrc} " ]; then
240+ extractcmd=$( tar -Jxf " ${local_filedir} /${local_filename} " -C " ${extractdest} " --strip-components=1 " ${extractsrc} " )
241+ else
242+ extractcmd=$( tar -Jxf " ${local_filedir} /${local_filename} " -C " ${extractdest} " )
243+ fi
223244 elif [ " ${mime} " == " application/zip" ]; then
224- extractcmd=$( unzip -qo -d " ${extractdir} " " ${local_filedir} /${local_filename} " )
245+ if [ -n " ${extractsrc} " ]; then
246+ extractcmd=$( unzip -qoj -d " ${extractdest} " " ${local_filedir} /${local_filename} " " ${extractsrc} " /* )
247+ else
248+ extractcmd=$( unzip -qo -d " ${extractdest} " " ${local_filedir} /${local_filename} " )
249+ fi
225250 fi
226251 local exitcode=$?
227252 if [ " ${exitcode} " != 0 ]; then
228253 fn_print_fail_eol_nl
229- fn_script_log_fatal " Extracting download "
254+ fn_script_log_fatal " Extracting ${local_filename} "
230255 if [ -f " ${lgsmlog} " ]; then
231256 echo -e " ${extractcmd} " >> " ${lgsmlog} "
232257 fi
233258 echo -e " ${extractcmd} "
234259 core_exit.sh
235260 else
236261 fn_print_ok_eol_nl
237- fn_script_log_pass " Extracting download "
262+ fn_script_log_pass " Extracting ${local_filename} "
238263 fi
239264}
240265
@@ -360,21 +385,21 @@ fn_fetch_file() {
360385 trap fn_fetch_trap INT
361386 # Larger files show a progress bar.
362387 if [ " ${local_filename##* .} " == " bz2" ] || [ " ${local_filename##* .} " == " gz" ] || [ " ${local_filename##* .} " == " zip" ] || [ " ${local_filename##* .} " == " jar" ] || [ " ${local_filename##* .} " == " xz" ]; then
363- echo -en " downloading ${local_filename} ..."
388+ echo -e " downloading ${local_filename} ..."
364389 fn_sleep_time
365- echo -en " \033[1K"
366390 curlcmd=$( curl --connect-timeout 10 --progress-bar --fail -L -o " ${local_filedir} /${local_filename} " " ${fileurl} " )
391+ local exitcode=$?
367392 echo -en " downloading ${local_filename} ..."
368393 else
394+ curlcmd=$( curl --connect-timeout 10 -s --fail -L -o " ${local_filedir} /${local_filename} " " ${fileurl} " )
395+ local exitcode=$?
369396 echo -en " fetching ${fileurl_name} ${local_filename} ...\c"
370- curlcmd=$( curl --connect-timeout 10 -s --fail -L -o " ${local_filedir} /${local_filename} " " ${fileurl} " 2>&1 )
371397 fi
372- local exitcode=$?
373398
374399 # Download will fail if downloads a html file.
375400 if [ -f " ${local_filedir} /${local_filename} " ]; then
376- if [ -n " $( head " ${local_filedir} /${local_filename} " | grep " DOCTYPE" ) " ] ; then
377- rm -f " ${local_filedir:? } /${local_filename:? } "
401+ if head -n 1 " ${local_filedir} /${local_filename} " | grep -q " DOCTYPE" ; then
402+ rm " ${local_filedir:? } /${local_filename:? } "
378403 local exitcode=2
379404 fi
380405 fi
@@ -384,22 +409,21 @@ fn_fetch_file() {
384409 if [ ${counter} -ge 2 ]; then
385410 fn_print_fail_eol_nl
386411 if [ -f " ${lgsmlog} " ]; then
387- fn_script_log_fatal " Downloading ${local_filename} "
412+ fn_script_log_fatal " Downloading ${local_filename} ... "
388413 fn_script_log_fatal " ${fileurl} "
389414 fi
390415 core_exit.sh
391416 else
392417 fn_print_error_eol_nl
393418 if [ -f " ${lgsmlog} " ]; then
394- fn_script_log_error " Downloading ${local_filename} "
419+ fn_script_log_error " Downloading ${local_filename} ... "
395420 fn_script_log_error " ${fileurl} "
396421 fi
397422 fi
398423 else
399- fn_print_ok_eol
400- echo -en " \033[2K\\ r"
424+ fn_print_ok_eol_nl
401425 if [ -f " ${lgsmlog} " ]; then
402- fn_script_log_pass " Downloading ${local_filename} "
426+ fn_script_log_pass " Downloading ${local_filename} ... "
403427 fi
404428
405429 # Make file executable if chmodx is set.
0 commit comments