More standardization of text and adding deprecated functions for transition period

This commit is contained in:
Michael Boelen 2019-08-01 14:59:03 +02:00
parent 03f63ad34a
commit da055ae0aa
No known key found for this signature in database
GPG Key ID: 26141F77A09D7F04
1 changed files with 133 additions and 55 deletions

View File

@ -213,7 +213,7 @@
# #
# Parameters : $1 = key # Parameters : $1 = key
# $2 = value # $2 = value
# Returns : True (0) or False (1) # Returns : exit code (0 = True, 1 = False)
# Usage : if CheckItem "key" "value"; then ....; fi # Usage : if CheckItem "key" "value"; then ....; fi
################################################################################ ################################################################################
@ -282,6 +282,8 @@
# Name : CleanUp() # Name : CleanUp()
# Description : Delete PID and temporary files, stop execution (exit code 1) # Description : Delete PID and temporary files, stop execution (exit code 1)
# #
# Parameters : <none>
# Returns : <nothing>
# Usage : this function is triggered by a manual break by user # Usage : this function is triggered by a manual break by user
################################################################################ ################################################################################
@ -298,7 +300,7 @@
# Name : ContainsString() # Name : ContainsString()
# Description : Search a specific string (or regular expression) in another # Description : Search a specific string (or regular expression) in another
# #
# Returns : True (0) or False (1) # Returns : exit code (0 = True, 1 = False)
# Usage : if ContainsString "needle" "there is a needle in the haystack"; echo "Found"; else "Not found"; fi # Usage : if ContainsString "needle" "there is a needle in the haystack"; echo "Found"; else "Not found"; fi
################################################################################ ################################################################################
@ -315,6 +317,8 @@
# Name : CountTests() # Name : CountTests()
# Description : Counter for the number of tests performed # Description : Counter for the number of tests performed
# #
# Parameters : <none>
# Returns : <nothing>
# Usage : Call CountTests to increase number by 1 # Usage : Call CountTests to increase number by 1
################################################################################ ################################################################################
@ -358,7 +362,7 @@
# Name : DirectoryExists() # Name : DirectoryExists()
# Description : Check if a directory exists # Description : Check if a directory exists
# #
# Returns : True (0) or False (1) # Returns : exit code (0 = True, 1 = False)
# Usage : if DirectoryExists; then echo "it exists"; else echo "It does not exist"; fi # Usage : if DirectoryExists; then echo "it exists"; else echo "It does not exist"; fi
################################################################################ ################################################################################
@ -383,7 +387,7 @@
# Description : Show additional information on screen # Description : Show additional information on screen
# #
# Input : $1 = text # Input : $1 = text
# Returns : Nothing # Returns : <nothing>
# Usage : Debug "More details" # Usage : Debug "More details"
################################################################################ ################################################################################
@ -413,7 +417,7 @@
# Name : DiscoverProfiles() # Name : DiscoverProfiles()
# Description : Determine which profiles we have available # Description : Determine which profiles we have available
# #
# Returns : Nothing # Returns : <nothing>
# Usage : DiscoverProfiles # Usage : DiscoverProfiles
################################################################################ ################################################################################
@ -612,7 +616,7 @@
# Name : DisplayWarning # Name : DisplayWarning
# Description : Show a warning on the screen # Description : Show a warning on the screen
# #
# Input : $1 = text # Parameters : $1 = text
# Returns : <nothing> # Returns : <nothing>
################################################################################ ################################################################################
@ -629,9 +633,11 @@
################################################################################ ################################################################################
# Name : Equals() # Name : Equals()
# Description : Compare two strings # Description : Compare two strings after special characters were stripped
# #
# Returns : (0 - True, 1 - False) # Parameters : $1 = string1
# $2 = string2
# Returns : exit code (0 = True, 1 = False)
# Usage : if Equals "${MYDIR}" "/etc"; then echo "Found"; else "Not found"; fi # Usage : if Equals "${MYDIR}" "/etc"; then echo "Found"; else "Not found"; fi
################################################################################ ################################################################################
@ -652,7 +658,7 @@
# Name : ExitClean() # Name : ExitClean()
# Description : Perform a normal exit of the program, and clean up resources # Description : Perform a normal exit of the program, and clean up resources
# #
# Input : <nothing> # Parameters : <nothing>
# Returns : <nothing> # Returns : <nothing>
# Usage : ExitClean # Usage : ExitClean
################################################################################ ################################################################################
@ -669,8 +675,8 @@
# Name : ExitCustom() # Name : ExitCustom()
# Description : Perform a normal exit of the program, and clean up resources # Description : Perform a normal exit of the program, and clean up resources
# #
# Input : $1 = exit code (optional) # Parameters : $1 = exit code (optional)
# Returns : Nothing # Returns : <nothing>
# Usage : ExitCustom 35 # Usage : ExitCustom 35
################################################################################ ################################################################################
@ -692,7 +698,7 @@
# Name : ExitFatal() # Name : ExitFatal()
# Description : Perform exit of the program (with code 1), clean up resources # Description : Perform exit of the program (with code 1), clean up resources
# #
# Input : $1 = text string (optional) # Parameters : $1 = text string (optional)
# Returns : <nothing> # Returns : <nothing>
# Usage : ExitFatal # Usage : ExitFatal
################################################################################ ################################################################################
@ -713,6 +719,8 @@
################################################################################ ################################################################################
# Name : FileExists() # Name : FileExists()
# Description : Determine if a file exists # Description : Determine if a file exists
#
# Parameters : $1 = path
# Returns : 0 (found), 1 (not found) # Returns : 0 (found), 1 (not found)
# FILE_FOUND (0:found, 1:not found) - deprecated usage # FILE_FOUND (0:found, 1:not found) - deprecated usage
################################################################################ ################################################################################
@ -1177,7 +1185,8 @@
# Name : GetReportData() # Name : GetReportData()
# Description : Request data from report # Description : Request data from report
# Returns : Data (when matches were found) # Returns : Data (when matches were found)
# Exit code: True (0) or False (1) when search was cancelled # Returns : exit code (0 = True, 1 = False, meaning search was cancelled)
# stdout (output of search result)
################################################################################ ################################################################################
GetReportData() { GetReportData() {
@ -1207,7 +1216,6 @@
return 1 return 1
else else
${AWKBINARY} -v pattern="^${KEY}" -F= '$1 ~ pattern {print $2}' ${REPORTFILE} | ${TRBINARY} -cd "${VALID_CHARS}" | ${TRBINARY} '[:blank:]' '__space__' ${AWKBINARY} -v pattern="^${KEY}" -F= '$1 ~ pattern {print $2}' ${REPORTFILE} | ${TRBINARY} -cd "${VALID_CHARS}" | ${TRBINARY} '[:blank:]' '__space__'
fi fi
return 0 return 0
} }
@ -1217,7 +1225,7 @@
# Name : HasData() # Name : HasData()
# Description : Check for a filled variable # Description : Check for a filled variable
# #
# Returns : 0 = True, 1 = False # Returns : exit code (0 = True, 1 = False)
# Usage : if HasData "${FIND}"; then # Usage : if HasData "${FIND}"; then
################################################################################ ################################################################################
@ -1234,7 +1242,7 @@
# Name : InsertSection() # Name : InsertSection()
# Description : Show a section block on screen # Description : Show a section block on screen
# #
# Returns : Nothing # Returns : <nothing>
# Usage : InsertSection # Usage : InsertSection
################################################################################ ################################################################################
@ -1253,7 +1261,7 @@
# Name : InsertPlugionSection() # Name : InsertPlugionSection()
# Description : Insert section block for plugins (different color) # Description : Insert section block for plugins (different color)
# #
# Returns : Nothing # Returns : <nothing>
# Usage : InsertPluginSection # Usage : InsertPluginSection
################################################################################ ################################################################################
@ -1270,8 +1278,10 @@
################################################################################ ################################################################################
# Name : IsContainer() # Name : IsContainer()
# Description : Determine if we are running in a container # Description : Determine if we are running in a container
# Returns : Exit code (0 = true, 1 = false) #
# CONTAINER_TYPE # Parameters : <none>
# Returns : exit code (0 = true, 1 = false)
# variable: CONTAINER_TYPE
################################################################################ ################################################################################
IsContainer() { IsContainer() {
@ -1304,7 +1314,9 @@
################################################################################ ################################################################################
# Name : IsDebug() # Name : IsDebug()
# Description : Check if --debug option is used to show more details # Description : Check if --debug option is used to show more details
# Returns : 0 (True) or 1 (False) #
# Parameters : <none>
# Returns : exit code (0 = True, 1 = False)
################################################################################ ################################################################################
IsDebug() { IsDebug() {
@ -1316,7 +1328,8 @@
# Name : IsDeveloperMode() # Name : IsDeveloperMode()
# Description : Check if we are in development mode (--developer) # Description : Check if we are in development mode (--developer)
# #
# Returns : 0 (True) or 1 (False) # Parameters : <none>
# Returns : exit code (0 = True, 1 = False)
# Notes : This is set with command line option or as a profile setting # Notes : This is set with command line option or as a profile setting
################################################################################ ################################################################################
@ -1329,7 +1342,8 @@
# Name : IsDeveloperVersion() # Name : IsDeveloperVersion()
# Description : Check if this version is development or stable release # Description : Check if this version is development or stable release
# #
# Returns : 0 (True) or 1 (False) # Parameters : <none>
# Returns : exit code (0 = True, 1 = False)
################################################################################ ################################################################################
IsDeveloperVersion() { IsDeveloperVersion() {
@ -1341,7 +1355,7 @@
# Name : IsEmpty() # Name : IsEmpty()
# Description : Check for variable that has no data in it # Description : Check for variable that has no data in it
# #
# Returns : 0 = True, 1 = False # Returns : exit code (0 = True, 1 = False)
# Usage : if IsEmpty "${FIND}"; then # Usage : if IsEmpty "${FIND}"; then
################################################################################ ################################################################################
@ -1465,7 +1479,7 @@
################################################################################ ################################################################################
# Name : IsNotebook # Name : IsNotebook
# Description : Check if file or directory is owned by root # Description : Check if file or directory is owned by root
# Returns : 0 (true), 1 (false), or 255 (unknown) # Returns : exit code (0 = True, 1 = False, 255 = Unknown)
################################################################################ ################################################################################
IsNotebook() { IsNotebook() {
@ -1521,7 +1535,9 @@
################################################################################ ################################################################################
# Name : IsVerbose() # Name : IsVerbose()
# Description : Check if --verbose option is used to show more details on screen # Description : Check if --verbose option is used to show more details on screen
# Returns : 0 (true) or 1 (false) #
# Parameters : <none>
# Returns : exit code (0 =true, 1 =false)
################################################################################ ################################################################################
IsVerbose() { IsVerbose() {
@ -1532,9 +1548,11 @@
################################################################################ ################################################################################
# Name : IsVirtualMachine() # Name : IsVirtualMachine()
# Description : Determine whether it is a virtual machine # Description : Determine whether it is a virtual machine
# Returns : ISVIRTUALMACHINE (0-2) # Parameters : <none>
# VMTYPE # Returns : exit code (0 = True, 1 = False, 2 = Unknown)
# VMFULLTYPE # variable: ISVIRTUALMACHINE (0-2)
# variable: VMTYPE
# variable: VMFULLTYPE
################################################################################ ################################################################################
IsVirtualMachine() { IsVirtualMachine() {
@ -1750,7 +1768,7 @@
# Name : IsWorldReadable() # Name : IsWorldReadable()
# Description : Determines if a file is readable for all users (world) # Description : Determines if a file is readable for all users (world)
# #
# Input : path (string) # Input : $1 = path (string)
# Returns : exit code (0 = readable, 1 = not readable, 255 = error) # Returns : exit code (0 = readable, 1 = not readable, 255 = error)
# Usage : if IsWorldReadable /etc/motd; then echo "File is readable"; fi # Usage : if IsWorldReadable /etc/motd; then echo "File is readable"; fi
################################################################################ ################################################################################
@ -1776,7 +1794,7 @@
# Name : IsWorldExecutable() # Name : IsWorldExecutable()
# Description : Determines if a file is executable for all users (world) # Description : Determines if a file is executable for all users (world)
# #
# Input : path (string) # Input : $1 = path (string)
# Returns : exit code (0 = executable, 1 = not executable, 255 = error) # Returns : exit code (0 = executable, 1 = not executable, 255 = error)
# Usage : if IsWorldExecutable /bin/ps; then echo "File is executable"; fi # Usage : if IsWorldExecutable /bin/ps; then echo "File is executable"; fi
################################################################################ ################################################################################
@ -1803,7 +1821,7 @@
# Name : IsWorldWritable() # Name : IsWorldWritable()
# Description : Determines if a file is writable for all users # Description : Determines if a file is writable for all users
# #
# Input : path # Parameters : $1 = path
# Returns : exit code (0 = writable, 1 = not writable, 255 = error) # Returns : exit code (0 = writable, 1 = not writable, 255 = error)
# Usage : if IsWorldWritable /etc/motd; then echo "File is writable"; fi # Usage : if IsWorldWritable /etc/motd; then echo "File is writable"; fi
################################################################################ ################################################################################
@ -1828,8 +1846,8 @@
# Name : LogText() # Name : LogText()
# Description : Function logtext (redirect data ($1) to log file) # Description : Function logtext (redirect data ($1) to log file)
# #
# Input : $1 = text (string) # Parameters : $1 = text (string)
# Returns : Nothing # Returns : <nothing>
# Usage : LogText "This line goes into the log file" # Usage : LogText "This line goes into the log file"
################################################################################ ################################################################################
@ -1898,6 +1916,7 @@
################################################################################ ################################################################################
# Name : ParseProfiles() # Name : ParseProfiles()
# Description : Check file permissions and parse data from profiles # Description : Check file permissions and parse data from profiles
# Parameters : <none>
# Returns : <nothing> # Returns : <nothing>
################################################################################ ################################################################################
@ -1910,8 +1929,9 @@
################################################################################ ################################################################################
# Name : ParseTestValues() # Name : ParseTestValues()
# Description : Parse values from a specific test # Description : Parse values from a specific test
# Inputs : service (e.g. ssh) #
# Returns : CHECK_VALUES_ARRAY # Parameters : $1 = service (e.g. ssh)
# Returns : CHECK_VALUES_ARRAY variable
################################################################################ ################################################################################
ParseTestValues() { ParseTestValues() {
@ -1965,7 +1985,8 @@
################################################################################ ################################################################################
# Name : ParseNginx() # Name : ParseNginx()
# Description : Parse nginx configuration lines # Description : Parse nginx configuration lines
# Input : $1 = file (should be readable and tested upfront) #
# Parameters : $1 = file (should be readable and tested upfront)
# Returns : <nothing> # Returns : <nothing>
################################################################################ ################################################################################
@ -2179,12 +2200,15 @@
################################################################################ ################################################################################
# Name : PortIsListening() # Name : PortIsListening()
# Description : Check if machine is listening on specified protocol and port # Description : Check if machine is listening on specified protocol and port
# Returns : exit code 0 (listening) or 1 (not listening) #
# Parameters : $1 = protocol
# $2 = port
# Returns : exit code (0 = listening, 1 = not listening, 255 = can't perform test)
# Usage : if PortIsListening "TCP" 22; then echo "Port is listening"; fi # Usage : if PortIsListening "TCP" 22; then echo "Port is listening"; fi
################################################################################ ################################################################################
PortIsListening() { PortIsListening() {
if [ "${LSOFBINARY}" = "" ]; then if [ -z "${LSOFBINARY}" ]; then
return 255 return 255
else else
if [ $# -eq 2 ] && [ $1 = "TCP" -o $1 = "UDP" ]; then if [ $# -eq 2 ] && [ $1 = "TCP" -o $1 = "UDP" ]; then
@ -2209,7 +2233,7 @@
# Name : Progress() # Name : Progress()
# Description : Displays progress on screen with dots # Description : Displays progress on screen with dots
# #
# Input : --finish or text (string) # Parameters : $1 = --finish or text (string)
# Returns : <nothing> # Returns : <nothing>
# Tip : Use this function from Register with the --progress parameter # Tip : Use this function from Register with the --progress parameter
################################################################################ ################################################################################
@ -2235,8 +2259,9 @@
################################################################################ ################################################################################
# Name : RandomString() # Name : RandomString()
# Description : Displays progress on screen with dots # Description : Displays progress on screen with dots
# Input : Amount of characters (optional) #
# Returns : RANDOMSTRING # Parameters : $1 = number (amount of characters, optional)
# Returns : RANDOMSTRING variable
# Usage : RandomString 32 # Usage : RandomString 32
################################################################################ ################################################################################
@ -2256,7 +2281,9 @@
################################################################################ ################################################################################
# Name : Readonly() # Name : Readonly()
# Description : Mark a variable as read-only data # Description : Mark a variable as read-only data
# Returns : nothing #
# Returns : <nothing>
# Notes : new function, not in use yet
################################################################################ ################################################################################
Readonly() { Readonly() {
@ -2275,6 +2302,8 @@
################################################################################ ################################################################################
# Name : Register() # Name : Register()
# Description : Register a test and see if it has to be run # Description : Register a test and see if it has to be run
#
# Parameters : multiple, see test
# Returns : SKIPTEST (0 or 1) # Returns : SKIPTEST (0 or 1)
################################################################################ ################################################################################
@ -2468,7 +2497,9 @@
################################################################################ ################################################################################
# Name : RemoveColors() # Name : RemoveColors()
# RemoveColors Clear color settings for --no-colors (see include/consts) # Description : Disabled colors by overriding them (defined in include/consts)
#
# Notes : Can be activated using --no-colors
################################################################################ ################################################################################
RemoveColors() { RemoveColors() {
@ -2506,6 +2537,9 @@
################################################################################ ################################################################################
# Name : RemovePIDFile() # Name : RemovePIDFile()
# Description : When defined, remove the file storing the process ID # Description : When defined, remove the file storing the process ID
#
# Parameters : <none>
# Returns : <nothing>
################################################################################ ################################################################################
# Remove PID file # Remove PID file
@ -2555,6 +2589,9 @@
################################################################################ ################################################################################
# Name : Report() # Name : Report()
# Description : Store data in the report file # Description : Store data in the report file
#
# Parameters : $1 = data (format: key=value)
# Returns : <nothing>
################################################################################ ################################################################################
Report() { Report() {
@ -2568,7 +2605,7 @@
# smaller atomic tests are performed. For example sysctl keys, # smaller atomic tests are performed. For example sysctl keys,
# and SSH settings. # and SSH settings.
# #
# Input : <multiple fields, see test> # Parameters : <multiple fields, see test>
# Returns : <nothing> # Returns : <nothing>
# Notes : Need to check for values (strip out semicolons from values) # Notes : Need to check for values (strip out semicolons from values)
# Only add fields which are filled in # Only add fields which are filled in
@ -2633,11 +2670,10 @@
# #
# Parameters : $1 = test ID + colon + 2 numeric characters (TEST-1234:01) # Parameters : $1 = test ID + colon + 2 numeric characters (TEST-1234:01)
# $2 = string (text) # $2 = string (text)
# Notes : Allow this function with only 1 parameter in strict mode with ${2-Text}
################################################################################ ################################################################################
# Log exceptions
ReportException() { ReportException() {
# Allow this function with only 1 parameter in strict mode with ${2-Text}
Report "exception_event[]=$1|${2-NoInfo}|" Report "exception_event[]=$1|${2-NoInfo}|"
LogText "Exception: test has an exceptional event ($1) with text ${2-NoText}" LogText "Exception: test has an exceptional event ($1) with text ${2-NoText}"
} }
@ -2668,6 +2704,7 @@
# * url:https://example.org/how-to-solve-link # * url:https://example.org/how-to-solve-link
# * text:Additional explanation # * text:Additional explanation
# * - (dash) for none # * - (dash) for none
# Returns : <nothing>
################################################################################ ################################################################################
ReportSuggestion() { ReportSuggestion() {
@ -2686,17 +2723,19 @@
################################################################################ ################################################################################
# Name : ReportWarning() # Name : ReportWarning()
# Description : Log a warning to the report file # Description : Log a warning to the report file
#
# Parameters : $1 = test ID
# $2 = message (optional)
# $3 = details (optional)
# $4 = possible solution (optional)
# Returns : <nothing>
################################################################################ ################################################################################
ReportWarning() { ReportWarning() {
TOTAL_WARNINGS=$((TOTAL_WARNINGS + 1)) TOTAL_WARNINGS=$((TOTAL_WARNINGS + 1))
# Old style # Old style used L/M/H level as second parameter. This is deprecated as of 3.x
# <ID> <priority/impact> <warning text>
if [ "$2" = "L" -o "$2" = "M" -o "$2" = "H" ]; then if [ "$2" = "L" -o "$2" = "M" -o "$2" = "H" ]; then
if [ $# -ge 1 ]; then TEST="$1"; fi ExitFatal "Deprecated usage of ReportWarning() function"
if [ $# -ge 2 ]; then DETAILS="$2"; fi
if [ $# -ge 3 ]; then MESSAGE="$3"; fi
SOLUTION="-"
else else
# New style warning format: # New style warning format:
# <ID> <Warning> <Details> <Solution> # <ID> <Warning> <Details> <Solution>
@ -2725,7 +2764,7 @@
# Description : Test provided string to see if it contains unwanted characters # Description : Test provided string to see if it contains unwanted characters
# #
# Input : string + optional class (parameter 2) # Input : string + optional class (parameter 2)
# Returns : 0 (input considered to be safe) or 1 (validation failed) # Returns : exit code (0 = input considered to be safe, 1 = validation failed)
################################################################################ ################################################################################
SafeInput() { SafeInput() {
@ -2754,6 +2793,8 @@
# Name : SafeFile() # Name : SafeFile()
# Description : Check if a file is safe to use # Description : Check if a file is safe to use
# #
# Parameters : $1 = file name
# Returns : exit code (0 = OK, 1 = issue)
################################################################################ ################################################################################
SafeFile() { SafeFile() {
@ -2805,6 +2846,8 @@
# Name : SafePerms() # Name : SafePerms()
# Description : Check if a file has safe permissions to be used # Description : Check if a file has safe permissions to be used
# #
# Parameters : $1 = file name
# $2 = type of file (optional)
# Returns : 0 (file permissions OK) or break # Returns : 0 (file permissions OK) or break
################################################################################ ################################################################################
@ -2962,7 +3005,7 @@
# Name : ShowComplianceFinding() # Name : ShowComplianceFinding()
# Description : Display a section of a compliance standard which is not fulfilled # Description : Display a section of a compliance standard which is not fulfilled
# #
# Input : <several parameters, see test> # Parameters : <several parameters, see test>
# Returns : <nothing> # Returns : <nothing>
################################################################################ ################################################################################
@ -3048,7 +3091,7 @@
# Name : ShowSymlinkPath() # Name : ShowSymlinkPath()
# Description : Check if we can find the path behind a symlink # Description : Check if we can find the path behind a symlink
# #
# Input : $1 = file (string) # Parameters : $1 = file (string)
# Returns : FOUNDPATH (0 not found, 1 found path), SYMLINK (new path) # Returns : FOUNDPATH (0 not found, 1 found path), SYMLINK (new path)
################################################################################ ################################################################################
@ -3370,6 +3413,41 @@
# steps. If they still get used, they will trigger errors on screen. # steps. If they still get used, they will trigger errors on screen.
################################################################################ ################################################################################
counttests() {
DisplayWarning "Deprecated function used (counttests)"
if IsDeveloperMode; then Debug "Warning: old counttests function is used. Please replace any reference with CountTests."; fi
CountTests
}
logtext() {
DisplayWarning "Deprecated function used (logtext)"
if IsDeveloperMode; then Debug "Warning: old logtext function is used. Please replace any reference with LogText."; fi
LogText "$1"
}
logtextbreak() {
DisplayWarning "Deprecated function used (logtextbreak)"
if IsDeveloperMode; then Debug "Warning: old logtextbreak function is used. Please replace any reference with LogTextBreak."; fi
LogTextBreak "$1"
}
report() {
DisplayWarning "Deprecated function used (report)"
if IsDeveloperMode; then Debug "Warning: old report function is used. Please replace any reference with Report."; fi
Report "$1"
}
wait_for_keypress() {
DisplayWarning "Deprecated function used (wait_for_keypress)"
if IsDeveloperMode; then Debug "Warning: old wait_for_keypress function is used. Please replace any reference with WaitForKeyPress."; fi
WaitForKeyPress
}
ShowResult() {
DisplayWarning "Deprecated function used (ShowResult)"
if IsDeveloperMode; then Debug "Warning: old ShowResult() function is used. Please replace any reference with WaitForKeyPress."; fi
}
#================================================================================ #================================================================================
# Lynis is part of Lynis Enterprise and released under GPLv3 license # Lynis is part of Lynis Enterprise and released under GPLv3 license