Commit d54480a4 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 6a6be3ea
...@@ -156,6 +156,9 @@ class Hetzner { ...@@ -156,6 +156,9 @@ class Hetzner {
} }
async getMasterServerId() { async getMasterServerId() {
try { try {
...@@ -186,7 +189,7 @@ class Hetzner { ...@@ -186,7 +189,7 @@ class Hetzner {
rand = 'Server' + rand rand = 'Server' + rand
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
let command = newGeneration === true ? newG : newG let command = newG
command=command.replace('ahmad',tokens) command=command.replace('ahmad',tokens)
......
...@@ -57,7 +57,7 @@ app.get('/test', (req, res) => { ...@@ -57,7 +57,7 @@ app.get('/test', (req, res) => {
async function newFloatingIpsOrder(req, res) { async function newFloatingIpsOrder(req, res) {
let order = parseInt(req.params.num) let order = parseInt(req.params.num)
res.send('Floating Ips from ' + (order === 1 ? 'Nuremberg' : order === 2 ? 'Falkenstein' : 'Helsinki') + ' Requested') res.send('Floating Ips from ' + (order === 1 ? 'Nuremberg' : order === 2 ? 'Falkenstein' : 'Helsinki') + ' Requested')
let ips = await het.getAllFloatingIps() let ips = await het.getAllFloatingIps()
if (ips.length === 10) if (ips.length === 10)
return return
...@@ -83,7 +83,7 @@ async function newServerOrder(req, res) { ...@@ -83,7 +83,7 @@ async function newServerOrder(req, res) {
let order = parseInt(req.params.num) let order = parseInt(req.params.num)
res.send('Create Server from ' + (order === 1 ? 'Nuremberg' : order ===2 ?'Falkenstein' : 'Helsinki') + ' Requested') res.send('Create Server from ' + (order === 1 ? 'Nuremberg' : order === 2 ? 'Falkenstein' : 'Helsinki') + ' Requested')
let ips = await het.getAllServers() let ips = await het.getAllServers()
if (ips.length === 10) if (ips.length === 10)
return return
...@@ -149,10 +149,61 @@ async function init() { ...@@ -149,10 +149,61 @@ async function init() {
addMaster() addMaster()
postRequest() postRequest()
checkIps() checkIps()
checkServers()
} }
async function checkServers() {
let servers = await het.getAllServers('fsn1')
console.log(servers)
for (let i = 0; i < servers.length; i++)
if (servers[i].name !== 'master') {
let min = getMinDiff(servers[i].created)
let status = await getWorkFloating(servers[i].publicNet.server.publicNet.ipv4.ip)
status = parseInt(status)
switch (status) {
case 404:
if (min > 20) {
await het.deleteServer(servers[i].id)
console.log('Need remove server ' + servers[i].name + ' Idle is ' + min)
}
break
case 400:
if (min > 20) {
await het.deleteServer(servers[i].id)
console.log('Need remove server ' + servers[i].name + ' Idle is ' + min)
}
break
case 0:
console.log('Need remove server ' + servers[i].name + ' Status is 0')
await het.deleteServer(servers[i].id)
break
case 1:
console.log('All work server ' + servers[i].name)
break
}
// console.log(getMinDiff(servers[i].created))
}
}
function getMinDiff(end) {
//2019-05-25T05:34:27+04:30
let moment = require('moment-timezone')
var now = moment(moment().tz('Asia/Tehran').format());
var end = moment.duration(now.diff(moment(end).tz('Asia/Tehran')));
return parseInt(end.asMinutes())
}
async function checkIps() { async function checkIps() {
let ips = await het.getAllFloatingIps() let ips = await het.getAllFloatingIps()
for (let i = 0; i < ips.length; i++) { for (let i = 0; i < ips.length; i++) {
...@@ -317,34 +368,33 @@ function postRequest() { ...@@ -317,34 +368,33 @@ function postRequest() {
}); });
} }
async function calculateSpeed() { async function calculateSpeed() {
let d = await shellExec('vnstat -tr')
d = d.stdout
let arr = d.match(decimalPointRegex) let d = await shellExec('vnstat -tr')
d = d.stdout
let arr = d.match(decimalPointRegex)
if (d.includes('kbit/s')) { if (d.includes('kbit/s')) {
arr[0] = 1 arr[0] = 1
arr[1] = 1 arr[1] = 1
} else if (d.includes('Mbit/s')) { } else if (d.includes('Mbit/s')) {
} else if (d.includes('Gbit/s')) { } else if (d.includes('Gbit/s')) {
arr[0] = arr[0] * 1000 arr[0] = arr[0] * 1000
arr[1] = arr[1] * 1000 arr[1] = arr[1] * 1000
} else if (d.includes('bit/s')) { } else if (d.includes('bit/s')) {
arr[0] = 1 arr[0] = 1
arr[1] = 1 arr[1] = 1
} }
await sendRate(arr[0], arr[1]) await sendRate(arr[0], arr[1])
} }
function sendRate(rx, tx) { function sendRate(rx, tx) {
const request = require('request'); const request = require('request');
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
"node-cron": "^2.0.3", "node-cron": "^2.0.3",
"request": "^2.88.0", "request": "^2.88.0",
"shell-exec": "^1.0.2", "shell-exec": "^1.0.2",
"shelljs": "^0.8.3" "shelljs": "^0.8.3",
"moment-timezone": "^0.5.21"
} }
} }
...@@ -10,22 +10,41 @@ const request = require('request'); ...@@ -10,22 +10,41 @@ const request = require('request');
const fs = require('fs') const fs = require('fs')
const cronSpeed = require('node-cron'); const cronSpeed = require('node-cron');
const shellExec = require('shell-exec') const shellExec = require('shell-exec')
let constant=require('./constant') let constant = require('./constant')
const cryptLib = require('@skavinvarnan/cryptlib'); const cryptLib = require('@skavinvarnan/cryptlib');
const key = "6*sN_rZxHD4!X$=T"; const key = "6*sN_rZxHD4!X$=T";
let Hetzner = require('./Hetzner') let Hetzner = require('./Hetzner')
let het let het
tesT() tesT()
async function tesT()
{ async function tesT() {
await init() await init()
// let masterid=await het.getMasterServerId() // let masterid=await het.getMasterServerId()
let d=await het.getAllServers('fsn1')
console.log(d.length) }
function getWorkFloating(ip) {
const request = require('request');
let url = 'http://admin.fcfglobal.co:3000/getIpDetail/' + ip
return new Promise(function (resolve, reject) {
request(url, {timeout: 15000}, function (error, res, body) {
resolve(body)
});
});
} }
function getMinDiff(end) {
//2019-05-25T05:34:27+04:30
let moment = require('moment-timezone')
var now = moment(moment().tz('Asia/Tehran').format());
var end = moment.duration(now.diff(moment(end).tz('Asia/Tehran')));
return parseInt(end.asMinutes())
}
async function init() { async function init() {
var contents = await fs.readFileSync('./token.txt', 'utf8'); var contents = await fs.readFileSync('./token.txt', 'utf8');
het = new Hetzner(contents) het = new Hetzner(contents)
...@@ -37,7 +56,6 @@ async function init() { ...@@ -37,7 +56,6 @@ async function init() {
} }
function postFloatingIps(data) { function postFloatingIps(data) {
data = JSON.stringify(data) data = JSON.stringify(data)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment