2022-02-04 13:49:29 +00:00
|
|
|
<?php
|
2022-05-25 12:29:40 +00:00
|
|
|
// DIESES SKRIPT KOMMT ÖFFENTLICH ERREICHBAR AUF DEN WEBSEVER
|
|
|
|
|
2022-02-04 13:49:29 +00:00
|
|
|
// Filename: /volume3/web/updateserver.php
|
2022-02-04 16:40:10 +00:00
|
|
|
// Aufruf-URL: https://example.com/vm_control.php?vmname= &state=[on|off] &key=
|
2022-02-04 16:42:59 +00:00
|
|
|
// Beispiel: https://example.com/vm_control.php?vmname=Win10&state=on&key=0815
|
2022-02-04 13:49:29 +00:00
|
|
|
|
2022-02-04 16:40:10 +00:00
|
|
|
// vmname= Name der VM wie im VMM angegeben (wahrscheinlich sind hier einige Sonderzeichen ungünstig)
|
|
|
|
// state= gewünschter Zustand der VM: on / off
|
|
|
|
// key= ein kleiner Schutz, damit nicht jeder die Steuerung übernehmen kann
|
2022-02-04 13:49:29 +00:00
|
|
|
|
|
|
|
// zu überprüfenden Key hier anpassen:
|
|
|
|
$defined_key = "0815";
|
|
|
|
|
2022-02-04 16:41:40 +00:00
|
|
|
// ##############################################################################
|
|
|
|
// ab hier nichts mehr ändern
|
|
|
|
// ------------------------------------------------------------------------------
|
2022-02-04 13:49:29 +00:00
|
|
|
// Auswertung der Argumente:
|
|
|
|
// -----------------------------------------------
|
2022-02-09 21:55:18 +00:00
|
|
|
$error_msg = "";
|
2022-07-31 12:22:32 +00:00
|
|
|
$log_symbol = "️✅";
|
|
|
|
|
2022-02-04 13:49:29 +00:00
|
|
|
// leeren Parameter 'vmname' unterbinden:
|
|
|
|
if(!isset($_GET['vmname'])){
|
2022-02-09 21:55:18 +00:00
|
|
|
$error_msg = "EXIT - keine VM angegeben!<br>";
|
2022-07-31 12:22:32 +00:00
|
|
|
$log_symbol = "❌️";
|
2022-02-04 13:49:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------
|
|
|
|
// Statusdatei inistialisieren:
|
|
|
|
touch ('vm_state.php');
|
|
|
|
|
|
|
|
$fp = fopen ('vm_state.php', 'r+');
|
|
|
|
// Konnte die Datei nicht öffnen!:
|
|
|
|
if (!is_resource ($fp)) {
|
|
|
|
http_response_code(503);
|
|
|
|
die ();
|
|
|
|
}
|
|
|
|
// Sperren der Datei fehlgeschlagen!:
|
|
|
|
if (!flock ($fp, LOCK_EX)) {
|
|
|
|
http_response_code(503);
|
|
|
|
die ();
|
|
|
|
}
|
|
|
|
include("vm_state.php");
|
|
|
|
|
|
|
|
// -----------------------------------------------
|
|
|
|
// check Key:
|
|
|
|
if(strcmp($_GET['key'], "$defined_key")) {
|
2022-07-31 12:22:32 +00:00
|
|
|
$error_msg = $error_msg."Zugriff verweigert!<br>Geloggter Zugriff von IP: ".$_SERVER['REMOTE_ADDR'];
|
|
|
|
$log_symbol = "❌️";
|
2022-02-04 13:49:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------
|
2022-07-31 12:22:32 +00:00
|
|
|
// schreibe Status in Array, sofern es keinen Fehler gab:
|
2022-02-09 21:55:18 +00:00
|
|
|
if(empty($error_msg)){
|
2022-07-31 12:22:32 +00:00
|
|
|
$vm_state[$_GET['vmname']] = $_GET['state']."_".date("Y-m-d_H-i-s", time());
|
2022-02-09 21:55:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------
|
|
|
|
// letzten Zugriff dokumentieren:
|
2022-07-31 12:22:32 +00:00
|
|
|
$log["LOG: ".date("Y-m-d_H-i-s", time())] = $log_symbol." VM: ".$_GET['vmname']." / Status: ".$_GET['state']." / Key: ".$_GET['key']." / IP: ".$_SERVER['REMOTE_ADDR'];
|
2022-02-04 13:49:29 +00:00
|
|
|
|
|
|
|
// -----------------------------------------------
|
|
|
|
// Daten speichern:
|
|
|
|
fseek ($fp, 0, SEEK_SET);
|
|
|
|
ftruncate ($fp, 0);
|
|
|
|
$input = "<?php\n";
|
|
|
|
$input .= "\$vm_state = ".var_export($vm_state, true).";\n";
|
2022-02-09 21:55:18 +00:00
|
|
|
$input .= "\$log = ".var_export($log, true).";\n";
|
2022-02-04 13:49:29 +00:00
|
|
|
$input .= "?>";
|
|
|
|
fwrite($fp, $input);
|
|
|
|
|
|
|
|
// -----------------------------------------------
|
|
|
|
// Datei freigeben
|
|
|
|
flock ($fp, LOCK_UN);
|
|
|
|
fclose($fp);
|
|
|
|
|
|
|
|
// -----------------------------------------------
|
|
|
|
// Rückgabe:
|
2022-02-09 21:55:18 +00:00
|
|
|
if(empty($error_msg)){
|
|
|
|
exit("Status notiert ...");
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
exit($error_msg);
|
|
|
|
}
|
2022-02-04 13:49:29 +00:00
|
|
|
|
|
|
|
?>
|