Example #1
0
        private IEnumerable <NetstatActiveConnection> GetActiveConnectionsForWorker(string worker, IMongoCollection <NetstatDocument> collection)
        {
            Log.InfoFormat($"Retrieving netstat information for worker '{worker}'..");

            var netstatQuery = NetstatQueries.GetNetstatForWorker(worker);

            var netstatForWorker = collection.Find(netstatQuery).FirstOrDefault();

            if (netstatForWorker?.ActiveConnections == null)
            {
                Log.WarnFormat($"No netstat data found for worker '{worker}'");
                return(Enumerable.Empty <NetstatActiveConnection>());
            }

            return(netstatForWorker.ActiveConnections.Select(entry => new NetstatActiveConnection(entry, netstatForWorker.Worker, netstatForWorker.FileLastModified)));
        }
Example #2
0
        public override IPluginResponse Execute()
        {
            IPluginResponse pluginResponse = CreatePluginResponse();

            var collection = MongoDatabase.GetCollection <NetstatDocument>(ParserConstants.NetstatCollectionName);

            using (var persister = ExtractFactory.CreateExtract <NetstatActiveConnection>("NetstatEntries.hyper"))
                using (GetPersisterStatusWriter(persister))
                {
                    foreach (var worker in NetstatQueries.GetDistinctWorkers(collection))
                    {
                        var activeConnectionsForWorker = GetActiveConnectionsForWorker(worker, collection);
                        persister.Enqueue(activeConnectionsForWorker);
                    }

                    if (persister.ItemsPersisted <= 0)
                    {
                        Log.Warn("Failed to persist any Netstat data!");
                        pluginResponse.GeneratedNoData = true;
                    }

                    return(pluginResponse);
                }
        }