14
14
# hash: Optional, set an hash sum and will compare it against the file.
15
15
#
16
16
# 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"
19
19
20
20
functionselfname=" $( basename " $( readlink -f " ${BASH_SOURCE[0]} " ) " ) "
21
21
@@ -124,7 +124,7 @@ fn_dl_steamcmd() {
124
124
echo -en " Please provide content log to LinuxGSM developers https://linuxgsm.com/steamcmd-error"
125
125
fn_script_log_error " ${commandaction} ${selfname} : ${remotelocation} : Unknown error occured"
126
126
fi
127
- elif [ " ${exitcode} " != " 0 " ]; then
127
+ elif [ " ${exitcode} " != 0 ]; then
128
128
fn_print_error2_nl " ${commandaction} ${selfname} : ${remotelocation} : Exit code: ${exitcode} "
129
129
fn_script_log_error " ${commandaction} ${selfname} : ${remotelocation} : Exit code: ${exitcode} "
130
130
else
@@ -146,12 +146,12 @@ fn_clear_tmp() {
146
146
if [ -d " ${tmpdir} " ]; then
147
147
rm -rf " ${tmpdir:? } /" *
148
148
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
153
150
fn_print_error_eol_nl
154
151
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"
155
155
fi
156
156
fi
157
157
}
@@ -202,39 +202,64 @@ fn_dl_hash() {
202
202
203
203
# Extracts bzip2, gzip or zip files.
204
204
# 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 }"
206
206
# fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles"
207
207
fn_dl_extract () {
208
208
local_filedir=" ${1} "
209
209
local_filename=" ${2} "
210
- extractdir=" ${3} "
210
+ extractdest=" ${3} "
211
+ extractsrc=" ${4} "
211
212
# Extracts archives.
212
213
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
216
224
fi
225
+ mime=$( file -b --mime-type " ${local_filedir} /${local_filename} " )
217
226
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
219
232
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
221
238
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
223
244
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
225
250
fi
226
251
local exitcode=$?
227
252
if [ " ${exitcode} " != 0 ]; then
228
253
fn_print_fail_eol_nl
229
- fn_script_log_fatal " Extracting download "
254
+ fn_script_log_fatal " Extracting ${local_filename} "
230
255
if [ -f " ${lgsmlog} " ]; then
231
256
echo -e " ${extractcmd} " >> " ${lgsmlog} "
232
257
fi
233
258
echo -e " ${extractcmd} "
234
259
core_exit.sh
235
260
else
236
261
fn_print_ok_eol_nl
237
- fn_script_log_pass " Extracting download "
262
+ fn_script_log_pass " Extracting ${local_filename} "
238
263
fi
239
264
}
240
265
@@ -360,21 +385,21 @@ fn_fetch_file() {
360
385
trap fn_fetch_trap INT
361
386
# Larger files show a progress bar.
362
387
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} ..."
364
389
fn_sleep_time
365
- echo -en " \033[1K"
366
390
curlcmd=$( curl --connect-timeout 10 --progress-bar --fail -L -o " ${local_filedir} /${local_filename} " " ${fileurl} " )
391
+ local exitcode=$?
367
392
echo -en " downloading ${local_filename} ..."
368
393
else
394
+ curlcmd=$( curl --connect-timeout 10 -s --fail -L -o " ${local_filedir} /${local_filename} " " ${fileurl} " )
395
+ local exitcode=$?
369
396
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 )
371
397
fi
372
- local exitcode=$?
373
398
374
399
# Download will fail if downloads a html file.
375
400
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:? } "
378
403
local exitcode=2
379
404
fi
380
405
fi
@@ -384,22 +409,21 @@ fn_fetch_file() {
384
409
if [ ${counter} -ge 2 ]; then
385
410
fn_print_fail_eol_nl
386
411
if [ -f " ${lgsmlog} " ]; then
387
- fn_script_log_fatal " Downloading ${local_filename} "
412
+ fn_script_log_fatal " Downloading ${local_filename} ... "
388
413
fn_script_log_fatal " ${fileurl} "
389
414
fi
390
415
core_exit.sh
391
416
else
392
417
fn_print_error_eol_nl
393
418
if [ -f " ${lgsmlog} " ]; then
394
- fn_script_log_error " Downloading ${local_filename} "
419
+ fn_script_log_error " Downloading ${local_filename} ... "
395
420
fn_script_log_error " ${fileurl} "
396
421
fi
397
422
fi
398
423
else
399
- fn_print_ok_eol
400
- echo -en " \033[2K\\ r"
424
+ fn_print_ok_eol_nl
401
425
if [ -f " ${lgsmlog} " ]; then
402
- fn_script_log_pass " Downloading ${local_filename} "
426
+ fn_script_log_pass " Downloading ${local_filename} ... "
403
427
fi
404
428
405
429
# Make file executable if chmodx is set.
0 commit comments