Sfoglia il codice sorgente

Allow apikey to be used for autentication

eris 5 anni fa
parent
commit
fc37379515
3 ha cambiato i file con 76 aggiunte e 29 eliminazioni
  1. 21 7
      bin/v-add-remote-dns-host
  2. 7 0
      func/main.sh
  3. 48 22
      func/remote.sh

+ 21 - 7
bin/v-add-remote-dns-host

@@ -16,6 +16,8 @@ port=$2
 PORT=$port
 user=$3
 USER=$user
+hash=$user
+HASH=$user
 password=$4; HIDE=4
 PASSWORD=$password
 type=${5-api}
@@ -33,9 +35,14 @@ source $HESTIA/conf/hestia.conf
 #                    Verifications                         #
 #----------------------------------------------------------#
 
-args_usage='HOST PORT USER PASSWORD [TYPE] [DNS_USER]'
-check_args '4' "$#" "$args_usage"
-is_format_valid 'host' 'port' 'user' 'type' 'dns_user'
+args_usage='HOST PORT USER [PASSWORD] [TYPE] [DNS_USER]'
+check_args '3' "$#" "$args_usage"
+is_format_valid 'host' 'port' 'type' 'dns_user'
+if [ -z "$password" ]; then
+    is_format_valid 'hash'
+else
+    is_format_valid 'user'
+fi
 is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
 is_password_valid
 is_dnshost_new
@@ -51,10 +58,17 @@ time_n_date=$(date +'%T %F')
 time=$(echo "$time_n_date" |cut -f 1 -d \ )
 date=$(echo "$time_n_date" |cut -f 2 -d \ )
 
-# Concatentating dns host string
-str="HOST='$host' PORT='$port' USER='$user' PASSWORD='$password'"
-str="$str DNS_USER='$dns_user' TYPE='$type' SUSPENDED='no'"
-str="$str TIME='$time' DATE='$date'"
+if [ -z $password ]; then
+    # Concatentating dns host string
+    str="HOST='$host' PORT='$port' HASH='$hash'"
+    str="$str DNS_USER='$dns_user' TYPE='$type' SUSPENDED='no'"
+    str="$str TIME='$time' DATE='$date'"
+else
+    # Concatentating dns host string
+    str="HOST='$host' PORT='$port' USER='$user' PASSWORD='$password'"
+    str="$str DNS_USER='$dns_user' TYPE='$type' SUSPENDED='no'"
+    str="$str TIME='$time' DATE='$date'"
+fi    
 
 # Adding host to dns-cluster.conf
 echo "$str" >> $HESTIA/conf/dns-cluster.conf

+ 7 - 0
func/main.sh

@@ -921,6 +921,12 @@ is_service_format_valid() {
     fi
 }
 
+is_hash_format_valid() {
+  if ! [[ "$1" =~ ^[_A-Za-z0-9]{1,32}$ ]]; then
+        check_result $E_INVALID "invalid $2 format :: $1"
+    fi    
+}
+
 # Format validation controller
 is_format_valid() {
     for arg_name in $*; do
@@ -952,6 +958,7 @@ is_format_valid() {
                 extentions)     is_common_format_valid "$arg" 'extentions' ;;
                 ftp_password)   is_password_format_valid "$arg" ;;
                 ftp_user)       is_user_format_valid "$arg" "$arg_name" ;;
+                hash)           is_hash_format_valid "$arg" "$arg_name" ;;
                 host)           is_object_format_valid "$arg" "$arg_name" ;;
                 hour)           is_cron_format_valid "$arg" $arg_name ;;
                 id)             is_int_format_valid "$arg" 'id' ;;

+ 48 - 22
func/remote.sh

@@ -9,32 +9,58 @@ is_procces_running() {
 }
 
 send_api_cmd() {
-    answer=$(curl -s -k \
-        --data-urlencode "user=$USER" \
-        --data-urlencode "password=$PASSWORD" \
-        --data-urlencode "returncode=yes" \
-        --data-urlencode "cmd=$1" \
-        --data-urlencode "arg1=$2" \
-        --data-urlencode "arg2=$3" \
-        --data-urlencode "arg3=$4" \
-        --data-urlencode "arg4=$5" \
-        --data-urlencode "arg5=$6" \
-        --data-urlencode "arg6=$7" \
-        --data-urlencode "arg7=$8" \
-        --data-urlencode "arg8=$9" \
-        https://$HOST:$PORT/api/)
+    if [ ! -z "$PASSWORD" ]; then
+        answer=$(curl -s -k \
+            --data-urlencode "user=$USER" \
+            --data-urlencode "password=$PASSWORD" \
+            --data-urlencode "returncode=yes" \
+            --data-urlencode "cmd=$1" \
+            --data-urlencode "arg1=$2" \
+            --data-urlencode "arg2=$3" \
+            --data-urlencode "arg3=$4" \
+            --data-urlencode "arg4=$5" \
+            --data-urlencode "arg5=$6" \
+            --data-urlencode "arg6=$7" \
+            --data-urlencode "arg7=$8" \
+            --data-urlencode "arg8=$9" \
+            https://$HOST:$PORT/api/)    
+    else
+        answer=$(curl -s -k \
+            --data-urlencode "hash=$HASH" \
+            --data-urlencode "returncode=yes" \
+            --data-urlencode "cmd=$1" \
+            --data-urlencode "arg1=$2" \
+            --data-urlencode "arg2=$3" \
+            --data-urlencode "arg3=$4" \
+            --data-urlencode "arg4=$5" \
+            --data-urlencode "arg5=$6" \
+            --data-urlencode "arg6=$7" \
+            --data-urlencode "arg7=$8" \
+            --data-urlencode "arg8=$9" \
+            https://$HOST:$PORT/api/)
+    fi
     return $answer
 }
 
 send_api_file() {
-    answer=$(curl -s -k \
-        --data-urlencode "user=$USER" \
-        --data-urlencode "password=$PASSWORD" \
-        --data-urlencode "returncode=yes" \
-        --data-urlencode "cmd=v-make-tmp-file" \
-        --data-urlencode "arg1=$(cat $1)" \
-        --data-urlencode "arg2=$2" \
-        https://$HOST:$PORT/api/)
+    if [ ! -z "$PASSWORD" ]; then
+        answer=$(curl -s -k \
+                --data-urlencode "user=$USER" \
+                --data-urlencode "password=$PASSWORD" \
+                --data-urlencode "returncode=yes" \
+                --data-urlencode "cmd=v-make-tmp-file" \
+                --data-urlencode "arg1=$(cat $1)" \
+                --data-urlencode "arg2=$2" \
+                https://$HOST:$PORT/api/) 
+    else
+        answer=$(curl -s -k \
+                --data-urlencode "hash=$HASH" \
+                --data-urlencode "returncode=yes" \
+                --data-urlencode "cmd=v-make-tmp-file" \
+                --data-urlencode "arg1=$(cat $1)" \
+                --data-urlencode "arg2=$2" \
+                https://$HOST:$PORT/api/)
+    fi
     return $answer
 }