Files
securityonion/tests/validation.sh
William Wernert 569cb24861 Use python lib to make cidr validation more strict
Also update ipv4 validation to match the method used to validate cidr strings
2021-11-10 16:53:01 -05:00

188 lines
3.2 KiB
Bash

#!/bin/bash
. "$(dirname "$0")"/../salt/common/tools/sbin/so-common
script_ret=0
GREEN="\e[1;32m"
RED="\e[1;31m"
RESET="\e[0m"
test_fun() {
local expected_result=$1
shift
local fun=$1
shift
$fun "$@"
local ret=$?
[[ $ret -eq 0 ]] && res="O" || res="X"
[[ $ret -ne $expected_result ]] && script_ret=1
local prefix=$1
[[ -n $2 ]] && prefix="$prefix, min=$2"
[[ -n $3 ]] && prefix="$prefix, max=$3"
[[ $prefix == "" ]] && prefix="[EMPTY]"
[[ $ret -eq $expected_result ]] \
&& printf "${GREEN}%b${RESET}" " $res" \
|| printf "${RED}%b${RESET}" " $res"
printf "%s\n" " - $prefix"
}
header "FQDN"
test_fun 0 valid_fqdn "rwwiv.com"
test_fun 0 valid_fqdn "ddns.rwwiv.com"
test_fun 1 valid_fqdn ".com"
test_fun 1 valid_fqdn "rwwiv."
test_fun 1 valid_fqdn ""
sleep 0.15
header "ip4"
test_fun 0 valid_ip4 "192.168.1.1"
test_fun 0 valid_ip4 "192.168.1.255"
test_fun 1 valid_ip4 "192.168.1.256"
test_fun 1 valid_ip4 "192.168..1"
test_fun 1 valid_ip4 "192.168.1.1."
test_fun 1 valid_ip4 ""
sleep 0.15
header "CIDR (ipv4)"
test_fun 0 valid_cidr "192.168.1.0/24"
test_fun 0 valid_cidr "192.160.0.0/12"
test_fun 1 valid_cidr "192.168.1.0"
test_fun 1 valid_ip4 "192.168.1.0/"
test_fun 1 valid_ip4 "/24"
test_fun 1 valid_cidr ""
sleep 0.15
header "CIDR list"
test_fun 0 valid_cidr_list "10.0.0.0/8,192.168.0.0/16,172.16.0.0/12"
test_fun 0 valid_cidr_list "10.0.0.0/8"
test_fun 1 valid_cidr_list "10.0.0.0/8,192.168.0.0/16172.16.0.0/12"
test_fun 1 valid_cidr_list "10.0.0.0"
sleep 0.15
header "DNS"
test_fun 0 valid_dns_list "8.8.8.8,8.8.4.4"
test_fun 0 valid_dns_list "8.8.8.8"
test_fun 1 valid_dns_list "8.8.8.8 8.8.4.4"
test_fun 1 valid_dns_list "8.8.8.,8.8.4.4"
test_fun 1 valid_dns_list "192.168.9."
sleep 0.15
header "int (default min: 1, default max: 1000000000)"
test_fun 0 valid_int "24"
test_fun 0 valid_int "1"
test_fun 0 valid_int "2" "2"
test_fun 0 valid_int "1000000000"
test_fun 1 valid_int "1000000001"
test_fun 1 valid_int "24" "" "20"
test_fun 1 valid_int "-1"
test_fun 1 valid_int "1" "2"
test_fun 1 valid_int "257" "" "256"
test_fun 1 valid_int "not_a_num"
test_fun 1 valid_int ""
sleep 0.15
header "hostname"
test_fun 0 valid_hostname "so-sensor01"
test_fun 0 valid_hostname "so"
test_fun 1 valid_hostname "so_sensor01"
test_fun 1 valid_hostname "so.sensor01"
test_fun 1 valid_hostname "localhost"
test_fun 1 valid_hostname ""
sleep 0.15
header "string (default min_length: 1, default max_length: 64)"
test_fun 0 valid_string "string"
test_fun 0 valid_string "s"
test_fun 0 valid_string "very_long_string_64_sdhkjashasdfkajjagskfjhgkslfkjhlaskfhlaskjhf"
test_fun 0 valid_string "12"
test_fun 1 valid_string "string with spaces"
test_fun 1 valid_string "very_long_string_<64_sdhflkjashasdfkajshfgkjsahgfkjagskfjhgkslfkjhlaskfhlaskjhf"
test_fun 1 valid_string "too_short" "12"
test_fun 1 valid_string "too_long" "" "4"
test_fun 1 valid_string ""
sleep 0.15
header "Linux user"
test_fun 0 valid_username "so_user_01"
test_fun 0 valid_username "onionuser"
test_fun 1 valid_username "12fa"
test_fun 1 valid_username "so.user.01"
test_fun 1 valid_username "very_long_username_asdflashfsafasdfasdfkahsgkjahfdkjhsg"
echo
exit $script_ret