Selaa lähdekoodia

Added IP_AVAIL key. Issue #50

Serghey Rodin 14 vuotta sitten
vanhempi
sitoutus
0bab5ef8f9
6 muutettua tiedostoa jossa 79 lisäystä ja 67 poistoa
  1. 10 1
      bin/v_add_user
  2. 1 0
      bin/v_change_user_package
  3. 1 1
      bin/v_list_user
  4. 54 60
      bin/v_list_user_ips
  5. 4 4
      bin/v_list_users
  6. 9 1
      bin/v_update_user_counters

+ 10 - 1
bin/v_add_user

@@ -165,6 +165,14 @@ if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
 fi
 
 # Filling user config
+if [ "$user" != 'admin' ]; then
+    ip_avail=$($V_BIN/v_list_user_ips admin plain |grep -w shared|wc -l)
+    u_users=0
+else
+    ip_avail=0
+    u_users=1
+fi
+
 echo "FNAME='$fname'
 LNAME='$lname'
 PACKAGE='$package'
@@ -179,8 +187,9 @@ SUSPENDED_DNS='0'
 SUSPENDED_MAIL='0'
 SUSPENDED_DB='0'
 SUSPENDED_CRON='0'
+IP_AVAIL='$ip_avail'
 IP_OWNED='0'
-U_USERS='0'
+U_USERS='$u_users'
 U_DISK='0'
 U_DISK_DIRS='0'
 U_DISK_WEB='0'

+ 1 - 0
bin/v_change_user_package

@@ -90,6 +90,7 @@ SUSPENDED_DNS='$SUSPENDED_DNS'
 SUSPENDED_MAIL='$SUSPENDED_MAIL'
 SUSPENDED_DB='$SUSPENDED_DB'
 SUSPENDED_CRON='$SUSPENDED_CRON'
+IP_AVAIL='$IP_AVAIL'
 IP_OWNED='$IP_OWNED'
 U_USERS='$U_USERS'
 U_DISK='$U_DISK'

+ 1 - 1
bin/v_list_user

@@ -91,7 +91,7 @@ fields='$USER $FNAME $LNAME $PACKAGE $WEB_DOMAINS $WEB_ALIASES $WEB_TPL
     $DNS_DOMAINS $DNS_RECORDS $MAIL_DOMAINS $MAIL_ACCOUNTS $DATABASES
     $CRON_JOBS $DISK_QUOTA $BANDWIDTH $NS $SHELL $BACKUPS $CONTACT $REPORTS
     $RKEY $SUSPENDED $SUSPENDED_USERS $SUSPENDED_WEB $SUSPENDED_DNS
-    $SUSPENDED_MAIL $SUSPENDED_DB $SUSPENDED_CRON $IP_OWNED $U_USERS
+    $SUSPENDED_MAIL $SUSPENDED_DB $SUSPENDED_CRON $IP_AVAIL $IP_OWNED $U_USERS
     $U_DISK $U_DISK_DIRS $U_DISK_WEB $U_DISK_MAIL $U_DISK_DB $U_BANDWIDTH
     $U_WEB_DOMAINS $U_WEB_SSL $U_WEB_ALIASES $U_DNS_DOMAINS $U_DNS_RECORDS
     $U_MAIL_DOMAINS $U_MAIL_ACCOUNTS $U_DATABASES $U_CRON_JOBS $DATE'

+ 54 - 60
bin/v_list_user_ips

@@ -21,46 +21,55 @@ source $V_FUNC/shared.func
 json_list_user_ips() {
     # Print top bracket
     echo '{'
-
-    owned_ips=$(grep -l "OWNER='$user'" $V_IPS/*)
-    shared_ips=$(grep -H -A5 "OWNER='admin'" $V_IPS/* |\
-                    grep "STATUS='shared'"|\
-                    cut -f 1 -d - )
-
-    ip_list="$owned_ips\n$shared_ips"
     fileds_count=$(echo "$fields" | wc -w)
-
-    # Starting main loop
-    for IP in $(echo -e "$ip_list" | sort -u); do
-        IP=$(basename $IP)
-        ip_data=$(cat $V_IPS/$IP)
-
-        # Assing key=value
-        eval $ip_data
-
-        # Closing bracket if there already was output
-        if [ -n "$data" ]; then
-            echo -e '        },'
-        fi
-        i=1
-        for field in $fields; do
-            eval value=$field
-
-            if [ $i -eq 1 ]; then
-                # Printing parrent
-                (( ++i))
-                echo -e "\t\"$value\": {"
-            else
-                # Printing child
-                if [ $i -lt $fileds_count ]; then
+    for IP in $(ls $V_IPS/); do
+        source $V_IPS/$IP
+        if [ "$OWNER" = "$user" ]; then
+            eval echo "$fields"
+            # Closing bracket if there already was output
+            if [ -n "$data" ]; then
+                echo -e '        },'
+            fi
+            i=1
+            for field in $fields; do
+                eval value=$field
+                if [ $i -eq 1 ]; then
+                    # Printing parrent
                     (( ++i))
-                    echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
+                    echo -e "\t\"$value\": {"
                 else
-                    echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
-                    data=1
+                    # Printing child
+                    if [ $i -lt $fileds_count ]; then
+                        (( ++i))
+                        echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
+                    else
+                        echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
+                        data=1
+                    fi
                 fi
+            done
+        else
+            if  [ "$OWNER" = 'admin' ] && [ "$STATUS" = 'shared' ]; then
+                i=1
+                for field in $fields; do
+                    eval value=$field
+                    if [ $i -eq 1 ]; then
+                        # Printing parrent
+                        (( ++i))
+                        echo -e "\t\"$value\": {"
+                    else
+                        # Printing child
+                        if [ $i -lt $fileds_count ]; then
+                            (( ++i))
+                            echo -e "\t\t\"${field//$/}\": \"${value//,/, }\","
+                        else
+                            echo -e "\t\t\"${field//$/}\": \"${value//,/, }\""
+                            data=1
+                        fi
+                    fi
+                done
             fi
-        done
+        fi
     done
 
     # Closing bracket if there was output
@@ -70,35 +79,20 @@ json_list_user_ips() {
 
     # Printing bottom bracket
     echo -e '}'
+
 }
 
 # Shell function
 shell_list_user_ips() {
-    owned_ips=$(grep -l "OWNER='$user'" $V_IPS/*)
-    shared_ips=$(grep -H -A5 "OWNER='admin'" $V_IPS/* |\
-                    grep "STATUS='shared'"|\
-                    cut -f 1 -d - )
-
-    ip_list="$owned_ips\n$shared_ips"
-    if [ -z "$nohead" ]; then
-        # Print brief info
-        echo "${fields//$/}"
-        for a in $fields; do
-            echo -e "--------- \c"
-        done
-        echo
-    fi
-
-    # Starting main loop
-    for IP in $(echo -e "$ip_list" | sort -u); do
-        IP=$(basename $IP)
-        ip_data=$(cat $V_IPS/$IP)
-
-        # Assign key/value config
-        eval $ip_data
-
-        # Print result line
-        eval echo "$fields"
+    for IP in $(ls $V_IPS/); do
+        source $V_IPS/$IP
+        if [ "$OWNER" = "$user" ]; then
+            eval echo "$fields"
+        else
+            if  [ "$OWNER" = 'admin' ] && [ "$STATUS" = 'shared' ]; then
+                eval echo "$fields"
+            fi
+        fi
     done
 }
 

+ 4 - 4
bin/v_list_users

@@ -87,10 +87,10 @@ fields="$fields \$DNS_DOMAINS \$DNS_RECORDS \$MAIL_DOMAINS \$MAIL_ACCOUNTS"
 fields="$fields \$DATABASES \$CRON_JOBS \$DISK_QUOTA \$BANDWIDTH \$NS \$SHELL"
 fields="$fields \$BACKUPS \$CONTACT \$REPORTS \$RKEY \$SUSPENDED"
 fields="$fields \$SUSPENDED_USERS \$SUSPENDED_WEB \$SUSPENDED_DNS"
-fields="$fields \$SUSPENDED_MAIL \$SUSPENDED_DB \$SUSPENDED_CRON \$IP_OWNED"
-fields="$fields \$U_USERS \$U_DISK \$U_DISK_DIRS \$U_DISK_WEB \$U_DISK_MAIL"
-fields="$fields \$U_DISK_DB \$U_BANDWIDTH \$U_WEB_DOMAINS \$U_WEB_SSL"
-fields="$fields \$U_WEB_ALIASES \$U_DNS_DOMAINS \$U_DNS_RECORDS "
+fields="$fields \$SUSPENDED_MAIL \$SUSPENDED_DB \$SUSPENDED_CRON \$IP_AVAIL"
+fields="$fields \$IP_OWNED \$U_USERS \$U_DISK \$U_DISK_DIRS \$U_DISK_WEB"
+fields="$fields \$U_DISK_MAIL \$U_DISK_DB \$U_BANDWIDTH \$U_WEB_DOMAINS"
+fields="$fields \$U_WEB_SSL \$U_WEB_ALIASES \$U_DNS_DOMAINS \$U_DNS_RECORDS"
 fields="$fields \$U_MAIL_DOMAINS \$U_MAIL_ACCOUNTS \$U_DATABASES \$U_CRON_JOBS"
 fields="$fields \$DATE"
 

+ 9 - 1
bin/v_update_user_counters

@@ -55,6 +55,7 @@ for user in $user_list; do
     SUSPENDED_MAIL=0
     SUSPENDED_DB=0
     SUSPENDED_CRON=0
+    IP_AVAIL=0
     IP_OWNED=0
     U_USERS=0
     DISK=0
@@ -85,7 +86,6 @@ for user in $user_list; do
     if [ "$user" = 'admin' ]; then
         SUSPENDED_USERS=$(grep "SUSPENDED='yes'" $V_USERS/*/user.conf|wc -l)
         U_USERS=$(ls $V_USERS/|wc -l)
-        U_USERS=$((U_USERS - 1))
     fi
 
     # Checking ip
@@ -94,7 +94,14 @@ for user in $user_list; do
         if [ "$OWNER" = "$user" ]; then
             IP_OWNED=$((IP_OWNED + 1))
         fi
+        if [ "$OWNER" = 'admin' ] && [ "$STATUS" = 'shared' ]; then
+            IP_AVAIL=$((IP_AVAIL + IP_OWNED))
+            IP_AVAIL=$((IP_AVAIL + 1))
+        fi
     done
+    if [ "$user" = 'admin' ]; then
+        IP_AVAIL=$(ls $V_IPS | wc -l)
+    fi    
 
     # Checking web system
     for domain_str in $(cat $V_USERS/$user/web.conf) ;do
@@ -159,6 +166,7 @@ for user in $user_list; do
     update_user_value "$user" '$SUSPENDED_MAIL' "$SUSPENDED_MAIL"
     update_user_value "$user" '$SUSPENDED_DB' "$SUSPENDED_DB"
     update_user_value "$user" '$SUSPENDED_CRON' "$SUSPENDED_CRON"
+    update_user_value "$user" '$IP_AVAIL' "$IP_AVAIL"
     update_user_value "$user" '$IP_OWNED' "$IP_OWNED"
     update_user_value "$user" '$U_USERS' "$U_USERS"
     update_user_value "$user" '$U_DISK' "$U_DISK"