init
This commit is contained in:
142
index.js
Normal file
142
index.js
Normal file
@@ -0,0 +1,142 @@
|
||||
const http = require('http');
|
||||
|
||||
const PORT = process.env.PORT || 3000;
|
||||
|
||||
const server = http.createServer((req, res) => {
|
||||
// Set CORS headers
|
||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
||||
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
||||
|
||||
// Handle preflight requests
|
||||
if (req.method === 'OPTIONS') {
|
||||
res.writeHead(200);
|
||||
res.end();
|
||||
return;
|
||||
}
|
||||
|
||||
// Set content type
|
||||
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
||||
|
||||
// Handle different routes
|
||||
switch (req.url) {
|
||||
case '/api/deploy':
|
||||
if (req.method === 'POST') {
|
||||
let body = '';
|
||||
req.on('data', chunk => {
|
||||
body += chunk.toString();
|
||||
});
|
||||
req.on('end', async () => {
|
||||
try {
|
||||
await deploy();
|
||||
console.log('Deployed');
|
||||
} catch (error) {
|
||||
console.error('Error deploying:', error);
|
||||
}
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({
|
||||
message: 'Echo response',
|
||||
received: body,
|
||||
timestamp: new Date().toISOString()
|
||||
}));
|
||||
});
|
||||
} else {
|
||||
res.writeHead(405, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({ error: 'Method not allowed. Use POST.' }));
|
||||
}
|
||||
break;
|
||||
|
||||
case '/api/deploy-crm-admin':
|
||||
if (req.method === 'POST') {
|
||||
let body = '';
|
||||
req.on('data', chunk => {
|
||||
body += chunk.toString();
|
||||
});
|
||||
req.on('end', async () => {
|
||||
try {
|
||||
await deployCrmAdmin();
|
||||
console.log('Deployed CRM Admin');
|
||||
} catch (error) {
|
||||
console.error('Error deploying:', error);
|
||||
}
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({
|
||||
message: 'Echo response',
|
||||
received: body,
|
||||
timestamp: new Date().toISOString()
|
||||
}));
|
||||
});
|
||||
} else {
|
||||
res.writeHead(405, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({ error: 'Method not allowed. Use POST.' }));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
res.writeHead(404, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({ error: 'Not found' }));
|
||||
}
|
||||
});
|
||||
|
||||
server.listen(PORT, () => {
|
||||
console.log(`🚀 Server running at http://localhost:${PORT}`);
|
||||
console.log(`📱 API endpoints available at http://localhost:${PORT}/api/*`);
|
||||
console.log(`⏰ Started at ${new Date().toLocaleString()}`);
|
||||
});
|
||||
|
||||
// Graceful shutdown
|
||||
process.on('SIGTERM', () => {
|
||||
console.log('SIGTERM received, shutting down gracefully');
|
||||
server.close(() => {
|
||||
console.log('Process terminated');
|
||||
});
|
||||
});
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
console.log('SIGINT received, shutting down gracefully');
|
||||
server.close(() => {
|
||||
console.log('Process terminated');
|
||||
});
|
||||
});
|
||||
|
||||
const deploy = () => {
|
||||
console.log('Deploying...');
|
||||
return new Promise((resolve, reject) => {
|
||||
const { exec } = require('child_process');
|
||||
exec('cd ../gitea-backend && bash dummy.sh', (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.error(`Error: ${error.message}`);
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
//if (stderr) {
|
||||
//console.error(`Error: ${stderr}`);
|
||||
//reject(stderr);
|
||||
//return;
|
||||
//}
|
||||
console.log(`Output: ${stdout}`);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const deployCrmAdmin = () => {
|
||||
console.log('Deploying...');
|
||||
return new Promise((resolve, reject) => {
|
||||
const { exec } = require('child_process');
|
||||
exec('cd ../next-ava-crm-admin-panel && bash deploy.sh', (error, stdout, stderr) => {
|
||||
if (error) {
|
||||
console.error(`Error: ${error.message}`);
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
//if (stderr) {
|
||||
//console.error(`Error: ${stderr}`);
|
||||
//reject(stderr);
|
||||
//return;
|
||||
//}
|
||||
console.log(`Output: ${stdout}`);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
14
package.json
Normal file
14
package.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "deployer",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "node index.js",
|
||||
"dev": "node index.js",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": "A simple HTTP server with API endpoints"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user