UNPKG

3.85 kBJavaScriptView Raw
1/*
2Name: Weslley De Souza
3Date: 30.08.2017
4Version: 1.0
5Notes: minimal Server
6
7CHANGELOG:
8
9 */
10var version;
11/* Libraries */
12const express = require("express")
13 , app = express()
14 , http = require("http")
15 , exec = require('child_process').exec
16 , figlet = require('figlet')
17 , fs = require('fs')
18 , request = require('request')
19 , fetch = require('node-fetch')
20 , path = require('path')
21 , os = require('os')
22 , moment = require('moment');
23 app.locals.moment = require('moment');
24
25
26//CLEAR TERMINAL
27exec("sudo clear", puts);
28
29//EXEC FUNCTIONS
30
31function puts(error, stdout, stderr) {
32 console.log(stdout)
33}
34function showCurrentExternalIP(log=true) {
35 return new Promise((resovle)=>{
36 const rnd = Math.floor(Math.random() * 6);
37 const ipurl = [
38 'http://ifconfig.co/ip',
39 'http://whatismyip.akamai.com/',
40 'http://ip.tyk.nu/',
41 'http://tnx.nl/ip',
42 'http://eth0.me/',
43 'https://4.ifcfg.me/ip'
44 ]
45 try{
46 const options = {
47 url: ipurl[rnd],
48 timeout: 9000
49 };
50 request(options, function (err, resp, body) {
51 if(log)console.log("Current IP: " +body);
52 resovle(body)
53 })
54 }catch (SynatxError)
55 {
56 console.error("error : showCurrentExternalIP")
57 resovle(false)
58 }
59 })
60}
61function startServer() {
62 //Output IP,Port, ServerStatus
63 figlet('HotelPartner', function(err, data) {
64
65 if (err) console.dir(err);
66
67 console.log(data)
68 console.log(os.hostname()+ "is running " + moment().format("DD.MM.YYYY HH:mm"));
69 getVersion(true);
70
71
72 });
73}
74function rebootServer() {
75 exec("reboot", puts);
76 exec("echo 123 | sudo -S reboot", puts);
77}
78function upadteServer(package) {
79
80 if(!package)return;
81 fs.writeFile('/var/node/package.json', JSON.stringify(package), 'utf8', function readFileCallback(err, data){
82 if(err)console.log(err);
83 else {
84 fs.unlink('/var/node/node_modules/hp_pricebot');
85 }
86
87 })
88
89}
90
91function getVersion(log=false) {
92 return new Promise(resolve=>{
93 fs.readFile('/var/node/package.json','utf8', function read(err, data)
94 {
95 const jsnpackage = JSON.parse(data)
96 let currentversion = jsnpackage.dependencies.hp_pricebot.replace(`^`,'').replace(' ','')
97
98 exec('npm show hp_pricebot version', function(error, newversion, stderr) {
99 console.log(currentversion + " "+ newversion.replace(' ',''))
100 if(newversion != currentversion){
101
102 //Set new version
103 jsnpackage.dependencies.hp_pricebot = newversion.replace(' ','');
104 upadteServer(jsnpackage);
105
106
107 if (log){
108 console.log('Current Version: '+currentversion +" There is a newer version: "+newversion);
109 }
110 resolve(newversion);
111 }
112 else{
113 if (log){
114 console.info("Version: "+currentversion);
115 }
116
117 }
118
119 });
120
121 })
122 })
123}
124
125// ----------- ------------- END SERVER CONF----------------------------------
126
127
128//###Export
129module.exports = {
130 "start" :startServer,
131 "reboot" :rebootServer,
132 "fetch" :fetch,
133 "request":request,
134 "os" :os,
135 "exec" :exec,
136 "http" :http,
137 "fs" :fs,
138 "time" :moment,
139 "showExternalIP":showCurrentExternalIP,
140 "version":getVersion
141 };
142
143
144