11#! /bin/bash
22# info: archive to directory
3- # options: USER ARCHIVE DIRECTORY
3+ # options: USER ARCHIVE DIRECTORY [SELECTED_DIR] [STRIP] [TEST]
44#
55# The function extracts archive into directory on the file system
66
77user=$1
88src_file=$2
99dst_dir=$3
1010selected_dir=$4
11- test=$5
11+ strip=$5
12+ test=$6
1213
1314# Includes
1415source $HESTIA /func/main.sh
@@ -17,7 +18,7 @@ source $HESTIA/func/main.sh
1718# Verifications #
1819# ----------------------------------------------------------#
1920
20- check_args ' 3' " $# " ' USER ARCHIVE DIRECTORY [SELECTED_DIR] [TEST]'
21+ check_args ' 3' " $# " ' USER ARCHIVE DIRECTORY [SELECTED_DIR] [STRIP] [ TEST]'
2122is_format_valid ' user'
2223is_object_valid ' user' ' USER' " $user "
2324
@@ -48,12 +49,16 @@ if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
4849 exit 2
4950fi
5051
52+ if [ ! -z " $strip " ]; then
53+ is_int_format_valid " $strip " ' strip-components'
54+ tar_strip_level=" --strip-components $strip "
55+ fi
5156# Extracting gziped archive
5257if [ ! -z " $( echo $src_file | egrep -i ' .tgz|.tar.gz' ) " ]; then
5358 x=' yes'
5459 if [ -z " $test " ] || [ " $test " = " no" ]; then
5560 setpriv --init-groups --reuid " $user " --regid " $user " -- mkdir -p " $dst_dir " > /dev/null 2>&1
56- setpriv --init-groups --reuid " $user " --regid " $user " -- tar -xzf " $src_file " -C " $dst_dir " --no-wildcards " $selected_dir " > /dev/null 2>&1
61+ setpriv --init-groups --reuid " $user " --regid " $user " -- tar -xzf " $src_file " -C " $dst_dir " --no-wildcards " $selected_dir " $tar_strip_level > /dev/null 2>&1
5762 rc=$?
5863 else
5964 setpriv --init-groups --reuid " $user " --regid " $user " -- tar -tf " $src_file " --no-wildcards " $selected_dir " > /dev/null 2>&1
@@ -67,7 +72,7 @@ if [ ! -z "$(echo $src_file |egrep -i '.tbz|.tar.bz')" ]; then
6772 x=' yes'
6873 if [ -z " $test " ] || [ " $test " = " no" ]; then
6974 setpriv --init-groups --reuid " $user " --regid " $user " -- mkdir -p " $dst_dir " > /dev/null 2>&1
70- setpriv --init-groups --reuid " $user " --regid " $user " -- tar -xjf " $src_file " -C " $dst_dir " --no-wildcards " $selected_dir " > /dev/null 2>&1
75+ setpriv --init-groups --reuid " $user " --regid " $user " -- tar -xjf " $src_file " -C " $dst_dir " --no-wildcards " $selected_dir " $tar_strip_level > /dev/null 2>&1
7176 rc=$?
7277 else
7378 setpriv --init-groups --reuid " $user " --regid " $user " -- tar -tf " $src_file " --no-wildcards " $selected_dir " > /dev/null 2>&1
@@ -111,7 +116,7 @@ if [ ! -z "$(echo $src_file |grep -i '.tar')" ] && [ -z "$x" ]; then
111116 x=' yes'
112117 if [ -z " $test " ] || [ " $test " = " no" ]; then
113118 setpriv --init-groups --reuid " $user " --regid " $user " -- mkdir -p " $dst_dir " > /dev/null 2>&1
114- setpriv --init-groups --reuid " $user " --regid " $user " -- tar -xf " $src_file " -C " $dst_dir " --no-wildcards " $selected_dir " > /dev/null 2>&1
119+ setpriv --init-groups --reuid " $user " --regid " $user " -- tar -xf " $src_file " -C " $dst_dir " --no-wildcards " $selected_dir " $tar_strip_level > /dev/null 2>&1
115120 rc=$?
116121 else
117122 setpriv --init-groups --reuid " $user " --regid " $user " -- tar -tf " $src_file " --no-wildcards " $selected_dir " > /dev/null 2>&1
0 commit comments