Commit d54480a4 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 6a6be3ea
......@@ -156,6 +156,9 @@ class Hetzner {
}
async getMasterServerId() {
try {
......@@ -186,7 +189,7 @@ class Hetzner {
rand = 'Server' + rand
return new Promise(function (resolve, reject) {
let command = newGeneration === true ? newG : newG
let command = newG
command=command.replace('ahmad',tokens)
......
......@@ -57,7 +57,7 @@ app.get('/test', (req, res) => {
async function newFloatingIpsOrder(req, res) {
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()
if (ips.length === 10)
return
......@@ -83,7 +83,7 @@ async function newServerOrder(req, res) {
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()
if (ips.length === 10)
return
......@@ -149,10 +149,61 @@ async function init() {
addMaster()
postRequest()
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() {
let ips = await het.getAllFloatingIps()
for (let i = 0; i < ips.length; i++) {
......@@ -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')) {
arr[0] = 1
arr[1] = 1
} else if (d.includes('Mbit/s')) {
if (d.includes('kbit/s')) {
arr[0] = 1
arr[1] = 1
} else if (d.includes('Mbit/s')) {
} else if (d.includes('Gbit/s')) {
arr[0] = arr[0] * 1000
arr[1] = arr[1] * 1000
} else if (d.includes('bit/s')) {
arr[0] = 1
arr[1] = 1
}
} else if (d.includes('Gbit/s')) {
arr[0] = arr[0] * 1000
arr[1] = arr[1] * 1000
} else if (d.includes('bit/s')) {
arr[0] = 1
arr[1] = 1
}
await sendRate(arr[0], arr[1])
await sendRate(arr[0], arr[1])
}
}
function sendRate(rx, tx) {
const request = require('request');
......
......@@ -10,22 +10,41 @@ const request = require('request');
const fs = require('fs')
const cronSpeed = require('node-cron');
const shellExec = require('shell-exec')
let constant=require('./constant')
let constant = require('./constant')
const cryptLib = require('@skavinvarnan/cryptlib');
const key = "6*sN_rZxHD4!X$=T";
let Hetzner = require('./Hetzner')
let het
tesT()
async function tesT()
{
async function tesT() {
await init()
// let masterid=await het.getMasterServerId()
let d=await het.getAllServers('fsn1')
console.log(d.length)
// let masterid=await het.getMasterServerId()
}
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() {
var contents = await fs.readFileSync('./token.txt', 'utf8');
het = new Hetzner(contents)
......@@ -37,7 +56,6 @@ async function init() {
}
function postFloatingIps(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