Ejemplo n.º 1
0
        public static OutputQueue CopyApplicationBinContent(int timeOut)
        {
            var output = new OutputQueue();

            Parallel.ForEach(LocalFarm.Get().Servers.Where(p => Server.ValidSPServerRole(p.Role)),
                             server =>
            {
                if (SPWebService.ContentService.Instances.Any(p => p.Server.Id == server.Id) || SPWebService.AdministrationService.Instances.Any(p => p.Server.Id == server.Id))
                {
                    var command = string.Format(CultureInfo.InvariantCulture, @"{0} -o copyappbincontent", SPUtility.GetGenericSetupPath(@"bin\stsadm.exe"));

                    output.Add(string.Format(CultureInfo.CurrentUICulture, UserDisplay.RunningCommandOn, command, server.Address));

                    try
                    {
                        var processWMI = new Threading.ProcessWMI();
                        processWMI.ExecuteRemoteProcessWMI(server.Address, command, timeOut);
                    }
                    catch (Exception exception)
                    {
                        output.Add(string.Format(CultureInfo.CurrentUICulture, Exceptions.ExceptionRunningCommandOn, command, server.Address, exception.Message), OutputType.Error, exception.ToString(), exception);
                    }
                }
            });

            return(output);
        }
Ejemplo n.º 2
0
        internal static OutputQueue RemoveExistingJob(SPSolution solution)
        {
            var outputQueue = new OutputQueue();

            if (solution == null || !solution.JobExists)
            {
                return(outputQueue);
            }

            if (solution.JobStatus == SPRunningJobStatus.Initialized)
            {
                outputQueue.Add(string.Format(CultureInfo.CurrentCulture, Exceptions.DeploySolutionError, solution.Name, Exceptions.DeploySolutionJobAlreadyRunning), OutputType.Warning);
            }

            var jobs = GetSolutionJobs(solution);

            foreach (var jobid in jobs.Keys)
            {
                var jobDefinition = jobs[jobid];
                if (jobDefinition != null)
                {
                    try
                    {
                        outputQueue.Add(string.Format(CultureInfo.CurrentCulture, UserDisplay.DeploySolutionRemoveJob, jobDefinition.DisplayName, solution.Name));
                        jobDefinition.Delete();
                    }
                    catch (Exception exception)
                    {
                        outputQueue.Add(string.Format(CultureInfo.CurrentCulture, Exceptions.DeploySolutionRemoveJobFailed, jobDefinition.DisplayName, solution.Name, exception), OutputType.Warning);
                    }
                }
            }

            return(outputQueue);
        }
Ejemplo n.º 3
0
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_ExecuteTimerServiceJob);

                var cmdOutput = Utilities.Runspace.RunInPowerShell(string.Format(CultureInfo.InvariantCulture, "[Newsgator.Install.Common.Utilities.Jobs]::ExecuteInstallerJob(\"{0}\", {1})", JobName, this.Timeout.ToString(CultureInfo.InvariantCulture)));

                if (cmdOutput.Items.Any(p => p.Type == OutputType.Error))
                {
                    this.Status = TaskStatus.CompleteFailed;
                }
                else
                {
                    this.Status = TaskStatus.CompleteSuccess;
                }

                output.Add(cmdOutput);
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_ExecuteTimerServiceJobComplete);
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.ExecuteTimerRecycleJobException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 4
0
        internal static OutputQueue IsLocalAdministrator(out bool isLocalAdmin)
        {
            var outputQueue = new OutputQueue();

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteUserIsLocalAdmin));
            try
            {
                var user = WindowsIdentity.GetCurrent();
                if (user == null)
                {
                    isLocalAdmin = false;
                    return(outputQueue);
                }
                var principle = new WindowsPrincipal(user);
                isLocalAdmin = principle.IsInRole(WindowsBuiltInRole.Administrator);
            }
            catch (Exception exception)
            {
                isLocalAdmin = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteUserIsLocalAdmin, isLocalAdmin ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));

            return(outputQueue);
        }
Ejemplo n.º 5
0
        internal static OutputQueue DisableJob(SPJobDefinition job)
        {
            var outputQueue = new OutputQueue();

            if (job == null)
            {
                return(outputQueue);
            }

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.DisableJob, string.IsNullOrEmpty(job.DisplayName) ? job.Name : job.DisplayName));

            try
            {
                job.IsDisabled = true;
                job.Update();
            }
            catch (SPUpdatedConcurrencyException)
            { }
            catch (Exception exception)
            {
                outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, Exceptions.DisableJobsUnableToDisableError, job.DisplayName, exception.Message), OutputType.Error, null, exception);
            }

            outputQueue.Add(UserDisplay.DisableJobComplete);

            return(outputQueue);
        }
Ejemplo n.º 6
0
        internal static OutputQueue IsSupportedVersionOfSharePoint(out bool isSupported)
        {
            var outputQueue = new OutputQueue();

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteSharePointVersion));
            try
            {
                isSupported = false;
                var farm = LocalFarm.Get();
                switch (farm.BuildVersion.Major)
                {
                case 14:
                    isSupported = farm.BuildVersion >= new Version(14, 0, 6029, 1000);     // SharePoint 2010 SP1
                    break;

                case 15:
                    isSupported = farm.BuildVersion >= new Version(15, 0, 4420, 1017);     // SharePoint 2013 RTM
                    break;

                case 16:
                    isSupported = farm.BuildVersion >= new Version(16, 0, 4306, 1001);     // SharePoint 2016 Beta 2, TODO: Replace with RTM
                    break;
                }
            }
            catch (Exception exception)
            {
                isSupported = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteSharePointVersion, isSupported ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));
            return(outputQueue);
        }
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Tasks.TaskDetails_UpdateServiceApplication, this.ServiceApplicationTypeName));

                var command = string.Format(CultureInfo.InvariantCulture, "[Newsgator.Install.Common.Utilities.ServiceApplication]::UpdateNewsGatorServiceApplication([NewsGator.Install.Common.Entities.Flags.ServiceApplicationType]::{0}, ${1})",
                                            this.ServiceApplicationType.ToString(),
                                            this.UseTimerJob.ToString(CultureInfo.InvariantCulture));

                output.Add(Utilities.Runspace.RunInPowerShell(command));

                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Tasks.TaskDetails_UpdateServiceApplication_Complete, this.ServiceApplicationTypeName));
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.UpdateServiceApplicationException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 8
0
        internal static OutputQueue IsWebApplicationStarted(out bool isRunning)
        {
            var outputQueue = new OutputQueue();

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteWebApplicationServiceIsStarted));
            try
            {
                isRunning = false;
                var webServiceInstance = SPServer.Local.GetChild <SPWebServiceInstance>();
                if (webServiceInstance != null)
                {
                    if (webServiceInstance.Status == SPObjectStatus.Online)
                    {
                        isRunning = true;
                    }
                }
            }
            catch (Exception exception)
            {
                isRunning = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteWebApplicationServiceIsStarted, isRunning ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));
            return(outputQueue);
        }
Ejemplo n.º 9
0
        internal static OutputQueue GetAssemblies(out Assembly[] assemblies)
        {
            var output             = new OutputQueue();
            var assembliesToOutput = new Collection <Assembly>();

            try
            {
                var windir = Environment.GetEnvironmentVariable("SystemRoot");

                foreach (var gacLocation in GacDirectories)
                {
                    var gacPath = string.Format(CultureInfo.InvariantCulture, gacLocation, windir);
                    if (Directory.Exists(gacPath))
                    {
                        foreach (var prefix in AssemblyPrefixes)
                        {
                            var assemblyDirectories = Directory.GetDirectories(gacPath, prefix);
                            foreach (var assemblyDirectory in assemblyDirectories)
                            {
                                var versionDirectories = Directory.GetDirectories(assemblyDirectory);
                                foreach (var versionDirectory in versionDirectories)
                                {
                                    var assemblyFiles = Directory.GetFiles(versionDirectory, "*.dll");
                                    foreach (var assemblyFile in assemblyFiles)
                                    {
                                        if (File.Exists(assemblyFile))
                                        {
                                            try
                                            {
                                                assembliesToOutput.Add(Assembly.ReflectionOnlyLoadFrom(assemblyFile));
                                            }
                                            catch (Exception exception)
                                            {
                                                output.Add(exception.Message, OutputType.Error, exception.ToString(), exception);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                output.Add(exception.Message, OutputType.Error, exception.ToString(), exception);
            }

            assemblies = assembliesToOutput.ToArray();
            return(output);
        }
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Tasks.TaskDetails_ProvisionServiceApplication, this.ServiceApplicationTypeName));

                var command = string.Format(CultureInfo.InvariantCulture, "[Newsgator.Install.Common.Utilities.ServiceApplication]::ProvisionNewsGatorServiceApplication([NewsGator.Install.Common.Entities.Flags.ServiceApplicationType]::{0}, \"{1}\", \"{2}\", \"{3}\", \"{4}\", \"{5}\", \"{6}\", \"{7}\", \"{8}\", \"{9}\", \"{10}\", \"{11}\", \"{12}\", \"{13}\", \"{14}\", \"{15}\", \"{16}\", \"{17}\", \"{18}\", \"{19}\", \"{20}\", \"{21}\", ${22})",
                                            this.ServiceApplicationType.ToString(),
                                            this.DatabaseName,
                                            this.DatabaseServer,
                                            this.DatabaseFailoverServer,
                                            this.ReportDatabaseName,
                                            this.ReportDatabaseServer,
                                            this.ReportDatabaseFailoverServer,
                                            this.ApplicationPoolName,
                                            this.ApplicationPoolUsername,
                                            this.ApplicationPoolPassword,
                                            this.LicenseKey,
                                            this.EmailListLocation,
                                            this.VideoEncodingInputFolder,
                                            this.VideoEncodingOutputFolder,
                                            this.VideoStreamingServerFolder,
                                            this.VideoUploadFolder,
                                            this.VideoStreamingServerUrlDefaultZone,
                                            this.VideoStreamingServerUrlIntranetZone,
                                            this.VideoStreamingServerUrlInternetZone,
                                            this.VideoStreamingServerUrlCustomZone,
                                            this.VideoStreamingServerUrlExtranetZone,
                                            this.LearningGlobalKnowledgeBase,
                                            this.UseTimerJob.ToString(CultureInfo.InvariantCulture));

                output.Add(Utilities.Runspace.RunInPowerShell(command));

                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Tasks.TaskDetails_ProvisionServiceApplication_Complete, this.ServiceApplicationTypeName));
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.ProvisionServiceApplicationException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 11
0
        internal static OutputQueue IsUserProfileServiceApplicationInvokable(out bool isInvokable)
        {
            var outputQueue = new OutputQueue();

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteUserProfileAccess));
            try
            {
                outputQueue.Add(UserProfileService.UserHasAccess(out isInvokable));
            }
            catch (Exception exception)
            {
                isInvokable = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteUserProfileAccess, isInvokable ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));
            return(outputQueue);
        }
Ejemplo n.º 12
0
        internal static OutputQueue RepairAssemblies(string literalPath)
        {
            var output = new OutputQueue();

            try
            {
                var           tempPath  = Path.Combine(literalPath, "temp");
                DirectoryInfo directory = null;
                if (!Directory.Exists(tempPath))
                {
                    Directory.CreateDirectory(tempPath);
                }
                directory = new DirectoryInfo(tempPath);

                var command = Environment.GetFolderPath(Environment.SpecialFolder.System) + @"\expand.exe";
                var wsps    = Directory.GetFiles(literalPath, "*.wsp");
                foreach (var wsp in wsps)
                {
                    var args = "\"" + wsp + "\" -f:*.dll \"" + tempPath + "\"";
                    output.Add(Files.RunCommand(command, args));
                }

                var publish    = new Publish();
                var assemblies = directory.GetFiles("*.dll");
                foreach (var assembly in assemblies)
                {
                    try
                    {
                        output.Add(string.Format(CultureInfo.InvariantCulture, "Adding \"{0}\" to the Global Assembly Cache.", assembly.Name));
                        publish.GacInstall(assembly.FullName);
                    }
                    catch (Exception exception)
                    {
                        output.Add(exception.Message, OutputType.Error, exception.ToString(), exception);
                    }
                }

                directory.Delete(true);
            }
            catch (Exception exception)
            {
                output.Add(exception.Message, OutputType.Error, exception.ToString(), exception);
            }

            return(output);
        }
Ejemplo n.º 13
0
        internal static OutputQueue IsFarmAdministrator(out bool isFarmAdmin)
        {
            var outputQueue = new OutputQueue();

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteUserIsFarmAdmin));
            try
            {
                isFarmAdmin = LocalFarm.Get().CurrentUserIsAdministrator();
            }
            catch (Exception exception)
            {
                isFarmAdmin = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteUserIsFarmAdmin, isFarmAdmin ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));

            return(outputQueue);
        }
Ejemplo n.º 14
0
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_UpdateFeatures);

                if (this.SolutionIds == null || this.SolutionIds.Count == 0)
                {
                    throw new InvalidOperationException("SolutionIds");
                }

                var solutionsString = string.Empty;
                for (var i = 0; i < this.SolutionIds.Count; i++)
                {
                    if (i == 0)
                    {
                        solutionsString = "\"" + this.SolutionIds[i].ToString() + "\"";
                    }
                    else
                    {
                        solutionsString += ", \"" + this.SolutionIds[i].ToString() + "\"";
                    }
                }

                var parameter = string.Format(CultureInfo.InvariantCulture, "([System.Collections.ObjectModel.Collection``1[[System.Guid]]] ([GUID[]] ({0})))", solutionsString);
                var command   = string.Format(CultureInfo.InvariantCulture, "[Newsgator.Install.Common.Utilities.Features]::UpgradeFeaturesAll({0})", parameter);

                output.Add(Utilities.Runspace.RunInPowerShell(command));

                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_UpdateFeatures_Complete);
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.UpdateFeaturesException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 15
0
        internal static OutputQueue IsUserProfileServiceApplicationAvailable(out bool isAvailable)
        {
            var outputQueue = new OutputQueue();

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteUserProfileAvailable));
            try
            {
                SPIisWebServiceApplication app = null;
                outputQueue.Add(UserProfileService.GetUserProfileApplication(out app));
                isAvailable = app != null;
            }
            catch (Exception exception)
            {
                isAvailable = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteUserProfileAvailable, isAvailable ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));
            return(outputQueue);
        }
Ejemplo n.º 16
0
        internal static OutputQueue EnableJob(SPJobDefinition job)
        {
            var outputQueue = new OutputQueue();

            if (job == null)
            {
                return(outputQueue);
            }

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.EnableJob, string.IsNullOrEmpty(job.DisplayName) ? job.Name : job.DisplayName));
            try
            {
                job.IsDisabled = false;
                job.Update();
            }
            catch (SPUpdatedConcurrencyException)
            { }
            outputQueue.Add(UserDisplay.EnableJobComplete);

            return(outputQueue);
        }
Ejemplo n.º 17
0
        public static OutputQueue EnsurePowerShellExecutable()
        {
            var output = new OutputQueue();

            var psFile       = Path.Combine(ExecutionPath(), NGPSFileName);
            var psConfigFile = Path.Combine(ExecutionPath(), NGPSConfigFileName);

            if (!File.Exists(psFile))
            {
                output.Add(NewsGator.Install.Resources.UserDisplay.PowerShell_CopyExecutable);
                File.Copy(PowerShellPath(), psFile);
            }

            if (!File.Exists(psConfigFile))
            {
                output.Add(NewsGator.Install.Resources.UserDisplay.PowerShell_WritingConfigurationFile);
                File.WriteAllText(psConfigFile, ExecutableConfig(), UTF8Encoding.UTF8);
            }

            return(output);
        }
Ejemplo n.º 18
0
        internal static OutputQueue EnsureUserAccess(string accountName = null)
        {
            var outputQueue = new OutputQueue();

            if (string.IsNullOrEmpty(accountName))
            {
                accountName = WindowsIdentity.GetCurrent().Name;
            }

            var mossContext = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, new SPSiteSubscriptionIdentifier(Guid.Empty));

            using (var scope = new SPServiceContextScope(mossContext))
            {
                SPIisWebServiceApplication app = null;
                outputQueue.Add(GetUserProfileApplication(out app));
                if (app != null)
                {
                    var isAdmin = false;
                    outputQueue.Add(UserIsAdministrator(out isAdmin, accountName));
                    if (!isAdmin)
                    {
                        var aac = app.GetAdministrationAccessControl();
                        aac.AddAccessRule(new SPAclAccessRule <SPCentralAdministrationRights>(new NTAccount(accountName), SPCentralAdministrationRights.FullControl));
                        app.SetAdministrationAccessControl(aac);
                    }

                    var hasAccess = false;
                    outputQueue.Add(UserHasAccess(out hasAccess, accountName));
                    if (!hasAccess)
                    {
                        var ac = app.GetAccessControl();
                        ac.AddAccessRule(new SPAclAccessRule <SPIisWebServiceApplicationRights>(new NTAccount(accountName), SPIisWebServiceApplicationRights.FullControl));
                        app.SetAccessControl(ac);
                    }
                    app.Update();
                }
            }

            return(outputQueue);
        }
Ejemplo n.º 19
0
        private static OutputQueue ExecuteRecycleTimerJob(int timeout)
        {
            var output = new OutputQueue();

            try
            {
                var timerService = LocalFarm.Get().Services.Where(p => p is SPTimerService).First() as SPTimerService;
                var job          = timerService.JobDefinitions.Where(p => (p.Name.IndexOf(RecycleJobName, StringComparison.OrdinalIgnoreCase) > -1)).First();

                var lastRun = job.LastRunTime;
                job.RunNow();

                Func <bool> wait = () =>
                {
                    var complete = false;
                    while (!complete)
                    {
                        try
                        {
                            var waitTimerService = LocalFarm.Get().Services.Where(p => p is SPTimerService).First() as SPTimerService;
                            var waitJob          = waitTimerService.JobDefinitions.Where(p => (p.Name.IndexOf(RecycleJobName, StringComparison.OrdinalIgnoreCase) > -1)).First();

                            if (waitJob.LastRunTime > lastRun)
                            {
                                complete = true;
                            }

                            if (!complete)
                            {
                                Thread.Sleep(10000);
                            }
                        }
                        catch { }
                    }

                    return(complete);
                };

                var success = Threading.WaitFor <bool> .Run(TimeSpan.FromMilliseconds(timeout / 2), wait);

                if (!success)
                {
                    throw new System.TimeoutException();
                }
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.TimerJobException, exception.Message), OutputType.Error, exception.ToString(), exception);
            }

            return(output);
        }
Ejemplo n.º 20
0
        internal static OutputQueue UnblockFiles(string literalPath)
        {
            var outputQueue = new OutputQueue();
            var directory   = new DirectoryInfo(literalPath);

            foreach (var subDirectory in directory.GetDirectories())
            {
                outputQueue.Add(UnblockFiles(subDirectory.FullName));
            }

            foreach (var file in directory.GetFiles())
            {
                if (!file.IsBlocked())
                {
                    continue;
                }
                outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.UnblockingFile, file.FullName));
                file.Unblock();
            }

            return(outputQueue);
        }
Ejemplo n.º 21
0
        internal static OutputQueue EnableJobs(SPService service)
        {
            var outputQueue = new OutputQueue();

            if (service == null)
            {
                return(outputQueue);
            }

            foreach (var job in service.JobDefinitions)
            {
                try
                {
                    outputQueue.Add(EnableJob(job));
                }
                catch (Exception exception)
                {
                    outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, Exceptions.EnableJobsUnableToEnableError, job.DisplayName, exception.Message), OutputType.Error, null, exception);
                }
            }

            return(outputQueue);
        }
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_DisableDebugger);

                output.Add(DebuggerRegistry.DisableJustInTimeDebugger());

                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_DisableDebugger_Complete);
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.UpdateRegistryException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 23
0
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_EnableJobs);

                output.Add(Utilities.Runspace.RunInPowerShell("[Newsgator.Install.Common.Utilities.Jobs]::EnableNewsGatorJobs()"));

                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_EnableJobs_Complete);
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.EnableJobsException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 24
0
        internal static OutputQueue IsWMIAvailable(out bool isWMIAvailable)
        {
            var outputQueue = new OutputQueue();

            isWMIAvailable = true;

            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisite, UserDisplay.PrerequisiteWMIAvailable));
            try
            {
                var farm = LocalFarm.Get();
                foreach (var server in farm.Servers.Where(f => Server.ValidSPServerRole(f.Role)))
                {
                    var machineServices = ServiceController.GetServices(server.Address);
                    if (null == machineServices || machineServices.Length == 0)
                    {
                        isWMIAvailable = false;
                        outputQueue.Add("Unable to list services on server.", OutputType.Error, "Unable to list services on server: " + server.Address);
                        break;
                    }

                    // var command = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), "where.exe");
                    // https://fogbugz.corp.newsgator.com/default.asp?304837
                    // Removing specific path and providing parameter for the where command
                    var command    = "where.exe iisreset.exe";
                    var processWMI = new Threading.ProcessWMI();
                    processWMI.ExecuteRemoteProcessWMI(server.Address, command, 15000);
                }
            }
            catch (Exception exception)
            {
                isWMIAvailable = false;
                outputQueue.Add(exception.Message, OutputType.Error, null, exception);
            }
            outputQueue.Add(string.Format(System.Globalization.CultureInfo.CurrentCulture, UserDisplay.CheckingPrerequisiteComplete, UserDisplay.PrerequisiteWMIAvailable, isWMIAvailable ? UserDisplay.CheckingPrerequisitePassed : UserDisplay.CheckingPrerequisiteFailed));

            return(outputQueue);
        }
Ejemplo n.º 25
0
        internal static OutputQueue DisableServiceJobs(SPServiceApplication serviceApp)
        {
            var outputQueue = new OutputQueue();
            var app         = serviceApp as SPIisWebServiceApplication;

            if (app != null)
            {
                if (app.Service != null)
                {
                    outputQueue.Add(DisableJobs(app.Service));
                }
            }

            return(outputQueue);
        }
Ejemplo n.º 26
0
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_DisableFeatures);

                output.Add(Utilities.Receivers.RemoveEventReceivers());
                output.Add(Utilities.Features.DisableFeaturesForAllSolutionSets(false));

                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_DisableFeatures_Complete);
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.DisableFeaturesException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 27
0
        public OutputQueue Run()
        {
            var output = new OutputQueue();

            this.Status = TaskStatus.InProgress;

            try
            {
                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_MySiteWebParts);

                output.Add(Utilities.Runspace.RunInPowerShell(
                               string.Format(CultureInfo.InvariantCulture, "[Newsgator.Install.Common.Utilities.MySite]::EnableMySiteWebPartsFeature(\"{0}\")", this.MySiteUrl)));

                output.Add(NewsGator.Install.Resources.Tasks.TaskDetails_MySiteWebParts_Complete);
                this.Status = TaskStatus.CompleteSuccess;
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.MySiteWebPartsException, exception.Message), OutputType.Error, exception.ToString(), exception);
                this.Status = TaskStatus.CompleteFailed;
            }

            return(output);
        }
Ejemplo n.º 28
0
        internal static OutputQueue UserHasAccess(out bool hasAccess, string accountName = null)
        {
            var outputQueue = new OutputQueue();

            hasAccess = false;

            if (string.IsNullOrEmpty(accountName))
            {
                accountName = WindowsIdentity.GetCurrent().Name;
            }

            var mossContext = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, new SPSiteSubscriptionIdentifier(Guid.Empty));

            using (var scope = new SPServiceContextScope(mossContext))
            {
                SPIisWebServiceApplication app = null;
                outputQueue.Add(GetUserProfileApplication(out app));
                if (app != null)
                {
                    var accessControl = app.GetAccessControl();
                    if (accessControl != null)
                    {
                        var accessRules = accessControl.GetAccessRules();

                        foreach (var rule in accessRules)
                        {
                            if (rule.Name.ToUpperInvariant().EndsWith(accountName.ToUpperInvariant(), StringComparison.CurrentCultureIgnoreCase))
                            {
                                hasAccess = rule.AllowedRights == SPIisWebServiceApplicationRights.FullControl;
                                if (hasAccess)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            return(outputQueue);
        }
Ejemplo n.º 29
0
        public static OutputQueue SetLookoutAsMySiteHomePage(string mySiteWebUrl)
        {
            var output = new OutputQueue();

            try
            {
                using (var site = new SPSite(mySiteWebUrl))
                {
                    if (site != null)
                    {
                        using (var web = site.OpenWeb())
                        {
                            if (web != null)
                            {
                                if (PublishingWeb.IsPublishingWeb(web))
                                {
                                    var publishingWeb   = PublishingWeb.GetPublishingWeb(web);
                                    var lookoutPageFile = web.GetFile("Lookout.aspx");
                                    publishingWeb.DefaultPage = lookoutPageFile;
                                    publishingWeb.Update();
                                    publishingWeb.Close();
                                }
                                else
                                {
                                    var rootFolder = web.RootFolder;
                                    rootFolder.WelcomePage = "Lookout.aspx";
                                    rootFolder.Update();
                                    web.Update();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentCulture, Exceptions.ErrorSettingLookoutHomePage, exception.Message), OutputType.Error, string.Empty, exception);
            }
            return(output);
        }
Ejemplo n.º 30
0
        public static OutputQueue EnableUserProfileJob()
        {
            var output = new OutputQueue();

            try
            {
                foreach (var service in LocalFarm.Get().Services)
                {
                    foreach (var job in service.JobDefinitions.Where(p => p.Name.EndsWith(JobName, StringComparison.OrdinalIgnoreCase)))
                    {
                        job.IsDisabled = false;
                        job.Update();
                    }
                }
            }
            catch (Exception exception)
            {
                output.Add(string.Format(CultureInfo.CurrentUICulture, NewsGator.Install.Resources.Exceptions.EnableUserProfileJobException, exception.Message), OutputType.Error, exception.ToString(), exception);
            }

            return(output);
        }