Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ai
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
ai
Commits
14887235
Commit
14887235
authored
Jan 05, 2022
by
Ahmad Nemati
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
init
parent
596b0de5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
452 additions
and
106 deletions
+452
-106
ai.js
ai.js
+2
-0
test_cal.js
test_cal.js
+450
-106
No files found.
ai.js
View file @
14887235
...
...
@@ -98,6 +98,8 @@ let obj
obj
.
maxAllocatedMoney
=
maxAllocatedMoney
obj
.
maxLevel
=
maxLevel
obj
.
step
=
step
obj
.
perReserve
=
Math
.
abs
(((
maxReserve
*
100
)
/
maxAllocatedMoney
))
obj
.
perMeta
=
Math
.
abs
(((
maxMeta
*
100
)
/
maxAllocatedMoney
))
}
...
...
test_cal.js
View file @
14887235
let
fs
=
require
(
'
fs
'
)
let
_
=
require
(
'
lodash
'
)
let
drawDown
=
[
30
,
40
,
50
]
let
sort
=
'
profitPerMonth
'
let
alocatedReserve
=
3
let
alocatedReserveCompound
=
3
let
dir
work
()
async
function
work
()
{
var
args
=
process
.
argv
.
slice
(
2
);
dir
=
args
[
0
]
let
directory
=
await
fs
.
readdirSync
(
'
last1000/
'
+
dir
)
for
(
let
i
=
0
;
i
<
directory
.
length
;
i
=
i
+
1000
)
{
// console.log('hi')
let
arr
=
[]
for
(
let
j
=
0
;
j
<
1000
;
j
++
)
{
try
{
if
((
j
+
i
)
<
directory
.
length
)
arr
.
push
(
directory
[
j
+
i
])
}
catch
(
e
)
{
var
AWS
=
require
(
'
aws-sdk
'
);
var
shell
=
require
(
'
shelljs
'
);
const
request
=
require
(
'
request
'
);
let
moment
=
require
(
'
moment-timezone
'
)
let
utils
=
require
(
'
./utils
'
)
const
fs
=
require
(
'
fs
'
);
const
db
=
require
(
'
./../database/db
'
)
var
lightsail
}
class
Amazon
{
constructor
(
account
,
regionParam
,
serverParam
)
{
this
.
region
=
regionParam
this
.
server
=
serverParam
}
}
async
init
()
{
let
ip
=
await
utils
.
getIp
()
let
acc
=
await
db
.
getAccByIp
(
ip
)
var
config
=
new
AWS
.
Config
({
accessKeyId
:
acc
.
access
,
secretAccessKey
:
acc
.
secret
,
region
:
this
.
region
});
if
(
arr
.
length
!==
0
)
{
let
timestamp
=
Date
.
now
()
try
{
await
fs
.
mkdirSync
(
'
final1000/
'
+
dir
+
'
/
'
+
timestamp
)
await
fs
.
mkdirSync
(
'
final1000/
'
+
dir
+
'
/
'
+
timestamp
+
'
/default
'
)
// for (let z=0;z<drawDown.length;z++)
// await fs.mkdirSync('final1000/' + timestamp+'/drawDown'+drawDown[z])
}
catch
(
e
)
{
}
lightsail
=
new
AWS
.
Lightsail
(
config
)
}
run
(
'
default
'
,
'
compound1000
'
,
arr
,
timestamp
)
run
(
'
default
'
,
'
compound1000Start
'
,
arr
,
timestamp
)
run
(
'
default
'
,
'
profitPerMonth1000
'
,
arr
,
timestamp
)
// generateByDrawDown(timestamp,arr)
await
run
(
'
default
'
,
'
profitPerMonth1000Start
'
,
arr
,
timestamp
)
async
getIp
(
proxy
)
{
try
{
await
this
.
deAttachStaticIp
()
}
catch
(
e
)
{
}
// run('profitPerMonth1000', arr, timestamp)
//
//
// // run('percentage1000', arr, timestamp)
// run('compound1000', arr, timestamp)
// run('profitPerMonth1000Start', arr, timestamp)
// await run('compound1000Start', arr, timestamp)
// run('allocatedReservePerMonthUnder2', arr, timestamp)
// await run('allocatedReserveCompoundUnder2', arr, timestamp)
await
this
.
attachStaticIp
(
proxy
.
instance
)
await
this
.
deAttachStaticIp
()
let
ip
=
await
this
.
getIpAddressOfInstance
(
proxy
.
instance
)
try
{
await
this
.
doRequest
(
ip
)
}
catch
(
e
)
{
await
this
.
initFirewall
(
proxy
.
instance
)
await
this
.
doRequest
(
ip
)
}
return
ip
}
}
async
function
generateByDrawDown
(
timestamp
,
arr
)
{
for
(
let
i
=
0
;
i
<
drawDown
.
length
;
i
++
)
{
run
(
'
drawDown
'
+
drawDown
[
i
],
'
compound1000DrawDown
'
+
drawDown
[
i
],
arr
,
timestamp
)
run
(
'
drawDown
'
+
drawDown
[
i
],
'
compound1000StartDrawDown
'
+
drawDown
[
i
],
arr
,
timestamp
)
run
(
'
drawDown
'
+
drawDown
[
i
],
'
profitPerMonth1000DrawDown
'
+
drawDown
[
i
],
arr
,
timestamp
)
await
run
(
'
drawDown
'
+
drawDown
[
i
],
'
profitPerMonth1000StartDrawDown
'
+
drawDown
[
i
],
arr
,
timestamp
)
async
createInstance
(
snap
,
nparam
)
{
let
name
if
(
nparam
)
name
=
nparam
else
name
=
'
Cluster
'
+
this
.
randomInt
(
0
,
500000
)
await
this
.
createInstanceFromSnashot
(
name
,
snap
)
await
this
.
sleep
(
15000
)
// try {
// await this.initFirewall(name)
// }
// catch (e) {
//
// }
let
ip
try
{
ip
=
await
this
.
getIpAddressOfInstance
(
name
)
}
catch
(
e
)
{
}
// await this.doRequest(ip)
//await rebootInstance(name)
return
{
name
:
name
,
ip
:
ip
}
}
}
async
function
run
(
root
,
name
,
directory
,
timestamp
)
{
// let directory = await fs.readdirSync('last1000')
let
arr2
=
[]
let
arrFinal
=
[]
let
last
=
[]
// console.log(directory)
for
(
let
f
=
0
;
f
<
directory
.
length
;
f
++
)
{
if
(
typeof
directory
[
f
]
===
"
undefined
"
)
continue
console
.
log
(
directory
[
f
])
arrFinal
.
push
(
readFile
(
root
,
name
,
directory
[
f
]))
sleep
(
millis
)
{
return
new
Promise
(
resolve
=>
setTimeout
(
resolve
,
millis
));
}
arrFinal
=
await
Promise
.
all
(
arrFinal
)
attachStaticIp
(
instance
)
{
let
ipname
=
'
StaticIp-1
'
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
attachStaticIp
({
staticIpName
:
ipname
,
instanceName
:
instance
}
,
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error attachStaticIp
'
)
}
if
(
data
)
resolve
(
true
)
});
});
}
deAttachStaticIp
()
{
let
ipname
=
'
StaticIp-1
'
return
new
Promise
(
function
(
resolve
,
reject
)
{
for
(
let
i
=
0
;
i
<
arrFinal
.
length
;
i
++
)
{
let
inline
=
arrFinal
[
i
]
// console.log(inline)
lightsail
.
detachStaticIp
({
staticIpName
:
ipname
},
function
(
error
,
data
)
{
if
(
error
)
{
reject
(
'
Error deAttachStaticIp
'
)
}
for
(
let
z
=
0
;
z
<
inline
.
length
;
z
++
)
arr2
.
push
(
inline
[
z
])
if
(
data
)
resolve
(
true
)
})
});
}
// console.log(arr2)
let
t
=
name
.
toLowerCase
()
if
(
t
.
includes
(
'
per
'
)
||
name
===
'
profitPerMonth1000
'
||
name
===
'
allocatedReservePerMonthUnder3
'
||
name
===
'
allocatedReservePerMonthUnder2
'
||
name
===
'
profitPerMonth1000Start
'
)
last
=
_
.
orderBy
(
arr2
,
[
'
profitPerMonthDrawDown
'
],
[
'
desc
'
]);
releaseStaticIp
(
name
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
params
=
{
staticIpName
:
name
/* required */
};
lightsail
.
releaseStaticIp
(
params
,
function
(
error
,
data
)
{
if
(
error
)
reject
(
'
Error releaseStaticIp
'
)
if
(
data
)
resolve
(
true
)
});
// if (name === 'percentage1000')
// last = _.orderBy(arr2, ['percentage'], ['asc']);
});
}
createSnapshutFromInstace
()
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
if
(
t
.
includes
(
'
compound
'
)
||
name
===
'
compound1000
'
||
name
===
'
allocatedReserveCompoundUnder3
'
||
name
===
'
allocatedReserveCompoundUnder2
'
||
name
===
'
compound1000Start
'
)
last
=
_
.
orderBy
(
arr2
,
[
'
CompoundPerMonthDrawDown
'
],
[
'
desc
'
]);
var
params
=
{
instanceName
:
'
Ubuntu-1
'
,
/* required */
instanceSnapshotName
:
'
snapx
'
,
/* required */
};
lightsail
.
createInstanceSnapshot
(
params
,
function
(
err
,
data
)
{
if
(
err
)
reject
(
'
Error create snapx
'
)
if
(
data
)
resolve
(
true
)
});
let
las
=
[]
for
(
let
i
=
0
;
i
<
1000
;
i
++
)
{
if
(
i
<
last
.
length
)
las
.
push
(
last
[
i
])
});
}
create
fileADV
(
root
,
timestamp
,
name
,
JSON
.
stringify
(
las
,
null
,
2
))
create
StaticIp
(
name
)
{
last
=
[]
}
return
new
Promise
(
function
(
resolve
,
reject
)
{
async
function
readFile
(
root
,
name
,
directory
)
{
let
sortByProfit
=
[]
let
file
=
await
fs
.
readFileSync
(
'
./last1000/
'
+
dir
+
'
/
'
+
directory
+
'
/
'
+
root
+
'
/
'
+
name
+
'
.json
'
,
'
utf8
'
)
file
=
JSON
.
parse
(
file
)
var
params
=
{
staticIpName
:
name
/* required */
};
lightsail
.
allocateStaticIp
(
params
,
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error createStaticIp
'
)
}
// file = _.orderBy(file, sort, ['desc']);
for
(
let
j
=
0
;
j
<
file
.
length
;
j
++
)
{
if
(
data
)
resolve
(
data
)
});
sortByProfit
.
push
(
file
[
j
])
});
}
getAllInstances
()
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
return
file
}
function
createfileADV
(
root
,
timestamp
,
filename
,
data
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
fs
.
writeFile
(
'
final1000/
'
+
dir
+
'
/
'
+
timestamp
+
'
/
'
+
root
+
'
/
'
+
filename
+
'
.json
'
,
data
,
'
utf8
'
,
function
(
err
)
{
if
(
err
)
reject
(
err
);
else
resolve
(
data
);
lightsail
.
getInstances
(
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error getAllInstances
'
)
}
if
(
data
)
resolve
(
data
.
instances
)
})
});
}
getAllIps
()
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
getStaticIps
(
function
(
error
,
data
)
{
if
(
error
)
reject
(
'
Error getAllIps
'
)
if
(
data
)
resolve
(
data
.
staticIps
)
})
});
}
rebootInstance
(
proxy
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
rebootInstance
({
instanceName
:
proxy
.
instance
},
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
resolve
(
false
)
}
if
(
data
)
resolve
(
true
)
})
});
}
getIpAddressOfInstance
(
instance
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
getInstance
({
instanceName
:
instance
},
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error getIpAddressOfInstance
'
)
}
if
(
data
)
resolve
(
data
.
instance
.
publicIpAddress
)
});
});
}
deleteInstance
(
instance
)
{
var
params
=
{
instanceName
:
instance
/* required */
};
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
deleteInstance
(
params
,
function
(
error
,
data
)
{
if
(
error
)
reject
(
'
Error deleteInstance
'
)
if
(
data
)
resolve
(
data
)
});
});
}
getInstance
(
instance
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
getInstance
({
instanceName
:
instance
},
function
(
error
,
data
)
{
if
(
error
)
reject
(
'
Error getInstance
'
)
if
(
data
)
resolve
(
data
.
instance
)
});
});
});
}
\ No newline at end of file
}
initFirewall
(
instance
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
params
=
{
instanceName
:
instance
,
portInfos
:
[
{
fromPort
:
0
,
protocol
:
'
all
'
,
toPort
:
65535
},
]
};
lightsail
.
putInstancePublicPorts
(
params
,
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error putInstancePublicPorts
'
)
}
if
(
data
)
resolve
(
data
)
});
});
}
copySnapShut
(
snap
,
region
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
params
=
{
sourceRegion
:
region
,
targetSnapshotName
:
snap
,
sourceSnapshotName
:
snap
,
};
lightsail
.
copySnapshot
(
params
,
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error copySnapshot
'
)
}
if
(
data
)
resolve
(
data
)
});
});
}
getInstanceOpenPort
(
instance
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
lightsail
.
getInstancePortStates
({
instanceName
:
instance
},
function
(
error
,
data
)
{
if
(
error
)
reject
(
error
)
if
(
data
)
resolve
(
data
)
});
});
}
createInstanceFromSnashot
(
instanceName
,
snap
)
{
let
reg
=
this
.
region
let
server
=
this
.
server
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
params
=
{
availabilityZone
:
reg
+
'
a
'
,
/* required */
bundleId
:
server
,
/* required */
instanceNames
:
[
instanceName
],
instanceSnapshotName
:
snap
,
/* required */
};
lightsail
.
createInstancesFromSnapshot
(
params
,
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error createInstancesFromSnapshot
'
)
}
if
(
data
)
resolve
(
data
)
});
});
}
createInstanceFromNormalWay
()
{
let
reg
=
this
.
region
let
server
=
'
large_2_0
'
let
command
=
"
cd /home/ubuntu &&
"
+
"
git clone http://49.12.200.60/root/mt2oldAmazon.git
"
+
"
&& mv mt2oldAmazon mt
"
+
"
&& cd mt && chmod 777
"
+
"
* && ./install.sh && cd ..
"
+
"
&& git clone http://49.12.200.60/root/rt2old.git
"
+
"
&& mv rt2old rt2 &&
"
+
"
cd rt2 && chmod
"
+
"
777 * && ./run.sh &&
"
+
"
sudo pm2 start app.js &&
"
+
"
sudo pm2 startup &&
"
+
"
sudo pm2 save &&
"
+
"
sleep 5 && reboot
"
return
new
Promise
(
function
(
resolve
,
reject
)
{
var
params
=
{
availabilityZone
:
reg
+
'
a
'
,
/* required */
blueprintId
:
'
ubuntu_18_04
'
,
/* required */
bundleId
:
'
large_2_0
'
,
/* required */
instanceNames
:
[
/* required */
'
Ubuntu-1
'
,
'
Ubuntu-2
'
],
userData
:
command
};
if
(
reg
===
'
eu-north-1
'
)
params
.
bundleId
=
'
large_2_3
'
lightsail
.
createInstances
(
params
,
function
(
error
,
data
)
{
if
(
error
)
{
console
.
log
(
error
)
reject
(
'
Error createInstancesFromNormalWay
'
)
}
if
(
data
)
{
console
.
log
(
data
)
resolve
(
data
)
}
});
});
}
async
foundInstance
(
meta
)
{
let
instance
=
await
this
.
getAllInstances
()
for
(
let
i
=
0
;
i
<
instance
.
length
;
i
++
)
{
if
(
instance
[
i
].
name
===
meta
)
{
return
{
found
:
true
,
createdAt
:
instance
[
i
].
createdAt
}
}
}
return
{
found
:
false
}
}
async
foundNormalInstance
(
meta
)
{
let
instance
=
await
this
.
getAllInstances
()
for
(
let
i
=
0
;
i
<
instance
.
length
;
i
++
)
{
if
(
instance
[
i
].
name
===
meta
)
{
return
true
}
}
return
false
}
async
getDaysCreate
(
meta
)
{
let
instance
=
await
this
.
getAllInstances
()
for
(
let
i
=
0
;
i
<
instance
.
length
;
i
++
)
{
if
(
instance
[
i
].
name
===
meta
)
return
this
.
getMinDays
(
instance
[
i
].
createdAt
)
}
return
false
}
getMinDays
(
end
)
{
var
now
=
moment
(
moment
().
tz
(
'
Asia/Tehran
'
).
format
());
var
end
=
moment
.
duration
(
now
.
diff
(
moment
(
end
).
tz
(
'
Asia/Tehran
'
)));
return
parseInt
(
end
.
asDays
())
}
async
isIpAlive
(
ip
)
{
let
a
=
await
shell
.
exec
(
'
ping
'
+
ip
+
'
-c 3
'
,
{
silent
:
true
}).
stdout
;
a
=
a
.
split
(
'
,
'
)[
2
].
split
(
'
%
'
)[
0
]
a
=
parseInt
(
a
)
return
a
<=
30
}
randomInt
(
low
,
high
)
{
return
Math
.
floor
(
Math
.
random
()
*
(
high
-
low
)
+
low
)
}
doRequest
(
ip
)
{
let
url
=
'
http://
'
+
ip
+
'
:3000
'
return
new
Promise
(
function
(
resolve
,
reject
)
{
request
(
url
,
{
timeout
:
6000
},
function
(
error
,
res
,
body
)
{
try
{
if
(
!
error
&&
res
.
statusCode
===
200
)
{
resolve
(
body
);
}
else
{
reject
(
error
);
}
}
catch
(
e
)
{
reject
(
'
Error Request
'
);
}
});
});
}
}
module
.
exports
=
Amazon
;
\ No newline at end of file
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