mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
73 lines
1.7 KiB
Bash
73 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Validate an IP address
|
|
#
|
|
# usage: ynh_validate_ip --family=family --ip_address=ip_address
|
|
# | ret: 0 for valid ip addresses, 1 otherwise
|
|
#
|
|
# example: ynh_validate_ip 4 111.222.333.444
|
|
#
|
|
ynh_validate_ip()
|
|
{
|
|
# http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python#319298
|
|
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=fi
|
|
declare -Ar args_array=( [f]=family= [i]=ip_address= )
|
|
local family
|
|
local ip_address
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
|
|
[ "$family" == "4" ] || [ "$family" == "6" ] || return 1
|
|
|
|
python /dev/stdin << EOF
|
|
import socket
|
|
import sys
|
|
family = { "4" : socket.AF_INET, "6" : socket.AF_INET6 }
|
|
try:
|
|
socket.inet_pton(family["$family"], "$ip_address")
|
|
except socket.error:
|
|
sys.exit(1)
|
|
sys.exit(0)
|
|
EOF
|
|
}
|
|
|
|
# Validate an IPv4 address
|
|
#
|
|
# example: ynh_validate_ip4 111.222.333.444
|
|
#
|
|
# usage: ynh_validate_ip4 --ip_address=ip_address
|
|
# | ret: 0 for valid ipv4 addresses, 1 otherwise
|
|
#
|
|
ynh_validate_ip4()
|
|
{
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=i
|
|
declare -Ar args_array=( [i]=ip_address= )
|
|
local ip_address
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
|
|
ynh_validate_ip 4 $ip_address
|
|
}
|
|
|
|
|
|
# Validate an IPv6 address
|
|
#
|
|
# example: ynh_validate_ip6 2000:dead:beef::1
|
|
#
|
|
# usage: ynh_validate_ip6 --ip_address=ip_address
|
|
# | ret: 0 for valid ipv6 addresses, 1 otherwise
|
|
#
|
|
ynh_validate_ip6()
|
|
{
|
|
# Declare an array to define the options of this helper.
|
|
local legacy_args=i
|
|
declare -Ar args_array=( [i]=ip_address= )
|
|
local ip_address
|
|
# Manage arguments with getopts
|
|
ynh_handle_getopts_args "$@"
|
|
|
|
ynh_validate_ip 6 $ip_address
|
|
}
|