Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
Hetzner-Master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Hetzner-Master
Commits
d54480a4
Commit
d54480a4
authored
Mar 15, 2020
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init
parent
6a6be3ea
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
101 additions
and
29 deletions
+101
-29
Hetzner.js
Hetzner.js
+4
-1
app.js
app.js
+70
-20
package.json
package.json
+2
-1
test.js
test.js
+25
-7
No files found.
Hetzner.js
View file @
d54480a4
...
...
@@ -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
=
newG
eneration
===
true
?
newG
:
newG
let
command
=
newG
command
=
command
.
replace
(
'
ahmad
'
,
tokens
)
...
...
app.js
View file @
d54480a4
...
...
@@ -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
'
);
...
...
package.json
View file @
d54480a4
...
...
@@ -13,6 +13,7 @@
"
node-cron
"
:
"
^2.0.3
"
,
"
request
"
:
"
^2.88.0
"
,
"
shell-exec
"
:
"
^1.0.2
"
,
"
shelljs
"
:
"
^0.8.3
"
"
shelljs
"
:
"
^0.8.3
"
,
"
moment-timezone
"
:
"
^0.5.21
"
}
}
test.js
View file @
d54480a4
...
...
@@ -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
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment