#!/bin/sh

#################################################################################
#
#   Lynis
# ------------------
#
# Copyright 2007-2014, Michael Boelen (michael@rootkit.nl), The Netherlands
# Web site: http://www.rootkit.nl
#
# Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
# welcome to redistribute it under the terms of the GNU General Public License.
# See LICENSE file for usage of this software.
#
#################################################################################
#
# Parameter checks
#
#################################################################################
#

    # Check number of parameters submitted (at least one is needed)
    PARAMCOUNT=$#
    while [ $# -ge 1 ]; do
      case $1 in

          # Assign auditor to report
          --auditor)
             shift
             AUDITORNAME=$1
          ;;

          # Perform tests
          -c | --check-all | --checkall)
             CHECK=1
          ;;

          # Cronjob support
          --cronjob | --cron)
             CRONJOB=1;
             # Use some defaults (-c, -Q, no colors)
             CHECK=1; QUICKMODE=1; NEVERBREAK=1
             # Get rid of the colors
             NORMAL=""; WARNING=""; SECTION=""; NOTICE=""; OK=""; BAD=""; CYAN=""; MAGENTA=""; PURPLE=""; YELLOW=""; WHITE=""; GREEN=""; RED=""
          ;;

          # Perform tests with additional debugging information on screen
          --debug)
             DEBUG=1
          ;;


          # View help
          --help | -h)
              VIEWHELP=1
          ;;

          # View program/database information
          --check-update | --info)
              VIEWUPDATEINFO=1
          ;;

          # Adjust default logfile location
          --logfile | --log-file)
             shift
             LOGFILE=$1
          ;;

          # Don't use colors
          --no-colors)
              NORMAL=""; WARNING=""; SECTION=""; NOTICE=""; OK=""; BAD=""; CYAN=""; MAGENTA=""; PURPLE=""; YELLOW=""; WHITE=""; GREEN=""; RED=""
          ;;

          # Disable logging
          --no-log | --nolog)
             LOGFILE="/dev/null"
          ;;

          # Define a custom profile file
          --profile)
             shift
             PROFILE=$1
          ;;

          # Define a custom plugin directory
          --plugin-dir)
             shift
             PLUGINDIR=$1
             LASTCHAR=`echo $1 | awk '{ print substr($0, length($0))}'`
             if [ "${LASTCHAR}" = "/" ]; then
                 echo "${RED}Error:${WHITE} plugin directory path should not end with a slash${NORMAL}"
                 ExitFatal
             fi
             if [ ! -d ${PLUGINDIR} ]; then
                 echo "${RED}Error:${WHITE} invalid plugin directory ${PLUGINDIR}${NORMAL}"
                 ExitFatal
             fi
          ;;

          # Quiet mode
          -q | --quiet)
             QUIET=1
             # Run non-interactive
             QUICKMODE=1
          ;;

          # Non-interactive mode
          -Q | --quick)
             QUICKMODE=1
          ;;

          # Strip the colors which aren't clearly visible on light backgrounds
          --reverse-colors)
              #NORMAL="";
              SECTION="${NORMAL}";
              NOTICE="${NORMAL}";
              #OK="";
              #BAD="";
              CYAN="${NORMAL}";
              GREEN="${NORMAL}";
              YELLOW="${NORMAL}";
              WHITE="${NORMAL}";
              PURPLE="${NORMAL}";
              #GREEN="";
              #RED=""
          ;;

          # Only scan these tests
          --tests)
              shift
              TESTS_TO_PERFORM=$1
          ;;

          # Scan one or more categories only
          --tests-category)
              shift
              TESTS_CATEGORY_TO_PERFORM=$1
          ;;

          # Lynis Enterprise: upload data to central node
          --upload)
             UPLOAD_DATA=1
          ;;
          # Version number
          -V | --version)
             echo "${PROGRAM_version}"
             exit 0
          ;;

          --view-categories | --list-categories | --show-categories)
             ViewCategories
             exit 0
          ;;

          # View man page
          --view-manpage | --man)
             if [ -f lynis.8 ]; then
                 nroff -man lynis.8
                 exit 0
               else
                 echo "Error: man page file not found (lynis.8)"
                 echo "If you are running an installed version of Lynis, use 'man lynis'"
                 exit 1
             fi
          ;;

          # Drop out when using wrong option(s)
          *)
              # Wrong option used, we bail out later
              WRONGOPTION=1
              WRONGOPTION_value=$1
          ;;
      esac
      shift
    done

#================================================================================
# Lynis - Copyright 2007-2014, Michael Boelen - www.rootkit.nl - The Netherlands
