Ejemplo n.º 1
0
        private async void ConnectToNetwork(WiFiAvailableNetwork network)
        {
            lock (_stateLock)
            {
                _state = OnboardingState.ConfiguredValidating;
            }

            WiFiConnectionResult connectionResult;

            if (network.SecuritySettings.NetworkAuthenticationType == NetworkAuthenticationType.Open80211)
            {
                connectionResult = await _wlanAdapter.ConnectAsync(network, WiFiReconnectionKind.Automatic);
            }
            else
            {
                connectionResult = await _wlanAdapter.ConnectAsync(network, WiFiReconnectionKind.Automatic, new PasswordCredential { Password = _personalApPassword });
            }

            lock (_stateLock)
            {
                if (connectionResult.ConnectionStatus == WiFiConnectionStatus.Success)
                {
                    _error        = OnboardingError.Validated;
                    _errorMessage = null;
                    _state        = OnboardingState.ConfiguredValidated;
                }
                else
                {
                    _state        = OnboardingState.ConfiguredError;
                    _errorMessage = connectionResult.ConnectionStatus.ToString();

                    switch (connectionResult.ConnectionStatus)
                    {
                    case WiFiConnectionStatus.AccessRevoked:
                    case WiFiConnectionStatus.InvalidCredential:
                    {
                        _error = OnboardingError.Unauthorized;
                        break;
                    }

                    case WiFiConnectionStatus.UnsupportedAuthenticationProtocol:
                    {
                        _error = OnboardingError.UnsupportedProtocol;
                        break;
                    }

                    case WiFiConnectionStatus.NetworkNotAvailable:
                    case WiFiConnectionStatus.Timeout:
                    case WiFiConnectionStatus.UnspecifiedFailure:
                    default:
                    {
                        _error = OnboardingError.ErrorMessage;
                        break;
                    }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private async Task <WiFiConnectionStatus> ConnectToNetwork(WiFiAdapter adapter, WiFiAvailableNetwork network)
        {
            lock (_stateLock)
            {
                _state = OnboardingState.ConfiguredValidating;
            }

            string resultPassword = "";
            WiFiConnectionResult connectionResult;

            // For all open networks (when no PSK was provided) connect without a password
            // Note, that in test, we have seen some WEP networks identify themselves as Open even though
            // they required a PSK, so use the PSK as a determining factor
            if ((network.SecuritySettings.NetworkAuthenticationType == NetworkAuthenticationType.Open80211) &&
                string.IsNullOrEmpty(_personalApPassword))
            {
                connectionResult = await adapter.ConnectAsync(network, WiFiReconnectionKind.Automatic);
            }
            // Otherwise for all WEP/WPA/WPA2 networks convert the PSK back from a hex-ized format back to a passphrase, if necessary,
            // and onboard this device to the requested network.
            else
            {
                PasswordCredential pwd = new PasswordCredential();
                resultPassword   = ConvertHexToPassPhrase(network.SecuritySettings.NetworkAuthenticationType, _personalApPassword);
                pwd.Password     = resultPassword;
                connectionResult = await adapter.ConnectAsync(network, WiFiReconnectionKind.Automatic, pwd);
            }

            lock (_stateLock)
            {
                if (connectionResult.ConnectionStatus == WiFiConnectionStatus.Success)
                {
                    _error        = OnboardingError.Validated;
                    _errorMessage = null;
                    _state        = OnboardingState.ConfiguredValidated;
                }
                else
                {
                    _state        = OnboardingState.ConfiguredError;
                    _errorMessage = connectionResult.ConnectionStatus.ToString();

                    switch (connectionResult.ConnectionStatus)
                    {
                    case WiFiConnectionStatus.AccessRevoked:
                    case WiFiConnectionStatus.InvalidCredential:
                    {
                        _error = OnboardingError.Unauthorized;
                        break;
                    }

                    case WiFiConnectionStatus.UnsupportedAuthenticationProtocol:
                    {
                        _error = OnboardingError.UnsupportedProtocol;
                        break;
                    }

                    case WiFiConnectionStatus.NetworkNotAvailable:
                    case WiFiConnectionStatus.Timeout:
                    case WiFiConnectionStatus.UnspecifiedFailure:
                    default:
                    {
                        _error = OnboardingError.ErrorMessage;
                        break;
                    }
                    }
                }
            }
#if DEBUG
            var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
            var file   = await folder.CreateFileAsync("ConnectionResult.Txt", Windows.Storage.CreationCollisionOption.ReplaceExisting);

            string myout = "ConnectionResult= " + connectionResult.ConnectionStatus.ToString() + "\r\n";
            myout += "Type=" + network.SecuritySettings.NetworkAuthenticationType.ToString() + "\r\n";
            myout += "InputPassword= "******"\r\n";
            myout += "ResultPassword= "******"\r\n";
            await Windows.Storage.FileIO.WriteTextAsync(file, myout);
#endif
            return(connectionResult.ConnectionStatus);
        }
Ejemplo n.º 3
0
        private async void ConnectToNetwork(WiFiAvailableNetwork network)
        {
            lock (_stateLock)
            {
                _state = OnboardingState.ConfiguredValidating;
            }

            WiFiConnectionResult connectionResult;
            if (network.SecuritySettings.NetworkAuthenticationType == NetworkAuthenticationType.Open80211)
            {
                connectionResult = await _wlanAdapter.ConnectAsync(network, WiFiReconnectionKind.Automatic);
            }
            else
            {
                connectionResult = await _wlanAdapter.ConnectAsync(network, WiFiReconnectionKind.Automatic, new PasswordCredential { Password = _personalApPassword });
            }

            lock (_stateLock)
            {
                if (connectionResult.ConnectionStatus == WiFiConnectionStatus.Success)
                {
                    _error = OnboardingError.Validated;
                    _errorMessage = null;
                    _state = OnboardingState.ConfiguredValidated;
                }
                else
                {
                    _state = OnboardingState.ConfiguredError;
                    _errorMessage = connectionResult.ConnectionStatus.ToString();

                    switch (connectionResult.ConnectionStatus)
                    {
                        case WiFiConnectionStatus.AccessRevoked:
                        case WiFiConnectionStatus.InvalidCredential:
                            {
                                _error = OnboardingError.Unauthorized;
                                break;
                            }
                        case WiFiConnectionStatus.UnsupportedAuthenticationProtocol:
                            {
                                _error = OnboardingError.UnsupportedProtocol;
                                break;
                            }
                        case WiFiConnectionStatus.NetworkNotAvailable:
                        case WiFiConnectionStatus.Timeout:
                        case WiFiConnectionStatus.UnspecifiedFailure:
                        default:
                            {
                                _error = OnboardingError.ErrorMessage;
                                break;
                            }
                    }
                }
            }
        }