|
@@ -506,6 +506,14 @@
|
|
|
function coreRuleHit(rule, n) {
|
|
function coreRuleHit(rule, n) {
|
|
|
var pattern = String(rule.pattern || '');
|
|
var pattern = String(rule.pattern || '');
|
|
|
if (!pattern) return false;
|
|
if (!pattern) return false;
|
|
|
|
|
+ var net = String(rule.net || '').toUpperCase();
|
|
|
|
|
+ if (net) {
|
|
|
|
|
+ var raw = rawNetOf(n);
|
|
|
|
|
+ // A core with no recognisable network keyword may still be assigned by
|
|
|
|
|
+ // the rule; a switch already known to belong to another network must
|
|
|
|
|
+ // not be stolen by a broad pattern.
|
|
|
|
|
+ if (raw !== 'OTHER' && raw !== net) return false;
|
|
|
|
|
+ }
|
|
|
var hay = String((n && n.name) || '') + ' ' + String((n && n.ip) || '');
|
|
var hay = String((n && n.name) || '') + ' ' + String((n && n.ip) || '');
|
|
|
if (String(rule.match || 'contains') === 'regex') {
|
|
if (String(rule.match || 'contains') === 'regex') {
|
|
|
try { return new RegExp(pattern, 'i').test(hay); } catch (e) { return false; }
|
|
try { return new RegExp(pattern, 'i').test(hay); } catch (e) { return false; }
|