#!/bin/sh #---------------------------------------------------------------------------- # /var/install/bin/rsyslogd-tools-ccus rsyslogd Create Configuration Using syslog # # Copyright (c) 2001-2022 Ansgar Puester # # Creation: 29.12.2014 ap # Last Update: $Id$ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- # include eislib . /var/install/include/eislib ASK=/var/install/bin/ask CAT=/bin/cat RM=/bin/rm MKTEMP=/bin/mktemp # include config_shlib . /var/install/bin/config_shlib # set package name package_name=rsyslogd # include default configuration . /etc/default.d/${package_name} #exec 2>/tmp/$(basename ${0})-trace$$.log #set -x pgmname=`basename $0` # set variables basefile=/etc/config.d/base syslogdfile=/etc/config.d/syslogd rsyslogdfile=/etc/config.d/$package_name clrhome mecho mecho mecho --info "rsyslogd Create Configuration Using syslog configuration." # include syslogd file if it exists if [[ -f $syslogdfile ]] then # include syslogdfile . $syslogdfile else # include basefile . $basefile fi # check, if START_SYSLOGD is defined if [[ ! -v START_SYSLOGD ]] then mecho mecho --error "No syslog configuration found!" anykey exit 0 fi _ask_file=$(${MKTEMP} -t ${pgmname}-ask.XXXXXXXXXXXXX) ${ASK} "Do you want to overwrite the current rsyslogd configuration?" 'n' >${_ask_file} rc=${?} answer=$(${CAT} ${_ask_file}) ${RM} -f ${_ask_file} # check for (n)o if [ "${answer}" = 'no' ]; then exit 0 fi if [ -f $rsyslogdfile ] then mecho --info "Existing rsyslogd configuration will be saved" backup_config $package_name $rsyslogdfile fi # create file like doing an update DEST=$rsyslogdfile if [ "$START_SYSLOGD" = 'no' ] then mecho --info "START_SYSLOGD is 'no', START_RSYSLOGD will be set to 'yes'" fi { if [ "$START_SYSLOGD" = 'no' ] then START_SYSLOGD='yes' fi echo "START_RSYSLOGD='$START_SYSLOGD'" echo "RSYSLOGD_RULE_N='$SYSLOGD_DEST_N'" # syslog configuration rotates _every_ file rotate='yes' # find first nonblank # SYSLOGD_DEST_x_PREROTATE_CMD # SYSLOGD_DEST_x_POSTROTATE_CMD default_syslogd_dest_prerotate_cmd='' default_syslogd_dest_postrotate_cmd='' idx=1 while [ "$idx" -le "$SYSLOGD_DEST_N" ] do eval search_syslogd_dest_prerotate_cmd='$SYSLOGD_DEST_'${idx}'_PREROTATE_CMD' eval search_syslogd_dest_postrotate_cmd='$SYSLOGD_DEST_'${idx}'_POSTROTATE_CMD' if [ -n "$search_syslogd_dest_prerotate_cmd" ] then if [ -z "$default_syslogd_dest_prerotate_cmd" ] then default_syslogd_dest_prerotate_cmd="$search_syslogd_dest_prerotate_cmd" fi fi if [ -n "$search_syslogd_dest_postrotate_cmd" ] then if [ -z "$default_syslogd_dest_postrotate_cmd" ] then default_syslogd_dest_postrotate_cmd="$search_syslogd_dest_postrotate_cmd" fi fi idx=`expr $idx + 1` done idx=1 while [ "$idx" -le "$SYSLOGD_DEST_N" ] do #echo "idx=$idx" > /dev/tty eval act_syslogd_dest_name='$SYSLOGD_DEST_'${idx}'_NAME' echo "RSYSLOGD_RULE_${idx}_NAME='$act_syslogd_dest_name'" eval act_syslogd_dest_active='$SYSLOGD_DEST_'${idx}'_ACTIVE' echo "RSYSLOGD_RULE_${idx}_ACTIVE='$act_syslogd_dest_active'" eval act_syslogd_dest_source_n='$SYSLOGD_DEST_'${idx}'_SOURCE_N' echo "RSYSLOGD_RULE_${idx}_SELECTOR_N='$act_syslogd_dest_source_n'" idy=1 while [ "$idy" -le "$act_syslogd_dest_source_n" ] do #echo "idy=$idy" > /dev/tty eval act_syslogd_dest_source_name='$SYSLOGD_DEST_'${idx}'_SOURCE_'${idy}'_NAME' echo "RSYSLOGD_RULE_${idx}_SELECTOR_${idy}_NAME='$act_syslogd_dest_source_name'" eval act_syslogd_dest_source='$SYSLOGD_DEST_'${idx}'_SOURCE_'${idy}'' echo "RSYSLOGD_RULE_${idx}_SELECTOR_${idy}='$act_syslogd_dest_source'" eval act_syslogd_dest_source_active='$SYSLOGD_DEST_'${idx}'_SOURCE_'${idy}'_ACTIVE' echo "RSYSLOGD_RULE_${idx}_SELECTOR_${idy}_ACTIVE='$act_syslogd_dest_source_active'" idy=`expr $idy + 1` done eval act_syslogd_dest_target='$SYSLOGD_DEST_'${idx}'_TARGET' echo "RSYSLOGD_RULE_${idx}_ACTION='$act_syslogd_dest_target'" eval act_syslogd_dest_prerotate_cmd='$SYSLOGD_DEST_'${idx}'_PREROTATE_CMD' eval act_syslogd_dest_postrotate_cmd='$SYSLOGD_DEST_'${idx}'_POSTROTATE_CMD' # check for @IP-address values if echo "$act_syslogd_dest_target" | grep -qv '^@' then # check for devices like /dev/console if echo "$act_syslogd_dest_target" | grep -qv '^/dev/' then [ -z "$act_syslogd_dest_prerotate_cmd" ] && act_syslogd_dest_prerotate_cmd="$default_syslogd_dest_prerotate_cmd" [ -z "$act_syslogd_dest_postrotate_cmd" ] && act_syslogd_dest_postrotate_cmd="$default_syslogd_dest_postrotate_cmd" fi fi # Map /etc/init.d/syslogd --quiet restart # to /etc/init.d/syslogd --quiet reload if [ "${act_syslogd_dest_prerotate_cmd}" = '/etc/init.d/syslogd --quiet restart' ] then act_syslogd_dest_prerotate_cmd = '/etc/init.d/syslogd --quiet reload' fi if [ "${act_syslogd_dest_postrotate_cmd}" = '/etc/init.d/syslogd --quiet restart' ] then act_syslogd_dest_postrotate_cmd='/etc/init.d/syslogd --quiet reload' fi echo "RSYSLOGD_RULE_${idx}_LINE_TEMPLATE='Default'" # check for @IP-address values if echo "$act_syslogd_dest_target" | grep -qv '^@' then # check for devices like /dev/console if echo "$act_syslogd_dest_target" | grep -qv '^/dev/' then echo "RSYSLOGD_RULE_${idx}_ROTATE='$rotate'" else echo "RSYSLOGD_RULE_${idx}_ROTATE='no'" fi else echo "RSYSLOGD_RULE_${idx}_ROTATE='no'" fi echo "RSYSLOGD_RULE_${idx}_ROTATE_MODE='std'" act_syslogd_dest_prerotate_cmd=$(echo "$act_syslogd_dest_prerotate_cmd" | sed 's|/etc/init.d/syslogd|/etc/init.d/rsyslogd|') act_syslogd_dest_postrotate_cmd=$(echo "$act_syslogd_dest_postrotate_cmd" | sed 's|/etc/init.d/syslogd|/etc/init.d/rsyslogd|') echo "RSYSLOGD_RULE_${idx}_ROTATE_PRE_CMD='$act_syslogd_dest_prerotate_cmd'" echo "RSYSLOGD_RULE_${idx}_ROTATE_POST_CMD='$act_syslogd_dest_postrotate_cmd'" echo "RSYSLOGD_RULE_${idx}_ROTATE_LOG_INTERVAL='$SYSLOGD_LOG_INTERVAL'" echo "RSYSLOGD_RULE_${idx}_ROTATE_LOG_COUNT='$SYSLOGD_LOG_COUNT'" echo "RSYSLOGD_RULE_${idx}_ROTATE_SIZE='2085181488'" idx=`expr $idx + 1` done # SYSLOGD_MARK_INTERVAL is in minutes, RSYSLOGD_MARK_INTERVAL is in seconds SYSLOGD_MARK_INTERVAL=`expr $SYSLOGD_MARK_INTERVAL \* 60` echo "RSYSLOGD_MARK_INTERVAL='$SYSLOGD_MARK_INTERVAL'" echo "${SYSLOGD_OPTIONS}" | grep -w -- '-r' > /dev/null RC=$? if [ "$RC" = 0 ] then #echo "RSYSLOGD_UDP_PORT='514'" echo "RSYSLOGD_LISTEN='ipv4-only'" echo "RSYSLOGD_IMUDP='yes'" echo "RSYSLOGD_IMUDP_N='1'" echo "RSYSLOGD_IMUDP_1_PORT='514'" else #echo "RSYSLOGD_UDP_PORT='disabled'" echo "RSYSLOGD_IMUDP='no'" fi #echo "RSYSLOGD_TCP_PORT='disabled'" echo "RSYSLOGD_IMTCP='no'" } > $DEST mecho --info "rsyslogd: New configuration created ($DEST)." sh /var/install/config.d/rsyslogd-update.sh --config_only sh /var/install/config.d/rsyslogd.sh # don't restart rsyslogd mecho mecho "Check configuration using menu 'Edit configuration'" mecho "and activate the configuration" mecho anykey