OGP API - teris/Server-Management-Framework GitHub Wiki
OGP API Integration
Die OGP API Integration ermöglicht die Verwaltung von Game-Servern über die Open Game Panel (OGP) API.
🔧 Konfiguration
1. OGP-Zugangsdaten einrichten
Fügen Sie folgende Konfiguration in config/config.inc.php
hinzu:
// ===== OGP KONFIGURATION =====
const OGP_USEING = true;
const OGP_HOST = 'https://ogp.example.com';
const OGP_USER = 'admin';
const OGP_PASSWORD = 'your_ogp_password';
const OGP_TOKEN = 'your_ogp_token';
2. OGP API-Token erstellen
- Melden Sie sich bei OGP an
- Gehen Sie zu
Settings
→API
- Generieren Sie einen API-Token
- Notieren Sie sich Host, Benutzer und Token
📚 API-Klassen
OGPGet Klasse
Lese-Operationen für OGP.
getServerList()
Holt alle Remote-Server.
$ogp = new OGPGet();
$servers = $ogp->getServerList();
foreach ($servers as $server) {
echo "Server: {$server['name']} - IP: {$server['ip']}\n";
echo "Status: {$server['status']}\n";
echo "---\n";
}
getGameServers()
Holt alle Game-Server.
$ogp = new OGPGet();
$gameServers = $ogp->getGameServers();
foreach ($gameServers as $server) {
echo "Game-Server: {$server['name']}\n";
echo "Spiel: {$server['game_key']}\n";
echo "Status: {$server['status']}\n";
echo "Port: {$server['port']}\n";
echo "---\n";
}
getServerStatus($serverId)
Holt den Status eines spezifischen Servers.
$ogp = new OGPGet();
$status = $ogp->getServerStatus(1);
echo "Server Status: {$status['status']}\n";
echo "CPU Usage: {$status['cpu']}%\n";
echo "Memory Usage: {$status['memory']}%\n";
echo "Uptime: {$status['uptime']}\n";
OGPPost Klasse
Schreib-Operationen für OGP.
createGameServer($gameServerData)
Erstellt einen neuen Game-Server.
Wichtige Parameter:
remote_server_id
(Pflicht): ID des Remote-Serversgame_key
(Pflicht): Spiel-Identifier (z.B. 'csgo', 'minecraft')name
(Pflicht): Name des Game-Serversport
(Pflicht): Hauptport des Serversquery_port
(Optional): Query-Port für Server-Statusrcon_port
(Optional): RCON-Port für Remote-Commandsrcon_password
(Optional): RCON-Passwort
$gameServerData = [
'remote_server_id' => 1,
'game_key' => 'csgo',
'name' => 'Mein CS:GO Server',
'port' => 27015,
'query_port' => 27016,
'rcon_port' => 27017,
'rcon_password' => 'meinpasswort',
'max_players' => 32,
'tickrate' => 128
];
$ogp = new OGPPost();
$result = $ogp->createGameServer($gameServerData);
if ($result) {
echo "Game-Server erfolgreich erstellt!\n";
} else {
echo "Fehler beim Erstellen des Game-Servers\n";
}
sendRconCommand($ip, $port, $modKey, $command)
Sendet einen RCON-Befehl an einen Game-Server.
Parameter:
$ip
(string) - Server-IP-Adresse$port
(int) - Server-Port$modKey
(string) - Spiel-Modul-Key$command
(string) - RCON-Befehl
$ogp = new OGPPost();
$result = $ogp->sendRconCommand(
'192.168.1.100',
27015,
'csgo',
'say Hallo Welt!'
);
if ($result) {
echo "RCON-Befehl erfolgreich gesendet!\n";
} else {
echo "Fehler beim Senden des RCON-Befehls\n";
}
startGameServer($serverId)
Startet einen Game-Server.
$ogp = new OGPPost();
$result = $ogp->startGameServer(1);
if ($result) {
echo "Game-Server erfolgreich gestartet!\n";
}
stopGameServer($serverId)
Stoppt einen Game-Server.
$ogp = new OGPPost();
$result = $ogp->stopGameServer(1);
if ($result) {
echo "Game-Server erfolgreich gestoppt!\n";
}
restartGameServer($serverId)
Startet einen Game-Server neu.
$ogp = new OGPPost();
$result = $ogp->restartGameServer(1);
if ($result) {
echo "Game-Server erfolgreich neu gestartet!\n";
}
🔧 ServiceManager Integration
getOGPGameServers()
Holt alle Game-Server über den ServiceManager.
$serviceManager = new ServiceManager();
$gameServers = $serviceManager->getOGPGameServers();
foreach ($gameServers as $server) {
echo "Game-Server: {$server['name']} - Status: {$server['status']}\n";
}
createOGPGameServer($gameServerData)
Erstellt einen Game-Server über den ServiceManager.
$serviceManager = new ServiceManager();
$gameServerData = [
'remote_server_id' => 1,
'game_key' => 'csgo',
'name' => 'Mein CS:GO Server',
'port' => 27015
];
$result = $serviceManager->createOGPGameServer($gameServerData);
sendOGPRconCommand($ip, $port, $modKey, $command)
Sendet einen RCON-Befehl über den ServiceManager.
$serviceManager = new ServiceManager();
$serviceManager->sendOGPRconCommand('192.168.1.100', 27015, 'csgo', 'say Hallo Welt!');
testOGPToken()
Testet die Gültigkeit des OGP-Tokens.
$serviceManager = new ServiceManager();
$tokenStatus = $serviceManager->testOGPToken();
if ($tokenStatus) {
echo "OGP Token ist gültig!\n";
} else {
echo "OGP Token ist ungültig!\n";
}
OGPAPI($type, $url, $code = null)
Generische OGP API-Funktion für direkten Zugriff.
$serviceManager = new ServiceManager();
// Server-Status abrufen
$serverStatus = $serviceManager->OGPAPI('post', 'server/status', ['remote_server_id' => 1]);
// Game-Server erstellen
$gameServerData = [
'remote_server_id' => 1,
'game_key' => 'csgo',
'name' => 'Mein Server',
'port' => 27015
];
$result = $serviceManager->OGPAPI('post', 'server/create', $gameServerData);
// RCON-Befehl senden
$rconData = [
'ip' => '192.168.1.100',
'port' => 27015,
'mod_key' => 'csgo',
'command' => 'say Hallo Welt!'
];
$result = $serviceManager->OGPAPI('post', 'server/rcon', $rconData);
🔍 Fehlerbehandlung
API-Status prüfen
$serviceManager = new ServiceManager();
// OGP API-Status prüfen
$apiCheck = $serviceManager->checkAPIEnabled('ogp');
if ($apiCheck !== true) {
echo "OGP API Fehler: " . $apiCheck['message'] . "\n";
echo "Lösung: " . $apiCheck['solution'] . "\n";
exit;
}
Token-Test
$serviceManager = new ServiceManager();
// Token testen
$tokenStatus = $serviceManager->testOGPToken();
if ($tokenStatus) {
echo "✅ OGP Token ist gültig\n";
} else {
echo "❌ OGP Token ist ungültig\n";
echo "Überprüfen Sie die Token-Konfiguration in config.inc.php\n";
exit;
}
Try-Catch Fehlerbehandlung
try {
$ogp = new OGPGet();
$gameServers = $ogp->getGameServers();
if (is_array($gameServers)) {
foreach ($gameServers as $server) {
echo "Game-Server: {$server['name']}\n";
}
} else {
echo "Fehler beim Abrufen der Game-Server: " . $gameServers['message'] . "\n";
}
} catch (Exception $e) {
echo "Exception: " . $e->getMessage() . "\n";
error_log("OGP Error: " . $e->getMessage());
}
📝 Praktische Beispiele
1. Game-Server-Übersicht
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== OGP Game-Server-Übersicht ===\n\n";
// Token testen
$tokenStatus = $serviceManager->testOGPToken();
if ($tokenStatus) {
echo "✅ OGP Token ist gültig\n\n";
} else {
echo "❌ OGP Token ist ungültig\n";
exit;
}
// Alle Game-Server abrufen
$gameServers = $serviceManager->getOGPGameServers();
if (empty($gameServers)) {
echo "Keine Game-Server gefunden.\n";
} else {
foreach ($gameServers as $server) {
$statusIcon = ($server['status'] === 'online') ? '🟢' : '🔴';
echo "{$statusIcon} Game-Server: {$server['name']}\n";
echo " Spiel: {$server['game_key']}\n";
echo " Status: {$server['status']}\n";
echo " Port: {$server['port']}\n";
echo " IP: {$server['ip']}\n";
echo "---\n";
}
// Statistiken
$onlineServers = array_filter($gameServers, function($server) { return $server['status'] === 'online'; });
echo "Statistiken:\n";
echo "Online Game-Server: " . count($onlineServers) . " / " . count($gameServers) . "\n";
}
?>
2. Game-Server erstellen und verwalten
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== OGP Game-Server erstellen ===\n\n";
// Game-Server-Daten
$gameServerData = [
'remote_server_id' => 1,
'game_key' => 'csgo',
'name' => 'Mein CS:GO Server',
'port' => 27015,
'query_port' => 27016,
'rcon_port' => 27017,
'rcon_password' => 'meinpasswort',
'max_players' => 32,
'tickrate' => 128,
'map' => 'de_dust2'
];
echo "Erstelle Game-Server: {$gameServerData['name']}\n";
$result = $serviceManager->createOGPGameServer($gameServerData);
if ($result) {
echo "✅ Game-Server erfolgreich erstellt\n";
// RCON-Befehl senden
echo "Sende RCON-Befehl...\n";
$rconResult = $serviceManager->sendOGPRconCommand(
'192.168.1.100',
27015,
'csgo',
'say Hallo Welt!'
);
if ($rconResult) {
echo "✅ RCON-Befehl erfolgreich gesendet\n";
} else {
echo "❌ Fehler beim Senden des RCON-Befehls\n";
}
} else {
echo "❌ Fehler beim Erstellen des Game-Servers\n";
}
?>
3. Automatisches Server-Management
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== Automatisches Server-Management ===\n\n";
// Game-Server-Templates definieren
$serverTemplates = [
'csgo_competitive' => [
'game_key' => 'csgo',
'max_players' => 10,
'tickrate' => 128,
'map' => 'de_dust2',
'description' => 'CS:GO Competitive Server'
],
'csgo_casual' => [
'game_key' => 'csgo',
'max_players' => 32,
'tickrate' => 64,
'map' => 'de_dust2',
'description' => 'CS:GO Casual Server'
],
'minecraft_vanilla' => [
'game_key' => 'minecraft',
'max_players' => 20,
'description' => 'Minecraft Vanilla Server'
]
];
// Neue Server erstellen
$newServers = [
[
'name' => 'CS:GO Comp #1',
'template' => 'csgo_competitive',
'port' => 27015,
'remote_server_id' => 1
],
[
'name' => 'CS:GO Casual #1',
'template' => 'csgo_casual',
'port' => 27016,
'remote_server_id' => 1
],
[
'name' => 'Minecraft #1',
'template' => 'minecraft_vanilla',
'port' => 25565,
'remote_server_id' => 2
]
];
foreach ($newServers as $serverInfo) {
$template = $serverTemplates[$serverInfo['template']];
$gameServerData = array_merge($template, [
'remote_server_id' => $serverInfo['remote_server_id'],
'name' => $serverInfo['name'],
'port' => $serverInfo['port']
]);
echo "Erstelle Game-Server: {$serverInfo['name']}\n";
$result = $serviceManager->createOGPGameServer($gameServerData);
if ($result) {
echo "✅ Game-Server {$serverInfo['name']} erfolgreich erstellt\n";
// Server starten
sleep(5);
$startResult = $serviceManager->OGPAPI('post', 'server/start', [
'server_id' => $result['server_id']
]);
if ($startResult) {
echo "🚀 Game-Server {$serverInfo['name']} gestartet\n";
}
// Log erstellen
$db = Database::getInstance();
$db->logAction(
'Game-Server erstellt',
"Game-Server {$serverInfo['name']} mit Template {$serverInfo['template']} erstellt",
'success'
);
} else {
echo "❌ Fehler beim Erstellen von Game-Server {$serverInfo['name']}\n";
}
echo "---\n";
}
?>
4. RCON-Befehls-Management
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== RCON-Befehls-Management ===\n\n";
// Game-Server abrufen
$gameServers = $serviceManager->getOGPGameServers();
// RCON-Befehle definieren
$rconCommands = [
'csgo' => [
'say Server wird in 5 Minuten neu gestartet!',
'sv_cheats 0',
'mp_autoteambalance 1',
'mp_limitteams 2'
],
'minecraft' => [
'say Server wird in 5 Minuten neu gestartet!',
'save-all',
'save-off'
]
];
foreach ($gameServers as $server) {
if ($server['status'] === 'online') {
echo "Sende RCON-Befehle an: {$server['name']}\n";
$gameKey = $server['game_key'];
if (isset($rconCommands[$gameKey])) {
foreach ($rconCommands[$gameKey] as $command) {
echo " Befehl: {$command}\n";
$result = $serviceManager->sendOGPRconCommand(
$server['ip'],
$server['port'],
$gameKey,
$command
);
if ($result) {
echo " ✅ Befehl erfolgreich gesendet\n";
} else {
echo " ❌ Fehler beim Senden des Befehls\n";
}
sleep(1); // Kurze Pause zwischen Befehlen
}
}
echo "---\n";
}
}
?>
5. Server-Monitoring
<?php
require_once 'framework.php';
$serviceManager = new ServiceManager();
echo "=== OGP Server-Monitoring ===\n\n";
// Remote-Server abrufen
$servers = $serviceManager->OGPAPI('post', 'server/list');
if (is_array($servers)) {
foreach ($servers as $server) {
echo "Server: {$server['name']} - IP: {$server['ip']}\n";
// Server-Status abrufen
$status = $serviceManager->OGPAPI('post', 'server/status', [
'remote_server_id' => $server['remote_server_id']
]);
if (is_array($status)) {
$statusIcon = ($status['status'] === 'online') ? '🟢' : '🔴';
echo " {$statusIcon} Status: {$status['status']}\n";
if (isset($status['cpu'])) {
echo " CPU: {$status['cpu']}%\n";
}
if (isset($status['memory'])) {
echo " Memory: {$status['memory']}%\n";
}
if (isset($status['uptime'])) {
echo " Uptime: {$status['uptime']}\n";
}
}
// Game-Server auf diesem Server abrufen
$gameServers = $serviceManager->OGPAPI('post', 'server/gameservers', [
'remote_server_id' => $server['remote_server_id']
]);
if (is_array($gameServers)) {
echo " Game-Server: " . count($gameServers) . "\n";
foreach ($gameServers as $gameServer) {
$gameStatusIcon = ($gameServer['status'] === 'online') ? '🟢' : '🔴';
echo " {$gameStatusIcon} {$gameServer['name']} ({$gameServer['game_key']})\n";
}
}
echo "---\n";
}
}
?>
🔗 Nützliche Links
❗ Wichtige Hinweise
- API-Token: Verwenden Sie einen gültigen API-Token für die Authentifizierung
- RCON-Passwörter: Verwenden Sie sichere RCON-Passwörter
- Ports: Stellen Sie sicher, dass die benötigten Ports verfügbar sind
- Server-Ressourcen: Überwachen Sie CPU- und Memory-Nutzung
- Backup: Erstellen Sie regelmäßig Backups Ihrer Game-Server
- Sicherheit: Verwenden Sie HTTPS für die OGP-Verbindung
- Rate Limiting: Beachten Sie mögliche API-Rate-Limits