Der User hat Adminrechte
<?php
// Synology NAS API-Konfiguration
$nasUrl = "
http://192.168.178.10:5001"; // URL zur Synology NAS
$username = "adminuser"; // DSM-Admin-Benutzername
$password = "Winter2022!"; // DSM-Admin-Passwort
// Funktion: API-Aufruf durchführen
function synologyApiCall($url, $params, $method = 'GET') {
$ch = curl_init();
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
} else {
$url .= '?' . http_build_query($params);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if ($response === false) {
die("cURL-Fehler: " . curl_error($ch));
}
curl_close($ch);
return json_decode($response, true);
}
// Schritt 1: Authentifizieren und Session-ID abrufen
$authParams = [
'api' => 'SYNO.API.Auth',
'version' => 6,
'method' => 'login',
'account' => $username,
'passwd' => $password,
'session' => 'user_api_session', // Dynamischer Session-Name
'format' => 'sid'
];
$authResponse = synologyApiCall("$nasUrl/webapi/auth.cgi", $authParams);
if (!$authResponse['success']) {
die("Authentifizierung fehlgeschlagen: " . json_encode($authResponse));
}
// Session-ID aus der Authentifizierungsantwort extrahieren
$sid = $authResponse['data']['sid'];
echo "Authentifizierung erfolgreich! Session-ID: $sid\n";
// Schritt 2: Benutzer anlegen
$userParams = [
'api' => 'SYNO.Core.User',
'version' => 1,
'method' => 'create',
'name' => 'mustermannmax', // Einfacher Benutzername ohne Sonderzeichen
'password' => 'StarkesPasswort2024!', // Sicheres Passwort
'email' => '
sven.schubert@web.de', // Gültige E-Mail-Adresse
'group' => 'users', // Standard-Benutzergruppe (prüfen, ob 'users' existiert)
'description' => 'Testbenutzer', // Optionale Beschreibung
'expired' => 0, // Konto läuft nicht ab
'send_email' => 'no', // Keine E-Mail senden
'_sid' => $sid
];
$userResponse = synologyApiCall("$nasUrl/webapi/entry.cgi", $userParams, 'POST');
if ($userResponse['success']) {
echo "Benutzer erfolgreich erstellt.\n";
} else {
echo "Fehler beim Erstellen des Benutzers: " . json_encode($userResponse, JSON_PRETTY_PRINT) . "\n";
}
// Schritt 3: Abmelden
$logoutParams = [
'api' => 'SYNO.API.Auth',
'version' => 6,
'method' => 'logout',
'session' => 'user_api_session',
'_sid' => $sid // Session-ID einfügen
];
$logoutResponse = synologyApiCall("$nasUrl/webapi/auth.cgi", $logoutParams);
if ($logoutResponse['success']) {
echo "Abmeldung erfolgreich.\n";
} else {
echo "Fehler bei der Abmeldung: " . json_encode($logoutResponse) . "\n";
}
?>