Esempio n. 1
0
        public IHttpActionResult GetSubMailBoxFolder([FromUri] string Name)
        {
            Runspace remoteRunspace = null;

            try
            {
                aOpenRunSpace.Open(GetUserData().AccountName, GetUserData().Password, ref remoteRunspace);
                var results = aMailBoxFolderHelpers.MailBoxFolders(GetUserData().AccountName + ":\\" + Name, ref remoteRunspace);
                var SubFolderSelectResults = aMailBoxFolderHelpers.SubFolderSelectResults(results.Invoke());
                var ErrorMsgs = aCommomHelpers.ReturnPowerShellInvokeErrors(results.Streams.Error);
                if (ErrorMsgs != null)
                {
                    return(Content(HttpStatusCode.BadRequest, ErrorMsgs));
                }
                return(Ok(SubFolderSelectResults));
            }
            catch (Exception e)
            {
                if (e.InnerException != null)
                {
                    return(BadRequest(e.InnerException.Message));
                }
                else
                {
                    return(BadRequest(e.Message));
                }
            }
            finally
            {
                remoteRunspace.Close();
                remoteRunspace.Dispose();
            }
        }
Esempio n. 2
0
        private void RecursiveSettingAccessRights(List <PostPutMailBoxFolderPermission> Model, ref Runspace remoteRunspace)
        {
            var SubFolderResults       = aMailBoxFolderHelpers.MailBoxFolders(GetUserData().AccountName + ":\\" + Model.FirstOrDefault().FolderPath, ref remoteRunspace);
            var SubFolderSelectResults = aMailBoxFolderHelpers.SubFolderSelectResults(SubFolderResults.Invoke());

            foreach (var sub in SubFolderSelectResults)
            {
                string aFolderPath = string.Join("\\", ((ArrayList)sub.FolderPath).Cast <object>().Select(x => x == null ? null : x.ToString()).ToArray()).ToString();
                //加入權限
                foreach (var m in Model)
                {
                    if (m.AccessRights.Length > 0)
                    {
                        string     AccountName = GetUserData().AccountName;
                        var        MailBoxFolderPermissionResults       = aMailBoxFolderPermissionHelpers.PSmailBoxFolderPermission(AccountName + ":\\" + aFolderPath, ref remoteRunspace);
                        var        MailBoxFolderPermissionSelectResults = aMailBoxFolderPermissionHelpers.RootFolderPermissionResults(MailBoxFolderPermissionResults.Invoke());
                        PowerShell results = null;
                        if (MailBoxFolderPermissionSelectResults.Where(a => a.UserPrincipalName == m.UserPrincipalName).Any())
                        {
                            results = aMailBoxFolderPermissionHelpers.SetMailBoxFolderPermission(GetUserData().AccountName + ":\\" + aFolderPath, m.UserPrincipalName, m.AccessRights, ref remoteRunspace);
                        }
                        else
                        {
                            results = aMailBoxFolderPermissionHelpers.AddMailBoxFolderPermission(GetUserData().AccountName + ":\\" + aFolderPath, m.UserPrincipalName, m.AccessRights, ref remoteRunspace);
                        }
                        results.Invoke();
                        //var ErrorMsgs = aCommomHelpers.ReturnPowerShellInvokeErrors(results.Streams.Error);
                        //if (ErrorMsgs != null)
                        //{
                        //    remoteRunspace.Close();
                        //    remoteRunspace.Dispose();
                        //    return;
                        //}
                        results.Commands.Clear();
                    }
                }
                //遞迴查詢
                var aModel = Model;
                foreach (var a in aModel.ToList())
                {
                    a.FolderPath = aFolderPath;
                }
                if (sub.HasSubfolders)
                {
                    RecursiveSettingAccessRights(aModel, ref remoteRunspace);
                }
            }
        }