/
index.js
47 lines (36 loc) · 1.19 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
var faker = require('faker');
var strftime = require('strftime');
var args = process.argv.slice(2);
var speed = args[0];
if (typeof(speed) === 'undefined') {
speed = 10;
}
function createWeightedArray(inputArr) {
var arr = [];
for (var key in inputArr) {
for (var i = 0; i < inputArr[key]; i++) {
arr.push(key);
}
}
return arr;
}
// set weighted response codes
var respCodes = createWeightedArray({ 200: 92, 404: 5, 503: 3 });
// set weighted file extensions
var fileExts = createWeightedArray({ html: 40, php: 30, png: 15, gif: 10, css: 5 });
function writeLine() {
var httpLine = faker.internet.ip();
httpLine += ' - - [';
httpLine += strftime("%d/%b/%Y:%H:%M:%S %z");
httpLine += '] \"GET ';
httpLine += '/' + faker.system.commonFileName(faker.random.arrayElement(fileExts));
httpLine += ' HTTP/1.1\" ';
httpLine += faker.random.arrayElement(respCodes) + " ";
httpLine += faker.random.number(8192) + 128;
httpLine += ' \"-\" \"';
httpLine += faker.internet.userAgent() + '\"';
console.log(httpLine);
// add a random factor to the interval
setTimeout(writeLine, (Math.random() + 1) * 1000 / speed);
}
setTimeout(writeLine, 1000);