1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | var version;
|
11 |
|
12 | const 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 |
|
27 | exec("sudo clear", puts);
|
28 |
|
29 |
|
30 |
|
31 | function puts(error, stdout, stderr) {
|
32 | console.log(stdout)
|
33 | }
|
34 | function 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 | }
|
61 | function startServer() {
|
62 |
|
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 | }
|
74 | function rebootServer() {
|
75 | exec("reboot", puts);
|
76 | exec("echo 123 | sudo -S reboot", puts);
|
77 | }
|
78 | function 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 |
|
91 | function 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 |
|
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 |
|
126 |
|
127 |
|
128 |
|
129 | module.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 |
|