-
-
+
-
+
-
+
@@ -117,32 +106,33 @@
-
-
+
-
-
-
- Details -
- Sessions -
- Presence -
- Events +
- Smartphone -
- Laptop -
- PC -
- Others +
- Smartphone +
- Laptop +
- PC +
- Others
- - 0 h (notify all events) -
- 1 h -
- 8 h -
- 24 h -
- - 168 h (one week) +
- 0 h (notify all events) +
- 1 h +
- 8 h +
- 24 h +
- 168 h (one week)
-
+
+
-
+
Main Info
+
+
-
+
-
+
-
+
+
-
+
+
+
+
-
+
-
+
+
+
-
-
-
+
@@ -150,22 +140,22 @@
-
+
-
-
+
-
-
@@ -207,40 +192,59 @@
-
+
@@ -251,11 +255,12 @@
Session Info
-
+
+
+
+
+
+
@@ -263,6 +268,7 @@
@@ -270,6 +276,7 @@
@@ -277,6 +284,7 @@
@@ -284,103 +292,103 @@
-
+
Events & Alerts config
+
+
+
-
+
-
+
-
+
-
+
-
+
+
+
-
+
-
+
-
-
+
+
+
+
+
+
- Save
- Restore
+ Save
+ Reset Changes
+ Delete Device
+
+
-
-
+
+
-
+
+
+
@@ -405,20 +414,23 @@
+
+
| Name | @@ -142,6 +124,7 @@
|---|
-
@@ -154,10 +116,13 @@
@@ -208,86 +174,113 @@
diff --git a/front/index.php b/front/index.php
index 58937cdc..1d3ecead 100644
--- a/front/index.php
+++ b/front/index.php
@@ -1,4 +1,12 @@
-
+
+
@@ -11,102 +19,73 @@
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
@@ -179,6 +144,7 @@
+
Events
Devices
- - - - New Devices period: -
-
-
+
-
+
-
+
@@ -118,12 +97,15 @@
+
+
-
+
+
Devices
-
+
+
@@ -171,169 +154,165 @@
diff --git a/front/js/pialert_common.js b/front/js/pialert_common.js
index 5778f71f..84408340 100644
--- a/front/js/pialert_common.js
+++ b/front/js/pialert_common.js
@@ -1,9 +1,89 @@
/* -----------------------------------------------------------------------------
- Pi.Alert Common Javascript functions
+* Pi.Alert
+* Open Source Network Guard / WIFI & LAN intrusion detector
+*
+* pialert_common.js - Front module. Common Javascript functions
+*-------------------------------------------------------------------------------
+* Puche 2021 pi.alert.application@gmail.com GNU GPLv3
----------------------------------------------------------------------------- */
// -----------------------------------------------------------------------------
var timerRefreshData = ''
+var modalCallbackFunction = '';
+
+
+// -----------------------------------------------------------------------------
+function showModal (title, message, btnCancel, btnOK, callbackFunction) {
+ // set captions
+ $('#modal-title').html (title);
+ $('#modal-message').html (message);
+ $('#modal-cancel').html (btnCancel);
+ $('#modal-OK').html (btnOK);
+ modalCallbackFunction = callbackFunction;
+
+ // Show modal
+ $('#modal-warning').modal('show');
+}
+
+// -----------------------------------------------------------------------------
+function modalOK () {
+ // Hide modal
+ $('#modal-warning').modal('hide');
+
+ // timer to execute function
+ window.setTimeout( function() {
+ window[modalCallbackFunction]();
+ }, 100);
+}
+
+// -----------------------------------------------------------------------------
+function showMessage (textMessage="") {
+ if (textMessage.toLowerCase().includes("error") ) {
+ // show error
+ alert (textMessage);
+ } else {
+ // show temporal notification
+ $("#alert-message").html (textMessage);
+ $("#notification").fadeIn(1, function () {
+ window.setTimeout( function() {
+ $("#notification").fadeOut(500)
+ }, 3000);
+ } );
+ }
+}
+
+
+// -----------------------------------------------------------------------------
+function setParameter (parameter, value) {
+ // Retry
+ $.get('php/server/parameters.php?action=set¶meter=' + parameter +
+ '&value='+ value,
+ function(data) {
+ if (data != "OK") {
+ // Retry
+ sleep (200);
+ $.get('php/server/parameters.php?action=set¶meter=' + parameter +
+ '&value='+ value,
+ function(data) {
+ if (data != "OK") {
+ // alert (data);
+ } else {
+ // alert ("OK. Second attempt");
+ };
+ } );
+ };
+ } );
+}
+
+
+// -----------------------------------------------------------------------------
+function sleep(milliseconds) {
+ const date = Date.now();
+ let currentDate = null;
+ do {
+ currentDate = Date.now();
+ } while (currentDate - date < milliseconds);
+}
// -----------------------------------------------------------------------------
@@ -35,5 +115,7 @@ function newTimerRefreshData (refeshFunction) {
// -----------------------------------------------------------------------------
function debugTimer () {
- document.getElementById ('pageTitle').innerHTML = (new Date().getSeconds());
+ $('#pageTitle').html (new Date().getSeconds());
}
+
+
diff --git a/front/php/server/db.php b/front/php/server/db.php
index f4ffd6ef..8e3e7706 100644
--- a/front/php/server/db.php
+++ b/front/php/server/db.php
@@ -1,32 +1,40 @@
diff --git a/front/php/server/devices.php b/front/php/server/devices.php
index aa76c287..1765a473 100644
--- a/front/php/server/devices.php
+++ b/front/php/server/devices.php
@@ -1,14 +1,25 @@
query($sql);
+ $row = $result -> fetchArray (SQLITE3_ASSOC);
+ $deviceData = $row;
+
+ $deviceData['dev_FirstConnection'] = formatDate ($row['dev_FirstConnection']); // Date formated
+ $deviceData['dev_LastConnection'] = formatDate ($row['dev_LastConnection']); // Date formated
+
+ // Count Totals
+ $condition = ' WHERE eve_MAC="'. $mac .'" AND eve_DateTime >= '. $periodDate;
+
+ // Connections
+ $sql = 'SELECT COUNT(*) FROM Sessions
+ WHERE ses_MAC="'. $mac .'"
+ AND ( ses_DateTimeConnection >= '. $periodDate .'
+ OR ses_DateTimeDisconnection >= '. $periodDate .'
+ OR ses_StillConnected = 1 )';
+ $result = $db->query($sql);
+ $row = $result -> fetchArray (SQLITE3_NUM);
+ $deviceData['dev_Sessions'] = $row[0];
+
+ // Events
+ $sql = 'SELECT COUNT(*) FROM Events '. $condition .' AND eve_EventType <> "Connected" AND eve_EventType <> "Disconnected" ';
+ $result = $db->query($sql);
+ $row = $result -> fetchArray (SQLITE3_NUM);
+ $deviceData['dev_Events'] = $row[0];
+
+ // Donw Alerts
+ $sql = 'SELECT COUNT(*) FROM Events '. $condition .' AND eve_EventType = "Device Down"';
+ $result = $db->query($sql);
+ $row = $result -> fetchArray (SQLITE3_NUM);
+ $deviceData['dev_DownAlerts'] = $row[0];
+
+ // Presence hours
+ $sql = 'SELECT SUM (julianday (IFNULL (ses_DateTimeDisconnection, DATETIME("now")))
+ - julianday (CASE WHEN ses_DateTimeConnection < '. $periodDate .' THEN '. $periodDate .'
+ ELSE ses_DateTimeConnection END)) *24
+ FROM Sessions
+ WHERE ses_MAC="'. $mac .'"
+ AND ses_DateTimeConnection IS NOT NULL
+ AND (ses_DateTimeDisconnection IS NOT NULL OR ses_StillConnected = 1 )
+ AND ( ses_DateTimeConnection >= '. $periodDate .'
+ OR ses_DateTimeDisconnection >= '. $periodDate .'
+ OR ses_StillConnected = 1 )';
+ $result = $db->query($sql);
+ $row = $result -> fetchArray (SQLITE3_NUM);
+ $deviceData['dev_PresenceHours'] = round ($row[0]);
+
+ // Return json
+ echo (json_encode ($deviceData));
+}
+
+
+//------------------------------------------------------------------------------
+// Update Device Data
+//------------------------------------------------------------------------------
+function setDeviceData() {
+ global $db;
+
+ // sql
+ $sql = 'UPDATE Devices SET
+ dev_Name = "'. quotes($_REQUEST['name']) .'",
+ dev_Owner = "'. quotes($_REQUEST['owner']) .'",
+ dev_DeviceType = "'. quotes($_REQUEST['type']) .'",
+ dev_Vendor = "'. quotes($_REQUEST['vendor']) .'",
+ dev_Favorite = "'. quotes($_REQUEST['favorite']) .'",
+ dev_Group = "'. quotes($_REQUEST['group']) .'",
+ dev_Location = "'. quotes($_REQUEST['location']) .'",
+ dev_Comments = "'. quotes($_REQUEST['comments']) .'",
+ dev_StaticIP = "'. quotes($_REQUEST['staticIP']) .'",
+ dev_ScanCycle = "'. quotes($_REQUEST['scancycle']) .'",
+ dev_AlertEvents = "'. quotes($_REQUEST['alertevents']) .'",
+ dev_AlertDeviceDown = "'. quotes($_REQUEST['alertdown']) .'",
+ dev_SkipRepeated = "'. quotes($_REQUEST['skiprepeated']) .'",
+ dev_NewDevice = "'. quotes($_REQUEST['newdevice']) .'"
+ WHERE dev_MAC="' . $_REQUEST['mac'] .'"';
+ // update Data
+ $result = $db->query($sql);
+
+ // check result
+ if ($result == TRUE) {
+ echo "Device updated successfully";
+ } else {
+ echo "Error updating device\n\n$sql \n\n". $db->lastErrorMsg();
+ }
+}
+
+
+//------------------------------------------------------------------------------
+// Delete Device
+//------------------------------------------------------------------------------
+function deleteDevice() {
+ global $db;
+
+ // sql
+ $sql = 'DELETE FROM Devices WHERE dev_MAC="' . $_REQUEST['mac'] .'"';
+ // execute sql
+ $result = $db->query($sql);
+
+ // check result
+ if ($result == TRUE) {
+ echo "Device deleted successfully";
+ } else {
+ echo "Error deleting device\n\n$sql \n\n". $db->lastErrorMsg();
+ }
+}
+
+
//------------------------------------------------------------------------------
// Query total numbers of Devices by status
//------------------------------------------------------------------------------
-function queryTotals() {
+function getDevicesTotals() {
global $db;
// All
@@ -42,43 +182,42 @@ function queryTotals() {
$devices = $row[0];
// Connected
- $result = $db->query('SELECT COUNT(*) FROM Devices ' . getDeviceCondition ('connected') );
+ $result = $db->query('SELECT COUNT(*) FROM Devices '. getDeviceCondition ('connected') );
$row = $result -> fetchArray (SQLITE3_NUM);
$connected = $row[0];
// New
- $result = $db->query('SELECT COUNT(*) FROM Devices ' . getDeviceCondition ('new') );
+ $result = $db->query('SELECT COUNT(*) FROM Devices '. getDeviceCondition ('new') );
$row = $result -> fetchArray (SQLITE3_NUM);
$newDevices = $row[0];
// Down Alerts
- $result = $db->query('SELECT COUNT(*) FROM Devices ' . getDeviceCondition ('down'));
+ $result = $db->query('SELECT COUNT(*) FROM Devices '. getDeviceCondition ('down'));
$row = $result -> fetchArray (SQLITE3_NUM);
$devicesDownAlert = $row[0];
- echo (json_encode (array ($devices, $connected, $newDevices, $devicesDownAlert)));
+ echo (json_encode (array ($devices, $connected, $newDevices,
+ $devicesDownAlert)));
}
//------------------------------------------------------------------------------
// Query the List of devices in a determined Status
//------------------------------------------------------------------------------
-function queryList() {
+function getDevicesList() {
global $db;
- // Request Parameters
- $periodDate = getDateFromPeriod();
-
// SQL
$condition = getDeviceCondition ($_REQUEST['status']);
- $result = $db->query('SELECT *,
- CASE WHEN dev_AlertDeviceDown=1 AND dev_PresentLastScan=0 THEN "Down"
- WHEN dev_FirstConnection >= ' . $periodDate . ' THEN "New"
- WHEN dev_PresentLastScan=1 THEN "On-line"
- ELSE "Off-line"
- END AS dev_Status
- FROM Devices ' . $condition);
+ $sql = 'SELECT *, CASE
+ WHEN dev_AlertDeviceDown=1 AND dev_PresentLastScan=0 THEN "Down"
+ WHEN dev_NewDevice=1 THEN "New"
+ WHEN dev_PresentLastScan=1 THEN "On-line"
+ ELSE "Off-line"
+ END AS dev_Status
+ FROM Devices '. $condition;
+ $result = $db->query($sql);
// arrays of rows
$tableData = array();
@@ -94,7 +233,7 @@ function queryList() {
$row['dev_Status'],
$row['dev_MAC'], // MAC (hidden)
formatIPlong ($row['dev_LastIP']) // IP orderable
- );
+ );
}
// Control no rows
@@ -106,130 +245,13 @@ function queryList() {
echo (json_encode ($tableData));
}
-//------------------------------------------------------------------------------
-// Query the List of Owners
-//------------------------------------------------------------------------------
-function queryOwners() {
- global $db;
-
- // SQL
- $result = $db->query('SELECT DISTINCT 1 as dev_Order, dev_Owner
- FROM Devices
- WHERE dev_Owner <> "(unknown)" AND dev_Owner <> ""
- AND dev_Favorite = 1
- UNION
- SELECT DISTINCT 2 as dev_Order, dev_Owner
- FROM Devices
- WHERE dev_Owner <> "(unknown)" AND dev_Owner <> ""
- AND dev_Favorite = 0
- AND dev_Owner NOT IN (SELECT dev_Owner FROM Devices WHERE dev_Favorite = 1)
- ORDER BY 1,2 ');
-
- // arrays of rows
- $tableData = array();
- while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
- $tableData[] = array ('order' => $row['dev_Order'],
- 'name' => $row['dev_Owner']);
- }
-
- // Return json
- echo (json_encode ($tableData));
-}
-
-
-//------------------------------------------------------------------------------
-// Query the List of types
-//------------------------------------------------------------------------------
-function queryDeviceTypes() {
- global $db;
-
- // SQL
- $result = $db->query('SELECT DISTINCT 9 as dev_Order, dev_DeviceType
- FROM Devices
- WHERE dev_DeviceType NOT IN ("",
- "Smartphone", "Tablet",
- "Laptop", "Mini PC", "PC", "Printer", "Server",
- "Game Console", "SmartTV", "TV Decoder", "Virtual Assistance",
- "Clock", "House Appliance", "Phone", "Radio",
- "AP", "NAS", "PLC", "Router")
-
- UNION SELECT 1 as dev_Order, "Smartphone"
- UNION SELECT 1 as dev_Order, "Tablet"
-
- UNION SELECT 2 as dev_Order, "Laptop"
- UNION SELECT 2 as dev_Order, "Mini PC"
- UNION SELECT 2 as dev_Order, "PC"
- UNION SELECT 2 as dev_Order, "Printer"
- UNION SELECT 2 as dev_Order, "Server"
-
- UNION SELECT 3 as dev_Order, "Game Console"
- UNION SELECT 3 as dev_Order, "SmartTV"
- UNION SELECT 3 as dev_Order, "TV Decoder"
- UNION SELECT 3 as dev_Order, "Virtual Assistance"
-
- UNION SELECT 4 as dev_Order, "Clock"
- UNION SELECT 4 as dev_Order, "House Appliance"
- UNION SELECT 4 as dev_Order, "Phone"
- UNION SELECT 4 as dev_Order, "Radio"
-
- UNION SELECT 5 as dev_Order, "AP"
- UNION SELECT 5 as dev_Order, "NAS"
- UNION SELECT 5 as dev_Order, "PLC"
- UNION SELECT 5 as dev_Order, "Router"
-
- UNION SELECT 10 as dev_Order, "Other"
-
- ORDER BY 1,2 ');
-
- // arrays of rows
- $tableData = array();
- while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
- $tableData[] = array ('order' => $row['dev_Order'],
- 'name' => $row['dev_DeviceType']);
- }
-
- // Return json
- echo (json_encode ($tableData));
-}
-
-
-//------------------------------------------------------------------------------
-// Query the List of groups
-//------------------------------------------------------------------------------
-function queryGroups() {
- global $db;
-
- // SQL
- $result = $db->query('SELECT DISTINCT 1 as dev_Order, dev_Group
- FROM Devices
- WHERE dev_Group <> "(unknown)" AND dev_Group <> "Others" AND dev_Group <> ""
- UNION SELECT 1 as dev_Order, "Always on"
- UNION SELECT 1 as dev_Order, "Friends"
- UNION SELECT 1 as dev_Order, "Personal"
- UNION SELECT 2 as dev_Order, "Others"
- ORDER BY 1,2 ');
-
- // arrays of rows
- $tableData = array();
- while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
- $tableData[] = array ('order' => $row['dev_Order'],
- 'name' => $row['dev_Group']);
- }
-
- // Return json
- echo (json_encode ($tableData));
-}
-
//------------------------------------------------------------------------------
// Query the List of devices for calendar
//------------------------------------------------------------------------------
-function queryCalendarList() {
+function getDevicesListCalendar() {
global $db;
- // Request Parameters
- $periodDate = getDateFromPeriod();
-
// SQL
$condition = getDeviceCondition ($_REQUEST['status']);
$result = $db->query('SELECT * FROM Devices ' . $condition);
@@ -252,67 +274,175 @@ function queryCalendarList() {
//------------------------------------------------------------------------------
-// Query Device Data
+// Query the List of Owners
//------------------------------------------------------------------------------
-function queryDeviceData() {
+function getOwners() {
global $db;
- // Request Parameters
- $periodDate = getDateFromPeriod();
- $mac = $_REQUEST['mac'];
-
- // Device Data
- $result = $db->query('SELECT *,
- CASE WHEN dev_AlertDeviceDown=1 AND dev_PresentLastScan=0 THEN "Down"
- WHEN dev_PresentLastScan=1 THEN "On-line"
- ELSE "Off-line" END as dev_Status
- FROM Devices
- WHERE dev_MAC="' . $mac .'"');
-
- $row = $result -> fetchArray (SQLITE3_ASSOC);
- $deviceData = $row;
- $deviceData['dev_FirstConnection'] = formatDate ($row['dev_FirstConnection']); // Date formated
- $deviceData['dev_LastConnection'] = formatDate ($row['dev_LastConnection']); // Date formated
-
- // Count Totals
- $condicion = ' WHERE eve_MAC="' . $mac .'" AND eve_DateTime >= ' . $periodDate;
-
- // Connections
- $result = $db->query('SELECT COUNT(*) FROM Sessions
- WHERE ses_MAC="' . $mac .'"
- AND ( ses_DateTimeConnection >= ' . $periodDate . '
- OR ses_DateTimeDisconnection >= ' . $periodDate . '
- OR ses_StillConnected = 1 ) ');
- $row = $result -> fetchArray (SQLITE3_NUM);
- $deviceData['dev_Sessions'] = $row[0];
-
- // Events
- $result = $db->query('SELECT COUNT(*) FROM Events ' . $condicion . ' AND eve_EventType <> "Connected" AND eve_EventType <> "Disconnected" ');
- $row = $result -> fetchArray (SQLITE3_NUM);
- $deviceData['dev_Events'] = $row[0];
-
- // Donw Alerts
- $result = $db->query('SELECT COUNT(*) FROM Events ' . $condicion . ' AND eve_EventType = "Device Down"');
- $row = $result -> fetchArray (SQLITE3_NUM);
- $deviceData['dev_DownAlerts'] = $row[0];
-
- // Presence hours
- $result = $db->query('SELECT SUM (julianday (IFNULL (ses_DateTimeDisconnection, DATETIME("now")))
- - julianday (CASE WHEN ses_DateTimeConnection < ' . $periodDate . ' THEN ' . $periodDate . '
- ELSE ses_DateTimeConnection END)) *24
- FROM Sessions
- WHERE ses_MAC="' . $mac .'"
- AND ses_DateTimeConnection IS NOT NULL
- AND (ses_DateTimeDisconnection IS NOT NULL OR ses_StillConnected = 1 )
- AND ( ses_DateTimeConnection >= ' . $periodDate . '
- OR ses_DateTimeDisconnection >= ' . $periodDate . '
- OR ses_StillConnected = 1 ) ');
- $row = $result -> fetchArray (SQLITE3_NUM);
- $deviceData['dev_PresenceHours'] = round ($row[0]);
+ // SQL
+ $sql = 'SELECT DISTINCT 1 as dev_Order, dev_Owner
+ FROM Devices
+ WHERE dev_Owner <> "(unknown)" AND dev_Owner <> ""
+ AND dev_Favorite = 1
+ UNION
+ SELECT DISTINCT 2 as dev_Order, dev_Owner
+ FROM Devices
+ WHERE dev_Owner <> "(unknown)" AND dev_Owner <> ""
+ AND dev_Favorite = 0
+ AND dev_Owner NOT IN
+ (SELECT dev_Owner FROM Devices WHERE dev_Favorite = 1)
+ ORDER BY 1,2 ';
+ $result = $db->query($sql);
+ // arrays of rows
+ $tableData = array();
+ while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
+ $tableData[] = array ('order' => $row['dev_Order'],
+ 'name' => $row['dev_Owner']);
+ }
// Return json
- echo (json_encode ($deviceData));
+ echo (json_encode ($tableData));
+}
+
+
+//------------------------------------------------------------------------------
+// Query the List of types
+//------------------------------------------------------------------------------
+function getDeviceTypes() {
+ global $db;
+
+ // SQL
+ $sql = 'SELECT DISTINCT 9 as dev_Order, dev_DeviceType
+ FROM Devices
+ WHERE dev_DeviceType NOT IN ("",
+ "Smartphone", "Tablet",
+ "Laptop", "Mini PC", "PC", "Printer", "Server", "Singleboard Computer (SBC)",
+ "Game Console", "SmartTV", "TV Decoder", "Virtual Assistance",
+ "Clock", "House Appliance", "Phone", "Radio",
+ "AP", "NAS", "PLC", "Router")
+
+ UNION SELECT 1 as dev_Order, "Smartphone"
+ UNION SELECT 1 as dev_Order, "Tablet"
+
+ UNION SELECT 2 as dev_Order, "Laptop"
+ UNION SELECT 2 as dev_Order, "Mini PC"
+ UNION SELECT 2 as dev_Order, "PC"
+ UNION SELECT 2 as dev_Order, "Printer"
+ UNION SELECT 2 as dev_Order, "Server"
+ UNION SELECT 2 as dev_Order, "Singleboard Computer (SBC)"
+
+ UNION SELECT 3 as dev_Order, "Game Console"
+ UNION SELECT 3 as dev_Order, "SmartTV"
+ UNION SELECT 3 as dev_Order, "TV Decoder"
+ UNION SELECT 3 as dev_Order, "Virtual Assistance"
+
+ UNION SELECT 4 as dev_Order, "Clock"
+ UNION SELECT 4 as dev_Order, "House Appliance"
+ UNION SELECT 4 as dev_Order, "Phone"
+ UNION SELECT 4 as dev_Order, "Radio"
+
+ UNION SELECT 5 as dev_Order, "AP"
+ UNION SELECT 5 as dev_Order, "NAS"
+ UNION SELECT 5 as dev_Order, "PLC"
+ UNION SELECT 5 as dev_Order, "Router"
+
+ UNION SELECT 10 as dev_Order, "Other"
+
+ ORDER BY 1,2';
+ $result = $db->query($sql);
+
+ // arrays of rows
+ $tableData = array();
+ while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
+ $tableData[] = array ('order' => $row['dev_Order'],
+ 'name' => $row['dev_DeviceType']);
+ }
+
+ // Return json
+ echo (json_encode ($tableData));
+}
+
+
+//------------------------------------------------------------------------------
+// Query the List of groups
+//------------------------------------------------------------------------------
+function getGroups() {
+ global $db;
+
+ // SQL
+ $sql = 'SELECT DISTINCT 1 as dev_Order, dev_Group
+ FROM Devices
+ WHERE dev_Group NOT IN ("(unknown)", "Others") AND dev_Group <> ""
+ UNION SELECT 1 as dev_Order, "Always on"
+ UNION SELECT 1 as dev_Order, "Friends"
+ UNION SELECT 1 as dev_Order, "Personal"
+ UNION SELECT 2 as dev_Order, "Others"
+ ORDER BY 1,2 ';
+ $result = $db->query($sql);
+
+ // arrays of rows
+ $tableData = array();
+ while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
+ $tableData[] = array ('order' => $row['dev_Order'],
+ 'name' => $row['dev_Group']);
+ }
+
+ // Return json
+ echo (json_encode ($tableData));
+}
+
+
+//------------------------------------------------------------------------------
+// Query the List of locations
+//------------------------------------------------------------------------------
+function getLocations() {
+ global $db;
+
+ // SQL
+ $sql = 'SELECT DISTINCT 9 as dev_Order, dev_Location
+ FROM Devices
+ WHERE dev_Location <> ""
+ AND dev_Location NOT IN (
+ "Bathroom", "Bedroom", "Dining room", "Hallway",
+ "Kitchen", "Laundry", "Living room", "Study",
+ "Attic", "Basement", "Garage",
+ "Back yard", "Garden", "Terrace",
+ "Other")
+
+ UNION SELECT 1 as dev_Order, "Bathroom"
+ UNION SELECT 1 as dev_Order, "Bedroom"
+ UNION SELECT 1 as dev_Order, "Dining room"
+ UNION SELECT 1 as dev_Order, "Hall"
+ UNION SELECT 1 as dev_Order, "Kitchen"
+ UNION SELECT 1 as dev_Order, "Laundry"
+ UNION SELECT 1 as dev_Order, "Living room"
+ UNION SELECT 1 as dev_Order, "Study"
+
+ UNION SELECT 2 as dev_Order, "Attic"
+ UNION SELECT 2 as dev_Order, "Basement"
+ UNION SELECT 2 as dev_Order, "Garage"
+
+ UNION SELECT 3 as dev_Order, "Back yard"
+ UNION SELECT 3 as dev_Order, "Garden"
+ UNION SELECT 3 as dev_Order, "Terrace"
+
+ UNION SELECT 10 as dev_Order, "Other"
+ ORDER BY 1,2 ';
+
+
+
+ $result = $db->query($sql);
+
+ // arrays of rows
+ $tableData = array();
+ while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
+ $tableData[] = array ('order' => $row['dev_Order'],
+ 'name' => $row['dev_Location']);
+ }
+
+ // Return json
+ echo (json_encode ($tableData));
}
@@ -320,58 +450,14 @@ function queryDeviceData() {
// Status Where conditions
//------------------------------------------------------------------------------
function getDeviceCondition ($deviceStatus) {
- // Request Parameters
- $periodDate = getDateFromPeriod();
-
switch ($deviceStatus) {
- case 'all':
- return '';
- case 'connected':
- return 'WHERE dev_PresentLastScan=1';
- case 'new':
- return 'WHERE dev_FirstConnection >= ' . $periodDate;
- case 'down':
- return 'WHERE dev_AlertDeviceDown=1 AND dev_PresentLastScan=0';
- case 'favorites':
- return 'WHERE dev_Favorite=1';
- default:
- return 'WHERE 1=0';
+ case 'all': return ''; break;
+ case 'connected': return 'WHERE dev_PresentLastScan=1'; break;
+ case 'new': return 'WHERE dev_NewDevice=1'; break;
+ case 'down': return 'WHERE dev_AlertDeviceDown=1 AND dev_PresentLastScan=0'; break;
+ case 'favorites': return 'WHERE dev_Favorite=1'; break;
+ default: return 'WHERE 1=0'; break;
}
}
-
-//------------------------------------------------------------------------------
-// Update Device Data
-//------------------------------------------------------------------------------
-function updateDeviceData() {
- global $db;
-
- // sql
- $sql = 'UPDATE Devices SET
- dev_Name = "'. $_REQUEST['name'] .'",
- dev_Owner = "'. $_REQUEST['owner'] .'",
- dev_DeviceType = "'. $_REQUEST['type'] .'",
- dev_Vendor = "'. $_REQUEST['vendor'] .'",
- dev_Favorite = "'. $_REQUEST['favorite'] .'",
- dev_Group = "'. $_REQUEST['group'] .'",
- dev_Comments = "'. $_REQUEST['comments'] .'",
- dev_StaticIP = "'. $_REQUEST['staticIP'] .'",
- dev_ScanCycle = "'. $_REQUEST['scancycle'] .'",
- dev_AlertEvents = "'. $_REQUEST['alertevents'] .'",
- dev_AlertDeviceDown = "'. $_REQUEST['alertdown'] .'",
- dev_SkipRepeated = "'. $_REQUEST['skiprepeated'] .'"
- WHERE dev_MAC="' . $_REQUEST['mac'] .'"';
- // update Data
- $result = $db->query($sql);
-
- // check result
- if ($result == TRUE) {
- echo "Device updated successfully";
- } else {
- echo "Error updating device\n\n". $sql .'\n\n' . $db->lastErrorMsg();
- }
-
-}
-
-
?>
diff --git a/front/php/server/events.php b/front/php/server/events.php
index 8e073973..1d0fa228 100644
--- a/front/php/server/events.php
+++ b/front/php/server/events.php
@@ -1,9 +1,20 @@
= '. $periodDate .'
- OR ses_DateTimeDisconnection >= '. $periodDate .'
- OR ses_StillConnected = 1 ) ';
+ $SQL = $SQL2 . ' WHERE ( ses_DateTimeConnection >= '. $periodDate .' OR ses_DateTimeDisconnection >= '. $periodDate .' OR ses_StillConnected = 1 ) ';
break;
case 'missing':
$SQL = $SQL2 . ' WHERE (ses_DateTimeConnection IS NULL AND ses_DateTimeDisconnection >= '. $periodDate .' )
OR (ses_DateTimeDisconnection IS NULL AND ses_StillConnected = 0 AND ses_DateTimeConnection >= '. $periodDate .' )';
break;
- case 'voided':
- $SQL = $SQL1 .' AND eve_EventType LIKE "VOIDED%" ';
- break;
- case 'new':
- $SQL = $SQL1 .' AND eve_EventType = "New Device" ';
- break;
- case 'down':
- $SQL = $SQL1 .' AND eve_EventType = "Device Down" ';
- break;
- default:
- $SQL = $SQL1 .' AND 1==0 ';
- break;
+ case 'voided': $SQL = $SQL1 .' AND eve_EventType LIKE "VOIDED%" '; break;
+ case 'new': $SQL = $SQL1 .' AND eve_EventType = "New Device" '; break;
+ case 'down': $SQL = $SQL1 .' AND eve_EventType = "Device Down" '; break;
+ default: $SQL = $SQL1 .' AND 1==0 '; break;
}
// Query
@@ -187,7 +186,7 @@ function queryList() {
//------------------------------------------------------------------------------
// Query Device Sessions
//------------------------------------------------------------------------------
-function queryDeviceSessions() {
+function getDeviceSessions() {
global $db;
// Request Parameters
@@ -195,16 +194,17 @@ function queryDeviceSessions() {
$periodDate = getDateFromPeriod();
// SQL
- $result = $db->query('SELECT IFNULL (ses_DateTimeConnection, ses_DateTimeDisconnection) ses_DateTimeOrder,
- ses_EventTypeConnection, ses_DateTimeConnection,
- ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_StillConnected,
- ses_IP, ses_AdditionalInfo
- FROM Sessions
- WHERE ses_MAC="' . $mac .'"
- AND ( ses_DateTimeConnection >= '. $periodDate .'
- OR ses_DateTimeDisconnection >= '. $periodDate .'
- OR ses_StillConnected = 1 ) ');
-
+ $SQL = 'SELECT IFNULL (ses_DateTimeConnection, ses_DateTimeDisconnection) ses_DateTimeOrder,
+ ses_EventTypeConnection, ses_DateTimeConnection,
+ ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_StillConnected,
+ ses_IP, ses_AdditionalInfo
+ FROM Sessions
+ WHERE ses_MAC="' . $mac .'"
+ AND ( ses_DateTimeConnection >= '. $periodDate .'
+ OR ses_DateTimeDisconnection >= '. $periodDate .'
+ OR ses_StillConnected = 1 ) ';
+ $result = $db->query($SQL);
+
// arrays of rows
$tableData = array();
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
@@ -228,7 +228,7 @@ function queryDeviceSessions() {
if ($row['ses_EventTypeConnection'] == '' || $row['ses_EventTypeDisconnection'] == '') {
$dur = '...';
} elseif ($row['ses_StillConnected'] == true) {
- $dur = formatDateDiff ($row['ses_DateTimeConnection'], ''); //*******************************************************************************************
+ $dur = formatDateDiff ($row['ses_DateTimeConnection'], ''); //***********
} else {
$dur = formatDateDiff ($row['ses_DateTimeConnection'], $row['ses_DateTimeDisconnection']);
}
@@ -256,7 +256,7 @@ function queryDeviceSessions() {
//------------------------------------------------------------------------------
// Query Device Presence Calendar
//------------------------------------------------------------------------------
-function queryDevicePresence() {
+function getDevicePresence() {
global $db;
// Request Parameters
@@ -266,24 +266,26 @@ function queryDevicePresence() {
$endDate = '"'. formatDateISO ($_REQUEST ['end']) .'"';
// SQL
- $result = $db->query('SELECT ses_EventTypeConnection, ses_DateTimeConnection,
- ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_IP, ses_AdditionalInfo,
-
- CASE WHEN ses_EventTypeConnection = "" THEN
- IFNULL ((SELECT MAX(ses_DateTimeDisconnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeDisconnection < SES1.ses_DateTimeDisconnection), DATETIME(ses_DateTimeDisconnection, "-1 hour"))
- ELSE ses_DateTimeConnection
- END AS ses_DateTimeConnectionCorrected,
+ $SQL = 'SELECT ses_EventTypeConnection, ses_DateTimeConnection,
+ ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_IP, ses_AdditionalInfo,
+
+ CASE
+ WHEN ses_EventTypeConnection = "" THEN
+ IFNULL ((SELECT MAX(ses_DateTimeDisconnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeDisconnection < SES1.ses_DateTimeDisconnection), DATETIME(ses_DateTimeDisconnection, "-1 hour"))
+ ELSE ses_DateTimeConnection
+ END AS ses_DateTimeConnectionCorrected,
- CASE WHEN ses_EventTypeDisconnection = "" THEN
- (SELECT MIN(ses_DateTimeConnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeConnection > SES1.ses_DateTimeConnection)
- ELSE ses_DateTimeDisconnection
- END AS ses_DateTimeDisconnectionCorrected
+ CASE
+ WHEN ses_EventTypeDisconnection = "" THEN
+ (SELECT MIN(ses_DateTimeConnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeConnection > SES1.ses_DateTimeConnection)
+ ELSE ses_DateTimeDisconnection
+ END AS ses_DateTimeDisconnectionCorrected
- FROM Sessions AS SES1
- WHERE ses_MAC="' . $mac .'"
- AND (ses_DateTimeConnectionCorrected <= date('. $endDate .')
- AND (ses_DateTimeDisconnectionCorrected >= date('. $startDate .') OR ses_StillConnected = 1 ))
- ');
+ FROM Sessions AS SES1
+ WHERE ses_MAC="' . $mac .'"
+ AND (ses_DateTimeConnectionCorrected <= date('. $endDate .')
+ AND (ses_DateTimeDisconnectionCorrected >= date('. $startDate .') OR ses_StillConnected = 1 )) ';
+ $result = $db->query($SQL);
// arrays of rows
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
@@ -300,10 +302,6 @@ function queryDevicePresence() {
'IP: ' . $row['ses_IP'];
// Save row data
-// 'start' => formatDateISO ($row['ses_DateTimeConnectionCorrected']),
-// 'end' => formatDateISO ($row['ses_DateTimeDisconnectionCorrected']),
-// 'start' => $row['ses_DateTimeConnectionCorrected'],
-// 'end' => $row['ses_DateTimeDisconnectionCorrected'],
$tableData[] = array(
'title' => '',
'start' => formatDateISO ($row['ses_DateTimeConnectionCorrected']),
@@ -326,32 +324,33 @@ function queryDevicePresence() {
//------------------------------------------------------------------------------
// Query Presence Calendar for all Devices
//------------------------------------------------------------------------------
-function queryCalendarPresence() {
+function getEventsCalendar() {
global $db;
// Request Parameters
- $periodDate = getDateFromPeriod();
$startDate = '"'. $_REQUEST ['start'] .'"';
$endDate = '"'. $_REQUEST ['end'] .'"';
// SQL
- $result = $db->query('SELECT ses_MAC, ses_EventTypeConnection, ses_DateTimeConnection,
- ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_IP, ses_AdditionalInfo,
-
- CASE WHEN ses_EventTypeConnection = "" THEN
- IFNULL ((SELECT MAX(ses_DateTimeDisconnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeDisconnection < SES1.ses_DateTimeDisconnection), DATETIME(ses_DateTimeDisconnection, "-1 hour"))
- ELSE ses_DateTimeConnection
- END AS ses_DateTimeConnectionCorrected,
+ $SQL = 'SELECT ses_MAC, ses_EventTypeConnection, ses_DateTimeConnection,
+ ses_EventTypeDisconnection, ses_DateTimeDisconnection, ses_IP, ses_AdditionalInfo,
+
+ CASE
+ WHEN ses_EventTypeConnection = "" THEN
+ IFNULL ((SELECT MAX(ses_DateTimeDisconnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeDisconnection < SES1.ses_DateTimeDisconnection), DATETIME(ses_DateTimeDisconnection, "-1 hour"))
+ ELSE ses_DateTimeConnection
+ END AS ses_DateTimeConnectionCorrected,
- CASE WHEN ses_EventTypeDisconnection = "" THEN
- (SELECT MIN(ses_DateTimeConnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeConnection > SES1.ses_DateTimeConnection)
- ELSE ses_DateTimeDisconnection
- END AS ses_DateTimeDisconnectionCorrected
+ CASE
+ WHEN ses_EventTypeDisconnection = "" THEN
+ (SELECT MIN(ses_DateTimeConnection) FROM Sessions AS SES2 WHERE SES2.ses_MAC = SES1.ses_MAC AND SES2.ses_DateTimeConnection > SES1.ses_DateTimeConnection)
+ ELSE ses_DateTimeDisconnection
+ END AS ses_DateTimeDisconnectionCorrected
- FROM Sessions AS SES1
- WHERE ( ses_DateTimeConnectionCorrected <= Date('. $endDate .')
- AND (ses_DateTimeDisconnectionCorrected >= Date('. $startDate .') OR ses_StillConnected = 1 ))
- ');
+ FROM Sessions AS SES1
+ WHERE ( ses_DateTimeConnectionCorrected <= Date('. $endDate .')
+ AND (ses_DateTimeDisconnectionCorrected >= Date('. $startDate .') OR ses_StillConnected = 1 )) ';
+ $result = $db->query($SQL);
// arrays of rows
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
@@ -392,7 +391,7 @@ function queryCalendarPresence() {
//------------------------------------------------------------------------------
// Query Device events
//------------------------------------------------------------------------------
-function queryDeviceEvents() {
+function getDeviceEvents() {
global $db;
// Request Parameters
@@ -401,13 +400,13 @@ function queryDeviceEvents() {
$hideConnections = $_REQUEST ['hideConnections'];
// SQL
- $result = $db->query('SELECT eve_DateTime, eve_EventType, eve_IP, eve_AdditionalInfo
- FROM Events
- WHERE eve_MAC="'. $mac .'" AND eve_DateTime >= '. $periodDate .'
- AND ( (eve_EventType <> "Connected" AND eve_EventType <> "Disconnected" AND
- eve_EventType <> "VOIDED - Connected" AND eve_EventType <> "VOIDED - Disconnected")
- OR "'. $hideConnections .'" = "false" )
- ');
+ $SQL = 'SELECT eve_DateTime, eve_EventType, eve_IP, eve_AdditionalInfo
+ FROM Events
+ WHERE eve_MAC="'. $mac .'" AND eve_DateTime >= '. $periodDate .'
+ AND ( (eve_EventType <> "Connected" AND eve_EventType <> "Disconnected" AND
+ eve_EventType <> "VOIDED - Connected" AND eve_EventType <> "VOIDED - Disconnected")
+ OR "'. $hideConnections .'" = "false" ) ';
+ $result = $db->query($SQL);
// arrays of rows
$tableData = array();
@@ -425,5 +424,4 @@ function queryDeviceEvents() {
echo (json_encode ($tableData));
}
-
?>
diff --git a/front/php/server/parameters.php b/front/php/server/parameters.php
new file mode 100644
index 00000000..6c0a7cd6
--- /dev/null
+++ b/front/php/server/parameters.php
@@ -0,0 +1,88 @@
+query($sql);
+ $row = $result -> fetchArray (SQLITE3_NUM);
+ $value = $row[0];
+
+ echo (json_encode ($value));
+}
+
+
+//------------------------------------------------------------------------------
+// Set Parameter Value
+//------------------------------------------------------------------------------
+function setParameter() {
+ global $db;
+
+ // Update value
+ $sql = 'UPDATE Parameters SET par_Value="'. quotes ($_REQUEST['value']) .'"
+ WHERE par_ID="'. quotes($_REQUEST['parameter']) .'"';
+ $result = $db->query($sql);
+
+ if (! $result == TRUE) {
+ echo "Error updating parameter\n\n$sql \n\n". $db->lastErrorMsg();
+ return;
+ }
+
+ $changes = $db->changes();
+ if ($changes == 0) {
+ // Insert new value
+ $sql = 'INSERT INTO Parameters (par_ID, par_Value)
+ VALUES ("'. quotes($_REQUEST['parameter']) .'",
+ "'. quotes($_REQUEST['value']) .'")';
+ $result = $db->query($sql);
+
+ if (! $result == TRUE) {
+ echo "Error creating parameter\n\n$sql \n\n". $db->lastErrorMsg();
+ return;
+ }
+ }
+
+ echo 'OK';
+}
+
+?>
diff --git a/front/php/server/util.php b/front/php/server/util.php
index 30a6d6d3..a4f345f3 100644
--- a/front/php/server/util.php
+++ b/front/php/server/util.php
@@ -1,4 +1,13 @@
diff --git a/front/php/templates/footer.php b/front/php/templates/footer.php
index 1ef34db2..a5cdd03d 100644
--- a/front/php/templates/footer.php
+++ b/front/php/templates/footer.php
@@ -2,7 +2,7 @@
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
-# footer.php - Front module. Common footer to all the front pages
+# footer.php - Front module. Common footer to all the web pages
#-------------------------------------------------------------------------------
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
#--------------------------------------------------------------------------- -->
@@ -11,9 +11,7 @@
| Name | @@ -142,6 +124,7 @@
|---|