Client/api/src/controllers/serverController.js
2026-03-31 15:26:34 +03:00

74 lines
2.0 KiB
JavaScript

const serverService = require("../services/serverService");
const config = require("../config/config.js");
const register = async (req, res) => {
try {
const { name, url, secret, region, description } = req.body;
if (secret !== process.env.GAME_SERVER_SECRET) {
console.warn(`⚠️ Unauthorized registration attempt for server: ${name}`);
return res.status(401).json({ message: "Unauthorized server" });
}
await serverService.registerGameServer({ name, url, region, description });
res.json({ message: "Server registered successfully" });
} catch (error) {
console.error(`❌ Registration error: ${error.message}`);
res.status(500).json({ message: "Internal server error" });
}
};
const heartbeat = async (req, res) => {
const { name, secret, playersOnline } = req.body;
if (secret !== process.env.GAME_SERVER_SECRET) {
return res.status(401).json({ message: "Unauthorized" });
}
try {
await serverService.updateHeartbeat(name, playersOnline);
res.json({ status: "ok" });
} catch (error) {
res.status(500).json({ message: error.message });
}
};
const list = async (req, res) => {
try {
const servers = await serverService.getAvailableServers();
res.json(servers);
} catch (error) {
res.status(500).json({ message: "Error fetching servers" });
}
};
const join = async (req, res) => {
try {
const { serverId } = req.body;
if (!serverId) {
return res.status(400).json({ message: "Server ID is required" });
}
const server = await serverService.getServerConnectionDetails(serverId);
if (!server) {
return res.status(404).json({ message: "Server not found or offline" });
}
res.json({
success: true,
connectUrl: server.url,
port: server.port,
serverName: server.name,
description: server.description,
region: server.region,
});
} catch (error) {
res.status(500).json({ message: "Error processing join request" });
}
};
module.exports = {
register,
heartbeat,
list,
join,
};