Beispiel #1
0
 public void CleanCurrentRequestsCallback(object sender, PSBGCompletedEventArgs e)
 {
     if (this.requestsView.InvokeRequired)
     {
         CmdCompleteCallback d = new CmdCompleteCallback(CleanCurrentRequestsCallback);
         this.Invoke(d, new object[] { sender, e });
     }
     else
     {
         if (e.failed)
         {
             MessageBox.Show("Falha ao limpar requests: " + e.failmsg);
         }
         else
         {
             MessageBox.Show("Requests limpos!");
         }
     }
 }
Beispiel #2
0
 public void ReceiveMBOXCompleted(object sender, PSBGCompletedEventArgs e)
 {
     if (this.contentManager.InvokeRequired)
     {
         CmdCompleteCallback d = new CmdCompleteCallback(ReceiveMBOXCompleted);
         this.Invoke(d, new object[] { sender, e });
     }
     else
     {
         if (!e.failed)
         {
             mailboxList.Text = "";
             mailboxList.Items.Clear();
             mboxs = ExchangeUtils.ProcessMBOXOutput(e.OutData);
             for (int i = 0; i < mboxs.Count(); i++)
             {
                 mailboxList.Items.Add(i + ": " + mboxs[i].Alias);
             }
             contentManager.TabPages.Add(backupConfig);
             contentManager.TabPages.Add(currentRequests);
             //MessageBox.Show("Conectado e lista de caixas recebida!");
             connectButton.Enabled = true;
             connected             = true;
             requestUpdate.Enabled = true;
             connectButton.Text    = "Conectado, clique aqui para desconectar.";
         }
         else
         {
             connected             = false;
             requestUpdate.Enabled = false;
             contentManager.TabPages.Remove(backupConfig);
             contentManager.TabPages.Remove(currentRequests);
             connectButton.Text        = "Conectar e Baixar Lista de Usuários";
             serverIPtextBox.Enabled   = true;
             serverUserTextBox.Enabled = true;
             serverPassTextBox.Enabled = true;
             saveServerConfig.Enabled  = true;
             MessageBox.Show("Não foi possível conectar: \r\n" + e.failmsg);
         }
     }
 }
Beispiel #3
0
        public void DoWork(object sender, DoWorkEventArgs e)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
            BackgroundWorker worker = sender as BackgroundWorker;
            Runspace         rSpace;
            SecureString     secpass = new SecureString();;

            for (int i = 0; i < password.Length; i++)
            {
                secpass.AppendChar(password[i]);
            }

            PSCredential        cred           = new PSCredential(username, secpass);
            WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
                new Uri("https://" + ip + "/Powershell"),
                "http://schemas.microsoft.com/powershell/Microsoft.Exchange",
                cred);

            connectionInfo.SkipCACheck         = true;
            connectionInfo.SkipRevocationCheck = true;
            connectionInfo.SkipCNCheck         = true;
            LogMan.AddDebug("Trying to connect to \"https://" + ip + "/Powershell\"");
            connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
            rSpace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(connectionInfo);
            try
            {
                rSpace.Open();
                Pipeline pipeLine = rSpace.CreatePipeline();
                if (scripting)
                {
                    pipeLine.Commands.AddScript(this.workScript);
                    LogMan.AddDebug("Console Script: " + workScript.ToString());
                }
                else
                {
                    foreach (Command cmd in this.workCMD)
                    {
                        pipeLine.Commands.Add(cmd);
                        System.Console.WriteLine(cmd.ToString());
                        String parameters = "";
                        for (int i = 0; i < cmd.Parameters.Count; i++)
                        {
                            parameters += " -" + cmd.Parameters[i].Name + " " + cmd.Parameters[i].Value;
                        }
                        LogMan.AddDebug("Console: " + cmd.ToString() + parameters);
                    }
                }
                Collection <PSObject> commandResults = pipeLine.Invoke();
                RequestOutput         outdata        = new RequestOutput();
                foreach (PSObject cmdlet in commandResults)
                {
                    foreach (PSPropertyInfo prop in cmdlet.Properties)
                    {
                        try
                        {
                            outdata.Add(prop.Name.ToString(), prop.Value.ToString());
                        }
                        catch (Exception) { }
                    }
                }
                completed = true;
                PSBGCompletedEventArgs args = new PSBGCompletedEventArgs();
                LogMan.AddDebug("Outdata: " + outdata.ToString());
                args.Output  = outdata.ToString();
                args.OutData = outdata;
                args.Id      = this.Id;
                args.failed  = false;
                pipeLine.Dispose();
                rSpace.Close();
                if (Completed != null)
                {
                    Completed(this, args);
                }
            }
            catch (Exception exc)
            {
                LogMan.AddDebug("Error: " + exc.Message);
                PSBGCompletedEventArgs args = new PSBGCompletedEventArgs();
                args.Id      = this.Id;
                args.failed  = true;
                args.failmsg = exc.Message;
                rSpace.Close();
                if (Completed != null)
                {
                    Completed(this, args);
                }
            }
        }
Beispiel #4
0
        public void ProcessRequestsOutput(object sender, PSBGCompletedEventArgs e)
        {
            if (this.requestsView.InvokeRequired)
            {
                CmdCompleteCallback d = new CmdCompleteCallback(ProcessRequestsOutput);
                this.Invoke(d, new object[] { sender, e });
            }
            else
            {
                if (!e.failed)
                {
                    //dataGridView1
                    List <ExchangeRequest> requests = new List <ExchangeRequest>();
                    ExchangeRequest        req      = new ExchangeRequest();
                    RequestOutput          outd     = e.OutData;
                    for (int i = 0, len = outd.ResponseTitles.Count(); i < len; i++)
                    {
                        String title = outd.ResponseTitles[i].ToLower();
                        String value = outd.ResponseValues[i];
                        switch (title)
                        {
                        case "name": req.Name = value; break;

                        case "status": req.Status = value; break;

                        case "filepath": req.Filepath = value; break;

                        case "sourcealias": req.SourceAlias = value; break;

                        case "sourcemailboxidentity": req.SourceMailboxIdentity = value; break;

                        case "contentfilter": req.ContentFilter = value; break;

                        case "overallduration": req.OverallDuration = value; break;

                        case "totalqueuedduration": req.TotalQueuedDuration = value; break;

                        case "totalinprogressduration": req.TotalInProgressDuration = value; break;

                        case "percentcomplete": req.PercentComplete = value; break;

                        case "objectstate": requests.Add(req); req = new ExchangeRequest(); break;
                        }
                    }

                    requestsView.ColumnCount     = 7;
                    requestsView.Columns[0].Name = "Name";
                    requestsView.Columns[1].Name = "Status";
                    requestsView.Columns[2].Name = "SourceAlias";
                    requestsView.Columns[3].Name = "SourceMailboxIdentity";
                    requestsView.Columns[4].Name = "TotalInProgressDuration";
                    requestsView.Columns[5].Name = "PercentComplete";
                    requestsView.Columns[6].Name = "FilePath";
                    int c = 0;
                    foreach (ExchangeRequest reqo in requests)
                    {
                        if (requestsView.Rows.Count > c)
                        {
                            requestsView.Rows[c].Cells[0].Value = reqo.Name;
                            requestsView.Rows[c].Cells[1].Value = reqo.Status;
                            requestsView.Rows[c].Cells[2].Value = reqo.SourceAlias;
                            requestsView.Rows[c].Cells[3].Value = reqo.SourceMailboxIdentity;
                            requestsView.Rows[c].Cells[4].Value = reqo.TotalInProgressDuration;
                            requestsView.Rows[c].Cells[5].Value = reqo.PercentComplete;
                            requestsView.Rows[c].Cells[6].Value = reqo.Filepath;
                        }
                        else
                        {
                            requestsView.Rows.Add(new string[] {
                                reqo.Name,
                                reqo.Status,
                                reqo.SourceAlias,
                                reqo.SourceMailboxIdentity,
                                reqo.TotalInProgressDuration,
                                reqo.PercentComplete,
                                reqo.Filepath
                            });
                        }
                        switch (reqo.Status.ToLower())
                        {
                        case "completed":
                            requestsView.Rows[c].DefaultCellStyle.BackColor = Color.Green; break;

                        case "failed":
                            requestsView.Rows[c].DefaultCellStyle.BackColor = Color.Red; break;

                        case "inprogress":
                            requestsView.Rows[c].DefaultCellStyle.BackColor = Color.Cyan; break;

                        default:
                            requestsView.Rows[c].DefaultCellStyle.BackColor = Color.Yellow; break;
                        }
                        c++;
                    }

                    if (requestsView.Rows.Count > requests.Count)
                    {
                        for (int i = requests.Count; i < requestsView.Rows.Count; i++)
                        {
                            requestsView.Rows.RemoveAt(requestsView.Rows.Count - 1);
                        }
                        requestsView.Refresh();
                    }
                    requestUpdate.Start();
                }
            }
        }