apinew / main.js
sjsjd's picture
Update main.js
3c60980 verified
raw
history blame
No virus
5.74 kB
'use strict';
var starttime = new Date().getTime();
const express = require("express");
const cors = require("cors");
const fs = require("fs-extra");
const helmet = require("helmet");
const server = require("./server.js");
const app = express();
const rateLimit = require("express-rate-limit");
const getIP = require('ipware')().get_ip;
const checkIPBlocked = require('./blockIp.js');
const axios = require('axios');
const blockedIPs = JSON.parse(fs.readFileSync('./blockedIP.json', { encoding: 'utf-8' }));
const checkAPI = require("./public/API_KEY/data/checkKey.js");
const api = require("./public/API_KEY/data/api_key.js");
const APIKEY = require("./public/API_KEY/data/data_apikey.json");
global.checkAPI = checkAPI.checkKey
//global.config = config;
global.APIKEY = APIKEY;
const handleBlockIP = rateLimit({
windowMs: 60 * 1000,
max: 100,
handler: function (req, res, next) {
const ipInfo = getIP(req);
const ip = ipInfo.clientIp;
if (!blockedIPs.includes(ip)) {
blockedIPs.push(ip);
fs.writeFileSync('./blockedIP.json', JSON.stringify(blockedIPs, null, 2));
console.log(`[ RATE LIMIT ] → Đã block IP: ${ip}`);
}
next();
}
});
app.use(handleBlockIP);
app.use(checkIPBlocked);
app.use(helmet());
app.use(express.json());
app.use(cors());
app.use(function(req, res, next) {
var ipInfo = getIP(req);
var color = ["\x1b[31m", "\x1b[32m", "\x1b[33m", '\x1b[34m', '\x1b[35m', '\x1b[36m', '\x1b[37m', "\x1b[38;5;205m", "\x1b[38;5;51m", "\x1b[38;5;197m", "\x1b[38;5;120m", "\x1b[38;5;208m", "\x1b[38;5;220m", "\x1b[38;5;251m"];
var more = color[Math.floor(Math.random() * color.length)];
console.log(more + '[ IP ] → ' + ipInfo.clientIp + ' - Đã yêu cầu tới folder:' +req.url);
//console.log(req.hostname)
next();
});
app.post('/')
app.get("/apikey",api.index);
app.use(express.static(__dirname+'/webpage/public'));
/*app.use(
helmet.contentSecurityPolicy({
useDefaults: true,
directives: {
"img-src": ["'self'", "https: data:"]
}
})
)*/
app.get('/go', async (req, res, next) => {
const path = require('path').join(__dirname, '/public/toolsbot/data/data.json');
var database =require(__dirname+'/public/toolsbot/data/data.json');
const { id } = req.query;
if(!id) return res.json({ error: 'thiếu dữ liệu!'} );
if(id) {
const fLink = database.find(i => i.id == id);
if(fLink == undefined) {
return res.json({error:"cannot find link"});
}
// res.status(200);
//next();
return res.redirect(fLink.url);
}
})
app.get('/', function(req, res) {
//res.set("Content-Security-Policy", "default-src 'self'");
res.sendFile(__dirname + '/webpage/index.html');
}).listen(app.get('port'), function() {
console.log('\x1b[36m=====================================================\n\x1b[38;5;220m[ START ] \x1b[33m→\x1b[38;5;119m Máy chủ đang chạy trên PORT\x1b[38;5;208m', app.get('port'), '\n\x1b[36m=====================================================\n');
});
app.use(function (req, res, next) {
var d = req.query.apikey
var c=checkAPI.checkKey(d);
if (c.error == 1) return res.json({error:`${c.msg}`})
next();
});
app.use("/", server);
app.set("json spaces", 4);
app.use((error, req, res, next) => {
res.status(error.status).json({ message: error.message });
});
///////////////////////////////////////////////////////////
//========= Create website for dashboard/uptime =========//
///////////////////////////////////////////////////////////
async function upts() {
const link = "https://29b9b42f-46e6-461b-8986-914334265f7c-00-2k4h2stdmewpp.teams.replit.dev/";
try {
await axios.get(link)
console.log("- monitoring...[ UPTPAGE ]")
} catch(e) {console.log(e)}
}
setInterval(upts,60000)
async function haha()
{
const vid = await axios.get(`https://megu-4.haimothaihai.repl.co/anime-video`);
const vidlink = vid.data.url;
console.log("request: megu-4")
}
setInterval(haha, 60*1000*60*10);
app.set('port', (process.env.PORT || 7860));
var totaltime = (new Date().getTime() - starttime)/1000;
console.log("\x1b[38;5;220m[ LOADING ] \x1b[33m→\x1b[35m Thời gian khởi động: "+Math.round(totaltime*100)/100+" ms");
console.log("\x1b[38;5;205m[ RAIDEN API ] \x1b[33m→\x1b[38;5;51m Khởi động API của TuanDz thành công");
// bank
async function bank() {
const { writeFileSync } = require('fs-extra');
const { join } = require('path');
const pathData = join(__dirname, "public", "bank", "data", "bank.json");
const user = require('./public/bank/data/bank.json');
if(user[0] == undefined ) return
while(true) {
for (let id of user) {
var userData = user.find(i => i.senderID == id.senderID);
var money = userData.data.money;
userData.data.money = parseInt(money) + parseInt(money) * 0.005
writeFileSync(pathData, JSON.stringify(user, null, 2));
}
console.log("\x1b[38;5;220m[ BANKING ] \x1b[33m→ \x1b[35mĐang trong quá trình xử lí banking ...");
await new Promise(resolve => setTimeout(resolve, 60 * 60 * 1000))
}
}
bank()
const { spawn, execSync, exec } = require("child_process");
function startBot(message) {
(message) ? console.log(message) : "";
const child = spawn("node main.js", {
cwd: __dirname,
stdio: "inherit",
shell: true
});
child.on("close", (codeExit) => {
if (codeExit != 0 || global.countRestart && global.countRestart < 5) {
startBot("Restarting...");
global.countRestart += 1;
return;
} else return;
});
child.on("error", function (error) {
console.log("An error occurred: " + JSON.stringify(error));
});
};
// --------------------------> END <-------------------------------//