Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var request = require('request');
- const serverurl = "http://127.0.0.1:80/";
- //'http://172.16.1.129:2000/';// "http://watchdog.100fat.nl/installations/";
- const apiKey = "7f1bdf98a3674b14b51851c906e9bce4";
- const timerInterval = 25; //in minutes
- var InstallationID = '5cd040d30b4a9f372c9083fc';
- const maxTries = 5;
- var tries = 0;
- var exec = require('child_process').exec;
- var fs = require('fs');
- var app = express();
- var autoUpdate;
- console.log('client is running!');
- //startShellScript();
- start();
- function start(){
- // todo:: create request to the server.
- // send json settings over.
- // check on server if applyautoUpdate is true (overhead is for the server where as the clients first time gets an update)
- //server side:
- // if(applyautoUpdate){
- //update client to be same as server
- //}else{
- //something changed in client, update server to be same.
- //}
- readSettings();
- console.log('autoUpdate: '+autoUpdate);
- pingAgain();
- }
- var user='thomas';
- var password = '123fat123';
- //var base64encodedData = Buffer.allocUnsafe(user + ':' + password).toString('base64');
- function pingAgain(){
- //writeSettings();
- makePostRequest();
- }
- function makePostRequest(){
- var receivedData='';
- console.log('make request!');
- //original
- //request.post(serverurl+'installations/'+InstallationID+'/'+autoUpdate, {
- // 'auth': {
- // 'bearer': apiKey
- //}
- request.post(serverurl+'installations/'+InstallationID+'/'+autoUpdate, {
- 'auth': {
- user:'thomas',
- pass: '123fat123'
- }
- }, function(error, response, body){
- if(error){
- console.log('Error pinging watchdog server: ' + error);
- if(tries < maxTries)
- {
- tries++;
- console.log("Retry pinging watchdog server: " + tries);
- setTimeout(pingAgain, 20000); //Retry ping after 20 seconds
- }
- }
- if(response){
- if (response.statusCode== 300){
- console.log('try to fetch update form server with file: '+body.response);
- //response.once('finish',function(){
- // console.log('hopefully finished??');
- //setTimeout(updateInstallation(response.body,response),2000); // temp wait 2 seconds for the whole body to arrive
- //updateInstallation(response.body, response);
- // });
- //response.download(body.response);
- }else
- if(response.statusCode != 200){
- // console.log("Watchdog Error: could not ping server. Server responded: " + response.statusCode + " " + response.body);
- //updateInstallation(response.body, response);
- if (tries < maxTries)
- {
- tries++;
- console.log("Retry pinging watchdog server: " + tries);
- setTimeout(pingAgain, 20000); //Retry ping after 20 seconds
- }
- } else {
- tries = 0;
- }
- }
- }).on('data',function(data){
- receivedData+=data;
- }).on('end',function(data){
- if(receivedData && receivedData.includes('{')){
- if(receivedData.includes('{')){
- console.log('includes some stuff so has to be json!');
- }
- console.log('json file! with content: '+receivedData);
- applySettings(receivedData);
- }else{
- //console.log('callback final fniished!: '+receivedData);//+receivedData);
- updateInstallation(receivedData);
- }
- });
- }
- function applySettings(jsonString){
- let loadedSettings = JSON.parse(jsonString);
- console.log('loaded settings auto update: '+loadedSettings.AutoUpdate)
- //if(loadedSettings.AutoUpdate != autoUpdate){
- autoUpdate = loadedSettings.AutoUpdate;
- let newSettings = {
- AutoUpdate : loadedSettings.AutoUpdate
- };
- console.log('newsettings before: '+newSettings);
- var finalSettings = JSON.stringify(newSettings);
- console.log('new settings after: '+finalSettings);
- serverCallback(newSettings.AutoUpdate);
- fs.writeFileSync('settings.json',finalSettings,function(err){
- if(err)throw err;
- });
- console.log('\n \ndone writing settings!!');
- //}else{
- // console.log('same settings no need to write!');
- //}
- // todo:: call server callback to remove the temp update from the db
- }
- function serverCallback(autoUpdate){
- console.log('try to get: '+serverurl+'updateClientSettings/'+InstallationID+'/'+autoUpdate);
- request(serverurl+'updateClientSettings/'+InstallationID+'/'+autoUpdate, {
- 'auth': {
- user: 'thomas',
- pass: '123fat123'
- },
- encoding: 'binary'
- }, function(error, response, body){
- if(response){
- if(response.statusCode== 300){
- //console.log('response: '+body);
- console.log('client is happy!');
- }
- }
- });
- }
- function updateInstallation(content){
- var lines = content.split(',');//.replace(/\n$/, '');
- console.log('lines count: '+lines.length);
- var newLines = lines;
- for(var i = 0; i< lines.length; i++){
- newLines[i] = lines[i].trim().replace(',','');
- downloadFile(newLines[i]);
- }
- //console.log('files downloaded!'); // todo execute shell script to apply on fatplayer
- //running a command!
- //console.log('try to check for files... wait maybe there still gonna come..');
- setTimeout(startShellScript,20000);
- //console.log('timeouto ver');
- }
- function startShellScript(){
- console.log('start shell script');
- var cmd = '/Fatplayer/Downloads/launchUpdate.sh';//'startx /usr/bin/chromium-browser --no-sandbox --test-type --noerrdialog --kiosk --incognito --no-context-menu --disable-pinch --overscroll-history-navigation=0 --no-touch-pinch localhost';
- // var cmd = 'startx'; //Used for debugging --> launches desktop
- exec(cmd, function(error, stdout, stderr) {
- if(error){
- console.log(error);
- console.log("AAAHH DOET T NIET");
- } else {
- console.log("launching action!");
- }
- console.log(stdout);
- console.log(stderr);
- });
- }
- function downloadFile(filePath){
- if(filePath=='') return;
- console.log('try to get: '+serverurl+'downloadFile/'+InstallationID+'/'+filePath);
- request(serverurl+'downloadFile/'+InstallationID+'/'+filePath, {
- 'auth': {
- user: 'thomas',
- pass: '123fat123'
- },
- encoding: 'binary'
- }, function(error, response, body){
- if(response){
- //if(response.statusCode== 300){
- //console.log('response: '+body);
- console.log('created file: '+filePath);
- // if files already in fatplayerfiles.. make backup of older file..
- writeFile(__dirname+"/Downloads/"+filePath,body,function(err){
- if(err){
- console.log(err);
- }
- });
- SaveFileStatusOnServer(filePath);
- //}
- }
- });
- }
- function SaveFileStatusOnServer(filePath){
- console.log('try to get: '+serverurl+'updateClientFile/'+InstallationID+'/'+filePath);
- request(serverurl+'updateClientFile/'+InstallationID+'/'+filePath, {
- 'auth': {
- user: 'thomas',
- pass:'123fat123'
- },
- encoding: 'binary '
- }, function(error, response, body){
- if(response){
- if(response.statusCode== 300){
- //console.log('response: '+body);
- console.log('goddamn we got a response! launch shell script when got all responses...');
- }
- }
- });
- }
- var mkdirp = require('mkdirp');
- var getDirName = require('path').dirname;
- function writeFile(path, contents, cb) {
- mkdirp(getDirName(path), function (err) {
- if (err) return cb(err);
- fs.writeFile(path, contents, 'binary',function(err){
- if(err){
- console.log('err '+err);
- }
- });
- });
- }
- function readSettings(){
- let rawdata = fs.readFileSync('settings.json');
- let settings = JSON.parse(rawdata);
- autoUpdate = settings.AutoUpdate;
- console.log('settings auto update: '+autoUpdate);
- }
Add Comment
Please, Sign In to add comment