aboutsummaryrefslogtreecommitdiff
path: root/security/ossec-hids-local/scripts/plist.sh
diff options
context:
space:
mode:
Diffstat (limited to 'security/ossec-hids-local/scripts/plist.sh')
-rw-r--r--security/ossec-hids-local/scripts/plist.sh119
1 files changed, 119 insertions, 0 deletions
diff --git a/security/ossec-hids-local/scripts/plist.sh b/security/ossec-hids-local/scripts/plist.sh
new file mode 100644
index 000000000000..c08c5e16a1af
--- /dev/null
+++ b/security/ossec-hids-local/scripts/plist.sh
@@ -0,0 +1,119 @@
+#!/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