Exemplo n.º 1
0
        private static void ReadPackageJsonFile(string item)
        {
            dynamic        o1         = JObject.Parse(File.ReadAllText(item));
            IList <JToken> jsonDevDep = o1["devDependencies"];

            if (jsonDevDep != null)
            {
                foreach (var jToken in jsonDevDep)
                {
                    var p = (JProperty)jToken;
                    FactoryPackages.AddPackage(new NugetPackage {
                        Name = p.Name, Version = p.Value.ToString(), UniqueName = "devDependencies", PackageType = PackageType.Npm
                    });
                }
            }
            IList <JToken> jsonDep = o1["dependencies"];

            if (jsonDep != null)
            {
                foreach (var jToken in jsonDep)
                {
                    var p = (JProperty)jToken;
                    FactoryPackages.AddPackage(new NugetPackage {
                        Name = p.Name, Version = p.Value.ToString(), UniqueName = "dependencies", PackageType = PackageType.Npm
                    });
                }
            }
        }
        public static async Task <List <OssIndexResponse> > CheckOSSPackage()
        {
            List <OssIndexResponse> objResponse = null;

            foreach (var package in FactoryPackages.GetPackages())
            {
                objResponse = new List <OssIndexResponse>();
                string packageManager = string.Empty;
                switch (package.PackageType)
                {
                case PackageType.Npm:
                    packageManager = "npm";
                    break;

                case PackageType.Nuget:
                    packageManager = "nuget";
                    break;

                default:
                    break;
                }

                if (packageManager != String.Empty)
                {
                    objResponse = await CheckVulnerabilityOnPackage(package, packageManager);
                }
            }
            return(objResponse);
        }
Exemplo n.º 3
0
 private static void SavePackagesToDisc()
 {
     if (!Directory.Exists("testresults"))
     {
         Directory.CreateDirectory("testresults");
     }
     using (StreamWriter file = File.CreateText(@"testresults\allPackages.json"))
     {
         Console.WriteLine($"Saving result to json {file.ToString()}");
         JsonSerializer serializer = new JsonSerializer();
         serializer.Serialize(file, FactoryPackages.GetPackages());
         //If this is used by Azure DevOps or TFS it will upload result to release
         Console.WriteLine($"##vso[task.uploadfile]{Path.GetFullPath("testresults/allPackages.json")}");
     }
 }
Exemplo n.º 4
0
        public static async Task GetNugetPackageInformation()
        {
            IPackage           pack;
            IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository("https://packages.nuget.org/api/v2");

            await Task.Run(() =>
            {
                foreach (var item in FactoryPackages.GetPackages().FindAll(o => o.PackageType == PackageType.Nuget))
                {
                    pack = repo.FindPackage(item.Name, SemanticVersion.Parse(item.Version));
                    item.NugetExtendedPackageInformation = pack;
                    Console.WriteLine("Get Nuget Extended Package Information on " + item.Name + " " + item.Version);
                }
            });
        }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            PathToSearch = ConfigurationManager.AppSettings["SourceCodePath"];
            SaveJsonPath = ConfigurationManager.AppSettings["SaveJsonPath"];
            Console.WriteLine($"Searching directory: {PathToSearch}");
            Console.WriteLine($"Saving result to: {SaveJsonPath}");

            RunAsync().GetAwaiter().GetResult();
            Console.WriteLine($"Found {FactoryPackages.GetPackages().Count} packages");

            //var obj = JsonConvert.SerializeObject(FactoryPackages.GetPackages(), new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto });
            //File.WriteAllText(SaveJsonPath, obj);
            SavePackagesToDisc();
            foreach (var item in FactoryPackages.GetPackages().OrderBy(x => x.Name))
            {
                Console.WriteLine(item.PackageType + "|" + item.Name + " " + item.Version + "|" + item.UniqueName);
            }
        }
Exemplo n.º 6
0
        private static async Task SearchNugetPackageReferences(string file)
        {
            await Task.Run(() =>
            {
                XmlDocument xDoc = new XmlDocument();

                using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read))
                {
                    xDoc.Load(fs);

                    // Load Xml

                    var nodes = xDoc.GetElementsByTagName("PackageReference");

                    foreach (XmlNode node in nodes)
                    {
                        if (node.Attributes != null && (node.Attributes["Version"] != null || node.Attributes["version"] != null))
                        {
                            string packageVersion;
                            if (node.Attributes["Version"] == null)
                            {
                                packageVersion = node.Attributes["version"].Value;
                            }
                            else
                            {
                                packageVersion = node.Attributes["Version"].Value;
                            }
                            PackageMagic package = new NugetPackage {
                                Name = node.Attributes["Include"].Value, Version = packageVersion, UniqueName = "PackageReference", PackageType = PackageType.Nuget
                            };
                            FactoryPackages.AddPackage(package);
                        }
                        else
                        {
                            //Console.WriteLine(file + "No version found in PackageReference");
                        }
                    }
                }
            });
        }
Exemplo n.º 7
0
        public static async Task SearchForPackagesConfig(string projectDirectory)
        {
            Console.WriteLine($"Searching for Packages Config in {projectDirectory}");
            await Task.Run(() =>
            {
                string[] packagesConfig = Directory.GetFiles(projectDirectory, "packages.config", SearchOption.AllDirectories);
                Console.WriteLine($"Found {packagesConfig.Count()} packages.config files");
                foreach (var packConfig in packagesConfig)
                {
                    var directoryName      = Path.GetDirectoryName(packConfig);
                    string foundCsProjFile = "";
                    if (directoryName != null)
                    {
                        string[] proj = Directory.GetFiles(directoryName, patternPackagesConfig, SearchOption.TopDirectoryOnly);

                        if (proj.Length > 0)
                        {
                            foundCsProjFile = proj[0];
                        }
                        else
                        {
                            foundCsProjFile = "No csProj file found " + packConfig;
                        }
                    }


                    var file = new PackageReferenceFile(packConfig);
                    foreach (PackageReference packageReference in file.GetPackageReferences())
                    {
                        PackageMagic package = new NugetPackage {
                            Name = packageReference.Id, Version = packageReference.Version.ToNormalizedString(), UniqueName = "PackageConfig", PackageType = PackageType.Nuget
                        };
                        FactoryPackages.AddPackage(package);
                    }
                }
            });
        }
Exemplo n.º 8
0
        public static async Task <JObject> RunNpmView()
        {
            JObject output = null;

            try
            {
                foreach (var package in FactoryPackages.GetPackages().FindAll(o => o.PackageType == PackageType.Npm))
                {
                    var packageToCheck = $"{package.Name}@{package.Version}";

                    //return output;
                    var psiNpmRunDist = new ProcessStartInfo
                    {
                        FileName               = NpmPath,
                        Arguments              = $"view {packageToCheck}",
                        RedirectStandardInput  = true,
                        UseShellExecute        = false,
                        RedirectStandardOutput = true,
                        StandardOutputEncoding = Encoding.UTF8
                    };
                    await Task.Run(() =>
                    {
                        var pNpmRunDist = Process.Start(psiNpmRunDist);


                        if (pNpmRunDist != null)
                        {
                            try
                            {
                                output = JObject.Parse(pNpmRunDist.StandardOutput.ReadToEnd());
                            }
                            catch (Exception)
                            {
                                output = null;
                            }

                            pNpmRunDist.StandardInput.WriteLine("npm run view & exit");
                            pNpmRunDist.WaitForExit();
                        }
                    });
                }
            }
            catch (Exception e)
            {
                output = null;
            }
            try
            {
                dynamic outputDynamic = output;
                var     license       = output.GetValue("license");

                //var licenses = output.GetValue("licenses");
                //if (licenses != null)
                //{
                if (license == null)
                {
                    foreach (var item in output)
                    {
                        if (item.Key.ToLower() == "licenses")
                        {
                            foreach (JObject val in item.Value.Children())
                            {
                                foreach (var d in val)
                                {
                                    Console.WriteLine($"{d.Key} {d.Value.ToString()}");
                                }
                            }
                        }
                    }
                }
                //    Utils.LogMessages(licenses.First.ToString());
                //}
            }
            catch (Exception ex)
            {
            }

            return(output);
        }
Exemplo n.º 9
0
        public static async Task RunNpmViewCheckLicense()
        {
            JObject output  = null;
            string  license = String.Empty;
            await Task.Run(() =>
            {
                foreach (var package in FactoryPackages.GetPackages().FindAll(o => o.PackageType == PackageType.Npm))
                {
                    try
                    {
                        var packageToCheck = $"{package.Name}@{package.Version}";
                        //return output;
                        var psiNpmRunDist = new ProcessStartInfo
                        {
                            FileName               = NpmPath,
                            Arguments              = $"view {packageToCheck}",
                            RedirectStandardInput  = true,
                            UseShellExecute        = false,
                            RedirectStandardOutput = true,
                            StandardOutputEncoding = Encoding.UTF8
                        };

                        var pNpmRunDist = Process.Start(psiNpmRunDist);


                        if (pNpmRunDist != null)
                        {
                            try
                            {
                                output = JObject.Parse(pNpmRunDist.StandardOutput.ReadToEnd());
                            }
                            catch (Exception)
                            {
                                output = null;
                            }

                            pNpmRunDist.StandardInput.WriteLine("npm run view & exit");
                            pNpmRunDist.WaitForExit();
                        }
                    }
                    catch (Exception e)
                    {
                        output = null;
                    }

                    try
                    {
                        JToken licenseToken = output.GetValue("license");
                        if (licenseToken != null)
                        {
                            license = licenseToken.ToString();
                        }

                        if (license == null)
                        {
                            foreach (var item in output)
                            {
                                if (item.Key.ToLower() == "licenses")
                                {
                                    foreach (JObject val in item.Value.Children())
                                    {
                                        foreach (var d in val)
                                        {
                                            if (d.Key == "type")
                                            {
                                                license = d.Value.ToString();
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }

                    if (license != null)
                    {
                        Console.WriteLine("Npm licensetype " + license);
                        package.LicenseType = license;
                    }
                }
            });

            //return license;
        }