mirror of
https://github.com/myvesta/vesta
synced 2025-08-20 21:34:12 -07:00
resolved conflicts
This commit is contained in:
commit
0d026da7f3
151 changed files with 5312 additions and 407 deletions
103
func/main.sh
103
func/main.sh
|
@ -590,6 +590,104 @@ is_ip_format_valid() {
|
|||
fi
|
||||
}
|
||||
|
||||
# IPv6 format validator
|
||||
is_ipv6_format_valid() {
|
||||
object_name=${2-ip6}
|
||||
ip_regex='([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
|
||||
t_ip=$(echo $1 |awk -F / '{print $1}')
|
||||
t_cidr=$(echo $1 |awk -F / '{print $2}')
|
||||
valid_cidr=1
|
||||
|
||||
WORD="[0-9A-Fa-f]\{1,4\}"
|
||||
# flat address, no compressed words
|
||||
FLAT="^${WORD}\(:${WORD}\)\{7\}$"
|
||||
|
||||
COMP2="^\(${WORD}:\)\{1,1\}\(:${WORD}\)\{1,6\}$"
|
||||
COMP3="^\(${WORD}:\)\{1,2\}\(:${WORD}\)\{1,5\}$"
|
||||
COMP4="^\(${WORD}:\)\{1,3\}\(:${WORD}\)\{1,4\}$"
|
||||
COMP5="^\(${WORD}:\)\{1,4\}\(:${WORD}\)\{1,3\}$"
|
||||
COMP6="^\(${WORD}:\)\{1,5\}\(:${WORD}\)\{1,2\}$"
|
||||
COMP7="^\(${WORD}:\)\{1,6\}\(:${WORD}\)\{1,1\}$"
|
||||
# trailing :: edge case, includes case of only :: (all 0's)
|
||||
EDGE_TAIL="^\(\(${WORD}:\)\{1,7\}\|:\):$"
|
||||
# leading :: edge case
|
||||
EDGE_LEAD="^:\(:${WORD}\)\{1,7\}$"
|
||||
|
||||
echo $t_ip | grep --silent "\(${FLAT}\)\|\(${COMP2}\)\|\(${COMP3}\)\|\(${COMP4}\)\|\(${COMP5}\)\|\(${COMP6}\)\|\(${COMP7}\)\|\(${EDGE_TAIL}\)\|\(${EDGE_LEAD}\)"
|
||||
if [ $? -ne 0 ]; then
|
||||
check_result $E_INVALID "invalid $object_name format :: $1"
|
||||
fi
|
||||
|
||||
if [ ! -z "$(echo $1|grep '/')" ]; then
|
||||
if [[ "$t_cidr" -lt 0 ]] || [[ "$t_cidr" -gt 128 ]]; then
|
||||
valid_cidr=0
|
||||
fi
|
||||
if ! [[ "$t_cidr" =~ ^[0-9]+$ ]]; then
|
||||
valid_cidr=0
|
||||
fi
|
||||
fi
|
||||
if [ "$valid_cidr" -eq 0 ]; then
|
||||
check_result $E_INVALID "invalid $object_name format :: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
is_ip46_format_valid() {
|
||||
t_ip=$(echo $1 |awk -F / '{print $1}')
|
||||
t_cidr=$(echo $1 |awk -F / '{print $2}')
|
||||
valid_octets=0
|
||||
valid_cidr=1
|
||||
for octet in ${t_ip//./ }; do
|
||||
if [[ $octet =~ ^[0-9]{1,3}$ ]] && [[ $octet -le 255 ]]; then
|
||||
((++valid_octets))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ! -z "$(echo $1|grep '/')" ]; then
|
||||
if [[ "$t_cidr" -lt 0 ]] || [[ "$t_cidr" -gt 32 ]]; then
|
||||
valid_cidr=0
|
||||
fi
|
||||
if ! [[ "$t_cidr" =~ ^[0-9]+$ ]]; then
|
||||
valid_cidr=0
|
||||
fi
|
||||
fi
|
||||
if [ "$valid_octets" -lt 4 ] || [ "$valid_cidr" -eq 0 ]; then
|
||||
#Check IPV6
|
||||
ipv6_valid=""
|
||||
WORD="[0-9A-Fa-f]\{1,4\}"
|
||||
# flat address, no compressed words
|
||||
FLAT="^${WORD}\(:${WORD}\)\{7\}$"
|
||||
|
||||
COMP2="^\(${WORD}:\)\{1,1\}\(:${WORD}\)\{1,6\}$"
|
||||
COMP3="^\(${WORD}:\)\{1,2\}\(:${WORD}\)\{1,5\}$"
|
||||
COMP4="^\(${WORD}:\)\{1,3\}\(:${WORD}\)\{1,4\}$"
|
||||
COMP5="^\(${WORD}:\)\{1,4\}\(:${WORD}\)\{1,3\}$"
|
||||
COMP6="^\(${WORD}:\)\{1,5\}\(:${WORD}\)\{1,2\}$"
|
||||
COMP7="^\(${WORD}:\)\{1,6\}\(:${WORD}\)\{1,1\}$"
|
||||
# trailing :: edge case, includes case of only :: (all 0's)
|
||||
EDGE_TAIL="^\(\(${WORD}:\)\{1,7\}\|:\):$"
|
||||
# leading :: edge case
|
||||
EDGE_LEAD="^:\(:${WORD}\)\{1,7\}$"
|
||||
|
||||
echo $t_ip | grep --silent "\(${FLAT}\)\|\(${COMP2}\)\|\(${COMP3}\)\|\(${COMP4}\)\|\(${COMP5}\)\|\(${COMP6}\)\|\(${COMP7}\)\|\(${EDGE_TAIL}\)\|\(${EDGE_LEAD}\)"
|
||||
if [ $? -ne 0 ]; then
|
||||
ipv6_valid="INVALID"
|
||||
fi
|
||||
|
||||
if [ ! -z "$(echo $1|grep '/')" ]; then
|
||||
if [[ "$t_cidr" -lt 0 ]] || [[ "$t_cidr" -gt 128 ]]; then
|
||||
valid_cidr=0
|
||||
fi
|
||||
if ! [[ "$t_cidr" =~ ^[0-9]+$ ]]; then
|
||||
valid_cidr=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z "$ipv6_valid" ] || [ "$valid_cidr" -eq 0 ]; then
|
||||
check_result $E_INVALID "invalid IP format :: $1"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Proxy extention format validator
|
||||
is_extention_format_valid() {
|
||||
exclude="[!|#|$|^|&|(|)|+|=|{|}|:|@|<|>|?|/|\|\"|'|;|%|\`| ]"
|
||||
|
@ -697,6 +795,9 @@ is_dns_record_format_valid() {
|
|||
if [ "$rtype" = 'A' ]; then
|
||||
is_ip_format_valid "$1"
|
||||
fi
|
||||
if [ "$rtype" = 'AAAA' ]; then
|
||||
is_ipv6_format_valid "$1"
|
||||
fi
|
||||
if [ "$rtype" = 'NS' ]; then
|
||||
is_domain_format_valid "${1::-1}" 'ns_record'
|
||||
fi
|
||||
|
@ -894,6 +995,8 @@ is_format_valid() {
|
|||
id) is_int_format_valid "$arg" 'id' ;;
|
||||
interface) is_interface_format_valid "$arg" ;;
|
||||
ip) is_ip_format_valid "$arg" ;;
|
||||
ipv6) is_ipv6_format_valid "$arg" ;;
|
||||
ip46) is_ip46_format_valid "$arg" ;;
|
||||
ip_name) is_domain_format_valid "$arg" 'IP name';;
|
||||
ip_status) is_ip_status_format_valid "$arg" ;;
|
||||
job) is_int_format_valid "$arg" 'job' ;;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue