private bool RunAutomaticScan(Options opts, ManifestInformation manifestInformation)
        {
            Console.WriteLine("Getting release information...");

            var releases = _releaseManager.GetReleases();

            if (!releases.Any())
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("No release information available");

                return(false);
            }

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Authenticating...");

            var cookie = new CookieManager().GetMarketplaceCookie(opts.Username, opts.Password);

            foreach (var release in releases)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"Downloading {release.ProductName} version {release.Version} (rev. {release.Revision})");

                DownloadRelease(release, cookie, manifestInformation, opts.TempDir);
            }

            return(true);
        }
 internal void SetReferance(ManifestInformation vm)
 {
     this.Information = vm;
     if (vm.GetType().Name == "SeaReferanceVM")
     {
     }
 }
        private uint FindUnusedEventId(Guid providerId, CLogLineMatch sourceLine)
        {
            ManifestInformation manifest   = FindProviderCache(providerId);
            List <uint>         usedEvents = new List <uint>();

            foreach (var e in manifest.events.ChildNodes)
            {
                if (!(e is XmlElement))
                {
                    continue;
                }

                XmlElement ee = (XmlElement)e;

                if (!ee.HasAttribute("value"))
                {
                    continue;
                }

                uint value = Convert.ToUInt32(ee.GetAttribute("value"));
                usedEvents.Add(value);
            }

            for (uint i = 1; i < 16 * 1024 - 1; ++i)
            {
                if (!usedEvents.Contains(i))
                {
                    return(i);
                }
            }

            throw new CLogEnterReadOnlyModeException("OutOfUniqueIds", CLogHandledException.ExceptionType.ETWOutOfUniqueIDs, sourceLine);
        }
        public void Run(Options opts)
        {
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine($"Trying to load the manifest file '{opts.Manifest}' or create a new one if it does not exist");

            var manifestInformation = ManifestInformation.LoadFromFileOrCreateNew(opts.Manifest);

            bool result;

            if (!string.IsNullOrWhiteSpace(opts.Version) && !string.IsNullOrWhiteSpace(opts.Directory))
            {
                Console.WriteLine($"Performing manual scan using version {opts.Version} and scan directory '{opts.Directory}' ...");

                RunManualScan(opts, manifestInformation);
                result = true;
            }
            else
            {
                Console.WriteLine("Performing automatic scan ...");

                result = RunAutomaticScan(opts, manifestInformation);
            }

            if (result)
            {
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine($"Saving the manifest file at '{opts.Manifest}'");

                // Order by version before saving
                manifestInformation.Manifests = manifestInformation.Manifests.OrderBy(x => x.Version).ToList();

                File.WriteAllText(opts.Manifest, JsonConvert.SerializeObject(manifestInformation));
            }
        }
        private void Init()
        {
            if (_inited)
            {
                return;
            }

            if (!File.Exists(xmlFileName))
            {
                Console.WriteLine($"ETW Manifest {xmlFileName} doesnt exist");
                throw new CLogEnterReadOnlyModeException("Output Manifest Missing", CLogHandledException.ExceptionType.ETWManifestNotFound, null);
            }

            doc.PreserveWhitespace = true;
            doc.Load(xmlFileName);

            XmlElement assembly = doc["assembly"];

            if (null == assembly)
            {
                assembly = doc["instrumentationManifest"];
            }

            var instrumentation = assembly["instrumentation"];
            var rootEvents      = instrumentation["events"];

            foreach (var p in rootEvents.ChildNodes)
            {
                if (!(p is XmlElement))
                {
                    continue;
                }

                XmlElement pe = (XmlElement)p;

                if (pe.Name == "provider")
                {
                    if (!pe.HasAttribute("guid"))
                    {
                        continue;
                    }

                    string attr = pe.GetAttribute("guid");
                    Guid   id   = new Guid(attr);

                    if (!_providerCache.ContainsKey(id))
                    {
                        _providerCache[id] = new ManifestInformation(doc, pe);
                    }
                }
            }

            _inited = true;
        }
示例#6
0
 public IHttpActionResult UpdateInformation(ManifestInformation obj)
 {
     try
     {
         var result = context.InsertInformation(obj);
         return(Ok(result));
     }
     catch (Exception ex)
     {
         return(Content(HttpStatusCode.BadGateway, ex.Message));
     }
 }
示例#7
0
        internal async Task <bool> UpdateInformation(ManifestInformation information)
        {
            var result = await client.PostAsync <ManifestInformation>("UpdateInformation", information);

            if (result != default(ManifestInformation))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#8
0
        public async Task <string> Get()
        {
            ManifestInformation request = new ManifestInformation();
            //test.ManifestData=StateHelpers.ManifestPayload
            dynamic manifest    = JsonConvert.DeserializeObject <ExpandoObject>(StateHelpers.ManifestPayload);
            dynamic workline    = JsonConvert.DeserializeObject <ExpandoObject>(StateHelpers.ManifestPayload);
            dynamic transporter = JsonConvert.DeserializeObject <ExpandoObject>(StateHelpers.transporter);
            dynamic attachment  = JsonConvert.DeserializeObject <ExpandoObject>(StateHelpers.attachment);
            dynamic wasteCodes  = JsonConvert.DeserializeObject <List <ExpandoObject> >(StateHelpers.wasteCode);

            //string tessss = test?.ManifestData;
            request.ManifestData = manifest.records;
            request.WorkLine     = workline.records;
            request.Transporter  = transporter.records;
            request.Attachment   = attachment.records;
            request.WasteCodes   = wasteCodes;

            var result  = PrepareManifestRequest(request);
            var content = JsonConvert.SerializeObject(result);

            #region unwantedCode
            //var result=await GetWasteCodes();
            //var token =await  GetToken();
            //await ProcessRequest(token, @"D:\Freelance");

            //RequestPayload requestContent = new RequestPayload();
            //requestContent.UserName = "******";
            //requestContent.Password = "******";
            //GetToken(requestContent);
            //var request = new HttpRequestMessage(HttpMethod.Post,
            //"https://ceiusea2-nonprod-core-api.azurewebsites.net/api/Authentication/login");
            //request.Headers.Add("Accept", "application/json");
            //request.b
            ////request.Headers.Add("User-Agent", "HttpClientFactory-Sample");

            //var client = _clientFactory.CreateClient();

            //var response = await client.SendAsync(request);
            //var rng = new Random();
            //return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            //{
            //    Date = DateTime.Now.AddDays(index),
            //    TemperatureC = rng.Next(-20, 55),
            //    Summary = Summaries[rng.Next(Summaries.Length)]
            //})
            //.ToArray();
            #endregion
            return("Completed");
        }
        private void ScanAssembliesAndUpdateManifest(ManifestInformation manifestInformation, string tempDir, string sitecoreVersionIdentifier, string version)
        {
            var scannedAssemblies = ScanAssemblies(tempDir, sitecoreVersionIdentifier);

            var manifest = manifestInformation.Manifests.FirstOrDefault(x => x.Version == version);

            if (manifest == null)
            {
                manifest = new Manifest(version);
                manifestInformation.Manifests.Add(manifest);
            }
            else
            {
                manifest.Assemblies = new List <Assembly>();
            }

            manifest.Assemblies.AddRange(scannedAssemblies);
        }
        private void DownloadRelease(IRelease release, string cookie, ManifestInformation manifestInformation, string tempDir)
        {
            var downloadManager = new DownloadManager();
            var progress        = new ProgressBar();

            downloadManager.OnProgressChanged += (block, l, totalPercentage) =>
            {
                Console.ForegroundColor = ConsoleColor.Green;
                progress.Report((double)totalPercentage / 100);
            };

            downloadManager.OnDownloadCompleted += result =>
            {
                if (progress != null)
                {
                    progress.Dispose();
                    progress = null;
                }

                if (!File.Exists(result.File))
                {
                    throw new IOException($"File '{result.File}' does not exist");
                }

                var tempFile = $"{Path.GetFileNameWithoutExtension(result.File)} (copy).zip";
                if (File.Exists(tempFile))
                {
                    File.Delete(tempFile);
                }

                File.Copy(result.File, tempFile);

                var sitecoreVersionIdentifier = Path.GetFileNameWithoutExtension(result.File);

                if (ExtractAssemblies(tempDir, tempFile, sitecoreVersionIdentifier))
                {
                    ScanAssembliesAndUpdateManifest(manifestInformation, tempDir, sitecoreVersionIdentifier, result.ReleaseVersion);
                }

                File.Delete(tempFile);
            };

            downloadManager.Download(release, cookie, tempDir);
        }
示例#11
0
        public bool UpdateInformation(ManifestInformation obj)
        {
            using (var db = new OcphDbContext())
            {
                if (obj.Id == 0)
                {
                    var info = db.ManifestInformations.Where(O => O.ManifestId == obj.ManifestId).FirstOrDefault();
                    if (info == null)
                    {
                        return(db.ManifestInformations.Insert(obj));
                    }
                    else
                    {
                        obj.Id = info.Id;
                    }
                }

                var res = db.ManifestInformations.Update(O => new { O.Address, O.ArmadaName, O.Contact, O.CrewName, O.PortType, O.ReferenceNumber },
                                                         obj, O => O.Id == obj.Id);
                return(res);
            }
        }
        private void RunManualScan(Options opts, ManifestInformation manifestInformation)
        {
            Console.WriteLine($"Getting release information for {opts.Version}...");

            string sitecoreVersionIdentifier;

            var release = _releaseManager.GetRelease(opts.Version);

            if (release == null || release.DefaultDistribution == null)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("No release information available, using manual scan options");

                sitecoreVersionIdentifier = new DirectoryInfo(opts.Directory).Name;
            }
            else
            {
                sitecoreVersionIdentifier = Path.GetFileNameWithoutExtension(release.DefaultDistribution.FileNames.First(x => x.EndsWith("zip")));
            }

            ScanAssembliesAndUpdateManifest(manifestInformation, opts.TempDir, sitecoreVersionIdentifier, opts.Version);
        }
示例#13
0
 public ManifestInformation InsertInformation(ManifestInformation obj)
 {
     using (var db = new OcphDbContext())
     {
         try
         {
             if (obj.Id <= 0)
             {
                 obj.Id = db.ManifestInformations.InsertAndGetLastID(obj);
                 if (obj.Id > 0)
                 {
                     return(obj);
                 }
                 else
                 {
                     throw new SystemException(MessageCollection.Message(MessageType.SaveFail));
                 }
             }
             else
             {
                 if (db.ManifestInformations.Update(O => new { O.Address, O.ArmadaName, O.Contact, O.CrewName, O.ReferenceNumber },
                                                    obj, O => O.Id == obj.Id))
                 {
                     return(obj);
                 }
                 else
                 {
                     throw new SystemException(MessageCollection.Message(MessageType.UpdateFaild));
                 }
             }
         }
         catch (Exception ex)
         {
             throw new SystemException(ex.Message);
         }
     }
 }
        public void TraceLineDiscovered(string sourceFile, CLogDecodedTraceLine decodedTraceLine, CLogSidecar sidecar, StringBuilder macroPrefix, StringBuilder inline, StringBuilder function)
        {
            string hash = decodedTraceLine.UniqueId;
            CLogExportModuleDefination moduleSettings = decodedTraceLine.GetMacroConfigurationProfile().FindExportModule(_ModuleName);

            if (!_inited)
            {
                if (!moduleSettings.CustomSettings.ContainsKey("ETWManifestFile"))
                {
                    throw new CLogEnterReadOnlyModeException("ETWManifestFileNotSpecified", CLogHandledException.ExceptionType.MustSpecifiyETWManifest, decodedTraceLine.match);
                }

                xmlFileName = moduleSettings.CustomSettings["ETWManifestFile"];
                xmlFileName = Path.Combine(Path.GetDirectoryName(decodedTraceLine.macro.ConfigFileWithMacroDefination), xmlFileName);

                Init();
            }

            if (!moduleSettings.CustomSettings.ContainsKey("ETW_Provider"))
            {
                Console.WriteLine($"The 'CustomSettings' dictionary for macro {decodedTraceLine.macro.MacroName} does not contain a GUID for the EtwProvider");
                Console.WriteLine("    Please add an entry and rerun");
                Console.WriteLine("");
                Console.WriteLine($"Configuration File  : {decodedTraceLine.configFile.FilePath}");
                Console.WriteLine("");
                Console.WriteLine("");
                Console.WriteLine("");
                throw new CLogEnterReadOnlyModeException("ETW_Provider:NotSpecified", CLogHandledException.ExceptionType.MustSpecifyETWProvider, decodedTraceLine.match);
            }

            Guid providerId = new Guid(moduleSettings.CustomSettings["ETW_Provider"]);

            ManifestInformation manifest = FindProviderCache(providerId);
            string eventNamePrefix;

            if (!moduleSettings.CustomSettings.TryGetValue("EventNamePrefix", out eventNamePrefix))
            {
                eventNamePrefix = string.Empty;
            }

            if (null == manifest)
            {
                Console.WriteLine($"Unable to locate ETW provider {providerId} in CLOG macro {decodedTraceLine.macro.MacroName}");
                Console.WriteLine("    CLOG will not create this provider within the manifest;  it will only add to an existing provider");
                Console.WriteLine("    please consult the MSDN documentation for an ETW manifest for instructions");
                Console.WriteLine("");

                Console.WriteLine($"Macro:  {providerId} is defined in {decodedTraceLine.configFile.FilePath}");
                Console.WriteLine($"ETW Manifest : is set as {xmlFileName}");
                Console.WriteLine("");
                Console.WriteLine("");
                Console.WriteLine("");
                throw new CLogEnterReadOnlyModeException("ManifestedETWProviderNotFoundInManifest", CLogHandledException.ExceptionType.ManifestedETWProviderNotFound, decodedTraceLine.match);
            }

            //
            // Only allow a hash one time for now....
            //
            if (manifest.knownHashes.Contains(hash))
            {
                return;
            }

            manifest.knownHashes.Add(hash);

            //
            //  See if our event already exists - if it does we do not want to add it a second time
            //
            List <XmlElement> toRemove = new List <XmlElement>();
            XmlElement        newEvent = null;

            foreach (var p in manifest.events.ChildNodes)
            {
                if (!(p is XmlElement))
                {
                    continue;
                }

                XmlElement pe = (XmlElement)p;

                if (pe.Name == "event")
                {
                    if (!pe.HasAttribute("symbol"))
                    {
                        continue;
                    }

                    string symbol = pe.GetAttribute("symbol");

                    if (0 == symbol.CompareTo(eventNamePrefix + hash))
                    {
                        toRemove.Add(pe);
                        newEvent = pe;
                        break;
                    }
                }
            }

            //
            //  Add the event if it doesnt already exist
            //
            if (null == newEvent)
            {
                newEvent = doc.CreateElement("event", manifest.events.NamespaceURI);
                manifest.events.AppendChild(newEvent);
                _dirty = true;
                CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"Adding event {eventNamePrefix + hash} to ETW manifest {xmlFileName}");
            }

            int    hashUInt;
            string eventAsString;

            decodedTraceLine.macro.DecodeUniqueId(decodedTraceLine.match, hash, out eventAsString, out hashUInt);

            uint eventId;

            if (!newEvent.HasAttribute("value"))
            {
                eventId = FindUnusedEventId(providerId, decodedTraceLine.match);
                SetAttribute(newEvent, "value", eventId.ToString());
            }
            else
            {
                eventId = Convert.ToUInt32(newEvent.GetAttribute("value"));
            }

            //
            // Store the eventID for future decode as well as every configuration setting attached to this module
            //
            decodedTraceLine.AddConfigFileProperty(ModuleName, "EventID", eventId.ToString());
            foreach (var setting in moduleSettings.CustomSettings)
            {
                decodedTraceLine.AddConfigFileProperty(ModuleName, setting.Key, setting.Value);
            }


            SetAttribute(newEvent, "symbol", eventNamePrefix + hash);

            string oldTemplate = null;

            if (newEvent.HasAttribute("template"))
            {
                oldTemplate = newEvent.GetAttribute("template");
            }
            string templateId = DiscoverOrCreateTemplate(decodedTraceLine, sidecar, providerId, oldTemplate, eventId);

            SetAttribute(newEvent, "template", templateId);

            if (moduleSettings.CustomSettings.ContainsKey("Level"))
            {
                SetAttribute(newEvent, "level", moduleSettings.CustomSettings["Level"]);
            }
            else
            {
                CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Wrn, $"Manifested ETW Level not specified;  if you desire a Level, add 'Level' to CustomSettings in {decodedTraceLine.configFile.FilePath}");
            }

            if (moduleSettings.CustomSettings.ContainsKey("Keywords"))
            {
                SetAttribute(newEvent, "keywords", moduleSettings.CustomSettings["Keywords"]);
            }
            else
            {
                CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Wrn, $"Manifested ETW Keywords not specified;  if you desire a Keyword, add 'Keywords' to CustomSettings in {decodedTraceLine.configFile.FilePath}");
            }


            //
            // Construct the function signature
            //
            string traceLine        = $"EventWrite{eventNamePrefix + hash}(";
            bool   haveMultipleArgs = false;

            foreach (var a in decodedTraceLine.splitArgs)
            {
                CLogFileProcessor.CLogVariableBundle arg  = a;
                CLogEncodingCLogTypeSearch           node = decodedTraceLine.configFile.FindType(arg, decodedTraceLine);

                switch (node.EncodingType)
                {
                case CLogEncodingType.Synthesized:
                    continue;

                case CLogEncodingType.Skip:
                    continue;
                }

                if (haveMultipleArgs)
                {
                    traceLine += ", ";
                }

                haveMultipleArgs = true;

                switch (node.EncodingType)
                {
                case CLogEncodingType.ByteArray:
                    traceLine += $"{arg.MacroVariableName}_len, {arg.MacroVariableName}";
                    continue;

                default:
                    traceLine += $"{arg.MacroVariableName}";
                    break;
                }
            }

            traceLine += "); \\";
            inline.AppendLine(traceLine);
            Save(decodedTraceLine.match);
        }
        private string DiscoverOrCreateTemplate(CLogDecodedTraceLine traceLine, CLogSidecar sidecar, Guid providerId, string existingTemplateName, uint eventId)
        {
            string hash = "";

            //
            // Construct a list of the desired types - we'll use this to see if we can find a preexisting suitable template
            //
            List <TemplateNode> listofArgsAsSpecifiedBySourceFile = ConstructTemplateArgs(traceLine);
            string templateId = existingTemplateName;

            if (string.IsNullOrEmpty(existingTemplateName))
            {
                templateId = "template_" + hash;

                foreach (TemplateNode arg in listofArgsAsSpecifiedBySourceFile)
                {
                    templateId += arg.Hash;
                }
            }

            //
            // See if the template already exists;  for example from a different file
            //
            ManifestInformation manifest = FindProviderCache(providerId);
            XmlElement          template = null;

            foreach (var p in manifest.templates.ChildNodes)
            {
                if (!(p is XmlElement))
                {
                    continue;
                }

                XmlElement pe = (XmlElement)p;

                if (pe.Name == "template")
                {
                    if (!pe.HasAttribute("tid"))
                    {
                        continue;
                    }

                    string tid = pe.GetAttribute("tid");

                    if (0 == tid.CompareTo(templateId))
                    {
                        template = pe;
                        break;
                    }
                }
            }

            //
            // If we dont have an existing template, add one
            //
            if (null == template)
            {
                template = doc.CreateElement("template", manifest.events.NamespaceURI);

                foreach (var arg in listofArgsAsSpecifiedBySourceFile)
                {
                    var dataNode = doc.CreateElement("data", manifest.events.NamespaceURI);
                    dataNode.SetAttribute("name", arg.Name);

                    if (!string.IsNullOrEmpty(arg.LengthOfSelf))
                    {
                        dataNode.SetAttribute("length", arg.LengthOfSelf);
                    }
                    dataNode.SetAttribute("inType", arg.Type);

                    template.AppendChild(dataNode);
                }

                // Only apply a template ID if it's not empty - otherwise choose the default
                if (!templateId.Equals("templateId_"))
                {
                    template.SetAttribute("tid", templateId);
                }

                manifest.templates.AppendChild(template);
            }

            //
            //
            int argIdx = 0;
            Dictionary <string, string> argLookup = sidecar.GetTracelineMetadata(traceLine, ModuleName);

            if (null == argLookup)
            {
                argLookup = new Dictionary <string, string>();
            }


            foreach (var a in template.ChildNodes)
            {
                if (!(a is XmlElement))
                {
                    continue;
                }

                XmlElement pe = (XmlElement)a;

                if (pe.Name != "data")
                {
                    continue;
                }

                string inType = pe.GetAttribute("inType");
                string name   = pe.GetAttribute("name");

                if (listofArgsAsSpecifiedBySourceFile.Count <= argIdx)
                {
                    if (traceLine.configFile.DeveloperMode)
                    {
                        CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "Template Argument Type Mismatch - overwriting due to developer mode");
                        _dirty = true;
                        return(DiscoverOrCreateTemplate(traceLine, sidecar, providerId, null, eventId));
                    }

                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "Template Argument Type Mismatch - manifested ETW template and CLOG string differ");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"         Event ID : {eventId}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"   Event Provider : {providerId}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"        Event UID : {traceLine.UniqueId}");

                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, "Recommended Course of action:");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"  1. (best) from within the manifest, delete the template ({templateId}) from your event ({eventId})");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"  2. cleanup your template to be in this format");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"  3. set the environment variable CLOG_DEVELOPMENT_MODE=1  ($env:CLOG_DEVELOPMENT_MODE=1)");

                    throw new CLogEnterReadOnlyModeException("ETWManifestTypeMismatch", CLogHandledException.ExceptionType.ETWTypeMismatch, traceLine.match);
                }

                TemplateNode templateReference = listofArgsAsSpecifiedBySourceFile[argIdx];

                argLookup[templateReference.ArgBundle.MacroVariableName] = name;

                if (templateReference.Type != inType)
                {
                    if (traceLine.configFile.DeveloperMode)
                    {
                        CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "Template Argument Type Mismatch - overwriting due to developer mode");
                        _dirty = true;
                        return(DiscoverOrCreateTemplate(traceLine, sidecar, providerId, null, eventId));
                    }

                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "Template Argument Type Mismatch: ");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"               Event ID : {eventId}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"         Event Provider : {providerId}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"              Event UID : {traceLine.UniqueId}");

                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"      Mismatch Arg Name : {name}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"    CLOG specified Type : {templateReference.Type}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"      ETW Manifest Type : {inType}");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "Source Line:");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, CLogConsoleTrace.GetFileLine(traceLine.match));
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, traceLine.match.MatchedRegEx.ToString());

                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "");

                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, "Recommended Course of action:");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"  1. (best) from within the manifest, delete the template ({templateId}) from your event ({eventId})");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"  2. cleanup your template to be in this format");
                    CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"  3. set the environment variable CLOG_DEVELOPMENT_MODE=1  ($env:CLOG_DEVELOPMENT_MODE=1)");

                    foreach (var t in listofArgsAsSpecifiedBySourceFile)
                    {
                        if (string.IsNullOrEmpty(t.LengthOfSelf))
                        {
                            CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"          name={t.Name} inType={t.Type}");
                        }
                        else
                        {
                            CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Tip, $"          name={t.Name} inType={t.Type}  length={t.LengthOfSelf}");
                        }
                    }

                    throw new CLogEnterReadOnlyModeException("ETWManifestTypeMismatch", CLogHandledException.ExceptionType.ETWTypeMismatch, traceLine.match);
                }
                ++argIdx;
            }


            //
            // Store our metadata into the side car
            //
            sidecar.SetTracelineMetadata(traceLine, ModuleName, argLookup);
            return(templateId);
        }
示例#16
0
        public MaifestRequest PrepareManifestRequest(ManifestInformation manifestInfo)
        {
            MaifestRequest request = new MaifestRequest();

            if (manifestInfo != null)
            {
                dynamic manifest_Data = manifestInfo.ManifestData[0];
                dynamic transporters  = manifestInfo.Transporter;
                dynamic worklines     = manifestInfo.WorkLine;
                dynamic worklineInstructionhandling = manifestInfo.WorkLineInstructionHandling;
                dynamic attachment     = manifestInfo.Attachment;
                Address mailingAddress = null;
                Address siteAddress    = null;
                //dynamic state = null;
                //ManagementMethod idNumber = null;

                try
                {
                    if (manifest_Data != null)
                    {
                        request.ManifestTrackingNumber = manifest_Data.Name;
                        request.Status         = "ReadyForSignature";
                        request.SubmissionType = "DataImage5Copy";
                        request.Rejection      = false;
                        request.Residue        = false;
                        request.Import         = false;
                        request.ContainsPreviousRejectOrResidue = false;

                        #region Generator object
                        var generator = new DesignatedFacility();

                        generator.EpaSiteId  = manifest_Data.Generator_Old__r?.EPA_ID__c;
                        generator.Name       = manifest_Data.Generator_Old__r?.Name;
                        generator.Modified   = true;
                        generator.Registered = true;

                        #region Mailing Address
                        mailingAddress            = new Address();
                        mailingAddress.Address1   = manifest_Data.Generator_Old__r?.Manifest_Address__c;
                        mailingAddress.City       = manifest_Data.Generator_Old__r?.ManifestCity__c;
                        mailingAddress.Zip        = manifest_Data.Generator_Old__r?.Manifest_Postal_Code__c;
                        mailingAddress.State      = new State();
                        mailingAddress.State.Code = manifest_Data.Generator_Old__r?.Manifest_State_Province_Code__c != null?
                                                    StateHelpers.GetStateCode(manifest_Data.Generator_Old__r?.Manifest_State_Province_Code__c) : null;

                        mailingAddress.State.Name = mailingAddress.State.Code;

                        generator.MailingAddress = mailingAddress;

                        #endregion

                        #region siteAddress

                        siteAddress          = new Address();
                        siteAddress.Address1 = manifest_Data.Generator_Old__r?.ShippingAddress?.street.Length < 50 ?
                                               manifest_Data.Generator_Old__r?.ShippingAddress?.street : manifest_Data.Generator_Old__r?.ShippingAddress?.street.Substring(0, 49);
                        siteAddress.City       = manifest_Data.Generator_Old__r?.ShippingAddress?.city;
                        siteAddress.Zip        = manifest_Data.Generator_Old__r?.ShippingAddress?.postalCode;
                        siteAddress.State      = new State();
                        siteAddress.State.Code = manifest_Data.Generator_Old__r?.ShippingAddress?.state;
                        siteAddress.State.Name = manifest_Data.Generator_Old__r?.ShippingAddress?.state;

                        generator.SiteAddress = siteAddress;

                        #endregion

                        #region PaperSignature
                        generator.PaperSignatureInfo               = new PaperSignatureInfo();
                        generator.PaperSignatureInfo.PrintedName   = manifest_Data.Generator_Signer__c;
                        generator.PaperSignatureInfo.SignatureDate = manifest_Data.Pick_Up_Date__c;

                        #endregion
                        generator.Contact              = new Contact();
                        generator.Contact.Phone        = new Phone();
                        generator.Contact.Phone.Number = ""; // to do


                        generator.EmergencyPhone        = new Phone();
                        generator.EmergencyPhone.Number = "";// to do


                        request.Generator = generator;

                        #endregion


                        #region Transporter object
                        request.Transporters = null;
                        if (transporters != null)
                        {
                            request.Transporters = new List <DesignatedFacility>();
                            int index = 0;
                            foreach (var transporter in transporters)
                            {
                                var transport = new DesignatedFacility();

                                transport.EpaSiteId  = transporter.EPA_ID__c;
                                transport.Name       = transporter.Transporter__r?.Name;
                                transport.Registered = true;
                                transport.Order      = index.ToString();

                                #region Mailing Address
                                mailingAddress            = new Address();
                                mailingAddress.Address1   = transporter.Transporter__r?.Address__c;
                                mailingAddress.City       = transporter.Transporter__r?.City__c;
                                mailingAddress.Zip        = transporter.Transporter__r?.Postal_Code__c;
                                mailingAddress.State      = new State();
                                mailingAddress.State.Code = transporter.Transporter__r?.State_Code__c;
                                mailingAddress.State.Name = transporter.Transporter__r?.State_Code__c;

                                transport.MailingAddress = mailingAddress;

                                #endregion

                                #region SiteAddress

                                siteAddress            = new Address();
                                siteAddress.Address1   = transporter.Transporter__r?.Address__c;
                                siteAddress.City       = transporter.Transporter__r?.City__c;
                                siteAddress.Zip        = transporter.Transporter__r?.Postal_Code__c;
                                siteAddress.State      = new State();
                                siteAddress.State.Code = transporter.Transporter__r?.State_Code__c;
                                siteAddress.State.Name = transporter.Transporter__r?.State_Code__c;

                                transport.SiteAddress = mailingAddress;
                                #endregion

                                #region PaperSignature
                                transport.PaperSignatureInfo = new PaperSignatureInfo();
                                transport.PaperSignatureInfo.SignatureDate = manifest_Data?.Pick_Up_Date__c;

                                if (index == 0)
                                {
                                    transport.PaperSignatureInfo.PrintedName = transporter.Manifest__r?.Transporter_1_Signer__c;
                                }
                                else if (index == 1)
                                {
                                    transport.PaperSignatureInfo.PrintedName = transporter.Manifest__r?.Transporter_2_Signer__c;
                                }
                                else
                                {
                                    transport.PaperSignatureInfo.PrintedName = transporter.Manifest__r?.Transporter_3_Signer__c;
                                }

                                #endregion

                                transport.Contact              = new Contact();
                                transport.Contact.Phone        = new Phone();
                                transport.Contact.Phone.Number = ""; // to do

                                request.Transporters.Add(transport);
                                index = index + 1;
                            }
                        }
                        #endregion



                        #region designatedFacility Object
                        var designatedFacility = new DesignatedFacility();

                        designatedFacility.EpaSiteId  = manifest_Data.Manifest_Destination__r?.EPA_ID__c;
                        designatedFacility.Name       = manifest_Data.Manifest_Destination__r?.Facility_Name__c;
                        designatedFacility.Registered = true;


                        #region Mailing Address
                        mailingAddress            = new Address();
                        mailingAddress.Address1   = manifest_Data.Manifest_Destination__r?.Address__c;
                        mailingAddress.City       = manifest_Data.Manifest_Destination__r?.City__c;
                        mailingAddress.Zip        = manifest_Data.Manifest_Destination__r?.ZipCode__c;
                        mailingAddress.State      = new State();
                        mailingAddress.State.Code = manifest_Data.Manifest_Destination__r?.State__c;
                        mailingAddress.State.Name = manifest_Data.Manifest_Destination__r?.State__c;

                        designatedFacility.MailingAddress = mailingAddress;

                        #endregion
                        #region siteAddress

                        siteAddress            = new Address();
                        siteAddress.Address1   = manifest_Data.Manifest_Destination__r?.Address__c;
                        siteAddress.City       = manifest_Data.Manifest_Destination__r?.City__c;
                        siteAddress.Zip        = manifest_Data.Manifest_Destination__r?.ZipCode__c;
                        siteAddress.State      = new State();
                        siteAddress.State.Code = manifest_Data.Manifest_Destination__r?.State__c;
                        siteAddress.State.Name = manifest_Data.Manifest_Destination__r?.State__c;

                        designatedFacility.SiteAddress = siteAddress;

                        #endregion
                        #region PaperSignature
                        designatedFacility.PaperSignatureInfo               = new PaperSignatureInfo();
                        designatedFacility.PaperSignatureInfo.PrintedName   = manifest_Data.TSDF_Signer__c;
                        designatedFacility.PaperSignatureInfo.SignatureDate = manifest_Data.TSDF_Received_Date__c != null?
                                                                              DateTime.Parse(manifest_Data.TSDF_Received_Date__c + "T00:00:00.000Z") : manifest_Data.TSDF_Received_Date__c;

                        #endregion

                        designatedFacility.Contact              = new Contact();
                        designatedFacility.Contact.Phone        = new Phone();
                        designatedFacility.Contact.Phone.Number = ""; // to do

                        request.DesignatedFacility = designatedFacility;
                        #endregion



                        #region Waste object
                        request.Wastes = new List <Waste>();
                        foreach (var _workline in worklines)
                        {
                            var waste = new Waste();

                            waste.DotHazardous = _workline.SVMXC__Service_Order_Line__c?.DOTID__c != null ? true : false;
                            waste.LineNumber   = _workline.SVMXC__Service_Order_Line__c?.Manifest_Line__c;
                            waste.EpaWaste     = _workline.SVMXC__Service_Order_Line__c?.Profile__r?.US_EPA_Haz_Waste__c == "Yes" ? true : false;
                            waste.Br           = false;
                            waste.Pcb          = false;

                            if (waste.DotHazardous == true)
                            {
                                waste.DotInformation                       = new DotInformation();
                                waste.DotInformation.IdNumber              = new ManagementMethod();
                                waste.DotInformation.IdNumber.Code         = _workline.SVMXC__Service_Order_Line__c?.DOTID__c;
                                waste.DotInformation.PrintedDotInformation = _workline.SVMXC__Service_Order_Line__c?.U_S_DOT_Description_9b__c != null ?
                                                                             _workline.SVMXC__Service_Order_Line__c?.U_S_DOT_Description_9b__c : _workline.SVMXC__Service_Order_Line__c?.US_DOT_Description_Override__c;
                            }
                            if (waste.DotHazardous == false)
                            {
                                waste.WasteDescription = _workline.SVMXC__Service_Order_Line__c?.U_S_DOT_Description_9b__c != null ?
                                                         _workline.SVMXC__Service_Order_Line__c?.U_S_DOT_Description_9b__c : _workline.SVMXC__Service_Order_Line__c?.US_DOT_Description_Override__c;
                            }

                            waste.Quantity = new Quantity();
                            waste.Quantity.ContainerNumber        = _workline.SVMXC__Service_Order_Line__c?.Container_Qty__c;
                            waste.Quantity.ContainerType          = new ManagementMethod();
                            waste.Quantity.ContainerType.Code     = _workline.SVMXC__Service_Order_Line__c?.Container_UOM__c;
                            waste.Quantity.QuantityQuantity       = _workline.SVMXC__Service_Order_Line__c?.Total_Quantity_11_Manifest__c;
                            waste.Quantity.UnitOfMeasurement      = new ManagementMethod();
                            waste.Quantity.UnitOfMeasurement.Code = _workline.SVMXC__Service_Order_Line__c?.Unit_of_Measure_12__c;


                            waste.ManagementMethod      = new ManagementMethod();
                            waste.ManagementMethod.Code = _workline.SVMXC__Service_Order_Line__c?.Management_Method_Code__c != null ?
                                                          _workline.SVMXC__Service_Order_Line__c?.Management_Method_Code__c :
                                                          _workline.SVMXC__Service_Order_Line__c?.Management_Method_Code_Override__c;


                            waste.DiscrepancyResidueInfo = new DiscrepancyResidueInfo();
                            waste.DiscrepancyResidueInfo.WasteQuantity       = false;
                            waste.DiscrepancyResidueInfo.WasteType           = false;
                            waste.DiscrepancyResidueInfo.Residue             = false;
                            waste.DiscrepancyResidueInfo.DiscrepancyComments = "no discrepancy";


                            request.Wastes.Add(waste);
                        }


                        #endregion



                        #region AdditionalInfo & PrintedDocument

                        request.AdditionalInfo                      = new AdditionalInfo();
                        request.AdditionalInfo.Comments             = null;
                        request.AdditionalInfo.HandlingInstructions = worklineInstructionhandling != null ? worklineInstructionhandling : null;

                        request.PrintedDocument          = new PrintedDocument();
                        request.PrintedDocument.Name     = attachment.Name;
                        request.PrintedDocument.Size     = attachment.BodyLength;
                        request.PrintedDocument.MimeType = "APPLICATION_PDF";


                        #endregion
                    }
                }
                catch (Exception ex)
                {
                }
            }
            return(request);
        }
示例#17
0
        private void Init()
        {
            if (_inited)
            {
                return;
            }

            if (!File.Exists(xmlFileName))
            {
                Console.WriteLine($"ETW Manifest {xmlFileName} doesnt exist");
                throw new CLogEnterReadOnlyModeException("Output Manifest Missing", CLogHandledException.ExceptionType.ETWManifestNotFound, null);
            }

            try
            {
                doc.PreserveWhitespace = true;
                doc.Load(xmlFileName);

                XmlElement assembly    = doc["assembly"];
                XmlElement stringTable = null;

                if (null == assembly)
                {
                    assembly = doc["instrumentationManifest"];
                }

                var instrumentation = assembly["instrumentation"];
                var rootEvents      = instrumentation["events"];

                var stringEvents = assembly["localization"];
                foreach (var culture in stringEvents.ChildNodes)
                {
                    if (!(culture is XmlElement))
                    {
                        continue;
                    }

                    XmlElement pe = (XmlElement)culture;
                    if (pe.Name == "resources")
                    {
                        if (!pe.HasAttribute("culture"))
                        {
                            continue;
                        }

                        string attr = pe.GetAttribute("culture");

                        if (!attr.Equals("en-US"))
                        {
                            continue;
                        }

                        stringTable = pe["stringTable"];
                    }
                }

                foreach (var p in rootEvents.ChildNodes)
                {
                    if (!(p is XmlElement))
                    {
                        continue;
                    }

                    XmlElement pe = (XmlElement)p;

                    if (pe.Name == "provider")
                    {
                        if (!pe.HasAttribute("guid"))
                        {
                            continue;
                        }

                        string attr = pe.GetAttribute("guid");
                        Guid   id   = new Guid(attr);

                        if (!_providerCache.ContainsKey(id))
                        {
                            _providerCache[id] = new ManifestInformation(doc, pe, stringTable);
                        }
                    }
                }

                _inited = true;
            }
            catch (Exception)
            {
                CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, $"Error processing ETW manifest {xmlFileName}");
                throw;
            }
        }