o11v4-podman/server.js
2026-02-22 17:02:56 -05:00

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();