annotate import_local_file.sh @ 3:80c4cbc71a1c

Uploaded
author david-hoover
date Tue, 28 Feb 2012 12:49:35 -0500
parents c772c8912663
children 01687750c862
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
1 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
2 ### The shell script: import_local.sh
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
3 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
4 ### The script copies the source file (param 1)
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
5 ### to the destination file (param 2, which is galaxy's dataset_NNNNN.dat).
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
6 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
7 ### The extra code tries to make it as safe as possible, allowing imports only
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
8 ### from limited areas.
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
9 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
10 ### The script can be changed from copying to linking - would be even faster.
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
11 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
12 ### cpx is a C executable that copies a file from a source to a destination
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
13 ### only if the source file is readable by the user given in the third arg.
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
14 ### cpx must be setuid root, so be careful who has access to it! It can also
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
15 ### be allowed using sudo, if you know how to do it.
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
16 #!/bin/sh
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
17
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
18 INPUT="$1"
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
19 OUTPUT="$2"
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
20 EMAIL="$3"
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
21 USER=`echo $EMAIL | sed -e 's#@.*##'`
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
22
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
23 if [ -z "$OUTPUT" ]; then
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
24 echo "Usage: $0 [INPUT] [OUTPUT]" >&2
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
25 exit 1
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
26 fi
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
27
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
28 # Filter any unwanted directories
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
29
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
30 if [[ `echo $INPUT | grep -c ^/data/` -lt 1 ]] && [[ `echo $INPUT | grep -c ^/home/` -lt 1 ]] ; then
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
31 echo "Error: \"$INPUT\" is not allowed" >&2
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
32 exit 1
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
33 fi
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
34
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
35 # Do the deed
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
36 cpx $INPUT $OUTPUT "$USER"
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
37 if [ $? != 0 ]; then
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
38 echo "Error: $USER failed to copy \"$INPUT\"" >&2
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
39 exit 1
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
40 fi
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
41
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
42 echo "File \"$INPUT\" imported"
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
43
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
44 exit 0
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
45
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
46 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
47 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
48 ###
c772c8912663 Uploaded
david-hoover
parents:
diff changeset
49