-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
59 lines (50 loc) · 1.46 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var fs = require('fs');
var execSync = require('child_process').execSync;
var pkg = require('./package.json');
module.exports = function(){
var debug = require('debug');
debug = debug(pkg.name);
var bannerDetectors = {
ubuntu:function(distro){
var fName = '/etc/lsb-release';
if(fs.existsSync(fName)){
debug('found %s', fName);
var name = execSync('lsb_release', ['-c']);
debug('found %s', name);
var release = execSync('lsb_release', ['-r']);
debug('found %s', release);
return {
distro:distro,
name: name,
release: release
};
}
},
fedora:function(distro){
var banner;
var issueFName = '/etc/issue';
var releaseFName = '/etc/redhat-release';
if(fs.existsSync(issueFName) ){
debug('found %s', issueFName);
banner = fs.readFileSync(issueFName,'utf-8').split('\n')[0];
}else if(fs.existsSync(releaseFName) ){
debug('found %s', releaseFName);
banner = fs.readFileSync(releaseFName,'utf-8');
}
if(banner ){
return {
distro:distro,
name: banner,
release: banner.match('[0-9]+')[0]
};
}
}
};
var detected = false;
Object.keys(bannerDetectors).forEach(function(distro){
if( detected === false ) {
detected = bannerDetectors[distro](distro) || false; // mist return false, OR, an detected object
}
});
return detected;
};