cloud-log-collector
Version:
Collect log from mutiple servers
69 lines (53 loc) • 1.83 kB
JavaScript
var WebSocketClient = require('websocket').client;
var Tail = require('tail-file');
var fs = require('fs');
// Load config
var conf=JSON.parse(fs.readFileSync('/etc/clc/client.conf'));
// log
function logClient (data) {
try {
console.log((new Date()) + " - GetToken - " + data );
fs.appendFileSync('/var/clclog/gettoken.log', (new Date()) + " - GetToken - " + data + "\n");
} catch (err) {
console.log(err);
}
}
logClient('GetToken start');
// Websocket part
var client = new WebSocketClient();
var connection={};
connection.connected=false;
client.on('connectFailed', function(error) {
logClient('Connect Error: ' + error.toString());
});
client.on('connect', function(connection2) {
connection=connection2;
logClient('WebSocket Client Connected');
connection.on('error', function(error) {
logClient("Connection Error: " + error.toString());
});
connection.on('close', function() {
logClient('echo-protocol Connection Closed');
});
connection.on('message', function(message) {
if (message.type === 'utf8') {
var tempo=JSON.parse(message.utf8Data);
if ('error' in tempo) {
logClient("remote error : "+tempo['error']);
connection.close();
}
if ('token' in tempo) {
conf['client']['SecretClientKey']=tempo['token'];
var config_client=JSON.stringify(conf,null,4);
fs.writeFileSync("/etc/clc/client.conf",config_client);
console.log('Token saved in config file');
connection.close();
require('child_process').execSync('systemctl restart CLCClient').toString();
}
return;
}
});
connection.sendUTF("{\"magickey\":\""+process.env.CLCMagicToken+"\",\"hostname\":\""+process.env.CLCHostname+"\"}");
});
client.connect('wss://'+conf['server']['hostname']+':'+conf['server']['port']+'/', 'echo-protocol');