firewallfalcons 2 mesi fa
parent
commit
5c25df3c2e
1 ha cambiato i file con 39 aggiunte e 21 eliminazioni
  1. 39 21
      menu.sh

+ 39 - 21
menu.sh

@@ -1346,13 +1346,29 @@ list_users() {
         local connection_string="$online_count / $limit"
         local plain_status="Active"
         local status="${C_GREEN}๐ŸŸข Active${C_RESET}"
+        local quota_exceeded=false
+
+        [[ -z "$bandwidth_gb" ]] && bandwidth_gb="0"
+        local bw_string="Unlimited"
+        if [[ "$bandwidth_gb" != "0" ]]; then
+            local used_bytes=0
+            if [[ -f "$BANDWIDTH_DIR/${user}.usage" ]]; then
+                used_bytes=$(cat "$BANDWIDTH_DIR/${user}.usage" 2>/dev/null)
+                [[ "$used_bytes" =~ ^[0-9]+$ ]] || used_bytes=0
+            fi
+            local used_gb
+            used_gb=$(awk "BEGIN {printf \"%.1f\", $used_bytes / 1073741824}")
+            bw_string="${used_gb}/${bandwidth_gb}GB"
+            local quota_bytes
+            quota_bytes=$(awk "BEGIN {printf \"%.0f\", $bandwidth_gb * 1073741824}")
+            if [[ "$quota_bytes" =~ ^[0-9]+$ ]] && (( used_bytes >= quota_bytes )); then
+                quota_exceeded=true
+            fi
+        fi
 
         if [[ -z "${system_user_lookup[$user]+x}" ]]; then
             plain_status="Not Found"
             status="${C_RED}Not Found${C_RESET}"
-        elif [[ -n "${locked_user_lookup[$user]+x}" ]]; then
-            plain_status="Locked"
-            status="${C_YELLOW}๐Ÿ”’ Locked${C_RESET}"
         elif [[ -n "$expiry" && "$expiry" != "Never" ]]; then
             local expiry_ts
             expiry_ts=$(date -d "$expiry" +%s 2>/dev/null || echo 0)
@@ -1362,17 +1378,17 @@ list_users() {
             fi
         fi
 
-        [[ -z "$bandwidth_gb" ]] && bandwidth_gb="0"
-        local bw_string="Unlimited"
-        if [[ "$bandwidth_gb" != "0" ]]; then
-            local used_bytes=0
-            if [[ -f "$BANDWIDTH_DIR/${user}.usage" ]]; then
-                used_bytes=$(cat "$BANDWIDTH_DIR/${user}.usage" 2>/dev/null)
-                [[ "$used_bytes" =~ ^[0-9]+$ ]] || used_bytes=0
+        if [[ "$plain_status" == "Active" && "$quota_exceeded" == true ]]; then
+            if [[ -n "${locked_user_lookup[$user]+x}" ]]; then
+                plain_status="BW Locked"
+                status="${C_RED}๐Ÿ”’ BW Locked${C_RESET}"
+            else
+                plain_status="Quota Exceeded"
+                status="${C_RED}๐Ÿ“ฆ Quota Exceeded${C_RESET}"
             fi
-            local used_gb
-            used_gb=$(awk "BEGIN {printf \"%.1f\", $used_bytes / 1073741824}")
-            bw_string="${used_gb}/${bandwidth_gb}GB"
+        elif [[ "$plain_status" == "Active" && -n "${locked_user_lookup[$user]+x}" ]]; then
+            plain_status="Locked"
+            status="${C_YELLOW}๐Ÿ”’ Locked${C_RESET}"
         fi
 
         local line_color="$C_WHITE"
@@ -1380,6 +1396,8 @@ list_users() {
             "Active") line_color="$C_GREEN" ;;
             "Locked") line_color="$C_YELLOW" ;;
             "Expired") line_color="$C_RED" ;;
+            "BW Locked") line_color="$C_RED" ;;
+            "Quota Exceeded") line_color="$C_RED" ;;
             "Not Found") line_color="$C_DIM" ;;
         esac
 
@@ -4278,11 +4296,11 @@ main_menu() {
         
         echo
         echo -e "   ${C_TITLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•[ ${C_BOLD}๐Ÿ‘ค USER MANAGEMENT ${C_RESET}${C_TITLE}]โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${C_RESET}"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "1" "โœจ Create New User" "6" "โœ๏ธ  Edit User Details"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "2" "๐Ÿ—‘๏ธ  Delete User" "7" "๐Ÿ“‹ List Managed Users"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "3" "๐Ÿ”„ Renew User Account" "8" "๐Ÿ“ฑ Generate Client Config"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "4" "๐Ÿ”’ Lock User Account" "9" "โฑ๏ธ  Create Trial Account"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "5" "๐Ÿ”“ Unlock User Account" "10" "๐Ÿ“Š View User Bandwidth"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "1" "โœจ Create New User" "2" "๐Ÿ—‘๏ธ  Delete User"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "3" "๐Ÿ”„ Renew User Account" "4" "๐Ÿ”’ Lock User Account"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "5" "๐Ÿ”“ Unlock User Account" "6" "โœ๏ธ  Edit User Details"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "7" "๐Ÿ“‹ List Managed Users" "8" "๐Ÿ“ฑ Generate Client Config"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "9" "โฑ๏ธ  Create Trial Account" "10" "๐Ÿ“Š View User Bandwidth"
         printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "11" "๐Ÿ‘ฅ Bulk Create Users"
         
         echo
@@ -4292,9 +4310,9 @@ main_menu() {
 
         echo
         echo -e "   ${C_TITLE}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•[ ${C_BOLD}โš™๏ธ SYSTEM SETTINGS ${C_RESET}${C_TITLE}]โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${C_RESET}"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "15" "โ˜๏ธ  CloudFlare Free Domain" "18" "๐Ÿ’พ Backup User Data"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "16" "๐ŸŽจ SSH Banner Config" "19" "๐Ÿ“ฅ Restore User Data"
-        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "17" "๐Ÿ”„ Auto-Reboot Task" "20" "๐Ÿงน Cleanup Expired Users"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "15" "โ˜๏ธ  CloudFlare Free Domain" "16" "๐ŸŽจ SSH Banner Config"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "17" "๐Ÿ”„ Auto-Reboot Task" "18" "๐Ÿ’พ Backup User Data"
+        printf "     ${C_CHOICE}[%2s]${C_RESET} %-28s ${C_CHOICE}[%2s]${C_RESET} %-28s\n" "19" "๐Ÿ“ฅ Restore User Data" "20" "๐Ÿงน Cleanup Expired Users"
 
         echo
         echo -e "   ${C_DANGER}โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•[ ${C_BOLD}๐Ÿ”ฅ DANGER ZONE ${C_RESET}${C_DANGER}]โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•${C_RESET}"