public void ShowServerVersion()
 {
     UIErrorHelper.CheckedExec(delegate() {
         UIErrorHelper.ShowAlert(VMCACertificateService.GetVersion(ServerDTO), "Version");
     });
 }
Exemple #2
0
        /// <summary>
        /// Connects to server.
        /// </summary>
        public async void ConnectToServer()
        {
            _serverState = ServerState.Disconnected;
            ProgressWindowController pwc = new ProgressWindowController();
            IntPtr session = new IntPtr(0);
            var    servers = PscHighAvailabilityAppEnvironment.Instance.LocalData.GetServerArray();
            var    lwc     = new LoginWindowController(servers);

            NSApplication.SharedApplication.BeginSheet(lwc.Window, this.Window, () => {
            });
            nint result = NSApplication.SharedApplication.RunModalForWindow(lwc.Window);

            try {
                if (result == (nint)VMIdentityConstants.DIALOGOK)
                {
                    _serverDto = GetServerDto(lwc);
                    if (PingHost(_serverDto.Server))
                    {
                        NSApplication.SharedApplication.BeginSheet(pwc.Window, this.Window as NSWindow, () => {
                        });
                        session = NSApplication.SharedApplication.BeginModalSession(pwc.Window);

                        var task = new Task(LoginToServer);
                        task.Start();
                        if (task == await Task.WhenAny(task, Task.Delay(VMIdentityConstants.ServerTimeoutInSeconds * Constants.MilliSecsMultiplier)))
                        {
                            await task;
                            if (!_isLoggedIn)
                            {
                                UIErrorHelper.ShowAlert(VMIdentityConstants.SERVER_CONNECT_ERROR, VMIdentityConstants.SERVER_CONNECT_ERROR);
                            }
                            else
                            {
                                PscHighAvailabilityAppEnvironment.Instance.LocalData.AddServer(lwc.Server);
                                this.LoggedInLabel.StringValue = _serverDto.Upn;
                                _serverState = ServerState.Connected;
                            }
                        }
                        else
                        {
                            UIErrorHelper.ShowAlert(VMIdentityConstants.SERVER_TIMED_OUT, VMIdentityConstants.SERVER_TIMED_OUT);
                        }
                    }
                    else
                    {
                        UIErrorHelper.ShowAlert(VMIdentityConstants.HOST_OR_IP_ADDRESS_NOT_REACHABLE, VMIdentityConstants.HOST_NOT_REACHABLE);
                    }
                }
            } catch (Exception e) {
                UIErrorHelper.ShowAlert("", e.Message);
            } finally {
                if (pwc.ProgressBar != null)
                {
                    pwc.ProgressBar.StopAnimation(pwc.Window);
                    pwc.Window.Close();
                    NSApplication.SharedApplication.EndModalSession(session);
                }
                Window.EndSheet(lwc.Window);
                lwc.Dispose();
            }

            SetConnectToolbar(_serverState);
            if (_isLoggedIn)
            {
                Initialize();
                AsyncRefresh();
            }
        }
Exemple #3
0
 public void LoginAsync()
 {
     try {
         var service   = SnapInContext.Instance.ServiceGateway;
         var authToken = service.Authentication.Login(((AuthTokenDto)Tag).ServerDto, LoginDto, Constants.ClientId);
         Tag = authToken;
         AddServiceGatewayForServer(service, authToken);
         var key = authToken.ServerDto.ServerName;                // + "-" + _loginDto.TenantName;
         SnapInContext.Instance.AuthTokenManager.SetAuthToken(authToken, key);
         AddTenantNode(authToken, new TenantDto {
             Name = LoginDto.TenantName
         });
         IsLoggedIn = true;
     }
     catch (WebException exp)
     {
         if (((AuthTokenDto)Tag).ServerDto.TokenType == TokenType.SAML)
         {
             if (exp != null && exp.Response != null)
             {
                 var response = exp.Response as HttpWebResponse;
                 var resp     = new StreamReader(exp.Response.GetResponseStream()).ReadToEnd();
                 UIErrorHelper.ShowAlert(resp, "Error");
                 return;
             }
             else
             {
                 UIErrorHelper.ShowAlert(exp.Message, "Error");
                 return;
             }
         }
         else
         {
             if (exp.Response is HttpWebResponse)
             {
                 var response = exp.Response as HttpWebResponse;
                 if (response != null && response.StatusCode == HttpStatusCode.Unauthorized)
                 {
                     var resp  = new StreamReader(exp.Response.GetResponseStream()).ReadToEnd();
                     var error = JsonConvert.Deserialize <AuthErrorDto> (resp);
                     if (error != null)
                     {
                         if (error.Error == AuthError.InvalidToken)
                         {
                             UIErrorHelper.ShowAlert("Token Expired", "Error");
                         }
                         else
                         {
                             UIErrorHelper.ShowAlert(error.Details, "Error");
                         }
                     }
                 }
                 else
                 {
                     if (response != null && response.StatusCode == HttpStatusCode.BadRequest && response.ContentType == "application/json;charset=UTF-8")
                     {
                         var resp  = new StreamReader(response.GetResponseStream()).ReadToEnd();
                         var error = JsonConvert.Deserialize <AuthErrorDto> (resp);
                         if (resp.Contains(AuthError.InvalidGrant))
                         {
                             if (error != null)
                             {
                                 UIErrorHelper.ShowAlert("Invalid username or password", "Error");
                             }
                             else
                             {
                                 UIErrorHelper.ShowAlert(exp.Message + " Details: " + resp, "Error");
                             }
                         }
                         else
                         {
                             UIErrorHelper.ShowAlert(exp.Message + " Details: " + resp, "Error");
                         }
                     }
                     else if (response != null && response.ContentType == "application/json")
                     {
                         var resp = new StreamReader(response.GetResponseStream()).ReadToEnd();
                         UIErrorHelper.ShowAlert(exp.Message + " Details: " + resp, "Error");
                     }
                     else
                     {
                         UIErrorHelper.ShowAlert(exp.Message, "Error");
                     }
                 }
             }
             else
             {
                 UIErrorHelper.ShowAlert(exp.Message, "Error");
             }
         }
     }
     catch (Exception exp)
     {
         UIErrorHelper.ShowAlert(exp.Message, "Error");
     }
 }
Exemple #4
0
 public void ShowHttpTransport(object sender, EventArgs e)
 {
     ActionHelper.Execute(delegate() {
         UIErrorHelper.ShowAlert("ShowHttpTransport", "Alert");
     });
 }
Exemple #5
0
 /// <summary>
 /// Shows the error.
 /// </summary>
 private void ShowError()
 {
     UIErrorHelper.ShowAlert(exception.Message, Constants.RefreshFailure);
 }
Exemple #6
0
 public static void Execute(System.Action fn)
 {
     try
     {
         fn();
     }
     catch (WebException exp)
     {
         if (exp.Response is HttpWebResponse)
         {
             var response = exp.Response as HttpWebResponse;
             if (response != null && response.StatusCode == HttpStatusCode.Unauthorized)
             {
                 var resp  = new StreamReader(exp.Response.GetResponseStream()).ReadToEnd();
                 var error = JsonConvert.Deserialize <AuthErrorDto>(resp);
                 if (error != null)
                 {
                     if (error.Error == AuthError.InvalidToken)
                     {
                         ActionHelper.Execute(delegate()
                         {
                             NSNotificationCenter.DefaultCenter.PostNotificationName("RefreshToken", new NSObject());
                         });
                     }
                     else
                     {
                         UIErrorHelper.ShowAlert(error.Details, "Error");
                     }
                 }
             }
             else
             {
                 if (response != null && response.StatusCode == HttpStatusCode.BadRequest && response.ContentType == "application/json;charset=UTF-8")
                 {
                     var resp  = new StreamReader(response.GetResponseStream()).ReadToEnd();
                     var error = JsonConvert.Deserialize <AuthErrorDto> (resp);
                     if (resp.Contains(AuthError.InvalidGrant))
                     {
                         if (error != null)
                         {
                             if (error.Error == AuthError.InvalidGrant)
                             {
                                 NSNotificationCenter.DefaultCenter.PostNotificationName("LoggedInSessionExpired", new NSObject());
                             }
                             else
                             {
                                 UIErrorHelper.ShowAlert(error.Details, "Error");
                             }
                         }
                         else
                         {
                             UIErrorHelper.ShowAlert(error.Details, "Error");
                         }
                     }
                     else
                     {
                         UIErrorHelper.ShowAlert(error.Details, "Error");
                     }
                 }
                 else if (response != null && response.ContentType == "application/json")
                 {
                     var resp = new StreamReader(response.GetResponseStream()).ReadToEnd();
                     UIErrorHelper.ShowAlert(exp.Message + " Details: " + resp, "Error");
                 }
                 else
                 {
                     UIErrorHelper.ShowAlert(exp.Message, "Error");
                 }
             }
         }
         else
         {
             UIErrorHelper.ShowAlert(exp.Message, "Error");
         }
     }
     catch (Exception exp)
     {
         UIErrorHelper.ShowAlert(exp.Message, "Error");
     }
 }
Exemple #7
0
        public override NSMenu MenuForEvent(NSEvent theEvent)
        {
            CGPoint pt = this.ConvertPointFromView(theEvent.LocationInWindow, null);

            _selectedRow = this.GetRow(pt);
            NSTableViewDataSource ds = (NSTableViewDataSource)this.DataSource;
            NSMenu menu = new NSMenu();

            if (_selectedRow >= (nint)0)
            {
                if (ds is NodesListView)
                {
                    string data = (ds as NodesListView).Entries [(int)_selectedRow].DisplayName;
                    switch (data)
                    {
                    case "Private Entities":
                        NSMenuItem addPrivateEntity = new NSMenuItem("Add Private Entity", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsPrivateKeysNode).AddPrivateKeyHandler);
                        menu.AddItem(addPrivateEntity);
                        break;

                    case "Secret Keys":
                        NSMenuItem createCertificate = new NSMenuItem("Add Secret Key", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsSecretKeysNode).AddSecretKey);
                        menu.AddItem(createCertificate);
                        break;

                    case "Trusted Certs":
                        NSMenuItem createSigningRequest = new NSMenuItem("Create Certificate", ((ds as NodesListView).Entries [(int)_selectedRow] as VecsTrustedCertsNode).AddCertificate);
                        menu.AddItem(createSigningRequest);
                        break;

                    default:
                        break;
                    }
                }
                else if (ds is CertificateDetailsListView)
                {
                    CertificateDetailsListView lw = ds as CertificateDetailsListView;
                    CertDTO    cert     = lw.Entries [(int)_selectedRow];
                    NSMenuItem showCert = new NSMenuItem("Show Certificate", (object sender, EventArgs e) => CertificateService.DisplayX509Certificate2(this, cert.Cert));
                    menu.AddItem(showCert);
                    NSMenuItem deleteEntry = new NSMenuItem("Delete", (object sender, EventArgs e) => {
                        UIErrorHelper.CheckedExec(delegate() {
                            if (UIErrorHelper.ConfirmDeleteOperation("Are you sure?") == true)
                            {
                                using (var session = new VecsStoreSession(lw.ServerDto.VecsClient, lw.Store, "")) {
                                    session.DeleteCertificate(cert.Alias);
                                }
                                lw.Entries.Remove(cert);
                                UIErrorHelper.ShowAlert("", "Successfully deleted the entry.");
                                NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadServerData", this);
                            }
                        });
                    });
                    menu.AddItem(deleteEntry);
                }
                else if (ds is SecretKeysListView)
                {
                    SecretKeysListView lw          = ds as SecretKeysListView;
                    CertDTO            cert        = lw.Entries[(int)_selectedRow];
                    NSMenuItem         deleteEntry = new NSMenuItem("Delete", (object sender, EventArgs e) =>
                    {
                        UIErrorHelper.CheckedExec(delegate()
                        {
                            if (UIErrorHelper.ConfirmDeleteOperation("Are you sure?") == true)
                            {
                                using (var session = new VecsStoreSession(lw.ServerDto.VecsClient, lw.Store, ""))
                                {
                                    session.DeleteCertificate(cert.Alias);
                                }
                                lw.Entries.Remove(cert);
                                UIErrorHelper.ShowAlert("", "Successfully deleted the entry.");
                                NSNotificationCenter.DefaultCenter.PostNotificationName("ReloadServerData", this);
                            }
                        });
                    });
                    menu.AddItem(deleteEntry);
                }
                NSMenu.PopUpContextMenu(menu, theEvent, theEvent.Window.ContentView);
            }
            return(base.MenuForEvent(theEvent));
        }