-
Notifications
You must be signed in to change notification settings - Fork 9
/
db.js
203 lines (142 loc) · 4.17 KB
/
db.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
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
/*
Database related routines
*/
var moment = require("moment");
var redis = require("redis");
var fs = require("fs");
var configGlobal = "none";
var client = require("./dbcore");
/*
function initClient() {
var openShiftIP = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
if (openShiftIP != undefined)
{
console.log("Starting DB client with ip/port server " + process.env.OPENSHIFT_REDIS_PORT + " : " + process.env.OPENSHIFT_REDIS_HOST + " on openshift");
var client = redis.createClient(process.env.OPENSHIFT_REDIS_PORT, process.env.OPENSHIFT_REDIS_HOST);
client.auth(process.env.REDIS_PASSWORD);
return client;
}
else {
console.log("Starting DB without special parameters outside of OpenShift environment ...");
var client = redis.createClient();
return client;
}
}
var client = initClient();
*/
/**
* retrive the correct path for the stored html data
* @param config
* @param openShiftDataDir
* @returns {string}
*/
function getHtmlPath(config) {
var openShiftDataDir = process.env.OPENSHIFT_DATA_DIR;
var configuredHtmlPath = config.html;
if (openShiftDataDir != undefined)
{
configuredHtmlPath = openShiftDataDir + '/html/';
}
else
{
configuredHtmlPath = config.html;
}
return configuredHtmlPath;
}
function setstore(url)
{
client.sadd("NP_URL", url);
}
function setstoreMaliciousURL(url)
{
client.sadd("NP_URL_MALICIOUS", url);
}
/** return all data from the NP_URL set **/
function setgetall(response, attack, config)
{
var time = moment().format('MMMM Do YYYY, h:mm:ss a');
if( config == undefined && configGlobal != "none")
{
config = configGlobal;
}
console.log(time + ": Updating local file with attack data");
client.smembers("NP_URL", function (error, value)
{
var a = "";
value.forEach(function (attack) {
console.log("Found: " + attack);
if (attack != undefined) {
// response.write(attack + "<br>");
a = a + attack + "<br>";
}
});
console.log("Info: config is " + config);
var filePath = getHtmlPath(config) + "/dork.html";
console.log("Before file writing code " + filePath);
fs.unlinkSync(filePath);
var stream = fs.createWriteStream(filePath);
stream.once('open', function(fd) {
stream.write(a);
stream.end();
});
return value;
});
}
/**
* simple wrapper for the redis call calling sub routines depending on the result
* @param url
* @param positive
* @param negative
* @param response
* @param con
*/
function ismember(url, positive, negative, response, config)
{
var time = moment().format('MMMM Do YYYY, h:mm:ss a');
if( config != undefined)
{
configGlobal = config;
}
client.sismember("NP_URL", url, function (error, value)
{
console.log(time + ": Result from sismember call for URL " + url + ": value: " + value + " error: " + error)
if (1 == value)
{
positive(url, response, config);
}
else
{
negative(url, response, config);
}
});
}
/**
* simple wrapper for the redis call calling sub routines depending on the result
* @param url
* @param dest (for filesystem)
* @param storage code
* @param callBack from storage code
*/
function isMemberMaliciousURL(url, dest, storeCode, callBack)
{
var time = moment().format('MMMM Do YYYY, h:mm:ss a');
client.sismember("NP_URL_MALICIOUS", url, function (error, value)
{
console.log(time + ": Result from sismember call for URL " + url + ": value: " + value + " error: " + error)
if (1 == value)
{
console.log("URL " + url + " already known....");
}
else
{
storeCode(url, dest, callBack);
setstoreMaliciousURL(url);
}
});
}
/** definition of exports **/
exports.setstore=setstore;
exports.setgetall=setgetall;
exports.ismember=ismember;
exports.setstoreMaliciousURL=setstoreMaliciousURL;
exports.isMemberMaliciousURL=isMemberMaliciousURL;