File size: 5,992 Bytes
7c89ed7 | 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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | /*
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
Copyright (c) 2014 Mozilla Corporation
*/
import { Meteor } from 'meteor/meteor';
import { _ } from 'meteor/underscore';
if (Meteor.isServer) {
//public server-side functions
Meteor.methods({
'saySomething': saySomething,
'loadKibanaDashboards': loadKibanaDashboards,
'blockip': blockIP,
'blockfqdn': blockFQDN,
'watchitem': watchItem,
'ipwhois': ipwhois,
'ipdshield': ipdshield,
'ipsearch': ipsearch,
'verisstats': verisstats,
'getplugins': getplugins,
'getserversetting': getserversetting
});
function saySomething() {
//debug function
console.log("something is said");
}
function loadKibanaDashboards() {
console.log('Loading Kibana dashboards... ' + mozdef.rootAPI + '/kibanadashboards');
var dashboardsRequest = HTTP.get(mozdef.rootAPI + '/kibanadashboards');
if (dashboardsRequest.statusCode==200 && dashboardsRequest.data) {
// set the current dashboards in the mongo collection
console.log("Updating kibana dashboards...");
kibanadashboards.remove({});
dashboardsRequest.data.forEach(function(dashboard, index, arr) {
kibanadashboards.insert(dashboard);
});
//console.log(dashboardsRequest.data);
} else {
console.log("Could not retrieve kibana dashboards... check settings");
console.log(mozdef.rootAPI + '/kibanadashboards');
console.log("returned a " + dashboardsRequest.statusCode);
console.log(dashboardsRequest.data);
}
}
function watchItem(formobj) {
var watchItemRequest = HTTP.post(mozdef.rootAPI + '/watchitem', {data: formobj});
if (watchItemRequest.statusCode==200) {
console.log(JSON.stringify(formobj) + ' successfully sent to ' + mozdef.rootAPI);
return true;
} else {
console.log("Could not send to "+ mozdef.rootAPI + '/watchitem ' + JSON.stringify(formobj) );
return watchItemRequest;
}
}
function blockIP(formobj) {
var blockIPRequest = HTTP.post(mozdef.rootAPI + '/blockip', {data: formobj});
if (blockIPRequest.statusCode==200) {
console.log(JSON.stringify(formobj) + ' successfully sent to ' + mozdef.rootAPI);
return true;
} else {
console.log("Could not send to "+ mozdef.rootAPI + '/blockip ' + JSON.stringify(formobj) );
return blockIPRequest;
}
}
function blockFQDN(formobj) {
try{
var blockFQDNRequest = HTTP.post(mozdef.rootAPI + '/blockfqdn', {data: formobj});
if (blockFQDNRequest.statusCode==200) {
console.log(JSON.stringify(formobj) + ' successfully sent to ' + mozdef.rootAPI);
return true;
}
}catch (e) {
console.log("Error posting to "+ mozdef.rootAPI + '/blockfqdn ' + JSON.stringify(formobj) );
console.log(e)
if ( e.response.statusCode == 400 ){
// rest API set a reason in content
console.log(e.response.content);
return e.response.content;
}else{
return e;
}
}
}
function ipwhois(ipaddress){
//console.log('Posting ' + ipaddress + 'to ' + mozdef.rootAPI + '/ipwhois/');
var ipwhoisResponse = HTTP.post(mozdef.rootAPI + '/ipwhois/',{data: {'ipaddress':ipaddress}});
if ( typeof ipwhoisResponse == 'undefined') {
console.log("ipwhois: no response from server")
return "";
} else {
//console.log(ipwhoisResponse);
return ipwhoisResponse;
}
}
function ipdshield(ipaddress){
//console.log('Posting ' + ipaddress + 'to ' + mozdef.rootAPI + '/ipwhois/');
var ipdshieldResponse = HTTP.post(mozdef.rootAPI + '/ipdshieldquery/',{data: {'ipaddress':ipaddress}});
if ( typeof ipdshieldResponse == 'undefined') {
console.log("ipdshield: no response from server")
return "";
} else {
//console.log(ipdshieldResponse);
return ipdshieldResponse;
}
}
function ipsearch(ipaddress){
//console.log('Posting ' + ipaddress + 'to ' + mozdef.rootAPI + '/ipwhois/');
var ipsearchResponse = HTTP.post(mozdef.rootAPI + '/ipsearch/',{data: {'ipaddress':ipaddress}});
if ( typeof ipsearchResponse == 'undefined') {
console.log("ipsearch: no response from server")
return "";
} else {
//console.log(ipdshieldResponse);
return ipsearchResponse;
}
}
function verisstats(){
//console.log('Calling ' + mozdef.rootAPI + '/veris/');
var verisstatsResponse = HTTP.get(mozdef.rootAPI + '/veris/');
if ( typeof verisstatsResponse == 'undefined') {
console.log("verisstats: no response from server")
return "";
} else {
//console.log(verisstatsResponse);
return verisstatsResponse;
}
}
function getplugins(endpoint){
//console.log('Looking up plugins registered for ' + endpoint + ' from ' + mozdef.rootAPI + '/plugins/' + endpoint);
if ( typeof endpoint == 'undefined') {
var response = HTTP.get(mozdef.rootAPI + '/plugins/');
} else {
var response = HTTP.get(mozdef.rootAPI + '/plugins/' + endpoint);
}
return response
}
function getserversetting(settingKey){
if ( _.has(mozdef,settingKey) ){
return mozdef[settingKey];
}else{
return '';
}
}
};
|