Beispiel #1
0
    var gulpRetire = function (file, encoding, callback) {
        var options = {
            jsRepository: 'https://raw.github.com/RetireJS/retire.js/master/repository/jsrepository.json',
            nodeRepository: 'https://raw.github.com/RetireJS/retire.js/master/repository/npmrepository.json'
        };

        if (file.isStream()) {
            return callback(createError(file, 'Streams are not supported'));
        }

        scanner.on('vulnerable-dependency-found', function(e) {
            return callback(createError(file, 'Vulnerable library found'));
        });

        scanner.on('dependency-found', function(e) {

        });

        var vulnerabilityRepoLoaded = function(repository) {
            scanner.scanJsFile(file.path, repository, options);
        };

        if (!options.nocache) {
            options.cachedir = path.resolve(os.tmpdir(), '.retire-cache/');
        }
        if (/^http[s]?:/.test(options.jsRepository)) {
            repo.loadrepository(options.jsRepository, options).on('done', vulnerabilityRepoLoaded);
        } else {
            repo.loadrepositoryFromFile(options.jsRepository, options).on('done', vulnerabilityRepoLoaded);
        }
    };
 grunt.event.once('retire-load-node', function() {
    repo.loadrepository(options.nodeRepository, options).on('done', function(repo) {
       nodeRepo = repo;
       grunt.event.emit('retire-node-scan', filesSrc);
    });
 });
 grunt.event.once('retire-load-js', function() {
    repo.loadrepository(options.jsRepository, options).on('done', function(repo) {
       jsRepo = repo;
       grunt.event.emit('retire-js-repo');
    });
 });
	} else {
		events.emit('phantom-ready');
	}
});

events.on('begin', function() {
	console.log('Reading file ' + dfile + ' ...');
	new lazy(fs.createReadStream(dfile))
		.lines
		.forEach(function(domain) {
			if (domain) events.emit('domain', domain);
		});
});

if (!fs.existsSync(funcsfile)) {
	repo.loadrepository('https://raw.github.com/bekk/retire.js/master/repository/jsrepository.json', {nocache:true})
		.on('done', function(jsrepo) {
		var funcs = [];
		for (var i in jsrepo) {
			for (var j in jsrepo[i].extractors.func) {
				funcs.push({"component" : i, func : jsrepo[i].extractors.func[j]});
			}
		}
		fs.writeFile(funcsfile, JSON.stringify(funcs), function(err) {
			if (err) {
				console.log(err);
				process.exit(1);
			}
		    events.emit('begin');
		});	
	});