public async Task <bool> UpdateVpnUIItemStatus(AsusSshVpnService asusCommander)
        {
            if (asusCommander.Connection.IsConnected)
            {
                var vpnStatus = await asusCommander.Status();

                foreach (var key in vpnStatus.Keys)
                {
                    VpnUIItems[key].Status = vpnStatus[key];
                }

                return(true);
            }

            return(false);
        }
        public async Task <bool> AutoConfigureFromRouterSettings(AsusSshVpnService asusCommander, VeeKeePreferences preferences)
        {
            Dictionary <int, VpnDetails> vpnDetails = null;

            var connected = await asusCommander.Connect();

            var routerStatus = asusCommander.Connection.Status;

            if (routerStatus == RouterConnectionStatus.Connected)
            {
                // Get a Dictionary of all the VPN details from the router settings
                vpnDetails = await asusCommander.Details();
            }

            for (int i = 1; i < VpnUIItems.Count + 1; i++)
            {
                var vpnUIItem = VpnUIItems[i];

                vpnUIItem.Name = vpnDetails[i].Name;
            }

            // Lookup the country codes for each configured VPN
            foreach (int vpnIndex in vpnDetails.Keys)
            {
                var address = vpnDetails[vpnIndex].Address;

                if (address != string.Empty)
                {
                    string countryCode = await IPStackCountryLookupService.LookupAsync(vpnDetails[vpnIndex].Address, new CancellationTokenSource().Token);

                    if (countryCode != null)
                    {
                        int flagResourceId = GetFlagResourceId(countryCode, this._packageName, this._resources);
                        VpnUIItems[vpnIndex].FlagResourceId = flagResourceId;
                    }
                }
            }

            this.SaveVpnUIItemsPreferences(preferences);

            return(true);
        }