blob: c08c5e16a1af6cb7f07e48182f873bda14ee9794 (
plain) (
tree)
|
|
#!/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
staged_plist="${WORKDIR}/.staged-plist"
fixed_lines=""
if [ "${OSSEC_TYPE}" != "agent" ]; then
fixed_lines="${fixed_lines} %%MYSQL%%%%DOCSDIR%%/mysql.schema %%PGSQL%%%%DOCSDIR%%/postgresql.schema"
fi
skip_lines="%%PORTDOCS%%%%DOCSDIR%%/mysql.schema %%PORTDOCS%%%%DOCSDIR%%/postgresql.schema"
skip_paths="/etc/ossec.conf /etc/client.keys /logs/active-responses.log /logs/ossec.log /lua"
sample_paths="/etc/local_internal_options.conf.sample"
if [ "${OSSEC_TYPE}" == "agent" ]; then
skip_paths="${skip_paths} /rules /agentless /.ssh"
fi
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 -e "${command}(${user},${group},${mode}) %%OSSEC_HOME%%${path}" >> "${PLIST}"
}
echo -n > "${PLIST}"
print_path
done_paths=""
while read line; do
skip_line=""
for e in ${skip_lines}; do
if [ "${e}" == "${line}" ]; then
skip_line="${e}"
break
fi
done
if [ -z "${skip_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} ${line}"
;;
esac
if [ -n "${path}" ]; then
segments=`echo "${path}" | tr "/" "\n"`
path=""
for segment in ${segments}; do
path="${path}/${segment}"
skip_path=""
for e in ${skip_paths}; do
if [ "${e}" == "${path}" ]; then
skip_path="${e}"
break
fi
done
if [ -n "${skip_path}" ]; then
break
fi
done_path=""
for e in ${done_paths}; do
if [ "${e}" == "${path}" ]; then
done_path="${e}"
break
fi
done
if [ -z "${done_path}" ]; then
done_paths="${done_paths} ${path}"
sample_path=""
for e in ${sample_paths}; do
if [ "${e}" == "${path}" ]; then
sample_path="${e}"
break
fi
done
if [ -n "${sample_path}" ]; then
print_path "${path}" @sample
else
print_path "${path}"
fi
fi
done
fi
fi
done < "${staged_plist}"
unchanged_lines="${unchanged_lines} ${fixed_lines}"
for line in ${unchanged_lines}; do
echo "${line}" >> "${PLIST}"
done
|