1. Go to this page and download the library: Download mteu/advisory-matcher library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mteu / advisory-matcher example snippets
use mteu\AdvisoryMatcher\Advisory\AdvisoryMatcher;
use mteu\AdvisoryMatcher\Package\Ecosystem;
use mteu\AdvisoryMatcher\Source\CompositeAdvisorySource;
use mteu\AdvisoryMatcher\Source\Cache\CachingAdvisorySource;
use mteu\AdvisoryMatcher\Source\PackageRef;
use mteu\AdvisoryMatcher\Source\Packagist\PackagistAdvisorySource;
use mteu\AdvisoryMatcher\Source\Osv\OsvAdvisorySource;
// $httpClient: Psr\Http\Client\ClientInterface (set timeouts on it)
// $factory: An object implementing the PSR-17 request and stream factories
// $cache: Psr\SimpleCache\CacheInterface
$source = new CompositeAdvisorySource([
new CachingAdvisorySource(new PackagistAdvisorySource($httpClient, $factory, $factory), $cache),
new CachingAdvisorySource(new OsvAdvisorySource($httpClient, $factory, $factory, recordCache: $cache), $cache),
]);
$matcher = new AdvisoryMatcher();
$packages = [
new PackageRef(Ecosystem::Composer, 'symfony/http-kernel', '5.4.19'),
new PackageRef(Ecosystem::Npm, 'lodash', '4.17.20'),
];
$batch = $source->advisoriesFor($packages);
foreach ($packages as $package) {
if (!$batch->wasAnsweredFor($package)) {
printf("%s: not checked\n", $package->name); // unknown
continue;
}
$matches = $matcher->matchAll($batch->advisoriesFor($package), $package->version);
foreach ($matches->affected as $advisory) {
$fix = $matcher->fixedVersionFor($advisory, $package->version);
printf("%s: %s %s, fixed in %s\n", $package->name, $advisory->severity->value, $advisory->cve, $fix ?: 'no release yet');
}
foreach ($matches->undetermined as $advisory) {
printf("%s: %s, could not tell\n", $package->name, $advisory->advisoryId);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.