2022-09-10 11:03:45 +00:00
|
|
|
#!/bin/bash
|
|
|
|
set -eo pipefail
|
2022-09-12 07:27:13 +00:00
|
|
|
echo "RUNNING ENTRYPOINT"
|
2022-09-10 11:03:45 +00:00
|
|
|
|
|
|
|
# check to see if this file is being run or sourced from another script
|
|
|
|
_is_sourced() {
|
|
|
|
# https://unix.stackexchange.com/a/215279
|
|
|
|
[ "${#FUNCNAME[@]}" -ge 2 ] &&
|
|
|
|
[ "${FUNCNAME[0]}" = '_is_sourced' ] &&
|
|
|
|
[ "${FUNCNAME[1]}" = 'source' ]
|
|
|
|
}
|
|
|
|
_searchd_want_help() {
|
|
|
|
local arg
|
|
|
|
for arg; do
|
|
|
|
case "$arg" in
|
|
|
|
-'?' | --help | -h | -v)
|
|
|
|
return 0
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
|
|
|
docker_setup_env() {
|
|
|
|
if [ -n "$QUERY_LOG_TO_STDOUT" ]; then
|
|
|
|
export searchd_query_log=/var/log/manticore/query.log
|
|
|
|
[ ! -f /var/log/manticore/query.log ] && ln -sf /dev/stdout /var/log/manticore/query.log
|
|
|
|
fi
|
|
|
|
if [[ "${MCL}" == "1" ]]; then
|
|
|
|
LIB_MANTICORE_COLUMNAR="/var/lib/manticore/.mcl/lib_manticore_columnar.so"
|
|
|
|
LIB_MANTICORE_SECONDARY="/var/lib/manticore/.mcl/lib_manticore_secondary.so"
|
|
|
|
|
|
|
|
[ -L /usr/share/manticore/modules/lib_manticore_columnar.so ] || ln -s $LIB_MANTICORE_COLUMNAR /usr/share/manticore/modules/lib_manticore_columnar.so
|
|
|
|
[ -L /usr/share/manticore/modules/lib_manticore_secondary.so ] || ln -s $LIB_MANTICORE_SECONDARY /usr/share/manticore/modules/lib_manticore_secondary.so
|
|
|
|
|
|
|
|
searchd -v|grep -i error|egrep "trying to load" \
|
|
|
|
&& rm $LIB_MANTICORE_COLUMNAR $LIB_MANTICORE_SECONDARY \
|
|
|
|
&& echo "WARNING: wrong MCL version was removed, installing the correct one"
|
|
|
|
|
|
|
|
if [[ ! -f "$LIB_MANTICORE_COLUMNAR" || ! -f "$LIB_MANTICORE_SECONDARY" ]]; then
|
|
|
|
if ! mkdir -p /var/lib/manticore/.mcl/ ; then
|
|
|
|
echo "ERROR: Manticore Columnar Library is inaccessible: couldn't create /var/lib/manticore/.mcl/."
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
MCL_URL=$(cat /mcl.url)
|
|
|
|
wget -P /tmp $MCL_URL
|
|
|
|
|
|
|
|
LAST_PATH=$(pwd)
|
|
|
|
cd /tmp
|
|
|
|
PACKAGE_NAME=$(ls | grep manticore-columnar | head -n 1)
|
|
|
|
ar -x $PACKAGE_NAME
|
|
|
|
tar -xf data.tar.gz
|
|
|
|
find . -name '*.so' -exec cp {} /var/lib/manticore/.mcl/ \;
|
|
|
|
cd $LAST_PATH
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
_main() {
|
|
|
|
# first arg is `h` or some `--option`
|
|
|
|
if [ "${1#-}" != "$1" ]; then
|
|
|
|
set -- searchd "$@"
|
|
|
|
fi
|
2022-09-12 07:27:13 +00:00
|
|
|
# Amended from searchd to sh since we're using sh to wait until searchd starts, then set the Kibana-specific options
|
|
|
|
if [ "$1" = 'sh' ] && ! _searchd_want_help "@"; then
|
2022-09-10 11:03:45 +00:00
|
|
|
docker_setup_env "$@"
|
|
|
|
# allow the container to be started with `--user`
|
|
|
|
if [ "$(id -u)" = '0' ]; then
|
|
|
|
find /var/lib/manticore /var/log/manticore /var/run/manticore /etc/manticoresearch \! -user manticore -exec chown manticore '{}' +
|
|
|
|
exec gosu manticore "$0" "$@"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
_replace_conf_from_env
|
|
|
|
exec "$@"
|
|
|
|
}
|
|
|
|
|
|
|
|
_replace_conf_from_env() {
|
|
|
|
|
|
|
|
sed_query=""
|
|
|
|
|
|
|
|
while IFS='=' read -r oldname value; do
|
|
|
|
if [[ $oldname == 'searchd_'* || $oldname == 'common_'* ]]; then
|
|
|
|
value=$(echo ${!oldname} | sed 's/\//\\\//g')
|
|
|
|
oldname=$(echo $oldname | sed "s/searchd_//g;s/common_//g;")
|
|
|
|
newname=$oldname
|
|
|
|
|
|
|
|
if [[ $newname == 'listen' ]]; then
|
|
|
|
oldname="listen_env"
|
|
|
|
IFS='|' read -ra ADDR <<<"$value"
|
|
|
|
count=0
|
|
|
|
|
|
|
|
for i in "${ADDR[@]}"; do
|
|
|
|
if [[ $count == 0 ]]; then
|
|
|
|
value=$i
|
|
|
|
else
|
|
|
|
value="$value\n listen = $i"
|
|
|
|
fi
|
|
|
|
count=$((count + 1))
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ -z $sed_query ]]; then
|
|
|
|
sed_query="s/(#\s)*?$oldname\s?=\s?.*?$/$newname = $value/g"
|
|
|
|
else
|
|
|
|
sed_query="$sed_query;s/(#\s)*?$oldname\s?=\s?.*?$/$newname = $value/g"
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
done < <(env)
|
|
|
|
|
|
|
|
if [[ ! -z $sed_query ]]; then
|
|
|
|
sed -i -E "$sed_query" /etc/manticoresearch/manticore.conf
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
# If we are sourced from elsewhere, don't perform any further actions
|
|
|
|
if ! _is_sourced; then
|
|
|
|
_main "$@"
|
|
|
|
fi
|