58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
|
|
// config variables
|
|
$dbpath = "configurator.db";
|
|
|
|
// import and sanitize GET variables
|
|
$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
|
|
$applied = filter_input(INPUT_GET, 'applied', FILTER_SANITIZE_NUMBER_INT);
|
|
$getconfig = filter_input(INPUT_GET, 'getconfig', FILTER_SANITIZE_NUMBER_INT);
|
|
|
|
// local vars
|
|
$db;
|
|
|
|
// Connect to the database with PDO
|
|
try {
|
|
$db = new PDO('sqlite:'.$dbpath);
|
|
} catch (Exception $e) {
|
|
die ($e);
|
|
}
|
|
|
|
|
|
/********** RUNTIME SECTIONS **********/
|
|
// When called without args, return nothing
|
|
|
|
// When called with getconfig=1, return the first ready config, and mark as sent
|
|
// TODO: make this a transaction so there's less chance of giving out two identical configs
|
|
if($getconfig == "1") {
|
|
try {
|
|
$deviceq = $db->prepare('SELECT * FROM DEVICES WHERE READY=1 AND SENT ISNULL LIMIT 1;');
|
|
$deviceq->execute();
|
|
$device = $deviceq->fetchObject();
|
|
|
|
$updatesent = $db->prepare("UPDATE DEVICES SET SENT=1 WHERE id=:id;");
|
|
$updatesent->bindParam(':id', $device->id);
|
|
$updatesent->execute();
|
|
|
|
// OUTPUT CONFIG
|
|
if(isset($device->config)){
|
|
echo $device->config;
|
|
}
|
|
|
|
} catch (Exception $e) {
|
|
die ($e);
|
|
}
|
|
}
|
|
|
|
// When called with id and applied=1, mark as applied
|
|
if(strlen($id) > 0 && $applied == "1") {
|
|
try {
|
|
$updateapplied = $db->prepare("UPDATE DEVICES SET APPLIED=1, CURRENTIP=:currentip WHERE id=:id;");
|
|
$updateapplied->bindParam(':currentip', $_SERVER['REMOTE_ADDR']); // store the remote client IP for calling blink.php later
|
|
$updateapplied->bindParam(':id', $id);
|
|
$updateapplied->execute();
|
|
} catch (Exception $e) {
|
|
die ($e);
|
|
}
|
|
}
|