113 lines
3.2 KiB
JavaScript
113 lines
3.2 KiB
JavaScript
const https = require('https');
|
|
const http = require('http');
|
|
const express = require('express');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const { exec } = require('child_process');
|
|
|
|
const hostspath = '/etc/hosts';
|
|
const domain = 'lic.cryptolive.one';
|
|
const domain2 = 'lic.bitmaster.cc';
|
|
const ipAddress = '';
|
|
const portHttp = 80;
|
|
const portHttps = 443;
|
|
|
|
// Start Express Server
|
|
const app = express();
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
app.use((req, res, next) => {
|
|
if (req.method === 'POST') {
|
|
console.log(`Received POST request to ${req.url}`);
|
|
console.log('Headers:', req.headers);
|
|
console.log('Body:', req.body);
|
|
}
|
|
next();
|
|
});
|
|
|
|
app.use('/', express.static('www'));
|
|
|
|
// Handle POST /lic requests
|
|
app.post('/lic', (req, res) => {
|
|
console.log('Received POST /lic request');
|
|
|
|
// Define the file path
|
|
const filePath = path.join(__dirname, 'lic.cr');
|
|
|
|
// Check if the file exists
|
|
if (!fs.existsSync(filePath)) {
|
|
console.error('File not found:', filePath);
|
|
return res.status(404).send('File not found');
|
|
}
|
|
|
|
// Send the file as a response
|
|
res.sendFile(filePath, (err) => {
|
|
if (err) {
|
|
console.error('Error sending file:', err);
|
|
res.status(500).send('Error sending file');
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
// Generate self-signed certificates if they don't exist
|
|
const certPath = './certs';
|
|
const keyFile = `${certPath}/key.pem`;
|
|
const certFile = `${certPath}/cert.pem`;
|
|
|
|
if (!fs.existsSync(certPath)) {
|
|
fs.mkdirSync(certPath, { recursive: true }); // Ensure the directory exists
|
|
}
|
|
|
|
if (!fs.existsSync(keyFile) || !fs.existsSync(certFile)) {
|
|
exec(
|
|
`openssl req -x509 -newkey rsa:2048 -keyout ${keyFile} -out ${certFile} -days 365 -nodes -subj "/CN=localhost"`,
|
|
{ stdio: 'inherit' } // Show output in console
|
|
);
|
|
}
|
|
|
|
const options = {
|
|
key: fs.readFileSync(keyFile),
|
|
cert: fs.readFileSync(certFile)
|
|
};
|
|
|
|
// Start HTTP and HTTPS servers
|
|
[80, 5454].forEach(port => {
|
|
http.createServer(app).listen(port, () => {
|
|
console.log(`HTTP server running on port ${port}`);
|
|
});
|
|
});
|
|
|
|
https.createServer(options, app).listen(portHttps, (err) => {
|
|
if (err) {
|
|
console.error(`Error starting HTTPS server: ${err.message}`);
|
|
} else{
|
|
console.log(`HTTPS server running on port ${portHttps}`);
|
|
}
|
|
});
|
|
|
|
// Function to update the /etc/hosts file
|
|
function updateHosts() {
|
|
try {
|
|
let content = fs.readFileSync(hostspath, 'utf8').split('\n');
|
|
|
|
content = content.filter(line => !line.includes(domain));
|
|
content.push(`${ipAddress} ${domain}`);
|
|
fs.writeFileSync(hostspath, content.join('\n'));
|
|
console.log(`Successfully mapped ${domain} to ${ipAddress} in ${hostspath}`);
|
|
|
|
content = fs.readFileSync(hostspath, 'utf8').split('\n');
|
|
content = content.filter(line => !line.includes(domain2));
|
|
content.push(`${ipAddress} ${domain2}`);
|
|
fs.writeFileSync(hostspath, content.join('\n'));
|
|
console.log(`Successfully mapped ${domain2} to ${ipAddress} in ${hostspath}`);
|
|
|
|
} catch (error) {
|
|
console.error(`Error updating hosts file: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// Run tasks
|
|
updateHosts();
|