-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdeprecated-splunklog.js
More file actions
133 lines (120 loc) · 4.12 KB
/
deprecated-splunklog.js
File metadata and controls
133 lines (120 loc) · 4.12 KB
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
/*
** DEPRECATED
** DO NOT USE, kept just to see how I did state tracking for the connections
** and tracked disconencts of TCP sockets
**/
SYSLOGCONFIG = require('config').syslog;
TIMEOUTCONFIG = require('config').reconnect_timeout;
TIMEOUTCONFIG = typeof TIMEOUTCONFIG === 'number' ? TIMEOUTCONFIG : 2000;
var util = require('util');
var net = require('net');
var connectedlist = [ ];
var connectinglist = [ ];
var events = require('events');
var emitter = new events.EventEmitter();
var clients = [ ];
var queue = [ ];
function connecting() {
var ret = true;
for (var i=0; i < SYSLOGCONFIG.length; i++) {
if (!connectinglist[i]) {
ret = false;
}
}
return ret;
}
function connected() {
var ret = true;
for (var i=0; i < SYSLOGCONFIG.length; i++) {
if (!connectedlist[i]) {
ret = false;
}
}
return ret;
}
function pad(number, length) {
var str = '' + number;
while (str.length < length) {
str = '0' + str;
}
return str;
}
function getTS() {
var dt = new Date();
var hours = pad(dt.getHours(),2);
var minutes = pad(dt.getMinutes(),2);
var seconds = pad(dt.getSeconds(),2);
var month = dt.getMonth();
var day = pad(dt.getDate(),2);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var eventstamp = months[month] + " " + day + " " + hours + ":" + minutes + ":" + seconds;
return eventstamp;
}
function open(logout) {
console.log("splunklog.open() called. Queue size: ", queue.length);
if (!connecting()) {
console.log("Iterating through connections. Queue size: ", queue.length);
for (var i=0; i < SYSLOGCONFIG.length; i++) {
if (!connectedlist[i]) {
function fixLoop(idx) {
connectinglist[idx] = true;
console.log("Connecting to %s:%s", SYSLOGCONFIG[i].syslog_host, SYSLOGCONFIG[i].syslog_port);
function connectedCallback(idx) {
console.log("Connected to %s:%s", SYSLOGCONFIG[idx].syslog_host, SYSLOGCONFIG[idx].syslog_port);
connectedlist[idx] = true;
connectinglist[idx] = false;
flushqueue();
}
function disconnectedCallback(idx) {
console.log("Remote side disconnected. Reconnecting to %s:%s", SYSLOGCONFIG[idx].syslog_host, SYSLOGCONFIG[idx].syslog_port);
connectedlist[idx] = false;
if (!connecting()) {
connectinglist[idx] = true;
setTimeout(TIMEOUTCONFIG, function () { open(); });
}
}
clients[idx] = net.createConnection(SYSLOGCONFIG[idx].syslog_port, SYSLOGCONFIG[idx].syslog_host,
function() { connectedCallback(idx) });
clients[idx].on('end', function() { disconnectedCallback(idx) });
clients[idx].on('error', function() { disconnectedCallback(idx) });
}
fixLoop(i);
}
}
}
}
function close() {
for (var i=0; i < SYSLOGCONFIG.length; i++) {
clients[i].end();
}
}
function log(logout) {
// If we're not connected, open the connection and write the log
if (!connected()) {
open();
}
var strout = '';
if (typeof logout === 'object') {
//strout = util.format("%j", logout);
logout.timestamp = getTS();
strout = util.format("%s %j", getTS(), logout);
} else {
strout = util.format("%s %s", getTS(), logout);
}
queue.push(strout);
flushqueue();
}
function flushqueue() {
var s = '';
if (connected()) {
while (s = queue.shift()) {
console.log("splunklog: %s", s);
for (var i=0; i < SYSLOGCONFIG.length; i++) {
clients[i].write(s+'\n');
}
}
}
}
exports.log = log;
exports.open = open;
exports.close = close;