//Create a proccess to run the snapin with private static Process GenerateProcess(Snapin snapin, string snapinPath) { var process = new Process { StartInfo = { CreateNoWindow = true, UseShellExecute = false, WorkingDirectory = Path.GetDirectoryName(snapinPath) ?? "", WindowStyle = ProcessWindowStyle.Hidden } }; //Check if the snapin run with field was specified if (!snapin.RunWith.Equals("")) { process.StartInfo.FileName = Environment.ExpandEnvironmentVariables( snapin.RunWith); process.StartInfo.Arguments = Environment.ExpandEnvironmentVariables( $"{snapin.RunWithArgs.Trim()} " + $"\"{snapinPath.Trim()}\" " + $"{Environment.ExpandEnvironmentVariables(snapin.Args)}" .Trim()); } else { process.StartInfo.FileName = Environment.ExpandEnvironmentVariables(snapinPath); process.StartInfo.Arguments = Environment.ExpandEnvironmentVariables(snapin.Args); } return(process); }
public NamespacesNode(Snapin snapin, Catalogue catalogue) : base(snapin, typeof(EventStatusEditor).GUID) { // Properties DisplayName = Name; m_catalogue = catalogue; }
//Execute the snapin once it has been downloaded private string StartSnapin(Snapin snapin, string snapinPath, bool snapinPack = false) { Notification.Emit( string.Format(SnapinStrings.INSTALLING_NOTIFICATION_TITLE, snapin.Name), SnapinStrings.INSTALLING_NOTIFICATION_BODY, true); using (var process = (snapinPack) ? GenerateSnapinPackProcess(snapin, snapinPath) : GenerateProcess(snapin, snapinPath)) { try { Log.Entry(Name, "Starting snapin"); process.StartInfo.EnvironmentVariables.Add("FOG_URL", Configuration.ServerAddress); process.StartInfo.EnvironmentVariables.Add("FOG_SNAPIN_TASK_ID", snapin.JobTaskID.ToString()); process.StartInfo.EnvironmentVariables.Add("FOG_MAC_ADRESSES", Configuration.MACAddresses()); process.Start(); if (snapin.TimeOut > 0) { process.WaitForExit(snapin.TimeOut * 1000); if (!process.HasExited) { Log.Entry(Name, "Snapin has exceeded the timeout, killing the process"); process.Kill(); } } else { process.WaitForExit(); } Log.Entry(Name, "Snapin finished"); var returnCode = process.ExitCode; Log.Entry(Name, "Return Code: " + returnCode); Notification.Emit( string.Format(SnapinStrings.COMPLETE_NOTIFICATION_TITLE, snapin.Name), SnapinStrings.COMPLETE_NOTIFICATION_BODY, true); return(returnCode.ToString()); } catch (Exception ex) { Log.Error(Name, "Could not run snapin"); Log.Error(Name, ex); } } return("-1"); }
public NamespaceNode(Snapin snapin, Namespace ns) : base(snapin, typeof(EventStatusEditor).GUID) { // Properties DisplayName = ns.Name; m_namespace = ns; // Images. AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Namespace)); }
private string ProcessSnapinPack(Snapin snapin, string localPath) { var returnCode = "-1"; Log.Entry(Name, "Processing SnapinPack " + snapin.FileName); var extractionPath = Path.Combine(Settings.Location, "tmp", snapin.Name); try { Log.Entry(Name, "Extracting SnapinPack"); if (Directory.Exists(extractionPath)) { Directory.Delete(extractionPath, true); } Directory.CreateDirectory(extractionPath); var fz = new FastZip(); ZipConstants.DefaultCodePage = 850; fz.CreateEmptyDirectories = true; fz.ExtractZip(localPath, extractionPath, null); Log.Debug(Name, "Processing SnapinPack settings"); snapin.RunWith = snapin.RunWith.Replace("[FOG_SNAPIN_PATH]", extractionPath); snapin.RunWithArgs = snapin.RunWithArgs.Replace("[FOG_SNAPIN_PATH]", extractionPath); snapin.Args = ""; Log.Debug(Name, "New SnapinPack File: " + snapin.RunWith); Log.Debug(Name, "New SnapinPack Args: " + snapin.RunWithArgs); returnCode = StartSnapin(snapin, extractionPath, true); } catch (Exception ex) { Log.Error(Name, ex); } finally { try { if (Directory.Exists(extractionPath)) { Directory.Delete(extractionPath, true); } } catch (Exception ex) { Log.Error(Name, "Unable to clean up snapin pack"); Log.Error(Name, ex); } } return(returnCode); }
public SourceNode(Snapin snapin, Source source) : base(snapin, typeof(EventStatusEditor).GUID) { // Properties DisplayName = source.RelativeQualifiedReference; m_source = source; // Images. AddImage(IconManager.GetResourceName(Icons.Source)); AddImage(IconManager.GetResourceName(Icons.Source, IconMask.ReadOnly)); }
//Execute the snapin once it has been downloaded private string StartSnapin(Snapin snapin, string snapinPath, bool snapinPack = false) { Notification.Emit( string.Format(SnapinStrings.INSTALLING_NOTIFICATION_TITLE, snapin.Name), SnapinStrings.INSTALLING_NOTIFICATION_BODY, true); using (var process = (snapinPack) ? GenerateSnapinPackProcess(snapin, snapinPath) : GenerateProcess(snapin, snapinPath)) { try { Log.Entry(Name, "Starting snapin"); process.Start(); if (snapin.TimeOut > 0) { process.WaitForExit(snapin.TimeOut * 1000); if (!process.HasExited) { Log.Entry(Name, "Snapin has exceeded the timeout, killing the process"); process.Kill(); } } else { process.WaitForExit(); } Log.Entry(Name, "Snapin finished"); var returnCode = process.ExitCode; Log.Entry(Name, "Return Code: " + returnCode); Notification.Emit( string.Format(SnapinStrings.COMPLETE_NOTIFICATION_TITLE, snapin.Name), SnapinStrings.COMPLETE_NOTIFICATION_BODY, true); return(returnCode.ToString()); } catch (Exception ex) { Log.Error(Name, "Could not run snapin"); Log.Error(Name, ex); } } return("-1"); }
public EventTypesNode(Snapin snapin, Catalogue catalogue) : base(snapin) { // Properties DisplayName = Name; m_catalogue = catalogue; // Result images. AddResultImage(IconManager.GetResourceName(Icons.EventEnabled)); AddResultImage(IconManager.GetResourceName(Icons.EventEnabled, IconMask.ReadOnly)); AddResultImage(IconManager.GetResourceName(Icons.EventDisabled)); AddResultImage(IconManager.GetResourceName(Icons.EventDisabled, IconMask.ReadOnly)); }
public CatalogueNode(Snapin snapin, Catalogue catalogue) : base(snapin) { // Properties DisplayName = Name; _catalogue = catalogue; // Images. AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Catalogue)); AddResultImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Folder)); AddResultImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Folder, ConfigurationIconMask.Large)); }
private static Process GenerateSnapinPackProcess(Snapin snapin, string directory) { var process = new Process { StartInfo = { CreateNoWindow = true, UseShellExecute = false, WorkingDirectory = directory, WindowStyle = ProcessWindowStyle.Hidden } }; process.StartInfo.FileName = Environment.ExpandEnvironmentVariables(snapin.RunWith); process.StartInfo.Arguments = Environment.ExpandEnvironmentVariables(snapin.RunWithArgs).Trim(); return(process); }
public RepositoryNode(Snapin snapin, Repository repository, IMmcRepositoryExtensionCallback callback) : base(snapin) { // Properties DisplayName = repository.Name; m_repository = repository; m_callback = callback; // Images. AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Repository)); AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Repository, ConfigurationIconMask.ReadOnly)); AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Repository, ConfigurationIconMask.Disconnected)); AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Repository, ConfigurationIconMask.Disconnected | ConfigurationIconMask.ReadOnly)); AddResultImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Catalogue)); AddResultImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Catalogue, ConfigurationIconMask.Large)); }
protected void AddExportMenuItems(object[] elements, Catalogue catalogue) { ContextSubMenuItem subMenuItem = new ContextSubMenuItem("Export To"); AddTaskMenuItem(subMenuItem); // Look for RepositoryWriters in the environment. Module module = ConfigurationManager.GetCatalogue(catalogue.EnvironmentContext).Modules[Constants.Module.Name]; if (module != null) { foreach (RepositoryType repositoryType in module.RepositoryTypes) { if (Node.IsWriter(repositoryType)) { AddMenuItem(subMenuItem, new ContextMenuItem(repositoryType.RepositoryDisplayName, string.Empty, new MenuCommandHandler((new ExportRepositoryHandler(repositoryType, elements, catalogue, Snapin.GetMainWindow())).Export))); } } } }
protected ControlNode(Snapin snapin, System.Guid controlTypeID) : base(snapin, controlTypeID, false) { }
protected void AddImportMenuItems(ICatalogueElement element) { // Create the Read menu. var subMenuItem = new ContextSubMenuItem("Import From"); AddTaskMenuItem(subMenuItem); // Look for RepositoryReaders in the environment. Module module = ConfigurationManager.GetCatalogue().Modules[Constants.Module.Name]; if (module != null) { foreach (RepositoryType repositoryType in module.RepositoryTypes) { if (IsReader(repositoryType)) { var handler = new ImportRepositoryHandler(repositoryType, element.Catalogue.RepositoryLink, Snapin.GetMainWindow()); AddMenuItem(subMenuItem, new ContextMenuItem(repositoryType.RepositoryDisplayName, string.Empty, new MenuCommandHandler(handler.Import))); } } } }
protected Node(Snapin snapin) : base(snapin) { }