<?php /* **** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** * * Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019 * * This file is licensed under the Embedded Projects General Public License *Version 3.1. * * You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis * to obtain the text of the corresponding license version. * **** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE **** */ ?> <?php header_remove(); header("Content-Type:text/xml"); function RunStateMachine($DB, $deviceid) { $deviceid_destination = $_GET['device']; $cmd = $_GET['cmd']; echo "<xml>"; $tmpip = $_SERVER['REMOTE_ADDR']; $DB->Update("UPDATE adapterbox SET letzteverbindung=NOW(),tmpip='" . $DB->real_escape_string($tmpip) . "' WHERE seriennummer='" . $DB->real_escape_string($deviceid) . "' AND seriennummer!='' LIMIT 1"); switch ($cmd) { case "addJob": echo "<cmd>$cmd</cmd>"; $job = $_POST['job']; $request_id = $_GET['request_id']; $art = $_GET['art']; //file_put_contents("/tmp/bene","add job for $deviceid_destination deviceid $deviceid job $job"); if ($deviceid != "" && $deviceid_destination != "" && $job != "") { $job = base64_encode($job); $DB->Insert("INSERT INTO device_jobs (id,deviceidsource,deviceiddest,job,zeitstempel,request_id,art) VALUES ('','" . $DB->real_escape_string($deviceid) . "','" . $DB->real_escape_string($deviceid_destination) . "','" . $DB->real_escape_string($job) . "',NOW(),'" . $DB->real_escape_string($request_id) . "','" . $DB->real_escape_string($art) . "')"); echo "<result>1</result>"; } else { echo "<result>0</result>"; } break; case "getJob": echo "<cmd>$cmd</cmd>"; $tmp = $DB->SelectRow( sprintf( "SELECT `id`, `job`, `art` FROM `device_jobs` WHERE `deviceiddest` = '%s' AND `abgeschlossen` = '0' ORDER BY `zeitstempel` LIMIT 1", $DB->real_escape_string($deviceid) ) ); if (empty($tmp)) { echo '<result>0</result>'; break; } $DB->Delete(sprintf('DELETE FROM `device_jobs` WHERE `id` = %d LIMIT 1', $tmp['id'])); echo "<job>" . $tmp['job'] . "</job>"; echo "<device>" . $tmp['art'] . "</device>"; echo "<id>" . $tmp['id'] . "</id>"; echo "<result>1</result>"; if (rand(0, 1000) === 0) { //should be not necessary $DB->Delete("DELETE FROM `device_jobs` WHERE `abgeschlossen` = '1'"); } break; case "logOut": echo "<cmd>$cmd</cmd>"; break; case "state": echo "<cmd>$cmd</cmd>"; if ($deviceid_destination != "") $tmp = $DB->Select("SELECT COUNT(id) FROM device_jobs WHERE deviceiddest='" . $DB->real_escape_string($deviceid_destination) . "' AND abgeschlossen!='1'"); else $tmp = $DB->Select("SELECT COUNT(id) FROM device_jobs WHERE deviceiddest='" . $DB->real_escape_string($deviceid) . "' AND abgeschlossen!='1'"); echo "<numberofjobs>$tmp</numberofjobs>"; echo "<deviceid>$deviceid</deviceid>"; break; default: echo "<cmd>unkown</cmd>"; echo "<pre>DEVICE ID: $deviceid L1 $L1 L2 $L2 L3 $L3</pre>"; } echo "</xml>"; }