Commit fd307238 authored by Ahmad Nemati's avatar Ahmad Nemati

init

parent 86bb64cc
const HetznerCloud = require('hcloud-js')
let client
let _ = require('lodash')
class Hetzner {
constructor(token) {
client = new HetznerCloud.Client(token)
}
getAllServers() {
return new Promise(function (resolve, reject) {
client.servers.list().then(function (res) {
// console.log(res)
let d = _.values(res.servers);
resolve(d)
})
})
}
async deleteServer(id) {
return new Promise(function (resolve, reject) {
client.servers.delete(id).then(function (res) {
resolve(res)
})
})
}
async removeByIp(ip) {
try {
let servers = await this.getAllServers()
for (let i = 0; i < servers.length; i++) {
if (ip === servers[i].publicNet.server.publicNet.ipv4.ip)
await this.deleteServer(servers[i].id)
}
} catch (e) {
}
return true
}
async getAllFloatingIps() {
}
deleteFloatingIp(id) {
}
createServer(name) {
// nuremberg nbg1
//fsn1
return new Promise(function (resolve, reject) {
client.servers.build(name)
.serverType('cx51-ceph')
.location('fsn1')
.image('9541194')
.sshKey('ffgf')
.create()
.then(function (response) {
resolve(response)
})
.catch(function (error) {
// Handle error...
})
})
}
}
module.exports = Hetzner;
......@@ -3,7 +3,8 @@ const app = express()
const port = 3000
const shell = require('shelljs')
const cron = require('node-cron');
const cronRemover = require('node-cron');
const fs = require('fs')
app.get('/', (req, res) => {
res.send('Hello World!')
......@@ -29,7 +30,7 @@ async function addNewIp(req, res) {
}
async function addBaship(ip) {
return await shell.exec(' ip addr add '+ip+' dev eth0').stderr;
return await shell.exec(' ip addr add ' + ip + ' dev eth0').stderr;
}
......@@ -38,7 +39,7 @@ app.listen(port, () => console.log(`Example app listening on port ${port}!`))
async function run() {
let a = await shell.exec('cd .. && cd mt && sudo ./server1.sh', {silent: true}).stdout;
// await shell.exec('iptables -A INPUT -s 95.156.255.148 -p ICMP --icmp-type 8 -j ACCEPT && iptables -A INPUT -p ICMP --icmp-type 8 -j DROP', {silent: true}).stdout;
// await shell.exec('iptables -A INPUT -s 95.156.255.148 -p ICMP --icmp-type 8 -j ACCEPT && iptables -A INPUT -p ICMP --icmp-type 8 -j DROP', {silent: true}).stdout;
console.log('Reset Proxy')
}
......@@ -53,3 +54,61 @@ cron.schedule('*/10 * * * * *', () => {
checkProcessWork()
});
cronRemover.schedule(' */1 * * * *', () => {
remover()
addIp()
});
async function remover() {
let work = await getWork()
if (work === 'true')
return true
let ip = getIp()
var contents = await fs.readFileSync('./token.txt', 'utf8');
let Hetzner = require('./Hetzner')
let het = new Hetzner(contents)
await het.deleteServer(ip)
}
function getWork() {
const request = require('request');
let url = 'http://admin.fcfglobal.co:3000/work/'
return new Promise(function (resolve, reject) {
request(url, {timeout: 15000}, function (error, res, body) {
resolve(body)
});
});
}
function addIp() {
const request = require('request');
let url = 'http://admin.fcfglobal.co:3000/add/'
return new Promise(function (resolve, reject) {
request(url, {timeout: 15000}, function (error, res, body) {
resolve(body)
});
});
}
function getIp() {
const request = require('request');
let url = 'http://admin.fcfglobal.co:3000/getIp/'
return new Promise(function (resolve, reject) {
request(url, {timeout: 15000}, function (error, res, body) {
resolve(body)
});
});
}
......@@ -7,7 +7,10 @@
},
"dependencies": {
"express": "~4.16.0",
"shelljs": "^0.8.3",
"node-cron": "^2.0.3"
"hcloud-js": "^1.2.0",
"lodash": "^4.17.15",
"node-cron": "^2.0.3",
"request": "^2.88.0",
"shelljs": "^0.8.3"
}
}
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