summaryrefslogblamecommitdiffstats
path: root/security/ossec-hids-local-config/scripts/plist.sh
blob: b1915c47ce7b95dc673eb253709b58844cb5406d (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13












                                                            
                            


         











                                                     
                                      


                                              
                                        

                
                                                        













                                                                                   







                    
                                                 
               
                       






                                                                         
                                                                






                                                   
                                                           

                         


                                                                 







                                                    
                                 
 
                                                       


                                  
#!/bin/sh

# Script generates entries for pkg-plist.
# Do not use it directly. Use the following command instead:
#
# make MAINTAINER_MODE=yes clean plist

OSSEC_TYPE=$1
OSSEC_HOME=$2
PLIST=$3
WORKDIR=$4
STAGEDIR=$5

. $(dirname "$0")/plist.conf

NL=$'\n'
IFS=${NL}

print_path() {
    local path="$1"
    local command="$2"
    local full_path="${STAGEDIR}${OSSEC_HOME}${path}"
    if [ -z "${command}" ]; then
        command="@"
        if [ -d "${full_path}" ]; then
            command="@dir"
        fi
    fi
    local user=`stat -f "%Su" "${full_path}"`
    if [ "${user}" = "${USER}" ]; then
        user=""
    fi
    local group=`stat -f "%Sg" "${full_path}"`
    if [ "${group}" = "${GROUP}" ]; then
        group=""
    fi
    local mode=`stat -f "%p" "${full_path}" | tail -c 5`
    echo "${command}(${user},${group},${mode}) %%OSSEC_HOME%%${path}" >> "${PLIST}"
}

contains() {
    local list="$1"
    local word="$2"

    for e in ${list}; do
        if [ "${e}" = "${word}" ]; then
            return 0
        fi
    done

    return 1
}

echo -n > "${PLIST}"

print_path

done_paths=""
while read line; do
    if ! contains "${skip_lines}" "${line}"; then
        path=""
        case ${line} in
            "@dir %%OSSEC_HOME%%"*)
                path=`echo "${line}" | sed -e "s|@dir %%OSSEC_HOME%%||g"`
                ;;
            "%%OSSEC_HOME%%"*)
                path=`echo "${line}" | sed -e "s|%%OSSEC_HOME%%||g"`
                ;;
            "%%"*)
                unchanged_lines="${unchanged_lines}${NL}${line}"
                ;;
        esac
        if [ -n "${path}" ]; then
            segments=`echo "${path}" | tr "/" "\n"`
            path=""
            for segment in ${segments}; do
                path="${path}/${segment}"
                if contains "${skip_paths}" "${path}"; then
                    break
                fi
                if ! contains "${done_paths}" "${path}"; then
                    done_paths="${done_paths}${NL}${path}"
                    if contains "${sample_paths}" "${path}"; then
                        print_path "${path}" @sample
                    else
                        print_path "${path}"
                    fi
                fi
            done
        fi
    fi
done < "${WORKDIR}/.staged-plist"

unchanged_lines="${unchanged_lines}${NL}${fixed_lines}"
for line in ${unchanged_lines}; do
    echo "${line}" >> "${PLIST}"
done