VMM_remote-control/vm_control.php

72 lines
2.4 KiB
PHP
Raw Normal View History

2022-02-04 13:49:29 +00:00
<?php
// 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:
// -----------------------------------------------
// leeren Parameter 'vmname' unterbinden:
if(!isset($_GET['vmname'])){
exit("EXIT - keine VM angegeben!");
}
// -----------------------------------------------
// 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");
// -----------------------------------------------
// letzten Zugriff dokumentieren:
$vm_state["letzter Zugriff:"] = "VM: ".$_GET['vmname']." / Status: ".$_GET['state']." / Key: ".$_GET['key']." / Zeitpunkt: ".date("Y-m-d_H-i-s", time());
// -----------------------------------------------
// check Key:
if(strcmp($_GET['key'], "$defined_key")) {
exit("Zugriff verweigert");
}
// -----------------------------------------------
// schreibe Status in Array:
$vm_state[$_GET['vmname']] = $_GET['state'];
// -----------------------------------------------
// Daten speichern:
fseek ($fp, 0, SEEK_SET);
ftruncate ($fp, 0);
$input = "<?php\n";
$input .= "\$vm_state = ".var_export($vm_state, true).";\n";
$input .= "?>";
fwrite($fp, $input);
// -----------------------------------------------
// Datei freigeben
flock ($fp, LOCK_UN);
fclose($fp);
// -----------------------------------------------
// Rückgabe:
exit("Status notiert ...");
?>