public MSActorReturnMessageModel EnableMailbox([FromBody] EnableMailboxModel input)
 {
     try {
         string logmessage = "EnableMailbox | database: " + input.database + " | alias: " + input.alias + " | emailaddresses: " + input.emailaddresses;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.EnableMailbox(input.database, input.alias, input.emailaddresses));
     }catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
 public MSActorReturnMessageModel DisableMailbox([FromBody] IdentityModel input)
 {
     try {
         string logmessage = "DisableMailbox | identity: " + input.identity;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.DisableMailbox(input.identity));
     }
     catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
 public MSActorReturnMessageModel HideMailboxFromAddressLists([FromBody] HideMailboxFromAddressListsModel input)
 {
     try {
         string logmessage = "HideMailboxFromAddressLists | identity: " + input.identity + " | hidemailbox: " + input.hidemailbox;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.HideMailboxFromAddressLists(input.identity, input.hidemailbox));
     }
     catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
 public MSActorReturnMessageModel GetMoveRequest([FromBody] IdentityModel input)
 {
     try {
         string logmessage = "GetMoveRequest | identity: " + input.identity;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.GetMoveRequest(input.identity));
     }
     catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
 public MSActorReturnMessageModel NewMoveRequest([FromBody] NewMoveRequestModel input)
 {
     try {
         string logmessage = "NewMoveRequest | identity: " + input.identity + " | targetdatabase: " + input.targetdatabase;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.NewMoveRequest(input.identity, input.targetdatabase));
     }
     catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
 public MSActorReturnMessageModel SetMailboxName([FromBody] SetMailboxNameModel input)
 {
     try {
         string logmessage = "SetMailboxName | identity: " + input.identity + " | alias: " + input.alias +
                             " | addemailaddress: " + input.addemailaddress;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.SetMailboxName(input.identity, input.alias, input.addemailaddress));
     }
     catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
 public MSActorReturnMessageModel SetMailboxQuotas([FromBody] SetMailboxQuotasModel input)
 {
     try {
         string logmessage = "SetMailboxQuotas | identity: " + input.identity + " | prohibitsendreceivequota: " + input.prohibitsendreceivequota +
                             " | prohibitsendquota: " + input.prohibitsendquota + " | issuewarningquota: " + input.issuewarningquota;
         util.LogMessage(logmessage);
         ExchangeController control = new ExchangeController();
         return(control.SetMailboxQuotas(input.identity, input.prohibitsendreceivequota, input.prohibitsendquota, input.issuewarningquota));
     }
     catch (Exception e)
     {
         return(util.ReportError(e));
     }
 }
Exemple #8
0
        /// <summary>
        /// This method creates a new AD group
        /// </summary>
        /// <param name="group_name"></param>
        /// <param name="group_description"></param>
        /// <param name="group_info"></param>
        /// <param name="group_ad_path"></param>
        /// <param name="group_category"></param>
        /// <param name="group_scope"></param>
        /// <returns></returns>
        public MSActorReturnMessageModel NewADGroup(string group_name, string group_description, string group_info,
                                                    string group_ad_path, string group_category, string group_scope, string samaccountname)
        {
            UtilityController util = new UtilityController();

            try
            {
                using (PowerShell powershell = PowerShell.Create())
                {
                    PSCommand command;

                    if (group_category == "distribution")
                    {
                        // First we need Exchange to enable the distribution group
                        ExchangeController        control = new ExchangeController();
                        MSActorReturnMessageModel msg     = control.EnableDistributionGroup(group_name, group_ad_path, group_description, group_info);
                        if (msg.code == "CMP")
                        {
                            // Then we follow up setting some attributes that Exchange's cmdlet won't set
                            string distinguishedName = "CN=" + group_name + "," + group_ad_path;

                            bool   setADGroupComplete = false;
                            int    count = 0;
                            string objectNotFoundMessage = "Directory object not found";
                            while (setADGroupComplete == false && count < 3)
                            {
                                try
                                {
                                    command = new PSCommand();
                                    command.AddCommand("Set-ADGroup");
                                    command.AddParameter("identity", distinguishedName);
                                    if (group_description != "")
                                    {
                                        command.AddParameter("description", group_description);
                                    }
                                    command.AddParameter("displayname", group_name);
                                    if (group_info != "")
                                    {
                                        Hashtable attrHash = new Hashtable
                                        {
                                            { "info", group_info }
                                        };
                                        command.AddParameter("Add", attrHash);
                                    }
                                    powershell.Commands = command;
                                    powershell.Invoke();
                                    if (powershell.Streams.Error.Count > 0)
                                    {
                                        if (powershell.Streams.Error[0].Exception.Message.Contains(objectNotFoundMessage))
                                        {
                                            System.Threading.Thread.Sleep(1000);
                                        }
                                        else
                                        {
                                            throw powershell.Streams.Error[0].Exception;
                                        }
                                    }
                                    else
                                    {
                                        setADGroupComplete = true;
                                    }
                                    count++;
                                }
                                catch (Exception e)
                                {
                                    if (e.Message.Contains(objectNotFoundMessage))
                                    {
                                        System.Threading.Thread.Sleep(1000);
                                        count++;
                                    }
                                    else
                                    {
                                        throw e;
                                    }
                                }
                            }
                            if (count == 3)
                            {
                                throw new Exception("Retry count exceeded. May indicate distribution group creation issue");
                            }
                            else
                            {
                                return(new MSActorReturnMessageModel(SuccessCode, ""));
                            }
                        }
                        else
                        {
                            return(msg);
                        }
                    }

                    command = new PSCommand();
                    command.AddCommand("New-ADGroup");
                    command.AddParameter("name", group_name);
                    if (group_description != "")
                    {
                        command.AddParameter("description", group_description);
                    }
                    command.AddParameter("groupcategory", group_category);
                    command.AddParameter("displayname", group_name);
                    command.AddParameter("path", group_ad_path);
                    command.AddParameter("groupscope", group_scope);
                    if (group_info != "")
                    {
                        Hashtable attrHash = new Hashtable
                        {
                            { "info", group_info }
                        };
                        command.AddParameter("OtherAttributes", attrHash);
                    }
                    command.AddParameter("samaccountname", samaccountname);
                    powershell.Commands = command;
                    powershell.Invoke();
                    if (powershell.Streams.Error.Count > 0)
                    {
                        throw powershell.Streams.Error[0].Exception;
                    }
                    powershell.Streams.ClearStreams();


                    MSActorReturnMessageModel successMessage = new MSActorReturnMessageModel(SuccessCode, "");
                    return(successMessage);
                }
            }
            catch (Exception e)
            {
                if (!e.Message.Contains(groupExistsError))
                {
                    return(util.ReportError(e));
                }
                return(util.ReportHiddenError(e));
            }
        }