<?php

$datadirbase = './simple/';
$devicekey = 'Unnamed';

$auth_enabled = false;             
$auth_user    = 'admin';          
$auth_pass    = 'titok';      



/* ----------8<----------------------->8------------------ */

if ($auth_enabled) {
    if ( !isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER'] !== $auth_user || $_SERVER['PHP_AUTH_PW'] !== $auth_pass ) {
        header('WWW-Authenticate: Basic realm="Digitalio Logger Login"');
        header('HTTP/1.0 401 Unauthorized');
        echo "Hozzáférés megtagadva.";
        exit;
    }
}


if (array_key_exists('HTTP_X_SESSIONNAME', $_SERVER)) {
    $devicekey = $_SERVER['HTTP_X_SESSIONNAME'];
}

if (!array_key_exists('HTTP_X_DEVICEUUID', $_SERVER)) {
    header("HTTP/1.1 500 Internal Server Error");
    header("X-Message: No UUID");
    echo 'No UUID';
    die();
}

$deviceuuid = $_SERVER['HTTP_X_DEVICEUUID'];
$devicehostname = $_SERVER['HTTP_X_HOSTNAME'];

if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    header("HTTP/1.1 500 Internal Server Error");
    header("X-Message: Post required");
    echo 'Post required';
    die();
}

$dataadir = $datadirbase . $deviceuuid . '/' . $devicekey . '/' . date("Y-m-d");

if (!is_dir($dataadir)) {
    mkdir($dataadir, 0777, true);
}

ignore_user_abort(true);

$postdata = trim(file_get_contents("php://input"));
$decoded = json_decode($postdata, true);

$time = date('Y-m-d H:i:s');

$store = $dataadir . '/' . $deviceuuid . '.txt';

file_put_contents($store, $time . " " .  $postdata . "\n", FILE_APPEND | LOCK_EX);

$alldata = [];

if (is_array($decoded) && array_key_exists('0', $decoded) && array_key_exists('key', $decoded[0])) {
    foreach ($decoded as $value) {
        $dataline = $time . ';' . $value['value'] . ';' . $deviceuuid . ';' . $devicehostname .  "\n";
        file_put_contents($dataadir . '/' . $value['key'] . '.csv', $dataline, FILE_APPEND | LOCK_EX);
    }
} else  if (is_object($decoded) ) {
    foreach ($decoded as $key => $value) {
        $dataline = $time . ';' . $value . ';' . $deviceuuid . ';' . $devicehostname .  "\n";
        file_put_contents($dataadir . '/' . $key . '.csv', $dataline, FILE_APPEND | LOCK_EX);
	}
} else if (is_array($decoded) && array_key_exists('Type', $decoded) && $decoded['Type'] == 'Values') {

    foreach ($decoded['Payload'][0] as $key => $value) {
        $dataline = $time . ';' . $value . ';' . $deviceuuid . ';' . $devicehostname .  "\n";
        file_put_contents($dataadir . '/' . $key . '.csv', $dataline, FILE_APPEND | LOCK_EX);
    }
} else if ($_SERVER['CONTENT_TYPE'] == 'text/plain') {
    $lines = explode("\n", $postdata);
    foreach ($lines as $value) {
        $parts = explode('=', $value);
        if (count($parts) == 2) {
            $dataline = $time . ';' . trim($parts[1]) . ';' . $deviceuuid . ';' . $devicehostname .  "\n";
            file_put_contents($dataadir . '/' . trim($parts[0]) . '.csv', $dataline, FILE_APPEND | LOCK_EX);
        }
    }
} else //No data
{
}
//header("HTTP/1.1 204 No Content");
//exit;
// or send data to manipulate outputs
$data1 = array("Type"=>"Values","Payload" => [ [
    "Endpoint.DO0"=>1,
    "Endpoint.DO1"=>0,
    "Endpoint.DO2"=>0,
    "Endpoint.DO3"=>0,
    "Endpoint.DO4"=>0
    ]]
);

$response = json_encode($data);

header("HTTP/1.1 200 OK");
header("Content-Type: application/json; charset=utf-8");
header("Content-Length: " . (strlen($response) + 1));

echo $response . "\n";
