#!/bin/sh 
 | 
# 
 | 
# Snort Startup Script modified for OpenEmbedded 
 | 
# 
 | 
  
 | 
# Script variables 
 | 
  
 | 
LAN_INTERFACE="$2" 
 | 
RETURN_VAL=0 
 | 
BINARY=/usr/bin/snort 
 | 
PATH=/bin:/usr/bin 
 | 
PID=/var/run/snort_${LAN_INTERFACE}_ids.pid 
 | 
DEL_PID=$PID 
 | 
LOGDIR="/var/log/snort" 
 | 
DATE=`/bin/date +%Y%m%d` 
 | 
CONFIG_FILE=/etc/snort/snort.conf 
 | 
PROG=snort 
 | 
USER=root 
 | 
GROUP=root 
 | 
  
 | 
if [ ! -x "$BINARY" ]; then 
 | 
    echo "ERROR: $BINARY not found." 
 | 
    exit 1 
 | 
fi 
 | 
  
 | 
if [ ! -r "$CONFIG_FILE" ]; then 
 | 
    echo "ERROR: $CONFIG_FILE not found." 
 | 
    exit 1 
 | 
fi 
 | 
  
 | 
start() 
 | 
{ 
 | 
    [ -n "$LAN_INTERFACE" ] || return 0 
 | 
    # Check if log diratory is present. Otherwise, create it. 
 | 
    if [ ! -d $LOGDIR/$DATE ]; then 
 | 
        mkdir -p $LOGDIR/$DATE 
 | 
        /bin/chown -R $USER:$USER $LOGDIR/$DATE 
 | 
        /bin/chmod -R 700 $LOGDIR/$DATE 
 | 
    fi 
 | 
  
 | 
    /bin/echo "Starting $PROG: " 
 | 
  
 | 
    # Snort parameters 
 | 
    # -D Run Snort in background (daemon) mode 
 | 
    # -i <if> Listen on interface <if> 
 | 
    # -u <uname> Run snort uid as <uname> user (or uid) 
 | 
    # -g <gname> Run snort uid as <gname> group (or gid) 
 | 
    # -c Load configuration file 
 | 
    # -N Turn off logging (alerts still work) (removed to enable logging) :) 
 | 
    # -l Log to directory 
 | 
    # -t Chroots process to directory after initialization 
 | 
    # -R <id> Include 'id' in snort_intf<id>.pid file name 
 | 
  
 | 
    $BINARY -D -i $LAN_INTERFACE -u $USER -g $GROUP -c $CONFIG_FILE -l $LOGDIR/$DATE -t $LOGDIR/$DATE -R _ids 
 | 
    /bin/echo "$PROG startup complete." 
 | 
    return $RETURN_VAL 
 | 
} 
 | 
  
 | 
stop() 
 | 
{ 
 | 
    if [ -s $PID ]; then 
 | 
        /bin/echo "Stopping $PROG with PID `cat $PID`: " 
 | 
        kill -TERM `cat $PID` 2>/dev/null 
 | 
        RETURN_VAL=$? 
 | 
        /bin/echo "$PROG shutdown complete." 
 | 
        [ -e $DEL_PID ] && rm -f $DEL_PID 
 | 
        [ -e $DEL_PID.lck ] && rm -f $DEL_PID.lck 
 | 
    else 
 | 
        /bin/echo "ERROR: PID in $PID file not found." 
 | 
        RETURN_VAL=1 
 | 
    fi 
 | 
    return $RETURN_VAL 
 | 
} 
 | 
  
 | 
status() 
 | 
{ 
 | 
    if [ -s $PID ]; then 
 | 
        echo "$PROG is running as pid `cat $PID`:" 
 | 
    else 
 | 
        echo "$PROG is not running." 
 | 
    fi 
 | 
} 
 | 
  
 | 
restart() 
 | 
{ 
 | 
    stop 
 | 
    start 
 | 
    RETURN_VAL=$? 
 | 
    return $RETURN_VAL 
 | 
} 
 | 
  
 | 
case "$1" in 
 | 
    start) 
 | 
        start 
 | 
        ;; 
 | 
    stop) 
 | 
        stop 
 | 
        ;; 
 | 
    status) 
 | 
        status 
 | 
        ;; 
 | 
    restart|reload) 
 | 
        restart 
 | 
        ;; 
 | 
    *) 
 | 
        /bin/echo "Usage: $0 {start|stop|status|restart|reload}" 
 | 
        RETURN_VAL=1 
 | 
esac 
 | 
  
 | 
exit $RETURN_VAL 
 |