This file is indexed.

/usr/lib/fai/fetch-basefile is in fai-client 5.0.3ubuntu1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#! /bin/bash

# fetch-basefile, fetch a basefile via ftp or http using classes
#
# (c) Thomas Lange, 2011-2012
#
# Try to download a file CLASSNAME.tar.gz (or tgz, or tar.xz,...) from an URL
# CLASSNAME must match a FAI class
# The URL must provide a listing of all files in there
# e.g.: FAI_BASEFILEURL=http://fai-project.org/download/basefiles
#
# variables needed: $classes, $FAI, $FAI_BASEFILEURL

mount_ramdisk() {

    # put ramdisk on config space and download file
    mount -t tmpfs tmpfs $FAI/basefiles # this makes files from NFS invisible
    if [ $? -eq 1 ]; then
        echo "mount ramdisk onto $FAI/basefiles failed." >&2
        exit 3
    fi
}

[ X$FAI_BASEFILEURL = X ] && exit 0
url=$FAI_BASEFILEURL
[ "$verbose" ] && echo "Fetching basefile from $url"

error=0
found=0
mount=0

while getopts m opt ; do
    case "$opt" in
        m) mount=1 ;;
    esac
done
#shift $(($OPTIND - 1))

# get list of all files at URL
flist=$(lftp -e 'cls;exit' $url 2>/dev/null)

# create a hash like thing
# key (here variable name) is the basename of the file found
# value is the complete filename
for f in $flist; do
  # echo file found: $f
    base=${f%%.*}   # basename is the class name
    eval "found_$base=$f"
done

# reverse order of classes
for c in $classes; do
    revclasses="$c $revclasses"
done

# now search for each class, if a basename matches
for c in $revclasses; do
    id="found_$c"  # prepare for indirect variable name
    if [ X${!id} != X ]; then
      # hash lookup succeeded
        found=1
        [ $mount = 1 ] && mount_ramdisk
        # Create folder in case it is not part of the configuration space
        mkdir -p $FAI/basefiles || echo "Could not create folder $FAI/basefiles" >&2
        cd $FAI/basefiles || exit 3
        if [ -f ${!id} ]; then
            echo "${!id} already exists" >&2
            error=1
            break
        fi

        echo "Downloading $url/${!id}"
      #  wget -nv $url/${!id}    # creates a new file with suffix .1, .2,.. if file already exists. Bad.
        lftp -e "get $url/${!id};exit" # fails if file already exists. this is nice.
        error=$?
        break
    fi
done

if [ X$found = X0 ]; then
    echo "No basefile matching a class name was found at $url" >&2
fi

exit $error

# the rest is done by task extrbase using ftar