48 lines
1.0 KiB
JavaScript
48 lines
1.0 KiB
JavaScript
'use strict';
|
|
|
|
require('classtool');
|
|
|
|
function spec(b) {
|
|
|
|
var fs = require('fs');
|
|
var buffertools = require('buffertools');
|
|
var db = b.db || JSON.parse( fs.readFileSync(b.poolMatchFile || './poolMatchFile.json'));
|
|
|
|
var PoolMatch = function() {
|
|
var self = this;
|
|
|
|
self.strings={};
|
|
db.forEach(function(pool) {
|
|
pool.searchStrings.forEach(function(s) {
|
|
if (!self.strings[s]) self.strings[s] = [];
|
|
self.strings[s].push(pool);
|
|
});
|
|
});
|
|
Object.keys( self.strings, function(s) {
|
|
delete self.strings[s].searchStrings;
|
|
});
|
|
self.stringsK = Object.keys(self.strings);
|
|
self.stringsKl = self.stringsK.length;
|
|
};
|
|
|
|
|
|
PoolMatch.prototype.match = function(buffer) {
|
|
var self = this;
|
|
|
|
var match;
|
|
var i =0;
|
|
while (!match && i < self.stringsKl) {
|
|
var k = self.stringsK[i++];
|
|
if ( buffertools.indexOf(buffer,self.strings[k]) >= 0 ) {
|
|
match = self.strings[k];
|
|
}
|
|
}
|
|
return match;
|
|
};
|
|
|
|
return PoolMatch;
|
|
}
|
|
module.defineClass(spec);
|
|
|
|
|