add --client-ip/-ip 'auto' option + fix default/empty peer name logic

Signed-off-by: Rafael Alexandre <r.alexandre99@gmail.com>
This commit is contained in:
Rafael Alexandre 2025-04-23 20:09:22 +02:00 committed by Orazio
parent e3e11f5d22
commit 8cb0a4eab6

View file

@ -32,12 +32,16 @@ helpFunc() {
echo "::: Commands:" echo "::: Commands:"
echo "::: [none] Interactive mode" echo "::: [none] Interactive mode"
echo "::: -n,--name Name for the Client (default: '${HOSTNAME}')" echo "::: -n,--name Name for the Client (default: '${HOSTNAME}')"
echo "::: -ip,--client-ip IPv4 address of the Client" echo "::: -ip,--client-ip IPv4 address of the Client ('auto' for automatically assigning IP)"
echo "::: -h,--help Show this help dialog" echo "::: -h,--help Show this help dialog"
} }
checkName() { checkName() {
# check name # check name
if [[ -z "${CLIENT_NAME}" ]]; then
err "::: Name is blank. Defaulting to '${HOSTNAME}'."
CLIENT_NAME=$HOSTNAME
fi
if [[ "${CLIENT_NAME}" =~ [^a-zA-Z0-9.@_-] ]]; then if [[ "${CLIENT_NAME}" =~ [^a-zA-Z0-9.@_-] ]]; then
err "Name can only contain alphanumeric characters and these symbols (.-@_)." err "Name can only contain alphanumeric characters and these symbols (.-@_)."
exit 1 exit 1
@ -56,14 +60,11 @@ checkName() {
elif [[ "${#CLIENT_NAME}" -gt 15 ]]; then elif [[ "${#CLIENT_NAME}" -gt 15 ]]; then
err "::: Names cannot be longer than 15 characters." err "::: Names cannot be longer than 15 characters."
exit 1 exit 1
elif [[ -z "${CLIENT_NAME}" ]]; then
err "::: You cannot leave the name blank."
exit 1
elif [[ "${CLIENT_NAME}" == "server" ]]; then elif [[ "${CLIENT_NAME}" == "server" ]]; then
err "Sorry, this is in use by the server and cannot be used by clients." err "Sorry, this is in use by the server and cannot be used by clients."
exit 1 exit 1
elif [[ -f "configs/${CLIENT_NAME}.conf" ]]; then elif [[ -f "configs/${CLIENT_NAME}.conf" ]]; then
err "::: A client with this name already exists" err "::: A client with this name already exists."
exit 1 exit 1
fi fi
} }
@ -167,7 +168,7 @@ if [[ -z "${CLIENT_IP}" ]]; then
read -p "Enter the Client IP from range ${FIRST_IPV4} - ${LAST_IPV4} (optional): " CLIENT_IP read -p "Enter the Client IP from range ${FIRST_IPV4} - ${LAST_IPV4} (optional): " CLIENT_IP
fi fi
if [[ -n "${CLIENT_IP}" ]]; then if [[ -n "${CLIENT_IP}" && "${CLIENT_IP}" != "auto" ]]; then
checkClientIP "${CLIENT_IP}" checkClientIP "${CLIENT_IP}"
ip="$(dotIPv4ToDec "${CLIENT_IP}")" ip="$(dotIPv4ToDec "${CLIENT_IP}")"
@ -194,7 +195,7 @@ else
fi fi
if [[ -z "${CLIENT_NAME}" ]]; then if [[ -z "${CLIENT_NAME}" ]]; then
read -r -p "Enter a Name for the Client: " CLIENT_NAME read -r -p "Enter a Name for the Client (default: '${HOSTNAME}'): " CLIENT_NAME
checkName checkName
else else
checkName checkName