Example #1
0
        //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);
        }
Example #2
0
        public NamespacesNode(Snapin snapin, Catalogue catalogue)
            :       base(snapin, typeof(EventStatusEditor).GUID)
        {
            // Properties

            DisplayName = Name;
            m_catalogue = catalogue;
        }
Example #3
0
        //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");
        }
Example #4
0
        public NamespaceNode(Snapin snapin, Namespace ns)
            :       base(snapin, typeof(EventStatusEditor).GUID)
        {
            // Properties

            DisplayName = ns.Name;
            m_namespace = ns;

            // Images.

            AddImage(ConfigurationIconManager.GetResourceName(ConfigurationIcons.Namespace));
        }
Example #5
0
        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);
        }
Example #6
0
        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));
        }
Example #7
0
        //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");
        }
Example #8
0
        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));
        }
Example #9
0
        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));
        }
Example #10
0
        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);
        }
Example #11
0
        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));
        }
Example #12
0
        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)));
                    }
                }
            }
        }
Example #13
0
 protected ControlNode(Snapin snapin, System.Guid controlTypeID)
     :       base(snapin, controlTypeID, false)
 {
 }
Example #14
0
        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)));
                    }
                }
            }
        }
Example #15
0
 protected Node(Snapin snapin)
     :       base(snapin)
 {
 }