# +---------------------------------------------------+
# Configure Trusted Networks
# +---------------------------------------------------+
function func_ask-trustednets() {
  local trustednets=0
  while [ $trustednets != "1" ];
    do
      func_echo-header
      echo -e ""
      echo -e "$green[eFa]$clean Trusted Network Settings:"
      echo -e ""
      echo -e "$green[eFa]$clean Trusted networks are networks from which you want to accept"
      echo -e "$green[eFa]$clean spam submissions via the \"Click here to report this message as spam\""
      echo -e "$green[eFa]$clean link. All other networks will be redirected to the login page"
      echo -e ""

      local RULES
      if [[ -f /etc/sysconfig/eFa_trusted_networks ]]; then
        RULES=( `cat /etc/sysconfig/eFa_trusted_networks` )
      fi
  
      echo -e "Below is the list of current trusted networks:"
      echo -e ""
      rLen=${#RULES[@]}
      padding="                        "
      for (( y=0; y<$rLen; y+=1 ));
        do
          # Fix layout spacing up to 999 rows..
          if (( $((y+1)) < 10 )); then echo -n "  "
          elif (( $((y+1)) < 100 )); then echo -n " "
          fi
          echo -e "$((y+1))) ${RULES[$y]} ${padding:${#RULES[$y]}}"
        done
      echo -e ""
      echo -e "n) Add new trusted network"
      echo -e ""
      echo -e "e) Return to main menu"
      echo -e ""
      echo -e -n "$green[eFa]$clean : "
      local choice
      read choice
      case $choice in
             +([0-9]))
                if [[ $choice > "0" && $choice < $((rLen+1)) ]]; then
                  ENTIP=${RULES[$((choice-1))]}
                  echo -e "Entry Selected: $ENTIP" 
                  ENTIP=$(echo $ENTIP | sed -e 's|/|\\/|')
                  local flag=0
                  local ISIP4=0
                  local ISIP6=0
                  while [ $flag == "0" ]
                   do
                     echo -e ""
                     echo -e "Do you want to $green[r]$clean replace, $green[d]$clean delete this entry, or $green[c]$clean cancel? : "
                     local TMPOPTION
                     read TMPOPTION
                     if [[ $TMPOPTION == "r" || $TMPOPTION == "R" ]]; then
                        echo -e ""
                        echo -e "Please enter the ip network (i.e. 192.168.0.0, 10.0.0.0, 172.16.0.0 or IPv6) you want use:"
                        echo -e -n "$green[ipnetwork]$clean : "
                        local IPNET
                        read IPNET
                        # Simple check if domain is valid.
                        local IPCHECK=1
                        while [ $IPCHECK != 0 ]
                          do
                            if checkip4 $IPNET; then
                              IPCHECK=0
                              ISIP4=1
                            elif checkip6 $IPNET; then
                              IPCHECK=0
                              ISIP6=1
                            else
                              echo -e "       $red ERROR: The IP $IPNET seems to be invalid"
                              echo -e "        ERROR: please re-enter the IP network$clean"
                              echo -e ""
                              echo -e -n "$green[ipnetwork]$clean : "
                              read IPNET
                            fi
                          done
                        echo -e "Thank you..."
                        echo -e ""
                        echo -e "Now enter CIDR or IPv6 prefix length"
                        echo -e -n "$green[/#]$clean : "
                        local NETMASK
                        read NETMASK
                        # Simple check if destination contains any data.
                        local NETCHECK=1
                        while [ $NETCHECK != 0 ]
                        do
                          if [[ $ISIP4 && ($NETMASK -ge 1 && $NETMASK -le 32) || $ISIP6 && ($NETMASK -ge 1 && $NETMASK -le 128) ]] ; then
                            NETCHECK=0
                          else
                            echo -e "       $red ERROR: The value $NETMASK seems to be invalid"
                            echo -e "        ERROR: please re-enter the CIDR or IPv6 prefix$clean"
                            echo -e ""
                            echo -e -n "$green[/#]$clean : "
                            read NETMASK
                          fi
                        done
                        echo -e "Thank you.."
                        sed -i "/$ENTIP/ c\\$IPNET/$NETMASK" /etc/sysconfig/eFa_trusted_networks
                        flag=1
                      elif [[ $TMPOPTION == "d" || $TMPOPTION == "D" ]]; then
                        sed -i "/$ENTIP/d" /etc/sysconfig/eFa_trusted_networks
                        echo -e "Entry deleted from trusted networks." && pause
                        flag=1
                      elif [[ $TMPOPTION == "c" || $TMPOPTION == "C" ]]; then
                        flag=1
                      else 
                        echo -e "Error \"$TMPOPTION\" is not an option..." && pause
                      fi
                   done
                else
                  echo -e "Error \"$choice\" is not an option..." && pause
                fi
                ;;
                n)
                echo -e ""
                echo -e "Please enter the IP network (192.168.0.0, 10.0.0.0, 172.16.0.0 or IPv6) you want add:"
                echo -e -n "$green[ipnetwork]$clean : "
                local IPNET
                read IPNET
                local IPCHECK=1
                local ISIP4=0
                local ISIP6=0
                while [ $IPCHECK != 0 ]
                  do
                    if checkip4 $IPNET; then
                      IPCHECK=0
                      ISIP4=1
                    elif checkip6 $IPNET; then
                      IPCHECK=0
                      ISIP6=1
                    else
                      echo -e "       $red ERROR: The IP network $IPNET seems to be invalid"
                      echo -e "        ERROR: please re-enter the IP network$clean"
                      echo -e ""
                      echo -e -n "$green[ipnetwork]$clean : "
                      read IPNET
                    fi
                  done
                echo -e "Thank you..."
                echo -e ""
                echo -e "Now enter the CIDR or IPv6 prefix length"
                echo -e -n "$green[/#]$clean : "
                local NETMASK
                read NETMASK
                NETCHECK=1
                while [ $NETCHECK != 0 ]
                  do
                    if [[ $ISIP4 && ($NETMASK -ge 1 && $NETMASK -le 32) || $ISIP6 && ($NETMASK -ge 1 && $NETMASK -le 128) ]]; then
                      NETCHECK=0
                    else
                      echo -e "       $red ERROR: The value $NETMASK seems to be invalid"
                      echo -e "        ERROR: please re-enter the CIDR or IPv6 prefix length$clean"
                      echo -e ""
                      echo -e -n "$green[/#]$clean : "
                      read NETMASK
                    fi
                  done
                echo -e "Thank you.."
                echo -e "$IPNET/$NETMASK " >> /etc/sysconfig/eFa_trusted_networks
                echo -e "Trusted network added to this system"
                pause
                ;;
                e)  
                spammenu=1 && return 
                ;;
                *)  
                echo -e "Error \"$choice\" is not an option..." && pause
                echo -e -n "$green[eFa]$clean : "
                ;;
      esac
    done
}
# +---------------------------------------------------+