mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 09:36:05 -08:00
Move of API folder from /app/front/api to app/api
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -8,6 +8,7 @@ db/pialert.db
|
|||||||
db/app.db
|
db/app.db
|
||||||
front/log/*
|
front/log/*
|
||||||
front/api/*
|
front/api/*
|
||||||
|
/api/*
|
||||||
**/plugins/**/*.log
|
**/plugins/**/*.log
|
||||||
**/%40eaDir/
|
**/%40eaDir/
|
||||||
**/@eaDir/
|
**/@eaDir/
|
||||||
|
|||||||
@@ -72,6 +72,6 @@ COPY install/crontab /etc/crontabs/root
|
|||||||
RUN ${INSTALL_DIR}/dockerfiles/pre-setup.sh
|
RUN ${INSTALL_DIR}/dockerfiles/pre-setup.sh
|
||||||
|
|
||||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=2 \
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=2 \
|
||||||
CMD curl -sf -o /dev/null ${LISTEN_ADDR}:${PORT}/api/app_state.json
|
CMD curl -sf -o /dev/null ${LISTEN_ADDR}:${PORT}/php/server/query_json.php?file=app_state.json
|
||||||
|
|
||||||
ENTRYPOINT ["/init"]
|
ENTRYPOINT ["/init"]
|
||||||
|
|||||||
0
front/api/.gitignore → api/.gitignore
vendored
0
front/api/.gitignore → api/.gitignore
vendored
@@ -39,7 +39,7 @@ services:
|
|||||||
- ${DEV_LOCATION}/install/user-mapping.debian.sh:/app/install/user-mapping.debian.sh
|
- ${DEV_LOCATION}/install/user-mapping.debian.sh:/app/install/user-mapping.debian.sh
|
||||||
- ${DEV_LOCATION}/install/install.debian.sh:/app/install/install.debian.sh
|
- ${DEV_LOCATION}/install/install.debian.sh:/app/install/install.debian.sh
|
||||||
- ${DEV_LOCATION}/install/install_dependencies.debian.sh:/app/install/install_dependencies.debian.sh
|
- ${DEV_LOCATION}/install/install_dependencies.debian.sh:/app/install/install_dependencies.debian.sh
|
||||||
- ${DEV_LOCATION}/front/api:/app/front/api
|
- ${DEV_LOCATION}/api:/app/api
|
||||||
- ${DEV_LOCATION}/front/php:/app/front/php
|
- ${DEV_LOCATION}/front/php:/app/front/php
|
||||||
- ${DEV_LOCATION}/front/deviceDetails.php:/app/front/deviceDetails.php
|
- ${DEV_LOCATION}/front/deviceDetails.php:/app/front/deviceDetails.php
|
||||||
- ${DEV_LOCATION}/front/deviceDetailsEdit.php:/app/front/deviceDetailsEdit.php
|
- ${DEV_LOCATION}/front/deviceDetailsEdit.php:/app/front/deviceDetailsEdit.php
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ docker run -d --rm --network=host \
|
|||||||
| | `:/app/front/log` | Logs folder useful for debugging if you have issues setting up the container |
|
| | `:/app/front/log` | Logs folder useful for debugging if you have issues setting up the container |
|
||||||
| | `:/etc/pihole/pihole-FTL.db` | PiHole's `pihole-FTL.db` database file. Required if you want to use PiHole DB mapping. |
|
| | `:/etc/pihole/pihole-FTL.db` | PiHole's `pihole-FTL.db` database file. Required if you want to use PiHole DB mapping. |
|
||||||
| | `:/etc/pihole/dhcp.leases` | PiHole's `dhcp.leases` file. Required if you want to use PiHole `dhcp.leases` file. This has to be matched with a corresponding `DHCPLSS_paths_to_check` setting entry (the path in the container must contain `pihole`)|
|
| | `:/etc/pihole/dhcp.leases` | PiHole's `dhcp.leases` file. Required if you want to use PiHole `dhcp.leases` file. This has to be matched with a corresponding `DHCPLSS_paths_to_check` setting entry (the path in the container must contain `pihole`)|
|
||||||
| | `:/app/front/api` | A simple [API endpoint](https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md) containing static (but regularly updated) json and other files. |
|
| | `:/app/api` | A simple [API endpoint](https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md) containing static (but regularly updated) json and other files. |
|
||||||
| | `:/app/front/plugins/<plugin>/ignore_plugin` | Map a file `ignore_plugin` to ignore a plugin. Plugins can be soft-disabled via settings. More in the [Plugin docs](https://github.com/jokob-sk/NetAlertX/blob/main/front/plugins/README.md). |
|
| | `:/app/front/plugins/<plugin>/ignore_plugin` | Map a file `ignore_plugin` to ignore a plugin. Plugins can be soft-disabled via settings. More in the [Plugin docs](https://github.com/jokob-sk/NetAlertX/blob/main/front/plugins/README.md). |
|
||||||
| | `:/etc/resolv.conf` | Use a custom `resolv.conf` file for [better name resolution](https://github.com/jokob-sk/NetAlertX/blob/main/docs/REVERSE_DNS.md). |
|
| | `:/etc/resolv.conf` | Use a custom `resolv.conf` file for [better name resolution](https://github.com/jokob-sk/NetAlertX/blob/main/docs/REVERSE_DNS.md). |
|
||||||
|
|
||||||
|
|||||||
@@ -107,11 +107,11 @@ fi
|
|||||||
# Create an empty log files
|
# Create an empty log files
|
||||||
# Create the execution_queue.log and app_front.log files if they don't exist
|
# Create the execution_queue.log and app_front.log files if they don't exist
|
||||||
touch "${INSTALL_DIR}"/front/log/{app.log,execution_queue.log,app_front.log,app.php_errors.log,stderr.log,stdout.log,db_is_locked.log}
|
touch "${INSTALL_DIR}"/front/log/{app.log,execution_queue.log,app_front.log,app.php_errors.log,stderr.log,stdout.log,db_is_locked.log}
|
||||||
touch "${INSTALL_DIR}"/front/api/user_notifications.json
|
touch "${INSTALL_DIR}"/api/user_notifications.json
|
||||||
|
|
||||||
echo "[INSTALL] Fixing permissions after copied starter config & DB"
|
echo "[INSTALL] Fixing permissions after copied starter config & DB"
|
||||||
chown -R nginx:www-data "${INSTALL_DIR}"/{config,front/log,db,front/api}
|
chown -R nginx:www-data "${INSTALL_DIR}"/{config,front/log,db,api}
|
||||||
chown -R nginx:www-data "${INSTALL_DIR}"/front/api/user_notifications.json
|
chown -R nginx:www-data "${INSTALL_DIR}"/api/user_notifications.json
|
||||||
|
|
||||||
chmod 750 "${INSTALL_DIR}"/{config,front/log,db}
|
chmod 750 "${INSTALL_DIR}"/{config,front/log,db}
|
||||||
find "${INSTALL_DIR}"/{config,front/log,db} -type f -exec chmod 640 {} \;
|
find "${INSTALL_DIR}"/{config,front/log,db} -type f -exec chmod 640 {} \;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ The endpoints are updated when objects in the API endpoints are changed.
|
|||||||
|
|
||||||
### Location of the endpoints
|
### Location of the endpoints
|
||||||
|
|
||||||
In the container, these files are located under the `/app/front/api/` folder and thus on the `<netalertx_url>/api/<File name>` url.
|
In the container, these files are located under the `/app/api/` folder. You can acces sthem via the `/php/server/query_json.php?file=user_notifications.json` endpoint.
|
||||||
|
|
||||||
### Available endpoints
|
### Available endpoints
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ Input data from the plugin might cause mapping issues in specific edge cases. Lo
|
|||||||
17:31:05 [Plugins] SQL sqlParams for mapping: [('01:01:01:01:01:01', '172.30.0.1', 0, 'aaaa', 'vvvvvvvvv', 'PIHOLE'), ('02:42:ac:1e:00:02', '172.30.0.2', 0, 'dddd', 'vvvvv2222', 'PIHOLE')]
|
17:31:05 [Plugins] SQL sqlParams for mapping: [('01:01:01:01:01:01', '172.30.0.1', 0, 'aaaa', 'vvvvvvvvv', 'PIHOLE'), ('02:42:ac:1e:00:02', '172.30.0.2', 0, 'dddd', 'vvvvv2222', 'PIHOLE')]
|
||||||
🔺
|
🔺
|
||||||
17:31:05 [API] Update API starting
|
17:31:05 [API] Update API starting
|
||||||
17:31:06 [API] Updating table_plugins_history.json file in /front/api
|
17:31:06 [API] Updating table_plugins_history.json file in /api
|
||||||
```
|
```
|
||||||
|
|
||||||
> The debug output between the 🔻red arrows🔺 is important for debugging (arrows added only to highlight the section on this page, they are not available in the actual debug log)
|
> The debug output between the 🔻red arrows🔺 is important for debugging (arrows added only to highlight the section on this page, they are not available in the actual debug log)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
|
|
||||||
// some race condition, need to implement delay
|
// some race condition, need to implement delay
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$.get('api/table_settings.json?nocache=' + Date.now(), function(res) {
|
$.get('/php/server/query_json.php', { file: 'table_settings.json', nocache: Date.now() }, function(res) {
|
||||||
|
|
||||||
settingsData = res["data"];
|
settingsData = res["data"];
|
||||||
|
|
||||||
|
|||||||
@@ -199,26 +199,31 @@ function getDevicesTotals() {
|
|||||||
|
|
||||||
// Fetch data via AJAX
|
// Fetch data via AJAX
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/api/table_devices_tiles.json?nocache=' + Date.now(),
|
url: '/php/server/query_json.php',
|
||||||
type: "GET",
|
type: "GET",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function(response) {
|
data: {
|
||||||
if (response && response.data) {
|
file: 'table_devices_tiles.json', // Pass the file parameter
|
||||||
resultJSON = response.data[0]; // Assuming the structure {"data": [ ... ]}
|
nocache: Date.now() // Prevent caching with a timestamp
|
||||||
|
},
|
||||||
// Save the result to cache
|
success: function(response) {
|
||||||
setCache("getDevicesTotals", JSON.stringify(resultJSON));
|
if (response && response.data) {
|
||||||
|
resultJSON = response.data[0]; // Assuming the structure {"data": [ ... ]}
|
||||||
|
|
||||||
|
// Save the result to cache
|
||||||
|
setCache("getDevicesTotals", JSON.stringify(resultJSON));
|
||||||
|
|
||||||
// Process the fetched data
|
// Process the fetched data
|
||||||
processDeviceTotals(resultJSON);
|
processDeviceTotals(resultJSON);
|
||||||
} else {
|
} else {
|
||||||
console.error("Invalid response format from API");
|
console.error("Invalid response format from API");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
console.error("Failed to fetch devices data:", error);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
error: function(xhr, status, error) {
|
|
||||||
console.error("Failed to fetch devices data:", error);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -115,10 +115,10 @@ function cacheSettings()
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if(!getCache('completedCalls').includes('cacheSettings'))
|
if(!getCache('completedCalls').includes('cacheSettings'))
|
||||||
{
|
{
|
||||||
$.get('api/table_settings.json?nocache=' + Date.now(), function(resSet) {
|
$.get('/php/server/query_json.php', { file: 'table_settings.json', nocache: Date.now() }, function(resSet) {
|
||||||
|
|
||||||
$.get('api/plugins.json?nocache=' + Date.now(), function(resPlug) {
|
|
||||||
|
|
||||||
|
$.get('/php/server/query_json.php', { file: 'plugins.json', nocache: Date.now() }, function(resPlug) {
|
||||||
|
|
||||||
pluginsData = resPlug["data"];
|
pluginsData = resPlug["data"];
|
||||||
settingsData = resSet["data"];
|
settingsData = resSet["data"];
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ function cacheStrings() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Fetch strings and translations from plugins
|
// Fetch strings and translations from plugins
|
||||||
$.get(`api/table_plugins_language_strings.json?nocache=${Date.now()}`)
|
$.get('/php/server/query_json.php', { file: 'table_plugins_language_strings.json', nocache: Date.now() })
|
||||||
.done((pluginRes) => {
|
.done((pluginRes) => {
|
||||||
const data = pluginRes["data"];
|
const data = pluginRes["data"];
|
||||||
|
|
||||||
@@ -702,7 +702,7 @@ function forceLoadUrl(relativeUrl) {
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
function navigateToDeviceWithIp (ip) {
|
function navigateToDeviceWithIp (ip) {
|
||||||
|
|
||||||
$.get('api/table_devices.json?nocache=' + Date.now(), function(res) {
|
$.get('/php/server/query_json.php', { file: 'table_devices.json', nocache: Date.now() }, function(res) {
|
||||||
|
|
||||||
devices = res["data"];
|
devices = res["data"];
|
||||||
|
|
||||||
@@ -924,7 +924,7 @@ function cacheDevices()
|
|||||||
|
|
||||||
// if(!getCache('completedCalls').includes('cacheDevices'))
|
// if(!getCache('completedCalls').includes('cacheDevices'))
|
||||||
// {
|
// {
|
||||||
$.get('api/table_devices.json?nocache=' + Date.now(), function(data) {
|
$.get('/php/server/query_json.php', { file: 'table_devices.json', nocache: Date.now() }, function(data) {
|
||||||
|
|
||||||
// console.log(data)
|
// console.log(data)
|
||||||
|
|
||||||
@@ -1290,7 +1290,7 @@ function clearCache() {
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// Function to check if cache needs to be refreshed because of setting changes
|
// Function to check if cache needs to be refreshed because of setting changes
|
||||||
function checkSettingChanges() {
|
function checkSettingChanges() {
|
||||||
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
|
$.get('/php/server/query_json.php', { file: 'app_state.json', nocache: Date.now() }, function(appState) {
|
||||||
const importedMilliseconds = parseInt(appState["settingsImported"] * 1000);
|
const importedMilliseconds = parseInt(appState["settingsImported"] * 1000);
|
||||||
const lastReloaded = parseInt(sessionStorage.getItem(sessionStorageKey + '_time'));
|
const lastReloaded = parseInt(sessionStorage.getItem(sessionStorageKey + '_time'));
|
||||||
|
|
||||||
@@ -1345,7 +1345,7 @@ async function waitForGraphQLServer() {
|
|||||||
// Returns 1 if running, 0 otherwise
|
// Returns 1 if running, 0 otherwise
|
||||||
async function isGraphQLServerRunning() {
|
async function isGraphQLServerRunning() {
|
||||||
try {
|
try {
|
||||||
const response = await $.get('api/app_state.json?nocache=' + Date.now());
|
const response = await $.get('/php/server/query_json.php', { file: 'app_state.json', nocache: Date.now()});
|
||||||
console.log("graphQLServerStarted: " + response["graphQLServerStarted"]);
|
console.log("graphQLServerStarted: " + response["graphQLServerStarted"]);
|
||||||
setCache("graphQLServerStarted", response["graphQLServerStarted"]);
|
setCache("graphQLServerStarted", response["graphQLServerStarted"]);
|
||||||
return response["graphQLServerStarted"];
|
return response["graphQLServerStarted"];
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ function versionUpdateUI(){
|
|||||||
// Checks if a new version is available via the global app_state.json
|
// Checks if a new version is available via the global app_state.json
|
||||||
function checkIfNewVersionAvailable()
|
function checkIfNewVersionAvailable()
|
||||||
{
|
{
|
||||||
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
|
$.get('/php/server/query_json.php', { file: 'app_state.json', nocache: Date.now() }, function(appState) {
|
||||||
|
|
||||||
// console.log(appState["isNewVersionChecked"])
|
// console.log(appState["isNewVersionChecked"])
|
||||||
// console.log(appState["isNewVersion"])
|
// console.log(appState["isNewVersion"])
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
|
|
||||||
// some race condition, need to implement delay
|
// some race condition, need to implement delay
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$.get('api/table_settings.json?nocache=' + Date.now(), function(res) {
|
$.get('/php/server/query_json.php', { file: 'table_settings.json', nocache: Date.now() }, function(res) {
|
||||||
|
|
||||||
settingsData = res["data"];
|
settingsData = res["data"];
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<script src="js/graph_online_history.js"></script>
|
<script src="js/graph_online_history.js"></script>
|
||||||
<script>
|
<script>
|
||||||
$.get('api/table_online_history.json?nocache=' + Date.now(), function(res) {
|
$.get('/php/server/query_json.php', { file: 'table_online_history.json', nocache: Date.now() }, function(res) {
|
||||||
// Extracting data from the JSON response
|
// Extracting data from the JSON response
|
||||||
var timeStamps = [];
|
var timeStamps = [];
|
||||||
var onlineCounts = [];
|
var onlineCounts = [];
|
||||||
|
|||||||
38
front/php/server/query_json.php
Executable file
38
front/php/server/query_json.php
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// ---- IMPORTS ----
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// Check if authenticated
|
||||||
|
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
|
||||||
|
// Get init.php
|
||||||
|
require dirname(__FILE__).'/../server/init.php';
|
||||||
|
// ---- IMPORTS ----
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// Handle incoming requests
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||||
|
// Get query string parameter ?file=settings_table.json
|
||||||
|
$file = isset($_GET['file']) ? $_GET['file'] : null;
|
||||||
|
|
||||||
|
// Check if file parameter is provided
|
||||||
|
if ($file) {
|
||||||
|
// Define the folder where files are located
|
||||||
|
$filePath = "/app/api/" . basename($file);
|
||||||
|
|
||||||
|
// Check if the file exists
|
||||||
|
if (file_exists($filePath)) {
|
||||||
|
// Send the response back to the client
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
echo file_get_contents($filePath);
|
||||||
|
} else {
|
||||||
|
// File not found response
|
||||||
|
http_response_code(404);
|
||||||
|
echo json_encode(["error" => "File not found"]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Missing file parameter response
|
||||||
|
http_response_code(400);
|
||||||
|
echo json_encode(["error" => "Missing 'file' parameter"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -430,7 +430,7 @@ function getString ($setKey, $default) {
|
|||||||
// -------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------
|
||||||
function getSettingValue($setKey) {
|
function getSettingValue($setKey) {
|
||||||
// Define the JSON endpoint URL
|
// Define the JSON endpoint URL
|
||||||
$url = dirname(__FILE__).'/../../../front/api/table_settings.json';
|
$url = dirname(__FILE__).'/../../../api/table_settings.json';
|
||||||
|
|
||||||
// Fetch the JSON data
|
// Fetch the JSON data
|
||||||
$json = file_get_contents($url);
|
$json = file_get_contents($url);
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ function generate_guid() {
|
|||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
// Logs a notification in in-app notification system
|
// Logs a notification in in-app notification system
|
||||||
function write_notification($content, $level = "interrupt") {
|
function write_notification($content, $level = "interrupt") {
|
||||||
$NOTIFICATION_API_FILE = '/app/front/api/user_notifications.json';
|
$NOTIFICATION_API_FILE = '/app/api/user_notifications.json';
|
||||||
|
|
||||||
// Generate GUID
|
// Generate GUID
|
||||||
$guid = generate_guid();
|
$guid = generate_guid();
|
||||||
@@ -97,7 +97,7 @@ function write_notification($content, $level = "interrupt") {
|
|||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
// Removes a notification based on GUID
|
// Removes a notification based on GUID
|
||||||
function remove_notification($guid) {
|
function remove_notification($guid) {
|
||||||
$NOTIFICATION_API_FILE = '/app/front/api/user_notifications.json';
|
$NOTIFICATION_API_FILE = '/app/api/user_notifications.json';
|
||||||
|
|
||||||
// Read existing notifications
|
// Read existing notifications
|
||||||
$notifications = json_decode(file_get_contents($NOTIFICATION_API_FILE), true);
|
$notifications = json_decode(file_get_contents($NOTIFICATION_API_FILE), true);
|
||||||
@@ -114,7 +114,7 @@ function remove_notification($guid) {
|
|||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
// Deletes all notifications
|
// Deletes all notifications
|
||||||
function notifications_clear() {
|
function notifications_clear() {
|
||||||
$NOTIFICATION_API_FILE = '/app/front/api/user_notifications.json';
|
$NOTIFICATION_API_FILE = '/app/api/user_notifications.json';
|
||||||
|
|
||||||
// Clear notifications by writing an empty array to the file
|
// Clear notifications by writing an empty array to the file
|
||||||
file_put_contents($NOTIFICATION_API_FILE, json_encode(array()));
|
file_put_contents($NOTIFICATION_API_FILE, json_encode(array()));
|
||||||
@@ -123,7 +123,7 @@ function notifications_clear() {
|
|||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
// Mark a notification read based on GUID
|
// Mark a notification read based on GUID
|
||||||
function mark_notification_as_read($guid) {
|
function mark_notification_as_read($guid) {
|
||||||
$NOTIFICATION_API_FILE = '/app/front/api/user_notifications.json';
|
$NOTIFICATION_API_FILE = '/app/api/user_notifications.json';
|
||||||
$max_attempts = 3;
|
$max_attempts = 3;
|
||||||
$attempts = 0;
|
$attempts = 0;
|
||||||
|
|
||||||
@@ -172,7 +172,7 @@ function notifications_mark_all_read() {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
function get_unread_notifications() {
|
function get_unread_notifications() {
|
||||||
$NOTIFICATION_API_FILE = '/app/front/api/user_notifications.json';
|
$NOTIFICATION_API_FILE = '/app/api/user_notifications.json';
|
||||||
|
|
||||||
// Read existing notifications
|
// Read existing notifications
|
||||||
if (file_exists($NOTIFICATION_API_FILE) && is_readable($NOTIFICATION_API_FILE)) {
|
if (file_exists($NOTIFICATION_API_FILE) && is_readable($NOTIFICATION_API_FILE)) {
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
function updateState(){
|
function updateState(){
|
||||||
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
|
$.get('/php/server/query_json.php', { file: 'app_state.json', nocache: Date.now() }, function(appState) {
|
||||||
|
|
||||||
document.getElementById('state').innerHTML = appState["currentState"].replaceAll('"', '');
|
document.getElementById('state').innerHTML = appState["currentState"].replaceAll('"', '');
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ function jsonResponse($status, $data = '', $message = '') {
|
|||||||
if ($method === 'GET') {
|
if ($method === 'GET') {
|
||||||
checkAuthorization($method);
|
checkAuthorization($method);
|
||||||
|
|
||||||
$file_path = "/app/front/api/table_devices.json";
|
$file_path = "/app/api/table_devices.json";
|
||||||
|
|
||||||
$data = file_get_contents($file_path);
|
$data = file_get_contents($file_path);
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ def main():
|
|||||||
# PUSHING/SENDING devices
|
# PUSHING/SENDING devices
|
||||||
if send_devices:
|
if send_devices:
|
||||||
|
|
||||||
file_path = f"{INSTALL_PATH}/front/api/table_devices.json"
|
file_path = f"{INSTALL_PATH}/api/table_devices.json"
|
||||||
plugin_folder = 'sync'
|
plugin_folder = 'sync'
|
||||||
pref = 'SYNC'
|
pref = 'SYNC'
|
||||||
|
|
||||||
|
|||||||
@@ -246,19 +246,19 @@ function getData(){
|
|||||||
// Show the loading spinner while generating
|
// Show the loading spinner while generating
|
||||||
showSpinner();
|
showSpinner();
|
||||||
|
|
||||||
$.get('api/plugins.json', function(res) {
|
$.get('php/server/query_json.php?file=plugins.json', function(res) {
|
||||||
|
|
||||||
pluginDefinitions = res["data"];
|
pluginDefinitions = res["data"];
|
||||||
|
|
||||||
$.get('api/table_plugins_events.json', function(res) {
|
$.get('php/server/query_json.php?file=table_plugins_events.json', function(res) {
|
||||||
|
|
||||||
pluginUnprocessedEvents = res["data"];
|
pluginUnprocessedEvents = res["data"];
|
||||||
|
|
||||||
$.get('api/table_plugins_objects.json', function(res) {
|
$.get('php/server/query_json.php?file=table_plugins_objects.json', function(res) {
|
||||||
|
|
||||||
pluginObjects = res["data"];
|
pluginObjects = res["data"];
|
||||||
|
|
||||||
$.get('api/table_plugins_history.json', function(res) {
|
$.get('php/server/query_json.php?file=table_plugins_history.json', function(res) {
|
||||||
|
|
||||||
pluginHistory = res["data"];
|
pluginHistory = res["data"];
|
||||||
|
|
||||||
|
|||||||
@@ -99,7 +99,7 @@
|
|||||||
// Function to update the displayed data and timestamp based on the selected format and index
|
// Function to update the displayed data and timestamp based on the selected format and index
|
||||||
function updateData(format, index) {
|
function updateData(format, index) {
|
||||||
// Fetch data from the API endpoint
|
// Fetch data from the API endpoint
|
||||||
fetch('api/table_notifications.json?nocache=' + Date.now())
|
fetch(`/php/server/query_json.php?file=table_notifications.json&nocache=${Date.now()}`)
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ checkPermissions([$dbPath, $confPath]);
|
|||||||
// get settings from the API json file
|
// get settings from the API json file
|
||||||
|
|
||||||
// path to your JSON file
|
// path to your JSON file
|
||||||
$file = '../front/api/table_settings.json';
|
$file = '../api/table_settings.json';
|
||||||
// put the content of the file in a variable
|
// put the content of the file in a variable
|
||||||
$data = file_get_contents($file);
|
$data = file_get_contents($file);
|
||||||
// JSON decode
|
// JSON decode
|
||||||
@@ -219,7 +219,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
|||||||
}, 3000);
|
}, 3000);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
$.get('api/plugins.json?nocache=' + Date.now(), function(res) {
|
$.get('/php/server/query_json.php', { file: 'plugins.json', nocache: Date.now() }, function(res) {
|
||||||
|
|
||||||
pluginsData = res["data"];
|
pluginsData = res["data"];
|
||||||
|
|
||||||
@@ -556,7 +556,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
|||||||
|
|
||||||
// collect values for each of the different input form controls
|
// collect values for each of the different input form controls
|
||||||
// get settings to determine setting type to store values appropriately
|
// get settings to determine setting type to store values appropriately
|
||||||
$.get('api/table_settings.json?nocache=' + Date.now(), function(res) {
|
$.get('/php/server/query_json.php', { file: 'table_settings.json', nocache: Date.now() }, function(res) {
|
||||||
// loop through the settings definitions from the json
|
// loop through the settings definitions from the json
|
||||||
res["data"].forEach(set => {
|
res["data"].forEach(set => {
|
||||||
|
|
||||||
@@ -733,7 +733,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
|||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
// check if config file has been updated
|
// check if config file has been updated
|
||||||
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
|
$.get('/php/server/query_json.php', { file: 'app_state.json', nocache: Date.now() }, function(appState) {
|
||||||
|
|
||||||
fileModificationTime = <?php echo filemtime($confPath)*1000;?>;
|
fileModificationTime = <?php echo filemtime($confPath)*1000;?>;
|
||||||
|
|
||||||
|
|||||||
@@ -59,28 +59,23 @@ require 'php/templates/header.php';
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
function fetchData(callback) {
|
function fetchData(callback) {
|
||||||
$.ajax({
|
$.get('/php/server/query_json.php', { file: 'user_notifications.json', nocache: Date.now() })
|
||||||
url: 'api/user_notifications.json?nocache=' + Date.now(),
|
.done(function(response) {
|
||||||
method: 'GET',
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(response) {
|
|
||||||
console.log(response);
|
|
||||||
if (response == "[]" || response == "") {
|
if (response == "[]" || response == "") {
|
||||||
callback([]);
|
callback([]);
|
||||||
} else if (response.error) {
|
} else if (response.error) {
|
||||||
alert("Error: " + response.error);
|
alert("Error: " + response.error);
|
||||||
callback([]);
|
callback([]);
|
||||||
} else if (!Array.isArray(response)) {
|
} else if (!Array.isArray(response)) {
|
||||||
alert("Unexpected response format");
|
alert("Unexpected response format");
|
||||||
callback([]);
|
callback([]);
|
||||||
} else {
|
} else {
|
||||||
callback(response);
|
callback(response);
|
||||||
}
|
}
|
||||||
},
|
})
|
||||||
error: function(xhr, status, error) {
|
.fail(function(xhr, status, error) {
|
||||||
console.log("An error occurred while fetching data: " + error);
|
console.error("An error occurred while fetching data:", error);
|
||||||
callback([]);
|
callback([]);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ fi
|
|||||||
apt-get install -y \
|
apt-get install -y \
|
||||||
tini snmp ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo \
|
tini snmp ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo \
|
||||||
nginx-light php php-cgi php-fpm php-sqlite3 php-curl php-openssl sqlite3 dnsutils net-tools \
|
nginx-light php php-cgi php-fpm php-sqlite3 php-curl php-openssl sqlite3 dnsutils net-tools \
|
||||||
python3 python3-dev iproute2 nmap python3-pip zip systemctl usbutils traceroute nbtscan avahi avahi-tools openrc dbus build-essential
|
python3 python3-dev iproute2 nmap python3-pip zip systemctl usbutils traceroute nbtscan avahi avahi-tools openrc dbus build-essential git
|
||||||
|
|
||||||
# alternate dependencies
|
# alternate dependencies
|
||||||
sudo apt-get install nginx nginx-core mtr php-fpm php8.2-fpm php-cli php8.2 php8.2-sqlite3 -y
|
sudo apt-get install nginx nginx-core mtr php-fpm php8.2-fpm php-cli php8.2 php8.2-sqlite3 -y
|
||||||
@@ -30,5 +30,5 @@ source myenv/bin/activate
|
|||||||
update-alternatives --install /usr/bin/python python /usr/bin/python3 10
|
update-alternatives --install /usr/bin/python python /usr/bin/python3 10
|
||||||
|
|
||||||
# install packages thru pip3
|
# install packages thru pip3
|
||||||
pip3 install graphene flask netifaces tplink-omada-client pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros
|
pip3 install graphene flask netifaces tplink-omada-client pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros git+https://github.com/foreign-sub/aiofreepybox.git
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ class api_endpoint_class:
|
|||||||
# check if API endpoints have changed or if it's a new one
|
# check if API endpoints have changed or if it's a new one
|
||||||
if not found or changed:
|
if not found or changed:
|
||||||
|
|
||||||
mylog('verbose', [f'[API] Updating {self.fileName} file in /front/api'])
|
mylog('verbose', [f'[API] Updating {self.fileName} file in /api'])
|
||||||
|
|
||||||
write_file(self.path, json.dumps(self.jsonData))
|
write_file(self.path, json.dumps(self.jsonData))
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ dbPath = '/db/' + dbFileName
|
|||||||
|
|
||||||
pluginsPath = applicationPath + '/front/plugins'
|
pluginsPath = applicationPath + '/front/plugins'
|
||||||
logPath = applicationPath + '/front/log'
|
logPath = applicationPath + '/front/log'
|
||||||
apiPath = applicationPath + '/front/api/'
|
# apiPath = applicationPath + '/api/'
|
||||||
|
apiPath = applicationPath + '/api/'
|
||||||
reportTemplatesPath = applicationPath + '/front/report_templates/'
|
reportTemplatesPath = applicationPath + '/front/report_templates/'
|
||||||
fullConfFolder = applicationPath + '/config'
|
fullConfFolder = applicationPath + '/config'
|
||||||
fullConfPath = applicationPath + confPath
|
fullConfPath = applicationPath + confPath
|
||||||
|
|||||||
Reference in New Issue
Block a user