예제 #1
0
        public DtoBoolResponse DeleteModuleCache(string moduleGuid)
        {
            var result = new ServiceFileSystem().DeleteDirectory(moduleGuid);

            return(new DtoBoolResponse {
                Value = result
            });
        }
예제 #2
0
 public ModuleFileCopy(DtoClientFileCopyModule module)
 {
     _fileSystemService    = new ServiceFileSystem();
     _moduleResult         = new DtoModuleResult();
     _moduleResult.Name    = module.DisplayName;
     _moduleResult.Guid    = module.Guid;
     _moduleResult.Success = true;
     _module = module;
 }
        public void Root_Folder_Should_Be_Returned_Properly()
        {
            Assert.IsTrue(ClientRoot.MetaData.IsRootFolder);

            var root1 = ClientFileSystem.GetFileSystemRoot();
            var root2 = ServiceFileSystem.GetFileSystemRoot();

            root2.AssertXEqualTo(root1);
        }
예제 #4
0
 public PolicyCacher(DtoClientPolicy policy)
 {
     _policy                    = policy;
     _call                      = new APICall();
     _fileSystemService         = new ServiceFileSystem();
     _policyResult              = new DtoPolicyResult();
     _policyResult.PolicyResult = EnumPolicy.Result.Success;
     _policyResult.PolicyGuid   = policy.Guid;
     _policyResult.PolicyName   = policy.Name;
     _policyResult.PolicyHash   = policy.Hash;
 }
예제 #5
0
        protected override void InitInternal()
        {
            DownloadFolder = RootDirectory.CreateSubdirectory("Download");

            byte[] data = new byte[1024 * 1024 * 20];
            Random rnd  = new Random();

            rnd.NextBytes(data);

            SourceFile = new FileInfo(Path.Combine(DownloadFolder.FullName, "source.bin"));
            File.WriteAllBytes(SourceFile.FullName, data);
            SourceFile.Refresh();

            SourceFileInfo = ServiceFileSystem.GetFileInfo("/Download/source.bin");
            base.InitInternal();
        }
예제 #6
0
        private void CleanupCache()
        {
            Logger.Info("Cleaning Policy Cache");
            var fileSystemService = new ServiceFileSystem();

            foreach (var policyResult in _policyResults)
            {
                if (policyResult.ExecutionType == EnumPolicy.ExecutionType.Install && policyResult.DeleteCache &&
                    (policyResult.PolicyResult == EnumPolicy.Result.Success ||
                     policyResult.PolicyResult == EnumPolicy.Result.NotApplicable))
                {
                    var result = policyResult;
                    foreach (
                        var policy in _policiesToRun.Policies.Where(policy => result.PolicyGuid.Equals(policy.Guid)))
                    {
                        foreach (var module in policy.FileCopyModules)
                        {
                            if (policy.Trigger == EnumPolicy.Trigger.Login)
                            {
                                new APICall().LocalApi.DeleteModuleCache(module.Guid);
                            }
                            else
                            {
                                fileSystemService.DeleteDirectory(module.Guid);
                            }
                        }

                        foreach (var module in policy.SoftwareModules)
                        {
                            if (policy.Trigger == EnumPolicy.Trigger.Login)
                            {
                                new APICall().LocalApi.DeleteModuleCache(module.Guid);
                            }
                            else
                            {
                                fileSystemService.DeleteDirectory(module.Guid);
                            }
                        }

                        foreach (var module in policy.ScriptModules)
                        {
                            if (policy.Trigger == EnumPolicy.Trigger.Login)
                            {
                                new APICall().LocalApi.DeleteModuleCache(module.Guid);
                            }
                            else
                            {
                                fileSystemService.DeleteDirectory(module.Guid);
                            }
                        }
                        foreach (var module in policy.WuModules)
                        {
                            if (policy.Trigger == EnumPolicy.Trigger.Login)
                            {
                                new APICall().LocalApi.DeleteModuleCache(module.Guid);
                            }
                            else
                            {
                                fileSystemService.DeleteDirectory(module.Guid);
                            }
                        }
                        foreach (var module in policy.CommandModules)
                        {
                            if (policy.Trigger == EnumPolicy.Trigger.Login)
                            {
                                new APICall().LocalApi.DeleteModuleCache(module.Guid);
                            }
                            else
                            {
                                fileSystemService.DeleteDirectory(module.Guid);
                            }
                        }
                    }
                }
            }
        }
예제 #7
0
        public void Run()
        {
            Logger.Info("Running Remote Access Module: ");
            if ((_policy.RemoteAccess == EnumPolicy.RemoteAccess.Enabled && !new ServiceSystemService().IsRemotelyInstalled()) ||
                _policy.RemoteAccess == EnumPolicy.RemoteAccess.ForceReinstall)
            {
                Logger.Info("Installing Remote Access Service");
                var installArgs = new ApiCall.APICall().PolicyApi.GetRemotelyInstallArgs();
                if (string.IsNullOrEmpty(installArgs))
                {
                    Logger.Error("Could Not Get Install Args");
                    return;
                }
                if (installArgs.Contains("Error"))
                {
                    Logger.Error("Could Not Get Install Args.  " + installArgs);
                    return;
                }
                var file = string.Empty;
                if (Environment.Is64BitOperatingSystem)
                {
                    file = "Remotely-Win10-x64.zip";
                }
                else
                {
                    file = "Remotely-Win10-x86.zip";
                }

                var module = new DtoClientCommandModule();
                module.Guid           = "99999999-9999-9999-9999-999999999999";
                module.Command        = Path.Combine(DtoGobalSettings.BaseCachePath, module.Guid, "Remotely_Installer.exe");
                module.DisplayName    = "Install Remotely";
                module.Timeout        = 5;
                module.RedirectError  = true;
                module.RedirectOutput = true;
                module.SuccessCodes   = new List <string>()
                {
                    "0"
                };
                module.Arguments = $"{installArgs} -path '{Path.Combine(DtoGobalSettings.BaseCachePath, module.Guid,file)}'";
                var result = new ModuleCommandManager(module).Run();
                if (!result.Success)
                {
                    Logger.Error(result.ErrorMessage);
                }

                if (!new ServiceSystemService().DisableRemotelyServiceStartup())
                {
                    Logger.Error("Could Not Change Remotely Startup Type");
                }

                var connectionInfo = new ServiceFileSystem().ReadRemotelyConnectionFile();
                if (connectionInfo != null)
                {
                    var res = new ApiCall.APICall().PolicyApi.UpdateRemoteAccessId(connectionInfo);
                    if (res != null)
                    {
                        if (!res.Success)
                        {
                            Logger.Error("Could Not Update Client Remote Access Id");
                        }
                    }
                }
                return;
            }
            if (_policy.RemoteAccess == EnumPolicy.RemoteAccess.Enabled && new ServiceSystemService().IsRemotelyInstalled())
            {
                Logger.Debug("Remote Access Already Installed. Updating Remote Access Device Id");
                var connectionInfo = new ServiceFileSystem().ReadRemotelyConnectionFile();
                if (connectionInfo != null)
                {
                    var res = new ApiCall.APICall().PolicyApi.UpdateRemoteAccessId(connectionInfo);
                    if (res != null)
                    {
                        if (!res.Success)
                        {
                            Logger.Error("Could Not Update Client Remote Access Id");
                        }
                    }
                }
                return;
            }

            if (_policy.RemoteAccess == EnumPolicy.RemoteAccess.Disabled && new ServiceSystemService().IsRemotelyInstalled())
            {
                Logger.Info("Removing Remote Access Service");
                var module = new DtoClientCommandModule();
                module.Command        = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Remotely", "Remotely_Installer.exe");
                module.Guid           = "99999999-9999-9999-9999-999999999999";
                module.DisplayName    = "Remove Remotely";
                module.Timeout        = 5;
                module.RedirectError  = true;
                module.RedirectOutput = true;
                module.SuccessCodes   = new List <string>()
                {
                    "0"
                };
                module.WorkingDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Remotely");
                module.Arguments        = "-uninstall -quiet";

                //remove remote access id from server
                var res = new ApiCall.APICall().PolicyApi.UpdateRemoteAccessId(new RemotelyConnectionInfo()
                {
                    DeviceID = "", Host = "", OrganizationID = "", ServerVerificationToken = ""
                });
                if (res != null)
                {
                    if (!res.Success)
                    {
                        Logger.Error("Could Not Remmove Client Remote Access Id");
                    }
                }

                var result = new ModuleCommandManager(module).Run();
                if (!result.Success)
                {
                    Logger.Error(result.ErrorMessage);
                }
                return;
            }
        }