mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 09:12:45 +01:00
[feat] Add functions for input validation
This commit is contained in:
@@ -233,6 +233,89 @@ __check_apt_lock() {
|
||||
return $lock
|
||||
}
|
||||
|
||||
valid_cidr() {
|
||||
# Verify there is a backslash in the string
|
||||
echo "$1" | grep -qP "^[^/]+/[^/]+$" || return 1
|
||||
|
||||
local cidr
|
||||
local ip
|
||||
|
||||
cidr=$(echo "$1" | sed 's/.*\///')
|
||||
ip=$(echo "$1" | sed 's/\/.*//' )
|
||||
|
||||
if valid_ip4 "$ip"; then
|
||||
[[ $cidr =~ ([0-9]|[1-2][0-9]|3[0-2]) ]] && return 0 || return 1
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
valid_cidr_list() {
|
||||
local all_valid=0
|
||||
|
||||
IFS="," read -r -a net_arr <<< "$1"
|
||||
|
||||
for net in "${net_arr[@]}"; do
|
||||
valid_cidr "$net" || all_valid=1
|
||||
done
|
||||
|
||||
return $all_valid
|
||||
}
|
||||
|
||||
valid_dns_list() {
|
||||
local all_valid=0
|
||||
|
||||
read -r -a dns_arr <<< "$1"
|
||||
|
||||
for addr in "${dns_arr[@]}"; do
|
||||
valid_ip4 "$addr" || all_valid=1
|
||||
done
|
||||
|
||||
return $all_valid
|
||||
}
|
||||
|
||||
valid_fqdn() {
|
||||
local fqdn=$1
|
||||
|
||||
echo "$fqdn" | grep -qP '(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)' \
|
||||
&& return 0 \
|
||||
|| return 1
|
||||
}
|
||||
|
||||
valid_hostname() {
|
||||
local hostname=$1
|
||||
|
||||
[[ $hostname =~ ^[a-zA-Z0-9\-]+$ ]] && [[ $hostname != 'localhost' ]] && return 0 || return 1
|
||||
}
|
||||
|
||||
valid_ip4() {
|
||||
local ip=$1
|
||||
|
||||
echo "$ip" | grep -qP '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' && return 0 || return 1
|
||||
}
|
||||
|
||||
valid_int() {
|
||||
local num=$1
|
||||
local min=${2:-1}
|
||||
local max=${3:-1000}
|
||||
|
||||
[[ $num =~ ^[0-9]*$ ]] && [[ $num -ge $min ]] && [[ $num -le $max ]] && return 0 || return 1
|
||||
}
|
||||
|
||||
valid_string() {
|
||||
local str=$1
|
||||
local min_length=${2:-1}
|
||||
local max_length=${3:-64}
|
||||
|
||||
echo "$str" | grep -qP '^\S+$' && [[ ${#str} -ge $min_length ]] && [[ ${#str} -le $max_length ]] && return 0 || return 1
|
||||
}
|
||||
|
||||
valid_username() {
|
||||
local user=$1
|
||||
|
||||
echo "$user" | grep -qP '^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$' && return 0 || return 1
|
||||
}
|
||||
|
||||
wait_for_web_response() {
|
||||
url=$1
|
||||
expected=$2
|
||||
|
||||
Reference in New Issue
Block a user